comprehensive-query.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  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. id: 1,
  26. prop:"aaa10",
  27. label: '一级 1',
  28. children: [{
  29. id: 4,
  30. prop:"aaa9",
  31. label: '二级 1-1',
  32. children: [{
  33. id: 9,
  34. prop:"aaa1",
  35. label: '三级 1-1-1'
  36. }, {
  37. id: 10,
  38. prop:"aaa2",
  39. label: '三级 1-1-2'
  40. }]
  41. }]
  42. }, {
  43. id: 2,
  44. prop:"aaa8",
  45. label: '一级 2',
  46. children: [{
  47. id: 5,
  48. prop:"aaa3",
  49. label: '二级 2-1'
  50. }, {
  51. id: 6,
  52. prop:"aaa4",
  53. label: '二级 2-2'
  54. }]
  55. }, {
  56. id: 3,
  57. prop:"aaa7",
  58. label: '一级 3',
  59. children: [{
  60. id: 7,
  61. prop:"aaa5",
  62. label: '二级 3-1'
  63. }, {
  64. id: 8,
  65. prop:"aaa6",
  66. label: '二级 3-2'
  67. }]
  68. }],
  69. tableHeader:[],
  70. defaultProps: {
  71. children: 'children',
  72. label: 'label'
  73. },
  74. pickerOptions:{
  75. disabledDate(time) {
  76. return time.getTime() > Date.now()
  77. },
  78. },
  79. radio:'1',
  80. currentPage:1,
  81. currentSize:100,
  82. datatotal:1000,
  83. areaList:[],
  84. areaCode:"",
  85. communityList:[{code:"",name:"全部"}],
  86. communityCode:"",
  87. teamList:[{code:"",name:"全部"}],
  88. teamCode:"",
  89. },
  90. components: {
  91. vuedals: Vuedals.Component
  92. },
  93. mounted: function () {
  94. var vm=this
  95. //初始化数据
  96. initData(vm);
  97. vm.height = document.body.offsetHeight - 85
  98. window.onresize = function () {
  99. vm.height = document.body.offsetHeight - 85
  100. console.log(vm.height)
  101. }
  102. },
  103. methods: {
  104. beforeReq:function(){
  105. var vm=this,startDate="",endDate="",checked=[]
  106. if(vm.radio=="1"){
  107. startDate = getStartDate(vm.chooseYear)
  108. endDate = getEndDate(vm.chooseYear)
  109. }else{
  110. if(!vm.start&&!vm.end){
  111. this.$message({
  112. message: '请选择创建时间',
  113. type: 'warning'
  114. });
  115. return false
  116. }else{
  117. if(vm.start>vm.end){
  118. this.$message({
  119. message: '开始时间应早于结束时间',
  120. type: 'warning'
  121. });
  122. return false
  123. }else{
  124. startDate = vm.start
  125. endDate = vm.end
  126. }
  127. }
  128. }
  129. var checkTree = vm.$refs.tree.getCheckedNodes(true);
  130. if(checkTree.length){
  131. vm.tableHeader = []
  132. _.each(checkTree,function(item,index){
  133. vm.tableHeader.push({prop:item.prop,label:item.label})
  134. checked.push(item.id)
  135. })
  136. console.log(JSON.stringify(vm.tableHeader))
  137. console.log(JSON.stringify(checked))
  138. }else{
  139. this.$message({
  140. message: '请选择查询项',
  141. type: 'warning'
  142. });
  143. return false
  144. }
  145. return {start:startDate,end:endDate}
  146. },
  147. searchHandle:function(){
  148. var vm = this,DateJson=undefined
  149. console.log("before-pass")
  150. DateJson = vm.beforeReq()
  151. if(DateJson){
  152. console.log("pass")
  153. }
  154. },
  155. backClick:function(){
  156. history.go(-1);
  157. },
  158. bindEvent:function(){
  159. var vm=this
  160. //监听后退按钮的操作
  161. EventBus.$on("back-click", function (arg) {
  162. EventBus.$emit('update-statistics-time', {}); //更新统计时间
  163. vm.backClick()
  164. });
  165. //监听页面刷新
  166. EventBus.$on("refresh-click", function (arg) {
  167. EventBus.$emit('update-statistics-time', {}); //更新统计时间
  168. initData(vm)
  169. });
  170. $("#main").removeClass("c-hide");
  171. },
  172. handleSizeChange:function(val) {
  173. console.log(`每页 ${val} 条`);
  174. },
  175. handleCurrentChange:function(val) {
  176. console.log(`当前页: ${val}`);
  177. },
  178. initTableHeader:function() {
  179. var vm=this
  180. },
  181. //获取省市区 type:省1,市2,区3 ,社区 4 flag:是否有下级搜索
  182. getDistrict: function(type,code,name) {
  183. var vm=this,list = [],param=""
  184. if(type == 3){
  185. list = [{code:code,name:name}]
  186. param = "area"
  187. }else if(type == 4){
  188. list = [{code:"",name:"全部"}]
  189. param = "community"
  190. }else if(type == 5){
  191. list = [{code:"",name:"全部"}]
  192. param = "team"
  193. }
  194. var params={
  195. type:type,code:code
  196. }
  197. homeAPI.getDistrict(params).then(function(res) {
  198. if(res.status == 200) {
  199. vm[param+"List"]=list.concat(res.list)
  200. vm[param+"Code"]=vm[param+"List"][0].code
  201. } else {
  202. vm.$message.error(res.msg)
  203. }
  204. })
  205. },
  206. selChange:function(type){
  207. var vm=this,name=""
  208. if(type == 3){
  209. name = _.find(vm.areaList,{code:vm.areaCode}).name
  210. vm.initSelOption("community")
  211. vm.initSelOption("team")
  212. if(vm.areaCode != "350200"){
  213. vm.getDistrict(4,vm.areaCode,name)
  214. }
  215. }else if(type == 4){
  216. name = _.find(vm.communityList,{code:vm.communityCode}).name
  217. vm.initSelOption("team")
  218. if(vm.areaCode){
  219. vm.getDistrict(5,vm.areaCode,name)
  220. }
  221. }
  222. },
  223. initSelOption:function(param){
  224. var vm=this
  225. vm[param+"List"]=[{code:"",name:"全部"}]
  226. vm[param+"Code"]=vm[param+"List"][0].code
  227. }
  228. },
  229. })
  230. function initData(vm) {
  231. //获得缓存中缓存的角色权限
  232. var userRole = window.sessionStorage.getItem("selectedRole");
  233. if (!userRole) {
  234. return false;
  235. }
  236. vm.userRole = JSON.parse(userRole);
  237. //level:2、市,3、区,4、社区,5、团队
  238. vm.initareaLevel = vm.areaLevel = vm.userRole.code == '350200' ? 2 : vm.userRole.code.length == 6 ? 3 : 4;
  239. vm.initlevel = vm.level = vm.userRole.code == '350200' ? 4 : vm.userRole.code.length == 6 ? 3 : 2;
  240. // vm.lowLevel = vm.initlowLevel = vm.userRole.code == '350200' ? 3 : vm.userRole.code.length == 6 ? 2 : 1;
  241. vm.initarea =vm.area = vm.userRole.code;
  242. vm.areaTitle = vm.userRole.name;
  243. if(vm.initlevel == 4){ //市获取区
  244. vm.getDistrict(3,vm.initarea,vm.areaTitle.substr(0,3))
  245. }else if(vm.initlevel == 3){ //区获取社区
  246. vm.areaList = [{code:vm.initarea,name:vm.areaTitle}]
  247. vm.areaCode = vm.initarea
  248. vm.getDistrict(4,vm.initarea,vm.areaTitle)
  249. }else if(vm.initlevel == 2){ //社区获取团队
  250. vm.communityList = [{code:vm.initarea,name:vm.areaTitle}]
  251. vm.communityCode = vm.initarea
  252. vm.getDistrict(5,vm.initarea,vm.areaTitle)
  253. }
  254. //初始化时间
  255. var now = new Date();
  256. vm.end = now.format("yyyy-MM-dd")
  257. var start = now.getTime() - 30*24*60*60*1000
  258. vm.start = new Date(start).format("yyyy-MM-dd")
  259. vm.nowyear = vm.chooseYear = now.getFullYear()
  260. vm.nowmonth = now.getMonth()+1
  261. vm.years = []
  262. for(i=vm.nowyear; i>=2016; i--){
  263. vm.years.push(i)
  264. }
  265. vm.bindEvent()
  266. }
  267. function initReqParams(vm) {
  268. var reqParam = [{
  269. url: "doctor/statisticAnalyze/doorAggregateAnalysis", //头中部数据
  270. reqType: 'get',
  271. data:{
  272. startDate: vm.start,
  273. endDate: vm.end,
  274. area: vm.area,
  275. level: vm.areaLevel, //2、市,3、区,4、社区,5、团队
  276. },
  277. },{
  278. url: "doctor/statisticAnalyze/order_lowlevel_all", //工单列表--表格
  279. reqType: 'get',
  280. data:{
  281. startDate: vm.start,
  282. endDate: vm.end,
  283. area: vm.area,
  284. level: vm.level, //2、市,3、区,4、社区,5、团队
  285. sort: 1,
  286. lowLevel:vm.lowLevel||"", //等级 1:团队 2社区机构 3区级 4市级
  287. },
  288. },]
  289. return reqParam;
  290. }
  291. function loadData(loadArr, vm) {
  292. //获取其他请求的参数
  293. var reqParams = initReqParams(vm),
  294. reqPromise = [],
  295. newArr = []; //记录非顶部请求的请求数组
  296. for (i = 0; i < loadArr.length; i++) {
  297. var j = loadArr[i];
  298. var param = reqParams[j];
  299. reqPromise.push(httpRequest.get(param.url, {
  300. data: param.data
  301. }));
  302. newArr.push(loadArr[i]);
  303. }
  304. vm.isloading=true
  305. if (reqPromise.length > 0) {
  306. Promise.all(reqPromise).then(function (ress) {
  307. var res1, res2, res3, res4, res5;
  308. for (var i = 0; i < loadArr.length; i++) {
  309. var j = loadArr[i] + 1;
  310. if (j == 1) { res1 = ress[i]; }
  311. if (j == 2) { res2 = ress[i]; }
  312. if (j == 3) { res3 = ress[i]; }
  313. if (j == 4) { res4 = ress[i]; }
  314. if (j == 5) { res5 = ress[i]; }
  315. }
  316. if (res1 && res1.status == 200) {
  317. vm.topData=res1.data
  318. // vm.topData.evaluateSplit=parseFloat(vm.topData.evaluateSplit).toFixed(2)
  319. var voucherList=_.map(vm.topData.voucherList,function(item,index){
  320. return {
  321. code:item.slaveKey1,
  322. amount:item.result1,
  323. name:item.slaveKey1Name,
  324. }
  325. })
  326. if(voucherList.length==0||(voucherList.length==1&&!voucherList.name)){
  327. vm.pieShow=false
  328. }else{
  329. vm.pieShow=true
  330. }
  331. setTimeout(function(){
  332. //服务人群分析-饼图
  333. handlePieData({elId:"pieChart",arry: voucherList, title:{},colors: colors,param:"total",position:['30%', '51%'],radius:['75%', '90%']})
  334. handlePieData({elId:"pieChart1",arry: voucherList, title:{},colors: colors,param:"total",position:['30%', '51%'],radius:['75%', '90%']})
  335. },10)
  336. }
  337. if (res2 && res2.status == 200) {
  338. vm.tabledata0=listHandle(res2.data["index_121"],"all", vm);
  339. }
  340. vm.isloading=false
  341. })
  342. }
  343. }
  344. function listHandle(list,param, vm){
  345. var topArr = [];
  346. if(list.length==1&&!list[0].name){
  347. list=[]
  348. }
  349. topArr = soreRank(getKeyValueArr(list, param||"amount"));
  350. var newlist = _.map(list, function(o, index){
  351. o.rank=topArr[index]
  352. return o
  353. });
  354. EventBus.$emit("render-area-data",{
  355. });
  356. return newlist
  357. }