addClue.js 19 KB

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