addClue.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. loading: false,
  5. showAll: false,
  6. "content": {
  7. "sat_orderclueid": 0,
  8. "sat_orderclueid": 0, //活动id,当活动id大于0是默认业务员创建
  9. "isprivate": 1, //0表示公海,1表示私域
  10. co_taxno: "",
  11. co_name: "",
  12. co_phonenumber: "",
  13. },
  14. disabled: true
  15. },
  16. onLoad(options) {
  17. const isHy = ['HY', "YOSTEST1"].includes(wx.getStorageSync('userMsg').siteid)
  18. if (options.sat_orderclueid) this.data.content.sat_orderclueid = options.sat_orderclueid;
  19. let form = [{
  20. label: "项目名称",
  21. error: false,
  22. errMsg: "",
  23. type: "textarea",
  24. value: "",
  25. placeholder: "项目名称",
  26. valueName: "projectname",
  27. checking: "base",
  28. required: false
  29. }, {
  30. label: "客户(企业)",
  31. error: false,
  32. errMsg: "",
  33. type: "text",
  34. value: "",
  35. placeholder: "客户(企业)",
  36. valueName: "enterprisename",
  37. checking: "base",
  38. slot: "info",
  39. required: false
  40. }, {
  41. label: "联系人",
  42. error: false,
  43. errMsg: "",
  44. type: "textarea",
  45. value: "",
  46. placeholder: "联系人名称",
  47. valueName: "name",
  48. checking: "base",
  49. slot: "TXL",
  50. required: true
  51. }, {
  52. label: "联系方式",
  53. error: false,
  54. errMsg: "",
  55. hint: "",
  56. type: "radio",
  57. value: "0",
  58. radioList: [{
  59. id: '0',
  60. name: '手机号'
  61. }, {
  62. id: '1',
  63. name: '座机电话'
  64. }],
  65. valueName: "isTelephone", //绑定的字段名称
  66. required: true, //必填
  67. interrupt: true,
  68. checking: `true`,
  69. phonenumber: "",
  70. telephone: ["", ""]
  71. }, {
  72. label: "手机号",
  73. error: false,
  74. errMsg: "",
  75. type: "number",
  76. value: "",
  77. placeholder: "联系人手机号码",
  78. valueName: "phonenumber",
  79. required: true,
  80. checking: "phone"
  81. }, {
  82. label: "微信",
  83. error: false,
  84. errMsg: "",
  85. type: "text",
  86. value: "",
  87. placeholder: "微信号",
  88. valueName: "wechatnum",
  89. checking: "base",
  90. required: false
  91. }, {
  92. label: isHy ? '项目地址' : "省市县",
  93. error: false,
  94. errMsg: "",
  95. type: "region",
  96. value: "",
  97. placeholder: isHy ? '项目地址' : "省市县",
  98. valueName: "region",
  99. checking: "base",
  100. required: false
  101. }, {
  102. label: isHy ? ' ' : "详细地址",
  103. error: false,
  104. errMsg: "",
  105. type: "textarea",
  106. value: "",
  107. placeholder: "详细地址",
  108. valueName: "address",
  109. checking: "base",
  110. required: false
  111. }, {
  112. label: "项目规模",
  113. error: false,
  114. errMsg: "",
  115. type: "digit",
  116. value: "",
  117. placeholder: "请填写数值",
  118. valueName: "scale",
  119. checking: "base",
  120. required: false
  121. }, {
  122. label: "项目规模单位",
  123. error: false,
  124. errMsg: "",
  125. type: "option",
  126. optionNmae: "scaleunitname",
  127. optionType: "radio", //复选 radio 单选
  128. value: "",
  129. placeholder: "选择单位",
  130. valueName: "unitname",
  131. required: false
  132. }, {
  133. label: "总投资额(万元)",
  134. error: false,
  135. errMsg: "",
  136. type: "digit",
  137. value: "",
  138. placeholder: "请填写金额",
  139. valueName: "totalinvestment",
  140. checking: "base",
  141. required: false
  142. }, {
  143. label: "造价(万元)",
  144. error: false,
  145. errMsg: "",
  146. type: "digit",
  147. value: "",
  148. placeholder: "请填写金额",
  149. valueName: "costofconstruction",
  150. checking: "base",
  151. required: false
  152. }, {
  153. label: "预计开工时间",
  154. error: false,
  155. errMsg: "",
  156. type: "date",
  157. fields: "month",
  158. value: "",
  159. placeholder: "预计开工时间",
  160. valueName: "begdate_due",
  161. checking: "base",
  162. required: false
  163. }, {
  164. label: "预计完工时间",
  165. error: false,
  166. errMsg: "",
  167. type: "date",
  168. fields: "month",
  169. value: "",
  170. placeholder: "预计完工时间",
  171. valueName: "enddate_due",
  172. checking: "base",
  173. required: false
  174. },
  175. {
  176. label: "市场活动",
  177. error: false,
  178. errMsg: "",
  179. type: "route",
  180. url: "/packageA/select/selectActivity/index",
  181. value: "",
  182. params: {
  183. "id": 20221101095102,
  184. "content": {
  185. nocache: true,
  186. isAll: 0,
  187. "where": {
  188. 'condition': '',
  189. "unend": 1
  190. }
  191. }
  192. },
  193. query: "&radio=true",
  194. placeholder: "选择市场活动",
  195. valueName: "campaign_name",
  196. checking: "base",
  197. required: false
  198. }, {
  199. label: "领域",
  200. error: false,
  201. errMsg: "",
  202. type: "selector",
  203. range: [],
  204. rangeKey: "name",
  205. selectKey: "tradefield",
  206. rangeIndex: "",
  207. value: "",
  208. placeholder: "领域",
  209. valueName: "tradefield",
  210. required: true, //必填
  211. }, {
  212. label: "来源",
  213. error: false,
  214. errMsg: "",
  215. type: "selector",
  216. range: [],
  217. rangeKey: "value",
  218. rangeIndex: "",
  219. value: "",
  220. placeholder: "来源",
  221. valueName: "cluesource",
  222. checking: "base",
  223. required: true
  224. }, {
  225. label: "线索概括",
  226. error: false,
  227. errMsg: "",
  228. type: "text",
  229. value: "",
  230. placeholder: "线索概括",
  231. valueName: "notes",
  232. checking: "base",
  233. required: false
  234. }
  235. ];
  236. if (wx.getStorageSync('userMsg').siteid == 'HY') form = form.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
  237. getApp().globalData.Language.getLanguagePackage(this, options.rowData ? '编辑线索' : '添加线索');
  238. //编辑进入
  239. if (options.rowData) {
  240. let data = JSON.parse(options.rowData);
  241. if (data.phonenumber.includes("-")) {
  242. let index = form.findIndex(v => v.label == '手机号');
  243. data.telephone1 = data.phonenumber.split("-");
  244. form[index] = {
  245. label: "座机电话",
  246. error: false,
  247. errMsg: "",
  248. type: "telephone",
  249. value: ["", ""],
  250. valueName: "telephone1",
  251. required: true,
  252. checking: "telephone"
  253. }
  254. }
  255. ['联系人', '联系方式', '座机电话', '手机号'].forEach(v => {
  256. try {
  257. form.find(s => s.label == v).disabled = true
  258. } catch (error) {
  259. }
  260. })
  261. this.setData({
  262. form: form.map(v => {
  263. if (v.valueName == 'region') {
  264. v.value = data.province ? [data.province, data.city, data.county] : []
  265. } else if (v.valueName == 'isTelephone') {
  266. if (data.phonenumber.includes("-")) {
  267. v.value = '1'
  268. v.telephone = data.telephone1;
  269. } else {
  270. v.phonenumber = data.phonenumber
  271. }
  272. } else if (v.valueName == 'campaign_name') {
  273. v.value = data[v.valueName] ? [data[v.valueName],
  274. [data.sat_campaignid]
  275. ] : ""
  276. } else {
  277. v.value = data[v.valueName];
  278. }
  279. return v
  280. }),
  281. 'form[1].value': data.enterprisename_customer || data.enterprisename || "",
  282. 'content.sat_orderclueid': data.sat_orderclueid || 0,
  283. 'content.sa_customersid': data.sa_customersid || 0,
  284. 'content.sat_campaignid': data.sat_campaignid || 0
  285. })
  286. this.selectComponent("#Form").confirm();
  287. } else {
  288. _Http.basic({
  289. "classname": "sysmanage.develop.optiontype.optiontype",
  290. "method": "optiontypeselect",
  291. "content": {
  292. pageNumber: 1,
  293. "pageSize": 1,
  294. "typename": "scaleunitname",
  295. "parameter": {
  296. "siteid": wx.getStorageSync('siteP').siteid
  297. }
  298. }
  299. }).then(res => {
  300. console.log("项目规模", res)
  301. if (res.code == '1') {
  302. let index = form.findIndex(v => v.label == '项目规模单位');
  303. if (index != -1) form[index].value = res.data[0].value;
  304. }
  305. this.setData({
  306. form
  307. })
  308. })
  309. }
  310. /* 获取领域 */
  311. _Http.basic({
  312. "id": 20221223141802,
  313. "content": {
  314. "pageNumber": 1,
  315. "pageSize": 99999,
  316. "where": {
  317. "condition": ""
  318. }
  319. }
  320. }).then(res => {
  321. console.log("获取领域", res)
  322. let item = form.find(v => v.label == '领域');
  323. item.range = res.code == '1' ? res.data.map(v => {
  324. v.name = getApp().globalData.Language.getMapText(v.tradefield)
  325. return v
  326. }) : [];
  327. this.setData({
  328. form
  329. })
  330. })
  331. /* 获取来源 */
  332. _Http.basic({
  333. "classname": "sysmanage.develop.optiontype.optiontype",
  334. "method": "optiontypeselect",
  335. "content": {
  336. "typename": "cluesource",
  337. pageSize: 9999
  338. }
  339. }).then(res => {
  340. console.log("获取线索来源", res)
  341. if (res.code == '1') {
  342. let item = form.find(v => v.label == '来源');
  343. item.range = res.code == '1' ? res.data : [];
  344. this.setData({
  345. form
  346. })
  347. }
  348. })
  349. },
  350. /* 打断 */
  351. interrupt({
  352. detail
  353. }) {
  354. let {
  355. data,
  356. form,
  357. temporary
  358. } = detail;
  359. if (data.label == '联系方式') {
  360. let index = temporary.index + 1
  361. if (data.value == 0) {
  362. data.telephone = form[index].value;
  363. if (data.telephone.join() == ',') data.telephone = "";
  364. form[index] = {
  365. label: "手机号",
  366. error: false,
  367. errMsg: "",
  368. type: "number",
  369. value: data.phonenumber,
  370. placeholder: "联系人手机号码",
  371. valueName: "phonenumber",
  372. required: true,
  373. checking: "phone"
  374. }
  375. } else {
  376. if (typeof (form[index].value) == 'object') form[index].value = "";
  377. data.phonenumber = form[index].value;
  378. form[index] = {
  379. label: "座机电话",
  380. error: false,
  381. errMsg: "",
  382. type: "telephone",
  383. value: data.telephone || ["", ""],
  384. valueName: "telephone1",
  385. required: true,
  386. checking: "telephone"
  387. }
  388. };
  389. this.setData({
  390. form
  391. })
  392. }
  393. },
  394. /* 打开通讯录 */
  395. openContacts() {
  396. let that = this;
  397. let page = that.selectComponent("#Form");
  398. let form = page.data.form,
  399. index = form.findIndex(v => v.label == '联系人');
  400. if (form[index].disabled) return;
  401. wx.navigateTo({
  402. url: '/packageA/setclient/contacts',
  403. })
  404. getApp().globalData.handleSelect = (item) => {
  405. wx.showModal({
  406. title: getApp().globalData.Language.getMapText('提示'),
  407. content: getApp().globalData.Language.getMapText('是否确定选择') + `${item.name}`,
  408. cancelText: getApp().globalData.Language.getMapText('取消'),
  409. confirmText: getApp().globalData.Language.getMapText('确定'),
  410. complete: ({
  411. confirm
  412. }) => {
  413. if (confirm) {
  414. form[index].value = item.name;
  415. if (item.phonenumber.indexOf('-') !== -1) {
  416. form[index + 1].value = "1";
  417. form[index + 2] = {
  418. label: "座机电话",
  419. error: false,
  420. errMsg: "",
  421. type: "telephone",
  422. value: item.phonenumber.split("-"),
  423. valueName: "telephone1",
  424. required: true,
  425. checking: "telephone"
  426. }
  427. } else {
  428. form[index + 1].value = "0";
  429. form[index + 2] = {
  430. label: "手机号",
  431. error: false,
  432. errMsg: "",
  433. type: "number",
  434. value: item.phonenumber,
  435. placeholder: "联系人手机号码",
  436. valueName: "phonenumber",
  437. required: true,
  438. checking: "phone"
  439. }
  440. }
  441. that.setData({
  442. form
  443. })
  444. wx.navigateBack()
  445. getApp().globalData.handleSelect = null;
  446. page.confirm()
  447. }
  448. }
  449. })
  450. };
  451. },
  452. introduce({
  453. detail
  454. }) {
  455. let item = detail;
  456. this.setData({
  457. [`form[1].value`]: item.companyName,
  458. [`form[6].value`]: [item.regProvince ? item.regProvince : item.regCity, item.regCity, item.regArea],
  459. [`form[7].value`]: item.address,
  460. "content.co_taxno": item.taxNum,
  461. "content.co_name": item.legalPerson,
  462. "content.co_phonenumber": item.phone,
  463. })
  464. },
  465. queryClient() {
  466. let data = this.selectComponent("#Form").query();
  467. if (data.enterprisename == '') {
  468. getApp().globalData.Language.showToast('您还未填写企业名称')
  469. } else {
  470. this.setData({
  471. form: this.selectComponent("#Form").data.form,
  472. })
  473. this.selectComponent("#Info").queryClient(data.enterprisename)
  474. }
  475. },
  476. submit() {
  477. let content = {
  478. ...this.data.content,
  479. ...this.selectComponent("#Form").submit()
  480. };
  481. content.sat_campaignid = content.campaign_name ? content.campaign_name[1][0] : 0;
  482. content.city = content.region[1] || "";
  483. content.county = content.region[2] || "";
  484. content.province = content.region[0] || "";
  485. delete(content.region)
  486. delete(content.campaign_name)
  487. if (content.enterprisename == "" && content.projectname == "") return getApp().globalData.Language.showToast('客户名称或项目名称为空,请完善信息')
  488. if (content.scale.length != 0 && content.scale == 0) return getApp().globalData.Language.showToast('项目规模不可为0')
  489. content.phonenumber = content.isTelephone == 0 ? content.phonenumber || '' : content.telephone1.join("-") || '';
  490. this.setData({
  491. loading: true
  492. })
  493. delete content.telephone1;
  494. delete content.isTelephone;
  495. _Http.basic({
  496. "id": "20221205162402",
  497. content
  498. }).then(res => {
  499. console.log("添加线索", res)
  500. this.setData({
  501. loading: false
  502. })
  503. wx.showToast({
  504. title: res.code != '1' ? res.msg : getApp().globalData.Language.getMapText('保存成功'),
  505. icon: "none"
  506. })
  507. if (res.code != '1') return;
  508. setTimeout(() => {
  509. wx.navigateBack();
  510. getCurrentPages().forEach(v => {
  511. if (v.__route__ == 'packageA/saleClue/detail') {
  512. v.getDetail();
  513. } else if (v.__route__ == 'packageA/saleClue/index') {
  514. v.getList(true);
  515. } else if (['packageA/setclient/detail', 'packageA/publicCustomer/detail'].includes(v.__route__)) {
  516. v.selectComponent("#Clue").getList(this.data.content.sa_customersid, true)
  517. }
  518. })
  519. }, 300)
  520. })
  521. },
  522. // 是否显示全部
  523. onChange({
  524. detail
  525. }) {
  526. this.setData({
  527. showAll: detail
  528. })
  529. },
  530. /* 表单必填项是否完成 */
  531. onConfirm({
  532. detail
  533. }) {
  534. this.setData({
  535. disabled: detail
  536. })
  537. }
  538. })