|
|
@@ -164,6 +164,9 @@
|
|
|
<el-table-column label="是否责任事故" align="center" width="100" prop="ifDuty" />
|
|
|
<el-table-column label="是否已电话上报" align="center" width="110" prop="ifPhone" />
|
|
|
</el-table>
|
|
|
+ <div class="pagination">
|
|
|
+ <el-pagination v-model:current-page="queryParams3.pageNum" v-model:page-size="queryParams3.pageSize" :total="total3" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="getList3" @current-change="getList3" />
|
|
|
+ </div>
|
|
|
</el-tab-pane>
|
|
|
|
|
|
<el-tab-pane v-if="hasAcciTabPermi('subMonth')" label="下级单位事故月报查询" name="subMonth">
|
|
|
@@ -283,7 +286,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="事故等级" prop="acciGrad" :rules="[{ required: true, message: '请选择', trigger: 'change' }]">
|
|
|
- <el-select v-model="form.acciGrad" placeholder="请选择" style="width:100%">
|
|
|
+ <el-select v-model="form.acciGrad" disabled style="width:100%">
|
|
|
<el-option v-for="dict in acci_grad" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
@@ -292,19 +295,19 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="重伤人数" prop="serInjNum" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="form.serInjNum" placeholder="0" />
|
|
|
+ <el-input v-model="form.serInjNum" placeholder="0" @input="form.acciGrad = calcAcciGrad(form.casNum, form.serInjNum, form.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="死亡人数" prop="casNum" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="form.casNum" placeholder="0" />
|
|
|
+ <el-input v-model="form.casNum" placeholder="0" @input="form.acciGrad = calcAcciGrad(form.casNum, form.serInjNum, form.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="经济损失(万元)" prop="econLoss" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="form.econLoss" placeholder="0" />
|
|
|
+ <el-input v-model="form.econLoss" placeholder="0" @input="form.acciGrad = calcAcciGrad(form.casNum, form.serInjNum, form.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
@@ -429,7 +432,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="事故等级" prop="acciGrad" :rules="[{ required: true, message: '请选择', trigger: 'change' }]">
|
|
|
- <el-select v-model="monthForm.acciGrad" placeholder="请选择" style="width:100%">
|
|
|
+ <el-select v-model="monthForm.acciGrad" disabled style="width:100%">
|
|
|
<el-option v-for="dict in acci_grad" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
@@ -438,19 +441,19 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="重伤人数" prop="serInjNum" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="monthForm.serInjNum" />
|
|
|
+ <el-input v-model="monthForm.serInjNum" @input="monthForm.acciGrad = calcAcciGrad(monthForm.casNum, monthForm.serInjNum, monthForm.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="死亡人数" prop="casNum" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="monthForm.casNum" />
|
|
|
+ <el-input v-model="monthForm.casNum" @input="monthForm.acciGrad = calcAcciGrad(monthForm.casNum, monthForm.serInjNum, monthForm.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="经济损失(万元)" prop="econLoss" :rules="[{ required: true, message: '请输入', trigger: 'blur' }]">
|
|
|
- <el-input v-model="monthForm.econLoss" />
|
|
|
+ <el-input v-model="monthForm.econLoss" @input="monthForm.acciGrad = calcAcciGrad(monthForm.casNum, monthForm.serInjNum, monthForm.econLoss)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
@@ -480,7 +483,7 @@
|
|
|
</el-form>
|
|
|
<div style="margin-top:16px; border-top:1px solid #e4e7ed; padding-top:12px;">
|
|
|
<div style="font-weight:bold; margin-bottom:8px;">事故调查报告附件</div>
|
|
|
- <el-upload ref="monthUploadRef" :action="uploadUrl" :headers="uploadHeaders" :on-success="handleMonthUploadSuccess" :file-list="monthFileList" multiple :limit="10" list-type="text" accept=".jpg,.jpeg,.png,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip,.rar">
|
|
|
+ <el-upload ref="monthUploadRef" :action="uploadUrl" :headers="uploadHeaders" :on-success="handleMonthUploadSuccess" :on-remove="handleMonthUploadRemove" :file-list="monthFileList" multiple :limit="10" list-type="text" accept=".jpg,.jpeg,.png,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip,.rar">
|
|
|
<el-button type="primary" size="small">选择文件</el-button>
|
|
|
<span style="color:#909399;font-size:12px;margin-left:8px;">支持图片/文档/压缩包,单文件不超过10MB</span>
|
|
|
</el-upload>
|
|
|
@@ -489,26 +492,21 @@
|
|
|
<div style="font-weight:bold; margin-bottom:8px;">事故调查进展情况</div>
|
|
|
<el-button size="small" type="primary" @click="addMonthProgRow" class="mb8"><el-icon><Plus /></el-icon> 添加</el-button>
|
|
|
<el-table :data="monthProgList" border size="small">
|
|
|
- <el-table-column label="调查时间" align="center" width="160">
|
|
|
- <template #default="scope">
|
|
|
- <el-date-picker v-model="scope.row.repTime" type="date" value-format="YYYY-MM-DD" placeholder="选择" size="small" style="width:100%" />
|
|
|
- </template>
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="50" />
|
|
|
+ <el-table-column label="进展情况" align="center" min-width="200">
|
|
|
+ <template #default="scope"><el-input v-model="scope.row.progress" size="small" type="textarea" :rows="2" placeholder="请输入" /></template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="重伤人数" align="center" width="90">
|
|
|
- <template #default="scope"><el-input v-model="scope.row.serInjNum" size="small" /></template>
|
|
|
+ <el-table-column label="填报人" align="center" width="120">
|
|
|
+ <template #default="scope"><el-input v-model="scope.row.recPers" size="small" placeholder="请输入" /></template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="死亡人数" align="center" width="90">
|
|
|
- <template #default="scope"><el-input v-model="scope.row.casNum" size="small" /></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="经济损失(万元)" align="center" width="120">
|
|
|
- <template #default="scope"><el-input v-model="scope.row.econLoss" size="small" /></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="事故描述" align="center" min-width="160">
|
|
|
- <template #default="scope"><el-input v-model="scope.row.acciDesc" size="small" /></template>
|
|
|
+ <el-table-column label="填报时间" align="center" width="160">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-date-picker v-model="scope.row.collTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择" size="small" style="width:100%" />
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" align="center" width="60">
|
|
|
<template #default="scope">
|
|
|
- <el-button link type="danger" @click="monthProgList.splice($index, 1)">
|
|
|
+ <el-button link type="danger" @click="monthProgList.splice(scope.$index, 1)">
|
|
|
<el-icon><Delete /></el-icon>
|
|
|
</el-button>
|
|
|
</template>
|
|
|
@@ -575,13 +573,25 @@
|
|
|
|
|
|
<script setup name="AcciManage">
|
|
|
import { Search, RefreshRight, Plus, Download, Delete, Edit, WarningFilled } from '@element-plus/icons-vue'
|
|
|
-import { listObjAcci, compoundSaveAcci, delObjAcci, fastReportAcci } from "@/api/slaj/acci"
|
|
|
+import { listObjAcci, compoundSaveAcci, delObjAcci, fastReportAcci, getAcciMedList } from "@/api/slaj/acci"
|
|
|
import { listBisAcciExpRep, addBisAcciExpRep, updateBisAcciExpRep, delBisAcciExpRep } from "@/api/slaj/acci"
|
|
|
import { getToken } from "@/utils/auth"
|
|
|
import { parseExpRepFields } from "@/utils/acci"
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
|
-const { acci_grad } = proxy.useDict("acci_grad")
|
|
|
+const { acci_grad } = proxy.useDict("DPC_ACCI_GRAD")
|
|
|
+
|
|
|
+// 事故等级自动判定(依据《生产安全事故报告和调查处理条例》第493号令,就高不就低)
|
|
|
+// econLoss 单位:万元
|
|
|
+function calcAcciGrad(cas, inj, loss) {
|
|
|
+ const c = parseInt(cas) || 0
|
|
|
+ const i = parseInt(inj) || 0
|
|
|
+ const l = parseFloat(loss) || 0
|
|
|
+ if (c >= 30 || i >= 100 || l >= 10000) return '4' // 特别重大
|
|
|
+ if (c >= 10 || i >= 50 || l >= 5000) return '3' // 重大
|
|
|
+ if (c >= 3 || i >= 10 || l >= 1000) return '2' // 较大
|
|
|
+ return '1' // 一般
|
|
|
+}
|
|
|
|
|
|
const tabPermiMap = {
|
|
|
fast: 'acci:tab:fast',
|
|
|
@@ -781,13 +791,30 @@ function handleUpdate2(row) {
|
|
|
monthForm.value = { ...data }
|
|
|
monthProgList.value = []; monthFileList.value = []
|
|
|
monthFormOpen.value = true
|
|
|
+ listBisAcciExpRep({ acciGuid: data.guid, pageSize: 999 }).then(res => {
|
|
|
+ monthProgList.value = (res.rows || []).map(r => ({
|
|
|
+ progress: r.note || '',
|
|
|
+ recPers: r.recPers || '',
|
|
|
+ collTime: r.collTime || ''
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ getAcciMedList(data.guid).then(res => {
|
|
|
+ monthFileList.value = (res.data || []).map(f => ({ name: f.name, url: f.path, guid: f.medGuid }))
|
|
|
+ })
|
|
|
+}
|
|
|
+function addMonthProgRow() { monthProgList.value.push({ progress: '', recPers: '', collTime: '' }) }
|
|
|
+function handleMonthUploadSuccess(response, file, fileList) {
|
|
|
+ if (response.code === 200) {
|
|
|
+ file.name = response.originalFilename || file.name
|
|
|
+ file.url = response.fileName
|
|
|
+ }
|
|
|
+ monthFileList.value = fileList
|
|
|
}
|
|
|
-function addMonthProgRow() { monthProgList.value.push({ repTime: '', serInjNum: '', casNum: '', econLoss: '', acciDesc: '' }) }
|
|
|
-function handleMonthUploadSuccess(response, file, fileList) { monthFileList.value = fileList }
|
|
|
+function handleMonthUploadRemove(file, fileList) { monthFileList.value = fileList }
|
|
|
function submitMonthForm() {
|
|
|
monthFormRef.value.validate(valid => {
|
|
|
if (!valid) return
|
|
|
- compoundSaveAcci({ ...monthForm.value, progList: monthProgList.value, fileList: monthFileList.value.map(f => ({ name: f.name, url: f.url || f.response?.url })) }).then(() => {
|
|
|
+ compoundSaveAcci({ ...monthForm.value, progList: monthProgList.value, fileList: monthFileList.value.map(f => ({ name: f.name, path: f.url || f.response?.fileName || '' })) }).then(() => {
|
|
|
proxy.$modal.msgSuccess(monthForm.value.guid ? '修改成功' : '保存成功')
|
|
|
monthFormOpen.value = false; getList2()
|
|
|
})
|