2024-05-11 19:15:44 +08:00

536 lines
15 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="political-outlook">
<div class="content">
<div class="all-score">
<span>综合得分78</span>
</div>
<div class="all-title">
<span>月度安全综合评分表</span>
</div>
<div class="all-subTitle">
<span>工程名称123测试工程</span>
<span>表格日期2024-05-10</span>
</div>
<div class="table-one">
<div class="tabList">
<div>考核分类</div>
<div>考核指标</div>
<div>指标说明</div>
<div>单模块权重</div>
<div>模块权重</div>
<div>模块得分</div>
</div>
<el-scrollbar class="listBox" ref="refScrollbar">
<div class="table-head-nine">
<div class="table-head-nine-part1" v-for="(value2, key2, index2) in value" :key="index2">
<div class="category-title">
<span>{{ key2 }}</span>
</div>
<div class="category-content">
<div v-for="(item, index3) in value2" :key="index3">
<div>
<span>{{ index3 + 1 }}</span>
</div>
<div>123</div>
<div>
<span>123</span>
</div>
</div>
</div>
<div class="category-title">
<span>{{ key2 }}</span>
</div>
<div class="category-title">
<span>{{ key2 }}</span>
</div>
</div>
<div class="table-head-nine-part2">
<div class="category-title">
<span>AI报警</span>
</div>
<div class="category-title">
<span>AI违章抓拍</span>
</div>
<div class="category-title">
<span>告警数量月度环比对比</span>
</div>
<div class="category-title">
<span>123</span>
</div>
<div class="category-title">
<span>123</span>
</div>
</div>
<div class="table-head-nine-part3">
<div><span>综合得分</span></div>
<div>
<span>89</span>
</div>
</div>
</div>
<!-- <div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
<div>{{ item.workerName }}</div>
<div>{{ item.rectifiedNum }}</div>
<div>{{ item.overTimeRectifiedNum }}</div>
<div>{{ item.overTimeNotRectifiedNum }}</div>
<div>{{ item.rectifiedNumRatio }}</div>
<div>{{ item.rectifiedNumRatioTimely }}</div>
</div>
<div class="notoDta" v-if="partyMemberList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div> -->
</el-scrollbar>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted } from "vue";
import { GlobalStore } from "@/stores";
import { getMemberJobStatusApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore();
const props = defineProps(["tip"]);
let pageNo = ref(1 as any);
let moreScroll = ref(true as any);
const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
const partyMemberList = ref({} as any);
const value = ref({
工程管理: {
责任落实和审查审批: [
{
id: "1679692528027320322",
category: "责任落实和审查审批",
subItem: "施工质量进度",
scoreCriteria:
"项目报建手续、施工前期内业报备资料:是否按时办理进场施工所需的报建施工手续、开挖审批、占道施工许可及交警、燃气等部门要求办理交通疏解的其他有关流程,造成建设工程开工延误的情况。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:21:21"
},
{
id: "1679692834647719938",
category: "责任落实和审查审批",
subItem: "施工质量进度",
scoreCriteria:
"设计文件会审、技术交底: 在设计文件会审前未能从施工角度发现问题并提出相关建议,导致在施工阶段才提出因施工困难造成工期增加,甚至须变更设计等问题。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:22:34"
},
{
id: "1679692870693568513",
category: "责任落实和审查审批",
subItem: "施工质量进度",
scoreCriteria:
"分项工程技术交底(含安全技术交底)资料;分部分项工程完工后,相关负责人要组织人员根据相关专业验收规范进行自检,自检合格后向监理单位提交验收申请,并配合监理单位组织的验收工作。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:22:42"
},
{
id: "1679692899982393345",
category: "责任落实和审查审批",
subItem: "施工质量进度",
scoreCriteria:
"未按建设单位和监理单位要求的时间提交《施工组织设计(方案)报审》、《施工组织设计》、《应急预案》、《工程开工报审表》、《安全生产报审表》、《工程材料/构配件报审表》及相关附件等前期报审提交情况。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:22:49"
},
{
id: "1679692925710254082",
category: "责任落实和审查审批",
subItem: "施工质量进度",
scoreCriteria:
"施工过程中是否积极配合建设单位和监理单位的施工现场检查,对建设单位和监理单位现场检查和验收提出的整改意见,在指定时间内完成整改,并经现场负责人自检合格后及时报监理单位进行复查。对未按时完成整改并报复查或二次发现同样问题复查不合格的情况。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:22:55"
}
],
"质量、进度和安全管理": [
{
id: "1679692991665684481",
category: "质量、进度和安全管理",
subItem: "施工质量进度",
scoreCriteria:
"是否对施工现场存在的所有管线、构筑物等影响工程实施的因素作进一步的调查、交底,未进行危险源识别,导致施工方案中未作出相应考虑,施工中冒隐作业的。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:23:11"
},
{
id: "1679693014763716610",
category: "质量、进度和安全管理",
subItem: "施工质量进度",
scoreCriteria:
"未设专职安全员负责安全教育、交底,对施工现场进行不定时安全文明交底和检查并形成相关书面文件提交监理单位的情况。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:23:17"
},
{
id: "1679693034846044161",
category: "质量、进度和安全管理",
subItem: "施工质量进度",
scoreCriteria:
"未按经审批的施工组织方案和落实施工安全文明技术措施的或违反安全操作规程,出现安全事故的,视情节大小。安全文明措施费专款专用与实施情况。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:23:21"
},
{
id: "1679693054244700162",
category: "质量、进度和安全管理",
subItem: "施工质量进度",
scoreCriteria: "安全生产责任书签订情况,是否未逐级签订责任书,责任书签订是否规范。是否定期开展安全应急演练、消防演练。",
punish: "",
deductPointsStandard: "工程管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:23:26"
}
]
},
安全生产管理: {
"质量、进度和安全管理": [
{
id: "1679693076675837953",
category: "质量、进度和安全管理",
subItem: "施工质量进度",
scoreCriteria:
"未按时完成人员、材料、机械设备、临设搭建等施工准备措施,影响工程实施进度的。施工实际进度落后于计划进度时未采取有效措施赶工,致使进度持续滞后的。",
punish: "",
deductPointsStandard: "安全生产管理",
standardScore: 10,
enterpriseType: 3,
createBy: "BB2D9FE3BB6A491E84DAA19A8DD80E33",
createTime: "2023-07-14 11:23:31"
}
]
}
});
//获取数据
const getMemberCountList = async (tip: any) => {
let requestData: any = {
projectSn: store.sn,
pageSize: 100,
pageNo: 1
};
const res: any = await getMemberJobStatusApi(requestData);
console.log("获取人员信息列表", res);
if (tip == "more") {
partyMemberList.value = partyMemberList.value.concat(res.result.records);
} else {
partyMemberList.value = res.result.records;
}
// 为图片拼接IP
// partyMemberList.value.map((item:any) => {
// item.fieldAcquisitionUrl = BASEURL + '/image/' + item.fieldAcquisitionUrl
// })
if (res.result.pages == pageNo.value) {
moreScroll.value = false;
} else {
pageNo.value = pageNo.value + 1;
}
};
onMounted(async () => {
await getMemberCountList("search");
refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
// console.log("滚动容器", e);
const scrollTop = e.target.scrollTop;
const scrollHeight = e.target.scrollHeight;
const clientHeight = e.target.clientHeight;
// console.log("滚动容器", scrollTop, scrollHeight, clientHeight);
// 向上加载更多
if (scrollTop >= scrollHeight - clientHeight - 1) {
// console.log("加载更多");
if (moreScroll.value) {
getMemberCountList("more");
}
}
});
});
</script>
<style lang="scss" scoped>
@mixin flex {
display: flex;
align-items: center;
}
.political-outlook {
height: 97%;
margin: 0 60px;
.content {
height: 95%;
width: 100%;
margin-top: 10px;
// background: url("@/assets/images/cardImg.png") no-repeat;
background-size: 100% 100%;
padding: 20px 15px;
.all-subTitle {
font-size: 16px;
color: white;
display: flex;
justify-content: space-between;
margin-top: 10px;
}
.all-title {
text-align: center;
font-size: 18px;
color: white;
margin-top: 10px;
}
.all-score {
width: 100%;
height: 31px;
line-height: 31px;
background: linear-gradient(90deg, rgba(52, 146, 252, 0.43) 0%, #3186e8 31%, rgba(21, 43, 78, 0.02) 100%);
margin-top: 10px;
text-indent: 2em;
span {
font-size: 18px;
color: white;
font-style: italic;
}
}
.table-one {
height: 88%;
.tabList {
display: flex;
// width: 100%;
height: 8%;
background: url("@/assets/images/vehicleManagement/ListTitleImg.png") no-repeat;
background-size: 100% 100%;
// position: absolute;
left: 75.5%;
top: 75%;
color: #ccc;
font-size: calc(100vw * 14 / 1920);
line-height: 30px;
align-items: center;
margin-top: 2%;
div {
text-align: center;
width: 17%;
}
}
.listBox {
height: 90%;
.listStyle {
display: flex;
align-items: center;
text-align: center;
color: #fff;
font-size: 12px;
padding: 5px 0px;
.list-img {
.el-img {
width: 30px;
height: 30px;
img {
display: flex;
align-items: center;
width: 100%;
height: 100%;
}
}
}
div {
width: 17%;
white-space: nowrap; //单行
overflow: hidden;
text-overflow: ellipsis;
}
}
.listStyle:hover {
background: #091f3f;
}
}
.table-head-nine {
display: flex;
flex-direction: column;
.table-head-nine-part1 {
display: flex;
align-items: center;
text-align: center;
color: white;
font-size: 14px;
.category-title {
width: 17%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
// overflow-wrap: anywhere;
// text-align: left !important;
}
.category-content {
width: 49%;
> div {
width: 100%;
height: 30px;
line-height: 30px;
display: flex;
>div{
width: 33.3%;
display: flex;
align-items: center;
justify-content: center;
white-space: nowrap;
text-align: center;
}
>div:nth-child(2){
text-align: left;
justify-content: flex-start;
}
}
}
}
.table-head-nine-part2 {
display: flex;
align-items: center;
text-align: center;
color: white;
font-size: 14px;
>div{
height: 30px;
line-height: 30px;
}
> div:nth-child(1) {
width: 17%;
display: flex;
flex-direction: column;
white-space: nowrap;
}
> div:nth-child(2) {
width: 17%;
display: flex;
flex-direction: column;
white-space: nowrap;
}
> div:nth-child(3) {
width: 34%;
text-align: left;
display: flex;
flex-direction: column;
white-space: nowrap;
}
> div:nth-child(4) {
width: 17%;
display: flex;
flex-direction: column;
white-space: nowrap;
}
> div:nth-child(5) {
width: 17%;
display: flex;
flex-direction: column;
white-space: nowrap;
}
}
.table-head-nine-part3 {
display: flex;
align-items: center;
text-align: center;
color: white;
font-size: 14px;
>div{
height: 30px;
line-height: 30px;
}
> div:nth-child(1) {
width: 17%;
display: flex;
flex-direction: column;
white-space: nowrap;
> span:not(:first-child) {
border-top: 1px solid #086d93;
}
}
> div:nth-child(2) {
width: 49%;
display: flex;
flex-direction: column;
white-space: nowrap;
}
}
}
}
:deep() {
.el-tabs__item {
color: white;
}
.el-tabs__item.is-active {
color: white;
}
}
}
}
.notoDta {
top: 35%;
width: 20%;
left: 40%;
position: absolute;
text-align: center;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: calc(100vw * 14 / 1920);
margin: -6% 37%;
}
}
// element 组件样式
:deep() {
.el-date-editor .el-range-input,
.el-range-separator {
color: #fff;
}
.el-input__wrapper {
background: #112d59;
}
.el-input__inner {
color: #fff;
}
.el-button {
background-color: #2758c0;
color: white;
border-color: transparent;
}
}
// ::v-deep .el-select .el-input .el-select__caret {
// color: #fff;
// }
</style>