소스 검색

fix(purchaseOrder): 更新付款类型显示逻辑,确保根据结算方式动态展示款项类型

xieyong 4 주 전
부모
커밋
c675544073
2개의 변경된 파일과 19개의 추가작업 그리고 5개의 파일을 삭제
  1. 17 2
      src/BIZComponents/paymentCollectionPlan/Index.vue
  2. 2 3
      src/views/purchasingManage/purchaseOrder/components/addDialogNew.vue

+ 17 - 2
src/BIZComponents/paymentCollectionPlan/Index.vue

@@ -128,7 +128,7 @@
             @change="(val) => typeChange(val, scope.$index)"
           >
             <el-option
-              v-for="item in paymentTypeOp"
+              v-for="item in showPaymentTypeOp"
               :key="item.value"
               :label="item.label"
               :value="item.value"
@@ -316,6 +316,10 @@
           !['1', '2'].includes(this.info?.settlementMode) && this.type != 'view'
         );
       },
+      // 任何一行款项类型是『预付款』(value=1) 时才显示子类型列
+      showSubTypeColumn() {
+        return this.form.datasource.some((item) => item.type == 1);
+      },
       columns() {
         return [
           {
@@ -346,7 +350,9 @@
             prop: 'subType',
             label: '款项子类型',
             slot: 'subType',
-            align: 'center'
+            align: 'center',
+            // 没有任何一行的 type 为预付款(value=1)时,整列隐藏
+            show: this.showSubTypeColumn
           },
           {
             prop: 'moneyName',
@@ -399,6 +405,15 @@
           }
         ];
       },
+      showPaymentTypeOp() {
+        // 阶段付款(settlementMode === 9)展示全部款项类型;
+        // 其他方式只允许"交货款"(value=2)。始终返回数组,v-for 才能正常渲染。
+        const isStage = this.info?.settlementMode == 9;
+        if (isStage) {
+          return this.paymentTypeOp;
+        }
+        return this.paymentTypeOp.filter((item) => item.value == 2);
+      },
       allRatio() {
         return formatPrice(
           this.form.datasource.reduce((acc, cur) => acc + Number(cur.ratio), 0)

+ 2 - 3
src/views/purchasingManage/purchaseOrder/components/addDialogNew.vue

@@ -2324,14 +2324,13 @@
         // this.$set(this.form, 'issueNumber', 1);
         this.$set(this.form, 'settlementDate', []);
         this.$set(this.form, 'receiptDate', 1);
-        
-        if(v.dictCode == 3) {
+        if (v.dictCode == 3) {
           this.$set(this.form, 'issueNumber', 2);
         } else {
           this.$set(this.form, 'issueNumber', 1);
         }
         this.$refs.paymentCollectionPlanRef.defaultList(v.dictCode, this.form.issueNumber);
-      }, 
+      },
       // settlementModeChange(info) {
       //   this.form.settlementModeName = info.dictValue;
       // },