Kaynağa Gözat

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-eom into dev

tanzx 1 ay önce
ebeveyn
işleme
b703c3bc5c

+ 1 - 1
src/views/financialManage/invoiceManage/components/addOrEditDialogNew.vue

@@ -713,7 +713,7 @@
           applyDeptName: '',
           applyUserId: '',
           applyUserName: '',
-          type: '1',
+          type: 1,
           id: '',
           ...defForm
         },

+ 2 - 2
src/views/purchasingManage/purchaseOrder/accountstatement/index.vue

@@ -109,7 +109,7 @@
               </template>
             </el-popconfirm>
 
-            <el-link
+            <!-- <el-link
               size="small"
               type="primary"
               :underline="false"
@@ -119,7 +119,7 @@
               @click="handleAddInvoice(row)"
             >
               新增发票
-            </el-link>
+            </el-link> -->
           </template>
         </ele-pro-table>
       </div>

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

@@ -569,6 +569,7 @@
             :isContractId="
               !!form.contractId && !OutValidate.includes(form.sourceType)
             "
+            @dataChange="rawDataChange"
           ></inventoryTable>
         </el-tab-pane>
         <el-tab-pane
@@ -586,6 +587,7 @@
             :isContractId="
               !!form.contractId && !OutValidate.includes(form.sourceType)
             "
+            @dataChange="outputDataChange"
           ></inventoryTable>
         </el-tab-pane>
       </el-tabs>
@@ -968,6 +970,11 @@
         groupTreeData: [],
         groupData: [],
         OutValidate: ['3', '4'],
+        // 切换订单类型时缓存带料清单与产出清单的数据,避免因 tab 销毁而丢失
+        rawDetailListCache: [],
+        outputDetailListCache: [],
+        // 记录上一次订单类型是否在 orderSourceType 中,用于判断是否需要恢复缓存
+        prevSourceTypeInOrder: false,
 
         // 提交状态
         loading: false,
@@ -1115,6 +1122,21 @@
         console.log('isGenReceiptPlan', this.isGenReceiptPlan);
       });
     },
