addSetclientOffer.js 9.4 KB

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