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