联调承载能力评估

This commit is contained in:
GGJ
2024-04-02 16:43:18 +08:00
parent fe60893e89
commit 60462b0086
24 changed files with 674 additions and 422 deletions

View File

@@ -174,4 +174,12 @@ export function checkPowerQuality(data) {
data
})
}
// 上传文件
export function uploadFile(data) {
return createAxios({
url: '/process-boot/electricityQuality/uploadFile',
method: 'POST',
data
})
}

View File

@@ -0,0 +1,9 @@
import createAxios from '@/utils/request'
export function exportModel(data: any) {
return createAxios({
url: '/harmonic-boot/exportmodel/exportModel',
method: 'post',
data: data
})
}

View File

@@ -1,5 +1,18 @@
<template>
<div class="point-tree">
<!-- <el-select
v-model="formData.statisticalType"
placeholder="请选择"
style="min-width: unset; padding: 10px 10px 0"
@change="loadData"
>
<el-option
v-for="item in classificationData"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> -->
<div style="flex: 1; overflow: hidden">
<Tree ref="treeRef" :data="tree" style="width: 100%; height: 100%" :canExpand="false" v-bind="$attrs" />
</div>
@@ -9,9 +22,9 @@
<script lang="ts" setup>
import { nextTick, onMounted, ref, useAttrs } from 'vue'
import Tree from '../index.vue'
import { useAdminInfo } from '@/stores/adminInfo'
import { useDictData } from '@/stores/dictData'
import { carryCapacityTree } from '@/api/advance-boot/bearingCapacity'
import { getTerminalTreeForFive } from '@/api/device-boot/terminalTree'
import { useConfig } from '@/stores/config'
defineOptions({
@@ -19,18 +32,74 @@ defineOptions({
})
const emit = defineEmits(['init'])
const attrs = useAttrs()
const adminInfo = useAdminInfo()
const dictData = useDictData()
const config = useConfig()
const classificationData = dictData.getBasicData('Statistical_Type', ['Report_Type'])
const tree = ref()
const treeRef = ref()
const formData = ref({
deptIndex: adminInfo.$state.deptIndex,
monitorFlag: 2,
powerFlag: 2,
loadType: null,
manufacturer: null,
serverName: 'event-boot',
statisticalType: classificationData[2].id,
scale: null
})
const loadData = () => {
let obj = classificationData.find(function (i) {
return i.id === formData.value.statisticalType
}) || { code: '' }
let form = JSON.parse(JSON.stringify(formData.value))
form.statisticalType = classificationData.find((item: any) => item.id == form.statisticalType)
let nodeKey = ''
carryCapacityTree().then(res => {
nodeKey = res.data[0].children[0].children[0].children[0].children[0].children[0].id
emit('init', res.data[0].children[0].children[0].children[0].children[0].children[0])
tree.value = res.data[0].children[0].children
getTerminalTreeForFive(form).then(res => {
console.log(res)
if (obj.code == 'Power_Network') {
res.data = [
{
name: '电网拓扑',
level: -1,
id: 0,
children: res.data
}
]
}
res.data.forEach((item: any) => {
item.icon = 'fa-solid fa-synagogue'
item.color = config.getColorVal('elementUiPrimary')
item.children.forEach((item2: any) => {
item2.icon = 'fa-solid fa-city'
item.color = config.getColorVal('elementUiPrimary')
item2.children.forEach((item3: any) => {
item3.icon = 'fa-solid fa-building'
item3.color = config.getColorVal('elementUiPrimary')
item3.children.forEach((item4: any) => {
item4.icon = 'fa-solid fa-tower-observation'
item4.color = config.getColorVal('elementUiPrimary')
item4.children.forEach((item5: anyObj) => {
item5.alias = `${item.name}>${item2.name}>${item3.name}>${item4.name}>${item5.name}`
item5.icon = 'fa-solid fa-location-dot'
item5.color = config.getColorVal('elementUiPrimary')
if (item5.comFlag === 0) {
item5.color = 'red !important'
} else if (item5.comFlag === 1) {
item5.color = '#00f93b !important'
} else if (item5.comFlag === 2) {
item5.color = '#8c8c8c !important'
}
})
})
})
})
})
nodeKey = res.data[0].children[0].children[0].children[0].children[0].id
emit('init', res.data[0].children[0].children[0].children[0].children[0])
tree.value = res.data[0].children
if (nodeKey) {
nextTick(() => {
treeRef.value.treeRef.setCurrentKey(nodeKey)
@@ -39,11 +108,11 @@ const loadData = () => {
}
})
}
loadData()
const setKey = (key: string) => {
treeRef.value.treeRef.setCurrentKey(key)
}
defineExpose({ setKey })
loadData()
</script>
<style lang="scss">
.point-tree {

View File

@@ -24,7 +24,7 @@
size="18"
/>
</div>
<el-dropdown style='height: 100%;' @command='handleCommand'>
<el-dropdown style="height: 100%" @command="handleCommand">
<div class="admin-info" :class="state.currentNavMenu == 'adminInfo' ? 'hover' : ''">
<el-avatar :size="25" fit="fill">
<img src="@/assets/avatar.png" alt="" />
@@ -48,8 +48,8 @@
/>
</div>
<Config />
<PopupPwd ref='popupPwd' />
<AdminInfo ref='popupAdminInfo' />
<PopupPwd ref="popupPwd" />
<AdminInfo ref="popupAdminInfo" />
<!-- <TerminalVue /> -->
</div>
</template>
@@ -67,8 +67,9 @@ import { fullUrl } from '@/utils/common'
import html2canvas from 'html2canvas'
import PopupPwd from './popup/password.vue'
import AdminInfo from './popup/adminInfo.vue'
import { useNavTabs } from '@/stores/navTabs'
const adminInfo = useAdminInfo()
const navTabs = useNavTabs()
const configStore = useConfig()
const popupPwd = ref()
const popupAdminInfo = ref()
@@ -79,7 +80,6 @@ const state = reactive({
showAdminInfoPopover: false
})
const savePng = () => {
html2canvas(document.body, {
scale: 1,
@@ -112,13 +112,13 @@ const handleCommand = (key: string) => {
popupPwd.value.open()
break
case 'layout':
navTabs.closeTabs()
router.push({ name: 'login' })
break
default:
break
}
}
</script>
<style scoped lang="scss">

View File

@@ -69,7 +69,27 @@ body,
background: #fff;
margin: var(--ba-main-space) var(--ba-main-space) 0px var(--ba-main-space);
}
.form-style {
.form-one {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.el-form-item {
display: flex;
width: 98%;
margin-bottom: 15px !important;
.el-form-item__content {
flex: 1;
.el-select,
.el-cascader,
.el-input__inner,
.el-date-editor {
width: 100%;
}
}
}
}
.form-two {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
@@ -78,12 +98,9 @@ body,
width: 48%;
.el-form-item__content {
flex: 1;
.el-select {
width: 100%;
}
.el-input__inner {
width: 100%;
}
.el-select,
.el-cascader,
.el-input__inner,
.el-date-editor {
width: 100%;
}
@@ -353,19 +370,17 @@ body,
}
@font-face {
font-family: "AlimamaFangYuanTiVF";
font-family: 'AlimamaFangYuanTiVF';
src: url('../assets/font/ali/AlimamaFangYuanTiVF-Thin.woff') format('woff'),
url("../assets/font/ali/AlimamaFangYuanTiVF-Thin.woff2") format('woff2');
url('../assets/font/ali/AlimamaFangYuanTiVF-Thin.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "AlimamaDongFangDaKai";
font-family: 'AlimamaDongFangDaKai';
src: url('../assets/font/ali/AlimamaDongFangDaKai-Regular.woff') format('woff'),
url("../assets/font/ali/AlimamaDongFangDaKai-Regular.woff2") format('woff2');
url('../assets/font/ali/AlimamaDongFangDaKai-Regular.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}

View File

@@ -173,3 +173,10 @@
color: var(--el-color-primary-light-5);
background-color: var(--el-color-primary-light-9) !important;
}
.el-divider--horizontal {
margin: 15px 0;
}
.el-step__title {
cursor: pointer;
}

View File

@@ -132,18 +132,14 @@
<div class="bottomBox">
<div v-if="showFlag">
<div style="height: 70px">
一级评估0.02% &lt; 0.1%
<!-- <span>{{ 0.02 < outcome.firstresult && outcome.firstresult < 0.1 ? '满足' : '不满足' }}</span> -->
<el-tag v-if="0.02 < outcome.firstresult && outcome.firstresult < 0.1" type="success" effect="dark">
满足
</el-tag>
一级评估{{ outcome.firstResult }}%
{{ outcome.firstResult > 0.1 ? '>' : (outcome.firstResult = 0.1 ? '=' : '<') }} 0.1%
<!-- <span>{{ 0.02 < outcome.firstResult && outcome.firstResult < 0.1 ? '满足' : '不满足' }}</span> -->
<el-tag v-if="outcome.firstResult < 0.1" type="success" effect="dark">满足</el-tag>
<el-tag v-else type="warning" effect="dark">不满足</el-tag>
</div>
<div
style="height: 20px"
v-if="!(0.02 < outcome.firstresult && outcome.firstresult < 0.1)"
class="mb10"
>
<div style="height: 20px" v-if="!(outcome.firstResult < 0.1)" class="mb10">
二级评估:
<el-row>
<el-col :span="16" :style="`height: calc(${height} / 2 - 100px)`">
@@ -377,7 +373,7 @@ const rendering = (row: any) => {
series: [
{
type: 'pie',
center: ['50%', '60%'],
center: ['60%', '70%'],
radius: ['35%', '48%'],
label: {
normal: {

View File

@@ -54,14 +54,14 @@
{{ lineList?.standardCapacity }}
</el-descriptions-item>
</el-descriptions>
<el-tabs v-model="activeName" class="mb10" :style="`height: calc(${tabsHeight} / 2 + 100px)`">
<el-tabs v-model="activeName" class="mb10" :style="`height: calc(${tabsHeight} / 2 + 50px)`">
<el-tab-pane label="有功功率" name="1" class="mt10">
<MyEChart :options="options1" />
</el-tab-pane>
<el-tab-pane label="无功功率" name="2">
<el-tab-pane label="无功功率" name="2" class="mt10">
<MyEChart :options="options2" />
</el-tab-pane>
<el-tab-pane label="谐波电流幅值" name="3">
<el-tab-pane label="谐波电流幅值" name="3" class="mt10">
<MyEChart :options="options3" />
</el-tab-pane>
<el-tab-pane label="首端电压模型参数" name="4">
@@ -75,7 +75,12 @@
</el-tabs>
<div class="bottomBox">
<el-row v-if="showAssess">
<el-col :span="16" :style="`height: calc(${tabsHeight} / 2 - 57px)`">
<el-col
:span="16"
:style="`height: calc(${tabsHeight} / 2 - ${
props.rowList.id == undefined ? 12 + 45 : 12
}px)`"
>
<vxe-table
style="flex: 1.5"
v-bind="defaultAttribute"
@@ -112,7 +117,12 @@
</vxe-column>
</vxe-table>
</el-col>
<el-col :span="8" :style="`height: calc(${tabsHeight} / 2 - 107px)`">
<el-col
:span="8"
:style="`height: calc(${tabsHeight} / 2 - ${
props.rowList.id == undefined ? 62 + 45 : 62
}px)`"
>
<MyEChart style="flex: 1" :options="pieCharts" />
</el-col>
</el-row>
@@ -223,7 +233,7 @@ const dotList: any = ref({
onMounted(() => {
const dom = document.getElementById('navigation-splitpanes')
if (dom) {
size.value = Math.round((180 / dom.offsetHeight) * 100)
size.value = Math.round((130 / dom.offsetHeight) * 100)
}
datePickerRef.value.setTimeOptions([{ label: '周', value: 4 }])
datePickerRef.value.setInterval(4)
@@ -278,9 +288,9 @@ const onSubmit = async () => {
for (let k in res[0].data.stringMap) {
voltageList.value.push({
name: k,
c: res[0].data.stringMap[k][0].toFixed(2),
a: res[0].data.stringMap[k][1].toFixed(2),
b: res[0].data.stringMap[k][2].toFixed(2)
c: res[0].data.stringMap[k][0],
a: res[0].data.stringMap[k][1],
b: res[0].data.stringMap[k][2]
})
}
setEChart(1, res[0].data.data, '有功功率', 'w')
@@ -334,6 +344,7 @@ const setEChart = (val: any, data: any, text: string, name: string) => {
// selectedMode: false,
},
grid: {
top: '30px',
left: '30px'
},
color: ['#FFCC33', '#00CC00', '#CC0000'],
@@ -448,7 +459,7 @@ const rendering = (data: any) => {
series: [
{
type: 'pie',
center: ['50%', '60%'],
center: ['60%', '70%'],
radius: ['35%', '48%'],
label: {
normal: {

View File

@@ -28,7 +28,7 @@
<el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="设备容量" prop="protocolCapacity">
<el-form-item label="设备容量(MVA)" prop="protocolCapacity">
<el-input-number
v-model="form.protocolCapacity"
style="width: 100%"

View File

@@ -9,36 +9,29 @@
></PointTree>
</pane>
<pane style="background: #fff" :style="height">
<TableHeader ref="TableHeaderRef" datePicker>
<TableHeader ref="TableHeaderRef" datePicker :show-search="false">
<template v-slot:select>
<el-form-item label="模板策略">
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id">
<el-option
v-for="item in templatePolicy"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
</el-select>
<el-input v-model="tableStore.table.params.crmName" placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="报表类型:">
<el-select
:disabled="true"
v-model="reportForm"
:popper-append-to-body="false"
placeholder="请选择报表类型"
>
<el-option
v-for="item in reportFormList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-input v-model="tableStore.table.params.reportNumber" placeholder="请输入报告编号" />
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出excel</el-button>
<el-upload
:show-file-list="false"
ref="uploadRef"
action=""
:limit="1"
:on-change="choose"
:auto-upload="false"
>
<template #trigger>
<el-button icon="el-icon-Upload" type="primary" class="mr10">上传接线图</el-button>
</template>
</el-upload>
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">生成</el-button>
</template>
</TableHeader>
<div class="box">
@@ -63,8 +56,8 @@ import PointTree from '@/components/tree/pqs/pointTree.vue'
import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData'
import { mainHeight } from '@/utils/layout'
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
import { exportModel } from '@/api/process-boot/reportForms'
import { genFileId, ElMessage } from 'element-plus'
defineOptions({
name: 'harmonic-boot/xieboReport'
})
@@ -74,12 +67,10 @@ const dictData = useDictData()
const TableHeaderRef = ref()
const dotList: any = ref({})
const Template: any = ref({})
const reportForm: any = ref('')
const templatePolicy: any = ref([])
const uploadList: any = ref([])
const tableStore = new TableStore({
url: '/harmonic-boot/customReport/getCustomReport',
url: '',
method: 'POST',
column: [],
beforeSearchFun: () => {},
@@ -93,23 +84,46 @@ onMounted(() => {
size.value = Math.round((180 / dom.offsetHeight) * 100)
}
})
getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
templatePolicy.value = res.data
Template.value = res.data[0]
reportForm.value = res.data[0]?.reportForm
})
const changetype = (val: any) => {
reportForm.value = val.reportForm
}
const handleNodeClick = (data: any, node: any) => {
if (data.level == 6) {
dotList.value = data
tableStore.index()
}
}
// 上传
const choose = (files: any) => {
uploadList.value - files
}
// 生成
const exportEvent = () => {
if (dotList.value.level != 6) {
return ElMessage.warning('请选择监测点进行报告生成!')
}
ElMessage('生成报告中...')
let form = new FormData()
form.append('lineIndex', dotList.value.id)
form.append('name', dotList.value.name)
form.append('crmName', tableStore.table.params.crmName)
form.append('reportNumber', tableStore.table.params.reportNumber)
form.append('type', '0')
form.append('startTime', tableStore.table.params.startTime)
form.append('endTime', tableStore.table.params.endTime)
dotList.value.forEach(item => {
form.append('file', item)
})
const exportEvent = () => {}
exportModel(form).then((res: any) => {
let blob = new Blob([res], {
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
})
// createObjectURL(blob); //创建下载的链接
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = dotList.value.name // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link)
})
}
</script>
<style lang="scss">
.splitpanes.default-theme .splitpanes__pane {

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog draggable v-model="add" title="问题新增" width="50%" :before-close="handleClose">
<el-dialog draggable v-model="add" title="问题新增" width="400px" :before-close="handleClose">
<el-divider content-position="left">第一步 基本信息填报</el-divider>
<el-form :inline="true" ref="ruleForm" :rules="rules" :model="addData">
<el-form :inline="true" ref="ruleForm" :rules="rules" label-width="auto" class="form-one" :model="addData">
<el-form-item label="所属单位">
<Area ref="areaRef" v-model="addData.orgNo" disabled />
</el-form-item>
@@ -29,7 +29,7 @@
</template>
</el-dialog>
<!-- 新增第二步(在线监测超标问题新增) -->
<el-dialog draggable title="在线监测超标问题新增" v-model="onlineAdd" width="70%" :before-close="handleClose">
<el-dialog draggable title="在线监测超标问题新增" v-model="onlineAdd" width="1200px" :before-close="handleClose">
<el-divider content-position="left">第二步 选择问题测点</el-divider>
<el-form :inline="true" class="form">
<el-form-item label="告警时间">
@@ -55,7 +55,7 @@
</el-dialog>
<!-- 新增第二步(普测超标问题新增) -->
<el-dialog draggable title="普测超标问题新增" v-model="ordinaryAdd" width="70%" :before-close="handleClose">
<el-dialog draggable title="普测超标问题新增" v-model="ordinaryAdd" width="1200px" :before-close="handleClose">
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
<el-form :model="ordinaryA" :inline="true" class="form">
<el-form-item>
@@ -126,7 +126,7 @@
</div>
</el-dialog>
<!-- 新增第二步(运维异常问题新增) -->
<el-dialog draggable title="运维异常问题新增" v-model="operationAdd" width="70%" :before-close="handleClose">
<el-dialog draggable title="运维异常问题新增" v-model="operationAdd" width="1200px" :before-close="handleClose">
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
<el-form :model="operationAdddata" ref="operationAddRef" :inline="true" :rules="rules">
<el-form-item label="异常设备名称:" prop="abnormalDevName">
@@ -182,7 +182,7 @@
</el-dialog>
<!-- 新增第二步(用户投诉问题新增) -->
<el-dialog draggable title="用户投诉问题新增" v-model="userAdd" width="70%" :before-close="handleClose">
<el-dialog draggable title="用户投诉问题新增" v-model="userAdd" width="1200px" :before-close="handleClose">
<el-divider content-position="left">第二步 选择投诉用户</el-divider>
<el-form :model="userA" :inline="true" :rules="rules">
<el-form-item label="用户类型:">

View File

@@ -4,41 +4,39 @@
<TableHeader area datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="问题来源">
<el-select v-model="tableStore.table.params.searchState" placeholder="请选择问题来源">
<el-select
v-model="tableStore.table.params.problemSources"
clearable
placeholder="请选择问题来源"
>
<el-option
v-for="item in uploadData"
:key="item.id"
:label="item.label"
:value="item.id"
v-for="item in problemData"
:key="item.code"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="填报进度">
<el-select v-model="tableStore.table.params.searchStat1e" placeholder="请选择填报进度">
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
<el-option
v-for="item in uploadData"
v-for="item in fillingProgress"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="问题名称">
<el-select v-model="tableStore.table.params.searchState3" placeholder="请输入问题名称">
<el-option
v-for="item in uploadData"
:key="item.id"
:label="item.label"
:value="item.id"
></el-option>
</el-select>
<el-input
v-model="tableStore.table.params.problemName"
clearable
placeholder="请输入问题名称"
style="width: 100%"
></el-input>
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Stamp" type="primary">审核</el-button>
<el-button icon="el-icon-PieChart" type="primary">历史审核记录</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
</div>
@@ -55,30 +53,17 @@ import { useDictData } from '@/stores/dictData'
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
const uploadData = [
{
id: 0,
label: '未上传'
},
{
id: 1,
label: '已上传'
}
]
const dialogVisible = ref(false)
const problemData = dictData.getBasicData('Problem_Sources')
const fillingProgress = dictData.getBasicData('Fill_Progress')
const TableHeaderRef = ref()
const title = ref('')
const ruleFormRef = ref()
const tableStore = new TableStore({
url: '/system-boot/area/areaSelect',
url: '/process-boot/electricityQuality/getIssues',
publicHeight: 65,
method: 'POST',
column: [
{ width: '60', type: 'checkbox' },
// { width: '60', type: 'checkbox' },
{
field: 'index',
title: '序号',
@@ -96,21 +81,48 @@ const tableStore = new TableStore({
{ field: 'problemName', title: '问题名称' },
{ field: 'dataDate', title: '提交时间' },
{ field: 'reportProcess', title: '填报节点' }
],
loadCallback: () => {
tableStore.table.data = [
{
status: 2
field: 'reportProcess',
title: '填报节点',
formatter: (row: any) => {
return fillingProgress.filter(item => item.code == row.cellValue)[0]?.name
}
},
{
title: '操作',
width: '150',
render: 'buttons',
buttons: [
{
name: 'edit',
title: '审核',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
click: async row => {}
},
{
name: 'edit',
title: '审核记录',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
click: async row => {}
}
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.dataDate = tableStore.table.params.searchBeginTime
tableStore.table.params.dataType = TableHeaderRef.value.datePickerRef.interval
}
})
tableStore.table.params.searchState = ''
tableStore.table.params.searchValue = ''
tableStore.table.params.type = ''
tableStore.table.params.problemSources = ''
tableStore.table.params.reportProcess = ''
tableStore.table.params.problemName = ''
tableStore.table.params.reportProcessStatus = 'Auditt'
provide('tableStore', tableStore)
onMounted(() => {

View File

@@ -1,6 +1,10 @@
<template>
<el-dialog draggable title="详情" v-model="dialogVisible" width="70%" :before-close="handleClose">
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
<el-carousel trigger="click" height="500px" arrow="never" :autoplay="false">
<el-carousel-item>
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
问题基本信息
</el-divider>
<el-form :model="addData" :inline="true" disabled label-width="120px">
<el-form-item label="所属单位:">
<el-input v-model="addData.orgName" clearable placeholder="请填写"></el-input>
@@ -39,7 +43,9 @@
v-model="addData.eventDescription"
></el-input>
</el-form-item>
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题指标</el-divider>
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
问题指标
</el-divider>
<el-form-item label="稳态指标:" style="margin-top: 10px">
<el-checkbox-group v-model="addData.steadyIndicator" disabled>
@@ -57,6 +63,9 @@
</el-checkbox-group>
</el-form-item>
</el-form>
</el-carousel-item>
<el-carousel-item style="height: 100px">123</el-carousel-item>
</el-carousel>
</el-dialog>
</template>
<script setup lang="ts">
@@ -84,4 +93,12 @@ const handleClose = () => {
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
:deep(.el-carousel__button) {
width: 10px;
height: 10px;
background-color: var(--el-color-primary);
border-radius: 50%;
opacity: 0.3;
}
</style>

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog draggable title="填报" v-model="dialogVisible" width="70%" :before-close="handleClose">
<el-dialog draggable title="填报" v-model="dialogVisible" width="1400px" :before-close="handleClose">
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
<el-form :inline="true">
<el-form :inline="true" label-width="auto">
<el-form-item label="所属单位:">
<el-input v-model="addData.orgName" clearable placeholder="请填写" disabled></el-input>
</el-form-item>
@@ -29,132 +29,64 @@
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">填报流程</el-divider>
<el-steps :active="active" finish-status="success" simple>
<el-step>
<template #title><span @click="step(0)">原因分析</span></template>
</el-step>
<el-step>
<template #title><span @click="step(1)">计划整改措施</span></template>
</el-step>
<el-step>
<template #title><span @click="step(2)">实际采取措施</span></template>
</el-step>
<el-step>
<template #title><span @click="step(3)">成效分析</span></template>
<el-step v-for="(item, i) in stepTitle">
<template #title>
<span @click="step(i)">{{ item }}</span>
</template>
</el-step>
</el-steps>
<!-- 原因分析 0 -->
<el-form
:model="causeAnalysisData"
v-if="control == 0"
:rules="rules"
ref="form"
label-width="140px"
class="form"
>
<el-form-item label="电网侧原因:" prop="reportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.reportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in CauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧原因:" prop="userReportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.userReportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in userCauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-row v-if="addData.problemSources == '用户投诉' || addData.problemSources == '设备异常'">
<el-divider></el-divider>
<el-form-item label="电网侧受影响设备:" prop="powerGridAffectDev">
<el-checkbox-group v-model="causeAnalysisData.powerGridAffectDev">
<el-checkbox v-for="(item, ind) in powerGridAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧受影响设备:" prop="userAffectDev">
<el-checkbox-group v-model="causeAnalysisData.userAffectDev">
<el-checkbox v-for="(item, ind) in userAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-form-item label="事件描述:" prop="eventDescriptionYyfx">
<el-input
style="width: 400px"
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
v-model="causeAnalysisData.eventDescriptionYyfx"
></el-input>
</el-form-item>
<el-form-item class="item" label="原因分析报告:" style="margin-top: 10px" prop="fileNameYyfx">
<!-- <File ref="File" /> -->
</el-form-item>
</el-form>
<process1 v-if="control == 0" :addData="addData" ref="process0Ref" @handleClose="handleClose" />
<!-- 计划整改措施 1-->
<process2 v-if="control == 1" :addData="addData" ref="process1Ref" @handleClose="handleClose" />
<!-- 实际采取措施 2 -->
<process3 v-if="control == 2" :addData="addData" ref="process2Ref" @handleClose="handleClose" />
<!-- 成效分析 3 -->
<process4 v-if="control == 3" :addData="addData" ref="process3Ref" @handleClose="handleClose" />
<el-row :gutter="20"></el-row>
<div style="display: flex; justify-content: center; margin-top: 10px">
<el-button type="primary" class="ml20" @click="Submit">提交审核</el-button>
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
<el-button type="primary" @click="Submit">提交审核</el-button>
<el-button @click="handleClose">取消</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { useDictData } from '@/stores/dictData'
import process1 from './process1.vue'
import process2 from './process2.vue'
import process3 from './process3.vue'
import process4 from './process4.vue'
import { getAbnormalDetail } from '@/api/process-boot/electricitymanagement'
const emit = defineEmits(['onSubmit'])
const dictData = useDictData()
const addData: any = ref({})
const active = ref(1)
const active = ref(4)
const control = ref()
const stepTitle = ['原因分析', '计划整改措施', '实际采取措施', '成效分析']
const process0Ref = ref()
const dialogVisible: any = ref(false)
const causeAnalysisData = ref({
reportProcessContentYyfx: [],
userReportProcessContentYyfx: [],
eventDescriptionYyfx: '',
fileNameYyfx: '', //原因分析报告文件名称
filePathYyfx: '', //原因分析报告文件路径
powerGridAffectDev: [],
userAffectDev: []
})
const rules = {
reportProcessContentYyfx: [{ required: true, message: '请选择', trigger: 'change' }],
userReportProcessContentYyfx: [{ required: true, message: '请选择', trigger: 'change' }],
eventDescriptionYyfx: [{ required: true, message: '请填写事件描述', trigger: 'blur' }],
powerGridAffectDev: [{ required: true, message: '请选择', trigger: 'change' }],
userAffectDev: [{ required: true, message: '请选择', trigger: 'change' }],
fileNameYyfx: [{ required: true, message: '请上传文件', trigger: 'blur' }]
}
// 电网侧原因
const CauseList = dictData.getBasicData('Grid-side_Reasons')
// 用户侧原因
const userCauseList = dictData.getBasicData('User_Reasons')
// 电网侧受影响设备
const powerGridAffectDevList = dictData.getBasicData('Grid_Unit')
// 用户侧受影响设备
const userAffectDevList = dictData.getBasicData('Customer_Unit')
const OnlineList = dictData.getBasicData('Problem_Sources')
const problemData = dictData.getBasicData('Problem_Sources')
const open = (row: any) => {
dialogVisible.value = true
addData.value = row
getAbnormalDetail(row.powerQualityProblemNo).then((res: any) => {
if (res.data.filePathYyfx == null) {
active.value = 0
} else if (res.data.filePathJhzg == null) {
active.value = 1
} else if (res.data.filePathSjcq == null) {
active.value = 2
} else if (res.data.filePathZlxg == null) {
active.value = 3
}
control.value = active.value
})
dialogVisible.value = true
}
const step = (e: number) => {
if (active.value >= e) {
control.value = e
@@ -162,11 +94,23 @@ const step = (e: number) => {
}
// 提交
const Submit = () => {}
const Submit = () => {
if (control.value == 0) {
process0Ref.value.submit()
} else if (control.value == 1) {
} else if (control.value == 2) {
} else if (control.value == 3) {
}
}
// 取消
const handleClose = () => {
dialogVisible.value = false
emit('onSubmit')
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
:deep(.el-upload-list__item) {
width: 400px;
}
</style>

View File

@@ -2,17 +2,17 @@
<TableHeader area datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="问题来源">
<el-select v-model="tableStore.table.params.problemSources" placeholder="请选择问题来源">
<el-select v-model="tableStore.table.params.problemSources" clearable placeholder="请选择问题来源">
<el-option
v-for="item in problemData"
:key="item.id"
:key="item.code"
:label="item.name"
:value="item.id"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="填报进度">
<el-select v-model="tableStore.table.params.reportProcess" placeholder="请选择填报进度">
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
<el-option
v-for="item in fillingProgress"
:key="item.id"
@@ -22,7 +22,7 @@
</el-select>
</el-form-item>
<el-form-item label="审核状态">
<el-select v-model="tableStore.table.params.reportProcessStatus" placeholder="请选择审核状态">
<el-select v-model="tableStore.table.params.reportProcessStatus" clearable placeholder="请选择审核状态">
<el-option
v-for="item in auditStatus"
:key="item.id"
@@ -42,17 +42,15 @@
</template>
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
<!-- <el-button icon="el-icon-EditPen" type="primary" @click="filling">填报</el-button> -->
<el-button icon="el-icon-Delete" type="primary">删除</el-button>
<!-- <el-button icon="el-icon-SuccessFilled" type="primary">归档</el-button>
<el-button icon="el-icon-PieChart" type="primary">历史审核记录</el-button> -->
<el-button icon="el-icon-SuccessFilled" type="primary">归档</el-button>
<el-button icon="el-icon-PieChart" type="primary">历史审核记录</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<!-- 新增 -->
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="onSubmit" />
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="tableStore.index()" />
<!-- 填报 -->
<Filling ref="FillingRef" />
<Filling ref="FillingRef" @onSubmit="tableStore.index()" />
<!-- 详情 -->
<Detail ref="detailRef" />
</template>
@@ -99,23 +97,23 @@ const tableStore: any = new TableStore({
{ field: 'powerQualityProblemNo', title: '问题编号' },
{ field: 'problemName', title: '问题名称' },
{ field: 'dataDate', title: '问题新建时间' },
// {
// field: 'reportProcess',
// title: '填报进度',
// formatter: (row: any) => {
// return fillingProgress.filter(item => item.code == row.cellValue)[0]?.name
// }
// },
// {
// field: 'reportProcessStatus',
// title: '审核状态',
// formatter: (row: any) => {
// return auditStatus.filter(item => item.code == row.cellValue)[0]?.name
// }
// },
{
title: '详情',
width: '120',
field: 'reportProcess',
title: '填报进度',
formatter: (row: any) => {
return fillingProgress.filter(item => item.code == row.cellValue)[0]?.name
}
},
{
field: 'reportProcessStatus',
title: '审核状态',
formatter: (row: any) => {
return auditStatus.filter(item => item.code == row.cellValue)[0]?.name
}
},
{
title: '操作',
width: '150',
render: 'buttons',
buttons: [
{
@@ -123,7 +121,7 @@ const tableStore: any = new TableStore({
title: '查看',
type: 'primary',
// disabled: row => {
// return row.reportProcess != 'Not_Reported' && row.reportProcess != 'Archived'
// return !(row.reportProcess != 'Not_Reported' && row.reportProcess != 'Archived')
// },
icon: 'el-icon-Plus',
render: 'basicButton',
@@ -131,6 +129,19 @@ const tableStore: any = new TableStore({
detailRef.value.open(row)
}
},
{
name: 'edit',
title: '填报',
disabled: row => {
return row.reportProcessStatus == 'Auditt'
},
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
click: row => {
filling(row)
}
},
{
name: 'del',
text: '删除',
@@ -152,11 +163,14 @@ const tableStore: any = new TableStore({
}
]
}
]
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.dataDate = tableStore.table.params.searchBeginTime
tableStore.table.params.dataType = TableHeaderRef.value.datePickerRef.interval
}
})
tableStore.table.params.orgNo = dictData.state.area[0].id
tableStore.table.params.problemName = ''
tableStore.table.params.problemSources = ''
tableStore.table.params.reportProcess = ''
@@ -170,67 +184,45 @@ onMounted(() => {
{ label: '月', value: 3 }
])
setTimeout(() => {
tableStore.table.params.dataType = TableHeaderRef.value.datePickerRef.interval
tableStore.table.params.dataDate = TableHeaderRef.value.datePickerRef.timeValue[0]
tableStore.index()
}, 100)
})
// 新增
const add = () => {
showNewlyAdded.value = true
}
const onSubmit = () => {
tableStore.index()
}
// 填报
const filling = () => {
if (tableStore.table.selection.length == 1) {
FillingRef.value.open(tableStore.table.selection[0])
if (tableStore.table.selection[0].reportProcess == 'Not_Reported') {
const filling = (row: any) => {
FillingRef.value.open(row)
if (row.reportProcess == 'Not_Reported') {
// 原因分析
// this.showCauseAnalysisJP = true
// setTimeout(() => {
// this.$refs.CauseAnalysisJP.causeAnalysis = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Cause_Analysis' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
} else if (row.reportProcess == 'Cause_Analysis' && row.reportProcessStatus == 'Success') {
// 计划整改措施
// this.showPlannedRectification = true
// setTimeout(() => {
// this.$refs.PlannedRectification.rectificationMeasures = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Plan_Measures' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
} else if (row.reportProcess == 'Plan_Measures' && row.reportProcessStatus == 'Success') {
// 实际采取措施
// this.showActualMeasures = true
// setTimeout(() => {
// this.$refs.ActualMeasures.rectificationMeasures = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Actual_Measures' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
} else if (row.reportProcess == 'Actual_Measures' && row.reportProcessStatus == 'Success') {
// 成效分析
// this.showEffectiveness = true
// setTimeout(() => {
// this.$refs.Effectiveness.effectivenessAnalysis = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Insights' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
} else if (row.reportProcess == 'Insights' && row.reportProcessStatus == 'Success') {
ElMessage.warning('填报已结束,无需填报!')
} else {
ElMessage.warning('审核未通过,不能进行填报!')
}
} else {
ElMessage.warning('请选择1条数据,进行填报!')
}
}
// 关闭弹框
const handleClose = () => {

View File

@@ -0,0 +1,144 @@
<template>
<el-form :model="causeAnalysisData" :rules="rules" ref="formRef" label-width="140px">
<el-form-item label="电网侧原因:" prop="reportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.reportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in CauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧原因:" prop="userReportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.userReportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in userCauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-row v-if="prop.addData.problemSources == '用户投诉' || prop.addData.problemSources == '设备异常'">
<el-divider></el-divider>
<el-form-item label="电网侧受影响设备:" prop="powerGridAffectDev">
<el-checkbox-group v-model="causeAnalysisData.powerGridAffectDev">
<el-checkbox v-for="(item, ind) in powerGridAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧受影响设备:" prop="userAffectDev">
<el-checkbox-group v-model="causeAnalysisData.userAffectDev">
<el-checkbox v-for="(item, ind) in userAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-form-item label="事件描述:" prop="eventDescriptionYyfx">
<el-input
style="width: 400px"
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
v-model="causeAnalysisData.eventDescriptionYyfx"
></el-input>
</el-form-item>
<el-form-item class="item" label="原因分析报告:" style="margin-top: 10px" prop="fileList">
<el-upload
v-model:file-list="causeAnalysisData.fileList"
ref="upload"
action=""
:limit="1"
:on-exceed="handleExceed"
:auto-upload="false"
>
<template #trigger>
<el-button type="primary">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
</el-form>
</template>
<script setup lang="ts">
import { useDictData } from '@/stores/dictData'
import { uploadFile, reasonAnalysis } from '@/api/process-boot/electricitymanagement'
import { UploadInstance, UploadProps, UploadRawFile, ElMessage, ElMessageBox } from 'element-plus'
import { genFileId } from 'element-plus'
import { ref, reactive } from 'vue'
const prop = defineProps({
addData: {
type: Object,
default: () => {}
}
})
const emit = defineEmits(['handleClose'])
const dictData = useDictData()
const upload = ref()
const formRef = ref()
const causeAnalysisData: any = ref({
reportProcessContentYyfx: [],
userReportProcessContentYyfx: [],
eventDescriptionYyfx: '',
fileNameYyfx: '', //原因分析报告文件名称
filePathYyfx: '', //原因分析报告文件路径
powerGridAffectDev: [],
userAffectDev: [],
fileList: []
})
const rules = {
reportProcessContentYyfx: [{ required: true, message: '请选择电网侧原因', trigger: 'change' }],
userReportProcessContentYyfx: [{ required: true, message: '请选择用户侧原因', trigger: 'change' }],
eventDescriptionYyfx: [{ required: true, message: '请填写事件描述', trigger: 'blur' }],
powerGridAffectDev: [{ required: true, message: '请选择电网侧受影响设备', trigger: 'change' }],
userAffectDev: [{ required: true, message: '请选择用户侧受影响设备', trigger: 'change' }],
fileList: [{ required: true, message: '请上传文件', trigger: 'change' }]
}
// 电网侧原因
const CauseList = dictData.getBasicData('Grid-side_Reasons')
// 用户侧原因
const userCauseList = dictData.getBasicData('User_Reasons')
// 电网侧受影响设备
const powerGridAffectDevList = dictData.getBasicData('Grid_Unit')
// 用户侧受影响设备
const userAffectDevList = dictData.getBasicData('Customer_Unit')
const OnlineList = dictData.getBasicData('Problem_Sources')
// 上传
const handleExceed: UploadProps['onExceed'] = files => {
upload.value!.clearFiles()
const file = files[0] as UploadRawFile
file.uid = genFileId()
upload.value!.handleStart(file)
}
const submit = () => {
console.log('🚀 ~ formRef.value.validate ~ =prop.addData:', prop.addData)
formRef.value.validate(async (valid: any) => {
if (valid) {
let form = new FormData()
form.append('file', causeAnalysisData.value.fileList[0].raw)
causeAnalysisData.value.powerQualityProblemNo = prop.addData.powerQualityProblemNo
await uploadFile(form).then((res: any) => {
causeAnalysisData.value.filePathYyfx = res.filePath
causeAnalysisData.value.fileNameYyfx = res.fileName
})
await reasonAnalysis(causeAnalysisData.value).then((res: any) => {
ElMessage.success('提交成功')
emit('handleClose')
})
}
})
}
defineExpose({
submit
})
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,7 @@
<template>
<div>123</div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,11 @@
<template>
<div> </div>
</template>
<script setup lang='ts'>
import { ref, reactive } from 'vue'
</script>
<style lang="scss" scoped>
</style>

View File

@@ -0,0 +1,7 @@
<template>
<div></div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
</script>
<style lang="scss" scoped></style>

View File

@@ -2,10 +2,10 @@
<div class="default-main">
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="电能质量问题查询维护" name="1">
<maintenance v-if="activeName == '1'" />
<maintenance />
</el-tab-pane>
<el-tab-pane label="电能质量问题审核" name="2">
<audit v-if="activeName == '2'" />
<audit />
</el-tab-pane>
</el-tabs>
</div>

View File

@@ -9,16 +9,16 @@
:disabled="title == '查看计划' || title == '计划审核'"
ref="formRef"
:rules="rules"
label-width="120px"
label-width="auto"
class="form-one"
>
<el-form-item label="普测负责单位:">
<Area v-model="formdata.orgNo" disabled style="width: 240px" />
<Area v-model="formdata.orgNo" disabled />
</el-form-item>
<el-form-item label="计划开始时间:" prop="planStartTime">
<el-date-picker
v-model="formdata.planStartTime"
type="date"
style="width: 240px"
placeholder="选择计划开始时间"
value-format="YYYY-MM-DD"
></el-date-picker>
@@ -27,7 +27,6 @@
<el-date-picker
v-model="formdata.planEndTime"
type="date"
style="width: 240px"
placeholder="选择计划结束时间"
value-format="YYYY-MM-DD"
></el-date-picker>
@@ -36,15 +35,14 @@
<el-input
:disabled="title == '编辑计划'"
v-model="formdata.planNo"
class="formW"
placeholder="请输入普测计划编号"
></el-input>
</el-form-item>
<el-form-item label="计划名称:" prop="planName">
<el-input v-model="formdata.planName" placeholder="请输入计划名称" class="formW"></el-input>
<el-input v-model="formdata.planName" placeholder="请输入计划名称"></el-input>
</el-form-item>
<el-form-item label="测试负责人:" prop="leader">
<el-input v-model="formdata.leader" placeholder="请输入测试负责人" class="formW"></el-input>
<el-input v-model="formdata.leader" placeholder="请输入测试负责人"></el-input>
</el-form-item>
</el-form>
</el-col>
@@ -183,8 +181,4 @@ const open = (text: string, row?: any) => {
defineExpose({ open })
</script>
<style lang="scss" scoped>
.formW {
width: 240px;
}
</style>
<style lang="scss" scoped></style>

View File

@@ -1,13 +1,13 @@
<template>
<!-- 新增 -->
<el-dialog draggable title="未建档干扰用户新增" v-model="userAdd" width="50%" :before-close="cancel">
<el-dialog draggable title="未建档干扰用户新增" v-model="userAdd" width="500px" :before-close="cancel">
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
<el-form :inline="true" ref="formRef" :model="addData" label-width="130px" :rules="rules">
<el-form :inline="true" ref="formRef" :model="addData" label-width="auto" class="form-one" :rules="rules">
<el-form-item label="区域:">
<Area ref="areaRef" v-model="addData.orgNo" style="width: 240px" />
<Area ref="areaRef" v-model="addData.orgNo" />
</el-form-item>
<el-form-item label="干扰源类型:" prop="loadType">
<el-select v-model="addData.loadType" clearable collapse-tags style="width: 240px" placeholder="请选择">
<el-select v-model="addData.loadType" clearable collapse-tags placeholder="请选择">
<el-option
v-for="item in interferenceType"
:key="item.id"
@@ -18,17 +18,11 @@
</el-form-item>
<el-form-item label="干扰源用户名称:" prop="userName">
<el-input
v-model="addData.userName"
clearable
style="width: 240px"
placeholder="请输入关键字"
></el-input>
<el-input v-model="addData.userName" clearable placeholder="请输入关键字"></el-input>
</el-form-item>
<el-form-item label="建档时间:" prop="recordTime">
<el-date-picker
style="width: 240px"
value-format="YYYY-MM-DD hh:mm:ss"
v-model="addData.recordTime"
type="datetime"

View File

@@ -1,13 +1,14 @@
<template>
<!-- 上传 -->
<el-dialog draggable :title="title" v-model="uploadConclusions" width="70%" :before-close="cancel">
<el-dialog draggable :title="title" v-model="uploadConclusions" width="1500px" :before-close="cancel">
<el-divider content-position="left">基本信息</el-divider>
<el-form
:inline="true"
ref="formRef"
:model="addForm"
label-width="120px"
label-width="auto"
:rules="rules"
class
:disabled="title == '未建档干扰源用户详情'"
>
<el-form-item label="所属单位:">

View File

@@ -1,6 +1,6 @@
<template>
<el-dialog draggable v-model="dialogVisible" :title="title" style="width: 800px" :before-close="handleClose">
<el-form :model="form" :rules="rules" class="form-style" ref="elform" label-width="120px">
<el-form :model="form" :rules="rules" class="form-two" ref="elform" label-width="120px">
<el-form-item label="终端编号:" prop="id">
<el-input
clearable