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