6 changed files with 773 additions and 2 deletions
@ -0,0 +1,363 @@ |
|||
<template> |
|||
<div class="body slider-right"> |
|||
|
|||
<div class="top-title">巡查统计分析</div> |
|||
<div class="table-box slider-right-body"> |
|||
<div class="title mb-8">责任人巡查情况概览</div> |
|||
|
|||
<div class="search-item flex items-center mb-8"> |
|||
<span class="search-label">巡查周期</span> |
|||
<el-date-picker |
|||
clearable |
|||
size="small" |
|||
class="ml-10" |
|||
v-model="paramsData.personResponsibleArr" |
|||
@change="getPersonResponsible" |
|||
type="daterange" |
|||
placeholder="开始日期" |
|||
value-format="yyyy-MM-dd" |
|||
></el-date-picker> |
|||
</div> |
|||
<div ref="personResponsible" class="personResponsible mb-8"></div> |
|||
<div class="title mb-8">巡查隐患概览</div> |
|||
|
|||
<div class="search-form flex flex-wrap mb-8"> |
|||
<div class="search-item flex items-center mr-8"> |
|||
<span class="search-label">巡查周期</span> |
|||
<el-date-picker |
|||
clearable |
|||
size="small" |
|||
class="ml-10" |
|||
v-model="paramsData.hiddenDangerArr" |
|||
@change="gethiddenDanger" |
|||
type="daterange" |
|||
placeholder="开始日期" |
|||
value-format="yyyy-MM-dd" |
|||
></el-date-picker> |
|||
</div> |
|||
|
|||
<div class="search-item flex items-center mr-8"> |
|||
<span class="search-label">行政区划</span> |
|||
<el-cascader |
|||
class="ml-10 search-input" |
|||
ref="cascader" |
|||
@change="gethiddenDanger" |
|||
v-model="paramsData.adcd" |
|||
:props="areasOptionProps" |
|||
placeholder="请选择行政区划" |
|||
clearable |
|||
size="small" |
|||
> |
|||
</el-cascader> |
|||
</div> |
|||
</div> |
|||
<div class="cardList"> |
|||
<div class="total card"> |
|||
<div class="header">堤防数量(段)</div> |
|||
<div class="content">{{ hiddenDangerData.dfNumber }}</div> |
|||
</div> |
|||
<div class="major card"> |
|||
<div class="header">隐患数量(个)</div> |
|||
<div class="content">{{ hiddenDangerData.yhNumber }}</div> |
|||
</div> |
|||
<div class="handle card"> |
|||
<div class="header">处理数量(个)</div> |
|||
<div class="content">{{ hiddenDangerData.czNumber }}</div> |
|||
</div> |
|||
</div> |
|||
<div ref="hiddenDanger" class="hiddenDanger"></div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import * as echarts from "echarts"; |
|||
import { cascaderLazyLoad } from "@/utils/elUtils"; |
|||
|
|||
import { |
|||
postYhStatisticsSituation, |
|||
postYhStatisticsHiddenDanger, |
|||
} from "@/api/dike"; |
|||
export default { |
|||
data () { |
|||
return { |
|||
personTypeOptions: '', |
|||
areasOptionProps: { |
|||
emitPath: false, |
|||
checkStrictly: true, //选择任意一级 |
|||
expandTrigger: "hover", |
|||
lazy: true, |
|||
lazyLoad: cascaderLazyLoad, |
|||
}, |
|||
paramsData: { |
|||
personResponsibleArr: [], |
|||
hiddenDangerArr: [], |
|||
adcd: '' |
|||
}, |
|||
personResponsibleData: { |
|||
city: ['广州市','韶关市','深圳市','珠海市','汕头市','佛山市','江门市','湛江市','茂名市','肇庆市','惠州市','梅州市','汕尾市','河源市','阳江市','清远市','东莞市','中山市','潮州市','揭阳市','云浮市'], |
|||
administration: [50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50], |
|||
technology: [100,100,100,100,10,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100], |
|||
patrol: [150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150] |
|||
}, |
|||
hiddenDangerData: { |
|||
czNumber: 0, |
|||
dfNumber: 0, |
|||
yhNumber: 0, |
|||
city: ['广州市','韶关市','深圳市','珠海市','汕头市','佛山市','江门市','湛江市','茂名市','肇庆市','惠州市','梅州市','汕尾市','河源市','阳江市','清远市','东莞市','中山市','潮州市','揭阳市','云浮市'], |
|||
hiddenDangerNumber: [50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50], |
|||
handleNumber: [100,100,100,100,10,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100] |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
this.getDicts("person_type").then((response) => { |
|||
this.personTypeOptions = response.data; |
|||
}); |
|||
}, |
|||
mounted() { |
|||
this.getPersonResponsible() |
|||
this.gethiddenDanger() |
|||
}, |
|||
methods: { |
|||
gethiddenDanger() { |
|||
const node = this.$refs.cascader.getCheckedNodes() |
|||
postYhStatisticsHiddenDanger({ |
|||
adcd: this.paramsData.adcd, |
|||
districtLevelFlag: node[0] && node[0].level === 3 ? 1 : 0, |
|||
patrolStart: this.paramsData.hiddenDangerArr && this.paramsData.hiddenDangerArr.length > 1 ? this.paramsData.hiddenDangerArr[0] : '', |
|||
patrolEnd: this.paramsData.hiddenDangerArr && this.paramsData.hiddenDangerArr.length > 1 ? this.paramsData.hiddenDangerArr[1] : '' |
|||
}).then((res) => { |
|||
this.hiddenDanger(res) |
|||
}) |
|||
}, |
|||
getPersonResponsible() { |
|||
postYhStatisticsSituation({ |
|||
patrolStart: this.paramsData.personResponsibleArr && this.paramsData.personResponsibleArr.length > 1 ? this.paramsData.personResponsibleArr[0] : '', |
|||
patrolEnd: this.paramsData.personResponsibleArr && this.paramsData.personResponsibleArr.length > 1 ? this.paramsData.personResponsibleArr[1] : '' |
|||
}).then((res) => { |
|||
this.personResponsibleChart(res) |
|||
}) |
|||
}, |
|||
personResponsibleChart(res) { |
|||
this.personResponsibleData.city = res.data.xaxis |
|||
const legend = this.personTypeOptions.map(item => { |
|||
return item.dictLabel |
|||
}) |
|||
const series = this.personTypeOptions.map(person => { |
|||
const list = [] |
|||
console.log(res.data) |
|||
res.data.yaxis.forEach(item => { |
|||
let count = 0 |
|||
item.series.forEach(sub => { |
|||
console.log(sub.dutyHolderType) |
|||
if (sub.dutyHolderType == person.dictValue) { |
|||
count = sub.count |
|||
} |
|||
}) |
|||
list.push(count) |
|||
}) |
|||
return { |
|||
name: person.dictLabel, |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
type: 'bar', |
|||
data: list || [] |
|||
} |
|||
}) |
|||
const chart = echarts.init(this.$refs.personResponsible) |
|||
const option = { |
|||
tooltip: { |
|||
trigger: 'axis', |
|||
axisPointer: { |
|||
type: 'cross', |
|||
crossStyle: { |
|||
color: '#999' |
|||
} |
|||
} |
|||
}, |
|||
legend: { |
|||
data: legend, |
|||
right: 'left', |
|||
}, |
|||
grid: { |
|||
left: '2%', |
|||
right: '2%', |
|||
top: '10%', |
|||
bottom: '10%', |
|||
}, |
|||
xAxis: [ |
|||
{ |
|||
type: 'category', |
|||
data: this.personResponsibleData.city, |
|||
axisPointer: { |
|||
type: 'shadow' |
|||
} |
|||
} |
|||
], |
|||
yAxis: [ |
|||
{ |
|||
type: 'value', |
|||
name: '次数', |
|||
interval: 1 |
|||
} |
|||
], |
|||
series: series |
|||
}; |
|||
chart.setOption(option); |
|||
}, |
|||
hiddenDanger(res) { |
|||
this.hiddenDangerData.czNumber = res.data.czNumber |
|||
this.hiddenDangerData.yhNumber = res.data.yhNumber |
|||
this.hiddenDangerData.dfNumber = res.data.dfNumber |
|||
this.hiddenDangerData.city = res.data.xaxis |
|||
const hiddenDangerNumberList = [] |
|||
const handleNumberList = [] |
|||
res.data.yaxis.forEach(item => { |
|||
let hiddenDangerNumber = 0 |
|||
let handleNumber = 0 |
|||
item.series.forEach(sub => { |
|||
if (sub.type == '1') { |
|||
hiddenDangerNumber = sub.count |
|||
} |
|||
if (sub.type == '2') { |
|||
handleNumber = sub.count |
|||
} |
|||
}) |
|||
hiddenDangerNumberList.push(hiddenDangerNumber) |
|||
handleNumberList.push(handleNumber) |
|||
}) |
|||
this.hiddenDangerData.hiddenDangerNumber = hiddenDangerNumberList |
|||
this.hiddenDangerData.handleNumber = handleNumberList |
|||
const chart = echarts.init(this.$refs.hiddenDanger) |
|||
const option = { |
|||
tooltip: { |
|||
trigger: 'axis', |
|||
axisPointer: { |
|||
type: 'cross', |
|||
crossStyle: { |
|||
color: '#999' |
|||
} |
|||
} |
|||
}, |
|||
grid: { |
|||
left: '2%', |
|||
right: '2%', |
|||
top: '10%', |
|||
bottom: '10%', |
|||
}, |
|||
legend: { |
|||
data: ['隐患数量', '处理数量'], |
|||
right: 'left', |
|||
}, |
|||
xAxis: [ |
|||
{ |
|||
type: 'category', |
|||
data: this.hiddenDangerData.city, |
|||
axisPointer: { |
|||
type: 'shadow' |
|||
} |
|||
} |
|||
], |
|||
yAxis: [ |
|||
{ |
|||
type: 'value', |
|||
interval: 1, |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
name: '隐患数量', |
|||
type: 'bar', |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
itemStyle: { |
|||
color: '#165DFF', |
|||
}, |
|||
data: this.hiddenDangerData.hiddenDangerNumber |
|||
}, |
|||
{ |
|||
name: '处理数量', |
|||
type: 'bar', |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
itemStyle: { |
|||
color: '#28CE8E', |
|||
}, |
|||
data: this.hiddenDangerData.handleNumber |
|||
}, |
|||
] |
|||
}; |
|||
chart.setOption(option); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
|
|||
.body { |
|||
width: 100%; |
|||
padding-left: 24px; |
|||
.top-title { |
|||
height: 40px; |
|||
background-color: white; |
|||
display: flex; |
|||
padding-left: 16px; |
|||
align-items: center; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
.table-box { |
|||
width: 100%; |
|||
margin-top: 24px; |
|||
background-color: white; |
|||
.title { |
|||
padding-left: 20px; |
|||
position: relative; |
|||
&::before { |
|||
position: absolute; |
|||
left: 0; |
|||
top: 0; |
|||
content: ""; |
|||
width: 4px; |
|||
height: 16px; |
|||
background-color: #1890ff; |
|||
} |
|||
} |
|||
.cardList { |
|||
display: flex; |
|||
justify-content: space-around; |
|||
|
|||
.card { |
|||
width: 33%; |
|||
height: 102px; |
|||
border-radius: 8px; |
|||
padding: 16px 24px; |
|||
margin: 8px; |
|||
box-sizing: border-box; |
|||
border: 1px solid #9FD3CA; |
|||
background: linear-gradient(180deg, #EAFFFC 0%, rgba(222, 255, 250, 0) 100%), #FFFFFF; |
|||
.header { |
|||
font-size: 16px; |
|||
} |
|||
.content { |
|||
font-size: 32px; |
|||
font-weight: 500; |
|||
line-height: normal; |
|||
letter-spacing: 0em; |
|||
color: #31A08E; |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
.personResponsible { |
|||
width: 100%; |
|||
height: 295px; |
|||
} |
|||
.hiddenDanger { |
|||
width: 100%; |
|||
height: 290px; |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,366 @@ |
|||
<template> |
|||
<div class="body slider-right"> |
|||
|
|||
<div class="top-title">巡查统计分析</div> |
|||
<div class="table-box slider-right-body"> |
|||
<div class="title mb-8">责任人巡查情况概览</div> |
|||
|
|||
<div class="search-item flex items-center mb-8"> |
|||
<span class="search-label">巡查周期</span> |
|||
<el-date-picker |
|||
clearable |
|||
size="small" |
|||
class="ml-10" |
|||
v-model="paramsData.personResponsibleArr" |
|||
@change="getPersonResponsible" |
|||
type="daterange" |
|||
placeholder="开始日期" |
|||
value-format="yyyy-MM-dd" |
|||
></el-date-picker> |
|||
</div> |
|||
<div ref="personResponsible" class="personResponsible mb-8"></div> |
|||
<div class="title mb-8">巡查隐患概览</div> |
|||
|
|||
<div class="search-form flex flex-wrap mb-8"> |
|||
<div class="search-item flex items-center mr-8"> |
|||
<span class="search-label">巡查周期</span> |
|||
<el-date-picker |
|||
clearable |
|||
size="small" |
|||
class="ml-10" |
|||
v-model="paramsData.hiddenDangerArr" |
|||
@change="gethiddenDanger" |
|||
type="daterange" |
|||
placeholder="开始日期" |
|||
value-format="yyyy-MM-dd" |
|||
></el-date-picker> |
|||
</div> |
|||
|
|||
<div class="search-item flex items-center mr-8"> |
|||
<span class="search-label">行政区划</span> |
|||
<el-cascader |
|||
class="ml-10 search-input" |
|||
ref="cascader" |
|||
@change="gethiddenDanger" |
|||
v-model="paramsData.adcd" |
|||
:props="areasOptionProps" |
|||
placeholder="请选择行政区划" |
|||
clearable |
|||
size="small" |
|||
> |
|||
</el-cascader> |
|||
</div> |
|||
</div> |
|||
<div class="cardList"> |
|||
<div class="total card"> |
|||
<div class="header">堤防数量(段)</div> |
|||
<div class="content">{{ hiddenDangerData.dfNumber }}</div> |
|||
</div> |
|||
<div class="major card"> |
|||
<div class="header">隐患数量(个)</div> |
|||
<div class="content">{{ hiddenDangerData.yhNumber }}</div> |
|||
</div> |
|||
<div class="handle card"> |
|||
<div class="header">处理数量(个)</div> |
|||
<div class="content">{{ hiddenDangerData.czNumber }}</div> |
|||
</div> |
|||
</div> |
|||
<div ref="hiddenDanger" class="hiddenDanger"></div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import * as echarts from "echarts"; |
|||
import { cascaderLazyLoad } from "@/utils/elUtils"; |
|||
|
|||
import { |
|||
postDfStatisticsSituation, |
|||
postDfStatisticsHiddenDanger, |
|||
} from "@/api/sluice"; |
|||
import {postYhStatisticsHiddenDanger} from "@/api/dike"; |
|||
export default { |
|||
data () { |
|||
return { |
|||
personTypeOptions: '', |
|||
areasOptionProps: { |
|||
emitPath: false, |
|||
checkStrictly: true, //选择任意一级 |
|||
expandTrigger: "hover", |
|||
lazy: true, |
|||
lazyLoad: cascaderLazyLoad, |
|||
}, |
|||
paramsData: { |
|||
personResponsibleArr: [], |
|||
hiddenDangerArr: [], |
|||
adcd: '' |
|||
}, |
|||
personResponsibleData: { |
|||
city: ['广州市','韶关市','深圳市','珠海市','汕头市','佛山市','江门市','湛江市','茂名市','肇庆市','惠州市','梅州市','汕尾市','河源市','阳江市','清远市','东莞市','中山市','潮州市','揭阳市','云浮市'], |
|||
administration: [50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50], |
|||
technology: [100,100,100,100,10,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100], |
|||
patrol: [150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150] |
|||
}, |
|||
hiddenDangerData: { |
|||
czNumber: 0, |
|||
dfNumber: 0, |
|||
yhNumber: 0, |
|||
city: ['广州市','韶关市','深圳市','珠海市','汕头市','佛山市','江门市','湛江市','茂名市','肇庆市','惠州市','梅州市','汕尾市','河源市','阳江市','清远市','东莞市','中山市','潮州市','揭阳市','云浮市'], |
|||
hiddenDangerNumber: [50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50], |
|||
handleNumber: [100,100,100,100,10,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100] |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
this.getDicts("person_type").then((response) => { |
|||
this.personTypeOptions = response.data; |
|||
}); |
|||
}, |
|||
mounted() { |
|||
this.getPersonResponsible() |
|||
this.gethiddenDanger() |
|||
}, |
|||
methods: { |
|||
gethiddenDanger() { |
|||
const node = this.$refs.cascader.getCheckedNodes() |
|||
postYhStatisticsHiddenDanger({ |
|||
adcd: this.paramsData.adcd, |
|||
districtLevelFlag: node[0] && node[0].level === 3 ? 1 : 0, |
|||
patrolStart: this.paramsData.hiddenDangerArr && this.paramsData.hiddenDangerArr.length > 1 ? this.paramsData.hiddenDangerArr[0] : '', |
|||
patrolEnd: this.paramsData.hiddenDangerArr && this.paramsData.hiddenDangerArr.length > 1 ? this.paramsData.hiddenDangerArr[1] : '' |
|||
}).then((res) => { |
|||
this.hiddenDanger(res) |
|||
}) |
|||
}, |
|||
getPersonResponsible() { |
|||
console.log(this.paramsData) |
|||
postDfStatisticsSituation({ |
|||
patrolStart: this.paramsData.personResponsibleArr && this.paramsData.personResponsibleArr.length > 1 ? this.paramsData.personResponsibleArr[0] : '', |
|||
patrolEnd: this.paramsData.personResponsibleArr && this.paramsData.personResponsibleArr.length > 1 ? this.paramsData.personResponsibleArr[1] : '' |
|||
}).then((res) => { |
|||
this.personResponsibleChart(res) |
|||
}) |
|||
}, |
|||
personResponsibleChart(res) { |
|||
this.personResponsibleData.city = res.data.xaxis |
|||
const legend = this.personTypeOptions.map(item => { |
|||
return item.dictLabel |
|||
}) |
|||
const series = this.personTypeOptions.map(person => { |
|||
const list = [] |
|||
res.data.yaxis.forEach(item => { |
|||
let count = 0 |
|||
item.series.forEach(sub => { |
|||
if (sub.dutyHolderType == person.dictValue) { |
|||
count = sub.count |
|||
} |
|||
}) |
|||
list.push(count) |
|||
}) |
|||
return { |
|||
name: person.dictLabel, |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
type: 'bar', |
|||
data: list || [] |
|||
} |
|||
}) |
|||
const chart = echarts.init(this.$refs.personResponsible) |
|||
const option = { |
|||
tooltip: { |
|||
trigger: 'axis', |
|||
axisPointer: { |
|||
type: 'cross', |
|||
crossStyle: { |
|||
color: '#999' |
|||
} |
|||
} |
|||
}, |
|||
legend: { |
|||
data: legend, |
|||
right: 'left', |
|||
}, |
|||
grid: { |
|||
left: '2%', |
|||
right: '2%', |
|||
top: '10%', |
|||
bottom: '10%', |
|||
}, |
|||
xAxis: [ |
|||
{ |
|||
type: 'category', |
|||
data: this.personResponsibleData.city, |
|||
axisPointer: { |
|||
type: 'shadow' |
|||
} |
|||
} |
|||
], |
|||
yAxis: [ |
|||
{ |
|||
type: 'value', |
|||
name: '次数', |
|||
interval: 1 |
|||
} |
|||
], |
|||
series: series |
|||
}; |
|||
chart.setOption(option); |
|||
}, |
|||
hiddenDanger(res) { |
|||
this.hiddenDangerData.czNumber = res.data.czNumber |
|||
this.hiddenDangerData.yhNumber = res.data.yhNumber |
|||
this.hiddenDangerData.dfNumber = res.data.dfNumber |
|||
this.hiddenDangerData.city = res.data.xaxis |
|||
const hiddenDangerNumberList = [] |
|||
const handleNumberList = [] |
|||
res.data.yaxis.forEach(item => { |
|||
let hiddenDangerNumber = 0 |
|||
let handleNumber = 0 |
|||
item.series.forEach(sub => { |
|||
if (sub.type == '1') { |
|||
hiddenDangerNumber = sub.count |
|||
} |
|||
if (sub.type == '2') { |
|||
handleNumber = sub.count |
|||
} |
|||
}) |
|||
hiddenDangerNumberList.push(hiddenDangerNumber) |
|||
handleNumberList.push(handleNumber) |
|||
}) |
|||
this.hiddenDangerData.hiddenDangerNumber = hiddenDangerNumberList |
|||
this.hiddenDangerData.handleNumber = handleNumberList |
|||
const chart = echarts.init(this.$refs.hiddenDanger) |
|||
const option = { |
|||
tooltip: { |
|||
trigger: 'axis', |
|||
axisPointer: { |
|||
type: 'cross', |
|||
crossStyle: { |
|||
color: '#999' |
|||
} |
|||
} |
|||
}, |
|||
grid: { |
|||
left: '2%', |
|||
right: '2%', |
|||
top: '10%', |
|||
bottom: '10%', |
|||
}, |
|||
legend: { |
|||
data: ['隐患数量', '处理数量'], |
|||
right: 'left', |
|||
}, |
|||
xAxis: [ |
|||
{ |
|||
type: 'category', |
|||
data: this.hiddenDangerData.city, |
|||
axisPointer: { |
|||
type: 'shadow' |
|||
} |
|||
} |
|||
], |
|||
yAxis: [ |
|||
{ |
|||
type: 'value', |
|||
interval: 1, |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
name: '隐患数量', |
|||
type: 'bar', |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
itemStyle: { |
|||
color: '#165DFF', |
|||
}, |
|||
data: this.hiddenDangerData.hiddenDangerNumber |
|||
}, |
|||
{ |
|||
name: '处理数量', |
|||
type: 'bar', |
|||
barGap: 0, |
|||
barWidth: 10, |
|||
itemStyle: { |
|||
color: '#28CE8E', |
|||
}, |
|||
data: this.hiddenDangerData.handleNumber |
|||
}, |
|||
] |
|||
}; |
|||
chart.setOption(option); |
|||
}, |
|||
handleChangeQuery() { |
|||
this.initData(); |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
|
|||
.body { |
|||
width: 100%; |
|||
padding-left: 24px; |
|||
.top-title { |
|||
height: 40px; |
|||
background-color: white; |
|||
display: flex; |
|||
padding-left: 16px; |
|||
align-items: center; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
.table-box { |
|||
width: 100%; |
|||
margin-top: 24px; |
|||
background-color: white; |
|||
.title { |
|||
padding-left: 20px; |
|||
position: relative; |
|||
&::before { |
|||
position: absolute; |
|||
left: 0; |
|||
top: 0; |
|||
content: ""; |
|||
width: 4px; |
|||
height: 16px; |
|||
background-color: #1890ff; |
|||
} |
|||
} |
|||
.cardList { |
|||
display: flex; |
|||
justify-content: space-around; |
|||
|
|||
.card { |
|||
width: 33%; |
|||
height: 102px; |
|||
border-radius: 8px; |
|||
padding: 16px 24px; |
|||
margin: 8px; |
|||
box-sizing: border-box; |
|||
border: 1px solid #9FD3CA; |
|||
background: linear-gradient(180deg, #EAFFFC 0%, rgba(222, 255, 250, 0) 100%), #FFFFFF; |
|||
.header { |
|||
font-size: 16px; |
|||
} |
|||
.content { |
|||
font-size: 32px; |
|||
font-weight: 500; |
|||
line-height: normal; |
|||
letter-spacing: 0em; |
|||
color: #31A08E; |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
.personResponsible { |
|||
width: 100%; |
|||
height: 295px; |
|||
} |
|||
.hiddenDanger { |
|||
width: 100%; |
|||
height: 290px; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue