From 229178209fb0445fc9176627e18b64cffd52bd09 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期五, 30 一月 2026 16:30:04 +0800
Subject: [PATCH] 11
---
screen/src/view/hiddenDanger/index.vue | 426 +++++++++++++---------------------------------------
1 files changed, 111 insertions(+), 315 deletions(-)
diff --git a/screen/src/view/hiddenDanger/index.vue b/screen/src/view/hiddenDanger/index.vue
index 165cfef..f8cf7de 100644
--- a/screen/src/view/hiddenDanger/index.vue
+++ b/screen/src/view/hiddenDanger/index.vue
@@ -4,16 +4,10 @@
<div class="pt--35 px--20 pb--54">
<!-- 返回 -->
<div>
- <img
- @click="backFun"
- src="../../assets/img/back.png"
- class="w--22 h--20 shrink0 mr--13 cursor-pointer"
- />
+ <img @click="backFun" src="../../assets/img/back.png" class="w--22 h--20 shrink0 mr--13 cursor-pointer" />
</div>
<!-- tab -->
- <div
- class="flex a-center absolute postion-center br--16 top--130 br--16 c-fff fs--14 bgcolor4 SSHR"
- >
+ <div class="flex a-center absolute postion-center br--16 top--130 br--16 c-fff fs--14 bgcolor4 SSHR">
<div @click="activeTab = 1" class="lh--32 px--20 cursor-pointer z-10">
重大隐患
</div>
@@ -30,228 +24,107 @@
<!-- 搜索 -->
<div class="flex a-center gap--16 mt--24 mb--20">
<!-- 项目选择(非项目端才显示) -->
- <div
- v-if="!isProjectMode"
- class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox"
- >
- <el-select
- filterable
- v-model="searchForm.projectId"
- placeholder="请选择项目"
- class="flex1"
- @change="handleSelectChange"
- >
- <el-option
- v-for="item in projectList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
+ <div v-if="!isProjectMode"
+ class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox">
+ <el-select filterable v-model="searchForm.projectId" placeholder="请选择项目" class="flex1"
+ @change="handleSelectChange">
+ <el-option v-for="item in projectList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div class="flex a-center gap--5">
- <i
- @click.stop="clearSelect('projectId')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="searchForm.projectId"
- />
- <img
- src="../../assets/img/down-circle@2x.png"
- class="w--15 h--16 shrink0"
- />
+ <i @click.stop="clearSelect('projectId')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="searchForm.projectId" />
+ <img src="../../assets/img/down-circle@2x.png" class="w--15 h--16 shrink0" />
</div>
</div>
<!-- 整改状态 -->
- <div
- v-if="showReformedFilter"
- class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox"
- >
- <el-select
- v-model="searchForm.state "
- placeholder="请选择整改状态"
- class="flex1"
- @change="handleSelectChange"
- >
- <el-option
- v-for="item in reformedOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
+ <div v-if="showReformedFilter"
+ class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox">
+ <el-select v-model="searchForm.state" placeholder="请选择整改状态" class="flex1" @change="handleSelectChange">
+ <el-option v-for="item in reformedOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div class="flex a-center gap--5">
- <i
- @click.stop="clearSelect('state')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="searchForm.state !== null"
- />
- <img
- src="../../assets/img/down-circle@2x.png"
- class="w--15 h--16 shrink0"
- />
+ <i @click.stop="clearSelect('state')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="searchForm.state !== null" />
+ <img src="../../assets/img/down-circle@2x.png" class="w--15 h--16 shrink0" />
</div>
</div>
<!-- 隐患类型(仅重大隐患显示) -->
- <div
- v-if="showTypeFilter"
- class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox"
- >
- <el-select
- v-model="searchForm.type"
- placeholder="请选择隐患类型"
- class="flex1"
- @change="handleSelectChange"
- >
+ <div v-if="showTypeFilter"
+ class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox">
+ <el-select v-model="searchForm.type" placeholder="请选择隐患类型" class="flex1" @change="handleSelectChange">
<el-option label="安全隐患" :value="1"></el-option>
<el-option label="设备隐患" :value="2"></el-option>
</el-select>
<div class="flex a-center gap--5">
- <i
- @click.stop="clearSelect('type')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="searchForm.type !== null"
- />
- <img
- src="../../assets/img/down-circle@2x.png"
- class="w--15 h--16 shrink0"
- />
+ <i @click.stop="clearSelect('type')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="searchForm.type !== null" />
+ <img src="../../assets/img/down-circle@2x.png" class="w--15 h--16 shrink0" />
</div>
</div>
<!-- 隐患等级(安全和设备隐患显示) -->
- <div
- v-if="showLevelFilter"
- class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox"
- >
- <el-select
- v-model="searchForm.level"
- placeholder="请选择隐患等级"
- class="flex1"
- @change="handleSelectChange"
- >
- <el-option
- v-for="item in levelOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
+ <div v-if="showLevelFilter"
+ class="flex a-center j-between pl--18 pr--15 h--40 relative w--300 bgcolor1 searchBox">
+ <el-select v-model="searchForm.level" placeholder="请选择隐患等级" class="flex1" @change="handleSelectChange">
+ <el-option v-for="item in levelOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div class="flex a-center gap--5">
- <i
- @click.stop="clearSelect('level')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="searchForm.level !== null"
- />
- <img
- src="../../assets/img/down-circle@2x.png"
- class="w--15 h--16 shrink0"
- />
+ <i @click.stop="clearSelect('level')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="searchForm.level !== null" />
+ <img src="../../assets/img/down-circle@2x.png" class="w--15 h--16 shrink0" />
</div>
</div>
<!-- 开始时间 -->
- <div
- class="flex a-center j-between px--20 w--300 h--40 relative bgcolor1 picker"
- >
- <el-date-picker
- v-model="startDateTime"
- ref="datetime1"
- type="datetime"
- placeholder=""
- >
+ <div class="flex a-center j-between px--20 w--300 h--40 relative bgcolor1 picker">
+ <el-date-picker v-model="startDateTime" ref="datetime1" type="datetime" placeholder="">
</el-date-picker>
- <div
- @click.stop="handleClick(1)"
- class="absolute h100 flex a-center c-fff fs--14 SHS pointer-events-none"
- style="left: 20px; right: 60px; z-index: 1"
- v-if="startDateTxt"
- >
+ <div @click.stop="handleClick(1)" class="absolute h100 flex a-center c-fff fs--14 SHS pointer-events-none"
+ style="left: 20px; right: 60px; z-index: 1" v-if="startDateTxt">
{{ startDateTxt }}
</div>
- <div
- @click.stop="handleClick(1)"
- v-else
+ <div @click.stop="handleClick(1)" v-else
class="absolute h100 flex a-center c-fff fs--14 SHSR pointer-events-none"
- style="left: 20px; right: 60px; z-index: 1"
- >
+ style="left: 20px; right: 60px; z-index: 1">
开始时间
</div>
- <div
- class="flex a-center gap--5"
- style="position: relative; z-index: 2"
- >
- <i
- @click.stop="clearDateTime('start')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="startDateTxt"
- />
- <img
- @click="handleClick(1)"
- src="../../assets/img/home/Shape@2x (6).png"
- class="w--13 h--13 shrink0 cursor-pointer"
- />
+ <div class="flex a-center gap--5" style="position: relative; z-index: 2">
+ <i @click.stop="clearDateTime('start')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="startDateTxt" />
+ <img @click="handleClick(1)" src="../../assets/img/home/Shape@2x (6).png"
+ class="w--13 h--13 shrink0 cursor-pointer" />
</div>
</div>
<!-- 结束时间 -->
- <div
- class="flex a-center j-between px--20 w--300 h--40 relative bgcolor1 picker"
- >
- <el-date-picker
- v-model="endDateTime"
- ref="datetime2"
- type="datetime"
- placeholder=""
- >
+ <div class="flex a-center j-between px--20 w--300 h--40 relative bgcolor1 picker">
+ <el-date-picker v-model="endDateTime" ref="datetime2" type="datetime" placeholder="">
</el-date-picker>
- <div
- @click="handleClick(2)"
- class="absolute h100 flex a-center c-fff fs--14 SHS pointer-events-none"
- style="left: 20px; right: 60px; z-index: 1"
- v-if="endDateTxt"
- >
+ <div @click="handleClick(2)" class="absolute h100 flex a-center c-fff fs--14 SHS pointer-events-none"
+ style="left: 20px; right: 60px; z-index: 1" v-if="endDateTxt">
{{ endDateTxt }}
</div>
- <div
- @click="handleClick(2)"
- v-else
- class="absolute h100 flex a-center c-fff fs--14 SHSR pointer-events-none"
- style="left: 20px; right: 60px; z-index: 1"
- >
+ <div @click="handleClick(2)" v-else class="absolute h100 flex a-center c-fff fs--14 SHSR pointer-events-none"
+ style="left: 20px; right: 60px; z-index: 1">
结束时间
</div>
- <div
- class="flex a-center gap--5"
- style="position: relative; z-index: 2"
- >
- <i
- @click.stop="clearDateTime('end')"
- class="el-icon-circle-close c-fff cursor-pointer"
- v-show="endDateTxt"
- />
- <img
- @click="handleClick(2)"
- src="../../assets/img/home/Shape@2x (6).png"
- class="w--13 h--13 shrink0 cursor-pointer"
- />
+ <div class="flex a-center gap--5" style="position: relative; z-index: 2">
+ <i @click.stop="clearDateTime('end')" class="el-icon-circle-close c-fff cursor-pointer"
+ v-show="endDateTxt" />
+ <img @click="handleClick(2)" src="../../assets/img/home/Shape@2x (6).png"
+ class="w--13 h--13 shrink0 cursor-pointer" />
</div>
</div>
<!-- 搜索内容 -->
- <div
- class="flex a-center j-between w--300 pl--20 h--40 relative bgcolor1 searchBox"
- >
- <el-input
- v-model="searchForm.content"
- placeholder="请输入搜索内容"
- class="flex1"
- clearable
- @keyup.enter.native="handleSearch"
- >
+ <div class="flex a-center j-between w--300 pl--20 h--40 relative bgcolor1 searchBox">
+ <el-input v-model="searchForm.content" placeholder="请输入搜索内容" class="flex1" clearable
+ @keyup.enter.native="handleSearch">
</el-input>
<div class="btn SHSR" @click="handleSearch">搜索</div>
</div>
@@ -267,7 +140,7 @@
<el-table-column label="问题备注" prop="remark" min-width="150" show-overflow-tooltip />
<el-table-column label="隐患等级" min-width="120" prop="level">
<template #default="{ row }">
- <span>{{getLevelText(row.level) }}</span>
+ <span>{{ getLevelText(row.level) }}</span>
</template>
</el-table-column>
<el-table-column v-if="activeTab == 1" label="隐患类型" min-width="120">
@@ -279,15 +152,10 @@
</el-table-column>
<el-table-column label="图片" min-width="100">
<template #default="{ row }">
- <div
- class="btnColor cursor-pointer"
- :class="
- !row.userFiles || row.userFiles.length === 0
- ? 'disableColor'
- : ''
- "
- @click="handlePreviewImages(row.userFiles)"
- >
+ <div class="btnColor cursor-pointer" :class="!row.userFiles || row.userFiles.length === 0
+ ? 'disableColor'
+ : ''
+ " @click="handlePreviewImages(row.userFiles)">
{{ row.fileNum || 0 }}张
</div>
</template>
@@ -297,86 +165,46 @@
<template #default="{ row }">
<div class="flex a-center j-center">
<div class="ripple">
- <div
- class="ripple-wave wave-1"
- :class="{ bgColor33: row.state == 3 }"
- ></div>
- <div
- class="ripple-wave wave-2"
- :class="{ bgColor44: row.state == 3 }"
- ></div>
- <div
- class="ripple-wave wave-3"
- :class="{ bgColor55: row.state == 3 }"
- ></div>
+ <div class="ripple-wave wave-1" :class="{ bgColor33: row.state == 3 }"></div>
+ <div class="ripple-wave wave-2" :class="{ bgColor44: row.state == 3 }"></div>
+ <div class="ripple-wave wave-3" :class="{ bgColor55: row.state == 3 }"></div>
</div>
<div class="ml--6 SHSR">{{ getReformedText(row.state) }}</div>
</div>
</template>
</el-table-column>
- <el-table-column
- label="责任人"
- prop="responsiblePerson"
- min-width="120"
- />
+ <el-table-column label="责任人" prop="responsiblePerson" min-width="120" />
<el-table-column label="操作" min-width="200" fixed="right">
<template #default="{ row }">
- <el-button
- @click="handleEditPeople(row)"
- type="text"
- class="btnColor"
- >
+ <el-button @click="handleEditPeople(row)" type="text" class="btnColor">
编辑责任人
</el-button>
- <el-button
- type="text"
- class="btnColor"
- @click="handleViewDetail(row)"
- >
+ <el-button type="text" class="btnColor" @click="handleViewDetail(row)">
详情
</el-button>
</template>
</el-table-column>
</CustomTable>
- <CustomPagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :current-page="pageNum"
- :page-sizes="[10, 20, 50, 100]"
- :page-size="pageSize"
- :total="total"
- />
+ <CustomPagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum"
+ :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="total" />
</div>
<!-- 修改责任人 -->
<CustomDialog title="责任人" :visible.sync="updatePeople" width="600px">
<div class="pt--37 px--45 pb--64">
- <input
- v-model="peopleName"
- placeholder="请输入"
- class="w100 h--60 fs--14 SHSR py--23 px--21 bgcolor5 c-fff"
- />
+ <input v-model="peopleName" placeholder="请输入" class="w100 h--60 fs--14 SHSR py--23 px--21 bgcolor5 c-fff" />
<div class="flex a-center j-center gap--30 mt--59 SHSR fs--16 c-fff">
- <div
- @click="closeUpdatePeople"
- class="w--150 lh--40 txt-center bgcolor2 br--4 cursor-pointer"
- >
+ <div @click="closeUpdatePeople" class="w--150 lh--40 txt-center bgcolor2 br--4 cursor-pointer">
取消
</div>
- <div
- @click="saveUpdatePeople"
- class="w--150 lh--40 txt-center bgcolor3 br--4 cursor-pointer"
- >
+ <div @click="saveUpdatePeople" class="w--150 lh--40 txt-center bgcolor3 br--4 cursor-pointer">
保存
</div>
</div>
</div>
</CustomDialog>
<!-- 隐患详情 -->
- <CustomDialog
- :title="detailData ? detailData.projectName || '隐患详情' : '隐患详情'"
- :visible.sync="detailVisible"
- width="1420px"
- >
+ <CustomDialog :title="detailData ? detailData.projectName || '隐患详情' : '隐患详情'" :visible.sync="detailVisible"
+ width="1420px">
<el-tabs v-model="activeName" type="card" @tab-click="handleClickTab">
<el-tab-pane label="基本信息" name="first">
<div class="oa" style="height: 700px">
@@ -424,21 +252,13 @@
</div>
<div class="mt--30">
<div class="SHSR fs--16 lh--16 mb--17 color1">规范条款:</div>
- <div
- class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6"
- >
- <template
- v-if="
- detailData &&
- detailData.specificTerms &&
- detailData.specificTerms.length > 0
- "
- >
- <div
- v-for="(term, index) in detailData.specificTerms"
- :key="'term-' + index"
- class="mb--10"
- >
+ <div class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6">
+ <template v-if="
+ detailData &&
+ detailData.specificTerms &&
+ detailData.specificTerms.length > 0
+ ">
+ <div v-for="(term, index) in detailData.specificTerms" :key="'term-' + index" class="mb--10">
{{ index + 1 }}. {{ term }}
</div>
</template>
@@ -449,21 +269,13 @@
</div>
<div class="mt--30">
<div class="SHSR fs--16 lh--16 mb--17 color1">建议措施:</div>
- <div
- class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6"
- >
- <template
- v-if="
- detailData &&
- detailData.suggestActions &&
- detailData.suggestActions.length > 0
- "
- >
- <div
- v-for="(action, index) in detailData.suggestActions"
- :key="'action-' + index"
- class="mb--10"
- >
+ <div class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6">
+ <template v-if="
+ detailData &&
+ detailData.suggestActions &&
+ detailData.suggestActions.length > 0
+ ">
+ <div v-for="(action, index) in detailData.suggestActions" :key="'action-' + index" class="mb--10">
{{ index + 1 }}. {{ action }}
</div>
</template>
@@ -499,9 +311,7 @@
</div>
<div class="mt--30">
<div class="SHSR fs--16 lh--16 mb--17 color1">备注:</div>
- <div
- class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6"
- >
+ <div class="min-h--60 py--20 px--19 c-fff SHSBold fs--18 w100 bgcolor6">
{{ (detailData && detailData.remark) || "-" }}
</div>
</div>
@@ -509,10 +319,7 @@
</el-tab-pane>
<el-tab-pane :label="getReviewRecordsLabel()" name="second">
<div class="oa" style="height: 700px">
- <div
- v-if="!detailData || !detailData.errorReview"
- class="txt-center c-fff fs--16 mt--50"
- >
+ <div v-if="!detailData || !detailData.errorReview" class="txt-center c-fff fs--16 mt--50">
暂无复查记录
</div>
<div v-else>
@@ -533,18 +340,13 @@
<div class="flex j-between gap--30 mt--30">
<div class="flex1">
<div class="SHSR fs--16 lh--16 mb--17 color1">复查图片:</div>
- <div
- class="lh--60 px--19 btnColor SHSBold fs--18 w100 cursor-pointer"
- :class="
- !detailData.errorReview.img ||
- detailData.errorReview.img.length === 0
- ? 'disableColor'
- : ''
- "
- @click="
+ <div class="lh--60 px--19 btnColor SHSBold fs--18 w100 cursor-pointer" :class="!detailData.errorReview.img ||
+ detailData.errorReview.img.length === 0
+ ? 'disableColor'
+ : ''
+ " @click="
handlePreviewReviewImages(detailData.errorReview.img)
- "
- >
+ ">
{{
(detailData.errorReview.img &&
detailData.errorReview.img.length) ||
@@ -579,11 +381,7 @@
</el-tabs>
</CustomDialog>
<!-- 图片预览 -->
- <CustomPreview
- :show="previewVisible"
- :imgArr="previewImages"
- @close="previewVisible = false"
- />
+ <CustomPreview :show="previewVisible" :imgArr="previewImages" @close="previewVisible = false" />
</div>
</template>
@@ -614,7 +412,7 @@
// 搜索条件
searchForm: {
projectId: null, // 选中的项目ID
- state : null, // 整改状态:1已整改 0未整改
+ state: null, // 整改状态:1已整改 0未整改
type: null, // 隐患类型:1=安全 2=设备
level: null, // 隐患等级:0=一级 1=二级 2=三级 3=四级
startTime: null, // 开始时间
@@ -696,12 +494,12 @@
// bigHiddenDangerConfig: 1开启 2关闭
// generalHiddenDangerConfig: 1开启 2关闭
- if (this.activeTab === 1) {
- // 重大隐患 tab,判断 bigHiddenDangerConfig
- return this.bigHiddenDangerConfig === 1;
+ if (this.bigHiddenDangerConfig === 1) {
+ return false
+ } else if (this.generalHiddenDangerConfig === 1) {
+ return this.activeTab === 1
} else {
- // 安全隐患和设备隐患 tab,判断 generalHiddenDangerConfig
- return this.generalHiddenDangerConfig === 1;
+ return true
}
},
},
@@ -800,7 +598,7 @@
// 加载表格数据
this.loadTableData();
},
- mounted() {},
+ mounted() { },
methods: {
// 从 localStorage 加载配置
loadConfigFromLocalStorage() {
@@ -846,7 +644,7 @@
resetSearchForm() {
this.searchForm = {
projectId: this.projectId || null,
- state : null,
+ state: null,
type: this.currentType,
level: null,
startTime: this.routeStartTime || null, // 保留路由传递的开始时间
@@ -1001,8 +799,8 @@
},
// 获取整改状态文本
- getReformedText(state ) {
- return ["未复查","未整改", "部分整改", "已整改",'未复查' ][state ];
+ getReformedText(state) {
+ return ["未复查", "未整改", "部分整改", "已整改", '未复查'][state];
},
// 预览图片
@@ -1099,7 +897,7 @@
// 获取复查状态文本
getReviewStateText(state) {
const stateMap = {
- 0:'未复查',
+ 0: '未复查',
1: "未整改",
2: "部分整改",
3: "已整改",
@@ -1327,12 +1125,10 @@
position: absolute;
top: -2px;
right: -2px;
- background: linear-gradient(
- 90deg,
- #3467d0 0%,
- #0d226a 50.35%,
- #376fe0 100%
- );
+ background: linear-gradient(90deg,
+ #3467d0 0%,
+ #0d226a 50.35%,
+ #376fe0 100%);
height: 38px;
display: flex;
align-items: center;
--
Gitblit v1.7.1