合伙人运营小程序
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 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. const api = require('../../api/index.js');
  2. Page({
  3. data: {
  4. activeTab: 0,
  5. carInfo: {},
  6. Details:[],
  7. alertData: [], // 补充:告警列表数据(核心缺失字段)
  8. pageNum: 1, // 当前页码
  9. pageSize: 10, // 每页条数
  10. totalPages: 0, // 总数据量(建议字段名改为 totalCount 更易理解)
  11. hasMore: true, // 是否还有更多数据
  12. isLoading: false, // 是否正在加载(防止重复请求)
  13. electricitydata:[] // 充放电记录
  14. },
  15. onLoad(options) {
  16. console.log(options);
  17. // 接收首页传递的车辆数据
  18. // const car = JSON.parse(options.car);
  19. // console.log(car);
  20. this.setData({carInfo: options});
  21. this.getVehicleDetails();
  22. // 补充:页面加载时初始化告警数据
  23. this.initAlertData(true);
  24. this.Electricalrecording()
  25. },
  26. // 实时数据
  27. getVehicleDetails(){
  28. let data = {
  29. carId: this.data.carInfo.id
  30. }
  31. api.request(`/syscar/selectcardrive`, 'post', data, { isPublic: false })
  32. .then((data) => {
  33. console.log('实时数据:', data.data);
  34. if (data.code === 200) {
  35. this.setData({
  36. Details: data.data
  37. })
  38. }
  39. })
  40. .catch((err) => {
  41. console.error('实时数据请求失败:', err);
  42. });
  43. },
  44. // 消息数据加载(完整补充版)
  45. initAlertData(isRefresh = true) {
  46. // 防止重复加载
  47. if (this.data.isLoading) return;
  48. // 设置加载状态
  49. this.setData({ isLoading: true });
  50. // 分页参数处理:刷新重置为1,加载更多则+1
  51. const pageNum = isRefresh ? 1 : this.data.pageNum + 1;
  52. const pageSize = this.data.pageSize;
  53. // 请求参数(关联当前车辆ID)
  54. let data = {
  55. faultstatus: '',
  56. carId: this.data.carInfo.id,
  57. pageNum,
  58. pageSize
  59. };
  60. api.request(`/alarm/selectalarm`, 'post', data, { isPublic: false })
  61. .then((res) => {
  62. console.log('告警数据请求结果:', res);
  63. if (res.code === 200) {
  64. const { data: responseData } = res;
  65. const { data: list, totalPages } = responseData;
  66. // 数据处理:刷新=覆盖,加载更多=追加
  67. const newAlertData = isRefresh
  68. ? list
  69. : [...this.data.alertData, ...list];
  70. // 修正:判断是否还有更多数据(当前列表长度 < 总数据量)
  71. const hasMore = newAlertData.length < totalPages;
  72. console.log('告警列表:', newAlertData);
  73. console.log('当前页码:', pageNum);
  74. console.log('总数据量:', totalPages);
  75. console.log('是否有更多:', hasMore);
  76. // 更新数据
  77. this.setData({
  78. alertData: newAlertData, // 告警列表
  79. pageNum: pageNum, // 更新当前页码
  80. totalPages: totalPages, // 更新总数据量
  81. hasMore: hasMore // 更新是否有更多数据
  82. });
  83. }
  84. })
  85. .catch((err) => {
  86. console.error('告警数据请求失败:', err);
  87. wx.showToast({
  88. title: '告警数据加载失败',
  89. icon: 'none',
  90. duration: 1500
  91. });
  92. })
  93. .finally(() => {
  94. // 无论成功失败,都结束加载状态
  95. this.setData({ isLoading: false });
  96. });
  97. },
  98. // 充放电记录
  99. Electricalrecording(){
  100. let data = {
  101. carId: this.data.carInfo.id,
  102. pageNum:1,
  103. pageSize:10
  104. }
  105. api.request(`/sysworkorder/selectpartnerworkorder`, 'post', data, { isPublic: false })
  106. .then((data) => {
  107. console.log('实时数据:', data.data);
  108. if (data.code === 200) {
  109. this.setData({
  110. electricitydata: data.data.data
  111. })
  112. }
  113. })
  114. .catch((err) => {
  115. console.error('实时数据请求失败:', err);
  116. });
  117. },
  118. // 切换标签页(补充:切换后可根据标签筛选告警,示例逻辑)
  119. changeTab(e) {
  120. const index = e.currentTarget.dataset.index;
  121. this.setData({activeTab: index}, () => {
  122. // 可选:切换标签后重新加载对应状态的告警数据
  123. // this.initAlertData(true);
  124. });
  125. },
  126. // 下拉刷新(补充:真实调用刷新逻辑)
  127. onPullDownRefresh() {
  128. // 调用刷新模式的告警数据加载
  129. this.initAlertData(true).then(() => {
  130. wx.stopPullDownRefresh();
  131. wx.showToast({title: '刷新成功', icon: 'success', duration: 1500});
  132. }).catch(() => {
  133. wx.stopPullDownRefresh();
  134. wx.showToast({title: '刷新失败', icon: 'none', duration: 1500});
  135. });
  136. },
  137. // 补充:上拉加载更多(小程序原生生命周期)
  138. onReachBottom() {
  139. // 无更多数据/正在加载时,不执行
  140. if (!this.data.hasMore || this.data.isLoading) return;
  141. // 调用加载更多模式的告警数据加载
  142. this.initAlertData(false);
  143. },
  144. /**
  145. * 跳转工单详情页
  146. */
  147. toOrderDetail(e) {
  148. console.log(e);
  149. const order = e.currentTarget.dataset.order;
  150. if (!order.workorderId) return;
  151. // 跳转工单详情页(替换为你的详情页路径)
  152. wx.navigateTo({
  153. url: `/pages/orderdetails/index?id=${order.workorderId}`
  154. });
  155. },
  156. onUnload() {}
  157. })