From 41c7dd199f1919a01dfc5e04f62359ca8bc3cb2c Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 12 九月 2026 12:43:32 +0800
Subject: [PATCH] feat: 库存管理三表单与详情页签分组、采购台账分栏、油品联动与电话校验、冻结解冻修复

---
 src/views/inventoryManagement/stockManagement/New.vue |  175 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 93 insertions(+), 82 deletions(-)

diff --git a/src/views/inventoryManagement/stockManagement/New.vue b/src/views/inventoryManagement/stockManagement/New.vue
index e55de75..a5afaba 100644
--- a/src/views/inventoryManagement/stockManagement/New.vue
+++ b/src/views/inventoryManagement/stockManagement/New.vue
@@ -2,81 +2,110 @@
   <div>
     <el-dialog v-model="isShow"
                title="鏂板搴撳瓨"
-               width="800"
+               width="60%"
                @close="closeModal">
       <el-form label-width="140px"
                :model="formState"
                label-position="top"
                ref="formRef">
-        <el-form-item label="浜у搧鍚嶇О"
-                      prop="productModelId"
-                      :rules="[
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="浜у搧鍚嶇О"
+                          prop="productModelId"
+                          :rules="[
                 {
                 required: true,
                 message: '璇烽�夋嫨浜у搧',
                 trigger: 'change',
               }
             ]">
-          <el-button type="primary"
-                     @click="showProductSelectDialog = true">
-            {{ formState.productName ? formState.productName : '閫夋嫨浜у搧' }}
-          </el-button>
-        </el-form-item>
-        <el-form-item label="瑙勬牸"
-                      prop="productModelName">
-          <el-input v-model="formState.productModelName"
-                    disabled />
-        </el-form-item>
-        <el-form-item label="鍗曚綅"
-                      prop="unit">
-          <el-input v-model="formState.unit"
-                    disabled />
-        </el-form-item>
-        <el-form-item label="搴撳瓨绫诲瀷"
-                      prop="type"
-                      :rules="[
+              <el-button type="primary"
+                         @click="showProductSelectDialog = true">
+                {{ formState.productName ? formState.productName : '閫夋嫨浜у搧' }}
+              </el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="瑙勬牸"
+                          prop="productModelName">
+              <el-input v-model="formState.productModelName"
+                        disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍗曚綅"
+                          prop="unit">
+              <el-input v-model="formState.unit"
+                        disabled />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="搴撳瓨绫诲瀷"
+                          prop="type"
+                          :rules="[
                 {
                 required: true,
                 message: '璇烽�夋嫨搴撳瓨绫诲瀷',
                 trigger: 'change',
               }
             ]">
