addAndEditor.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. let _Http = getApp().globalData.http,
  2. count = null;
  3. Page({
  4. data: {
  5. loading: false,
  6. showAll: false,
  7. repetitionShow: false,
  8. repetitionList: [],
  9. isSubmit: false,
  10. oldcontactsid: 0,
  11. sys_phonebookid: 0,
  12. form: [{
  13. label: "客户(企业)",
  14. error: false,
  15. errMsg: "",
  16. type: "textarea",
  17. value: "",
  18. placeholder: "客户(企业)名称",
  19. valueName: "enterprisename",
  20. checking: "base",
  21. slot: "info",
  22. required: true
  23. }, {
  24. label: "企业简称",
  25. error: false,
  26. errMsg: "",
  27. type: "textarea",
  28. value: "",
  29. placeholder: "企业简称",
  30. valueName: "abbreviation",
  31. checking: "base",
  32. required: false
  33. }, {
  34. label: "客户类型",
  35. error: false,
  36. errMsg: "",
  37. type: "option",
  38. optionNmae: "customertypemx",
  39. optionType: "radio", //复选 radio 单选
  40. value: "",
  41. placeholder: "客户类型",
  42. valueName: "type",
  43. checking: "base",
  44. required: true
  45. }, {
  46. label: "企业等级",
  47. error: false,
  48. errMsg: "",
  49. type: "option",
  50. optionNmae: "agentgrade",
  51. optionType: "radio", //复选 radio 单选
  52. value: "",
  53. placeholder: "企业等级",
  54. valueName: "grade",
  55. checking: "base",
  56. required: false
  57. }, {
  58. label: "客户分类",
  59. error: false,
  60. errMsg: "",
  61. type: "option",
  62. optionNmae: "customergrade",
  63. optionType: "radio", //复选 radio 单选
  64. value: "",
  65. placeholder: "客户分类",
  66. valueName: "customergrade",
  67. checking: "base",
  68. required: false
  69. }, {
  70. label: "客户行业",
  71. error: false,
  72. errMsg: "",
  73. type: "option", //自定义选择 配合预定接口
  74. optionNmae: "industry", //选择类型
  75. optionType: "checkbox", //复选 radio 单选
  76. value: "",
  77. placeholder: "客户所属行业",
  78. valueName: "industry",
  79. checking: "base",
  80. required: false
  81. }, {
  82. label: "税号",
  83. error: false,
  84. errMsg: "",
  85. type: "textarea",
  86. value: "",
  87. placeholder: "企业税号",
  88. valueName: "taxno",
  89. checking: "base",
  90. required: false
  91. }, {
  92. label: "法人",
  93. error: false,
  94. errMsg: "",
  95. type: "text",
  96. value: "",
  97. placeholder: "企业法人",
  98. valueName: "contact",
  99. checking: "base",
  100. required: false
  101. }, {
  102. label: "联系电话",
  103. error: false,
  104. errMsg: "",
  105. type: "number",
  106. value: "",
  107. placeholder: "联系电话",
  108. valueName: "telephone",
  109. required: false
  110. }, {
  111. label: "省市县",
  112. error: false,
  113. errMsg: "",
  114. type: "region",
  115. value: [],
  116. placeholder: "所在地区",
  117. valueName: "region",
  118. required: true
  119. }, {
  120. label: "详细地址",
  121. error: false,
  122. errMsg: "",
  123. type: "textarea",
  124. value: "",
  125. placeholder: "详细地址",
  126. valueName: "address",
  127. checking: "base",
  128. required: false
  129. }, {
  130. label: "上级企业",
  131. error: false,
  132. errMsg: "",
  133. type: "route",
  134. url: "/packageA/select/setclient/select",
  135. value: "",
  136. params: {
  137. id: 20221012164402,
  138. content: {
  139. nocache: true,
  140. "type": 1,
  141. "isExport": 0,
  142. isend: 0,
  143. "where": {
  144. "condition": "",
  145. "status": "", //状态
  146. "startdate": "",
  147. "enddate": ""
  148. },
  149. "sort": [{
  150. sortname: "默认",
  151. sorted: 1,
  152. sortid: 67,
  153. reversed: 0
  154. }]
  155. },
  156. },
  157. query: "&radio=true&idname=sa_customersid",
  158. placeholder: "选择上级企业",
  159. valueName: "parentid",
  160. checking: "base",
  161. required: false
  162. }, {
  163. label: "客户来源",
  164. error: false,
  165. errMsg: "",
  166. type: "textarea",
  167. value: "",
  168. placeholder: "客户来源",
  169. valueName: "source",
  170. checking: "base",
  171. required: false
  172. }, {
  173. label: "归属经销商",
  174. error: false,
  175. errMsg: "",
  176. type: "route",
  177. url: "/packageA/select/setclient/select",
  178. value: "",
  179. params: {
  180. "id": 20230214162602,
  181. "content": {
  182. "hrid": wx.getStorageSync('userMsg').hrid,
  183. "where": {
  184. "condition": ""
  185. }
  186. },
  187. },
  188. query: "&radio=true&idname=sa_agentsid",
  189. placeholder: "归属经销商",
  190. valueName: "sa_agentsid",
  191. checking: "base",
  192. required: false
  193. }],
  194. content: {
  195. "sa_customersid": 0, //新增是传0
  196. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  197. "sa_customerpoolid": 0, //客户池(公海池)ID,默认或没有的时候传0
  198. phonenumber: "",
  199. ispublic: 0, //是否为公海客户
  200. },
  201. disabled: true,
  202. countDown: "", //查重倒计时
  203. },
  204. queryClient() {
  205. let data = this.selectComponent("#Form").query();
  206. if (data.enterprisename == '') {
  207. wx.showToast({
  208. title: getApp().globalData.Language.getMapText('您还未填写企业名称'),
  209. icon: "none"
  210. });
  211. } else {
  212. this.setData({
  213. form: this.selectComponent("#Form").data.form,
  214. })
  215. this.selectComponent("#Info").queryClient(data.enterprisename)
  216. }
  217. },
  218. /* 工商查询 */
  219. introduce({
  220. detail
  221. }) {
  222. let item = detail;
  223. let data = {
  224. enterprisename: item.companyName, //企业名称
  225. taxno: item.taxNum, //税号
  226. contact: item.legalPerson, //法人
  227. region: [item.regProvince ? item.regProvince : item.regCity, item.regCity, item.regArea], //地区
  228. address: item.address,
  229. telephone: item.phone,
  230. }
  231. this.setData({
  232. form: this.data.form.map(v => {
  233. if (data[v.valueName]) v.value = data[v.valueName];
  234. return v
  235. })
  236. })
  237. },
  238. /* 打断 */
  239. interrupt({
  240. detail
  241. }) {
  242. let {
  243. data,
  244. form,
  245. temporary
  246. } = detail;
  247. if (data.label == '联系方式') {
  248. let index = temporary.index + 1
  249. if (data.value == 0) {
  250. data.telephone = form[index].value;
  251. if (data.telephone.join() == ',') data.telephone = "";
  252. form[index] = {
  253. label: "手机号",
  254. error: false,
  255. errMsg: "",
  256. type: "number",
  257. value: data.phonenumber,
  258. placeholder: "联系人手机号码",
  259. valueName: "phonenumber",
  260. required: true,
  261. checking: "phone"
  262. }
  263. } else {
  264. if (typeof (form[index].value) == 'object') form[index].value = "";
  265. data.phonenumber = form[index].value;
  266. form[index] = {
  267. label: "座机电话",
  268. error: false,
  269. errMsg: "",
  270. type: "telephone",
  271. value: data.telephone || ["", ""],
  272. valueName: "telephone1",
  273. required: true,
  274. checking: "telephone"
  275. }
  276. };
  277. this.setData({
  278. form
  279. })
  280. }
  281. },
  282. /* 打开通讯录 */
  283. openContacts() {
  284. let that = this;
  285. let page = that.selectComponent("#Form");
  286. let form = page.data.form,
  287. index = form.findIndex(v => v.label == '联系人');
  288. if (form[index].disabled) return;
  289. wx.navigateTo({
  290. url: '/packageA/setclient/contacts',
  291. })
  292. getApp().globalData.handleSelect = (item) => {
  293. wx.showModal({
  294. title: getApp().globalData.Language.getMapText('提示'),
  295. content: getApp().globalData.Language.getMapText('是否确定选择') + item.name,
  296. cancelText: getApp().globalData.Language.getMapText('取消'),
  297. confirmText: getApp().globalData.Language.getMapText('确定'),
  298. complete: ({
  299. confirm
  300. }) => {
  301. if (confirm) {
  302. form[index].value = item.name;
  303. that.data.oldcontactsid = item.contactsid;
  304. that.data.sys_phonebookid = item.sys_phonebookid;
  305. if (item.phonenumber.indexOf('-') !== -1) {
  306. form[index + 1].value = "1";
  307. form[index + 2] = {
  308. label: "座机电话",
  309. error: false,
  310. errMsg: "",
  311. type: "telephone",
  312. value: item.phonenumber.split("-"),
  313. valueName: "telephone1",
  314. required: true,
  315. checking: "telephone"
  316. }
  317. } else {
  318. form[index + 1].value = "0";
  319. form[index + 2] = {
  320. label: "手机号",
  321. error: false,
  322. errMsg: "",
  323. type: "number",
  324. value: item.phonenumber,
  325. placeholder: "联系人手机号码",
  326. valueName: "phonenumber",
  327. required: true,
  328. checking: "phone"
  329. }
  330. }
  331. that.setData({
  332. form
  333. })
  334. wx.navigateBack()
  335. getApp().globalData.handleSelect = null;
  336. page.confirm()
  337. }
  338. }
  339. })
  340. };
  341. },
  342. setOption(item) {
  343. let i = this.data.form.findIndex(v => v.valueName == item.valueName);
  344. this.setData({
  345. [`form[${i}]`]: item
  346. })
  347. },
  348. onLoad(options) {
  349. if (options.data) {
  350. let data = JSON.parse(options.data);
  351. let form = this.data.form.map(v => {
  352. if (v.valueName != 'region') {
  353. v.value = data[v.valueName] || "";
  354. if (v.valueName == "grade") v.value = data[v.valueName] + "";
  355. } else {
  356. v.value = data.province ? [data.province, data.city, data.county] : []
  357. };
  358. // if (data.isagent && ['enterprisename', 'region', 'sa_agentsid', 'grade', 'address', 'contact', 'telephone'].includes(v.valueName)) v.disabled = true;
  359. return v
  360. })
  361. try {
  362. let contactsinfo = data.contactsinfo[0];
  363. let isTelephone = contactsinfo.telephone ? "1" : "0";
  364. form.splice(4, 0, isTelephone == 0 ? {
  365. label: "手机号",
  366. error: false,
  367. errMsg: "",
  368. type: "number",
  369. value: contactsinfo.phonenumber || '',
  370. placeholder: "联系人手机号码",
  371. valueName: "phonenumber",
  372. required: false,
  373. checking: "phone",
  374. disabled: true
  375. } : {
  376. label: "座机电话",
  377. error: false,
  378. errMsg: "",
  379. type: "telephone",
  380. value: contactsinfo.telephone.split("-"),
  381. valueName: "telephone1",
  382. required: false,
  383. checking: "telephone",
  384. disabled: true
  385. })
  386. form.splice(4, 0, {
  387. label: "联系方式",
  388. error: false,
  389. errMsg: "",
  390. hint: "",
  391. type: "radio",
  392. value: isTelephone,
  393. radioList: [{
  394. id: '0',
  395. name: '手机号'
  396. }, {
  397. id: '1',
  398. name: '座机电话'
  399. }],
  400. valueName: "isTelephone", //绑定的字段名称
  401. required: false, //必填
  402. interrupt: true,
  403. checking: `true`,
  404. phonenumber: "",
  405. telephone: ["", ""],
  406. disabled: true
  407. })
  408. form.splice(4, 0, {
  409. label: "联系人",
  410. error: false,
  411. errMsg: "",
  412. type: "textarea",
  413. value: contactsinfo.name || '',
  414. placeholder: "联系人名称",
  415. valueName: "name",
  416. checking: "base",
  417. slot: "TXL",
  418. required: false,
  419. disabled: true
  420. })
  421. } catch (error) {
  422. }
  423. this.setData({
  424. disabled: false,
  425. content: {
  426. sa_customersid: data.sa_customersid,
  427. sys_enterpriseid: data.sys_enterpriseid,
  428. sa_customerpoolid: data.sa_customerpoolid,
  429. },
  430. form
  431. })
  432. } else {
  433. this.data.form.splice(4, 0, {
  434. label: "手机号",
  435. error: false,
  436. errMsg: "",
  437. type: "number",
  438. value: "",
  439. placeholder: "联系人手机号码",
  440. valueName: "phonenumber",
  441. required: true,
  442. checking: "phone"
  443. })
  444. this.data.form.splice(4, 0, {
  445. label: "联系方式",
  446. error: false,
  447. errMsg: "",
  448. hint: "",
  449. type: "radio",
  450. value: "0",
  451. radioList: [{
  452. id: '0',
  453. name: '手机号'
  454. }, {
  455. id: '1',
  456. name: '座机电话'
  457. }],
  458. valueName: "isTelephone", //绑定的字段名称
  459. required: true, //必填
  460. interrupt: true,
  461. checking: `true`,
  462. phonenumber: "",
  463. telephone: ["", ""]
  464. })
  465. this.data.form.splice(4, 0, {
  466. label: "联系人",
  467. error: false,
  468. errMsg: "",
  469. type: "textarea",
  470. value: "",
  471. placeholder: "联系人名称",
  472. valueName: "name",
  473. checking: "base",
  474. slot: "TXL",
  475. required: true
  476. })
  477. this.setData({
  478. form: this.data.form
  479. })
  480. }
  481. getApp().globalData.Language.getLanguagePackage(this, options.data ? '编辑客户' : '新建客户');
  482. },
  483. repClose() {
  484. /* if (this.data.isSubmit) {
  485. let that = this;
  486. wx.showModal({
  487. title: getApp().globalData.Language.getMapText('提示'),
  488. content: `是否继续创建客户`,
  489. cancelText: getApp().globalData.Language.getMapText('取消'),
  490. confirmText: getApp().globalData.Language.getMapText('确定'),
  491. complete: (res) => {
  492. if (res.confirm) that.handleSubmit(true);
  493. }
  494. })
  495. } */
  496. this.setData({
  497. repetitionShow: false,
  498. isSubmit: false
  499. })
  500. },
  501. /* 表单必填项是否完成 */
  502. onConfirm({
  503. detail
  504. }) {
  505. this.setData({
  506. disabled: detail
  507. })
  508. },
  509. // 是否显示全部
  510. onChange({
  511. detail
  512. }) {
  513. this.setData({
  514. showAll: detail
  515. })
  516. },
  517. /* 查询是否重复 */
  518. async queryRepetition(e) {
  519. let data = this.selectComponent("#Form").query();
  520. /* if (data.enterprisename == '') return wx.showToast({
  521. title: `您还未填写企业名称`,
  522. icon: "none"
  523. }); */
  524. data.province = data.region[0] || "";
  525. data.city = data.region[1] || "";
  526. data.county = data.region[2] || "";
  527. let res = await this.handleQueryRepetition({
  528. sa_customersid: this.data.content.sa_customersid,
  529. ...data
  530. });
  531. console.log("查询重复", res)
  532. if (res.msg != '成功') return wx.showToast({
  533. title: res.msg,
  534. icon: "none"
  535. });
  536. this.setData({
  537. countDown: 6
  538. });
  539. count = setInterval(() => {
  540. let countDown = this.data.countDown;
  541. if (countDown == 0) {
  542. clearInterval(count);
  543. this.setData({
  544. countDown: ""
  545. })
  546. } else {
  547. countDown--;
  548. this.setData({
  549. countDown
  550. })
  551. }
  552. }, 1000)
  553. if (res.total == 0) {
  554. getApp().globalData.Language.showToast('未查询到疑似重复的客户信息')
  555. } else {
  556. wx.showToast({
  557. title: getApp().globalData.Language.getMapText('查询到') + res.total + getApp().globalData.Language.getMapText('条疑似重复客户信息'),
  558. icon: "none"
  559. })
  560. this.setData({
  561. repetitionShow: true,
  562. repetitionList: res.data
  563. })
  564. }
  565. },
  566. /* 处理查重 */
  567. handleQueryRepetition(content) {
  568. return _Http.basic({
  569. "id": 20221208172002,
  570. content
  571. })
  572. },
  573. async submit() {
  574. let data = this.selectComponent("#Form").submit();
  575. data.province = data.region[0] || "";
  576. data.city = data.region[1] || "";
  577. data.county = data.region[2] || "";
  578. let query = await this.handleQueryRepetition({
  579. sa_customersid: this.data.content.sa_customersid,
  580. ...data
  581. });
  582. if (query.total != 0) {
  583. wx.showModal({
  584. title: getApp().globalData.Language.getMapText('提示'),
  585. content: getApp().globalData.Language.getMapText('查询到') + query.total + getApp().globalData.Language.getMapText('条疑似重复客户信息,不允许保存'),
  586. confirmText: getApp().globalData.Language.getMapText('确定'),
  587. showCancel: false
  588. })
  589. this.setData({
  590. repetitionShow: true,
  591. repetitionList: query.data,
  592. isSubmit: true
  593. })
  594. } else {
  595. this.handleSubmit();
  596. }
  597. },
  598. handleSubmit(tag = false) {
  599. this.setData({
  600. loading: true
  601. })
  602. let data = this.selectComponent("#Form").submit();
  603. data.province = data.region[0] || "";
  604. data.city = data.region[1] || "";
  605. data.county = data.region[2] || "";
  606. data.parentid = data.parentid[1] ? data.parentid[1][0] : 0;
  607. data.sa_agentsid = data.sa_agentsid[1] ? data.sa_agentsid[1][0] : 0;
  608. delete(data.region);
  609. try {
  610. data.contactsinfo = {
  611. "name": data.name,
  612. "telephone": "",
  613. "phonenumber": data.isTelephone == 0 ? data.phonenumber || '' : data.telephone1.join("-") || '',
  614. oldcontactsid: this.data.oldcontactsid,
  615. sys_phonebookid: this.data.sys_phonebookid || 0,
  616. }
  617. } catch (error) {
  618. }
  619. _Http.basic({
  620. "id": 20221012163902,
  621. "content": {
  622. ...this.data.content,
  623. ...data,
  624. }
  625. }).then(res => {
  626. this.setData({
  627. loading: false
  628. })
  629. console.log("新建客户", res)
  630. if (res.msg != '成功') return wx.showToast({
  631. title: res.msg,
  632. icon: "none"
  633. })
  634. getApp().globalData.Language.showToast('保存成功')
  635. //绑定疑似重复标签
  636. if (tag) _Http.basic({
  637. "id": 20220929090901,
  638. "content": {
  639. "ownertable": "sa_customers",
  640. "ownerid": res.data.sa_customersid,
  641. "datatag": ["疑似重复"]
  642. }
  643. })
  644. setTimeout(() => {
  645. getCurrentPages().forEach(v => {
  646. switch (v.__route__) {
  647. case 'packageA/setclient/index':
  648. v.getList(true);
  649. break;
  650. case 'packageA/setclient/detail':
  651. v.getDetail();
  652. v.selectComponent("#Contacts").getList(this.data.content.sa_customersid, true)
  653. wx.navigateBack()
  654. break;
  655. }
  656. })
  657. let pages = getCurrentPages();
  658. if (pages[pages.length - 2].__route__ == 'packageA/setclient/index') wx.redirectTo({
  659. url: '/packageA/setclient/detail?id=' + res.data.sa_customersid,
  660. })
  661. }, tag ? 500 : 300)
  662. })
  663. },
  664. })