|
@@ -84,12 +84,12 @@
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column prop="reportUnit" label="上报单位" width="120" />
|
|
<el-table-column prop="reportUnit" label="上报单位" width="120" />
|
|
|
<el-table-column prop="reportTime" label="上报时间" width="160" />
|
|
<el-table-column prop="reportTime" label="上报时间" width="160" />
|
|
|
- <el-table-column label="操作" width="320" fixed="right">
|
|
|
|
|
|
|
+ <el-table-column label="操作" width="350" fixed="right">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
|
<el-button type="primary" size="small" @click="handleEdit(row)">编辑</el-button>
|
|
<el-button type="primary" size="small" @click="handleEdit(row)">编辑</el-button>
|
|
|
<el-button type="info" size="small" @click="handleDetail(row)">详情</el-button>
|
|
<el-button type="info" size="small" @click="handleDetail(row)">详情</el-button>
|
|
|
- <el-button type="warning" size="small" @click="handleSubmitHazard(row)" :disabled="row.isSubmitted === 1">
|
|
|
|
|
- {{ row.isSubmitted === 1 ? '已报送' : '报送' }}
|
|
|
|
|
|
|
+ <el-button type="success" size="small" @click="handleSubmitHazard(row)" :disabled="row.isSubmitted === 1">
|
|
|
|
|
+ {{ row.isSubmitted === 1 ? '已报送' : '报送并生成工单' }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
<el-button type="danger" size="small" @click="handleDelete(row)">删除</el-button>
|
|
<el-button type="danger" size="small" @click="handleDelete(row)">删除</el-button>
|
|
|
</template>
|
|
</template>
|
|
@@ -104,7 +104,7 @@
|
|
|
|
|
|
|
|
<!-- 新增/编辑对话框 -->
|
|
<!-- 新增/编辑对话框 -->
|
|
|
<el-dialog :title="dialogTitle" v-model="dialogVisible" width="750px" destroy-on-close>
|
|
<el-dialog :title="dialogTitle" v-model="dialogVisible" width="750px" destroy-on-close>
|
|
|
- <el-form :model="formData" ref="formRef" label-width="100px">
|
|
|
|
|
|
|
+ <el-form :model="formData" ref="formRef" label-width="100px" :rules="rules">
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="隐患编号" prop="hazardNo">
|
|
<el-form-item label="隐患编号" prop="hazardNo">
|
|
@@ -126,8 +126,8 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="隐患来源">
|
|
|
|
|
- <el-select v-model="formData.hazardSource" style="width: 100%">
|
|
|
|
|
|
|
+ <el-form-item label="隐患来源" prop="hazardSource">
|
|
|
|
|
+ <el-select v-model="formData.hazardSource" style="width: 100%" placeholder="请选择隐患来源">
|
|
|
<el-option v-for="d in hazardSourceDict" :key="d.dictValue" :label="d.dictLabel" :value="d.dictValue" />
|
|
<el-option v-for="d in hazardSourceDict" :key="d.dictValue" :label="d.dictLabel" :value="d.dictValue" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -140,7 +140,7 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="关联设备">
|
|
|
|
|
|
|
+ <el-form-item label="关联设备" prop="equipmentId">
|
|
|
<el-select v-model="formData.equipmentId" placeholder="请选择" clearable style="width: 100%">
|
|
<el-select v-model="formData.equipmentId" placeholder="请选择" clearable style="width: 100%">
|
|
|
<el-option v-for="e in equipmentOptions" :key="e.equipmentId" :label="e.equipmentName" :value="e.equipmentId" />
|
|
<el-option v-for="e in equipmentOptions" :key="e.equipmentId" :label="e.equipmentName" :value="e.equipmentId" />
|
|
|
</el-select>
|
|
</el-select>
|
|
@@ -152,13 +152,13 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="上报时间">
|
|
|
|
|
- <el-date-picker v-model="formData.reportTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
|
|
|
|
|
|
|
+ <el-form-item label="上报时间" prop="reportTime">
|
|
|
|
|
+ <el-date-picker v-model="formData.reportTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" placeholder="请选择上报时间" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="隐患描述">
|
|
|
|
|
- <el-input v-model="formData.hazardDesc" type="textarea" :rows="3" />
|
|
|
|
|
|
|
+ <el-form-item label="隐患描述" prop="hazardDesc">
|
|
|
|
|
+ <el-input v-model="formData.hazardDesc" type="textarea" :rows="3" placeholder="请输入隐患描述" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
@@ -294,6 +294,17 @@ const searchForm = reactive({ hazardType: '', hazardLevel: '', hazardStatus: '',
|
|
|
const dialogVisible = ref(false)
|
|
const dialogVisible = ref(false)
|
|
|
const dialogTitle = ref('新增')
|
|
const dialogTitle = ref('新增')
|
|
|
const formRef = ref(null)
|
|
const formRef = ref(null)
|
|
|
|
|
+
|
|
|
|
|
+// 表单校验规则
|
|
|
|
|
+const rules = {
|
|
|
|
|
+ hazardType: [{ required: true, message: '请选择隐患类型', trigger: 'change' }],
|
|
|
|
|
+ hazardLevel: [{ required: true, message: '请选择隐患等级', trigger: 'change' }],
|
|
|
|
|
+ hazardSource: [{ required: true, message: '请选择隐患来源', trigger: 'change' }],
|
|
|
|
|
+ equipmentId: [{ required: true, message: '请选择关联设备', trigger: 'change' }],
|
|
|
|
|
+ reportTime: [{ required: true, message: '请选择上报时间', trigger: 'change' }],
|
|
|
|
|
+ hazardDesc: [{ required: true, message: '请输入隐患描述', trigger: 'blur' }]
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const formData = reactive({
|
|
const formData = reactive({
|
|
|
hazardId: '', hazardNo: '', hazardType: '', hazardLevel: '', hazardDesc: '',
|
|
hazardId: '', hazardNo: '', hazardType: '', hazardLevel: '', hazardDesc: '',
|
|
|
hazardSource: '', hazardStatus: '2', reportUnit: '', reportTime: '',
|
|
hazardSource: '', hazardStatus: '2', reportUnit: '', reportTime: '',
|
|
@@ -450,7 +461,9 @@ function handleEdit(row) {
|
|
|
loadNetworkOptions(); loadEquipmentOptions()
|
|
loadNetworkOptions(); loadEquipmentOptions()
|
|
|
}
|
|
}
|
|
|
async function handleSave() {
|
|
async function handleSave() {
|
|
|
|
|
+ if (!formRef.value) return
|
|
|
try {
|
|
try {
|
|
|
|
|
+ await formRef.value.validate()
|
|
|
if (imageUploading.value) { ElMessage.warning('图片正在上传,请稍候'); return }
|
|
if (imageUploading.value) { ElMessage.warning('图片正在上传,请稍候'); return }
|
|
|
// 将图片URL列表拼接为逗号分隔字符串
|
|
// 将图片URL列表拼接为逗号分隔字符串
|
|
|
formData.hazardImages = imageUrls.value.join(',')
|
|
formData.hazardImages = imageUrls.value.join(',')
|
|
@@ -467,11 +480,24 @@ function handleDelete(row) {
|
|
|
await deleteHazard(row.hazardId); ElMessage.success('删除成功'); loadData()
|
|
await deleteHazard(row.hazardId); ElMessage.success('删除成功'); loadData()
|
|
|
}).catch(() => {})
|
|
}).catch(() => {})
|
|
|
}
|
|
}
|
|
|
|
|
+/** 报送(同时自动生成工单) */
|
|
|
async function handleSubmitHazard(row) {
|
|
async function handleSubmitHazard(row) {
|
|
|
- ElMessageBox.confirm('确认报送该隐患?', '提示', { type: 'warning' }).then(async () => {
|
|
|
|
|
- await submitHazard(row.hazardId); ElMessage.success('报送成功'); loadData()
|
|
|
|
|
|
|
+ ElMessageBox.confirm('确认报送该隐患?报送后将自动创建工单进入待派单状态。', '提示', { type: 'warning' }).then(async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await submitHazard(row.hazardId)
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ const msg = res.data ? '报送成功,已自动创建工单' : '报送成功'
|
|
|
|
|
+ ElMessage.success(msg)
|
|
|
|
|
+ loadData()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(res.msg || '报送失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ ElMessage.error(e?.response?.data?.msg || e?.message || '报送失败')
|
|
|
|
|
+ }
|
|
|
}).catch(() => {})
|
|
}).catch(() => {})
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
async function handleDetail(row) {
|
|
async function handleDetail(row) {
|
|
|
try {
|
|
try {
|
|
|
const res = await getHazardById(row.hazardId)
|
|
const res = await getHazardById(row.hazardId)
|