index.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. // 慢阻肺患者档案-服务档案
  2. var template = ''
  3. $.ajax('../../../component/statistics/CopdServeNum/index.html', {
  4. data: {},
  5. dataType: 'html',
  6. cache: false,
  7. timeout: 60000,
  8. async: false,
  9. error: function (res) {},
  10. success: function (res) {
  11. template = res
  12. }
  13. })
  14. Vue.component('copd-serve-num', {
  15. template: template,
  16. props: [],
  17. data() {
  18. return {
  19. // 当前显示的字段
  20. communityArr: [],
  21. tableFieldList: [],
  22. quotaStrArr: [],
  23. value1: [],
  24. rangeList: [
  25. { name: '按区', code: 'town' },
  26. { name: '按社区', code: 'hospital' }
  27. ],
  28. startTime: '',
  29. endTime: '',
  30. rangeCode: 'town',
  31. quotaStr: '',
  32. range: '',
  33. area: '',
  34. hospital: '',
  35. page: 1,
  36. size: 20,
  37. chooseYear: '',
  38. years: '',
  39. userRole: '',
  40. levelList: [
  41. { level: '4', areaLevel: '2' },
  42. { level: '3', areaLevel: '3' },
  43. { level: '2', areaLevel: '4' }
  44. ], //两种搜索,地区等级对比
  45. areaLevel: '', // 2、市,3、区,4、社区,5、团队
  46. initareaLevel: '',
  47. initlevel: '',
  48. initarea: '',
  49. level: '',
  50. areaTitle: '',
  51. areaCode: null,
  52. communityList: [{ code: '', name: '全部' }],
  53. communityCode: null,
  54. teamList: [{ code: '', name: '全部' }],
  55. teamCode: '',
  56. form: {
  57. range: 'town'
  58. },
  59. userRoleCode: '',
  60. docInfo: JSON.parse(window.localStorage.getItem('docInfo')),
  61. isShowBtn: 0,
  62. isGuGan: false,
  63. areaList: [],
  64. rangeOptions: [
  65. { label: '区', value: 'town' },
  66. { label: '社区', value: 'hospital' }
  67. ],
  68. areaOptions: [
  69. { label: '厦门市', value: '' },
  70. { label: '思明区', value: '350203' },
  71. { label: '海沧区', value: '350205' },
  72. { label: '湖里区', value: '350206' },
  73. { label: '集美区', value: '350211' },
  74. { label: '同安区', value: '350212' },
  75. { label: '翔安区', value: '350213' }
  76. ],
  77. tabledata: [],
  78. hospitalOptions: [],
  79. tableHeader: [
  80. { label: '地区', prop: 'name', width: '90' },
  81. { label: '总患者人数', prop: 'patientNum', width: '90' },
  82. { label: '计划服务人数', prop: 'planNum', width: '90' },
  83. { label: '已服务人数', prop: 'serviceNum', width: '90' },
  84. { label: '服务完成度', prop: 'serviceProgress', width: '90' }
  85. ],
  86. radio: '1',
  87. fileList: [],
  88. file: undefined,
  89. isProgressShow: false,
  90. percentage: 0,
  91. success: false,
  92. loading: false,
  93. isOver: false,
  94. status: '',
  95. errList: [],
  96. daLoading: false,
  97. isShow: false,
  98. datatotal: 0
  99. }
  100. },
  101. methods: {
  102. gotoDownLoad() {
  103. const a = document.createElement('a')
  104. a.style.display = 'none'
  105. a.download = '模板.xlsx'
  106. a.href = './template.xls'
  107. a.target = '_blank'
  108. a.click()
  109. },
  110. hospitalList() {
  111. var vm = this
  112. statisticAPI.hospitalList({ queryArea: vm.userRoleCode }).then(function (res) {
  113. if (res.status == 200) {
  114. vm.communityArr = res.detailModelList
  115. }
  116. })
  117. },
  118. //获取省市区 type:区3
  119. getDistrict: function (type, code, name) {
  120. var vm = this,
  121. list = [],
  122. param = ''
  123. if (type == 3) {
  124. list = [{ code: code, name: name }]
  125. param = 'area'
  126. } else if (type == 5) {
  127. list = [{ code: '', name: '全部' }]
  128. param = 'community'
  129. }
  130. var params = {
  131. type: type,
  132. code: code
  133. }
  134. homeAPI.getDistrict(params).then(function (res) {
  135. if (res.status == 200) {
  136. vm[param + 'List'] = list.concat(res.list)
  137. if (type == 3) {
  138. vm[param + 'Code'] = vm[param + 'List'][0].code
  139. vm.selChange(3)
  140. vm.search()
  141. }
  142. } else {
  143. vm.$message.error(res.msg)
  144. }
  145. })
  146. },
  147. // 初始化时间
  148. initTime(vm) {
  149. var now = new Date()
  150. vm.endTime = now.format('yyyy-MM-dd')
  151. var start = now.getFullYear() + '-' + '01-01'
  152. vm.startTime = new Date(start).format('yyyy-MM-dd')
  153. vm.nowyear = vm.chooseYear = now.getFullYear()
  154. // vm.chooseYear = '2022'
  155. vm.nowmonth = now.getMonth() + 1
  156. vm.years = ['2025']
  157. // for (i = vm.nowyear; i >= 2013; i--) {
  158. // vm.years.push(i)
  159. // }
  160. },
  161. resetArea() {
  162. if (this.level == 1) {
  163. delete this.form.area
  164. delete this.form.hospital
  165. delete this.form.team
  166. } else if (this.level == 2) {
  167. delete this.form.hospital
  168. delete this.form.team
  169. } else {
  170. delete this.form.team
  171. }
  172. },
  173. // 数据范围初始化
  174. initScope(type) {
  175. var vm = this
  176. var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
  177. if (selectedRole.code.indexOf('350200') > -1) {
  178. this.level = 1 // 市卫健委
  179. this.areaOptions = [
  180. { label: '厦门市', value: '' },
  181. { label: '思明区', value: '350203' },
  182. { label: '海沧区', value: '350205' },
  183. { label: '湖里区', value: '350206' },
  184. { label: '集美区', value: '350211' },
  185. { label: '同安区', value: '350212' },
  186. { label: '翔安区', value: '350213' }
  187. ]
  188. this.rangeOptions = [
  189. { label: '区', value: 'town' },
  190. { label: '社区', value: 'hospital' }
  191. ]
  192. this.form = {
  193. range: 'town',
  194. area: ''
  195. }
  196. } else if (selectedRole.code.length == 6) {
  197. this.level = 2 // 区管理
  198. this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
  199. this.form = {
  200. range: 'town',
  201. area: selectedRole.code
  202. }
  203. this.getHospital(selectedRole.code)
  204. } else {
  205. this.level = 3 // 社区管理
  206. this.rangeOptions = [{ label: '社区', value: 'hospital' }]
  207. this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code.substring(0, 6) }]
  208. this.hospitalOptions = [{ name: selectedRole.name, code: selectedRole.code }]
  209. this.form = {
  210. range: 'hospital',
  211. area: selectedRole.code.substring(0, 6),
  212. hospital: selectedRole.code
  213. }
  214. this.getTeam(selectedRole.code)
  215. }
  216. return
  217. //获得缓存中缓存的角色权限
  218. var userRole = window.sessionStorage.getItem('selectedRole')
  219. if (!userRole) {
  220. return false
  221. }
  222. vm.userRole = JSON.parse(userRole)
  223. //level:2、市,3、区,4、社区,5、团队
  224. vm.initareaLevel = vm.areaLevel = vm.userRole.code == 'jk_350200' ? 2 : vm.userRole.code.length == 9 ? 3 : 4
  225. vm.initlevel = vm.level = vm.userRole.code == 'jk_350200' ? 4 : vm.userRole.code.length == 9 ? 3 : 2
  226. // vm.lowLevel = vm.initlowLevel = vm.userRole.code == '350200' ? 3 : vm.userRole.code.length == 6 ? 2 : 1;
  227. vm.initarea = vm.area = vm.userRole.code
  228. vm.areaTitle = vm.userRole.name
  229. if (vm.initlevel == 4) {
  230. //市获取区
  231. vm.getDistrict(3, vm.initarea.substring(3), vm.areaTitle.substr(0, 3))
  232. vm.rangeCode = vm.rangeList[0].code
  233. } else if (vm.initlevel == 3) {
  234. //区获取社区
  235. vm.areaList = [{ code: vm.initarea, name: vm.areaTitle }]
  236. vm.areaCode = vm.initarea
  237. vm.rangeCode = vm.rangeList[0].code
  238. } else if (vm.initlevel == 2) {
  239. //社区获取团队
  240. vm.communityList = [{ code: vm.initarea, name: vm.areaTitle }]
  241. vm.communityCode = vm.initarea
  242. vm.rangeList.shift()
  243. vm.rangeCode = vm.rangeList[0].code
  244. }
  245. vm.range = vm.rangeCode
  246. },
  247. toggleField(fieldName) {
  248. return this.tableFieldList.indexOf(fieldName) !== -1
  249. },
  250. selChange: function (type) {
  251. var vm = this,
  252. name = ''
  253. if (type == 3) {
  254. vm.initSelOption('community')
  255. vm.initSelOption('team')
  256. vm.getCommunityHospital()
  257. } else if (type == 5) {
  258. vm.initSelOption('team')
  259. // vm.teamListByArea();
  260. }
  261. },
  262. initSelOption: function (param) {
  263. var vm = this
  264. vm[param + 'List'] = [{ code: '', name: '全部' }]
  265. if (param == 'team') {
  266. vm[param + 'List'] = [{ id: '', name: '全部' }]
  267. }
  268. vm[param + 'Code'] = vm[param + 'List'][0].code || vm[param + 'List'][0].id
  269. },
  270. getCommunityHospital: function () {
  271. var vm = this,
  272. list = [{ code: '', name: '全部' }],
  273. param = 'community'
  274. homeAPI.getCommunityHospital({ area: vm.areaCode == '350200' ? '' : vm.areaCode }).then(function (res) {
  275. if (res.status == 200) {
  276. vm[param + 'List'] = list.concat(res.data)
  277. vm[param + 'Code'] = vm[param + 'List'][0].code
  278. } else {
  279. vm.$message.error(res.msg)
  280. }
  281. })
  282. },
  283. exportTable() {
  284. var vm = this
  285. vm.daLoading = true
  286. var params = {
  287. year: this.chooseYear,
  288. range: this.form.range,
  289. area: this.form.area == '350200' ? '' : this.form.area === null ? '' : this.form.area
  290. }
  291. if (this.form.range == 'hospital') {
  292. params.hospital = this.form.hospital
  293. }
  294. statisticAPI.exportServiceProgress(params, '服务人数配置及进度查询.xls').then(function (res) {
  295. vm.daLoading = false
  296. vm.$message({
  297. message: '导出成功!',
  298. type: 'success'
  299. })
  300. })
  301. },
  302. getHospital(code) {
  303. var vm = this
  304. homeAPI.getCommunityHospital({ area: vm.form.area == '350200' ? '' : vm.form.area }).then(function (res) {
  305. vm.hospitalOptions = [{ code: '', name: '全部' }]
  306. vm.hospitalOptions = vm.hospitalOptions.concat(res.data)
  307. })
  308. },
  309. getTeam(code) {
  310. var vm = this
  311. delete this.form.team
  312. var params = {
  313. hospital: code,
  314. area: this.form.area
  315. }
  316. httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
  317. vm.teamOptions = [{ id: '', name: '全部' }]
  318. vm.teamOptions = vm.teamOptions.concat(res.data)
  319. })
  320. },
  321. resetDate() {
  322. if (this.isGuGan) {
  323. this.rangeCode = 'hospital'
  324. this.areaCode = this.docInfo.town
  325. this.communityCode = this.docInfo.hospital
  326. } else {
  327. this.rangeCode = 'town'
  328. this.areaCode = ''
  329. this.communityCode = ''
  330. }
  331. },
  332. eliminateClick() {
  333. var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
  334. if (this.level == 1) {
  335. this.form = {
  336. range: 'town'
  337. }
  338. } else if (this.level == 2) {
  339. this.form = {
  340. range: 'town',
  341. area: selectedRole.code
  342. }
  343. this.getHospital(selectedRole.code)
  344. } else {
  345. this.form = {
  346. range: 'hospital',
  347. area: selectedRole.code.substring(0, 6),
  348. hospital: selectedRole.code
  349. }
  350. this.getTeam(selectedRole.code)
  351. }
  352. this.yearType = '1'
  353. this.chooseYear = new Date().getFullYear()
  354. this.chooseTime = null
  355. this.$forceUpdate()
  356. },
  357. handleCurrentChange(val) {
  358. this.page = val
  359. this.search()
  360. },
  361. handleSizeChange(val) {
  362. this.size = val
  363. this.search()
  364. },
  365. //上传
  366. toggle(isShow) {
  367. this.isShow = isShow
  368. if (!isShow) {
  369. this.reset()
  370. }
  371. },
  372. reset(type) {
  373. this.percentage = 0
  374. this.success = false
  375. this.isOver = false
  376. this.errList = []
  377. if (type != 1) {
  378. this.loading = false
  379. this.file = undefined
  380. this.month = ''
  381. }
  382. },
  383. search() {
  384. var vm = this
  385. vm.daLoading = true
  386. var params = {
  387. year: this.chooseYear,
  388. range: this.form.range,
  389. area: this.form.area == '350200' ? '' : this.form.area === null ? '' : this.form.area
  390. }
  391. if (this.form.range == 'hospital') {
  392. params.hospital = this.form.hospital
  393. }
  394. statisticAPI.getServiceProgress(params).then(function (res) {
  395. vm.daLoading = false
  396. if (res.status == 200) {
  397. vm.tabledata = res.detailModelList
  398. vm.totalCount = res.totalCount
  399. vm.totalPage = res.totalPage
  400. } else {
  401. vm.$message.error(res.msg)
  402. }
  403. console.log(res, 'llllllllllllllllllllllllllllllll')
  404. })
  405. },
  406. close(type) {
  407. this.reset(type)
  408. this.isProgressShow = false
  409. if (type != 1) {
  410. this.isShow = false
  411. }
  412. },
  413. beforeUploadPic(file) {
  414. this.file = file
  415. },
  416. check() {
  417. var vm = this
  418. vm.loading = true
  419. if (!vm.file) {
  420. vm.loading = false
  421. vm.$message('请选择文件')
  422. return
  423. }
  424. vm.save()
  425. },
  426. save() {
  427. var vm = this
  428. vm.daLoading = true
  429. var formData = new FormData()
  430. formData.append('file', vm.file)
  431. // vm.initProgress()
  432. httpRequest
  433. .post('doctor/jkCopd/importPlanExcel', {
  434. data: formData,
  435. cache: false, //上传文件无需缓存
  436. processData: false, //用于对data参数进行序列化处理 这里必须false
  437. contentType: false //必须
  438. })
  439. .then(function (res) {
  440. if (res.status == 200) {
  441. vm.search()
  442. vm.daLoading = false
  443. vm.isShow = false
  444. vm.$message({
  445. message: '导入成功!',
  446. type: 'success'
  447. })
  448. } else {
  449. vm.$message.error('导入失败!')
  450. vm.daLoading = false
  451. }
  452. })
  453. .catch(function (e) {
  454. console.error(e)
  455. vm.daLoading = false
  456. })
  457. },
  458. initProgress() {
  459. var vm = this
  460. this.isProgressShow = true
  461. setTimeout(() => {
  462. if (!vm.isOver && vm.percentage != 90) {
  463. vm.percentage += 10
  464. vm.initProgress()
  465. }
  466. }, 1000)
  467. }
  468. },
  469. mounted() {
  470. var vm = this
  471. var userRole = JSON.parse(window.sessionStorage.getItem('selectedRole'))
  472. vm.userRoleCode = userRole.code
  473. this.initTime(this)
  474. if (this.docInfo.expandLevelName) {
  475. this.isGuGan = this.docInfo.expandLevelName.indexOf('慢病骨干') > -1
  476. }
  477. this.initScope(3)
  478. if (this.isGuGan) {
  479. // 如何是慢病骨干 则只能选社区,并且限定死社区
  480. this.rangeList = [{ name: '按社区', code: 'hospital' }]
  481. this.rangeCode = 'hospital'
  482. this.areaList = [{ name: this.docInfo.hospitalName.substring(0, 3), code: this.docInfo.town }]
  483. this.areaCode = this.docInfo.town
  484. this.communityList = [{ name: this.docInfo.hospitalName, code: this.docInfo.hospital }]
  485. this.communityCode = this.docInfo.hospital
  486. // vm.receivingHospitalList = [{code:this.docInfo.hospital,name:this.docInfo.hospitalName}]
  487. // this.hospital = this.docInfo.hospital
  488. }
  489. this.search()
  490. EventBus.$on('copd-record-filter-change', function (event) {
  491. vm.quotaStrArr = event
  492. console.log(vm.quotaStrArr, '999sd8s9a8d9s8ad9sa89')
  493. })
  494. },
  495. destroyed() {
  496. EventBus.$off('copd-record-filter-change')
  497. }
  498. })