|
|
|
@ -165,16 +165,19 @@ |
|
|
|
|
<div v-else class="boxcontent" |
|
|
|
|
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=""> |
|
|
|
|
<img v-if="index == 0" class="jgbj" src="../../assets/images/jglv.png" alt=""> |
|
|
|
|
<img v-else class="jgbj" src="../../assets/images/jgred.png" alt=""> |
|
|
|
|
<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 |
|
|
|
|
color="#0AA0FE" :stroke-width="8" :percentage="Number(item.accumulativeProgress?item.accumulativeProgress:0)" class="jd"> |
|
|
|
|
color="#0AA0FE" :stroke-width="8" |
|
|
|
|
:percentage="Number(item.currentProgress ? item.currentProgress : 0)" |
|
|
|
|
class="jd"> |
|
|
|
|
</el-progress> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div>预警信息:{{ item.warnInfo ? item.warnInfo : '-' }}</div> |
|
|
|
|
<div>备注:{{ item.warnInfo ? item.warnInfo : '-' }}</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -248,10 +251,11 @@ |
|
|
|
|
{{ item.startSwingTime }} |
|
|
|
|
</div> |
|
|
|
|
<div>{{ item.imageType == 1 ? '内部人员' : item.imageType == 2 ? '访客' : '-' }}</div> |
|
|
|
|
<div> |
|
|
|
|
<div |
|
|
|
|
:style="{ color: item.maskState == 2 ? '#FF0A0A' : item.maskState == 3 ? '#00E287' : '#fff' }"> |
|
|
|
|
{{ item.maskState == 3 ? '带口罩' : item.maskState == 2 ? '没带口罩' : '未识别' }} |
|
|
|
|
</div> |
|
|
|
|
<div :style="{ color: item.overTemp ? 'red' : 'green' }"> |
|
|
|
|
<div :style="{ color: item.overTemp ? '#FF0A0A' : '#00E287' }"> |
|
|
|
|
{{ item.overTemp ? '是' : '否' }} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -282,14 +286,17 @@ |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<promptfrom></promptfrom> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
<script setup> |
|
|
|
|
import promptfrom from "../../components/prompt/index"; |
|
|
|
|
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, vehiclestat, statistics, dataOverview, iwarnlist } from './api' |
|
|
|
|
import { retryAndRepeatRequest } from "@/utils/vctgo"; |
|
|
|
|
import { getRecordPage, iengineerlogList, iuserworkerType, iresourcescheduleList, vehiclestat, statistics, dataOverview, iwarnlist } from './api' |
|
|
|
|
const { proxy } = getCurrentInstance(); |
|
|
|
|
const tableTrue = ref(false); |
|
|
|
|
const router = useRouter(); |
|
|
|
@ -317,6 +324,7 @@ const state = reactive({ |
|
|
|
|
imageType: 1, |
|
|
|
|
openType: 43, |
|
|
|
|
startSwingTime: "2025-05-13 02:17:55", |
|
|
|
|
maskState: 3, |
|
|
|
|
}, { |
|
|
|
|
"id": 17, |
|
|
|
|
"personId": 21059, |
|
|
|
@ -336,6 +344,7 @@ const state = reactive({ |
|
|
|
|
imageType: 2, |
|
|
|
|
openType: 42, |
|
|
|
|
startSwingTime: "2025-05-13 02:17:55", |
|
|
|
|
maskState: 2 |
|
|
|
|
}, { |
|
|
|
|
"id": 17, |
|
|
|
|
"personId": 21059, |
|
|
|
@ -442,17 +451,44 @@ const state = reactive({ |
|
|
|
|
"list": 0, |
|
|
|
|
"ysg": 0, |
|
|
|
|
gcjd: "" |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
requestController: null |
|
|
|
|
}) |
|
|
|
|
onUnmounted(() => { |
|
|
|
|
if (state.requestController) state.requestController.stop(); |
|
|
|
|
}); |
|
|
|
|
onMounted(async () => { |
|
|
|
|
await getDataOverview() |
|
|
|
|
await getIresourceschedule() |
|
|
|
|
await getIuserworkerType() |
|
|
|
|
await engineeringLog() |
|
|
|
|
await getQuerywarn() |
|
|
|
|
await getStatistics() |
|
|
|
|
await getVehiclestat() |
|
|
|
|
// await accessControl() |
|
|
|
|
if (state.requestController) { |
|
|
|
|
state.requestController.stop(); |
|
|
|
|
state.requestController = null |
|
|
|
|
} |
|
|
|
|
async function requestFn() { |
|
|
|
|
await getDataOverview() |
|
|
|
|
await getIresourceschedule() |
|
|
|
|
await getIuserworkerType() |
|
|
|
|
await engineeringLog() |
|
|
|
|
await getQuerywarn() |
|
|
|
|
await getStatistics() |
|
|
|
|
// await accessControl() |
|
|
|
|
const res = await getVehiclestat(); |
|
|
|
|
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: '运输车辆数' } |
|
|
|
|
] |
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
return res; |
|
|
|
|
} |
|
|
|
|
state.requestController = retryAndRepeatRequest(requestFn, 3, 30000, 300000); |
|
|
|
|
state.loading = false |
|
|
|
|
}) |
|
|
|
|
function Jump() { |
|
|
|
@ -476,23 +512,15 @@ function getStatistics() { |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
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: '运输车辆数' } |
|
|
|
|
] |
|
|
|
|
}), |
|
|
|
|
}); |
|
|
|
|
return new Promise((resolve) => { |
|
|
|
|
vehiclestat().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
resolve(res) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
function getIresourceschedule() { |
|
|
|
|
iresourcescheduleList().then((res) => { |
|
|
|
@ -519,17 +547,13 @@ function getIuserworkerType() { |
|
|
|
|
} |
|
|
|
|
// 进度预警 |
|
|
|
|
function getQuerywarn(params) { |
|
|
|
|
proxy.$getsystemdict('purpose_expenses').then(async (res) => { |
|
|
|
|
if (res.length > 0) { |
|
|
|
|
// await querywarn({ day: res[0].value }) |
|
|
|
|
await iwarnlist().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.warnList = res.data.list |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
iwarnlist().then((res) => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
state.warnList = res.data.list |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
// 门禁记录 |
|
|
|
|
function accessControl() { |
|
|
|
|