| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- <template>
 
- 	<canvas v-if="canvasId" :id="canvasId" :canvasId="canvasId" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"
 
- 	 @touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd" @error="error">
 
- 	</canvas>
 
- </template>
 
- <script>
 
- 	import uCharts from './u-charts.js';
 
- 	var canvases = {};
 
- 	
 
- 	export default {
 
- 		props: {
 
- 			chartType: {
 
- 				required: true,
 
- 				type: String,
 
- 				default: 'column'
 
- 			},
 
- 			opts: {
 
- 				required: true,
 
- 				type: Object,
 
- 				default () {
 
- 					return null;
 
- 				},
 
- 			},
 
- 			canvasId: {
 
- 				type: String,
 
- 				default: 'u-canvas',
 
- 			},
 
- 			cWidth: {
 
- 				default: 375,
 
- 			},
 
- 			cHeight: {
 
- 				default: 250,
 
- 			},
 
- 			pixelRatio: {
 
- 				type: Number,
 
- 				default: 1,
 
- 			},
 
- 		},
 
- 		mounted() {
 
- 			this.init();
 
- 		},
 
- 		methods: {
 
- 			init() {
 
- 				switch (this.chartType) {
 
- 					case 'column':
 
- 						this.initColumnChart();
 
- 						break;
 
- 					case 'line':
 
- 						this.initLineChart();
 
- 						break;
 
- 					default:
 
- 						break;
 
- 				}
 
- 			},
 
- 			initColumnChart() {
 
- 				canvases[this.canvasId] = new uCharts({
 
- 					$this: this,
 
- 					canvasId: this.canvasId,
 
- 					type: 'column',
 
- 					legend: true,
 
- 					fontSize: 11,
 
- 					background: '#FFFFFF',
 
- 					pixelRatio: this.pixelRatio,
 
- 					animation: true,
 
- 					categories: this.opts.categories,
 
- 					series: this.opts.series,
 
- 					enableScroll: true,
 
- 					xAxis: {
 
- 						disableGrid: true,
 
- 						itemCount: 4,
 
- 						scrollShow: true
 
- 					},
 
- 					yAxis: {
 
- 						//disabled:true
 
- 					},
 
- 					dataLabel: true,
 
- 					width: this.cWidth * this.pixelRatio,
 
- 					height: this.cHeight * this.pixelRatio,
 
- 					extra: {
 
- 						column: {
 
- 							type: 'group',
 
- 						}
 
- 					}
 
- 				});
 
- 			},
 
- 			initLineChart() {
 
- 				canvases[this.canvasId] = new uCharts({
 
- 					$this: this,
 
- 					canvasId: this.canvasId,
 
- 					type: 'line',
 
- 					fontSize: 11,
 
- 					legend: true,
 
- 					dataLabel: false,
 
- 					dataPointShape: true,
 
- 					background: '#FFFFFF',
 
- 					pixelRatio: this.pixelRatio,
 
- 					categories: this.opts.categories,
 
- 					series: this.opts.series,
 
- 					animation: true,
 
- 					enableScroll: true,
 
- 					xAxis: {
 
- 						type: 'grid',
 
- 						gridColor: '#CCCCCC',
 
- 						gridType: 'dash',
 
- 						dashLength: 8,
 
- 						itemCount: 4,
 
- 						scrollShow: true
 
- 					},
 
- 					yAxis: {
 
- 						gridType: 'dash',
 
- 						gridColor: '#CCCCCC',
 
- 						dashLength: 8,
 
- 						splitNumber: 5,
 
- 						min: 10,
 
- 						max: 180,
 
- 						format: (val) => {
 
- 							return val.toFixed(0) + '元'
 
- 						}
 
- 					},
 
- 					width: this.cWidth * this.pixelRatio,
 
- 					height: this.cHeight * this.pixelRatio,
 
- 					extra: {
 
- 						line: {
 
- 							type: 'straight'
 
- 						}
 
- 					}
 
- 				});
 
- 			},
 
- 			// 这里仅作为示例传入两个参数,cid为canvas-id,newdata为更新的数据,需要更多参数请自行修改
 
- 			changeData(cid,newdata) {
 
- 				canvases[cid].updateData({
 
- 					series: newdata.series,
 
- 					categories: newdata.categories
 
- 				});
 
- 			},
 
- 			touchStart(e) {
 
- 				canvases[this.canvasId].showToolTip(e, {
 
- 					format: function(item, category) {
 
- 						return category + ' ' + item.name + ':' + item.data
 
- 					}
 
- 				});
 
- 				canvases[this.canvasId].scrollStart(e);
 
- 			},
 
- 			touchMove(e) {
 
- 				canvases[this.canvasId].scroll(e);
 
- 			},
 
- 			touchEnd(e) {
 
- 				canvases[this.canvasId].scrollEnd(e);
 
- 			},
 
- 			error(e) {
 
- 				console.log(e)
 
- 			}
 
- 		},
 
- 	};
 
- </script>
 
- <style scoped>
 
- 	.charts {
 
- 		width: 100%;
 
- 		height: 100%;
 
- 		flex: 1;
 
- 		background-color: #FFFFFF;
 
- 	}
 
- </style>
 
 
  |