flx:修复bug

This commit is contained in:
Vce 2024-05-13 20:46:26 +08:00
parent 619588e27f
commit 17f4d21cba
9 changed files with 201 additions and 80 deletions

View File

@ -65,6 +65,11 @@ export const getQualityStatisticsNumDataApi = (params: {}) => {
export const getProjectEnterpriseApi = (params: {}) => { export const getProjectEnterpriseApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/projectEnterprise/list`, params, { headers: { noLoading: true } }); return http.post(BASEURL + `/xmgl/projectEnterprise/list`, params, { headers: { noLoading: true } });
}; };
// 获取检查人
export const getSystemUserBySnApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/systemUser/getSystemUserBySn`, params, { headers: { noLoading: true } });
};
// 获取整改人 // 获取整改人
export const getSystemUserApi = (params: {}) => { export const getSystemUserApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/systemUser/getProjectChilderSystemUserList`, params, { headers: { noLoading: true } }); return http.post(BASEURL + `/xmgl/systemUser/getProjectChilderSystemUserList`, params, { headers: { noLoading: true } });

View File

@ -217,6 +217,7 @@ onMounted(async () => {
.cbContent { .cbContent {
width: 100%; width: 100%;
height: calc(100% - 40px); height: calc(100% - 40px);
overflow: hidden;
// background: #fff; // background: #fff;
.item { .item {
@ -304,6 +305,7 @@ onMounted(async () => {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
width: 100%; width: 100%;
line-height: 30px;
} }
} }
@ -314,7 +316,7 @@ onMounted(async () => {
.timeInfo { .timeInfo {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-start;
margin-right: 10px; margin-right: 10px;
} }
} }

View File

@ -3,13 +3,13 @@
<div class="top-content"> <div class="top-content">
<div class="content-div aq"> <div class="content-div aq">
<div class="circle-box"> <div class="circle-box">
<span>{{statScore.hiddenDangerScore}}</span> <span>{{ statScore.hiddenDangerScore }}</span>
</div> </div>
<span>安全隐患治理</span> <span>安全隐患治理</span>
</div> </div>
<div class="content-div wd"> <div class="content-div wd">
<div class="circle-box"> <div class="circle-box">
<span>{{statScore.dangerEngScore}}</span> <span>{{ statScore.dangerEngScore }}</span>
</div> </div>
<span>危大工程</span> <span>危大工程</span>
</div> </div>
@ -22,56 +22,63 @@
</div> </div>
<div class="content-div fx"> <div class="content-div fx">
<div class="circle-box"> <div class="circle-box">
<span>{{statScore.riskScore}}</span> <span>{{ statScore.riskScore }}</span>
</div> </div>
<span>风险管理</span> <span>风险管理</span>
</div> </div>
<div class="content-div zn"> <div class="content-div zn">
<div class="circle-box"> <div class="circle-box">
<span>{{statScore.aiScore}}</span> <span>{{ statScore.aiScore }}</span>
</div> </div>
<span>AI警报</span> <span>AI警报</span>
</div> </div>
<div class="count-div"> <div class="count-div">
<div class="count-div-item"> <div class="count-div-item">
<span>上月安全综合评分</span> <span>上月安全综合评分</span>
<span>{{statScore.lastMonthTotal}}</span> <span>{{ statScore.lastMonthTotal }}</span>
<span></span> <span></span>
</div> </div>
<div class="count-div-item"> <div class="count-div-item">
<span>相较上月{{ statScore.radio > 0 ?'上升':'下降' }} {{statScore.radio}}%</span> <span>相较上月{{ statScore.radio > 0 ? '上升' + statScore.radio : '下降' + (statScore.radio && statScore.radio.toString().substr(1)) }} %</span>
<span :style="statScore.radio > 0 ? 'color:#0db027' : 'color:#f77c7d'">{{ statScore.radio > 0 ? '↑' : '↓' }} </span> <span :style="statScore.radio > 0 ? 'color:#0db027' : 'color:#f77c7d'">{{ statScore.radio > 0 ? '↑'
: '↓' }} </span>
</div> </div>
</div> </div>
<div class="score-div" @click="openDialogData({index: 9, title: '月度安全综合评分'})"> <div class="score-div" @click="openDialogData({ index: 9, title: '月度安全综合评分' })">
<div class="score-part"> <div class="score-part">
<span>{{statScore.total}}</span> <span>{{ statScore.total }}</span>
<span></span> <span></span>
</div> </div>
<span>安全评分</span> <span>安全评分</span>
</div> </div>
<div class="classify-div"> <div class="classify-div">
<div class="classify-div-item" @click="openDialogData({index: 1, title: '危大工程'})"> <div class="classify-div-item" @click="openDialogData({ index: 1, title: '危大工程' })">
<span style="font-size: 12px;">危大工程&nbsp;&nbsp;{{statsDirectorateBigScreen.dangerousEngineeringRecordNum}}</span> <span
style="font-size: 12px;">危大工程&nbsp;&nbsp;{{ statsDirectorateBigScreen.dangerousEngineeringRecordNum }}</span>
</div> </div>
<div class="classify-div-item" @click="openDialogData({index: 2, title: '安全教育'})"> <div class="classify-div-item" @click="openDialogData({ index: 2, title: '安全教育' })">
<span style="font-size: 12px;">安全教育&nbsp;&nbsp;{{statsDirectorateBigScreen.workerInfoAuditRecordNum}}</span> <span
style="font-size: 12px;">安全教育&nbsp;&nbsp;{{ statsDirectorateBigScreen.workerInfoAuditRecordNum }}</span>
</div> </div>
<div class="classify-div-item" @click="openDialogData({index: 3, title: '影响进度的因素'})"> <div class="classify-div-item" @click="openDialogData({ index: 3, title: '影响进度的因素' })">
<span style="font-size: 12px;">极端恶劣天气&nbsp;&nbsp;{{statsDirectorateBigScreen.taskProgressContentNum}}</span> <span
style="font-size: 12px;">极端恶劣天气&nbsp;&nbsp;{{ statsDirectorateBigScreen.taskProgressContentNum }}</span>
</div> </div>
<div class="classify-div-item" @click="openDialogData({index: 4, title: '风险统计'})"> <div class="classify-div-item" @click="openDialogData({ index: 4, title: '风险统计' })">
<span style="font-size: 12px;">风险统计&nbsp;&nbsp;{{statsDirectorateBigScreen.securityQualityInspectionRecordNum}}</span> <span
style="font-size: 12px;">风险统计&nbsp;&nbsp;{{ statsDirectorateBigScreen.securityQualityInspectionRecordNum }}</span>
</div> </div>
<div class="classify-div-item" @click="openDialogData({index: 5, title: '安全隐患'})"> <div class="classify-div-item" @click="openDialogData({ index: 5, title: '安全隐患' })">
<span style="font-size: 12px;">安全隐患&nbsp;&nbsp;{{statsDirectorateBigScreen.securityQualityInspectionRecordNum}}</span> <span
style="font-size: 12px;">安全隐患&nbsp;&nbsp;{{ statsDirectorateBigScreen.securityQualityInspectionRecordNum }}</span>
</div> </div>
<div class="classify-div-item" @click="openDialogData({index: 6, title: 'AI警报'})"> <div class="classify-div-item" @click="openDialogData({ index: 6, title: 'AI警报' })">
<span style="font-size: 12px;">AI警报&nbsp;&nbsp;{{statsDirectorateBigScreen.aiAnalyseHardWareAlarmRecordNum}}</span> <span
style="font-size: 12px;">AI警报&nbsp;&nbsp;{{ statsDirectorateBigScreen.aiAnalyseHardWareAlarmRecordNum }}</span>
</div> </div>
</div> </div>
<div class="background-title"> <div class="background-title">
<span @click="openDialogData({index: 9, title: '月度安全综合评分'})">查看月度安全评分报告详情</span> <span @click="openDialogData({ index: 9, title: '月度安全综合评分' })">查看月度安全评分报告详情</span>
</div> </div>
</div> </div>
</div> </div>
@ -103,8 +110,8 @@ const props = withDefaults(defineProps<Props>(), {
// //
const projectData = ref({} as any); const projectData = ref({} as any);
// //
const openDialogData = (obj:any) => { const openDialogData = (obj: any) => {
emits("openDialog",obj) emits("openDialog", obj)
} }
watch( watch(
() => props.projectData, () => props.projectData,
@ -143,10 +150,10 @@ const getVideoList = async () => {
let res: any = await selectLiveVideoListApi({ let res: any = await selectLiveVideoListApi({
projectSn: store.sn projectSn: store.sn
}); });
console.log(res,'445566') console.log(res, '445566')
if(res.result && res.result.extend1){ if (res.result && res.result.extend1) {
videoList.value = JSON.parse(res.result.extend1).result.videoList; videoList.value = JSON.parse(res.result.extend1).result.videoList;
console.log(videoList.value,'112233') console.log(videoList.value, '112233')
// 使 // 使
setTimeout(() => { setTimeout(() => {
// video // video
@ -167,7 +174,14 @@ const getStatsDirectorateBigScreen = async () => {
const res = await getStatsDirectorateBigScreenApi({ projectSn: store.sn }); const res = await getStatsDirectorateBigScreenApi({ projectSn: store.sn });
statsDirectorateBigScreen.value = res.result statsDirectorateBigScreen.value = res.result
}; };
let statScore = ref({} as any); let statScore = ref({
dangerEngScore: 0,
hiddenDangerScore: 0,
aiScore: 0,
riskScore: 0,
total:0,
lastMonthTotal:0,
} as any);
//centerTop //centerTop
const getStatScore = async () => { const getStatScore = async () => {
const res = await getStatScoreApi({ projectSn: store.sn }); const res = await getStatScoreApi({ projectSn: store.sn });
@ -259,21 +273,24 @@ onMounted(async () => {
<style lang="scss" scoped> <style lang="scss" scoped>
.centerTop { .centerTop {
// background-color: darkred; // background-color: darkred;
.top-content{ .top-content {
height: 100%; height: 100%;
position: relative; position: relative;
background-image: url("@/assets/images/commandScreen/top-bg.png"); background-image: url("@/assets/images/commandScreen/top-bg.png");
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;
.content-div{
.content-div {
width: 30%; width: 30%;
height: 30%; height: 30%;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.circle-box{
.circle-box {
width: 70px; width: 70px;
height: 70px; height: 70px;
color: white; color: white;
@ -287,46 +304,54 @@ onMounted(async () => {
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
justify-content: center; justify-content: center;
span{
span {
margin-top: 10px; margin-top: 10px;
} }
} }
>span{
>span {
margin-top: 10px; margin-top: 10px;
color: white; color: white;
} }
} }
.aq{
.aq {
// left: 40px; // left: 40px;
// top: 180px; // top: 180px;
left: 0%; left: 0%;
top: 45%; top: 45%;
} }
.wd{
.wd {
// left: 200px; // left: 200px;
// top: 80px; // top: 80px;
left: 12%; left: 12%;
top: 20%; top: 20%;
} }
.jy{
.jy {
// left: 400px; // left: 400px;
// top: 5px; // top: 5px;
left: 35%; left: 35%;
top: 0%; top: 0%;
} }
.fx{
.fx {
// right: 180px; // right: 180px;
// top: 80px; // top: 80px;
right: 12%; right: 12%;
top: 20%; top: 20%;
} }
.zn{
.zn {
// right: 40px; // right: 40px;
// top: 180px; // top: 180px;
right: 0%; right: 0%;
top: 45%; top: 45%;
} }
.count-div{
.count-div {
width: 60%; width: 60%;
color: white; color: white;
position: absolute; position: absolute;
@ -337,14 +362,17 @@ onMounted(async () => {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
&-item{
&-item {
font-size: 14px; font-size: 14px;
>span:nth-child(2){
>span:nth-child(2) {
color: #2983E1; color: #2983E1;
} }
} }
} }
.score-div{
.score-div {
color: white; color: white;
position: absolute; position: absolute;
// bottom: 210px; // bottom: 210px;
@ -356,20 +384,24 @@ onMounted(async () => {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.score-part{
span:nth-child(1){ .score-part {
span:nth-child(1) {
font-size: 72px; font-size: 72px;
} }
span:nth-child(2){
span:nth-child(2) {
font-size: 18px; font-size: 18px;
} }
} }
>span{
>span {
color: white; color: white;
font-size: 18px; font-size: 18px;
} }
} }
.classify-div{
.classify-div {
width: 100%; width: 100%;
color: white; color: white;
position: absolute; position: absolute;
@ -378,7 +410,8 @@ onMounted(async () => {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
&-item{
&-item {
width: 180px; width: 180px;
height: 75px; height: 75px;
// background-color: #0090D8; // background-color: #0090D8;
@ -390,12 +423,14 @@ onMounted(async () => {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 0 5px; padding: 0 5px;
span{
span {
margin-top: 10px; margin-top: 10px;
} }
} }
} }
.background-title{
.background-title {
width: 100%; width: 100%;
height: 40px; height: 40px;
position: absolute; position: absolute;

View File

@ -7,22 +7,19 @@
<div class="content"> <div class="content">
<div class="contentTop"> <div class="contentTop">
<div id="echartsEdu" style="width: 100%; height: 100%"></div> <div id="echartsEdu" style="width: 100%; height: 100%"></div>
<div class="notoDta" v-if="dataList2.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div> </div>
<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%" v-model="dateRange" type="daterange"
style="width: 85%" value-format="YYYY-MM-DD" range-separator="至" start-placeholder="开始日期"
v-model="dateRange" end-placeholder="结束日期" @change="dateChange" />
type="daterange"
value-format="YYYY-MM-DD"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="dateChange"
/>
</div> </div>
</div> </div>
<div class="content"> <div class="content">
@ -45,7 +42,8 @@
<div v-for="(item, index) in tabList" :key="index" class="listStyle"> <div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ index + 1 }}</div> <div>{{ index + 1 }}</div>
<div v-if="activeIndex === '0' || activeIndex === '1'">{{ item.workerName }}</div> <div v-if="activeIndex === '0' || activeIndex === '1'">{{ item.workerName }}</div>
<div v-if="activeIndex === '2'" :title="item.enterpriseName">{{ item.enterpriseName }}</div> <div v-if="activeIndex === '2'" :title="item.enterpriseName">{{ item.enterpriseName
}}</div>
<div v-if="activeIndex === '0' || activeIndex === '2'">{{ item.rectifiedNum }}</div> <div v-if="activeIndex === '0' || activeIndex === '2'">{{ item.rectifiedNum }}</div>
<div v-if="activeIndex === '1'">{{ item.createDangerNum }}</div> <div v-if="activeIndex === '1'">{{ item.createDangerNum }}</div>
<div>{{ item.rectifiedNumRatio }}</div> <div>{{ item.rectifiedNumRatio }}</div>
@ -515,6 +513,7 @@ onMounted(async () => {
background: url("@/assets/images/commandScreen/card-left-bottom.png") no-repeat; background: url("@/assets/images/commandScreen/card-left-bottom.png") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
height: 100%; height: 100%;
.header { .header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -523,6 +522,7 @@ onMounted(async () => {
border-left: none; border-left: none;
border-right: none; border-right: none;
border-bottom: 1px solid #0059ff; border-bottom: 1px solid #0059ff;
// height: 10%; // height: 10%;
.hLeft { .hLeft {
width: 50%; width: 50%;
@ -533,24 +533,30 @@ onMounted(async () => {
background-clip: text; background-clip: text;
color: transparent; color: transparent;
} }
.hRight { .hRight {
width: 50%; width: 50%;
} }
} }
.content { .content {
height: 90%; height: 90%;
// background-color: #fff; // background-color: #fff;
.contentTop { .contentTop {
height: 40%; height: 40%;
} }
.centerBottom { .centerBottom {
// width: 100%; // width: 100%;
height: 60%; height: 60%;
// background-color: #fff; // background-color: #fff;
position: relative; position: relative;
.leftTop { .leftTop {
width: 100%; width: 100%;
height: 35%; height: 35%;
.header { .header {
// width: 100%; // width: 100%;
// height: 100%; // height: 100%;
@ -559,6 +565,7 @@ onMounted(async () => {
justify-content: space-between; justify-content: space-between;
padding: 20px 20px; padding: 20px 20px;
border-bottom: 1px solid #0059ff; border-bottom: 1px solid #0059ff;
.hLeft { .hLeft {
width: 50%; width: 50%;
font-size: 20px; font-size: 20px;
@ -568,18 +575,23 @@ onMounted(async () => {
background-clip: text; background-clip: text;
color: transparent; color: transparent;
} }
.hRight { .hRight {
width: 50%; width: 50%;
} }
} }
.content { .content {
padding: 0 20px; padding: 0 20px;
::v-deep .el-tabs__item { ::v-deep .el-tabs__item {
color: #fff; color: #fff;
} }
::v-deep .el-tabs__nav-wrap::after { ::v-deep .el-tabs__nav-wrap::after {
background-color: rgba(255, 0, 0, 0); background-color: rgba(255, 0, 0, 0);
} }
.tabList { .tabList {
display: flex; display: flex;
width: 100%; width: 100%;
@ -602,7 +614,9 @@ onMounted(async () => {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.listBox { .listBox {
// height: 10%; // height: 10%;
.listStyle { .listStyle {
display: flex; display: flex;
@ -612,6 +626,7 @@ onMounted(async () => {
line-height: 25px; line-height: 25px;
font-size: 12px; font-size: 12px;
text-align: center; text-align: center;
div { div {
width: 100px; width: 100px;
white-space: nowrap; white-space: nowrap;
@ -619,20 +634,24 @@ onMounted(async () => {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.listStyle:hover { .listStyle:hover {
background: #003c84; background: #003c84;
} }
} }
.notoDta { .notoDta {
top: 52%; top: 52%;
width: 45%; width: 45%;
left: 28%; left: 28%;
text-align: center; text-align: center;
position: absolute; position: absolute;
img { img {
width: 40%; width: 40%;
margin: 5% 30%; margin: 5% 30%;
} }
p { p {
color: #fff; color: #fff;
font-size: 14px; font-size: 14px;
@ -641,34 +660,43 @@ onMounted(async () => {
} }
} }
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
color: #fff; color: #fff;
} }
::v-deep .el-select .el-input .el-select__caret { ::v-deep .el-select .el-input .el-select__caret {
color: #fff; color: #fff;
} }
::v-deep .el-input__wrapper { ::v-deep .el-input__wrapper {
width: 85%; width: 85%;
height: 0%; height: 0%;
background: #0d2956; background: #0d2956;
} }
::v-deep .el-range-separator { ::v-deep .el-range-separator {
color: #ccc; color: #ccc;
font-size: 10px; font-size: 10px;
} }
::v-deep .el-range-input { ::v-deep .el-range-input {
color: #ccc; color: #ccc;
font-size: 10px; font-size: 10px;
} }
.dialogContainer { .dialogContainer {
padding: 0 50px; padding: 0 50px;
// height: 600px; // height: 600px;
::v-deep .el-tabs__item { ::v-deep .el-tabs__item {
color: #fff; color: #fff;
} }
::v-deep .el-tabs__nav-wrap::after { ::v-deep .el-tabs__nav-wrap::after {
background-color: rgba(255, 0, 0, 0); background-color: rgba(255, 0, 0, 0);
} }
.tabList { .tabList {
display: flex; display: flex;
width: 100%; width: 100%;
@ -691,7 +719,9 @@ onMounted(async () => {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.listBox { .listBox {
// height: 10%; // height: 10%;
.listStyle { .listStyle {
display: flex; display: flex;
@ -701,6 +731,7 @@ onMounted(async () => {
line-height: 25px; line-height: 25px;
font-size: 12px; font-size: 12px;
text-align: center; text-align: center;
div { div {
width: 100px; width: 100px;
white-space: nowrap; white-space: nowrap;
@ -708,20 +739,24 @@ onMounted(async () => {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.listStyle:hover { .listStyle:hover {
background: #003c84; background: #003c84;
} }
} }
.notoDta { .notoDta {
top: 40%; top: 40%;
width: 30%; width: 30%;
left: 35%; left: 35%;
text-align: center; text-align: center;
position: absolute; position: absolute;
img { img {
width: 40%; width: 40%;
margin: 5% 30%; margin: 5% 30%;
} }
p { p {
color: #fff; color: #fff;
font-size: 14px; font-size: 14px;
@ -729,16 +764,19 @@ onMounted(async () => {
} }
} }
} }
::v-deep .el-dialog { ::v-deep .el-dialog {
background: url("@/assets/images/commandScreen/dialog-bg.png") no-repeat; background: url("@/assets/images/commandScreen/dialog-bg.png") no-repeat;
// background-color: #fff; // background-color: #fff;
background-size: 100% 100%; background-size: 100% 100%;
margin-top: 12%; margin-top: 12%;
} }
::v-deep .el-dialog__headerbtn { ::v-deep .el-dialog__headerbtn {
right: 35px; right: 35px;
top: 25px; top: 25px;
} }
::v-deep .el-dialog .el-dialog__header .el-dialog__title { ::v-deep .el-dialog .el-dialog__header .el-dialog__title {
margin-left: 30px; margin-left: 30px;
margin-top: 10px; margin-top: 10px;
@ -746,6 +784,7 @@ onMounted(async () => {
color: #fff; color: #fff;
position: absolute; position: absolute;
} }
::v-deep el-dialog__header { ::v-deep el-dialog__header {
margin-top: 20px; margin-top: 20px;
} }

View File

@ -32,7 +32,7 @@
</div> </div>
<div class="content-info"> <div class="content-info">
<span>建筑面积</span> <span>建筑面积</span>
<span>{{ projectData.projectAcreage || "" }} </span> <span>{{ projectData.projectAcreage || "" }} {{ projectData.projectAcreage ? '㎡' : "" }}</span>
</div> </div>
<div class="content-info"> <div class="content-info">
<span>开工日期</span> <span>开工日期</span>
@ -58,10 +58,10 @@ const store = GlobalStore();
const projectData = ref({} as any); const projectData = ref({} as any);
const projectTypeEnumList:any = ref([]); // const projectTypeEnumList:any = ref([]); //
const addressData = () => { const addressData = () => {
return projectData.value.provinceName + return projectData.value.provinceName ? projectData.value.provinceName +
projectData.value.cityName + projectData.value.cityName +
projectData.value.areaName + projectData.value.areaName +
projectData.value.projectAddress; projectData.value.projectAddress : '';
} }
// //
const projectTypeEnum = async () => { const projectTypeEnum = async () => {

View File

@ -17,6 +17,10 @@
</div> </div>
<div class="ctContent"> <div class="ctContent">
<div id="echartsSafe" style="width: 100%; height: 100%"></div> <div id="echartsSafe" style="width: 100%; height: 100%"></div>
<div class="notoDta" v-if="dataList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div> </div>
</div> </div>
@ -26,6 +30,10 @@
</div> </div>
<div class="cmContent"> <div class="cmContent">
<div id="echarts2" style="width: 100%; height: 100%"></div> <div id="echarts2" style="width: 100%; height: 100%"></div>
<div class="notoDta" v-if="dataList2.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
<!-- <div id="echartsMajorDanger" style="width: 100%; height: 100%"></div> --> <!-- <div id="echartsMajorDanger" style="width: 100%; height: 100%"></div> -->
</div> </div>
</div> </div>
@ -978,6 +986,7 @@ onMounted(async () => {
.cbContent { .cbContent {
width: 100%; width: 100%;
height: calc(100% - 55px); height: calc(100% - 55px);
overflow: hidden;
// height: 100%; // height: 100%;
// background: #fff; // background: #fff;
@ -999,6 +1008,7 @@ onMounted(async () => {
font-size: 16px; font-size: 16px;
width: 65%; width: 65%;
.itemHeadInner1 { .itemHeadInner1 {
border: 1px solid #e02020; border: 1px solid #e02020;
box-shadow: 0 0 0 1px #e02020; box-shadow: 0 0 0 1px #e02020;
@ -1035,7 +1045,7 @@ onMounted(async () => {
box-shadow: 0 0 0 1px #5394f7; box-shadow: 0 0 0 1px #5394f7;
background: rgba(83,148,247, 0.4); background: rgba(83,148,247, 0.4);
border-radius: 3px; border-radius: 3px;
padding: 0 15px; padding: 0 23px;
margin: 9px 0; margin: 9px 0;
margin-left: 2px; margin-left: 2px;
} }
@ -1047,6 +1057,7 @@ onMounted(async () => {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
width: 100%; width: 100%;
line-height: 30px;
} }
} }
@ -1054,11 +1065,17 @@ onMounted(async () => {
// background-color: #fff; // background-color: #fff;
width: 35%; width: 35%;
font-size: 16px; font-size: 16px;
margin-left: 10px;
.timeInfo { .timeInfo {
display: flex; width: 100%;
justify-content: flex-end; // display: flex;
margin-right: 10px; // justify-content: flex-end;
// margin-right: 10px;
font-size: 15px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
} }
} }
} }

View File

@ -85,7 +85,8 @@
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> --> <!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div> </div>
<div>{{item.hardwareName}}</div> <div>{{item.hardwareName}}</div>
<div>{{item.alarmType == 1?'烟感报警':item.alarmType == 2?'明火报警':item.alarmType == 3?'人员到底报警':item.alarmType == 4?'未带安全帽报警':item.alarmType == 5?'区域入侵报警':item.alarmType == 6?'越界入侵报警':'人员聚集报警'}}</div> <div>{{ item.alarmTypeName }}</div>
<!-- <div>{{item.alarmType == 1?'烟感报警':item.alarmType == 2?'明火报警':item.alarmType == 3?'人员到底报警':item.alarmType == 4?'未带安全帽报警':item.alarmType == 5?'区域入侵报警':item.alarmType == 6?'越界入侵报警':'人员聚集报警'}}</div> -->
<div>{{item.createTime}}</div> <div>{{item.createTime}}</div>
<div style="color: #1FADC5;" @click="openDetailDialog(item)">查看详情</div> <div style="color: #1FADC5;" @click="openDetailDialog(item)">查看详情</div>
</div> </div>

View File

@ -5,7 +5,7 @@
<div class="statistics-item" v-for="(item,index) in topDangerList" :key="index"> <div class="statistics-item" v-for="(item,index) in topDangerList" :key="index">
<span class="title">{{item.weekBetweenStr}}</span> <span class="title">{{item.weekBetweenStr}}</span>
<span class="statistics-item-content">安全隐患数量{{ item.dangerNum }}</span> <span class="statistics-item-content">安全隐患数量{{ item.dangerNum }}</span>
<span class="statistics-item-content">未整改隐患次数{{ item.overdueRectificationNum }}</span> <span class="statistics-item-content">未整改隐患次数{{ item.rectificationNum }}</span>
<span class="statistics-item-content">重大隐患次数{{ item.greatFaultLevelNum }}</span> <span class="statistics-item-content">重大隐患次数{{ item.greatFaultLevelNum }}</span>
<span class="statistics-item-content">未销项隐患次数{{ item.notCloseNum }}</span> <span class="statistics-item-content">未销项隐患次数{{ item.notCloseNum }}</span>
<span class="statistics-item-content">一般隐患次数{{ item.generalRiskNum }}</span> <span class="statistics-item-content">一般隐患次数{{ item.generalRiskNum }}</span>
@ -74,7 +74,7 @@
style="width: 150px" style="width: 150px"
@change="conditionSearch" @change="conditionSearch"
> >
<el-option v-for="(item, index) in inspectList" :key="index" :label="item.realName" :value="item.userId" /> <el-option v-for="(item, index) in inspectBySnList" :key="index" :label="item.realName" :value="item.userId" />
</el-select> </el-select>
</div> </div>
<div class="search-item"> <div class="search-item">
@ -155,11 +155,12 @@
import { ref, onMounted } from "vue"; 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 { getQualityStatisticsNumDataApi, getProjectEnterpriseApi, getSystemUserApi, getInspectionRecordApi } from "@/api/modules/agjtCommandApi"; import { getQualityStatisticsNumDataApi, getProjectEnterpriseApi, getSystemUserApi,getSystemUserBySnApi, getInspectionRecordApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore(); const store = GlobalStore();
const props = defineProps(["tip"]); const props = defineProps(["tip"]);
const BASEURL = import.meta.env.VITE_API_URL; const BASEURL = import.meta.env.VITE_API_URL;
const inspectList = ref([] as any); const inspectList = ref([] as any);
const inspectBySnList = ref([] as any);
const enterpriseListData = ref([] as any); const enterpriseListData = ref([] as any);
const levelListData = ref([ const levelListData = ref([
{ name: "一级", value: 1 }, { name: "一级", value: 1 },
@ -200,14 +201,26 @@ const textFilter = (val:any) => {
const conditionSearch = async () => { const conditionSearch = async () => {
getMemberCountList('search') getMemberCountList('search')
} }
// //
const getSystemUserBySn = async () => {
let data = {
sn: store.sn,
queryType: "projectLevelAndChildren",
};
const res: any = await getSystemUserBySnApi(data);
if (res.code == 200) {
console.log("检查人",res)
inspectBySnList.value = res.result;
}
};
//
const getSystemUserFn = async () => { const getSystemUserFn = async () => {
let data = { let data = {
projectSn: store.sn projectSn: store.sn
}; };
const res: any = await getSystemUserApi(data); const res: any = await getSystemUserApi(data);
if (res.code == 200) { if (res.code == 200) {
console.log("整改人、检查人",res) console.log("整改人",res)
inspectList.value = res.result; inspectList.value = res.result;
} }
}; };
@ -255,7 +268,8 @@ const getMemberCountList = async (tip:any) => {
projectSn: store.sn, projectSn: store.sn,
...searchForm.value, ...searchForm.value,
pageNo: tip == 'search'?1:pageNo.value, pageNo: tip == 'search'?1:pageNo.value,
pageSize: 100 pageSize: 100,
recordType: 1,
} }
if(props.tip == '实时'){ if(props.tip == '实时'){
requestData.presence = 1; requestData.presence = 1;
@ -285,6 +299,7 @@ const getMemberCountList = async (tip:any) => {
onMounted(async () => { onMounted(async () => {
await getCompanyList(); await getCompanyList();
await getDivisionUnitFn(); await getDivisionUnitFn();
await getSystemUserBySn();
await getSystemUserFn(); await getSystemUserFn();
await getQualityStatisticsNumDataFn(); await getQualityStatisticsNumDataFn();
await getMemberCountList('search'); await getMemberCountList('search');
@ -332,8 +347,9 @@ onMounted(async () => {
grid-gap: 20px; grid-gap: 20px;
color: white; color: white;
margin: 0 auto; margin: 0 auto;
padding: 20px 0;
.statistics-item{ .statistics-item{
width: 350px; width: 450px;
height: 95px; height: 95px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;

View File

@ -47,7 +47,7 @@
<div>{{ index + 1 }}</div> <div>{{ index + 1 }}</div>
<div>{{ item.regionName }}</div> <div>{{ item.regionName }}</div>
<div>{{ item.enterpriseName }}</div> <div>{{ item.enterpriseName }}</div>
<div>{{ item.delayEventType == 1 ? "人为因素" : item.delayEventType == 2 ? "环境因素" : "不可抵抗因素" }}</div> <div>{{ delayEvent(item.delayEventType) }}</div>
<div>{{ item.delayEventReason }}</div> <div>{{ item.delayEventReason }}</div>
<div class="list-img"> <div class="list-img">
<el-image <el-image
@ -89,6 +89,11 @@ const tableParams = ref({
const partyMemberList = ref({} as any); const partyMemberList = ref({} as any);
const topStatisticData = ref({} as any) const topStatisticData = ref({} as any)
const delayEvent = (type:string) => {
const arrType = ["人为因素","环境因素","不可抵抗因素"];
const arr = type.split(",");
return arr.map((item:any) => arrType[item - 1]).join("、")
}
// //
const dateChange = async () => { const dateChange = async () => {
calendarVal.value = dateTime.value calendarVal.value = dateTime.value
@ -111,7 +116,8 @@ const getMemberCountList = async (tip: any) => {
auditType: 2, auditType: 2,
date: tableParams.value.calendarVal, date: tableParams.value.calendarVal,
pageNo: tip == "search" ? 1 : pageNo.value, pageNo: tip == "search" ? 1 : pageNo.value,
pageSize: 100 pageSize: 100,
hasDelayEvent:1,
}; };
const res: any = await getProgressContentApi(requestData); const res: any = await getProgressContentApi(requestData);
console.log("获取人员信息列表", res); console.log("获取人员信息列表", res);