-          <el-select v-model="formState.type"
-                     placeholder="璇烽�夋嫨搴撳瓨绫诲瀷">
-            <el-option label="鍚堟牸搴撳瓨"
-                       value="qualified" />
-            <el-option label="涓嶅悎鏍煎簱瀛�"
-                       value="unqualified" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="搴撳瓨鏁伴噺"
-                      prop="qualitity">
-          <el-input-number v-model="formState.qualitity"
-                           :step="0.01"
-                           :min="0.01"
-                           :precision="2"
-                           style="width: 100%" />
-        </el-form-item>
-        <el-form-item label="鎵瑰彿"
-                      prop="batchNo">
-          <el-input v-model="formState.batchNo"
-                    placeholder="璇疯緭鍏ユ壒鍙�" />
-        </el-form-item>
-        <el-form-item v-if="formState.type === 'qualified'"
-                      label="搴撳瓨棰勮鏁伴噺"
-                      prop="warnNum">
-          <el-input-number v-model="formState.warnNum"
-                           :step="0.01"
-                           :min="0"
-                           :max="formState.qualitity"
-                           :precision="2"
-                           style="width: 100%" />
-        </el-form-item>
-        <el-form-item label="澶囨敞"
-                      prop="remark">
-          <el-input v-model="formState.remark"
-                    type="textarea" />
-        </el-form-item>
+              <el-select v-model="formState.type"
+                         placeholder="璇烽�夋嫨搴撳瓨绫诲瀷"
+                         style="width: 100%">
+                <el-option label="鍚堟牸搴撳瓨"
+                           value="qualified" />
+                <el-option label="涓嶅悎鏍煎簱瀛�"
+                           value="unqualified" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="搴撳瓨鏁伴噺"
+                          prop="qualitity">
+              <el-input-number v-model="formState.qualitity"
+                               :step="0.01"
+                               :min="0.01"
+                               :precision="2"
+                               style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col v-if="formState.type === 'qualified'"
+                  :span="12">
+            <el-form-item label="搴撳瓨棰勮鏁伴噺"
+                          prop="warnNum">
+              <el-input-number v-model="formState.warnNum"
+                               :step="0.01"
+                               :min="0"
+                               :max="formState.qualitity"
+                               :precision="2"
+                               style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="formState.type === 'qualified' ? 12 : 24">
+            <el-form-item label="鎵瑰彿"
+                          prop="batchNo">
+              <el-input v-model="formState.batchNo"
+                        placeholder="璇疯緭鍏ユ壒鍙�"
+                        style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="澶囨敞"
+                          prop="remark">
+              <el-input v-model="formState.remark"
+                        type="textarea"
+                        style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <!-- 浜у搧閫夋嫨寮圭獥 -->
       <ProductSelectDialog v-model="showProductSelectDialog"
@@ -114,8 +143,7 @@
 
   const emit = defineEmits(["update:visible", "completed"]);
 
-  // 鍝嶅簲寮忔暟鎹紙鏇夸唬閫夐」寮忕殑 data锛�
-  const formState = ref({
+  const buildEmptyForm = () => ({
     productId: undefined,
     productModelId: undefined,
     productName: "",
@@ -127,6 +155,8 @@
     warnNum: 0,
     remark: "",
   });
+
+  const formState = ref(buildEmptyForm());
 
   const isShow = computed({
     get() {
@@ -152,19 +182,8 @@
   let { proxy } = getCurrentInstance();
 
   const closeModal = () => {
-    // 閲嶇疆琛ㄥ崟鏁版嵁
-    formState.value = {
-      productId: undefined,
-      productModelId: undefined,
-      productName: "",
-      productModelName: "",
-      unit: "",
-      type: undefined,
-      qualitity: 0,
-      batchNo: null,
-      warnNum: 0,
-      remark: "",
-    };
+    proxy.resetForm("formRef");
+    formState.value = buildEmptyForm();
     isShow.value = false;
   };
 
@@ -186,29 +205,21 @@
   const handleSubmit = () => {
     proxy.$refs["formRef"].validate(valid => {
       if (valid) {
-        // 楠岃瘉鏄惁閫夋嫨浜嗕骇鍝佸拰瑙勬牸
+        // 楠岃瘉鏄惁閫夋嫨浜嗕骇鍝�
         if (!formState.value.productModelId) {
           proxy.$modal.msgError("璇烽�夋嫨浜у搧");
           return;
         }
-        if (!formState.value.productModelId) {
-          proxy.$modal.msgError("璇烽�夋嫨瑙勬牸");
-          return;
-        }
         if (formState.value.type === "qualified") {
           addStockInRecordOnly(formState.value).then(res => {
-            // 鍏抽棴妯℃�佹
             isShow.value = false;
-            // 鍛婄煡鐖剁粍浠跺凡瀹屾垚
             emit("completed");
             proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           });
         } else {
           formState.value.warnNum = 0;
           createStockUnInventory(formState.value).then(res => {
-            // 鍏抽棴妯℃�佹
             isShow.value = false;
-            // 鍛婄煡鐖剁粍浠跺凡瀹屾垚
             emit("completed");
             proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           });

--
Gitblit v1.9.3