From 031f6135c1ea26bf26ae9566813c7dbbfa00c346 Mon Sep 17 00:00:00 2001 From: fengerli <528575642@qq.com> Date: Sat, 30 Aug 2025 14:45:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E5=88=97=E8=A1=A8=E5=8D=A1?= =?UTF-8?q?=E7=89=87=EF=BC=8C=E6=A8=A1=E5=BC=8F=E9=A1=B5=E9=9D=A2=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BC=B0=E8=AE=A1=E6=92=AD?= =?UTF-8?q?=E6=94=BE=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 1 + src/api/controlCenter/controlPanel/types.ts | 3 +- src/api/controlCenter/delivey/index.ts | 5 +- src/api/controlCenter/delivey/types.ts | 1 + src/api/controlCenter/historyjectory/index.ts | 23 + src/api/controlCenter/historyjectory/types.ts | 22 + src/api/equipmentAlarmRecord/index.ts | 32 +- src/api/equipmentAlarmRecord/types.ts | 198 ++++--- src/assets/images/nodata.png | Bin 0 -> 11572 bytes src/utils/function.ts | 43 +- src/views/controlCenter/6170/index.vue | 11 +- .../controlPanel/components/map.vue | 19 +- .../controlCenter/controlPanel/index.vue | 23 +- src/views/controlCenter/delivery/index.vue | 43 +- .../controlCenter/historyjectory/index.vue | 304 +++++++++++ .../historyjectory/trackplayback.vue | 449 ++++++++++++++++ src/views/equipmentAlarmRecord/index.vue | 493 +++++++++++------- .../equipmentManagement/deviceType/index.vue | 24 +- 18 files changed, 1302 insertions(+), 392 deletions(-) create mode 100644 src/api/controlCenter/historyjectory/index.ts create mode 100644 src/api/controlCenter/historyjectory/types.ts create mode 100644 src/assets/images/nodata.png create mode 100644 src/views/controlCenter/historyjectory/index.vue create mode 100644 src/views/controlCenter/historyjectory/trackplayback.vue diff --git a/index.html b/index.html index e2c5d74..11aa1d5 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,7 @@ + 物联网管理平台 @@ -63,7 +64,7 @@ - + (); const activeNames = ref([]); const deviceTypeOptions = ref([]); //设备类型 const enabledDeptOptions = ref(); - +const debounceTimer = ref(null) // 用于防抖的定时器 const initData: PageData<'', deviceQuery> = { queryParams: { pageNum: 1, @@ -107,7 +108,8 @@ const initData: PageData<'', deviceQuery> = { groupId: '', deviceType: '', startTime: '', - endTime: '' + endTime: '', + content:"" }, rules: undefined, form: '' @@ -166,7 +168,15 @@ const handleNodeClick = (data: any) => { queryParams.value.groupId = data.id; handleQuery(); }; - +const handleInput = () => { + if (debounceTimer.value) { + clearTimeout(debounceTimer.value) + } + // 300ms后执行查询(避免输入过程中频繁调用接口) + debounceTimer.value = setTimeout(() => { + handleQuery() // 调用查询接口的方法 + }, 300) +}; /** 搜索按钮操作 */ const handleQuery = () => { queryParams.value.pageNum = 1; @@ -211,23 +221,34 @@ const getList = async () => { /** 查询部结构 */ const getDeptTree = async () => { const res = await api.devicegroupList(''); - const allDeviceOption = { + const allDeviceOption = { id: '', groupName: '全部设备', - disabled: false, - children: [] + disabled: false, + children: [] }; deptOptions.value = [allDeviceOption, ...res.data] enabledDeptOptions.value = filterDisabledDept(res.data); }; - +/** 导出按钮操作 */ +const handleExport = () => { + proxy?.download( + '/api/device/export', + { + ...queryParams.value + }, + `指令下发记录${new Date().getTime()}.xlsx`, + 'get' + ); +}; diff --git a/src/views/controlCenter/historyjectory/trackplayback.vue b/src/views/controlCenter/historyjectory/trackplayback.vue new file mode 100644 index 0000000..55b9b70 --- /dev/null +++ b/src/views/controlCenter/historyjectory/trackplayback.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/src/views/equipmentAlarmRecord/index.vue b/src/views/equipmentAlarmRecord/index.vue index 988df46..f048fb7 100644 --- a/src/views/equipmentAlarmRecord/index.vue +++ b/src/views/equipmentAlarmRecord/index.vue @@ -4,19 +4,41 @@ :leave-active-class="proxy?.animate.searchAnimate.leave">
- + + {{ isListView ? '卡片显示' : '卡片显示' }} + + + {{ !isListView ? '列表显示' : '列表显示' }} + + - - + + + + - - + + + + + + + + - - + + + + + + + + 搜索 @@ -28,184 +50,187 @@ - - - - - - - - - - - - - - - - - - - - - - +
+
+ + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/src/views/equipmentManagement/deviceType/index.vue b/src/views/equipmentManagement/deviceType/index.vue index ffbd5ba..ee12015 100644 --- a/src/views/equipmentManagement/deviceType/index.vue +++ b/src/views/equipmentManagement/deviceType/index.vue @@ -42,7 +42,8 @@ @@ -97,9 +98,15 @@ - + - + + + + + @@ -180,7 +187,8 @@ const queryFormRef = ref>(); const userFormRef = ref>(); const formDialogRef = ref>(); const loadingIng = ref(false) -const modelDictionaryOptions = ref([]); +const appmodelDictionaryOptions = ref([]); +const pcmodelDictionaryOptions = ref([]); const dialog = reactive({ visible: false, title: '' @@ -237,11 +245,11 @@ const getList = async () => { }; const getDict = async () => { const res = await getDicts('app_model_dictionary'); - modelDictionaryOptions.value = res.data; + appmodelDictionaryOptions.value = res.data; } const pcgetDict = async () => { const res = await getDicts('pc_model_dictionary'); - modelDictionaryOptions.value = res.data; + pcmodelDictionaryOptions.value = res.data; } /** 搜索按钮操作 */ const handleQuery = () => { @@ -321,7 +329,9 @@ const submitForm = () => { try { const payload = { ...form.value, - modelDictionary: form.value.modelDictionary, + appModelDictionary: form.value.modelDictionary, + pcModelDictionary:form.value.modelDictionary, + locateMode: Number(form.value.locateMode), communicationMode: Number(form.value.communicationMode) };