high-incidence-disease.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. (function() {
  2. //<img src="../images/icon.png" class="icon-img">
  3. //<label class="btn btn-default" :class="{active: index2 == 1}" @click="btnClick2(1)">
  4. // <input type="radio">本季
  5. // </label>
  6. Vue.component('high-incidence-disease', {
  7. template: '<div style="height: 100%;">\
  8. <h4 class="c-b5e1fc c-f16 c-t-center div-common-title">本月高发疾病排行</h4>\
  9. <div v-show="!hasData" class="no-result-panel">\
  10. <div class="no-result-img" style="padding-top:1.09375rem;">\
  11. <img src="../images/noData.png">\
  12. </div>\
  13. <div class="no-result-text">暂无数据!</div>\
  14. </div>\
  15. <div data-toggle="buttons" class="btn-group" v-show="hasData">\
  16. <label class="btn btn-default" :class="{active: index1 == 0}" @click="btnClick1(0)">\
  17. <input type="radio">全部\
  18. </label>\
  19. <label class="btn btn-default" :class="{active: index1 == 1}" @click="btnClick1(1)">\
  20. <input type="radio">住院\
  21. </label>\
  22. <label class="btn btn-default" :class="{active: index1 == 2}" @click="btnClick1(2)">\
  23. <input type="radio">门诊\
  24. </label>\
  25. </div>\
  26. <div data-toggle="buttons" class="btn-group fr mr20" style="margin-left: 0;" v-show="hasData">\
  27. <label class="btn btn-default" :class="{active: index2 == 0}" @click="btnClick2(0)">\
  28. <input type="radio">本月\
  29. </label>\
  30. <label class="btn btn-default" :class="{active: index2 == 2}" @click="btnClick2(2)">\
  31. <input type="radio">本年\
  32. </label>\
  33. </div>\
  34. <div id="div-gaofa-disease-chart" v-show="hasData"></div>\
  35. </div>',
  36. props: ["data"],
  37. data: function() {
  38. return {
  39. index1:0,
  40. index2:0,
  41. gaoBingFaData:null,
  42. isInit:true,
  43. fontSize: 0.007 * window.screen.width,
  44. linkageFilter:"",
  45. hasData:true,
  46. monthData:null,
  47. yearMonth:null,
  48. }
  49. },
  50. mounted: function() {
  51. },
  52. watch:{
  53. data:function(data){
  54. if(data){
  55. this.monthData = data[0];
  56. this.yearData = data[1];
  57. this.initData();
  58. }
  59. }
  60. },
  61. methods: {
  62. btnClick1:function(idx){
  63. this.index1 = idx;
  64. this.initData();
  65. },
  66. btnClick2:function(idx){
  67. this.index2 = idx;
  68. this.initData();
  69. },
  70. initData:function(){//高发疾病
  71. if(this.index2==0){//本月
  72. this.gaoBingFaData = this.monthData.successFlg?this.monthData.obj.viewInfos&&JSON.parse(this.monthData.obj.viewInfos[0].options[0].option):{};
  73. }else if(this.index2==2){//本年
  74. this.gaoBingFaData = this.yearData.successFlg?this.yearData.obj.viewInfos&&JSON.parse(this.yearData.obj.viewInfos[0].options[0].option):{};
  75. }
  76. if(this.gaoBingFaData.xAxis[0].data){
  77. this.hasData = true;
  78. }else{
  79. this.hasData = false;
  80. return false;
  81. }
  82. var zhuYuanData = [],zhuYuanTitle = "";
  83. var xAxisData = (this.gaoBingFaData.xAxis[0].data).reverse()||[];
  84. var menZhenData = (this.gaoBingFaData.series[0].data).reverse()||[];
  85. var menZhenTitle = this.gaoBingFaData.series[0].name||"";
  86. if(this.index1==0){//全部(显示门诊/住院数据叠加)
  87. zhuYuanData = (this.gaoBingFaData.series[1].data).reverse();
  88. zhuYuanTitle = this.gaoBingFaData.series[1].name;
  89. }else if(this.index1==1){//住院(显示单个柱状图)
  90. menZhenData = (this.gaoBingFaData.series[1].data).reverse();
  91. menZhenTitle = this.gaoBingFaData.series[1].name;
  92. zhuYuanData = [];
  93. zhuYuanTitle = "";
  94. }
  95. this.geoFaMainFun(xAxisData,menZhenData,zhuYuanData,menZhenTitle,zhuYuanTitle)
  96. },
  97. geoFaMainFun:function(xAxisData,menZhenData,zhuYuanData,menZhenTitle,zhuYuanTitle){
  98. var vm = this;
  99. var gaoFaChart = echarts.init(document.getElementById('div-gaofa-disease-chart'));
  100. var gaofaOption = {
  101. "tooltip": {
  102. "trigger": "axis"
  103. },
  104. grid: {top: 40, bottom: 30, left: 140,right:80},
  105. "yAxis": [{
  106. "type": "category",
  107. "name": "人次",
  108. "data": xAxisData,
  109. axisPointer: {
  110. type: 'shadow'
  111. },
  112. axisTick: {
  113. show: false
  114. },
  115. axisLine: {
  116. lineStyle: {
  117. color: '#095f8e'
  118. }
  119. },
  120. axisLabel: {
  121. color: '#b5e1fc',
  122. fontSize:vm.fontSize,
  123. interval: 0,
  124. formatter: function(value) {
  125. if (value.length > 8) {
  126. return value.substring(0, 8) + "...";
  127. } else {
  128. return value;
  129. }
  130. }
  131. },
  132. nameTextStyle:{color: '#b5e1fc'},
  133. }],
  134. "xAxis": [{
  135. "type": "value",
  136. axisPointer: {
  137. type: 'shadow'
  138. },
  139. axisTick: {
  140. show: false
  141. },
  142. axisLine: {
  143. lineStyle: {
  144. color: '#095f8e'
  145. }
  146. },
  147. axisLabel: {
  148. color: '#fff',
  149. fontSize:vm.fontSize,
  150. interval:0
  151. },
  152. splitLine: {
  153. show: false // 不显示坐标轴刻度
  154. }
  155. }],
  156. "series": [{
  157. "smooth": true,
  158. "name": menZhenTitle,
  159. "type": "bar",
  160. stack: '高发疾病',
  161. barWidth: 20,
  162. "label": {
  163. show: true,
  164. position: "right",
  165. color: '#b5e1fc'
  166. },
  167. "itemStyle": {
  168. "normal": {
  169. "lineStyle": {
  170. "shadowColor": "rgba(0,0,0,0.4)"
  171. },
  172. color: '#00e6f3',
  173. barBorderRadius: [0, 8, 8, 0],
  174. }
  175. },
  176. "data": menZhenData
  177. },
  178. ]
  179. }
  180. if(zhuYuanData.length>0){
  181. gaofaOption.series[0].label.show = false;
  182. gaofaOption.series[0].itemStyle.normal.color = "#6576e0";
  183. delete gaofaOption.series[0].itemStyle.normal.barBorderRadius;
  184. gaofaOption.series[1] = {
  185. "smooth": true,
  186. "name": zhuYuanTitle,
  187. "type": "bar",
  188. stack: '高发疾病',
  189. "label": {
  190. show: true,
  191. position: "right",
  192. color: '#b5e1fc',
  193. formatter:function(param){
  194. var dataIndex = param.dataIndex,menZhenVal;
  195. _.map(menZhenData,function(item,idx){
  196. if(idx==dataIndex){
  197. menZhenVal = item
  198. }
  199. })
  200. return menZhenVal+"+"+param.value;
  201. },
  202. },
  203. "itemStyle": {
  204. "normal": {
  205. "lineStyle": {
  206. "shadowColor": "rgba(0,0,0,0.4)"
  207. },
  208. barBorderRadius: [0, 8, 8, 0],
  209. color: '#00e6f3'
  210. },
  211. },
  212. "data": zhuYuanData
  213. }
  214. }else{
  215. gaofaOption.series = gaofaOption.series[0];
  216. }
  217. if(gaoFaChart){
  218. gaoFaChart.clear();
  219. }
  220. gaoFaChart.setOption(gaofaOption);
  221. }
  222. },
  223. })
  224. })()