合伙人运营小程序
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.js 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. const api = require('../../api/index.js');
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. // 工单核心信息(适配储能车运营)
  8. workOrderInfo: {
  9. orderNo: 'DSB20260204001', // 工单编号(电速宝前缀DSB)
  10. status: 'assigned', // 工单状态:pending(待指派)、assigned(已指派)、processing(处理中)、completed(已完成)、canceled(已取消)
  11. statusText: '已指派',
  12. statusClass: 'status-assigned',
  13. createTime: '2026-02-04 09:30:45',
  14. faultType: '电池故障-充放电异常', // 报障类型
  15. faultDesc: '储能车BMS系统提示充放电电流异常,最大电流仅达到额定值的50%,电池包温度无异常,整车无其他报错码,现场初步检查线路无松动。', // 故障详情
  16. faultImgs: [ // 故障图片
  17. '/images/fault1.jpg',
  18. '/images/fault2.jpg'
  19. ],
  20. // 报障人信息
  21. reporter: {
  22. name: '李工',
  23. phone: '13900139000'
  24. },
  25. // 储能车设备信息(核心)
  26. device: {
  27. carNo: 'DSB-EC2026008', // 车辆编号
  28. batteryModel: '宁德时代-21700-100kWh', // 储能电池型号
  29. location: '上海市浦东新区储能站A区08号车位', // 设备位置
  30. runTime: '3680h', // 运行时长
  31. faultPos: '电池包3号模组' // 故障位置
  32. },
  33. // 指派信息(已指派才有)
  34. assigner: {
  35. name: '王工程师',
  36. phone: '13700137000'
  37. },
  38. assignTime: '2026-02-04 10:05:30', // 指派时间
  39. estimateTime: '4小时', // 预计处理时长
  40. // 处理进度时间轴
  41. },
  42. processList: [
  43. { step: '未分配', time: '2026-02-04 09:30:45', operator: '李工', desc: '指派王工程师负责现场处理' },
  44. { step: '待处理', time: '2026-02-04 09:45:12', operator: '平台管理员', desc: '指派王工程师负责现场处理' },
  45. { step: '行驶中', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' },
  46. { step: '到达地点', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' },
  47. { step: '工作中', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' },
  48. { step: '工作完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' },
  49. { step: '支付完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' },
  50. { step: '支付完成', time: '2026-02-04 10:05:30', operator: '运维主管', desc: '指派王工程师负责现场处理' }
  51. ],
  52. showBottomBar: true, // 是否显示底部操作栏
  53. // 控制查看更多的显示状态,默认隐藏
  54. showMore: false
  55. },
  56. /**
  57. * 生命周期函数--监听页面加载
  58. * 实际开发中从options获取工单ID,请求接口获取真实数据
  59. */
  60. onLoad(options) {
  61. // 模拟切换工单状态:pending/assigned/processing/completed/canceled
  62. this.updateWorkOrderStatus(options.id);
  63. // this.updateWorkOrderStatus('processing');
  64. // this.updateWorkOrderStatus('completed');
  65. // this.updateWorkOrderStatus('canceled');
  66. },
  67. /**
  68. * 核心方法:更新工单状态(自动同步样式、文本)
  69. * @param {String} status 工单状态
  70. */
  71. updateWorkOrderStatus(status) {
  72. // 状态映射表:文本+样式类
  73. let data={
  74. workorderId:status
  75. }
  76. api.request(`/sysworkorder/selectworkorderid`, 'post',data ,{ isPublic: false })
  77. .then((data) => {
  78. console.log(data.data);
  79. if (data.code==200) {
  80. // mockOrders = data.data
  81. let processList = [
  82. { step: '创建时间', time: data.data.workorderCreatetime, operator: '系统派发', desc: '自动创建' },
  83. { step: '分配时间', time: '2026-02-04 09:45:12', operator: '系统派发', desc: '系统派发' },
  84. { step: '开始行驶', time: data.data.traveltime, operator: '运营', desc: '运营指派王师傅负责执行订单' },
  85. { step: '到达地点', time: data.data.arrivaltime, operator: '运营', desc: '运营指派王师傅负责执行订单' },
  86. { step: '开始工作', time: data.data.startworktime, operator: '运营', desc: '运营指派王师傅负责执行订单' },
  87. { step: '工作完成', time: data.data.endworktime, operator: '运营', desc: '运营指派王师傅负责执行订单' },
  88. { step: '订单1完成', time: '2026-02-04 10:05:30', operator: '运营', desc: '运营指派王师傅负责执行订单' },
  89. ]
  90. this.setData({
  91. workOrderInfo:data.data,
  92. processList:processList
  93. });
  94. }
  95. })
  96. .catch((err) => {
  97. console.error('请求失败:', err);
  98. });
  99. // 更新筛选后的列表
  100. },
  101. /**
  102. * 切换查看更多/收起状态
  103. */
  104. toggleShowMore() {
  105. this.setData({
  106. showMore: !this.data.showMore
  107. });
  108. },
  109. /**
  110. * 工具方法:格式化当前时间为YYYY-MM-DD HH:MM:SS
  111. */
  112. formatTime() {
  113. const date = new Date();
  114. const y = date.getFullYear();
  115. const m = (date.getMonth() + 1).toString().padStart(2, '0');
  116. const d = date.getDate().toString().padStart(2, '0');
  117. const h = date.getHours().toString().padStart(2, '0');
  118. const mm = date.getMinutes().toString().padStart(2, '0');
  119. const s = date.getSeconds().toString().padStart(2, '0');
  120. return `${y}-${m}-${d} ${h}:${mm}:${s}`;
  121. },
  122. /**
  123. * 操作事件:取消工单(仅待指派状态可操作)
  124. */
  125. cancelOrder() {
  126. wx.showModal({
  127. title: '提示',
  128. content: '确定要取消该工单吗?取消后将无法恢复',
  129. success: (res) => {
  130. if (res.confirm) {
  131. this.updateWorkOrderStatus('canceled');
  132. wx.showToast({
  133. title: '工单已取消',
  134. icon: 'success'
  135. });
  136. }
  137. }
  138. });
  139. },
  140. /**
  141. * 操作事件:指派工程师(仅待指派状态可操作)
  142. * 实际开发中跳转到「工程师选择页面」
  143. */
  144. assignEngineer() {
  145. wx.navigateTo({
  146. url: '/pages/engineer-select/engineer-select?workOrderNo=' + this.data.workOrderInfo.orderNo
  147. });
  148. // 模拟指派后更新状态
  149. // this.updateWorkOrderStatus('assigned');
  150. },
  151. /**
  152. * 操作事件:开始处理(仅已指派状态可操作)
  153. */
  154. startProcess() {
  155. wx.showModal({
  156. title: '提示',
  157. content: '确定开始处理该工单吗?',
  158. success: (res) => {
  159. if (res.confirm) {
  160. this.updateWorkOrderStatus('processing');
  161. wx.showToast({
  162. title: '已开始处理',
  163. icon: 'success'
  164. });
  165. }
  166. }
  167. });
  168. },
  169. /**
  170. * 操作事件:完成工单(仅处理中状态可操作)
  171. * 实际开发中可跳转到「处理结果提交页面」
  172. */
  173. completeOrder() {
  174. wx.showModal({
  175. title: '提示',
  176. content: '确定完成该工单吗?',
  177. success: (res) => {
  178. if (res.confirm) {
  179. this.updateWorkOrderStatus('completed');
  180. wx.showToast({
  181. title: '工单处理完成',
  182. icon: 'success'
  183. });
  184. // 实际开发中可跳转至「处理结果填写页」
  185. // wx.navigateTo({
  186. // url: '/pages/process-result/process-result?workOrderNo=' + this.data.workOrderInfo.orderNo
  187. // });
  188. }
  189. }
  190. });
  191. },
  192. /**
  193. * 操作事件:重新处理(仅已完成状态可操作)
  194. */
  195. reworkOrder() {
  196. wx.showModal({
  197. title: '提示',
  198. content: '确定重新处理该工单吗?',
  199. success: (res) => {
  200. if (res.confirm) {
  201. this.updateWorkOrderStatus('processing');
  202. wx.showToast({
  203. title: '已发起重新处理',
  204. icon: 'success'
  205. });
  206. }
  207. }
  208. });
  209. }
  210. });