| | |
| | | <div class="title">每日8时超汛限</div> |
| | | </div> |
| | | <div class="content-box chart-box"> |
| | | <div id="stackBarChart" style="width: 100%; height: 213px"></div> |
| | | <day-eight-bar></day-eight-bar> |
| | | <div class="scroll-table"> |
| | | <div class="scroll-table-head flex"> |
| | | <div>名称</div> |
| | |
| | | <div class="title">水库数量分布</div> |
| | | </div> |
| | | <div class="content-box"> |
| | | <div id="barChart_01" style="width: 100%; height: 220px"></div> |
| | | <reservoir-count-bar></reservoir-count-bar> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <div class="title">水库规模分布</div> |
| | | </div> |
| | | <div class="content-box"> |
| | | <div id="barChart_02" style="width: 100%; height: 210px"></div> |
| | | <reservoir-size-bar></reservoir-size-bar> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <div class="title">降雨等级分布</div> |
| | | </div> |
| | | <div class="content-box"> |
| | | <div id="pie-chart" style="width: 100%; height: 210px"></div> |
| | | <rain-level-pie></rain-level-pie> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import dayEightBar from "./components/dayEightBar.vue"; |
| | | import reservoirCountBar from './components/reservoirCountBar.vue'; |
| | | import reservoirSizeBar from './components/reservoirSizeBar.vue'; |
| | | import rainLevelPie from "./components/rainLevelPie.vue"; |
| | | import vueSeamlessScroll from "vue-seamless-scroll"; |
| | | |
| | | |
| | | export default { |
| | | components: { vueSeamlessScroll }, |
| | | components: { vueSeamlessScroll, dayEightBar, reservoirCountBar, reservoirSizeBar, rainLevelPie }, |
| | | |
| | | data() { |
| | | return { |
| | |
| | | created() {}, |
| | | |
| | | mounted() { |
| | | let stackBarData = { |
| | | id: 'stackBarChart', |
| | | xAxisData: ["武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市"], |
| | | xAxisRotate: 30, |
| | | title: '总数 39座', |
| | | showLegend: true, |
| | | yAxisName: '数量', |
| | | series: [ |
| | | { |
| | | name: "大型", |
| | | type: "bar", |
| | | stack: "one", |
| | | barWidth: 12, |
| | | data: ["20", "30", "15", "1", "10", "8", "5", "18"], |
| | | showBackground: true, |
| | | backgroundStyle: { |
| | | color: "rgba(187,230,245,.3)", |
| | | } |
| | | }, |
| | | { |
| | | name: "中型", |
| | | type: "bar", |
| | | stack: "one", |
| | | data: ["2", "6", "5", "10", "10", "8", "5", "1"], |
| | | }, |
| | | { |
| | | name: "小型", |
| | | type: "bar", |
| | | stack: "one", |
| | | data: ["3", "5", "1", "10", "3", "9", "15", "1"], |
| | | }, |
| | | ], |
| | | } |
| | | this.createStackBarChart(stackBarData); |
| | | let barData_01 = { |
| | | id: 'barChart_01', |
| | | xAxisData: ["武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市"], |
| | | xAxisRotate: 30, |
| | | title: '', |
| | | showLegend: false, |
| | | yAxisName: '座', |
| | | series: [ |
| | | { |
| | | name: "水库数量", |
| | | type: "bar", |
| | | color: '#63B7F9', |
| | | barWidth: 12, |
| | | data: ["20", "30", "15", "1", "10", "8", "5", "18"], |
| | | showBackground: true, |
| | | backgroundStyle: { |
| | | color: "rgba(187,230,245,.3)", |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | this.createStackBarChart(barData_01); |
| | | let barData_02 = { |
| | | id: 'barChart_02', |
| | | xAxisData: ["大(1)型", "大(2)型", "中型", "小(1)型", "小(2)型"], |
| | | xAxisRotate: 0, |
| | | title: '', |
| | | showLegend: false, |
| | | yAxisName: '座', |
| | | series: [ |
| | | { |
| | | name: "水库规模", |
| | | type: "bar", |
| | | color: '#81E79C', |
| | | barWidth: 12, |
| | | data: ["20", "30", "15", "1", "10", "8", "5", "18"], |
| | | showBackground: true, |
| | | backgroundStyle: { |
| | | color: "rgba(187,230,245,.3)", |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | this.createStackBarChart(barData_02); |
| | | this.createPieChart() |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | createStackBarChart(chartData) { |
| | | const myChart = this.$echarts.init( |
| | | document.getElementById(chartData.id) |
| | | ); |
| | | // 指定图表的配置项和数据 |
| | | var option = { |
| | | title: { |
| | | show: chartData.title != '', |
| | | text: chartData.title, |
| | | top: 10, |
| | | right: 20, |
| | | textStyle: { |
| | | color: "#BDD8F9", |
| | | fontSize: 16, |
| | | fontWeight: 400, |
| | | }, |
| | | }, |
| | | legend: { |
| | | show: chartData.showLegend, |
| | | top: 10, |
| | | itemWidth: 8, |
| | | itemHeight: 8, |
| | | itemGap: 20, |
| | | left: "center", |
| | | textStyle: { |
| | | color: "#B5C5D4", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow" |
| | | }, |
| | | formatter: function (e) { |
| | | if (e.length > 0) { |
| | | var t = "".concat(e[0].name + " <br/>"); |
| | | e.forEach((item) => { |
| | | t += item.marker + item.seriesName + ": " + item.value + " 座 <br/>" |
| | | }) |
| | | return t |
| | | } |
| | | } |
| | | }, |
| | | xAxis: { |
| | | data: chartData.xAxisData, |
| | | name: "", |
| | | axisLine: { |
| | | onZero: true, |
| | | lineStyle: { |
| | | color: "rgba(186, 198, 208, .4)", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | rotate: chartData.xAxisRotate, |
| | | interval: 0, |
| | | fontSize: 14, |
| | | color: "#B5C5D4", |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | name: chartData.yAxisName, |
| | | axisLabel: { |
| | | fontSize: 13, |
| | | color: "#B5C5D4", |
| | | }, |
| | | nameTextStyle: { |
| | | fontSize: 14, |
| | | color: "#B5C5D4", |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: ["#344B64"], |
| | | type: "dashed", |
| | | width: 2, |
| | | }, |
| | | }, |
| | | }, |
| | | grid: { |
| | | left: 20, |
| | | right: 15, |
| | | top: 50, |
| | | bottom: 7, |
| | | containLabel: true, |
| | | }, |
| | | series: chartData.series, |
| | | }; |
| | | |
| | | myChart.setOption(option); |
| | | }, |
| | | // 建言献策分析图表 |
| | | createPieChart() { |
| | | let data = [ |
| | | { |
| | | name: '特大暴雨', |
| | | value: 59 |
| | | }, |
| | | { |
| | | name: '大暴雨', |
| | | value: 20 |
| | | }, |
| | | { |
| | | name: '暴雨', |
| | | value: 281 |
| | | } |
| | | , |
| | | { |
| | | name: '大雨', |
| | | value: 59 |
| | | } |
| | | , |
| | | { |
| | | name: '中雨', |
| | | value: 29 |
| | | } |
| | | , |
| | | { |
| | | name: '小雨', |
| | | value: 281 |
| | | } |
| | | , |
| | | { |
| | | name: '无雨', |
| | | value: 281 |
| | | } |
| | | ] |
| | | let total = data.reduce((prev, curr) => prev + curr.value, 0) |
| | | let dom = document.getElementById("pie-chart"); |
| | | let pieChart = this.$echarts.init(dom); |
| | | let option = { |
| | | legend: { |
| | | orient: 'vertical', |
| | | left: '50%', |
| | | top: 15, |
| | | width: '100%', |
| | | itemGap: 10, |
| | | itemWidth: 8, |
| | | itemHeight: 8, |
| | | formatter: function (name) { |
| | | let value = 0 |
| | | data.forEach((item) => { |
| | | if(item.name == name) { |
| | | value = item.value |
| | | } |
| | | }) |
| | | return `${name} ${value}个 ${((value*100)/total).toFixed(2)}%`; |
| | | }, |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 16, |
| | | fontFamily: 'Roboto-Bold', |
| | | } |
| | | }, |
| | | radar: [ |
| | | { |
| | | indicator: [ |
| | | { text: 'Indicator1' }, |
| | | { text: 'Indicator2' }, |
| | | { text: 'Indicator3' }, |
| | | { text: 'Indicator4' }, |
| | | { text: 'Indicator5' } |
| | | ], |
| | | center: ['25%', '50%'], |
| | | radius: '80%', |
| | | startAngle: 90, |
| | | splitNumber: 1, |
| | | shape: 'circle', |
| | | axisName: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | areaStyle: { |
| | | color: ['rgba(0, 0, 0, 0.2)'], |
| | | } |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: 'rgba(211, 253, 250, 0)' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: 'rgba(51, 114, 210, .5)' |
| | | } |
| | | } |
| | | }, |
| | | ], |
| | | color: [ |
| | | '#DB983F', |
| | | '#5D4EC5', |
| | | '#379CF2', |
| | | '#81E79C', |
| | | '#AA8A6E', |
| | | '#71E4D5', |
| | | '#CDE5FF', |
| | | ], |
| | | series: [ |
| | | { |
| | | name: '降雨等级', |
| | | type: 'pie', |
| | | radius: ['50%', '65%'], |
| | | center: ['25%', '50%'], |
| | | label: { |
| | | show: true, |
| | | position: 'center', |
| | | color: '#D4E8F8', |
| | | fontSize: 34, |
| | | fontFamily: 'Roboto-Bold', |
| | | formatter: () => { |
| | | return total; |
| | | }, |
| | | }, |
| | | labelLine: { |
| | | show: false |
| | | }, |
| | | itemStyle: { |
| | | borderRadius: 0 |
| | | }, |
| | | data |
| | | } |
| | | ] |
| | | }; |
| | | pieChart.setOption(option); |
| | | }, |
| | | |
| | | }, |
| | | |
| | | destroyed() {}, |
| | | }; |
| | | </script> |
| | | </script> |