修改现场反馈问题

This commit is contained in:
GGJ
2024-10-10 10:46:10 +08:00
parent 0877ae5df0
commit facd4f55c5
12 changed files with 198 additions and 313 deletions

View File

@@ -7,9 +7,9 @@ import { isNumber } from '@/utils/is'
import { ElMessage } from 'element-plus'
import { useLocaleStore } from '@/stores/modules/locale'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { useAdminInfo } from '@/stores/adminInfo'
defineOptions({ name: 'Editor' })
const adminInfo = useAdminInfo()
type InsertFnType = (url: string, alt: string, href: string) => void
const localeStore = useLocaleStore()
@@ -104,8 +104,7 @@ const editorConfig = computed((): IEditorConfig => {
// 自定义增加 http header
headers: {
Accept: '*',
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
Authorization: adminInfo.getToken(),
},
// 跨域是否传递 cookie ,默认为 false

View File

@@ -98,7 +98,7 @@ const initChart = () => {
end: 100
}
],
toolbox:props.options?.toolbox||{},
toolbox: props.options?.toolbox || {},
color: props.options?.color || color,
series: props.options?.series,
...props.options?.options
@@ -141,6 +141,7 @@ const handlerYAxis = () => {
nameTextStyle: {
color: '#000'
},
splitNumber: 5,
minInterval: 1,
axisLine: {
show: true,

View File

@@ -1,5 +1,5 @@
<template>
<div style="width: 600px">
<div style="width: 540px">
<el-select v-model="interval" style="min-width: 90px; width: 90px; margin-right: 10px" @change="timeChange">
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
@@ -397,7 +397,11 @@ const next = () => {
endTime = presentY + '-0' + presentM + '-' + presentD
}
} else {
endTime = presentY + '-' + presentM + '-' + presentD
if (presentD < 10) {
endTime = presentY + '-' + presentM + '-0' + presentD
} else {
endTime = presentY + '-' + presentM + '-' + presentD
}
}
} else {
startTime = year + '-01-01'

View File

@@ -28,7 +28,7 @@
<!-- tag -->
<div v-if="field.render == 'tag' && fieldValue !== ''">
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" :effect="field.effect || ''" size="small">
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" size="small">
{{ field.replaceValue ? field.replaceValue[fieldValue] : fieldValue }}
</el-tag>
</div>

View File

@@ -1,28 +1,20 @@
<template>
<div style="border: 1px solid #e4e4e4; height: 100%">
<Toolbar
style="border-bottom: 1px solid #e4e4e4; border-top: 1px solid #e4e4e4"
:editor="editorRef"
:defaultConfig="toolbarConfig"
mode="default"
/>
<Editor
v-bind="$attrs"
:defaultConfig="editorConfig"
mode="default"
@onCreated="handleCreated"
style="height: calc(100% - 42px)"
/>
<Toolbar style="border-bottom: 1px solid #e4e4e4; border-top: 1px solid #e4e4e4" :editor="editorRef"
:defaultConfig="toolbarConfig" mode="default" />
<Editor v-bind="$attrs" :defaultConfig="editorConfig" mode="default" @onCreated="handleCreated"
style="height: calc(100% - 42px)" />
</div>
</template>
<script lang="ts" setup>
import '@wangeditor/editor/dist/css/style.css' // 引入 css
import { getAccessToken, getTenantId } from '@/utils/auth'
import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import { useAdminInfo } from '@/stores/adminInfo'
// 编辑器实例,必须用 shallowRef
const editorRef = shallowRef()
const adminInfo = useAdminInfo()
// 内容 HTML
const valueHtml = ref('<p>hello</p>')
@@ -51,7 +43,12 @@ const editorConfig = {
compress: true,
uploadFileName: 'file',
withCredentials: true,
headers: {},
headers: {
Accept: '*',
Authorization: adminInfo.getToken(),
},
meta: { path: '/supervision/' },
timeout: 0,
customInsert(res: any, insertFn: InsertFnType) {

View File

@@ -64,7 +64,7 @@
v-bind="defaultAttribute"
:data="treeData"
show-overflow
:tree-config="{ transform: true, parentField: 'pid' }"
:tree-config="{ transform: true, parentField: 'uPid',rowField:'uId' }"
:scroll-y="{ enabled: true }"
>
<vxe-column field="name" align="left" title="电网拓扑" min-width="200" tree-node></vxe-column>
@@ -237,12 +237,12 @@ const tableStore = new TableStore({
method: 'POST',
column: [],
loadCallback: () => {
tableStore.table.data.forEach((item: any) => {
if (item.children.length > 0) {
item.id = item.children[0].pid
}
})
treeData.value = tree2List(tableStore.table.data)
// tableStore.table.data.forEach((item: any) => {
// if (item.children.length > 0) {
// item.id = item.children[0].pid
// }
// })
treeData.value = tree2List(tableStore.table.data, Math.random() * 1000)
treeDataCopy.value = JSON.parse(JSON.stringify(treeData.value))
setTimeout(() => {
tableRef.value.setAllTreeExpand(true)
@@ -255,15 +255,21 @@ tableStore.table.params.program = ''
tableStore.table.params.searchEvent = ''
tableStore.table.params.filterName = ''
provide('tableStore', tableStore)
const tree2List = (list: any) => {
const tree2List = (list: any, id: any) => {
//存储结果的数组
let arr: any = []
// 遍历 tree 数组
list.forEach((item: any) => {
item.uPid = id
item.uId = (Math.random() * 1000)
// 判断item是否存在children
if (!item.children) return arr.push(item)
// 函数递归对children数组进行tree2List的转换
const children = tree2List(item.children)
const children = tree2List(item.children, item.uId)
// 删除item的children属性
delete item.children
// 把item和children数组添加至结果数组
@@ -274,6 +280,7 @@ const tree2List = (list: any) => {
return arr
}
tableStore.table.params.searchValue = ''
tableStore.table.params.searchState = 0
onMounted(() => {

View File

@@ -4,41 +4,25 @@
<template #select>
<el-form-item label="终端型号">
<el-select v-model="tableStore.table.params.devType" clearable placeholder="请选择终端型号">
<el-option
v-for="item in teriminaloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-option v-for="item in teriminaloption" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="终端状态">
<el-select v-model="tableStore.table.params.runFlag" clearable placeholder="请选择终端状态">
<el-option
v-for="item in teriminalstatusoption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-option v-for="item in teriminalstatusoption" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="通讯状态">
<el-select v-model="tableStore.table.params.comFlag" clearable placeholder="请选择通讯状态">
<el-option
v-for="item in stateoption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
<el-option v-for="item in stateoption" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="筛选">
<el-input
v-model="tableStore.table.params.filterName"
@keyup="searchEvent"
placeholder="输入关键字筛选"
/>
<el-input v-model="tableStore.table.params.filterName" @keyup="searchEvent" placeholder="输入关键字筛选" />
</el-form-item>
</template>
<template #operation>
@@ -52,26 +36,12 @@
</template>
</TableHeader>
<div :style="`height: calc(${tableStore.table.height} + 58px)`">
<vxe-table
v-loading="tableStore.table.loading"
height="auto"
auto-resize
ref="tableRef"
v-bind="defaultAttribute"
:data="treeData"
show-overflow
:tree-config="{ transform: true, parentField: 'pid' }"
:scroll-y="{ enabled: true }"
:checkbox-config="{ labelField: 'name' }"
>
<vxe-column
field="name"
align="left"
type="checkbox"
title="电网拓扑"
min-width="200"
tree-node
></vxe-column>
<vxe-table v-loading="tableStore.table.loading" height="auto" auto-resize ref="tableRef"
v-bind="defaultAttribute" :data="treeData" show-overflow
:tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }" :scroll-y="{ enabled: true }"
:checkbox-config="{ labelField: 'name' }">
<vxe-column field="name" align="left" type="checkbox" title="电网拓扑" min-width="200"
tree-node></vxe-column>
<vxe-column field="devType" title="终端型号"></vxe-column>
<vxe-column field="version" title="版本信息"></vxe-column>
<vxe-column field="baseFlowMeal" title="基础套餐(MB)"></vxe-column>
@@ -122,25 +92,12 @@
<vxe-column title="操作" min-width="100">
<template #default="{ row }">
<el-button
v-if="row.level === 4"
type="primary"
size="small"
link
@click="uesdealia(row)"
icon="el-icon-view"
>
<el-button v-if="row.level === 4" type="primary" size="small" link @click="uesdealia(row)"
icon="el-icon-view">
终端详情
</el-button>
<el-button
v-if="row.level === 4"
:disabled="row.state == 1 ? true : false"
type="primary"
size="small"
link
icon="el-icon-view"
@click="queryview(row)"
>
<el-button v-if="row.level === 4" :disabled="row.state == 1 ? true : false" type="primary"
size="small" link icon="el-icon-view" @click="queryview(row)">
流量详情
</el-button>
</template>
@@ -148,14 +105,8 @@
</vxe-table>
</div>
<!-- 终端使用详情 -->
<el-dialog
draggable
v-model="dialogVisiblexq"
v-if="dialogVisiblexq"
title="终端使用详情"
width="70%"
:before-close="handleClose"
>
<el-dialog draggable v-model="dialogVisiblexq" v-if="dialogVisiblexq" title="终端使用详情" width="70%"
:before-close="handleClose">
<MyEchart :options="echartsXq" style="width: 100%; height: 300px" />
<vxe-table v-bind="defaultAttribute" height="400" :data="logtableData">
<vxe-colgroup title="cup使用率">
@@ -231,12 +182,8 @@ const tableStore = new TableStore({
method: 'POST',
column: [],
loadCallback: () => {
tableStore.table.data.forEach((item: any) => {
if (item.children.length > 0) {
item.id = item.children[0].pid
}
})
treeData.value = tree2List(tableStore.table.data)
treeData.value = tree2List(tableStore.table.data, Math.random() * 1000)
treeDataCopy.value = JSON.parse(JSON.stringify(treeData.value))
setTimeout(() => {
tableRef.value.setAllTreeExpand(true)
@@ -248,15 +195,18 @@ tableStore.table.params.runFlag = ''
tableStore.table.params.comFlag = ''
tableStore.table.params.filterName = ''
// 处理大数据卡顿
const tree2List = (list: any) => {
const tree2List = (list: any, id: any) => {
//存储结果的数组
let arr: any = []
// 遍历 tree 数组
list.forEach((item: any) => {
item.uPid = id
item.uId = (Math.random() * 1000)
// 判断item是否存在children
if (!item.children) return arr.push(item)
// 函数递归对children数组进行tree2List的转换
const children = tree2List(item.children)
const children = tree2List(item.children, item.uId)
// 删除item的children属性
delete item.children
// 把item和children数组添加至结果数组
@@ -275,15 +225,15 @@ onMounted(() => {
})
// 终端状态管理
const deviceData = () => {}
const deviceData = () => { }
// 流量套餐配置
const liuniangconfig = () => {}
const liuniangconfig = () => { }
// 流量策略配置
const configliul = () => {}
const configliul = () => { }
// 流量统计
const liultjData = () => {}
const liultjData = () => { }
// 重启前置程序
const resect = () => {}
const resect = () => { }
// 终端详情
const uesdealia = (row: any) => {
@@ -354,7 +304,7 @@ const uesdealia = (row: any) => {
dialogVisiblexq.value = true
}
// 流量详情
const queryview = (row: any) => {}
const queryview = (row: any) => { }
// 关闭
const handleClose = () => {
dialogVisible.value = false

View File

@@ -1,60 +1,38 @@
<template>
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" width="700px">
<el-scrollbar>
<el-form :inline="false" :model="form" label-width="auto" :rules="rules" ref="formRef">
<el-form-item
:label="title == '修改算法' ? '选择修改的数据' : '选择父级'"
:prop="title == '修改算法' ? 'pid' : ''"
>
<el-tree-select
v-model="form.pid"
:data="dataTree"
check-strictly
clearable
filterable
@node-click="changeTree"
default-expand-all
:render-after-expand="false"
:props="defaultProps"
@clear="TreeList = {}"
/>
</el-form-item>
<el-form-item
label="名称"
prop="name"
v-if="title == '修改算法' ? TreeList.level != 4 : TreeList.level != 3"
>
<el-input v-model="form.name" placeholder="名称" clearable />
</el-form-item>
<div v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<el-form-item label="算法名称" prop="name">
<el-input v-model="form.name" placeholder="请输入算法名称" clearable />
</el-form-item>
<el-form-item label="计算周期" prop="period">
<el-select v-model="form.period" placeholder="请选择计算周期" clearable>
<el-option
v-for="item in cycle"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="数据来源" prop="source">
<el-input v-model="form.source" placeholder="请输入数据来源" clearable />
</el-form-item>
<el-form-item label="定义" prop="definition">
<el-input
v-model="form.definition"
:rows="2"
type="textarea"
placeholder="请输入定义"
clearable
/>
</el-form-item>
</div>
</el-form>
</el-scrollbar>
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" width="1200px">
<el-form :model="form" label-width="120px" class="form-two" :rules="rules" ref="formRef">
<el-form-item :label="title == '修改算法' ? '选择修改的数据' : '选择父级'" :prop="title == '修改算法' ? 'pid' : ''">
<el-tree-select v-model="form.pid" :data="dataTree" check-strictly clearable filterable
@node-click="changeTree" default-expand-all :render-after-expand="false" :props="defaultProps"
@clear="TreeList = {}" />
</el-form-item>
<el-form-item label="名称" prop="name" v-if="title == '修改算法' ? TreeList.level != 4 : TreeList.level != 3">
<el-input v-model="form.name" placeholder="名称" clearable />
</el-form-item>
<!-- <div v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3"> -->
<el-form-item label="算法名称" prop="name" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<el-input v-model="form.name" placeholder="请输入算法名称" clearable />
</el-form-item>
<el-form-item label="计算周期" prop="period" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<el-select v-model="form.period" placeholder="请选择计算周期" clearable>
<el-option v-for="item in cycle" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="数据来源" prop="source" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<el-input v-model="form.source" placeholder="请输入数据来源" clearable />
</el-form-item>
<!-- <el-form-item label="定义" prop="definition" style="width: 100%;" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<editor v-model="form.definition" />
</el-form-item> -->
<!-- </div> -->
</el-form>
<div style="display: flex" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<div style="width: 120px;margin-right: 12px;text-align: end;">定义</div>
<editor v-model="form.definition" />
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
@@ -68,7 +46,7 @@ import { ref, inject } from 'vue'
import { reactive } from 'vue'
import { ElMessage } from 'element-plus'
import { queryAllAlgorithmLibrary, addAlgorithm, updateAlgorithmLibrary } from '@/api/supervision-boot/database/index'
import editor from '@/components/wangEditor/index.vue'
const emit = defineEmits(['getTree'])
const dialogVisible = ref(false)
const title = ref('')

View File

@@ -28,7 +28,7 @@
<vxe-table height="auto" v-bind="defaultAttribute" :data="dotList?.childrens[radio]?.children">
<vxe-column field="name" title="算法名称"></vxe-column>
<vxe-column field="createTime" title="创建时间"></vxe-column>
<vxe-column field="definition" title="定义"></vxe-column>
<vxe-column field="period" title="计算周期">
<template #default="{ row }">
{{
@@ -53,6 +53,13 @@
</el-tag>
</template>
</vxe-column>
<vxe-column field="definition" title="定义">
<template #default="{ row }">
<el-button type="primary" link @click="view(row)">查看</el-button>
</template>
</vxe-column>
<!-- <vxe-column title="操作" width="150px">
<template #default="{ row }">
<el-button type="primary" link @click="edit(row)">修改</el-button>
@@ -73,6 +80,10 @@
<!-- 弹框 -->
<PopupEdit ref="popupEditRef" v-if="popupEditFlag"
@getTree="treeRef.loadData(dotList.id), (popupEditFlag = false)" />
<!-- 定义 -->
<el-dialog v-model="viewFlag" title="定义" width="60%">
<div v-html="summary" style="min-height: 300px;" />
</el-dialog>
<!-- 删除 -->
<el-dialog v-model="dialogVisible" title="请选择需要删除的数据" width="400">
<el-tree-select v-model="TreeValue" :data="TreeData" filterable check-strictly :props="defaultProps"
@@ -111,8 +122,10 @@ const heightTab = mainHeight(82)
const size = ref(0)
const addTreeRef = ref()
const dialogVisible = ref(false)
const viewFlag = ref(false)
const popupEditFlag = ref(false)
const treeRef = ref()
const summary = ref('')
const popupEditRef = ref()
const TreeData = ref([])
const TreeValue = ref([])
@@ -193,6 +206,10 @@ onMounted(() => {
// tableStore.index()
})
const view = (row: any) => {
viewFlag.value = true
summary.value = row.definition
}
const handleNodeClick = (data: any, node: any) => {
if (data.pid != '0') {
dotList.value = data

View File

@@ -20,7 +20,7 @@
<PopupEdit ref="popupEditRef" @onSubmit="tableStore.index()" />
<!-- 简介详情 -->
<el-dialog v-model="dialogVisible" title="事件简介" width="60%">
<span v-html="summary"></span>
<div v-html="summary"></div>
</el-dialog>
<!-- 抽屉 -->
<drawer ref="drawerRef" />

View File

@@ -2,69 +2,31 @@
<TableHeader area datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="统计类型:">
<el-select
v-model="tableStore.table.params.statisticalType"
value-key="id"
placeholder="请选择统计类型"
>
<el-option
v-for="item in classificationData"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.statisticalType" value-key="id" placeholder="请选择统计类型">
<el-option v-for="item in classificationData" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="电压等级:">
<el-select
v-model="tableStore.table.params.scale"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择电压等级"
>
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.scale" multiple collapse-tags clearable value-key="id"
placeholder="请选择电压等级">
<el-option v-for="item in voltageleveloption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="终端厂家:">
<el-select
v-model="tableStore.table.params.manufacturer"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择终端厂家"
>
<el-option
v-for="item in terminaloption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.manufacturer" multiple collapse-tags clearable
value-key="id" placeholder="请选择终端厂家">
<el-option v-for="item in terminaloption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="干扰源类型:">
<el-select
v-model="tableStore.table.params.loadType"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择干扰源类型"
>
<el-option
v-for="item in interfereoption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.loadType" multiple collapse-tags clearable value-key="id"
placeholder="请选择干扰源类型">
<el-option v-for="item in interfereoption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
</template>
@@ -73,16 +35,11 @@
<el-button icon="el-icon-Download" @click="exportEvent" type="primary">下载报告</el-button>
</template>
</TableHeader>
<Table
ref="tableRef"
:radio-config="{
labelField: 'name',
highlight: true,
visibleMethod: row => row.row.level == 6
}"
:tree-config="{ transform: true, parentField: 'pid' }"
:scroll-y="{ enabled: true }"
/>
<Table ref="tableRef" :radio-config="{
labelField: 'name',
highlight: true,
visibleMethod: row => row.row.level == 6
}" :tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }" :scroll-y="{ enabled: true }" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } from 'vue'
@@ -182,15 +139,15 @@ const tableStore = new TableStore({
},
loadCallback: () => {
let treeData = []
tableStore.table.data.forEach((item: any) => {
if (item.children.length > 0) {
item.children.forEach((k: any) => {
k.pid = item.id
})
}
})
// tableStore.table.data.forEach((item: any) => {
// if (item.children.length > 0) {
// item.children.forEach((k: any) => {
// k.pid = item.id
// })
// }
// })
treeData = tree2List(tableStore.table.data)
treeData = tree2List(tableStore.table.data, Math.random() * 1000)
tableStore.table.data = JSON.parse(JSON.stringify(treeData))
setTimeout(() => {
@@ -205,19 +162,19 @@ tableStore.table.params.powerFlag = 2
tableStore.table.params.serverName = 'harmonicBoot'
provide('tableStore', tableStore)
const tree2List = (list: any, pid?: string) => {
const tree2List = (list: any, id: any) => {
//存储结果的数组
let arr: any = []
// 遍历 tree 数组
list.forEach((item: any) => {
item.uPid = id
item.uId = (Math.random() * 1000)
item.comFlag = item.comFlag == null ? 3 : item.comFlag
item.assess = item.integrityData == 3.14159 ? 0 : item.integrityData < 60 ? 1 : item.integrityData < 90 ? 2 : 3
item.pid = pid
// 判断item是否存在children
if (!item.children) return arr.push(item)
// 函数递归对children数组进行tree2List的转换
const children = tree2List(item.children, item.id)
const children = tree2List(item.children, item.uId)
// 删除item的children属性
delete item.children
// 把item和children数组添加至结果数组

View File

@@ -2,74 +2,36 @@
<TableHeader area datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="统计类型:">
<el-select
v-model="tableStore.table.params.statisticalType"
value-key="id"
placeholder="请选择统计类型"
>
<el-option
v-for="item in classificationData"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.statisticalType" value-key="id" placeholder="请选择统计类型">
<el-option v-for="item in classificationData" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="电压等级:">
<el-select
v-model="tableStore.table.params.scale"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择电压等级"
>
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.scale" multiple collapse-tags clearable value-key="id"
placeholder="请选择电压等级">
<el-option v-for="item in voltageleveloption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="终端厂家:">
<el-select
v-model="tableStore.table.params.manufacturer"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择终端厂家"
>
<el-option
v-for="item in terminaloption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.manufacturer" multiple collapse-tags clearable
value-key="id" placeholder="请选择终端厂家">
<el-option v-for="item in terminaloption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="干扰源类型:">
<el-select
v-model="tableStore.table.params.loadType"
multiple
collapse-tags
clearable
value-key="id"
placeholder="请选择干扰源类型"
>
<el-option
v-for="item in interfereoption"
:key="item.id"
:label="item.name"
:value="item"
></el-option>
<el-select v-model="tableStore.table.params.loadType" multiple collapse-tags clearable value-key="id"
placeholder="请选择干扰源类型">
<el-option v-for="item in interfereoption" :key="item.id" :label="item.name"
:value="item"></el-option>
</el-select>
</el-form-item>
</template>
</TableHeader>
<Table ref="tableRef" :tree-config="{ transform: true, parentField: 'pid' }" :scroll-y="{ enabled: true }" />
<Table ref="tableRef" :tree-config="{ transform: true, parentField: 'uPid',rowField:'uId' }" :scroll-y="{ enabled: true }" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } from 'vue'
@@ -169,14 +131,24 @@ const tableStore = new TableStore({
},
loadCallback: () => {
let treeData = []
tableStore.table.data.forEach((item: any) => {
if (item.children.length > 0) {
item.children.forEach((k: any) => {
k.pid = item.id
})
}
})
treeData = tree2List(tableStore.table.data)
// tableStore.table.data.forEach((item: any, index: number) => {
// item.id = Math.floor(Math.random() * 1000)
// item.pid = index
// if (item.children.length > 0) {
// item.children.forEach((k: any) => {
// k.id = Math.floor(Math.random() * 1000)
// k.pid = item.id
// // if (k.children.length > 0) {
// // k.children.forEach((v: any) => {
// // v.id = Math.floor(Math.random() * 1000)
// // v.pid = k.id
// // })
// // }
// })
// }
// })
treeData = tree2List(tableStore.table.data, Math.random() * 1000)
tableStore.table.data = JSON.parse(JSON.stringify(treeData))
setTimeout(() => {
@@ -191,17 +163,20 @@ tableStore.table.params.powerFlag = 2
tableStore.table.params.serverName = 'harmonicBoot'
provide('tableStore', tableStore)
const tree2List = (list: any) => {
const tree2List = (list: any, id: any) => {
//存储结果的数组
let arr: any = []
// 遍历 tree 数组
list.forEach((item: any) => {
item.uPid = id
item.uId = (Math.random() * 1000)
item.comFlag = item.comFlag == null ? 3 : item.comFlag
item.assess = item.onlineRate == 3.14159 ? 0 : item.onlineRate < 60 ? 1 : item.onlineRate < 90 ? 2 : 3
// 判断item是否存在children
if (!item.children) return arr.push(item)
// 函数递归对children数组进行tree2List的转换
const children = tree2List(item.children)
const children = tree2List(item.children, item.uId)
// 删除item的children属性
delete item.children
// 把item和children数组添加至结果数组