addAndEditor.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  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. form: [{
  12. label: "客户(企业)",
  13. error: false,
  14. errMsg: "",
  15. type: "textarea",
  16. value: "",
  17. placeholder: "客户(企业)名称",
  18. valueName: "enterprisename",
  19. checking: "base",
  20. slot: "info",
  21. required: true
  22. }, {
  23. label: "企业简称",
  24. error: false,
  25. errMsg: "",
  26. type: "textarea",
  27. value: "",
  28. placeholder: "企业简称",
  29. valueName: "abbreviation",
  30. checking: "base",
  31. required: false
  32. }, {
  33. label: "客户类型",
  34. error: false,
  35. errMsg: "",
  36. type: "option",
  37. optionNmae: "customertypemx",
  38. optionType: "radio", //复选 radio 单选
  39. value: "",
  40. placeholder: "客户类型",
  41. valueName: "type",
  42. checking: "base",
  43. required: true
  44. }, {
  45. label: "企业等级",
  46. error: false,
  47. errMsg: "",
  48. type: "option",
  49. optionNmae: "agentgrade",
  50. optionType: "radio", //复选 radio 单选
  51. value: "",
  52. placeholder: "企业等级",
  53. valueName: "grade",
  54. checking: "base",
  55. required: false
  56. }, {
  57. label: "客户分类",
  58. error: false,
  59. errMsg: "",
  60. type: "option",
  61. optionNmae: "customergrade",
  62. optionType: "radio", //复选 radio 单选
  63. value: "",
  64. placeholder: "客户分类",
  65. valueName: "customergrade",
  66. checking: "base",
  67. required: false
  68. }, {
  69. label: "客户行业",
  70. error: false,
  71. errMsg: "",
  72. type: "option", //自定义选择 配合预定接口
  73. optionNmae: "industry", //选择类型
  74. optionType: "checkbox", //复选 radio 单选
  75. value: "",
  76. placeholder: "客户所属行业",
  77. valueName: "industry",
  78. checking: "base",
  79. required: false
  80. }, {
  81. label: "税号",
  82. error: false,
  83. errMsg: "",
  84. type: "textarea",
  85. value: "",
  86. placeholder: "企业税号",
  87. valueName: "taxno",
  88. checking: "base",
  89. required: false
  90. }, {
  91. label: "法人",
  92. error: false,
  93. errMsg: "",
  94. type: "text",
  95. value: "",
  96. placeholder: "企业法人",
  97. valueName: "contact",
  98. checking: "base",
  99. required: false
  100. }, {
  101. label: "联系电话",
  102. error: false,
  103. errMsg: "",
  104. type: "number",
  105. value: "",
  106. placeholder: "联系电话",
  107. valueName: "telephone",
  108. checking: "phone",
  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: `您还未填写企业名称`,
  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.regCity, item.regArea], //地区
  228. address: item.address, //地区
  229. }
  230. this.setData({
  231. form: this.data.form.map(v => {
  232. if (data[v.valueName]) v.value = data[v.valueName];
  233. return v
  234. })
  235. })
  236. },
  237. /* 打断 */
  238. interrupt({
  239. detail
  240. }) {
  241. let {
  242. data,
  243. form,
  244. temporary
  245. } = detail;
  246. if (data.label == '联系方式') {
  247. let index = temporary.index + 1
  248. if (data.value == 0) {
  249. data.telephone = form[index].value;
  250. if (data.telephone.join() == ',') data.telephone = "";
  251. form[index] = {
  252. label: "手机号",
  253. error: false,
  254. errMsg: "",
  255. type: "number",
  256. value: data.phonenumber,
  257. placeholder: "联系人手机号码",
  258. valueName: "phonenumber",
  259. required: true,
  260. checking: "phone"
  261. }
  262. } else {
  263. if (typeof (form[index].value) == 'object') form[index].value = "";
  264. data.phonenumber = form[index].value;
  265. form[index] = {
  266. label: "座机电话",
  267. error: false,
  268. errMsg: "",
  269. type: "telephone",
  270. value: data.telephone || ["", ""],
  271. valueName: "telephone1",
  272. required: true,
  273. checking: "telephone"
  274. }
  275. };
  276. this.setData({
  277. form
  278. })
  279. }
  280. },
  281. /* 打开通讯录 */
  282. openContacts() {
  283. let that = this;
  284. let page = that.selectComponent("#Form");
  285. let form = page.data.form,
  286. index = form.findIndex(v => v.label == '联系人');
  287. if (form[index].disabled) return;
  288. wx.navigateTo({
  289. url: '/packageA/setclient/contacts',
  290. })
  291. getApp().globalData.handleSelect = (item) => {
  292. wx.showModal({
  293. title: '提示',
  294. content: `是否确定选择${item.name}`,
  295. complete: ({
  296. confirm
  297. }) => {
  298. if (confirm) {
  299. form[index].value = item.name;
  300. console.log(item)
  301. that.data.oldcontactsid = item.contactsid
  302. if (item.phonenumber.indexOf('-') !== -1) {
  303. form[index + 1].value = "1";
  304. form[index + 2] = {
  305. label: "座机电话",
  306. error: false,
  307. errMsg: "",
  308. type: "telephone",
  309. value: item.phonenumber.split("-"),
  310. valueName: "telephone1",
  311. required: true,
  312. checking: "telephone"
  313. }
  314. } else {
  315. form[index + 1].value = "0";
  316. form[index + 2] = {
  317. label: "手机号",
  318. error: false,
  319. errMsg: "",
  320. type: "number",
  321. value: item.phonenumber,
  322. placeholder: "联系人手机号码",
  323. valueName: "phonenumber",
  324. required: true,
  325. checking: "phone"
  326. }
  327. }
  328. that.setData({
  329. form
  330. })
  331. wx.navigateBack()
  332. getApp().globalData.handleSelect = null;
  333. page.confirm()
  334. }
  335. }
  336. })
  337. };
  338. },
  339. setOption(item) {
  340. let i = this.data.form.findIndex(v => v.valueName == item.valueName);
  341. this.setData({
  342. [`form[${i}]`]: item
  343. })
  344. },
  345. onLoad(options) {
  346. if (options.data) {
  347. wx.setNavigationBarTitle({
  348. title: '编辑客户',
  349. })
  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. let contactsinfo = data.contactsinfo[0];
  362. let isTelephone = contactsinfo.telephone ? "1" : "0";
  363. form.splice(4, 0, isTelephone == 0 ? {
  364. label: "手机号",
  365. error: false,
  366. errMsg: "",
  367. type: "number",
  368. value: contactsinfo.phonenumber || '',
  369. placeholder: "联系人手机号码",
  370. valueName: "phonenumber",
  371. required: false,
  372. checking: "phone",
  373. disabled: true
  374. } : {
  375. label: "座机电话",
  376. error: false,
  377. errMsg: "",
  378. type: "telephone",
  379. value: contactsinfo.telephone.split("-"),
  380. valueName: "telephone1",
  381. required: false,
  382. checking: "telephone",
  383. disabled: true
  384. })
  385. form.splice(4, 0, {
  386. label: "联系方式",
  387. error: false,
  388. errMsg: "",
  389. hint: "",
  390. type: "radio",
  391. value: isTelephone,
  392. radioList: [{
  393. id: '0',
  394. name: '手机号'
  395. }, {
  396. id: '1',
  397. name: '座机电话'
  398. }],
  399. valueName: "isTelephone", //绑定的字段名称
  400. required: false, //必填
  401. interrupt: true,
  402. checking: `true`,
  403. phonenumber: "",
  404. telephone: ["", ""],
  405. disabled: true
  406. })
  407. form.splice(4, 0, {
  408. label: "联系人",
  409. error: false,
  410. errMsg: "",
  411. type: "textarea",
  412. value: contactsinfo.name || '',
  413. placeholder: "联系人名称",
  414. valueName: "name",
  415. checking: "base",
  416. slot: "TXL",
  417. required: false,
  418. disabled: true
  419. })
  420. this.setData({
  421. disabled: false,
  422. content: {
  423. sa_customersid: data.sa_customersid,
  424. sys_enterpriseid: data.sys_enterpriseid,
  425. sa_customerpoolid: data.sa_customerpoolid,
  426. },
  427. form
  428. })
  429. } else {
  430. this.data.form.splice(4, 0, {
  431. label: "手机号",
  432. error: false,
  433. errMsg: "",
  434. type: "number",
  435. value: "",
  436. placeholder: "联系人手机号码",
  437. valueName: "phonenumber",
  438. required: true,
  439. checking: "phone"
  440. })
  441. this.data.form.splice(4, 0, {
  442. label: "联系方式",
  443. error: false,
  444. errMsg: "",
  445. hint: "",
  446. type: "radio",
  447. value: "0",
  448. radioList: [{
  449. id: '0',
  450. name: '手机号'
  451. }, {
  452. id: '1',
  453. name: '座机电话'
  454. }],
  455. valueName: "isTelephone", //绑定的字段名称
  456. required: true, //必填
  457. interrupt: true,
  458. checking: `true`,
  459. phonenumber: "",
  460. telephone: ["", ""]
  461. })
  462. this.data.form.splice(4, 0, {
  463. label: "联系人",
  464. error: false,
  465. errMsg: "",
  466. type: "textarea",
  467. value: "",
  468. placeholder: "联系人名称",
  469. valueName: "name",
  470. checking: "base",
  471. slot: "TXL",
  472. required: true
  473. })
  474. this.setData({
  475. form: this.data.form
  476. })
  477. }
  478. },
  479. repClose() {
  480. /* if (this.data.isSubmit) {
  481. let that = this;
  482. wx.showModal({
  483. title: '提示',
  484. content: `是否继续创建客户`,
  485. complete: (res) => {
  486. if (res.confirm) that.handleSubmit(true);
  487. }
  488. })
  489. } */
  490. this.setData({
  491. repetitionShow: false,
  492. isSubmit: false
  493. })
  494. },
  495. /* 表单必填项是否完成 */
  496. onConfirm({
  497. detail
  498. }) {
  499. this.setData({
  500. disabled: detail
  501. })
  502. },
  503. // 是否显示全部
  504. onChange({
  505. detail
  506. }) {
  507. this.setData({
  508. showAll: detail
  509. })
  510. },
  511. /* 查询是否重复 */
  512. async queryRepetition(e) {
  513. let data = this.selectComponent("#Form").query();
  514. /* if (data.enterprisename == '') return wx.showToast({
  515. title: `您还未填写企业名称`,
  516. icon: "none"
  517. }); */
  518. data.province = data.region[0] || "";
  519. data.city = data.region[1] || "";
  520. data.county = data.region[2] || "";
  521. let res = await this.handleQueryRepetition({
  522. sa_customersid: this.data.content.sa_customersid,
  523. ...data
  524. });
  525. console.log("查询重复", res)
  526. if (res.msg != '成功') return wx.showToast({
  527. title: res.msg,
  528. icon: "none"
  529. });
  530. this.setData({
  531. countDown: 6
  532. });
  533. count = setInterval(() => {
  534. let countDown = this.data.countDown;
  535. if (countDown == 0) {
  536. clearInterval(count);
  537. this.setData({
  538. countDown: ""
  539. })
  540. } else {
  541. countDown--;
  542. this.setData({
  543. countDown
  544. })
  545. }
  546. }, 1000)
  547. if (res.total == 0) {
  548. wx.showToast({
  549. title: '未查询到疑似重复的客户信息',
  550. icon: "none"
  551. })
  552. } else {
  553. wx.showToast({
  554. title: `查询到${res.total}条疑似重复客户信息`,
  555. icon: "none"
  556. })
  557. this.setData({
  558. repetitionShow: true,
  559. repetitionList: res.data
  560. })
  561. }
  562. },
  563. /* 处理查重 */
  564. handleQueryRepetition(content) {
  565. return _Http.basic({
  566. "id": 20221208172002,
  567. content
  568. })
  569. },
  570. async submit() {
  571. let data = this.selectComponent("#Form").submit();
  572. data.province = data.region[0] || "";
  573. data.city = data.region[1] || "";
  574. data.county = data.region[2] || "";
  575. let query = await this.handleQueryRepetition({
  576. sa_customersid: this.data.content.sa_customersid,
  577. ...data
  578. });
  579. if (query.total != 0) {
  580. wx.showToast({
  581. title: `查询到${query.total}条疑似重复客户信息,不允许保存`,
  582. icon: "none"
  583. })
  584. this.setData({
  585. repetitionShow: true,
  586. repetitionList: query.data,
  587. isSubmit: true
  588. })
  589. } else {
  590. this.handleSubmit();
  591. }
  592. },
  593. handleSubmit(tag = false) {
  594. this.setData({
  595. loading: true
  596. })
  597. let data = this.selectComponent("#Form").submit();
  598. data.province = data.region[0] || "";
  599. data.city = data.region[1] || "";
  600. data.county = data.region[2] || "";
  601. data.parentid = data.parentid[1] ? data.parentid[1][0] : 0;
  602. data.sa_agentsid = data.sa_agentsid[1] ? data.sa_agentsid[1][0] : 0;
  603. data.oldcontactsid = this.data.oldcontactsid;
  604. delete(data.region);
  605. data.contactsinfo = {
  606. "name": data.name,
  607. "telephone": "",
  608. "phonenumber": data.isTelephone == 0 ? data.phonenumber || '' : data.telephone1.join("-") || ''
  609. }
  610. _Http.basic({
  611. "id": 20221012163902,
  612. "content": {
  613. ...this.data.content,
  614. ...data,
  615. }
  616. }).then(res => {
  617. this.setData({
  618. loading: false
  619. })
  620. console.log("新建客户", res)
  621. if (res.msg != '成功') return wx.showToast({
  622. title: res.data,
  623. icon: "none"
  624. })
  625. wx.showToast({
  626. title: '保存成功',
  627. icon: "none"
  628. })
  629. //绑定疑似重复标签
  630. if (tag) _Http.basic({
  631. "id": 20220929090901,
  632. "content": {
  633. "ownertable": "sa_customers",
  634. "ownerid": res.data.sa_customersid,
  635. "datatag": ["疑似重复"]
  636. }
  637. })
  638. setTimeout(() => {
  639. getCurrentPages().forEach(v => {
  640. switch (v.__route__) {
  641. case 'packageA/setclient/index':
  642. v.getList(true);
  643. break;
  644. case 'packageA/setclient/detail':
  645. v.getDetail();
  646. v.selectComponent("#Contacts").getList(this.data.content.sa_customersid, true)
  647. wx.navigateBack()
  648. break;
  649. }
  650. })
  651. let pages = getCurrentPages();
  652. if (pages[pages.length - 2].__route__ == 'packageA/setclient/index') wx.redirectTo({
  653. url: '/packageA/setclient/detail?id=' + res.data.sa_customersid,
  654. })
  655. }, tag ? 500 : 300)
  656. })
  657. },
  658. })