10 changed files with 258 additions and 56 deletions
			
			
		| @ -0,0 +1,212 @@ | |||
| <template> | |||
|   <div v-loading="loading"> | |||
|     <div :id="idName" ref="yanyaRef" :style="{ height: height, width: width }" /> | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import moment from 'moment/moment' | |||
| 
 | |||
| export default { | |||
|   name: 'EyeAxis', | |||
|   props: { | |||
|     idName: { type: String, default: 'chart' }, | |||
|     width: { type: String, default: '100%' }, | |||
|     height: { type: String, default: '200px' }, | |||
|     desc: { type: String, default: '' }, | |||
|     patientId: { | |||
|       type: String | |||
|     } | |||
|   }, | |||
|   data() { | |||
|     return { | |||
|       loading: false, | |||
|       date: [], | |||
|       typeList: { | |||
|         OD: [], | |||
|         OS: [], | |||
|         typeNull: [] | |||
|       }, | |||
|       chartData: [], | |||
|       legendData: [], | |||
|       seriesData: [], | |||
|       disabled: false | |||
|     } | |||
|   }, | |||
|   mounted() { | |||
|     this.queryAxisData() | |||
|   }, | |||
|   methods: { | |||
|     queryAxisData() { | |||
|       this.loading = true | |||
|       this.$http.get('hospital/notice/getAllSecDiagInfoByPid', { params: { | |||
|         patientId: this.patientId | |||
|       }}).then(res => { | |||
|         this.loading = false | |||
|         this.chartData = res.data.data.slAndYzList | |||
|         this.initFun() | |||
|       }) | |||
|     }, | |||
|     initFun() { | |||
|       this.date = [] | |||
|       this.typeList = { | |||
|         OD: [], | |||
|         OS: [], | |||
|         typeNull: [] | |||
|       } | |||
|       this.legendData = [] | |||
|       this.seriesData = [] | |||
|       if (this.chartData && this.chartData.length > 0) { | |||
|         this.disabled = false | |||
|         this.chartData.forEach(item => { | |||
|           item.osIol = item.osIol.replace('mm', '') | |||
|           item.odIol = item.odIol.replace('mm', '') | |||
|           this.date.push(moment(item.examTime).format('l')) | |||
|           this.typeList.OD.push([item.examTime, item.odIol]) | |||
|           this.legendData[0] = 'OD' | |||
|           this.typeList.OS.push([item.examTime, item.osIol]) | |||
|           this.legendData[1] = 'OS' | |||
|         }) | |||
|       } else { | |||
|         this.disabled = true | |||
|       } | |||
|       this.$nextTick(() => { | |||
|         this.visionFun() | |||
|       }) | |||
|     }, | |||
|     visionFun() { | |||
|       // 基于准备好的dom,初始化echarts实例 | |||
|       const yanya = this.$echarts.init(document.getElementById(this.idName)) | |||
|       var colors = ['#4462FF', '#0DB760', '#000000'] | |||
|       Object.keys(this.typeList).forEach((item, index) => { | |||
|         if (this.typeList[item].length > 0) { | |||
|           this.seriesData.push({ | |||
|             name: item, | |||
|             type: 'line', | |||
|             // stack: index, | |||
|             data: this.typeList[item], | |||
|             label: { | |||
|               show: true, | |||
|               position: item === 'OD' ? [-25, -30] : [10, -5], | |||
|               backgroundColor: item === 'OD' ? '#4a6bff' : '#0db760', | |||
|               padding: [6, 6], | |||
|               color: '#ffffff', | |||
|               // color: 'rgba(24, 24, 24, 0.1)', | |||
|               borderRadius: 10 | |||
|             }, | |||
|             smooth: true, | |||
|             itemStyle: { | |||
|               color: colors[index] | |||
|             }, | |||
|             symbolSize: 10 | |||
|           }) | |||
|         } | |||
|       }) | |||
|       // 基于准备好的dom,初始化echarts实例 | |||
|       yanya.setOption({ | |||
|         title: { | |||
|           text: this.desc, | |||
|           textStyle: { | |||
|             'color': '#000000' | |||
|           }, | |||
|           left: 10 | |||
|         }, | |||
|         tooltip: { | |||
|           //   trigger: 'axis' | |||
|           backgroundColor: '#ece6e6', | |||
|           textStyle: { | |||
|             color: '#000000' // 设置文字颜色 | |||
|           }, | |||
|           formatter(params) { | |||
|             return params.seriesName + '<br/>' + params.data[0] + '   ' + params.data[1] | |||
|           } | |||
| 
 | |||
|         }, | |||
|         legend: { | |||
|           data: this.legendData, | |||
|           icon: 'pin', | |||
|           textStyle: { | |||
|             color: '#000000' | |||
|           }, | |||
|           right: 30 | |||
|         }, | |||
|         dataZoom: [ | |||
|           { | |||
|             type: 'inside', | |||
|             disabled: this.disabled, | |||
|             start: 0, | |||
|             end: 100 | |||
|           } | |||
|         ], | |||
|         grid: { | |||
|           top: 55, | |||
|           left: 50, | |||
|           right: 50, | |||
|           bottom: 30, | |||
|           containLabel: false | |||
|         }, | |||
|         xAxis: { | |||
|           type: 'time', | |||
|           boundaryGap: false, | |||
|           axisLabel: { | |||
|             show: true, | |||
|             showMaxLabel: true, | |||
|             textStyle: { | |||
|               color: '#000000' | |||
|             }, | |||
|             formatter: function(value, index) { | |||
|               const showD = moment(value).format('YYYY/M/D') | |||
|               return showD | |||
|             } | |||
|           }, | |||
|           axisLine: { | |||
|             lineStyle: { | |||
|               color: 'rgba(24, 24, 24, 0.1)' | |||
|             } | |||
|           }, | |||
|           // 显示网格线 | |||
|           splitLine: { | |||
|             show: true | |||
|           } | |||
|         }, | |||
|         yAxis: { | |||
|           type: 'value', | |||
|           min: function(value) { // 取最小值向下取整为最小刻度 | |||
|             return Math.floor(value.min) | |||
|           }, | |||
|           max: function(value) { // 取最大值向上取整为最大刻度 | |||
|             return Math.ceil(value.max) | |||
|           }, | |||
|           splitNumber: 1, // 分割刻度 | |||
|           axisLabel: { | |||
|             show: true, | |||
|             textStyle: { | |||
|               color: '#000000' | |||
|             } | |||
|           }, | |||
|           axisLine: { | |||
|             lineStyle: { | |||
|               color: 'rgba(24, 24, 24, 0.1)' | |||
|             } | |||
|           } | |||
|         }, | |||
|         series: [ | |||
|           ...this.seriesData | |||
|         ] | |||
|       }) | |||
|       // 随窗口变化 | |||
|       window.addEventListener('resize', () => { yanya.resize() }) | |||
|       //  随外层div的大小变化自适应 | |||
|       this.$erd.listenTo(this.$refs.yanyaRef, () => { | |||
|         this.$nextTick(() => { | |||
|           yanya.resize() | |||
|         }) | |||
|       }) | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
| 
 | |||
| </style> | |||
					Loading…
					
					
				
		Reference in new issue