addProjectOffer.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. const _Http = getApp().globalData.http,
  2. getTime = require("../../utils/getTime");
  3. let source = 0,
  4. sa_quotedpriceid = 0,
  5. quotedpricenotes = [],
  6. address = "";
  7. Page({
  8. data: {
  9. loading: false,
  10. showAll: false,
  11. form: [{
  12. label: "项目",
  13. error: false,
  14. errMsg: "",
  15. type: "route",
  16. url: "/packageA/select/project/select",
  17. value: "",
  18. params: {
  19. "id": 20221020143503,
  20. content: {
  21. nocache: true,
  22. "type": 1,
  23. "where": {
  24. "condition": "",
  25. }
  26. },
  27. },
  28. interrupt: true,
  29. query: "&radio=true",
  30. placeholder: "选择项目",
  31. valueName: "sa_projectid",
  32. checking: "base",
  33. required: true
  34. }, {
  35. label: "产品系列",
  36. error: false,
  37. errMsg: "",
  38. type: "option",
  39. optionNmae: "itemtype",
  40. optionType: "checkbox", //复选 radio 单选
  41. value: "",
  42. placeholder: "请选择产品系列",
  43. valueName: "itemtype",
  44. checking: "base",
  45. required: true
  46. }, {
  47. label: "折扣(%)",
  48. error: false,
  49. errMsg: "",
  50. hint: "请输入0-100%",
  51. type: "digit",
  52. value: "",
  53. placeholder: "请填写折扣(%)",
  54. valueName: "discountrate", //绑定的字段名称
  55. required: false, //必填
  56. checking: `^(100|\\d{0,2})(\\.\\d{1,2})?$`, //0-100%
  57. slot: "discountrate"
  58. }, {
  59. label: "报价日期",
  60. error: false,
  61. errMsg: "",
  62. type: "date",
  63. value: getTime.formatTime(new Date(), '-').split(' ')[0],
  64. placeholder: "报价日期",
  65. valueName: "billdate",
  66. checking: "base",
  67. required: false
  68. }, {
  69. label: "有效期",
  70. error: false,
  71. errMsg: "",
  72. type: "dateRange",
  73. value: [getTime.formatTime(new Date(), '-').split(' ')[0], ""],
  74. placeholder: ['生效日期', '截止日期'],
  75. valueName: "invaliddate",
  76. checking: "base",
  77. required: true
  78. }, {
  79. label: "备注",
  80. error: false,
  81. errMsg: "",
  82. type: "textarea",
  83. value: "",
  84. placeholder: "报价单说明",
  85. valueName: "remarks",
  86. required: false, //必填
  87. }],
  88. disabled: true
  89. },
  90. onLoad(options) {
  91. let form = this.data.form;
  92. /* 项目商机进入 */
  93. if (options.sa_projectid) {
  94. let data = JSON.parse(options.sa_projectid);
  95. if (data.sa_projectid) {
  96. form[0].value = data.sa_projectid;
  97. form[0].disabled = true;
  98. source = 1;
  99. form.splice(1, 0, {
  100. label: "选择客户",
  101. error: false,
  102. errMsg: "",
  103. type: "route",
  104. url: "/packageA/select/setclient/select",
  105. value: "",
  106. params: {
  107. id: 20221027143702,
  108. "content": {
  109. nocache: true,
  110. "sa_projectid": data.sa_projectid[1][0],
  111. "where": {
  112. "condition": ""
  113. }
  114. },
  115. },
  116. query: "&radio=true&idname=sys_enterpriseid",
  117. placeholder: "选择客户",
  118. valueName: "sys_enterpriseid",
  119. checking: "base",
  120. required: true,
  121. interrupt: true
  122. });
  123. //业务员
  124. form.splice(6, 0, {
  125. label: "业务员",
  126. error: false,
  127. errMsg: "",
  128. type: "route",
  129. url: "/packageA/select/contacts/select",
  130. value: "",
  131. params: {
  132. "id": "20230306144402",
  133. "content": {
  134. nocache: true,
  135. "type": 2, //type:1客户2:项目
  136. "sa_projectid": data.sa_projectid[1][0],
  137. "where": {
  138. "condition": ""
  139. }
  140. }
  141. },
  142. query: "&radio=true&idname=hrid",
  143. placeholder: "选择业务员",
  144. valueName: "saler_hrid",
  145. checking: "base",
  146. required: true
  147. });
  148. };
  149. this.setData({
  150. disabled: false,
  151. form
  152. });
  153. };
  154. if (options.data) {
  155. let data1 = JSON.parse(options.data);
  156. sa_quotedpriceid = data1.sa_quotedpriceid;
  157. quotedpricenotes = data1.quotedpricenotes;
  158. address = data1.address;
  159. data1.sa_projectid = [data1.projectname, [data1.sa_projectid]]
  160. data1.discountrate = data1.discountrate == 1 ? 100 : (data1.discountrate * 100).toFixed(2)
  161. form = form.map(v => {
  162. if (v.valueName == "invaliddate") {
  163. v.value = [data1.begdate, data1.enddate]
  164. } else {
  165. v.value = data1[v.valueName] || "";
  166. }
  167. return v
  168. })
  169. form.splice(1, 0, {
  170. label: "选择客户",
  171. error: false,
  172. errMsg: "",
  173. type: "route",
  174. url: "/packageA/select/setclient/select",
  175. value: [data1.enterprisename, [data1.sys_enterpriseid]],
  176. params: {
  177. id: 20221027143702,
  178. "content": {
  179. nocache: true,
  180. "sa_projectid": data1.sa_projectid[1][0],
  181. "where": {
  182. "condition": ""
  183. }
  184. },
  185. },
  186. interrupt: true,
  187. query: "&radio=true&idname=sys_enterpriseid",
  188. placeholder: "选择客户",
  189. valueName: "sys_enterpriseid",
  190. checking: "base",
  191. required: true,
  192. interrupt: true
  193. });
  194. form.splice(2, 0, {
  195. label: "联系人",
  196. error: false,
  197. errMsg: "",
  198. type: "route",
  199. url: "/packageA/select/contacts/select",
  200. value: [data1.contactsname, [data1.sys_phonebookid]],
  201. params: {
  202. "id": "20240614151004",
  203. "content": {
  204. nocache: true,
  205. "sys_enterpriseid": data1.sys_enterpriseid,
  206. sa_projectid: data1.sa_projectid[1][0],
  207. pageNumber: 1,
  208. pageSize: 10,
  209. pageTotal: 1,
  210. "where": {
  211. "condition": "",
  212. "workaddress": 0
  213. }
  214. }
  215. },
  216. query: "&radio=true&idname=sys_phonebookid",
  217. placeholder: "选择客户联系人",
  218. valueName: "sys_phonebookid",
  219. checking: "base",
  220. required: false
  221. });
  222. form.splice(6, 0, {
  223. label: "业务员",
  224. error: false,
  225. errMsg: "",
  226. type: "route",
  227. url: "/packageA/select/contacts/select",
  228. value: [data1.name, [data1.saler_hrid]],
  229. params: {
  230. "id": "20230306144402",
  231. "content": {
  232. nocache: true,
  233. "type": 2, //type:1客户2:项目
  234. "sa_projectid": data1.sa_projectid[1][0],
  235. "where": {
  236. "condition": ""
  237. }
  238. }
  239. },
  240. query: "&radio=true&idname=hrid",
  241. placeholder: "选择业务员",
  242. valueName: "saler_hrid",
  243. checking: "base",
  244. required: true
  245. });
  246. this.setData({
  247. form,
  248. })
  249. }
  250. },
  251. /* 打断处理form */
  252. interrupt(e) {
  253. let {
  254. data,
  255. form,
  256. temporary
  257. } = e.detail;
  258. console.log("处理", data, form, temporary)
  259. if (temporary.item.value[0] == data.value[0]) return wx.navigateBack();
  260. let obj = {};
  261. temporary.item.value = data.value;
  262. switch (temporary.item.valueName) {
  263. case "sa_projectid":
  264. obj = {
  265. label: "选择客户",
  266. error: false,
  267. errMsg: "",
  268. type: "route",
  269. url: "/packageA/select/setclient/select",
  270. value: "",
  271. params: {
  272. id: 20221027143702,
  273. "content": {
  274. nocache: true,
  275. "sa_projectid": data.value[1][0],
  276. "where": {
  277. "condition": ""
  278. }
  279. },
  280. },
  281. interrupt: true,
  282. query: "&radio=true&idname=sys_enterpriseid",
  283. placeholder: "选择客户",
  284. valueName: "sys_enterpriseid",
  285. checking: "base",
  286. required: true
  287. };
  288. form.splice(1, form[1].label == "选择客户" ? 1 : 0, obj);
  289. address = data.item.province + data.item.city + data.item.county + data.item.address
  290. //业务员
  291. let hr = {
  292. label: "业务员",
  293. error: false,
  294. errMsg: "",
  295. type: "route",
  296. url: "/packageA/select/contacts/select",
  297. value: "",
  298. params: {
  299. "id": "20230306144402",
  300. "content": {
  301. nocache: true,
  302. "type": 2, //type:1客户2:项目
  303. "sa_projectid": data.value[1][0],
  304. "where": {
  305. "condition": ""
  306. }
  307. }
  308. },
  309. query: "&radio=true&idname=hrid",
  310. placeholder: "选择业务员",
  311. valueName: "saler_hrid",
  312. checking: "base",
  313. required: true
  314. };
  315. form.splice(6, form[6].label == "业务员" ? 1 : 0, hr);
  316. break;
  317. case "sys_enterpriseid":
  318. obj = {
  319. label: "联系人",
  320. error: false,
  321. errMsg: "",
  322. type: "route",
  323. url: "/packageA/select/contacts/select",
  324. value: "",
  325. params: {
  326. "id": "20240614151004",
  327. "content": {
  328. nocache: true,
  329. "sys_enterpriseid": data.value[1][0],
  330. sa_projectid: form.find(v => v.valueName == 'sys_enterpriseid').params.content.sa_projectid,
  331. pageNumber: 1,
  332. pageSize: 10,
  333. pageTotal: 1,
  334. "where": {
  335. "condition": "",
  336. "workaddress": 0
  337. }
  338. }
  339. },
  340. query: "&radio=true&idname=sys_phonebookid",
  341. placeholder: "选择客户联系人",
  342. valueName: "sys_phonebookid",
  343. checking: "base",
  344. required: false
  345. };
  346. form.splice(2, form[2].label == "联系人" ? 1 : 0, obj);
  347. break;
  348. }
  349. form[temporary.index] = temporary.item;
  350. wx.navigateBack()
  351. this.setData({
  352. form
  353. })
  354. },
  355. submit() {
  356. this.setData({
  357. loading: true
  358. })
  359. let content = {
  360. ...this.selectComponent("#Form").submit(),
  361. sa_quotedpriceid,
  362. quotedpricenotes,
  363. address,
  364. source
  365. };
  366. content.sys_enterpriseid = content.sys_enterpriseid[1] ? content.sys_enterpriseid[1][0] : 0;
  367. content.projectname = content.sa_projectid[0] || "";
  368. content.sa_projectid = content.sa_projectid[1] ? content.sa_projectid[1][0] : 0;
  369. content.sys_phonebookid = content.sys_phonebookid ? content.sys_phonebookid[1][0] : 0;
  370. content.discountrate = (content.discountrate / 100).toFixed(4) || 1;
  371. content.saler_hrid = content.saler_hrid[1] ? content.saler_hrid[1][0] : 0;
  372. content.begdate = content.invaliddate[0];
  373. content.enddate = content.invaliddate[1];
  374. delete(content.invaliddate)
  375. _Http.basic({
  376. "id": 20221020164803,
  377. "version": 1,
  378. content
  379. }).then(res => {
  380. this.setData({
  381. loading: false
  382. })
  383. console.log("添加项目报价单", res)
  384. wx.showToast({
  385. title: res.msg != '成功' ? res.msg : '保存成功',
  386. icon: "none"
  387. })
  388. if (res.msg != '成功') return;
  389. setTimeout(() => {
  390. let pages = getCurrentPages(),
  391. page = pages[pages.length - 2];
  392. if (page.__route__ == 'packageA/offers/detail') {
  393. page.getDetail(true);
  394. wx.navigateBack()
  395. } else {
  396. if (page.__route__ == 'packageA/offers/index') {
  397. page.getList(true);
  398. } else if (page.__route__ == 'packageA/project/detail') {
  399. let model = page.selectComponent("#Offers");
  400. model.getList(model.data.sa_projectid, true);
  401. }
  402. wx.redirectTo({
  403. url: '/packageA/offers/detail?sa_quotedpriceid=' + res.data.sa_quotedpriceid
  404. })
  405. }
  406. }, 300)
  407. })
  408. },
  409. // 是否显示全部
  410. onChange({
  411. detail
  412. }) {
  413. this.setData({
  414. showAll: detail
  415. })
  416. },
  417. /* 表单必填项是否完成 */
  418. onConfirm({
  419. detail
  420. }) {
  421. this.setData({
  422. disabled: detail
  423. })
  424. }
  425. })