<!-- 易耗物资使用情况 弹窗编辑 --> <script name="UseDetailDialog" lang="ts" setup> import type { IConsumableUseGoods } 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 goodsUseFormRef = ref() const staffFilterRef = ref() const goodsUseDetail = ref<IConsumableUseGoods>({ id: '', recordId: '', goodsName: '', useTime: '', useAmount: '', useUserName: '', useUserId: '', company: '', approver: '', createTime: '', }) const goodsUseRules = ref({ goodsName: [{ required: true, message: '物资名称不能为空', trigger: 'blur' }], useAmount: [{ required: true, message: '使用数量不能为空', trigger: 'blur' }], useTime: [{ required: true, message: '使用日期不能为空', trigger: 'blur' }], useUserId: [{ required: true, message: '使用人不能为空,请选择', trigger: ['blur', 'change'] }], }) // 表单验证规则 const showDialog = ref(false) // 逻辑 const showRegistedStaffFilter = () => { staffFilterRef.value.showOrHideFilterDialog(true, 1) } const staffSelectedHandler = (staffs: IStaffBasicInfo[]) => { goodsUseDetail.value.useUserId = staffs[0].id! goodsUseDetail.value.useUserName = staffs[0].staffName staffFilterRef.value.showOrHideFilterDialog(false) } const showRecordDialog = (show: boolean) => { showDialog.value = show nextTick(() => { goodsUseFormRef.value.clearValidate() }) if (show === false) { // 关闭的时候清除表单 goodsUseDetail.value = { id: '', recordId: '', goodsName: '', useTime: '', useAmount: '', useUserName: '', useUserId: '', company: '', approver: '', createTime: '', } } } // 编辑时初始化表格 const initRecordData = (record: IConsumableUseGoods) => { goodsUseDetail.value = { ...record } } const submitUseGoods = () => { goodsUseFormRef.value.validate((valid: boolean) => { if (valid === true) { emit('recordSaved', goodsUseDetail.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="goodsUseFormRef" :model="goodsUseDetail" :rules="goodsUseRules" 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="goodsUseDetail.goodsName" placeholder="请输入物资名称" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="使用日期" prop="useTime"> <el-date-picker v-model="goodsUseDetail.useTime" 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="useAmount"> <el-input v-model="goodsUseDetail.useAmount" 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="goodsUseDetail.company" placeholder="请输入计量单位" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="使用人员" prop="useUserId"> <el-input v-model="goodsUseDetail.useUserId" type="hidden" /> <el-input v-model="goodsUseDetail.useUserName" placeholder="请选择使用人员" :disabled="true"> <template #append> <el-button size="small" @click="showRegistedStaffFilter"> 选择 </el-button> </template> </el-input> </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" :show-score="false" @record-selected="staffSelectedHandler" /> </el-dialog> </template>