全局添加导出表格配置
This commit is contained in:
@@ -1072,13 +1072,13 @@ export default {
|
|||||||
height: 13,
|
height: 13,
|
||||||
start: 0,
|
start: 0,
|
||||||
bottom: "20px",
|
bottom: "20px",
|
||||||
end: 15,
|
end: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
start: 0,
|
start: 0,
|
||||||
height: 13,
|
height: 13,
|
||||||
bottom: "20px",
|
bottom: "20px",
|
||||||
end: 15,
|
end: 100,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
series: [
|
series: [
|
||||||
@@ -1492,13 +1492,13 @@ export default {
|
|||||||
height: 13,
|
height: 13,
|
||||||
start: 0,
|
start: 0,
|
||||||
bottom: "20px",
|
bottom: "20px",
|
||||||
end: 15,
|
end: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
start: 0,
|
start: 0,
|
||||||
height: 13,
|
height: 13,
|
||||||
bottom: "20px",
|
bottom: "20px",
|
||||||
end: 15,
|
end: 100,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
series: [
|
series: [
|
||||||
|
|||||||
@@ -733,13 +733,13 @@ export default {
|
|||||||
height: 13,
|
height: 13,
|
||||||
start: 0,
|
start: 0,
|
||||||
bottom: '20px',
|
bottom: '20px',
|
||||||
end: 15
|
end: 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
start: 0,
|
start: 0,
|
||||||
height: 13,
|
height: 13,
|
||||||
bottom: '20px',
|
bottom: '20px',
|
||||||
end: 15
|
end: 100
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
series: [
|
series: [
|
||||||
@@ -1095,13 +1095,13 @@ export default {
|
|||||||
height: 13,
|
height: 13,
|
||||||
start: 0,
|
start: 0,
|
||||||
bottom: '20px',
|
bottom: '20px',
|
||||||
end: 15
|
end: 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
start: 0,
|
start: 0,
|
||||||
height: 13,
|
height: 13,
|
||||||
bottom: '20px',
|
bottom: '20px',
|
||||||
end: 15
|
end: 100
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
series: [
|
series: [
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ const backbxlb = () => {
|
|||||||
wp.value = null
|
wp.value = null
|
||||||
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||||
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||||
console.log("🚀 ~ backbxlb ~ rmsboxiRef.value:", rmsboxiRef.value)
|
|
||||||
|
|
||||||
emit('backbxlb')
|
emit('backbxlb')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ export const defaultAttribute: VxeTableProps = {
|
|||||||
treeConfig: {
|
treeConfig: {
|
||||||
reserve: true
|
reserve: true
|
||||||
},
|
},
|
||||||
|
|
||||||
showOverflow: true
|
showOverflow: true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
:icon="Search">查询</el-button>
|
:icon="Search">查询</el-button>
|
||||||
<el-button @click="onResetForm" v-if="showSearch && showReset" :loading="tableStore.table.loading"
|
<el-button @click="onResetForm" v-if="showSearch && showReset" :loading="tableStore.table.loading"
|
||||||
:icon="RefreshLeft">重置</el-button>
|
:icon="RefreshLeft">重置</el-button>
|
||||||
|
<el-button @click="onExport" v-if="showExport" :loading="tableStore.table.loading" type="primary"
|
||||||
|
icon="el-icon-Download">导出</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<slot name="operation"></slot>
|
<slot name="operation"></slot>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,6 +58,8 @@ interface Props {
|
|||||||
nextFlag?: boolean //控制时间是否可以往后推
|
nextFlag?: boolean //控制时间是否可以往后推
|
||||||
theCurrentTime?: boolean //控制时间前3天展示上个月时间
|
theCurrentTime?: boolean //控制时间前3天展示上个月时间
|
||||||
showReset?: boolean //控制时间前3天展示上个月时间
|
showReset?: boolean //控制时间前3天展示上个月时间
|
||||||
|
showExport?: boolean //导出控制
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
@@ -63,7 +68,8 @@ const props = withDefaults(defineProps<Props>(), {
|
|||||||
showSearch: true,
|
showSearch: true,
|
||||||
nextFlag: false,
|
nextFlag: false,
|
||||||
theCurrentTime: false,
|
theCurrentTime: false,
|
||||||
showReset: true
|
showReset: true,
|
||||||
|
showExport:false
|
||||||
})
|
})
|
||||||
// 动态计算table高度
|
// 动态计算table高度
|
||||||
const resizeObserver = new ResizeObserver(entries => {
|
const resizeObserver = new ResizeObserver(entries => {
|
||||||
@@ -169,6 +175,10 @@ const onResetForm = () => {
|
|||||||
const setTheDate = (val: any) => {
|
const setTheDate = (val: any) => {
|
||||||
datePickerRef.value.setTheDate(val)
|
datePickerRef.value.setTheDate(val)
|
||||||
}
|
}
|
||||||
|
// 导出
|
||||||
|
const onExport = () => {
|
||||||
|
tableStore.onTableAction('export', {showAllFlag:true})
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({ onComSearch, areaRef, setDatePicker, setTheDate, datePickerRef, showSelectChange })
|
defineExpose({ onComSearch, areaRef, setDatePicker, setTheDate, datePickerRef, showSelectChange })
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,41 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :style="{ height: tableStore.table.height }">
|
<div :style="{ height: tableStore.table.height }">
|
||||||
<vxe-table
|
<vxe-table ref="tableRef" height="auto" :data="tableStore.table.data" v-loading="tableStore.table.loading"
|
||||||
ref="tableRef"
|
v-bind="Object.assign({}, defaultAttribute, $attrs)" @checkbox-all="selectChangeEvent"
|
||||||
height="auto"
|
@checkbox-change="selectChangeEvent" :showOverflow="showOverflow">
|
||||||
:data="tableStore.table.data"
|
|
||||||
v-loading="tableStore.table.loading"
|
|
||||||
v-bind="Object.assign({}, defaultAttribute, $attrs)"
|
|
||||||
@checkbox-all="selectChangeEvent"
|
|
||||||
@checkbox-change="selectChangeEvent"
|
|
||||||
:showOverflow="showOverflow"
|
|
||||||
>
|
|
||||||
<!-- Column 组件内部是 el-table-column -->
|
<!-- Column 组件内部是 el-table-column -->
|
||||||
<template v-if="isGroup">
|
<template v-if="isGroup">
|
||||||
<GroupColumn :column="tableStore.table.column" />
|
<GroupColumn :column="tableStore.table.column" />
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<Column
|
<Column :attr="item" :key="key + '-column'" v-for="(item, key) in tableStore.table.column"
|
||||||
:attr="item"
|
:tree-node="item.treeNode">
|
||||||
:key="key + '-column'"
|
|
||||||
v-for="(item, key) in tableStore.table.column"
|
|
||||||
:tree-node="item.treeNode"
|
|
||||||
>
|
|
||||||
<!-- tableStore 预设的列 render 方案 -->
|
<!-- tableStore 预设的列 render 方案 -->
|
||||||
<template v-if="item.render" #default="scope">
|
<template v-if="item.render" #default="scope">
|
||||||
<FieldRender
|
<FieldRender :field="item" :row="scope.row" :column="scope.column" :index="scope.rowIndex" :key="key +
|
||||||
:field="item"
|
|
||||||
:row="scope.row"
|
|
||||||
:column="scope.column"
|
|
||||||
:index="scope.rowIndex"
|
|
||||||
:key="
|
|
||||||
key +
|
|
||||||
'-' +
|
'-' +
|
||||||
item.render +
|
item.render +
|
||||||
'-' +
|
'-' +
|
||||||
(item.field ? '-' + item.field + '-' + scope.row[item.field] : '')
|
(item.field ? '-' + item.field + '-' + scope.row[item.field] : '')
|
||||||
"
|
" />
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
</template>
|
</template>
|
||||||
@@ -44,16 +26,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="tableStore.showPage" class="table-pagination">
|
<div v-if="tableStore.showPage" class="table-pagination">
|
||||||
<el-pagination
|
<el-pagination :currentPage="tableStore.table.params!.pageNum" :page-size="tableStore.table.params!.pageSize"
|
||||||
:currentPage="tableStore.table.params!.pageNum"
|
:page-sizes="pageSizes" background
|
||||||
:page-size="tableStore.table.params!.pageSize"
|
|
||||||
:page-sizes="pageSizes"
|
|
||||||
background
|
|
||||||
:layout="config.layout.shrink ? 'prev, next, jumper' : 'sizes,total, ->, prev, pager, next, jumper'"
|
:layout="config.layout.shrink ? 'prev, next, jumper' : 'sizes,total, ->, prev, pager, next, jumper'"
|
||||||
:total="tableStore.table.total"
|
:total="tableStore.table.total" @size-change="onTableSizeChange"
|
||||||
@size-change="onTableSizeChange"
|
@current-change="onTableCurrentChange"></el-pagination>
|
||||||
@current-change="onTableCurrentChange"
|
|
||||||
></el-pagination>
|
|
||||||
</div>
|
</div>
|
||||||
<slot name="footer"></slot>
|
<slot name="footer"></slot>
|
||||||
</template>
|
</template>
|
||||||
@@ -67,12 +44,13 @@ import Column from '@/components/table/column/index.vue'
|
|||||||
import GroupColumn from '@/components/table/column/groupColumn.vue'
|
import GroupColumn from '@/components/table/column/groupColumn.vue'
|
||||||
import { useConfig } from '@/stores/config'
|
import { useConfig } from '@/stores/config'
|
||||||
import type TableStoreClass from '@/utils/tableStore'
|
import type TableStoreClass from '@/utils/tableStore'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
|
||||||
const config = useConfig()
|
const config = useConfig()
|
||||||
const tableRef = ref<VxeTableInstance>()
|
const tableRef = ref<VxeTableInstance>()
|
||||||
const tableStore = inject('tableStore') as TableStoreClass
|
const tableStore = inject('tableStore') as TableStoreClass
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
interface Props extends /* @vue-ignore */ Partial<InstanceType<typeof ElTable>> {
|
interface Props extends /* @vue-ignore */ Partial<InstanceType<typeof ElTable>> {
|
||||||
isGroup?: boolean
|
isGroup?: boolean
|
||||||
@@ -116,12 +94,38 @@ const selectChangeEvent: VxeTableEvents.CheckboxChange<any> = ({ checked }) => {
|
|||||||
const getRef = () => {
|
const getRef = () => {
|
||||||
return tableRef.value
|
return tableRef.value
|
||||||
}
|
}
|
||||||
|
watch(
|
||||||
|
() => tableStore.table.allFlag,
|
||||||
|
newVal => {
|
||||||
|
|
||||||
|
|
||||||
|
if (tableStore.table.allFlag) {
|
||||||
|
|
||||||
|
tableRef.value?.exportData({
|
||||||
|
filename: document.querySelectorAll('.ba-nav-tab.active')[0].textContent || '', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: tableStore.table.allData, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column: any) {
|
||||||
|
|
||||||
|
return !(column.column.title === undefined || column.column.title === '序号' || column.column.title === '操作')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableStore.table.allFlag = false
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
)
|
||||||
watch(
|
watch(
|
||||||
() => tableStore.table.data,
|
() => tableStore.table.data,
|
||||||
newVal => {
|
newVal => {
|
||||||
tableStore.onTableAction('selection-change', [])
|
tableStore.onTableAction('selection-change', [])
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
getRef
|
getRef
|
||||||
})
|
})
|
||||||
|
|||||||
35
src/utils/tableMethod.ts
Normal file
35
src/utils/tableMethod.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
// 过滤表格导出数据
|
||||||
|
export const filtration = (arr: Array<{ dealFlag?: number; fileFlag?: number; onlineEvaluate?: number }>) => {
|
||||||
|
const dealFlagMap: Record<number, string> = {
|
||||||
|
0: '未处理',
|
||||||
|
1: '已处理',
|
||||||
|
2: '已处理,无结果',
|
||||||
|
3: '计算失败'
|
||||||
|
}
|
||||||
|
const fileFlagMap: Record<number, string> = {
|
||||||
|
0: '不存在',
|
||||||
|
1: '存在'
|
||||||
|
}
|
||||||
|
|
||||||
|
arr.forEach((item: any) => {
|
||||||
|
if (item.dealFlag !== undefined) {
|
||||||
|
item.dealFlag = dealFlagMap[item.dealFlag] || ''
|
||||||
|
}
|
||||||
|
if (item.fileFlag !== undefined) {
|
||||||
|
item.fileFlag = fileFlagMap[item.fileFlag] || ''
|
||||||
|
}
|
||||||
|
if (item.onlineEvaluate !== undefined) {
|
||||||
|
if (item.onlineEvaluate == null) {
|
||||||
|
} else if (item.onlineEvaluate == 3.14159) {
|
||||||
|
item.onlineEvaluate = '/'
|
||||||
|
} else if (item.onlineEvaluate * 100 > 90) {
|
||||||
|
item.onlineEvaluate = '优'
|
||||||
|
} else if (item.onlineEvaluate * 100 > 60) {
|
||||||
|
item.onlineEvaluate = '良'
|
||||||
|
} else {
|
||||||
|
item.onlineEvaluate = '差'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return arr
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ import createAxios from '@/utils/request'
|
|||||||
import { requestPayload } from '@/utils/request'
|
import { requestPayload } from '@/utils/request'
|
||||||
import { Method } from 'axios'
|
import { Method } from 'axios'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { filtration } from './tableMethod'
|
||||||
|
|
||||||
interface TableStoreParams {
|
interface TableStoreParams {
|
||||||
url: string // 请求地址
|
url: string // 请求地址
|
||||||
@@ -31,6 +32,8 @@ export default class TableStore {
|
|||||||
ref: null,
|
ref: null,
|
||||||
selection: [],
|
selection: [],
|
||||||
data: [],
|
data: [],
|
||||||
|
allData: [],
|
||||||
|
allFlag: false,
|
||||||
webPagingData: [],
|
webPagingData: [],
|
||||||
total: 0,
|
total: 0,
|
||||||
params: {
|
params: {
|
||||||
@@ -175,6 +178,25 @@ export default class TableStore {
|
|||||||
() => {
|
() => {
|
||||||
console.warn('No action defined')
|
console.warn('No action defined')
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'export',
|
||||||
|
() => {
|
||||||
|
// this.index()
|
||||||
|
let params = { ...this.table.params, pageNum: 1, pageSize: this.table.total }
|
||||||
|
createAxios(
|
||||||
|
Object.assign(
|
||||||
|
{
|
||||||
|
url: this.url,
|
||||||
|
method: this.method
|
||||||
|
},
|
||||||
|
requestPayload(this.method, params, this.paramsPOST)
|
||||||
|
)
|
||||||
|
).then(res => {
|
||||||
|
this.table.allData = filtration(res.data.records || res.data)
|
||||||
|
this.table.allFlag = data.showAllFlag || true
|
||||||
|
})
|
||||||
|
}
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
const action = actionFun.get(event) || actionFun.get('default')
|
const action = actionFun.get(event) || actionFun.get('default')
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<div v-show="view">
|
<div v-show="view">
|
||||||
<TableHeader datePicker area>
|
<TableHeader datePicker area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="筛选">
|
<el-form-item label="筛选">
|
||||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入关键字筛选" />
|
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入关键字筛选" />
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main online">
|
<div class="default-main online">
|
||||||
<div class="online_header">
|
<div class="online_header">
|
||||||
<TableHeader date-picker ref="tableHeaderRef">
|
<TableHeader date-picker ref="tableHeaderRef" >
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="统计类型:">
|
<el-form-item label="统计类型:">
|
||||||
<el-select
|
<el-select
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<TableHeader date-picker area>
|
<TableHeader date-picker area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<!-- <el-form-item label="统计类型:">
|
<!-- <el-form-item label="统计类型:">
|
||||||
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<TableHeader datePicker area>
|
<TableHeader datePicker area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="统计类型:">
|
<el-form-item label="统计类型:">
|
||||||
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<TableHeader datePicker area>
|
<TableHeader datePicker area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="统计类型:">
|
<el-form-item label="统计类型:">
|
||||||
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style="flex: 1; overflow-y: scroll" class="mt10" v-loading="loading">
|
<div style="flex: 1; overflow-y: scroll" class="mt10">
|
||||||
<my-echart :options="item.option" v-for="item in list" :style="height" />
|
<my-echart :options="item.option" v-for="item in list" :style="height" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -52,7 +52,6 @@ import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
|||||||
import { indexOptions, harmonicOptions, inharmonicOptions } from '@/utils/dictionary'
|
import { indexOptions, harmonicOptions, inharmonicOptions } from '@/utils/dictionary'
|
||||||
import { getHistoryResult } from '@/api/harmonic-boot/harmonic'
|
import { getHistoryResult } from '@/api/harmonic-boot/harmonic'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import { yMethod } from '@/utils/echartMethod'
|
|
||||||
const datePickerRef = ref()
|
const datePickerRef = ref()
|
||||||
const monitoringPoint = useMonitoringPoint()
|
const monitoringPoint = useMonitoringPoint()
|
||||||
const checked = ref(monitoringPoint.state.showCheckBox)
|
const checked = ref(monitoringPoint.state.showCheckBox)
|
||||||
@@ -76,7 +75,6 @@ const formData = reactive<{
|
|||||||
inHarmonic: 1,
|
inHarmonic: 1,
|
||||||
ptType: 0
|
ptType: 0
|
||||||
})
|
})
|
||||||
const height: any = ref(mainHeight(200, 1))
|
|
||||||
const options = ref({})
|
const options = ref({})
|
||||||
const traceability = ref<any>([])
|
const traceability = ref<any>([])
|
||||||
const list = ref<any>([])
|
const list = ref<any>([])
|
||||||
@@ -89,9 +87,9 @@ const typeOptions = ref([
|
|||||||
{ label: 'cp95值', value: 4 }
|
{ label: 'cp95值', value: 4 }
|
||||||
])
|
])
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
datePickerRef.value.setTheDate(5)
|
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
const height: any = ref(mainHeight(200, 1))
|
||||||
const checkChange = () => {
|
const checkChange = () => {
|
||||||
if (checked.value) {
|
if (checked.value) {
|
||||||
monitoringPoint.setShowCheckBox(true)
|
monitoringPoint.setShowCheckBox(true)
|
||||||
@@ -120,15 +118,13 @@ const init = () => {
|
|||||||
}
|
}
|
||||||
list.value = []
|
list.value = []
|
||||||
shujuchuli(res)
|
shujuchuli(res)
|
||||||
loading.value = false
|
})
|
||||||
}).catch(() => { loading.value = false })
|
|
||||||
}
|
}
|
||||||
const shujuchuli = (res: any) => {
|
const shujuchuli = (res: any) => {
|
||||||
let shujuData = res.data
|
let shujuData = res.data
|
||||||
shujuData.forEach((item: any, i: number) => {
|
shujuData.forEach((item: any, i: number) => {
|
||||||
let [min, max] = yMethod([ ...(item.value.map(arr => arr.slice(1)).flat()),item.topLimit,,item.lowerLimit])
|
|
||||||
|
|
||||||
//判断是否存在暂降点
|
//判断是否存在暂降点
|
||||||
|
|
||||||
if (item.eventDetail !== null || item.eventDetail.length === 0) {
|
if (item.eventDetail !== null || item.eventDetail.length === 0) {
|
||||||
//向项别中添加暂降点
|
//向项别中添加暂降点
|
||||||
let chufa = []
|
let chufa = []
|
||||||
@@ -147,8 +143,8 @@ const shujuchuli = (res: any) => {
|
|||||||
let cvalue = []
|
let cvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -213,8 +209,8 @@ const shujuchuli = (res: any) => {
|
|||||||
let gvalue = []
|
let gvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -287,7 +283,7 @@ const shujuchuli = (res: any) => {
|
|||||||
let bvalue = []
|
let bvalue = []
|
||||||
let cvalue = []
|
let cvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -349,7 +345,7 @@ const shujuchuli = (res: any) => {
|
|||||||
if (item.phaiscType.length == 3) {
|
if (item.phaiscType.length == 3) {
|
||||||
let gvalue = []
|
let gvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -415,7 +411,7 @@ const shujuchuli = (res: any) => {
|
|||||||
let bvalue = []
|
let bvalue = []
|
||||||
let cvalue = []
|
let cvalue = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -472,7 +468,7 @@ const shujuchuli = (res: any) => {
|
|||||||
if (item.phaiscType.length == 3) {
|
if (item.phaiscType.length == 3) {
|
||||||
let gvalue = []
|
let gvalue = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -663,8 +659,8 @@ const shujuchuli = (res: any) => {
|
|||||||
let cvalue = []
|
let cvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -717,8 +713,8 @@ const shujuchuli = (res: any) => {
|
|||||||
let gvalue = []
|
let gvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -780,7 +776,7 @@ const shujuchuli = (res: any) => {
|
|||||||
let bvalue = []
|
let bvalue = []
|
||||||
let cvalue = []
|
let cvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
// item.minValue=item.lowerLimit
|
// item.minValue=item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
@@ -831,7 +827,7 @@ const shujuchuli = (res: any) => {
|
|||||||
if (item.phaiscType.length == 2) {
|
if (item.phaiscType.length == 2) {
|
||||||
let gvalue = []
|
let gvalue = []
|
||||||
let topLimit = []
|
let topLimit = []
|
||||||
item.maxValue = max
|
item.maxValue = item.topLimit
|
||||||
// item.minValue=item.lowerLimit
|
// item.minValue=item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
@@ -892,7 +888,7 @@ const shujuchuli = (res: any) => {
|
|||||||
let cvalue = []
|
let cvalue = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
// item.maxValue=item.topLimit
|
// item.maxValue=item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -943,7 +939,7 @@ const shujuchuli = (res: any) => {
|
|||||||
let gvalue = []
|
let gvalue = []
|
||||||
let lowerLimit = []
|
let lowerLimit = []
|
||||||
// item.maxValue=item.topLimit
|
// item.maxValue=item.topLimit
|
||||||
item.minValue = min
|
item.minValue = item.lowerLimit
|
||||||
//判断数据是否存在
|
//判断数据是否存在
|
||||||
if (item.value !== null) {
|
if (item.value !== null) {
|
||||||
for (let j = 0; j < item.value.length; j++) {
|
for (let j = 0; j < item.value.length; j++) {
|
||||||
@@ -1096,7 +1092,6 @@ const shujuchuli = (res: any) => {
|
|||||||
}
|
}
|
||||||
const rendering = () => {
|
const rendering = () => {
|
||||||
height.value = mainHeight(200, list.value.length > 1 ? 2 : 1)
|
height.value = mainHeight(200, list.value.length > 1 ? 2 : 1)
|
||||||
|
|
||||||
list.value.forEach((item: any) => {
|
list.value.forEach((item: any) => {
|
||||||
let opitonserise: any[] = []
|
let opitonserise: any[] = []
|
||||||
item.legend.forEach((item2: any) => {
|
item.legend.forEach((item2: any) => {
|
||||||
@@ -1125,7 +1120,7 @@ const rendering = () => {
|
|||||||
smooth: true,
|
smooth: true,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color: '#009900'
|
color: '#339900'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1142,7 +1137,7 @@ const rendering = () => {
|
|||||||
barWidth: 22,
|
barWidth: 22,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color: '#CC0000'
|
color: '#FF3300'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: item.cvalue
|
data: item.cvalue
|
||||||
@@ -1300,8 +1295,6 @@ const rendering = () => {
|
|||||||
getEcharts()
|
getEcharts()
|
||||||
}
|
}
|
||||||
const getEcharts = () => {
|
const getEcharts = () => {
|
||||||
console.log("🚀 ~ list.value.forEach ~ list.value:", list.value)
|
|
||||||
|
|
||||||
list.value.forEach((item: any, i: number) => {
|
list.value.forEach((item: any, i: number) => {
|
||||||
item.option = {
|
item.option = {
|
||||||
backgroundColor: '#fff',
|
backgroundColor: '#fff',
|
||||||
@@ -1325,7 +1318,7 @@ const getEcharts = () => {
|
|||||||
opacity: 0.35,
|
opacity: 0.35,
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||||
|
|
||||||
formatter: function (params: any) {
|
formatter: function (params: any) {
|
||||||
let tips = ''
|
let tips = ''
|
||||||
@@ -1398,7 +1391,8 @@ const getEcharts = () => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
left: '140px',
|
left: '50px',
|
||||||
|
top: '25px',
|
||||||
verticalAlign: 'top',
|
verticalAlign: 'top',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
itemDistance: 5,
|
itemDistance: 5,
|
||||||
@@ -1411,6 +1405,9 @@ const getEcharts = () => {
|
|||||||
|
|
||||||
padding: [0, 0, 0, 0] //[上、右、下、左]
|
padding: [0, 0, 0, 0] //[上、右、下、左]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: '70px',
|
||||||
},
|
},
|
||||||
xAxis: [
|
xAxis: [
|
||||||
{
|
{
|
||||||
@@ -1426,42 +1423,42 @@ const getEcharts = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
toolbox: {
|
// toolbox: {
|
||||||
show: true,
|
// show: true,
|
||||||
feature: {
|
// feature: {
|
||||||
dataZoom: {
|
// dataZoom: {
|
||||||
// bottom: '10px',
|
// // bottom: '10px',
|
||||||
yAxisIndex: 'none'
|
// yAxisIndex: 'none'
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
yAxis: [
|
yAxis: [
|
||||||
{
|
{
|
||||||
type: 'value',
|
type: 'value',
|
||||||
|
|
||||||
min: item.minValue,
|
// min: item.minValue,
|
||||||
max: item.maxValue,
|
|
||||||
name: item.valueName,
|
name: item.valueName,
|
||||||
axisLabel: {
|
minInterval: 1,
|
||||||
interval: 0,
|
// axisLabel: {
|
||||||
formatter: function (value: any) {
|
// interval: 0,
|
||||||
return value.toFixed(3)
|
// // formatter: function (value: any) {
|
||||||
},
|
// // return value.toFixed(0)
|
||||||
left: '20px'
|
// // },
|
||||||
},
|
// left: '20px'
|
||||||
|
// },
|
||||||
|
|
||||||
axisLine: {
|
axisLine: {
|
||||||
show: true,
|
show: true,
|
||||||
onZero: false, //-----------重点
|
onZero: false, //-----------重点
|
||||||
lineStyle: {}
|
lineStyle: {}
|
||||||
},
|
},
|
||||||
splitLine: {
|
// splitLine: {
|
||||||
lineStyle: {
|
// lineStyle: {
|
||||||
// 使用深浅的间隔色
|
// // 使用深浅的间隔色
|
||||||
type: 'dashed',
|
// type: 'dashed',
|
||||||
opacity: 0.5
|
// opacity: 0.5
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
series: item.serise
|
series: item.serise
|
||||||
@@ -1555,7 +1552,7 @@ const getEcharts = () => {
|
|||||||
symbolSize: 0,
|
symbolSize: 0,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color: '#CC0000'
|
color: '#FF3300'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,14 @@
|
|||||||
<!--业务用户管理界面-->
|
<!--业务用户管理界面-->
|
||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<TableHeader datePicker area>
|
<TableHeader datePicker area showExport>
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item label="筛选数据">
|
<el-form-item label="筛选数据">
|
||||||
<el-input v-model="tableStore.table.params.searchValue" clearable maxlength="32" show-word-limit placeholder="筛选数据" />
|
<el-input v-model="tableStore.table.params.searchValue" clearable maxlength="32" show-word-limit placeholder="筛选数据" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operation>
|
<template v-slot:operation>
|
||||||
<el-button type="primary" @click="exportEvent" class="ml10" icon="el-icon-Download">导出</el-button>
|
<!-- <el-button type="primary" @click="exportEvent" class="ml10" icon="el-icon-Download">导出</el-button> -->
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<!--表格-->
|
<!--表格-->
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<TableHeader area>
|
<TableHeader area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<!-- <el-form-item label="统计类型:">
|
<!-- <el-form-item label="统计类型:">
|
||||||
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
||||||
@@ -99,8 +99,8 @@ const tableStore = new TableStore({
|
|||||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'areaName', title: '区域' },
|
{ field: 'areaName', title: '区域',minWidth: 100 },
|
||||||
{ field: 'gdName', title: '地级区' },
|
{ field: 'gdName', title: '地级区' ,minWidth: 100},
|
||||||
{
|
{
|
||||||
field: 'bdName',
|
field: 'bdName',
|
||||||
title: '供电公司',
|
title: '供电公司',
|
||||||
@@ -114,7 +114,19 @@ const tableStore = new TableStore({
|
|||||||
{ field: 'devName', title: '终端名称', minWidth: 80 },
|
{ field: 'devName', title: '终端名称', minWidth: 80 },
|
||||||
{ field: 'ip', title: '网络参数' , minWidth: 100},
|
{ field: 'ip', title: '网络参数' , minWidth: 100},
|
||||||
{ field: 'lineName', title: '监测点名称' , minWidth: 100},
|
{ field: 'lineName', title: '监测点名称' , minWidth: 100},
|
||||||
{ field: 'comFlag', title: '通讯状态' , minWidth: 100},
|
// { field: 'comFlag', title: '通讯状态' , minWidth: 100},
|
||||||
|
{
|
||||||
|
field: 'comFlag',
|
||||||
|
title: '通讯状态',
|
||||||
|
render: 'tag',
|
||||||
|
effect: 'dark',
|
||||||
|
custom: {
|
||||||
|
'正常': 'success',
|
||||||
|
'中断': 'danger',
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
{ field: 'loadType', title: '干扰源类型' , minWidth: 100},
|
{ field: 'loadType', title: '干扰源类型' , minWidth: 100},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<TableHeader area>
|
<TableHeader area>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="监测点性质:">
|
<el-form-item label="监测点性质:">
|
||||||
<el-select v-model="tableStore.table.params.powerFlag" filterable multiple collapse-tags clearable
|
<el-select v-model="tableStore.table.params.powerFlag" filterable collapse-tags
|
||||||
placeholder="请选择监测点性质">
|
placeholder="请选择监测点性质">
|
||||||
<el-option v-for="item in terminalstatus" :key="item.value" :label="item.label"
|
<el-option v-for="item in terminalstatus" :key="item.value" :label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<el-form-item label="上报类型:">
|
<el-form-item label="上报类型:">
|
||||||
<el-select v-model="tableStore.table.params.monitorFlag" filterable multiple collapse-tags clearable
|
<el-select v-model="tableStore.table.params.monitorFlag"
|
||||||
placeholder="请选择上报类型">
|
placeholder="请选择上报类型">
|
||||||
<el-option v-for="item in communicationstatus" :key="item.value" :label="item.label"
|
<el-option v-for="item in communicationstatus" :key="item.value" :label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -50,7 +50,36 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<Table ref="tableRef" />
|
<div :style="{ height: tableStore.table.height }" v-loading="tableStore.table.loading">
|
||||||
|
<vxe-table height="auto" auto-resize v-bind="defaultAttribute" :stripe='false' :scroll-y="{ enabled: false }"
|
||||||
|
:span-method="rowspanMethod" :data="tableData">
|
||||||
|
<vxe-column field="name1" title="区域">
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="name2" title="类型">
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="name3" title="分类型">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ Number.isFinite(row.name3-0)? row.name3+'kV':row.name3}}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="subCount" title="变电站个数(个)">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span style="color: blue">{{ row.subCount }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="devCount" title="终端个数(个)">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span style="color: #006699">{{ row.devCount }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="lineCount" title="监测点个数(个)">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span style="color: green">{{ row.lineCount }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
</vxe-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -62,17 +91,23 @@ import TableStore from '@/utils/tableStore'
|
|||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
import type { VxeTablePropTypes } from 'vxe-table'
|
||||||
|
import XEUtils from 'xe-utils'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'harmonic-boot/run/devicemessage'
|
name: 'harmonic-boot/run/terminalconts'
|
||||||
})
|
})
|
||||||
const view = ref(true)
|
const treeData: any = ref([])
|
||||||
|
const treeDataCopy: any = ref([])
|
||||||
|
|
||||||
const classificationData = dictData.getBasicData('Statistical_Type', ["Report_Type"])
|
const classificationData = dictData.getBasicData('Statistical_Type', ["Report_Type"])
|
||||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
||||||
const interfereoption = dictData.getBasicData('Interference_Source')
|
const interfereoption = dictData.getBasicData('Interference_Source')
|
||||||
//上报类型
|
//上报类型
|
||||||
const communicationstatus = [
|
const communicationstatus = [
|
||||||
|
|
||||||
{ value: 2, label: "全部" },
|
{ value: 2, label: "全部" },
|
||||||
{ value: 1, label: "灿能上报" },
|
{ value: 1, label: "灿能上报" },
|
||||||
{ value: 0, label: "非灿能上报" },
|
{ value: 0, label: "非灿能上报" },
|
||||||
@@ -88,7 +123,7 @@ const terminalstatus = [
|
|||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/device-boot/runManage/getTerminalLedger',
|
url: '/device-boot/runManage/getTerminalLedger',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
isWebPaging: true,
|
showPage: false,
|
||||||
column: [
|
column: [
|
||||||
{
|
{
|
||||||
field: 'index',
|
field: 'index',
|
||||||
@@ -99,42 +134,108 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'areaName', title: '区域' },
|
{ field: 'areaName', title: '区域' },
|
||||||
{ field: 'gdName', title: '地级区' },
|
{ field: 'gdName', title: '类型' },
|
||||||
{
|
{ field: 'flx', title: '分类型' },
|
||||||
field: 'bdName',
|
{ field: 'gdName', title: '变电站个数(个)' },
|
||||||
title: '供电公司',
|
{ field: 'gdName', title: '终端个数(个)' },
|
||||||
minWidth: 100
|
{ field: 'gdName', title: '监测点个数(个)' },
|
||||||
},
|
|
||||||
{ field: 'objName', title: '监测点对象名称', minWidth: 240 },
|
|
||||||
{ field: 'manufacturer', title: '厂家', minWidth: 100 },
|
|
||||||
{ field: 'scale', title: '电压等级', minWidth: 100 },
|
|
||||||
{ field: 'businessType', title: '行业类型', minWidth: 100 },
|
|
||||||
|
|
||||||
{ field: 'devName', title: '终端名称', minWidth: 80 },
|
|
||||||
{ field: 'ip', title: '网络参数', minWidth: 100 },
|
|
||||||
{ field: 'lineName', title: '监测点名称', minWidth: 100 },
|
|
||||||
{ field: 'loadType', title: '干扰源类型', minWidth: 100 },
|
|
||||||
|
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.data.map((item: any) => {
|
|
||||||
item.onlineEvaluate == 3.14159 ? item.onlineEvaluate = '/' : item.onlineEvaluate <= 0.6 ? item.onlineEvaluate = '差' : item.onlineEvaluate <= 0.9 ? item.onlineEvaluate = '良' : item.onlineEvaluate <= 1 ? item.onlineEvaluate = '优' : '/'
|
treeData.value = tree2List(tableStore.table.data, Math.random() * 1000)
|
||||||
})
|
|
||||||
|
toColTreeData(XEUtils.toArrayTree(JSON.parse(JSON.stringify(treeData.value))))
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
tableStore.table.params.statisticalType = classificationData[0]
|
tableStore.table.params.statisticalType = classificationData[0]
|
||||||
tableStore.table.params.serverName = "harmonic-boot"
|
tableStore.table.params.serverName = "harmonic-boot"
|
||||||
tableStore.table.params.monitorFlag = 2
|
tableStore.table.params.monitorFlag = 2
|
||||||
tableStore.table.params.powerFlag = '2'
|
|
||||||
tableStore.table.params.evaluate = ''
|
|
||||||
tableStore.table.params.powerFlag = 2
|
tableStore.table.params.powerFlag = 2
|
||||||
|
tableStore.table.params.evaluate = ''
|
||||||
|
|
||||||
|
|
||||||
|
tableStore.table.params.scale = voltageleveloption
|
||||||
|
tableStore.table.params.manufacturer = terminaloption
|
||||||
|
tableStore.table.params.loadType = interfereoption
|
||||||
|
// 处理大数据卡顿
|
||||||
|
const tree2List = (list: any, id: any) => {
|
||||||
|
//存储结果的数组
|
||||||
|
let arr: any = []
|
||||||
|
// 遍历 tree 数组
|
||||||
|
list.forEach((item: any) => {
|
||||||
|
item.parentId = id
|
||||||
|
item.id = (Math.random() * 1000)
|
||||||
|
|
||||||
|
// 判断item是否存在children
|
||||||
|
if (!item.list) return arr.push(item)
|
||||||
|
// 函数递归,对list数组进行tree2List的转换
|
||||||
|
const list = tree2List(item.list, item.id)
|
||||||
|
// 删除item的list属性
|
||||||
|
delete item.list
|
||||||
|
// 把item和list数组添加至结果数组
|
||||||
|
//..list: 意思是把list数组展开
|
||||||
|
arr.push(item, ...list)
|
||||||
|
})
|
||||||
|
// 返回结果数组
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
|
||||||
|
const toColTreeData = (treeData: any[]) => {
|
||||||
|
const options = { children: 'children' }
|
||||||
|
const list: any[] = []
|
||||||
|
const keyMap: any = {}
|
||||||
|
XEUtils.eachTree(treeData, (item, index, result, paths, parent) => {
|
||||||
|
keyMap[item.id] = item
|
||||||
|
item.keys = parent ? parent.keys.concat([item.id]) : [item.id]
|
||||||
|
if (!item.children || !item.children.length) {
|
||||||
|
const row: any = {}
|
||||||
|
// console.log("🚀 ~ item.keys.forEach ~ item:", item)
|
||||||
|
|
||||||
|
item.keys.forEach((key: any, index: number) => {
|
||||||
|
const level = index + 1
|
||||||
|
const obj = keyMap[key]
|
||||||
|
|
||||||
|
row[`id${level}`] = obj.id
|
||||||
|
row[`name${level}`] = obj.areaName || obj.name || obj.dicName
|
||||||
|
row[`subCount`] = obj.subCount
|
||||||
|
row[`devCount`] = obj.devCount
|
||||||
|
row[`lineCount`] = obj.lineCount
|
||||||
|
})
|
||||||
|
list.push(row)
|
||||||
|
}
|
||||||
|
}, options)
|
||||||
|
|
||||||
|
tableData.value = list
|
||||||
|
}
|
||||||
|
|
||||||
|
const tableData: any = ref([])
|
||||||
|
|
||||||
|
// 通用行合并函数(将相同多列数据合并为一行)
|
||||||
|
const rowspanMethod: VxeTablePropTypes.SpanMethod = ({ row, _rowIndex, column, visibleData }) => {
|
||||||
|
// console.log("🚀 ~ row:", row)
|
||||||
|
const fields = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6']
|
||||||
|
const cellValue = row[column.field]
|
||||||
|
// console.log("🚀 ~ cellValue:", cellValue)
|
||||||
|
if (cellValue && fields.includes(column.field)) {
|
||||||
|
const prevRow = visibleData[_rowIndex - 1]
|
||||||
|
let nextRow = visibleData[_rowIndex + 1]
|
||||||
|
if (prevRow && prevRow[column.field] === cellValue) {
|
||||||
|
return { rowspan: 0, colspan: 0 }
|
||||||
|
} else {
|
||||||
|
let countRowspan = 1
|
||||||
|
while (nextRow && nextRow[column.field] === cellValue) {
|
||||||
|
nextRow = visibleData[++countRowspan + _rowIndex]
|
||||||
|
}
|
||||||
|
if (countRowspan > 1) {
|
||||||
|
return { rowspan: countRowspan, colspan: 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
tableStore.table.params.scale = []
|
|
||||||
tableStore.table.params.manufacturer = []
|
|
||||||
tableStore.table.params.loadType = []
|
|
||||||
const wp = ref({})
|
|
||||||
|
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<TableHeader area>
|
<TableHeader area showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<!-- <el-form-item label="统计类型:">
|
<!-- <el-form-item label="统计类型:">
|
||||||
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
<el-select v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" value-key="id">
|
||||||
@@ -100,8 +100,8 @@ const tableStore = new TableStore({
|
|||||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'areaName', title: '区域' },
|
{ field: 'areaName', title: '区域', minWidth: 100},
|
||||||
{ field: 'gdName', title: '地级区' },
|
{ field: 'gdName', title: '地级区' ,minWidth: 100},
|
||||||
{
|
{
|
||||||
field: 'bdName',
|
field: 'bdName',
|
||||||
title: '供电公司',
|
title: '供电公司',
|
||||||
|
|||||||
@@ -66,11 +66,11 @@
|
|||||||
detailData.userType == '5'
|
detailData.userType == '5'
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ proviteData.nonlinearLoadType }}
|
{{ proviteData?.nonlinearLoadType ||''}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="是否需要治理">
|
<el-descriptions-item label="是否需要治理">
|
||||||
<span v-if="detailData.userType == 0 || detailData.userType == 1">
|
<span v-if="detailData.userType == 0 || detailData.userType == 1">
|
||||||
{{ proviteData.needGovernance == 0 ? '否' : '是' }}
|
{{ proviteData?.needGovernance == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="
|
v-if="
|
||||||
@@ -80,13 +80,13 @@
|
|||||||
detailData.userType == 5
|
detailData.userType == 5
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ proviteData.needGovernance == 0 ? '否' : '是' }}
|
{{ proviteData?.needGovernance == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
<span v-if="detailData.userType == 6">{{ proviteData.needGovernance == 0 ? '否' : '是' }}</span>
|
<span v-if="detailData.userType == 6">{{ proviteData?.needGovernance == 1 ? '是' : '否' }}</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="是否开展背景测试">
|
<el-descriptions-item label="是否开展背景测试">
|
||||||
<span v-if="detailData.userType == 0 || detailData.userType == 1">
|
<span v-if="detailData.userType == 0 || detailData.userType == 1">
|
||||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="
|
v-if="
|
||||||
@@ -96,10 +96,10 @@
|
|||||||
detailData.userType == 5
|
detailData.userType == 5
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
<span v-if="detailData.userType == 6">
|
<span v-if="detailData.userType == 6">
|
||||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
@@ -117,14 +117,14 @@
|
|||||||
|
|
||||||
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData.userType == 6">
|
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData.userType == 6">
|
||||||
<span>
|
<span>
|
||||||
{{ proviteData.antiInterferenceTest == 0 ? '否' : '是' }}
|
{{ proviteData.antiInterferenceTest == 1 ? '是' : '否' }}
|
||||||
</span>
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
label="用户协议容量(MVA)"
|
label="用户协议容量(MVA)"
|
||||||
v-if="detailData.userType == 0 || detailData.userType == 1"
|
v-if="detailData.userType == 0 || detailData.userType == 1"
|
||||||
>
|
>
|
||||||
{{ proviteData.agreementCapacity }}
|
{{ proviteData?.agreementCapacity }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
label="PCC供电终端容量(MVA)"
|
label="PCC供电终端容量(MVA)"
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
detailData.userType == '5'
|
detailData.userType == '5'
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ proviteData.pccEquipmentCapacity }}
|
{{ proviteData?.pccEquipmentCapacity }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
label="基准短路容量(MVA)"
|
label="基准短路容量(MVA)"
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
detailData.userType == '5'
|
detailData.userType == '5'
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ proviteData.baseShortCircuitCapacity }}
|
{{ proviteData?.baseShortCircuitCapacity }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
label="系统最小短路容量(MVA)"
|
label="系统最小短路容量(MVA)"
|
||||||
@@ -225,8 +225,8 @@
|
|||||||
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
||||||
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<a target="_blank" :href="proviteData.feasibilityReport?.url" rel="nofollow">
|
<a target="_blank" :href="proviteData?.feasibilityReport?.url" rel="nofollow">
|
||||||
{{ proviteData.feasibilityReport?.name }}
|
{{ proviteData?.feasibilityReport?.name }}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
@@ -240,16 +240,16 @@
|
|||||||
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
||||||
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<a target="_blank" :href="proviteData.feasibilityReport?.url">
|
<a target="_blank" :href="proviteData?.feasibilityReport?.url">
|
||||||
{{ proviteData.feasibilityReport?.name }}
|
{{ proviteData?.feasibilityReport?.name }}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
<span v-if="detailData.userType == 6">
|
<span v-if="detailData.userType == 6">
|
||||||
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
|
||||||
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<a target="_blank" :href="proviteData.feasibilityReport?.url">
|
<a target="_blank" :href="proviteData?.feasibilityReport?.url">
|
||||||
{{ proviteData.feasibilityReport?.name }}
|
{{ proviteData?.feasibilityReport?.name }}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -656,54 +656,59 @@ const getProviteData = async () => {
|
|||||||
) {
|
) {
|
||||||
proviteData.value = detailData.value.userReportSubstationPO
|
proviteData.value = detailData.value.userReportSubstationPO
|
||||||
//查询非线性负荷类型
|
//查询非线性负荷类型
|
||||||
|
|
||||||
|
|
||||||
|
if(proviteData.value?.nonlinearLoadType !=undefined){
|
||||||
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
|
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
|
||||||
proviteData.value.nonlinearLoadType = res.data?.name
|
proviteData.value.nonlinearLoadType = res.data?.name
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
proviteData.value = detailData.value.userReportSensitivePO
|
proviteData.value = detailData.value.userReportSensitivePO
|
||||||
}
|
}
|
||||||
//可研报告
|
//可研报告
|
||||||
if (proviteData.value.feasibilityReport) {
|
if (proviteData.value?.feasibilityReport !=undefined) {
|
||||||
await getFileNamePath(proviteData.value.feasibilityReport, 'feasibilityReport')
|
await getFileNamePath(proviteData.value.feasibilityReport, 'feasibilityReport')
|
||||||
}
|
}
|
||||||
//项目初步设计说明书
|
//项目初步设计说明书
|
||||||
if (proviteData.value.preliminaryDesignDescription) {
|
if (proviteData.value?.preliminaryDesignDescription !=undefined) {
|
||||||
await getFileNamePath(proviteData.value.preliminaryDesignDescription, 'preliminaryDesignDescription')
|
await getFileNamePath(proviteData.value.preliminaryDesignDescription, 'preliminaryDesignDescription')
|
||||||
}
|
}
|
||||||
//预测评估报告
|
//预测评估报告
|
||||||
if (proviteData.value.predictionEvaluationReport) {
|
if (proviteData.value?.predictionEvaluationReport !=undefined) {
|
||||||
await getFileNamePath(proviteData.value.predictionEvaluationReport, 'predictionEvaluationReport')
|
await getFileNamePath(proviteData.value.predictionEvaluationReport, 'predictionEvaluationReport')
|
||||||
}
|
}
|
||||||
|
|
||||||
//预测评估评审意见报告
|
//预测评估评审意见报告
|
||||||
if (proviteData.value.predictionEvaluationReviewOpinions) {
|
if (proviteData.value?.predictionEvaluationReviewOpinions !=undefined) {
|
||||||
await getFileNamePath(
|
await getFileNamePath(
|
||||||
proviteData.value.predictionEvaluationReviewOpinions,
|
proviteData.value.predictionEvaluationReviewOpinions,
|
||||||
'predictionEvaluationReviewOpinions'
|
'predictionEvaluationReviewOpinions'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
//用户接入变电站主接线示意图
|
//用户接入变电站主接线示意图
|
||||||
if (proviteData.value.substationMainWiringDiagram) {
|
if (proviteData.value?.substationMainWiringDiagram !=undefined) {
|
||||||
await getFileNamePath(proviteData.value.substationMainWiringDiagram, 'substationMainWiringDiagram')
|
await getFileNamePath(proviteData.value.substationMainWiringDiagram, 'substationMainWiringDiagram')
|
||||||
}
|
}
|
||||||
|
|
||||||
//主要敏感终端清单
|
//主要敏感终端清单
|
||||||
if (proviteData.value.sensitiveDevices) {
|
if (proviteData.value?.sensitiveDevices !=undefined) {
|
||||||
await getFileNamePath(proviteData.value.sensitiveDevices, 'sensitiveDevices')
|
await getFileNamePath(proviteData.value.sensitiveDevices, 'sensitiveDevices')
|
||||||
}
|
}
|
||||||
|
|
||||||
//抗扰度测试报告
|
//抗扰度测试报告
|
||||||
if (proviteData.value.antiInterferenceReport) {
|
if (proviteData.value?.antiInterferenceReport!=undefined) {
|
||||||
await getFileNamePath(proviteData.value.antiInterferenceReport, 'antiInterferenceReport')
|
await getFileNamePath(proviteData.value.antiInterferenceReport, 'antiInterferenceReport')
|
||||||
}
|
}
|
||||||
|
|
||||||
//背景电能质量测试报告
|
//背景电能质量测试报告
|
||||||
if (proviteData.value.powerQualityReport) {
|
if (proviteData.value?.powerQualityReport!=undefined) {
|
||||||
await getFileNamePath(proviteData.value.powerQualityReport, 'powerQualityReport')
|
await getFileNamePath(proviteData.value.powerQualityReport, 'powerQualityReport')
|
||||||
}
|
}
|
||||||
|
|
||||||
//其他附件
|
//其他附件
|
||||||
if (proviteData.value.additionalAttachments) {
|
if (proviteData.value?.additionalAttachments!=undefined) {
|
||||||
getFileNamePath(proviteData.value.additionalAttachments, 'additionalAttachments')
|
getFileNamePath(proviteData.value.additionalAttachments, 'additionalAttachments')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<div v-show="view">
|
<div v-show="view">
|
||||||
<TableHeader datePicker>
|
<TableHeader datePicker showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="统计类型:">
|
<el-form-item label="统计类型:">
|
||||||
<el-radio-group v-model="tableStore.table.params.isType">
|
<el-radio-group v-model="tableStore.table.params.isType">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<div v-show="view">
|
<div v-show="view">
|
||||||
<TableHeader datePicker ref="TableHeaderRef">
|
<TableHeader datePicker :showReset="false" showExport ref="TableHeaderRef">
|
||||||
<template #select>
|
<template #select>
|
||||||
<!-- <el-form-item label="筛选">-->
|
<!-- <el-form-item label="筛选">-->
|
||||||
<!-- <el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入关键字筛选" />-->
|
<!-- <el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入关键字筛选" />-->
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<div v-show="view">
|
<div v-show="view">
|
||||||
<TableHeader datePicker ref="TableHeaderRef">
|
<TableHeader datePicker ref="TableHeaderRef" showExport>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="关键字">
|
<el-form-item label="关键字">
|
||||||
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入事件关联分析描述"
|
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入事件关联分析描述"
|
||||||
@@ -174,7 +174,7 @@ onMounted(() => {
|
|||||||
])
|
])
|
||||||
})
|
})
|
||||||
const cellClassName = ({ row, rowIndex }) => {
|
const cellClassName = ({ row, rowIndex }) => {
|
||||||
console.log("🚀 ~ cellClassName ~ rowIndex:", rowIndex)
|
|
||||||
if (rowIndex === 0) {
|
if (rowIndex === 0) {
|
||||||
return 'highlight-first-row';
|
return 'highlight-first-row';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div v-show="view">
|
<div v-show="view">
|
||||||
<!-- 表头 -->
|
<!-- 表头 -->
|
||||||
<TableHeader date-picker>
|
<TableHeader date-picker showExport>
|
||||||
<template v-slot:operation>
|
<template v-slot:operation>
|
||||||
<el-button :icon='Download' type='primary' @click='download'>波形下载</el-button>
|
<el-button :icon='Download' type='primary' @click='download'>波形下载</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -43,9 +43,11 @@ const tableStore = new TableStore({
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
{ width: '60', type: 'checkbox' },
|
{ width: '60', type: 'checkbox' },
|
||||||
{ title: '序号', width: 80,formatter: (row: any) => {
|
{
|
||||||
|
title: '序号', width: 80, formatter: (row: any) => {
|
||||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
} },
|
}
|
||||||
|
},
|
||||||
{ title: '变电站名称', field: 'subName', minWidth: '130' },
|
{ title: '变电站名称', field: 'subName', minWidth: '130' },
|
||||||
{ title: '监测点名称', field: 'lineName', minWidth: '130' },
|
{ title: '监测点名称', field: 'lineName', minWidth: '130' },
|
||||||
{ title: '网络参数', field: 'ip', minWidth: '130' },
|
{ title: '网络参数', field: 'ip', minWidth: '130' },
|
||||||
@@ -53,8 +55,16 @@ const tableStore = new TableStore({
|
|||||||
{ title: '暂降发生时刻', field: 'startTime', width: '200' },
|
{ title: '暂降发生时刻', field: 'startTime', width: '200' },
|
||||||
{ title: '暂降类型', field: 'advanceType', minWidth: '130' },
|
{ title: '暂降类型', field: 'advanceType', minWidth: '130' },
|
||||||
{ title: '暂降原因', field: 'advanceReason', minWidth: '130' },
|
{ title: '暂降原因', field: 'advanceReason', minWidth: '130' },
|
||||||
{ title: '触发类型', field: 'eventTypeName', minWidth: '80' },
|
{
|
||||||
{ title: '暂降(骤升)幅值(%)', field: 'featureAmplitude', minWidth: '80' },
|
title: '触发类型', field: 'eventType', minWidth: '80', formatter: (row: any) => {
|
||||||
|
return eventTypeOptions.find(item => item.id === row.cellValue)?.name || '/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '暂降(骤升)幅值(%)', field: 'featureAmplitude', minWidth: '80', formatter: (row: any) => {
|
||||||
|
return (row.cellValue * 100).toFixed(0)
|
||||||
|
}
|
||||||
|
},
|
||||||
{ title: '持续时间(s)', field: 'duration', minWidth: '80' },
|
{ title: '持续时间(s)', field: 'duration', minWidth: '80' },
|
||||||
{ title: '严重度', field: 'severity', minWidth: '80' },
|
{ title: '严重度', field: 'severity', minWidth: '80' },
|
||||||
{
|
{
|
||||||
@@ -105,10 +115,7 @@ const tableStore = new TableStore({
|
|||||||
console.log('beforeSearchFun')
|
console.log('beforeSearchFun')
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.data.forEach((item: any) => {
|
|
||||||
item.eventTypeName = eventTypeOptions.find(item2 => item2.id === item.eventType)?.name
|
|
||||||
item.featureAmplitude = (item.featureAmplitude * 100).toFixed(0)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<TableHeader date-picker area>
|
<TableHeader date-picker area showExport>
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item label="终端状态">
|
<el-form-item label="终端状态">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -99,6 +99,10 @@ const tableStore = new TableStore({
|
|||||||
customRender: props => {
|
customRender: props => {
|
||||||
if (props.renderValue == null) {
|
if (props.renderValue == null) {
|
||||||
return <span></span>
|
return <span></span>
|
||||||
|
}else if (props.renderValue == 3.14159) {
|
||||||
|
return <el-tag effect="dark" type="info">
|
||||||
|
/
|
||||||
|
</el-tag>
|
||||||
} else if (props.renderValue * 100 > 90) {
|
} else if (props.renderValue * 100 > 90) {
|
||||||
return (
|
return (
|
||||||
<el-tag effect="dark" type="success">
|
<el-tag effect="dark" type="success">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<TableHeader date-picker area>
|
<TableHeader date-picker area showExport>
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item label="统计类型">
|
<el-form-item label="统计类型">
|
||||||
<el-radio-group v-model="tableStore.table.params.comFlag">
|
<el-radio-group v-model="tableStore.table.params.comFlag">
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出</el-button>
|
<!-- <el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出</el-button> -->
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<Table ref="tableRef" />
|
<Table ref="tableRef" />
|
||||||
@@ -94,7 +94,9 @@ const tableStore = new TableStore({
|
|||||||
{
|
{
|
||||||
field: 'featureAmplitude',
|
field: 'featureAmplitude',
|
||||||
title: '暂降(骤升)幅值(%)',
|
title: '暂降(骤升)幅值(%)',
|
||||||
width: '140'
|
width: '140',formatter: (row: any) => {
|
||||||
|
return (row.cellValue * 100).toFixed(0)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'duration',
|
field: 'duration',
|
||||||
|
|||||||
2
types/table.d.ts
vendored
2
types/table.d.ts
vendored
@@ -8,6 +8,8 @@ declare global {
|
|||||||
interface CnTable {
|
interface CnTable {
|
||||||
ref: VxeTableInstance | null
|
ref: VxeTableInstance | null
|
||||||
data: TableRow[] | any
|
data: TableRow[] | any
|
||||||
|
allData: TableRow[] | any
|
||||||
|
allFlag: Boolean
|
||||||
// 前端分页数据
|
// 前端分页数据
|
||||||
webPagingData: TableRow[][]
|
webPagingData: TableRow[][]
|
||||||
// 表格加载状态
|
// 表格加载状态
|
||||||
|
|||||||
Reference in New Issue
Block a user