alert5.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. new Vue({
  2. el: '#main',
  3. data: {
  4. alertChart1:'',//左边第一块表格
  5. alertChart2:'',//左边第二块表格
  6. alertChart3:'',//右上第一块
  7. alertChart4:'',//右上第二块
  8. alertChart5:'',//右下
  9. bigData:'',//总数据
  10. alertType:0,
  11. alertTime:0,
  12. firstDay: "", //上月第一天
  13. lastDay: "", //上月最后一天
  14. firstMonth:'',
  15. lastMonth:'',
  16. code:[
  17. 'VIEW_13_0018',//死亡原因-人
  18. 'VIEW_13_0019',//区县分布-人
  19. 'VIEW_13_0020',//年龄段分布
  20. 'VIEW_13_0021',//性别分布
  21. 'VIEW_13_0023',//新增患者月趋势
  22. 'VIEW_13_0025',//新增患者年趋势
  23. 'VIEW_13_0024',//新增患者季趋势
  24. ],
  25. qushiMonth:'',
  26. qushiYear:'',
  27. firstDayYear: "", //本年第一天
  28. lastDayYear: "", //本年最后一天
  29. halfYearStartDate: "", //近半年开始时间
  30. halfYearEndDate: "", //近半年结束时间
  31. yesterdayDate:"",//昨天
  32. type:0,
  33. thirdJiDate:"",//三个季度前
  34. qushiSeason:"",//季度趋势
  35. townCode:'',//区县选择
  36. },
  37. mounted: function() {
  38. var vm = this;
  39. updateFontSize();
  40. this.formatDate();
  41. this.initData(this.type,vm.townCode);
  42. var myDate = new Date();
  43. var maxMonth = myDate.getMonth()+1; //获取当前月份(0-11,0代表1月)
  44. var maxYear = myDate.getFullYear();
  45. var max = maxYear.toString()+'-'+maxMonth.toString();
  46. console.log(vm.firstMonth,vm.lastMonth)
  47. var moren = vm.firstMonth+' 至 '+vm.lastMonth;
  48. layui.use('laydate', function(){
  49. var laydate = layui.laydate;
  50. //执行一个laydate实例
  51. laydate.render({
  52. elem: '#time', //指定元素,
  53. type:'month',
  54. range: '至', //或 range: '~' 来自定义分割字符
  55. theme: '#05273e',
  56. position: 'abolute',
  57. right:'200px',
  58. value: moren,
  59. max:max,
  60. btns: ['confirm'],
  61. done: function(value, date, endDate){
  62. console.log(value); //得到日期生成的值,如:2017-08-18
  63. console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
  64. console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
  65. console.log(vm.firstDay);
  66. if(date.month < 10){
  67. vm.firstDay = date.year+'-0'+date.month+'-01';
  68. }else{
  69. vm.firstDay = date.year+'-'+date.month+'-01';
  70. }
  71. if(endDate.month < 10){
  72. vm.lastDay = endDate.year+'-0'+endDate.month+'-'+vm.getLastDay(endDate.year,endDate.month);
  73. }else{
  74. vm.lastDay = endDate.year+'-'+endDate.month+'-'+vm.getLastDay(endDate.year,endDate.month);
  75. }
  76. vm.halfYearStartDate = getLastHalfMonthArray(endDate.year+'-'+endDate.month)
  77. vm.halfYearEndDate = vm.lastDay;
  78. vm.thirdJiDate = getThirdJiDate(endDate.year,endDate.month);
  79. vm.initData(vm.type,vm.townCode);
  80. vm.alertTime = 0;
  81. }
  82. // showBottom: false
  83. });
  84. });
  85. },
  86. methods: {
  87. initData:function(type,city){
  88. var vm = this;
  89. var linkageFilter1 = "quotaDate >= '" + vm.firstDay + "' and quotaDate <= '" + vm.lastDay + "';";
  90. var linkageFilter2 = "quotaDate >= '" + vm.thirdJiDate + "' and quotaDate <= '" + vm.lastDay + "';";
  91. var linkageFilter3 = "quotaDate >= '" + vm.halfYearStartDate + "' and quotaDate <= '" + vm.halfYearEndDate + "';";
  92. console.log(linkageFilter1)
  93. var code = this.code;
  94. var urlNumber = '/gov/report/getNoChartTemplateData';
  95. var urlChart = '/gov/report/getTemplateDataByViewCode';
  96. if(city == ''){
  97. var reqUrl = [
  98. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[0],linkageFilter:linkageFilter1,limitCondition:JSON.stringify({'VIEW_13_0038': '12'})}},//死亡原因-人
  99. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[1],linkageFilter:linkageFilter1}},//区县分布-人
  100. {url:urlChart,reqType: 'get',data: {viewCode:code[2],linkageFilter:linkageFilter1}},//年龄段分布
  101. {url:urlChart,reqType: 'get',data: {viewCode:code[3],linkageFilter:linkageFilter1}},//性别分布
  102. {url:urlChart,reqType: 'get',data: {viewCode:code[4],linkageFilter:linkageFilter3}},//新增患者月趋势
  103. {url:urlChart,reqType: 'get',data: {viewCode:code[5]}},//老年人就诊趋势-年
  104. {url:urlChart,reqType: 'get',data: {viewCode:code[6],linkageFilter:linkageFilter2}},//新增患者季趋势
  105. ]
  106. }else{
  107. var reqUrl = [
  108. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[0],linkageFilter:linkageFilter1,limitCondition:JSON.stringify({'VIEW_13_0038': '12'})}},//死亡原因-人
  109. {url:urlNumber,reqType: 'get',data: {viewCodeStr:code[1],linkageFilter:linkageFilter1}},//区县分布-人
  110. {url:urlChart,reqType: 'get',data: {viewCode:code[2],linkageFilter:linkageFilter1+'town='+city,linkageDimension:'org'}},//年龄段分布
  111. {url:urlChart,reqType: 'get',data: {viewCode:code[3],linkageFilter:linkageFilter1+'town='+city,linkageDimension:'org'}},//性别分布
  112. {url:urlChart,reqType: 'get',data: {viewCode:code[4],linkageFilter:linkageFilter3+'town='+city,linkageDimension:'org'}},//新增患者月趋势
  113. {url:urlChart,reqType: 'get',data: {viewCode:code[5],linkageFilter:'town='+city,linkageDimension:'org'}},//老年人就诊趋势-年
  114. {url:urlChart,reqType: 'get',data: {viewCode:code[6],linkageFilter:linkageFilter2+'town='+city,linkageDimension:'org'}},//新增患者季趋势
  115. ]
  116. }
  117. $(".div-mask-layer").show();
  118. httpRequest.getReqPromises(reqUrl).then(function(datas) {
  119. console.log(datas);
  120. vm.alertChart1 = datas[0].obj.VIEW_13_0018;
  121. vm.alertChart2 = datas[1].obj.VIEW_13_0019;
  122. // vm.alertData3 = datas[2].obj.VIEW_15_0002[0].HC_15_1003;
  123. // vm.alertData4 = datas[2].obj.VIEW_15_0002[0].HC_15_1004;
  124. var chart1 = datas[2].obj.viewInfos[0].options[0].option;
  125. var chart2 = datas[3].obj.viewInfos[0].options[0].option;
  126. var chart3 = datas[4].obj.viewInfos[0].options[0].option;
  127. var chart4 = datas[5].obj.viewInfos[0].options[0].option;
  128. var chart5 = datas[6].obj.viewInfos[0].options[0].option;
  129. vm.qushiMonth = chart3;
  130. vm.qushiYear = chart4;
  131. vm.qushiSeason = chart5;
  132. vm.setAlertChart2(chart1);
  133. vm.setAlertChart3(chart2);
  134. // vm.setAlertChart4(chart3);
  135. vm.setAlertChart5(chart3);
  136. $(".div-mask-layer").hide();
  137. })
  138. },
  139. setAlertChart1:function(data){
  140. var options = JSON.parse(data);
  141. options = quxianChart(options);
  142. // var options = this.bigData[t]['区县分布'];
  143. // options.series[0].label = {show: true,position: "right",color: '#b5e1fc'}
  144. this.alertChart1 = options;
  145. },
  146. setAlertChart2:function(data){
  147. var options = JSON.parse(data);
  148. options = nianlingChart(options);
  149. options.color = ["#6576e0","#03fa6c","#ff616f","#0fa5f2","#00e6f3"];
  150. options.legend.formatter = function(name) {
  151. var index = 0;
  152. var clientlabels = options.legend.data;
  153. var clientcounts = _.map(options.series[0].data,function(item,idx){
  154. return item.value;
  155. });
  156. clientlabels.forEach(function(value,i){
  157. if(value == name){
  158. index = i;
  159. }
  160. });
  161. return name + " " + clientcounts[index];
  162. }
  163. options.legend.left = '58%';
  164. options.legend.top = 0.044 * window.screen.width;//85;
  165. options.legend.itemWidth = 0.005 * window.screen.width;//10;
  166. options.legend.itemHeight = 0.005 * window.screen.width;//10;
  167. options.legend.itemGap = 0.0078 * window.screen.width;//15;
  168. options.series[0].center = ['35%','55%'];
  169. this.alertChart3 = options
  170. },
  171. setAlertChart3:function(data){
  172. var options = JSON.parse(data);
  173. options = xingbieChart(options);
  174. options.color = ["#00E7F3","#ff616f"];
  175. options.legend.formatter = function(name) {
  176. var index = 0;
  177. var clientlabels = options.legend.data;
  178. var clientcounts = _.map(options.series[0].data,function(item,idx){
  179. return item.value;
  180. });
  181. clientlabels.forEach(function(value,i){
  182. if(value == name){
  183. index = i;
  184. }
  185. });
  186. return name + " " + clientcounts[index];
  187. }
  188. options.legend.left = '58%';
  189. options.legend.top = 0.0625 * window.screen.width;//120
  190. options.legend.itemWidth = 0.005 * window.screen.width;//10;
  191. options.legend.itemHeight = 0.005 * window.screen.width;//10;
  192. options.legend.itemGap = 0.0078 * window.screen.width;//15;
  193. options.series[0].center = ['35%','55%'];
  194. this.alertChart4 = options
  195. },
  196. setAlertChart4:function(data){
  197. var options = JSON.parse(data);
  198. options = jibingTopChart(options);
  199. options.series[0].label = {show: true,position: "right",color: '#b5e1fc'};
  200. options.series[0].itemStyle.normal.color = '#FFF71A';
  201. this.alertChart4 = options
  202. },
  203. setAlertChart5:function(data){
  204. var options = JSON.parse(data);
  205. options = qushiChart(options);
  206. // var options = this.bigData[t]['区县分布'];
  207. // options.series[0].label = {show: true,position: "right",color: '#b5e1fc'}
  208. this.alertChart5 = options;
  209. window.chart5 = this.$refs._alertChart5.chart
  210. },
  211. alertTitle:function(type){
  212. this.alertTime = 0;
  213. this.type = type;
  214. this.initData(type,vm.townCode)
  215. },
  216. alertChart:function(time){
  217. var vm = this;
  218. this.alertTime = time;
  219. if(time == 0){
  220. vm.setAlertChart5(vm.qushiMonth);
  221. }else if(time == 1){
  222. vm.setAlertChart5(vm.qushiYear);
  223. }else if(time == 2){
  224. vm.setAlertChart5(vm.qushiSeason);
  225. }
  226. },
  227. closeAlertClick:function(){
  228. parent.layer.closeAll();
  229. },
  230. GetQueryString :function (name){
  231. var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  232. var r = window.location.search.substr(1).match(reg);
  233. if(r!=null)return unescape(r[2]); return null;
  234. },
  235. chartArea:function(param){
  236. console.log(param);
  237. },
  238. clickBarItem:function(item){
  239. console.log(item)
  240. },
  241. formatDate: function() {
  242. //获取上个月第一天
  243. var firstdate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1);
  244. //获取上个月最后一天
  245. var date = new Date();
  246. var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate();
  247. var enddate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, day);
  248. //格式化结果
  249. var year = date.getFullYear();
  250. debugger
  251. this.thirdJiDate = getThirdJiDate(year,lastMonth+1);
  252. this.firstDay = getLastMonthStartDate();
  253. this.firstMonth = firstdate.format("yyyy-MM");
  254. this.lastDay = getLastMonthEndDate();
  255. this.lastMonth = enddate.format("yyyy-MM");
  256. this.firstDayYear = getYearStartDate();
  257. this.lastDayYear = getYearEndDate();
  258. this.halfYearStartDate = getHalfYearStartDate();
  259. this.halfYearEndDate = getHalfYearEndDate();
  260. this.yesterdayDate = getYearEndDate();
  261. },
  262. getLastDay(year, month) {
  263. var new_year = year; //取当前的年份
  264. var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定)
  265. if (month > 12) {
  266. //如果当前大于12月,则年份转到下一年
  267. new_month -= 12; //月份减
  268. new_year++; //年份增
  269. }
  270. var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天
  271. return new Date(new_date.getTime() - 1000 * 60 * 60 * 24).getDate(); //获取当月最后一天日期
  272. },
  273. getCity(e){
  274. console.log(e)
  275. var vm = this;
  276. e == vm.townCode?vm.townCode = '':vm.townCode=e;
  277. vm.initData(vm.type,vm.townCode);
  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. }