detail.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. tabsActive: 0, //tabs 选中项
  5. sys_taskid: "",
  6. detail: '',
  7. tabsList: [{
  8. label: "详细信息",
  9. icon: "icon-tabxiangxixinxi1"
  10. }, {
  11. label: "跟进动态",
  12. icon: "icon-tabgenjinjilu"
  13. }, {
  14. label: "操作",
  15. icon: "icon-tabcaozuojilu1"
  16. }, {
  17. label: "附件",
  18. icon: "icon-tabfujian1",
  19. model: "#Files"
  20. }],
  21. tabbarList: [],
  22. confirmShow: false,
  23. finishnotes: "", //完成说明
  24. sColors: getApp().globalData.sColors,
  25. },
  26. onLoad(options) {
  27. getApp().globalData.Language.getLanguagePackage(this, '任务详情')
  28. this.setData({
  29. sys_taskid: options.id
  30. });
  31. this.getDetail();
  32. getApp().globalData.previewClick = this.previewClick.bind(this);
  33. },
  34. /* 完成情况说明输入 */
  35. areaInput(e) {
  36. this.setData({
  37. finishnotes: e.detail.value
  38. })
  39. },
  40. onConfirm(e) {
  41. _Http.basic({
  42. "id": 20221211112501,
  43. "content": {
  44. "sys_taskid": this.data.sys_taskid,
  45. "finishnotes": this.data.finishnotes
  46. }
  47. }).then(res => {
  48. console.log("完成情况说明", res)
  49. wx.showToast({
  50. title: res.code == '1' ? getApp().globalData.Language.getMapText('提交成功') : res.msg,
  51. icon: "none"
  52. })
  53. if (res.code == '1') setTimeout(this.getDetail, 500)
  54. })
  55. },
  56. /* 取消提交说明 */
  57. onCancel(e) {
  58. this.setData({
  59. confirmShow: false
  60. })
  61. },
  62. previewClick({
  63. label,
  64. value
  65. }) {
  66. if (label == '关联应用数据') {
  67. const detail = this.data.detail;
  68. if (detail.ownerid) {
  69. const authComparison = wx.getStorageSync('authComparison');
  70. //判断具体消息归属
  71. switch (detail.ownertable) {
  72. case "sa_customers":
  73. this.saCustomer(detail.ownerid);
  74. break;
  75. case "sat_orderclue":
  76. this.satOrderclue(detail.ownerid);
  77. break;
  78. case "sa_order":
  79. this.saOrder(detail.ownerid)
  80. break;
  81. case "sa_salesforecastbill":
  82. let url = detail.baseonproject == 1 ? '/packageA/finishforecast/detail' : '/packageA/invoiceforecast/detail';
  83. wx.navigateTo({
  84. url: url + "?id=" + detail.ownerid,
  85. })
  86. break;
  87. case "sys_phonebook":
  88. wx.navigateTo({
  89. url: `/packageA/contacts/detail?id=${detail.ownerid}&contactsid=0&sa_project_contactsid=0`,
  90. })
  91. break;
  92. case "sys_enterprise_contacts":
  93. wx.navigateTo({
  94. url: `/packageA/contacts/detail?id=0&contactsid=${detail.ownerid}&sa_project_contactsid=0`,
  95. })
  96. break;
  97. case "sa_project_contacts":
  98. wx.navigateTo({
  99. url: `/packageA/contacts/detail?id=0&contactsid=0&sa_project_contactsid=${detail.ownerid}`,
  100. })
  101. break;
  102. default:
  103. let data = authComparison.find(s => (s.objectname || "") == detail.ownertable);
  104. if (data) wx.navigateTo({
  105. url: data.path.split("/index")[0] + "/detail?id=" + detail.ownerid,
  106. })
  107. break;
  108. }
  109. }
  110. }
  111. },
  112. saOrder(sa_orderid) {
  113. _Http.basic({
  114. "id": 20221108151302,
  115. "content": {
  116. nocache: true,
  117. sa_orderid
  118. }
  119. }).then(res => {
  120. console.log("订单", res)
  121. if (res.code != '1') return wx.showToast({
  122. title: res.data,
  123. icon: "none"
  124. });
  125. let path = '';
  126. switch (res.data.type) {
  127. case '工具借用单':
  128. path = '/packageA/borrow/detail'
  129. break;
  130. case '借用归还单':
  131. path = '/packageA/toolBill/detail'
  132. break;
  133. default:
  134. path = '/packageA/orderForm/detail'
  135. break;
  136. }
  137. wx.navigateTo({
  138. url: path + '?id=' + sa_orderid,
  139. })
  140. });
  141. },
  142. satOrderclue(sat_orderclueid) {
  143. _Http.basic({
  144. "classname": "saletool.orderclue.web.orderclue",
  145. "method": "selectDetail",
  146. "version": 1,
  147. "content": {
  148. "nocache": true,
  149. sat_orderclueid
  150. },
  151. }).then(res => {
  152. console.log("线索详情", res)
  153. if (res.code != '1') return wx.showToast({
  154. title: res.data,
  155. icon: "none"
  156. });
  157. wx.navigateTo({
  158. url: (res.data.isprivate ? '/packageA/saleClue/detail' : '/packageA/publicClue/detail') + '?id=' + sat_orderclueid,
  159. })
  160. });
  161. },
  162. saCustomer(sa_customersid) {
  163. _Http.basic({
  164. "id": 20221012164302,
  165. "content": {
  166. sa_customersid
  167. },
  168. }).then(res => {
  169. console.log("医院详情", res)
  170. if (res.code != '1') return wx.showToast({
  171. title: res.data,
  172. icon: "none"
  173. });
  174. wx.navigateTo({
  175. url: (res.data.ispublic ? '/packageA/publicCustomer/detail' : '/packageA/setclient/detail') + '?id=' + sa_customersid,
  176. })
  177. });
  178. },
  179. getDetail() {
  180. _Http.basic({
  181. "id": 20221211111901,
  182. "content": {
  183. "nocache": true,
  184. "sys_taskid": this.data.sys_taskid
  185. },
  186. }).then(res => {
  187. console.log("任务详情", res)
  188. if (res.code != '1') return wx.showToast({
  189. title: res.msg,
  190. icon: "none"
  191. });
  192. let tabbarList = [{
  193. icon: "color-genjin",
  194. label: "跟进"
  195. }];
  196. if (res.data.status != '已完成') tabbarList.push({
  197. icon: "icon-dibu-chengjiao",
  198. label: "完成"
  199. })
  200. try {
  201. let isLeader = res.data.createuserid == wx.getStorageSync('userMsg').userid;
  202. if (isLeader) {
  203. tabbarList.splice(1, 0, {
  204. icon: "icon-shanchu",
  205. label: "删除"
  206. })
  207. tabbarList.splice(1, 0, {
  208. icon: "icon-guanlian-bianji",
  209. label: "编辑"
  210. })
  211. }
  212. } catch (error) {}
  213. this.setData({
  214. tabbarList,
  215. detail: res.data,
  216. briefs: [{
  217. label: "任务内容",
  218. value: res.data.remarks
  219. }, {
  220. label: "开始日期",
  221. value: res.data.starttime
  222. }, {
  223. label: "结束日期",
  224. value: res.data.endtime
  225. },
  226. {
  227. label: '关联应用数据',
  228. value: res.data.title
  229. }, {
  230. label: '状态',
  231. value: getApp().globalData.Language.getMapText(res.data.status),
  232. style:`color:${this.data.sColors[res.data.status]}`
  233. }
  234. ],
  235. list1: [{
  236. label: "任务标题",
  237. value: res.data.title
  238. }, {
  239. label: "任务内容",
  240. value: res.data.remarks
  241. }, {
  242. label: "开始日期",
  243. value: res.data.starttime
  244. }, {
  245. label: "结束日期",
  246. value: res.data.endtime
  247. }, {
  248. label: "执行人",
  249. value: res.data.leader[0].name
  250. }, {
  251. label: "协助人",
  252. value: ""
  253. }, {
  254. label: '关联应用数据',
  255. value: res.data.title,
  256. color: "#085CDF",
  257. slot: 'title'
  258. }, {
  259. label: '状态',
  260. value: getApp().globalData.Language.getMapText(res.data.status),
  261. style:`color:${this.data.sColors[res.data.status]}`
  262. }, {
  263. label: '完成说明',
  264. value: res.data.finishnotes
  265. }],
  266. list2: [{
  267. label: "创建人",
  268. value: res.data.createby
  269. }, {
  270. label: "创建时间",
  271. value: res.data.createdate
  272. }, {
  273. label: "最近编辑人",
  274. value: res.data.changeby
  275. }, {
  276. label: "最近编辑时间",
  277. value: res.data.changedate
  278. }, {
  279. label: "完成人",
  280. value: res.data.finishby
  281. }, {
  282. label: "完成时间",
  283. value: res.data.finishdate
  284. }, {
  285. label: "转手次数",
  286. value: res.data.leader.length ? res.data.leader[0].leadernum : 0
  287. }]
  288. });
  289. /* 更新列表中状态 */
  290. let page = getCurrentPages().find(v => v.__route__ == 'packageA/saleClue/index');
  291. if (page) {
  292. let index = page.data.list.findIndex(v => v.sys_taskid == res.data.sys_taskid);
  293. if (index != -1) page.setData({
  294. [`list[${index}].status`]: res.data.status,
  295. [`list[${index}].title`]: res.data.title,
  296. [`list[${index}].remarks`]: res.data.remarks
  297. })
  298. } else {
  299. let pages = getCurrentPages(),
  300. p = pages[pages.length - 2].selectComponent("#Work");
  301. if (p) {
  302. let index = p.data.list.findIndex(v => v.sys_taskid == res.data.sys_taskid);
  303. if (index != -1) p.setData({
  304. [`list[${index}].status`]: res.data.status,
  305. [`list[${index}].title`]: res.data.title,
  306. [`list[${index}].remarks`]: res.data.remarks
  307. })
  308. }
  309. }
  310. this.getTags();
  311. this.getGroup();
  312. this.partialRenewal();
  313. })
  314. },
  315. //tabs 切换
  316. tabsChange({
  317. detail
  318. }) {
  319. this.setData({
  320. tabsActive: detail
  321. });
  322. this.partialRenewal();
  323. },
  324. //更新标签
  325. getTags() {
  326. this.selectComponent("#Tags").getTags();
  327. },
  328. //更新团队成员
  329. getGroup() {
  330. this.selectComponent("#Group").getList().then(res => {
  331. let i = this.data.list1.findIndex(v => v.label == '协助人')
  332. this.setData({
  333. [`list1[${i}].value`]: res.filter(v => !v.isleader).map(v => v.name)
  334. })
  335. });
  336. },
  337. onClose() {
  338. this.setData({
  339. show: false
  340. });
  341. },
  342. //局部数据更新 tabs
  343. partialRenewal(init = false) {
  344. let id = this.data.detail.sys_taskid;
  345. let model = '';
  346. let name = this.data.tabsList[this.data.tabsActive].label;
  347. switch (name) {
  348. case "操作":
  349. model = "#Record"
  350. break;
  351. case "跟进动态":
  352. model = "#Trace"
  353. break;
  354. case "附件":
  355. model = "#Files"
  356. break;
  357. };
  358. if (model) {
  359. // 确定好模块ID total = null 是第一次加载 加载数据
  360. // init是新增或修改需要清数据
  361. let Component = this.selectComponent(model);
  362. const {
  363. total,
  364. pageNumber,
  365. pageTotal
  366. } = Component.data.content;
  367. if (total == null || init) {
  368. Component.getList(id, init);
  369. } else if (pageNumber <= pageTotal) {
  370. Component.getList(id, false);
  371. } else {
  372. //用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
  373. }
  374. }
  375. },
  376. onReachBottom() {
  377. this.partialRenewal();
  378. },
  379. //详情按钮回调
  380. tabbarOnClick({
  381. detail
  382. }) {
  383. let that = this;
  384. switch (detail.label) {
  385. case "编辑":
  386. let group = this.selectComponent("#Group").query();
  387. wx.navigateTo({
  388. url: `/packageA/work/add?data=${JSON.stringify(this.data.detail)}&group=${JSON.stringify(group)}`,
  389. })
  390. break;
  391. case "完成":
  392. this.setData({
  393. confirmShow: true
  394. })
  395. break;
  396. case "跟进":
  397. wx.navigateTo({
  398. url: `/prsx/trace/add/index?ownertable=sys_task&ownerid=${this.data.sys_taskid}&resource=任务`,
  399. })
  400. break;
  401. case "删除":
  402. wx.showModal({
  403. title: getApp().globalData.Language.getMapText('提示'),
  404. content: getApp().globalData.Language.getMapText(`是否要删除当前任务`) + '?',
  405. cancelText: getApp().globalData.Language.getMapText('取消'),
  406. confirmText: getApp().globalData.Language.getMapText('确定'),
  407. complete: (res) => {
  408. if (res.confirm) _Http.basic({
  409. "id": 20221211112601,
  410. "content": {
  411. "sys_taskids": [that.data.detail.sys_taskid]
  412. }
  413. }).then(res => {
  414. console.log("删除任务", res)
  415. wx.showToast({
  416. title: res.code == '1' ? getApp().globalData.Language.getMapText('删除成功') : res.msg,
  417. icon: "none",
  418. mask: res.code == '1'
  419. })
  420. if (res.code == '1') setTimeout(() => {
  421. wx.navigateBack()
  422. }, 800)
  423. })
  424. }
  425. })
  426. break;
  427. }
  428. },
  429. onUnload() {
  430. let page = getCurrentPages()[getCurrentPages().length - 2]
  431. if (page.__route__ == 'packageA/work/index') {
  432. let content = JSON.parse(JSON.stringify(page.data.content));
  433. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  434. content.pageNumber = 1;
  435. _Http.basic({
  436. id: '20220901162901',
  437. content
  438. }).then(res => {
  439. console.log("更新任务列表", res);
  440. if (res.code == '1') page.setData({
  441. list: res.data,
  442. "content.total": res.total
  443. })
  444. })
  445. } else {
  446. page.getTags && page.getTags()
  447. page.partialRenewal && page.partialRenewal(true)
  448. }
  449. },
  450. startSynchronization() {
  451. console.log("开始同步")
  452. wx.navigateTo({
  453. url: '/packageA/work/synchronization?data=' + JSON.stringify({
  454. ownertable: this.data.detail.ownertable,
  455. ownerid: this.data.detail.ownerid
  456. }),
  457. });
  458. _Http.selectSync = (item, ownertable) => {
  459. if (["sys_task", "sa_customers", "sa_project"].includes(ownertable)) {
  460. this.setData({
  461. finishnotes: `跟进类型:${item.type}\n跟进对象:${item.contacts ? item.contacts.join(","):""}\n${item.content}`
  462. })
  463. } else if (ownertable == 'sat_orderclue') {
  464. this.setData({
  465. finishnotes: `跟进类型:${item.followupmode}\n跟进内容:${item.content}`
  466. })
  467. } else {
  468. this.setData({
  469. finishnotes: '跟进内容:' + item.content
  470. })
  471. }
  472. wx.navigateBack()
  473. delete(_Http.selectSync)
  474. }
  475. },
  476. })