Files
dvcp_v2_webapp/packages/bigscreen/dv/AppQxnEventDv.vue
yanran200730 b098a4e294 bug
2023-04-27 15:18:57 +08:00

1330 lines
36 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="AppQxnDv">
<div class="left">
<AiDvPanel style="width: 100%; height: auto;" border="border6" title="单位列表">
</AiDvPanel>
<div class="left-list">
<div
class="left-item"
v-for="(item, index) in areaList"
:class="[gridParentId === item.gridId ? 'active' : '']"
:key="index"
@click="init(item.gridId)">
<i>{{ index + 1 }}</i>
<div class="left-item__top">
<h2>{{ item.gridName }}</h2>
<el-select v-model="gridId" @change="onStationChange" size="mini" v-if="gridParentId === item.gridId && index !== 0" placeholder="请选择派出所">
<el-option
:label="item.gridName"
:value="item.gridId"
v-for="(item, index) in policeStationList"
:key="index">
</el-option>
</el-select>
</div>
<div class="left-item__bottom">
<span>居民数量{{ item.customerCount + item.groupMemberCount }}</span>
<span>成员{{ item.allGridMemberCount }}</span>
</div>
</div>
</div>
</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">
<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>
<i></i>
</div>
</div>
<div class="item">
<h2>待处理事件</h2>
<div class="item-bottom">
<span>{{ wxGridReportOverviewInfo['待受理数量'] }}</span>
<i></i>
</div>
</div>
</div>
<div class="right-left__top">
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>上报来源分布</h2>
</div>
<ai-echart-v2
style="height: 220px; width: 245px; margin-top: 10px;"
:ref="'chart1'"
:data="chartData1"
:ops="chartConfig1">
</ai-echart-v2>
</div>
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>事件办理情況</h2>
</div>
<ai-echart-v2
style="height: 220px; width: 265px; margin-top: 10px;"
:ref="'chart2'"
:data="chartData2"
:ops="chartConfig2">
</ai-echart-v2>
</div>
</div>
<div class="right-left__middle">
<div class="left">
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>事件受理率</h2>
</div>
<DoughnutChart :ratio="sllRate" :value="sllData"></DoughnutChart>
</div>
<div class="wrapper">
<div class="AppQxnDv-title">
<h2>事件办结率</h2>
</div>
<DoughnutChart :ratio="sjbjRate" :value="sjbjData"></DoughnutChart>
</div>
</div>
<div class="right wrapper">
<div class="AppQxnDv-title">
<h2>最新办理动态</h2>
<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>
</el-select>
</div>
<ai-table
width="265px"
style="margin-top: 10px;"
height="210px"
:tableData="tableData1"
:col-configs="colConfigs1"
:isShowPagination="false"
@getList="() => {}">
</ai-table>
</div>
</div>
<div class="right-left__bottom">
<div class="AppQxnDv-title">
<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>
</div>
<ai-echart-v2
style="height: 236px; margin-top: 10px; width: 100%;"
:ref="'chart3'"
:data="chartData3"
:ops="chartConfig3">
</ai-echart-v2>
</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 :instance="instance" style="width: 100%; height: 356px;"></DvMap>
</div>
<div class="right-middle__bottom">
<div class="AppQxnDv-title">
<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>
</div>
<AiDvTable
style="margin-top: 16px; height: 430px;"
:heigth="'100%'"
size="mini"
stripe="1"
:headerStyle="{
color: '#02FEFF',
fontSize: '12px',
fontWeight: '600',
backgroundColor: 'rgba(33, 180, 253, 0.1)'
}"
:config="eventTableConfig"
:data="eventTableData">
</AiDvTable>
</div>
</AiDvPanel>
</div>
<div class="right-right">
<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: '事件上报',
props: {
instance: Function
},
components: {
DvMap,
DoughnutChart
},
data () {
return {
policeStationList: [],
currIndex: 0,
areaList: [],
type: '0',
gridId: '',
gridParentId: 'gr3AePMwAAFWlqlNvfJboAWkRNbnA14A',
tableData: [
{
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: '联系TA',
v1: '联系TA',
v2: '联系TA',
v3: '联系TA',
v4: '联系TA',
v5: '联系TA',
v6: '联系TA',
v7: '联系TA',
v8: '联系TA',
v9: '联系TA',
v10: '联系TA'
}
],
chartConfig1: {
legend: {
textStyle: {
color: "#fff"
}
},
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', '#DBB36E'],
xAxis: {
type: "category",
axisTick: {show: false},
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)' } },
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) }
]
}
}
})
},
bbTableData: [
{
name: '时间',
v: '04/18',
v1: '04/18',
v2: '04/18',
v3: '04/18',
v4: '04/18',
v5: '04/18'
},
{
name: '姓名',
v: '宗梦瑞',
v1: '宗梦瑞',
v2: '宗梦瑞',
v3: '宗梦瑞',
v4: '宗梦瑞',
v5: '宗梦瑞'
},
{
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: ''
}
],
chartData3: [
{
"name": "人员聚集",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "非法饲养动物",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "婚姻家庭纠纷",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "道路安全",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
},
{
"name": "其他",
"已办理": 223,
"待处理": 23,
"处理中": 223,
"已拒绝": 23
}
] ,
chartConfig3: {
xAxis: {
type: "category",
axisTick: {show: false},
axisLabel: {color: '#8FABBF', fontSize: 12},
axisLine: { lineStyle: { color: 'rgba(179, 223, 255, 0.4)' } }
},
grid: {
left: '0%',
right: '0%',
bottom: '0%',
top: '40px',
containLabel: true
},
legend: {
textStyle: {
color: "#fff"
}
},
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(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)' }
]
}
],
daemon: {
type: 'bar',
barWidth: 14,
barCategoryGap: 40,
itemStyle: {}
}
},
eventTableData: [
{
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'
},
{
name: '事件内容',
v1: '咨询如何报考摩托车驾驶咨询如',
v2: '咨询如何报考摩托车驾驶咨询如',
v3: '咨询如何报考摩托车驾驶咨询如',
v4: '咨询如何报考摩托车驾驶咨询如',
v5: '咨询如何报考摩托车驾驶咨询如',
v6: '咨询如何报考摩托车驾驶咨询如',
v7: '咨询如何报考摩托车驾驶咨询如',
v8: '咨询如何报考摩托车驾驶咨询如咨询如何报考摩托车驾驶咨询如',
v9: '咨询如何报考摩托车驾驶咨询如',
v10: '咨询如何报考摩托车驾驶咨询如'
},
{
name: '状态',
v1: '已办理',
v2: '已办理',
v3: '已办理',
v4: '已办理',
v5: '处理中',
v6: '已拒绝',
v7: '处理中',
v8: '待处理',
v9: '处理中',
v10: '处理中'
},
{
name: '查看',
v1: '详情>>',
v2: '详情>>',
v3: '详情>>',
v4: '详情>>',
v5: '详情>>',
v6: '详情>>',
v7: '详情>>',
v8: '详情>>',
v9: '详情>>',
v10: '详情>>'
}
],
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 }
]
}
},
computed: {
tableConfig () {
return this.tableData.map((v, index) => {
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
)
}
}
}
return {
color: '#d0e1e8',
align: '',
width: index === 0 ? '100' : '',
fontSize: '14px',
flex: ''
}
})
},
eventTableConfig () {
return [
{
color: '#d0e1e8',
align: '',
width: '',
fontSize: '14px',
flex: ''
},
{
color: '#d0e1e8',
align: 'left',
width: '250',
fontSize: '14px',
flex: ''
},
{
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)
}
}
]
},
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()
},
methods: {
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()
},
onStationChange () {
this.$nextTick(() => {
this.getInfo()
})
},
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
}
})
},
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>
.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%);
& > 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: ' ';
}
}
}
}
& > h2 {
&::after {
position: absolute;
bottom: 0;
left: 27px;
z-index: 1;
width: 9px;
height: 2px;
background: rgba(41, 77, 102, 1);
content: ' ';
}
}
.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;
}
&::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;
}
}
: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;
}
}
: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;
}
}
::-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;
overflow: hidden;
.right-left {
width: 530px;
.right-left__middle {
display: flex;
justify-content: space-between;
.left {
width: 245px;
margin-right: 12px;
}
.right {
width: 275px;
}
}
.right-left__top {
display: flex;
justify-content: space-between;
div {
width: 275px;
&:first-child {
width: 245px;
}
}
}
}
.right-middle {
width: 556px;
margin: 0 40px;
.right-middle__middle {
display: flex;
justify-content: space-between;
margin-bottom: 16px;
}
}
.right-right {
display: flex;
flex-direction: column;
flex: 1;
}
}
& > .left {
display: flex;
align-items: center;
flex-direction: column;
width: 240px;
margin-right: 20px;
.left-list {
flex: 1;
overflow-y: auto;
width: 100%;
.left-item {
position: relative;
width: 100%;
cursor: pointer;
margin-bottom: 10px;
padding: 30px 14px 14px;
background-image: linear-gradient(0deg, rgba(40, 182, 253, 0.08) 1%, rgba(0, 102, 154, 0.2) 100%);
border-radius: 6px;
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;
}
}
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>