<!-- 物资入库情况 弹窗编辑 --> <script name="StoreDetailDialog" lang="ts" setup> import type { IConsumableStoreGoods } from './consumable-interface' const emit = defineEmits(['recordSaved']) const goodsFormRef = ref() const goodsStoreDetail = ref<IConsumableStoreGoods>({ id: '', goodsName: '', goodsModel: '', amount: '', price: '', unitPrice: '', remark: '', }) const goodsStoreRules = ref({ goodsName: [{ required: true, message: '物资名称不能为空', trigger: 'blur' }], goodsModel: [{ required: true, message: '规格型号不能为空', trigger: 'blur' }], amount: [{ required: true, message: '数量不能为空', trigger: 'blur' }], price: [{ required: true, message: '金额不能为空', trigger: 'blur' }], }) // 表单验证规则 const showDialog = ref(false) // 逻辑 const showRecordDialog = (show: boolean) => { showDialog.value = show nextTick(() => { goodsFormRef.value.clearValidate() }) if (show === false) { // 关闭的时候清除表单 goodsStoreDetail.value = { goodsName: '', goodsModel: '', amount: '', price: '', unitPrice: '', remark: '', } } } // 编辑时初始化表格 const initRecordData = (record: IConsumableStoreGoods) => { goodsStoreDetail.value = { ...record } } const submitStoreGoods = () => { goodsFormRef.value.validate((valid: boolean) => { if (valid === true) { emit('recordSaved', goodsStoreDetail.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="goodsFormRef" :model="goodsStoreDetail" :rules="goodsStoreRules" 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="goodsStoreDetail.goodsName" placeholder="请输入物资名称" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="规格" prop="goodsModel"> <el-input v-model="goodsStoreDetail.goodsModel" placeholder="请输入物资规格" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="数量" prop="amount"> <el-input v-model="goodsStoreDetail.amount" 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="goodsStoreDetail.unitPrice" placeholder="请输入单价及单位" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="18" :offset="3"> <el-form-item label="金额" prop="price"> <el-input v-model="goodsStoreDetail.price" 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="goodsStoreDetail.remark" 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="submitStoreGoods"> 保存 </el-button> </span> </template> </el-dialog> </template>