From 45b6df5b9cba3cab3f0a3001dc7b7d9729923ba4 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 18 七月 2026 11:22:11 +0800
Subject: [PATCH] fix: 销售和采购新增产品修改

---
 src/views/salesManagement/salesLedger/index.vue |   66 +++++++++++++++++----------------
 1 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 1a0f0a5..23c7438 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -605,35 +605,22 @@
                :rules="productRules"
                ref="productFormRef">
         <el-row :gutter="30">
-          <el-col :span="24">
-            <el-form-item label="浜у搧澶х被锛�"
-                          prop="productCategory">
-              <el-tree-select v-model="productForm.productCategory"
-                              placeholder="璇烽�夋嫨"
-                              clearable
-                              filterable
-                              check-strictly
-                              @change="getModels"
-                              :data="productOptions"
-                              :render-after-expand="false"
-                              style="width: 100%" />
+          <el-col :span="12">
+            <el-form-item label="浜у搧澶х被锛�" prop="productCategory">
+              <el-input v-model="productForm.productCategory"
+                        placeholder="鐐瑰嚮閫夋嫨"
+                        readonly
+                        @click="showProductSelectDialog = true"
+                        style="cursor:pointer" />
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="24">
-            <el-form-item label="瑙勬牸鍨嬪彿锛�"
-                          prop="productModelId">
-              <el-select v-model="productForm.productModelId"
-                         placeholder="璇烽�夋嫨"
-                         clearable
-                         @change="getProductModel"
-                         filterable>
-                <el-option v-for="item in modelOptions"
-                           :key="item.id"
-                           :label="item.model"
-                           :value="item.id" />
-              </el-select>
+          <el-col :span="12">
+            <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+              <el-input v-model="productForm.specificationModel"
+                        placeholder="鐐瑰嚮閫夋嫨"
+                        readonly
+                        @click="showProductSelectDialog = true"
+                        style="cursor:pointer" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -758,6 +745,9 @@
         </el-row>
       </el-form>
     </FormDialog>
+    <ProductSelectDialog v-model="showProductSelectDialog"
+                         @confirm="handleProductSelect"
+                         single />
     <!-- 瀵煎叆寮圭獥 -->
     <FormDialog v-model="importUpload.open"
                 :title="importUpload.title"
@@ -1085,6 +1075,7 @@
     buildAmountSummaryFormat,
   } from "@/utils/numberFormat";
   import ImageUpload from "@/components/AttachmentUpload/image/index.vue";
+  import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
   import { getCurrentDate } from "@/utils/index.js";
   import { listCustomer } from "@/api/basicData/customer.js";
 
@@ -1113,6 +1104,7 @@
   const total = ref(0);
   const fileList = ref([]);
   const deliveryFileList = ref([]);
+  const showProductSelectDialog = ref(false);
 
   // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
   const operationType = ref("");
@@ -1155,7 +1147,9 @@
   const currentId = ref("");
   const productFormData = reactive({
     productForm: {
+      productId: "",
       productCategory: "",
+      productModelId: "",
       specificationModel: "",
       unit: "",
       quantity: "",
@@ -1167,11 +1161,8 @@
       isProduction: false,
     },
     productRules: {
-      productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-      productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-      specificationModel: [
-        { required: true, message: "璇烽�夋嫨", trigger: "change" },
-      ],
+      productCategory: [{ required: true, message: "璇烽�夋嫨浜у搧澶х被", trigger: "change" }],
+      productModelId: [{ required: true, message: "璇烽�夋嫨瑙勬牸鍨嬪彿", trigger: "change" }],
       unit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       taxInclusiveUnitPrice: [
@@ -1503,6 +1494,17 @@
     }
     return formattedNumber(row, column, cellValue);
   };
+  // ProductSelectDialog 閫変腑鍥炶皟
+  const handleProductSelect = (products) => {
+    if (!products || !products.length) return;
+    const p = products[0];
+    productForm.value.productId = p.productId;
+    productForm.value.productCategory = p.productName || '';
+    productForm.value.productModelId = p.id;
+    productForm.value.specificationModel = p.model || '';
+    productForm.value.unit = p.unit || '';
+    showProductSelectDialog.value = false;
+  };
   // 鑾峰彇tree瀛愭暟鎹�
   const getModels = value => {
     productForm.value.productCategory = findNodeById(productOptions.value, value);

--
Gitblit v1.9.3