Merge branch 'shenzhen-dev' into cjw-dev

This commit is contained in:
Vce 2024-05-12 01:56:03 +08:00
commit 37450d0558
8 changed files with 245 additions and 81 deletions

View File

@ -6,6 +6,8 @@ NODE_ENV = 'development'
# VITE_API_URL = 'http://192.168.34.221:9111' # VITE_API_URL = 'http://192.168.34.221:9111'
# VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程 # VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程
VITE_API_URL = 'http://jxj.zhgdyun.com:61212' #杰哥远程 VITE_API_URL = 'http://jxj.zhgdyun.com:61212' #杰哥远程
VITE_API_URL = 'http://192.168.34.221:9111'
# VITE_API_URL = 'http://192.168.34.155:19111'
# VITE_API_URL = 'http://192.168.34.221:28888' # VITE_API_URL = 'http://192.168.34.221:28888'
# VITE_API_URL = 'http://121.196.214.246/api' # VITE_API_URL = 'http://121.196.214.246/api'
# VITE_API_URL = 'http://jxj.zhgdyun.com:100' # VITE_API_URL = 'http://jxj.zhgdyun.com:100'

View File

@ -86,4 +86,4 @@ export const getStatsDirectorateBigScreenApi = (params: {}) => {
// centerTop评分数据接口 // centerTop评分数据接口
export const getStatScoreApi = (params: {}) => { export const getStatScoreApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: true } }); return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: true } });
}; };

View File

