fix: BUG修改

This commit is contained in:
kun 2024-05-11 21:21:47 +08:00
parent 7a986d8ae7
commit 68cde83997
4 changed files with 194 additions and 139 deletions

View File

@ -40,9 +40,15 @@ export const getSafeEducationDataApi = (params: {}) => {
};
// 天气弹窗
// 顶部数据
export const getDelayEventTypeApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzTaskProgressContent/statsDelayEventType`, params, { headers: { noLoading: true } });
};
// 底部列表
export const getProgressContentApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/xzTaskProgressContent/page`, params, { headers: { noLoading: true } });
};
// 风险统计弹窗
// 顶部数据
@ -50,3 +56,22 @@ export const getStatisticsNumDataApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params, { headers: { noLoading: true } });
};
// 安全隐患
// 顶部数据
export const getQualityStatisticsNumDataApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNumList`, params, { headers: { noLoading: true } });
};
// 获取分包单位
export const getProjectEnterpriseApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/projectEnterprise/list`, params, { headers: { noLoading: true } });
};
// 获取整改人
export const getSystemUserApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/systemUser/getProjectChilderSystemUserList`, params, { headers: { noLoading: true } });
};
// AI警报
// 底部数据接口
export const getAlarmRecordApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/aiAnalyseHardWareAlarmRecord/selectPageList`, params, { headers: { noLoading: true } });
};

View File

