index.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. const _Http = getApp().globalData.http,
  2. getHeight = require("../../utils/getRheRemainingHeight");
  3. Page({
  4. data: {
  5. navList: [{
  6. label: "全部",
  7. icon: "icon-webxialaxuanxiangjiantou",
  8. color: "",
  9. width: "",
  10. id: "1"
  11. }, {
  12. label: "创建时间",
  13. icon: "icon-quxiao",
  14. color: "",
  15. width: "",
  16. id: "3"
  17. }, {
  18. label: "筛选",
  19. icon: "icon-daoruxialajiantou",
  20. color: "",
  21. width: "",
  22. id: "2"
  23. }],
  24. classShow: false,
  25. classActions: [{
  26. name: '全部',
  27. index: 0
  28. }, {
  29. name: '我负责的',
  30. index: 1
  31. },
  32. {
  33. name: '我参与的',
  34. index: 2
  35. },
  36. {
  37. name: "我下属负责的",
  38. index: 3
  39. }, {
  40. name: "我下属参与的",
  41. index: 4
  42. }
  43. ],
  44. content: {
  45. "type": 0,
  46. "pageNumber": 1,
  47. "pageSize": 20,
  48. "where": {
  49. "condition": "",
  50. "status": "",
  51. "startdate": "",
  52. "enddate": ""
  53. },
  54. "sort": [{
  55. sortname: "默认",
  56. sorted: 1,
  57. sortid: 68,
  58. reversed: 0
  59. }]
  60. },
  61. filter: {
  62. show: false,
  63. status: ['跟进中', '已成交', '已失败'], //状态项
  64. statusActive: "",
  65. projectTypeList: [], //项目类型项
  66. typeActive: "",
  67. stageList: [], //项目阶段项目
  68. stageActive: "",
  69. startdate: "",
  70. enddate: ""
  71. }
  72. },
  73. onLoad(options) {
  74. this.getList();
  75. },
  76. getList(init = false) {
  77. if (init.detail != undefined) init = init.detail;
  78. if (init) this.setData({
  79. ['content.pageNumber']: 1
  80. })
  81. if (this.data.content.pageNumber > this.data.content.pageTotal) return;
  82. _Http.basic({
  83. "id": 20221020143502,
  84. content: this.data.content
  85. }).then(res => {
  86. console.log("客户商机列表", res)
  87. this.selectComponent('#ListBox').RefreshToComplete();
  88. if (res.msg != '成功') return wx.showToast({
  89. title: res.data,
  90. icon: "none"
  91. })
  92. // this.getTags(res.data.map(v => v.sys_enterpriseid));
  93. this.setData({
  94. 'content.pageNumber': res.pageNumber + 1,
  95. 'content.pageTotal': res.pageTotal,
  96. 'content.total': res.total,
  97. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data)
  98. })
  99. })
  100. },
  101. /* 处理筛选 */
  102. handleFilter({
  103. detail
  104. }) {
  105. const data = this.data.filter;
  106. switch (detail) {
  107. case 'confirm':
  108. this.setData({
  109. 'content.where.status': data.statusActive,
  110. "content.where.projecttype": data.typeActive,
  111. "content.where.stagename": data.stageActive,
  112. 'content.where.startdate': data.startdate,
  113. 'content.where.enddate': data.enddate,
  114. 'filter.show': false
  115. });
  116. this.getList(true);
  117. break;
  118. case 'reset':
  119. this.setData({
  120. 'filter.statusActive': "",
  121. 'filter.typeActive': "",
  122. 'filter.stageActive': "",
  123. 'filter.startdate': "",
  124. 'filter.enddate': "",
  125. });
  126. this.getList(true)
  127. break;
  128. case 'close':
  129. this.setData({
  130. 'filter.show': false
  131. });
  132. break;
  133. }
  134. },
  135. /* 筛选状态选择 */
  136. selectStatus(e) {
  137. const {
  138. item
  139. } = e.currentTarget.dataset;
  140. this.setData({
  141. "filter.statusActive": this.data.filter.statusActive == item ? "" : item
  142. })
  143. },
  144. /* 筛选项目类 */
  145. selectTypeName(e) {
  146. const {
  147. value
  148. } = e.currentTarget.dataset.item;
  149. if (this.data.filter.typeActive == value) return;
  150. this.setData({
  151. "filter.typeActive": value
  152. });
  153. _Http.basic({
  154. "id": 20221107150004,
  155. "content": {
  156. "projecttype": value
  157. }
  158. }).then(res => {
  159. console.log("模板阶段", res)
  160. if (res.msg != '成功') return wx.showToast({
  161. title: res.data,
  162. icon: "none"
  163. })
  164. this.setData({
  165. "filter.stageList": res.data,
  166. "filter.stageActive": ""
  167. })
  168. })
  169. },
  170. /* 筛选阶段 */
  171. stageStatus(e) {
  172. const {
  173. stagename
  174. } = e.currentTarget.dataset.item;
  175. this.setData({
  176. "filter.stageActive": stagename
  177. })
  178. },
  179. /* 筛选日期范围 */
  180. changeDate(e) {
  181. const name = e.currentTarget.dataset.name,
  182. value = e.detail.value;
  183. this.setData({
  184. [`filter.${name}`]: value
  185. })
  186. },
  187. /* 顶部条件导航回调 */
  188. navClick({
  189. detail
  190. }) {
  191. switch (detail.id) {
  192. case '1':
  193. this.setData({
  194. classShow: true
  195. })
  196. break;
  197. case '2':
  198. _Http.basic({
  199. "classname": "sysmanage.develop.optiontype.optiontype",
  200. "method": "optiontypeselect",
  201. "content": {
  202. nocache: true,
  203. "pageNumber": 1,
  204. "pageSize": 999,
  205. "typename": "projecttype",
  206. "parameter": {
  207. "siteid": wx.getStorageSync('siteP').siteid
  208. }
  209. }
  210. }).then(res => {
  211. console.log("项目类型", res)
  212. if (res.msg != '成功') return wx.showToast({
  213. title: res.data,
  214. icon: "none"
  215. })
  216. this.setData({
  217. 'filter.show': true,
  218. 'filter.projectTypeList': res.data,
  219. })
  220. })
  221. break;
  222. case '3':
  223. this.setData({
  224. 'content.sort[0].reversed': this.data.content.sort[0].reversed == 0 ? 1 : 0
  225. });
  226. this.getList(true)
  227. break;
  228. }
  229. },
  230. classClose() {
  231. this.setData({
  232. classShow: false
  233. })
  234. },
  235. classSelect({
  236. detail
  237. }) {
  238. if (this.data.content.type == detail.index) return this.classClose();
  239. this.setData({
  240. "content.type": detail.index,
  241. 'navList[0].label': detail.name
  242. })
  243. this.classClose();
  244. this.getList(true)
  245. },
  246. onReady() {
  247. getHeight.getHeight('.total', this).then(res => this.setData({
  248. listHeight: res
  249. }));
  250. },
  251. onShareAppMessage() {}
  252. })