addClue.js 19 KB

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