index.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. const _Http = getApp().globalData.http,
  2. getHeight = require("../../utils/getRheRemainingHeight");
  3. Page({
  4. data: {
  5. listHeight: null,
  6. navList: [{
  7. label: "全部",
  8. icon: "icon-webxialaxuanxiangjiantou",
  9. color: "",
  10. width: "",
  11. id: "1"
  12. }, {
  13. label: "创建时间",
  14. icon: "icon-shengxu",
  15. color: "",
  16. width: "",
  17. id: "3"
  18. }, {
  19. label: "筛选",
  20. icon: "icon-shaixuan",
  21. color: "",
  22. width: "",
  23. id: "2"
  24. }],
  25. classShow: false,
  26. classActions: [{
  27. name: '全部',
  28. index: 0
  29. }, {
  30. name: '我负责的',
  31. index: 1
  32. },
  33. {
  34. name: '我参与的',
  35. index: 2
  36. },
  37. {
  38. name: "我下属负责的",
  39. index: 3
  40. }, {
  41. name: "我下属参与的",
  42. index: 4
  43. }
  44. ],
  45. content: {
  46. nocache: true,
  47. "type": 0,
  48. "pageNumber": 1,
  49. "pageSize": 20,
  50. "where": {
  51. "condition": "", //模糊搜索
  52. "startdate": "",
  53. "enddate": "",
  54. "status": "", //项目状态
  55. "projecttype": "", //项目类型
  56. "stagename": "", //项目阶段
  57. "tag": "" //标签
  58. },
  59. "sort": []
  60. },
  61. filter: {
  62. show: false,
  63. status: ['跟进中', '已成交', '已失败'], //状态项
  64. statusActive: "",
  65. projectTypeList: [], //项目类型项
  66. typeActive: "",
  67. tagList: [], //标签
  68. tagActive: "",
  69. stageList: [], //项目阶段项目
  70. stageActive: "",
  71. startdate: "",
  72. enddate: ""
  73. }
  74. },
  75. onLoad(options) {
  76. this.getList();
  77. //获取所有阶段
  78. this.getStage();
  79. //获取所有标签
  80. this.getTagList()
  81. },
  82. /* 处理搜索 */
  83. onSearch({
  84. detail
  85. }) {
  86. this.setData({
  87. "content.where.condition": detail
  88. });
  89. this.getList(true);
  90. },
  91. /* 获取列表 */
  92. getList(init = false, data) {
  93. if (init.detail != undefined) init = init.detail;
  94. let content = this.data.content;
  95. if (init) content.pageNumber = 1;
  96. if (content.pageNumber > content.pageTotal) return;
  97. if (data) {
  98. content.where.status = data.statusActive;
  99. content.where.projecttype = data.typeActive;
  100. content.where.stagename = data.stageActive;
  101. content.where.tag = data.tagActive;
  102. content.where.startdate = data.startdate;
  103. content.where.enddate = data.enddate;
  104. }
  105. _Http.basic({
  106. "id": 20221020143502,
  107. content
  108. }).then(res => {
  109. console.log("客户商机列表", res)
  110. this.selectComponent('#ListBox').RefreshToComplete();
  111. if (res.msg != '成功') return wx.showToast({
  112. title: res.data,
  113. icon: "none"
  114. })
  115. res.data = res.data.map(v => {
  116. v.progress = v.stage / v.totalstage * 100;
  117. return v
  118. })
  119. this.setData({
  120. 'content.pageNumber': res.pageNumber + 1,
  121. 'content.pageTotal': res.pageTotal,
  122. 'content.total': res.total,
  123. 'content.sort': res.sort,
  124. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data)
  125. });
  126. this.setListHeight();
  127. this.getTags();
  128. })
  129. },
  130. /* 获取列表标签 */
  131. getTags() {
  132. let list = this.data.list,
  133. ownerids = list.map(v => v.sa_projectid);
  134. _Http.basic({
  135. "id": 20221018102001,
  136. "content": {
  137. nocache: true,
  138. "ownertable": "sa_project",
  139. ownerids
  140. }
  141. }).then(res => {
  142. console.log("标签", res)
  143. for (let key in res.data) {
  144. let index = list.findIndex(v => v.sa_projectid == key);
  145. list[index].tags = res.data[key]
  146. };
  147. console.log(list)
  148. this.setData({
  149. list
  150. })
  151. })
  152. },
  153. /* 添加 */
  154. toAdd() {
  155. wx.navigateTo({
  156. url: '/packageA/project/addAndEdit'
  157. })
  158. },
  159. /* 处理筛选 */
  160. handleFilter({
  161. detail
  162. }) {
  163. const data = this.data.filter;
  164. switch (detail) {
  165. case 'confirm':
  166. this.setData({
  167. 'filter.show': false
  168. });
  169. this.getList(true, data);
  170. break;
  171. case 'reset':
  172. this.setData({
  173. 'filter.statusActive': "",
  174. 'filter.typeActive': "",
  175. 'filter.tagActive': "",
  176. 'filter.stageActive': "",
  177. 'filter.startdate': "",
  178. 'filter.enddate': "",
  179. });
  180. this.getList(true, this.data.filter)
  181. break;
  182. case 'close':
  183. this.setData({
  184. 'filter.show': false
  185. });
  186. break;
  187. }
  188. },
  189. /* 筛选状态选择 */
  190. selectStatus(e) {
  191. const {
  192. item
  193. } = e.currentTarget.dataset;
  194. this.setData({
  195. "filter.statusActive": this.data.filter.statusActive == item ? "" : item
  196. })
  197. },
  198. /* 筛选标签选择 */
  199. selectTag(e) {
  200. const {
  201. item
  202. } = e.currentTarget.dataset;
  203. this.setData({
  204. "filter.tagActive": this.data.filter.tagActive == item.tag ? "" : item.tag
  205. })
  206. },
  207. /* 筛选项目类 */
  208. selectTypeName(e) {
  209. const {
  210. value
  211. } = e.currentTarget.dataset.item;
  212. if (this.data.filter.typeActive == value) return;
  213. this.setData({
  214. "filter.typeActive": value
  215. });
  216. },
  217. /* 筛选阶段 */
  218. stageStatus(e) {
  219. const {
  220. stagename
  221. } = e.currentTarget.dataset.item;
  222. this.setData({
  223. "filter.stageActive": stagename
  224. })
  225. },
  226. /* 筛选日期范围 */
  227. changeDate(e) {
  228. const name = e.currentTarget.dataset.name,
  229. value = e.detail.value;
  230. this.setData({
  231. [`filter.${name}`]: value
  232. })
  233. },
  234. /* 顶部条件导航回调 */
  235. navClick({
  236. detail
  237. }) {
  238. switch (detail.id) {
  239. case '1':
  240. this.setData({
  241. classShow: true
  242. })
  243. break;
  244. case '2':
  245. _Http.basic({
  246. "classname": "sysmanage.develop.optiontype.optiontype",
  247. "method": "optiontypeselect",
  248. "content": {
  249. nocache: true,
  250. "pageNumber": 1,
  251. "pageSize": 999,
  252. "typename": "projecttype",
  253. "parameter": {
  254. "siteid": wx.getStorageSync('siteP').siteid
  255. }
  256. }
  257. }).then(res => {
  258. console.log("项目类型", res)
  259. if (res.msg != '成功') return wx.showToast({
  260. title: res.data,
  261. icon: "none"
  262. })
  263. this.setData({
  264. 'filter.show': true,
  265. 'filter.projectTypeList': res.data,
  266. })
  267. })
  268. break;
  269. case '3':
  270. this.setData({
  271. 'content.sort[0].reversed': this.data.content.sort[0].reversed == 0 ? 1 : 0
  272. });
  273. this.getList(true)
  274. break;
  275. }
  276. },
  277. classClose() {
  278. this.setData({
  279. classShow: false
  280. })
  281. },
  282. classSelect({
  283. detail
  284. }) {
  285. if (this.data.content.type == detail.index) return this.classClose();
  286. this.setData({
  287. "content.type": detail.index,
  288. 'navList[0].label': detail.name
  289. })
  290. this.classClose();
  291. this.getList(true)
  292. },
  293. onReady() {
  294. this.setListHeight();
  295. },
  296. setListHeight() {
  297. getHeight.getHeight('.total', this).then(res => {
  298. if (this.data.listHeight != res)
  299. this.setData({
  300. listHeight: res
  301. })
  302. });
  303. },
  304. /* 获取所有阶段 */
  305. getStage() {
  306. _Http.basic({
  307. "id": 20221116104502,
  308. "content": {
  309. nocache: true,
  310. }
  311. }, false).then(res => {
  312. if (res.msg != '成功') return wx.showToast({
  313. title: res.data,
  314. icon: "none"
  315. })
  316. this.setData({
  317. "filter.stageList": res.data
  318. })
  319. })
  320. },
  321. /* 获取所有标签 */
  322. getTagList() {
  323. _Http.basic({
  324. "id": 20220929085401,
  325. "content": {
  326. "ownertable": 'sa_project',
  327. "ownerid": ""
  328. }
  329. }, false).then(res => {
  330. console.log("标签", res)
  331. this.setData({
  332. "filter.tagList": res.data.option
  333. })
  334. })
  335. },
  336. onShareAppMessage() {}
  337. })