addAndEditor.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  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: true
  99. }, {
  100. label: "联系电话",
  101. error: false,
  102. errMsg: "",
  103. type: "number",
  104. value: "",
  105. placeholder: "联系电话",
  106. valueName: "telephone",
  107. checking: "base",
  108. required: true
  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. setOption(item) {
  237. let i = this.data.form.findIndex(v => v.valueName == item.valueName);
  238. this.setData({
  239. [`form[${i}]`]: item
  240. })
  241. },
  242. onLoad(options) {
  243. if (options.data) {
  244. let data = JSON.parse(options.data);
  245. this.setData({
  246. disabled: false,
  247. content: {
  248. sa_customersid: data.sa_customersid,
  249. sys_enterpriseid: data.sys_enterpriseid,
  250. sa_customerpoolid: data.sa_customerpoolid,
  251. },
  252. form: this.data.form.map(v => {
  253. if (v.valueName != 'region') {
  254. v.value = data[v.valueName] || "";
  255. if (v.valueName == "grade") v.value = data[v.valueName] + "";
  256. } else {
  257. v.value = data.province ? [data.province, data.city, data.county] : []
  258. };
  259. // if (data.isagent && ['enterprisename', 'region', 'sa_agentsid', 'grade', 'address', 'contact', 'telephone'].includes(v.valueName)) v.disabled = true;
  260. return v
  261. })
  262. })
  263. }
  264. },
  265. repClose() {
  266. /* if (this.data.isSubmit) {
  267. let that = this;
  268. wx.showModal({
  269. title: '提示',
  270. content: `是否继续创建客户`,
  271. complete: (res) => {
  272. if (res.confirm) that.handleSubmit(true);
  273. }
  274. })
  275. } */
  276. this.setData({
  277. repetitionShow: false,
  278. isSubmit: false
  279. })
  280. },
  281. /* 表单必填项是否完成 */
  282. onConfirm({
  283. detail
  284. }) {
  285. this.setData({
  286. disabled: detail
  287. })
  288. },
  289. // 是否显示全部
  290. onChange({
  291. detail
  292. }) {
  293. this.setData({
  294. showAll: detail
  295. })
  296. },
  297. /* 查询是否重复 */
  298. async queryRepetition(e) {
  299. let data = this.selectComponent("#Form").query();
  300. /* if (data.enterprisename == '') return wx.showToast({
  301. title: `您还未填写企业名称`,
  302. icon: "none"
  303. }); */
  304. data.province = data.region[0] || "";
  305. data.city = data.region[1] || "";
  306. data.county = data.region[2] || "";
  307. let res = await this.handleQueryRepetition({
  308. sa_customersid: this.data.content.sa_customersid,
  309. ...data
  310. });
  311. console.log("查询重复", res)
  312. if (res.msg != '成功') return wx.showToast({
  313. title: res.msg,
  314. icon: "none"
  315. });
  316. this.setData({
  317. countDown: 6
  318. });
  319. count = setInterval(() => {
  320. let countDown = this.data.countDown;
  321. if (countDown == 0) {
  322. clearInterval(count);
  323. this.setData({
  324. countDown: ""
  325. })
  326. } else {
  327. countDown--;
  328. this.setData({
  329. countDown
  330. })
  331. }
  332. }, 1000)
  333. if (res.total == 0) {
  334. wx.showToast({
  335. title: '未查询到疑似重复的客户信息',
  336. icon: "none"
  337. })
  338. } else {
  339. wx.showToast({
  340. title: `查询到${res.total}条疑似重复客户信息`,
  341. icon: "none"
  342. })
  343. this.setData({
  344. repetitionShow: true,
  345. repetitionList: res.data
  346. })
  347. }
  348. },
  349. /* 处理查重 */
  350. handleQueryRepetition(content) {
  351. return _Http.basic({
  352. "id": 20221208172002,
  353. content
  354. })
  355. },
  356. async submit() {
  357. let data = this.selectComponent("#Form").submit();
  358. data.province = data.region[0] || "";
  359. data.city = data.region[1] || "";
  360. data.county = data.region[2] || "";
  361. let query = await this.handleQueryRepetition({
  362. sa_customersid: this.data.content.sa_customersid,
  363. ...data
  364. });
  365. if (query.total != 0) {
  366. wx.showToast({
  367. title: `查询到${query.total}条疑似重复客户信息,不允许保存`,
  368. icon: "none"
  369. })
  370. this.setData({
  371. repetitionShow: true,
  372. repetitionList: query.data,
  373. isSubmit: true
  374. })
  375. } else {
  376. this.handleSubmit();
  377. }
  378. },
  379. handleSubmit(tag = false) {
  380. this.setData({
  381. loading: true
  382. })
  383. let data = this.selectComponent("#Form").submit();
  384. data.province = data.region[0] || "";
  385. data.city = data.region[1] || "";
  386. data.county = data.region[2] || "";
  387. data.parentid = data.parentid[1] ? data.parentid[1][0] : 0;
  388. data.sa_agentsid = data.sa_agentsid[1] ? data.sa_agentsid[1][0] : 0;
  389. delete(data.region);
  390. _Http.basic({
  391. "id": 20221012163902,
  392. "content": {
  393. ...this.data.content,
  394. ...data,
  395. }
  396. }).then(res => {
  397. this.setData({
  398. loading: false
  399. })
  400. console.log("新建客户", res)
  401. if (res.msg != '成功') return wx.showToast({
  402. title: res.data,
  403. icon: "none"
  404. })
  405. wx.showToast({
  406. title: '保存成功',
  407. icon: "none"
  408. })
  409. //绑定疑似重复标签
  410. if (tag) _Http.basic({
  411. "id": 20220929090901,
  412. "content": {
  413. "ownertable": "sa_customers",
  414. "ownerid": res.data.sa_customersid,
  415. "datatag": ["疑似重复"]
  416. }
  417. })
  418. setTimeout(() => {
  419. getCurrentPages().forEach(v => {
  420. switch (v.__route__) {
  421. case 'packageA/setclient/index':
  422. v.getList(true);
  423. break;
  424. case 'packageA/setclient/detail':
  425. v.getDetail();
  426. wx.navigateBack()
  427. break;
  428. }
  429. })
  430. let pages = getCurrentPages();
  431. if (pages[pages.length - 2].__route__ == 'packageA/setclient/index') wx.redirectTo({
  432. url: '/packageA/setclient/detail?id=' + res.data.sa_customersid,
  433. })
  434. }, tag ? 500 : 300)
  435. })
  436. },
  437. })