detail.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. isLeader: false, //是否为负责人
  5. tabsActive: 0, //tabs 选中项
  6. sa_customersid: 0,
  7. detail: {}, //详情数据
  8. briefs: [], //简介列表
  9. tabsList: [{
  10. label: "跟进动态",
  11. icon: "icon-tabgenjinjilu"
  12. }, {
  13. label: "详细信息",
  14. icon: "icon-tabxiangxixinxi1"
  15. }, {
  16. label: "线索",
  17. icon: "icon-tabxiansuo"
  18. }, {
  19. label: "项目商机",
  20. icon: "icon-tabxiangmu"
  21. }, {
  22. label: "客户地址",
  23. icon: "icon-tabdizhi"
  24. }, {
  25. label: "联系人",
  26. icon: "icon-tablianxiren"
  27. }, {
  28. label: "报价单",
  29. icon: "icon-tabbaojiadan"
  30. }, {
  31. label: "开票信息",
  32. icon: "icon-tabkaipiaoxinxi"
  33. }, {
  34. label: "任务",
  35. icon: "icon-tabrenwu"
  36. }],
  37. list1: [], //基本信息
  38. list2: [], //系统信息
  39. tabbarList: []
  40. },
  41. onLoad(options) {
  42. this.setData({
  43. sa_customersid: options.id,
  44. isAdmin: wx.getStorageSync('auth').wCustomer.options.some(v => v == "admin"), //是否具有管理权限
  45. options: wx.getStorageSync('auth').wCustomer.options, //权限列表
  46. })
  47. this.getDetail();
  48. },
  49. //详情按钮回调
  50. tabbarOnClick({
  51. detail
  52. }) {
  53. let data = this.data.detail,
  54. that = this;
  55. switch (detail.label) {
  56. case "分享":
  57. wx.navigateTo({
  58. url: `/packageA/publicCustomer/pond/index?params=${JSON.stringify({
  59. "id": 20221206195102,
  60. name:"分享",
  61.                 "content": {
  62.                     "pageNumber": 1,
  63.                     "pageSize": 20,
  64.                     "where": {
  65.                         "condition": ""
  66.                     }
  67.                 }
  68. })}`,
  69. })
  70. break;
  71. case "退回":
  72. wx.showModal({
  73. title: '提示',
  74. content: `是否确定将${data.enterprisename}退回到公海客户`,
  75. complete: (res) => {
  76. console.log(data)
  77. if (res.confirm) _Http.basic({
  78. "id": 20221014102602,
  79. "content": {
  80. "sa_customerpoolid": data.sa_customerpoolid_source,
  81. "sa_customersids": [data.sa_customersid]
  82. }
  83. }).then(res => {
  84. console.log("公海线索退回", res)
  85. wx.showToast({
  86. title: res.msg == '成功' ? '退回成功' : res.msg,
  87. icon: "none"
  88. });
  89. if (res.msg == '成功') setTimeout(() => {
  90. let page = getCurrentPages().find(v => v.__route__ == 'packageA/setclient/index');
  91. if (page) page.setData({
  92. list: page.data.list.filter(v => v.sa_customersid != data.sa_customersid)
  93. });
  94. wx.redirectTo({
  95. url: '/packageA/publicCustomer/detail?id' + data.sa_customersid,
  96. })
  97. }, 300)
  98. })
  99. }
  100. });
  101. break;
  102. case "回收":
  103. wx.navigateTo({
  104. url: `/packageA/publicCustomer/pond/index?params=${JSON.stringify({
  105. "id": 20221206195102,
  106. name:"回收",
  107.                 "content": {
  108.                     "pageNumber": 1,
  109.                     "pageSize": 20,
  110.                     "where": {
  111.                         "condition": ""
  112.                     }
  113.                 }
  114. })}`,
  115. })
  116. break;
  117. case "跟进":
  118. wx.navigateTo({
  119. url: `/packageA/setclient/modules/trace/add/index?ownertable=sa_customers&ownerid=${data.sa_customersid}`,
  120. })
  121. break;
  122. case "编辑":
  123. wx.navigateTo({
  124. url: `/packageA/setclient/addAndEditor?data=${JSON.stringify(data)}`,
  125. })
  126. break;
  127. case "作废":
  128. wx.navigateTo({
  129. url: `/packageA/setclient/delete?item=${JSON.stringify({
  130. "sa_customersids": [this.data.detail.sa_customersid],
  131. datastatus: 1, //(0:正常;1:作废;2:锁定)
  132. })}`,
  133. })
  134. break;
  135. case "更换负责人":
  136. wx.navigateTo({
  137. url: `/pages/group/select?data=${JSON.stringify({
  138. ownertable:"sa_customers",
  139. ownerid:this.data.sa_customersid,
  140. })}&radio=true&principal=true`,
  141. })
  142. break;
  143. default:
  144. console.log(detail)
  145. break;
  146. }
  147. },
  148. handleTransfer(ids, list, name) {
  149. console.log(ids, list, name)
  150. wx.showModal({
  151. title: '提示',
  152. content: `是否确定将客户${name}至${list[0].poolname}?`,
  153. complete: (res) => {
  154. if (res.confirm) _Http.basic({
  155. "id": name == '回收' ? 20221014165602 : 20221014102502,
  156. "content": {
  157. "sa_customerpoolid": ids[0], //公海池id
  158. "sa_customersids": [this.data.detail.sa_customersid]
  159. },
  160. }).then(res => {
  161. console.log(name, res)
  162. wx.showToast({
  163. title: res.data == '成功' ? `${name}成功` : res.msg,
  164. icon: "none"
  165. });
  166. if (res.data == '成功') setTimeout(() => {
  167. wx.navigateBack()
  168. let page = getCurrentPages().find(v => v.__route__ == 'packageA/setclient/index');
  169. if (page) page.setData({
  170. list: page.data.list.filter(v => v.sa_customersid != this.data.detail.sa_customersid)
  171. });
  172. wx.redirectTo({
  173. url: '/packageA/publicCustomer/detail?id=' + this.data.detail.sa_customersid,
  174. })
  175. }, 300)
  176. })
  177. }
  178. })
  179. },
  180. /* 更换负责人 */
  181. handelSubmit(arr) {
  182. const that = this;
  183. wx.showModal({
  184. title: '提示',
  185. content: '是否确认更换负责人',
  186. complete: ({
  187. confirm
  188. }) => {
  189. if (confirm) _Http.basic({
  190. "id": 20220930103701,
  191. "content": {
  192. ownertable: "sa_customers",
  193. ownerid: that.data.sa_customersid,
  194. userid: arr[0]
  195. }
  196. }).then(res => {
  197. console.log("更换负责人", res)
  198. if (res.msg != '成功') return wx.showToast({
  199. title: res.data,
  200. icon: "none"
  201. });
  202. wx.showToast({
  203. title: '更换成功!',
  204. icon: "none"
  205. });
  206. setTimeout(() => {
  207. that.getDetail();
  208. getCurrentPages().forEach(v => {
  209. if (['packageA/setclient/index'].includes(v.__route__)) v.getList(true)
  210. })
  211. wx.navigateBack();
  212. }, 300)
  213. })
  214. }
  215. })
  216. },
  217. /* 获取详情 */
  218. getDetail() {
  219. /* 基本信息 */
  220. _Http.basic({
  221. "id": 20221012164302,
  222. "content": {
  223. sa_customersid: this.data.sa_customersid
  224. },
  225. }).then(res => {
  226. console.log("详情", res)
  227. if (res.msg != '成功') return wx.showToast({
  228. title: res.data,
  229. icon: "none"
  230. })
  231. /* 摘要信息 */
  232. let briefs = [{
  233. label: "客户级别",
  234. value: res.data.grade
  235. }, {
  236. label: "客户类型",
  237. value: res.data.type
  238. }, {
  239. label: "上级企业",
  240. value: res.data.superiorenterprisename
  241. }];
  242. /* 基本信息 */
  243. let list1 = [{
  244. label: "客户名称",
  245. value: res.data.enterprisename
  246. }, {
  247. label: "客户编号",
  248. value: res.data.sa_customersid
  249. }, {
  250. label: "客户级别",
  251. value: res.data.grade
  252. }, {
  253. label: "客户类型",
  254. value: res.data.type
  255. }, {
  256. label: "上级企业",
  257. value: res.data.superiorenterprisename
  258. }, {
  259. label: "分配状态",
  260. value: ""
  261. }, {
  262. label: "合作状态",
  263. value: res.data.status
  264. }, {
  265. label: "成交次数",
  266. value: res.data.contact_signnum
  267. }, {
  268. label: "来源",
  269. value: res.data.source
  270. }];
  271. /* 系统信息 */
  272. let list2 = [{
  273. label: "创建人",
  274. value: res.data.createby
  275. }, {
  276. label: "创建时间",
  277. value: res.data.createdate
  278. }, {
  279. label: "成交状态",
  280. value: res.data.tradingstatus
  281. }];
  282. this.setData({
  283. detail: res.data,
  284. briefs,
  285. list1,
  286. list2
  287. });
  288. //负责人
  289. _Http.basic({
  290. "id": 20220930103501,
  291. "content": {
  292. "ownertable": "sa_customers",
  293. "ownerid": this.data.sa_customersid
  294. }
  295. }).then(s => {
  296. console.log("负责人", s)
  297. let tabbarList = [{
  298. icon: "icon-genjin",
  299. label: "跟进"
  300. }];
  301. if (s.data.length != 0) {
  302. let userList = s.data.map(user => user.team[0]),
  303. isLeader = userList.some(some => some.userid == wx.getStorageSync('userMsg').userid);
  304. if (isLeader || this.data.isAdmin) tabbarList = [{
  305. icon: "icon-bianji",
  306. label: "编辑"
  307. }, {
  308. icon: "icon-zhuanyi",
  309. label: "更换负责人"
  310. }, {
  311. icon: "icon-shanchu",
  312. label: "作废"
  313. }].concat(tabbarList);
  314. if (isLeader && res.data.ispublic == 1) tabbarList = tabbarList.concat([{
  315. icon: "icon-dibu-fenxiang",
  316. label: "分享"
  317. }, {
  318. icon: "icon-dibu-chehui",
  319. label: "退回"
  320. }]);
  321. if (isLeader) tabbarList.splice(0, 0, {
  322. icon: "icon-dibu-tuihui",
  323. label: "回收"
  324. })
  325. let list = list1.concat([{
  326. label: "负责人",
  327. value: s.data[0].teamleader[0].name
  328. }, {
  329. label: "负责人部门",
  330. value: s.data[0].teamleader[0].position
  331. }])
  332. list[5].value = s.data.length > 0 ? '已分配' : '未分配';
  333. this.setData({
  334. isLeader,
  335. principal: s.data,
  336. list1: list,
  337. briefs: this.data.briefs.concat([{
  338. label: "负责人",
  339. value: s.data[0].teamleader[0].name
  340. }, {
  341. label: "最近跟进时间",
  342. value: s.data[0].teamleader[0].changedate
  343. }])
  344. });
  345. }
  346. this.setData({
  347. tabbarList,
  348. })
  349. });
  350. //系统信息
  351. _Http.basic({
  352. "id": 20221019091602,
  353. "content": {
  354. "sa_customersid": this.data.sa_customersid
  355. }
  356. }).then(s => {
  357. console.log("系统信息", s)
  358. let list = this.data.list2.concat([{
  359. label: "转手次数",
  360. value: s.data.changecount
  361. }, {
  362. label: "最近编辑人",
  363. value: s.data.changeby
  364. }, {
  365. label: "最近编辑时间",
  366. value: s.data.changedate
  367. }])
  368. /* {
  369. label: "客户资料完善度",
  370. value: s.data.tradingstatus + '%'
  371. } */
  372. this.setData({
  373. list2: list
  374. })
  375. })
  376. //获取标签
  377. this.getTags();
  378. this.getGroup()
  379. this.partialRenewal();
  380. });
  381. },
  382. //tabs 切换
  383. tabsChange({
  384. detail
  385. }) {
  386. this.setData({
  387. tabsActive: detail
  388. });
  389. this.partialRenewal();
  390. },
  391. //局部数据更新 tabs
  392. partialRenewal(init = false) {
  393. let id = this.data.detail.sys_enterpriseid;
  394. let model = '';
  395. let name = this.data.tabsList[this.data.tabsActive].label;
  396. switch (name) {
  397. case "任务":
  398. model = "#Work"
  399. break;
  400. case "跟进动态":
  401. model = "#Trace"
  402. break;
  403. case "项目商机":
  404. model = "#Project"
  405. break;
  406. case "线索":
  407. id = this.data.detail.sa_customersid;
  408. model = "#Clue"
  409. break;
  410. case "客户地址":
  411. model = "#Address"
  412. break;
  413. case "报价单":
  414. model = "#Offers"
  415. break;
  416. case "联系人":
  417. model = "#Contacts"
  418. break;
  419. case "开票信息":
  420. model = "#Financing"
  421. break;
  422. default:
  423. break;
  424. };
  425. if (model) {
  426. // 确定好模块ID total = null 是第一次加载 加载数据
  427. // init是新增或修改需要清数据
  428. let Component = this.selectComponent(model);
  429. const {
  430. total,
  431. pageNumber,
  432. pageTotal
  433. } = Component.data.content;
  434. if (total == null || init) {
  435. console.log(1)
  436. Component.getList(id, init);
  437. } else if (pageNumber <= pageTotal) {
  438. console.log(2)
  439. Component.getList(id, false);
  440. } else {
  441. //用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
  442. }
  443. }
  444. },
  445. //更新标签
  446. getTags() {
  447. this.selectComponent("#Tags").getTags();
  448. },
  449. //更新团队成员
  450. getGroup() {
  451. this.selectComponent("#Group").getList();
  452. },
  453. onReachBottom() {
  454. this.partialRenewal();
  455. },
  456. onShareAppMessage() {}
  457. })