黔西南大屏
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="aiDvTable" :class="'aiDvTable-' + theme">
|
||||
<div class="header">
|
||||
<div class="header" :style="headerStyle">
|
||||
<span
|
||||
v-for="(item, index) in header"
|
||||
:key="index"
|
||||
@@ -20,6 +20,7 @@
|
||||
:style="{
|
||||
color: config[i].color,
|
||||
textAlign: config[i].align,
|
||||
fontSize: config[i].fontSize,
|
||||
width: config[i].width ? config[i].width + 'px' : '',
|
||||
flex: config[i].width ? 'inherit' : 1
|
||||
}">
|
||||
@@ -41,6 +42,11 @@
|
||||
default: () => []
|
||||
},
|
||||
|
||||
headerStyle: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
|
||||
isShowIndex: {
|
||||
type: String,
|
||||
default: '0'
|
||||
@@ -65,8 +71,7 @@
|
||||
data () {
|
||||
return {
|
||||
header: [],
|
||||
body: [],
|
||||
colorIndex: ''
|
||||
body: []
|
||||
}
|
||||
},
|
||||
|
||||
@@ -144,14 +149,14 @@
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
font-size: 16px;
|
||||
padding: 0 16px;
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
background: rgba(70, 70, 70, 0.35);
|
||||
|
||||
span {
|
||||
flex: 1;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<h2>单位成员关系人数</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 210px; width: 100%;"
|
||||
style="height: 220px; width: 100%;"
|
||||
:ref="'chart2'"
|
||||
:data="lineData1"
|
||||
:ops="barChart8">
|
||||
@@ -93,7 +93,7 @@
|
||||
<h2>群人数规模分布</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 160px; width: 100%;"
|
||||
style="height: 180px; width: 100%; margin-top: 20px;"
|
||||
:ref="'chart2'"
|
||||
:data="lineData1"
|
||||
:ops="pieChart">
|
||||
@@ -114,7 +114,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<DvMap style="width: 100%; height: 420px;"></DvMap>
|
||||
<DvMap style="width: 100%; height: 356px;"></DvMap>
|
||||
</div>
|
||||
<div class="right-middle__middle">
|
||||
<div class="wrapper">
|
||||
@@ -135,7 +135,7 @@
|
||||
<h2>近期成员使用分布</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 210px; width: 100%;"
|
||||
style="height: 220px; width: 100%;"
|
||||
:ref="'chart'"
|
||||
:data="lineData"
|
||||
:ops="lineChart1">
|
||||
@@ -144,7 +144,7 @@
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
<div class="right-right">
|
||||
<AiDvPanel style="width: 100%" border="border6" title="微警务群概况">
|
||||
<AiDvPanel style="height: auto;" border="border6" title="微警务群概况">
|
||||
<div class="right-left__total AppQxnDv-total">
|
||||
<div class="item" v-for="(item, index) in 4" :key="index">
|
||||
<h2>群动态概况</h2>
|
||||
@@ -180,29 +180,19 @@
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
</AiDvPanel>
|
||||
<AiDvPanel style="width: 100%; height: 340px;" border="border6" title="群动态多维度排行">
|
||||
<AiDvPanel class="bottom" style="" border="border6" title="群动态多维度排行">
|
||||
<AiDvTable
|
||||
:heigth="'100%'"
|
||||
stripe
|
||||
:isShowIndex="true"
|
||||
:config="[{
|
||||
width: '',
|
||||
color: '',
|
||||
align: ''
|
||||
},
|
||||
{
|
||||
width: '',
|
||||
color: '',
|
||||
align: ''
|
||||
},
|
||||
{
|
||||
width: '',
|
||||
color: '',
|
||||
align: ''
|
||||
}]"
|
||||
:data="[{name: '列1', v: 23, v2: 3},
|
||||
{name: '列2', v: 12, v2: 4},
|
||||
{name: '列2', v: 12, v2: 4}]">
|
||||
stripe="1"
|
||||
:headerStyle="{
|
||||
color: '#02FEFF',
|
||||
fontSize: '12px',
|
||||
fontWeight: '600',
|
||||
backgroundColor: 'rgba(33, 180, 253, 0.1)'
|
||||
}"
|
||||
isShowIndex="1"
|
||||
:config="tableConfig"
|
||||
:data="tableData">
|
||||
</AiDvTable>
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
@@ -265,12 +255,114 @@
|
||||
"v1": 98
|
||||
}
|
||||
],
|
||||
tableData: [
|
||||
{
|
||||
name: '姓名',
|
||||
v1: '宗梦瑞',
|
||||
v2: '宗梦瑞',
|
||||
v3: '宗梦瑞',
|
||||
v4: '宗梦瑞',
|
||||
v5: '宗梦瑞',
|
||||
v6: '宗梦瑞',
|
||||
v7: '宗梦瑞',
|
||||
v8: '宗梦瑞',
|
||||
v9: '宗梦瑞',
|
||||
v10: '宗梦瑞'
|
||||
},
|
||||
{
|
||||
name: '单位',
|
||||
v1: '宗梦瑞',
|
||||
v2: '宗梦瑞',
|
||||
v3: '宗梦瑞',
|
||||
v4: '宗梦瑞',
|
||||
v5: '宗梦瑞',
|
||||
v6: '宗梦瑞',
|
||||
v7: '宗梦瑞',
|
||||
v8: '宗梦瑞',
|
||||
v9: '宗梦瑞',
|
||||
v10: '宗梦瑞'
|
||||
},
|
||||
{
|
||||
name: '群数量',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群人员',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '新增群人员',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '有消息的群',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群聊人数',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群消息总数',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
}
|
||||
],
|
||||
lineChart1: {
|
||||
legend: { show: false },
|
||||
grid: {
|
||||
left: 50,
|
||||
right: '2%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
backgroundColor: 'rgba(0, 102, 154, 0.65)',
|
||||
@@ -351,12 +443,16 @@
|
||||
}
|
||||
},
|
||||
barChart: {
|
||||
xAxis: {
|
||||
type: "category",
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
},
|
||||
yAxis: {
|
||||
nameGap: 23,
|
||||
minInterval: 1,
|
||||
splitLine: { lineStyle: { color: 'rgba(255,255,255,.2)', type: 'dashed' } },
|
||||
axisLabel: { color: '#C3C4C4' },
|
||||
axisPointer: { show: false }
|
||||
axisPointer: { show: false },
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12}
|
||||
},
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
@@ -435,13 +531,14 @@
|
||||
right: '6%',
|
||||
bottom: '6%'
|
||||
},
|
||||
color: ['#59F7CA', '#62F2F8', '#F2B949', '#81C4E4', '#D8F2FD'],
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: ['50%', '66%'],
|
||||
labelLine:{
|
||||
normal:{
|
||||
length: 0.01,
|
||||
length: 2,
|
||||
lineStyle: {
|
||||
color: '#526D7A'
|
||||
}
|
||||
@@ -472,6 +569,20 @@
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
tableConfig () {
|
||||
return this.tableData.map((v, index) => {
|
||||
return {
|
||||
color: '#d0e1e8',
|
||||
textAlign: '',
|
||||
width: index === 0 ? '100' : '',
|
||||
fontSize: '14px',
|
||||
flex: ''
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
Hex2RGBA(color, alpha = 1) {
|
||||
let hex = 0;
|
||||
@@ -697,8 +808,15 @@
|
||||
}
|
||||
|
||||
.right-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
.bottom {
|
||||
padding-top: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.right-right__top {
|
||||
display: flex;
|
||||
margin-bottom: 16px;
|
||||
|
||||
@@ -1,22 +1,902 @@
|
||||
<template>
|
||||
<div class="AppQxnEventDv"></div>
|
||||
<div class="AppQxnDv">
|
||||
<div class="left">
|
||||
<AiDvPanel style="width: 100%" border="border6" title="单位列表">
|
||||
<div class="left-list">
|
||||
<div class="left-item" v-for="(item, index) in 16" :key="index">
|
||||
<i>{{ index + 1 }}</i>
|
||||
<div class="left-item__top">
|
||||
<h2>黔西南州公安局</h2>
|
||||
<el-select v-model="value" size="mini" placeholder="请选择派出所">
|
||||
<el-option label="南京派出所" value="1"></el-option>
|
||||
<el-option label="北京派出所" value="2"></el-option>
|
||||
<el-option label="长安派出所" value="3"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="left-item__bottom">
|
||||
<span>居民数量:17246</span>
|
||||
<span>成员:2057</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="right-left">
|
||||
<AiDvPanel style="width: 100%" border="border6" title="微警务群概况">
|
||||
<div class="right-left__total AppQxnDv-total">
|
||||
<div class="item" v-for="(item, index) in 4" :key="index">
|
||||
<h2>全部人员数</h2>
|
||||
<div class="item-bottom">
|
||||
<span>726,079</span>
|
||||
<i>人</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>增长情况</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 200px; width: 500px;"
|
||||
:ref="'chart'"
|
||||
:data="lineData"
|
||||
:ops="lineChart1">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
<div class="right-left__middle">
|
||||
<div class="left">
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>覆盖率</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="60"></DoughnutChart>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>群标签化率</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="95"></DoughnutChart>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>群标签情况</h2>
|
||||
<el-select v-model="value" style="width: 92px" size="mini" placeholder="专属">
|
||||
<el-option label="XXX派出所" value="1"></el-option>
|
||||
<el-option label="XXX派出所" value="2"></el-option>
|
||||
<el-option label="XXX派出所" value="3"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 230px; width: 245px;"
|
||||
:ref="'chart2'"
|
||||
:data="lineData1"
|
||||
:ops="barChart8">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-left__bottom">
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>单位成员关系人数</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 220px; width: 100%;"
|
||||
:ref="'chart2'"
|
||||
:data="lineData1"
|
||||
:ops="barChart8">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>群人数规模分布</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 180px; width: 100%; margin-top: 20px;"
|
||||
:ref="'chart2'"
|
||||
:data="lineData1"
|
||||
:ops="pieChart">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
</div>
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
<div class="right-middle">
|
||||
<AiDvPanel style="width: 100%" border="border6" title="综合概况图">
|
||||
<div class="right-left__total AppQxnDv-total">
|
||||
<div class="item" v-for="(item, index) in 5" :key="index">
|
||||
<h2>分局数量</h2>
|
||||
<div class="item-bottom">
|
||||
<span>726,079</span>
|
||||
<i>人</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<DvMap style="width: 100%; height: 356px;"></DvMap>
|
||||
</div>
|
||||
<div class="right-middle__middle">
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>成员激活</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="95"></DoughnutChart>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>日均活跃率</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="95"></DoughnutChart>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-middle__bottom">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>近期成员使用分布</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 220px; width: 100%;"
|
||||
:ref="'chart'"
|
||||
:data="lineData"
|
||||
:ops="lineChart1">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
<div class="right-right">
|
||||
<AiDvPanel style="height: auto;" border="border6" title="微警务群概况">
|
||||
<div class="right-left__total AppQxnDv-total">
|
||||
<div class="item" v-for="(item, index) in 4" :key="index">
|
||||
<h2>群动态概况</h2>
|
||||
<div class="item-bottom">
|
||||
<span>726,079</span>
|
||||
<i>人</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-right__top">
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>群活跃率(7日)</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="95"></DoughnutChart>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>人员活跃(7日)</h2>
|
||||
</div>
|
||||
<DoughnutChart :ratio="95"></DoughnutChart>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-left__middle">
|
||||
<div class="AppQxnDv-title">
|
||||
<h2>各单位群主及群分布</h2>
|
||||
</div>
|
||||
<ai-echart-v2
|
||||
style="height: 210px; width: 100%;"
|
||||
:ref="'chart5'"
|
||||
:data="barData"
|
||||
:ops="barChart">
|
||||
</ai-echart-v2>
|
||||
</div>
|
||||
</AiDvPanel>
|
||||
<AiDvPanel class="bottom" style="" border="border6" title="群动态多维度排行">
|
||||
<AiDvTable
|
||||
:heigth="'100%'"
|
||||
stripe="1"
|
||||
:headerStyle="{
|
||||
color: '#02FEFF',
|
||||
fontSize: '12px',
|
||||
fontWeight: '600',
|
||||
backgroundColor: 'rgba(33, 180, 253, 0.1)'
|
||||
}"
|
||||
isShowIndex="1"
|
||||
:config="tableConfig"
|
||||
:data="tableData">
|
||||
</AiDvTable>
|
||||
</AiDvPanel>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DvMap from './components/DvMap'
|
||||
import DoughnutChart from './components/DoughnutChart'
|
||||
export default {
|
||||
name: 'AppQxnEventDv',
|
||||
label: '事件上报',
|
||||
|
||||
components: {
|
||||
DvMap,
|
||||
DoughnutChart
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
value: '',
|
||||
lineData: [
|
||||
{
|
||||
"name": "阿斯达",
|
||||
"v1": 23,
|
||||
"v2": 33
|
||||
},
|
||||
{
|
||||
"name": "水电费",
|
||||
"v1": 12,
|
||||
"v2": 34
|
||||
},
|
||||
{
|
||||
"name": "凡哥",
|
||||
"v1": 67,
|
||||
"v2": 25
|
||||
},
|
||||
{
|
||||
"name": "党费",
|
||||
"v1": 98,
|
||||
"v2": 85
|
||||
}
|
||||
],
|
||||
lineData1: [
|
||||
{
|
||||
"name": "1月",
|
||||
"v1": 23
|
||||
},
|
||||
{
|
||||
"name": "2月",
|
||||
"v1": 12
|
||||
},
|
||||
{
|
||||
"name": "3月",
|
||||
"v1": 67
|
||||
},
|
||||
{
|
||||
"name": "4月",
|
||||
"v1": 98
|
||||
}
|
||||
],
|
||||
tableData: [
|
||||
{
|
||||
name: '姓名',
|
||||
v1: '宗梦瑞',
|
||||
v2: '宗梦瑞',
|
||||
v3: '宗梦瑞',
|
||||
v4: '宗梦瑞',
|
||||
v5: '宗梦瑞',
|
||||
v6: '宗梦瑞',
|
||||
v7: '宗梦瑞',
|
||||
v8: '宗梦瑞',
|
||||
v9: '宗梦瑞',
|
||||
v10: '宗梦瑞'
|
||||
},
|
||||
{
|
||||
name: '单位',
|
||||
v1: '宗梦瑞',
|
||||
v2: '宗梦瑞',
|
||||
v3: '宗梦瑞',
|
||||
v4: '宗梦瑞',
|
||||
v5: '宗梦瑞',
|
||||
v6: '宗梦瑞',
|
||||
v7: '宗梦瑞',
|
||||
v8: '宗梦瑞',
|
||||
v9: '宗梦瑞',
|
||||
v10: '宗梦瑞'
|
||||
},
|
||||
{
|
||||
name: '群数量',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群人员',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '新增群人员',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '有消息的群',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群聊人数',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
},
|
||||
{
|
||||
name: '群消息总数',
|
||||
v1: '12',
|
||||
v2: '12',
|
||||
v3: '123',
|
||||
v4: '123',
|
||||
v5: '123',
|
||||
v6: '123',
|
||||
v7: '2',
|
||||
v8: '123',
|
||||
v9: '123',
|
||||
v10: '1234'
|
||||
}
|
||||
],
|
||||
lineChart1: {
|
||||
legend: { show: false },
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
backgroundColor: 'rgba(0, 102, 154, 0.65)',
|
||||
borderColor: 'rgba(0, 102, 154, 0.65)',
|
||||
textStyle: { color: '#fff' },
|
||||
axisPointer: { type: 'cross' }
|
||||
},
|
||||
color: ['#7AA3CC', '#33CCCC'],
|
||||
xAxis: {
|
||||
type: "category",
|
||||
axisTick: {show: false},
|
||||
axisLine: {show: false},
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
},
|
||||
yAxis: {
|
||||
nameGap: 23,
|
||||
minInterval: 1,
|
||||
splitLine: { lineStyle: { color: 'rgba(108, 128, 151, 0.3)', type: 'dashed' } },
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
axisPointer: { snap: true }
|
||||
},
|
||||
daemon: (color) => ({
|
||||
showSymbol: false,
|
||||
smooth: true,
|
||||
lineStyle: {
|
||||
shadowBlur: 4,
|
||||
shadowOffsetY: 2,
|
||||
width: 2
|
||||
},
|
||||
areaStyle: {
|
||||
color: {
|
||||
type: 'linear',
|
||||
x: 0,
|
||||
x2: 0,
|
||||
y: 0,
|
||||
y2: 1,
|
||||
colorStops: [
|
||||
{ offset: 0, color: this.Hex2RGBA(color, 0.3) },
|
||||
{ offset: 1, color: this.Hex2RGBA(color, 0.1) }
|
||||
]
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
barChart8: {
|
||||
legend: {show: false},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
backgroundColor: 'rgba(0, 102, 154, 0.65)',
|
||||
borderColor: 'rgba(0, 102, 154, 0.65)',
|
||||
textStyle: { color: '#fff' },
|
||||
axisPointer: { type: 'cross' }
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
axisTick: {show: false},
|
||||
axisLine: {show: false},
|
||||
},
|
||||
xAxis: {
|
||||
nameGap: 23, minInterval: 1,
|
||||
splitLine: {lineStyle: {color: 'rgba(108, 128, 151, 0.3)', type: 'dashed'}},
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
},
|
||||
daemon: {
|
||||
type: 'bar', barWidth: 10, barGap: '40%',
|
||||
label: {show: true, position: 'insideRight', color: '#fff', fontSize: 14},
|
||||
showBackground: true,
|
||||
backgroundStyle: {
|
||||
color: 'rgba(123, 165, 255, .2)'
|
||||
},
|
||||
itemStyle: {
|
||||
color: {
|
||||
type: 'linear', x: 0, x2: 1, y: 0, y2: 0,
|
||||
colorStops: [{offset: 0, color: 'rgba(0, 89, 84, 0)'}, {offset: 1, color: '#66E1DF'}]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
barChart: {
|
||||
xAxis: {
|
||||
type: "category",
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12},
|
||||
},
|
||||
yAxis: {
|
||||
nameGap: 23,
|
||||
minInterval: 1,
|
||||
splitLine: { lineStyle: { color: 'rgba(255,255,255,.2)', type: 'dashed' } },
|
||||
axisPointer: { show: false },
|
||||
axisLabel: {color: '#8FABBF', fontSize: 12}
|
||||
},
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
triggerTooltip: false,
|
||||
shadowStyle: { color: 'rgba(46, 153, 255, .2)' }
|
||||
},
|
||||
color: [
|
||||
{
|
||||
type: 'linear',
|
||||
x: 0,
|
||||
x2: 0,
|
||||
y: 0,
|
||||
y2: 1,
|
||||
colorStops: [
|
||||
{ offset: 0, color: 'rgba(51, 204, 204, 1)' },
|
||||
{ offset: 1, color: 'rgba(31, 89, 89, 0.25)' }
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'linear',
|
||||
x: 0,
|
||||
x2: 0,
|
||||
y: 0,
|
||||
y2: 1,
|
||||
colorStops: [
|
||||
{ offset: 0, color: 'rgba(219, 179, 110, 0.1)' },
|
||||
{ offset: 1, color: 'rgba(219, 179, 110, 1)' }
|
||||
]
|
||||
}
|
||||
],
|
||||
daemon: {
|
||||
type: 'bar',
|
||||
barWidth: 14,
|
||||
barCategoryGap: 40,
|
||||
itemStyle: {}
|
||||
}
|
||||
},
|
||||
barData: [
|
||||
{
|
||||
"name": "兴仁公安局",
|
||||
"v1": 223,
|
||||
"v11": 23
|
||||
},
|
||||
{
|
||||
"name": "兴仁公安局1",
|
||||
"v1": 22,
|
||||
"v11": 29
|
||||
},
|
||||
{
|
||||
"name": "兴仁公安局2",
|
||||
"v1": 67,
|
||||
"v11": 23
|
||||
},
|
||||
{
|
||||
"name": "兴仁公安局3",
|
||||
"v1": 98,
|
||||
"v11": 23
|
||||
}
|
||||
],
|
||||
pieData: [
|
||||
{ value: 1048, name: 'Search Engine' },
|
||||
{ value: 735, name: 'Direct' },
|
||||
{ value: 580, name: 'Email' },
|
||||
{ value: 484, name: 'Union Ads' },
|
||||
{ value: 300, name: 'Video Ads' }] ,
|
||||
pieChart: {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
show: false
|
||||
},
|
||||
grid: {
|
||||
left: '6%',
|
||||
top: '6%',
|
||||
right: '6%',
|
||||
bottom: '6%'
|
||||
},
|
||||
color: ['#59F7CA', '#62F2F8', '#F2B949', '#81C4E4', '#D8F2FD'],
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: ['50%', '66%'],
|
||||
labelLine:{
|
||||
normal:{
|
||||
length: 2,
|
||||
lineStyle: {
|
||||
color: '#526D7A'
|
||||
}
|
||||
}
|
||||
},
|
||||
startAngle: 90,
|
||||
minAngle: 5,
|
||||
avoidLabelOverlap: true,
|
||||
label: {
|
||||
show: true,
|
||||
normal: {
|
||||
textStyle: {
|
||||
color: '#9BB7D4',
|
||||
fontSize: 16
|
||||
}
|
||||
}
|
||||
},
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
tableConfig () {
|
||||
return this.tableData.map((v, index) => {
|
||||
return {
|
||||
color: '#d0e1e8',
|
||||
textAlign: '',
|
||||
width: index === 0 ? '100' : '',
|
||||
fontSize: '14px',
|
||||
flex: ''
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
Hex2RGBA(color, alpha = 1) {
|
||||
let hex = 0;
|
||||
if (color.charAt(0) == "#") {
|
||||
if (color.length == 4) {
|
||||
//检测诸如#FFF简写格式
|
||||
color = "#" + color.charAt(1).repeat(2) +
|
||||
color.charAt(2).repeat(2) +
|
||||
color.charAt(3).repeat(2);
|
||||
}
|
||||
hex = parseInt(color.slice(1), 16);
|
||||
}
|
||||
let r = hex >> 16 & 0xFF;
|
||||
let g = hex >> 8 & 0xFF;
|
||||
let b = hex & 0xFF;
|
||||
return `rgba(${r},${g},${b},${alpha})`;
|
||||
},
|
||||
RGBtoHex(r, g, b) {
|
||||
let hex = r << 16 | g << 8 | b;
|
||||
return "#" + hex.toString(16);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.AppQxnEventDv {
|
||||
.AppQxnDv {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
padding-top: 16px;
|
||||
box-sizing: border-box;
|
||||
background: #0c0c0c;
|
||||
overflow: hidden;
|
||||
|
||||
.wrapper {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.AppQxnDv-title {
|
||||
display: flex;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
color: rgba(172, 201, 230, 0.8);
|
||||
background-image: linear-gradient(270deg, rgba(31, 67, 102, 0) 0%, rgba(31, 67, 102, 0.25) 100%);
|
||||
|
||||
h2 {
|
||||
position: relative;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
padding: 0 10px;
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 27px;
|
||||
z-index: 1;
|
||||
width: 9px;
|
||||
height: 2px;
|
||||
background: rgba(41, 77, 102, 1);
|
||||
content: ' ';
|
||||
}
|
||||
}
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
width: 9px;
|
||||
height: 2px;
|
||||
background: #5299CC;
|
||||
content: ' ';
|
||||
}
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 14px;
|
||||
z-index: 1;
|
||||
width: 9px;
|
||||
height: 2px;
|
||||
background: rgba(41, 77, 102, 1);
|
||||
content: ' ';
|
||||
}
|
||||
}
|
||||
|
||||
.AppQxnDv-total {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16px;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
h2 {
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.item-bottom {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
|
||||
span {
|
||||
font-weight: 700;
|
||||
font-size: 18px;
|
||||
color: #02FEFF;
|
||||
}
|
||||
|
||||
i {
|
||||
margin-left: 4px;
|
||||
font-style: normal;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-select) {
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding: 0 26px 0 6px;
|
||||
font-size: 12px;
|
||||
color: rgba(179, 229, 229, 1);
|
||||
border: 1px solid #2A7A92;
|
||||
border-radius: 2px;
|
||||
background: transparent;
|
||||
|
||||
&::placeholder {
|
||||
color: rgba(179, 229, 229, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
.el-input__suffix {
|
||||
right: 1px;
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
i {
|
||||
color: #B3E5E5;
|
||||
}
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
min-height: 20px;
|
||||
background-clip: content-box;
|
||||
box-shadow: 0 0 0 5px rgba(116, 148, 170, 0.5) inset;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
box-shadow: 1px 1px 5px rgba(116, 148, 170, 0.5) inset;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
& > .right {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
|
||||
.right-left {
|
||||
width: 500px;
|
||||
|
||||
.right-left__middle {
|
||||
display: flex;
|
||||
|
||||
.left {
|
||||
width: 245px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.right {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.right-left__bottom {
|
||||
display: flex;
|
||||
|
||||
div {
|
||||
flex: 1;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.right-middle {
|
||||
width: 522px;
|
||||
margin: 0 20px;
|
||||
|
||||
.right-middle__middle {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.right-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
.bottom {
|
||||
padding-top: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.right-right__top {
|
||||
display: flex;
|
||||
margin-bottom: 16px;
|
||||
|
||||
& > div {
|
||||
flex: 1;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& > .left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
width: 240px;
|
||||
margin-right: 14px;
|
||||
|
||||
.left-list {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
|
||||
.left-item {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
padding: 30px 14px 14px;
|
||||
background-image: linear-gradient(0deg, rgba(40, 182, 253, 0.08) 1%, rgba(0, 102, 154, 0.65) 100%);
|
||||
border-radius: 6px;
|
||||
|
||||
i {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 22px;
|
||||
height: 21px;
|
||||
line-height: 21px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
background-image: linear-gradient(177deg, #02eeee66 0%, #0190d866 100%);
|
||||
border-radius: 6px 0 6px 0;
|
||||
}
|
||||
|
||||
.left-item__bottom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
span {
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.left-item__top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.el-select {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -87,7 +87,7 @@ export default {
|
||||
normal: {
|
||||
show: true,
|
||||
color: '#fff',
|
||||
fontSize: '15'
|
||||
fontSize: '14'
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
|
||||
@@ -91,15 +91,15 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
legend, series, ...options,
|
||||
color: colors,
|
||||
grid: {
|
||||
left: '0%',
|
||||
right: '0%',
|
||||
bottom: '0%',
|
||||
top: '40px',
|
||||
top: '26px',
|
||||
containLabel: true
|
||||
}
|
||||
},
|
||||
legend, series, ...options,
|
||||
color: colors
|
||||
}
|
||||
return ops
|
||||
},
|
||||
@@ -197,7 +197,6 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
console.log(this.$refs[this.AiEchart])
|
||||
this.watchResize()
|
||||
this.initChart()
|
||||
this.getChartData()
|
||||
|
||||
Reference in New Issue
Block a user