detail.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. loading: true,
  5. isLeader: false, //是否为负责人
  6. tabsActive: 0, //tabs 选中项
  7. sa_contractid: 0,
  8. sColors: getApp().globalData.sColors,
  9. deletereasonShow: false,
  10. deletereason: "",
  11. },
  12. onLoad(options) {
  13. const appAuth = wx.getStorageSync('auth').wcontract;
  14. this.setData({
  15. sa_contractid: options.id,
  16. appAuth
  17. })
  18. console.log("appAuth", appAuth)
  19. this.getDetail();
  20. getApp().globalData.Language.getLanguagePackage(this, '合同详情');
  21. },
  22. /* 获取详情 */
  23. getDetail() {
  24. /* 基本信息 */
  25. _Http.basic({
  26. id: 20221121195102,
  27. "content": {
  28. sa_contractid: this.data.sa_contractid
  29. },
  30. }).then(res => {
  31. console.log("详情", res)
  32. if (res.code != '1') return wx.showToast({
  33. title: res.data,
  34. icon: "none"
  35. })
  36. this.setPreview(res);
  37. this.setData({
  38. loading: false,
  39. detail: res.data,
  40. })
  41. //获取标签
  42. if (this.data.appAuth.isdatatag) this.getTags();
  43. if (this.data.appAuth.isdatateam) this.getGroup()
  44. this.setTabbar();
  45. this.partialRenewal();
  46. });
  47. },
  48. areaInput(e) {
  49. this.setData({
  50. deletereason: e.detail.value
  51. })
  52. },
  53. onCancel() {
  54. this.setData({
  55. deletereasonShow: false,
  56. })
  57. },
  58. deleteItem() {
  59. if (this.data.deletereason.trim() == '') return wx.showToast({
  60. title: '请输入作废原因',
  61. icon: "none"
  62. })
  63. _Http.basic({
  64. id: 20221121202502,
  65. content: {
  66. deletereason: this.data.deletereason,
  67. sa_contractids: [this.data.sa_contractid]
  68. }
  69. }).then(res => {
  70. console.log("作废", res)
  71. wx.showToast({
  72. title: res.code == 1 ? '作废成功' : res.msg,
  73. icon: "none",
  74. mask: res.code == 1
  75. })
  76. if (res.code == 1) setTimeout(() => {
  77. wx.navigateBack()
  78. }, 300)
  79. })
  80. },
  81. setPreview(res) {
  82. /* 摘要信息 */
  83. let briefs = [{
  84. label: "合同类型",
  85. value: res.data.type
  86. }, {
  87. label: "经销商",
  88. value: res.data.agentname
  89. }, {
  90. label: "有效期",
  91. style: res.data.status == '有效' ? `color:#3874F6` : '',
  92. value: res.data.begdate + '至' + res.data.enddate
  93. }, {
  94. label: "签约日期",
  95. value: res.data.signdate
  96. }, {
  97. label: "备注",
  98. value: res.data.remarks
  99. }, {
  100. label: "状态",
  101. value: getApp().globalData.Language.getMapText(res.data.status),
  102. style: `color:${this.data.sColors[res.data.status]}`
  103. }];
  104. /* 基本信息 */
  105. let list1 = [{
  106. label: "合同编号",
  107. value: res.data.billno
  108. }, {
  109. label: "合同类型",
  110. value: res.data.type
  111. }, {
  112. label: "经销商",
  113. value: res.data.agentname
  114. }, {
  115. label: "有效期",
  116. value: res.data.begdate + '至' + res.data.enddate
  117. }, {
  118. label: "签约日期",
  119. value: res.data.signdate
  120. }, {
  121. label: "履约保证金",
  122. value: res.data.earnestmoney
  123. }, {
  124. label: "货款支付",
  125. value: res.data.payment
  126. }, {
  127. label: "奖励政策",
  128. value: res.data.reward
  129. }, {
  130. label: "年目标手术量",
  131. value: res.data.opqty
  132. }, {
  133. label: "备注",
  134. value: res.data.remarks
  135. }, {
  136. label: "负责人",
  137. value: res.data.leader.length ? res.data.leader[0].name : ''
  138. }, {
  139. label: "状态",
  140. value: res.data.status,
  141. style: `color:${this.data.sColors[res.data.status]}`
  142. }];
  143. if (res.data.type == '医院协议') {
  144. const obj = {
  145. label: "医院",
  146. value: res.data.hospitalname
  147. };
  148. briefs.splice(1, 0, obj)
  149. list1.splice(2, 0, obj)
  150. }
  151. /* 系统信息 */
  152. let list2 = [{
  153. label: "创建人",
  154. value: res.data.createby
  155. }, {
  156. label: "创建时间",
  157. value: res.data.createdate
  158. }, {
  159. label: "最近编辑人",
  160. value: res.data.changeby
  161. }, {
  162. label: "最近编辑时间",
  163. value: res.data.changedate
  164. }, {
  165. label: "作废原因",
  166. value: res.data.deletereason
  167. }, {
  168. label: "转手次数",
  169. value: res.data.leader.length ? res.data.leader[0].leadernum : ''
  170. }];
  171. this.setData({
  172. briefs,
  173. list1,
  174. list2
  175. });
  176. },
  177. //详情按钮回调
  178. tabbarOnClick({
  179. detail
  180. }) {
  181. let data = this.data.detail,
  182. that = this;
  183. switch (detail.label) {
  184. case "编辑":
  185. wx.navigateTo({
  186. url: `/prsx/contract/insert?data=${JSON.stringify(data)}&type=${data.type}`,
  187. })
  188. break;
  189. case "作废":
  190. that.setData({
  191. deletereasonShow: true
  192. })
  193. break;
  194. case "跟进":
  195. that.selectComponent("#Trace").toAdd()
  196. break;
  197. default:
  198. console.log(detail)
  199. break;
  200. }
  201. },
  202. /* 底部功能 */
  203. async setTabbar() {
  204. let detail = this.data.detail,
  205. isAdmin = wx.getStorageSync("userMsg").usertype == 0,
  206. isLeader = detail.leader.length ? detail.leader.some(v => v.userid == wx.getStorageSync('userMsg').userid) : false,
  207. editdataleader = isLeader ? 1 : 0,
  208. tabbarList = [],
  209. appAuth = this.data.appAuth,
  210. tabsList = [{
  211. label: "详细信息",
  212. icon: "icon-tabxiangxixinxi1"
  213. }];
  214. if (!isLeader) {
  215. let res = await getApp().agentOrNot("sa_contract", this.data.sa_contractid),
  216. data = res.code == '1' ? res.data : {
  217. editable: 0,
  218. editdataleader: 0
  219. }
  220. if (appAuth.isdatateam) isLeader = this.selectComponent("#Group").data.editable == 1;
  221. if (!isLeader) isLeader = data.editable == 1;
  222. editdataleader = data.editdataleader;
  223. }
  224. if (appAuth.isdatafollowup) {
  225. tabsList.unshift({
  226. label: "跟进动态",
  227. icon: "icon-tabgenjinjilu",
  228. model: "#Trace"
  229. })
  230. tabbarList.push({
  231. icon: "color-genjin",
  232. label: "跟进"
  233. });
  234. }
  235. if (appAuth.options.includes("update")) tabbarList.push({
  236. icon: "color-bianji",
  237. label: "编辑"
  238. })
  239. if (appAuth.options.includes("delete")) tabbarList.push({
  240. icon: "icon-shanchu",
  241. label: "作废"
  242. })
  243. tabsList = tabsList.concat([{
  244. label: "附件",
  245. icon: "icon-tabfujian1",
  246. model: "#Files"
  247. }, {
  248. label: "操作",
  249. icon: "icon-tabcaozuojilu1",
  250. model: "#Record"
  251. }])
  252. this.setData({
  253. tabbarList,
  254. isLeader,
  255. tabsList
  256. })
  257. },
  258. //tabs 切换
  259. tabsChange({
  260. detail
  261. }) {
  262. this.setData({
  263. tabsActive: detail
  264. });
  265. this.partialRenewal();
  266. },
  267. //局部数据更新 tabs
  268. partialRenewal(init = false) {
  269. try {
  270. let model = this.data.tabsList[this.data.tabsActive].model;
  271. if (model) {
  272. let Component = this.selectComponent(model),
  273. {
  274. total,
  275. pageNumber,
  276. pageTotal
  277. } = Component.data.content,
  278. id = model == "#Address" ? this.data.detail.sys_enterpriseid : this.data.detail.sa_contractid;
  279. if (model == "#Files") init = true;
  280. if (total == null || init) {
  281. Component.getList(id, init);
  282. } else if (pageNumber <= pageTotal) {
  283. Component.getList(id, false);
  284. }
  285. }
  286. } catch (error) {
  287. }
  288. },
  289. //更新标签
  290. getTags() {
  291. this.selectComponent("#Tags").getTags()
  292. },
  293. //更新团队成员
  294. getGroup() {
  295. this.selectComponent("#Group").getList().then(this.setTabbarList)
  296. },
  297. onReachBottom() {
  298. this.partialRenewal();
  299. },
  300. onUnload() {
  301. getCurrentPages().forEach(page => {
  302. if (page.__route__ == 'prsx/contract/index') {
  303. let content = JSON.parse(JSON.stringify(page.data.content));
  304. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  305. content.pageNumber = 1;
  306. _Http.basic({
  307. id: '20221121201502',
  308. content
  309. }).then(res => {
  310. console.log("更新列表", res);
  311. if (res.code == '1') {
  312. page.setData({
  313. list: res.data,
  314. "content.total": res.total
  315. })
  316. }
  317. })
  318. } else {
  319. const modal = page.selectComponent("#Contract");
  320. if (modal) modal.getList("", true)
  321. }
  322. })
  323. }
  324. })