@ -11,7 +11,7 @@
<div class="centerBottom"> <div class="centerBottom">
<div class="leftTop"> <div class="leftTop">
<div class="header"> <div class="header">
<div class="hLeft" @click="openDialogData({index: 8, title: '人员履职情况分析(整改人)'})">人员履职情况分析</div> <div class="hLeft" @click="openDialogData({ index: 8, title: '人员履职情况分析(整改人)' })">人员履职情况分析</div>
<div class="hRight"> <div class="hRight">
<el-date-picker <el-date-picker
style="width: 85%" style="width: 85%"
@ -21,6 +21,7 @@
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
@change="dateChange"
/> />
</div> </div>
</div> </div>
@ -72,7 +73,7 @@ import { getPersonTypeAndEduStatisticsApi } from "@/api/modules/labor";
import type { TabsPaneContext, ElMessageBox } from "element-plus"; import type { TabsPaneContext, ElMessageBox } from "element-plus";
import { GlobalStore } from "@/stores"; import { GlobalStore } from "@/stores";
const store = GlobalStore(); const store = GlobalStore();
const emits = defineEmits(["openDialog"]) const emits = defineEmits(["openDialog"]);
const activeName = ref("first"); const activeName = ref("first");
const activeIndex = ref("0" as any); const activeIndex = ref("0" as any);
const dateRange = ref([]); const dateRange = ref([]);
@ -96,6 +97,10 @@ let dataList2 = ref([
value: 0, value: 0,
show: true, show: true,
name: "未教育人员", name: "未教育人员",
//
// textStyle: {
// color: '#038cf5'
// },
itemStyle: { itemStyle: {
normal: { normal: {
color: "#038cf5", color: "#038cf5",
@ -107,6 +112,10 @@ let dataList2 = ref([
value: 0, value: 0,
show: true, show: true,
name: "完成人员", name: "完成人员",
//
// textStyle: {
// color: '#01d6f4'
// }
itemStyle: { itemStyle: {
normal: { normal: {
color: "#01d6f4", color: "#01d6f4",
@ -127,85 +136,94 @@ let dataList2 = ref([
} }
]); ]);
// //
const openDialogData = (obj:any) => { const openDialogData = (obj: any) => {
emits("openDialog",obj) emits("openDialog", obj);
};
const dateChange = () => {
if (activeIndex.value == "0") {
getMemberJobStatusFn();
} else if (activeIndex.value == "1") {
getInspectManStatusFn();
} else if (activeIndex.value == "2") {
getEnterpriseStatusFn();
}
} }
// //
const getPersonList = async () => { const getPersonList = async () => {
const res:any = await getPersonTypeAndEduStatisticsApi({ const res: any = await getPersonTypeAndEduStatisticsApi({
projectSn: store.sn projectSn: store.sn
}); });
if (res.result) { if (res.result) {
dataList2.value[1].value = res.result.personType.toaltPerson.totalPerson dataList2.value[1].value = res.result.personType.toaltPerson.totalPerson;
dataList2.value[2].value = res.result.personType.toaltPerson.totalPerson dataList2.value[2].value = res.result.personType.toaltPerson.totalPerson;
console.log('安全教育智能分析666',res) console.log("安全教育智能分析666", res);
} }
}; };
// -- // --
const getMemberJobStatusFn = async () => { const getMemberJobStatusFn = async () => {
let requestData:any = { let requestData: any = {
projectSn: store.sn, projectSn: store.sn,
pageSize: 5, pageSize: 5,
pageNo: 1 pageNo: 1
} };
if(dateRange.value.length > 0){ if (dateRange.value.length > 0) {
requestData.inspectTime_begin = dateRange.value[0]; requestData.inspectTime_begin = dateRange.value[0];
requestData.inspectTime_end = dateRange.value[1]; requestData.inspectTime_end = dateRange.value[1];
} }
const res:any = await getMemberJobStatusApi(requestData); const res: any = await getMemberJobStatusApi(requestData);
console.log('人员履职情况res--整改人',res) console.log("人员履职情况res--整改人", res);
if(res.result){ if (res.result) {
tabList.value = res.result.records; tabList.value = res.result.records;
} else { } else {
tabList.value = []; tabList.value = [];
} }
} };
// -- // --
const getInspectManStatusFn = async () => { const getInspectManStatusFn = async () => {
let requestData:any = { let requestData: any = {
projectSn: store.sn, projectSn: store.sn,
pageSize: 5, pageSize: 5,
pageNo: 1 pageNo: 1
} };
if(dateRange.value.length > 0){ if (dateRange.value.length > 0) {
requestData.inspectTime_begin = dateRange.value[0]; requestData.inspectTime_begin = dateRange.value[0];
requestData.inspectTime_end = dateRange.value[1]; requestData.inspectTime_end = dateRange.value[1];
} }
const res:any = await getInspectManStatusApi(requestData); const res: any = await getInspectManStatusApi(requestData);
console.log('人员履职情况res--检查人',res) console.log("人员履职情况res--检查人", res);
if(res.result){ if (res.result) {
tabList.value = res.result.records; tabList.value = res.result.records;
} else { } else {
tabList.value = []; tabList.value = [];
} }
} };
// -- // --
const getEnterpriseStatusFn = async () => { const getEnterpriseStatusFn = async () => {
let requestData:any = { let requestData: any = {
projectSn: store.sn, projectSn: store.sn,
pageSize: 5, pageSize: 5,
pageNo: 1 pageNo: 1
} };
if(dateRange.value.length > 0){ if (dateRange.value.length > 0) {
requestData.inspectTime_begin = dateRange.value[0]; requestData.inspectTime_begin = dateRange.value[0];
requestData.inspectTime_end = dateRange.value[1]; requestData.inspectTime_end = dateRange.value[1];
} }
const res:any = await getEnterpriseStatusApi(requestData); const res: any = await getEnterpriseStatusApi(requestData);
console.log('人员履职情况res--按分包单位分析',res) console.log("人员履职情况res--按分包单位分析", res);
if(res.result){ if (res.result) {
tabList.value = res.result.records; tabList.value = res.result.records;
} else { } else {
tabList.value = []; tabList.value = [];
} }
} };
const handleClick = (tab: TabsPaneContext, event: Event) => { const handleClick = (tab: TabsPaneContext, event: Event) => {
activeIndex.value = tab.index; activeIndex.value = tab.index;
console.log(tab) console.log(tab);
if(tab.index == '0'){ if (tab.index == "0") {
getMemberJobStatusFn(); getMemberJobStatusFn();
} else if(tab.index == '1'){ } else if (tab.index == "1") {
getInspectManStatusFn(); getInspectManStatusFn();
} else if(tab.index == '2'){ } else if (tab.index == "2") {
getEnterpriseStatusFn(); getEnterpriseStatusFn();
} }
console.log("activeIndex", activeIndex.value); console.log("activeIndex", activeIndex.value);
@ -258,10 +276,10 @@ function drawEchart2() {
textStyle: { textStyle: {
color: "#fff", color: "#fff",
fontSize: 26, fontSize: 26,
fontWeight: "normal", fontWeight: "normal"
// align: "center", // align: "center",
// width: "200px", // width: "200px",
fontFamily: "sadigitalNumber" // fontFamily: "sadigitalNumber"
}, },
subtextStyle: { subtextStyle: {
color: "#ccc", color: "#ccc",
@ -283,7 +301,7 @@ function drawEchart2() {
itemHeight: 7, // itemHeight: 7, //
symbolKeepAspect: false, symbolKeepAspect: false,
textStyle: { textStyle: {
color: "#000", // color: "#000",
rich: { rich: {
name: { name: {
verticalAlign: "right", verticalAlign: "right",
@ -291,10 +309,26 @@ function drawEchart2() {
fontSize: 14, fontSize: 14,
color: "#FFFFFF" color: "#FFFFFF"
}, },
value: { value1: {
align: "left", align: "left",
fontSize: 14, fontSize: 14,
color: "#FFFFFF" color: "#FBDC00",
fontFamily: "Source Han Sans CN, Source Han Sans CN",
fontWeight: "bold"
},
value2: {
align: "left",
fontSize: 14,
color: "#0DAF27",
fontFamily: "Source Han Sans CN, Source Han Sans CN",
fontWeight: "bold"
},
value3: {
align: "left",
fontSize: 14,
color: "#047EFF",
fontFamily: "Source Han Sans CN, Source Han Sans CN",
fontWeight: "bold"
} }
} }
}, },
@ -304,12 +338,20 @@ function drawEchart2() {
} }
}), }),
formatter: function (data) { formatter: function (data) {
console.log(data, 666777);
if (dataList2.value && dataList2.value.length) { if (dataList2.value && dataList2.value.length) {
for (var i = 0; i < dataList2.value.length; i++) { for (var i = 0; i < dataList2.value.length; i++) {
if (data === dataList2.value[i].name) { if (data === dataList2.value[i].name) {
var value = dataList2.value[i].value; var value = dataList2.value[i].value;
var percentage = value + "%"; var percentage = value + "%";
return "{name| " + data + "} {gap| }" + "{value|" + value + " " + "}"; console.log(value, 888);
if (data == "未教育人员") {
return "{name| " + data + "} {gap| }" + "{value1|" + value + " " + "}";
} else if (data == "完成人员") {
return "{name| " + data + "} {gap| }" + "{value2|" + value + " " + "}";
} else if (data == "现场人员") {
return "{name| " + data + "} {gap| }" + "{value3|" + value + " " + "}";
}
} }
} }
} }
@ -501,7 +543,7 @@ onMounted(async () => {
width: 50%; width: 50%;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
background-image: linear-gradient(to bottom left, #c8E3FF, #007AFF); background-image: linear-gradient(to bottom left, #c8e3ff, #007aff);
-webkit-background-clip: text; -webkit-background-clip: text;
background-clip: text; background-clip: text;
color: transparent; color: transparent;
@ -536,7 +578,7 @@ onMounted(async () => {
width: 50%; width: 50%;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
background-image: linear-gradient(to bottom left, #c8E3FF, #007AFF); background-image: linear-gradient(to bottom left, #c8e3ff, #007aff);
-webkit-background-clip: text; -webkit-background-clip: text;
background-clip: text; background-clip: text;
color: transparent; color: transparent;

View File

@ -70,6 +70,9 @@
:src="BASEURL + '/image/' + item.imageUrl" :src="BASEURL + '/image/' + item.imageUrl"
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]" :preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
> >
<template #error>
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
</template>
</el-image> </el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
@ -122,6 +125,7 @@ import { GlobalStore } from "@/stores";
import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor"; import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor";
import type { TabsPaneContext } from 'element-plus' import type { TabsPaneContext } from 'element-plus'
import { getAlarmTypeOption } from "@/api/modules/aIEarlyWarn"; import { getAlarmTypeOption } from "@/api/modules/aIEarlyWarn";
import noDataImage from "@/assets/images/vehicleManagement/car.png";
import { getAlarmRecordApi, getAlarmTypeCountApi } from "@/api/modules/agjtCommandApi"; import { getAlarmRecordApi, getAlarmTypeCountApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore(); const store = GlobalStore();
const props = defineProps(["tip"]); const props = defineProps(["tip"]);
@ -482,6 +486,10 @@ onMounted(async () => {
height: 100%; height: 100%;
} }
} }
.el-no-img{
width: 30px;
height: 30px;
}
} }
div { div {
width: 17%; width: 17%;

View File

@ -20,7 +20,11 @@
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id"> <div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
<div>{{index + 1}}</div> <div>{{index + 1}}</div>
<div>{{item.engineeringName}}</div> <div>{{item.engineeringName}}</div>
<div>{{item.progressDescribe}}</div> <div>
<el-tooltip class="box-item" effect="dark" :content="item.progressDescribe" placement="top-start">
<span>{{item.progressDescribe}}</span>
</el-tooltip>
</div>
<div class="list-img"> <div class="list-img">
<el-image <el-image
fit="contain" fit="contain"
@ -28,6 +32,9 @@
:src="BASEURL + '/image/' + item.imageUrl" :src="BASEURL + '/image/' + item.imageUrl"
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]" :preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
> >
<template #error>
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
</template>
</el-image> </el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
@ -86,7 +93,11 @@
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id"> <div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
<div>{{index + 1}}</div> <div>{{index + 1}}</div>
<div>{{item.engineeringName}}</div> <div>{{item.engineeringName}}</div>
<div>{{item.acceptanceDesc}}</div> <div>
<el-tooltip class="box-item" effect="dark" :content="item.acceptanceDesc" placement="top-start">
<span>{{item.acceptanceDesc}}</span>
</el-tooltip>
</div>
<div>{{item.acceptanceResult == 1?'合格':'不合格'}}</div> <div>{{item.acceptanceResult == 1?'合格':'不合格'}}</div>
<div class="list-img"> <div class="list-img">
<el-image <el-image
@ -95,6 +106,9 @@
:src="BASEURL + '/image/' + item.photo" :src="BASEURL + '/image/' + item.photo"
:preview-src-list="[BASEURL + '/image/' + item.photo]" :preview-src-list="[BASEURL + '/image/' + item.photo]"
> >
<template #error>
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
</template>
</el-image> </el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
@ -126,6 +140,9 @@
:src="BASEURL + '/image/' + item.imageUrl" :src="BASEURL + '/image/' + item.imageUrl"
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]" :preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
> >
<template #error>
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
</template>
</el-image> </el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
@ -147,6 +164,7 @@ import { ref, onMounted } from "vue";
import { GlobalStore } from "@/stores"; import { GlobalStore } from "@/stores";
import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor"; import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor";
import type { TabsPaneContext } from 'element-plus' import type { TabsPaneContext } from 'element-plus'
import noDataImage from "@/assets/images/vehicleManagement/car.png";
import { getProgressRecordApi, getInspectionRecordApi, getEngineeringRecordApi, getSideStationApi } from "@/api/modules/agjtCommandApi"; import { getProgressRecordApi, getInspectionRecordApi, getEngineeringRecordApi, getSideStationApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore(); const store = GlobalStore();
const props = defineProps(["tip"]); const props = defineProps(["tip"]);
@ -316,6 +334,10 @@ onMounted(async () => {
height: 100%; height: 100%;
} }
} }
.el-no-img{
width: 30px;
height: 30px;
}
} }
div { div {
width: 17%; width: 17%;
@ -371,6 +393,10 @@ onMounted(async () => {
height: 100%; height: 100%;
} }
} }
.el-no-img{
width: 30px;
height: 30px;
}
} }
div { div {
width: 17%; width: 17%;
@ -426,6 +452,10 @@ onMounted(async () => {
height: 100%; height: 100%;
} }
} }
.el-no-img{
width: 30px;
height: 30px;
}
} }
div { div {
width: 20%; width: 20%;
@ -471,6 +501,10 @@ onMounted(async () => {
font-size: 12px; font-size: 12px;
margin-bottom: 5px; margin-bottom: 5px;
.list-img { .list-img {
.el-img {
width: 50px;
height: 25px;
}
.el-img { .el-img {
width: 30px; width: 30px;
height: 30px; height: 30px;
@ -481,6 +515,10 @@ onMounted(async () => {
height: 100%; height: 100%;
} }
} }
.el-no-img{
width: 30px;
height: 30px;
}
} }
div { div {
width: 20%; width: 20%;

View File

@ -2,14 +2,14 @@
<div class="political-outlook"> <div class="political-outlook">
<div class="content"> <div class="content">
<div class="all-score"> <div class="all-score">
<span>综合得分78</span> <span>综合得分{{ countData.total || 0 }}</span>
</div> </div>
<div class="all-title"> <div class="all-title">
<span>月度安全综合评分表</span> <span>月度安全综合评分表</span>
</div> </div>
<div class="all-subTitle"> <div class="all-subTitle">
<span>工程名称123测试工程</span> <span>工程名称{{projectData.projectName || ""}}</span>
<span>表格日期2024-05-10</span> <span>表格日期{{currentDate}}</span>
</div> </div>
<div class="table-one"> <div class="table-one">
<div class="tabList"> <div class="tabList">
@ -29,7 +29,7 @@
<div class="category-content"> <div class="category-content">
<div v-for="(item, index3) in value2" :key="index3"> <div v-for="(item, index3) in value2" :key="index3">
<div> <div>
<span>{{ index3 + 1 }}</span> <span>{{ index3 }}</span>
</div> </div>
<div>{{item.name}}</div> <div>{{item.name}}</div>
<div> <div>
@ -37,11 +37,17 @@
</div> </div>
</div> </div>
</div> </div>
<div class="category-title"> <div class="category-other">
<span>{{ key2 }}</span> <span v-if="key2 == '隐患治理排查'">25%</span>
<span v-else-if="key2 == '危大工程'">15%</span>
<span v-else-if="key2 == '风险管理'">15%</span>
<span v-else-if="key2 == '安全教育'">25%</span>
</div> </div>
<div class="category-title"> <div class="category-other">
<span>{{ key2 }}</span> <span v-if="key2 == '隐患治理排查'">{{ countData.hiddenDangerScore || 0 }}</span>
<span v-else-if="key2 == '危大工程'">{{ countData.dangerEngScore || 0 }}</span>
<span v-else-if="key2 == '风险管理'">{{ countData.riskscore || 0 }}</span>
<span v-else-if="key2 == '安全教育'">25</span>
</div> </div>
</div> </div>
<div class="table-head-nine-part2"> <div class="table-head-nine-part2">
@ -55,16 +61,16 @@
<span>告警数量月度环比对比</span> <span>告警数量月度环比对比</span>
</div> </div>
<div class="category-title"> <div class="category-title">
<span>123</span> <span>100%</span>
</div> </div>
<div class="category-title"> <div class="category-title">
<span>123</span> <span>{{ countData.aiScore || 0 }}</span>
</div> </div>
</div> </div>
<div class="table-head-nine-part3"> <div class="table-head-nine-part3">
<div><span>综合得分</span></div> <div><span>综合得分</span></div>
<div> <div>
<span>89</span> <span>{{ countData.total || 0 }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -89,33 +95,54 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { GlobalStore } from "@/stores"; import { GlobalStore } from "@/stores";
import { getMemberJobStatusApi } from "@/api/modules/agjtCommandApi"; import { getMemberJobStatusApi, getStatScoreApi } from "@/api/modules/agjtCommandApi";
import { getProjectDetail } from "@/api/modules/projectOverview";
import moment from "moment";
const store = GlobalStore(); const store = GlobalStore();
const props = defineProps(["tip"]); const props = defineProps(["tip"]);
const currentDate = ref("" as any);
let pageNo = ref(1 as any); let pageNo = ref(1 as any);
let moreScroll = ref(true as any); let moreScroll = ref(true as any);
const refScrollbar = ref(null as any); // const refScrollbar = ref(null as any); //
const partyMemberList = ref({} as any); const partyMemberList = ref({} as any);
const value = ref({ const value = ref({
"隐患治理排查": { "隐患治理排查": {
"隐患整改率": {name: 123,value: 456}, "隐患整改率": {name: "隐患整改率=已整改(除了待整改和已撤回)/隐患总数(不包含排查记录)/隐患总数x100%",value: "30%"},
"隐患及时整改率": {name: 123,value: 456}, "隐患及时整改率": {name: "及时整改率=状态是已整改(除了待整改和已撤回)的未超期整改的隐患记录数/状态是已整改除了待整改和已撤回的隐患总数x100%",value: "30%"},
"隐患闭合率": {name: 123,value: 456}, "隐患闭合率": {name: "隐患闭合率=状态是合格的隐患记录/隐患总数x100%",value: "20%"},
"隐患及时复查率": {name: 123,value: 456}, "隐患自检数量": {name: "每周完成项目自检次数",value: "20%"},
"隐患自检数量": {name: 123,value: 456},
}, },
"危大工程": { "危大工程": {
"危大工程覆盖率": {name: 123,value: 456}, "危大工程排查覆盖率": {name: "危大工程排查覆盖率=实际排查天数/应排查天数x100%(在施危大工程应每天排查)",value: "60%"},
"旁站记录更新": {name: 123,value: 456}, "旁站记录更新": {name: "每周至少针对在施危大工程完成旁站记录次数",value: "40%"},
}, },
"风险管理": { "风险管理": {
"风险排查执行率": {name: 123,value: 456}, "风险排查执行率": {name: "有排查记录的风险/生成待办任务的风险x100%",value: "99%"},
"风险辨识数量": {name: 123,value: 456}, "风险辨识数量": {name: "至少识别3个风险",value: "1%"},
}, },
"安全教育": { "安全教育": {
"三级入场教育完成率": {name: 123,value: 456} "三级入场教育完成率": {name: "三级入场教育完成率=三级教育完成人数/所有在岗人数",value: "100%"}
} }
}); });
const countData = ref({} as any)
const projectData = ref({} as any);
//
const getProjectInfo = async () => {
const res = await getProjectDetail({ projectSn: store.sn });
console.log("获取项目信息666", res);
// console.log("", projectTypeEnum);
projectData.value = res.result;
};
//
const getStatScoreFn = async () => {
let requestData: any = {
projectSn: store.sn
};
const res: any = await getStatScoreApi(requestData);
console.log("综合评分详情", res);
countData.value = res.result;
};
// //
const getMemberCountList = async (tip: any) => { const getMemberCountList = async (tip: any) => {
let requestData: any = { let requestData: any = {
@ -142,7 +169,10 @@ const getMemberCountList = async (tip: any) => {
}; };
onMounted(async () => { onMounted(async () => {
currentDate.value = moment(new Date()).format("YYYY-MM-DD")
await getProjectInfo();
await getMemberCountList("search"); await getMemberCountList("search");
await getStatScoreFn();
refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => { refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
// console.log("", e); // console.log("", e);
const scrollTop = e.target.scrollTop; const scrollTop = e.target.scrollTop;
@ -259,35 +289,52 @@ onMounted(async () => {
flex-direction: column; flex-direction: column;
.table-head-nine-part1 { .table-head-nine-part1 {
display: flex; display: flex;
align-items: center; // align-items: center;
text-align: center; text-align: center;
color: white; color: white;
font-size: 14px; font-size: 14px;
margin-bottom: 5px;
.category-title { .category-title {
width: 17%; width: 17%;
height: 100%; height: auto;
display: flex; display: flex;
align-items: center;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
background-color: #102959;
// overflow-wrap: anywhere; // overflow-wrap: anywhere;
// text-align: left !important; // text-align: left !important;
} }
.category-other {
width: 17%;
height: auto;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
background-color: #041E51;
}
.category-content { .category-content {
width: 49%; width: 49%;
>div:nth-child(2n - 1){
background-color: #041E51;
}
>div:nth-child(2n){
background-color: #102959;
}
> div { > div {
width: 100%; width: 100%;
height: 30px; height: auto;
line-height: 30px;
display: flex; display: flex;
>div{ >div{
width: 33.3%; width: 33.3%;
height: auto;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
white-space: nowrap;
text-align: center;
} }
>div:nth-child(2){ >div:nth-child(2){
line-height: 20px;
text-align: left; text-align: left;
justify-content: flex-start; justify-content: flex-start;
} }
@ -296,10 +343,10 @@ onMounted(async () => {
} }
.table-head-nine-part2 { .table-head-nine-part2 {
display: flex; display: flex;
align-items: center;
text-align: center; text-align: center;
color: white; color: white;
font-size: 14px; font-size: 14px;
margin-bottom: 5px;
>div{ >div{
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
@ -309,6 +356,10 @@ onMounted(async () => {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
white-space: nowrap; white-space: nowrap;
background-color: #102959;
}
>div:not(:first-child){
background-color: #041E51;
} }
> div:nth-child(2) { > div:nth-child(2) {
width: 17%; width: 17%;
@ -317,7 +368,7 @@ onMounted(async () => {
white-space: nowrap; white-space: nowrap;
} }
> div:nth-child(3) { > div:nth-child(3) {
width: 34%; width: 32%;
text-align: left; text-align: left;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -338,7 +389,6 @@ onMounted(async () => {
} }
.table-head-nine-part3 { .table-head-nine-part3 {
display: flex; display: flex;
align-items: center;
text-align: center; text-align: center;
color: white; color: white;
font-size: 14px; font-size: 14px;
@ -351,15 +401,17 @@ onMounted(async () => {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
white-space: nowrap; white-space: nowrap;
background-color: #102959;
> span:not(:first-child) { > span:not(:first-child) {
border-top: 1px solid #086d93; border-top: 1px solid #086d93;
} }
} }
> div:nth-child(2) { > div:nth-child(2) {
width: 49%; width: 83%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
white-space: nowrap; white-space: nowrap;
background-color: #041E51;
} }
} }
} }

View File

@ -75,11 +75,27 @@
</el-image> </el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
<div>{{ item.enterpriseName }}</div> <div>
<div>{{ item.personType == 1 ? item.teamName : item.departmentName }}</div> <el-tooltip class="box-item" effect="dark" :content="item.enterpriseName" placement="top-start">
<div>{{ item.idCard }}</div> <span>{{item.enterpriseName}}</span>
</el-tooltip>
</div>
<div>
<el-tooltip class="box-item" effect="dark" :content="item.personType == 1 ? item.teamName : item.departmentName" placement="top-start">
<span>{{ item.personType == 1 ? item.teamName : item.departmentName }}</span>
</el-tooltip>
</div>
<div>
<el-tooltip class="box-item" effect="dark" :content="item.idCard" placement="top-start">
<span>{{item.idCard}}</span>
</el-tooltip>
</div>
<div>{{ item.phoneNumber }}</div> <div>{{ item.phoneNumber }}</div>
<div>{{ item.educationTime }}</div> <div>
<el-tooltip class="box-item" effect="dark" :content="item.educationTime" placement="top-start">
<span>{{item.educationTime}}</span>
</el-tooltip>
</div>
<div>{{ item.isExamPass == -1 ? "未培训" : item.isExamPass == 1 ? "合格" : "不合格" }}</div> <div>{{ item.isExamPass == -1 ? "未培训" : item.isExamPass == 1 ? "合格" : "不合格" }}</div>
</div> </div>
<div class="notoDta" v-if="partyMemberList.length == 0"> <div class="notoDta" v-if="partyMemberList.length == 0">

View File

@ -3,7 +3,7 @@
<div class="content"> <div class="content">
<div class="top-data-show"> <div class="top-data-show">
<div class="top-left"> <div class="top-left">
<el-date-picker v-model="dateTime" type="month" placeholder="请选择日期" value-format="YYYY-MM" :clearable="false"/> <el-date-picker v-model="dateTime" type="month" placeholder="请选择日期" value-format="YYYY-MM" :clearable="false" @change="dateChange"/>
<el-calendar v-model="calendarVal" style="width: 95%; margin-top: 15px"/> <el-calendar v-model="calendarVal" style="width: 95%; margin-top: 15px"/>
</div> </div>
<div class="top-right"> <div class="top-right">
@ -89,6 +89,10 @@ const tableParams = ref({
const partyMemberList = ref({} as any); const partyMemberList = ref({} as any);
const topStatisticData = ref({} as any) const topStatisticData = ref({} as any)
//
const dateChange = async () => {
calendarVal.value = dateTime.value
};
// //
const getDelayEventTypeFn = async () => { const getDelayEventTypeFn = async () => {
let requestData: any = { let requestData: any = {
@ -132,7 +136,9 @@ watch(
// console.log(newVal, "newVal"); // console.log(newVal, "newVal");
if (newVal) { if (newVal) {
// props.xData = newVal; // props.xData = newVal;
console.log(newVal)
tableParams.value.calendarVal = moment(newVal).format("YYYY-MM-DD") tableParams.value.calendarVal = moment(newVal).format("YYYY-MM-DD")
dateTime.value = moment(newVal).format("YYYY-MM-DD")
getMemberCountList("search"); getMemberCountList("search");
} }
} }