fix(compiler): 格式化代码

This commit is contained in:
fhysy 2024-12-13 16:48:08 +08:00
parent c641ad14bc
commit e40b901205
7 changed files with 919 additions and 759 deletions

4
.gitignore vendored
View File

@ -1,7 +1,7 @@
.DS_Store .DS_Store
node_modules node_modules
/dist /dist
yarn.lock
# local env files # local env files
.env.local .env.local
@ -21,4 +21,4 @@ pnpm-debug.log*
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
!/yarn.lock

View File

@ -32,6 +32,7 @@
"xlsx": "^0.18.5" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^8.18.0",
"@vitejs/plugin-vue": "^4.1.0", "@vitejs/plugin-vue": "^4.1.0",
"@vue/compiler-sfc": "^3.2.47", "@vue/compiler-sfc": "^3.2.47",
"eslint": "^8.38.0", "eslint": "^8.38.0",

View File

@ -4,8 +4,8 @@
<LockScreen v-if="themeConfig.isLockScreen" /> <LockScreen v-if="themeConfig.isLockScreen" />
<Setings ref="setingsRef" v-show="setLockScreen" /> <Setings ref="setingsRef" v-show="setLockScreen" />
<CloseFull v-if="!themeConfig.isLockScreen" /> <CloseFull v-if="!themeConfig.isLockScreen" />
<!-- <Upgrade v-if="getVersion" />--> <!-- <Upgrade v-if="getVersion" />-->
<!-- <Sponsors />--> <!-- <Sponsors />-->
</el-config-provider> </el-config-provider>
</template> </template>

View File

