177 lines
4.1 KiB
JavaScript
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();
|
|
});
|
|
},
|
|
});
|