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/equipmentRequisitionDialog.vue |  199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 199 insertions(+), 0 deletions(-)

diff --git a/src/views/equipment/management/mould/equipmentRequisitionDialog.vue b/src/views/equipment/management/mould/equipmentRequisitionDialog.vue
new file mode 100644
index 0000000..b6382ef
--- /dev/null
+++ b/src/views/equipment/management/mould/equipmentRequisitionDialog.vue
@@ -0,0 +1,199 @@
+<template>
+  <el-dialog
+    v-model="visible"
+    :title="isEdit ? '缂栬緫璁惧棰嗙敤' : '鏂板璁惧棰嗙敤'"
+    width="600px"
+    @close="handleClose"
+  >
+    <el-form :model="form" :rules="rules" ref="formRef" label-width="150px">
+      <el-form-item label="棰嗙敤浜�" prop="userId">
+        <el-select v-model="form.userId" placeholder="璇烽�夋嫨">
+          <el-option
+            v-for="item in userList"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璁惧鍚嶇О" prop="equipmentId">
+        <el-select v-model="form.equipmentId" placeholder="璇烽�夋嫨">
+          <el-option
+            v-for="item in equipmentList"
+            :key="item.id"
+            :label="item.equipmentName"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璁惧搴撳瓨" prop="equipmentStock">
+        <el-input
+          :value="
+            equipmentList.find((item) => item.id == form.equipmentId)
+              ?.quantity || 0
+          "
+          disabled
+          style="width: 100%"
+        />
+      </el-form-item>
+      <el-form-item label="棰嗙敤鏁伴噺" prop="usageQuantity">
+        <el-input-number
+          v-model="form.usageQuantity"
+          :min="1"
+          :max="maxQuantity || 999"
+          style="width: 100%"
+        />
+        <span
+          v-if="maxQuantity !== null"
+          style="color: #999; font-size: 12px; margin-left: 8px"
+          >(鏈�澶歿{ maxQuantity }}鍙�)</span
+        >
+      </el-form-item>
+      <el-form-item label="浣跨敤鐘舵��" prop="equipmentStatus">
+        <el-select v-model="form.equipmentStatus" placeholder="璇烽�夋嫨">
+          <el-option label="鍚敤" :value="1" />
+          <el-option label="绂佺敤" :value="0" />
+          <el-option label="缁翠慨涓�" :value="2" />
+          <el-option label="鎶ュ簾" :value="3" />
+          <el-option label="寰呴鐢�" :value="4" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="浣跨敤寮�濮嬫椂闂�" prop="usageStartTime">
+        <el-date-picker
+          v-model="form.usageStartTime"
+          type="datetime"
+          placeholder="閫夋嫨寮�濮嬫椂闂�"
+          style="width: 100%"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="浣跨敤缁撴潫鏃堕棿" prop="usageEndTime">
+        <el-date-picker
+          v-model="form.usageEndTime"
+          type="datetime"
+          placeholder="閫夋嫨缁撴潫鏃堕棿"
+          style="width: 100%"
+        />
+      </el-form-item> -->
+      <el-form-item label="澶囨敞" prop="remarks">
+        <el-input
+          v-model="form.remarks"
+          type="textarea"
+          placeholder="璇疯緭鍏ュ娉�"
+        />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="handleClose">鍙栨秷</el-button>
+      <el-button type="primary" @click="handleSubmit">纭畾</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup>
+import { ref, watch, computed, onMounted } from "vue";
+import { ElMessage } from "element-plus";
+import { getEquipmentList } from "@/api/publicApi/index.js";
+import { addOrEditUsageRecord } from "@/api/equipment/requisition/index.js";
+
+import useUserStore from "@/store/modules/user";
+
+onMounted(() => {});
+const userStore = useUserStore();
+let userList = ref([]);
+userStore.getUserList().then((res) => {
+  userList.value = res;
+});
+// 鑾峰彇璁惧鍒楄〃
+const equipmentList = ref([]);
+getEquipmentList().then((res) => {
+  equipmentList.value = res.data;
+});
+const props = defineProps({
+  modelValue: Boolean,
+  formData: {
+    type: Object,
+    default: () => ({}),
+  },
+});
+const maxQuantity = computed(() => {
+  if (!props.formData.equipmentId) return 0;
+  const eq = equipmentList.value.find(
+    (item) => item.id == props.formData.equipmentId
+  );
+  // 闃叉涓�0鎴栬礋鏁帮紝鏈�灏忎负1
+  return eq && eq.quantity > 0 ? eq.quantity : 999;
+});
+const emit = defineEmits(["update:modelValue", "submit"]);
+
+const visible = computed({
+  get: () => props.modelValue,
+  set: (v) => emit("update:modelValue", v),
+});
+
+const isEdit = computed(() => !!props.formData?.id);
+const formRef = ref();
+
+// 榛樿琛ㄥ崟鍒濆鍊�
+const defaultForm = {
+  userId: "",
+  equipmentId: "",
+  usageQuantity: 1,
+  equipmentStatus: 1,
+  usageStartTime: "",
+  remarks: ""
+};
+const form = ref({ ...defaultForm });
+
+watch(
+  () => props.formData,
+  (val) => {
+    if (val && Object.keys(val).length > 0) {
+      form.value = { ...defaultForm, ...val };
+    } else {
+      // 鏂板缓鏃堕噸缃负鍒濆鍊硷紝闃叉鑴忔暟鎹�
+      form.value = { ...defaultForm };
+    }
+  },
+  { immediate: true }
+);
+
+const rules = {
+  userId: [{ required: true, message: "璇疯緭鍏ラ鐢ㄤ汉", trigger: "blur" }],
+  equipmentId: [{ required: true, message: "璇疯緭鍏ヨ澶嘔D", trigger: "blur" }],
+  usageQuantity: [
+    { required: true, message: "璇疯緭鍏ラ鐢ㄦ暟閲�", trigger: "blur" },
+    { type: "number", min: 1, message: "鑷冲皯棰嗙敤1鍙�", trigger: "blur" },
+    {
+      validator: (rule, value, callback) => {
+        if (maxQuantity.value !== null && value > maxQuantity.value) {
+          callback(new Error("棰嗙敤鏁伴噺涓嶈兘澶т簬璁惧鏁伴噺"));
+        } else {
+          callback();
+        }
+      },
+      trigger: "blur",
+    },
+  ],
+  equipmentStatus: [
+    { required: true, message: "璇烽�夋嫨浣跨敤鐘舵��", trigger: "change" },
+  ],
+  usageStartTime: [
+    { required: true, message: "璇烽�夋嫨寮�濮嬫椂闂�", trigger: "change" },
+  ],
+};
+
+function handleClose() {
+  emit("update:modelValue", false);
+}
+
+function handleSubmit() {
+  formRef.value.validate((valid) => {
+    if (!valid) return;
+    let res = addOrEditUsageRecord(form.value);
+    emit("submit", { ...form.value });
+    handleClose();
+  });
+}
+</script>

--
Gitblit v1.9.3