@ -32,7 +32,7 @@
</div> </div>
</div> </div>
<div class="data-config"> <div class="data-config">
<h2>数据源配置 {{ activeDeviceConfig.equipId || '' }}</h2> <h2>数据源配置 {{ activeDeviceConfig.equipId || '' }}</h2>
<div class="btn-list"> <div class="btn-list">
<div class="btn-list-left"></div> <div class="btn-list-left"></div>
<div class="btn-list-right"> <div class="btn-list-right">
@ -40,7 +40,15 @@
</div> </div>
</div> </div>
<div class="table-box"> <div class="table-box">
<el-table ref="deviceDataTableRef" :data="activeDeviceConfig.result" border size="small" height="100%" :style="{ width: tabelBox + 'px' }" empty-text="配置为空"> <el-table
ref="deviceDataTableRef"
:data="activeDeviceConfig.result"
border
size="small"
height="100%"
:style="{ width: tabelBox + 'px' }"
empty-text="配置为空"
>
<el-table-column type="index" label="序号" align="center" width="60" fixed /> <el-table-column type="index" label="序号" align="center" width="60" fixed />
<el-table-column prop="id" label="设备ID_数据ID" align="center"> <el-table-column prop="id" label="设备ID_数据ID" align="center">
<template #default="scope"> <template #default="scope">
@ -51,11 +59,11 @@
<el-table-column prop="dataValue" label="当前值" align="center" /> <el-table-column prop="dataValue" label="当前值" align="center" />
<el-table-column prop="dataUnit" label="单位" align="center" /> <el-table-column prop="dataUnit" label="单位" align="center" />
<el-table-column prop="time" label="时间" align="center" /> <el-table-column prop="time" label="时间" align="center" />
<!-- <el-table-column label="操作" width="55" fixed="right" align="center">--> <!-- <el-table-column label="操作" width="55" fixed="right" align="center">-->
<!-- <template #default="scope">--> <!-- <template #default="scope">-->
<!-- <el-button link type="danger" size="small" @click.stop="delDeviceDataConfig(scope.$index)">删除</el-button>--> <!-- <el-button link type="danger" size="small" @click.stop="delDeviceDataConfig(scope.$index)">删除</el-button>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
</el-table> </el-table>
</div> </div>
</div> </div>
@ -65,12 +73,7 @@
<script setup> <script setup>
import { ref, onMounted, onUnmounted } from 'vue'; import { ref, onMounted, onUnmounted } from 'vue';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { import { endDeviceCollect, getDeviceCollectli, getDeviceEquipli, startDeviceCollect } from '/@/api/gateway/collectdatamonitor';
endDeviceCollect,
getDeviceCollectli,
getDeviceEquipli,
startDeviceCollect
} from "/@/api/gateway/collectdatamonitor";
const deviceConfigTableRef = ref(); const deviceConfigTableRef = ref();
const deviceDataTableRef = ref(); const deviceDataTableRef = ref();
@ -83,27 +86,27 @@ const ActiveRowIndex = ref(0);
const activeDeviceConfig = ref({ const activeDeviceConfig = ref({
equipId: '', equipId: '',
status: false, status: false,
result: [] result: [],
}); });
const getDeviceDataList = id => { const getDeviceDataList = (id) => {
// console.log('') // console.log('')
getDeviceCollectli(id) getDeviceCollectli(id)
.then(response => { .then((response) => {
// //
if (response.code == 0) { if (response.code == 0) {
// //
activeDeviceConfig.value = { activeDeviceConfig.value = {
equipId: response.data.equipId || '', equipId: response.data.equipId || '',
status: response.data.status || false, status: response.data.status || false,
result: response.data.result || [] result: response.data.result || [],
}; };
// activeDeviceResult.value = response.data.result || [] // activeDeviceResult.value = response.data.result || []
} else { } else {
ElMessage.error(response.message); ElMessage.error(response.message);
} }
}) })
.catch(error => { .catch((error) => {
// //
console.error(error); // console.error(error); //
ElMessage.error(error); ElMessage.error(error);
@ -112,8 +115,8 @@ const getDeviceDataList = id => {
const getDeviceList = () => { const getDeviceList = () => {
// console.log('') // console.log('')
getDeviceEquipli({}) getDeviceEquipli({})
.then(response => { .then((response) => {
// //
if (response.code == 0) { if (response.code == 0) {
// //
@ -126,7 +129,7 @@ const getDeviceList = () => {
activeDeviceConfig.value = { activeDeviceConfig.value = {
equipId: '', equipId: '',
starus: false, starus: false,
result: [] result: [],
}; };
// activeDeviceResult.value = [] // activeDeviceResult.value = []
} }
@ -134,7 +137,7 @@ const getDeviceList = () => {
ElMessage.error(response.message); ElMessage.error(response.message);
} }
}) })
.catch(error => { .catch((error) => {
// //
console.error(error); // console.error(error); //
ElMessage.error(error); ElMessage.error(error);
@ -145,65 +148,67 @@ const getDeviceConfig = () => {
getDeviceDataList(deviceList.value[ActiveRowIndex.value].equipId); getDeviceDataList(deviceList.value[ActiveRowIndex.value].equipId);
}; };
const handleBeforeChange = index => { const handleBeforeChange = (index) => {
console.log('e', index); console.log('e', index);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let deviceObj = deviceList.value[index]; let deviceObj = deviceList.value[index];
console.log('deviceObj', deviceObj.status); console.log('deviceObj', deviceObj.status);
if (deviceObj.status) { if (deviceObj.status) {
endDeviceCollect(deviceObj.equipId).then(response => { endDeviceCollect(deviceObj.equipId)
console.log('response', response); .then((response) => {
if (response.code === 0) { console.log('response', response);
// ok if (response.code === 0) {
if (deviceObj.status) { // ok
ElMessage.success('关闭成功'); if (deviceObj.status) {
} else { ElMessage.success('关闭成功');
ElMessage.success('开启成功'); } else {
} ElMessage.success('开启成功');
deviceList.value[index].status = !deviceList.value[index].status; }
getDeviceList(); deviceList.value[index].status = !deviceList.value[index].status;
resolve(); getDeviceList();
} else { resolve();
// ok } else {
ElMessage.error(response.message); // ok
reject(); ElMessage.error(response.message);
} reject();
}) }
.catch(error => { })
// .catch((error) => {
ElMessage.error(error.data.message); //
reject(); ElMessage.error(error.data.message);
}); reject();
}else{ });
startDeviceCollect(deviceObj.equipId).then(response => { } else {
console.log('response', response); startDeviceCollect(deviceObj.equipId)
if (response.code === 0) { .then((response) => {
// ok console.log('response', response);
if (deviceObj.status) { if (response.code === 0) {
ElMessage.success('关闭成功'); // ok
} else { if (deviceObj.status) {
ElMessage.success('开启成功'); ElMessage.success('关闭成功');
} } else {
deviceList.value[index].status = !deviceList.value[index].status; ElMessage.success('开启成功');
getDeviceList(); }
resolve(); deviceList.value[index].status = !deviceList.value[index].status;
} else { getDeviceList();
// ok resolve();
ElMessage.error(response.message); } else {
reject(); // ok
} ElMessage.error(response.message);
}) reject();
.catch(error => { }
// })
ElMessage.error(error.data.message); .catch((error) => {
reject(); //
}); ElMessage.error(error.data.message);
} reject();
});
}
}); });
}; };
// //
const deviceConfigClick = e => { const deviceConfigClick = (e) => {
getDeviceDataList(e.equipId); getDeviceDataList(e.equipId);
deviceConfigTableRef.value.toggleRowSelection(e); deviceConfigTableRef.value.toggleRowSelection(e);
ActiveRowIndex.value = deviceList.value.indexOf(e); ActiveRowIndex.value = deviceList.value.indexOf(e);
@ -233,8 +238,8 @@ onUnmounted(() => {
background: #fff; background: #fff;
} }
#southdirection-box { #southdirection-box {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
.btn-list { .btn-list {
display: flex; display: flex;

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,7 @@
</div> </div>
</div> </div>
<div class="data-config"> <div class="data-config">
<h2>数据源配置 {{activeDeviceConfig.equipId}}</h2> <h2>数据源配置 {{ activeDeviceConfig.equipId }}</h2>
<div class="btn-list"> <div class="btn-list">
<div class="btn-list-left"> <div class="btn-list-left">
<el-button type="primary" @click="addDeviceDataConfig">新增配置</el-button> <el-button type="primary" @click="addDeviceDataConfig">新增配置</el-button>
@ -78,7 +78,15 @@
</div> </div>
</div> </div>
<div class="table-box"> <div class="table-box">
<el-table ref="deviceDataTableRef" :data="activeDeviceConfig.properties" border size="small" height="100%" :style="{ width: tabelBox + 'px' }" empty-text="配置为空"> <el-table
ref="deviceDataTableRef"
:data="activeDeviceConfig.properties"
border
size="small"
height="100%"
:style="{ width: tabelBox + 'px' }"
empty-text="配置为空"
>
<el-table-column type="index" label="序号" align="center" width="60" fixed /> <el-table-column type="index" label="序号" align="center" width="60" fixed />
<el-table-column prop="id" label="数据ID" fixed align="center"> <el-table-column prop="id" label="数据ID" fixed align="center">
<template #default="scope"> <template #default="scope">
@ -209,7 +217,13 @@
<!-- <el-select v-model="scope.row.uploadMode" placeholder="请选择上报策略">--> <!-- <el-select v-model="scope.row.uploadMode" placeholder="请选择上报策略">-->
<!-- <el-option :value="item.uploadMode" v-for="(item,index) in taskList" :key="index" :label="item.uploadMode"></el-option>--> <!-- <el-option :value="item.uploadMode" v-for="(item,index) in taskList" :key="index" :label="item.uploadMode"></el-option>-->
<!-- </el-select>--> <!-- </el-select>-->
<el-autocomplete v-model="scope.row.uploadMode" :fetch-suggestions="querySearch" clearable class="inline-input w-50" placeholder="请选择上报策略" /> <el-autocomplete
v-model="scope.row.uploadMode"
:fetch-suggestions="querySearch"
clearable
class="inline-input w-50"
placeholder="请选择上报策略"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="55" fixed="right" align="center"> <el-table-column label="操作" width="55" fixed="right" align="center">
@ -349,7 +363,7 @@ import { guidGenerator } from '/@/utils/function.js';
import FileSaver from 'file-saver'; import FileSaver from 'file-saver';
import * as XLSX from 'xlsx'; import * as XLSX from 'xlsx';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import {getDeviceConf, getSerialPortDataList, setDeviceConf} from "/@/api/gateway/southdirection"; import { getDeviceConf, getSerialPortDataList, setDeviceConf } from '/@/api/gateway/southdirection';
const dataTypeArray = ref([ const dataTypeArray = ref([
{ type: 'bool', datalen: 1, show: false }, { type: 'bool', datalen: 1, show: false },
@ -380,7 +394,7 @@ const dataTypeArray = ref([
{ type: 'uint32_ABCD', datalen: 4, show: false }, { type: 'uint32_ABCD', datalen: 4, show: false },
{ type: 'uint32_BADC', datalen: 4, show: false }, { type: 'uint32_BADC', datalen: 4, show: false },
{ type: 'uint32_CDAB', datalen: 4, show: false }, { type: 'uint32_CDAB', datalen: 4, show: false },
{ type: 'uint32_DCBA', datalen: 4, show: false } { type: 'uint32_DCBA', datalen: 4, show: false },
]); ]);
// //
@ -388,15 +402,15 @@ const uploadModeList = ref([
{ value: 'timer 10', link: 'timer 10' }, { value: 'timer 10', link: 'timer 10' },
{ value: 'change 10', link: 'change 10' }, { value: 'change 10', link: 'change 10' },
{ value: 'timer 10 || change 10', link: 'timer 10 || change 10' }, { value: 'timer 10 || change 10', link: 'timer 10 || change 10' },
{ value: 'label LD200 up', link: 'label LD200 up' } { value: 'label LD200 up', link: 'label LD200 up' },
]); ]);
const querySearch = (queryString, cb) => { const querySearch = (queryString, cb) => {
const results = queryString ? uploadModeList.value.filter(createFilter(queryString)) : uploadModeList.value; const results = queryString ? uploadModeList.value.filter(createFilter(queryString)) : uploadModeList.value;
cb(results); cb(results);
}; };
const createFilter = queryString => { const createFilter = (queryString) => {
return restaurant => { return (restaurant) => {
return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0; return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
}; };
}; };
@ -409,8 +423,8 @@ const deviceConfigList = ref([]);
const protocolList = ref([ const protocolList = ref([
{ label: 'ModbusTCP', value: 'ModbusTCP' }, { label: 'ModbusTCP', value: 'ModbusTCP' },
{ label: 'DLT645_2007', value: 'DLT645_2007' }, { label: 'DLT645_2007', value: 'DLT645_2007' },
{ label: 'gycan', value: 'gycan' }, { label: 'gycan', value: 'gycan' },
]); ]);
// //
const addDeviceConfig = () => { const addDeviceConfig = () => {
@ -424,7 +438,7 @@ const addDeviceConfig = () => {
isBlockRead: true, // isBlockRead: true, //
isBlockWrite: true, // isBlockWrite: true, //
isRunCmd: true, // isRunCmd: true, //
pollingCycleTime_ms: 1000 // pollingCycleTime_ms: 1000, //
}, },
conclude: { isUse: false, libName: '' }, // conclude: { isUse: false, libName: '' }, //
equipId: '', // ID equipId: '', // ID
@ -432,12 +446,11 @@ const addDeviceConfig = () => {
inductionParam: { inductionParam: {
// //
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // maxLenBlock_read: { boolArea: -1, charArea: -1 }, //
maxLenBlock_write: { boolArea: -1, charArea: -1 } // maxLenBlock_write: { boolArea: -1, charArea: -1 }, //
}, },
interfaceParams: { link: '', physicalInterface: '' }, // interfaceParams: { link: '', physicalInterface: '' }, //
properties: [ properties: [],
], protocol: { libName: '', params: { linkPar: '' } }, //
protocol: { libName: '', params: { linkPar: '' } } //
}; };
console.log('deviceConfigList.value', deviceConfigTableRef.value); console.log('deviceConfigList.value', deviceConfigTableRef.value);
deviceConfigList.value.push(newDeviceConfig); deviceConfigList.value.push(newDeviceConfig);
@ -445,32 +458,32 @@ const addDeviceConfig = () => {
}; };
// //
const delDeviceConfig = index => { const delDeviceConfig = (index) => {
console.log('当前点击的行号', index); console.log('当前点击的行号', index);
ElMessageBox.confirm('确认要删除该设备配置吗?', '告警', { ElMessageBox.confirm('确认要删除该设备配置吗?', '告警', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
}) })
.then(() => { .then(() => {
deviceConfigList.value.splice(index, 1); deviceConfigList.value.splice(index, 1);
ElMessage({ ElMessage({
type: 'success', type: 'success',
message: '删除成功' message: '删除成功',
}); });
}) })
.catch(() => { .catch(() => {
ElMessage({ ElMessage({
type: 'info', type: 'info',
message: '取消删除' message: '取消删除',
}); });
}); });
}; };
const getDeviceConfig = () => { const getDeviceConfig = () => {
console.log('获取配置'); console.log('获取配置');
getDeviceConf( {}) getDeviceConf({})
.then(response => { .then((response) => {
// //
console.log(response); // console.log(response); //
if (response.code == 0) { if (response.code == 0) {
@ -490,29 +503,29 @@ const getDeviceConfig = () => {
ElMessage.error(response.message); ElMessage.error(response.message);
} }
}) })
.catch(error => { .catch((error) => {
// //
console.error(error); // console.error(error); //
ElMessage.error(error); ElMessage.error(error);
}); });
}; };
const dataFormat = data => { const dataFormat = (data) => {
console.log('数据格式化', deviceConfigList.value); console.log('数据格式化', deviceConfigList.value);
let nowtaskList = let nowtaskList =
taskList.value.map(item => { taskList.value.map((item) => {
item.dataIdEntire = []; item.dataIdEntire = [];
return item; return item;
}) || []; }) || [];
if (nowtaskList.length > 0) { if (nowtaskList.length > 0) {
deviceConfigList.value.forEach(item => { deviceConfigList.value.forEach((item) => {
item.properties.forEach(property => { item.properties.forEach((property) => {
let taskId = property.taskId; let taskId = property.taskId;
nowtaskList.forEach(task => { nowtaskList.forEach((task) => {
if (task.taskId === taskId) { if (task.taskId === taskId) {
task.dataIdEntire.push({ task.dataIdEntire.push({
equipId: item.equipId, equipId: item.equipId,
idInfo: [{ id: property.id, uploadMode: property.uploadMode }] idInfo: [{ id: property.id, uploadMode: property.uploadMode }],
}); });
} }
}); });
@ -522,7 +535,7 @@ const dataFormat = data => {
return { return {
equips: data, equips: data,
tasks: nowtaskList tasks: nowtaskList,
}; };
}; };
@ -530,8 +543,8 @@ const setDeviceConfig = () => {
console.log('提交配置', deviceConfigList.value); console.log('提交配置', deviceConfigList.value);
let obj = dataFormat(deviceConfigList.value); let obj = dataFormat(deviceConfigList.value);
console.log('数据格式化后', obj); console.log('数据格式化后', obj);
setDeviceConf(obj) setDeviceConf(obj)
.then(response => { .then((response) => {
// //
console.log(response); // console.log(response); //
if (response.code == 0) { if (response.code == 0) {
@ -540,7 +553,7 @@ const setDeviceConfig = () => {
ElMessage.error(response.message); ElMessage.error(response.message);
} }
}) })
.catch(error => { .catch((error) => {
// //
console.error(error); // console.error(error); //
ElMessage.error(error); ElMessage.error(error);
@ -561,20 +574,20 @@ const collectionForm = ref({
isBlockRead: true, // isBlockRead: true, //
isBlockWrite: true, // isBlockWrite: true, //
isRunCmd: true, // isRunCmd: true, //
pollingCycleTime_ms: 1000 // pollingCycleTime_ms: 1000, //
}, },
inductionParam: { inductionParam: {
// //
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // maxLenBlock_read: { boolArea: -1, charArea: -1 }, //
maxLenBlock_write: { boolArea: -1, charArea: -1 } // maxLenBlock_write: { boolArea: -1, charArea: -1 }, //
} },
}); });
// //
const openCollectionModel = row => { const openCollectionModel = (row) => {
console.log('当前采集', row); console.log('当前采集', row);
collectionForm.value = { collectionForm.value = {
collectConf: row.collectConf, collectConf: row.collectConf,
inductionParam: row.inductionParam inductionParam: row.inductionParam,
}; };
collectionModelShow.value = true; collectionModelShow.value = true;
}; };
@ -596,11 +609,12 @@ const dlt645Form = ref({
baudrate: 115200, baudrate: 115200,
databits: 8, databits: 8,
stopbits: 1, stopbits: 1,
parity: 'N' parity: 'N',
}); });
// //
const getSerialPortList = (msgShow = true) => { const getSerialPortList = (msgShow = true) => {
getSerialPortDataList({}).then(response => { getSerialPortDataList({})
.then((response) => {
// //
if (response.code === 0) { if (response.code === 0) {
serialportList.value = response.data.list || []; serialportList.value = response.data.list || [];
@ -611,18 +625,26 @@ const getSerialPortList = (msgShow = true) => {
ElMessage.error(response.message); ElMessage.error(response.message);
} }
}) })
.catch(error => { .catch((error) => {
// //
ElMessage.error(error); ElMessage.error(error);
}); });
}; };
const editDlt645 = formEl => { const editDlt645 = (formEl) => {
if (!formEl) return; if (!formEl) return;
formEl.validate(valid => { formEl.validate((valid) => {
if (valid) { if (valid) {
deviceConfigList.value[ActiveRowIndex.value].interfaceParams.link = deviceConfigList.value[ActiveRowIndex.value].interfaceParams.link =
dlt645Form.value.port + ',' + dlt645Form.value.baudrate + ',' + dlt645Form.value.databits + ',' + dlt645Form.value.stopbits + ',' + dlt645Form.value.parity; dlt645Form.value.port +
',' +
dlt645Form.value.baudrate +
',' +
dlt645Form.value.databits +
',' +
dlt645Form.value.stopbits +
',' +
dlt645Form.value.parity;
deviceConfigList.value[ActiveRowIndex.value].interfaceParams.physicalInterface = dlt645Form.value.port; deviceConfigList.value[ActiveRowIndex.value].interfaceParams.physicalInterface = dlt645Form.value.port;
dlt645ModelShow.value = false; dlt645ModelShow.value = false;
} }
@ -633,18 +655,18 @@ const editDlt645 = formEl => {
const tcpModelShow = ref(false); const tcpModelShow = ref(false);
const tcpRef = ref(); const tcpRef = ref();
const tcpForm = ref({ const tcpForm = ref({
link: '192.168.0.1:80' link: '192.168.0.1:80',
}); });
const tcpFormRules = reactive({ const tcpFormRules = reactive({
link: [ link: [
{ required: true, message: 'ip地址+端口', trigger: 'blur' }, { required: true, message: 'ip地址+端口', trigger: 'blur' },
{ pattern: /^([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{1,5}$/, message: '格式错误格式应该是ip地址+端口如192.168.0.1:80', trigger: 'blur' } { pattern: /^([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{1,5}$/, message: '格式错误格式应该是ip地址+端口如192.168.0.1:80', trigger: 'blur' },
] ],
}); });
// //
const openConnectModel = row => { const openConnectModel = (row) => {
console.log('当前采集', row.protocol.libName); console.log('当前采集', row.protocol.libName);
if (!row.protocol.libName) { if (!row.protocol.libName) {
ElMessage.error('请先选择通信类型'); ElMessage.error('请先选择通信类型');
@ -661,7 +683,7 @@ const openConnectModel = row => {
baudrate: 115200, baudrate: 115200,
databits: 8, databits: 8,
stopbits: 1, stopbits: 1,
parity: 'N' parity: 'N',
}; };
} }
// getSerialPortList() // getSerialPortList()
@ -674,9 +696,9 @@ const openConnectModel = row => {
} }
}; };
const editTcp = formEl => { const editTcp = (formEl) => {
if (!formEl) return; if (!formEl) return;
formEl.validate(valid => { formEl.validate((valid) => {
if (valid) { if (valid) {
deviceConfigList.value[ActiveRowIndex.value].interfaceParams.link = tcpForm.value.link; deviceConfigList.value[ActiveRowIndex.value].interfaceParams.link = tcpForm.value.link;
tcpModelShow.value = false; tcpModelShow.value = false;
@ -693,7 +715,7 @@ const activeDeviceConfig = ref({
isBlockRead: true, // isBlockRead: true, //
isBlockWrite: true, // isBlockWrite: true, //
isRunCmd: true, // isRunCmd: true, //
pollingCycleTime_ms: 1000 // pollingCycleTime_ms: 1000, //
}, },
conclude: { isUse: false, libName: '' }, // conclude: { isUse: false, libName: '' }, //
equipId: 'dev102', // ID equipId: 'dev102', // ID
@ -701,7 +723,7 @@ const activeDeviceConfig = ref({
inductionParam: { inductionParam: {
// //
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // maxLenBlock_read: { boolArea: -1, charArea: -1 }, //
maxLenBlock_write: { boolArea: -1, charArea: -1 } // maxLenBlock_write: { boolArea: -1, charArea: -1 }, //
}, },
interfaceParams: { link: '', physicalInterface: '' }, // interfaceParams: { link: '', physicalInterface: '' }, //
properties: [ properties: [
@ -719,15 +741,15 @@ const activeDeviceConfig = ref({
// //
decimal: { numBits: 1, way: 'rounding' }, // decimal: { numBits: 1, way: 'rounding' }, //
offset: '0', // offset: '0', //
proportion: '1' // proportion: '1', //
}, },
offset: '0', // offset: '0', //
proportion: '1', // proportion: '1', //
taskId: '', // ID taskId: '', // ID
uploadMode: '' // uploadMode: '', //
} },
], ],
protocol: { libName: 'ModbusTCP', params: { linkPar: '' } } // protocol: { libName: 'ModbusTCP', params: { linkPar: '' } }, //
}); });
// //
@ -747,45 +769,45 @@ const addDeviceDataConfig = () => {
// //
decimal: { numBits: 1, way: 'rounding' }, // decimal: { numBits: 1, way: 'rounding' }, //
offset: '0', // offset: '0', //
proportion: '1' // proportion: '1', //
}, },
offset: '0', // offset: '0', //
proportion: '1', // proportion: '1', //
taskId: '', // ID taskId: '', // ID
uploadMode: '' // uploadMode: '', //
}; };
activeDeviceConfig.value.properties.push(newDeviceDataConfig); activeDeviceConfig.value.properties.push(newDeviceDataConfig);
}; };
const changedataDisplay = (e, index) => { const changedataDisplay = (e, index) => {
let dataTypeObj = dataTypeArray.value.filter(item => item.type === e); let dataTypeObj = dataTypeArray.value.filter((item) => item.type === e);
activeDeviceConfig.value.properties[index].datalen = dataTypeObj[0].datalen; activeDeviceConfig.value.properties[index].datalen = dataTypeObj[0].datalen;
activeDeviceConfig.value.properties[index].datalenShow = dataTypeObj[0].show; activeDeviceConfig.value.properties[index].datalenShow = dataTypeObj[0].show;
}; };
const changeTaskId = (e, index) => { const changeTaskId = (e, index) => {
let taskObj = taskList.value.filter(item => item.taskId === e); let taskObj = taskList.value.filter((item) => item.taskId === e);
activeDeviceConfig.value.properties[index].uploadMode = taskObj[0].uploadMode; activeDeviceConfig.value.properties[index].uploadMode = taskObj[0].uploadMode;
}; };
// //
const delDeviceDataConfig = index => { const delDeviceDataConfig = (index) => {
ElMessageBox.confirm('确认要删除该数据源配置吗?', '告警', { ElMessageBox.confirm('确认要删除该数据源配置吗?', '告警', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
}) })
.then(() => { .then(() => {
activeDeviceConfig.value.properties.splice(index, 1); activeDeviceConfig.value.properties.splice(index, 1);
ElMessage({ ElMessage({
type: 'success', type: 'success',
message: '删除成功' message: '删除成功',
}); });
}) })
.catch(() => { .catch(() => {
ElMessage({ ElMessage({
type: 'info', type: 'info',
message: '取消删除' message: '取消删除',
}); });
}); });
}; };
@ -804,9 +826,9 @@ const handleResize = () => {
const exportDeviceConfigXlsx = () => { const exportDeviceConfigXlsx = () => {
const workbook = XLSX.utils.book_new(); const workbook = XLSX.utils.book_new();
deviceConfigList.value.map(item => { deviceConfigList.value.map((item) => {
let dataArr = []; let dataArr = [];
dataArr = item.properties.map(val => { dataArr = item.properties.map((val) => {
return { return {
equipId: item.equipId, equipId: item.equipId,
...val, ...val,
@ -819,7 +841,7 @@ const exportDeviceConfigXlsx = () => {
equipName: item.equipName, equipName: item.equipName,
protocol: item.protocol.libName, protocol: item.protocol.libName,
link: item.interfaceParams.link, link: item.interfaceParams.link,
linkPar: item.protocol.params.linkPar linkPar: item.protocol.params.linkPar,
}; };
}); });
// JSON // JSON
@ -840,7 +862,7 @@ const exportDeviceConfigXlsx = () => {
const exportDeviceDataConfigXlsx = () => { const exportDeviceDataConfigXlsx = () => {
const workbook = XLSX.utils.book_new(); const workbook = XLSX.utils.book_new();
let dataArr = []; let dataArr = [];
dataArr = activeDeviceConfig.value.properties.map(val => { dataArr = activeDeviceConfig.value.properties.map((val) => {
return { return {
equipId: activeDeviceConfig.value.equipId, equipId: activeDeviceConfig.value.equipId,
...val, ...val,
@ -853,7 +875,7 @@ const exportDeviceDataConfigXlsx = () => {
equipName: activeDeviceConfig.value.equipName, equipName: activeDeviceConfig.value.equipName,
libName: activeDeviceConfig.value.protocol.libName, libName: activeDeviceConfig.value.protocol.libName,
link: activeDeviceConfig.value.interfaceParams.link, link: activeDeviceConfig.value.interfaceParams.link,
linkPar: activeDeviceConfig.value.protocol.params.linkPar linkPar: activeDeviceConfig.value.protocol.params.linkPar,
}; };
}); });
// JSON // JSON
@ -863,7 +885,10 @@ const exportDeviceDataConfigXlsx = () => {
// 簿 // 簿
const selIn = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'array' }); const selIn = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'array' });
try { try {
FileSaver.saveAs(new Blob([selIn], { type: 'application/octet-stream' }), '网关南向采集数据源配置' + dayjs().format('YYYY-MM-DD HH-mm-ss') + '.xlsx'); FileSaver.saveAs(
new Blob([selIn], { type: 'application/octet-stream' }),
'网关南向采集数据源配置' + dayjs().format('YYYY-MM-DD HH-mm-ss') + '.xlsx'
);
} catch (e) { } catch (e) {
if (typeof console !== 'undefined') console.log(e, selIn); if (typeof console !== 'undefined') console.log(e, selIn);
} }
@ -878,13 +903,13 @@ const handleFileChange = (file, fileList) => {
} }
const reader = new FileReader(); const reader = new FileReader();
reader.onload = e => { reader.onload = (e) => {
const data = new Uint8Array(e.target.result); const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' }); const workbook = XLSX.read(data, { type: 'array' });
// //
const sheets = {}; const sheets = {};
workbook.SheetNames.forEach(sheetName => { workbook.SheetNames.forEach((sheetName) => {
const sheet = workbook.Sheets[sheetName]; const sheet = workbook.Sheets[sheetName];
const json = XLSX.utils.sheet_to_json(sheet); const json = XLSX.utils.sheet_to_json(sheet);
sheets[sheetName] = json; sheets[sheetName] = json;
@ -895,10 +920,10 @@ const handleFileChange = (file, fileList) => {
let dataArr = sheets[prop]; let dataArr = sheets[prop];
if (dataArr.length > 0) { if (dataArr.length > 0) {
let flag = true; let flag = true;
deviceConfigList.value.forEach(item => { deviceConfigList.value.forEach((item) => {
if (item.equipId === dataArr[0].equipId) { if (item.equipId === dataArr[0].equipId) {
flag = false; flag = false;
item.properties = dataArr.map(val => { item.properties = dataArr.map((val) => {
return { return {
authority: val.authority, // authority: val.authority, //
dataAddress: val.dataAddress, // dataAddress: val.dataAddress, //
@ -914,12 +939,12 @@ const handleFileChange = (file, fileList) => {
// //
decimal: { numBits: val.numBits, way: val.way }, // decimal: { numBits: val.numBits, way: val.way }, //
offset: val.offset, // offset: val.offset, //
proportion: val.proportion // proportion: val.proportion, //
}, },
offset: val.offset, // offset: val.offset, //
proportion: val.proportion, // proportion: val.proportion, //
taskId: val.taskId, // ID taskId: val.taskId, // ID
uploadMode: val.uploadMode // uploadMode: val.uploadMode, //
}; };
}); });
item.equipName = dataArr[0].equipName; item.equipName = dataArr[0].equipName;
@ -940,7 +965,7 @@ const handleFileChange = (file, fileList) => {
isBlockRead: true, // isBlockRead: true, //
isBlockWrite: true, // isBlockWrite: true, //
isRunCmd: true, // isRunCmd: true, //
pollingCycleTime_ms: 1000 // pollingCycleTime_ms: 1000, //
}, },
conclude: { isUse: false, libName: '' }, // conclude: { isUse: false, libName: '' }, //
equipId: dataArr[0].equipId, // ID equipId: dataArr[0].equipId, // ID
@ -948,13 +973,13 @@ const handleFileChange = (file, fileList) => {
inductionParam: { inductionParam: {
// //
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // maxLenBlock_read: { boolArea: -1, charArea: -1 }, //
maxLenBlock_write: { boolArea: -1, charArea: -1 } // maxLenBlock_write: { boolArea: -1, charArea: -1 }, //
}, },
interfaceParams: { link: dataArr[0].link, physicalInterface: '' }, // interfaceParams: { link: dataArr[0].link, physicalInterface: '' }, //
properties: [], properties: [],
protocol: { libName: dataArr[0].protocol, params: { linkPar: dataArr[0].linkPar } } // protocol: { libName: dataArr[0].protocol, params: { linkPar: dataArr[0].linkPar } }, //
}; };
obj.properties = dataArr.map(val => { obj.properties = dataArr.map((val) => {
return { return {
authority: val.authority, // authority: val.authority, //
dataAddress: val.dataAddress, // dataAddress: val.dataAddress, //
@ -970,12 +995,12 @@ const handleFileChange = (file, fileList) => {
// //
decimal: { numBits: val.numBits, way: val.way }, // decimal: { numBits: val.numBits, way: val.way }, //
offset: val.offset, // offset: val.offset, //
proportion: val.proportion // proportion: val.proportion, //
}, },
offset: val.offset, // offset: val.offset, //
proportion: val.proportion, // proportion: val.proportion, //
taskId: val.taskId, // ID taskId: val.taskId, // ID
uploadMode: val.uploadMode // uploadMode: val.uploadMode, //
}; };
}); });
deviceConfigList.value.push(obj); deviceConfigList.value.push(obj);
@ -1009,8 +1034,8 @@ onUnmounted(() => {
background: #fff; background: #fff;
} }
#southdirection-box { #southdirection-box {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
.btn-list { .btn-list {
display: flex; display: flex;

190
yarn.lock
View File

@ -139,6 +139,18 @@
dependencies: dependencies:
eslint-visitor-keys "^3.3.0" eslint-visitor-keys "^3.3.0"
"@eslint-community/eslint-utils@^4.4.0":
version "4.4.1"
resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
dependencies:
eslint-visitor-keys "^3.4.3"
"@eslint-community/regexpp@^4.10.0":
version "4.12.1"
resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
"@eslint-community/regexpp@^4.4.0": "@eslint-community/regexpp@^4.4.0":
version "4.5.0" version "4.5.0"
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz"
@ -203,12 +215,12 @@
"@nodelib/fs.stat" "2.0.5" "@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9" run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5": "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5" version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.8": "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8" version "1.2.8"
resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@ -251,6 +263,76 @@
resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz" resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ== integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
"@typescript-eslint/eslint-plugin@^8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz#0901933326aea4443b81df3f740ca7dfc45c7bea"
integrity sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.18.0"
"@typescript-eslint/type-utils" "8.18.0"
"@typescript-eslint/utils" "8.18.0"
"@typescript-eslint/visitor-keys" "8.18.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/scope-manager@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz#30b040cb4557804a7e2bcc65cf8fdb630c96546f"
integrity sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==
dependencies:
"@typescript-eslint/types" "8.18.0"
"@typescript-eslint/visitor-keys" "8.18.0"
"@typescript-eslint/type-utils@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz#6f0d12cf923b6fd95ae4d877708c0adaad93c471"
integrity sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==
dependencies:
"@typescript-eslint/typescript-estree" "8.18.0"
"@typescript-eslint/utils" "8.18.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.18.0.tgz#3afcd30def8756bc78541268ea819a043221d5f3"
integrity sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==
"@typescript-eslint/typescript-estree@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz#d8ca785799fbb9c700cdff1a79c046c3e633c7f9"
integrity sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==
dependencies:
"@typescript-eslint/types" "8.18.0"
"@typescript-eslint/visitor-keys" "8.18.0"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
minimatch "^9.0.4"
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.18.0.tgz#48f67205d42b65d895797bb7349d1be5c39a62f7"
integrity sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "8.18.0"
"@typescript-eslint/types" "8.18.0"
"@typescript-eslint/typescript-estree" "8.18.0"
"@typescript-eslint/visitor-keys@8.18.0":
version "8.18.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz#7b6d33534fa808e33a19951907231ad2ea5c36dd"
integrity sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==
dependencies:
"@typescript-eslint/types" "8.18.0"
eslint-visitor-keys "^4.2.0"
"@vitejs/plugin-vue@^4.1.0": "@vitejs/plugin-vue@^4.1.0":
version "4.1.0" version "4.1.0"
resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz" resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz"
@ -465,6 +547,20 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
brace-expansion@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
dependencies:
balanced-match "^1.0.0"
braces@^3.0.3:
version "3.0.3"
resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
fill-range "^7.1.1"
braces@~3.0.2: braces@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
@ -620,7 +716,7 @@ echarts@^5.4.2:
tslib "2.3.0" tslib "2.3.0"
zrender "5.4.3" zrender "5.4.3"
element-plus@^2.7.6, element-plus@^2.9.0: element-plus@^2.9.0:
version "2.9.0" version "2.9.0"
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.0.tgz#76a16566ab6dbadb555a40704bde870a02c306bc" resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.0.tgz#76a16566ab6dbadb555a40704bde870a02c306bc"
integrity sha512-ccOFXKsauo2dtokAr4OX7gZsb7TuAoVxA2zGRZo5o2yyDDBLBaZxOoFQPoxITSLcHbBfQuNDGK5Iag5hnyKkZA== integrity sha512-ccOFXKsauo2dtokAr4OX7gZsb7TuAoVxA2zGRZo5o2yyDDBLBaZxOoFQPoxITSLcHbBfQuNDGK5Iag5hnyKkZA==
@ -705,6 +801,16 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz"
integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==
eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^4.2.0:
version "4.2.0"
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
eslint@^8.38.0: eslint@^8.38.0:
version "8.38.0" version "8.38.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz" resolved "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz"
@ -794,6 +900,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
glob-parent "^5.1.2"
merge2 "^1.3.0"
micromatch "^4.0.4"
fast-json-stable-stringify@^2.0.0: fast-json-stable-stringify@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
@ -830,6 +947,13 @@ fill-range@^7.0.1:
dependencies: dependencies:
to-regex-range "^5.0.1" to-regex-range "^5.0.1"
fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
find-up@^5.0.0: find-up@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
@ -903,6 +1027,13 @@ get-intrinsic@^1.0.2:
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.3" has-symbols "^1.0.3"
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-parent@^6.0.2: glob-parent@^6.0.2:
version "6.0.2" version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
@ -910,13 +1041,6 @@ glob-parent@^6.0.2:
dependencies: dependencies:
is-glob "^4.0.3" is-glob "^4.0.3"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1.3: glob@^7.1.3:
version "7.2.3" version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
@ -953,6 +1077,11 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
has-flag@^4.0.0: has-flag@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
@ -975,6 +1104,11 @@ ignore@^5.2.0:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
immutable@^4.0.0: immutable@^4.0.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz" resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz"
@ -1144,6 +1278,19 @@ memoize-one@^6.0.0:
resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz"
integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.4:
version "4.0.8"
resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
braces "^3.0.3"
picomatch "^2.3.1"
mime-db@1.52.0: mime-db@1.52.0:
version "1.52.0" version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
@ -1163,6 +1310,13 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies: dependencies:
brace-expansion "^1.1.7" brace-expansion "^1.1.7"
minimatch@^9.0.4:
version "9.0.5"
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
brace-expansion "^2.0.1"
mitt@^3.0.0: mitt@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz" resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz"
@ -1275,7 +1429,7 @@ picocolors@^1.0.0:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
version "2.3.1" version "2.3.1"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@ -1425,6 +1579,11 @@ semver@^7.3.5, semver@^7.3.6:
dependencies: dependencies:
lru-cache "^6.0.0" lru-cache "^6.0.0"
semver@^7.6.0:
version "7.6.3"
resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
shebang-command@^2.0.0: shebang-command@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
@ -1514,6 +1673,11 @@ to-regex-range@^5.0.1:
dependencies: dependencies:
is-number "^7.0.0" is-number "^7.0.0"
ts-api-utils@^1.3.0:
version "1.4.3"
resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064"
integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==
tslib@2.3.0: tslib@2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
@ -1613,7 +1777,7 @@ vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.1.1:
axios "^1.3.5" axios "^1.3.5"
dayjs "^1.11.13" dayjs "^1.11.13"
echarts "^5.4.2" echarts "^5.4.2"
element-plus "^2.7.6" element-plus "^2.9.0"
file-saver "^2.0.5" file-saver "^2.0.5"
js-cookie "^3.0.1" js-cookie "^3.0.1"
mitt "^3.0.0" mitt "^3.0.0"
@ -1626,7 +1790,7 @@ vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.1.1:
vue "^3.2.47" vue "^3.2.47"
vue-clipboard3 "^2.0.0" vue-clipboard3 "^2.0.0"
vue-demi "^0.13.11" vue-demi "^0.13.11"
vue-next-admin-template-js "file:C:/Users/Administrator/AppData/Local/Yarn/Cache/v6/npm-vue-next-admin-template-js-2.4.33-d6f20349-ce84-4f4c-b83e-27e36d4b1985-1733992643913/node_modules/vue-next-admin-template-js" vue-next-admin-template-js "file:C:/Users/Administrator/AppData/Local/Yarn/Cache/v6/npm-vue-next-admin-template-js-2.4.33-011778b8-7ab9-4593-988c-c7383c933ad9-1734079258926/node_modules/vue-next-admin-template-js"
vue-router "^4.1.6" vue-router "^4.1.6"
xlsx "^0.18.5" xlsx "^0.18.5"