fix(compiler): 格式化代码
This commit is contained in:
parent
c641ad14bc
commit
e40b901205
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
<LockScreen v-if="themeConfig.isLockScreen" />
|
||||
<Setings ref="setingsRef" v-show="setLockScreen" />
|
||||
<CloseFull v-if="!themeConfig.isLockScreen" />
|
||||
<!-- <Upgrade v-if="getVersion" />-->
|
||||
<!-- <Sponsors />-->
|
||||
<!-- <Upgrade v-if="getVersion" />-->
|
||||
<!-- <Sponsors />-->
|
||||
</el-config-provider>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="data-config">
|
||||
<h2>数据源配置 {{ activeDeviceConfig.equipId || '' }}</h2>
|
||||
<h2>数据源配置 {{ activeDeviceConfig.equipId || '' }}</h2>
|
||||
<div class="btn-list">
|
||||
<div class="btn-list-left"></div>
|
||||
<div class="btn-list-right">
|
||||
|
@ -40,7 +40,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<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 prop="id" label="设备ID_数据ID" align="center">
|
||||
<template #default="scope">
|
||||
|
@ -51,11 +59,11 @@
|
|||
<el-table-column prop="dataValue" label="当前值" align="center" />
|
||||
<el-table-column prop="dataUnit" label="单位" align="center" />
|
||||
<el-table-column prop="time" 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-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>
|
||||
|
@ -65,12 +73,7 @@
|
|||
<script setup>
|
||||
import { ref, onMounted, onUnmounted } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import {
|
||||
endDeviceCollect,
|
||||
getDeviceCollectli,
|
||||
getDeviceEquipli,
|
||||
startDeviceCollect
|
||||
} from "/@/api/gateway/collectdatamonitor";
|
||||
import { endDeviceCollect, getDeviceCollectli, getDeviceEquipli, startDeviceCollect } from '/@/api/gateway/collectdatamonitor';
|
||||
|
||||
const deviceConfigTableRef = ref();
|
||||
const deviceDataTableRef = ref();
|
||||
|
@ -83,27 +86,27 @@ const ActiveRowIndex = ref(0);
|
|||
const activeDeviceConfig = ref({
|
||||
equipId: '',
|
||||
status: false,
|
||||
result: []
|
||||
result: [],
|
||||
});
|
||||
|
||||
const getDeviceDataList = id => {
|
||||
const getDeviceDataList = (id) => {
|
||||
// console.log('获取设备列表')
|
||||
getDeviceCollectli(id)
|
||||
.then(response => {
|
||||
getDeviceCollectli(id)
|
||||
.then((response) => {
|
||||
// 成功响应后的处理
|
||||
if (response.code == 0) {
|
||||
//缓存上下行主题
|
||||
activeDeviceConfig.value = {
|
||||
equipId: response.data.equipId || '',
|
||||
status: response.data.status || false,
|
||||
result: response.data.result || []
|
||||
result: response.data.result || [],
|
||||
};
|
||||
// activeDeviceResult.value = response.data.result || []
|
||||
} else {
|
||||
ElMessage.error(response.message);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
// 错误处理
|
||||
console.error(error); // 打印错误信息
|
||||
ElMessage.error(error);
|
||||
|
@ -112,8 +115,8 @@ const getDeviceDataList = id => {
|
|||
|
||||
const getDeviceList = () => {
|
||||
// console.log('获取设备列表')
|
||||
getDeviceEquipli({})
|
||||
.then(response => {
|
||||
getDeviceEquipli({})
|
||||
.then((response) => {
|
||||
// 成功响应后的处理
|
||||
if (response.code == 0) {
|
||||
//缓存上下行主题
|
||||
|
@ -126,7 +129,7 @@ const getDeviceList = () => {
|
|||
activeDeviceConfig.value = {
|
||||
equipId: '',
|
||||
starus: false,
|
||||
result: []
|
||||
result: [],
|
||||
};
|
||||
// activeDeviceResult.value = []
|
||||
}
|
||||
|
@ -134,7 +137,7 @@ const getDeviceList = () => {
|
|||
ElMessage.error(response.message);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
// 错误处理
|
||||
console.error(error); // 打印错误信息
|
||||
ElMessage.error(error);
|
||||
|
@ -145,65 +148,67 @@ const getDeviceConfig = () => {
|
|||
getDeviceDataList(deviceList.value[ActiveRowIndex.value].equipId);
|
||||
};
|
||||
|
||||
const handleBeforeChange = index => {
|
||||
const handleBeforeChange = (index) => {
|
||||
console.log('e', index);
|
||||
return new Promise((resolve, reject) => {
|
||||
let deviceObj = deviceList.value[index];
|
||||
console.log('deviceObj', deviceObj.status);
|
||||
if (deviceObj.status) {
|
||||
endDeviceCollect(deviceObj.equipId).then(response => {
|
||||
console.log('response', response);
|
||||
if (response.code === 0) {
|
||||
// 请求成功且状态为 ok,允许改变开关状态
|
||||
if (deviceObj.status) {
|
||||
ElMessage.success('关闭成功');
|
||||
} else {
|
||||
ElMessage.success('开启成功');
|
||||
}
|
||||
deviceList.value[index].status = !deviceList.value[index].status;
|
||||
getDeviceList();
|
||||
resolve();
|
||||
} else {
|
||||
// 请求成功但状态不为 ok,阻止改变开关状态
|
||||
ElMessage.error(response.message);
|
||||
reject();
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
// 请求失败,阻止改变开关状态
|
||||
ElMessage.error(error.data.message);
|
||||
reject();
|
||||
});
|
||||
}else{
|
||||
startDeviceCollect(deviceObj.equipId).then(response => {
|
||||
console.log('response', response);
|
||||
if (response.code === 0) {
|
||||
// 请求成功且状态为 ok,允许改变开关状态
|
||||
if (deviceObj.status) {
|
||||
ElMessage.success('关闭成功');
|
||||
} else {
|
||||
ElMessage.success('开启成功');
|
||||
}
|
||||
deviceList.value[index].status = !deviceList.value[index].status;
|
||||
getDeviceList();
|
||||
resolve();
|
||||
} else {
|
||||
// 请求成功但状态不为 ok,阻止改变开关状态
|
||||
ElMessage.error(response.message);
|
||||
reject();
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
// 请求失败,阻止改变开关状态
|
||||
ElMessage.error(error.data.message);
|
||||
reject();
|
||||
});
|
||||
}
|
||||
endDeviceCollect(deviceObj.equipId)
|
||||
.then((response) => {
|
||||
console.log('response', response);
|
||||
if (response.code === 0) {
|
||||
// 请求成功且状态为 ok,允许改变开关状态
|
||||
if (deviceObj.status) {
|
||||
ElMessage.success('关闭成功');
|
||||
} else {
|
||||
ElMessage.success('开启成功');
|
||||
}
|
||||
deviceList.value[index].status = !deviceList.value[index].status;
|
||||
getDeviceList();
|
||||
resolve();
|
||||
} else {
|
||||
// 请求成功但状态不为 ok,阻止改变开关状态
|
||||
ElMessage.error(response.message);
|
||||
reject();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// 请求失败,阻止改变开关状态
|
||||
ElMessage.error(error.data.message);
|
||||
reject();
|
||||
});
|
||||
} else {
|
||||
startDeviceCollect(deviceObj.equipId)
|
||||
.then((response) => {
|
||||
console.log('response', response);
|
||||
if (response.code === 0) {
|
||||
// 请求成功且状态为 ok,允许改变开关状态
|
||||
if (deviceObj.status) {
|
||||
ElMessage.success('关闭成功');
|
||||
} else {
|
||||
ElMessage.success('开启成功');
|
||||
}
|
||||
deviceList.value[index].status = !deviceList.value[index].status;
|
||||
getDeviceList();
|
||||
resolve();
|
||||
} else {
|
||||
// 请求成功但状态不为 ok,阻止改变开关状态
|
||||
ElMessage.error(response.message);
|
||||
reject();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// 请求失败,阻止改变开关状态
|
||||
ElMessage.error(error.data.message);
|
||||
reject();
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
//选择设备配置
|
||||
const deviceConfigClick = e => {
|
||||
const deviceConfigClick = (e) => {
|
||||
getDeviceDataList(e.equipId);
|
||||
deviceConfigTableRef.value.toggleRowSelection(e);
|
||||
ActiveRowIndex.value = deviceList.value.indexOf(e);
|
||||
|
@ -233,8 +238,8 @@ onUnmounted(() => {
|
|||
background: #fff;
|
||||
}
|
||||
#southdirection-box {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.btn-list {
|
||||
display: flex;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -64,7 +64,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="data-config">
|
||||
<h2>数据源配置 {{activeDeviceConfig.equipId}}</h2>
|
||||
<h2>数据源配置 {{ activeDeviceConfig.equipId }}</h2>
|
||||
<div class="btn-list">
|
||||
<div class="btn-list-left">
|
||||
<el-button type="primary" @click="addDeviceDataConfig">新增配置</el-button>
|
||||
|
@ -78,7 +78,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<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 prop="id" label="数据ID" fixed align="center">
|
||||
<template #default="scope">
|
||||
|
@ -209,7 +217,13 @@
|
|||
<!-- <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-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>
|
||||
</el-table-column>
|
||||
<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 * 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;
|
||||
|
|
190
yarn.lock
190
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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue