index.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. const _Http = getApp().globalData.http,
  2. currency = require("../../utils/currency"),
  3. CNY = (value, symbol = "¥", precision = 2) => currency(value, {
  4. symbol,
  5. precision
  6. }).format();
  7. Component({
  8. options: {
  9. addGlobalClass: true
  10. },
  11. lifetimes: {
  12. attached: function () {
  13. getApp().globalData.Language.getLanguagePackage(this)
  14. let idName = 'sa_customersid',
  15. ParamId = 20230713104104;
  16. switch (this.data.mode) {
  17. case '项目':
  18. ParamId = 20230715112204;
  19. idName = 'sa_projectid';
  20. break;
  21. case '业务员':
  22. ParamId = 20230717101204;
  23. idName = 'hrid';
  24. this.setData({
  25. dateTypes: ["全部", "本年", "本季", "本月"]
  26. })
  27. break;
  28. case '联系人':
  29. ParamId = 20240605133604;
  30. idName = 'sys_phonebookid';
  31. this.setData({
  32. dateTypes: ["全部", "本年", "本季", "本月"],
  33. typeList: [{
  34. remarks: "全部",
  35. value: "全部"
  36. }, {
  37. remarks: "项目报价单",
  38. value: "项目报价单"
  39. }, {
  40. remarks: "客户报价单",
  41. value: "客户报价单"
  42. }],
  43. "content.where.isproject": ""
  44. })
  45. break;
  46. }
  47. this.setData({
  48. idName,
  49. ParamId,
  50. })
  51. }
  52. },
  53. properties: {
  54. mode: {
  55. type: String,
  56. value: "客户"
  57. },
  58. },
  59. data: {
  60. dateTypes: ["全部", "本年"],
  61. dateType: "本年",
  62. type: "全部",
  63. showList: false,
  64. list: [],
  65. "isAll": 0, //1全部 0本年
  66. "content": {
  67. "nocache": true,
  68. "pageNumber": 1,
  69. "pageTotal": 1,
  70. "total": null,
  71. "where": {
  72. type: "",
  73. begdate: "",
  74. enddate: "",
  75. }
  76. },
  77. typeList: []
  78. },
  79. methods: {
  80. getList(id, init) {
  81. let content = this.data.content;
  82. content[this.data.idName] = id;
  83. if (this.data.mode == "业务员") {
  84. content.type = 99;
  85. switch (this.data.dateType) {
  86. case '全部':
  87. content.type = 0
  88. break;
  89. case '本年':
  90. content.type = 1
  91. break;
  92. case '本季':
  93. content.type = 2
  94. break;
  95. case '本月':
  96. content.type = 3
  97. break;
  98. }
  99. } else if (this.data.mode == "联系人") {
  100. content.dateType = this.data.dateType || '自定义'
  101. } else {
  102. content.isAll = this.data.isAll;
  103. }
  104. if (init) {
  105. content.pageNumber = 1;
  106. content.total = null;
  107. }
  108. if (!this.data.showList && content.total != null) return;
  109. if (content.pageNumber > content.pageTotal) return;
  110. _Http.basic({
  111. "id": this.data.ParamId,
  112. content
  113. }).then(res => {
  114. console.log(this.data.mode + "关联报价单", res)
  115. if (res.code != '1') return wx.showToast({
  116. title: res.data,
  117. icon: "none"
  118. })
  119. content.pageNumber = res.pageNumber + 1;
  120. content.pageSize = res.pageSize;
  121. content.pageTotal = res.pageTotal;
  122. content.total = res.total;
  123. res.data = res.data.map(v => {
  124. v.topQuotedpriceamount = CNY((v.quotedpriceamount || 0) / (wx.getStorageSync('languagecode') == 'ZH' ? 10000 : 1000));
  125. v.quotedpriceamount = CNY(v.quotedpriceamount);
  126. v.begdate = v.begdate.split(" ")[0]
  127. v.enddate = v.enddate.split(" ")[0]
  128. try {
  129. v.discountrate = (v.discountrate * 100).toFixed(2) + '%'
  130. } catch (error) {
  131. }
  132. return v
  133. })
  134. this.setData({
  135. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
  136. content,
  137. id: id,
  138. });
  139. try {
  140. this.selectComponent("#TimeRange").onCancel()
  141. } catch (error) {
  142. }
  143. try {
  144. this.selectComponent("#Filtrate").onCancel()
  145. } catch (error) {
  146. }
  147. })
  148. },
  149. changeDate({
  150. detail
  151. }) {
  152. this.setData({
  153. dateType: detail.dateType,
  154. isAll: detail.isAll === "" ? 99 : detail.isAll,
  155. "content.where.begdate": detail.begdate || "",
  156. "content.where.enddate": detail.enddate || ""
  157. })
  158. this.getList(this.data.id, true)
  159. },
  160. changeType({
  161. detail
  162. }) {
  163. let isproject = "";
  164. switch (detail) {
  165. case '项目报价单':
  166. isproject = "1";
  167. break;
  168. case '客户报价单':
  169. isproject = "0";
  170. break;
  171. }
  172. this.setData({
  173. "content.where.isproject": isproject,
  174. type: detail,
  175. })
  176. this.getList(this.data.id, true)
  177. },
  178. shrinkChange({
  179. detail
  180. }) {
  181. this.setData({
  182. showList: detail
  183. })
  184. },
  185. upDateList() {
  186. let content = JSON.parse(JSON.stringify(this.data.content));
  187. try {
  188. content[this.data.idName] = this.data.id;
  189. if (this.data.mode == "业务员") {
  190. content.type = 99;
  191. switch (this.data.dateType) {
  192. case '全部':
  193. content.type = 0
  194. break;
  195. case '本年':
  196. content.type = 1
  197. break;
  198. case '本季':
  199. content.type = 2
  200. break;
  201. case '本月':
  202. content.type = 3
  203. break;
  204. }
  205. } else if (this.data.mode == "联系人") {
  206. content.dateType = this.data.dateType || '自定义'
  207. } else {
  208. content.isAll = this.data.isAll;
  209. }
  210. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  211. content.pageNumber = 1;
  212. } catch (error) {
  213. console.log("error", error)
  214. }
  215. _Http.basic({
  216. id: this.data.ParamId,
  217. content
  218. }).then(res => {
  219. console.log(this.data.mode + "更新关联报价单", res);
  220. if (res.code == '1') {
  221. res.data = res.data.map(v => {
  222. v.topQuotedpriceamount = CNY((v.quotedpriceamount || 0) / (wx.getStorageSync('languagecode') == 'ZH' ? 10000 : 1000));
  223. v.quotedpriceamount = CNY(v.quotedpriceamount);
  224. v.begdate = v.begdate.split(" ")[0]
  225. v.enddate = v.enddate.split(" ")[0]
  226. try {
  227. v.discountrate = (v.discountrate * 100).toFixed(2) + '%'
  228. } catch (error) {
  229. }
  230. return v
  231. })
  232. this.setData({
  233. list: res.data,
  234. "content.total": res.total
  235. })
  236. }
  237. })
  238. }
  239. }
  240. })