medical.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. new Vue({
  2. el: '#app',
  3. data: {
  4. city: '上饶市',
  5. town: [],
  6. cityVal:"0",
  7. timeType: '1', //时间过滤条件 1是上月 2是半年
  8. leftData: {}, //左边数据块
  9. leftData1: {}, //左边数据块1
  10. leftData2: {}, //左边数据块2
  11. yesterdayData: {},
  12. leftChart1: null, //左边的图表1
  13. leftChart2: null, //左边的图表2
  14. rightChart1: null, //右边边的图表1
  15. rightChart2: null, //右边的图表2
  16. tableData1: null, //表格数据1
  17. tableData2: null, //表格数据2
  18. mapData: null,
  19. allData: null, //所有的数据 用来切换区县
  20. lineHeightIndex: null,
  21. skipShow: 0,
  22. firstDay: "", //上月第一天
  23. lastDay: "", //上月最后一天
  24. firstDayYear: "", //本年第一天
  25. lastDayYear: "", //本年最后一天
  26. halfYearStartDate: "", //近半年开始时间
  27. halfYearEndDate: "", //近半年结束时间
  28. yesterdayDate:""
  29. },
  30. mounted: function() {
  31. this.initData();
  32. },
  33. methods: {
  34. initData: function() {
  35. $(".div-mask-layer").show();
  36. var vm = this,
  37. data1, data2, data3, data4, data5, data6, data7, data8;
  38. this.formatDate(); //格式化时间
  39. this.town.map(function(v, i) {
  40. if(v.name == vm.city) {
  41. vm.cityVal = v.id;
  42. }
  43. })
  44. var linkageFilter1 = "quotaDate >= '" + vm.firstDay + "' and quotaDate <= '" + vm.lastDay + "';";
  45. if(vm.cityVal!="0") {
  46. linkageFilter1 += "town=" + vm.cityVal + ";";
  47. }
  48. var linkageFilter2 = "quotaDate >= '" + vm.firstDayYear + "' and quotaDate <= '" + vm.lastDayYear + "';";
  49. if(vm.cityVal!="0") {
  50. linkageFilter2 += "town=" + vm.cityVal + ";";
  51. }
  52. var linkageFilter3 = "quotaDate >= '" + vm.halfYearStartDate + "' and quotaDate <= '" + vm.halfYearEndDate + "';";
  53. if(vm.cityVal!="0") {
  54. linkageFilter3 += "town=" + vm.cityVal + ";";
  55. }
  56. var linkageFilter4 = "quotaDate >= '" + vm.yesterdayDate + "' and quotaDate <= '" + vm.yesterdayDate + "';";
  57. if(vm.cityVal!="0") {
  58. linkageFilter4 += "town=" + vm.cityVal + ";";
  59. }
  60. var reqUrl = [{url: bigDataAPI.getCityArea,reqType: 'get',data: {}},
  61. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_14_0011",linkageFilter:linkageFilter1}},//左上角-上月
  62. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_14_0011",linkageFilter:linkageFilter2}},//左上角-本年
  63. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_14_0012",linkageFilter:linkageFilter4}},
  64. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_14_0013",linkageFilter:linkageFilter3}},//
  65. {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_14_0014",linkageFilter:linkageFilter3}},//
  66. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0015",linkageFilter:linkageFilter3}},//门诊人次月趋势
  67. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0016",linkageFilter:linkageFilter3}},//住院人次月趋势
  68. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0017",linkageFilter:linkageFilter3}},//门诊分类别月趋势
  69. {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0018",linkageFilter:linkageFilter3}},//住院平均日数月趋势
  70. {url:bigDataAPI.getMapJingWeiDuInfo,reqType: 'get',data:{}}//上饶地图经纬度数据
  71. ];
  72. httpRequest.getReqPromises(reqUrl).then(function(datas) {
  73. vm.town = [{
  74. "name": "上饶市",
  75. "id": "0"
  76. }].concat(datas[0]);
  77. vm.leftData1 = datas[1];
  78. vm.leftData2 = data2 = datas[2];
  79. data3 = datas[3];
  80. data4 = datas[4];
  81. data5 = datas[5];
  82. data6 = datas[6];
  83. data7 = datas[7];
  84. data8 = datas[8];
  85. data9 = datas[9];
  86. data10 = datas[10];
  87. vm.setLeftChart1(data6);
  88. vm.setLeftChart2(data7);
  89. vm.setRightChart1(data8);
  90. vm.setRightChart2(data9);
  91. vm.setTable1(data4);
  92. vm.setTable2(data5);
  93. vm.setleftData1();
  94. echarts.registerMap('上饶',data10);
  95. vm.setMapData(data3);
  96. vm.setYesterDay(data3);
  97. $(".div-mask-layer").hide();
  98. })
  99. },
  100. setleftData1: function() {
  101. var options = null,vm=this;
  102. if(this.timeType == 1) {
  103. if(this.leftData1.successFlg) {
  104. _.map(vm.leftData1.obj.VIEW_14_0011,function(item,index){
  105. if(vm.cityVal=="0"){//上饶市
  106. options = vm.leftData1.obj.VIEW_14_0011[0];
  107. }else if(item.firstColumn==vm.city){
  108. options = item;
  109. }
  110. })
  111. }
  112. } else {
  113. if(this.leftData2.successFlg) {
  114. _.map(vm.leftData2.obj.VIEW_14_0011,function(item,index){
  115. if(vm.cityVal=="0"){//上饶市
  116. options = vm.leftData2.obj.VIEW_14_0011[0];
  117. }else if(item.firstColumn==vm.city){
  118. options = item;
  119. }
  120. })
  121. }
  122. }
  123. this.setFormater(options);
  124. this.leftData = options;
  125. },
  126. setYesterDay: function(data3) {
  127. var options = null;
  128. if(data3.successFlg) {
  129. options = data3.obj.VIEW_14_0012[0];
  130. }
  131. this.setFormater(options);
  132. this.yesterdayData = options;
  133. },
  134. setLeftChart1: function(data6) {
  135. var options = null;
  136. if(data6.successFlg) {
  137. options = JSON.parse(data6.obj.viewInfos[0].options[0].option);
  138. }
  139. options = leftChart1DataFormat(options);
  140. this.leftChart1 = options
  141. },
  142. setLeftChart2: function(data7) {
  143. var options = null;
  144. if(data7.successFlg) {
  145. options = JSON.parse(data7.obj.viewInfos[0].options[0].option);
  146. }
  147. options = leftChart2DataFormat(options);
  148. this.leftChart2 = options;
  149. },
  150. setMapData: function(data3) {
  151. var optionData = [];
  152. _.map(data3.obj.VIEW_14_0012, function(item) {
  153. if(item.firstColumn != "合计") {
  154. optionData.push({
  155. name: item.townName,
  156. value: parseInt(item.HC_14_1019)
  157. })
  158. }
  159. })
  160. var options = optionData;
  161. this.mapData = {
  162. data: options,
  163. index: this.lineHeightIndex
  164. };
  165. },
  166. setRightChart1: function(data8) {
  167. var options = null;
  168. if(data8.successFlg) {
  169. options = JSON.parse(data8.obj.viewInfos[0].options[0].option);
  170. }
  171. options = rightChart1DataFormat(options);
  172. this.rightChart1 = options
  173. },
  174. setRightChart2: function(data9) {
  175. var options = null;
  176. if(data9.successFlg) {
  177. options = JSON.parse(data9.obj.viewInfos[0].options[0].option);
  178. }
  179. options = rightChart2DataFormat(options);
  180. this.rightChart2 = options
  181. },
  182. setTable1: function(data4) {
  183. var resData = [];
  184. _.map(data4.obj.VIEW_14_0013, function(item, index) {
  185. if(item.firstColumn != "合计") {
  186. item.month = parseInt(item.month.substring(5, 7))+"月";
  187. resData.push(item)
  188. }
  189. })
  190. this.tableData1 = resData
  191. },
  192. setTable2: function(data5) {
  193. var resData = [];
  194. _.map(data5.obj.VIEW_14_0014, function(item, index) {
  195. if(item.firstColumn != "合计") {
  196. item.month = parseInt(item.month.substring(5, 7))+"月";
  197. resData.push(item)
  198. }
  199. })
  200. this.tableData2 = resData
  201. },
  202. setCity(item) {
  203. this.city = item.name;
  204. },
  205. setTimeStr(v) {
  206. this.timeType = v;
  207. this.setleftData1()
  208. },
  209. setFormater: function(obj) {
  210. for(var c in obj) {
  211. if(obj[c].indexOf(",") == -1){//不存在,,说明要格式化
  212. obj[c] = toThousands(obj[c])
  213. }
  214. }
  215. },
  216. formatDate: function() {
  217. //获取上个月第一天
  218. var firstdate = new Date(new Date().getFullYear()-1, new Date().getMonth() - 1, 1);
  219. //获取上个月最后一天
  220. var date = new Date();
  221. var day = new Date(date.getFullYear()-1, date.getMonth(), 0).getDate();
  222. var enddate = new Date(new Date().getFullYear()-1, new Date().getMonth() - 1, day);
  223. //获取本年第一天和最后一天
  224. var firstYearDate = new Date();
  225. firstYearDate.setDate(1);
  226. firstYearMonty = firstYearDate.setMonth(0);
  227. //近半年开始时间
  228. var date1 = new Date();
  229. date1.setMonth(date1.getMonth() - 6);
  230. var year1 = date1.getFullYear() - 1;
  231. var month1 = date1.getMonth() + 1;
  232. month1 = (month1 < 10 ? "0" + month1 : month1);
  233. //格式化结果
  234. this.firstDay = firstdate.format("yyyy-MM-dd");
  235. this.lastDay = enddate.format("yyyy-MM-dd");
  236. this.firstDayYear = firstYearDate.format("yyyy-MM-dd");
  237. this.lastDayYear = (new Date().getFullYear()-1) + "-12-31";
  238. this.halfYearStartDate = year1.toString() + '-' + month1.toString() + "-01";
  239. this.halfYearEndDate = this.getCurrentMonthLast();
  240. this.yesterdayDate = this.getYesterday(-1, '-');
  241. },
  242. getYesterday:function(num, str){
  243. var today = new Date();
  244. var nowTime = today.getTime();
  245. var ms = 24*3600*1000*num;
  246. today.setTime(parseInt(nowTime + ms));
  247. var oYear = today.getFullYear()-1;
  248. var oMoth = (today.getMonth() + 1).toString();
  249. if (oMoth.length <= 1) oMoth = '0' + oMoth;
  250. var oDay = today.getDate().toString();
  251. if (oDay.length <= 1) oDay = '0' + oDay;
  252. return oYear + str + oMoth + str + oDay;
  253. },
  254. getCurrentMonthLast: function() {
  255. var date = new Date();
  256. var currentMonth = date.getMonth();
  257. var nextMonth = ++currentMonth;
  258. var nextMonthFirstDay = new Date(date.getFullYear() - 1, nextMonth-1, 1);
  259. var oneDay = 1000 * 60 * 60 * 24;
  260. return(new Date(nextMonthFirstDay - oneDay)).format("yyyy-MM-dd");
  261. },
  262. newObj: function(obj) {
  263. return JSON.parse(JSON.stringify(obj))
  264. },
  265. clickMap: function(res) {
  266. this.city = res.name;
  267. },
  268. skipClick: function() {
  269. console.log(222)
  270. this.skipShow == 0 ? this.skipShow = 1 : this.skipShow = 0
  271. }
  272. },
  273. watch: {
  274. city: function(value) {
  275. var that = this;
  276. that.lineHeightIndex = value;
  277. this.initData();
  278. }
  279. }
  280. });
  281. //数字格式化
  282. function toThousands(str) {
  283. if(!str) return
  284. str = parseInt(str);
  285. if(typeof(str) == 'number') str = str.toString()
  286. var newStr = "";
  287. var count = 0;
  288. if(str.indexOf(".") == -1) {
  289. for(var i = str.length - 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;
  298. } else {
  299. for(var i = str.indexOf(".") - 1; i >= 0; i--) {
  300. if(count % 3 == 0 && count != 0) {
  301. newStr = str.charAt(i) + "," + newStr;
  302. } else {
  303. newStr = str.charAt(i) + newStr; //逐个字符相接起来
  304. }
  305. count++;
  306. }
  307. str = newStr + (str + "00").substr((str + "00").indexOf("."), 3);
  308. }
  309. return str;
  310. }