|
|
@@ -41,7 +41,7 @@
|
|
|
</el-form>
|
|
|
</div>
|
|
|
|
|
|
- <el-table v-loading="loading" :data="dataList" style="width: 100%">
|
|
|
+ <el-table v-loading="loading" :data="dataList" style="width: 100%" height="calc(100% - 190px)">
|
|
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
|
|
<el-table-column label="工程名称" align="center" prop="engName" min-width="180" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="工程类型" align="center" prop="engType" width="110">
|
|
|
@@ -49,8 +49,16 @@
|
|
|
<dict-tag :options="slaj_eng_type" :value="scope.row.engType" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="重要性" align="center" prop="impoGrad" width="110" />
|
|
|
- <el-table-column label="工程状态" align="center" prop="engStat" width="110" />
|
|
|
+ <el-table-column label="重要性" align="center" prop="impoGrad" width="110">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :options="DPC_IMPO_GRAD" :value="scope.row.impoGrad" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="工程状态" align="center" prop="engStat" width="110">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :options="DPC_ENG_STAT" :value="scope.row.engStat" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="主管单位" align="center" prop="supOrgName" min-width="180" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="操作" align="center" width="90" fixed="right">
|
|
|
<template #default="scope">
|
|
|
@@ -97,8 +105,16 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="安全措施" align="center" prop="safePrec" min-width="140" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="应急措施" align="center" prop="emerPrec" min-width="140" :show-overflow-tooltip="true" />
|
|
|
- <el-table-column label="一源一案" align="center" prop="oneSourceOneCase" width="100">
|
|
|
- <template #default="scope"><dict-tag :options="sys_yes_no" :value="scope.row.oneSourceOneCase" /></template>
|
|
|
+ <el-table-column label="一源一案" align="center" prop="oneSourceOneCase" min-width="160">
|
|
|
+ <template #default="scope">
|
|
|
+ <template v-if="getPlanList(scope.row).length">
|
|
|
+ <el-link v-for="p in getPlanList(scope.row)" :key="p.guid" type="primary" underline
|
|
|
+ style="margin-right: 8px" @click="openPlanDetail(p.guid)">
|
|
|
+ {{ p.planName }}
|
|
|
+ </el-link>
|
|
|
+ </template>
|
|
|
+ <span v-else style="color: #909399;">无</span>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="监管状态" align="center" prop="hazStat" width="100">
|
|
|
<template #default="scope"><dict-tag :options="haz_stat" :value="scope.row.hazStat" /></template>
|
|
|
@@ -170,6 +186,8 @@
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
+ <!-- 预案详情(点击一源一案中的预案名称弹出) -->
|
|
|
+ <PlanDetail v-model="planDetailOpen" :basic-id="planDetailBasicId" />
|
|
|
<template #footer>
|
|
|
<el-button @click="detailOpen = false">关 闭</el-button>
|
|
|
</template>
|
|
|
@@ -185,16 +203,19 @@ import {
|
|
|
import SubOrgSelect from "@/components/SubOrgSelect/index.vue"
|
|
|
import useUserStore from "@/store/modules/user"
|
|
|
import { OfficeBuilding, Search, Refresh } from '@element-plus/icons-vue'
|
|
|
+import PlanDetail from '@/components/PlanDetail/index.vue'
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
|
const userStore = useUserStore()
|
|
|
|
|
|
const {
|
|
|
haz_grad, risk_grad, sys_yes_no, haz_stat,
|
|
|
- hidd_grad, hidd_clas, hidd_stat, acci_grad, acci_cate, rep_stat
|
|
|
+ hidd_grad, hidd_clas, hidd_stat, acci_grad, acci_cate, rep_stat,
|
|
|
+ DPC_IMPO_GRAD, DPC_ENG_STAT
|
|
|
} = proxy.useDict(
|
|
|
'haz_grad', 'risk_grad', 'sys_yes_no', 'haz_stat',
|
|
|
- 'hidd_grad', 'hidd_clas', 'hidd_stat', 'acci_grad', 'acci_cate', 'rep_stat'
|
|
|
+ 'hidd_grad', 'hidd_clas', 'hidd_stat', 'acci_grad', 'acci_cate', 'rep_stat',
|
|
|
+ 'DPC_IMPO_GRAD', 'DPC_ENG_STAT'
|
|
|
)
|
|
|
|
|
|
// 工程类型(与工程管理页保持一致,无字典,硬编码)
|
|
|
@@ -233,6 +254,28 @@ const hazQuery = reactive({ pageNum: 1, pageSize: 10 })
|
|
|
const hiddQuery = reactive({ pageNum: 1, pageSize: 10 })
|
|
|
const acciQuery = reactive({ pageNum: 1, pageSize: 10 })
|
|
|
|
|
|
+// ===== 预案详情 =====
|
|
|
+const planDetailOpen = ref(false)
|
|
|
+const planDetailBasicId = ref('')
|
|
|
+
|
|
|
+/** 解析后端返回的预案列表 JSON([{guid, planName}]) */
|
|
|
+function getPlanList(row) {
|
|
|
+ const val = row.oneSourceOneCase
|
|
|
+ if (!val || val === '[]') return []
|
|
|
+ try {
|
|
|
+ const arr = JSON.parse(val)
|
|
|
+ return Array.isArray(arr) ? arr : []
|
|
|
+ } catch (e) {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function openPlanDetail(basicId) {
|
|
|
+ if (!basicId) return
|
|
|
+ planDetailBasicId.value = basicId
|
|
|
+ planDetailOpen.value = true
|
|
|
+}
|
|
|
+
|
|
|
function getList() {
|
|
|
loading.value = true
|
|
|
listEngStat(queryParams).then(res => {
|