insert.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. let _Http = getApp().globalData.http,
  2. sat_orderclueid = 0;
  3. Page({
  4. data: {
  5. isuppictured: null,
  6. loading: false,
  7. showAll: false,
  8. content: {},
  9. disabled: true
  10. },
  11. clearProject() {
  12. console.log("清除管理项目")
  13. let that = this;
  14. wx.showModal({
  15. title: '提示',
  16. content: '是否确定取消关联项目',
  17. complete: (res) => {
  18. if (res.confirm) that.setData({
  19. "form[19].value": ""
  20. })
  21. }
  22. })
  23. },
  24. onLoad(options) {
  25. if (options.sat_orderclueid) sat_orderclueid = this.data.content.sat_orderclueid;
  26. let form = [{
  27. label: "是否上图",
  28. error: false,
  29. errMsg: "",
  30. hint: "",
  31. type: "radio",
  32. value: "0",
  33. radioList: [{
  34. id: '1',
  35. name: '是'
  36. }, {
  37. id: '0',
  38. name: '否'
  39. }],
  40. valueName: "isuppictured", //绑定的字段名称
  41. required: false, //必填
  42. direction: "horizontal",
  43. interrupt: true
  44. }, {
  45. label: "客户(企业)",
  46. error: false,
  47. errMsg: "",
  48. type: "text",
  49. value: "",
  50. placeholder: "客户(企业)",
  51. valueName: "enterprisename",
  52. checking: "base",
  53. slot: "info",
  54. required: false
  55. }, {
  56. label: "联系人",
  57. error: false,
  58. errMsg: "",
  59. type: "textarea",
  60. value: "",
  61. placeholder: "联系人名称",
  62. valueName: "name",
  63. checking: "base",
  64. slot: "TXL",
  65. required: true
  66. }, {
  67. label: "联系方式",
  68. error: false,
  69. errMsg: "",
  70. hint: "",
  71. type: "radio",
  72. value: "0",
  73. radioList: [{
  74. id: '0',
  75. name: '手机号'
  76. }, {
  77. id: '1',
  78. name: '座机电话'
  79. }],
  80. valueName: "isTelephone", //绑定的字段名称
  81. required: true, //必填
  82. interrupt: true,
  83. checking: `true`,
  84. phonenumber: "",
  85. telephone: ["", ""]
  86. }, {
  87. label: "手机号",
  88. error: false,
  89. errMsg: "",
  90. type: "number",
  91. value: "",
  92. placeholder: "联系人手机号码",
  93. valueName: "phonenumber",
  94. required: true,
  95. checking: "phone"
  96. }, {
  97. label: "联系人角色",
  98. error: false,
  99. errMsg: "",
  100. type: "text",
  101. value: "",
  102. placeholder: "联系人角色",
  103. valueName: "contactsrole",
  104. checking: "base",
  105. required: false
  106. }, {
  107. label: "微信",
  108. error: false,
  109. errMsg: "",
  110. type: "text",
  111. value: "",
  112. placeholder: "微信号",
  113. valueName: "wechatnum",
  114. checking: "base",
  115. required: false
  116. }, {
  117. label: "省市县",
  118. error: false,
  119. errMsg: "",
  120. type: "region",
  121. value: "",
  122. placeholder: "省市县",
  123. valueName: "region",
  124. checking: "base",
  125. required: false
  126. }, {
  127. label: "详细地址",
  128. error: false,
  129. errMsg: "",
  130. type: "textarea",
  131. value: "",
  132. placeholder: "详细地址",
  133. valueName: "address",
  134. checking: "base",
  135. required: false
  136. }, {
  137. label: "项目名称",
  138. error: false,
  139. errMsg: "",
  140. type: "textarea",
  141. value: "",
  142. placeholder: "项目名称",
  143. valueName: "projectname",
  144. checking: "base",
  145. required: false
  146. }, {
  147. label: "项目规模",
  148. error: false,
  149. errMsg: "",
  150. type: "digit",
  151. value: "",
  152. placeholder: "请填写数值",
  153. valueName: "scale",
  154. checking: "base",
  155. required: false
  156. }, {
  157. label: "项目规模单位",
  158. error: false,
  159. errMsg: "",
  160. type: "option",
  161. optionNmae: "scaleunitname",
  162. optionType: "radio", //复选 radio 单选
  163. value: "",
  164. placeholder: "选择单位",
  165. valueName: "unitname",
  166. required: false
  167. }, {
  168. label: "总投资额(万元)",
  169. error: false,
  170. errMsg: "",
  171. type: "digit",
  172. value: "",
  173. placeholder: "请填写金额",
  174. valueName: "totalinvestment",
  175. checking: "base",
  176. required: false
  177. }, {
  178. label: "造价(万元)",
  179. error: false,
  180. errMsg: "",
  181. type: "digit",
  182. value: "",
  183. placeholder: "请填写金额",
  184. valueName: "costofconstruction",
  185. checking: "base",
  186. required: false
  187. }, {
  188. label: "预计开工时间",
  189. error: false,
  190. errMsg: "",
  191. type: "date",
  192. fields: "month",
  193. value: "",
  194. placeholder: "预计开工时间",
  195. valueName: "begdate_due",
  196. checking: "base",
  197. required: false
  198. }, {
  199. label: "预计完工时间",
  200. error: false,
  201. errMsg: "",
  202. type: "date",
  203. fields: "month",
  204. value: "",
  205. placeholder: "预计完工时间",
  206. valueName: "enddate_due",
  207. checking: "base",
  208. required: false
  209. },
  210. {
  211. label: "市场活动",
  212. error: false,
  213. errMsg: "",
  214. type: "route",
  215. url: "/packageA/select/selectActivity/index",
  216. value: "",
  217. params: {
  218. "id": 20221101095102,
  219. "content": {
  220. nocache: true,
  221. isAll: 0,
  222. "where": {
  223. 'condition': '',
  224. "unend": 1
  225. }
  226. }
  227. },
  228. query: "&radio=true",
  229. placeholder: "选择市场活动",
  230. valueName: "campaign_name",
  231. checking: "base",
  232. required: false
  233. }, {
  234. label: "领域",
  235. error: false,
  236. errMsg: "",
  237. type: "selector",
  238. range: [],
  239. rangeKey: "tradefield",
  240. rangeIndex: "",
  241. value: "",
  242. placeholder: "领域",
  243. valueName: "tradefield",
  244. required: true, //必填
  245. }, {
  246. label: "设计院",
  247. error: false,
  248. errMsg: "",
  249. type: "route",
  250. url: "/packageA/select/setclient/select",
  251. value: "",
  252. params: {
  253. "id": 20230809094104,
  254. "content": {
  255. "pageNumber": 1,
  256. "pageSize": 20,
  257. "where": {
  258. "condition": ""
  259. }
  260. }
  261. },
  262. query: "&radio=true&idname=sys_enterpriseid",
  263. placeholder: "选择设计院",
  264. valueName: "sys_enterpriseid",
  265. checking: "base",
  266. required: false,
  267. interrupt: true
  268. }, {
  269. label: "设计师",
  270. error: false,
  271. errMsg: "",
  272. type: "route",
  273. url: "/packageA/select/contacts/select",
  274. value: "",
  275. params: {
  276. "id": 20221022165503,
  277. "content": {
  278. "pageNumber": 1,
  279. "pageSize": 20,
  280. "sys_enterpriseid": 0,
  281. "where": {
  282. "condition": "",
  283. "workaddress": 0
  284. }
  285. }
  286. },
  287. query: "&radio=true",
  288. placeholder: "选择设计师",
  289. disabled: true,
  290. valueName: "contactsid",
  291. checking: "base",
  292. required: false
  293. }, {
  294. label: "关联项目",
  295. error: false,
  296. errMsg: "",
  297. type: "route",
  298. url: "/packageA/select/project/select",
  299. value: "",
  300. params: {
  301. "id": 20230809085404,
  302. "content": {
  303. nocache: true,
  304. sat_orderclueid,
  305. "where": {
  306. 'condition': '',
  307. }
  308. }
  309. },
  310. query: "&radio=true",
  311. placeholder: "选择关联项目",
  312. valueName: "sa_projectid",
  313. checking: "base",
  314. required: false,
  315. interrupt: true,
  316. slot: "empty",
  317. }, {
  318. label: "来源",
  319. error: false,
  320. errMsg: "",
  321. type: "text",
  322. value: "",
  323. placeholder: "来源",
  324. valueName: "cluesource",
  325. checking: "base",
  326. required: false
  327. }, {
  328. label: "线索概括",
  329. error: false,
  330. errMsg: "",
  331. type: "text",
  332. value: "",
  333. placeholder: "线索概括",
  334. valueName: "notes",
  335. checking: "base",
  336. required: false
  337. }
  338. ];
  339. if (wx.getStorageSync('userMsg').siteid == 'HY') form = form.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
  340. if (options.rowData) {
  341. let data = JSON.parse(options.rowData);
  342. let sys_enterpriseid = data.sys_enterpriseid;
  343. data.campaign_name = data.sat_campaignid ? [data.campaign_name, [data.sat_campaignid]] : "";
  344. data.contactsid = data.contactsid ? [data.designer, [data.contactsid]] : "";
  345. data.sa_projectid = data.sa_projectid ? [data.projectname1, [data.sa_projectid]] : "";
  346. data.sys_enterpriseid = data.sys_enterpriseid ? [data.institute, [data.sys_enterpriseid]] : "";
  347. if (data.phonenumber.includes("-")) {
  348. let index = form.findIndex(v => v.label == '手机号');
  349. data.telephone1 = data.phonenumber.split("-");
  350. form[index] = {
  351. label: "座机电话",
  352. error: false,
  353. errMsg: "",
  354. type: "telephone",
  355. value: ["", ""],
  356. valueName: "telephone1",
  357. required: true,
  358. checking: "telephone"
  359. }
  360. }
  361. form = form.map(v => {
  362. if (v.valueName == 'region') {
  363. v.value = data.province ? [data.province, data.city, data.county] : []
  364. } else if (v.valueName == 'isTelephone') {
  365. if (data.phonenumber.includes("-")) {
  366. v.value = '1'
  367. v.telephone = data.telephone1;
  368. } else {
  369. v.phonenumber = data.phonenumber
  370. }
  371. } else if (v.valueName == 'campaign_name') {
  372. v.value = data[v.valueName] ? [data[v.valueName],
  373. [data.sat_campaignid]
  374. ] : ""
  375. } else {
  376. v.value = data[v.valueName];
  377. }
  378. return v
  379. });
  380. if (data.isuppictured == 1) {
  381. let valueNameList = ["enterprisename", "name", "projectname", "scale", "sys_enterpriseid", "contactsid", "uppictured"];
  382. form.forEach((v, i) => {
  383. if (valueNameList.includes(v.valueName)) form[i].required = true;
  384. })
  385. }
  386. this.setData({
  387. form,
  388. 'form[0].value': data.isuppictured + '',
  389. 'form[1].value': data.enterprisename_customer || data.enterprisename || "",
  390. 'form[18].disabled': sys_enterpriseid == 0,
  391. 'form[18].params.content.sys_enterpriseid': sys_enterpriseid,
  392. 'content.sa_customersid': data.sa_customersid || 0
  393. })
  394. if (data.sat_orderclueid) sat_orderclueid = data.sat_orderclueid;
  395. setTimeout(() => {
  396. this.selectComponent("#Form").confirm();
  397. }, 100)
  398. } else {
  399. _Http.basic({
  400. "classname": "sysmanage.develop.optiontype.optiontype",
  401. "method": "optiontypeselect",
  402. "content": {
  403. pageNumber: 1,
  404. "pageSize": 1,
  405. "typename": "scaleunitname",
  406. "parameter": {
  407. "siteid": wx.getStorageSync('siteP').siteid
  408. }
  409. }
  410. }).then(res => {
  411. console.log("项目规模", res)
  412. if (res.msg == '成功') {
  413. let index = form.findIndex(v => v.label == '项目规模单位');
  414. if (index != -1) form[index].value = res.data[0].value;
  415. this.setData({
  416. form
  417. })
  418. }
  419. })
  420. }
  421. /* 获取领域 */
  422. _Http.basic({
  423. "id": 20221223141802,
  424. "content": {
  425. "pageNumber": 1,
  426. "pageSize": 99999,
  427. "where": {
  428. "condition": ""
  429. }
  430. }
  431. }).then(res => {
  432. console.log("获取领域", res)
  433. let item = form.find(v => v.label == '领域');
  434. item.range = res.msg == '成功' ? res.data : [];
  435. this.setData({
  436. form
  437. })
  438. })
  439. /* 查询是否为上图员 */
  440. _Http.basic({
  441. "classname": "webmanage.hr.hr",
  442. "method": "query_hrMain",
  443. "content": {
  444. "hrid": wx.getStorageSync('userMsg').hrid
  445. },
  446. }).then(res => {
  447. if (res.msg != '成功') return wx.showToast({
  448. title: res.msg,
  449. icon: "none"
  450. })
  451. this.data.isuppictured = res.data.isuppictured == 1 ? res.data.name : null;
  452. if (res.data.isuppictured == 0) {
  453. form[0].disabled = true;
  454. this.setData({
  455. form
  456. })
  457. }
  458. });
  459. this.setData({
  460. form
  461. })
  462. },
  463. /* 打开通讯录 */
  464. openContacts() {
  465. let that = this;
  466. let page = that.selectComponent("#Form");
  467. let form = page.data.form,
  468. index = form.findIndex(v => v.label == '联系人');
  469. if (form[index].disabled) return;
  470. wx.navigateTo({
  471. url: '/packageA/setclient/contacts',
  472. })
  473. getApp().globalData.handleSelect = (item) => {
  474. wx.showModal({
  475. title: '提示',
  476. content: `是否确定选择${item.name}`,
  477. complete: ({
  478. confirm
  479. }) => {
  480. if (confirm) {
  481. form[index].value = item.name;
  482. if (item.phonenumber.indexOf('-') !== -1) {
  483. form[index + 1].value = "1";
  484. form[index + 2] = {
  485. label: "座机电话",
  486. error: false,
  487. errMsg: "",
  488. type: "telephone",
  489. value: item.phonenumber.split("-"),
  490. valueName: "telephone1",
  491. required: true,
  492. checking: "telephone"
  493. }
  494. } else {
  495. form[index + 1].value = "0";
  496. form[index + 2] = {
  497. label: "手机号",
  498. error: false,
  499. errMsg: "",
  500. type: "number",
  501. value: item.phonenumber,
  502. placeholder: "联系人手机号码",
  503. valueName: "phonenumber",
  504. required: true,
  505. checking: "phone"
  506. }
  507. }
  508. that.setData({
  509. form
  510. })
  511. wx.navigateBack()
  512. getApp().globalData.handleSelect = null;
  513. page.confirm()
  514. }
  515. }
  516. })
  517. };
  518. },
  519. async interrupt(e) {
  520. let {
  521. data,
  522. form,
  523. temporary
  524. } = e.detail;
  525. let that = this;
  526. switch (temporary.item.label) {
  527. case "关联项目":
  528. function setProject() {
  529. form[temporary.index].value = data.value;
  530. form.find(v => v.label == '项目名称').value = data.value[0];
  531. that.setData({
  532. form
  533. })
  534. wx.navigateBack()
  535. }
  536. _Http.basic({
  537. "id": 20230812100204,
  538. "content": {
  539. sat_orderclueid,
  540. "sa_projectid": data.item.sa_projectid
  541. }
  542. }).then(res => {
  543. console.log("查询项目有无绑定线索", res)
  544. if (res.msg != '成功') return wx.showToast({
  545. title: res.msg,
  546. icon: "none"
  547. })
  548. if (res.data == 1) {
  549. wx.showModal({
  550. title: '提示',
  551. content: '该项目已有关联线索,是否取消关联原线索',
  552. confirmText: "取消关联",
  553. complete: (res) => {
  554. if (res.confirm) setProject();
  555. }
  556. })
  557. } else {
  558. setProject();
  559. }
  560. })
  561. break;
  562. case "是否上图":
  563. let valueNameList = ["enterprisename", "name", "projectname", "scale", "sys_enterpriseid", "contactsid", "uppictured"];
  564. form.forEach((v, i) => {
  565. if (valueNameList.includes(v.valueName)) form[i].required = data.value == 1;
  566. })
  567. if (form[temporary.index].value == 1) {
  568. form.push({
  569. label: "上图员",
  570. error: false,
  571. errMsg: "",
  572. type: "text",
  573. value: this.data.isuppictured || '',
  574. placeholder: "暂无",
  575. valueName: "sty",
  576. checking: "base",
  577. required: false,
  578. disabled: true
  579. })
  580. console.log(form[form.length - 1])
  581. } else {
  582. form = form.filter(v => v.label != '上图员')
  583. }
  584. break;
  585. case "设计院":
  586. temporary.item.value = data.value;
  587. form[temporary.index] = temporary.item;
  588. let index = form.findIndex(v => v.valueName == 'contactsid');
  589. if (index != -1) form[index] = {
  590. label: "设计师",
  591. error: false,
  592. errMsg: "",
  593. type: "route",
  594. url: "/packageA/select/contacts/select",
  595. value: "",
  596. params: {
  597. "id": 20221022165503,
  598. "content": {
  599. "pageNumber": 1,
  600. "pageSize": 20,
  601. "sys_enterpriseid": data.value[1][0],
  602. "where": {
  603. "condition": "",
  604. "workaddress": 0
  605. }
  606. },
  607. },
  608. query: "&radio=true",
  609. placeholder: "选择设计师",
  610. valueName: "contactsid",
  611. checking: "base",
  612. required: form[0].value == 1
  613. }
  614. wx.navigateBack()
  615. break;
  616. case "联系方式":
  617. let i = temporary.index + 1
  618. if (data.value == 0) {
  619. data.telephone = form[i].value;
  620. if (data.telephone.join() == ',') data.telephone = "";
  621. form[i] = {
  622. label: "手机号",
  623. error: false,
  624. errMsg: "",
  625. type: "number",
  626. value: data.phonenumber,
  627. placeholder: "联系人手机号码",
  628. valueName: "phonenumber",
  629. required: true,
  630. checking: "phone"
  631. }
  632. } else {
  633. if (typeof (form[i].value) == 'object') form[i].value = "";
  634. data.phonenumber = form[i].value;
  635. form[i] = {
  636. label: "座机电话",
  637. error: false,
  638. errMsg: "",
  639. type: "telephone",
  640. value: data.telephone || ["", ""],
  641. valueName: "telephone1",
  642. required: true,
  643. checking: "telephone"
  644. }
  645. };
  646. break;
  647. }
  648. this.setData({
  649. form
  650. })
  651. setTimeout(() => {
  652. this.selectComponent("#Form").confirm();
  653. }, 100)
  654. },
  655. introduce({
  656. detail
  657. }) {
  658. let item = detail;
  659. this.setData({
  660. [`form[1].value`]: item.companyName,
  661. [`form[7].value`]: [item.regProvince ? item.regProvince : item.regCity, item.regCity, item.regArea],
  662. [`form[8].value`]: item.address,
  663. })
  664. },
  665. queryClient() {
  666. let data = this.selectComponent("#Form").query();
  667. if (data.enterprisename == '') {
  668. wx.showToast({
  669. title: `您还未填写企业名称`,
  670. icon: "none"
  671. });
  672. } else {
  673. this.setData({
  674. form: this.selectComponent("#Form").data.form,
  675. })
  676. this.selectComponent("#Info").queryClient(data.enterprisename)
  677. }
  678. },
  679. submit() {
  680. let content = this.selectComponent("#Form").submit();
  681. content.sat_orderclueid = sat_orderclueid;
  682. content.isprivate = 0; //0表示公海,1表示私域
  683. content.sat_campaignid = content.campaign_name ? content.campaign_name[1][0] : 0;
  684. content.contactsid = content.contactsid ? content.contactsid[1][0] : 0;
  685. content.sa_projectid = content.sa_projectid ? content.sa_projectid[1][0] : 0;
  686. content.sys_enterpriseid = content.sys_enterpriseid ? content.sys_enterpriseid[1][0] : 0;
  687. content.city = content.region[1] || "";
  688. content.county = content.region[2] || "";
  689. content.province = content.region[0] || "";
  690. delete(content.region)
  691. delete(content.campaign_name)
  692. if (content.enterprisename == "" && content.projectname == "") return wx.showToast({
  693. title: '客户名称或项目名称为空,请完善信息',
  694. icon: "none"
  695. });
  696. if (content.scale.length != 0 && content.scale == 0) return wx.showToast({
  697. title: '项目规模不可为0',
  698. icon: "none"
  699. })
  700. content.phonenumber = content.isTelephone == 0 ? content.phonenumber || '' : content.telephone1.join("-") || '';
  701. this.setData({
  702. loading: true
  703. })
  704. delete content.telephone1;
  705. delete content.isTelephone;
  706. _Http.basic({
  707. "id": "20221205162402",
  708. content
  709. }).then(res => {
  710. console.log("添加线索", res)
  711. this.setData({
  712. loading: false
  713. })
  714. wx.showToast({
  715. title: res.msg != '成功' ? res.msg : '保存成功',
  716. icon: "none"
  717. })
  718. if (res.msg != '成功') return;
  719. setTimeout(() => {
  720. wx.navigateBack();
  721. getCurrentPages().forEach(v => {
  722. if (v.__route__ == 'packageA/saleAdmin/detail') {
  723. v.getDetail();
  724. } else if (v.__route__ == 'packageA/saleAdmin/index') {
  725. v.getList(true);
  726. } else if (['packageA/setclient/detail', 'packageA/publicCustomer/detail'].includes(v.__route__)) {
  727. v.selectComponent("#Clue").getList(this.data.content.sa_customersid, true)
  728. }
  729. })
  730. }, 300)
  731. })
  732. },
  733. // 是否显示全部
  734. onChange({
  735. detail
  736. }) {
  737. this.setData({
  738. showAll: detail
  739. })
  740. },
  741. /* 表单必填项是否完成 */
  742. onConfirm({
  743. detail
  744. }) {
  745. this.setData({
  746. disabled: detail
  747. })
  748. }
  749. })