detail.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. loading: true,
  5. isLeader: false, //是否为负责人
  6. tabsActive: 1, //tabs 选中项
  7. sa_customersid: 0,
  8. sColors: getApp().globalData.sColors,
  9. deletereasonShow: false,
  10. deletereason: "",
  11. },
  12. onLoad(options) {
  13. const appAuth = wx.getStorageSync('auth').wCustomer;
  14. this.setData({
  15. sa_customersid: options.id,
  16. appAuth
  17. })
  18. this.getDetail();
  19. getApp().globalData.Language.getLanguagePackage(this, '医院详情');
  20. },
  21. /* 获取详情 */
  22. getDetail() {
  23. /* 基本信息 */
  24. _Http.basic({
  25. "id": 20221012164302,
  26. "content": {
  27. sa_customersid: this.data.sa_customersid
  28. },
  29. }).then(res => {
  30. console.log("详情", res)
  31. if (res.code != '1') return wx.showToast({
  32. title: res.data,
  33. icon: "none"
  34. })
  35. this.setPreview(res);
  36. this.setData({
  37. loading: false,
  38. detail: res.data,
  39. })
  40. //获取标签
  41. if (this.data.appAuth.isdatatag) this.getTags();
  42. if (this.data.appAuth.isdatateam) this.getGroup()
  43. this.setTabbar();
  44. this.partialRenewal();
  45. });
  46. },
  47. areaInput(e) {
  48. this.setData({
  49. deletereason: e.detail.value
  50. })
  51. },
  52. onCancel() {
  53. this.setData({
  54. deletereasonShow: false,
  55. })
  56. },
  57. deleteItem() {
  58. _Http.basic({
  59. id: 20221010164402,
  60. content: {
  61. deletereason: this.data.deletereason,
  62. sa_customersids: [this.data.sa_customersid],
  63. datastatus: '1'
  64. }
  65. }).then(res => {
  66. console.log("作废", res)
  67. wx.showToast({
  68. title: res.code == 1 ? '作废成功' : res.msg,
  69. icon: "none",
  70. mask: res.code == 1
  71. })
  72. if (res.code == 1) setTimeout(() => {
  73. wx.navigateBack()
  74. }, 300)
  75. })
  76. },
  77. setPreview(res) {
  78. /* 摘要信息 */
  79. let briefs = [{
  80. label: "医院编号",
  81. value: res.data.billno
  82. }, {
  83. label: "医院等级",
  84. value: res.data.grade
  85. }, {
  86. label: "医院类型",
  87. value: res.data.type
  88. }, {
  89. label: "开发阶段",
  90. value: res.data.stagename
  91. }, {
  92. label: "开发状态",
  93. value: getApp().globalData.Language.getMapText(res.data.status),
  94. style: `color:${this.data.sColors[res.data.status]}`
  95. }, {
  96. label: "成交状态",
  97. value: res.data.tradingstatus,
  98. style: `color:${this.data.sColors[res.data.tradingstatus]}`
  99. }];
  100. /* 基本信息 */
  101. let list1 = [{
  102. label: "医院编号",
  103. value: res.data.billno
  104. }, {
  105. label: "医院名称",
  106. value: res.data.enterprisename
  107. }, {
  108. label: "医院类型",
  109. value: res.data.type
  110. }, {
  111. label: "开发阶段",
  112. value: res.data.stagename
  113. }, {
  114. label: "医院等级",
  115. value: res.data.grade
  116. }, {
  117. label: "预估手术总量",
  118. value: res.data.totalop
  119. }, {
  120. label: "省市县",
  121. value: res.data.province + res.data.city + res.data.county
  122. }, {
  123. label: "详细地址",
  124. value: res.data.address
  125. }, {
  126. label: "医院床位",
  127. value: res.data.bed
  128. }, {
  129. label: "手术间",
  130. value: res.data.room
  131. }, {
  132. label: "主机数量",
  133. value: res.data.host
  134. }, {
  135. label: "负责人",
  136. value: res.data.leader.length ? res.data.leader[0].name : ""
  137. }, {
  138. label: "营销区域",
  139. value: res.data.areaname
  140. }, {
  141. label: "所属部门",
  142. value: res.data.depname
  143. }, {
  144. label: "开发状态",
  145. value: getApp().globalData.Language.getMapText(res.data.status),
  146. style: `color:${this.data.sColors[res.data.status]}`
  147. }, {
  148. label: "成交状态",
  149. value: res.data.tradingstatus,
  150. style: `color:${this.data.sColors[res.data.tradingstatus]}`
  151. }];
  152. /* 系统信息 */
  153. let list2 = [{
  154. label: "创建人",
  155. value: res.data.createby
  156. }, {
  157. label: "创建时间",
  158. value: res.data.createdate
  159. }, {
  160. label: "最近编辑人",
  161. value: res.data.changeby
  162. }, {
  163. label: "最近编辑时间",
  164. value: res.data.changedate
  165. }, {
  166. label: "作废原因",
  167. value: res.data.deletereason
  168. }, {
  169. label: "转手次数",
  170. value: res.data.leader[0] ? res.data.leader[0].leadernum : 0
  171. }];
  172. this.setData({
  173. briefs,
  174. list1,
  175. list2
  176. });
  177. },
  178. //详情按钮回调
  179. tabbarOnClick({
  180. detail
  181. }) {
  182. let data = this.data.detail,
  183. that = this;
  184. switch (detail.label) {
  185. case "编辑":
  186. wx.navigateTo({
  187. url: `/prsx/hospital/insert?data=${JSON.stringify(data)}`,
  188. })
  189. break;
  190. case "作废":
  191. that.setData({
  192. deletereasonShow: true
  193. })
  194. break;
  195. case "更换负责人":
  196. wx.navigateTo({
  197. url: `/pages/group/select?data=${JSON.stringify({
  198. ownertable: "sa_customers",
  199. ownerid: this.data.sa_customersid,
  200. })}&radio=true&principal=true`,
  201. })
  202. break;
  203. case "查看重复":
  204. _Http.basic({
  205. "id": 20221208172002,
  206. "content": {
  207. ...data,
  208. pageSize: 999
  209. }
  210. }).then(res => {
  211. console.log("查看重复", res)
  212. if (res.code != '1') return wx.showToast({
  213. title: res.msg,
  214. icon: "none"
  215. });
  216. if (res.data.length == 0) return wx.showToast({
  217. title: getApp().globalData.Language.getMapText('未查询到重复数据'),
  218. icon: "none"
  219. });
  220. this.setData({
  221. repetitionList: res.data.map(v => {
  222. v.chars = v.chars.reduce((acc, item) => ({
  223. ...acc,
  224. ...item
  225. }), {});
  226. return v
  227. }),
  228. repetitionShow: true
  229. })
  230. })
  231. break;
  232. case "跟进":
  233. that.selectComponent("#Trace").toAdd()
  234. break;
  235. default:
  236. console.log(detail)
  237. break;
  238. }
  239. },
  240. /* 底部功能 */
  241. async setTabbar() {
  242. let detail = this.data.detail,
  243. isAdmin = this.data.isAdmin,
  244. isLeader = detail.leader.some(some => some.userid == wx.getStorageSync('userMsg').userid),
  245. editdataleader = isLeader ? 1 : 0,
  246. tabbarList = [],
  247. appAuth = this.data.appAuth,
  248. tabsList = [{
  249. label: "详细信息",
  250. icon: "icon-tabxiangxixinxi1"
  251. }, {
  252. label: "科室",
  253. icon: "icon-keshi",
  254. model: "#Department"
  255. }, {
  256. label: "医生",
  257. icon: "icon-yisheng",
  258. model: "#Doctors"
  259. }, {
  260. label: "预估手术量",
  261. icon: "icon-yugushoushuliang",
  262. model: "#Surgery"
  263. }, {
  264. label: "推荐产品",
  265. icon: "icon-tuijianchanpin",
  266. model: "#Product"
  267. }, {
  268. label: "地址管理",
  269. icon: "icon-tabdizhi",
  270. model: "#Address"
  271. }, {
  272. label: "关联经销商",
  273. icon: "icon-jingxiaoshang",
  274. model: "#Dealer"
  275. }];
  276. if (!isLeader) {
  277. let res = await getApp().agentOrNot("sa_customers", this.data.sa_customersid),
  278. data = res.code == '1' ? res.data : {
  279. editable: 0,
  280. editdataleader: 0
  281. }
  282. if (appAuth.isdatateam) isLeader = this.selectComponent("#Group").data.editable == 1;
  283. if (!isLeader) isLeader = data.editable == 1;
  284. editdataleader = data.editdataleader;
  285. }
  286. if (appAuth.isdatafollowup) {
  287. tabsList.unshift({
  288. label: "跟进动态",
  289. icon: "icon-tabgenjinjilu",
  290. model: "#Trace"
  291. })
  292. if (detail.status != '已终止') tabbarList.unshift({
  293. icon: "color-genjin",
  294. label: "跟进"
  295. });
  296. }
  297. tabsList.push({
  298. label: "合同",
  299. icon: "icon-tabhetong",
  300. model: "#Contract"
  301. })
  302. tabsList = tabsList.concat([{
  303. label: "附件",
  304. icon: "icon-tabfujian1",
  305. model: "#Files"
  306. }, {
  307. label: "操作",
  308. icon: "icon-tabcaozuojilu1",
  309. model: "#Record"
  310. }])
  311. if (isLeader || isAdmin) {
  312. tabbarList.push({
  313. icon: "color-bianji",
  314. label: "编辑"
  315. })
  316. }
  317. if (this.data.appAuth.options.find(v => v == 'viewRepetition')) tabbarList.push({
  318. icon: "icon-a-shouyejingangquhehuoren",
  319. label: "查看重复"
  320. });
  321. if (isLeader || isAdmin) {
  322. tabbarList.push({
  323. icon: "icon-shanchu",
  324. label: "作废"
  325. })
  326. }
  327. this.setData({
  328. tabbarList,
  329. isLeader,
  330. tabsList
  331. })
  332. },
  333. //tabs 切换
  334. tabsChange({
  335. detail
  336. }) {
  337. this.setData({
  338. tabsActive: detail
  339. });
  340. this.partialRenewal();
  341. },
  342. //局部数据更新 tabs
  343. partialRenewal(init = false) {
  344. try {
  345. let model = this.data.tabsList[this.data.tabsActive].model;
  346. if (model) {
  347. let Component = this.selectComponent(model),
  348. {
  349. total,
  350. pageNumber,
  351. pageTotal
  352. } = Component.data.content,
  353. id = model == "#Address" ? this.data.detail.sys_enterpriseid : this.data.detail.sa_customersid;
  354. if (model == "#Files") init = true;
  355. if (total == null || init) {
  356. Component.getList(id, init);
  357. } else if (pageNumber <= pageTotal) {
  358. Component.getList(id, false);
  359. }
  360. }
  361. } catch (error) {
  362. }
  363. },
  364. //更新标签
  365. getTags() {
  366. this.selectComponent("#Tags").getTags()
  367. },
  368. //更新团队成员
  369. getGroup() {
  370. this.selectComponent("#Group").getList().then(this.setTabbarList)
  371. },
  372. onReachBottom() {
  373. this.partialRenewal();
  374. },
  375. onUnload() {
  376. const page = getCurrentPages().find(v => v.__route__ == 'prsx/hospital/index');
  377. if (!page) return;
  378. let content = JSON.parse(JSON.stringify(page.data.content));
  379. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  380. content.pageNumber = 1;
  381. _Http.basic({
  382. id: '20221012164402',
  383. content
  384. }).then(res => {
  385. console.log("更新列表", res);
  386. if (res.code == '1') {
  387. res.data = res.data.map(v => {
  388. v.totalstage = v.stages.length
  389. v.stage = v.stages.findIndex(s => s.stagename == v.stagename) + 1
  390. v.progress = v.stage / v.totalstage * 100;
  391. return v
  392. })
  393. page.setData({
  394. list: res.data,
  395. "content.total": res.total
  396. })
  397. }
  398. })
  399. }
  400. })