addAndEditor.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. let _Http = getApp().globalData.http,
  2. count = null;
  3. Page({
  4. data: {
  5. showAll: false,
  6. repetitionShow: false,
  7. repetitionList: [],
  8. isSubmit: false,
  9. form: [{
  10. label: "客户(企业)",
  11. error: false,
  12. errMsg: "",
  13. type: "textarea",
  14. value: "",
  15. placeholder: "客户(企业)名称",
  16. valueName: "enterprisename",
  17. checking: "base",
  18. slot: "info",
  19. required: true
  20. }, {
  21. label: "企业简称",
  22. error: false,
  23. errMsg: "",
  24. type: "textarea",
  25. value: "",
  26. placeholder: "企业简称",
  27. valueName: "abbreviation",
  28. checking: "base",
  29. required: false
  30. }, {
  31. label: "erp编号",
  32. error: false,
  33. errMsg: "",
  34. type: "textarea",
  35. value: "",
  36. placeholder: "erp编号",
  37. valueName: "erpagentnum",
  38. checking: "base",
  39. required: false
  40. }, {
  41. label: "客户类型",
  42. error: false,
  43. errMsg: "",
  44. type: "option",
  45. optionNmae: "customertypemx",
  46. optionType: "radio", //复选 radio 单选
  47. value: "",
  48. placeholder: "客户类型",
  49. valueName: "type",
  50. checking: "base",
  51. required: true
  52. }, {
  53. label: "企业等级",
  54. error: false,
  55. errMsg: "",
  56. type: "option",
  57. optionNmae: "agentgrade",
  58. optionType: "radio", //复选 radio 单选
  59. value: "",
  60. placeholder: "企业等级",
  61. valueName: "grade",
  62. checking: "base",
  63. required: false
  64. }, {
  65. label: "客户分类",
  66. error: false,
  67. errMsg: "",
  68. type: "option",
  69. optionNmae: "customergrade",
  70. optionType: "radio", //复选 radio 单选
  71. value: "",
  72. placeholder: "客户分类",
  73. valueName: "customergrade",
  74. checking: "base",
  75. required: false
  76. }, {
  77. label: "客户行业",
  78. error: false,
  79. errMsg: "",
  80. type: "option", //自定义选择 配合预定接口
  81. optionNmae: "industry", //选择类型
  82. optionType: "checkbox", //复选 radio 单选
  83. value: "",
  84. placeholder: "客户所属行业",
  85. valueName: "industry",
  86. checking: "base",
  87. required: false
  88. }, {
  89. label: "税号",
  90. error: false,
  91. errMsg: "",
  92. type: "textarea",
  93. value: "",
  94. placeholder: "企业税号",
  95. valueName: "taxno",
  96. checking: "base",
  97. required: false
  98. }, {
  99. label: "法人",
  100. error: false,
  101. errMsg: "",
  102. type: "text",
  103. value: "",
  104. placeholder: "企业法人",
  105. valueName: "contact",
  106. checking: "base",
  107. required: false
  108. }, {
  109. label: "电话",
  110. error: false,
  111. errMsg: "",
  112. type: "number",
  113. value: "",
  114. placeholder: "联系电话",
  115. valueName: "telephone",
  116. checking: "base",
  117. required: false
  118. }, {
  119. label: "省市县",
  120. error: false,
  121. errMsg: "",
  122. type: "region",
  123. value: [],
  124. placeholder: "所在地区",
  125. valueName: "region",
  126. required: false
  127. }, {
  128. label: "详细地址",
  129. error: false,
  130. errMsg: "",
  131. type: "textarea",
  132. value: "",
  133. placeholder: "详细地址",
  134. valueName: "address",
  135. checking: "base",
  136. required: false
  137. }, {
  138. label: "上级企业",
  139. error: false,
  140. errMsg: "",
  141. type: "route",
  142. url: "/packageA/select/setclient/select",
  143. value: "",
  144. params: {
  145. id: 20221012164402,
  146. content: {
  147. nocache: true,
  148. "type": 1,
  149. "isExport": 0,
  150. isend: 0,
  151. "where": {
  152. "condition": "",
  153. "status": "", //状态
  154. "startdate": "",
  155. "enddate": ""
  156. },
  157. "sort": [{
  158. sortname: "默认",
  159. sorted: 1,
  160. sortid: 67,
  161. reversed: 0
  162. }]
  163. },
  164. },
  165. query: "&radio=true&idname=sa_customersid",
  166. placeholder: "选择上级企业",
  167. valueName: "parentid",
  168. checking: "base",
  169. required: false
  170. }, {
  171. label: "客户来源",
  172. error: false,
  173. errMsg: "",
  174. type: "textarea",
  175. value: "",
  176. placeholder: "客户来源",
  177. valueName: "source",
  178. checking: "base",
  179. required: false
  180. }, {
  181. label: "归属经销商",
  182. error: false,
  183. errMsg: "",
  184. type: "route",
  185. url: "/packageA/select/setclient/select",
  186. value: "",
  187. params: {
  188. "id": 20230214162602,
  189. "content": {
  190. "hrid": wx.getStorageSync('userMsg').hrid,
  191. "where": {
  192. "condition": ""
  193. }
  194. },
  195. },
  196. query: "&radio=true&idname=sa_agentsid",
  197. placeholder: "归属经销商",
  198. valueName: "sa_agentsid",
  199. checking: "base",
  200. required: false
  201. }],
  202. content: {
  203. "sa_customersid": 0, //新增是传0
  204. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  205. "sa_customerpoolid": 0, //客户池(公海池)ID,默认或没有的时候传0
  206. ispublic: 0, //是否为公海客户
  207. },
  208. disabled: true,
  209. countDown: "", //查重倒计时
  210. },
  211. queryClient() {
  212. let data = this.selectComponent("#Form").query();
  213. if (data.enterprisename == '') {
  214. wx.showToast({
  215. title: `您还未填写企业名称`,
  216. icon: "none"
  217. });
  218. } else {
  219. this.setData({
  220. form: this.selectComponent("#Form").data.form,
  221. })
  222. this.selectComponent("#Info").queryClient(data.enterprisename)
  223. }
  224. },
  225. /* 工商查询 */
  226. introduce({
  227. detail
  228. }) {
  229. let item = detail;
  230. let data = {
  231. enterprisename: item.companyName, //企业名称
  232. taxno: item.taxNum, //税号
  233. contact: item.legalPerson, //法人
  234. region: [item.regProvince, item.regCity, item.regArea], //地区
  235. address: item.address, //地区
  236. }
  237. this.setData({
  238. form: this.data.form.map(v => {
  239. if (data[v.valueName]) v.value = data[v.valueName];
  240. return v
  241. })
  242. })
  243. },
  244. setOption(item) {
  245. let i = this.data.form.findIndex(v => v.valueName == item.valueName);
  246. this.setData({
  247. [`form[${i}]`]: item
  248. })
  249. },
  250. onLoad(options) {
  251. if (options.data) {
  252. let data = JSON.parse(options.data);
  253. this.setData({
  254. disabled: false,
  255. content: {
  256. sa_customersid: data.sa_customersid,
  257. sys_enterpriseid: data.sys_enterpriseid,
  258. sa_customerpoolid: data.sa_customerpoolid,
  259. },
  260. form: this.data.form.map(v => {
  261. if (v.valueName != 'region') {
  262. v.value = data[v.valueName] || "";
  263. if (v.valueName == "grade") v.value = data[v.valueName] + "";
  264. } else {
  265. v.value = data.province ? [data.province, data.city, data.county] : []
  266. };
  267. if (data.isagent && ['enterprisename', 'region', 'sa_agentsid', 'grade', 'address', 'contact', 'telephone'].includes(v.valueName)) v.disabled = true;
  268. return v
  269. })
  270. })
  271. }
  272. },
  273. repClose() {
  274. if (this.data.isSubmit) {
  275. let that = this;
  276. wx.showModal({
  277. title: '提示',
  278. content: `是否继续创建客户`,
  279. complete: (res) => {
  280. if (res.confirm) that.handleSubmit(true);
  281. }
  282. })
  283. }
  284. this.setData({
  285. repetitionShow: false,
  286. isSubmit: false
  287. })
  288. },
  289. /* 表单必填项是否完成 */
  290. onConfirm({
  291. detail
  292. }) {
  293. this.setData({
  294. disabled: detail
  295. })
  296. },
  297. // 是否显示全部
  298. onChange({
  299. detail
  300. }) {
  301. this.setData({
  302. showAll: detail
  303. })
  304. },
  305. /* 查询是否重复 */
  306. async queryRepetition(e) {
  307. let {
  308. enterprisename,
  309. taxno,
  310. address
  311. } = this.selectComponent("#Form").query();
  312. if (enterprisename == '') return wx.showToast({
  313. title: `您还未填写企业名称`,
  314. icon: "none"
  315. });
  316. let res = await this.handleQueryRepetition({
  317. sa_customersid: this.data.content.sa_customersid,
  318. enterprisename,
  319. taxno,
  320. address
  321. });
  322. console.log("查询重复", res)
  323. if (res.msg != '成功') return wx.showToast({
  324. title: res.msg,
  325. icon: "none"
  326. });
  327. this.setData({
  328. countDown: 6
  329. });
  330. count = setInterval(() => {
  331. let countDown = this.data.countDown;
  332. if (countDown == 0) {
  333. clearInterval(count);
  334. this.setData({
  335. countDown: ""
  336. })
  337. } else {
  338. countDown--;
  339. this.setData({
  340. countDown
  341. })
  342. }
  343. }, 1000)
  344. if (res.total == 0) {
  345. wx.showToast({
  346. title: '未查询到疑似重复的客户信息',
  347. icon: "none"
  348. })
  349. } else {
  350. wx.showToast({
  351. title: `查询到${res.total}条疑似重复客户信息`,
  352. icon: "none"
  353. })
  354. this.setData({
  355. repetitionShow: true,
  356. repetitionList: res.data
  357. })
  358. }
  359. },
  360. /* 处理查重 */
  361. handleQueryRepetition(content) {
  362. return _Http.basic({
  363. "id": 20221208172002,
  364. content
  365. })
  366. },
  367. async submit() {
  368. let data = this.selectComponent("#Form").submit();
  369. let query = await this.handleQueryRepetition({
  370. sa_customersid: this.data.content.sa_customersid,
  371. enterprisename: data.enterprisename,
  372. taxno: data.taxno,
  373. address: data.address
  374. });
  375. if (query.total != 0) {
  376. wx.showToast({
  377. title: `查询到${query.total}条疑似重复客户信息`,
  378. icon: "none"
  379. })
  380. this.setData({
  381. repetitionShow: true,
  382. repetitionList: query.data,
  383. isSubmit: true
  384. })
  385. } else {
  386. this.handleSubmit();
  387. }
  388. },
  389. handleSubmit(tag = false) {
  390. let data = this.selectComponent("#Form").submit();
  391. data.province = data.region[0] || "";
  392. data.city = data.region[1] || "";
  393. data.county = data.region[2] || "";
  394. data.parentid = data.parentid[1] ? data.parentid[1][0] : 0;
  395. data.sa_agentsid = data.sa_agentsid[1] ? data.sa_agentsid[1][0] : 0;
  396. delete(data.region);
  397. _Http.basic({
  398. "id": 20221012163902,
  399. "content": {
  400. ...this.data.content,
  401. ...data,
  402. }
  403. }).then(res => {
  404. console.log("新建客户", res)
  405. if (res.msg != '成功') return wx.showToast({
  406. title: res.data,
  407. icon: "none"
  408. })
  409. wx.showToast({
  410. title: '保存成功',
  411. icon: "none"
  412. })
  413. //绑定疑似重复标签
  414. if (tag) _Http.basic({
  415. "id": 20220929090901,
  416. "content": {
  417. "ownertable": "sa_customers",
  418. "ownerid": res.data.sa_customersid,
  419. "datatag": ["疑似重复"]
  420. }
  421. })
  422. setTimeout(() => {
  423. getCurrentPages().forEach(v => {
  424. switch (v.__route__) {
  425. case 'packageA/setclient/index':
  426. v.getList(true);
  427. break;
  428. case 'packageA/setclient/detail':
  429. v.getDetail();
  430. wx.navigateBack()
  431. break;
  432. }
  433. })
  434. let pages = getCurrentPages();
  435. if (pages[pages.length - 2].__route__ == 'packageA/setclient/index') wx.redirectTo({
  436. url: '/packageA/setclient/detail?id=' + res.data.sa_customersid,
  437. })
  438. }, tag ? 500 : 300)
  439. })
  440. },
  441. })