comprehensive-query.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. Vue.use(Vuedals.default);
  2. new Vue({
  3. el: "#main",
  4. data: {
  5. height:"",
  6. isloading:false, //加载中
  7. start:"",
  8. end:"",
  9. tabledata:[], //表格数据
  10. levelList:[{level:"4",areaLevel:"2"},{level:"3",areaLevel:"3"},{level:"2",areaLevel:"4"}], //两种搜索,地区等级对比
  11. areaLevel:"", // 2、市,3、区,4、社区,5、团队
  12. initareaLevel:"",
  13. initlevel: '',
  14. initarea: '',
  15. level: '',
  16. area: '',
  17. areaTitle: '',
  18. index: '121',
  19. lowLevel: '',
  20. initlowLevel:"",
  21. years:[],
  22. chooseYear: '',
  23. userRole: '',
  24. treedata: [],
  25. tableHeader:[],
  26. defaultProps: {
  27. children: 'children',
  28. label: 'label'
  29. },
  30. pickerOptions:{
  31. disabledDate(time) {
  32. return time.getTime() > Date.now()
  33. },
  34. },
  35. radio:'1',
  36. timeLevel: 2,
  37. searchJson:{},
  38. currentPage:1,
  39. currentSize:10,
  40. datatotal:0,
  41. rangeList:[],
  42. rangeCode:"",
  43. areaList:[],
  44. areaCode:"",
  45. communityList:[{code:"",name:"全部"}],
  46. communityCode:"",
  47. teamList:[{code:"",name:"全部"}],
  48. teamCode:"",
  49. data: [{
  50. label: '明细查询',
  51. children: [
  52. {label: '咨询分析', },
  53. {label: '签约分析', },
  54. {label: '专病分析', },
  55. {label: '生日祝福分析', },
  56. {label: '上门服务分析', },
  57. {label: '长处方分析', },
  58. ]
  59. }],
  60. handleNodeShow:1,
  61. handleNodeId:0,
  62. radio1:'',
  63. radio2:'',
  64. radio3:'',
  65. radio4:'',
  66. radio5:'',
  67. radio6:'',
  68. radio7:'',
  69. radio8:'',
  70. cities:[{value:'高血压',num:'1'},
  71. {value:'糖尿病',num:'2'},
  72. {value:'65岁以上人群',num:'3'},
  73. {value:'0-6岁小孩',num:'4'},
  74. {value:'计划生育家庭',num:'5'},
  75. {value:'严重精神障碍',num:'6'},
  76. {value:'残疾人',num:'7'},
  77. {value:'普通人群',num:'8'},
  78. {value:'结核病',num:'9'},
  79. {value:'低保人群',num:'10'},
  80. {value:'孕产妇',num:'11'},
  81. ],
  82. checkedCities: [],
  83. specialCities:[{value:'冠心病',num:'1'},
  84. {value:'慢性前列腺',num:'2'},
  85. {value:'脑卒中',num:'3'},
  86. {value:'慢性乳腺疾病',num:'4'},
  87. {value:'慢性阻塞性肺病',num:'5'},
  88. {value:'慢性肝病',num:'6'},
  89. {value:'肺癌',num:'7'},
  90. {value:'慢性肾病',num:'8'},
  91. {value:'慢性胃肠病',num:'9'},
  92. {value:'慢性妇科炎症',num:'10'},
  93. ],
  94. specialCheckedCities:[],
  95. serveCities:[{value:'残疾人',num:'1'},
  96. {value:'失能/半失能老人',num:'2'},
  97. {value:'80岁以上老人',num:'3'},
  98. {value:'肺结核患者',num:'4'},
  99. {value:'计生特殊家庭',num:'5'},
  100. {value:'重性精神病',num:'6'},
  101. {value:'其他',num:'7'},
  102. ],
  103. serveSpecialCities:[],
  104. options: [{
  105. value: '请选择',
  106. label: ''
  107. }, {
  108. value: '是',
  109. label: '1'
  110. }, {
  111. value: '否',
  112. label: '0'
  113. },],
  114. value: '',
  115. form:{
  116. endorseTheTicket:'',
  117. renew:'',
  118. backToSign:'',
  119. WeChat:'',
  120. },
  121. form2:{
  122. juniorCollege:'',
  123. family:'',
  124. resident:'',
  125. },
  126. form3:{
  127. family:'',
  128. resident:'',
  129. },
  130. form4:{
  131. family:'',
  132. resident:'',
  133. },
  134. form5:{
  135. family:'',
  136. resident:'',
  137. },
  138. handleData:[],
  139. diseaseData:[],
  140. serviceTypeData:[],
  141. analyseData:[], //分析数据
  142. },
  143. components: {
  144. vuedals: Vuedals.Component
  145. },
  146. watch: {
  147. rangeCode: function (val) {
  148. var vm=this
  149. if(vm.initlevel != 2){
  150. vm.communityCode=""
  151. }
  152. vm.teamCode=""
  153. vm.getTreeList()
  154. },
  155. areaCode:function(val){
  156. var vm=this
  157. vm.selChange(3)
  158. },
  159. communityCode:function(val){
  160. var vm=this
  161. vm.selChange(5)
  162. },
  163. },
  164. mounted: function () {
  165. var vm=this
  166. //初始化数据
  167. initData(vm);
  168. vm.height = document.body.offsetHeight - 85
  169. window.onresize = function () {
  170. vm.height = document.body.offsetHeight - 85
  171. console.log(vm.height)
  172. }
  173. },
  174. methods: {
  175. // 签约人群
  176. handleCheckedCitiesChange:function(value) {
  177. var vm = this
  178. vm.handleData = value
  179. },
  180. // 下转病种
  181. diseaseChange:function(value) {
  182. var vm = this
  183. vm.diseaseData = value
  184. },
  185. // 服务类型
  186. serviceTypeChange:function(value) {
  187. var vm = this
  188. vm.serviceTypeData = value
  189. },
  190. treedataClick:function(name,data) {
  191. var vm = this
  192. vm.handleNodeShow = 1
  193. vm.handleNodeId = 0
  194. vm.radio = '1'
  195. // initTime(vm)
  196. // initScope(vm)
  197. },
  198. handleNodeClick:function(name,data) {
  199. var vm = this
  200. if(data.id>=3) {
  201. vm.handleNodeShow = 2
  202. vm.tableHeader = []
  203. vm.analyseData = []
  204. }
  205. vm.handleNodeId = data.id
  206. vm.radio = '1'
  207. initTime(vm)
  208. initScope(vm)
  209. vm.analysFunction(vm.handleNodeId)
  210. },
  211. analysFunction:function(id) {
  212. // idcard = idcard.replace(/^(.{6})(?:\d+)(.{4})$/,"$1****$2") 身份证 医保卡 脱敏显示
  213. if(id == 3) {
  214. // 咨询分析
  215. }else if(id == 4) {
  216. // 签约分析
  217. }else if(id == 5) {
  218. // 专病分析
  219. }else if(id == 6) {
  220. // 生日祝福分析
  221. }else if(id == 7) {
  222. // 上门服务分析
  223. }else if(id == 8) {
  224. // 长处方分析
  225. }
  226. },
  227. getTreeList:function(){
  228. var vm=this
  229. statisticAPI.exportTreeList({rang:vm.rangeCode}).then(function(res){
  230. if(res.status == 200){
  231. vm.treedata = [],jindex=0
  232. _.each(res.data,function(item,index){
  233. vm.treedata.push({
  234. id:"p_"+jindex,
  235. label:index,
  236. children:[]
  237. })
  238. _.each(item,function(citem,cindex){
  239. vm.treedata[jindex].children.push({
  240. id:cindex,
  241. label:citem,
  242. })
  243. })
  244. jindex++
  245. })
  246. }
  247. })
  248. },
  249. beforeReq:function(flag){
  250. var vm=this,startDate="",endDate="",checked=[]
  251. if(vm.radio=="1"){
  252. startDate = getStartDate(vm.chooseYear-1)
  253. endDate = getEndDate(vm.chooseYear)
  254. vm.timeLevel = 2
  255. }else{
  256. if(!vm.start&&!vm.end){
  257. this.$message({
  258. message: '请选择创建时间',
  259. type: 'warning'
  260. });
  261. return false
  262. }else{
  263. if(vm.start>vm.end){
  264. this.$message({
  265. message: '开始时间应早于结束时间',
  266. type: 'warning'
  267. });
  268. return false
  269. }else{
  270. startDate = vm.start
  271. endDate = vm.end
  272. vm.timeLevel = 1
  273. }
  274. }
  275. }
  276. if(vm.handleNodeId == 0) {
  277. var checkTree = vm.$refs.tree.getCheckedNodes(true);
  278. if(checkTree.length){
  279. if(!flag){
  280. vm.tableHeader = []
  281. }
  282. _.each(checkTree,function(item,index){
  283. if(!flag){
  284. vm.tableHeader.push({prop:item.label,label:item.label})
  285. }
  286. checked.push(item.id)
  287. })
  288. }else{
  289. this.$message({
  290. message: '请选择搜索指标!',
  291. type: 'warning'
  292. });
  293. return false
  294. }
  295. }else if(vm.handleNodeId == 2) {
  296. this.$message({
  297. message: '请选择明细查询!',
  298. type: 'warning'
  299. });
  300. return false
  301. }
  302. return {start:startDate,end:endDate,checked:checked.join(",")}
  303. },
  304. // 查询
  305. searchHandle:function(){
  306. var vm = this,searchJson=undefined
  307. console.log("before-pass")
  308. searchJson = vm.beforeReq()
  309. if(vm.handleNodeId == 0) {
  310. if(searchJson){
  311. vm.currentPage = 1
  312. vm.searchJson = {
  313. startDate:searchJson.start,
  314. endDate:searchJson.end,
  315. quotaStr:searchJson.checked,
  316. range:vm.rangeCode,
  317. team:vm.teamCode,
  318. hospital:vm.communityCode,
  319. area:vm.areaCode=="350200"?"":vm.areaCode,
  320. size:vm.currentSize,
  321. page:vm.currentPage,
  322. timeLevel: vm.timeLevel
  323. }
  324. console.log(vm.searchJson,"vm.searchJson")
  325. vm.getStatisticDataList()
  326. }
  327. }else if(vm.handleNodeId == 3) {
  328. // 咨询分析
  329. var par = {
  330. '开始时间':searchJson.start,
  331. '结束时间':searchJson.end,
  332. '咨询状态':vm.radio1,
  333. '数据范围':vm.rangeCode,
  334. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  335. '社区':vm.communityCode,
  336. '团队':vm.teamCode,
  337. }
  338. console.log(par,'查询')
  339. }else if(vm.handleNodeId == 4) {
  340. // 签约分析
  341. var par = {
  342. '开始时间':searchJson.start,
  343. '结束时间':searchJson.end,
  344. '咨询状态':vm.radio2,
  345. '签约人群':vm.handleData,
  346. "是否改签":vm.form.endorseTheTicket,
  347. "是否续签":vm.form.renew,
  348. "是否退签":vm.form.backToSign,
  349. "绑定微信":vm.form.WeChat,
  350. '数据范围':vm.rangeCode,
  351. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  352. '社区':vm.communityCode,
  353. '团队':vm.teamCode,
  354. }
  355. console.log(vm.handleData,"签约人群多选")
  356. console.log(par,'查询')
  357. }else if(vm.handleNodeId == 5) {
  358. // 专病分析
  359. var par = {
  360. '开始时间':searchJson.start,
  361. '结束时间':searchJson.end,
  362. '下转状态':vm.radio3,
  363. '下转病种':vm.diseaseData,
  364. "专科医生":vm.form2.juniorCollege,
  365. "家庭医生":vm.form2.family,
  366. "居民姓名":vm.form2.resident,
  367. '数据范围':vm.rangeCode,
  368. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  369. '社区':vm.communityCode,
  370. '团队':vm.teamCode,
  371. }
  372. console.log(vm.diseaseData,"下转病种多选")
  373. console.log(par,'查询')
  374. }else if(vm.handleNodeId == 6) {
  375. // 生日祝福分析
  376. var par = {
  377. '开始时间':searchJson.start,
  378. '结束时间':searchJson.end,
  379. '发送状态':vm.radio4,
  380. "家庭医生":vm.form3.family,
  381. "居民姓名":vm.form3.resident,
  382. '数据范围':vm.rangeCode,
  383. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  384. '社区':vm.communityCode,
  385. '团队':vm.teamCode,
  386. }
  387. console.log(par,'查询')
  388. }else if(vm.handleNodeId == 7) {
  389. // 上门服务分析
  390. var par = {
  391. '开始时间':searchJson.start,
  392. '结束时间':searchJson.end,
  393. '工单状态':vm.radio5,
  394. '服务类型':vm.serviceTypeData,
  395. "家庭医生":vm.form4.family,
  396. "居民姓名":vm.form4.resident,
  397. '数据范围':vm.rangeCode,
  398. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  399. '社区':vm.communityCode,
  400. '团队':vm.teamCode,
  401. }
  402. console.log(vm.serviceTypeData,"服务类型多选")
  403. console.log(par,'查询')
  404. }else if(vm.handleNodeId == 8) {
  405. // 长处方分析
  406. var par = {
  407. '开始时间':searchJson.start,
  408. '结束时间':searchJson.end,
  409. '续方状态':vm.radio6,
  410. '疾病类型':vm.radio7,
  411. '取药方式':vm.radio8,
  412. "家庭医生":vm.form5.family,
  413. "居民姓名":vm.form5.resident,
  414. '数据范围':vm.rangeCode,
  415. '地区':vm.areaCode=="350200"?"":vm.areaCode,
  416. '社区':vm.communityCode,
  417. '团队':vm.teamCode,
  418. }
  419. console.log(par,'查询')
  420. }
  421. },
  422. getStatisticDataList:function(){
  423. var vm = this
  424. vm.isloading = true
  425. var params=JSON.parse(JSON.stringify(vm.searchJson))
  426. params.page = vm.currentPage
  427. statisticAPI.getStatisticDataList(params).then(function(res){
  428. if(res.status == 200) {
  429. vm.tabledata = res.data.data
  430. vm.datatotal = res.data.total
  431. if(vm.tabledata.length){
  432. vm.tableHeader=[]
  433. _.each(vm.tabledata[0],function(item,index){
  434. if(index!="town"&&index!="townName"&&index!="hospital"&&index!="hospitalName"&&index!="area"&&index!="areaName"&&index!="code"&&index!="name")
  435. vm.tableHeader.push({prop:index,label:index})
  436. })
  437. }
  438. } else {
  439. vm.$message.error(res.msg)
  440. }
  441. vm.isloading = false
  442. })
  443. },
  444. // 导出
  445. exportHandle:function(){
  446. var vm =this
  447. var vm = this,searchJson=undefined
  448. searchJson = vm.beforeReq('export')
  449. if(vm.handleNodeId == 0) {
  450. if(searchJson){
  451. var areaCode = vm.areaCode=="350200"?"":vm.areaCode
  452. let str = httpRequest.server + 'statisticsExport/export?startDate='+searchJson.start+'&endDate='+searchJson.end+'&quotaStr='+searchJson.checked+'&range='+vm.rangeCode+'&area='+areaCode+'&hospital='+vm.communityCode+'&team='+vm.teamCode+'&timeLevel='+vm.timeLevel
  453. console.log(str)
  454. window.location.href = str
  455. }
  456. }else if(vm.handleNodeId == 3) {
  457. // 咨询分析
  458. }else if(vm.handleNodeId == 4) {
  459. // 签约分析
  460. }else if(vm.handleNodeId == 5) {
  461. // 专病分析
  462. }else if(vm.handleNodeId == 6) {
  463. // 生日祝福分析
  464. }else if(vm.handleNodeId == 7) {
  465. // 上门服务分析
  466. }else if(vm.handleNodeId == 8) {
  467. // 长处方分析
  468. }
  469. },
  470. backClick:function(){
  471. history.go(-1);
  472. },
  473. bindEvent:function(){
  474. var vm=this
  475. //监听后退按钮的操作
  476. EventBus.$on("back-click", function (arg) {
  477. EventBus.$emit('update-statistics-time', {}); //更新统计时间
  478. vm.backClick()
  479. });
  480. //监听页面刷新
  481. EventBus.$on("refresh-click", function (arg) {
  482. EventBus.$emit('update-statistics-time', {}); //更新统计时间
  483. initData(vm)
  484. });
  485. $("#main").removeClass("c-hide");
  486. },
  487. // 下一页 上一页
  488. handleCurrentChange:function(val) {
  489. this.currentPage = val
  490. if(vm.handleNodeId == 0) {
  491. this.getStatisticDataList()
  492. }else if(vm.handleNodeId == 3) {
  493. // 咨询分析
  494. }else if(vm.handleNodeId == 4) {
  495. // 签约分析
  496. }else if(vm.handleNodeId == 5) {
  497. // 专病分析
  498. }else if(vm.handleNodeId == 6) {
  499. // 生日祝福分析
  500. }else if(vm.handleNodeId == 7) {
  501. // 上门服务分析
  502. }else if(vm.handleNodeId == 8) {
  503. // 长处方分析
  504. }
  505. },
  506. //获取省市区 type:区3
  507. getDistrict: function(type,code,name) {
  508. var vm=this,list = [],param=""
  509. if(type == 3){
  510. list = [{code:code,name:name}]
  511. param = "area"
  512. }else if(type == 5){
  513. list = [{code:"",name:"全部"}]
  514. param = "community"
  515. }
  516. var params={
  517. type:type,code:code
  518. }
  519. homeAPI.getDistrict(params).then(function(res) {
  520. if(res.status == 200) {
  521. vm[param+"List"]=list.concat(res.list)
  522. vm[param+"Code"]=vm[param+"List"][0].code
  523. } else {
  524. vm.$message.error(res.msg)
  525. }
  526. })
  527. },
  528. selChange:function(type){
  529. var vm=this,name=""
  530. if(type == 3){
  531. vm.initSelOption("community")
  532. vm.initSelOption("team")
  533. vm.getCommunityHospital()
  534. }else if(type == 5){
  535. vm.initSelOption("team")
  536. vm.teamListByArea()
  537. }
  538. },
  539. initSelOption:function(param){
  540. var vm=this
  541. vm[param+"List"]=[{code:"",name:"全部"}]
  542. if(param == "team"){
  543. vm[param+"List"]=[{id:"",name:"全部"}]
  544. }
  545. vm[param+"Code"]=vm[param+"List"][0].code||vm[param+"List"][0].id
  546. },
  547. getCommunityHospital:function() {
  548. var vm=this,list = [{code:"",name:"全部"}],param="community"
  549. homeAPI.getCommunityHospital({area:vm.areaCode=='350200'?"":vm.areaCode}).then(function(res) {
  550. if(res.status == 200) {
  551. vm[param+"List"]=list.concat(res.data)
  552. vm[param+"Code"]=vm[param+"List"][0].code
  553. } else {
  554. vm.$message.error(res.msg)
  555. }
  556. })
  557. },
  558. teamListByArea:function() {
  559. var vm=this,list = [{id:"",name:"全部"}],param="team"
  560. homeAPI.teamListByArea({area:vm.areaCode=='350200'?"":vm.areaCode,hospital:vm.communityCode}).then(function(res) {
  561. if(res.status == 200) {
  562. vm[param+"List"]=list.concat(res.data)
  563. vm[param+"Code"]=vm[param+"List"][0].id
  564. } else {
  565. vm.$message.error(res.msg)
  566. }
  567. })
  568. }
  569. },
  570. })
  571. // 初始化时间
  572. function initTime(vm){
  573. var now = new Date();
  574. vm.end = now.format("yyyy-MM-dd")
  575. var start = now.getTime() - 30*24*60*60*1000
  576. vm.start = new Date(start).format("yyyy-MM-dd")
  577. vm.nowyear = vm.chooseYear = now.getFullYear()
  578. vm.nowmonth = now.getMonth()+1
  579. vm.years = []
  580. for(i=vm.nowyear; i>=2016; i--){
  581. vm.years.push(i)
  582. }
  583. }
  584. // 数据范围初始化
  585. function initScope(vm) {
  586. //获得缓存中缓存的角色权限
  587. var userRole = window.sessionStorage.getItem("selectedRole");
  588. if (!userRole) {
  589. return false;
  590. }
  591. vm.userRole = JSON.parse(userRole);
  592. //level:2、市,3、区,4、社区,5、团队
  593. vm.initareaLevel = vm.areaLevel = vm.userRole.code == '350200' ? 2 : vm.userRole.code.length == 6 ? 3 : 4;
  594. vm.initlevel = vm.level = vm.userRole.code == '350200' ? 4 : vm.userRole.code.length == 6 ? 3 : 2;
  595. // vm.lowLevel = vm.initlowLevel = vm.userRole.code == '350200' ? 3 : vm.userRole.code.length == 6 ? 2 : 1;
  596. vm.initarea =vm.area = vm.userRole.code;
  597. vm.areaTitle = vm.userRole.name;
  598. vm.rangeList=[{name:"按区",code:"town"},{name:"按社区",code:"hospital"},{name:"按团队",code:"team"}]
  599. if(vm.initlevel == 4){ //市获取区
  600. vm.getDistrict(3,vm.initarea,vm.areaTitle.substr(0,3))
  601. vm.rangeCode = vm.rangeList[0].code
  602. }else if(vm.initlevel == 3){ //区获取社区
  603. vm.areaList = [{code:vm.initarea,name:vm.areaTitle}]
  604. vm.areaCode = vm.initarea
  605. vm.rangeCode = vm.rangeList[0].code
  606. }else if(vm.initlevel == 2){ //社区获取团队
  607. vm.communityList = [{code:vm.initarea,name:vm.areaTitle}]
  608. vm.communityCode = vm.initarea
  609. vm.rangeList.shift()
  610. vm.rangeCode = vm.rangeList[0].code
  611. }
  612. vm.searchJson.range = vm.rangeCode
  613. }
  614. function initData(vm) {
  615. initScope(vm)
  616. //初始化时间
  617. initTime(vm)
  618. vm.tabledata = []
  619. vm.bindEvent()
  620. }