From 4c9e1ba3c7f5c95a1789e88823ff262c26a53bce Mon Sep 17 00:00:00 2001 From: zhang_12370 <z2864490065@outlook.com> Date: 星期二, 08 七月 2025 20:34:32 +0800 Subject: [PATCH] 解决 生产加工煤种字段匹配 --- src/views/equipment/management/mould/usageRecord.vue | 241 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 241 insertions(+), 0 deletions(-) diff --git a/src/views/equipment/management/mould/usageRecord.vue b/src/views/equipment/management/mould/usageRecord.vue new file mode 100644 index 0000000..b092d33 --- /dev/null +++ b/src/views/equipment/management/mould/usageRecord.vue @@ -0,0 +1,241 @@ +<template> + <div> + <el-dialog + v-model="dialogVisible" + :title="addOrEdit === 'edit' ? '缂栬緫' : '鏂板' + '璁惧'" + width="800" + :title-style="{ textAlign: 'center' }" + :close-on-click-modal="false" + :before-close="handleClose" + > + <el-form + ref="formRef" + :model="formData" + :rules="rules" + label-width="auto" + > + <el-row :gutter="20"> + <el-col :span="11"> + <el-form-item label="璁惧缂栧彿" prop="equipmentId"> + <el-input + v-model="formData.equipmentId" + placeholder="璇疯緭鍏ヨ澶囩紪鍙�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="璁惧鍚嶇О" prop="equipmentName"> + <el-input + v-model="formData.equipmentName" + placeholder="璇疯緭鍏ヨ澶囧悕绉�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="鏁伴噺" prop="quantity"> + <el-input + v-model="formData.quantity" + placeholder="璇疯緭鍏ユ暟閲�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="瑙勬牸鍨嬪彿" prop="specification"> + <el-input + v-model="formData.specification" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="浣跨敤鐘舵��" prop="usageStatus"> + <el-select + v-model="formData.usageStatus" + placeholder="璇烽�夋嫨浣跨敤鐘舵��" + :disabled="isViewMode" + > + <el-option label="鍚敤" value="1" /> + <el-option label="绂佺敤" value="0" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="浣跨敤閮ㄩ棬" prop="usingDepartment"> + <el-input + v-model="formData.usingDepartment" + placeholder="璇疯緭鍏ヤ娇鐢ㄩ儴闂�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="瀛樻斁浣嶇疆" prop="storageLocation"> + <el-input + v-model="formData.storageLocation" + placeholder="璇疯緭鍏ュ瓨鏀句綅缃�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="閲囪喘浠锋牸" prop="purchasePrice"> + <el-input + v-model="formData.purchasePrice" + placeholder="璇疯緭鍏ラ噰璐环鏍�" + :disabled="isViewMode" + style="width: 100%" + /> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="閲囪喘鏃ユ湡" prop="purchaseDate"> + <el-date-picker + v-model="formData.purchaseDate" + type="date" + placeholder="璇烽�夋嫨閲囪喘鏃ユ湡" + size="default" + :value-format="'YYYY-MM-DD'" + style="width: 100%;" + :disabled="isViewMode" + /> + </el-form-item> + </el-col> + </el-row> + <el-form-item class="dialog-footer"> + <el-button v-if="!isViewMode" @click="cancelForm">鍙栨秷</el-button> + <el-button v-if="!isViewMode" type="primary" @click="submitForm">纭畾</el-button> + </el-form-item> + </el-form> + </el-dialog> + </div> +</template> + +<script setup> +import { ref, watch, computed, reactive } from "vue"; +import { addOrEditEquipment } from "@/api/equipment/management/index.js"; + +const props = defineProps({ + beforeClose: { + type: Function, + default: () => {}, + }, + form: { + type: Object, + default: () => ({}), + }, + addOrEdit: { + type: String, + default: "add", + }, + title: { + type: String, + default: "", + }, +}); + +const emit = defineEmits(["submit", "handleBeforeClose"]); + +// 璁$畻灞炴�э細缁熶竴鎺у埗鏄惁绂佺敤 +const isViewMode = computed(() => props.addOrEdit === "viewRow"); + +// 琛ㄥ崟寮曠敤鍜屾暟鎹� +const formRef = ref(null); +const formData = ref({}); +const copyForm = defineModel("copyForm", { + required: true, + type: Object, + default: () => ({}), +}); + +// 寮圭獥鍙鎬� +const dialogVisible = defineModel("managementFormDialog", { + required: true, + type: Boolean, +}); + +// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖栵紝鍚堝苟鐩戝惉閫昏緫 +watch( + [() => props.form, () => props.addOrEdit], + ([newForm, newAddOrEdit]) => { + formData.value = { ...newForm }; + }, + { deep: true, immediate: true } +); +// 鎻愪氦琛ㄥ崟 +const submitForm = async () => { + if (!formRef.value) return; + + await formRef.value.validate(async (valid) => { + if (!valid) return; + + try { + const result = await addOrEditEquipment({ ...formData.value }); + const title = props.title.includes("鏂板") ? "鏂板" : "缂栬緫"; + + if (result.code === 200 && result.msg) { + ElMessage.success(`${title}鎴愬姛锛�${result.msg}`); + emit("submit", { title, ...formData.value, result }); + closeDialog(); + } else { + ElMessage.error(`${title}澶辫触锛�${result.msg}`); + } + } catch (error) { + console.error("鎻愪氦澶辫触:", error); + ElMessage.error("鎻愪氦澶辫触锛岃閲嶈瘯"); + } + }); +}; + +// 鍏抽棴寮圭獥鐨勭粺涓�鏂规硶 +const closeDialog = () => { + emit("update:managementFormDialog", false); + formData.value = {}; +}; + +// 鍙栨秷琛ㄥ崟 +const cancelForm = () => { + closeDialog(); +}; + +// 閲嶇疆琛ㄥ崟 +const resetForm = () => { + if (!formRef.value) return; + formData.value = JSON.parse(JSON.stringify(copyForm.value)); +}; + +// 鍏抽棴寮圭獥 +const handleClose = () => { + emit("handleBeforeClose"); + closeDialog(); +}; +const rules = reactive({ + equipmentId: [ + { required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" }, + ], +}); +</script> +<style lang="scss" scoped> +.dialog-footer { + display: flex; + justify-content: flex-end; + margin-top: 20px; + flex-direction: column; +} + +// 鍙负dialog澶撮儴鍔犱笅鍒掔嚎 +:deep(.el-dialog__header) { + border-bottom: 1px solid #e8eaec; + padding: 0 20px 10px 0; + margin-bottom: 14px; +} +</style> -- Gitblit v1.9.3