addAndEditor.js 21 KB

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