|
|
|
@ -4,20 +4,21 @@ |
|
|
|
|
<div class="gradient"> |
|
|
|
|
智慧工地数据大屏 |
|
|
|
|
</div> |
|
|
|
|
<div class="xitong" @click="Jump()"></div> |
|
|
|
|
</div> |
|
|
|
|
<div class="main-box"> |
|
|
|
|
<div class="top-box"> |
|
|
|
|
<!-- 项目介绍 --> |
|
|
|
|
<div class="top-item"> |
|
|
|
|
<div class="boxtitle">项目介绍</div> |
|
|
|
|
<div class="boxcontent" style="display: flex;flex-direction: column;padding: 15px 20px;"> |
|
|
|
|
<div class="displaybox" style="margin-bottom: 10px;"> |
|
|
|
|
<div class="boxcontent" style="display: flex;flex-direction: column;padding: .9375rem 1.25rem;"> |
|
|
|
|
<div class="displaybox" style="margin-bottom: .625rem;"> |
|
|
|
|
<div class="diamond"></div>项目名称: 新火工区建设项目 |
|
|
|
|
</div> |
|
|
|
|
<div class="displaybox" style="margin-bottom: 12px;"> |
|
|
|
|
<div class="displaybox" style="margin-bottom: .75rem;"> |
|
|
|
|
<div class="diamond" style="background-color: #FFAE3C;"></div>工地负责人:周运来 |
|
|
|
|
</div> |
|
|
|
|
<div class="chaochu" style="flex: 1;font-size: 13px;"> |
|
|
|
|
<div class="chaochu" style="flex: 1;font-size: .8125rem;"> |
|
|
|
|
项目简介:本项目拟新建单体包括一期:5305#、5601#、5806#、5826#、5827#、7310#等6栋单体建筑,二期:5602#、5606#、5607#、5606#、5609#、5610#、5701#、5801#、5801-1#、5802#、5802-1#、5803#、5805#、5807#、5808#、5810#、5810-1#、5811#、5811-1#、5812#、5813#、5815#、5816#、5816-1#、5817#、5818#、5821#、5822#、5828#、5829#、5830#、5831#、5909#等34栋单体建筑,建筑物基础形式为杯形基础、独立基础、条形基础,主体结构为框架结构、排架结构。抗爆间室、屏院墙体为钢筋混凝土剪力墙结构。 |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -28,25 +29,25 @@ |
|
|
|
|
<div class="boxcontent"> |
|
|
|
|
<div class="overview-top"> |
|
|
|
|
<div class="data-font"> |
|
|
|
|
<span class="number-font">105<span>天</span></span> |
|
|
|
|
<span class="number-font">{{ state.gk.list }} <span>天</span></span> |
|
|
|
|
<span>总工期</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="data-font jbborder"> |
|
|
|
|
<span class="number-font">105<span>%</span></span> |
|
|
|
|
<span class="number-font">{{ parseFloat(state.gk.gcjd).toFixed(0) }}<span>%</span></span> |
|
|
|
|
<span>工程进度</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="data-font jbborder"> |
|
|
|
|
<span class="number-font">105<span>天</span></span> |
|
|
|
|
<span class="number-font">{{ state.gk.ysg }}<span>天</span></span> |
|
|
|
|
<span>已施工</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="overview-top" style="grid-template-columns: repeat(2, 1fr);border-bottom: 0;"> |
|
|
|
|
<div class="data-font "> |
|
|
|
|
<span class="number-font">5<span>人</span></span> |
|
|
|
|
<span class="number-font">{{ state.gk.sg }}<span>人</span></span> |
|
|
|
|
<span>施工人员</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="data-font jbborder"> |
|
|
|
|
<span class="number-font">5<span>人</span></span> |
|
|
|
|
<span class="number-font">{{ state.gk.gl }}<span>人</span></span> |
|
|
|
|
<span>管理人员</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -57,18 +58,18 @@ |
|
|
|
|
<div class="boxtitle">智能资源调度</div> |
|
|
|
|
<div class="boxcontent" style="display: flex;flex-direction: column;justify-content: space-around;"> |
|
|
|
|
<div v-if="state.dispatchList.length == 0"> |
|
|
|
|
<el-empty :image-size="100" description="暂无预警" /> |
|
|
|
|
<el-empty :image-size="'6.25rem'" description="暂无预警" /> |
|
|
|
|
</div> |
|
|
|
|
<div v-for="item, index in state.dispatchList.slice(0, 2)"> |
|
|
|
|
<div class="jd-title"> |
|
|
|
|
<span style="margin-right: auto;">{{ item.planName }}</span> |
|
|
|
|
<div> |
|
|
|
|
<span>进度</span> |
|
|
|
|
<span style="margin-left: 10px;font-weight: bold;">{{ item.currentProgress |
|
|
|
|
<span style="margin-left: .625rem;font-weight: bold;">{{ item.currentProgress |
|
|
|
|
}}%</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div style="width: 100%;margin: 8px 0;"><el-progress class="jdt" color="#1FFFDA" |
|
|
|
|
<div style="width: 100%;margin: .5rem 0;"><el-progress class="jdt" color="#1FFFDA" |
|
|
|
|
:text-inside="true" :stroke-width="12" :percentage="Number(item.currentProgress)"> |
|
|
|
|
<span></span> |
|
|
|
|
</el-progress></div> |
|
|
|
@ -83,7 +84,7 @@ |
|
|
|
|
<div class="top-item"> |
|
|
|
|
<div class="boxtitle">工程日志</div> |
|
|
|
|
<div class="boxcontent" |
|
|
|
|
style="display: flex;flex-direction: column;justify-content: space-around;padding: 15px 20px;"> |
|
|
|
|
style="display: flex;flex-direction: column;justify-content: space-around;padding: .9375rem 1.25rem;"> |
|
|
|
|
<div class="log-top"> |
|
|
|
|
<div class="tq-box"> |
|
|
|
|
<img src="../../assets/images/riqi.png" alt=""> |
|
|
|
@ -133,7 +134,7 @@ |
|
|
|
|
<el-tooltip v-if="state.logList && state.logList.length > 0" |
|
|
|
|
class="box-item" effect="dark" |
|
|
|
|
:content="state.logList[0].constructionSituation" placement="top"> |
|
|
|
|
<div style="width: 160px;" class="chaochutwo"> |
|
|
|
|
<div style="width: 10rem;" class="chaochutwo"> |
|
|
|
|
{{ state.logList[0].constructionSituation }}</div> |
|
|
|
|
</el-tooltip> |
|
|
|
|
<span v-else>-</span> |
|
|
|
@ -154,10 +155,10 @@ |
|
|
|
|
<el-empty :image-size="100" description="暂无预警" /> |
|
|
|
|
</div> |
|
|
|
|
<div v-else class="boxcontent" |
|
|
|
|
style="display: grid;grid-template-columns: 1fr 1fr ;grid-gap: 12px;padding: 25px 21px;"> |
|
|
|
|
style="display: grid;grid-template-columns: 1fr 1fr ;grid-gap: .75rem;padding: 1.5625rem 1.3125rem;"> |
|
|
|
|
<div class="yj-box" v-for="item, index in state.warnList.slice(0, 2)" :key="index"> |
|
|
|
|
<img class="jgbj" src="../../assets/images/jglv.png" alt=""> |
|
|
|
|
<div style="text-align: center;font-size: 14px;">{{ item.planName }}</div> |
|
|
|
|
<div style="text-align: center;font-size: .875rem;">{{ item.planName }}</div> |
|
|
|
|
<div>开始时间:{{ item.startTime }}</div> |
|
|
|
|
<div>计划结束时间:{{ item.endTime }}</div> |
|
|
|
|
<div style="display: flex;align-items: center;">当前进度:<div style="flex: 1;"> <el-progress |
|
|
|
@ -165,7 +166,7 @@ |
|
|
|
|
</el-progress> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div>备注:{{ item.description }}</div> |
|
|
|
|
<div>预警信息:{{ item.warnInfo?item.warnInfo:'-' }}</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -173,11 +174,11 @@ |
|
|
|
|
<div class="top-item" style="overflow: hidden;"> |
|
|
|
|
<div class="boxtitle">进度监控</div> |
|
|
|
|
<div class="center-item"> |
|
|
|
|
<div class="alarm-table-header" style=" grid-template-columns: 1.5fr 2fr 3fr 2.5fr;"> |
|
|
|
|
<div class="alarm-table-header" style=" grid-template-columns: 1.5fr 2.5fr 3fr 2.5fr;"> |
|
|
|
|
<div>序号</div> |
|
|
|
|
<div>任务</div> |
|
|
|
|
<div>时间</div> |
|
|
|
|
<div>进度状态</div> |
|
|
|
|
<div>累计进度</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="scooll-box" ref="monitor"> |
|
|
|
|
<vue3-seamless-scroll style="height: 100%;overflow: hidden;" :scrollbar="{ |
|
|
|
@ -186,14 +187,14 @@ |
|
|
|
|
}" :list="state.monitorList" :hoverStop="true" :hover="true" :step="0.3"> |
|
|
|
|
<div v-for="item, index in state.monitorList" :key="index" |
|
|
|
|
:class="index % 2 != 0 ? 'dark' : 'light'" class="table-item" |
|
|
|
|
style=" grid-template-columns: 1.5fr 2fr 3fr 2.5fr;"> |
|
|
|
|
style=" grid-template-columns: 1.5fr 2.5fr 3fr 2.5fr;"> |
|
|
|
|
<div>{{ index + 1 }}</div> |
|
|
|
|
<div> |
|
|
|
|
{{ 2 }} |
|
|
|
|
{{ item.planName }} |
|
|
|
|
</div> |
|
|
|
|
<div>{{ 3 }}</div> |
|
|
|
|
<div>{{ item.keystageTime }}</div> |
|
|
|
|
<div> |
|
|
|
|
{{ 4 }} |
|
|
|
|
{{ item.accumulativeProgress ? item.accumulativeProgress : 0 }}% |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="zanwu" v-if="state.monitorList.length == 0"> |
|
|
|
@ -272,9 +273,10 @@ import { ref, onMounted, reactive, nextTick } from 'vue' |
|
|
|
|
import { echartsZhu, echartsBing } from "./echartsOptions"; |
|
|
|
|
import { echart } from "../../echarts"; |
|
|
|
|
import { stausList } from './options' |
|
|
|
|
import { getRecordPage, iengineerlogList, querywarn, iuserworkerType, iresourcescheduleList } from './api' |
|
|
|
|
import { getRecordPage, iengineerlogList, querywarn, iuserworkerType, iresourcescheduleList, vehiclestat, statistics, dataOverview, iwarnlist } from './api' |
|
|
|
|
const { proxy } = getCurrentInstance(); |
|
|
|
|
const tableTrue = ref(false); |
|
|
|
|
const router = useRouter(); |
|
|
|
|
const state = reactive({ |
|
|
|
|
echartsBing, |
|
|
|
|
echartsZhu, |
|
|
|
@ -285,18 +287,66 @@ const state = reactive({ |
|
|
|
|
monitorList: [], |
|
|
|
|
logList: [], |
|
|
|
|
dispatchList: [], |
|
|
|
|
gk: { |
|
|
|
|
"sg": 0, |
|
|
|
|
"gl": 0, |
|
|
|
|
"list": 0, |
|
|
|
|
"ysg": 0, |
|
|
|
|
gcjd: "" |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
onMounted(async () => { |
|
|
|
|
await getDataOverview() |
|
|
|
|
await getIresourceschedule() |
|
|
|
|
await getIuserworkerType() |
|
|
|
|
await engineeringLog() |
|
|
|
|
await getQuerywarn() |
|
|
|
|
await accessControl() |
|
|
|
|
await getEcharts() |
|
|
|
|
await getStatistics() |
|
|
|
|
// await getVehiclestat() |
|
|
|
|
// await accessControl() |
|
|
|
|
|
|
|
|
|
state.loading = false |
|
|
|
|
}) |
|
|
|
|
const scrollContainer = ref() |
|
|
|
|
function getIresourceschedule(params) { |
|
|
|
|
function Jump() { |
|
|
|
|
router.push({ |
|
|
|
|
path: "/constructionScheduling/productionPlan" |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
function getDataOverview(params) { |
|
|
|
|
dataOverview().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.gk = res.data.data |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
//进度监控 |
|
|
|
|
function getStatistics() { |
|
|
|
|
statistics().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.monitorList = res.data |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
function getVehiclestat() { |
|
|
|
|
vehiclestat().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
nextTick(() => { |
|
|
|
|
let car = state.echart({ |
|
|
|
|
id: 'car', |
|
|
|
|
grid: state.echartsBing({ |
|
|
|
|
total: res.data.personal + res.data.aotomobile, |
|
|
|
|
data: [ |
|
|
|
|
{ value: res.data.personal, name: '施工机械数' }, |
|
|
|
|
{ value: res.data.aotomobile, name: '运输车辆数' } |
|
|
|
|
] |
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
function getIresourceschedule() { |
|
|
|
|
iresourcescheduleList().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.dispatchList = res.data.list |
|
|
|
@ -304,15 +354,15 @@ function getIresourceschedule(params) { |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
// 工种分布 |
|
|
|
|
function getIuserworkerType(params) { |
|
|
|
|
function getIuserworkerType() { |
|
|
|
|
iuserworkerType().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
nextTick(() => { |
|
|
|
|
let staff = state.echart({ |
|
|
|
|
state.echart({ |
|
|
|
|
id: 'staff', |
|
|
|
|
grid: state.echartsZhu({ |
|
|
|
|
ydata: res.data.map(item => item.name), |
|
|
|
|
xdata: res.data.map(item => item.value) |
|
|
|
|
ydata: res.data.map(item => item.value), |
|
|
|
|
xdata: res.data.map(item => item.name) |
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
@ -321,11 +371,12 @@ function getIuserworkerType(params) { |
|
|
|
|
} |
|
|
|
|
// 进度预警 |
|
|
|
|
function getQuerywarn(params) { |
|
|
|
|
proxy.$getsystemdict('purpose_expenses').then((res) => { |
|
|
|
|
proxy.$getsystemdict('purpose_expenses').then(async (res) => { |
|
|
|
|
if (res.length > 0) { |
|
|
|
|
querywarn({ day: res[0].value }).then((res) => { |
|
|
|
|
// await querywarn({ day: res[0].value }) |
|
|
|
|
await iwarnlist().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.warnList = res.data |
|
|
|
|
state.warnList = res.data.list |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -346,20 +397,20 @@ function engineeringLog(params) { |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
function getEcharts() { |
|
|
|
|
nextTick(() => { |
|
|
|
|
|
|
|
|
|
let car = state.echart({ |
|
|
|
|
id: 'car', |
|
|
|
|
grid: state.echartsBing({ |
|
|
|
|
|
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
<style scoped lang='scss'> |
|
|
|
|
.xitong { |
|
|
|
|
width: 7rem; |
|
|
|
|
height: 2.5rem; |
|
|
|
|
position: absolute; |
|
|
|
|
left: 1.875rem; |
|
|
|
|
top: 5.625rem; |
|
|
|
|
background: url('../../assets/images/fh.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
cursor: pointer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.chaochutwo { |
|
|
|
|
white-space: nowrap; |
|
|
|
|
/* 不换行 */ |
|
|
|
@ -369,40 +420,40 @@ function getEcharts() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.jgbj { |
|
|
|
|
width: 36px; |
|
|
|
|
height: 36px; |
|
|
|
|
width: 2.25rem; |
|
|
|
|
height: 2.25rem; |
|
|
|
|
position: absolute; |
|
|
|
|
left: 14px; |
|
|
|
|
top: -12px; |
|
|
|
|
left: .875rem; |
|
|
|
|
top: -0.75rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
:deep(.jd .el-progress__text) { |
|
|
|
|
color: #fff !important; |
|
|
|
|
min-width: 40px !important; |
|
|
|
|
min-width: 2.5rem !important; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.yj-box { |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 500; |
|
|
|
|
font-size: 13px; |
|
|
|
|
font-size: .8125rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
background: url('../../assets/images/yjbj.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
display: flex; |
|
|
|
|
padding: 0 8px; |
|
|
|
|
padding: 0 .5rem; |
|
|
|
|
flex-direction: column; |
|
|
|
|
position: relative; |
|
|
|
|
|
|
|
|
|
>div { |
|
|
|
|
margin-top: 14px; |
|
|
|
|
margin-top: .875rem; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.zanwu { |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
text-align: center; |
|
|
|
|
color: #fff; |
|
|
|
|
padding: 10px; |
|
|
|
|
padding: .625rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.table-item>div { |
|
|
|
@ -410,7 +461,7 @@ function getEcharts() { |
|
|
|
|
align-items: center; |
|
|
|
|
height: 100%; |
|
|
|
|
justify-content: center; |
|
|
|
|
border-right: 1px solid #103B54; |
|
|
|
|
border-right: .0625rem solid #103B54; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.table-item>div:last-child { |
|
|
|
@ -422,27 +473,27 @@ function getEcharts() { |
|
|
|
|
background: rgba(35, 92, 96, 0.6); |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: 1fr 1.5fr 2fr 4.5fr 2fr 3.5fr 2.5fr; |
|
|
|
|
min-height: 32px; |
|
|
|
|
min-height: 2rem; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #ffffff; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.scooll-box { |
|
|
|
|
overflow: hidden; |
|
|
|
|
width: 100%; |
|
|
|
|
height: calc(100% - 32px); |
|
|
|
|
height: calc(100% - 2rem); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.alarm-table-header>div { |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #ffffff; |
|
|
|
|
display: flex; |
|
|
|
|
align-items: center; |
|
|
|
|
height: 100%; |
|
|
|
|
justify-content: center; |
|
|
|
|
border-right: 1px solid #103B54; |
|
|
|
|
border-right: .0625rem solid #103B54; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.alarm-table-header>div:last-child { |
|
|
|
@ -451,20 +502,20 @@ function getEcharts() { |
|
|
|
|
|
|
|
|
|
.alarm-table-header { |
|
|
|
|
width: 100%; |
|
|
|
|
height: 32px; |
|
|
|
|
height: 2rem; |
|
|
|
|
background: rgba(50, 165, 210, 0.4); |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: 1fr 1.5fr 2fr 4.5fr 2fr 3.5fr 2.5fr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.center-item { |
|
|
|
|
height: calc(100% - 48px); |
|
|
|
|
height: calc(100% - 3rem); |
|
|
|
|
width: 100%; |
|
|
|
|
margin-top: 8px; |
|
|
|
|
margin-top: .5rem; |
|
|
|
|
background: url('../../assets/images/cneterbj.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
overflow: hidden; |
|
|
|
|
padding: 25px; |
|
|
|
|
padding: 1.5625rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.dark { |
|
|
|
@ -479,7 +530,7 @@ function getEcharts() { |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: 1fr; |
|
|
|
|
grid-template-rows: 1fr 1fr; |
|
|
|
|
grid-gap: 20px; |
|
|
|
|
grid-gap: 1.25rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.center-top-item { |
|
|
|
@ -489,11 +540,11 @@ function getEcharts() { |
|
|
|
|
|
|
|
|
|
.bottom-box { |
|
|
|
|
width: 100%; |
|
|
|
|
height: calc(66.66% - 20px); |
|
|
|
|
margin-top: 20px; |
|
|
|
|
height: calc(66.66% - 1.25rem); |
|
|
|
|
margin-top: 1.25rem; |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: 1fr 2fr 1fr; |
|
|
|
|
grid-gap: 20px; |
|
|
|
|
grid-gap: 1.25rem; |
|
|
|
|
overflow: hidden; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -501,7 +552,7 @@ function getEcharts() { |
|
|
|
|
width: 100%; |
|
|
|
|
border-collapse: collapse; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
background-color: #08223b; |
|
|
|
|
/* 深蓝色背景,可根据实际需求调整颜色值 */ |
|
|
|
@ -509,17 +560,17 @@ function getEcharts() { |
|
|
|
|
|
|
|
|
|
.construction-table th, |
|
|
|
|
.construction-table td { |
|
|
|
|
border: 1px solid #103B54; |
|
|
|
|
border: .0625rem solid #103B54; |
|
|
|
|
/* 蓝色边框,可根据实际需求调整颜色值 */ |
|
|
|
|
text-align: left; |
|
|
|
|
padding: 8px 10px; |
|
|
|
|
padding: .5rem .625rem; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.construction-table th { |
|
|
|
|
background: rgba(50, 165, 210, 0.4); |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
/* 表头背景色,可根据实际需求调整颜色值 */ |
|
|
|
|
} |
|
|
|
@ -536,17 +587,17 @@ function getEcharts() { |
|
|
|
|
align-items: center; |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
|
|
|
|
|
>img { |
|
|
|
|
width: 24px; |
|
|
|
|
height: 24px; |
|
|
|
|
width: 1.5rem; |
|
|
|
|
height: 1.5rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
>span:nth-child(2) { |
|
|
|
|
margin-top: 5px; |
|
|
|
|
margin-bottom: 8px; |
|
|
|
|
margin-top: .3125rem; |
|
|
|
|
margin-bottom: .5rem; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -561,22 +612,22 @@ function getEcharts() { |
|
|
|
|
justify-content: flex-end; |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 500; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.jgbox { |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 12px; |
|
|
|
|
font-size: .75rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
display: flex; |
|
|
|
|
align-items: center; |
|
|
|
|
|
|
|
|
|
>img { |
|
|
|
|
height: 20px; |
|
|
|
|
width: 20px; |
|
|
|
|
margin-right: 5px |
|
|
|
|
height: 1.25rem; |
|
|
|
|
width: 1.25rem; |
|
|
|
|
margin-right: .3125rem |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -589,13 +640,13 @@ function getEcharts() { |
|
|
|
|
.overview-top { |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: repeat(3, 1fr); |
|
|
|
|
border-bottom: 1px solid; |
|
|
|
|
border-bottom: .0625rem solid; |
|
|
|
|
border-image: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)) 1 1; |
|
|
|
|
height: 50%; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.jbborder { |
|
|
|
|
border-left: 1px solid transparent !important; |
|
|
|
|
border-left: .0625rem solid transparent !important; |
|
|
|
|
/* 必须设置边框宽度 */ |
|
|
|
|
border-image-source: linear-gradient(to bottom, transparent, white, transparent); |
|
|
|
|
border-image-width: 1; |
|
|
|
@ -607,7 +658,7 @@ function getEcharts() { |
|
|
|
|
.data-font { |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
display: flex; |
|
|
|
|
flex-direction: column; |
|
|
|
@ -619,8 +670,8 @@ function getEcharts() { |
|
|
|
|
.number-font { |
|
|
|
|
font-family: DIN, DIN; |
|
|
|
|
font-weight: 500; |
|
|
|
|
font-size: 24px; |
|
|
|
|
margin-bottom: 10px; |
|
|
|
|
font-size: 1.5rem; |
|
|
|
|
margin-bottom: .625rem; |
|
|
|
|
color: #19F7FF; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -630,39 +681,39 @@ function getEcharts() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.diamond { |
|
|
|
|
width: 5px; |
|
|
|
|
height: 5px; |
|
|
|
|
width: .3125rem; |
|
|
|
|
height: .3125rem; |
|
|
|
|
background-color: #3CFFB1; |
|
|
|
|
transform: rotate(45deg); |
|
|
|
|
transform-origin: top left; |
|
|
|
|
margin-right: 5px; |
|
|
|
|
margin-right: .3125rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.boxcontent { |
|
|
|
|
width: 100%; |
|
|
|
|
height: calc(100% - 47px); |
|
|
|
|
padding: 20px; |
|
|
|
|
height: calc(100% - 2.9375rem); |
|
|
|
|
padding: 1.25rem; |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 14px; |
|
|
|
|
font-size: .875rem; |
|
|
|
|
background: url('../../assets/images/datacontentbj.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
margin-top: 7px; |
|
|
|
|
margin-top: .4375rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.boxtitle { |
|
|
|
|
width: 100%; |
|
|
|
|
height: 40px; |
|
|
|
|
height: 2.5rem; |
|
|
|
|
background: url('../../assets/images/datatitle.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
font-family: Source Han Sans CN, Source Han Sans CN; |
|
|
|
|
font-weight: bold; |
|
|
|
|
font-size: 16px; |
|
|
|
|
font-size: 1rem; |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
display: flex; |
|
|
|
|
align-items: center; |
|
|
|
|
padding: 0 25px; |
|
|
|
|
padding: 0 1.5625rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.top-item { |
|
|
|
@ -675,27 +726,28 @@ function getEcharts() { |
|
|
|
|
height: 33.33%; |
|
|
|
|
display: grid; |
|
|
|
|
grid-template-columns: repeat(4, 1fr); |
|
|
|
|
grid-gap: 20px; |
|
|
|
|
grid-gap: 1.25rem; |
|
|
|
|
overflow: hidden; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.main-box { |
|
|
|
|
width: 100%; |
|
|
|
|
height: calc(100% - 158px); |
|
|
|
|
padding: 0 37px; |
|
|
|
|
padding-bottom: 28px; |
|
|
|
|
height: calc(100% - 9.875rem); |
|
|
|
|
padding: 0 1.875rem; |
|
|
|
|
padding-bottom: 1.75rem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.topheader { |
|
|
|
|
width: 100%; |
|
|
|
|
height: 158px; |
|
|
|
|
height: 9.875rem; |
|
|
|
|
background: url('../../assets/images/datatopbj.png') no-repeat; |
|
|
|
|
background-size: 100% 100%; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: center; |
|
|
|
|
font-weight: 400; |
|
|
|
|
font-size: 52px; |
|
|
|
|
padding-top: 20px; |
|
|
|
|
font-size: 3.25rem; |
|
|
|
|
padding-top: 1.25rem; |
|
|
|
|
position: relative; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.gradient { |
|
|
|
@ -708,6 +760,6 @@ function getEcharts() { |
|
|
|
|
width: 100%; |
|
|
|
|
height: 100vh; |
|
|
|
|
background: #040614; |
|
|
|
|
height: 1080px; |
|
|
|
|
height: 67.5rem; |
|
|
|
|
} |
|
|
|
|
</style> |