@ -67,15 +67,15 @@
<el-image
fit="contain"
class="el-img"
:src="BASEURL + '/image/' + item.fieldAcquisitionUrl"
:preview-src-list="[BASEURL + '/image/' + item.fieldAcquisitionUrl]"
:src="BASEURL + '/image/' + item.imageUrl"
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
>
</el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div>
<div>{{item.workerName}}</div>
<div>{{item.phoneNumber}}</div>
<div>{{item.personType == 1?item.teamName:item.personType == 2?item.departmentName:''}}</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.createTime}}</div>
<div style="color: #1FADC5;" @click="openDetailDialog(item)">查看详情</div>
</div>
<div class="notoDta" v-if="partyMemberList.length == 0">
@ -122,6 +122,7 @@ import { GlobalStore } from "@/stores";
import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor";
import type { TabsPaneContext } from 'element-plus'
import { getAlarmTypeOption } from "@/api/modules/aIEarlyWarn";
import { getAlarmRecordApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore();
const props = defineProps(["tip"]);
const BASEURL = import.meta.env.VITE_API_URL;
@ -205,22 +206,10 @@ const getCompanyList = async () => {
const getMemberCountList = async (tip:any) => {
let requestData:any = {
projectSn: store.sn,
personType: searchForm.value.memberType, //
enterpriseId: searchForm.value.belongCompany, //
inserviceType: searchForm.value.workState, //
idCard: searchForm.value.idCard, //
workerName: searchForm.value.name, //
pageNo: tip == 'search'?1:pageNo.value,
pageSize: 100
}
if(props.tip == '实时'){
requestData.presence = 1;
} else if(props.tip == '日累积') {
requestData.attendance = 1;
} else {
requestData.inserviceType = 1;
}
const res: any = await getMemberInfoList(requestData);
const res: any = await getAlarmRecordApi(requestData);
console.log("获取人员信息列表", res);
if(tip == 'more'){
partyMemberList.value = partyMemberList.value.concat(res.result.records);

View File

@ -2,12 +2,20 @@
<div class="political-outlook">
<div class="content">
<div class="top-statistics">
<div class="statistics-item">
<div class="statistics-item" v-for="(item,index) in topDangerList" :key="index">
<span class="title">{{item.weekBetweenStr}}</span>
<span class="statistics-item-content">安全隐患数量{{ item.dangerNum }}</span>
<span class="statistics-item-content">未整改隐患次数{{ item.overdueRectificationNum }}</span>
<span class="statistics-item-content">重大隐患次数{{ item.greatFaultLevelNum }}</span>
<span class="statistics-item-content">未销项隐患次数{{ item.notCloseNum }}</span>
<span class="statistics-item-content">一般隐患次数{{ item.generalRiskNum }}</span>
</div>
<!-- <div class="statistics-item">
<span class="title">2024.04.01 - 2024.04.07</span>
<span class="statistics-item-content">安全隐患数量1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">重大隐患次数1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">销项隐患次数1</span>
<span class="statistics-item-content">一般隐患次数1</span>
</div>
<div class="statistics-item">
@ -15,7 +23,7 @@
<span class="statistics-item-content">安全隐患数量1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">重大隐患次数1</span>
<span class="statistics-item-content">整改隐患次数1</span>
<span class="statistics-item-content">销项隐患次数1</span>
<span class="statistics-item-content">一般隐患次数1</span>
</div>
<div class="statistics-item">
@ -23,43 +31,34 @@
<span class="statistics-item-content">安全隐患数量1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">重大隐患次数1</span>
<span class="statistics-item-content">整改隐患次数1</span>
<span class="statistics-item-content">销项隐患次数1</span>
<span class="statistics-item-content">一般隐患次数1</span>
</div>
<div class="statistics-item">
<span class="title">2024.04.01 - 2024.04.07</span>
<span class="statistics-item-content">安全隐患数量1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">重大隐患次数1</span>
<span class="statistics-item-content">未整改隐患次数1</span>
<span class="statistics-item-content">一般隐患次数1</span>
</div>
</div> -->
</div>
<div class="top-search">
<div class="search-item">
<span>状态</span>
<el-select
class="m-2"
placeholder="请选择"
size="small"
v-model="searchForm.memberType"
v-model="searchForm.status"
:clearable="true"
style="width: 150px"
>
<el-option v-for="(item, index) in memberTypeList" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in statusList" :key="index" :label="item.name" :value="item.value" />
</el-select>
</div>
<div class="search-item">
<span>影响级别</span>
<span>问题等级</span>
<el-select
class="m-2"
placeholder="请选择"
size="small"
v-model="searchForm.belongCompany"
v-model="searchForm.level"
:clearable="true"
style="width: 150px"
>
<el-option v-for="(item, index) in enterpriseListData" :key="index" :label="item.enterpriseName" :value="item.id" />
<el-option v-for="(item, index) in levelListData" :key="index" :label="item.enterpriseName" :value="item.id" />
</el-select>
</div>
<div class="search-item">
@ -68,49 +67,66 @@
class="m-2"
placeholder="请选择"
size="small"
v-model="searchForm.workState"
v-model="searchForm.inspectId"
:clearable="true"
style="width: 150px"
>
<el-option v-for="(item, index) in onlineWorkList" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in inspectList" :key="index" :label="item.realName" :value="item.id" />
</el-select>
</div>
<div class="search-item">
<span>整改人</span>
<el-input placeholder="请输入" v-model="searchForm.name" :clearable="true" style="width: 150px" />
<el-select
class="m-2"
placeholder="请选择"
size="small"
v-model="searchForm.changeId"
:clearable="true"
style="width: 150px"
>
<el-option v-for="(item, index) in inspectList" :key="index" :label="item.realName" :value="item.id" />
</el-select>
</div>
<div class="search-item">
<span>分包单位</span>
<el-input placeholder="请输入" v-model="searchForm.idCard" :clearable="true" style="width: 180px" />
<el-select
class="m-2"
placeholder="请选择"
size="small"
v-model="searchForm.enterpriseId"
:clearable="true"
style="width: 150px"
>
<el-option v-for="(item, index) in enterpriseListData" :key="index" :label="item.enterpriseName" :value="item.id" />
</el-select>
</div>
<!-- <el-button @click="getMemberCountList('search')">查询</el-button> -->
</div>
<div class="table-one">
<div class="tabList">
<div>序号</div>
<div>检查结果</div>
<div>状态</div>
<div>问题等级</div>
<div>隐患部位</div>
<div>隐患描述及要求</div>
<div>整改时限</div>
<div>检查人</div>
<div>检查时间</div>
<div>隐患信息</div>
<div style="width: 15%;">检查时间</div>
<div>整改人</div>
<div>分包单位</div>
</div>
<el-scrollbar class="listBox" ref="refScrollbar">
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
<div>{{index + 1}}</div>
<div>{{item.workerName}}</div>
<div class="list-img">
<el-image
fit="contain"
class="el-img"
:src="BASEURL + '/image/' + item.fieldAcquisitionUrl"
:preview-src-list="[BASEURL + '/image/' + item.fieldAcquisitionUrl]"
>
</el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div>
<div>{{item.phoneNumber}}</div>
<div>{{item.personType == 1?item.teamName:item.personType == 2?item.departmentName:''}}</div>
<div>{{item.phoneNumber}}</div>
<div>{{statusList[item.status].name}}</div>
<div>{{item.level?levelListData[item.level - 1].name:''}}</div>
<div>{{item.regionName}}</div>
<div>{{item.dangerItemContent}}</div>
<div>{{item.changeLimitTime}}</div>
<div>{{item.inspectManName}}</div>
<div style="width: 15%;">{{item.inspectTime}}</div>
<div>{{item.changeId}}</div>
<div>{{item.enterpriseName}}</div>
</div>
<div class="notoDta" v-if="partyMemberList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
@ -126,46 +142,76 @@
import { ref, onMounted } from "vue";
import { GlobalStore } from "@/stores";
import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor";
import type { TabsPaneContext } from 'element-plus'
import { getQualityStatisticsNumDataApi, getProjectEnterpriseApi, getSystemUserApi, getInspectionRecordApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore();
const props = defineProps(["tip"]);
const BASEURL = import.meta.env.VITE_API_URL;
const activeName = ref('first')
const activeIndex = ref('1' as any)
const onlineWorkList = ref([
{ name: "在职", value: 1 },
{ name: "离职", value: 2 }
])
const inspectList = ref([] as any);
const enterpriseListData = ref([] as any);
const memberTypeList = ref([
{ name: "劳务人员", value: 1 },
{ name: "管理人员", value: 2 },
{ name: "临时人员", value: 3 }
const levelListData = ref([
{ name: "重大隐患", value: 1 },
{ name: "较大隐患", value: 2 },
{ name: "一般隐患", value: 3 },
{ name: "低隐患", value: 4 }
])
const statusList = ref([
{ name: "无需整改", value: 1 },
{ name: "待整改", value: 2 },
{ name: "待复查", value: 3 },
{ name: "待核验", value: 4 },
{ name: "合格", value: 5 },
{ name: "不合格", value: 6 },
{ name: "超期未关闭", value: 7 },
]);
const alarmTypeList = ref(["报警", "预警"]);
let pageNo = ref(1 as any);
let moreScroll = ref(true as any);
const refScrollbar = ref(null as any); //
const deviceList = ref([] as any); //
const searchForm = ref({
memberType: '',
belongCompany: '',
workState: '',
name: '',
idCard: ''
status: '',
inspectId: '',
changeId: '',
enterpriseId: '',
level: ''
});
const topDangerList = ref([] as any)
const partyMemberList = ref({} as any);
const handleClick = (tab: TabsPaneContext, event: Event) => {
// console.log(tab, event)
// console.log('tab',tab.index)
// console.log('activeName',activeName.value)
// if(activeName.value === 'first') console.log('1')
// if(activeName.value === 'second') console.log('2')
// if(activeName.value === 'third') console.log('3')
activeIndex.value = tab.index
console.log('activeIndex',activeIndex.value)
}
//
const getSystemUserFn = async () => {
let data = {
projectSn: store.sn
};
const res: any = await getSystemUserApi(data);
if (res.code == 200) {
console.log("整改人、检查人",res)
inspectList.value = res.result;
}
};
//
const getDivisionUnitFn = async () => {
let data = {
projectSn: store.sn,
pageNo: 1,
pageSize: 999
};
const res: any = await getProjectEnterpriseApi(data);
if (res.code == 200) {
console.log("分包单位",res)
enterpriseListData.value = res.result.records;
}
};
//
const getQualityStatisticsNumDataFn = async () => {
let data = {
projectSn: store.sn,
isStatsByWeek: 1
};
const res: any = await getQualityStatisticsNumDataApi(data);
if (res.code == 200) {
console.log("安全隐患顶部数据",res)
topDangerList.value = res.result || []
}
};
//
const getCompanyList = async () => {
let data = {
@ -182,11 +228,7 @@ const getCompanyList = async () => {
const getMemberCountList = async (tip:any) => {
let requestData:any = {
projectSn: store.sn,
personType: searchForm.value.memberType, //
enterpriseId: searchForm.value.belongCompany, //
inserviceType: searchForm.value.workState, //
idCard: searchForm.value.idCard, //
workerName: searchForm.value.name, //
...searchForm.value,
pageNo: tip == 'search'?1:pageNo.value,
pageSize: 100
}
@ -197,12 +239,12 @@ const getMemberCountList = async (tip:any) => {
} else {
requestData.inserviceType = 1;
}
const res: any = await getMemberInfoList(requestData);
console.log("获取人员信息列表", res);
const res: any = await getInspectionRecordApi(requestData);
console.log("获取安全隐患底部列表", res);
if(tip == 'more'){
partyMemberList.value = partyMemberList.value.concat(res.result.records);
partyMemberList.value = partyMemberList.value.concat(res.result.page.records);
} else {
partyMemberList.value = res.result.records;
partyMemberList.value = res.result.page.records;
}
// IP
// partyMemberList.value.map((item:any) => {
@ -217,6 +259,9 @@ const getMemberCountList = async (tip:any) => {
onMounted(async () => {
await getCompanyList();
await getDivisionUnitFn();
await getSystemUserFn();
await getQualityStatisticsNumDataFn();
await getMemberCountList('search');
refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
// console.log("", e);
@ -340,7 +385,7 @@ onMounted(async () => {
margin-top: 2%;
div {
text-align: center;
width: 20%;
width: 10%;
}
}
.listBox {
@ -365,7 +410,7 @@ onMounted(async () => {
}
}
div {
width: 20%;
width: 10%;
white-space: nowrap; //
overflow: hidden;
text-overflow: ellipsis;

View File

@ -4,7 +4,7 @@
<div class="top-data-show">
<div class="top-left">
<el-date-picker v-model="dateTime" type="month" placeholder="请选择日期" value-format="YYYY-MM" :clearable="false"/>
<el-calendar v-model="calendarVal" style="width: 95%; margin-top: 15px" />
<el-calendar v-model="calendarVal" style="width: 95%; margin-top: 15px"/>
</div>
<div class="top-right">
<div class="right-title-data">
@ -36,29 +36,29 @@
<div class="table-one">
<div class="tabList">
<div>序号</div>
<div>天气状况</div>
<div>影响工期天数</div>
<div>预警提示</div>
<div>预警记录时间</div>
<div>备注</div>
<div>区域</div>
<div>单位名称</div>
<div>延期误工类型</div>
<div>延期误工原因</div>
<div>图片</div>
</div>
<el-scrollbar class="listBox" ref="refScrollbar">
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
<div>{{ index + 1 }}</div>
<div>{{ item.workerName }}</div>
<div>{{ item.regionName }}</div>
<div>{{ item.enterpriseName }}</div>
<div>{{ item.delayEventType == 1 ? "人为因素" : item.personType == 2 ? "环境因素" : "不可抵抗因素" }}</div>
<div>{{ item.delayEventReason }}</div>
<div class="list-img">
<el-image
fit="contain"
class="el-img"
:src="BASEURL + '/image/' + item.fieldAcquisitionUrl"
:preview-src-list="[BASEURL + '/image/' + item.fieldAcquisitionUrl]"
:src="BASEURL + '/image/' + item.image"
:preview-src-list="[BASEURL + '/image/' + item.image]"
>
</el-image>
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
</div>
<div>{{ item.phoneNumber }}</div>
<div>{{ item.personType == 1 ? item.teamName : item.personType == 2 ? item.departmentName : "" }}</div>
<div>{{ item.phoneNumber }}</div>
</div>
<div class="notoDta" v-if="partyMemberList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
@ -71,27 +71,21 @@
</template>
<script lang="ts" setup>
import { ref, onMounted } from "vue";
import { ref, onMounted, watch } from "vue";
import { GlobalStore } from "@/stores";
import { getMemberInfoList } from "@/api/modules/labor";
import { getDelayEventTypeApi } from "@/api/modules/agjtCommandApi";
import { getDelayEventTypeApi, getProgressContentApi } from "@/api/modules/agjtCommandApi";
import moment from "moment";
const store = GlobalStore();
const props = defineProps(["tip"]);
const BASEURL = import.meta.env.VITE_API_URL;
const dateTime:any = ref(null);
const calendarVal:any = ref(new Date());
const calendarVal:any = ref();
let pageNo = ref(1 as any);
let moreScroll = ref(true as any);
const refScrollbar = ref(null as any); //
const deviceList = ref([] as any); //
const searchForm = ref({
memberType: "",
belongCompany: "",
workState: "",
name: "",
idCard: ""
});
const tableParams = ref({
calendarVal: ""
})
const partyMemberList = ref({} as any);
const topStatisticData = ref({} as any)
@ -99,7 +93,8 @@ const topStatisticData = ref({} as any)
const getDelayEventTypeFn = async () => {
let requestData: any = {
projectSn: store.sn,
auditType: 2
auditType: 2,
month: dateTime.value
};
const res: any = await getDelayEventTypeApi(requestData);
console.log("获取天气顶部统计数据", res);
@ -109,22 +104,12 @@ const getDelayEventTypeFn = async () => {
const getMemberCountList = async (tip: any) => {
let requestData: any = {
projectSn: store.sn,
personType: searchForm.value.memberType, //
enterpriseId: searchForm.value.belongCompany, //
inserviceType: searchForm.value.workState, //
idCard: searchForm.value.idCard, //
workerName: searchForm.value.name, //
auditType: 2,
date: tableParams.value.calendarVal,
pageNo: tip == "search" ? 1 : pageNo.value,
pageSize: 100
};
if (props.tip == "实时") {
requestData.presence = 1;
} else if (props.tip == "日累积") {
requestData.attendance = 1;
} else {
requestData.inserviceType = 1;
}
const res: any = await getMemberInfoList(requestData);
const res: any = await getProgressContentApi(requestData);
console.log("获取人员信息列表", res);
if (tip == "more") {
partyMemberList.value = partyMemberList.value.concat(res.result.records);
@ -141,11 +126,22 @@ const getMemberCountList = async (tip: any) => {
pageNo.value = pageNo.value + 1;
}
};
watch(
() => calendarVal.value,
newVal => {
// console.log(newVal, "newVal");
if (newVal) {
// props.xData = newVal;
tableParams.value.calendarVal = moment(newVal).format("YYYY-MM-DD")
getMemberCountList("search");
}
}
);
onMounted(async () => {
dateTime.value = moment(new Date()).format("YYYY-MM")
calendarVal.value = moment(new Date()).format("YYYY-MM-DD")
await getDelayEventTypeFn();
await getMemberCountList("search");
dateTime.value = moment(new Date()).format("YYYY-MM")
refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
// console.log("", e);
const scrollTop = e.target.scrollTop;
@ -403,7 +399,7 @@ onMounted(async () => {
}
}
.notoDta {
top: 35%;
top: 15%;
width: 20%;
left: 40%;
position: absolute;