alert1.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. new Vue({
  2. el: '#main',
  3. data: {
  4. alertData1:'',//总人数
  5. alertData2:'',//新增人数
  6. alertData3:'',//门诊人次
  7. alertData4:'',//住院人次
  8. alertChart1:'',//左边第一块表格
  9. alertChart2:'',//右上第一块
  10. alertChart3:'',//右上第二块
  11. alertChart4:'',//右上第三块
  12. alertChart5:'',//右下
  13. bigData:'',//总数据
  14. alertType:0,
  15. alertTime:0,
  16. firstDay: "", //上月第一天
  17. lastDay: "", //上月最后一天
  18. firstMonth:'',
  19. lastMonth:'',
  20. code:[
  21. 'VIEW_13_0015',//总人数和新增人数
  22. 'VIEW_13_0016',//门诊和住院人次
  23. 'VIEW_13_0009',//区县分布
  24. 'VIEW_13_0011',//性别分布
  25. 'VIEW_13_0012',//疾病前五
  26. 'VIEW_13_0017',//就诊月趋势
  27. 'VIEW_13_0022',//就诊年趋势
  28. 'VIEW_13_0010',//年龄分布
  29. ],
  30. qushiMonth:'',
  31. qushiYear:'',
  32. firstDayYear: "", //本年第一天
  33. lastDayYear: "", //本年最后一天
  34. halfYearStartDate: "", //近半年开始时间
  35. halfYearEndDate: "", //近半年结束时间
  36. yesterdayDate:"",//昨天
  37. type:0
  38. },
  39. mounted: function() {
  40. var vm = this;
  41. this.formatDate();
  42. this.initData(this.type);
  43. var myDate = new Date();
  44. var maxMonth = myDate.getMonth()+1; //获取当前月份(0-11,0代表1月)
  45. var maxYear = myDate.getFullYear();
  46. var max = maxYear.toString()+'-'+maxMonth.toString();
  47. console.log(vm.firstMonth,vm.lastMonth)
  48. var moren = vm.firstMonth+' 至 '+vm.lastMonth;
  49. layui.use('laydate', function(){
  50. var laydate = layui.laydate;
  51. //执行一个laydate实例
  52. laydate.render({
  53. elem: '#time', //指定元素,
  54. type:'month',
  55. range: '至', //或 range: '~' 来自定义分割字符
  56. theme: '#05273e',
  57. position: 'abolute',
  58. right:'200px',
  59. value: moren,
  60. max:max,
  61. btns: ['confirm'],
  62. done: function(value, date, endDate){
  63. console.log(value); //得到日期生成的值,如:2017-08-18
  64. console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
  65. console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
  66. console.log(vm.firstDay);
  67. if(date.month < 10){
  68. vm.firstDay = date.year+'-0'+date.month+'-01';
  69. }else{
  70. vm.firstDay = date.year+'-'+date.month+'-01';
  71. }
  72. if(endDate.month < 10){
  73. vm.lastDay = endDate.year+'-0'+endDate.month+'-'+vm.getLastDay(endDate.year,endDate.month);
  74. }else{
  75. vm.lastDay = endDate.year+'-'+endDate.month+'-'+vm.getLastDay(endDate.year,endDate.month);
  76. }
  77. vm.halfYearStartDate = getLastHalfMonthArray(endDate.year+'-'+endDate.month)
  78. vm.halfYearEndDate = vm.lastDay;
  79. vm.initData(vm.type);
  80. vm.alertTime = 0;
  81. }
  82. // showBottom: false
  83. });
  84. });
  85. },
  86. methods: {
  87. initData:function(type){
  88. var vm = this;
  89. if(type == 0){
  90. event_type = '';//全部
  91. }else if(type == 1){
  92. event_type = 1;//住院
  93. }else if(type == 2){
  94. event_type = 0;//门诊
  95. }
  96. var linkageFilter1 = "quotaDate >= '" + vm.firstDay + "' and quotaDate <= '" + vm.lastDay + "';";
  97. var linkageFilter3 = "quotaDate >= '" + vm.halfYearStartDate + "' and quotaDate <= '" + vm.halfYearEndDate + "';";
  98. console.log(linkageFilter1)
  99. var code = this.code;
  100. var urlNumber = '/gov/report/getNoChartTemplateData';
  101. var urlChart = '/gov/report/getTemplateDataByViewCode';
  102. var reqUrl = [
  103. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[0]}},//总人数
  104. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[0],linkageFilter:linkageFilter1}},//新增人数
  105. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[1],linkageFilter:linkageFilter1+'eventType=0'}},//门诊,住院人次
  106. {url:urlChart,reqType: 'get',data: {viewCode:code[2],linkageFilter:linkageFilter1+'eventType='+event_type}},//区县分布
  107. {url:urlChart,reqType: 'get',data: {viewCode:code[3],linkageFilter:linkageFilter1+'eventType='+event_type}},//性别分布
  108. {url:urlChart,reqType: 'get',data: {viewCode:code[4],linkageFilter:linkageFilter1+'eventType='+event_type}},//疾病前五
  109. {url:urlChart,reqType: 'get',data: {viewCode:code[5],linkageFilter:linkageFilter3+'eventType='+event_type}},//老年人就诊趋势-月
  110. {url:urlChart,reqType: 'get',data: {viewCode:code[6],linkageFilter:'eventType='+event_type}},//老年人就诊趋势-年
  111. {url:urlChart,reqType: 'get',data: {viewCode:code[7],linkageFilter:linkageFilter1+'eventType='+event_type}},//年龄分布
  112. ]
  113. $(".div-mask-layer").show();
  114. httpRequest.getReqPromises(reqUrl).then(function(datas) {
  115. console.log(datas);
  116. vm.alertData1 = datas[0].obj.VIEW_13_0015[0].HC_15_1006;
  117. vm.alertData2 = datas[1].obj.VIEW_13_0015[0].HC_15_1006;
  118. vm.alertData3 = datas[2].obj.VIEW_13_0016[0].HC_15_1003;
  119. vm.alertData4 = datas[2].obj.VIEW_13_0016[0].HC_15_1004;
  120. var chart1 = datas[3].obj.viewInfos[0].options[0].option;
  121. var chart2 = datas[4].obj.viewInfos[0].options[0].option;
  122. var chart3 = datas[5].obj.viewInfos[0].options[0].option;
  123. var chart4 = datas[6].obj.viewInfos[0].options[0].option;
  124. var chart5 = datas[7].obj.viewInfos[0].options[0].option;
  125. var chart6 = datas[8].obj.viewInfos[0].options[0].option;
  126. vm.qushiMonth = chart4;
  127. vm.qushiYear = chart5;
  128. vm.setAlertChart1(chart1);
  129. vm.setAlertChart2(chart6);
  130. vm.setAlertChart3(chart2);
  131. vm.setAlertChart4(chart3);
  132. vm.setAlertChart5(chart4);
  133. $(".div-mask-layer").hide();
  134. })
  135. },
  136. setAlertChart1:function(data){
  137. var options = JSON.parse(data);
  138. options = quxianChart(options);
  139. // var options = this.bigData[t]['区县分布'];
  140. // options.series[0].label = {show: true,position: "right",color: '#b5e1fc'}
  141. this.alertChart1 = options;
  142. },
  143. setAlertChart2:function(data){
  144. var options = JSON.parse(data);
  145. options = nianlingChart(options);
  146. options.color = ["#6576e0","#03fa6c","#ff616f","#0fa5f2","#00e6f3"];
  147. options.legend.formatter = function(name) {
  148. var index = 0;
  149. var clientlabels = options.legend.data;
  150. var clientcounts = _.map(options.series[0].data,function(item,idx){
  151. return item.value;
  152. });
  153. clientlabels.forEach(function(value,i){
  154. if(value == name){
  155. index = i;
  156. }
  157. });
  158. return name + " " + clientcounts[index];
  159. }
  160. options.legend.left = '58%';
  161. options.legend.top = 0.044 * window.screen.width;//85;
  162. options.legend.itemWidth = 0.005 * window.screen.width;//10;
  163. options.legend.itemHeight = 0.005 * window.screen.width;//10;
  164. options.legend.itemGap = 0.0078 * window.screen.width;//15;
  165. options.series[0].center = ['35%','55%'];
  166. console.log(options)
  167. this.alertChart2 = options
  168. },
  169. setAlertChart3:function(data){
  170. var options = JSON.parse(data);
  171. options = xingbieChart(options);
  172. options.color = ["#00E7F3","#ff616f"];
  173. options.legend.formatter = function(name) {
  174. var index = 0;
  175. var clientlabels = options.legend.data;
  176. var clientcounts = _.map(options.series[0].data,function(item,idx){
  177. return item.value;
  178. });
  179. clientlabels.forEach(function(value,i){
  180. if(value == name){
  181. index = i;
  182. }
  183. });
  184. return name + " " + clientcounts[index];
  185. }
  186. options.legend.left = '58%';
  187. options.legend.top = 0.0625 * window.screen.width;//120
  188. options.legend.itemWidth = 0.005 * window.screen.width;//10;
  189. options.legend.itemHeight = 0.005 * window.screen.width;//10;
  190. options.legend.itemGap = 0.0078 * window.screen.width;//15;
  191. options.series[0].center = ['35%','55%'];
  192. this.alertChart3 = options
  193. },
  194. setAlertChart4:function(data){
  195. var options = JSON.parse(data);
  196. options = jibingTopChart(options);
  197. options.series[0].label = {show: true,position: "right",color: '#b5e1fc'};
  198. options.series[0].itemStyle.normal.color = '#FFF71A';
  199. this.alertChart4 = options
  200. },
  201. setAlertChart5:function(data){
  202. var options = JSON.parse(data);
  203. console.log(options)
  204. options = qushiChart(options);
  205. // var options = this.bigData[t]['区县分布'];
  206. // options.series[0].label = {show: true,position: "right",color: '#b5e1fc'}
  207. this.alertChart5 = options;
  208. },
  209. alertTitle:function(type){
  210. this.alertTime = 0;
  211. this.type = type;
  212. this.initData(type)
  213. },
  214. alertChart:function(time){
  215. var vm = this;
  216. this.alertTime = time;
  217. if(time == 0){
  218. vm.setAlertChart5(vm.qushiMonth);
  219. }else if(time == 1){
  220. vm.setAlertChart5(vm.qushiYear);
  221. }
  222. },
  223. closeAlertClick:function(){
  224. parent.layer.closeAll();
  225. },
  226. GetQueryString :function (name){
  227. var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  228. var r = window.location.search.substr(1).match(reg);
  229. if(r!=null)return unescape(r[2]); return null;
  230. },
  231. chartArea:function(param){
  232. console.log(param);
  233. },
  234. clickBarItem:function(item){
  235. console.log(item)
  236. },
  237. formatDate: function() {
  238. //获取上个月第一天
  239. var firstdate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1);
  240. //获取上个月最后一天
  241. var date = new Date();
  242. var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate();
  243. var enddate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, day);
  244. //获取本年第一天和最后一天
  245. var firstYearDate = new Date();
  246. firstYearDate.setDate(1);
  247. firstYearMonty = firstYearDate.setMonth(0);
  248. //近半年开始时间
  249. var date1 = new Date();
  250. date1.setMonth(date1.getMonth() - 6);
  251. var year1 = date1.getFullYear() - 1;
  252. var month1 = date1.getMonth() + 1;
  253. month1 = (month1 < 10 ? "0" + month1 : month1);
  254. //格式化结果
  255. this.firstDay = firstdate.format("yyyy-MM-dd");
  256. this.firstMonth = firstdate.format("yyyy-MM");
  257. this.lastDay = enddate.format("yyyy-MM-dd");
  258. this.lastMonth = enddate.format("yyyy-MM");
  259. this.firstDayYear = firstYearDate.format("yyyy-MM-dd");
  260. this.lastDayYear = (new Date().getFullYear()-1) + "-12-31";
  261. this.halfYearStartDate = year1.toString() + '-' + month1.toString() + "-01";
  262. this.halfYearEndDate = this.getCurrentMonthLast2017();
  263. this.yesterdayDate = this.getYesterday2017(-1, '-');
  264. },
  265. getCurrentMonthLast: function() {
  266. var date = new Date();
  267. var currentMonth = date.getMonth();
  268. var nextMonth = ++currentMonth;
  269. var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth-1, 1);
  270. var oneDay = 1000 * 60 * 60 * 24;
  271. return(new Date(nextMonthFirstDay - oneDay)).format("yyyy-MM-dd");
  272. },
  273. getYesterday:function(num, str){
  274. var today = new Date();
  275. var nowTime = today.getTime();
  276. var ms = 24*3600*1000*num;
  277. today.setTime(parseInt(nowTime + ms));
  278. var oYear = today.getFullYear();
  279. var oMoth = (today.getMonth() + 1).toString();
  280. if (oMoth.length <= 1) oMoth = '0' + oMoth;
  281. var oDay = today.getDate().toString();
  282. if (oDay.length <= 1) oDay = '0' + oDay;
  283. return oYear + str + oMoth + str + oDay;
  284. },
  285. formatDate2017: function() {
  286. //获取上个月第一天
  287. var firstdate = new Date(new Date().getFullYear()-1, new Date().getMonth() - 1, 1);
  288. //获取上个月最后一天
  289. var date = new Date();
  290. var day = new Date(date.getFullYear()-1, date.getMonth(), 0).getDate();
  291. var enddate = new Date(new Date().getFullYear()-1, new Date().getMonth() - 1, day);
  292. //获取本年第一天和最后一天
  293. var firstYearDate = new Date();
  294. firstYearDate.setFullYear(new Date().getFullYear()-1)
  295. firstYearDate.setDate(1);
  296. firstYearMonty = firstYearDate.setMonth(0);
  297. //近半年开始时间
  298. var date1 = new Date();
  299. date1.setMonth(date1.getMonth() - 6);
  300. var year1 = date1.getFullYear() - 1;
  301. var month1 = date1.getMonth() + 1;
  302. month1 = (month1 < 10 ? "0" + month1 : month1);
  303. //格式化结果
  304. this.firstDay = firstdate.format("yyyy-MM-dd");
  305. this.firstMonth = firstdate.format("yyyy-MM");
  306. this.lastDay = enddate.format("yyyy-MM-dd");
  307. this.lastMonth = enddate.format("yyyy-MM");
  308. this.firstDayYear = firstYearDate.format("yyyy-MM-dd");
  309. this.lastDayYear = (new Date().getFullYear()-1) + "-12-31";
  310. this.halfYearStartDate = year1.toString() + '-' + month1.toString() + "-01";
  311. this.halfYearEndDate = this.getCurrentMonthLast2017();
  312. this.yesterdayDate = this.getYesterday2017(-1, '-');
  313. },
  314. getYesterday2017:function(num, str){
  315. var today = new Date();
  316. var nowTime = today.getTime();
  317. var ms = 24*3600*1000*num;
  318. today.setTime(parseInt(nowTime + ms));
  319. var oYear = today.getFullYear()-1;
  320. var oMoth = (today.getMonth() + 1).toString();
  321. if (oMoth.length <= 1) oMoth = '0' + oMoth;
  322. var oDay = today.getDate().toString();
  323. if (oDay.length <= 1) oDay = '0' + oDay;
  324. return oYear + str + oMoth + str + oDay;
  325. },
  326. getCurrentMonthLast2017: function() {
  327. var date = new Date();
  328. var currentMonth = date.getMonth();
  329. var nextMonth = ++currentMonth;
  330. var nextMonthFirstDay = new Date(date.getFullYear() - 1, nextMonth-1, 1);
  331. var oneDay = 1000 * 60 * 60 * 24;
  332. return(new Date(nextMonthFirstDay - oneDay)).format("yyyy-MM-dd");
  333. },
  334. getLastDay(year, month) {
  335. var new_year = year; //取当前的年份
  336. var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定)
  337. if (month > 12) {
  338. //如果当前大于12月,则年份转到下一年
  339. new_month -= 12; //月份减
  340. new_year++; //年份增
  341. }
  342. var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天
  343. return new Date(new_date.getTime() - 1000 * 60 * 60 * 24).getDate(); //获取当月最后一天日期
  344. },
  345. }
  346. });
  347. //数字格式化
  348. function toThousands(str) {
  349. if(!str)return
  350. str =parseInt(str);
  351. if(typeof(str) == 'number')str = str.toString()
  352. var newStr = "";
  353. var count = 0;
  354. if(str.indexOf(".") == -1) {
  355. for(var i = str.length - 1; i >= 0; i--) {
  356. if(count % 3 == 0 && count != 0) {
  357. newStr = str.charAt(i) + "," + newStr;
  358. } else {
  359. newStr = str.charAt(i) + newStr;
  360. }
  361. count++;
  362. }
  363. str = newStr;
  364. } else {
  365. for(var i = str.indexOf(".") - 1; i >= 0; i--) {
  366. if(count % 3 == 0 && count != 0) {
  367. newStr = str.charAt(i) + "," + newStr;
  368. } else {
  369. newStr = str.charAt(i) + newStr; //逐个字符相接起来
  370. }
  371. count++;
  372. }
  373. str = newStr + (str + "00").substr((str + "00").indexOf("."), 3);
  374. }
  375. return str;
  376. }