insurance.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. new Vue({
  2. el: '#app',
  3. data: {
  4. city: '上饶市',
  5. town: [],
  6. selectTown:["0"],
  7. cityVal:"0",
  8. timeType: '1', //时间过滤条件 1是上月 2是半年
  9. leftData1: {}, //左边数据块1
  10. leftData2: {}, //左边数据块2
  11. bakLeftData1:{},//缓存左边数据块1
  12. bakLeftData2:{},//缓存左边数据块2
  13. yesterdayData: {},
  14. leftChart1: null, //左边的图表1
  15. leftChart2: null, //左边的图表2
  16. leftData3:null,//左边的图表3
  17. leftData2_legend:null,//左边的图表2中间数据
  18. rightChart1: null, //右边边的图表1
  19. rightChart2: null, //右边的图表2
  20. tableData1: null, //表格数据1
  21. tableData2: null, //表格数据2
  22. mapData: null,
  23. allData: null, //所有的数据 用来切换区县
  24. lineHeightIndex: null,
  25. skipShow: 0,
  26. hasData1:true,
  27. hasData2:true,
  28. hasData3:true,
  29. hasData4:true,
  30. hasData5:true,
  31. hasData6:true,
  32. hasMapData:true,
  33. time:'',
  34. middleData1:'',
  35. middleData2:'',
  36. middleData3:'',
  37. },
  38. mounted: function() {
  39. this.initData();
  40. },
  41. filters:{
  42. formatData:function(value){
  43. if(value>100000){
  44. if(value>1000000000){
  45. return (value/100000000).toFixed(2)+"亿"
  46. }else{
  47. return (value/10000).toFixed(2)+"万"
  48. }
  49. }else{
  50. return value
  51. }
  52. }
  53. },
  54. methods: {
  55. initData: function() {
  56. this.timeType = 1;//默认显示本月
  57. $(".div-mask-layer").show();
  58. var vm = this,data1, data2, data3, data4, data5, data6, data7, data8;
  59. this.town.map(function(v, i) {
  60. if(v.name == vm.city) {
  61. vm.cityVal = v.id;
  62. }
  63. })
  64. // 上个月
  65. var linkageFilter1 = "quotaDate >= '" + getMonthStartDate() + "' and quotaDate <= '" + getMonthEndDate() + "';";
  66. console.log(linkageFilter1)
  67. if(vm.cityVal!="0") {
  68. linkageFilter1 += "town=" + vm.cityVal + ";";
  69. }
  70. // 今年
  71. var linkageFilter2 = "quotaDate >= '" + getYearStartDate() + "' and quotaDate <= '" + getYearEndDate() + "';";
  72. if(vm.cityVal!="0") {
  73. linkageFilter2 += "town=" + vm.cityVal + ";";
  74. }
  75. console.log(linkageFilter2)
  76. // 半年
  77. var linkageFilter3 = "quotaDate >= '" + getHalfYearStartDate() + "' and quotaDate <= '" + getHalfYearEndDate() + "';";
  78. if(vm.cityVal!="0") {
  79. linkageFilter3 += "town=" + vm.cityVal + ";";
  80. }
  81. console.log(linkageFilter3)
  82. var linkageFilter4 = "quotaDate >= '" + getYearEndDate() + "' and quotaDate <= '" + getYearEndDate() + "';";
  83. console.log(linkageFilter4)
  84. var reqUrl = [{url: bigDataAPI.getCityHospital,reqType: 'get',data: {}},
  85. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_22_0004",linkageFilter:linkageFilter1}},//医保费用
  86. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0003",linkageFilter:linkageFilter3}},//医保支出费用月趋势
  87. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0002",linkageFilter:linkageFilter1}},//医保目录外费用占比
  88. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0005",linkageFilter:linkageFilter1}},//
  89. {url:bigDataAPI.getMapJingWeiDuInfo,reqType: 'get',data:{}},//上饶地图经纬度数据
  90. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0001",linkageFilter:linkageFilter1}},//机构排行
  91. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0015",linkageFilter:linkageFilter3}},//门诊人次月趋势
  92. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0016",linkageFilter:linkageFilter3}},//住院人次月趋势
  93. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0017",linkageFilter:linkageFilter3}},//门诊分类别月趋势
  94. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0018",linkageFilter:linkageFilter3}},//住院平均日数月趋势
  95. ];
  96. // debugger
  97. httpRequest.getReqPromises(reqUrl).then(function(datas) {
  98. vm.town = datas[0].map((item, index, arr) => {
  99. item.children.map((t) => {
  100. return t.label = t.text;
  101. })
  102. item.label = item.text;
  103. return item;
  104. })
  105. vm.town.unshift({
  106. label: '上饶市',
  107. value: '0'
  108. })
  109. vm.middleData1 = toThousands(datas[1].obj.VIEW_22_0004[0].HC_22_1001/10000);
  110. vm.middleData2 = datas[1].obj.VIEW_22_0004[0].HC_22_1002;
  111. vm.middleData3 = toThousands(datas[1].obj.VIEW_22_0004[0].HC_22_1006/10000);
  112. var chart2 = datas[2].obj.viewInfos[0].options[0].option;
  113. // vm.leftData1 = datas[1];
  114. var chart3 = datas[3].obj.viewInfos[0].options[0].option;
  115. var chart4 = datas[4].obj.viewInfos[0].options[0].option;
  116. var data1 = datas[1]
  117. var data5 = datas[5];
  118. var data6 = datas[6];
  119. console.log(data6)
  120. // data5 = datas[5];
  121. // data6 = datas[6];
  122. // data7 = datas[7];
  123. // data8 = datas[8];
  124. // data9 = datas[9];
  125. vm.setLeftChart1(chart2);
  126. vm.setLeftChart2(chart3);
  127. vm.setLeftChart3(chart4);
  128. // vm.setRightChart1(data8);
  129. // vm.setRightChart2(data9);
  130. // vm.setTable1(data4);
  131. // vm.setTable2(data5);
  132. // vm.setleftData1();
  133. echarts.registerMap('上饶',data5);
  134. vm.setMapData(data1);
  135. vm.setYesterDay(data1);
  136. $(".div-mask-layer").hide();
  137. })
  138. },
  139. setleftData1: function() {
  140. var options = {},options1={},options2={},vm=this;
  141. if(this.leftData1.successFlg) {
  142. _.map(vm.leftData1.obj.VIEW_14_0011,function(item,index){
  143. if(vm.cityVal=="0"){//上饶市
  144. options1 = vm.leftData1.obj.VIEW_14_0011[0];
  145. }else if(item.firstColumn==vm.city){
  146. options1 = item;
  147. }
  148. })
  149. }
  150. if(this.leftData2.successFlg) {
  151. _.map(vm.leftData2.obj.VIEW_14_0011,function(item,index){
  152. if(vm.cityVal=="0"){//上饶市
  153. options2 = vm.leftData2.obj.VIEW_14_0011[0];
  154. }else if(item.firstColumn==vm.city){
  155. options2 = item;
  156. }
  157. })
  158. }
  159. vm.bakLeftData1 = this.setFormater(options1);
  160. vm.bakLeftData2 = this.setFormater(options2);
  161. this.leftData = vm.bakLeftData1;
  162. },
  163. setYesterDay: function(data3) {
  164. var options = {},vm=this;
  165. if(data3.successFlg) {
  166. _.map(data3.obj&&data3.obj.VIEW_14_0012||[],function(item,index){
  167. if(vm.cityVal=="0"){//上饶市
  168. options = data3.obj.VIEW_14_0012[0];
  169. }else if(item.firstColumn==vm.city){
  170. options = item;
  171. }
  172. })
  173. }
  174. if(options){
  175. this.setFormater(options);
  176. this.yesterdayData = options;
  177. }
  178. },
  179. setLeftChart1: function(data) {
  180. var options = JSON.parse(data);
  181. options = leftChart1(options);
  182. this.leftData1 = options;
  183. },
  184. setLeftChart2: function(data) {
  185. var options = JSON.parse(data);
  186. this.leftData2_legend = toThousands((Number(options.series[0].data[0].value)+Number(options.series[0].data[1].value))/10000)
  187. options = leftChart2(options);
  188. this.leftData2 = options;
  189. },
  190. setLeftChart3: function(data) {
  191. var options = JSON.parse(data);
  192. options = leftChart3(options);
  193. this.leftData3 = options;
  194. },
  195. setMapData: function(data3) {
  196. // debugger
  197. var optionData = [];
  198. _.map(data3.obj&&data3.obj.VIEW_22_0004||[], function(item) {
  199. if(item.firstColumn != "合计") {
  200. optionData.push({
  201. name: item.town,
  202. value: parseInt(item.HC_22_1001)
  203. })
  204. }
  205. })
  206. if(optionData.length>0){
  207. var options = optionData;
  208. this.mapData = {
  209. data: options,
  210. index: this.lineHeightIndex
  211. };
  212. this.hasMapData = true;
  213. }else{
  214. this.hasMapData = false;
  215. }
  216. },
  217. setRightChart1: function(data8) {
  218. var options = null;
  219. var options = data8.successFlg?data8.obj.viewInfos&&JSON.parse(data8.obj.viewInfos[0].options[0].option):{};
  220. if(options&&options.series && options.series[0].data && options.series[1].data && options.series[2].data && options.series[3].data){
  221. options = rightChart1DataFormat(options);
  222. this.rightChart1 = options
  223. this.hasData4 = true;
  224. $(".right1 .contentBox3").removeClass("div-menzhenfenleibei");
  225. }else{
  226. this.hasData4 = false;
  227. $(".right1 .contentBox3").addClass("div-menzhenfenleibei");
  228. }
  229. },
  230. setRightChart2: function(data9) {
  231. var options = null;
  232. var options = data9.successFlg?data9.obj.viewInfos&&JSON.parse(data9.obj.viewInfos[0].options[0].option):{};
  233. if(options&&options.series && options.series[0].data && options.series[1].data){
  234. options = rightChart2DataFormat(options);
  235. this.rightChart2 = options
  236. this.hasData6 = true;
  237. $(".right2 .contentBox3").removeClass("div-menzhenfenleibei");
  238. }else{
  239. this.hasData6 = false;
  240. $(".right2 .contentBox3").addClass("div-menzhenfenleibei");
  241. }
  242. },
  243. setTable1: function(data4) {
  244. var resData = [];
  245. var data = data4.successFlg?data4.obj.VIEW_14_0013:[];
  246. _.map(data, function(item, index) {
  247. if(item.firstColumn != "合计" && item.month) {
  248. item.month = parseInt(item.month.substring(5, 7))+"月";
  249. resData.push(item)
  250. }
  251. })
  252. if(resData.length==0){
  253. this.hasData3 = false;
  254. }else{
  255. this.hasData3 = true;
  256. this.tableData1 = resData
  257. }
  258. },
  259. setTable2: function(data5) {
  260. var resData = [];
  261. var data = data5.successFlg?data5.obj.VIEW_14_0014:[];
  262. _.map(data, function(item, index) {
  263. if(item.firstColumn != "合计" && item.month) {
  264. item.month = parseInt(item.month.substring(5, 7))+"月";
  265. resData.push(item)
  266. }
  267. })
  268. if(resData.length==0){
  269. this.hasData5 = false;
  270. }else{
  271. this.hasData5 = true;
  272. this.tableData2 = resData
  273. }
  274. },
  275. setCity(item) {
  276. this.city = item.name;
  277. },
  278. setTimeStr(v) {
  279. this.timeType = v;
  280. this.timeType == 1?this.leftData=this.bakLeftData1:this.leftData=this.bakLeftData2;
  281. },
  282. setFormater: function(obj) {
  283. for(var c in obj) {
  284. if(obj[c].toString().indexOf(",") == -1){//不存在,,说明要格式化
  285. var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/
  286. if (!re.test(obj[c])) { //不是数字,则不格式化
  287. continue;
  288. }
  289. if(obj[c]>100000){
  290. obj[c] = (obj[c]/10000).toFixed(2)+"万"
  291. }else{
  292. obj[c] = toThousands(obj[c]);
  293. }
  294. }
  295. }
  296. return obj;
  297. },
  298. newObj: function(obj) {
  299. return JSON.parse(JSON.stringify(obj))
  300. },
  301. clickMap: function(res) {
  302. this.city = res.name;
  303. },
  304. skipClick: function() {
  305. console.log(222)
  306. this.skipShow == 0 ? this.skipShow = 1 : this.skipShow = 0
  307. }
  308. },
  309. watch: {
  310. city: function(value) {
  311. var that = this;
  312. that.lineHeightIndex = value;
  313. this.initData();
  314. }
  315. }
  316. });
  317. //数字格式化
  318. function toThousands(str) {
  319. if(!str) return
  320. str = parseInt(str);
  321. if(typeof(str) == 'number') str = str.toString()
  322. var newStr = "";
  323. var count = 0;
  324. if(str.indexOf(".") == -1) {
  325. for(var i = str.length - 1; i >= 0; i--) {
  326. if(count % 3 == 0 && count != 0) {
  327. newStr = str.charAt(i) + "," + newStr;
  328. } else {
  329. newStr = str.charAt(i) + newStr;
  330. }
  331. count++;
  332. }
  333. str = newStr;
  334. } else {
  335. for(var i = str.indexOf(".") - 1; i >= 0; i--) {
  336. if(count % 3 == 0 && count != 0) {
  337. newStr = str.charAt(i) + "," + newStr;
  338. } else {
  339. newStr = str.charAt(i) + newStr; //逐个字符相接起来
  340. }
  341. count++;
  342. }
  343. str = newStr + (str + "00").substr((str + "00").indexOf("."), 3);
  344. }
  345. return str;
  346. }