From 88e9bfa5ad9d3399863f3c44a190649bdb161234 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 04 二月 2026 16:59:55 +0800
Subject: [PATCH] 进销存升级app: 1.App手动新增销售台账时,客户合同号输入框去掉 2.开票台账无法进行编辑删除操作 3.APP手动开票时,提示提交失败,请重试 4.采购台账中有多个产品时(处于待审核状态),删除其中一个产品后保存。点击此采购台账,产品信息还是会回显已删除的产品

---
 src/pages/procurementManagement/procurementLedger/detail.vue |   91 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/src/pages/procurementManagement/procurementLedger/detail.vue b/src/pages/procurementManagement/procurementLedger/detail.vue
index de6f687..f9b4851 100644
--- a/src/pages/procurementManagement/procurementLedger/detail.vue
+++ b/src/pages/procurementManagement/procurementLedger/detail.vue
@@ -190,7 +190,7 @@
                        size="small"
                        @click="addProduct"
                        class="add-btn"
-                       v-if="operationType !== 'view'">
+                       v-if="canEditProducts">
               鏂板
             </up-button>
           </view>
@@ -208,7 +208,7 @@
             </view>
             <!-- 鎿嶄綔鎸夐挳 -->
             <view class="product-actions"
-                  v-if="operationType !== 'view'">
+                  v-if="canEditProducts">
               <up-button type="error"
                          size="mini"
                          @click="removeProduct(idx)"
@@ -227,9 +227,11 @@
               <up-input v-model="product.productCategory"
                         readonly
                         placeholder="璇烽�夋嫨"
+                        :disabled="!canEditProducts"
                         @click="openCategoryPicker(idx)" />
               <template #right>
                 <up-icon name="arrow-right"
+                         v-if="canEditProducts"
                          @click="showCategoryPicker = true"></up-icon>
               </template>
             </up-form-item>
@@ -241,9 +243,11 @@
               <up-input v-model="product.specificationModel"
                         readonly
                         placeholder="璇烽�夋嫨"
+                        :disabled="!canEditProducts"
                         @click="openSpecificationPicker(idx)" />
               <template #right>
                 <up-icon name="arrow-right"
+                         v-if="canEditProducts"
                          @click="showSpecificationPicker = true"></up-icon>
               </template>
             </up-form-item>
@@ -253,6 +257,7 @@
                           required
                           :rules="productRules">
               <up-input v-model="product.unit"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�" />
             </up-form-item>
             <!-- 绋庣巼 -->
@@ -263,9 +268,11 @@
               <up-input v-model="product.taxRate"
                         readonly
                         placeholder="璇烽�夋嫨"
+                        :disabled="!canEditProducts"
                         @click="openTaxRatePicker(idx)" />
               <template #right>
                 <up-icon name="arrow-right"
+                         v-if="canEditProducts"
                          @click="showTaxRatePicker = true"></up-icon>
               </template>
             </up-form-item>
@@ -276,6 +283,7 @@
                           :rules="productRules">
               <up-input v-model="product.taxInclusiveUnitPrice"
                         type="number"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�"
                         @blur="formatTaxPrice(idx)" />
             </up-form-item>
@@ -286,6 +294,7 @@
                           :rules="productRules">
               <up-input v-model="product.quantity"
                         type="number"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�"
                         @blur="formatAmount(idx)" />
             </up-form-item>
@@ -296,6 +305,7 @@
                           :rules="productRules">
               <up-input v-model="product.taxInclusiveTotalPrice"
                         type="number"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�"
                         @blur="formatTaxTotal(idx)" />
             </up-form-item>
@@ -306,6 +316,7 @@
                           :rules="productRules">
               <up-input v-model="product.taxExclusiveTotalPrice"
                         type="number"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�"
                         @blur="formatNoTaxTotal(idx)" />
             </up-form-item>
@@ -317,9 +328,11 @@
               <up-input v-model="product.invoiceType"
                         readonly
                         placeholder="璇烽�夋嫨"
+                        :disabled="!canEditProducts"
                         @click="openInvoiceTypePicker(idx)" />
               <template #right>
                 <up-icon name="arrow-right"
+                         v-if="canEditProducts"
                          @click="showInvoiceTypePicker = true"></up-icon>
               </template>
             </up-form-item>
@@ -330,6 +343,7 @@
                           :rules="productRules">
               <up-input v-model="product.warnNum"
                         type="number"
+                        :disabled="!canEditProducts"
                         placeholder="璇疯緭鍏�" />
             </up-form-item>
             <up-form-item label="鏄惁璐ㄦ"
@@ -337,13 +351,16 @@
                           required
                           :rules="productRules">
               <u-radio-group v-model="product.isChecked"
+                             :disabled="!canEditProducts"
                              placement="row"
                              @change="groupChange">
                 <u-radio :customStyle="{marginRight: '40rpx'}"
                          label="鏄�"
+                         :disabled="!canEditProducts"
                          :name="true">
                 </u-radio>
                 <u-radio label="鍚�"
