¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="600" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="formRef" |
| | | :model="form" |
| | | :rules="rules" |
| | | label-width="auto" |
| | | class="production-form" |
| | | label-position="right" |
| | | style="max-width: 400px; margin: 0 auto" |
| | | > |
| | | <el-form-item label="ä¾åºååç§°" prop="supplierName"> |
| | | <el-input v-model="form.supplierName" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç
¤ç§" prop="category"> |
| | | <el-input v-model="form.category" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="åä½" prop="unit"> |
| | | <el-input v-model="form.unit" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="éè´æ°é" prop="purchaseAmount"> |
| | | <el-input v-model="form.purchaseAmount" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="åä»·(ç¨å)" prop="priceBeforeTax"> |
| | | <el-input v-model="form.priceBeforeTax" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="æ»ä»·(ç¨å)" prop="totalBeforeTax"> |
| | | <el-input v-model="form.totalBeforeTax" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="çå¼" prop="calorificValue"> |
| | | <el-input v-model="form.calorificValue" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®°äºº" prop="registrant"> |
| | | <el-input v-model="form.registrant" placeholder="请è¾å
¥" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®°æ¥æ" prop="registrationDate"> |
| | | <el-date-picker |
| | | v-model="form.registrationDate" |
| | | type="date" |
| | | placeholder="YYYY-MM-DD" |
| | | style="width: 100%" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="handleSubmit">ä¿å</el-button> |
| | | <!-- éç½®ååæ¶ --> |
| | | <el-button |
| | | type="primary" |
| | | @click="handleClose" |
| | | v-if="title.includes('æ°å¢')" |
| | | >åæ¶</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | @click="handleReset" |
| | | v-if="title.includes('ç¼è¾')" |
| | | >éç½®</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup name="ProductionDialog"> |
| | | import { ref, defineProps, watch } from "vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | const props = defineProps({ |
| | | title: { |
| | | type: String, |
| | | default: "", |
| | | }, |
| | | }); |
| | | const emit = defineEmits(["update:visible", "success"]); |
| | | const dialogVisible = defineModel("dialogFormVisible", { |
| | | required: true, |
| | | type: Boolean, |
| | | }); |
| | | const form = defineModel("form", { |
| | | required: true, |
| | | type: Object, |
| | | }); |
| | | const rules = { |
| | | supplierName: [ |
| | | { required: true, message: "请è¾å
¥ä¾åºååç§°", trigger: "blur" }, |
| | | ], |
| | | category: [{ required: true, message: "请è¾å
¥ç
¤ç§", trigger: "blur" }], |
| | | unit: [{ required: true, message: "请è¾å
¥åä½", trigger: "blur" }], |
| | | purchaseAmount: [ |
| | | { required: true, message: "请è¾å
¥éè´æ°é", trigger: "blur" }, |
| | | ], |
| | | priceBeforeTax: [{ required: true, message: "请è¾å
¥åä»·", trigger: "blur" }], |
| | | totalBeforeTax: [{ required: true, message: "请è¾å
¥æ»ä»·", trigger: "blur" }], |
| | | calorificValue: [{ required: true, message: "请è¾å
¥çå¼", trigger: "blur" }], |
| | | registrant: [{ required: true, message: "请è¾å
¥ç»è®°äºº", trigger: "blur" }], |
| | | registrationDate: [ |
| | | { required: true, message: "è¯·éæ©ç»è®°æ¥æ", trigger: "change" }, |
| | | ], |
| | | }; |
| | | // å
³éå¼¹çª |
| | | const handleClose = () => { |
| | | dialogVisible.value = false; |
| | | console.log(form.value); |
| | | // formRef.value?.resetFields() |
| | | // Object.assign(form, { |
| | | // }) |
| | | }; |
| | | const handleReset = () => { |
| | | if (!formRef.value) return; |
| | | formRef.value.resetFields(); |
| | | ElMessage.success("表åå·²éç½®"); |
| | | }; |
| | | // æç»çå¬form.valueçåå |
| | | watch( |
| | | () => form.value, |
| | | (val) => { |
| | | console.log(val); |
| | | } |
| | | ); |
| | | const formRef = ref(null); |
| | | // æäº¤è¡¨å |
| | | const handleSubmit = async () => { |
| | | if (!formRef.value) return; |
| | | await formRef.value.validate((valid) => { |
| | | if (valid) { |
| | | try { |
| | | emit("success", { ...form.value }); |
| | | handleClose(); |
| | | ElMessage.success("ä¿åæå"); |
| | | } catch (error) { |
| | | console.error("ä¿å失败:", error); |
| | | ElMessage.error("ä¿å失败"); |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | </style> |
| | | |
| | | <!-- <template> |
| | | <el-dialog |
| | | v-model="dialogFormVisible" |
| | | title="éè´ç»è®°æ°å¢" |
| | | width="500px" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, reactive, defineProps, defineEmits } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | |
| | | const props = defineProps({ |
| | | visible: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }) |
| | | |
| | | const emit = defineEmits(['update:visible', 'success']) |
| | | |
| | | const dialogFormVisible = ref(false) |
| | | const formRef = ref(null) |
| | | |
| | | // è¡¨åæ°æ® |
| | | const form = reactive({ |
| | | supplierName: '', |
| | | category: '', |
| | | unit: '', |
| | | purchaseAmount: '', |
| | | priceBeforeTax: '', |
| | | totalBeforeTax: '', |
| | | calorificValue: '', |
| | | registrant: '', |
| | | registrationDate: '' |
| | | }) |
| | | |
| | | // 表åéªè¯è§å |
| | | |
| | | |
| | | // çå¬visibleåå |
| | | watch(() => props.visible, (val) => { |
| | | dialogFormVisible.value = val |
| | | }) |
| | | |
| | | // çå¬dialogFormVisibleåå |
| | | watch(() => dialogFormVisible.value, (val) => { |
| | | emit('update:visible', val) |
| | | }) |
| | | |
| | | // æäº¤è¡¨å |
| | | const handleSubmit = async () => { |
| | | if (!formRef.value) return |
| | | |
| | | await formRef.value.validate((valid) => { |
| | | if (valid) { |
| | | try { |
| | | emit('success', { ...form }) |
| | | handleClose() |
| | | ElMessage.success('ä¿åæå') |
| | | } catch (error) { |
| | | console.error('ä¿å失败:', error) |
| | | ElMessage.error('ä¿å失败') |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // åæ¶ |
| | | const handleCancel = () => { |
| | | handleClose() |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .production-form { |
| | | padding: 20px; |
| | | } |
| | | |
| | | .dialog-footer { |
| | | display: flex; |
| | | justify-content: center; |
| | | gap: 20px; |
| | | } |
| | | |
| | | :deep(.el-form-item__label) { |
| | | font-weight: normal; |
| | | } |
| | | |
| | | :deep(.el-input), |
| | | :deep(.el-date-picker) { |
| | | width: 100%; |
| | | } |
| | | |
| | | :deep(.el-dialog__body) { |
| | | padding-top: 10px; |
| | | } |
| | | </style> --> |