addSetclientOffer.js 11 KB

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