detail.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. const _Http = getApp().globalData.http,
  2. currency = require("../../utils/currency"),
  3. CNY = value => currency(value, {
  4. symbol: "¥",
  5. precision: 2
  6. }).format();
  7. Page({
  8. data: {
  9. loading: true,
  10. isLeader: false, //是否为负责人
  11. tabsActive: 0, //tabs 选中项
  12. sa_hospitaldepid: 0,
  13. sColors: getApp().globalData.sColors,
  14. },
  15. onLoad(options) {
  16. const appAuth = wx.getStorageSync('auth').wdepartment;
  17. let tabsList = [{
  18. label: "详细信息",
  19. icon: "icon-tabxiangxixinxi1"
  20. }, {
  21. label: "医生",
  22. icon: "icon-yisheng",
  23. model: "#Doctors"
  24. }, {
  25. label: "推荐产品",
  26. icon: "icon-tuijianchanpin",
  27. model: "#Product"
  28. }, {
  29. label: "附件",
  30. icon: "icon-tabfujian1",
  31. model: "#Files"
  32. }, {
  33. label: "操作",
  34. icon: "icon-tabcaozuojilu1",
  35. model: "#Record"
  36. }];
  37. if (appAuth.isdatafollowup) {
  38. tabsList.unshift({
  39. label: "跟进动态",
  40. icon: "icon-tabgenjinjilu",
  41. model: "#Trace"
  42. })
  43. }
  44. console.log("appAuth", appAuth)
  45. this.setData({
  46. sa_hospitaldepid: options.id,
  47. tabsList,
  48. appAuth
  49. })
  50. this.getDetail();
  51. getApp().globalData.Language.getLanguagePackage(this);
  52. },
  53. /* 获取详情 */
  54. getDetail() {
  55. /* 基本信息 */
  56. _Http.basic({
  57. "id": 2025101409393102,
  58. "content": {
  59. sa_hospitaldepid: this.data.sa_hospitaldepid
  60. },
  61. }).then(res => {
  62. console.log("详情", res)
  63. if (res.code != '1') return wx.showToast({
  64. title: res.data,
  65. icon: "none"
  66. })
  67. this.setPreview(res);
  68. this.setData({
  69. loading: false,
  70. detail: res.data,
  71. })
  72. //获取标签
  73. if (this.data.appAuth.isdatatag) this.getTags();
  74. if (this.data.appAuth.isdatateam) this.getGroup()
  75. this.setTabbar();
  76. this.partialRenewal();
  77. });
  78. },
  79. setPreview(res) {
  80. /* 摘要信息 */
  81. let briefs = [{
  82. label: "科室类别",
  83. value: res.data.type
  84. }, {
  85. label: "所属医院",
  86. value: res.data.enterprisename
  87. }, {
  88. label: "科室负责人",
  89. value: res.data.doctors
  90. }, {
  91. label: "开发阶段",
  92. value: res.data.stagename
  93. }, ];
  94. /* 基本信息 */
  95. let list1 = [{
  96. label: "科室名称",
  97. value: res.data.hospitaldepname
  98. }, {
  99. label: "科室类别",
  100. value: res.data.type
  101. }, {
  102. label: "开发阶段",
  103. value: res.data.stagename
  104. }, {
  105. label: "所属医院",
  106. value: res.data.enterprisename
  107. }, {
  108. label: "科室负责人",
  109. value: res.data.doctors
  110. }, {
  111. label: "备注",
  112. value: res.data.remarks
  113. }, {
  114. label: "负责人",
  115. value: res.data.leader.length ? res.data.leader[0].name : ''
  116. }];
  117. /* 系统信息 */
  118. let list2 = [{
  119. label: "创建人",
  120. value: res.data.createby
  121. }, {
  122. label: "创建时间",
  123. value: res.data.createdate
  124. }, {
  125. label: "最近编辑人",
  126. value: res.data.changeby
  127. }, {
  128. label: "最近编辑时间",
  129. value: res.data.changedate
  130. }, {
  131. label: "作废原因",
  132. value: res.data.deletereason
  133. }, {
  134. label: "转手次数",
  135. value: res.data.leader[0] ? res.data.leader[0].leadernum : 0
  136. }];
  137. this.setData({
  138. briefs,
  139. list1,
  140. list2
  141. });
  142. },
  143. //详情按钮回调
  144. tabbarOnClick({
  145. detail
  146. }) {
  147. let data = JSON.parse(JSON.stringify(this.data.detail)),
  148. that = this;
  149. switch (detail.label) {
  150. case "编辑":
  151. data.sa_customersid = data.enterprisename ? [data.enterprisename, [data.sa_customersid]] : "";
  152. wx.navigateTo({
  153. url: `/prsx/department/insert?data=${JSON.stringify(data)}`,
  154. })
  155. break;
  156. case "跟进":
  157. that.selectComponent("#Trace").toAdd()
  158. break;
  159. case "作废":
  160. wx.showModal({
  161. content: `是否确定作废'${data.hospitaldepname}'?`,
  162. complete: (res) => {
  163. if (res.confirm) _Http.basic({
  164. "content": {
  165. "sa_hospitaldepid": data.sa_hospitaldepid
  166. },
  167. "id": 2025101409395902
  168. }).then(res => {
  169. console.log("作废科室", res)
  170. wx.showToast({
  171. title: res.code != '1' ? res.msg : '作废成功',
  172. icon: "none",
  173. mask: res.code == '1'
  174. })
  175. if (res.code != '1') return;
  176. setTimeout(() => {
  177. wx.navigateBack()
  178. }, 300)
  179. })
  180. }
  181. })
  182. break;
  183. case "更换负责人":
  184. wx.navigateTo({
  185. url: `/pages/group/select?data=${JSON.stringify({
  186. ownertable:"sa_hospitaldep",
  187. ownerid:this.data.sa_hospitaldepid,
  188. })}&radio=true&principal=true`,
  189. })
  190. break;
  191. default:
  192. console.log(detail)
  193. break;
  194. }
  195. },
  196. /* 更换负责人 */
  197. handelSubmit(arr) {
  198. const that = this;
  199. wx.showModal({
  200. title: getApp().globalData.Language.getMapText('提示'),
  201. content: getApp().globalData.Language.getMapText('是否确认更换负责人'),
  202. complete: ({
  203. confirm
  204. }) => {
  205. if (confirm) wx.showModal({
  206. title: getApp().globalData.Language.getMapText('提示'),
  207. content: getApp().globalData.Language.getMapText('是否参与该数据的后续工作'),
  208. cancelText: getApp().globalData.Language.getMapText('不参与'),
  209. confirmText: getApp().globalData.Language.getMapText('参与'),
  210. complete: (s) => {
  211. _Http.basic({
  212. "id": 20220930103701,
  213. "content": {
  214. ownertable: "sa_hospitaldep",
  215. ownerid: that.data.sa_hospitaldepid,
  216. userid: arr[0],
  217. isaddoldleader: s.confirm ? 1 : 0
  218. }
  219. }).then(res => {
  220. console.log("更换负责人", res)
  221. if (res.code != '1') return wx.showToast({
  222. title: res.data,
  223. icon: "none"
  224. });
  225. wx.showToast({
  226. title: getApp().globalData.Language.getMapText('更换成功'),
  227. icon: "none",
  228. mask: true
  229. });
  230. getCurrentPages().forEach(v => {
  231. if (['packageA/setclient/index'].includes(v.__route__)) v.getList(true)
  232. })
  233. setTimeout(() => {
  234. wx.navigateBack({
  235. delta: 2
  236. });
  237. }, 300)
  238. })
  239. }
  240. })
  241. }
  242. })
  243. },
  244. /* 底部功能 */
  245. async setTabbar() {
  246. let detail = this.data.detail,
  247. isAdmin = this.data.appAuth.options.includes("admin") ? true : false,
  248. isLeader = detail.leader.some(some => some.userid == wx.getStorageSync('userMsg').userid),
  249. editdataleader = isLeader ? 1 : 0,
  250. tabbarList = [],
  251. appAuth = this.data.appAuth;
  252. if (isLeader || isAdmin) {
  253. tabbarList.push({
  254. icon: "color-bianji",
  255. label: "编辑"
  256. })
  257. tabbarList.push({
  258. icon: "icon-shanchu",
  259. label: "作废"
  260. })
  261. }
  262. if (appAuth.isdatafollowup) {
  263. tabbarList.push({
  264. icon: "color-genjin",
  265. label: "跟进"
  266. });
  267. }
  268. this.setData({
  269. tabbarList,
  270. isLeader,
  271. isAdmin
  272. })
  273. },
  274. //tabs 切换
  275. tabsChange({
  276. detail
  277. }) {
  278. this.setData({
  279. tabsActive: detail
  280. });
  281. this.partialRenewal();
  282. },
  283. //局部数据更新 tabs
  284. partialRenewal(init = false) {
  285. let model = this.data.tabsList[this.data.tabsActive].model;
  286. if (model) {
  287. let Component = this.selectComponent(model),
  288. {
  289. total,
  290. pageNumber,
  291. pageTotal
  292. } = Component.data.content,
  293. id = this.data.detail.sa_hospitaldepid;
  294. if (model == "#Files") init = true;
  295. if (total == null || init) {
  296. Component.getList(id, init);
  297. } else if (pageNumber <= pageTotal) {
  298. Component.getList(id, false);
  299. }
  300. }
  301. },
  302. //更新标签
  303. getTags() {
  304. this.selectComponent("#Tags").getTags()
  305. },
  306. //更新团队成员
  307. getGroup() {
  308. this.selectComponent("#Group").getList().then(this.setTabbarList)
  309. },
  310. onReachBottom() {
  311. this.partialRenewal();
  312. },
  313. onUnload() {
  314. getCurrentPages().forEach(page => {
  315. switch (page.__route__) {
  316. case 'prsx/department/index':
  317. let content = JSON.parse(JSON.stringify(page.data.content));
  318. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  319. content.pageNumber = 1;
  320. _Http.basic({
  321. id: '2025101409402402',
  322. content
  323. }).then(res => {
  324. console.log("更新科室列表", res);
  325. if (res.code == '1') {
  326. res.data = res.data.map(v => {
  327. v.totalstage = v.stages.length
  328. v.stage = v.stages.findIndex(s => s.stagename == v.stagename) + 1
  329. v.progress = v.stage / v.totalstage * 100;
  330. return v
  331. })
  332. page.setData({
  333. list: res.data,
  334. "content.total": res.total
  335. })
  336. }
  337. })
  338. break;
  339. case 'prsx/hospital/detail':
  340. let model = page.selectComponent("#Department");
  341. if (model) model.getList("", true);
  342. break;
  343. }
  344. })
  345. }
  346. })