2026-01-15 15:05:29 +08:00

177 lines
4.1 KiB
JavaScript

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();
});
},
});