index.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. type: "default",
  5. id: 2026052113525502,
  6. content: {
  7. nocache: true,
  8. pageNumber: 1,
  9. pageSize: 20,
  10. where: {
  11. condition: "",
  12. status: ['待开始'],
  13. type: "",
  14. servicetype: "",
  15. tag: [],
  16. begindate_createdate: "",
  17. enddate_createdate: "",
  18. begindate_finishdate: "",
  19. enddate_finishdate: ""
  20. },
  21. },
  22. filtratelist: [],
  23. isback: false,
  24. tabCounts: [],
  25. activeTabIndex: 0,
  26. },
  27. onSearch({
  28. detail
  29. }) {
  30. this.data.content.where.condition = detail;
  31. this.getList(true)
  32. },
  33. onChangeTab({
  34. detail
  35. }) {
  36. let status = [detail.title];
  37. if (detail.title == '进行中') {
  38. status = ['进行中', '暂停'];
  39. }
  40. this.setData({
  41. 'content.where.status': status,
  42. activeTabIndex: detail.name
  43. })
  44. this.getList(true)
  45. },
  46. /* 初始加载所有tab的计数 */
  47. async loadAllTabCounts() {
  48. const tabStatuses = [
  49. ['待开始'],
  50. ['进行中', '暂停'],
  51. ['已完成'],
  52. ['质保卡审批'],
  53. ['作废']
  54. ];
  55. const results = await Promise.all(tabStatuses.map(status => {
  56. return _Http.basic({
  57. id: this.data.id,
  58. content: {
  59. nocache: true,
  60. pageNumber: 1,
  61. pageSize: 1,
  62. where: {
  63. condition: "",
  64. status,
  65. type: "",
  66. servicetype: "",
  67. tag: [],
  68. begindate_createdate: "",
  69. enddate_createdate: "",
  70. begindate_finishdate: "",
  71. enddate_finishdate: ""
  72. }
  73. }
  74. }).then(res => res.code == '1' ? res.total : 0);
  75. }));
  76. console.log("results",results)
  77. this.setData({ tabCounts: results });
  78. },
  79. getList(init = false) {
  80. if (init) this.selectComponent('#ListBox').goTop();
  81. _Http.init(this.data.content, init).then(content => {
  82. _Http.basic({
  83. id: this.data.id,
  84. content
  85. }).then(res => {
  86. this.selectComponent('#ListBox').RefreshToComplete();
  87. if (res.code != '1') return wx.showToast({
  88. title: res.msg,
  89. icon: "none"
  90. })
  91. this.setData({
  92. content: _Http.paging(content, res),
  93. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
  94. [`tabCounts[${this.data.activeTabIndex}]`]: res.total
  95. })
  96. })
  97. })
  98. },
  99. async onLoad(options) {
  100. getApp().globalData.Language.getLanguagePackage(this, '服务工单');
  101. let workTypes = await _Http.getTypes('endcustomerserviceworktype', _Http);
  102. workTypes = workTypes.map(item => ({
  103. ...item,
  104. itemclassname: item.value,
  105. subarea: (item.subvalues || []).map(v => ({ value: item.value + "/" + v, subdep: [] }))
  106. }));
  107. let serviceTypes = await _Http.getTypes('servicebookingtype', _Http);
  108. serviceTypes = serviceTypes.map(item => ({
  109. ...item,
  110. itemclassname: item.value,
  111. subarea: (item.subvalues || []).map(v => ({ value: item.value + "/" + v, subdep: [] }))
  112. }));
  113. let filtratelist = [{
  114. label: "工单类型",
  115. index: null,
  116. showName: "value",
  117. valueKey: "type",
  118. selectKey: "value",
  119. value: "",
  120. type: "multilevelClass",
  121. list: workTypes
  122. }, {
  123. label: "服务类型",
  124. index: null,
  125. showName: "value",
  126. valueKey: "servicetype",
  127. selectKey: "value",
  128. value: "",
  129. type: "multilevelClass",
  130. list: serviceTypes
  131. }, {
  132. label: "标签",
  133. index: null,
  134. showName: "tag",
  135. valueKey: "tag",
  136. selectKey: "tag",
  137. value: "",
  138. list: await (async () => {
  139. let res = await _Http.basic({
  140. id: 20221013104401,
  141. content: {
  142. isExport: 1,
  143. pageNumber: 1,
  144. pageSize: 100,
  145. sys_systemtagid: 63,
  146. where: { condition: "" }
  147. }
  148. })
  149. return res.code == '1' ? res.data : []
  150. })()
  151. }]
  152. this.setData({
  153. filtratelist,
  154. type: options.type || this.data.type,
  155. })
  156. if (options.type && options.type == 'admin') {
  157. this.setData({
  158. "content.isManage": true
  159. })
  160. }
  161. this.getList()
  162. this.loadAllTabCounts()
  163. },
  164. handleFilter({
  165. detail
  166. }) {
  167. detail.condition = this.data.content.where.condition;
  168. detail.status = this.data.content.where.status;
  169. detail.begindate_createdate = detail.startdate || '';
  170. detail.enddate_createdate = detail.enddate || '';
  171. detail.begindate_finishdate = detail.periodstart || '';
  172. detail.enddate_finishdate = detail.periodend || '';
  173. delete detail.startdate;
  174. delete detail.enddate;
  175. delete detail.periodstart;
  176. delete detail.periodend;
  177. detail.tag = detail.tag ? [detail.tag] : [];
  178. this.data.content.where = detail;
  179. this.getList(true);
  180. },
  181. callPhone(e) {
  182. wx.makePhoneCall({
  183. phoneNumber: e.currentTarget.dataset.number
  184. })
  185. },
  186. })