const api = require('../../api/index.js'); Page({ /** * 页面的初始数据 */ data: { // 工单核心信息(适配储能车运营) workOrderInfo: { orderNo: 'DSB20260204001', // 工单编号(电速宝前缀DSB) status: 'assigned', // 工单状态:pending(待指派)、assigned(已指派)、processing(处理中)、completed(已完成)、canceled(已取消) statusText: '已指派', statusClass: 'status-assigned', createTime: '2026-02-04 09:30:45', faultType: '电池故障-充放电异常', // 报障类型 faultDesc: '储能车BMS系统提示充放电电流异常,最大电流仅达到额定值的50%,电池包温度无异常,整车无其他报错码,现场初步检查线路无松动。', // 故障详情 faultImgs: [ // 故障图片 '/images/fault1.jpg', '/images/fault2.jpg' ], // 报障人信息 reporter: { name: '李工', phone: '13900139000' }, // 储能车设备信息(核心) device: { carNo: 'DSB-EC2026008', // 车辆编号 batteryModel: '宁德时代-21700-100kWh', // 储能电池型号 location: '上海市浦东新区储能站A区08号车位', // 设备位置 runTime: '3680h', // 运行时长 faultPos: '电池包3号模组' // 故障位置 }, // 指派信息(已指派才有) assigner: { name: '王工程师', phone: '13700137000' }, assignTime: '2026-02-04 10:05:30', // 指派时间 estimateTime: '4小时', // 预计处理时长 // 处理进度时间轴 }, processList: [ { step: '未分配', time: '2026-02-04 09:30:45', operator: '李工', desc: '指派王工程师负责现场处理' }, { step: '待处理', time: '2026-02-04 09:45:12', operator: '平台管理员', desc: '指派王工程师负责现场处理' }, { step: '行驶中', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }, { step: '到达地点', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }, { step: '工作中', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }, { step: '工作完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }, { step: '支付完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }, { step: '支付完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' } ], showBottomBar: true, // 是否显示底部操作栏 // 控制查看更多的显示状态,默认隐藏 showMore: false }, /** * 生命周期函数--监听页面加载 * 实际开发中从options获取工单ID,请求接口获取真实数据 */ onLoad(options) { // 模拟切换工单状态:pending/assigned/processing/completed/canceled this.updateWorkOrderStatus(options.id); // this.updateWorkOrderStatus('processing'); // this.updateWorkOrderStatus('completed'); // this.updateWorkOrderStatus('canceled'); }, /** * 核心方法:更新工单状态(自动同步样式、文本) * @param {String} status 工单状态 */ updateWorkOrderStatus(status) { // 状态映射表:文本+样式类 let data={ workorderId:status } api.request(`/sysworkorder/selectworkorderid`, 'post',data ,{ isPublic: false }) .then((data) => { console.log(data.data); if (data.code==200) { // mockOrders = data.data let processList = [ { step: '创建时间', time: data.data.workorderCreatetime, operator: '系统派发', desc: '自动创建' }, { step: '分配时间', time: '2026-02-04 09:45:12', operator: '系统派发', desc: '系统派发' }, { step: '开始行驶', time: data.data.traveltime, operator: '运营', desc: '运营指派王师傅负责执行订单' }, { step: '到达地点', time: data.data.arrivaltime, operator: '运营', desc: '运营指派王师傅负责执行订单' }, { step: '开始工作', time: data.data.startworktime, operator: '运营', desc: '运营指派王师傅负责执行订单' }, { step: '工作完成', time: data.data.endworktime, operator: '运营', desc: '运营指派王师傅负责执行订单' }, { step: '订单1完成', time: '2026-02-04 10:05:30', operator: '运营', desc: '运营指派王师傅负责执行订单' }, ] this.setData({ workOrderInfo:data.data, processList:processList }); } }) .catch((err) => { console.error('请求失败:', err); }); // 更新筛选后的列表 }, /** * 切换查看更多/收起状态 */ toggleShowMore() { this.setData({ showMore: !this.data.showMore }); }, /** * 工具方法:格式化当前时间为YYYY-MM-DD HH:MM:SS */ formatTime() { const date = new Date(); const y = date.getFullYear(); const m = (date.getMonth() + 1).toString().padStart(2, '0'); const d = date.getDate().toString().padStart(2, '0'); const h = date.getHours().toString().padStart(2, '0'); const mm = date.getMinutes().toString().padStart(2, '0'); const s = date.getSeconds().toString().padStart(2, '0'); return `${y}-${m}-${d} ${h}:${mm}:${s}`; }, /** * 操作事件:取消工单(仅待指派状态可操作) */ cancelOrder() { wx.showModal({ title: '提示', content: '确定要取消该工单吗?取消后将无法恢复', success: (res) => { if (res.confirm) { this.updateWorkOrderStatus('canceled'); wx.showToast({ title: '工单已取消', icon: 'success' }); } } }); }, /** * 操作事件:指派工程师(仅待指派状态可操作) * 实际开发中跳转到「工程师选择页面」 */ assignEngineer() { wx.navigateTo({ url: '/pages/engineer-select/engineer-select?workOrderNo=' + this.data.workOrderInfo.orderNo }); // 模拟指派后更新状态 // this.updateWorkOrderStatus('assigned'); }, /** * 操作事件:开始处理(仅已指派状态可操作) */ startProcess() { wx.showModal({ title: '提示', content: '确定开始处理该工单吗?', success: (res) => { if (res.confirm) { this.updateWorkOrderStatus('processing'); wx.showToast({ title: '已开始处理', icon: 'success' }); } } }); }, /** * 操作事件:完成工单(仅处理中状态可操作) * 实际开发中可跳转到「处理结果提交页面」 */ completeOrder() { wx.showModal({ title: '提示', content: '确定完成该工单吗?', success: (res) => { if (res.confirm) { this.updateWorkOrderStatus('completed'); wx.showToast({ title: '工单处理完成', icon: 'success' }); // 实际开发中可跳转至「处理结果填写页」 // wx.navigateTo({ // url: '/pages/process-result/process-result?workOrderNo=' + this.data.workOrderInfo.orderNo // }); } } }); }, /** * 操作事件:重新处理(仅已完成状态可操作) */ reworkOrder() { wx.showModal({ title: '提示', content: '确定重新处理该工单吗?', success: (res) => { if (res.confirm) { this.updateWorkOrderStatus('processing'); wx.showToast({ title: '已发起重新处理', icon: 'success' }); } } }); } });