绘制技术监督页面 联调承载能力评估
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
import createAxios from '@/utils/request'
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
//承载能力评估用户查询
|
||||||
|
export function queyDetailUser(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacityuser/queyDetailUser',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
//承载能力评估用户新增
|
//承载能力评估用户新增
|
||||||
export function addUse(data) {
|
export function addUse(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
@@ -28,31 +36,81 @@ export function removeUse(data) {
|
|||||||
export function carryCapacityTree() {
|
export function carryCapacityTree() {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/carrycapacity/carryCapacityTree',
|
url: '/advance-boot/carrycapacity/carryCapacityTree',
|
||||||
method: 'get',
|
method: 'GET'
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//承载能力评估策略初始化查询
|
//承载能力评估策略初始化查询
|
||||||
export function queyDetail() {
|
export function queyDetail() {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/carrycapacity/queyDetail',
|
url: '/advance-boot/carrycapacity/queyDetail',
|
||||||
method: 'post',
|
method: 'post'
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//承载能力评估策略初始化查询
|
//用户新增承载能力评估策略
|
||||||
export function addCarryc() {
|
export function addCarryc(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/carrycapacity/add',
|
url: '/advance-boot/carrycapacity/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//承载能力评估策略一键还原
|
//承载能力评估策略一键还原
|
||||||
export function restore() {
|
export function restore() {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/carrycapacity/restore',
|
url: '/advance-boot/carrycapacity/restore',
|
||||||
method: 'post',
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//承载能力评估数据查询-主页面
|
||||||
|
export function queryCarryCapacityData(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/queryCarryCapacityData',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//承载能力评估数据查询-无功功率
|
||||||
|
export function queryCarryCapacityQData(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/queryCarryCapacityQData',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//承载能力评估数据查询-谐波电流幅值
|
||||||
|
export function queryCarryCapacityIData(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/queryCarryCapacityIData',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//承载能力评估
|
||||||
|
export function carryCapacityCal(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/carryCapacityCal',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//导出数据集模板
|
||||||
|
export function getExcelTemplate() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/getExcelTemplate',
|
||||||
|
method: 'get',
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//上传数据集
|
||||||
|
export function uploadExcel(file: any, data: any) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('file', file)
|
||||||
|
form.append('lineId', data.lineId)
|
||||||
|
form.append('startTime', data.startTime)
|
||||||
|
form.append('endTime', data.endTime)
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/carrycapacity/uploadExcel',
|
||||||
|
method: 'post',
|
||||||
|
data: form
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,3 +140,9 @@ export function checkUser(data: any) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function existMonitorDeptTree() {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/dept/existMonitorDeptTree',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
<!-- switch -->
|
<!-- switch -->
|
||||||
<el-switch
|
<el-switch
|
||||||
v-if="field.render == 'switch'"
|
v-if="field.render == 'switch'"
|
||||||
@change="onChangeField"
|
@change="onChangeField(field, $event)"
|
||||||
:model-value="fieldValue.toString()"
|
:model-value="fieldValue.toString()"
|
||||||
:loading="row.loading"
|
:loading="row.loading"
|
||||||
active-value="1"
|
:active-value="field.activeValue"
|
||||||
inactive-value="0"
|
:inactive-value="field.inactiveValue"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- image -->
|
<!-- image -->
|
||||||
@@ -172,8 +172,10 @@ if (props.field.renderFormatter && typeof props.field.renderFormatter == 'functi
|
|||||||
fieldValue.value = props.field.renderFormatter(props.row, props.field, fieldValue.value, props.column, props.index)
|
fieldValue.value = props.field.renderFormatter(props.row, props.field, fieldValue.value, props.column, props.index)
|
||||||
}
|
}
|
||||||
|
|
||||||
const onChangeField = (value: any) => {
|
const onChangeField = (row: any, value: any) => {
|
||||||
TableStore.onTableAction('field-change', { value: value, ...props })
|
row.onChangeField && row.onChangeField(props.row, value)
|
||||||
|
|
||||||
|
// TableStore.onTableAction('field-change', { value: value, ...props })
|
||||||
}
|
}
|
||||||
|
|
||||||
const onButtonClick = (btn: OptButton) => {
|
const onButtonClick = (btn: OptButton) => {
|
||||||
|
|||||||
322
src/components/tree/pqs/policyTree.vue
Normal file
322
src/components/tree/pqs/policyTree.vue
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
<template>
|
||||||
|
<div class="point-tree">
|
||||||
|
<div style="flex: 1; overflow: hidden">
|
||||||
|
<vxe-table
|
||||||
|
ref="tableRef"
|
||||||
|
:data="tree"
|
||||||
|
height="auto"
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
:tree-config="{ children: 'children', expandAll: true }"
|
||||||
|
>
|
||||||
|
<vxe-column field="name" align="left" title="部门" tree-node></vxe-column>
|
||||||
|
<vxe-column width="200" title="操作">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button type="primary" size="small" link @click="tactics(row.id, 0)">自动</el-button>
|
||||||
|
<el-button type="primary" size="small" link @click="tactics(row.id, 1)">手动</el-button>
|
||||||
|
<el-button type="primary" size="small" link @click="tactics(row.id, 2)">排除</el-button>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
</vxe-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { nextTick, onMounted, ref, useAttrs } from 'vue'
|
||||||
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
import { ElTree } from 'element-plus'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { existMonitorDeptTree } from '@/api/user-boot/user.ts'
|
||||||
|
|
||||||
|
import { useConfig } from '@/stores/config'
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'pms/pointTree'
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['tactics'])
|
||||||
|
const attrs = useAttrs()
|
||||||
|
const defaultProps = {
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
}
|
||||||
|
const dictData = useDictData()
|
||||||
|
const config = useConfig()
|
||||||
|
const tree = ref()
|
||||||
|
const treeRef = ref()
|
||||||
|
|
||||||
|
const loadData = () => {
|
||||||
|
let nodeKey = ''
|
||||||
|
tree.value = [
|
||||||
|
{
|
||||||
|
id: '5699e5916a18a6381e1ac92da5bd2628',
|
||||||
|
name: '国家电网公司',
|
||||||
|
pid: '0',
|
||||||
|
sort: 201,
|
||||||
|
code: '123456789',
|
||||||
|
specialType: null,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 0,
|
||||||
|
remark: '国家电网公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
name: '国网河北电力有限公司',
|
||||||
|
pid: '5699e5916a18a6381e1ac92da5bd2628',
|
||||||
|
sort: 200,
|
||||||
|
code: '13B9B47F1E483324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130000000000',
|
||||||
|
areaName: '河北',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网河北省电力公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '3c9e6eea884a3ab5c891122f13715e4b',
|
||||||
|
name: '国网石家庄供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 0,
|
||||||
|
code: '13B9B47F1F223324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130100000000',
|
||||||
|
areaName: '石家庄',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网石家庄供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '8590eba00eb6ab38ef2d06805602e0ce',
|
||||||
|
name: '国网石家庄供电公司本部',
|
||||||
|
pid: '3c9e6eea884a3ab5c891122f13715e4b',
|
||||||
|
sort: 80,
|
||||||
|
code: '13B9B47F1F773324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '17439407bfee299b7e38f2e54a8f6d28',
|
||||||
|
name: '国网沧州供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 1,
|
||||||
|
code: '13B9B47F2C183324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130900000000',
|
||||||
|
areaName: '沧州',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网沧州供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: 'c8efb47ecb20fbf342eba4665f45f2f6',
|
||||||
|
name: '国网沧州供电公司本部',
|
||||||
|
pid: '17439407bfee299b7e38f2e54a8f6d28',
|
||||||
|
sort: 34,
|
||||||
|
code: '13B9B47F2C803324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '15737b8ed8cb70602163c41918bde12d',
|
||||||
|
name: '国网邢台供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 2,
|
||||||
|
code: '13B9B47F25A73324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130500000000',
|
||||||
|
areaName: '邢台',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网邢台供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '694288d464a23da82e42727f3d8fd432',
|
||||||
|
name: '国网邢台供电公司本部',
|
||||||
|
pid: '15737b8ed8cb70602163c41918bde12d',
|
||||||
|
sort: 7,
|
||||||
|
code: '13B9B47F27F63324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '193980db73494188de052479c4e37d46',
|
||||||
|
name: '国网保定供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 3,
|
||||||
|
code: '13B9B47F2EEB3324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130600000000',
|
||||||
|
areaName: '保定',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网保定供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '2d1904c1187f751e4387e3351839dc6d',
|
||||||
|
name: '国网保定供电公司本部',
|
||||||
|
pid: '193980db73494188de052479c4e37d46',
|
||||||
|
sort: 42,
|
||||||
|
code: '13B9B47F2F173324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2adc64baf2308725c4e91105b3186b21',
|
||||||
|
name: '国网衡水供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 4,
|
||||||
|
code: '13B9B47F23B83324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '131100000000',
|
||||||
|
areaName: '衡水',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网衡水供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: 'd3d4b1c41c6115ec9aff0362f5c41930',
|
||||||
|
name: '国网衡水供电公司本部',
|
||||||
|
pid: '2adc64baf2308725c4e91105b3186b21',
|
||||||
|
sort: 65,
|
||||||
|
code: '13B9B47F251C3324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'dda5d903c9ad44979d3d50e9c83cf564',
|
||||||
|
name: '国网邯郸供电公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 5,
|
||||||
|
code: '13B9B47F28CA3324E05338297A0A0595',
|
||||||
|
specialType: null,
|
||||||
|
area: '130400000000',
|
||||||
|
areaName: '邯郸',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '国网邯郸供电公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '33e1b89c5963a73f355713f85ad3b3c4',
|
||||||
|
name: '国网邯郸供电公司本部',
|
||||||
|
pid: 'dda5d903c9ad44979d3d50e9c83cf564',
|
||||||
|
sort: 97,
|
||||||
|
code: '13B9B47F2BAE3324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '0',
|
||||||
|
areaName: '中国',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'a3069759b0b6072c99cf9a7af6c162e9',
|
||||||
|
name: '国网河北超高压公司',
|
||||||
|
pid: '0d52f9f6e43ec0ee83013cd32da93f66',
|
||||||
|
sort: 9,
|
||||||
|
code: '13B9B47F1E4F3324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '130000000000',
|
||||||
|
areaName: '河北',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '河北超高压公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: 'd3de780cba5813b0c089a6fe1ecdae25',
|
||||||
|
name: '国网河北超高压公司本部',
|
||||||
|
pid: 'a3069759b0b6072c99cf9a7af6c162e9',
|
||||||
|
sort: 0,
|
||||||
|
code: '13B9B47F1E813324E05338297A0A0595',
|
||||||
|
specialType: 1,
|
||||||
|
area: '130000000000',
|
||||||
|
areaName: '河北',
|
||||||
|
state: 1,
|
||||||
|
type: 1,
|
||||||
|
remark: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// existMonitorDeptTree().then(res => {
|
||||||
|
// console.log(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
|
||||||
|
|
||||||
|
// if (nodeKey) {
|
||||||
|
// nextTick(() => {
|
||||||
|
// treeRef.value.treeRef.setCurrentKey(nodeKey)
|
||||||
|
// // treeRef.value.treeRef.setExpandedKeys(nodeKey)
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
const tactics = (deptId, grade) => {
|
||||||
|
emit('tactics', deptId, grade)
|
||||||
|
}
|
||||||
|
loadData()
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.point-tree {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--el-border-color);
|
||||||
|
}
|
||||||
|
.custom {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
padding-right: 20px;
|
||||||
|
// font-size: 14px;
|
||||||
|
// padding-right: 8px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -55,6 +55,10 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
|||||||
// 请求拦截
|
// 请求拦截
|
||||||
Axios.interceptors.request.use(
|
Axios.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
|
if(config.url?.substring(0, 13)=='/advance-boot'){
|
||||||
|
config.url=config.url?.slice(13)
|
||||||
|
config.baseURL='/hzj'
|
||||||
|
}
|
||||||
// 取消重复请求
|
// 取消重复请求
|
||||||
removePending(config)
|
removePending(config)
|
||||||
options.CancelDuplicateRequest && addPending(config)
|
options.CancelDuplicateRequest && addPending(config)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-row :gutter="30" class="mb20">
|
<el-row :gutter="30" class="mb20">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-card >
|
<el-card>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>公共连接点参数</span>
|
<span>公共连接点参数</span>
|
||||||
@@ -14,7 +14,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电压等级">
|
<el-form-item label="电压等级">
|
||||||
<el-select v-model="form.level" clearable collapse-tags placeholder="请选择电压等级">
|
<el-select v-model="form.level" clearable collapse-tags placeholder="请选择电压等级">
|
||||||
<el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option
|
||||||
|
v-for="item in levelList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="供电设备容量(MVA)">
|
<el-form-item label="供电设备容量(MVA)">
|
||||||
@@ -56,11 +61,13 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="16" :style="`height: calc(${height} / 2 - 100px)`">
|
<el-col :span="16" :style="`height: calc(${height} / 2 - 100px)`">
|
||||||
<vxe-table style="flex: 1.5" v-bind="defaultAttribute" height="auto" ref="xTable" :data="tableData">
|
<vxe-table style="flex: 1.5" v-bind="defaultAttribute" height="auto" ref="xTable" :data="tableData">
|
||||||
<vxe-column field="name" title="等级"></vxe-column>
|
<vxe-column field="name" title="谐波次数" width="180"></vxe-column>
|
||||||
<vxe-column field="role" title="安全"></vxe-column>
|
<vxe-column
|
||||||
<vxe-column field="num6" title="III级预警"></vxe-column>
|
v-for="item in column"
|
||||||
<vxe-column field="date12" title="II级预警"></vxe-column>
|
:field="item.field"
|
||||||
<vxe-column field="date13" title="I级预警"></vxe-column>
|
:title="item.title"
|
||||||
|
:width="item.width"
|
||||||
|
></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :style="`height: calc(${height} / 2 - 100px)`">
|
<el-col :span="8" :style="`height: calc(${height} / 2 - 100px)`">
|
||||||
@@ -81,36 +88,147 @@ const height = mainHeight(80).height
|
|||||||
const levelList = dictData.getBasicData('Dev_Voltage_Stand')
|
const levelList = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
const tableData = ref([
|
const tableData = ref([
|
||||||
{
|
{
|
||||||
id: 10001,
|
name: '谐波电流幅值(A)',
|
||||||
name: '配变首端电压',
|
|
||||||
role: '/',
|
role: '/',
|
||||||
num6: '/',
|
num6: '/',
|
||||||
date12: '/',
|
date12: '/',
|
||||||
date13: '/'
|
date13: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10002,
|
name: '国标限值(A)',
|
||||||
name: '配变功率因素',
|
|
||||||
role: '/',
|
role: '/',
|
||||||
num6: '/',
|
num6: '/',
|
||||||
date12: '/',
|
date12: '/',
|
||||||
date13: '/'
|
date13: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10003,
|
name: '是否允许值',
|
||||||
name: '等效负载率最小值',
|
|
||||||
role: '/',
|
role: '/',
|
||||||
date12: '/',
|
date12: '/',
|
||||||
num6: '/',
|
num6: '/',
|
||||||
date13: '/'
|
date13: '/'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
const column = ref([
|
||||||
|
{
|
||||||
|
title: '2次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10004,
|
title: '3次',
|
||||||
name: '各次谐波电流幅值',
|
field: 'role',
|
||||||
role: '/',
|
width: '80px'
|
||||||
date12: '/',
|
},
|
||||||
num6: '/',
|
{
|
||||||
date13: '/'
|
title: '4次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '5次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '6次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '7次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '8次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '9次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '10次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '11次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '12次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '13次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '14次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '15次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '16次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '17次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '18次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '19次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '20次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '21次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '22次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '23次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '24次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '25次',
|
||||||
|
field: 'role',
|
||||||
|
width: '80px'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const form: any = ref({})
|
const form: any = ref({})
|
||||||
|
|||||||
@@ -17,13 +17,21 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-Search" @click="onSubmit">查询</el-button>
|
<el-button type="primary" icon="el-icon-Search" @click="onSubmit">查询</el-button>
|
||||||
<el-button type="primary" icon="el-icon-DocumentAdd">离线导入</el-button>
|
<el-button type="primary" icon="el-icon-Download" @click="exportTemplate">导出模板</el-button>
|
||||||
|
<el-upload action="" :show-file-list="false" :auto-upload="false" :on-change="choose">
|
||||||
|
<el-button type="primary" class="ml10" icon="el-icon-Upload">离线导入</el-button>
|
||||||
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
<div v-loading="loading">
|
||||||
<el-descriptions class="mb10" title="基础数据" :column="2" size="" border>
|
<el-descriptions class="mb10" title="基础数据" :column="2" size="" border>
|
||||||
<el-descriptions-item label="电压等级" label-align="center" width="25%">12</el-descriptions-item>
|
<el-descriptions-item label="电压等级" label-align="center" width="25%">
|
||||||
<el-descriptions-item label="额定容量" label-align="center" width="25%">12</el-descriptions-item>
|
12
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="额定容量" label-align="center" width="25%">
|
||||||
|
12
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="待评估用户" label-align="center" width="25%">
|
<el-descriptions-item label="待评估用户" label-align="center" width="25%">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="user"
|
v-model="user"
|
||||||
@@ -32,30 +40,48 @@
|
|||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
|
value-key="id"
|
||||||
|
@change="userChange"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in userList"
|
v-for="item in userList"
|
||||||
:key="item.value"
|
:key="item.userId"
|
||||||
:label="item.label"
|
:label="item.userName"
|
||||||
:value="item.value"
|
:value="item"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="拟接入光伏容量" label-align="center" width="25%">
|
<el-descriptions-item label="拟接入光伏容量(MVA)" label-align="center" width="25%">
|
||||||
12
|
{{ userData?.protocolCapacity }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<el-tabs v-model="activeName" class="mb10" :style="`height: calc(${tabsHeight} / 2)`">
|
<el-tabs v-model="activeName" class="mb10" :style="`height: calc(${tabsHeight} / 2 + 100px)`">
|
||||||
<el-tab-pane label="有功功率" name="1" class="mt10">
|
<el-tab-pane label="有功功率" name="1" class="mt10">
|
||||||
<MyEChart :options="options" />
|
<MyEChart v-if="activeName == '1'" :options="options1" />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="无功功率" name="2">
|
||||||
|
<MyEChart v-if="activeName == '2'" :options="options2" />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="谐波电流幅值" name="3">
|
||||||
|
<MyEChart v-if="activeName == '3'" :options="options3" />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="首端电压模型参数" name="4">
|
||||||
|
<vxe-table
|
||||||
|
v-if="activeName == '4'"
|
||||||
|
height="auto"
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
:data="voltageList"
|
||||||
|
>
|
||||||
|
<vxe-column field="name" title="项别模型参数"></vxe-column>
|
||||||
|
<vxe-column field="c" title="C"></vxe-column>
|
||||||
|
<vxe-column field="a" title="a"></vxe-column>
|
||||||
|
<vxe-column field="b" title="b"></vxe-column>
|
||||||
|
</vxe-table>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="无功功率" name="2"></el-tab-pane>
|
|
||||||
<el-tab-pane label="谐波电流幅值" name="3"></el-tab-pane>
|
|
||||||
<el-tab-pane label="首端电压模型参数" name="4"></el-tab-pane>
|
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<div class="bottomBox">
|
<div class="bottomBox">
|
||||||
<el-row v-if="showAssess">
|
<el-row v-if="showAssess">
|
||||||
<el-col :span="16" :style="`height: calc(${tabsHeight} / 2)`">
|
<el-col :span="16" :style="`height: calc(${tabsHeight} / 2 - 105px)`">
|
||||||
<vxe-table
|
<vxe-table
|
||||||
style="flex: 1.5"
|
style="flex: 1.5"
|
||||||
v-bind="defaultAttribute"
|
v-bind="defaultAttribute"
|
||||||
@@ -63,19 +89,44 @@
|
|||||||
ref="xTable"
|
ref="xTable"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
>
|
>
|
||||||
<vxe-column field="name" title="等级"></vxe-column>
|
<vxe-colgroup field="group0" title="等级" align="right">
|
||||||
<vxe-column field="role" title="安全"></vxe-column>
|
<vxe-column field="name" width="180" title="结果"></vxe-column>
|
||||||
<vxe-column field="num6" title="III级预警"></vxe-column>
|
</vxe-colgroup>
|
||||||
<vxe-column field="date12" title="II级预警"></vxe-column>
|
<vxe-column field="level1" title="安全">
|
||||||
<vxe-column field="date13" title="I级预警"></vxe-column>
|
<template #default="{ row }">
|
||||||
|
<Select v-if="row.level1 == 1" class="SelectIcon" />
|
||||||
|
<span v-else>{{ row.level1 }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="level2" title="III级预警">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<Select v-if="row.level2 == 1" class="SelectIcon" />
|
||||||
|
<span v-else>{{ row.level2 }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="level3" title="II级预警">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<Select v-if="row.level3 == 1" class="SelectIcon" />
|
||||||
|
<span v-else>{{ row.level3 }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="level4" title="I级预警">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<Select v-if="row.level4 == 1" class="SelectIcon" />
|
||||||
|
<span v-else>{{ row.level4 }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :style="`height: calc(${tabsHeight} / 2)`">
|
<el-col :span="8" :style="`height: calc(${tabsHeight} / 2 - 100px)`">
|
||||||
<MyEChart style="flex: 1" :options="pieCharts" />
|
<MyEChart style="flex: 1" :options="pieCharts" />
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-button type="primary" icon="el-icon-Document" @click="assess">承载能力评估</el-button>
|
<el-button type="primary" icon="el-icon-Document" @click="assess" v-show="!loading">
|
||||||
|
承载能力评估
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</pane>
|
</pane>
|
||||||
</splitpanes>
|
</splitpanes>
|
||||||
@@ -88,71 +139,74 @@ import { Splitpanes, Pane } from 'splitpanes'
|
|||||||
import PointTree from '@/components/tree/pqs/loadBearingTree.vue'
|
import PointTree from '@/components/tree/pqs/loadBearingTree.vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import { text } from '../text'
|
|
||||||
import MyEChart from '@/components/echarts/MyEchart.vue'
|
import MyEChart from '@/components/echarts/MyEchart.vue'
|
||||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
|
||||||
|
import { Select } from '@element-plus/icons-vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
|
import {
|
||||||
|
queryCarryCapacityData,
|
||||||
|
uploadExcel,
|
||||||
|
queyDetailUser,
|
||||||
|
queryCarryCapacityQData,
|
||||||
|
queryCarryCapacityIData,
|
||||||
|
carryCapacityCal,
|
||||||
|
getExcelTemplate
|
||||||
|
} from '@/api/advance-boot/bearingCapacity'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
const monitoringPoint = useMonitoringPoint()
|
const monitoringPoint = useMonitoringPoint()
|
||||||
|
|
||||||
const size = ref(0)
|
const size = ref(0)
|
||||||
|
const dictData = useDictData()
|
||||||
const datePickerRef = ref()
|
const datePickerRef = ref()
|
||||||
const height = mainHeight(80).height
|
const height = mainHeight(80).height
|
||||||
const tabsHeight = mainHeight(260).height
|
const tabsHeight = mainHeight(260).height
|
||||||
const tableData = ref([
|
const tableData = ref([
|
||||||
{
|
{
|
||||||
id: 10001,
|
|
||||||
name: '配变首端电压',
|
name: '配变首端电压',
|
||||||
role: '/',
|
level1: '/',
|
||||||
num6: '/',
|
level2: '/',
|
||||||
date12: '/',
|
level3: '/',
|
||||||
date13: '/'
|
level4: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10002,
|
|
||||||
name: '配变功率因素',
|
name: '配变功率因素',
|
||||||
role: '/',
|
level1: '/',
|
||||||
num6: '/',
|
level2: '/',
|
||||||
date12: '/',
|
level3: '/',
|
||||||
date13: '/'
|
level4: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10003,
|
|
||||||
name: '等效负载率最小值',
|
name: '等效负载率最小值',
|
||||||
role: '/',
|
level1: '/',
|
||||||
date12: '/',
|
level2: '/',
|
||||||
num6: '/',
|
level3: '/',
|
||||||
date13: '/'
|
level4: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10004,
|
|
||||||
name: '各次谐波电流幅值',
|
name: '各次谐波电流幅值',
|
||||||
role: '/',
|
level1: '/',
|
||||||
date12: '/',
|
level2: '/',
|
||||||
num6: '/',
|
level3: '/',
|
||||||
date13: '/'
|
level4: '/'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
const voltageList: any = ref([])
|
||||||
const showAssess = ref(false)
|
const showAssess = ref(false)
|
||||||
|
const loading = ref(false)
|
||||||
const user = ref('')
|
const user = ref('')
|
||||||
const userList = [
|
const userList: any = ref([])
|
||||||
{
|
const options1 = ref({})
|
||||||
value: 'Option1',
|
const options2 = ref({})
|
||||||
label: '光伏电站用户1'
|
const options3 = ref({})
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Option2',
|
|
||||||
label: '光伏电站用户2'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Option3',
|
|
||||||
label: '光伏电站用户3'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
const options = ref({})
|
|
||||||
const pieCharts = ref({})
|
const pieCharts = ref({})
|
||||||
const activeName = ref('1')
|
const activeName = ref('1')
|
||||||
|
const userData: any = ref({})
|
||||||
|
const stringMap: any = ref({})
|
||||||
|
const p_βminMap: any = ref({})
|
||||||
|
const i_βmax: any = ref({})
|
||||||
|
const q_βminMap: any = ref({})
|
||||||
const dotList: any = ref({
|
const dotList: any = ref({
|
||||||
name: monitoringPoint.state.lineName.split('>')[3],
|
name: monitoringPoint.state.lineName.split('>')[3],
|
||||||
id: monitoringPoint.state.lineId,
|
id: monitoringPoint.state.lineId,
|
||||||
@@ -165,13 +219,74 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
datePickerRef.value.setTimeOptions([{ label: '周', value: 4 }])
|
datePickerRef.value.setTimeOptions([{ label: '周', value: 4 }])
|
||||||
datePickerRef.value.setInterval(4)
|
datePickerRef.value.setInterval(4)
|
||||||
|
info()
|
||||||
})
|
})
|
||||||
|
const info = () => {
|
||||||
|
queyDetailUser({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
userType: dictData.getBasicData('CARRY_CAPCITY_USER_TYPE', [
|
||||||
|
'Electrified_Rail_Users',
|
||||||
|
'Charging_Station_Users',
|
||||||
|
'Electric_Heating_Load_Users'
|
||||||
|
])[0]?.id
|
||||||
|
}).then(res => {
|
||||||
|
userList.value = res.data.records
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
onSubmit()
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
|
||||||
// 查询
|
// 查询
|
||||||
const onSubmit = () => {
|
const onSubmit = async () => {
|
||||||
console.log(text.data.data)
|
if (dotList.value.level != 6) {
|
||||||
|
return ElMessage.error('请选择线路')
|
||||||
|
}
|
||||||
|
loading.value = true
|
||||||
|
let data: any = []
|
||||||
|
|
||||||
options.value = {
|
let form = {
|
||||||
|
// endTime: datePickerRef.value.timeValue[1],
|
||||||
|
// lineId: dotList.value.id,
|
||||||
|
// startTime: datePickerRef.value.timeValue[0],
|
||||||
|
lineId: '086c7774e30839d30fdfb0544bf776de',
|
||||||
|
startTime: '2024-02-05',
|
||||||
|
endTime: '2024-02-11',
|
||||||
|
userId: dictData.state.area[0].id
|
||||||
|
}
|
||||||
|
|
||||||
|
Promise.all([queryCarryCapacityData(form), queryCarryCapacityQData(form), queryCarryCapacityIData(form)]).then(
|
||||||
|
res => {
|
||||||
|
// 有功功率
|
||||||
|
voltageList.value = []
|
||||||
|
stringMap.value = res[0].data.stringMap
|
||||||
|
p_βminMap.value = res[0].data.p_βminMap
|
||||||
|
q_βminMap.value = res[1].data.q_βminMap
|
||||||
|
i_βmax.value = res[2].data.i_βmax
|
||||||
|
for (let k in res[0].data.stringMap) {
|
||||||
|
voltageList.value.push({
|
||||||
|
name: k,
|
||||||
|
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)
|
||||||
|
setEChart(2, res[1].data.data)
|
||||||
|
setEChart(3, res[2].data.data)
|
||||||
|
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// 用户变化
|
||||||
|
const userChange = e => {
|
||||||
|
userData.value = e
|
||||||
|
}
|
||||||
|
|
||||||
|
const setEChart = (val: any, data: any) => {
|
||||||
|
let options = {
|
||||||
title: {
|
title: {
|
||||||
text: '在线率统计',
|
text: '在线率统计',
|
||||||
x: 'center',
|
x: 'center',
|
||||||
@@ -180,15 +295,15 @@ const onSubmit = () => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
data: text.data.data.filter(item => item.phaseType == 'A').map(item => item.time),
|
data: data.filter(item => item.phaseType == 'A').map(item => item.time),
|
||||||
// name: '时间',
|
// name: '时间',
|
||||||
onZero: false,
|
onZero: false,
|
||||||
position: 'bottom' // 设置 x 轴在底部
|
position: 'bottom' // 设置 x 轴在底部
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value',
|
type: 'value',
|
||||||
max: Math.ceil(Math.max(...text.data.data.map(item => item.value))),
|
max: Math.ceil(Math.max(...data.map(item => item.value))),
|
||||||
min: Math.floor(Math.min(...text.data.data.map(item => item.value)))
|
min: Math.floor(Math.min(...data.map(item => item.value)))
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data: ['A', 'B', 'C']
|
data: ['A', 'B', 'C']
|
||||||
@@ -203,27 +318,78 @@ const onSubmit = () => {
|
|||||||
type: 'line',
|
type: 'line',
|
||||||
// smooth: true,
|
// smooth: true,
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: text.data.data.filter(item => item.phaseType == 'A').map(item => item.value.toFixed(3))
|
data: data.filter(item => item.phaseType == 'A').map(item => item.value.toFixed(3))
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'B',
|
name: 'B',
|
||||||
type: 'line',
|
type: 'line',
|
||||||
// smooth: true,
|
// smooth: true,
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: text.data.data.filter(item => item.phaseType == 'B').map(item => item.value.toFixed(3))
|
data: data.filter(item => item.phaseType == 'B').map(item => item.value.toFixed(3))
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'C',
|
name: 'C',
|
||||||
type: 'line',
|
type: 'line',
|
||||||
// smooth: true,
|
// smooth: true,
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: text.data.data.filter(item => item.phaseType == 'C').map(item => item.value.toFixed(3))
|
data: data.filter(item => item.phaseType == 'C').map(item => item.value.toFixed(3))
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
val == 1
|
||||||
|
? (options1.value = options)
|
||||||
|
: val == 2
|
||||||
|
? (options2.value = options)
|
||||||
|
: val == 3
|
||||||
|
? (options3.value = options)
|
||||||
|
: ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// 承载能力评估
|
// 承载能力评估
|
||||||
const assess = () => {
|
const assess = () => {
|
||||||
|
let ChartsList = [
|
||||||
|
{
|
||||||
|
name: '安全',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'III级',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'II级',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'I级',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '禁止接入',
|
||||||
|
value: 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
carryCapacityCal({
|
||||||
|
startTime: '2024-02-05', //修改
|
||||||
|
endTime: '2024-02-11', //修改
|
||||||
|
i_βmax: i_βmax.value,
|
||||||
|
lineId: '086c7774e30839d30fdfb0544bf776de', //修改
|
||||||
|
p_βminMap: p_βminMap.value,
|
||||||
|
q_βminMap: q_βminMap.value,
|
||||||
|
s_T: 200, //修改
|
||||||
|
s_pv: 200, //修改
|
||||||
|
scale: '220', //修改
|
||||||
|
stringMap: stringMap.value,
|
||||||
|
userId: '49d45dc6390690874b5df064deec56c7'
|
||||||
|
}).then(res => {
|
||||||
|
tableData.value[0][`level` + res.data.utlevel] = 1
|
||||||
|
tableData.value[1][`level` + res.data.pfTLevel] = 1
|
||||||
|
tableData.value[2][`level` + res.data.btlevel] = 1
|
||||||
|
tableData.value[3][`level` + res.data.ilevel] = 1
|
||||||
|
ChartsList[res.data.reslutLevel - 1].value = 1
|
||||||
|
showAssess.value = true
|
||||||
|
})
|
||||||
|
|
||||||
pieCharts.value = {
|
pieCharts.value = {
|
||||||
title: {
|
title: {
|
||||||
text: '承载能力评估结果',
|
text: '承载能力评估结果',
|
||||||
@@ -237,10 +403,7 @@ const assess = () => {
|
|||||||
type: 'scroll',
|
type: 'scroll',
|
||||||
orient: 'vertical',
|
orient: 'vertical',
|
||||||
left: 10,
|
left: 10,
|
||||||
top: '10%',
|
top: '10%'
|
||||||
tooltip: {
|
|
||||||
show: true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
xAxis: {
|
xAxis: {
|
||||||
@@ -249,51 +412,61 @@ const assess = () => {
|
|||||||
yAxis: {
|
yAxis: {
|
||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
color: ['#77DA63', '#00BFF5', '#FFBF00', '#Ff6600'],
|
color: ['#77DA63', '#00BFF5', '#FFBF00', '#Ff6600', '#ff0000'],
|
||||||
dataZoom: { show: false },
|
dataZoom: { show: false },
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
center: ['50%', '50%'],
|
center: ['50%', '50%'],
|
||||||
radius: ['35%', '48%'],
|
radius: ['35%', '48%'],
|
||||||
selectedOffset: 30,
|
|
||||||
clockwise: true,
|
|
||||||
label: {
|
label: {
|
||||||
formatter: '{b}:{c}'
|
normal: {
|
||||||
},
|
show: false
|
||||||
labelLine: {
|
}
|
||||||
length: 1,
|
|
||||||
length2: 20
|
|
||||||
},
|
},
|
||||||
|
data: ChartsList
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 下载模版
|
||||||
|
const exportTemplate = () => {
|
||||||
|
getExcelTemplate().then(res => {
|
||||||
|
let blob = new Blob([res], {
|
||||||
|
type: "application/vnd.ms-excel;charset=UTF-8",
|
||||||
|
})
|
||||||
|
|
||||||
data: [
|
const url = window.URL.createObjectURL(blob)
|
||||||
{
|
const link = document.createElement('a') // 创建a标签
|
||||||
name: '安全',
|
link.href = url
|
||||||
value: 1
|
// link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||||
},
|
link.download = '数据模版' // 设置下载的文件名
|
||||||
{
|
document.body.appendChild(link)
|
||||||
name: 'III级',
|
link.click() //执行下载
|
||||||
value: 3
|
document.body.removeChild(link)
|
||||||
},
|
})
|
||||||
{
|
}
|
||||||
name: 'II级',
|
// 离线导入
|
||||||
value: 3
|
const choose = (e: any) => {
|
||||||
},
|
if (dotList.value.level != 6) {
|
||||||
{
|
return ElMessage.error('请选择线路')
|
||||||
name: 'I级',
|
|
||||||
value: 2
|
|
||||||
}
|
}
|
||||||
]
|
let form = {
|
||||||
|
endTime: datePickerRef.value.timeValue[1],
|
||||||
|
lineId: dotList.value.id,
|
||||||
|
startTime: datePickerRef.value.timeValue[0]
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
uploadExcel(e.raw, form).then(res => {
|
||||||
showAssess.value = true
|
ElMessage.success('导入成功')
|
||||||
|
})
|
||||||
}
|
}
|
||||||
const handleNodeClick = (data: any, node: any) => {
|
const handleNodeClick = (data: any, node: any) => {
|
||||||
|
console.log('🚀 ~ handleNodeClick ~ data:', data)
|
||||||
dotList.value = data
|
dotList.value = data
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss" scoped>
|
||||||
.splitpanes.default-theme .splitpanes__pane {
|
.splitpanes.default-theme .splitpanes__pane {
|
||||||
background: #eaeef1;
|
background: #eaeef1;
|
||||||
}
|
}
|
||||||
@@ -305,7 +478,42 @@ const handleNodeClick = (data: any, node: any) => {
|
|||||||
.el-button {
|
.el-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
z-index: 1;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type {
|
||||||
|
background: #f8f8f9;
|
||||||
|
}
|
||||||
|
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type:before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 98px; /*这里需要自己调整,根据td的宽度和高度*/
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: grey;
|
||||||
|
opacity: 0.3;
|
||||||
|
display: block;
|
||||||
|
transform: rotate(-66deg); /*这里需要自己调整,根据线的位置*/
|
||||||
|
transform-origin: top;
|
||||||
|
}
|
||||||
|
::v-deep .vxe-table--header thead tr:last-of-type th:first-of-type:before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 98px; /*这里需要自己调整,根据td的宽度和高度*/
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: grey;
|
||||||
|
opacity: 0.3;
|
||||||
|
display: block;
|
||||||
|
transform: rotate(-66deg); /*这里需要自己调整,根据线的位置*/
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
.SelectIcon {
|
||||||
|
height: 30px;
|
||||||
|
margin-top: 5px;
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="policyView" title="承载能力评估策略" width="1400" :before-close="handleClose">
|
<el-dialog v-model="Views" title="承载能力评估策略" width="1400" :before-close="handleClose">
|
||||||
<div style="display: flex; justify-content: end">
|
<div style="display: flex; justify-content: end">
|
||||||
<el-button icon="el-icon-Refresh" type="primary" @click="restores">一键还原</el-button>
|
<el-button icon="el-icon-Refresh" type="primary" @click="restores">一键还原</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -16,23 +16,35 @@
|
|||||||
<vxe-column field="name" width="180" title="结果"></vxe-column>
|
<vxe-column field="name" width="180" title="结果"></vxe-column>
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
<vxe-column field="count1" title="安全(个)">
|
<vxe-column field="count1" title="安全(个)">
|
||||||
<template #default="{ row }">
|
<template #default="row">
|
||||||
{{ row.comparisonOperators1 }}{{ row.comparisonOperators1 == '/' ? '' : row.count1 }}
|
<div @click="cells(row, row.row.comparisonOperators1, row.row.count1)">
|
||||||
|
{{ row.row.comparisonOperators1
|
||||||
|
}}{{ row.row.comparisonOperators1 == '/' ? '' : row.row.count1 }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="count2" title="III级预警(个)">
|
<vxe-column field="count2" title="III级预警(个)">
|
||||||
<template #default="{ row }">
|
<template #default="row">
|
||||||
{{ row.comparisonOperators2 }}{{ row.comparisonOperators2 == '/' ? '' : row.count2 }}
|
<div @click="cells(row, row.row.comparisonOperators2, row.row.count2)">
|
||||||
|
{{ row.row.comparisonOperators2
|
||||||
|
}}{{ row.row.comparisonOperators2 == '/' ? '' : row.row.count2 }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="count3" title="II级预警(个)">
|
<vxe-column field="count3" title="II级预警(个)">
|
||||||
<template #default="{ row }">
|
<template #default="row">
|
||||||
{{ row.comparisonOperators3 }}{{ row.comparisonOperators3 == '/' ? '' : row.count3 }}
|
<div @click="cells(row, row.row.comparisonOperators3, row.row.count3)">
|
||||||
|
{{ row.row.comparisonOperators3
|
||||||
|
}}{{ row.row.comparisonOperators3 == '/' ? '' : row.row.count3 }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="count4" title="I级预警(个)">
|
<vxe-column field="count4" title="I级预警(个)">
|
||||||
<template #default="{ row }">
|
<template #default="row">
|
||||||
{{ row.comparisonOperators4 }}{{ row.comparisonOperators4 == '/' ? '' : row.count4 }}
|
<div @click="cells(row, row.row.comparisonOperators4, row.row.count4)">
|
||||||
|
{{ row.row.comparisonOperators4
|
||||||
|
}}{{ row.row.comparisonOperators4 == '/' ? '' : row.row.count4 }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
@@ -48,6 +60,30 @@
|
|||||||
<vxe-column field="date12" title="畸次谐波合格个数"></vxe-column>
|
<vxe-column field="date12" title="畸次谐波合格个数"></vxe-column>
|
||||||
<vxe-column field="date13" title="偶次谐波合格个数"></vxe-column>
|
<vxe-column field="date13" title="偶次谐波合格个数"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
|
|
||||||
|
<el-dialog v-model="dialogVisible" title="安全等级配置" width="500">
|
||||||
|
<el-form :model="form" label-width="auto">
|
||||||
|
<el-form-item label="运算符号:">
|
||||||
|
<el-radio-group v-model="form.comparisonOperators" @change="groupChang">
|
||||||
|
<el-radio :label="'>'">></el-radio>
|
||||||
|
<el-radio :label="'<'"><</el-radio>
|
||||||
|
<el-radio :label="'>='">>=</el-radio>
|
||||||
|
<el-radio :label="'<='"><=</el-radio>
|
||||||
|
<el-radio :label="'=='">==</el-radio>
|
||||||
|
<el-radio :label="'/'">/</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="用户名称:">
|
||||||
|
<el-input-number v-model="form.count" :disabled="disabled" :min="0" style="width: 100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="add">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -56,12 +92,13 @@ import { defaultAttribute } from '@/components/table/defaultAttribute'
|
|||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import { queyDetail, addCarryc, restore } from '@/api/advance-boot/bearingCapacity'
|
import { queyDetail, addCarryc, restore } from '@/api/advance-boot/bearingCapacity'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'Advancedanalysis/eventcorrelation'
|
name: 'Advancedanalysis/eventcorrelation'
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['View'])
|
const emit = defineEmits(['View'])
|
||||||
const view = ref(false)
|
|
||||||
const policyView = ref(true)
|
const Views = ref(true)
|
||||||
|
|
||||||
const xTable = ref()
|
const xTable = ref()
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
@@ -100,25 +137,26 @@ const tableData = ref([
|
|||||||
date13: '0'
|
date13: '0'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const form = ref({
|
const form: any = ref({
|
||||||
id: '',
|
comparisonOperators: '',
|
||||||
name: '',
|
count: ''
|
||||||
role: '',
|
|
||||||
num6: '',
|
|
||||||
date12: '',
|
|
||||||
date13: ''
|
|
||||||
})
|
})
|
||||||
|
const dialogVisible = ref(false)
|
||||||
queyDetail().then(res => {
|
const disabled = ref(false)
|
||||||
|
const info = () => {
|
||||||
|
queyDetail().then(res => {
|
||||||
photovoltaicData.value = []
|
photovoltaicData.value = []
|
||||||
let title = ['安全', 'III级预警', 'II级预警', 'I级预警']
|
let title = ['安全', 'III级预警', 'II级预警', 'I级预警']
|
||||||
// photovoltaicData.value = res.data
|
// photovoltaicData.value = res.data
|
||||||
for (let i: number = 1; i < 5; i++) {
|
for (let i: number = 1; i < 5; i++) {
|
||||||
photovoltaicData.value.push({ ...setData(res.data.filter(item => item.indexResult == i)), name: title[i - 1] })
|
photovoltaicData.value.push({
|
||||||
|
...setData(res.data.filter(item => item.indexResult == i)),
|
||||||
|
name: title[i - 1]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
console.log('🚀 ~ queyDetail ~ res.data.filter(item=>item.indexResult==1):', photovoltaicData.value)
|
})
|
||||||
})
|
}
|
||||||
|
// 处理返回数据
|
||||||
const setData = (row: any) => {
|
const setData = (row: any) => {
|
||||||
let data = {}
|
let data = {}
|
||||||
row.forEach((item: any) => {
|
row.forEach((item: any) => {
|
||||||
@@ -127,14 +165,44 @@ const setData = (row: any) => {
|
|||||||
})
|
})
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
// <span @click="cells(row,comparisonOperators2,count2)">
|
||||||
|
const cells = (row: any, comparisonOperators: any, count: any) => {
|
||||||
|
form.value = {
|
||||||
|
comparisonOperators: comparisonOperators,
|
||||||
|
count: count,
|
||||||
|
result: row.columnIndex,
|
||||||
|
indexResult: row.rowIndex + 1
|
||||||
|
}
|
||||||
|
groupChang(comparisonOperators)
|
||||||
|
dialogVisible.value = true
|
||||||
|
}
|
||||||
|
// 运算符变化
|
||||||
|
const groupChang = e => {
|
||||||
|
if (e == '/') {
|
||||||
|
form.value.count = 0
|
||||||
|
disabled.value = true
|
||||||
|
} else {
|
||||||
|
disabled.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 安全等级配置确认
|
||||||
|
const add = () => {
|
||||||
|
addCarryc(form.value).then(res => {
|
||||||
|
ElMessage.success('修改成功!')
|
||||||
|
dialogVisible.value = false
|
||||||
|
info()
|
||||||
|
})
|
||||||
|
}
|
||||||
// 还原
|
// 还原
|
||||||
const restores = () => {
|
const restores = () => {
|
||||||
restore().then(res => {
|
restore().then(res => {
|
||||||
ElMessage.success('还原成功!')
|
ElMessage.success('还原成功!')
|
||||||
|
info()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
info()
|
||||||
|
})
|
||||||
// 取消
|
// 取消
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
emit('View')
|
emit('View')
|
||||||
|
|||||||
@@ -121,10 +121,10 @@ const rules = {
|
|||||||
|
|
||||||
const ruleFormRef = ref()
|
const ruleFormRef = ref()
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/advance-boot/carrycapacity/queryCarryCapacityData',
|
url: '/advance-boot/result/queryResultList',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
{ width: '60', type: 'checkbox' },
|
// { width: '60', type: 'checkbox' },
|
||||||
|
|
||||||
{
|
{
|
||||||
field: 'index',
|
field: 'index',
|
||||||
@@ -134,12 +134,29 @@ 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: 'name', title: '配变台区' },
|
{ field: 'lineName', title: '配变台区' },
|
||||||
{ field: 'type', title: '评估类型' },
|
{ field: 'evaluateType', title: '评估类型' },
|
||||||
|
|
||||||
{ field: 'Area', title: '预评估用户' },
|
{ field: 'userName', title: '预评估用户' },
|
||||||
{ field: 'level', title: '评估结果' },
|
{
|
||||||
{ field: 'mav1', title: '评估日期' },
|
field: 'reslutLevel',
|
||||||
|
title: '评估结果',
|
||||||
|
formatter: (row: any) => {
|
||||||
|
// 1-安全,2-III级预警,3-II级预警,4-I 级预警,5-禁止接入
|
||||||
|
return row.reslutLevel == 1
|
||||||
|
? '合格'
|
||||||
|
: row.reslutLevel == 2
|
||||||
|
? 'III级预警'
|
||||||
|
: row.reslutLevel == 3
|
||||||
|
? 'II级预警'
|
||||||
|
: row.reslutLevel == 4
|
||||||
|
? 'I 级预警'
|
||||||
|
: row.reslutLevel == 5
|
||||||
|
? '禁止接入'
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'evaluateDate', title: '评估日期' },
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
@@ -179,21 +196,7 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
loadCallback: () => {
|
loadCallback: () => {}
|
||||||
tableStore.table.data = [
|
|
||||||
{
|
|
||||||
name: '光伏电站用户1',
|
|
||||||
type: '光伏电站',
|
|
||||||
Area: '中国',
|
|
||||||
level: '220',
|
|
||||||
mav1: '100',
|
|
||||||
mav2: '100',
|
|
||||||
detailed: '详情',
|
|
||||||
user: 'Admin',
|
|
||||||
time: '2024-01-03'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
tableStore.table.params.userType = ''
|
tableStore.table.params.userType = ''
|
||||||
tableStore.table.params.userId = dictData.state.area[0].id
|
tableStore.table.params.userId = dictData.state.area[0].id
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -85,7 +85,7 @@ import { mainHeight } from '@/utils/layout'
|
|||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'estimate/userManagement'
|
name: 'estimate/photovoltaic'
|
||||||
})
|
})
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const levelList = dictData.getBasicData('Dev_Voltage_Stand')
|
const levelList = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
@@ -131,6 +131,7 @@ const props = { label: 'name', value: 'id' }
|
|||||||
const ruleFormRef = ref()
|
const ruleFormRef = ref()
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/advance-boot/carrycapacityuser/queyDetailUser',
|
url: '/advance-boot/carrycapacityuser/queyDetailUser',
|
||||||
|
// url: '/hzj/carrycapacityuser/queyDetailUser',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
// { width: '60', type: 'checkbox' },
|
// { width: '60', type: 'checkbox' },
|
||||||
@@ -164,7 +165,7 @@ const tableStore = new TableStore({
|
|||||||
field: 'protocolCapacity',
|
field: 'protocolCapacity',
|
||||||
title: '用户协议容量(MVA)',
|
title: '用户协议容量(MVA)',
|
||||||
formatter: (row: any) => {
|
formatter: (row: any) => {
|
||||||
return uesrList.filter(item => item.id == row.row.userType)[0].code == 'Power_Station_Users'
|
return uesrList.filter(item => item.id == row.row.userType)[0].code != 'Power_Station_Users'
|
||||||
? row.cellValue
|
? row.cellValue
|
||||||
: '/'
|
: '/'
|
||||||
}
|
}
|
||||||
@@ -173,7 +174,7 @@ const tableStore = new TableStore({
|
|||||||
field: 'protocolCapacity',
|
field: 'protocolCapacity',
|
||||||
title: '拟接入容量(MVA)',
|
title: '拟接入容量(MVA)',
|
||||||
formatter: (row: any) => {
|
formatter: (row: any) => {
|
||||||
return uesrList.filter(item => item.id == row.row.userType)[0].code != 'Power_Station_Users'
|
return uesrList.filter(item => item.id == row.row.userType)[0].code == 'Power_Station_Users'
|
||||||
? row.cellValue
|
? row.cellValue
|
||||||
: '/'
|
: '/'
|
||||||
}
|
}
|
||||||
@@ -240,7 +241,10 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
loadCallback: () => {}
|
loadCallback: () => {
|
||||||
|
console.log(tableStore.table.data);
|
||||||
|
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
tableStore.table.params.userType = ''
|
tableStore.table.params.userType = ''
|
||||||
|
|||||||
33
src/views/pqs/supervise/electricalEnergy/index.vue
Normal file
33
src/views/pqs/supervise/electricalEnergy/index.vue
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<el-tabs v-model="activeName" type="border-card">
|
||||||
|
<el-tab-pane label="电能质量问题查询维护" name="1"></el-tab-pane>
|
||||||
|
<el-tab-pane label="电能质量问题审核" name="2"></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted, reactive, ref, provide } from 'vue'
|
||||||
|
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
defineOptions({
|
||||||
|
name: 'Processsupervision/electricitymanagement'
|
||||||
|
})
|
||||||
|
const activeName = ref('1')
|
||||||
|
const Statistics = ref()
|
||||||
|
const compatibility = ref()
|
||||||
|
|
||||||
|
const layout = mainHeight(63) as any
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bars_w {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
::v-deep(.el-tabs__content) {
|
||||||
|
height: v-bind('layout.height');
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -21,7 +21,7 @@ import planAudits from './components/planAudits.vue'
|
|||||||
import planManage from './components/planManage.vue'
|
import planManage from './components/planManage.vue'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'Region/overview'
|
name: 'Processsupervision/harmonicmanagement'
|
||||||
})
|
})
|
||||||
const activeName = ref('1')
|
const activeName = ref('1')
|
||||||
const Statistics = ref()
|
const Statistics = ref()
|
||||||
|
|||||||
87
src/views/pqs/supervise/interfere/components/network.vue
Normal file
87
src/views/pqs/supervise/interfere/components/network.vue
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<TableHeader area ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="干扰源类型">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源类型"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="干扰源用户名称">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源用户名称"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Stamp" type="primary">审核</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
|
|
||||||
|
const dictData = useDictData()
|
||||||
|
const process = [
|
||||||
|
{
|
||||||
|
name: '是',
|
||||||
|
id: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '否',
|
||||||
|
id: '0'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const title = ref('')
|
||||||
|
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/system-boot/area/areaSelect',
|
||||||
|
publicHeight: 65,
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ width: '60', type: 'checkbox' },
|
||||||
|
{ field: 'orgName', title: '所属单位' },
|
||||||
|
{ field: 'loadType', title: '干扰源类型' },
|
||||||
|
{ field: 'userName', title: '干扰源用户名称' },
|
||||||
|
{ field: 'recordTime', title: '建档时间' },
|
||||||
|
{ field: 'iuploadTime', title: '报告提交评估时间' }
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {
|
||||||
|
tableStore.table.data = [
|
||||||
|
{
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
|
tableStore.table.params.type = ''
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
125
src/views/pqs/supervise/interfere/components/normal.vue
Normal file
125
src/views/pqs/supervise/interfere/components/normal.vue
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<TableHeader area ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="干扰源类型">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源类型"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="干扰源用户名称">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源用户名称"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关联干扰源用户">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择关联干扰源用户"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否已上传实测">
|
||||||
|
<el-select v-model="tableStore.table.params.searchState" placeholder="请选择是否已上传实测">
|
||||||
|
<el-option
|
||||||
|
v-for="item in process"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Upload" type="primary">上传</el-button>
|
||||||
|
<el-button icon="el-icon-Download" type="primary">导出</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
|
|
||||||
|
const dictData = useDictData()
|
||||||
|
const process = [
|
||||||
|
{
|
||||||
|
name: '是',
|
||||||
|
id: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '否',
|
||||||
|
id: '0'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const title = ref('')
|
||||||
|
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/system-boot/area/areaSelect',
|
||||||
|
publicHeight: 65,
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ width: '60', type: 'checkbox' },
|
||||||
|
{ field: 'orgName', title: '所属单位' },
|
||||||
|
{
|
||||||
|
field: 'loadType',
|
||||||
|
title: '干扰源类型'
|
||||||
|
},
|
||||||
|
{ field: 'userName', title: '干扰源用户名称' },
|
||||||
|
{ field: 'relationUserName', title: '关联干扰源用户名称' },
|
||||||
|
{ field: 'istatus', title: '实测报告状态' },
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '180',
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '查看',
|
||||||
|
type: 'primary',
|
||||||
|
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {
|
||||||
|
tableStore.table.data = [
|
||||||
|
{
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
|
tableStore.table.params.type = ''
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
96
src/views/pqs/supervise/interfere/components/report.vue
Normal file
96
src/views/pqs/supervise/interfere/components/report.vue
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<TableHeader area ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="干扰源类型">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源类型"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="干扰源用户名称">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源用户名称"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关联干扰源用户">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择关联干扰源用户"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Stamp" type="primary">审核</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
|
|
||||||
|
const dictData = useDictData()
|
||||||
|
const process = [
|
||||||
|
{
|
||||||
|
name: '是',
|
||||||
|
id: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '否',
|
||||||
|
id: '0'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const title = ref('')
|
||||||
|
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/system-boot/area/areaSelect',
|
||||||
|
publicHeight: 65,
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ width: '60', type: 'checkbox' },
|
||||||
|
{ field: 'orgName', title: '所属单位' },
|
||||||
|
{
|
||||||
|
field: 'loadType',
|
||||||
|
title: '干扰源类型'
|
||||||
|
},
|
||||||
|
{ field: 'userName', title: '干扰源用户名称' },
|
||||||
|
{ field: 'relationUserName', title: '关联干扰源用户名称' },
|
||||||
|
{ field: 'auploadTime', title: '报告提交评估时间' }
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {
|
||||||
|
tableStore.table.data = [
|
||||||
|
{
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
|
tableStore.table.params.type = ''
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
148
src/views/pqs/supervise/interfere/components/undocumented.vue
Normal file
148
src/views/pqs/supervise/interfere/components/undocumented.vue
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<TableHeader area ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="干扰源类型">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源类型"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="干扰源用户名称">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择干扰源用户名称"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否上传报告:">
|
||||||
|
<el-select v-model="tableStore.table.params.searchState" placeholder="请选择是否上传报告">
|
||||||
|
<el-option
|
||||||
|
v-for="item in process"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Plus" type="primary">新增</el-button>
|
||||||
|
<el-button icon="el-icon-Upload" type="primary">上传</el-button>
|
||||||
|
<el-button icon="el-icon-Sort" type="primary">关联</el-button>
|
||||||
|
<el-button icon="el-icon-Download" type="primary">导出</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
|
|
||||||
|
const dictData = useDictData()
|
||||||
|
const process = [
|
||||||
|
{
|
||||||
|
name: '是',
|
||||||
|
id: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '否',
|
||||||
|
id: '0'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const title = ref('')
|
||||||
|
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/system-boot/area/areaSelect',
|
||||||
|
publicHeight: 65,
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ width: '60', type: 'checkbox' },
|
||||||
|
{ field: 'orgName', title: '所属单位' },
|
||||||
|
{
|
||||||
|
field: 'loadType',
|
||||||
|
title: '干扰源类型'
|
||||||
|
},
|
||||||
|
{ field: 'userName', title: '干扰源用户名称' },
|
||||||
|
{ field: 'recordTime', title: '建档时间' },
|
||||||
|
{ field: 'iisFileUpload', title: '是否上传报告' },
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '180',
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '绑定',
|
||||||
|
type: 'primary',
|
||||||
|
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '编辑',
|
||||||
|
type: '',
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: async row => {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'del',
|
||||||
|
text: '删除',
|
||||||
|
type: 'danger',
|
||||||
|
icon: 'el-icon-Delete',
|
||||||
|
render: 'confirmButton',
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
confirmButtonType: 'danger',
|
||||||
|
title: '确定删除?'
|
||||||
|
},
|
||||||
|
click: row => {
|
||||||
|
removeUse({ userIds: row.userId }).then(res => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {
|
||||||
|
tableStore.table.data = [
|
||||||
|
{
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
|
tableStore.table.params.type = ''
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
41
src/views/pqs/supervise/interfere/index.vue
Normal file
41
src/views/pqs/supervise/interfere/index.vue
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<el-tabs v-model="activeName" type="border-card">
|
||||||
|
<el-tab-pane label="未建档非线性用户录入及查询" name="1">
|
||||||
|
<undocumented />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="入网评估报告审核" name="2"><network /></el-tab-pane>
|
||||||
|
<el-tab-pane label="干扰源用户常态化管理" name="3"><normal /></el-tab-pane>
|
||||||
|
<el-tab-pane label="实测报告审核" name="4"><report /></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted, reactive, ref, provide } from 'vue'
|
||||||
|
import undocumented from './components/undocumented.vue'
|
||||||
|
import network from './components/network.vue'
|
||||||
|
import normal from './components/normal.vue'
|
||||||
|
import report from './components/report.vue'
|
||||||
|
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
defineOptions({
|
||||||
|
name: 'Processsupervision/interferencemanagement'
|
||||||
|
})
|
||||||
|
const activeName = ref('1')
|
||||||
|
const Statistics = ref()
|
||||||
|
const compatibility = ref()
|
||||||
|
|
||||||
|
const layout = mainHeight(63) as any
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bars_w {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
::v-deep(.el-tabs__content) {
|
||||||
|
height: v-bind('layout.height');
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
<template>
|
||||||
|
<el-row :gutter="20" :style="{ height: height }">
|
||||||
|
<el-col :span="9" class="col1">
|
||||||
|
<policyTree @tactics="tactics"/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="15" class="col1">
|
||||||
|
<div class="mb10" style="height: 32px">
|
||||||
|
<el-button type="primary" icon="el-icon-Plus">新增策略</el-button>
|
||||||
|
</div>
|
||||||
|
<div :style="`height: calc(${height} - 43px)`">
|
||||||
|
<vxe-table ref="tableRef" height="auto" :data="dataList" v-bind="defaultAttribute">
|
||||||
|
<vxe-column field="name" title="策略名称"></vxe-column>
|
||||||
|
<vxe-column field="type" title="策略类型">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.type === 0 ? '预警单' : '告警单' }}
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="grade" title="策略等级">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.grade === 0 ? '自动策略' : row.grade === 1 ? '手动策略' : '排他策略' }}
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column field="state" title="状态">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-switch
|
||||||
|
v-model.number="row.state"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="2"
|
||||||
|
@change="stateChange($event, row.id)"
|
||||||
|
></el-switch>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column title="操作">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button type="primary" size="small" link>查看</el-button>
|
||||||
|
<el-button type="primary" size="small" link>修改</el-button>
|
||||||
|
<el-button type="primary" size="small" link>删除</el-button>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
</vxe-table>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import policyTree from '@/components/tree/pqs/policyTree.vue'
|
||||||
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
const height = mainHeight(80).height
|
||||||
|
const dataList = ref([{}])
|
||||||
|
|
||||||
|
const stateChange = (val: number, id: number) => {}
|
||||||
|
const tactics = (row: any, id: number) => {
|
||||||
|
console.log("🚀 ~ tactics ~ row:", row,id)
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
192
src/views/pqs/supervise/technology/components/technology.vue
Normal file
192
src/views/pqs/supervise/technology/components/technology.vue
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<TableHeader datePicker ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="筛选数据">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择筛选数据"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="事务类型:">
|
||||||
|
<el-select v-model="tableStore.table.params.type" clearable placeholder="请选择事务类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in affairs"
|
||||||
|
: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.searchState" placeholder="请选择所属流程">
|
||||||
|
<el-option
|
||||||
|
v-for="item in process"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Plus" type="primary" @click="add">新建</el-button>
|
||||||
|
<el-button icon="el-icon-Plus" type="primary" @click="add">上传模板</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||||
|
|
||||||
|
const dictData = useDictData()
|
||||||
|
const process = [
|
||||||
|
{
|
||||||
|
name: '开始',
|
||||||
|
id: '0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '预/告警单下发',
|
||||||
|
id: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '反馈单上传',
|
||||||
|
id: '2'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '现场测试',
|
||||||
|
id: '3'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '整改通知单下发',
|
||||||
|
id: '4'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '整改通知单反馈',
|
||||||
|
id: '5'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '完结',
|
||||||
|
id: '6'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
const affairs = [
|
||||||
|
{
|
||||||
|
name: '预警单',
|
||||||
|
id: '0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '告警单',
|
||||||
|
id: '1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const title = ref('')
|
||||||
|
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/system-boot/area/areaSelect',
|
||||||
|
publicHeight: 65,
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ field: 'name', title: '名称' },
|
||||||
|
{
|
||||||
|
field: 'grade',
|
||||||
|
title: '等级'
|
||||||
|
},
|
||||||
|
{ field: 'bigType', title: '策略选择' },
|
||||||
|
{ field: 'updateBy', title: '更新人员' },
|
||||||
|
{ field: 'updateTime', title: '更新时间' },
|
||||||
|
{
|
||||||
|
field: 'state',
|
||||||
|
title: '状态',
|
||||||
|
activeValue: '2',
|
||||||
|
inactiveValue: '1',
|
||||||
|
render: 'switch',
|
||||||
|
onChangeField: (row: any, value) => {
|
||||||
|
console.log('🚀 ~ row:', 444123, value)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '180',
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '绑定',
|
||||||
|
type: 'primary',
|
||||||
|
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '编辑',
|
||||||
|
type: '',
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: async row => {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'del',
|
||||||
|
text: '删除',
|
||||||
|
type: 'danger',
|
||||||
|
icon: 'el-icon-Delete',
|
||||||
|
render: 'confirmButton',
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
confirmButtonType: 'danger',
|
||||||
|
title: '确定删除?'
|
||||||
|
},
|
||||||
|
click: row => {
|
||||||
|
removeUse({ userIds: row.userId }).then(res => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {
|
||||||
|
tableStore.table.data = [
|
||||||
|
{
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
tableStore.table.params.searchValue = ''
|
||||||
|
tableStore.table.params.type = ''
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const add = () => {
|
||||||
|
title.value = '新增告警单'
|
||||||
|
dialogVisible.value = true
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,15 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
<div>123
|
<el-tabs v-model="activeName" type="border-card">
|
||||||
|
<el-tab-pane label="概览" name="1"></el-tab-pane>
|
||||||
|
<el-tab-pane label="技术监督管理" name="2"><technology /></el-tab-pane>
|
||||||
general
|
<el-tab-pane label="告警单策略管理" name="3">
|
||||||
|
<earlyWarning />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="预警单策略管理" name="4"><earlyWarning /></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
|
||||||
import { ref, reactive } from 'vue'
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import technology from './components/technology.vue'
|
||||||
|
import earlyWarning from './components/earlyWarning.vue'
|
||||||
|
import { onMounted, reactive, ref, provide } from 'vue'
|
||||||
|
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
defineOptions({
|
||||||
|
name: 'Processsupervision/supervision/manage'
|
||||||
|
})
|
||||||
|
const activeName = ref('1')
|
||||||
|
const Statistics = ref()
|
||||||
|
const compatibility = ref()
|
||||||
|
|
||||||
|
const layout = mainHeight(63) as any
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bars_w {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
::v-deep(.el-tabs__content) {
|
||||||
|
height: v-bind('layout.height');
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
33
src/views/pqs/supervise/terminal/index.vue
Normal file
33
src/views/pqs/supervise/terminal/index.vue
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<el-tabs v-model="activeName" type="border-card">
|
||||||
|
<el-tab-pane label="终端入网检测" name="1"></el-tab-pane>
|
||||||
|
<el-tab-pane label="终端周期检测" name="2"></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted, reactive, ref, provide } from 'vue'
|
||||||
|
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
defineOptions({
|
||||||
|
name: 'Processsupervision/Terminaldetection'
|
||||||
|
})
|
||||||
|
const activeName = ref('1')
|
||||||
|
const Statistics = ref()
|
||||||
|
const compatibility = ref()
|
||||||
|
|
||||||
|
const layout = mainHeight(63) as any
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bars_w {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
::v-deep(.el-tabs__content) {
|
||||||
|
height: v-bind('layout.height');
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
5
types/table.d.ts
vendored
5
types/table.d.ts
vendored
@@ -59,6 +59,10 @@ declare global {
|
|||||||
replaceValue?: any
|
replaceValue?: any
|
||||||
// 时间格式化
|
// 时间格式化
|
||||||
timeFormat?: string
|
timeFormat?: string
|
||||||
|
// 开关控制
|
||||||
|
onChangeField?: (row: TableRow, value: any) => void
|
||||||
|
activeValue?: string
|
||||||
|
inactiveValue?: string
|
||||||
// 自定义组件/函数渲染
|
// 自定义组件/函数渲染
|
||||||
customRender?: string | Component
|
customRender?: string | Component
|
||||||
// 使用了 render 属性时,渲染前对字段值的预处理方法,请返回新值
|
// 使用了 render 属性时,渲染前对字段值的预处理方法,请返回新值
|
||||||
@@ -88,6 +92,7 @@ declare global {
|
|||||||
disabledTip?: boolean
|
disabledTip?: boolean
|
||||||
// 自定义点击事件
|
// 自定义点击事件
|
||||||
click?: (row: TableRow, field: TableColumn) => void
|
click?: (row: TableRow, field: TableColumn) => void
|
||||||
|
|
||||||
// 按钮是否禁用,请返回布尔值
|
// 按钮是否禁用,请返回布尔值
|
||||||
disabled?: (row: TableRow, field: TableColumn) => boolean
|
disabled?: (row: TableRow, field: TableColumn) => boolean
|
||||||
// 自定义el-button属性
|
// 自定义el-button属性
|
||||||
|
|||||||
@@ -11,13 +11,19 @@ export default defineConfig({
|
|||||||
host: '0.0.0.0',
|
host: '0.0.0.0',
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://192.168.1.81:10215', //数据中心
|
target: 'http://192.168.1.31:10215', //数据中心
|
||||||
|
// target: 'http://192.168.1.81:10215', //数据中心
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: path => path.replace(/^\/api/, '') //路径重写,把'/api'替换为''
|
rewrite: path => path.replace(/^\/api/, '') //路径重写,把'/api'替换为''
|
||||||
},
|
},
|
||||||
'/map': {
|
'/map': {
|
||||||
target: 'http://192.168.1.125:8088', //数据中心
|
target: 'http://192.168.1.125:8088', //数据中心
|
||||||
|
changeOrigin: true
|
||||||
|
},
|
||||||
|
'/hzj': {
|
||||||
|
target: 'http://13764779092.gnway.cc', //数据中心
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
|
rewrite: path => path.replace(/^\/hzj/, '') //路径重写,把'/api'替换为''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user