From e40b9012057c9a188e9bb991892f4934db211622 Mon Sep 17 00:00:00 2001
From: fhysy <1149505133@qq.com>
Date: Fri, 13 Dec 2024 16:48:08 +0800
Subject: [PATCH] =?UTF-8?q?=20fix(compiler):=20=E6=A0=BC=E5=BC=8F=E5=8C=96?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 4 +-
package.json | 1 +
src/App.vue | 4 +-
src/views/gateway/collectdatamonitor.vue | 155 +--
src/views/gateway/northboundtask.vue | 1131 +++++++++++-----------
src/views/gateway/southdirection.vue | 193 ++--
yarn.lock | 190 +++-
7 files changed, 919 insertions(+), 759 deletions(-)
diff --git a/.gitignore b/.gitignore
index bf9c2e8..61e8775 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
.DS_Store
node_modules
/dist
-
+yarn.lock
# local env files
.env.local
@@ -21,4 +21,4 @@ pnpm-debug.log*
*.njsproj
*.sln
*.sw?
-!/yarn.lock
+
diff --git a/package.json b/package.json
index 3f5eded..c873d00 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"xlsx": "^0.18.5"
},
"devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^8.18.0",
"@vitejs/plugin-vue": "^4.1.0",
"@vue/compiler-sfc": "^3.2.47",
"eslint": "^8.38.0",
diff --git a/src/App.vue b/src/App.vue
index 0a2c80b..6af8d1b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,8 +4,8 @@
-
-
+
+
diff --git a/src/views/gateway/collectdatamonitor.vue b/src/views/gateway/collectdatamonitor.vue
index b79f0dc..5a6a7bc 100644
--- a/src/views/gateway/collectdatamonitor.vue
+++ b/src/views/gateway/collectdatamonitor.vue
@@ -32,7 +32,7 @@
-
数据源配置 {{activeDeviceConfig.equipId}}
+
数据源配置 {{ activeDeviceConfig.equipId }}
-
+
@@ -209,7 +217,13 @@
-
+
@@ -349,7 +363,7 @@ import { guidGenerator } from '/@/utils/function.js';
import FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
import dayjs from 'dayjs';
-import {getDeviceConf, getSerialPortDataList, setDeviceConf} from "/@/api/gateway/southdirection";
+import { getDeviceConf, getSerialPortDataList, setDeviceConf } from '/@/api/gateway/southdirection';
const dataTypeArray = ref([
{ type: 'bool', datalen: 1, show: false },
@@ -380,7 +394,7 @@ const dataTypeArray = ref([
{ type: 'uint32_ABCD', datalen: 4, show: false },
{ type: 'uint32_BADC', 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: 'change 10', link: '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 results = queryString ? uploadModeList.value.filter(createFilter(queryString)) : uploadModeList.value;
cb(results);
};
-const createFilter = queryString => {
- return restaurant => {
+const createFilter = (queryString) => {
+ return (restaurant) => {
return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
};
};
@@ -409,8 +423,8 @@ const deviceConfigList = ref([]);
const protocolList = ref([
{ label: 'ModbusTCP', value: 'ModbusTCP' },
- { label: 'DLT645_2007', value: 'DLT645_2007' },
- { label: 'gycan', value: 'gycan' },
+ { label: 'DLT645_2007', value: 'DLT645_2007' },
+ { label: 'gycan', value: 'gycan' },
]);
//新增配置
const addDeviceConfig = () => {
@@ -424,7 +438,7 @@ const addDeviceConfig = () => {
isBlockRead: true, // 是否块读取
isBlockWrite: true, // 是否块写入
isRunCmd: true, // 是否运行命令
- pollingCycleTime_ms: 1000 // 轮询周期时间
+ pollingCycleTime_ms: 1000, // 轮询周期时间
},
conclude: { isUse: false, libName: '' }, // 结论库设置
equipId: '', // 设备ID
@@ -432,12 +446,11 @@ const addDeviceConfig = () => {
inductionParam: {
// 感应参数设置
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // 读取最大长度
- maxLenBlock_write: { boolArea: -1, charArea: -1 } // 写入最大长度
+ maxLenBlock_write: { boolArea: -1, charArea: -1 }, // 写入最大长度
},
interfaceParams: { link: '', physicalInterface: '' }, // 接口参数
- properties: [
- ],
- protocol: { libName: '', params: { linkPar: '' } } // 通信协议设置
+ properties: [],
+ protocol: { libName: '', params: { linkPar: '' } }, // 通信协议设置
};
console.log('deviceConfigList.value', deviceConfigTableRef.value);
deviceConfigList.value.push(newDeviceConfig);
@@ -445,32 +458,32 @@ const addDeviceConfig = () => {
};
//删除配置
-const delDeviceConfig = index => {
+const delDeviceConfig = (index) => {
console.log('当前点击的行号', index);
ElMessageBox.confirm('确认要删除该设备配置吗?', '告警', {
confirmButtonText: '确认',
cancelButtonText: '取消',
- type: 'warning'
+ type: 'warning',
})
.then(() => {
deviceConfigList.value.splice(index, 1);
ElMessage({
type: 'success',
- message: '删除成功'
+ message: '删除成功',
});
})
.catch(() => {
ElMessage({
type: 'info',
- message: '取消删除'
+ message: '取消删除',
});
});
};
const getDeviceConfig = () => {
console.log('获取配置');
- getDeviceConf( {})
- .then(response => {
+ getDeviceConf({})
+ .then((response) => {
// 成功响应后的处理
console.log(response); // 打印响应数据
if (response.code == 0) {
@@ -490,29 +503,29 @@ const getDeviceConfig = () => {
ElMessage.error(response.message);
}
})
- .catch(error => {
+ .catch((error) => {
// 错误处理
console.error(error); // 打印错误信息
ElMessage.error(error);
});
};
-const dataFormat = data => {
+const dataFormat = (data) => {
console.log('数据格式化', deviceConfigList.value);
let nowtaskList =
- taskList.value.map(item => {
+ taskList.value.map((item) => {
item.dataIdEntire = [];
return item;
}) || [];
if (nowtaskList.length > 0) {
- deviceConfigList.value.forEach(item => {
- item.properties.forEach(property => {
+ deviceConfigList.value.forEach((item) => {
+ item.properties.forEach((property) => {
let taskId = property.taskId;
- nowtaskList.forEach(task => {
+ nowtaskList.forEach((task) => {
if (task.taskId === taskId) {
task.dataIdEntire.push({
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 {
equips: data,
- tasks: nowtaskList
+ tasks: nowtaskList,
};
};
@@ -530,8 +543,8 @@ const setDeviceConfig = () => {
console.log('提交配置', deviceConfigList.value);
let obj = dataFormat(deviceConfigList.value);
console.log('数据格式化后', obj);
- setDeviceConf(obj)
- .then(response => {
+ setDeviceConf(obj)
+ .then((response) => {
// 成功响应后的处理
console.log(response); // 打印响应数据
if (response.code == 0) {
@@ -540,7 +553,7 @@ const setDeviceConfig = () => {
ElMessage.error(response.message);
}
})
- .catch(error => {
+ .catch((error) => {
// 错误处理
console.error(error); // 打印错误信息
ElMessage.error(error);
@@ -561,20 +574,20 @@ const collectionForm = ref({
isBlockRead: true, // 是否块读取
isBlockWrite: true, // 是否块写入
isRunCmd: true, // 是否运行命令
- pollingCycleTime_ms: 1000 // 轮询周期时间
+ pollingCycleTime_ms: 1000, // 轮询周期时间
},
inductionParam: {
// 感应参数设置
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);
collectionForm.value = {
collectConf: row.collectConf,
- inductionParam: row.inductionParam
+ inductionParam: row.inductionParam,
};
collectionModelShow.value = true;
};
@@ -596,11 +609,12 @@ const dlt645Form = ref({
baudrate: 115200,
databits: 8,
stopbits: 1,
- parity: 'N'
+ parity: 'N',
});
//获取端口列表
const getSerialPortList = (msgShow = true) => {
- getSerialPortDataList({}).then(response => {
+ getSerialPortDataList({})
+ .then((response) => {
// 成功响应后的处理
if (response.code === 0) {
serialportList.value = response.data.list || [];
@@ -611,18 +625,26 @@ const getSerialPortList = (msgShow = true) => {
ElMessage.error(response.message);
}
})
- .catch(error => {
+ .catch((error) => {
// 错误处理
ElMessage.error(error);
});
};
-const editDlt645 = formEl => {
+const editDlt645 = (formEl) => {
if (!formEl) return;
- formEl.validate(valid => {
+ formEl.validate((valid) => {
if (valid) {
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;
dlt645ModelShow.value = false;
}
@@ -633,18 +655,18 @@ const editDlt645 = formEl => {
const tcpModelShow = ref(false);
const tcpRef = ref();
const tcpForm = ref({
- link: '192.168.0.1:80'
+ link: '192.168.0.1:80',
});
const tcpFormRules = reactive({
link: [
{ 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);
if (!row.protocol.libName) {
ElMessage.error('请先选择通信类型');
@@ -661,7 +683,7 @@ const openConnectModel = row => {
baudrate: 115200,
databits: 8,
stopbits: 1,
- parity: 'N'
+ parity: 'N',
};
}
// getSerialPortList()
@@ -674,9 +696,9 @@ const openConnectModel = row => {
}
};
-const editTcp = formEl => {
+const editTcp = (formEl) => {
if (!formEl) return;
- formEl.validate(valid => {
+ formEl.validate((valid) => {
if (valid) {
deviceConfigList.value[ActiveRowIndex.value].interfaceParams.link = tcpForm.value.link;
tcpModelShow.value = false;
@@ -693,7 +715,7 @@ const activeDeviceConfig = ref({
isBlockRead: true, // 是否块读取
isBlockWrite: true, // 是否块写入
isRunCmd: true, // 是否运行命令
- pollingCycleTime_ms: 1000 // 轮询周期时间
+ pollingCycleTime_ms: 1000, // 轮询周期时间
},
conclude: { isUse: false, libName: '' }, // 结论库设置
equipId: 'dev102', // 设备ID
@@ -701,7 +723,7 @@ const activeDeviceConfig = ref({
inductionParam: {
// 感应参数设置
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // 读取最大长度
- maxLenBlock_write: { boolArea: -1, charArea: -1 } // 写入最大长度
+ maxLenBlock_write: { boolArea: -1, charArea: -1 }, // 写入最大长度
},
interfaceParams: { link: '', physicalInterface: '' }, // 接口参数
properties: [
@@ -719,15 +741,15 @@ const activeDeviceConfig = ref({
// 北向计算参数
decimal: { numBits: 1, way: 'rounding' }, // 小数处理方式
offset: '0', // 偏移量
- proportion: '1' // 比例
+ proportion: '1', // 比例
},
offset: '0', // 偏移量
proportion: '1', // 比例
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' }, // 小数处理方式
offset: '0', // 偏移量
- proportion: '1' // 比例
+ proportion: '1', // 比例
},
offset: '0', // 偏移量
proportion: '1', // 比例
taskId: '', // 任务ID
- uploadMode: '' // 上报策略
+ uploadMode: '', // 上报策略
};
activeDeviceConfig.value.properties.push(newDeviceDataConfig);
};
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].datalenShow = dataTypeObj[0].show;
};
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;
};
//删除数据源配置
-const delDeviceDataConfig = index => {
+const delDeviceDataConfig = (index) => {
ElMessageBox.confirm('确认要删除该数据源配置吗?', '告警', {
confirmButtonText: '确认',
cancelButtonText: '取消',
- type: 'warning'
+ type: 'warning',
})
.then(() => {
activeDeviceConfig.value.properties.splice(index, 1);
ElMessage({
type: 'success',
- message: '删除成功'
+ message: '删除成功',
});
})
.catch(() => {
ElMessage({
type: 'info',
- message: '取消删除'
+ message: '取消删除',
});
});
};
@@ -804,9 +826,9 @@ const handleResize = () => {
const exportDeviceConfigXlsx = () => {
const workbook = XLSX.utils.book_new();
- deviceConfigList.value.map(item => {
+ deviceConfigList.value.map((item) => {
let dataArr = [];
- dataArr = item.properties.map(val => {
+ dataArr = item.properties.map((val) => {
return {
equipId: item.equipId,
...val,
@@ -819,7 +841,7 @@ const exportDeviceConfigXlsx = () => {
equipName: item.equipName,
protocol: item.protocol.libName,
link: item.interfaceParams.link,
- linkPar: item.protocol.params.linkPar
+ linkPar: item.protocol.params.linkPar,
};
});
// 将 JSON 数据转换为工作表
@@ -840,7 +862,7 @@ const exportDeviceConfigXlsx = () => {
const exportDeviceDataConfigXlsx = () => {
const workbook = XLSX.utils.book_new();
let dataArr = [];
- dataArr = activeDeviceConfig.value.properties.map(val => {
+ dataArr = activeDeviceConfig.value.properties.map((val) => {
return {
equipId: activeDeviceConfig.value.equipId,
...val,
@@ -853,7 +875,7 @@ const exportDeviceDataConfigXlsx = () => {
equipName: activeDeviceConfig.value.equipName,
libName: activeDeviceConfig.value.protocol.libName,
link: activeDeviceConfig.value.interfaceParams.link,
- linkPar: activeDeviceConfig.value.protocol.params.linkPar
+ linkPar: activeDeviceConfig.value.protocol.params.linkPar,
};
});
// 将 JSON 数据转换为工作表
@@ -863,7 +885,10 @@ const exportDeviceDataConfigXlsx = () => {
// 将工作簿写入二进制数组
const selIn = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'array' });
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) {
if (typeof console !== 'undefined') console.log(e, selIn);
}
@@ -878,13 +903,13 @@ const handleFileChange = (file, fileList) => {
}
const reader = new FileReader();
- reader.onload = e => {
+ reader.onload = (e) => {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
// 解析所有工作表
const sheets = {};
- workbook.SheetNames.forEach(sheetName => {
+ workbook.SheetNames.forEach((sheetName) => {
const sheet = workbook.Sheets[sheetName];
const json = XLSX.utils.sheet_to_json(sheet);
sheets[sheetName] = json;
@@ -895,10 +920,10 @@ const handleFileChange = (file, fileList) => {
let dataArr = sheets[prop];
if (dataArr.length > 0) {
let flag = true;
- deviceConfigList.value.forEach(item => {
+ deviceConfigList.value.forEach((item) => {
if (item.equipId === dataArr[0].equipId) {
flag = false;
- item.properties = dataArr.map(val => {
+ item.properties = dataArr.map((val) => {
return {
authority: val.authority, // 读写权限
dataAddress: val.dataAddress, // 数据地址
@@ -914,12 +939,12 @@ const handleFileChange = (file, fileList) => {
// 北向计算参数
decimal: { numBits: val.numBits, way: val.way }, // 小数处理方式
offset: val.offset, // 偏移量
- proportion: val.proportion // 比例
+ proportion: val.proportion, // 比例
},
offset: val.offset, // 偏移量
proportion: val.proportion, // 比例
taskId: val.taskId, // 任务ID
- uploadMode: val.uploadMode // 上报策略
+ uploadMode: val.uploadMode, // 上报策略
};
});
item.equipName = dataArr[0].equipName;
@@ -940,7 +965,7 @@ const handleFileChange = (file, fileList) => {
isBlockRead: true, // 是否块读取
isBlockWrite: true, // 是否块写入
isRunCmd: true, // 是否运行命令
- pollingCycleTime_ms: 1000 // 轮询周期时间
+ pollingCycleTime_ms: 1000, // 轮询周期时间
},
conclude: { isUse: false, libName: '' }, // 结论库设置
equipId: dataArr[0].equipId, // 设备ID
@@ -948,13 +973,13 @@ const handleFileChange = (file, fileList) => {
inductionParam: {
// 感应参数设置
maxLenBlock_read: { boolArea: -1, charArea: -1 }, // 读取最大长度
- maxLenBlock_write: { boolArea: -1, charArea: -1 } // 写入最大长度
+ maxLenBlock_write: { boolArea: -1, charArea: -1 }, // 写入最大长度
},
interfaceParams: { link: dataArr[0].link, physicalInterface: '' }, // 接口参数
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 {
authority: val.authority, // 读写权限
dataAddress: val.dataAddress, // 数据地址
@@ -970,12 +995,12 @@ const handleFileChange = (file, fileList) => {
// 北向计算参数
decimal: { numBits: val.numBits, way: val.way }, // 小数处理方式
offset: val.offset, // 偏移量
- proportion: val.proportion // 比例
+ proportion: val.proportion, // 比例
},
offset: val.offset, // 偏移量
proportion: val.proportion, // 比例
taskId: val.taskId, // 任务ID
- uploadMode: val.uploadMode // 上报策略
+ uploadMode: val.uploadMode, // 上报策略
};
});
deviceConfigList.value.push(obj);
@@ -1009,8 +1034,8 @@ onUnmounted(() => {
background: #fff;
}
#southdirection-box {
- position: absolute;
- width: 100%;
+ position: absolute;
+ width: 100%;
height: 100%;
.btn-list {
display: flex;
diff --git a/yarn.lock b/yarn.lock
index 8f8ecaf..14d65f3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -139,6 +139,18 @@
dependencies:
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":
version "4.5.0"
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz"
@@ -203,12 +215,12 @@
"@nodelib/fs.stat" "2.0.5"
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"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
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"
resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -251,6 +263,76 @@
resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
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":
version "4.1.0"
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"
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:
version "3.0.2"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
@@ -620,7 +716,7 @@ echarts@^5.4.2:
tslib "2.3.0"
zrender "5.4.3"
-element-plus@^2.7.6, element-plus@^2.9.0:
+element-plus@^2.9.0:
version "2.9.0"
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.0.tgz#76a16566ab6dbadb555a40704bde870a02c306bc"
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"
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:
version "8.38.0"
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"
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:
version "2.1.0"
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:
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:
version "5.0.0"
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-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:
version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
@@ -910,13 +1041,6 @@ glob-parent@^6.0.2:
dependencies:
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:
version "7.2.3"
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"
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:
version "4.0.0"
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"
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:
version "4.3.0"
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"
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:
version "1.52.0"
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:
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:
version "3.0.0"
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"
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"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -1425,6 +1579,11 @@ semver@^7.3.5, semver@^7.3.6:
dependencies:
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:
version "2.0.0"
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
@@ -1514,6 +1673,11 @@ to-regex-range@^5.0.1:
dependencies:
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:
version "2.3.0"
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"
dayjs "^1.11.13"
echarts "^5.4.2"
- element-plus "^2.7.6"
+ element-plus "^2.9.0"
file-saver "^2.0.5"
js-cookie "^3.0.1"
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-clipboard3 "^2.0.0"
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"
xlsx "^0.18.5"