| | |
| | | <!-- 交通安全形势研判分析 --> |
| | | |
| | | <template> |
| | | <RightTitle title="交通安全形势研判分析"> |
| | | <template #top> |
| | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #content> |
| | | <div class="charts-container"> |
| | | <div id="analysisChart" ref="analysisChart"></div> |
| | | <div class="type-select-container" v-show="isShowSelect"> |
| | | <el-select v-model="typeValue" class="select-style" @change="setConfig"> |
| | | <el-select v-model="typeValue" popper-class="type-select" class="select-style" @change="setConfig"> |
| | | <el-option v-for="item in testData1" :key="item.name" :label="item.name" :value="item.name" /> |
| | | </el-select> |
| | | </div> |
| | |
| | | { itemIndex: 2, name: '街道统计', isActive: false }, |
| | | ]); |
| | | |
| | | // 柱状图数据 |
| | | const testData = ref([ |
| | | { name: '奎光塔街道', state1: 1400, state2: 3533, state3: 2316 }, |
| | | { name: '蒲阳街道', state1: 1820, state2: 4281, state3: 3064 }, |
| | |
| | | { name: '灌口街道', state1: 972, state2: 2124, state3: 1500 }, |
| | | ]); |
| | | |
| | | // 折线数据 |
| | | const testData1 = ref([ |
| | | { |
| | | name: '都江堰市', |
| | |
| | | state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 }, |
| | | state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 } |
| | | }, |
| | | { |
| | | name: '龙池镇', |
| | | state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 }, |
| | | state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 } |
| | | }, |
| | | { |
| | | name: '天马镇', |
| | | state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 }, |
| | | state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 } |
| | | }, |
| | | { |
| | | name: '玉堂街道', |
| | | state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0, '2023-6': 123, '2023-7': 21 }, |
| | | state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 } |
| | | }, |
| | | { |
| | | name: '灌口街道', |
| | | state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 }, |
| | | state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999, '2023-6': 61, '2023-7': 12 } |
| | | }, |
| | | ]); |
| | | |
| | | // 当前选项 |
| | | let acitveData = ref(testData1.value[0]); |
| | | |
| | | |
| | |
| | | ] |
| | | |
| | | }, |
| | | tooltip: {}, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis', |
| | | backgroundColor: '#000001cc', |
| | | borderWidth: 0, |
| | | textStyle: { |
| | | color: '#4D76B0', |
| | | fontSize: 16 |
| | | }, |
| | | axisPointer: { |
| | | type: 'shadow', |
| | | lable: { |
| | | color: '#000000' |
| | | } |
| | | }, |
| | | padding: [20, 25], |
| | | formatter: function (params) { |
| | | let temp = params[0].name + '<br/>'; |
| | | params.forEach(element => { |
| | | temp += element.seriesName + ':' + `<span style="color:${getColor(element.componentIndex)}">${element.value[`state${element.componentIndex + 1}`]}</span>` + '<br/>'; |
| | | }); |
| | | return temp; |
| | | } |
| | | }, |
| | | grid: { |
| | | left: 0, |
| | | right: 0, |
| | |
| | | color: '#4D76B0', |
| | | margin: 15 |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#4d76b033' |
| | | } |
| | | } |
| | | }, |
| | | yAxis: { |
| | | axisLabel: { |
| | | fontSize: 14, |
| | | color: '#4D76B0', |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#4d76b033' |
| | | } |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | }, |
| | | padding: [20, 25], |
| | | formatter: function (params) { |
| | | return params[0].name + '<br/>' + params[0].seriesName + ':' + `<span style="color:rgba(207, 178, 73, 1)">${params[0].value}</span>` + '<br/>' + params[1].seriesName + ':' + `<span style="color:rgba(43, 176, 109, 1)">${params[1].value}</span>`; |
| | | let temp = params[0].name + '<br/>'; |
| | | params.forEach(element => { |
| | | temp += element.seriesName + ':' + `<span style="color:${element.componentIndex === 1 ? '#2bb06d' : '#cfb249'}">${element.value}</span>` + '<br/>'; |
| | | }); |
| | | return temp; |
| | | } |
| | | }, |
| | | grid: { |
| | |
| | | color: '#4D76B0', |
| | | margin: 15 |
| | | }, |
| | | axisTick: false |
| | | |
| | | axisTick: false, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#4d76b033' |
| | | } |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | axisLabel: { |
| | | fontSize: 14, |
| | | color: '#4D76B0' |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#4d76b033' |
| | | } |
| | | } |
| | | }, |
| | | series: [ |
| | |
| | | } |
| | | |
| | | |
| | | // 颜色 |
| | | const getColor = (index) => { |
| | | let colorList = ['#00a8d9', '#cfb249', '#2bb06d']; |
| | | return colorList[index % colorList.length]; |
| | | } |
| | | |
| | | // 挂载 |
| | | onMounted(() => { |
| | | echartObject = echarts.init(analysisChart.value); |
| | |
| | | border: 1px solid rgba(47, 91, 157, 0.8); |
| | | flex-shrink: 0; |
| | | color: #5B83BD; |
| | | font-family: 'PingFang SC'; |
| | | } |
| | | |
| | | .select-active { |
| | |
| | | color: #4481DD; |
| | | } |
| | | } |
| | | </style> |
| | | |
| | | <style lang="scss"> |
| | | |
| | | .el-popper { |
| | | background-color: rgba(21, 56, 105, 0.8) !important; |
| | | border-color: transparent !important; |
| | | } |
| | | .el-popper.is-light .el-popper__arrow::before { |
| | | background-color: rgba(21, 56, 105, 0.8) !important; |
| | | border-color: transparent !important; |
| | | } |
| | | .el-scrollbar__view { |
| | | padding: 0 !important; |
| | | } |
| | | .el-select-dropdown__item { |
| | | color: #5B83BD; |
| | | } |
| | | |
| | | .el-select-dropdown__wrap { |
| | | padding: 0 !important; |
| | | } |
| | | |
| | | .el-select-dropdown__item.hover, |
| | | .el-select-dropdown__item:hover { |
| | | background-color: #203f64 !important; |
| | | } |
| | | </style> |