index.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. loading: true,
  8. typeList: [{
  9. name: '经销商合作协议',
  10. route: 'type1'
  11. }, {
  12. name: '直销客户合作协议',
  13. route: 'type6'
  14. }, {
  15. name: '经销项目协议',
  16. route: 'type2'
  17. }, {
  18. name: '直销项目协议',
  19. route: 'type3'
  20. }, {
  21. name: '居间协议',
  22. route: 'type4'
  23. }, {
  24. name: '工具使用(借用)协议',
  25. route: 'type5'
  26. }],
  27. navList: [{
  28. label: "我负责的",
  29. icon: "icon-webxialaxuanxiangjiantou",
  30. color: "",
  31. width: "",
  32. id: "1"
  33. }, {
  34. label: "排序",
  35. icon: "icon-jiangxu1",
  36. color: "",
  37. width: "",
  38. id: "sort"
  39. }, {
  40. label: "筛选",
  41. icon: "icon-shaixuan",
  42. color: "",
  43. width: "",
  44. id: "2"
  45. }],
  46. classShow: false,
  47. content: {
  48. "nocache": true,
  49. deleted: 0,
  50. "type": 1,
  51. "version": 1,
  52. "pageNumber": 1,
  53. "pageSize": 20,
  54. "where": {
  55. "condition": "",
  56. "startdate": "",
  57. "enddate": "",
  58. "status": "",
  59. },
  60. "sort": []
  61. },
  62. filter: {
  63. show: false,
  64. type: ['项目', '居间', '工具借用', '框架', '直销'], //状态项
  65. typeActive: "",
  66. status: ['新建', '已提交', '审核', '已终止', '已过期'], //状态项
  67. statusActive: "",
  68. startdate: "",
  69. enddate: ""
  70. }
  71. },
  72. onLoad(options) {
  73. this.setData({
  74. insert: wx.getStorageSync('auth').wcontract.options.some(v => v == 'insert'), //查询新增权限
  75. classActions: wx.getStorageSync('templetList').map(v => {
  76. return {
  77. name: v.templetname,
  78. index: v.templetid
  79. }
  80. }),
  81. 'navList[0].label': wx.getStorageSync('templetList')[0].templetname,
  82. "content.type": wx.getStorageSync('templetList')[0].templetid,
  83. });
  84. this.getList();
  85. },
  86. /* 获取列表 */
  87. getList(init = false, data) {
  88. if (init.detail != undefined) init = init.detail;
  89. let content = this.data.content;
  90. if (init) content.pageNumber = 1;
  91. if (content.pageNumber > content.pageTotal) return;
  92. if (data) {
  93. content.where.status = data.statusActive;
  94. content.where.begindate = data.startdate;
  95. content.where.type = data.typeActive;
  96. content.where.enddate = data.enddate;
  97. }
  98. _Http.basic({
  99. "id": 20221121201502,
  100. content
  101. }).then(res => {
  102. console.log("合同列表", res)
  103. this.selectComponent('#ListBox').RefreshToComplete();
  104. if (res.msg != '成功') return wx.showToast({
  105. title: res.msg,
  106. icon: "none"
  107. })
  108. this.setData({
  109. 'content.pageNumber': res.pageNumber + 1,
  110. 'content.pageTotal': res.pageTotal,
  111. 'content.total': res.total,
  112. 'content.sort': res.sort,
  113. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
  114. loading: false
  115. });
  116. this.setListHeight();
  117. this.getTags();
  118. })
  119. },
  120. /* 处理搜索 */
  121. onSearch({
  122. detail
  123. }) {
  124. this.setData({
  125. "content.where.condition": detail
  126. });
  127. this.getList(true);
  128. },
  129. /* 获取列表标签 */
  130. getTags() {
  131. let list = this.data.list,
  132. ownerids = list.map(v => v.sa_contractid);
  133. _Http.basic({
  134. "id": 20221018102001,
  135. "content": {
  136. nocache: true,
  137. "ownertable": "sa_contract",
  138. ownerids
  139. }
  140. }).then(res => {
  141. console.log("标签", res)
  142. for (let key in res.data) {
  143. let index = list.findIndex(v => v.sa_contractid == key);
  144. list[index].tags = res.data[key]
  145. };
  146. this.setData({
  147. list
  148. })
  149. })
  150. },
  151. onReady() {
  152. this.setListHeight();
  153. },
  154. setListHeight() {
  155. this.selectComponent("#ListBox").setHeight(".total", this);
  156. },
  157. /* 顶部条件导航回调 */
  158. navClick({
  159. detail
  160. }) {
  161. switch (detail.id) {
  162. case '1':
  163. this.setData({
  164. classShow: true
  165. })
  166. break;
  167. case '2':
  168. this.setData({
  169. 'filter.show': true
  170. })
  171. break;
  172. }
  173. },
  174. classClose() {
  175. this.setData({
  176. classShow: false
  177. })
  178. },
  179. classSelect({
  180. detail
  181. }) {
  182. if (this.data.content.type == detail.index) return this.classClose();
  183. this.setData({
  184. "content.type": detail.index,
  185. 'navList[0].label': detail.name
  186. })
  187. this.classClose();
  188. this.getList(true)
  189. },
  190. /* 筛选状态选择 */
  191. selectStatus(e) {
  192. const {
  193. item
  194. } = e.currentTarget.dataset;
  195. this.setData({
  196. "filter.statusActive": this.data.filter.statusActive == item ? "" : item
  197. })
  198. },
  199. /* 筛选状态选择 */
  200. typeStatus(e) {
  201. const {
  202. item
  203. } = e.currentTarget.dataset;
  204. this.setData({
  205. "filter.typeActive": this.data.filter.typeActive == item ? "" : item
  206. })
  207. },
  208. /* 处理筛选 */
  209. handleFilter({
  210. detail
  211. }) {
  212. const data = this.data.filter;
  213. switch (detail) {
  214. case 'confirm':
  215. this.setData({
  216. 'filter.show': false
  217. });
  218. this.getList(true, data);
  219. break;
  220. case 'reset':
  221. this.setData({
  222. 'filter.statusActive': "",
  223. 'filter.typeActive': "",
  224. 'filter.startdate': "",
  225. 'filter.enddate': "",
  226. });
  227. this.getList(true, this.data.filter)
  228. break;
  229. case 'close':
  230. this.setData({
  231. 'filter.show': false
  232. });
  233. break;
  234. }
  235. },
  236. /* 去添加 */
  237. openType() {
  238. this.setData({
  239. typeShow: true
  240. })
  241. },
  242. typeCancel() {
  243. this.setData({
  244. typeShow: false
  245. })
  246. },
  247. /* 选择添加报价形式 */
  248. typeSelect({
  249. detail
  250. }) {
  251. console.log(detail)
  252. if (detail.route) wx.navigateTo({
  253. url: `/packageA/contract/add/${detail.route}/index`,
  254. })
  255. this.typeCancel();
  256. },
  257. onShareAppMessage() {
  258. }
  259. })