<template>
|
<div class="system-menu-dialog-container">
|
<el-dialog :title="unitDialogState.title" v-model="unitDialogState.unitDialogVisible" :close-on-click-modal="false" width="600px">
|
<el-form ref="UnitFormRef" :rules="unitDialogState.unitFormRules" :model="unitDialogState.unitForm" size="default" label-width="120px">
|
<el-row :gutter="35">
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="风险单元编号" prop="riskCode">
|
<el-input v-model="unitDialogState.unitForm.riskCode" placeholder="风险单元编号" clearable class="input-length"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="风险单元名称" prop="riskName">
|
<el-input v-model="unitDialogState.unitForm.riskName" placeholder="风险单元名称" clearable class="input-length"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="风险源风险类型" prop="riskSourceType">
|
<el-select v-model="unitDialogState.unitForm.riskSourceType" @change="unitDialogState.unitForm.riskSourceId = null" placeholder="风险源风险类型" clearable class="input-length">
|
<el-option v-for="item in unitDialogState.riskSourceTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="风险源" prop="riskSourceId">
|
<el-select v-model="unitDialogState.unitForm.riskSourceId" placeholder="风险源" clearable class="input-length">
|
<el-option v-if="unitDialogState.unitForm.riskSourceType === 2" v-for="item in unitDialogState.allEquipmentList" :key="item.id" :label="item.deviceName" :value="item.id"></el-option>
|
<el-option v-if="unitDialogState.unitForm.riskSourceType === 1" v-for="item in unitDialogState.allRoomList" :key="item.id" :label="item.room" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="负责人" prop="liabilityUserId">
|
<el-select v-model="unitDialogState.unitForm.liabilityUserId" placeholder="负责人" clearable class="input-length">
|
<el-option v-for="item in unitDialogState.allPersonList" :key="item.id" :label="item.personName" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="负责部门" prop="liabilityDep">
|
<el-input v-model="unitDialogState.unitForm.liabilityDep" placeholder="负责部门" clearable class="input-length"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-form-item label="风险单元描述">
|
<el-input type="textarea" :rows="3" v-model="unitDialogState.unitForm.description" placeholder="风险单元描述" clearable class="input-length"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="unitDialogState.unitDialogVisible = !unitDialogState.unitDialogVisible" size="default">取 消</el-button>
|
<el-button type="primary" @click="onSubmitUnit" size="default">确定</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { reactive, ref } from "vue";
|
import {ElMessage} from "element-plus";
|
import {unitApi} from "/@/api/basic/unit";
|
|
const UnitFormRef = ref()
|
|
const unitDialogState = reactive<UnitDialogType>({
|
title: '',
|
unitDialogVisible: false,
|
unitForm: {
|
riskCode: '',
|
riskName: '',
|
riskSourceId: null,
|
riskSourceType: null,
|
liabilityUserId: null,
|
liabilityDep: '',
|
description: '',
|
},
|
unitFormRules: {
|
riskCode: [{ required: true, message: '请填写风险单元编号', trigger: 'blur' }],
|
riskName: [{ required: true, message: '请填写风险单元名称', trigger: 'blur' }],
|
riskSourceId: [{ required: true, message: '请选择风险源风险类型', trigger: 'change' }],
|
riskSourceType: [{ required: true, message: '请选择风险源', trigger: 'change' }],
|
},
|
riskSourceTypeList: [
|
{id: 1, name: '区域、实验场所'},
|
{id:2, name: '设施设备'},
|
{id:3, name: '固定工艺节点'},
|
],
|
evaluateStatusList: [
|
{id: 1, name: '未评价'},
|
{id:2, name: '已评价'},
|
],
|
allRoomList: [],
|
allEquipmentList: [],
|
allPersonList: [],
|
})
|
|
const showUnitDialog = (title: string, value: UnitType, allEquipmentList: AllEquipmentListType [], allRoomList: RoomType [], allPersonList: AllPersonListType []) => {
|
unitDialogState.unitDialogVisible = true;
|
unitDialogState.allRoomList = allRoomList
|
unitDialogState.allEquipmentList = allEquipmentList
|
unitDialogState.allPersonList = allPersonList
|
setTimeout(() => {
|
UnitFormRef.value.clearValidate();
|
});
|
if(title === '新增'){
|
unitDialogState.title = '新增';
|
unitDialogState.unitForm = {
|
riskCode: '',
|
riskName: '',
|
riskSourceId: null,
|
riskSourceType: null,
|
liabilityUserId: null,
|
liabilityDep: '',
|
description: '',
|
};
|
}else{
|
unitDialogState.title = '编辑'
|
unitDialogState.unitForm = {
|
id: value.id,
|
riskCode: value.riskCode,
|
riskName: value.riskName,
|
riskSourceId: value.riskSourceId,
|
riskSourceType: value.riskSourceType,
|
liabilityUserId: value.liabilityUserId,
|
liabilityDep: value.liabilityDep,
|
description: value.description,
|
};
|
}
|
};
|
|
const onSubmitUnit = () => {
|
UnitFormRef.value.validate(async(valid: boolean) => {
|
if(valid){
|
if(unitDialogState.title === '新增'){
|
let res = await unitApi().addUnit(unitDialogState.unitForm);
|
if(res.data.code === 100){
|
emit('refresh')
|
unitDialogState.unitDialogVisible = false;
|
ElMessage({
|
type: 'success',
|
message: '新增成功'
|
})
|
}else{
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg,
|
});
|
}
|
}else{
|
let res = await unitApi().modUnit(unitDialogState.unitForm)
|
if(res.data.code === 100){
|
emit('refresh')
|
unitDialogState.unitDialogVisible = false;
|
ElMessage({
|
type: 'success',
|
message: '编辑成功'
|
})
|
}else{
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg,
|
});
|
}
|
}
|
}else{
|
ElMessage({
|
type: 'warning',
|
message: '请完善基本信息',
|
});
|
}
|
})
|
}
|
|
const emit = defineEmits(['refresh'])
|
|
defineExpose({
|
showUnitDialog
|
})
|
</script>
|
|
<style scoped>
|
|
</style>
|