| | |
| | | <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 label="煤种" prop="coal"> |
| | | <el-input v-model="form.coal" 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 label="采购数量" prop="purchaseQuantity"> |
| | | <el-input v-model="form.purchaseQuantity" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item label="单价(税前)" prop="priceBeforeTax"> |
| | | <el-input v-model="form.priceBeforeTax" placeholder="请输入" /> |
| | | <el-form-item label="单价(不含税)" prop="priceExcludingTax"> |
| | | <el-input v-model="form.priceExcludingTax" placeholder="请输入" > |
| | | <template v-slot:suffix> |
| | | <i style="font-style:normal;">元</i> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="总价(税前)" prop="totalBeforeTax"> |
| | | <el-input v-model="form.totalBeforeTax" placeholder="请输入" /> |
| | | <el-form-item label="总价(不含税)" prop="totalPriceExcludingTax"> |
| | | <el-input v-model="form.totalPriceExcludingTax" placeholder="请输入" > |
| | | <template v-slot:suffix> |
| | | <i style="font-style:normal;">元</i> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="热值" prop="calorificValue"> |
| | | <el-input v-model="form.calorificValue" placeholder="请输入" /> |
| | | <el-form-item label="单价(含税)" prop="priceIncludingTax"> |
| | | <el-input v-model="form.priceIncludingTax" placeholder="请输入" > |
| | | <template v-slot:suffix> |
| | | <i style="font-style:normal;">元</i> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="登记人" prop="registrant"> |
| | | <el-input v-model="form.registrant" placeholder="请输入" /> |
| | | <el-form-item label="总价(含税)" prop="totalPriceIncludingTax"> |
| | | <el-input v-model="form.totalPriceIncludingTax" placeholder="请输入" > |
| | | <template v-slot:suffix> |
| | | <i style="font-style:normal;">元</i> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="税率" prop="taxRate"> |
| | | <el-input v-model="form.taxRate" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item label="登记人" prop="registrantId"> |
| | | <el-input v-model="form.registrantId" disabled placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item label="登记日期" prop="registrationDate"> |
| | | <el-date-picker |
| | | disabled |
| | | v-model="form.registrationDate" |
| | | type="date" |
| | | placeholder="YYYY-MM-DD" |
| | |
| | | </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 |
| | | > |
| | | <el-button type="primary" @click="handleSubmit">确认</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script setup name="ProductionDialog"> |
| | | import { ref, defineProps, watch } from "vue"; |
| | | import { ref, defineProps, watch, onMounted, nextTick } from "vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | import useUserStore from '@/store/modules/user' |
| | | import {addOrEditPR} from "@/api/procureMent"; |
| | | const props = defineProps({ |
| | | title: { |
| | | type: String, |
| | |
| | | required: true, |
| | | type: Object, |
| | | }); |
| | | const copyForm = defineModel("copyForm", { |
| | | required: true, |
| | | type: Object, |
| | | }); |
| | | const userStore = useUserStore() |
| | | const userInfo = ref({}); |
| | | onMounted(async () => { |
| | | let res = await userStore.getInfo() |
| | | userInfo.value = res; |
| | | }) |
| | | const rules = { |
| | | supplierName: [ |
| | | { required: true, message: "请输入供应商名称", trigger: "blur" }, |
| | | ], |
| | | category: [{ required: true, message: "请输入煤种", trigger: "blur" }], |
| | | coal: [{ required: true, message: "请输入煤种", trigger: "blur" }], |
| | | unit: [{ required: true, message: "请输入单位", trigger: "blur" }], |
| | | purchaseAmount: [ |
| | | purchaseQuantity: [ |
| | | { 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" }], |
| | | priceExcludingTax: [{ required: true, message: "请输入单价", trigger: "blur" }], |
| | | totalPriceExcludingTax: [{ required: true, message: "请输入总价", trigger: "blur" }], |
| | | priceIncludingTax: [{ required: true, message: "请输入含税单价", trigger: "blur" }], |
| | | totalPriceIncludingTax: [{ required: true, message: "请输入含税总价", trigger: "blur" }], |
| | | taxRate: [{ required: true, message: "请输入税率", trigger: "blur" }], |
| | | registrantId: [{ required: true, message: "请输入登记人", trigger: "blur" }], |
| | | registrationDate: [ |
| | | { required: true, message: "请选择登记日期", trigger: "change" }, |
| | | ], |
| | |
| | | // 关闭弹窗 |
| | | const handleClose = () => { |
| | | dialogFormVisible.value = false; |
| | | }; |
| | | const handleReset = async () => { |
| | | // 重置表单数据 |
| | | form.value = JSON.parse(JSON.stringify(copyForm.value)); |
| | | // 等待DOM更新完成后清除表单验证状态 |
| | | await nextTick(); |
| | | if (formRef.value) { |
| | | formRef.value.clearValidate(); |
| | | } |
| | | console.log(form.value); |
| | | }; |
| | | 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) => { |
| | | await formRef.value.validate(async (valid) => { |
| | | if (valid) { |
| | | try { |
| | | emit("success", { ...form.value }); |
| | | handleClose(); |
| | | ElMessage.success("保存成功"); |
| | | } catch (error) { |
| | | console.error("保存失败:", error); |
| | | ElMessage.error("保存失败"); |
| | | console.log("表单验证通过", form.value); |
| | | const obj = ref({}); |
| | | if (props.title.includes('新增')) { |
| | | let result = await addOrEditPR({ |
| | | ...form.value, |
| | | }) |
| | | obj.value = { |
| | | title: "新增", |
| | | ...form.value, |
| | | result |
| | | }; |
| | | } else { |
| | | delete form.value.updateTime |
| | | delete form.value.createTime |
| | | let result = await addOrEditPR({ |
| | | ...form.value, |
| | | }) |
| | | obj.value = { |
| | | title: "编辑", |
| | | ...form.value, |
| | | result |
| | | }; |
| | | } |
| | | emit("submit", obj.value); |
| | | } |
| | | }); |
| | | }; |