fast(网关相关): 添加南向、北向、数据采集页面,及南向和北向部分接口对接
This commit is contained in:
parent
9364ef8412
commit
2d4d509ef0
|
@ -24,8 +24,10 @@
|
||||||
"dayjs": "^1.11.11",
|
"dayjs": "^1.11.11",
|
||||||
"electron-updater": "^6.1.7",
|
"electron-updater": "^6.1.7",
|
||||||
"element-plus": "^2.7.6",
|
"element-plus": "^2.7.6",
|
||||||
|
"file-saver": "^2.0.5",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"vue-router": "^4.4.0"
|
"vue-router": "^4.4.0",
|
||||||
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@electron-toolkit/eslint-config": "^1.0.2",
|
"@electron-toolkit/eslint-config": "^1.0.2",
|
||||||
|
|
|
@ -13,6 +13,9 @@ const settings = defineProps({
|
||||||
<el-menu-item index="/system/videoplayer"><span class="iconfont icon-icon_jiankong"></span> 视频监控</el-menu-item>
|
<el-menu-item index="/system/videoplayer"><span class="iconfont icon-icon_jiankong"></span> 视频监控</el-menu-item>
|
||||||
<el-menu-item index="/system/serialport"><span class="iconfont icon-chuankou2"></span> 设备参数读写</el-menu-item>
|
<el-menu-item index="/system/serialport"><span class="iconfont icon-chuankou2"></span> 设备参数读写</el-menu-item>
|
||||||
<el-menu-item index="/system/devicestandard"><span class="iconfont icon-icon_chajian"></span> 空开标定</el-menu-item>
|
<el-menu-item index="/system/devicestandard"><span class="iconfont icon-icon_chajian"></span> 空开标定</el-menu-item>
|
||||||
|
<el-menu-item index="/gateway/southdirection"><span class="iconfont icon-icon_chajian"></span> 南向采集配置</el-menu-item>
|
||||||
|
<el-menu-item index="/gateway/northboundtask"><span class="iconfont icon-icon_chajian"></span> 北向任务配置</el-menu-item>
|
||||||
|
<el-menu-item index="/gateway/collectdatamonitor"><span class="iconfont icon-icon_chajian"></span> 采集数据监视</el-menu-item>
|
||||||
<!-- <el-menu-item index="/system/test"><el-icon> <Menu /> </el-icon>测试</el-menu-item>-->
|
<!-- <el-menu-item index="/system/test"><el-icon> <Menu /> </el-icon>测试</el-menu-item>-->
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div class="haeder-menu" :style="{ width: menuWidth + 'px' }">
|
<div class="haeder-menu" :style="{ width: menuWidth + 'px' }">
|
||||||
<el-menu default-active="/system" mode="horizontal" router="true">
|
<el-menu default-active="/system" mode="horizontal" router="true">
|
||||||
<el-menu-item index="/system">系统模板</el-menu-item>
|
<el-menu-item index="/system">系统模板</el-menu-item>
|
||||||
<!-- <el-menu-item index="/test">测试</el-menu-item>-->
|
<!-- <el-menu-item index="/gateway">网关</el-menu-item>-->
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
<div class="haeder-right">
|
<div class="haeder-right">
|
||||||
|
|
|
@ -72,6 +72,41 @@ const router = createRouter({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/gateway',
|
||||||
|
name: 'gateway',
|
||||||
|
component: systenLayout,
|
||||||
|
redirect: { name: 'southdirection' },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'southdirection',
|
||||||
|
name: 'southdirection',
|
||||||
|
component: () => import('@renderer/views/gateway/southdirection.vue'),
|
||||||
|
meta: {
|
||||||
|
menu: 'southdirection',
|
||||||
|
keepAlive: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'northboundtask',
|
||||||
|
name: 'northboundtask',
|
||||||
|
component: () => import('@renderer/views/gateway/northboundtask.vue'),
|
||||||
|
meta: {
|
||||||
|
menu: 'northboundtask',
|
||||||
|
keepAlive: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'collectdatamonitor',
|
||||||
|
name: 'collectdatamonitor',
|
||||||
|
component: () => import('@renderer/views/gateway/collectdatamonitor.vue'),
|
||||||
|
meta: {
|
||||||
|
menu: 'collectdatamonitor',
|
||||||
|
keepAlive: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -16,21 +16,22 @@
|
||||||
// wsUrl: 'ws://127.0.0.1:8000'
|
// wsUrl: 'ws://127.0.0.1:8000'
|
||||||
// }
|
// }
|
||||||
|
|
||||||
export default {
|
// export default {
|
||||||
url: 'http://127.0.0.1:8888',
|
// url: 'http://127.0.0.1:8888',
|
||||||
wsUrl: 'ws://127.0.0.1:8888',
|
// wsUrl: 'ws://127.0.0.1:8888',
|
||||||
swichWsUrl: 'ws://127.0.0.1:8001',
|
// swichWsUrl: 'ws://127.0.0.1:8001',
|
||||||
serialPortUrl: 'http://127.0.0.1:8888',
|
// serialPortUrl: 'http://127.0.0.1:8888',
|
||||||
|
//
|
||||||
// 远程连接串口使用
|
// // 远程连接串口使用
|
||||||
// serialPortUrl: 'http://120.77.172.42:7202',
|
// // serialPortUrl: 'http://120.77.172.42:7202',
|
||||||
// serialPortUrl: 'http://192.168.1.17:8888',
|
// // serialPortUrl: 'http://192.168.1.17:8888',
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
// 手动配置的地址
|
// 手动配置的地址
|
||||||
// export default {
|
export default {
|
||||||
// url: 'http://192.168.1.17:8000',
|
url: 'http://192.168.1.17:8000',
|
||||||
// wsUrl: 'ws://192.168.1.17:8000',
|
wsUrl: 'ws://192.168.1.17:8000',
|
||||||
// swichWsUrl: 'ws://192.168.1.17:8001',
|
swichWsUrl: 'ws://192.168.1.17:8001',
|
||||||
// }
|
serialPortUrl: 'http://127.0.0.1:8888',
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
export function guidGenerator() {
|
||||||
|
var S4 = function() {
|
||||||
|
return ((1 + Math.random())*0X10000|0).toString(16).substring(1);
|
||||||
|
};
|
||||||
|
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
||||||
|
}
|
|
@ -0,0 +1,273 @@
|
||||||
|
<template>
|
||||||
|
<div id="southdirection-box">
|
||||||
|
<div class="device-config">
|
||||||
|
<h2>设备状态</h2>
|
||||||
|
<div class="btn-list">
|
||||||
|
<div class="btn-list-left">
|
||||||
|
</div>
|
||||||
|
<div class="btn-list-right">
|
||||||
|
<el-button type="primary" @click="getDeviceConfig">刷新</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-box">
|
||||||
|
<el-table
|
||||||
|
ref="deviceConfigTableRef"
|
||||||
|
highlight-current-row
|
||||||
|
:data="deviceConfigList"
|
||||||
|
border
|
||||||
|
height="187"
|
||||||
|
@row-click="deviceConfigClick"
|
||||||
|
:style="{ width: tabelBox + 'px',background:'#f2f2f2' }"
|
||||||
|
empty-text="配置为空"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" align="center" width="60" />
|
||||||
|
<el-table-column prop="equipId" label="设备ID" align="center"/>
|
||||||
|
<el-table-column prop="communicationQuality" label="通讯质量" align="center"/>
|
||||||
|
<el-table-column prop="state" label="运行状态" align="center"/>
|
||||||
|
<el-table-column prop="equipName" label="临时停止" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-switch v-model="scope.row.isStart" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="data-config">
|
||||||
|
<h2>数据源配置</h2>
|
||||||
|
<div class="btn-list">
|
||||||
|
<div class="btn-list-left">
|
||||||
|
</div>
|
||||||
|
<div class="btn-list-right">
|
||||||
|
<el-button type="primary" @click="getDeviceConfig">刷新</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-box">
|
||||||
|
<el-table
|
||||||
|
:data="activeDeviceConfig"
|
||||||
|
border
|
||||||
|
size="small"
|
||||||
|
height="100%"
|
||||||
|
ref="deviceDataTableRef"
|
||||||
|
:style="{ width: tabelBox + 'px' }"
|
||||||
|
empty-text="配置为空"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" align="center" width="60" fixed />
|
||||||
|
<el-table-column prop="dataId" label="设备ID_数据ID" align="center" />
|
||||||
|
<el-table-column prop="dataName" label="数据名" align="center" />
|
||||||
|
<el-table-column prop="dataDesc" label="描述" align="center" />
|
||||||
|
<el-table-column prop="value" label="当前值" align="center" />
|
||||||
|
<el-table-column prop="timeStamp" label="时间" align="center" />
|
||||||
|
<el-table-column label="操作" width="55" fixed="right" align="center">
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <el-button link type="danger" size="small" @click.stop="delDeviceDataConfig(scope.$index)">删除</el-button>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { reactive, ref, onMounted, onUnmounted, computed, watch } from "vue"
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus"
|
||||||
|
import axios from "axios"
|
||||||
|
import config from '@renderer/util/config.js';
|
||||||
|
|
||||||
|
|
||||||
|
const deviceConfigTableRef = ref();
|
||||||
|
const deviceDataTableRef = ref();
|
||||||
|
const tabelBox = ref(884)
|
||||||
|
const deviceConfigList = ref([
|
||||||
|
{
|
||||||
|
"equipId": "dev102", // 设备ID
|
||||||
|
"communicationQuality": "good",
|
||||||
|
"state":true,
|
||||||
|
"isStart":false,
|
||||||
|
"dataList":[
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A01',
|
||||||
|
"dataName":'A01',
|
||||||
|
"dataDesc":'炉体进水流量',
|
||||||
|
"value":'-1.17549',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A02',
|
||||||
|
"dataName":'A02',
|
||||||
|
"dataDesc":'炉体出水流量',
|
||||||
|
"value":'-1.71603',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A03',
|
||||||
|
"dataName":'A03',
|
||||||
|
"dataDesc":'炉盖进水流量',
|
||||||
|
"value":'-0.447121',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103", // 设备ID
|
||||||
|
"communicationQuality": "good",
|
||||||
|
"state":true,
|
||||||
|
"isStart":false,
|
||||||
|
"dataList":[
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A01',
|
||||||
|
"dataName":'A01',
|
||||||
|
"dataDesc":'炉体进水流量',
|
||||||
|
"value":'-1.17549',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev104", // 设备ID
|
||||||
|
"communicationQuality": "good",
|
||||||
|
"state":true,
|
||||||
|
"isStart":false,
|
||||||
|
"dataList":[
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A01',
|
||||||
|
"dataName":'A01',
|
||||||
|
"dataDesc":'炉体进水流量',
|
||||||
|
"value":'-1.17549',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A02',
|
||||||
|
"dataName":'A02',
|
||||||
|
"dataDesc":'炉体出水流量',
|
||||||
|
"value":'-1.71603',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A03',
|
||||||
|
"dataName":'A03',
|
||||||
|
"dataDesc":'炉盖进水流量',
|
||||||
|
"value":'-0.447121',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A02',
|
||||||
|
"dataName":'A02',
|
||||||
|
"dataDesc":'炉体出水流量',
|
||||||
|
"value":'-1.71603',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A03',
|
||||||
|
"dataName":'A03',
|
||||||
|
"dataDesc":'炉盖进水流量',
|
||||||
|
"value":'-0.447121',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A02',
|
||||||
|
"dataName":'A02',
|
||||||
|
"dataDesc":'炉体出水流量',
|
||||||
|
"value":'-1.71603',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId":'WUHaNG-ELOT A03',
|
||||||
|
"dataName":'A03',
|
||||||
|
"dataDesc":'炉盖进水流量',
|
||||||
|
"value":'-0.447121',
|
||||||
|
"timeStamp":'2024-09-11 11:44:52.721',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const getDeviceConfig = () => {
|
||||||
|
console.log('获取配置')
|
||||||
|
}
|
||||||
|
|
||||||
|
//当选中索引
|
||||||
|
const ActiveRowIndex = ref(0);
|
||||||
|
|
||||||
|
const activeDeviceConfig = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// watch(
|
||||||
|
// () => ({ ...activeDeviceConfig.value }),
|
||||||
|
// (newVal) => {
|
||||||
|
// // console.log("数据变化",newVal)
|
||||||
|
// deviceConfigList.value[ActiveRowIndex.value] = newVal;
|
||||||
|
// },
|
||||||
|
// { deep: true }
|
||||||
|
// );
|
||||||
|
|
||||||
|
|
||||||
|
//选择设备配置
|
||||||
|
const deviceConfigClick = (e) => {
|
||||||
|
console.log(`current page:`,e)
|
||||||
|
activeDeviceConfig.value = e.dataList;
|
||||||
|
deviceConfigTableRef.value.toggleRowSelection(e);
|
||||||
|
ActiveRowIndex.value = deviceConfigList.value.indexOf(e);
|
||||||
|
// e.isDoubleClicked = !e.isDoubleClicked;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//更新表格宽度
|
||||||
|
const handleResize = () => {
|
||||||
|
deviceDataTableRef.value.doLayout();
|
||||||
|
tabelBox.value = window.innerWidth - 180 - 10 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('resize', handleResize);
|
||||||
|
if(deviceConfigList.value[0]){
|
||||||
|
activeDeviceConfig.value = deviceConfigList.value[0].dataList;
|
||||||
|
ActiveRowIndex.value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('resize', handleResize);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.el-table .double-clicked-row {
|
||||||
|
background-color: #f0f9eb;
|
||||||
|
}
|
||||||
|
:deep(.el-table .el-scrollbar) {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
#southdirection-box{
|
||||||
|
height: 100%;
|
||||||
|
.btn-list{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
.device-config{
|
||||||
|
position: relative;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.data-config{
|
||||||
|
position: relative;
|
||||||
|
height: calc(100% - 278px);
|
||||||
|
.table-box{
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 162px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table-box{
|
||||||
|
//position: absolute;
|
||||||
|
//width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,836 @@
|
||||||
|
<template>
|
||||||
|
<div id="southdirection-box">
|
||||||
|
<div class="plat-config">
|
||||||
|
<h2>平台配置</h2>
|
||||||
|
<div class="btn-list">
|
||||||
|
<div class="btn-list-left">
|
||||||
|
<el-button type="primary" @click="addDeviceConfig">新增配置</el-button>
|
||||||
|
<!-- <el-button type="danger" @click="getDeviceConfig">删除</el-button>-->
|
||||||
|
</div>
|
||||||
|
<div class="btn-list-right">
|
||||||
|
<!-- <el-button type="primary" @click="getDeviceConfig">导出</el-button>-->
|
||||||
|
<!-- <el-button type="primary" @click="getDeviceConfig">导入</el-button>-->
|
||||||
|
<el-button type="primary" @click="getDeviceConfig">获取配置</el-button>
|
||||||
|
<el-button type="primary" @click="setDeviceConfig">设置配置</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-box">
|
||||||
|
<el-table
|
||||||
|
ref="platConfigTableRef"
|
||||||
|
highlight-current-row
|
||||||
|
:data="platConfigList"
|
||||||
|
border
|
||||||
|
height="187"
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
|
:style="{ width: tabelBox + 'px',background:'#f2f2f2' }"
|
||||||
|
empty-text="配置为空"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" align="center" width="60" />
|
||||||
|
<el-table-column prop="PlatformIp" label="平台地址" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.PlatformIp" placeholder="请输入平台地址" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="type" label="上报格式" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select v-model="scope.row.type" placeholder="请选择上报格式">
|
||||||
|
<el-option
|
||||||
|
v-for="item in uploadType"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="mqtt.user" label="用户名" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.mqtt.user" placeholder="请输入用户名" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="mqtt.passwd" label="密码" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input type="password" show-password v-model="scope.row.mqtt.passwd" placeholder="请输入密码" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="mqtt.isUseSsl" label="ssl" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-switch v-model="scope.row.mqtt.isUseSsl" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="mqtt.isUseSslConf" label="ssl文件" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-switch v-model="scope.row.mqtt.isUseSslConf" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="pushConf.isUseResumeBrokenTransfer" label="断点续存" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-switch v-model="scope.row.pushConf.isUseResumeBrokenTransfer" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="protocol.params.linkPar" label="设备地址" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{scope.row.tasks?scope.row.tasks.join():''}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="140" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" size="small" @click="openCollectionModel(scope.row)">加解密配置</el-button>
|
||||||
|
<el-button link type="danger" size="small" @click="delDeviceConfig(scope.$index)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="plat-config">
|
||||||
|
<h2>任务配置</h2>
|
||||||
|
<div class="table-box">
|
||||||
|
<el-table
|
||||||
|
ref="platConfigTableRef"
|
||||||
|
highlight-current-row
|
||||||
|
:data="taskList"
|
||||||
|
border
|
||||||
|
height="187"
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
|
@row-click="taskConfigClick"
|
||||||
|
:style="{ width: tabelBox + 'px',background:'#f2f2f2' }"
|
||||||
|
empty-text="配置为空"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" align="center" width="60" />
|
||||||
|
<el-table-column prop="taskId" label="任务ID" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.taskId" placeholder="请输入任务ID" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="uploadMode" label="上报策略" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-autocomplete
|
||||||
|
v-model="scope.row.uploadMode"
|
||||||
|
:fetch-suggestions="querySearch"
|
||||||
|
clearable
|
||||||
|
class="inline-input w-50"
|
||||||
|
placeholder="请选择上报策略"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="data-config">
|
||||||
|
<h2>上报测点{{activeDeviceConfig.taskId}}</h2>
|
||||||
|
<div class="table-box">
|
||||||
|
<el-table
|
||||||
|
:data="activeDeviceConfig.dataId_entire"
|
||||||
|
border
|
||||||
|
size="small"
|
||||||
|
height="100%"
|
||||||
|
ref="deviceDataTableRef"
|
||||||
|
:style="{ width: tabelBox + 'px' }"
|
||||||
|
empty-text="配置为空"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" align="center" width="60" fixed />
|
||||||
|
<el-table-column prop="equipId" label="设备ID" align="center"/>
|
||||||
|
<el-table-column prop="idInfo.id" label="数据ID" align="center"/>
|
||||||
|
<el-table-column prop="idInfo.uploadMode" label="上报策略" align="center"/>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
v-model="collectionModelShow"
|
||||||
|
title="加解密配置"
|
||||||
|
width="500"
|
||||||
|
:before-close="handleClose"
|
||||||
|
>
|
||||||
|
<el-form ref="collectionRef" :model="collectionForm" label-width="auto" status-icon>
|
||||||
|
<h3>加密算法配置</h3>
|
||||||
|
<el-form-item label="启动">
|
||||||
|
<el-switch v-model="collectionForm.encrypt_1.enable" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="加密算法">
|
||||||
|
<el-select v-model="collectionForm.encrypt_1.algorithm" placeholder="选择加密算法">
|
||||||
|
<el-option label="AES" value="AES" />
|
||||||
|
<el-option label="DES" value="DES" />
|
||||||
|
<el-option label="SM4" value="SM4" />
|
||||||
|
<el-option label="RSA" value="RSA" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" class="text-center">
|
||||||
|
<el-form-item label="加密key值">
|
||||||
|
<el-input v-model="collectionForm.encrypt_1.param.key" placeholder="请输入加密key值" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="加密模式">
|
||||||
|
<el-select v-model="collectionForm.encrypt_1.mode" placeholder="选择加密模式">
|
||||||
|
<el-option label="ECB" value="ECB" />
|
||||||
|
<el-option label="CBC" value="CBC" />
|
||||||
|
<el-option label="CTR" value="CTR" />
|
||||||
|
<el-option label="CFB" value="CFB" />
|
||||||
|
<el-option label="CFB1" value="CFB1" />
|
||||||
|
<el-option label="CFB8" value="CFB8" />
|
||||||
|
<el-option label="CFB128" value="CFB128" />
|
||||||
|
<el-option label="OFB" value="OFB" />
|
||||||
|
<el-option label="OFB128" value="OFB128" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" class="text-center">
|
||||||
|
<el-form-item label="加密向量表">
|
||||||
|
<el-input v-model="collectionForm.encrypt_1.param.ivec" placeholder="请输入加密向量表" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="加密位数">
|
||||||
|
<el-select v-model="collectionForm.encrypt_1.bits" placeholder="选择加密位数">
|
||||||
|
<el-option label="128" value="128" />
|
||||||
|
<el-option label="192" value="192" />
|
||||||
|
<el-option label="256" value="256" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<h3>解密算法配置</h3>
|
||||||
|
<el-form-item label="启动">
|
||||||
|
<el-switch v-model="collectionForm.decrypt_1.enable" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="加密算法">
|
||||||
|
<el-select v-model="collectionForm.decrypt_1.algorithm" placeholder="选择加密算法">
|
||||||
|
<el-option label="AES" value="AES" />
|
||||||
|
<el-option label="DES" value="DES" />
|
||||||
|
<el-option label="SM4" value="SM4" />
|
||||||
|
<el-option label="RSA" value="RSA" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" class="text-center">
|
||||||
|
<el-form-item label="加密key值">
|
||||||
|
<el-input v-model="collectionForm.decrypt_1.param.key" placeholder="请输入加密key值" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="加密模式">
|
||||||
|
<el-select v-model="collectionForm.decrypt_1.mode" placeholder="选择加密模式">
|
||||||
|
<el-option label="ECB" value="ECB" />
|
||||||
|
<el-option label="CBC" value="CBC" />
|
||||||
|
<el-option label="CTR" value="CTR" />
|
||||||
|
<el-option label="CFB" value="CFB" />
|
||||||
|
<el-option label="CFB1" value="CFB1" />
|
||||||
|
<el-option label="CFB8" value="CFB8" />
|
||||||
|
<el-option label="CFB128" value="CFB128" />
|
||||||
|
<el-option label="OFB" value="OFB" />
|
||||||
|
<el-option label="OFB128" value="OFB128" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" class="text-center">
|
||||||
|
<el-form-item label="加密向量表">
|
||||||
|
<el-input v-model="collectionForm.decrypt_1.param.ivec" placeholder="请输入加密向量表" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="加密位数">
|
||||||
|
<el-select v-model="collectionForm.decrypt_1.bits" placeholder="选择加密位数">
|
||||||
|
<el-option label="128" value="128" />
|
||||||
|
<el-option label="192" value="192" />
|
||||||
|
<el-option label="256" value="256" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="collectionModelShow = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="editCollection">
|
||||||
|
确认
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { reactive, ref, onMounted, onUnmounted, computed, watch } from "vue"
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus"
|
||||||
|
import axios from "axios"
|
||||||
|
import config from '@renderer/util/config.js';
|
||||||
|
|
||||||
|
//上报策略
|
||||||
|
const uploadModeList = ref([
|
||||||
|
{ value: 'timer 10', link: 'timer 10' },
|
||||||
|
{ value: 'change 10', link: 'change 10' },
|
||||||
|
{ value: 'timer 10 || change 10', link: 'timer 10 || change 10' },
|
||||||
|
{ value: 'label LD200 up', link: 'label LD200 up' },
|
||||||
|
])
|
||||||
|
|
||||||
|
const querySearch = (queryString, cb) => {
|
||||||
|
const results = queryString
|
||||||
|
? uploadModeList.value.filter(createFilter(queryString))
|
||||||
|
: uploadModeList.value
|
||||||
|
// call callback function to return suggestions
|
||||||
|
cb(results)
|
||||||
|
}
|
||||||
|
const createFilter = (queryString) => {
|
||||||
|
return (restaurant) => {
|
||||||
|
return (
|
||||||
|
restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//北向任务列表(后面换请求获取)
|
||||||
|
const taskList = ref([
|
||||||
|
{
|
||||||
|
"dataId_entire": [
|
||||||
|
{
|
||||||
|
"equipId": "dev102",
|
||||||
|
"idInfo": [{ "id": "", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "as", "uploadMode": "timer 10 || change 10" }]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"taskId": "T1",
|
||||||
|
"taskType": "",
|
||||||
|
"uploadMode": "timer 1 || change 0.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId_entire": [
|
||||||
|
{
|
||||||
|
"equipId": "dev103",
|
||||||
|
"idInfo": [{ "id": "xc", "uploadMode": "" }]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"taskId": "T2",
|
||||||
|
"taskType": "",
|
||||||
|
"uploadMode": "timer 10 || change 1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId_entire": [],
|
||||||
|
"taskId": "T3",
|
||||||
|
"taskType": "",
|
||||||
|
"uploadMode": "timer 120 || change 0.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId_entire": [],
|
||||||
|
"taskId": "T4",
|
||||||
|
"taskType": "",
|
||||||
|
"uploadMode": "timer 120 || change 1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataId_entire": [],
|
||||||
|
"taskId": "T5",
|
||||||
|
"taskType": "",
|
||||||
|
"uploadMode": "timer 120 || change 3"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
const platConfigTableRef = ref();
|
||||||
|
const deviceDataTableRef = ref();
|
||||||
|
const tabelBox = ref(884)
|
||||||
|
const platConfigList = ref([])
|
||||||
|
// const platConfigList = ref([
|
||||||
|
// {
|
||||||
|
// // 平台IP地址
|
||||||
|
// "PlatformIp": "",
|
||||||
|
// // 任务列表
|
||||||
|
// "tasks": [
|
||||||
|
// "T1",
|
||||||
|
// "T2",
|
||||||
|
// "T3",
|
||||||
|
// "T4",
|
||||||
|
// "T5"
|
||||||
|
// ],
|
||||||
|
// // 平台类型
|
||||||
|
// "type": "",
|
||||||
|
// // MQTT配置
|
||||||
|
// "mqtt": {
|
||||||
|
// // MQTT用户名
|
||||||
|
// "user": "",
|
||||||
|
// // MQTT密码
|
||||||
|
// "passwd": "",
|
||||||
|
// // 是否使用SSL
|
||||||
|
// "isUseSsl": false,
|
||||||
|
// // 是否使用SSL配置
|
||||||
|
// "isUseSslConf": false,
|
||||||
|
// // SSL配置
|
||||||
|
// "sslConf": {
|
||||||
|
// // 本地证书文件
|
||||||
|
// "localCertificate_file": "/etc/custom/sslConf/pupu_core_3501000001.pem",
|
||||||
|
// // 私钥文件
|
||||||
|
// "privateKey_file": "/etc/custom/sslConf/pupu_core_3501000001.prv"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// // 推送配置
|
||||||
|
// "pushConf": {
|
||||||
|
// // 是否运行推送
|
||||||
|
// "isRun": true,
|
||||||
|
// // 是否使用断点续传
|
||||||
|
// "isUseResumeBrokenTransfer": false,
|
||||||
|
// // 断点续传配置
|
||||||
|
// "broken": {
|
||||||
|
// // 续传间隔时间(毫秒)
|
||||||
|
// "resume": {
|
||||||
|
// "intervalTime_ms": 1000
|
||||||
|
// },
|
||||||
|
// // 过滤配置
|
||||||
|
// "filter": {
|
||||||
|
// // 过滤时间窗口(秒)
|
||||||
|
// "filter_s": 600,
|
||||||
|
// // 相关任务ID列表
|
||||||
|
// "relevanceTaskId": [
|
||||||
|
// "T1",
|
||||||
|
// "T2",
|
||||||
|
// "T3",
|
||||||
|
// "T4",
|
||||||
|
// "T5"
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// // 加密解密配置
|
||||||
|
// "encrypt_decrypt": {
|
||||||
|
// // 加密配置
|
||||||
|
// "encrypt_1": {
|
||||||
|
// // 加密算法
|
||||||
|
// "algorithm": "AES",
|
||||||
|
// // 加密参数
|
||||||
|
// "param": {
|
||||||
|
// "mode": "CBC",
|
||||||
|
// "key": "0123456789abcdef",
|
||||||
|
// "ivec": "0123456789abcdef",
|
||||||
|
// "bits": 128
|
||||||
|
// },
|
||||||
|
// // 是否启用加密
|
||||||
|
// "enable": false
|
||||||
|
// },
|
||||||
|
// // 解密配置
|
||||||
|
// "decrypt_1": {
|
||||||
|
// // 解密算法
|
||||||
|
// "algorithm": "AES",
|
||||||
|
// // 解密参数
|
||||||
|
// "param": {
|
||||||
|
// "mode": "CBC",
|
||||||
|
// "key": "0123456789abcdef",
|
||||||
|
// "ivec": "0123456789abcdef",
|
||||||
|
// "bits": 128
|
||||||
|
// },
|
||||||
|
// // 是否启用解密
|
||||||
|
// "enable": false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
const activeTaskIndex = ref(0);
|
||||||
|
|
||||||
|
const uploadType = ref([
|
||||||
|
{ label: 'DT-MQTT-DEFAULT', value: 'DT-MQTT-DEFAULT'},
|
||||||
|
{ label: 'DT-MQTT-DEBUG', value: 'DT-MQTT-DEBUG'},
|
||||||
|
{ label: 'HN-MQTT-BJ', value: 'HN-MQTT-BJ'},
|
||||||
|
{ label: 'SC-MQTT-DEFAULT', value: 'SC-MQTT-DEFAULT'},
|
||||||
|
{ label: 'WG-MQTT-PuPu', value: 'WG-MQTT-PuPu'},
|
||||||
|
{ label: 'WG-MQTT-TengSheng', value: 'WG-MQTT-TengSheng'},
|
||||||
|
])
|
||||||
|
//新增配置
|
||||||
|
const addDeviceConfig = () => {
|
||||||
|
let newDeviceConfig = {
|
||||||
|
"PlatformIp": "",
|
||||||
|
"tasks": ["T1", "T2", "T3", "T4", "T5"],
|
||||||
|
"type": "",
|
||||||
|
"mqtt": {
|
||||||
|
"user": "",
|
||||||
|
"passwd": "",
|
||||||
|
"isUseSsl": false,
|
||||||
|
"isUseSslConf": false,
|
||||||
|
"sslConf": {
|
||||||
|
"localCertificate_file": "/etc/custom/sslConf/pupu_core_3501000001.pem",
|
||||||
|
"privateKey_file": "/etc/custom/sslConf/pupu_core_3501000001.prv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pushConf": {
|
||||||
|
"isRun": true,
|
||||||
|
"isUseResumeBrokenTransfer": false,
|
||||||
|
"broken": {
|
||||||
|
"resume": { "intervalTime_ms": 1000 },
|
||||||
|
"filter": {
|
||||||
|
"filter_s": 600,
|
||||||
|
"relevanceTaskId": ["T1", "T2", "T3", "T4", "T5"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"encrypt_decrypt": {
|
||||||
|
"encrypt_1": {
|
||||||
|
"algorithm": "AES",
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"decrypt_1": {
|
||||||
|
"algorithm": "AES",
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
console.log("platConfigList.value",platConfigTableRef.value)
|
||||||
|
platConfigList.value.push(newDeviceConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除配置
|
||||||
|
const delDeviceConfig = (index) => {
|
||||||
|
console.log("当前点击的行号", index);
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'确认要删除该设备配置吗?',
|
||||||
|
'告警',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
platConfigList.value.splice(index, 1);
|
||||||
|
ElMessage({
|
||||||
|
type: 'success',
|
||||||
|
message: '删除成功',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDeviceConfig = () => {
|
||||||
|
console.log('获取配置')
|
||||||
|
axios
|
||||||
|
.get(config.url + '/config/platform/query', {})
|
||||||
|
.then(response => {
|
||||||
|
// 成功响应后的处理
|
||||||
|
console.log(response); // 打印响应数据
|
||||||
|
if (response.data.code == 0) {
|
||||||
|
//缓存上下行主题
|
||||||
|
platConfigList.value = response.data.data.PlatformPar || [];
|
||||||
|
if(!platConfigList.value.length){
|
||||||
|
addDeviceConfig()
|
||||||
|
}
|
||||||
|
// if(platConfigList.value.length){
|
||||||
|
// if(platConfigList.value.length>ActiveRowIndex.value){
|
||||||
|
// activeDeviceConfig.value = platConfigList.value[ActiveRowIndex.value];
|
||||||
|
// }else{
|
||||||
|
// activeDeviceConfig.value = platConfigList.value[0];
|
||||||
|
// }
|
||||||
|
// }else{
|
||||||
|
// addDeviceConfig()
|
||||||
|
// }
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ElMessage.error(response.data.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// 错误处理
|
||||||
|
console.error(error); // 打印错误信息
|
||||||
|
ElMessage.error(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const setDeviceConfig = () => {
|
||||||
|
console.log('提交配置',platConfigList.value)
|
||||||
|
axios
|
||||||
|
.post(config.url + '/config/platform/add', {PlatformPar: platConfigList.value})
|
||||||
|
.then(response => {
|
||||||
|
// 成功响应后的处理
|
||||||
|
console.log(response); // 打印响应数据
|
||||||
|
if (response.data.code == 0) {
|
||||||
|
ElMessage.success('保存成功');
|
||||||
|
} else {
|
||||||
|
ElMessage.error(response.data.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// 错误处理
|
||||||
|
console.error(error); // 打印错误信息
|
||||||
|
ElMessage.error(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//当选中索引
|
||||||
|
const ActiveRowIndex = ref(0);
|
||||||
|
|
||||||
|
const collectionModelShow = ref(false);
|
||||||
|
const collectionRef = ref();
|
||||||
|
const collectionForm = ref({
|
||||||
|
// 加密配置
|
||||||
|
"encrypt_1": {
|
||||||
|
// 加密算法
|
||||||
|
"algorithm": "AES",
|
||||||
|
// 加密参数
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
// 是否启用加密
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
// 解密配置
|
||||||
|
"decrypt_1": {
|
||||||
|
// 解密算法
|
||||||
|
"algorithm": "AES",
|
||||||
|
// 解密参数
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
// 是否启用解密
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
//打开采集配置弹窗
|
||||||
|
const openCollectionModel = (row) => {
|
||||||
|
console.log("当前采集",row)
|
||||||
|
collectionForm.value = {
|
||||||
|
"encrypt_1": row.encrypt_decrypt.encrypt_1,
|
||||||
|
"decrypt_1": row.encrypt_decrypt.decrypt_1
|
||||||
|
};
|
||||||
|
collectionModelShow.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const editCollection = () => {
|
||||||
|
platConfigList.value[ActiveRowIndex.value].encrypt_decrypt.encrypt_1 = collectionForm.value.encrypt_1;
|
||||||
|
platConfigList.value[ActiveRowIndex.value].encrypt_decrypt.decrypt_1 = collectionForm.value.decrypt_1;
|
||||||
|
collectionModelShow.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const activeDeviceConfig = ref({
|
||||||
|
"PlatformIp": "",
|
||||||
|
"tasks": ["T1", "T2", "T3", "T4", "T5"],
|
||||||
|
"type": "",
|
||||||
|
"mqtt": {
|
||||||
|
"user": "",
|
||||||
|
"passwd": "",
|
||||||
|
"isUseSsl": false,
|
||||||
|
"isUseSslConf": false,
|
||||||
|
"sslConf": {
|
||||||
|
"localCertificate_file": "/etc/custom/sslConf/pupu_core_3501000001.pem",
|
||||||
|
"privateKey_file": "/etc/custom/sslConf/pupu_core_3501000001.prv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pushConf": {
|
||||||
|
"isRun": true,
|
||||||
|
"isUseResumeBrokenTransfer": false,
|
||||||
|
"broken": {
|
||||||
|
"resume": { "intervalTime_ms": 1000 },
|
||||||
|
"filter": {
|
||||||
|
"filter_s": 600,
|
||||||
|
"relevanceTaskId": ["T1", "T2", "T3", "T4", "T5"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"encrypt_decrypt": {
|
||||||
|
"encrypt_1": {
|
||||||
|
"algorithm": "AES",
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"decrypt_1": {
|
||||||
|
"algorithm": "AES",
|
||||||
|
"param": {
|
||||||
|
"mode": "CBC",
|
||||||
|
"key": "0123456789abcdef",
|
||||||
|
"ivec": "0123456789abcdef",
|
||||||
|
"bits": 128
|
||||||
|
},
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => ({ ...activeDeviceConfig.value }),
|
||||||
|
(newVal) => {
|
||||||
|
// console.log("数据变化",newVal)
|
||||||
|
platConfigList.value[ActiveRowIndex.value] = newVal;
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// const saveDeviceDataConfig = () => {
|
||||||
|
// platConfigList.value[ActiveRowIndex.value] = activeDeviceConfig.value;
|
||||||
|
// }
|
||||||
|
const tableRowClassName = ({ row, rowIndex }) => {
|
||||||
|
if (rowIndex === ActiveRowIndex.value) {
|
||||||
|
return 'selected-row';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
};
|
||||||
|
|
||||||
|
//选择设备配置
|
||||||
|
const taskConfigClick = (e) => {
|
||||||
|
console.log(`current page:`,e)
|
||||||
|
activeDeviceConfig.value = e;
|
||||||
|
platConfigTableRef.value.toggleRowSelection(e);
|
||||||
|
|
||||||
|
ActiveRowIndex.value = platConfigList.value.indexOf(e);
|
||||||
|
// e.isDoubleClicked = !e.isDoubleClicked;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//更新表格宽度
|
||||||
|
const handleResize = () => {
|
||||||
|
deviceDataTableRef.value.doLayout();
|
||||||
|
tabelBox.value = window.innerWidth - 180 - 10 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('resize', handleResize);
|
||||||
|
getDeviceConfig()
|
||||||
|
// if(platConfigList.value[0]){
|
||||||
|
// activeDeviceConfig.value = platConfigList.value[0];
|
||||||
|
// platConfigTableRef.value.toggleRowSelection(platConfigList.value[0]);
|
||||||
|
// ActiveRowIndex.value = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
});
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('resize', handleResize);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.el-table .double-clicked-row {
|
||||||
|
background-color: #f0f9eb;
|
||||||
|
}
|
||||||
|
:deep(.el-table .el-scrollbar) {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
#southdirection-box{
|
||||||
|
height: 100%;
|
||||||
|
.btn-list{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
.plat-config{
|
||||||
|
position: relative;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.data-config{
|
||||||
|
position: relative;
|
||||||
|
height: calc(100% - 278px - 226px);
|
||||||
|
.table-box{
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 120px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table-box{
|
||||||
|
//position: absolute;
|
||||||
|
//width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.selected-row {
|
||||||
|
background-color: #55e800;
|
||||||
|
}
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
|
@ -43,7 +43,7 @@
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="断路器3p、4p">
|
<el-tab-pane label="断路器3p、4p">
|
||||||
<div class="electrical-parameters-list">
|
<div class="electrical-parameters-list switch34">
|
||||||
<div v-for="item in electricalParametersList" :key="item.id" class="electrical-parameters-item">
|
<div v-for="item in electricalParametersList" :key="item.id" class="electrical-parameters-item">
|
||||||
<div class="electrical-parameters-icon">
|
<div class="electrical-parameters-icon">
|
||||||
<i class="iconfont icon-icon_duanluqi"></i>
|
<i class="iconfont icon-icon_duanluqi"></i>
|
||||||
|
@ -244,49 +244,9 @@ const swich1p2pAttrList = [
|
||||||
];
|
];
|
||||||
|
|
||||||
const swich3p4pAttrList = [
|
const swich3p4pAttrList = [
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: '电网频率',
|
|
||||||
startValue: 50004,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '', // 应该是实际读取的数值
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: 'Hz',
|
|
||||||
accuracy: 0.01
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: '漏电流',
|
|
||||||
startValue: 50005,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: 'mA',
|
|
||||||
accuracy: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: 'N相进线温度',
|
|
||||||
startValue: 50006,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
name: 'N相出线温度',
|
|
||||||
startValue: 50007,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
name: 'L/A相电压',
|
name: 'A相电压',
|
||||||
startValue: 50008,
|
startValue: 50008,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -296,7 +256,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 6,
|
id: 6,
|
||||||
name: 'L/A相电流',
|
name: 'A相电流',
|
||||||
startValue: 50009,
|
startValue: 50009,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -306,7 +266,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
name: 'L/A相有功功率',
|
name: 'A相有功功率',
|
||||||
startValue: 50010,
|
startValue: 50010,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -316,7 +276,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 8,
|
id: 8,
|
||||||
name: 'L/A相无功功率',
|
name: 'A相无功功率',
|
||||||
startValue: 50011,
|
startValue: 50011,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -326,7 +286,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 9,
|
id: 9,
|
||||||
name: 'L/A相视在功率',
|
name: 'A相视在功率',
|
||||||
startValue: 50012,
|
startValue: 50012,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -336,7 +296,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 10,
|
id: 10,
|
||||||
name: 'L/A相功率因数',
|
name: 'A相功率因数',
|
||||||
startValue: 50013,
|
startValue: 50013,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -344,26 +304,7 @@ const swich3p4pAttrList = [
|
||||||
unit: '',
|
unit: '',
|
||||||
accuracy: 0.001
|
accuracy: 0.001
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 15,
|
|
||||||
name: 'L/A相进线温度',
|
|
||||||
startValue: 50018,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 16,
|
|
||||||
name: 'L/A相出线温度',
|
|
||||||
startValue: 50019,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 17,
|
id: 17,
|
||||||
name: 'B相电压',
|
name: 'B相电压',
|
||||||
|
@ -424,26 +365,6 @@ const swich3p4pAttrList = [
|
||||||
unit: '',
|
unit: '',
|
||||||
accuracy: 0.001
|
accuracy: 0.001
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 27,
|
|
||||||
name: 'B相进线温度',
|
|
||||||
startValue: 50030,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 28,
|
|
||||||
name: 'B相出线温度',
|
|
||||||
startValue: 50031,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 29,
|
id: 29,
|
||||||
name: 'C相电压',
|
name: 'C相电压',
|
||||||
|
@ -504,26 +425,6 @@ const swich3p4pAttrList = [
|
||||||
unit: '',
|
unit: '',
|
||||||
accuracy: 0.001
|
accuracy: 0.001
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 39,
|
|
||||||
name: 'C相进线温度',
|
|
||||||
startValue: 50042,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 40,
|
|
||||||
name: 'C相出线温度',
|
|
||||||
startValue: 50043,
|
|
||||||
lengthValue: 1,
|
|
||||||
value: '',
|
|
||||||
dataType: 'uint32_t',
|
|
||||||
unit: '°C',
|
|
||||||
accuracy: 0.1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 41,
|
id: 41,
|
||||||
name: '合相电压',
|
name: '合相电压',
|
||||||
|
@ -536,7 +437,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 42,
|
id: 42,
|
||||||
name: '剩余电流',
|
name: '合相电流',
|
||||||
startValue: 50045,
|
startValue: 50045,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -566,7 +467,7 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 45,
|
id: 45,
|
||||||
name: 'RMS合相视在功率',
|
name: '合相视在功率',
|
||||||
startValue: 50048,
|
startValue: 50048,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -576,14 +477,119 @@ const swich3p4pAttrList = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 46,
|
id: 46,
|
||||||
name: 'RMS合相功率因数',
|
name: '合相功率因数',
|
||||||
startValue: 50049,
|
startValue: 50049,
|
||||||
lengthValue: 1,
|
lengthValue: 1,
|
||||||
value: '',
|
value: '',
|
||||||
dataType: 'uint32_t',
|
dataType: 'uint32_t',
|
||||||
unit: '',
|
unit: '',
|
||||||
accuracy: 0.001
|
accuracy: 0.001
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: '漏电流',
|
||||||
|
startValue: 50005,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: 'mA',
|
||||||
|
accuracy: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: '电网频率',
|
||||||
|
startValue: 50004,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '', // 应该是实际读取的数值
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: 'Hz',
|
||||||
|
accuracy: 0.01
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 15,
|
||||||
|
name: 'A相进线温度',
|
||||||
|
startValue: 50018,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 16,
|
||||||
|
name: 'A相出线温度',
|
||||||
|
startValue: 50019,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 27,
|
||||||
|
name: 'B相进线温度',
|
||||||
|
startValue: 50030,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 28,
|
||||||
|
name: 'B相出线温度',
|
||||||
|
startValue: 50031,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 39,
|
||||||
|
name: 'C相进线温度',
|
||||||
|
startValue: 50042,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 40,
|
||||||
|
name: 'C相出线温度',
|
||||||
|
startValue: 50043,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'N相进线温度',
|
||||||
|
startValue: 50006,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'N相出线温度',
|
||||||
|
startValue: 50007,
|
||||||
|
lengthValue: 1,
|
||||||
|
value: '',
|
||||||
|
dataType: 'uint32_t',
|
||||||
|
unit: '°C',
|
||||||
|
accuracy: 0.1
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const electricalParametersList = ref([]);
|
const electricalParametersList = ref([]);
|
||||||
|
@ -1082,6 +1088,11 @@ onUnmounted(() => {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.switch34{
|
||||||
|
.electrical-parameters-item{
|
||||||
|
width: calc(16% - 20px);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.electrical-parameters-calibrate-list {
|
.electrical-parameters-calibrate-list {
|
||||||
.electrical-parameters-item {
|
.electrical-parameters-item {
|
||||||
|
|
63
yarn.lock
63
yarn.lock
|
@ -923,6 +923,11 @@ acorn@^8.9.0:
|
||||||
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
|
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
|
||||||
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
|
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
|
||||||
|
|
||||||
|
adler-32@~1.3.0:
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
|
||||||
|
integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
|
||||||
|
|
||||||
agent-base@6:
|
agent-base@6:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||||
|
@ -1224,6 +1229,14 @@ caniuse-lite@^1.0.30001629:
|
||||||
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz#32c467d4bf1f1a0faa63fc793c2ba81169e7652f"
|
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz#32c467d4bf1f1a0faa63fc793c2ba81169e7652f"
|
||||||
integrity sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==
|
integrity sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==
|
||||||
|
|
||||||
|
cfb@~1.2.1:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44"
|
||||||
|
integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==
|
||||||
|
dependencies:
|
||||||
|
adler-32 "~1.3.0"
|
||||||
|
crc-32 "~1.2.0"
|
||||||
|
|
||||||
chalk@^2.4.2:
|
chalk@^2.4.2:
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||||
|
@ -1295,6 +1308,11 @@ clone-response@^1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
mimic-response "^1.0.0"
|
mimic-response "^1.0.0"
|
||||||
|
|
||||||
|
codepage@~1.15.0:
|
||||||
|
version "1.15.0"
|
||||||
|
resolved "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab"
|
||||||
|
integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
|
@ -1366,6 +1384,11 @@ core-util-is@1.0.2:
|
||||||
resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
|
integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
|
||||||
|
|
||||||
|
crc-32@~1.2.0, crc-32@~1.2.1:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
|
||||||
|
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
|
||||||
|
|
||||||
crc@^3.8.0:
|
crc@^3.8.0:
|
||||||
version "3.8.0"
|
version "3.8.0"
|
||||||
resolved "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
|
resolved "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
|
||||||
|
@ -1889,6 +1912,11 @@ file-entry-cache@^6.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
flat-cache "^3.0.4"
|
flat-cache "^3.0.4"
|
||||||
|
|
||||||
|
file-saver@^2.0.5:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38"
|
||||||
|
integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
|
||||||
|
|
||||||
filelist@^1.0.4:
|
filelist@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
||||||
|
@ -1947,6 +1975,11 @@ form-data@^4.0.0:
|
||||||
combined-stream "^1.0.8"
|
combined-stream "^1.0.8"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
|
frac@~1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b"
|
||||||
|
integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==
|
||||||
|
|
||||||
fs-extra@^10.0.0, fs-extra@^10.1.0:
|
fs-extra@^10.0.0, fs-extra@^10.1.0:
|
||||||
version "10.1.0"
|
version "10.1.0"
|
||||||
resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||||
|
@ -3083,6 +3116,13 @@ sprintf-js@^1.1.2:
|
||||||
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
|
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
|
||||||
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
||||||
|
|
||||||
|
ssf@~0.11.2:
|
||||||
|
version "0.11.2"
|
||||||
|
resolved "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c"
|
||||||
|
integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==
|
||||||
|
dependencies:
|
||||||
|
frac "~1.1.2"
|
||||||
|
|
||||||
stat-mode@^1.0.0:
|
stat-mode@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmmirror.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
|
resolved "https://registry.npmmirror.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
|
||||||
|
@ -3361,11 +3401,21 @@ which@^2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
|
wmf@~1.0.1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da"
|
||||||
|
integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==
|
||||||
|
|
||||||
word-wrap@^1.2.5:
|
word-wrap@^1.2.5:
|
||||||
version "1.2.5"
|
version "1.2.5"
|
||||||
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
||||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||||
|
|
||||||
|
word@~0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.npmmirror.com/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961"
|
||||||
|
integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==
|
||||||
|
|
||||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
|
@ -3398,6 +3448,19 @@ wrappy@1:
|
||||||
resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||||
|
|
||||||
|
xlsx@^0.18.5:
|
||||||
|
version "0.18.5"
|
||||||
|
resolved "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0"
|
||||||
|
integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==
|
||||||
|
dependencies:
|
||||||
|
adler-32 "~1.3.0"
|
||||||
|
cfb "~1.2.1"
|
||||||
|
codepage "~1.15.0"
|
||||||
|
crc-32 "~1.2.1"
|
||||||
|
ssf "~0.11.2"
|
||||||
|
wmf "~1.0.1"
|
||||||
|
word "~0.3.0"
|
||||||
|
|
||||||
xml-name-validator@^4.0.0:
|
xml-name-validator@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
|
resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
|
||||||
|
|
Loading…
Reference in New Issue