|
|
@@ -20,6 +20,7 @@ import {
|
|
|
import {
|
|
|
kanbanApi,
|
|
|
IotDangerApi,
|
|
|
+ IotHiddenApi,
|
|
|
IotInstrumentApi,
|
|
|
IotMeasureCertApi,
|
|
|
IotCertificateApi
|
|
|
@@ -207,8 +208,8 @@ const permitStats = ref<PermitStat[]>([
|
|
|
])
|
|
|
|
|
|
const qualificationWarnings = ref([
|
|
|
- { label: '证件过期', value: 0, accent: '#ff7a7a' },
|
|
|
- { label: '即将到期', value: 0, accent: '#e6ab00' }
|
|
|
+ { label: '证件过期', value: 0, accent: '#ff7a7a', key: 'expired' },
|
|
|
+ { label: '即将到期', value: 0, accent: '#e6ab00', key: 'warn' }
|
|
|
])
|
|
|
|
|
|
const qhseMetricTabs = [
|
|
|
@@ -223,6 +224,7 @@ const qhseMetricTabs = [
|
|
|
] as const
|
|
|
|
|
|
const activeQhseMetric = ref<QhseMetricValue>('ltir')
|
|
|
+const dangerGradeOptions = computed(() => getStrDictOptions(DICT_TYPE.DANGER_GRADE))
|
|
|
|
|
|
const qhseTrendSeries = ref<Record<QhseMetricValue, Array<{ year: string; value: number }>>>({
|
|
|
ltir: [
|
|
|
@@ -355,12 +357,19 @@ const safeDayBarData = ref<SafeDayBarItem[]>([])
|
|
|
const summaryPanel = ref<any>(null)
|
|
|
const total = ref(0)
|
|
|
const instrumentExpired = ref(0)
|
|
|
+const safeDayDisplayOrder = ['瑞气能源', '瑞霖能源', '5#项目', '酸化压裂', '气体增产', '钻修井']
|
|
|
|
|
|
function buildSafeDayBarData(baseData: SafeDayMap) {
|
|
|
- safeDayBarData.value = Object.entries(baseData || {}).map(([name, value]) => ({
|
|
|
+ const mappedData = Object.entries(baseData || {}).map(([name, value]) => ({
|
|
|
name,
|
|
|
value: Number(value) || 0
|
|
|
}))
|
|
|
+ const orderedData = safeDayDisplayOrder
|
|
|
+ .map((name) => mappedData.find((item) => item.name === name))
|
|
|
+ .filter(Boolean) as SafeDayBarItem[]
|
|
|
+ const remainingData = mappedData.filter((item) => !safeDayDisplayOrder.includes(item.name))
|
|
|
+
|
|
|
+ safeDayBarData.value = [...orderedData, ...remainingData]
|
|
|
}
|
|
|
|
|
|
async function getStatic() {
|
|
|
@@ -503,6 +512,8 @@ function initHazardChart() {
|
|
|
renderer: CHART_RENDERER
|
|
|
})
|
|
|
hazardChart.setOption(getHazardChartOption(), true)
|
|
|
+ hazardChart.off('click')
|
|
|
+ hazardChart.on('click', handleHazardBarClick)
|
|
|
}
|
|
|
|
|
|
function updateHazardChart() {
|
|
|
@@ -574,6 +585,7 @@ function getSafeDayChartOption(): echarts.EChartsOption {
|
|
|
},
|
|
|
yAxis: {
|
|
|
type: 'category',
|
|
|
+ inverse: true,
|
|
|
data: safeDayBarData.value.map((item) => item.name),
|
|
|
axisLine: { show: false },
|
|
|
axisTick: { show: false },
|
|
|
@@ -946,6 +958,57 @@ const certQueryParams = reactive({
|
|
|
alertWarn: undefined as string | undefined
|
|
|
})
|
|
|
|
|
|
+const certWarningDialogVisible = ref(false)
|
|
|
+const certWarningDialogTitle = ref('')
|
|
|
+const certWarningLoading = ref(false)
|
|
|
+const certWarningList = ref<any[]>([])
|
|
|
+const certWarningTotal = ref(0)
|
|
|
+const certWarningQueryParams = reactive({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ deptId: userStore.getUser.deptId,
|
|
|
+ type: undefined as string | undefined,
|
|
|
+ classify: undefined as string | undefined,
|
|
|
+ userName: undefined as string | undefined,
|
|
|
+ expired: undefined as boolean | undefined,
|
|
|
+ alertWarn: undefined as boolean | undefined
|
|
|
+})
|
|
|
+
|
|
|
+const hazardDialogVisible = ref(false)
|
|
|
+const hazardDialogTitle = ref('')
|
|
|
+const hazardDialogLoading = ref(false)
|
|
|
+const hazardDialogList = ref<any[]>([])
|
|
|
+const hazardDialogTotal = ref(0)
|
|
|
+const hazardDialogQueryParams = reactive({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ deptId: userStore.getUser.deptId,
|
|
|
+ status: undefined as string | undefined,
|
|
|
+ address: '',
|
|
|
+ source: ''
|
|
|
+})
|
|
|
+
|
|
|
+const dangerDialogVisible = ref(false)
|
|
|
+const dangerDialogTitle = ref('')
|
|
|
+const dangerDialogLoading = ref(false)
|
|
|
+const dangerDialogList = ref<any[]>([])
|
|
|
+const dangerDialogTotal = ref(0)
|
|
|
+const dangerDialogQueryParams = reactive({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ riskGrade: '',
|
|
|
+ deptId: userStore.getUser.deptId
|
|
|
+})
|
|
|
+
|
|
|
+const getCertificateTypeText = (type: string) => {
|
|
|
+ const map: Record<string, string> = {
|
|
|
+ personal: '个人证书',
|
|
|
+ organization: '组织证书',
|
|
|
+ other: '其他'
|
|
|
+ }
|
|
|
+ return map[type] || type
|
|
|
+}
|
|
|
+
|
|
|
function formatDateCorrectly(timestamp: any) {
|
|
|
if (!timestamp) return ''
|
|
|
let time = Number(timestamp)
|
|
|
@@ -1016,6 +1079,103 @@ async function getCertificateBoardList() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+async function getCertificateWarningList() {
|
|
|
+ certWarningLoading.value = true
|
|
|
+ try {
|
|
|
+ const data = await IotMeasureCertApi.getIotMeasureCertPage(certWarningQueryParams)
|
|
|
+ certWarningList.value = data.list || []
|
|
|
+ certWarningTotal.value = data.total || 0
|
|
|
+ } finally {
|
|
|
+ certWarningLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function getHazardDialogList() {
|
|
|
+ hazardDialogLoading.value = true
|
|
|
+ try {
|
|
|
+ const data = await IotHiddenApi.getHiddenList(hazardDialogQueryParams)
|
|
|
+ hazardDialogList.value = data.list || []
|
|
|
+ hazardDialogTotal.value = data.total || 0
|
|
|
+ } finally {
|
|
|
+ hazardDialogLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function getDangerDialogList() {
|
|
|
+ dangerDialogLoading.value = true
|
|
|
+ try {
|
|
|
+ const data = await IotDangerApi.getDangerList(dangerDialogQueryParams)
|
|
|
+ dangerDialogList.value = data.list || []
|
|
|
+ dangerDialogTotal.value = data.total || 0
|
|
|
+ } finally {
|
|
|
+ dangerDialogLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function openHazardDialog(barLabel: string) {
|
|
|
+ hazardDialogQueryParams.pageNo = 1
|
|
|
+ hazardDialogQueryParams.pageSize = 10
|
|
|
+ hazardDialogQueryParams.deptId = userStore.getUser.deptId
|
|
|
+ hazardDialogQueryParams.address = ''
|
|
|
+ hazardDialogQueryParams.source = ''
|
|
|
+
|
|
|
+ if (barLabel === '未整改') {
|
|
|
+ hazardDialogTitle.value = '未整改隐患列表'
|
|
|
+ hazardDialogQueryParams.status = 'todo'
|
|
|
+ } else if (barLabel === '已整改') {
|
|
|
+ hazardDialogTitle.value = '已整改隐患列表'
|
|
|
+ hazardDialogQueryParams.status = 'finished'
|
|
|
+ } else {
|
|
|
+ hazardDialogTitle.value = '隐患总数列表'
|
|
|
+ hazardDialogQueryParams.status = undefined
|
|
|
+ }
|
|
|
+
|
|
|
+ hazardDialogVisible.value = true
|
|
|
+ getHazardDialogList()
|
|
|
+}
|
|
|
+
|
|
|
+function openDangerDialog(zone: { title?: string }) {
|
|
|
+ const riskGradeLabel = String(zone.title || '')
|
|
|
+ .replace(/区$/, '')
|
|
|
+ .trim()
|
|
|
+ const matchedOption = dangerGradeOptions.value.find((item) => item.label === riskGradeLabel)
|
|
|
+ const riskGrade = matchedOption?.value || ''
|
|
|
+ dangerDialogQueryParams.pageNo = 1
|
|
|
+ dangerDialogQueryParams.pageSize = 10
|
|
|
+ dangerDialogQueryParams.deptId = userStore.getUser.deptId
|
|
|
+ dangerDialogQueryParams.riskGrade = riskGrade
|
|
|
+ dangerDialogTitle.value = riskGradeLabel ? `${riskGradeLabel}风险列表` : '风险列表'
|
|
|
+ dangerDialogVisible.value = true
|
|
|
+ getDangerDialogList()
|
|
|
+}
|
|
|
+
|
|
|
+function handleHazardBarClick(params: { name?: string }) {
|
|
|
+ if (!params?.name) return
|
|
|
+ openHazardDialog(params.name)
|
|
|
+}
|
|
|
+
|
|
|
+function openCertificateWarningDialog(type: 'expired' | 'warn') {
|
|
|
+ certWarningQueryParams.pageNo = 1
|
|
|
+ certWarningQueryParams.pageSize = 10
|
|
|
+ certWarningQueryParams.deptId = userStore.getUser.deptId
|
|
|
+ certWarningQueryParams.type = undefined
|
|
|
+ certWarningQueryParams.classify = undefined
|
|
|
+ certWarningQueryParams.userName = undefined
|
|
|
+
|
|
|
+ if (type === 'expired') {
|
|
|
+ certWarningDialogTitle.value = '证件过期'
|
|
|
+ certWarningQueryParams.expired = true
|
|
|
+ certWarningQueryParams.alertWarn = undefined
|
|
|
+ } else {
|
|
|
+ certWarningDialogTitle.value = '证件即将到期'
|
|
|
+ certWarningQueryParams.expired = undefined
|
|
|
+ certWarningQueryParams.alertWarn = true
|
|
|
+ }
|
|
|
+
|
|
|
+ certWarningDialogVisible.value = true
|
|
|
+ getCertificateWarningList()
|
|
|
+}
|
|
|
+
|
|
|
function handleCertificateQuery() {
|
|
|
certQueryParams.pageNo = 1
|
|
|
getCertificateBoardList()
|
|
|
@@ -1182,7 +1342,11 @@ onUnmounted(() => {
|
|
|
风险管控及隐患治理
|
|
|
</div>
|
|
|
<div class="risk-grid">
|
|
|
- <article v-for="zone in riskZones" :key="zone.title" class="risk-card">
|
|
|
+ <article
|
|
|
+ v-for="zone in riskZones"
|
|
|
+ :key="zone.title"
|
|
|
+ class="risk-card risk-card--clickable"
|
|
|
+ @click="openDangerDialog(zone)">
|
|
|
<div class="risk-card__title">
|
|
|
<span class="risk-card__dot" :style="{ background: zone.color }"></span>
|
|
|
<span :style="{ color: zone.color }">{{ zone.title }}</span>
|
|
|
@@ -1262,7 +1426,8 @@ onUnmounted(() => {
|
|
|
<div
|
|
|
v-for="item in qualificationWarnings"
|
|
|
:key="item.label"
|
|
|
- class="qualification-item">
|
|
|
+ class="qualification-item qualification-item--clickable"
|
|
|
+ @click="openCertificateWarningDialog(item.key)">
|
|
|
<span class="qualification-item__label">{{ item.label }}:</span>
|
|
|
<strong :style="{ color: item.accent }">
|
|
|
<CountTo
|
|
|
@@ -1401,6 +1566,17 @@ onUnmounted(() => {
|
|
|
</el-table-column>
|
|
|
|
|
|
<el-table-column label="备注" align="center" prop="remark" />
|
|
|
+ <el-table-column label="操作" align="center" fixed="right" min-width="180px" action>
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button
|
|
|
+ link
|
|
|
+ type="success"
|
|
|
+ v-if="scope.row.certPic"
|
|
|
+ @click="viewFile(scope.row.certPic)">
|
|
|
+ 查看证书
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<div class="certificate-pagination">
|
|
|
@@ -1453,13 +1629,279 @@ onUnmounted(() => {
|
|
|
</div>
|
|
|
</template>
|
|
|
</Dialog>
|
|
|
+
|
|
|
+ <Dialog v-model="certWarningDialogVisible" :title="certWarningDialogTitle" width="1100px">
|
|
|
+ <div class="certificate-warning-dialog">
|
|
|
+ <el-table
|
|
|
+ :loading="certWarningLoading"
|
|
|
+ :data="certWarningList"
|
|
|
+ :row-style="tableRowStyle"
|
|
|
+ :row-class-name="tableRowClassName"
|
|
|
+ height="400"
|
|
|
+ class="device-list-table production-brief-table">
|
|
|
+ <el-table-column label="序号" width="80" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ {{
|
|
|
+ (certWarningQueryParams.pageNo - 1) * certWarningQueryParams.pageSize +
|
|
|
+ scope.$index +
|
|
|
+ 1
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="证书类型" align="center" prop="type" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ getCertificateTypeText(scope.row.type) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="证书类别" align="center" width="150" prop="classify">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag
|
|
|
+ v-if="scope.row.type === 'organization'"
|
|
|
+ :type="DICT_TYPE.ORG_CERT"
|
|
|
+ :value="scope.row.classify" />
|
|
|
+ <dict-tag v-else :type="DICT_TYPE.PERSON_CERT" :value="scope.row.classify" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="证书名称"
|
|
|
+ align="center"
|
|
|
+ prop="certName"
|
|
|
+ show-overflow-tooltip
|
|
|
+ width="100" />
|
|
|
+ <el-table-column label="所属人" align="center" prop="userName" width="100" />
|
|
|
+ <el-table-column
|
|
|
+ label="所在部门"
|
|
|
+ align="center"
|
|
|
+ prop="deptName"
|
|
|
+ width="100"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="颁发机构"
|
|
|
+ align="center"
|
|
|
+ prop="certOrg"
|
|
|
+ width="180"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="证书标准"
|
|
|
+ align="center"
|
|
|
+ prop="certStandard"
|
|
|
+ width="100"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column label="颁发时间" align="center" prop="certIssue" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ formatDateCorrectly(scope.row.certIssue) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="有效期" align="center" prop="certExpire" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ formatDateCorrectly(scope.row.certExpire) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
|
|
+ <el-table-column label="操作" align="center" fixed="right" min-width="100px">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button
|
|
|
+ link
|
|
|
+ type="success"
|
|
|
+ v-if="scope.row.certPic"
|
|
|
+ @click="viewFile(scope.row.certPic)">
|
|
|
+ 查看证书
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div class="certificate-pagination">
|
|
|
+ <Pagination
|
|
|
+ :total="certWarningTotal"
|
|
|
+ v-model:page="certWarningQueryParams.pageNo"
|
|
|
+ v-model:limit="certWarningQueryParams.pageSize"
|
|
|
+ @pagination="getCertificateWarningList" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Dialog>
|
|
|
+
|
|
|
+ <Dialog v-model="hazardDialogVisible" :title="hazardDialogTitle" width="1400px">
|
|
|
+ <div class="certificate-warning-dialog">
|
|
|
+ <el-table
|
|
|
+ :loading="hazardDialogLoading"
|
|
|
+ :data="hazardDialogList"
|
|
|
+ height="400"
|
|
|
+ class="device-list-table production-brief-table">
|
|
|
+ <el-table-column label="序号" width="80" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ {{
|
|
|
+ (hazardDialogQueryParams.pageNo - 1) * hazardDialogQueryParams.pageSize +
|
|
|
+ scope.$index +
|
|
|
+ 1
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="单位" align="center" prop="deptName" min-width="140" />
|
|
|
+ <el-table-column label="类型" align="center" prop="classifyName" min-width="120" />
|
|
|
+ <el-table-column label="来源" align="center" min-width="110">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.QHSE_HAZARD_SOURCE" :value="scope.row.source" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="地点" align="center" prop="address" min-width="140" />
|
|
|
+ <el-table-column
|
|
|
+ label="存在问题"
|
|
|
+ align="center"
|
|
|
+ prop="problem"
|
|
|
+ min-width="180"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column label="隐患附件" align="center" min-width="100">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button v-if="row.hazardFile" link type="primary" @click="viewFile(row.hazardFile)">
|
|
|
+ 查看
|
|
|
+ </el-button>
|
|
|
+ <span v-else>-</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="整改人"
|
|
|
+ align="center"
|
|
|
+ prop="correctPersonName"
|
|
|
+ min-width="100"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="整改要求"
|
|
|
+ align="center"
|
|
|
+ prop="correctStandard"
|
|
|
+ min-width="160"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="整改情况"
|
|
|
+ align="center"
|
|
|
+ prop="rectifyDesc"
|
|
|
+ min-width="160"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column label="整改附件" align="center" min-width="100">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button
|
|
|
+ v-if="row.rectifyFile"
|
|
|
+ link
|
|
|
+ type="primary"
|
|
|
+ @click="viewFile(row.rectifyFile)">
|
|
|
+ 查看
|
|
|
+ </el-button>
|
|
|
+ <span v-else>-</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="排查时间" align="center" min-width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ formatDateCorrectly(row.checkTime) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="状态" align="center" min-width="90">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.QHSE_HAZARD_STATUS" :value="scope.row.status" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="备注"
|
|
|
+ align="center"
|
|
|
+ prop="remark"
|
|
|
+ min-width="120"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div class="certificate-pagination">
|
|
|
+ <Pagination
|
|
|
+ :total="hazardDialogTotal"
|
|
|
+ v-model:page="hazardDialogQueryParams.pageNo"
|
|
|
+ v-model:limit="hazardDialogQueryParams.pageSize"
|
|
|
+ @pagination="getHazardDialogList" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Dialog>
|
|
|
+
|
|
|
+ <Dialog v-model="dangerDialogVisible" :title="dangerDialogTitle" width="1400px">
|
|
|
+ <div class="certificate-warning-dialog">
|
|
|
+ <el-table
|
|
|
+ :loading="dangerDialogLoading"
|
|
|
+ :data="dangerDialogList"
|
|
|
+ height="400"
|
|
|
+ class="device-list-table production-brief-table">
|
|
|
+ <el-table-column label="序号" width="80" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ {{
|
|
|
+ (dangerDialogQueryParams.pageNo - 1) * dangerDialogQueryParams.pageSize +
|
|
|
+ scope.$index +
|
|
|
+ 1
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="区域/位置"
|
|
|
+ align="center"
|
|
|
+ prop="region"
|
|
|
+ min-width="140"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="危险因素描述"
|
|
|
+ align="center"
|
|
|
+ prop="elementDescription"
|
|
|
+ min-width="180"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="可导致的后果"
|
|
|
+ align="center"
|
|
|
+ prop="maybeResult"
|
|
|
+ min-width="180"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column label="风险评价" align="center">
|
|
|
+ <el-table-column prop="evalKn" label="可能性 (L)" width="100" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.evalKn }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="evalYz" label="严重性 (S)" width="100" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.evalYz }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="evalFxz" label="风险值 (R)" width="100" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.evalFxz }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="riskGrade" label="风险等级" width="100" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.DANGER_GRADE" :value="scope.row.riskGrade" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="控制措施"
|
|
|
+ align="center"
|
|
|
+ prop="controlMethod"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <el-table-column
|
|
|
+ label="责任人"
|
|
|
+ align="center"
|
|
|
+ prop="charge"
|
|
|
+ min-width="100"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div class="certificate-pagination">
|
|
|
+ <Pagination
|
|
|
+ :total="dangerDialogTotal"
|
|
|
+ v-model:page="dangerDialogQueryParams.pageNo"
|
|
|
+ v-model:limit="dangerDialogQueryParams.pageSize"
|
|
|
+ @pagination="getDangerDialogList" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Dialog>
|
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
@import url('@/styles/qhse_kb.scss');
|
|
|
|
|
|
:deep(.el-select__wrapper) {
|
|
|
- height: 38px !important;
|
|
|
+ // height: 38px !important;
|
|
|
font-size: 14px !important;
|
|
|
}
|
|
|
.qhse-board {
|
|
|
@@ -1529,6 +1971,17 @@ onUnmounted(() => {
|
|
|
color: #5c7393;
|
|
|
}
|
|
|
|
|
|
+.risk-card--clickable {
|
|
|
+ cursor: pointer;
|
|
|
+ transition:
|
|
|
+ transform 0.2s ease,
|
|
|
+ box-shadow 0.2s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.risk-card--clickable:hover {
|
|
|
+ transform: translateY(-2px);
|
|
|
+}
|
|
|
+
|
|
|
.summary-toolbar__picker {
|
|
|
width: 190px;
|
|
|
}
|
|
|
@@ -1820,10 +2273,28 @@ onUnmounted(() => {
|
|
|
color: #516785;
|
|
|
}
|
|
|
|
|
|
+.qualification-item--clickable {
|
|
|
+ cursor: pointer;
|
|
|
+ transition:
|
|
|
+ transform 0.18s ease,
|
|
|
+ opacity 0.18s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.qualification-item--clickable:hover {
|
|
|
+ transform: translateX(4px);
|
|
|
+ opacity: 0.9;
|
|
|
+}
|
|
|
+
|
|
|
.qualification-item strong {
|
|
|
font-size: 28px;
|
|
|
}
|
|
|
|
|
|
+.certificate-warning-dialog {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 14px;
|
|
|
+}
|
|
|
+
|
|
|
.bottom-grid {
|
|
|
display: grid;
|
|
|
margin-top: 10px;
|
|
|
@@ -1968,7 +2439,7 @@ onUnmounted(() => {
|
|
|
}
|
|
|
|
|
|
.certificate-pagination {
|
|
|
- padding-top: 14px;
|
|
|
+ padding-top: 0px;
|
|
|
}
|
|
|
|
|
|
.production-brief-table {
|