| | |
| | | <template> |
| | | <div id="main"> |
| | | <div id="main" style="height: 460px;margin-bottom: 15px"> |
| | | <basic-container> |
| | | <v-chart :options="option" ref="chart" style="width: 100%;"></v-chart> |
| | | <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart> |
| | | <div style="display: inline-block;float: right;margin-bottom: 10px;margin-right: 60px"> |
| | | <el-button size="small" type="danger" plain @click="delHandler">删除</el-button> |
| | | </div> |
| | | </basic-container> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import 'echarts' |
| | | import 'echarts/lib/chart/line'; |
| | | import 'echarts/lib/component/tooltip'; |
| | | import 'echarts/lib/component/title'; |
| | | import 'echarts/lib/component/legend'; |
| | | import 'echarts/lib/chart/line' |
| | | import 'echarts/lib/component/tooltip' |
| | | import 'echarts/lib/component/title' |
| | | import 'echarts/lib/component/legend' |
| | | import {deleteChartId} from "@/api/statistic/chart" |
| | | |
| | | export default { |
| | | name: "statisticPage", |
| | | name: "lineChart", |
| | | props: { |
| | | lineData: { |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | chartName: { |
| | | type: String, |
| | | default: "" |
| | | }, |
| | | btmname :{ |
| | | type: String |
| | | } |
| | | }, |
| | | watch: { |
| | | lineData: { |
| | | immediate: true, |
| | | handler(newval, oldval) { |
| | | if (newval) { |
| | | const series = newval.map((data, index) => ({ |
| | | name: index === 0 ? '总量' : '新增', |
| | | type: 'line', |
| | | smooth: true, |
| | | stack: index === 0 ? 'Total' : 'total2', // 根据 index 区分总量和新增的堆叠情况 |
| | | label: { |
| | | show: true, |
| | | textStyle: { |
| | | fontSize: 14 |
| | | } |
| | | }, |
| | | data: data.map(value => ({value})) |
| | | })); |
| | | |
| | | this.chartOptions.series = series; |
| | | } |
| | | } |
| | | }, |
| | | chartName: { |
| | | handler(newval, oldval) { |
| | | if (newval) { |
| | | this.chartOptions.title.text = newval + "数据统计" |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep: true |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | option: { |
| | | color: ['red','black'], |
| | | legend: { |
| | | data: ['图例1', '图例2', '图例3'], |
| | | }, |
| | | dataset: [ |
| | | { |
| | | id: 'dataset_raw', |
| | | source: [ |
| | | { month: 1, total: 1000, newly: 800 }, |
| | | { month: 2, total: 5000, newly: 1000 }, |
| | | { month: 3, total: 1800, newly: 1400 }, |
| | | { month: 4, total: 1500, newly: 1200 }, |
| | | { month: 5, total: 1000, newly: 1200 }, |
| | | { month: 6, total: 1500, newly: 1200 }, |
| | | { month: 7, total: 1500, newly: 1200 }, |
| | | { month: 8, total: 1500, newly: 1000 }, |
| | | { month: 9, total: 1500, newly: 1200 }, |
| | | { month: 10, total: 1500, newly: 1200 }, |
| | | { month: 11, total: 1500, newly: 1200 }, |
| | | { month: 12, total: 1500, newly: 1200 }, |
| | | ], |
| | | }, |
| | | ], |
| | | chartOptions: { |
| | | color: ['#2eadd6', '#FFA500'], |
| | | title: { |
| | | text: '主数据统计分析', |
| | | left:'center', |
| | | textAlign:'center' |
| | | text: '' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | trigger: 'axis' |
| | | }, |
| | | legend: { |
| | | data: ['总量', '新增'], |
| | | textStyle: { |
| | | fontSize: 14 // 调整字体大小 |
| | | } |
| | | }, |
| | | xAxis: { |
| | | boundaryGap: true, |
| | | type: 'category', |
| | | nameLocation: 'middle', |
| | | name:'month', |
| | | // data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] // 月份数据 |
| | | data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], |
| | | }, |
| | | yAxis: { |
| | | name: 'Number', |
| | | type: 'value', |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'line', |
| | | datasetId: 'dataset_raw', |
| | | showSymbol: false, |
| | | encode: { |
| | | x: 'month', |
| | | y: 'total', |
| | | itemName: 'month', |
| | | tooltip: ['total'], |
| | | }, |
| | | }, |
| | | { |
| | | type: 'line', |
| | | datasetId: 'dataset_raw', |
| | | showSymbol: false, |
| | | encode: { |
| | | x: 'month', |
| | | y: 'newly', |
| | | itemName: 'month', |
| | | tooltip: ['newly'], |
| | | }, |
| | | }, |
| | | ], |
| | | series: [] |
| | | } |
| | | }; |
| | | }, |
| | | mounted() { |
| | | import('echarts').then((echarts) => { |
| | | // console.log(echarts) |
| | | this.$nextTick(() => { |
| | | const chartDom = this.$refs.chart.$el; |
| | | const myChart = echarts.init(chartDom); |
| | | myChart.setOption(this.option); |
| | | }); |
| | | }); |
| | | }, |
| | | } |
| | | methods:{ |
| | | delHandler(){ |
| | | deleteChartId({btmname:this.btmname,chartId:'0'}).then(res=>{ |
| | | this.$message.success(this.chartName+'折线图,删除成功!') |
| | | this.$emit('refresh'); |
| | | }).catch(error=>{ |
| | | this.$message.error(error) |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | <style lang="scss" scoped> |
| | | #chart { |
| | | width: 100%; |
| | | height: 400px; |
| | | } |
| | | |
| | | </style> |