detail.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. isLeader: false, //是否为负责人
  5. tabsActive: 0, //tabs 选中项
  6. sat_orderclueid: "",
  7. detail: '',
  8. siteShow: false,
  9. },
  10. onLoad(options) {
  11. const appAuth = wx.getStorageSync('auth').worderclue_public;
  12. let tabsList = [{
  13. label: "详细信息",
  14. icon: "icon-tabxiangxixinxi1"
  15. }, {
  16. label: "跟进记录",
  17. icon: "icon-tabgenjinjilu"
  18. }, {
  19. label: "来源线索",
  20. icon: "icon-tabxiansuo",
  21. model: "#Clue"
  22. }, {
  23. label: "操作",
  24. icon: "icon-tabcaozuojilu1"
  25. }]
  26. console.log("appAuth", appAuth)
  27. if (appAuth.isdatafollowup) tabsList.push({
  28. label: "跟进动态",
  29. icon: "icon-tabgenjinjilu"
  30. })
  31. if (appAuth.istask) tabsList.push({
  32. label: "任务",
  33. icon: "icon-tabrenwu",
  34. model: "#Work"
  35. })
  36. tabsList.push({
  37. label: "附件",
  38. icon: "icon-tabfujian1"
  39. })
  40. this.setData({
  41. sat_orderclueid: options.sat_orderclueid || options.id,
  42. isAdmin: appAuth.options.some(v => v == "admin"), //是否具有管理权限
  43. tabsList,
  44. appAuth
  45. });
  46. this.getDetail();
  47. },
  48. getDetail() {
  49. _Http.basic({
  50. "classname": "webmanage.saletool.orderclue.publicclue.PublicClue",
  51. "method": "selectDetail",
  52. "version": 1,
  53. "content": {
  54. "nocache": true,
  55. "sat_orderclueid": this.data.sat_orderclueid
  56. },
  57. }).then(res => {
  58. console.log("线索详情", res)
  59. if (res.msg != '成功') return wx.showToast({
  60. title: res.msg,
  61. icon: "none"
  62. });
  63. let list1 = [{
  64. label: "客户(企业)",
  65. value: res.data.enterprisename_customer
  66. }, {
  67. label: "联系人",
  68. value: res.data.name
  69. }, {
  70. label: "联系角色",
  71. value: res.data.contactsrole
  72. }, {
  73. label: "手机号码",
  74. value: res.data.phonenumber
  75. }, {
  76. label: "微信",
  77. value: res.data.wechatnum
  78. }, {
  79. label: "省市县",
  80. value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
  81. }, {
  82. label: "地址",
  83. value: res.data.address
  84. }, {
  85. label: "项目名称",
  86. value: res.data.projectname
  87. }, {
  88. label: "项目规模",
  89. value: res.data.scale ? res.data.scale + res.data.unitname : ""
  90. }, {
  91. label: "总投资额(万元)",
  92. value: res.data.totalinvestment
  93. }, {
  94. label: "造价(万元)",
  95. value: res.data.costofconstruction
  96. }, {
  97. label: "预计开工时间",
  98. value: res.data.begdate_due
  99. }, {
  100. label: "预计完工时间",
  101. value: res.data.enddate_due
  102. }, {
  103. label: "市场活动",
  104. value: res.data.campaign_name
  105. }, {
  106. label: "领域",
  107. value: res.data.tradefield
  108. }, {
  109. label: "设计院",
  110. value: res.data.institute
  111. }, {
  112. label: "设计师",
  113. value: res.data.designer
  114. }, {
  115. label: "关联项目",
  116. value: res.data.projectname1
  117. }, {
  118. label: "来源",
  119. value: res.data.cluesource
  120. }, {
  121. label: "线索概况",
  122. value: res.data.notes
  123. }, {
  124. label: '所属业务员',
  125. value: res.data.salename
  126. }, {
  127. label: '负责人',
  128. value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
  129. }, {
  130. label: '上图员',
  131. value: res.data.uppictured
  132. }, {
  133. label: '分配状态',
  134. value: res.data.allocationstatus
  135. }, {
  136. label: '跟进状态',
  137. value: res.data.status
  138. }];
  139. if (wx.getStorageSync('userMsg').siteid == 'HY') list1 = list1.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
  140. this.setData({
  141. isLeader: res.data.createuserid == wx.getStorageSync('userMsg').userid,
  142. detail: res.data,
  143. briefs: [{
  144. label: "联系人",
  145. value: res.data.name
  146. }, {
  147. label: "手机号",
  148. value: res.data.phonenumber
  149. }, {
  150. label: "市场活动",
  151. value: res.data.campaign_name
  152. }, {
  153. label: "领域",
  154. value: res.data.tradefield
  155. }, {
  156. label: '负责人',
  157. value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
  158. },
  159. {
  160. label: '分配状态',
  161. value: res.data.allocationstatus
  162. },
  163. {
  164. label: '跟进状态',
  165. value: res.data.status
  166. },
  167. {
  168. label: '跟进次数',
  169. value: res.data.followcount || '0'
  170. },
  171. ],
  172. list1,
  173. list2: [{
  174. label: "创建人",
  175. value: res.data.createBy
  176. }, {
  177. label: "创建时间",
  178. value: res.data.createDate
  179. }, {
  180. label: "分配人",
  181. value: res.data.assignedBy
  182. }, {
  183. label: "分配时间",
  184. value: res.data.assignedDate
  185. }, {
  186. label: "最近跟进人",
  187. value: res.data.followBy
  188. }, {
  189. label: "最近跟进时间",
  190. value: res.data.followDate
  191. }, {
  192. label: "最近编辑人",
  193. value: res.data.editBy
  194. }, {
  195. label: "最近编辑时间",
  196. value: res.data.editDate
  197. }, {
  198. label: "无效原因",
  199. value: res.data.invalidreason
  200. }, {
  201. label: "作废原因",
  202. value: res.data.deletereason
  203. }, {
  204. label: "跟进次数",
  205. value: res.data.followcount
  206. }]
  207. });
  208. /* 更新列表中状态 */
  209. let page = getCurrentPages().find(v => v.__route__ == 'packageA/publicClue/index');
  210. if (page) {
  211. let index = page.data.list.findIndex(v => v.sat_orderclueid == res.data.sat_orderclueid);
  212. if (index != -1) page.setData({
  213. [`list[${index}].status`]: res.data.status
  214. })
  215. }
  216. this.setTabbarList(res.data.status)
  217. if (this.data.appAuth.isdatatag) this.getTags();
  218. if (this.data.appAuth.isdatateam) this.getGroup();
  219. this.partialRenewal();
  220. })
  221. },
  222. setTabbarList(status) {
  223. let tabbarList = [];
  224. if (this.data.isAdmin) {
  225. if (this.data.detail.isprivate == 0 && this.data.detail.allocationstatus == '待分配') tabbarList.push({
  226. icon: "icon-zhuanyi",
  227. label: "分配"
  228. })
  229. tabbarList.push({
  230. icon: "icon-dibu-jieshu",
  231. label: "删除"
  232. })
  233. tabbarList.unshift({
  234. icon: "icon-bianji",
  235. label: "编辑"
  236. })
  237. }
  238. if (status == '已过期' && wx.getStorageSync('auth').worderclue_public.options.some(v => v == "recover")) tabbarList.unshift({
  239. icon: "icon-dibu-chehui",
  240. label: "恢复"
  241. })
  242. if (wx.getStorageSync('auth').worderclue_public.options.some(v => v == "shiftSite")) {
  243. tabbarList.unshift({
  244. icon: "icon-CRM",
  245. label: "转站点"
  246. })
  247. this.setData({
  248. siteShow: true
  249. })
  250. }
  251. this.setData({
  252. tabbarList
  253. })
  254. },
  255. //tabs 切换
  256. tabsChange({
  257. detail
  258. }) {
  259. this.setData({
  260. tabsActive: detail
  261. });
  262. this.partialRenewal();
  263. }, //更新标签
  264. getTags() {
  265. this.selectComponent("#Tags").getTags();
  266. }, //更新团队成员
  267. getGroup() {
  268. this.selectComponent("#Group").getList();
  269. },
  270. //局部数据更新 tabs
  271. partialRenewal(init = false) {
  272. let id = this.data.detail.sat_orderclueid;
  273. let model = '';
  274. let name = this.data.tabsList[this.data.tabsActive].label;
  275. switch (name) {
  276. case "任务":
  277. model = "#Work"
  278. break;
  279. case "跟进记录":
  280. model = "#follow"
  281. break;
  282. case "来源线索":
  283. model = "#Clue"
  284. break;
  285. case "操作":
  286. model = "#Record"
  287. break;
  288. case "跟进动态":
  289. model = "#Trace"
  290. break;
  291. case "附件":
  292. model = "#Files"
  293. break;
  294. };
  295. if (model) {
  296. // 确定好模块ID total = null 是第一次加载 加载数据
  297. // init是新增或修改需要清数据
  298. let Component = this.selectComponent(model);
  299. const {
  300. total,
  301. pageNumber,
  302. pageTotal
  303. } = Component.data.content;
  304. if (total == null || init) {
  305. Component.getList(id, init);
  306. } else if (pageNumber <= pageTotal) {
  307. Component.getList(id, false);
  308. } else {
  309. //用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
  310. }
  311. }
  312. },
  313. onReachBottom() {
  314. this.partialRenewal();
  315. },
  316. //详情按钮回调
  317. tabbarOnClick({
  318. detail
  319. }) {
  320. let data = this.data.detail,
  321. that = this;
  322. switch (detail.label) {
  323. case "编辑":
  324. wx.navigateTo({
  325. url: `/packageA/publicClue/addClue?rowData=${JSON.stringify(this.data.detail)}`,
  326. })
  327. break;
  328. case "分配":
  329. wx.navigateTo({
  330. url: `/packageA/publicClue/distribution?data=${JSON.stringify(this.data.detail)}`,
  331. })
  332. break;
  333. case "恢复":
  334. wx.showModal({
  335. title: '提示',
  336. content: `是否确定恢复该线索`,
  337. complete: (res) => {
  338. if (res.confirm) _Http.basic({
  339. "id": "20230907142004",
  340. "content": {
  341. "sat_orderclueid": data.sat_orderclueid
  342. }
  343. }).then(res => {
  344. console.log("恢复线索", res)
  345. wx.showToast({
  346. title: res.msg == '成功' ? "恢复成功" : res.msg,
  347. icon: "none"
  348. });
  349. that.getDetail();
  350. })
  351. }
  352. })
  353. break;
  354. case "转站点":
  355. that.selectComponent("#ShiftSite").showSite()
  356. break;
  357. case "删除":
  358. wx.showModal({
  359. title: '提示',
  360. content: `是否确认删除该线索?`,
  361. complete: ({
  362. confirm
  363. }) => {
  364. if (confirm) _Http.basic({
  365. "id": 20221101100502,
  366. "content": {
  367. "sat_orderclueids": [this.data.detail.sat_orderclueid]
  368. }
  369. }).then(res => {
  370. wx.showToast({
  371. title: res.msg == '成功' ? `操作成功` : res.msg,
  372. icon: "none"
  373. });
  374. setTimeout(() => {
  375. wx.navigateBack()
  376. getCurrentPages().forEach(v => {
  377. if (v.__route__ == "packageA/publicClue/index") {
  378. v.getList(true)
  379. }
  380. })
  381. }, 300)
  382. })
  383. }
  384. })
  385. break;
  386. case "撤回":
  387. wx.showModal({
  388. title: '提示',
  389. content: `是否确认撤回该线索?`,
  390. complete: ({
  391. confirm
  392. }) => {
  393. if (confirm) _Http.basic({
  394. classname: "webmanage.saletool.orderclue.publicclue.PublicClue",
  395. method: "revoke",
  396. "content": {
  397. "sat_orderclueid": this.data.detail.sat_orderclueid
  398. }
  399. }).then(res => {
  400. setTimeout(() => {
  401. wx.showToast({
  402. title: res.msg == '成功' ? `操作成功` : res.msg,
  403. icon: "none"
  404. });
  405. }, 1000)
  406. if (res.msg == '成功') this.getDetail()
  407. })
  408. }
  409. })
  410. break;
  411. }
  412. },
  413. onUnload() {
  414. const page = getCurrentPages().find(v => v.__route__ == 'packageA/publicClue/index');
  415. if (!page) return;
  416. let content = JSON.parse(JSON.stringify(page.data.content));
  417. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  418. content.pageNumber = 1;
  419. _Http.basic({
  420. id: '20221101094402',
  421. content
  422. }).then(res => {
  423. console.log("更新公海线索列表", res);
  424. if (res.msg == '成功') {
  425. page.setData({
  426. list: res.data,
  427. "content.total": res.total
  428. })
  429. page.getTags()
  430. }
  431. })
  432. }
  433. })