const { deviceApi } = require("../../utils/api"); Page({ data: { device_id: null, device: null, subDevices: [], loading: true, loadError: false, // 子设备状态相关 statusDialogVisible: false, selectedStatus: 0, currentSubDeviceForStatus: null, deviceStatusMap: { 0: "空闲", 1: "使用中", 2: "维护中", }, // 状态选择选项 statusOptions: [ { value: 0, label: "空闲", color: "#06a56c" }, { value: 1, label: "使用中", color: "#1890ff" }, { value: 2, label: "维护中", color: "#fa8c16" }, ], }, onLoad(options) { if (options.device_id) { this.setData({ device_id: options.device_id }); this.loadDeviceInfo(); this.loadSubDevices(); } else { wx.showToast({ title: "缺少设备ID", icon: "error", }); wx.navigateBack(); } }, onShow() { // 页面显示时刷新数据 if (this.data.device_id) { this.loadSubDevices(); } }, // 加载设备信息 async loadDeviceInfo() { try { const response = await deviceApi.getDevices(); const deviceList = response.data.list || response.data || []; const device = deviceList.find((d) => d.id === parseInt(this.data.device_id)); if (device) { this.setData({ device }); } } catch (error) { // 加载设备信息失败,继续执行 } }, // 加载子设备列表 async loadSubDevices() { this.setData({ loading: true, loadError: false }); try { const response = await deviceApi.getSubDevicesByDeviceId(this.data.device_id); const subDevices = response.data.list || response.data || []; // 为每个子设备添加状态信息 const formattedSubDevices = subDevices.map((subDevice) => ({ ...subDevice, status: subDevice.status !== undefined ? subDevice.status : 0, statusText: this.data.deviceStatusMap[subDevice.status !== undefined ? subDevice.status : 0], })); this.setData({ subDevices: formattedSubDevices, loading: false, }); } catch (error) { this.setData({ loadError: true, loading: false, }); } }, // 显示状态更改对话框 showStatusDialog(e) { const subDevice = e.currentTarget.dataset.subdevice; this.setData({ statusDialogVisible: true, selectedStatus: subDevice.status !== undefined ? subDevice.status : 0, currentSubDeviceForStatus: subDevice, }); }, // 关闭状态对话框 closeStatusDialog() { this.setData({ statusDialogVisible: false, selectedStatus: 0, currentSubDeviceForStatus: null, }); }, // 选择状态 selectStatus(e) { const status = parseInt(e.currentTarget.dataset.status); this.setData({ selectedStatus: status, }); }, // 确认状态更改 async confirmStatusChange() { const { selectedStatus, currentSubDeviceForStatus } = this.data; try { await deviceApi.updateSubDevice(currentSubDeviceForStatus.id, { status: selectedStatus, name: currentSubDeviceForStatus.name, }); wx.showToast({ title: "状态更新成功", icon: "success", }); this.closeStatusDialog(); this.loadSubDevices(); } catch (error) { wx.showToast({ title: "状态更新失败", icon: "error", }); } }, // 查看子设备保养记录 viewMaintenance(e) { const subDevice = e.currentTarget.dataset.subdevice; wx.navigateTo({ url: `/pages/device_maintenance/index?sub_device_id=${subDevice.id}`, }); }, // 添加保养记录 addMaintenance(e) { const subDevice = e.currentTarget.dataset.subdevice; wx.navigateTo({ url: `/pages/device_maintenance/create/index?sub_device_id=${subDevice.id}`, }); }, // 返回上一页 onBack() { wx.navigateBack(); }, // 下拉刷新 onPullDownRefresh() { this.loadSubDevices() .then(() => { wx.stopPullDownRefresh(); }) .catch(() => { wx.stopPullDownRefresh(); }); }, });