index.js 7.1 KB

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