<!-- 编辑流程页面 --> <script lang="ts" setup name="EditProcess"> import { reactive, ref } from 'vue' import type { FormInstance, FormRules } from 'element-plus' import type { Ref } from 'vue' import type { Iform } from './process' const emits = defineEmits(['close']) const ruleFormRef = ref<FormInstance>() const form: Ref<Iform> = ref({ number: '', // 编号 name: '', // 名称 business: '', // 关联业务 desc: '', // 流程描述 selectDecision: '', // 选择的决策 rejectTo: '', // 可驳回至 changeData: '', // 驳回修改数据 isMessage: '', // 审批结果通知发起人 }) // 可选决策项 const decision = [ { id: 'reject-refuse', title: '同意 驳回 拒绝', }, { id: 'reject', title: '同意 驳回', }, { id: 'refuse', title: '同意 拒绝', }, ] // 可驳回至 const reject = [ { id: 'change', title: '单据修改', }, ] // 驳回修改数据 const rejectChangeData = [ { id: 'all', title: '重新按流程走', }, { id: 'part', title: '送至驳回节点', }, ] // 审批结果通知发起人 const messageData = [ { id: 'yes', title: '是', }, { id: 'no', title: '否', }, ] const rules = reactive<FormRules>({ selectDecision: [ { required: true, message: '请选择', trigger: 'change', }, ], rejectTo: [ { required: true, message: '请选择', trigger: 'change', }, ], changeData: [ { required: true, message: '请选择', trigger: 'change', }, ], isMessage: [ { required: true, message: '请选择', trigger: 'change', }, ], }) // 关闭 const close = () => { emits('close') } // 保存 const save = async (formEl: FormInstance | undefined) => { if (!formEl) { return } await formEl.validate((valid, fields) => { if (valid) { // 调保存接口 } else { console.log('error submit!', fields) } }) } // 选择决策项 const changeDecision = (value: string) => { form.value.selectDecision = value } const changeRejectTo = (value: string) => { form.value.rejectTo = value } const changeData = (value: string) => { form.value.changeData = value } const changeMessage = (value: string) => { form.value.isMessage = value } </script> <template> <div class="edit-process"> <h5 class="title"> 流程编辑 </h5> <div class="edit"> <div class="button-area"> <el-button type="primary" @click="save(ruleFormRef)"> 保存 </el-button> <el-button type="primary" @click="close"> 关闭 </el-button> </div> <el-form ref="ruleFormRef" :model="form" label-width="140px" :rules="rules"> <el-form-item label="流程编号"> {{ form.number }} </el-form-item> <el-form-item label="流程名称"> {{ form.name }} </el-form-item> <el-form-item label="关联业务"> {{ form.business }} </el-form-item> <el-form-item label="流程描述"> <el-input v-model="form.desc" type="textarea" /> </el-form-item> <el-form-item label="可选决策项" prop="selectDecision"> <el-select v-model="form.selectDecision" placeholder="请选择" @change="changeDecision"> <el-option v-for="item in decision" :key="item.id" :label="item.title" :value="item.id" /> </el-select> </el-form-item> <el-form-item v-if="form.selectDecision !== 'refuse'" label="可驳回至" prop="rejectTo"> <el-select v-model="form.rejectTo" placeholder="请选择" @change="changeRejectTo"> <el-option v-for="item in reject" :key="item.id" :label="item.title" :value="item.id" /> </el-select> </el-form-item> <el-form-item v-if="form.selectDecision !== 'refuse'" label="驳回修改数据" prop="changeData"> <el-select v-model="form.changeData" placeholder="请选择" @change="changeData"> <el-option v-for="item in rejectChangeData" :key="item.id" :label="item.title" :value="item.id" /> </el-select> </el-form-item> <el-form-item label="审批结果通知发起人" prop="isMessage"> <el-select v-model="form.isMessage" placeholder="请选择" @change="changeMessage"> <el-option v-for="item in messageData" :key="item.id" :label="item.title" :value="item.id" /> </el-select> </el-form-item> </el-form> </div> <h5 class="title"> 流程配置 </h5> <div class="set edit" /> </div> </template> <style lang="scss" scoped> .edit-process { width: 100%; .title { margin: 0; } .edit { width: 100%; padding: 12px; background-color: #fff; border-radius: 7px; margin: 20px 0; .button-area { width: 100%; display: flex; justify-content: flex-end; margin-bottom: 20px; } } .set { height: 200px; } } </style>