addAndEditor.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  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: "selector",
  167. range: [],
  168. rangeKey: "name",
  169. selectKey: "value",
  170. rangeIndex: "",
  171. value: "",
  172. placeholder: "来源",
  173. valueName: "source",
  174. checking: "base",
  175. required: true
  176. }, {
  177. label: "归属经销商",
  178. error: false,
  179. errMsg: "",
  180. type: "route",
  181. url: "/packageA/select/setclient/select",
  182. value: "",
  183. params: {
  184. "id": 20230214162602,
  185. "content": {
  186. "hrid": wx.getStorageSync('userMsg').hrid,
  187. "where": {
  188. "condition": ""
  189. }
  190. },
  191. },
  192. query: "&radio=true&idname=sa_agentsid",
  193. placeholder: "归属经销商",
  194. valueName: "sa_agentsid",
  195. checking: "base",
  196. required: false
  197. }],
  198. content: {
  199. "sa_customersid": 0, //新增是传0
  200. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  201. "sa_customerpoolid": 0, //客户池(公海池)ID,默认或没有的时候传0
  202. phonenumber: "",
  203. ispublic: 0, //是否为公海客户
  204. },
  205. disabled: true,
  206. countDown: "", //查重倒计时
  207. },
  208. queryClient() {
  209. let data = this.selectComponent("#Form").query();
  210. if (data.enterprisename == '') {
  211. wx.showToast({
  212. title: getApp().globalData.Language.getMapText('您还未填写企业名称'),
  213. icon: "none"
  214. });
  215. } else {
  216. this.setData({
  217. form: this.selectComponent("#Form").data.form,
  218. })
  219. this.selectComponent("#Info").queryClient(data.enterprisename)
  220. }
  221. },
  222. /* 工商查询 */
  223. introduce({
  224. detail
  225. }) {
  226. let item = detail;
  227. let data = {
  228. enterprisename: item.companyName, //企业名称
  229. taxno: item.taxNum, //税号
  230. contact: item.legalPerson, //法人
  231. region: [item.regProvince ? item.regProvince : item.regCity, item.regCity, item.regArea], //地区
  232. address: item.address,
  233. telephone: item.phone,
  234. }
  235. this.setData({
  236. form: this.data.form.map(v => {
  237. if (data[v.valueName]) v.value = data[v.valueName];
  238. return v
  239. })
  240. })
  241. },
  242. /* 打断 */
  243. interrupt({
  244. detail
  245. }) {
  246. let {
  247. data,
  248. form,
  249. temporary
  250. } = detail;
  251. if (data.label == '联系方式') {
  252. let index = temporary.index + 1
  253. if (data.value == 0) {
  254. data.telephone = form[index].value;
  255. if (data.telephone.join() == ',') data.telephone = "";
  256. form[index] = {
  257. label: "手机号",
  258. error: false,
  259. errMsg: "",
  260. type: "number",
  261. value: data.phonenumber,
  262. placeholder: "联系人手机号码",
  263. valueName: "phonenumber",
  264. required: true,
  265. checking: "phone"
  266. }
  267. } else {
  268. if (typeof (form[index].value) == 'object') form[index].value = "";
  269. data.phonenumber = form[index].value;
  270. form[index] = {
  271. label: "座机电话",
  272. error: false,
  273. errMsg: "",
  274. type: "telephone",
  275. value: data.telephone || ["", ""],
  276. valueName: "telephone1",
  277. required: true,
  278. checking: "telephone"
  279. }
  280. };
  281. this.setData({
  282. form
  283. })
  284. }
  285. },
  286. /* 打开通讯录 */
  287. openContacts() {
  288. let that = this;
  289. let page = that.selectComponent("#Form");
  290. let form = page.data.form,
  291. index = form.findIndex(v => v.label == '联系人');
  292. if (form[index].disabled) return;
  293. wx.navigateTo({
  294. url: '/packageA/setclient/contacts',
  295. })
  296. getApp().globalData.handleSelect = (item) => {
  297. wx.showModal({
  298. title: getApp().globalData.Language.getMapText('提示'),
  299. content: getApp().globalData.Language.getMapText('是否确定选择') + item.name,
  300. cancelText: getApp().globalData.Language.getMapText('取消'),
  301. confirmText: getApp().globalData.Language.getMapText('确定'),
  302. complete: ({
  303. confirm
  304. }) => {
  305. if (confirm) {
  306. form[index].value = item.name;
  307. that.data.oldcontactsid = item.contactsid;
  308. that.data.sys_phonebookid = item.sys_phonebookid;
  309. if (item.phonenumber.indexOf('-') !== -1) {
  310. form[index + 1].value = "1";
  311. form[index + 2] = {
  312. label: "座机电话",
  313. error: false,
  314. errMsg: "",
  315. type: "telephone",
  316. value: item.phonenumber.split("-"),
  317. valueName: "telephone1",
  318. required: true,
  319. checking: "telephone"
  320. }
  321. } else {
  322. form[index + 1].value = "0";
  323. form[index + 2] = {
  324. label: "手机号",
  325. error: false,
  326. errMsg: "",
  327. type: "number",
  328. value: item.phonenumber,
  329. placeholder: "联系人手机号码",
  330. valueName: "phonenumber",
  331. required: true,
  332. checking: "phone"
  333. }
  334. }
  335. that.setData({
  336. form
  337. })
  338. wx.navigateBack()
  339. getApp().globalData.handleSelect = null;
  340. page.confirm()
  341. }
  342. }
  343. })
  344. };
  345. },
  346. setOption(item) {
  347. let i = this.data.form.findIndex(v => v.valueName == item.valueName);
  348. this.setData({
  349. [`form[${i}]`]: item
  350. })
  351. },
  352. onLoad(options) {
  353. if (options.data) {
  354. let data = JSON.parse(options.data);
  355. let form = this.data.form.map(v => {
  356. if (v.valueName != 'region') {
  357. v.value = data[v.valueName] || "";
  358. if (v.valueName == "grade") v.value = data[v.valueName] + "";
  359. } else {
  360. v.value = data.province ? [data.province, data.city, data.county] : []
  361. };
  362. // if (data.isagent && ['enterprisename', 'region', 'sa_agentsid', 'grade', 'address', 'contact', 'telephone'].includes(v.valueName)) v.disabled = true;
  363. return v
  364. })
  365. try {
  366. let contactsinfo = data.contactsinfo[0];
  367. let isTelephone = contactsinfo.telephone ? "1" : "0";
  368. form.splice(4, 0, isTelephone == 0 ? {
  369. label: "手机号",
  370. error: false,
  371. errMsg: "",
  372. type: "number",
  373. value: contactsinfo.phonenumber || '',
  374. placeholder: "联系人手机号码",
  375. valueName: "phonenumber",
  376. required: false,
  377. checking: "phone",
  378. disabled: true
  379. } : {
  380. label: "座机电话",
  381. error: false,
  382. errMsg: "",
  383. type: "telephone",
  384. value: contactsinfo.telephone.split("-"),
  385. valueName: "telephone1",
  386. required: false,
  387. checking: "telephone",
  388. disabled: true
  389. })
  390. form.splice(4, 0, {
  391. label: "联系方式",
  392. error: false,
  393. errMsg: "",
  394. hint: "",
  395. type: "radio",
  396. value: isTelephone,
  397. radioList: [{
  398. id: '0',
  399. name: '手机号'
  400. }, {
  401. id: '1',
  402. name: '座机电话'
  403. }],
  404. valueName: "isTelephone", //绑定的字段名称
  405. required: false, //必填
  406. interrupt: true,
  407. checking: `true`,
  408. phonenumber: "",
  409. telephone: ["", ""],
  410. disabled: true
  411. })
  412. form.splice(4, 0, {
  413. label: "联系人",
  414. error: false,
  415. errMsg: "",
  416. type: "textarea",
  417. value: contactsinfo.name || '',
  418. placeholder: "联系人名称",
  419. valueName: "name",
  420. checking: "base",
  421. slot: "TXL",
  422. required: false,
  423. disabled: true
  424. })
  425. } catch (error) {
  426. }
  427. this.setData({
  428. disabled: false,
  429. content: {
  430. sa_customersid: data.sa_customersid,
  431. sys_enterpriseid: data.sys_enterpriseid,
  432. sa_customerpoolid: data.sa_customerpoolid,
  433. },
  434. form
  435. })
  436. } else {
  437. this.data.form.splice(4, 0, {
  438. label: "手机号",
  439. error: false,
  440. errMsg: "",
  441. type: "number",
  442. value: "",
  443. placeholder: "联系人手机号码",
  444. valueName: "phonenumber",
  445. required: true,
  446. checking: "phone"
  447. })
  448. this.data.form.splice(4, 0, {
  449. label: "联系方式",
  450. error: false,
  451. errMsg: "",
  452. hint: "",
  453. type: "radio",
  454. value: "0",
  455. radioList: [{
  456. id: '0',
  457. name: '手机号'
  458. }, {
  459. id: '1',
  460. name: '座机电话'
  461. }],
  462. valueName: "isTelephone", //绑定的字段名称
  463. required: true, //必填
  464. interrupt: true,
  465. checking: `true`,
  466. phonenumber: "",
  467. telephone: ["", ""]
  468. })
  469. this.data.form.splice(4, 0, {
  470. label: "联系人",
  471. error: false,
  472. errMsg: "",
  473. type: "textarea",
  474. value: "",
  475. placeholder: "联系人名称",
  476. valueName: "name",
  477. checking: "base",
  478. slot: "TXL",
  479. required: true
  480. })
  481. this.setData({
  482. form: this.data.form
  483. })
  484. }
  485. getApp().globalData.Language.getLanguagePackage(this, options.data ? '编辑客户' : '新建客户');
  486. /* 获取来源 */
  487. _Http.basic({
  488. "classname": "sysmanage.develop.optiontype.optiontype",
  489. "method": "optiontypeselect",
  490. "content": {
  491. "typename": "cluesource",
  492. pageSize: 9999
  493. }
  494. }).then(res => {
  495. console.log("获取线索来源", res)
  496. if (res.code == '1') {
  497. let form = this.data.form;
  498. let item = form.find(v => v.label == '客户来源');
  499. item.range = res.code == '1' ? res.data.map(v => {
  500. v.name = getApp().globalData.Language.getMapText(v.value)
  501. return v
  502. }) : [];
  503. this.setData({
  504. form
  505. })
  506. }
  507. })
  508. },
  509. repClose() {
  510. /* if (this.data.isSubmit) {
  511. let that = this;
  512. wx.showModal({
  513. title: getApp().globalData.Language.getMapText('提示'),
  514. content: `是否继续创建客户`,
  515. cancelText: getApp().globalData.Language.getMapText('取消'),
  516. confirmText: getApp().globalData.Language.getMapText('确定'),
  517. complete: (res) => {
  518. if (res.confirm) that.handleSubmit(true);
  519. }
  520. })
  521. } */
  522. this.setData({
  523. repetitionShow: false,
  524. isSubmit: false
  525. })
  526. },
  527. /* 表单必填项是否完成 */
  528. onConfirm({
  529. detail
  530. }) {
  531. this.setData({
  532. disabled: detail
  533. })
  534. },
  535. // 是否显示全部
  536. onChange({
  537. detail
  538. }) {
  539. this.setData({
  540. showAll: detail
  541. })
  542. },
  543. /* 查询是否重复 */
  544. async queryRepetition(e) {
  545. let data = this.selectComponent("#Form").query();
  546. /* if (data.enterprisename == '') return wx.showToast({
  547. title: `您还未填写企业名称`,
  548. icon: "none"
  549. }); */
  550. data.province = data.region[0] || "";
  551. data.city = data.region[1] || "";
  552. data.county = data.region[2] || "";
  553. let res = await this.handleQueryRepetition({
  554. sa_customersid: this.data.content.sa_customersid,
  555. ...data
  556. });
  557. console.log("查询重复", res)
  558. if (res.code != '1') return wx.showToast({
  559. title: res.msg,
  560. icon: "none"
  561. });
  562. this.setData({
  563. countDown: 6
  564. });
  565. count = setInterval(() => {
  566. let countDown = this.data.countDown;
  567. if (countDown == 0) {
  568. clearInterval(count);
  569. this.setData({
  570. countDown: ""
  571. })
  572. } else {
  573. countDown--;
  574. this.setData({
  575. countDown
  576. })
  577. }
  578. }, 1000)
  579. if (res.total == 0) {
  580. getApp().globalData.Language.showToast('未查询到疑似重复的客户信息')
  581. } else {
  582. wx.showToast({
  583. title: getApp().globalData.Language.getMapText('查询到') + res.total + getApp().globalData.Language.getMapText('条疑似重复客户信息'),
  584. icon: "none"
  585. })
  586. this.setData({
  587. repetitionShow: true,
  588. repetitionList: res.data
  589. })
  590. }
  591. },
  592. /* 处理查重 */
  593. handleQueryRepetition(content) {
  594. return _Http.basic({
  595. "id": 20221208172002,
  596. content
  597. })
  598. },
  599. async submit() {
  600. let data = this.selectComponent("#Form").submit(),
  601. taht = this;
  602. data.province = data.region[0] || "";
  603. data.city = data.region[1] || "";
  604. data.county = data.region[2] || "";
  605. let query = await this.handleQueryRepetition({
  606. sa_customersid: this.data.content.sa_customersid,
  607. ...data
  608. });
  609. if (query.total != 0) {
  610. wx.showModal({
  611. content: getApp().globalData.Language.joint([{
  612. t: 1,
  613. v: '查询到',
  614. }, {
  615. v: query.total,
  616. f: "“",
  617. r: "”"
  618. }, {
  619. t: 1,
  620. v: '条疑似重复客户信息,不可',
  621. r: " "
  622. }, {
  623. t: 1,
  624. v: this.data.content.sa_customersid == 0 ? '创建' : '编辑',
  625. r: " "
  626. }, {
  627. t: 1,
  628. v: '客户',
  629. }]),
  630. confirmText: that.data.Language['确定'] || '我知道了',
  631. showCancel: false
  632. })
  633. this.setData({
  634. repetitionShow: true,
  635. repetitionList: query.data,
  636. isSubmit: true
  637. })
  638. } else {
  639. this.handleSubmit();
  640. }
  641. },
  642. handleSubmit(tag = false) {
  643. this.setData({
  644. loading: true
  645. })
  646. let data = this.selectComponent("#Form").submit();
  647. data.province = data.region[0] || "";
  648. data.city = data.region[1] || "";
  649. data.county = data.region[2] || "";
  650. data.parentid = data.parentid[1] ? data.parentid[1][0] : 0;
  651. data.sa_agentsid = data.sa_agentsid[1] ? data.sa_agentsid[1][0] : 0;
  652. delete(data.region);
  653. try {
  654. data.contactsinfo = {
  655. "name": data.name,
  656. "telephone": "",
  657. "phonenumber": data.isTelephone == 0 ? data.phonenumber || '' : data.telephone1.join("-") || '',
  658. oldcontactsid: this.data.oldcontactsid,
  659. sys_phonebookid: this.data.sys_phonebookid || 0,
  660. }
  661. } catch (error) {
  662. }
  663. _Http.basic({
  664. "id": 20221012163902,
  665. "content": {
  666. ...this.data.content,
  667. ...data,
  668. }
  669. }).then(res => {
  670. this.setData({
  671. loading: false
  672. })
  673. console.log("新建客户", res)
  674. if (res.code != '1') return wx.showToast({
  675. title: res.msg,
  676. icon: "none"
  677. })
  678. getApp().globalData.Language.showToast('保存成功')
  679. //绑定疑似重复标签
  680. if (tag) _Http.basic({
  681. "id": 20220929090901,
  682. "content": {
  683. "ownertable": "sa_customers",
  684. "ownerid": res.data.sa_customersid,
  685. "datatag": ["疑似重复"]
  686. }
  687. })
  688. setTimeout(() => {
  689. getCurrentPages().forEach(v => {
  690. switch (v.__route__) {
  691. case 'packageA/setclient/index':
  692. v.getList(true);
  693. break;
  694. case 'packageA/setclient/detail':
  695. v.getDetail();
  696. v.selectComponent("#Contacts").getList(this.data.content.sa_customersid, true)
  697. wx.navigateBack()
  698. break;
  699. }
  700. })
  701. let pages = getCurrentPages();
  702. if (pages[pages.length - 2].__route__ == 'packageA/setclient/index') wx.redirectTo({
  703. url: '/packageA/setclient/detail?id=' + res.data.sa_customersid,
  704. })
  705. }, tag ? 500 : 300)
  706. })
  707. },
  708. })