+    watch: {
+      // 监听订单类型变化,缓存带料清单与产出清单数据,切换回支持类型时恢复
+      'form.sourceType'(newVal, oldVal) {
+        const wasInOrder = this.orderSourceType.includes(oldVal);
+        const isInOrder = this.orderSourceType.includes(newVal);
+        // 从支持类型切到不支持类型:缓存当前数据
+        if (wasInOrder && !isInOrder) {
+          this.cacheDetailList();
+        }
+        // 从不支持类型切回支持类型:从缓存恢复数据
+        if (!wasInOrder && isInOrder) {
+          this.restoreCachedDetailList();
+        }
+      }
+    },
     methods: {
       changeReceiveTerms(row, index) {
         console.log('changeReceiveTerms~~~', row)
@@ -1945,9 +1967,47 @@
       },
 
       sourceTypeChange() {
-        // 当sourceType改变时,重置relationType及相关字段
+        // 当sourceType改变时,只重置relationType,保留各清单数据
         this.form.relationType = '';
-        this.valueChange();
+      },
+      // 实时同步带料清单数据到缓存
+      rawDataChange(val) {
+        this.rawDetailListCache = val || [];
+      },
+      // 实时同步产出清单数据到缓存
+      outputDataChange(val) {
+        this.outputDetailListCache = val || [];
+      },
+      /**
+       * 切换订单类型时缓存带料清单与产出清单的数据
+       * 由于 tab 上的 v-if 会销毁子组件,所以提前把数据保存到父组件
+       */
+      cacheDetailList() {
+        if (this.$refs.rawDetailListRef) {
+          this.rawDetailListCache =
+            this.$refs.rawDetailListRef.getTableValue() || [];
+        }
+        if (this.$refs.outputDetailListRef) {
+          this.outputDetailListCache =
+            this.$refs.outputDetailListRef.getTableValue() || [];
+        }
+      },
+      /**
+       * 当订单类型切回到支持带料/产出清单的类型时,从缓存恢复数据
+       */
+      restoreCachedDetailList() {
+        this.$nextTick(() => {
+          if (this.$refs.rawDetailListRef) {
+            this.$refs.rawDetailListRef.putTableValue(
+              this.rawDetailListCache || []
+            );
+          }
+          if (this.$refs.outputDetailListRef) {
+            this.$refs.outputDetailListRef.putTableValue(
+              this.outputDetailListCache || []
+            );
+          }
+        });
       },
       handleChangeRelationType(val) {
         // if(this.showReturnRelation) {
@@ -2162,6 +2222,9 @@
         this.activeName = '1';
 
         this.row = row;
+        // 打开弹框前先清空缓存,避免残留上次数据
+        this.rawDetailListCache = [];
+        this.outputDetailListCache = [];
         this.visible = true;
         if (this.enterprisePage.length == 0) {
           await this.getEnterprisePage();
@@ -2512,6 +2575,9 @@
         this.$emit('done');
       },
       cancel() {
+        // 先清空带料清单与产出清单的缓存,避免 nextTick 异步导致关闭事件再次触发时缓存残留
+        this.rawDetailListCache = [];
+        this.outputDetailListCache = [];
         this.$nextTick(() => {
           this.isFlag = false;
           // 关闭后,销毁所有的表单数据

+ 9 - 0
src/views/purchasingManage/purchaseOrder/components/inventoryTableNew.vue

@@ -1169,6 +1169,15 @@
         purchaseSinglePriceData: []
       };
     },
+    watch: {
+      // 数据变化时通知父组件同步缓存,避免切换订单类型时数据丢失
+      'form.datasource': {
+        handler(val) {
+          this.$emit('dataChange', val || []);
+        },
+        deep: true
+      }
+    },
     created() {
       this.requestDict('生产类型');
       this.requestDict('商品价格类型');

+ 2 - 2
src/views/saleManage/saleOrder/accountstatement/index.vue

@@ -113,7 +113,7 @@
             <!--              v-if="[2].includes(row.reviewStatus)">-->
             <!--              导出-->
             <!--            </el-link>-->
-            <el-link
+            <!-- <el-link
               size="small"
               type="primary"
               :underline="false"
@@ -134,7 +134,7 @@
               @click="handleAddInvoice(row)"
             >
               发票
-            </el-link>
+            </el-link> -->
           </template>
         </ele-pro-table>
       </div>

+ 13 - 5
src/views/saleManage/saleOrder/invoice/components/addInvoiceDialog.vue

@@ -71,14 +71,14 @@
             <el-input v-model="form.contactName" disabled></el-input>
           </el-form-item>
         </el-col>
-      </el-row>
-
-      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item label="客户联系人" prop="linkName">
             <el-input clearable v-model="form.linkName" placeholder="请输入" />
           </el-form-item>
         </el-col>
+      </el-row>
+
+      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item label="客户电话" prop="linkPhone">
             <el-input clearable v-model="form.linkPhone" placeholder="请输入" />
@@ -93,6 +93,8 @@
             />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item label="项目名称" prop="projectName">
             <el-input clearable v-model="form.projectName" :disabled="true" />
@@ -118,6 +120,8 @@
             </el-select>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item label="托盘数" prop="trayNum">
             <el-input clearable v-model="form.trayNum" />
@@ -128,6 +132,8 @@
             <el-input clearable v-model="form.printNo" />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row :gutter="12">
         <el-col :span="12" style="height: 40px">
           <el-form-item label="送货方式" prop="deliveryTypeId">
             <DictSelection
@@ -142,7 +148,6 @@
             </DictSelection>
           </el-form-item>
         </el-col>
-
         <el-col :span="12">
           <el-form-item label="回执要求" prop="receiptRequirementTypeId">
             <el-radio-group v-model="form.receiptRequirementTypeId">
@@ -155,18 +160,21 @@
             </el-radio-group>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item prop="sendFiles" label="发货附件">
             <fileMain v-model="form.sendFiles"></fileMain>
           </el-form-item>
         </el-col>
-
         <el-col :span="12">
           <el-form-item prop="repliedFiles" label="回执附件">
             <fileMain v-model="form.repliedFiles"></fileMain>
           </el-form-item>
         </el-col>
+      </el-row>
 
+      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item prop="makerName" label="制单人" v-if="form.makerName">
             <el-input disabled v-model="form.makerName" />