From 193af68d72a71268054f7d07395c2ea11210ecc1 Mon Sep 17 00:00:00 2001 From: 张诺 <zhang_12370@163.com> Date: 星期五, 30 五月 2025 09:40:28 +0800 Subject: [PATCH] 提交基础信息 三个模块 提交采购管理 --- src/views/procureMent/components/ProductionDialog.vue | 253 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 253 insertions(+), 0 deletions(-) diff --git a/src/views/procureMent/components/ProductionDialog.vue b/src/views/procureMent/components/ProductionDialog.vue new file mode 100644 index 0000000..3da88f5 --- /dev/null +++ b/src/views/procureMent/components/ProductionDialog.vue @@ -0,0 +1,253 @@ +<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> --> \ No newline at end of file -- Gitblit v1.9.3