From 8320bf00f8ecdc0e207e2c69d1bd5b64aea78e3f Mon Sep 17 00:00:00 2001 From: ZHW <1941286652@qq.com> Date: Mon, 8 Dec 2025 20:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/DeviceStatusController.java | 25 +- .../resources/web/src/api/deviceStatus.ts | 50 ++ src/main/resources/web/src/views/Profile.vue | 629 ++++++++++++++ .../resources/web/src/views/area/Campus.vue | 598 +++++++++++++ .../resources/web/src/views/area/Urban.vue | 553 ++++++++++++ .../web/src/views/equipment/EquipmentView.vue | 7 + .../web/src/views/equipment/WaterMaker.vue | 804 ++++++++++++++++++ .../src/views/equipment/WaterMakerDetail.vue | 804 ++++++++++++++++++ .../web/src/views/equipment/WaterSupplier.vue | 412 +++++++++ .../web/src/views/personnel/Admin.vue | 371 ++++++++ .../web/src/views/personnel/Maintenance.vue | 387 +++++++++ .../web/src/views/personnel/User.vue | 407 +++++++++ .../web/src/views/workorder/Completed.vue | 290 +++++++ .../src/views/workorder/CompletedDetail.vue | 455 ++++++++++ .../web/src/views/workorder/Pending.vue | 654 ++++++++++++++ .../web/src/views/workorder/Processing.vue | 460 ++++++++++ .../web/src/views/workorder/Review.vue | 281 ++++++ .../web/src/views/workorder/Timeout.vue | 779 +++++++++++++++++ .../web/src/views/workorder/WorkOrderView.vue | 7 + src/main/resources/web/vite.config.ts | 5 +- 20 files changed, 7965 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/web/src/api/deviceStatus.ts create mode 100644 src/main/resources/web/src/views/Profile.vue create mode 100644 src/main/resources/web/src/views/area/Campus.vue create mode 100644 src/main/resources/web/src/views/area/Urban.vue create mode 100644 src/main/resources/web/src/views/equipment/EquipmentView.vue create mode 100644 src/main/resources/web/src/views/equipment/WaterMaker.vue create mode 100644 src/main/resources/web/src/views/equipment/WaterMakerDetail.vue create mode 100644 src/main/resources/web/src/views/equipment/WaterSupplier.vue create mode 100644 src/main/resources/web/src/views/personnel/Admin.vue create mode 100644 src/main/resources/web/src/views/personnel/Maintenance.vue create mode 100644 src/main/resources/web/src/views/personnel/User.vue create mode 100644 src/main/resources/web/src/views/workorder/Completed.vue create mode 100644 src/main/resources/web/src/views/workorder/CompletedDetail.vue create mode 100644 src/main/resources/web/src/views/workorder/Pending.vue create mode 100644 src/main/resources/web/src/views/workorder/Processing.vue create mode 100644 src/main/resources/web/src/views/workorder/Review.vue create mode 100644 src/main/resources/web/src/views/workorder/Timeout.vue create mode 100644 src/main/resources/web/src/views/workorder/WorkOrderView.vue diff --git a/src/main/java/com/campus/water/controller/web/DeviceStatusController.java b/src/main/java/com/campus/water/controller/web/DeviceStatusController.java index 501e405..dc357b4 100644 --- a/src/main/java/com/campus/water/controller/web/DeviceStatusController.java +++ b/src/main/java/com/campus/water/controller/web/DeviceStatusController.java @@ -102,17 +102,24 @@ public class DeviceStatusController { @GetMapping("/by-status") @Operation(summary = "按状态查询设备", description = "根据状态查询设备列表") public ResponseEntity>> getDevicesByStatus( - @RequestParam String status, - @RequestParam(required = false) String areaId, - @RequestParam(required = false) String deviceType) { - try { - List devices = deviceStatusService.getDevicesByStatus(status, areaId, deviceType); - return ResponseEntity.ok(ResultVO.success(devices)); - } catch (Exception e) { - return ResponseEntity.ok(ResultVO.error(500, "查询设备失败: " + e.getMessage())); - } + @RequestParam String status, + @RequestParam(required = false) String areaId, + @RequestParam(required = false) String deviceType) { + + // 添加默认值处理 + if (deviceType == null || deviceType.isEmpty()) { + deviceType = "water_maker"; // 默认值 } + try { + List devices = deviceStatusService.getDevicesByStatus(status, areaId, deviceType); + return ResponseEntity.ok(ResultVO.success(devices)); + } catch (Exception e) { + return ResponseEntity.ok(ResultVO.error(500, "查询设备失败: " + e.getMessage())); + } +} + + @GetMapping("/status-count") @Operation(summary = "设备状态数量统计", description = "统计各状态设备数量") public ResponseEntity>> getDeviceStatusCount( diff --git a/src/main/resources/web/src/api/deviceStatus.ts b/src/main/resources/web/src/api/deviceStatus.ts new file mode 100644 index 0000000..8c11722 --- /dev/null +++ b/src/main/resources/web/src/api/deviceStatus.ts @@ -0,0 +1,50 @@ +// src/api/deviceStatus.ts +import axios from 'axios' + +export const DeviceStatusApi = { + // 获取设备状态列表 - 修改为匹配后端实际接口 + getDevicesByStatus: async (status: string, areaId?: string, deviceType?: string) => { + try { + const params: any = { status } + if (areaId) params.areaId = areaId + if (deviceType) params.deviceType = deviceType + + const response = await axios.get('/api/web/device-status/by-status', { params }) + return response.data + } catch (error) { + throw new Error(`获取设备列表失败: ${error}`) + } + }, + + // 标记设备在线 + markDeviceOnline: async (deviceId: string) => { + try { + const response = await axios.post(`/api/web/device-status/${deviceId}/online`) + return response.data + } catch (error) { + throw new Error(`设置设备在线失败: ${error}`) + } + }, + + // 标记设备离线 + markDeviceOffline: async (deviceId: string, reason?: string) => { + try { + const params = reason ? { reason } : {} + const response = await axios.post(`/api/web/device-status/${deviceId}/offline`, null, { params }) + return response.data + } catch (error) { + throw new Error(`设置设备离线失败: ${error}`) + } + }, + + // 标记设备故障 + markDeviceFault: async (deviceId: string, faultType: string, description: string) => { + try { + const params = { faultType, description } + const response = await axios.post(`/api/web/device-status/${deviceId}/fault`, null, { params }) + return response.data + } catch (error) { + throw new Error(`设置设备故障失败: ${error}`) + } + } +} diff --git a/src/main/resources/web/src/views/Profile.vue b/src/main/resources/web/src/views/Profile.vue new file mode 100644 index 0000000..8ebe31d --- /dev/null +++ b/src/main/resources/web/src/views/Profile.vue @@ -0,0 +1,629 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/area/Campus.vue b/src/main/resources/web/src/views/area/Campus.vue new file mode 100644 index 0000000..18f6055 --- /dev/null +++ b/src/main/resources/web/src/views/area/Campus.vue @@ -0,0 +1,598 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/area/Urban.vue b/src/main/resources/web/src/views/area/Urban.vue new file mode 100644 index 0000000..ad6efd7 --- /dev/null +++ b/src/main/resources/web/src/views/area/Urban.vue @@ -0,0 +1,553 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/equipment/EquipmentView.vue b/src/main/resources/web/src/views/equipment/EquipmentView.vue new file mode 100644 index 0000000..3ddfa2e --- /dev/null +++ b/src/main/resources/web/src/views/equipment/EquipmentView.vue @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/equipment/WaterMaker.vue b/src/main/resources/web/src/views/equipment/WaterMaker.vue new file mode 100644 index 0000000..13bc42c --- /dev/null +++ b/src/main/resources/web/src/views/equipment/WaterMaker.vue @@ -0,0 +1,804 @@ + + + + + + diff --git a/src/main/resources/web/src/views/equipment/WaterMakerDetail.vue b/src/main/resources/web/src/views/equipment/WaterMakerDetail.vue new file mode 100644 index 0000000..7221345 --- /dev/null +++ b/src/main/resources/web/src/views/equipment/WaterMakerDetail.vue @@ -0,0 +1,804 @@ + + + + + + diff --git a/src/main/resources/web/src/views/equipment/WaterSupplier.vue b/src/main/resources/web/src/views/equipment/WaterSupplier.vue new file mode 100644 index 0000000..930438e --- /dev/null +++ b/src/main/resources/web/src/views/equipment/WaterSupplier.vue @@ -0,0 +1,412 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/personnel/Admin.vue b/src/main/resources/web/src/views/personnel/Admin.vue new file mode 100644 index 0000000..efb0218 --- /dev/null +++ b/src/main/resources/web/src/views/personnel/Admin.vue @@ -0,0 +1,371 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/personnel/Maintenance.vue b/src/main/resources/web/src/views/personnel/Maintenance.vue new file mode 100644 index 0000000..c4d1de9 --- /dev/null +++ b/src/main/resources/web/src/views/personnel/Maintenance.vue @@ -0,0 +1,387 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/personnel/User.vue b/src/main/resources/web/src/views/personnel/User.vue new file mode 100644 index 0000000..4c8d46b --- /dev/null +++ b/src/main/resources/web/src/views/personnel/User.vue @@ -0,0 +1,407 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/Completed.vue b/src/main/resources/web/src/views/workorder/Completed.vue new file mode 100644 index 0000000..b675c52 --- /dev/null +++ b/src/main/resources/web/src/views/workorder/Completed.vue @@ -0,0 +1,290 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/CompletedDetail.vue b/src/main/resources/web/src/views/workorder/CompletedDetail.vue new file mode 100644 index 0000000..e410e73 --- /dev/null +++ b/src/main/resources/web/src/views/workorder/CompletedDetail.vue @@ -0,0 +1,455 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/Pending.vue b/src/main/resources/web/src/views/workorder/Pending.vue new file mode 100644 index 0000000..2dcaa6c --- /dev/null +++ b/src/main/resources/web/src/views/workorder/Pending.vue @@ -0,0 +1,654 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/Processing.vue b/src/main/resources/web/src/views/workorder/Processing.vue new file mode 100644 index 0000000..41dd2d1 --- /dev/null +++ b/src/main/resources/web/src/views/workorder/Processing.vue @@ -0,0 +1,460 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/Review.vue b/src/main/resources/web/src/views/workorder/Review.vue new file mode 100644 index 0000000..7c428ce --- /dev/null +++ b/src/main/resources/web/src/views/workorder/Review.vue @@ -0,0 +1,281 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/Timeout.vue b/src/main/resources/web/src/views/workorder/Timeout.vue new file mode 100644 index 0000000..101cbb0 --- /dev/null +++ b/src/main/resources/web/src/views/workorder/Timeout.vue @@ -0,0 +1,779 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/web/src/views/workorder/WorkOrderView.vue b/src/main/resources/web/src/views/workorder/WorkOrderView.vue new file mode 100644 index 0000000..7006779 --- /dev/null +++ b/src/main/resources/web/src/views/workorder/WorkOrderView.vue @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/src/main/resources/web/vite.config.ts b/src/main/resources/web/vite.config.ts index 2880e6f..2c67947 100644 --- a/src/main/resources/web/vite.config.ts +++ b/src/main/resources/web/vite.config.ts @@ -1,8 +1,5 @@ -import { fileURLToPath, URL } from 'node:url' - import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' -import vueDevTools from 'vite-plugin-vue-devtools' // https://vite.dev/config/ export default defineConfig({ @@ -11,7 +8,7 @@ export default defineConfig({ ], resolve: { alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) + '@': '/src' }, }, })