+                         :disabled="!canEditProducts"
                          :name="false">
                 </u-radio>
               </u-radio-group>
@@ -352,7 +369,7 @@
         </view>
       </view>
       <!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
-      <FooterButtons :show="operationType !== 'view'"
+      <FooterButtons :show="operationType !== 'view' && !isApprovalPassed"
                      cancelText="鍙栨秷"
                      confirmText="淇濆瓨"
                      @cancel="goBack"
@@ -375,6 +392,7 @@
     getSalesNo,
     approveProcessGetInfo,
   } from "@/api/procurementManagement/procurementLedger";
+  import { delProduct } from "@/api/salesManagement/salesLedger";
   import PageHeader from "@/components/PageHeader.vue";
   import FooterButtons from "@/components/FooterButtons.vue";
   import { userListNoPageByTenantId } from "@/api/system/user";
@@ -382,6 +400,14 @@
   const operationType = ref("");
   const editData = ref(null);
   const formRef = ref(null);
+  // 瀹℃壒閫氳繃锛坅pprovalStatus === 3锛夊悗锛岀姝㈢紪杈�/鍒犻櫎浜у搧
+  const isApprovalPassed = computed(() => {
+    const status = editData.value?.approvalStatus ?? form.value?.approvalStatus;
+    return Number(status) === 3;
+  });
+  const canEditProducts = computed(() => {
+    return operationType.value !== "view" && !isApprovalPassed.value;
+  });
 
   const userStore = useUserStore();
   const form = ref({
@@ -413,12 +439,14 @@
     }));
   });
 
-  // 璁$畻渚涘簲鍟嗛�夋嫨鍒楄〃
+  // 璁$畻渚涘簲鍟嗛�夋嫨鍒楄〃锛堝彧淇濈暀 isWhite === 0 鐨勪緵搴斿晢锛�
   const supplierActionList = computed(() => {
-    return supplierList.value.map(item => ({
-      name: item.text,
-      value: item.value,
-    }));
+    return supplierList.value
+      .filter(item => item.isWhite === 0)
+      .map(item => ({
+        name: item.text,
+        value: item.value,
+      }));
   });
 
   // 閫夋嫨鍣ㄧ浉鍏冲彉閲�
@@ -528,6 +556,7 @@
   };
 
   const addProduct = () => {
+    if (!canEditProducts.value) return;
     if (productData.value === null) {
       productData.value = [];
     }
@@ -574,26 +603,69 @@
   };
 
   const removeProduct = idx => {
-    productData.value.splice(idx, 1);
+    if (!canEditProducts.value) return;
+    const row = productData.value[idx];
+
+    // 鏂板妯″紡鎴栬繕鏈惤搴撶殑浜у搧锛岀洿鎺ュ墠绔垹闄�
+    if (operationType.value === "add" || !row?.id) {
+      productData.value.splice(idx, 1);
+      return;
+    }
+
+    uni.showModal({
+      title: "鎻愮ず",
+      content: "閫変腑鐨勪骇鍝佸皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�",
+      confirmText: "纭",
+      cancelText: "鍙栨秷",
+      success: res => {
+        if (!res.confirm) {
+          uni.showToast({
+            title: "宸插彇娑�",
+            icon: "none",
+          });
+          return;
+        }
+        const ids = [row.id];
+        delProduct(ids).then(() => {
+          uni.showToast({
+            title: "鍒犻櫎鎴愬姛",
+            icon: "success",
+          });
+          const currentId = form.value.id || editData.value?.id;
+          if (currentId) {
+            getPurchaseById({ id: currentId, type: 2 }).then(res2 => {
+              productData.value = res2.productData || [];
+            });
+          } else {
+            // 鍥為��澶勭悊锛氬鏋滄病鏈夊綋鍓岻D锛屽垯鏈湴鍒犻櫎
+            productData.value.splice(idx, 1);
+          }
+        });
+      },
+    });
   };
 
   // 鏄剧ず閫夋嫨鍣�
   const openCategoryPicker = idx => {
+    if (!canEditProducts.value) return;
     currentProductIndex.value = idx;
     showCategoryPicker.value = true;
   };
 
   const openSpecificationPicker = idx => {
+    if (!canEditProducts.value) return;
     currentProductIndex.value = idx;
     showSpecificationPicker.value = true;
   };
 
   const openTaxRatePicker = idx => {
+    if (!canEditProducts.value) return;
     currentProductIndex.value = idx;
     showTaxRatePicker.value = true;
   };
 
   const openInvoiceTypePicker = idx => {
+    if (!canEditProducts.value) return;
     currentProductIndex.value = idx;
     showInvoiceTypePicker.value = true;
   };
@@ -932,6 +1004,7 @@
       supplierList.value = res.data.map(item => ({
         text: item.supplierName,
         value: item.id,
+        isWhite: item.isWhite,
       }));
     });
   };

--
Gitblit v1.9.3