insurance.js 9.1 KB

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