From 75e2b9a394251beb60ef61b8e36b66c5fecbed2b Mon Sep 17 00:00:00 2001 From: ZHW <1941286652@qq.com> Date: Sat, 27 Dec 2025 21:57:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/src/views/equipment/WaterSupplier.vue | 87 ++++++++++++- .../views/equipment/WaterSupplierDetail.vue | 118 +++++++++++++++++- 2 files changed, 197 insertions(+), 8 deletions(-) diff --git a/src/main/resources/web/src/views/equipment/WaterSupplier.vue b/src/main/resources/web/src/views/equipment/WaterSupplier.vue index c6b2471..274d2eb 100644 --- a/src/main/resources/web/src/views/equipment/WaterSupplier.vue +++ b/src/main/resources/web/src/views/equipment/WaterSupplier.vue @@ -124,13 +124,24 @@
- +
+
+ + +

请先选择片区以加载可关联的制水机

+
@@ -191,11 +202,15 @@ const showAddModal = ref(false) const newDevice = ref({ deviceId: '', deviceName: '', - areaId: 'A', + areaId: '', + parentMakerId: '', // 关联的制水机ID installLocation: '', deviceType: 'water_supply' }) +// 新增:可关联的制水机列表 +const availableMakers = ref<{id: string, name: string}[]>([]) + // 新增:删除设备相关状态 const showDeleteModal = ref(false) const currentDeviceId = ref('') @@ -249,6 +264,50 @@ const loadWaterSuppliers = async () => { } } +// 加载指定片区内可用的制水机设备 +const loadAvailableMakers = async () => { + if (!newDevice.value.areaId) { + availableMakers.value = [] + return + } + + try { + const token = authStore.token + if (!token) { + router.push('/login') + return + } + + // 请求该片区内的所有制水机 + const params = new URLSearchParams(); + params.append('areaId', newDevice.value.areaId); + params.append('deviceType', 'water_maker'); + + const queryString = params.toString(); + const url = `/api/web/device-status/by-type${queryString ? `?${queryString}` : ''}`; + + const response = await request>(url, { method: 'GET' }); + + if (response.code === 200 && response.data && Array.isArray(response.data)) { + // 转换为选项格式,包含ID和位置信息 + availableMakers.value = response.data.map((maker: any) => ({ + id: maker.deviceId, + name: `${maker.deviceId} - ${maker.installLocation}` + })) + } else { + console.error('获取制水机列表失败:', response.message); + availableMakers.value = [] + } + } catch (error) { + console.error('加载制水机列表失败:', error); + availableMakers.value = [] + if ((error as Error).message.includes('401')) { + authStore.logout() + router.push('/login') + } + } +} + // 多条件过滤设备数据 const filteredDevices = computed(() => { return devices.value.filter(device => { @@ -310,7 +369,8 @@ const addDevice = async () => { deviceName: newDevice.value.deviceName, areaId: newDevice.value.areaId, installLocation: newDevice.value.installLocation, - deviceType: newDevice.value.deviceType + deviceType: newDevice.value.deviceType, + parentMakerId: newDevice.value.parentMakerId || null // 关联的制水机ID } const result = await request>('/api/web/device/add', { @@ -321,6 +381,7 @@ const addDevice = async () => { if (result.code === 200) { await loadWaterSuppliers() showAddModal.value = false + resetAddForm() alert('设备添加成功') } else { alert(`设备添加失败: ${result.message}`) @@ -335,6 +396,19 @@ const addDevice = async () => { } } +// 重置添加表单 +const resetAddForm = () => { + newDevice.value = { + deviceId: '', + deviceName: '', + areaId: '', + parentMakerId: '', + installLocation: '', + deviceType: 'water_supply' + } + availableMakers.value = [] +} + // 删除设备 const deleteDevice = async () => { try { @@ -649,6 +723,13 @@ onMounted(() => { color: white; } +.help-text { + font-size: 12px; + color: #8c8c8c; + margin-top: 4px; + margin-bottom: 0; +} + /* 响应式调整 */ @media (max-width: 768px) { .filters { diff --git a/src/main/resources/web/src/views/equipment/WaterSupplierDetail.vue b/src/main/resources/web/src/views/equipment/WaterSupplierDetail.vue index 42baa37..0a6bd5a 100644 --- a/src/main/resources/web/src/views/equipment/WaterSupplierDetail.vue +++ b/src/main/resources/web/src/views/equipment/WaterSupplierDetail.vue @@ -1,4 +1,3 @@ -