<!-- 物资交接单 弹窗编辑 --> <script name="HandoverDetailDialog" lang="ts" setup> import type { IConsumableHandoverGoods } from './consumable-interface' import type { IStaffBasicInfo } from '@/views/resource/person/register/person-regitster' import FilterRegistedStaff from '@/views/resource/common/filterRegistedStaff.vue' const emit = defineEmits(['recordSaved']) const goodsHandoverFormRef = ref() const staffFilterRef = ref() const goodsHandoverDetail = ref<IConsumableHandoverGoods>({ id: '', recordId: '', goodsName: '', handoverTime: '', handoverAmount: '', handoverUserName: '', handoverUserId: '', company: '', receiver: '', }) const goodsHandoverRules = ref({ goodsName: [{ required: true, message: '物资名称不能为空', trigger: 'blur' }], handoverAmount: [{ required: true, message: '交接数量不能为空', trigger: 'blur' }], handoverTime: [{ required: true, message: '交接日期不能为空', trigger: 'blur' }], handoverUserId: [{ required: true, message: '交接人不能为空,请选择', trigger: ['blur', 'change'] }], receiver: [{ required: true, message: '接收人不能为空', trigger: 'blur' }], }) // 表单验证规则 const showDialog = ref(false) // 逻辑 const showRegistedStaffFilter = () => { staffFilterRef.value.showOrHideFilterDialog(true, 1) } const staffSelectedHandler = (staffs: IStaffBasicInfo[]) => { goodsHandoverDetail.value.handoverUserId = staffs[0].id! goodsHandoverDetail.value.handoverUserName = staffs[0].staffName staffFilterRef.value.showOrHideFilterDialog(false) } const showRecordDialog = (show: boolean) => { showDialog.value = show nextTick(() => { goodsHandoverFormRef.value.clearValidate() }) if (show === false) { // 关闭的时候清除表单 goodsHandoverDetail.value = { id: '', recordId: '', goodsName: '', handoverTime: '', handoverAmount: '', handoverUserName: '', handoverUserId: '', company: '', receiver: '', } } } // 编辑时初始化表格 const initRecordData = (record: IConsumableHandoverGoods) => { goodsHandoverDetail.value = { ...record } } const submitUseGoods = () => { goodsHandoverFormRef.value.validate((valid: boolean) => { if (valid === true) { emit('recordSaved', goodsHandoverDetail.value) showRecordDialog(false) } }) } defineExpose({ showRecordDialog, initRecordData, }) </script> <template> <el-dialog v-model="showDialog" title="废弃物资处理交接详情" :append-to-body="true" :close-on-click-modal="false"> <detail-block title=""> <el-form ref="goodsHandoverFormRef" :model="goodsHandoverDetail" :rules="goodsHandoverRules" label-position="right" label-width="110px" border stripe> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="物资名称" prop="goodsName"> <el-input v-model="goodsHandoverDetail.goodsName" placeholder="请输入物资名称" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="交接日期" prop="handoverTime"> <el-date-picker v-model="goodsHandoverDetail.handoverTime" placeholder="请选择交接日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" style="width: 100%;" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="交接数量" prop="handoverAmount"> <el-input v-model="goodsHandoverDetail.handoverAmount" placeholder="请输入交接数量" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="计量单位"> <el-input v-model="goodsHandoverDetail.company" placeholder="请输入计量单位" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="交接人" prop="handoverUserId"> <el-input v-model="goodsHandoverDetail.handoverUserId" type="hidden" /> <el-input v-model="goodsHandoverDetail.handoverUserName" placeholder="请选择交接人" :disabled="true"> <template #append> <el-button size="small" @click="showRegistedStaffFilter"> 选择 </el-button> </template> </el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="接收人" prop="receiver"> <el-input v-model="goodsHandoverDetail.receiver" placeholder="请输入接收人" /> </el-form-item> </el-col> </el-row> </el-form> </detail-block> <template #footer> <span class="dialog-footer"> <el-button @click="showRecordDialog(false)">取消</el-button> <el-button type="primary" @click="submitUseGoods"> 保存 </el-button> </span> </template> <filter-registed-staff ref="staffFilterRef" :is-multi="false" :show-score="false" @record-selected="staffSelectedHandler" /> </el-dialog> </template>