index.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. var template = ''
  2. $.ajax('../../../component/statistics/ResidentScore/index.html', {
  3. data: {},
  4. dataType: 'html',
  5. cache: false,
  6. timeout: 60000,
  7. async: false,
  8. error: function (res) {},
  9. success: function (res) {
  10. template = res
  11. }
  12. })
  13. Vue.component('resident-score', {
  14. template: template,
  15. props: {
  16. header: {}
  17. },
  18. data() {
  19. return {
  20. years: [],
  21. yearType: '1',
  22. chooseYear: null,
  23. chooseTime: null,
  24. form: {
  25. range: 'town'
  26. },
  27. tableData: [],
  28. dialogShow: false,
  29. info: {},
  30. loading: false,
  31. exportLoading: false,
  32. rangeOptions: [
  33. { label: '按区', value: 'town' },
  34. { label: '按社区', value: 'hospital' },
  35. { label: '按团队', value: 'team' }
  36. ],
  37. areaOptions: [
  38. { label: '思明区', value: '350203' },
  39. { label: '海沧区', value: '350205' },
  40. { label: '湖里区', value: '350206' },
  41. { label: '集美区', value: '350211' },
  42. { label: '同安区', value: '350212' },
  43. { label: '翔安区', value: '350213' }
  44. ],
  45. level: 0,
  46. tableHeader: [],
  47. hospitalOptions: [],
  48. teamOptions: []
  49. }
  50. },
  51. watch: {
  52. header: {
  53. handler() {
  54. if (this.form.range == 'town') {
  55. this.tableHeader = getTownHeader().concat(this.header)
  56. } else if (this.form.range == 'hospital') {
  57. this.tableHeader = getHospitalHeader().concat(this.header)
  58. } else {
  59. this.tableHeader = getTeamHeader().concat(this.header)
  60. }
  61. }
  62. }
  63. },
  64. methods: {
  65. init() {
  66. var vm = this
  67. var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
  68. if (selectedRole.code.indexOf('350200') > -1) {
  69. this.level = 1 // 市卫健委
  70. this.areaOptions = [
  71. { label: '思明区', value: '350203' },
  72. { label: '海沧区', value: '350205' },
  73. { label: '湖里区', value: '350206' },
  74. { label: '集美区', value: '350211' },
  75. { label: '同安区', value: '350212' },
  76. { label: '翔安区', value: '350213' }
  77. ]
  78. } else if (selectedRole.code.length == 6) {
  79. this.level = 2 // 区管理
  80. this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
  81. this.form = {
  82. range: 'town',
  83. area: selectedRole.code
  84. }
  85. this.getHospital(selectedRole.code)
  86. } else {
  87. this.level = 3 // 社区管理
  88. this.rangeOptions = [
  89. { label: '社区', value: 'hospital' },
  90. { label: '团队', value: 'team' }
  91. ]
  92. this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code.substring(0, 6) }]
  93. this.hospitalOptions = [{ name: selectedRole.name, code: selectedRole.code }]
  94. this.form = {
  95. range: 'hospital',
  96. area: selectedRole.code.substring(0, 6),
  97. hospital: selectedRole.code
  98. }
  99. this.getTeam(selectedRole.code)
  100. }
  101. this.initTime()
  102. setTimeout(function () {
  103. vm.searchFn()
  104. }, 200)
  105. },
  106. initTime() {
  107. var vm = this
  108. var now = new Date()
  109. vm.nowyear = vm.chooseYear = now.getFullYear()
  110. vm.years = []
  111. for (i = vm.nowyear; i >= 2013; i--) {
  112. vm.years.push(i)
  113. }
  114. },
  115. searchFn() {
  116. var vm = this
  117. this.loading = true
  118. var params = {
  119. ...this.form,
  120. isTotal: 1,
  121. menu: this.header
  122. .map(function (item) {
  123. return item.prop
  124. })
  125. .join(',')
  126. }
  127. vm.tableData = []
  128. if (this.yearType == '1') {
  129. params.startDate = this.chooseYear + '-01-01'
  130. params.endDate = this.chooseYear + '-12-31'
  131. } else {
  132. if (this.chooseTime) {
  133. params.startDate = this.chooseTime[0]
  134. params.endDate = this.chooseTime[1]
  135. }
  136. }
  137. httpRequest.get('doctor/healthBank/integrateStatistics', { data: params }).then(function (res) {
  138. if (res.status == 200) {
  139. vm.tableData = res.data.list.map(function (item) {
  140. var data = JSON.parse(JSON.stringify(item))
  141. if (vm.form.range == 'town') {
  142. data.town = item.name
  143. data.hasChildren = item.code && true
  144. } else if (vm.form.range == 'hospital') {
  145. data.hospital = item.name
  146. data.hasChildren = item.code && true
  147. } else if (vm.form.range == 'team') {
  148. data.team = item.name
  149. }
  150. return data
  151. })
  152. }
  153. vm.loading = false
  154. })
  155. },
  156. exportTable() {
  157. var vm = this
  158. var params = {
  159. ...this.form,
  160. menu: this.header
  161. .map(function (item) {
  162. return item.prop
  163. })
  164. .join(',')
  165. }
  166. if (this.yearType == '1') {
  167. params.startDate = this.chooseYear + '-01-01 00:00'
  168. params.endDate = this.chooseYear + '-12-31 23:59'
  169. } else {
  170. if (this.chooseTime) {
  171. params.startDate = this.chooseTime[0] + ' 00:00'
  172. params.endDate = this.chooseTime[1] + ' 23:59'
  173. }
  174. }
  175. this.exportLoading = true
  176. var fileName = `居民积分汇总${new Date().getTime()}.xls`
  177. httpRequest.downLoadFileForAjax('doctor/healthBank/exportIntegrateStatistics', fileName, params).then(function () {
  178. vm.exportLoading = false
  179. })
  180. },
  181. eliminateClick() {
  182. var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
  183. if (this.level == 1) {
  184. this.form = {
  185. range: 'town'
  186. }
  187. } else if (this.level == 2) {
  188. this.form = {
  189. range: 'town',
  190. area: selectedRole.code
  191. }
  192. this.getHospital(selectedRole.code)
  193. } else {
  194. this.form = {
  195. range: 'hospital',
  196. area: selectedRole.code.substring(0, 6),
  197. hospital: selectedRole.code
  198. }
  199. this.getTeam(selectedRole.code)
  200. }
  201. this.yearType = '1'
  202. this.chooseYear = new Date().getFullYear()
  203. this.chooseTime = null
  204. this.$forceUpdate()
  205. },
  206. closeDialog() {
  207. this.dialogShow = false
  208. this.dialogShow1 = false
  209. },
  210. previewRecord(row) {
  211. var vm = this
  212. this.dialogShow = true
  213. httpRequest.get('doctor/familyBed/findCheckPlanDetail', { data: { id: row.id } }).then(function (res) {
  214. if (res.status == 200) {
  215. vm.info = res.data
  216. if (res.data.planDoctorList) {
  217. vm.info.planDoctor = res.data.planDoctorList
  218. .map(function (item) {
  219. return item.doctorName
  220. })
  221. .join(',')
  222. }
  223. if (res.data.signWay) {
  224. vm.info.signMethod = res.data.signWay == 1 ? '定位签到' : '拍照签到'
  225. }
  226. }
  227. })
  228. },
  229. getHospital(code) {
  230. var vm = this
  231. delete this.form.hospital
  232. delete this.form.team
  233. var params = {
  234. type: 5,
  235. code: code
  236. }
  237. httpRequest.post('common/district', { data: params }).then(function (res) {
  238. vm.hospitalOptions = [{ code: '', name: '全部' }]
  239. vm.hospitalOptions = vm.hospitalOptions.concat(res.list)
  240. })
  241. },
  242. resetArea() {
  243. if (this.level == 1) {
  244. delete this.form.area
  245. delete this.form.hospital
  246. delete this.form.team
  247. } else if (this.level == 2) {
  248. delete this.form.hospital
  249. delete this.form.team
  250. } else {
  251. delete this.form.team
  252. }
  253. },
  254. load(row, treeNode, resolve) {
  255. var params = {
  256. menu: this.header
  257. .map(function (item) {
  258. return item.prop
  259. })
  260. .join(',')
  261. }
  262. var len = row.code.length
  263. if (len == 6) {
  264. params.range = 'hospital'
  265. params.area = row.code
  266. } else if (len == 10) {
  267. params.range = 'team'
  268. params.hospital = row.code
  269. }
  270. if (this.yearType == '1') {
  271. params.startDate = this.chooseYear + '-01-01'
  272. params.endDate = this.chooseYear + '-12-31'
  273. } else {
  274. if (this.chooseTime) {
  275. params.startDate = this.chooseTime[0]
  276. params.endDate = this.chooseTime[1]
  277. }
  278. }
  279. httpRequest.get('doctor/healthBank/integrateStatistics', { data: params }).then(function (res) {
  280. if (res.status == 200) {
  281. var children = res.data.list.map(function (item) {
  282. var data = {
  283. ...item
  284. }
  285. if (len == 6) {
  286. data.hospital = item.name
  287. data.hasChildren = true
  288. data.town1 = row.code
  289. } else if (len == 10) {
  290. data.team = item.name
  291. data.hospital1 = row.code
  292. data.town1 = row.town1
  293. }
  294. return data
  295. })
  296. resolve(children)
  297. }
  298. })
  299. },
  300. getTeam(code) {
  301. var vm = this
  302. delete this.form.team
  303. var params = {
  304. hospital: code,
  305. area: this.form.area
  306. }
  307. httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
  308. vm.teamOptions = [{ id: '', name: '全部' }]
  309. vm.teamOptions = vm.teamOptions.concat(res.data)
  310. })
  311. }
  312. },
  313. mounted() {
  314. this.init()
  315. }
  316. })