| | |
| | | <template> |
| | | <el-dialog v-model="approveItemDialog" :title="title"> |
| | | <el-dialog v-model="approveItemDialog" :title="title" :close-on-click-modal="false"> |
| | | <el-form :model="approveItemForm" label-width="150px" ref="approveItemFormRef" :rules="approveItemFormRule"> |
| | | <el-col :span="24" style="margin-bottom: 24px"> |
| | | <el-form-item label="审批项名称" prop="itemName"> |
| | |
| | | </el-col> |
| | | <el-col :span="24" style="margin-bottom: 24px"> |
| | | <el-form-item label="审批项类型" prop="type"> |
| | | <el-select v-model="approveItemForm.type" placeholder="请选择审批项类型" class="input-add"> |
| | | <el-select v-model="approveItemForm.type" @change="clearValue" placeholder="请选择审批项类型" class="input-add" clearable filterable> |
| | | <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24" style="margin-bottom: 24px"> |
| | | <!-- <el-col :span="24" style="margin-bottom: 24px">--> |
| | | <!-- <el-form-item label="措施或标准" prop="smType">--> |
| | | <!-- <el-select v-model="approveItemForm.smType" @change="clearValue" placeholder="请选择措施或标准" class="input-add" clearable filterable>--> |
| | | <!-- <el-option v-for="item in smTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <el-col v-if="approveItemForm.type === 2 || approveItemForm.type === 3" :span="24" style="margin-bottom: 24px"> |
| | | <el-form-item label="措施名称" prop="measureId"> |
| | | <el-select v-model="approveItemForm.measureId" placeholder="请选择措施" class="input-add"> |
| | | <el-select v-model="approveItemForm.measureId" placeholder="请选择措施" class="input-add" clearable filterable> |
| | | <el-option v-for="item in actionList" :key="item.id" :value="item.id" :label="item.context"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24" style="margin-bottom: 20px"> |
| | | <el-col v-if="approveItemForm.type === 1" :span="24" style="margin-bottom: 20px"> |
| | | <el-form-item label="标准名称" prop="standId"> |
| | | <el-select v-model="approveItemForm.standId" class="input-add" placeholder="选择标准"> |
| | | <el-select v-model="approveItemForm.standId" class="input-add" placeholder="选择标准" clearable filterable> |
| | | <el-option v-for="item in standardList" :key="item.ruleStandId" :value="item.ruleStandId" :label="item.title"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import { reactive, toRefs, ref, onMounted } from 'vue'; |
| | | import { reactive, toRefs, ref, onMounted, nextTick } from 'vue'; |
| | | import { ElMessage } from 'element-plus/es'; |
| | | import { userApi } from '/@/api/systemManage/user'; |
| | | import { safetyActionApi } from '/@/api/specialWorkSystem/safetyAction'; |
| | |
| | | title: string; |
| | | activeName: string; |
| | | approveItemDialog: boolean; |
| | | approveItemForm: stepAddReqDTO; |
| | | approveItemForm: step; |
| | | approveItemFormRule: {}; |
| | | actionList: Array<type>; |
| | | typeList: Array<type>; |
| | | smTypeList: Array<type>; |
| | | standardList: []; |
| | | order: ''; |
| | | order: number | null; |
| | | } |
| | | interface stepAddReqDTO { |
| | | interface step { |
| | | itemName: string | null; |
| | | type: null; |
| | | measureId: number | null; |
| | | standId: number | null; |
| | | smType: number | null; |
| | | } |
| | | interface type { |
| | | id: number; |
| | |
| | | itemName: null, |
| | | type: null, |
| | | measureId: null, |
| | | smType: 1, |
| | | standId: null |
| | | }, |
| | | approveItemFormRule: {}, |
| | | approveItemFormRule: { |
| | | itemName: [{ required: true, message: '请填写审批项名称', trigger: 'blur' }], |
| | | type: [{ required: true, message: '请选择审批项类型', trigger: 'change' }], |
| | | measureId: [{ required: true, message: '请选择措施', trigger: 'change' }], |
| | | smType: [{ required: true, message: '请选择措施或标准', trigger: 'change' }], |
| | | standId: [{ required: true, message: '请选择标准', trigger: 'change' }] |
| | | }, |
| | | actionList: [], |
| | | typeList: [ |
| | | { id: 1, name: '数值' }, |
| | | { id: 2, name: '选项' }, |
| | | { id: 3, name: '填空' } |
| | | typeList: [], |
| | | smTypeList: [ |
| | | { id: 1, name: '标准' }, |
| | | { id: 2, name: '措施' } |
| | | ], |
| | | standardList: [], |
| | | order: null |
| | | }); |
| | | |
| | | const showApproveItemDialog = (type: string, value: {}, index: number) => { |
| | | const showApproveItemDialog = (type: string, value: {}, index: number, approveLevelForm: { type: number }, standardList: [], actionList: []) => { |
| | | data.approveItemDialog = true; |
| | | data.standardList = standardList; |
| | | data.actionList = actionList; |
| | | data.order = index; |
| | | if (approveLevelForm.type === 3) { |
| | | data.typeList = [ |
| | | { id: 1, name: '数值' }, |
| | | { id: 2, name: '选项' }, |
| | | { id: 3, name: '填空' } |
| | | ]; |
| | | } else { |
| | | data.typeList = [ |
| | | { id: 2, name: '选项' }, |
| | | { id: 3, name: '填空' } |
| | | ]; |
| | | } |
| | | nextTick(() => { |
| | | approveItemFormRef.value.clearValidate(); |
| | | }); |
| | | if (type === '新增') { |
| | | data.title = '新增审批项'; |
| | | data.approveItemForm = { |
| | | itemName: null, |
| | | type: null, |
| | | measureId: null, |
| | | standId: null |
| | | standId: null, |
| | | smType: 1 |
| | | }; |
| | | } else { |
| | | data.title = '修改审批项'; |
| | |
| | | }; |
| | | |
| | | const submitApproveItem = async () => { |
| | | context.emit('addApprovalItem', data.approveItemForm, data.title, data.order); |
| | | data.approveItemDialog = false; |
| | | approveItemFormRef.value.validate((valid: Boolean) => { |
| | | if (valid) { |
| | | data.approveItemForm.smType = 1; |
| | | context.emit('addApprovalItem', data.approveItemForm, data.title, data.order); |
| | | data.approveItemDialog = false; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请完善审批项基本信息' |
| | | }); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //获取措施项 |
| | | const getActionData = async () => { |
| | | let res = await safetyActionApi().getAllSafetyActionList({ workType: null, type: null, context: null }); |
| | | if (res.data.code === '200') { |
| | | data.actionList = res.data.data; |
| | | const clearValue = () => { |
| | | if (data.approveItemForm.type === 1) { |
| | | data.approveItemForm.measureId = null; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | data.approveItemForm.standId = null; |
| | | } |
| | | }; |
| | | |
| | | //获取标准 |
| | | const getStandardData = async () => { |
| | | let res = await approveBasicApi().getAllApproveBasicList({ ruleStandType: null, title: null }); |
| | | if (res.data.code === '200') { |
| | | data.standardList = res.data.data; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | getActionData(); |
| | | getStandardData(); |
| | | }); |
| | | return { |
| | | ...toRefs(data), |
| | | clearValue, |
| | | approveItemFormRef, |
| | | submitApproveItem, |
| | | showApproveItemDialog |