Files
dvcp_v2_webapp/packages/bigscreen/dv/AppQxnEventDv.vue

1330 lines
36 KiB
Vue
Raw Normal View History

2023-04-23 17:50:29 +08:00
<template>
2023-04-24 10:34:41 +08:00
<div class="AppQxnDv">
<div class="left">
2023-04-24 17:49:38 +08:00
<AiDvPanel style="width: 100%; height: auto;" border="border6" title="单位列表">
</AiDvPanel>
2023-04-24 10:34:41 +08:00
<div class="left-list">
2023-04-27 14:38:57 +08:00
<div
class="left-item"
v-for="(item, index) in areaList"
:class="[gridParentId === item.gridId ? 'active' : '']"
:key="index"
@click="init(item.gridId)">
2023-04-24 10:34:41 +08:00
<i>{{ index + 1 }}</i>
<div class="left-item__top">
2023-04-27 14:38:57 +08:00
<h2>{{ item.gridName }}</h2>
2023-04-27 15:18:51 +08:00
<el-select v-model="gridId" @change="onStationChange" size="mini" v-if="gridParentId === item.gridId && index !== 0" placeholder="请选择派出所">
2023-04-27 14:38:57 +08:00
<el-option
:label="item.gridName"
:value="item.gridId"
v-for="(item, index) in policeStationList"
:key="index">
</el-option>
2023-04-24 10:34:41 +08:00
</el-select>
</div>
<div class="left-item__bottom">
2023-04-27 14:38:57 +08:00
<span>居民数量{{ item.customerCount + item.groupMemberCount }}</span>
<span>成员{{ item.allGridMemberCount }}</span>
2023-04-24 10:34:41 +08:00
</div>
</div>
</div>
</div>
<div class="right">
<div class="right-left">
2023-04-24 17:49:38 +08:00
<AiDvPanel style="width: 100%" border="border6" title="警格事件概況">
2023-04-24 10:34:41 +08:00
<div class="right-left__total AppQxnDv-total">
2023-04-27 14:38:57 +08:00
<div class="item">
<h2>全部上报事件</h2>
2023-04-24 10:34:41 +08:00
<div class="item-bottom">
2023-04-27 14:38:57 +08:00
<span>{{ wxGridReportOverviewInfo['全部上报事件数量'] }}</span>
<i></i>
</div>
</div>
<div class="item">
<h2>已办结事件</h2>
<div class="item-bottom">
<span>{{ wxGridReportOverviewInfo['已办结数量'] }}</span>
<i></i>
</div>
</div>
<div class="item">
<h2>办理中事件</h2>
<div class="item-bottom">
<span>{{ wxGridReportOverviewInfo['办理中数量'] }}</span>
<i></i>
</div>
</div>
<div class="item">
<h2>待处理事件</h2>
<div class="item-bottom">
<span>{{ wxGridReportOverviewInfo['待受理数量'] }}</span>
2023-04-24 10:34:41 +08:00
<i></i>
</div>
</div>
</div>
2023-04-25 10:38:06 +08:00
<div class="right-left__top">
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>上报来源分布</h2>
</div>
<ai-echart-v2
2023-04-27 14:38:57 +08:00
style="height: 220px; width: 245px; margin-top: 10px;"
2023-04-25 14:32:47 +08:00
:ref="'chart1'"
:data="chartData1"
:ops="chartConfig1">
2023-04-25 10:38:06 +08:00
</ai-echart-v2>
</div>
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>事件办理情況</h2>
</div>
<ai-echart-v2
2023-04-27 14:38:57 +08:00
style="height: 220px; width: 265px; margin-top: 10px;"
2023-04-25 10:38:06 +08:00
:ref="'chart2'"
2023-04-25 14:32:47 +08:00
:data="chartData2"
:ops="chartConfig2">
2023-04-25 10:38:06 +08:00
</ai-echart-v2>
2023-04-24 10:34:41 +08:00
</div>
</div>
<div class="right-left__middle">
<div class="left">
<div class="wrapper">
<div class="AppQxnDv-title">
2023-04-25 10:38:06 +08:00
<h2>事件受理率</h2>
2023-04-24 10:34:41 +08:00
</div>
2023-04-27 14:38:57 +08:00
<DoughnutChart :ratio="sllRate" :value="sllData"></DoughnutChart>
2023-04-24 10:34:41 +08:00
</div>
<div class="wrapper">
<div class="AppQxnDv-title">
2023-04-25 10:38:06 +08:00
<h2>事件办结率</h2>
2023-04-24 10:34:41 +08:00
</div>
2023-04-27 14:38:57 +08:00
<DoughnutChart :ratio="sjbjRate" :value="sjbjData"></DoughnutChart>
2023-04-24 10:34:41 +08:00
</div>
</div>
<div class="right wrapper">
<div class="AppQxnDv-title">
2023-04-25 10:38:06 +08:00
<h2>最新办理动态</h2>
2023-04-27 14:38:57 +08:00
<el-select v-model="type" @change="onChange" style="width: 92px" size="mini" placeholder="请选择">
<el-option label="新办结" value="0"></el-option>
<el-option label="新受理" value="1"></el-option>
2023-04-24 10:34:41 +08:00
</el-select>
</div>
2023-04-27 14:38:57 +08:00
<ai-table
width="265px"
style="margin-top: 10px;"
height="210px"
:tableData="tableData1"
:col-configs="colConfigs1"
:isShowPagination="false"
@getList="() => {}">
</ai-table>
2023-04-24 10:34:41 +08:00
</div>
</div>
<div class="right-left__bottom">
2023-04-25 10:38:06 +08:00
<div class="AppQxnDv-title">
2023-04-25 14:32:47 +08:00
<div class="left AppQxnDv-title__tab">
<h2 @click="currIndex = 0" :class="[currIndex === 0 ? 'active' : '']">隐患上报</h2>
<h2 @click="currIndex = 1" :class="[currIndex === 1 ? 'active' : '']">咨询服务</h2>
<h2 @click="currIndex = 2" :class="[currIndex === 2 ? 'active' : '']">矛盾调解</h2>
<h2 @click="currIndex = 3" :class="[currIndex === 3 ? 'active' : '']">其他</h2>
</div>
2023-04-24 10:34:41 +08:00
</div>
2023-04-25 10:38:06 +08:00
<ai-echart-v2
style="height: 236px; margin-top: 10px; width: 100%;"
2023-04-25 14:32:47 +08:00
:ref="'chart3'"
:data="chartData3"
:ops="chartConfig3">
2023-04-25 10:38:06 +08:00
</ai-echart-v2>
2023-04-24 10:34:41 +08:00
</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">
2023-04-27 14:38:57 +08:00
<DvMap :instance="instance" style="width: 100%; height: 356px;"></DvMap>
2023-04-24 10:34:41 +08:00
</div>
<div class="right-middle__bottom">
<div class="AppQxnDv-title">
2023-04-25 14:32:47 +08:00
<h2>事件列表</h2>
<div class="right">
<el-select v-model="value" style="width: 82px; margin-right:6px;" 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>
<el-select v-model="value" style="width: 82px; margin-right:6px;" 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>
<el-select v-model="value" style="width: 82px; margin-right:6px;" 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>
<el-select v-model="value" style="width: 82px; margin-right:6px;" size="mini" placeholder="最近30天">
<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>
<el-input placeholder="关键词" style="width: 98px;">
<el-button slot="append" icon="el-icon-search"></el-button>
</el-input>
</div>
2023-04-24 10:34:41 +08:00
</div>
2023-04-25 10:38:06 +08:00
<AiDvTable
style="margin-top: 16px; height: 430px;"
:heigth="'100%'"
2023-04-25 14:32:47 +08:00
size="mini"
2023-04-25 10:38:06 +08:00
stripe="1"
:headerStyle="{
color: '#02FEFF',
fontSize: '12px',
fontWeight: '600',
backgroundColor: 'rgba(33, 180, 253, 0.1)'
}"
2023-04-25 14:32:47 +08:00
:config="eventTableConfig"
:data="eventTableData">
2023-04-25 10:38:06 +08:00
</AiDvTable>
2023-04-24 10:34:41 +08:00
</div>
</AiDvPanel>
</div>
<div class="right-right">
2023-04-25 10:38:06 +08:00
<AiDvPanel class="bottom" style="" border="border6" title="办理排行">
2023-04-24 10:34:41 +08:00
<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>
2023-04-23 17:50:29 +08:00
</template>
<script>
2023-04-24 10:34:41 +08:00
import DvMap from './components/DvMap'
import DoughnutChart from './components/DoughnutChart'
2023-04-23 17:50:29 +08:00
export default {
name: 'AppQxnEventDv',
label: '事件上报',
2023-04-27 14:38:57 +08:00
props: {
instance: Function
},
2023-04-24 10:34:41 +08:00
components: {
DvMap,
DoughnutChart
},
2023-04-23 17:50:29 +08:00
data () {
return {
2023-04-27 14:38:57 +08:00
policeStationList: [],
2023-04-25 14:32:47 +08:00
currIndex: 0,
2023-04-27 14:38:57 +08:00
areaList: [],
type: '0',
gridId: '',
gridParentId: 'gr3AePMwAAFWlqlNvfJboAWkRNbnA14A',
2023-04-24 10:34:41 +08:00
tableData: [
{
name: '姓名',
v1: '宗梦瑞',
v2: '宗梦瑞',
v3: '宗梦瑞',
v4: '宗梦瑞',
v5: '宗梦瑞',
v6: '宗梦瑞',
v7: '宗梦瑞',
v8: '宗梦瑞',
v9: '宗梦瑞',
v10: '宗梦瑞'
},
{
2023-04-25 10:38:06 +08:00
name: '己办结',
2023-04-24 10:34:41 +08:00
v1: '12',
v2: '12',
v3: '123',
v4: '123',
v5: '123',
v6: '123',
v7: '2',
v8: '123',
v9: '123',
v10: '1234'
},
{
2023-04-25 10:38:06 +08:00
name: '办理中',
2023-04-24 10:34:41 +08:00
v1: '12',
v2: '12',
v3: '123',
v4: '123',
v5: '123',
v6: '123',
v7: '2',
v8: '123',
v9: '123',
v10: '1234'
},
{
2023-04-25 10:38:06 +08:00
name: '上报数',
2023-04-24 10:34:41 +08:00
v1: '12',
v2: '12',
v3: '123',
v4: '123',
v5: '123',
v6: '123',
v7: '2',
v8: '123',
v9: '123',
v10: '1234'
},
{
2023-04-25 10:38:06 +08:00
name: '联系TA',
2023-04-25 16:01:09 +08:00
v1: '联系TA',
v2: '联系TA',
v3: '联系TA',
v4: '联系TA',
v5: '联系TA',
v6: '联系TA',
v7: '联系TA',
v8: '联系TA',
v9: '联系TA',
v10: '联系TA'
2023-04-24 10:34:41 +08:00
}
],
2023-04-25 14:32:47 +08:00
chartConfig1: {
legend: {
textStyle: {
color: "#fff"
}
},
grid: {
left: '0%',
right: '0%',
bottom: '0%',
top: '40px',
containLabel: true
},
2023-04-24 10:34:41 +08:00
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(0, 102, 154, 0.65)',
borderColor: 'rgba(0, 102, 154, 0.65)',
textStyle: { color: '#fff' },
axisPointer: { type: 'cross' }
},
2023-04-25 14:32:47 +08:00
color: ['#33CCCC', '#DBB36E'],
2023-04-24 10:34:41 +08:00
xAxis: {
type: "category",
axisTick: {show: false},
2023-04-25 14:32:47 +08:00
axisLine: { lineStyle: { color: 'rgba(179, 223, 255, 0.4)' } },
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 }
},
series: [
{
name: '警格上报',
type: 'bar',
barWidth: '15',
stack: 'one'
},
{
name: '居民上报',
barWidth: '15',
type: 'bar',
stack: 'one'
}
]
},
chartConfig2: {
legend: {
itemWidth: 16,
itemGap: 4,
textStyle: {
color: "#fff",
fontSize: '12'
},
icon: 'roundRect'
},
grid: {
left: '0%',
right: '0%',
bottom: '0%',
top: '40px',
containLabel: true
},
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(0, 102, 154, 0.65)',
borderColor: 'rgba(0, 102, 154, 0.65)',
textStyle: { color: '#fff' },
axisPointer: { type: 'cross' }
},
color: ['#33CCCC', '#2C97E8','#BFEAFF', '#DBB36E'],
xAxis: {
type: "category",
axisTick: {show: false},
axisLine: { lineStyle: { color: 'rgba(179, 223, 255, 0.4)' } },
2023-04-25 10:38:06 +08:00
axisLabel: {color: '#8FABBF', fontSize: 12}
2023-04-24 10:34:41 +08:00
},
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) }
]
}
}
})
},
2023-04-25 10:38:06 +08:00
bbTableData: [
{
name: '时间',
v: '04/18',
v1: '04/18',
v2: '04/18',
v3: '04/18',
v4: '04/18',
v5: '04/18'
2023-04-24 10:34:41 +08:00
},
2023-04-25 10:38:06 +08:00
{
name: '姓名',
v: '宗梦瑞',
v1: '宗梦瑞',
v2: '宗梦瑞',
v3: '宗梦瑞',
v4: '宗梦瑞',
v5: '宗梦瑞'
2023-04-24 10:34:41 +08:00
},
2023-04-25 10:38:06 +08:00
{
name: '事件名称',
v: '户籍办理',
v1: '户籍办理',
v2: '户籍办理',
v3: '户籍办理',
v4: '户籍办理',
v5: '户籍办理'
}
],
blConfig: [{
color: '#d0e1e8',
align: '',
width: '',
fontSize: '14px',
flex: ''
}, {
color: '#d0e1e8',
align: 'left',
width: '',
fontSize: '14px',
flex: ''
}, {
color: '#d0e1e8',
align: 'right',
fontSize: '14px',
flex: ''
}
],
2023-04-25 14:32:47 +08:00
chartData3: [
2023-04-25 10:38:06 +08:00
{
"name": "人员聚集",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
2023-04-24 10:34:41 +08:00
},
2023-04-25 10:38:06 +08:00
{
"name": "非法饲养动物",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "婚姻家庭纠纷",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "道路安全",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "其他",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
2023-04-24 10:34:41 +08:00
}
2023-04-25 10:38:06 +08:00
] ,
2023-04-25 14:32:47 +08:00
chartConfig3: {
2023-04-24 10:34:41 +08:00
xAxis: {
type: "category",
2023-04-25 10:38:06 +08:00
axisTick: {show: false},
2023-04-25 17:25:29 +08:00
axisLabel: {color: '#8FABBF', fontSize: 12},
axisLine: { lineStyle: { color: 'rgba(179, 223, 255, 0.4)' } }
2023-04-25 10:38:06 +08:00
},
grid: {
left: '0%',
right: '0%',
bottom: '0%',
top: '40px',
containLabel: true
},
legend: {
textStyle: {
color: "#fff"
}
2023-04-24 10:34:41 +08:00
},
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: [
2023-04-25 10:38:06 +08:00
{ offset: 0, color: 'rgba(44, 151, 232, 1)' },
{ offset: 1, color: 'rgba(21, 154, 255, 0)' }
]
},
{
type: 'linear',
x: 0,
x2: 0,
y: 0,
y2: 1,
colorStops: [
{ offset: 0, color: 'rgba(191, 234, 255, 1)' },
{ offset: 1, color: 'rgba(191, 234, 255, 0.1)' }
]
},
{
type: 'linear',
x: 0,
x2: 0,
y: 0,
y2: 1,
colorStops: [
{ offset: 0, color: 'rgba(219, 179, 110, 1)' },
{ offset: 1, color: 'rgba(219, 179, 110, 0.1)' }
2023-04-24 10:34:41 +08:00
]
}
],
daemon: {
type: 'bar',
barWidth: 14,
barCategoryGap: 40,
itemStyle: {}
}
2023-04-25 14:32:47 +08:00
},
eventTableData: [
{
2023-04-25 16:01:09 +08:00
name: '时间',
v1: '04/18',
v2: '02/18',
v3: '04/18',
v4: '04/18',
v5: '04/18',
v6: '04/18',
v7: '04/18',
v8: '04/18',
v9: '04/18',
v10: '04/18'
2023-04-25 14:32:47 +08:00
},
{
2023-04-25 16:01:09 +08:00
name: '事件内容',
v1: '咨询如何报考摩托车驾驶咨询如',
v2: '咨询如何报考摩托车驾驶咨询如',
v3: '咨询如何报考摩托车驾驶咨询如',
v4: '咨询如何报考摩托车驾驶咨询如',
v5: '咨询如何报考摩托车驾驶咨询如',
v6: '咨询如何报考摩托车驾驶咨询如',
v7: '咨询如何报考摩托车驾驶咨询如',
v8: '咨询如何报考摩托车驾驶咨询如咨询如何报考摩托车驾驶咨询如',
v9: '咨询如何报考摩托车驾驶咨询如',
v10: '咨询如何报考摩托车驾驶咨询如'
2023-04-25 14:32:47 +08:00
},
{
2023-04-25 16:01:09 +08:00
name: '状态',
v1: '已办理',
v2: '已办理',
v3: '已办理',
v4: '已办理',
v5: '处理中',
v6: '已拒绝',
v7: '处理中',
v8: '待处理',
v9: '处理中',
v10: '处理中'
2023-04-25 14:32:47 +08:00
},
{
2023-04-25 16:01:09 +08:00
name: '查看',
v1: '详情>>',
v2: '详情>>',
v3: '详情>>',
v4: '详情>>',
v5: '详情>>',
v6: '详情>>',
v7: '详情>>',
v8: '详情>>',
v9: '详情>>',
v10: '详情>>'
2023-04-25 14:32:47 +08:00
}
2023-04-27 14:38:57 +08:00
],
wxGridReportOverviewInfo: {},
tableData1: [],
colConfigs1: [
{ prop: 'createTime', label: '时间', align: 'center', width: '60px', dateFormat: 'MM/DD' },
{ prop: 'reporterName', label: '姓名', align: 'center' },
{ prop: 'caseName', label: '事件名称', align: 'left', width: 130 }
2023-04-25 16:01:09 +08:00
]
2023-04-24 10:34:41 +08:00
}
},
2023-04-23 17:50:29 +08:00
2023-04-24 10:34:41 +08:00
computed: {
tableConfig () {
return this.tableData.map((v, index) => {
2023-04-25 16:01:09 +08:00
if (index === 4) {
return {
color: '#d0e1e8',
align: 'center',
width: '',
fontSize: '12px',
flex: '',
render: (h, params) => {
return h(
'p', {
style: {
width: '52px',
height: '22px',
textAlign: 'center',
lineHeight: '22px',
color: '#D4F2FF',
cursor: 'pointer',
margin: '0 auto',
borderRadius: '4px',
backgroundImage: 'linear-gradient(175deg, #02bcee99 0%, #0144d899 100%)'
},
on: {
click: e => {
console.log(params)
}
},
}, params.column
)
}
}
}
2023-04-24 10:34:41 +08:00
return {
color: '#d0e1e8',
2023-04-25 10:38:06 +08:00
align: '',
2023-04-24 10:34:41 +08:00
width: index === 0 ? '100' : '',
fontSize: '14px',
flex: ''
}
})
2023-04-25 14:32:47 +08:00
},
eventTableConfig () {
2023-04-25 16:01:09 +08:00
return [
{
2023-04-25 14:32:47 +08:00
color: '#d0e1e8',
align: '',
2023-04-25 16:01:09 +08:00
width: '',
fontSize: '14px',
flex: ''
},
{
color: '#d0e1e8',
align: 'left',
width: '250',
2023-04-25 14:32:47 +08:00
fontSize: '14px',
flex: ''
2023-04-25 16:01:09 +08:00
},
{
color: '#d0e1e8',
align: 'center',
width: '',
fontSize: '14px',
flex: '',
render: (h, params) => {
return h(
'i', {
style: {
width: '52px',
height: '20px',
textAlgin: 'center',
lineHeight: '20px',
color: '#07B794',
margin: '0 auto',
borderRadius: '2px',
background: 'rgba(19, 246, 201, 0.14)',
}
}, params.column
)
}
},
{
color: '#00AAFF',
align: '',
width: '',
fontSize: '14px',
flex: '',
click: e => {
console.log(e)
}
2023-04-25 14:32:47 +08:00
}
2023-04-25 16:01:09 +08:00
]
2023-04-27 14:38:57 +08:00
},
chartData1 () {
if (!this.wxGridReportOverviewInfo['上报来源分布+事件办理情况']) {
return []
}
return this.wxGridReportOverviewInfo['上报来源分布+事件办理情况'].map(v => {
return {
name: v['月份'],
'警格上报': v['警格上报'],
'居民上报': v['居民上报']
}
})
},
chartData2 () {
if (!this.wxGridReportOverviewInfo['上报来源分布+事件办理情况']) {
return []
}
return this.wxGridReportOverviewInfo['上报来源分布+事件办理情况'].map(v => {
return {
name: v['月份'],
'上报总数': v['上报数量'],
'已办理': v['已拒绝数量'],
'已拒绝': v['已拒绝数量']
}
})
},
sllData () {
return [{
key: '累计受理事件',
value: this.wxGridReportOverviewInfo['全部上报事件数量'] - this.wxGridReportOverviewInfo['待受理数量']
},{
key: '累计上报事件',
value: this.wxGridReportOverviewInfo['全部上报事件数量']
}]
},
sllRate () {
if (!this.wxGridReportOverviewInfo['待受理数量']) {
return 0
}
return Number((((this.wxGridReportOverviewInfo['全部上报事件数量'] - this.wxGridReportOverviewInfo['待受理数量']) / this.wxGridReportOverviewInfo['全部上报事件数量']) * 100).toFixed(2))
},
sjbjData () {
return [{key: '累计办结事件', value: this.wxGridReportOverviewInfo['已办结数量']}, {key: '累计受理事件', value: this.wxGridReportOverviewInfo['全部上报事件数量'] - this.wxGridReportOverviewInfo['待受理数量']}]
},
sjbjRate () {
if (!this.wxGridReportOverviewInfo['待受理数量']) {
return 0
}
return Number(((this.wxGridReportOverviewInfo['已办结数量'] / (this.wxGridReportOverviewInfo['全部上报事件数量'] - this.wxGridReportOverviewInfo['待受理数量'])) * 100).toFixed(2))
},
},
mounted () {
this.getInfo()
this.init()
2023-04-24 10:34:41 +08:00
},
methods: {
2023-04-27 14:38:57 +08:00
init (gridId) {
this.gridId = ''
this.gridParentId = gridId || 'gr3AePMwAAFWlqlNvfJboAWkRNbnA14A'
this.instance.post(`/api/wxgridinfo/tree`, null, {
params: {
gridParentId: gridId || '',
corpId: 'wpytYEDgAA5zwi8Ak2mwFh3PwBKwwlWA'
}
}).then(res => {
if (res.code === 0) {
if (gridId) {
this.policeStationList = res.data
} else {
this.areaList = res.data
}
}
})
this.getInfo()
},
2023-04-27 15:18:51 +08:00
onStationChange () {
this.$nextTick(() => {
this.getInfo()
})
},
2023-04-27 14:38:57 +08:00
onChange () {
this.instance.post(`/api/wxgridinfo/wxGridReportNew`, null, {
params: {
corpId: 'wpytYEDgAA5zwi8Ak2mwFh3PwBKwwlWA',
gridId: this.gridId || this.gridParentId,
type: this.type
}
}).then(res => {
if (res.code === 0) {
this.wxGridReportNewInfo = res.data
}
})
},
getInfo () {
this.instance.post(`/api/wxgridinfo/comprehensiveOverview`, null, {
params: {
corpId: 'wpytYEDgAA5zwi8Ak2mwFh3PwBKwwlWA'
}
}).then(res => {
if (res.code === 0) {
this.middleTotalInfo = res.data
}
})
this.instance.post(`/api/wxgridinfo/wxGridReportOverview`, null, {
params: {
corpId: 'wpytYEDgAA5zwi8Ak2mwFh3PwBKwwlWA',
gridId: this.gridId || this.gridParentId
}
}).then(res => {
if (res.code === 0) {
this.wxGridReportOverviewInfo = res.data
}
})
this.instance.post(`/api/wxgridinfo/wxGridReportNew`, null, {
params: {
corpId: 'wpytYEDgAA5zwi8Ak2mwFh3PwBKwwlWA',
gridId: this.gridId || this.gridParentId,
type: this.type
}
}).then(res => {
if (res.code === 0) {
this.tableData1 = res.data
}
})
},
2023-04-24 10:34:41 +08:00
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);
2023-04-23 17:50:29 +08:00
}
}
}
</script>
<style lang="scss" scoped>
2023-04-24 10:34:41 +08:00
.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%);
2023-04-25 14:32:47 +08:00
& > div {
display: flex;
align-items: center;
&:first-child {
h2:first-child {
&::after {
position: absolute;
bottom: 0;
left: 27px;
z-index: 1;
width: 9px;
height: 2px;
background: rgba(41, 77, 102, 1);
content: ' ';
}
}
}
}
2023-04-24 10:34:41 +08:00
2023-04-25 14:32:47 +08:00
& > h2 {
2023-04-24 10:34:41 +08:00
&::after {
position: absolute;
bottom: 0;
left: 27px;
z-index: 1;
width: 9px;
height: 2px;
background: rgba(41, 77, 102, 1);
content: ' ';
}
}
2023-04-25 14:32:47 +08:00
.AppQxnDv-title__tab {
h2 {
cursor: pointer;
}
h2.active {
color: #fff;
font-size: 16px;
}
}
h2 {
position: relative;
font-size: 16px;
font-weight: 500;
padding: 0 10px;
}
2023-04-24 10:34:41 +08:00
&::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;
}
}
2023-04-25 14:32:47 +08:00
:deep(.el-input) {
height: 24px;
line-height: 24px;
input {
width: 100%;
height: 24px;
line-height: 24px;
padding: 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-group__append {
padding: 0 16px;
background: #007994;
border: none;
border-radius: 0 2px 2px 0;
}
.el-input__suffix {
right: 1px;
top: 0px;
}
i {
color: #B3E5E5;
}
}
2023-04-27 14:38:57 +08:00
:deep(.ai-table) {
.el-table {
font-size: 12px;
color: #d0e1e8;
background-color: transparent!important;
th.el-table__cell.is-leaf, .el-table td.el-table__cell {
border: none!important;
}
tr.el-table__row--striped td {
background: rgba(33, 180, 253, 0.1)!important;
}
.el-table__header tr th:first-child .cell {
padding: 0!important;
}
.el-table__body tr td:first-child .cell {
padding: 0!important;
}
&.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {
background-color: rgba(33, 180, 253, 0.1)!important;
}
th.el-table__cell {
background-color: transparent;
}
tr {
background-color: transparent;
}
.el-table__cell {
padding: 7px 0;
color: #d0e1e8;
}
.el-table__header tr .cell {
color: #02FEFF!important;
}
}
.ai-table__header {
background: rgba(33, 180, 253, 0.1)!important;
}
}
2023-04-24 10:34:41 +08:00
::-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;
2023-04-27 14:38:57 +08:00
overflow: hidden;
2023-04-24 10:34:41 +08:00
.right-left {
2023-04-25 10:38:06 +08:00
width: 530px;
2023-04-24 10:34:41 +08:00
.right-left__middle {
display: flex;
2023-04-27 14:38:57 +08:00
justify-content: space-between;
2023-04-24 10:34:41 +08:00
.left {
width: 245px;
margin-right: 12px;
}
.right {
2023-04-27 14:38:57 +08:00
width: 275px;
2023-04-24 10:34:41 +08:00
}
}
2023-04-25 10:38:06 +08:00
.right-left__top {
2023-04-24 10:34:41 +08:00
display: flex;
2023-04-27 14:38:57 +08:00
justify-content: space-between;
2023-04-24 10:34:41 +08:00
div {
2023-04-27 14:38:57 +08:00
width: 275px;
2023-04-24 10:34:41 +08:00
&:first-child {
2023-04-27 14:38:57 +08:00
width: 245px;
2023-04-24 10:34:41 +08:00
}
}
}
}
.right-middle {
2023-04-25 10:38:06 +08:00
width: 556px;
margin: 0 40px;
2023-04-24 10:34:41 +08:00
.right-middle__middle {
display: flex;
justify-content: space-between;
margin-bottom: 16px;
}
}
2023-04-23 17:50:29 +08:00
2023-04-24 10:34:41 +08:00
.right-right {
display: flex;
flex-direction: column;
flex: 1;
}
}
& > .left {
display: flex;
align-items: center;
flex-direction: column;
width: 240px;
2023-04-25 10:38:06 +08:00
margin-right: 20px;
2023-04-24 10:34:41 +08:00
.left-list {
flex: 1;
overflow-y: auto;
2023-04-25 10:38:06 +08:00
width: 100%;
2023-04-24 10:34:41 +08:00
.left-item {
position: relative;
width: 100%;
2023-04-27 14:38:57 +08:00
cursor: pointer;
2023-04-24 10:34:41 +08:00
margin-bottom: 10px;
padding: 30px 14px 14px;
2023-04-27 14:38:57 +08:00
background-image: linear-gradient(0deg, rgba(40, 182, 253, 0.08) 1%, rgba(0, 102, 154, 0.2) 100%);
2023-04-24 10:34:41 +08:00
border-radius: 6px;
2023-04-27 14:38:57 +08:00
box-shadow: inset 0 -1px 0 0 transparent;
transition: all ease 0.3s;
&:hover {
opacity: 0.7;
}
&.active {
background-image: linear-gradient(0deg, #28b6fd24 0%, #00669aa6 99%);
box-shadow: inset 0 -1px 0 0 #23B2C7;
&:hover {
opacity: 1;
}
}
2023-04-24 10:34:41 +08:00
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;
}
}
}
}
}
2023-04-23 17:50:29 +08:00
}
</style>