Parcourir la source

fix(财务模块): 修复发票金额计算错误并优化收款计划对话框

liujt il y a 4 mois
Parent
commit
a7f45952dd

+ 15 - 2
src/views/financialManage/collectionPlan/index.vue

@@ -133,6 +133,13 @@
     <invoiceDetailDialog ref="invoiceDetailDialogRef"></invoiceDetailDialog>
     <!-- 应收详情 -->
     <receivableOrderDetailDialog ref="receivableOrderDetailDialogRef" v-if="receivableOrderDetailDialogFlag" :detail-dialog-flag.sync="receivableOrderDetailDialogFlag"></receivableOrderDetailDialog>
+    
+    <collectionPlanDialog
+      ref="collectionPlanDialogRef"
+      v-if="collectionPlanDialogFlag"
+      :collectionPlanDialogFlag.sync="collectionPlanDialogFlag"
+      type="1"
+    ></collectionPlanDialog>
   </div>
 </template>
 
@@ -152,7 +159,7 @@ import drawer from '@/views/saleManage/saleOrder/components/drawer.vue'
 import contractDetailDialog from '@/views/contractManage/contractBook/components/detailDialog.vue';
 import invoiceDetailDialog from '@/views/financialManage/invoiceManage/components/detailDialog.vue';
 import receivableOrderDetailDialog from '@/views/financialManage/receivableManage/components/detailDialog.vue';
-
+import collectionPlanDialog from '@/views/financialManage/invoiceManage/components/collectionPlanDialog.vue'   // 收款计划列表
 export default {
   mixins: [dictMixins, tabMixins],
   components: {
@@ -162,7 +169,8 @@ export default {
     contractDetailDialog,
     invoiceDetailDialog,
     receivableOrderDetailDialog,
-    drawer
+    drawer,
+    collectionPlanDialog
   },
   data() {
     return {
@@ -173,6 +181,7 @@ export default {
       paymentStatus,
       invoiceStatusOp,
       receivableOrderDetailDialogFlag: false,
+      collectionPlanDialogFlag: false,
       tabOptions: [
         { key: 'collectionPlan', name: '收款计划管理', reminder: 'purchaseOrderNum' },
       ],
@@ -537,6 +546,10 @@ export default {
       this.$refs.table.reload({ page: 1, where });
     },
 
+    handleModal() {
+      this.collectionPlanDialogFlag = true;
+    },
+
     //新增编辑
     openEdit(type, row) {
       const select = []

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

@@ -712,7 +712,7 @@
         this.form.amount = this.form.receiptPayments.reduce((pre, cur) => {
           return pre + Number(cur.invoiceAmount);
         }, 0);
-        this.$refs.tableInfoRef.setSinglePrice(row, this.form.receiptPayments);
+        // this.$refs.tableInfoRef.setSinglePrice(row, this.form.receiptPayments);
       },
       //来源类型
       async handleSelectAccount(val) {
@@ -1087,7 +1087,7 @@
             remainingTotal -= allocateAmount;
           }
         });
-        
+        this.updateInvoiceAmount();
         console.log('分配完成后的 sameKeyItems:', sameKeyItems);
       },
 

+ 143 - 4
src/views/financialManage/invoiceManage/components/collectionPlanDialog.vue

@@ -11,7 +11,149 @@
     width="70%"
   >
     <el-card shadow="never">
-      <search @search="reload"></search>
+      <div>
+        <el-form label-width="90px" :inline="true">
+            <el-form-item>
+              <el-form-item
+                label="客户名称"
+              >
+                <el-select
+                  clearable
+                  v-model="customerName"
+                  placeholder="请选择"
+                  :filterable="true"
+                >
+                  <el-option
+                    label="1"
+                    value="1"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-form-item>
+      
+            <el-form-item>
+              <el-dropdown
+                ref="dropdownref"
+                trigger="click"
+                :hide-on-click="false"
+                v-model="dropdownVisible"
+                @keydown.enter.native.stop="search"
+              >
+                <div v-if="seekList.length > formLength">
+                  <span class="el-dropdown-link">
+                    更多选项<i class="el-icon-arrow-down el-icon--right"></i>
+                  </span>
+                  <el-dropdown-menu slot="dropdown">
+                    <div class="padding">
+                      <el-form label-position="left">
+                        <el-form-item
+                          v-for="(item, i) in deboListRow"
+                          :key="i"
+                          :inline="true"
+                          label-position="left"
+                        >
+                          <el-form-item
+                            :label-width="
+                              item.labelWidth ? item.labelWidth : '90' + 'px'
+                            "
+                            :inline="true"
+                            :label="item.label"
+                          >
+                            <div v-if="item.type == 'input'">
+                              <el-input
+                                clearable
+                                v-model="defaultWhere[item.value]"
+                                :placeholder="item.placeholder || '请输入内容'"
+                                :style="{
+                                  width: item.width ? item.width + 'px' : '220px'
+                                }"
+                                @keydown.enter.native="() => search()"
+                                @keyup.enter.native="() => search()"
+                              />
+                            </div>
+                            <div v-if="item.type == 'select'">
+                              <el-select
+                                clearable
+                                v-model="defaultWhere[item.value]"
+                                :multiple="item.multiple ? item.multiple : false"
+                                :filterable="item.filterable ? item.filterable : true"
+                                :placeholder="item.placeholder || '请输入内容'"
+                                :style="{
+                                  width: item.width ? item.width + 'px' : '220px'
+                                }"
+                                @visible-change="change"
+                                @change="handerChange"
+                              >
+                                <el-option
+                                  v-for="(op, i) in item.planList"
+                                  :label="op.label"
+                                  :value="op.value"
+                                  :key="i"
+                                ></el-option>
+                              </el-select>
+                            </div>
+      
+                            <div v-if="item.type == 'date'">
+                              <el-date-picker
+                                v-model="defaultWhere[item.value]"
+                                @blur="change"
+                                :type="item.dateType || 'daterange'"
+                                range-separator="至"
+                                start-placeholder="开始日期"
+                                end-placeholder="结束日期"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                :style="{
+                                  width: item.width ? item.width + 'px' : '220px'
+                                }"
+                              >
+                              </el-date-picker>
+                            </div>
+                            <div v-if="item.type == 'DictSelection'">
+                              <DictSelection
+                                v-model="defaultWhere[item.value]"
+                                :placeholder="item.placeholder || '请选择内容'"
+                                :multiple="item.multiple ? item.multiple : false"
+                                :style="{
+                                  width: item.width ? item.width + 'px' : '220px'
+                                }"
+                                :dictName="item.dictName"
+                              />
+                            </div>
+                            <div v-if="item.type == 'picker'">
+                              <el-date-picker
+                                v-model="defaultWhere[item.value]"
+                                @blur="change"
+                                value-format="yyyy-MM-dd"
+                                :style="{
+                                  width: item.width ? item.width + 'px' : '220px'
+                                }"
+                              >
+                              </el-date-picker>
+                            </div>
+                          </el-form-item>
+                        </el-form-item>
+                      </el-form>
+                    </div>
+                  </el-dropdown-menu>
+                </div>
+              </el-dropdown>
+            </el-form-item>
+      
+            <el-form-item>
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                class="ele-btn-icon"
+                @click="search"
+              >
+                查询
+              </el-button>
+              <el-button @click="reset" icon="el-icon-refresh-left" type="primary"
+                >重置</el-button
+              >
+            </el-form-item>
+          </el-form>
+      </div>
       <ele-pro-table
         ref="table"
         :columns="columns"
@@ -50,15 +192,12 @@
 <script>
   import dictMixins from '@/mixins/dictMixins';
   import tabMixins from '@/mixins/tableColumnsMixin';
-  import search from '@/views/financialManage/collectionPlan/components/searchTable.vue';
-  import { getAccountstatementList } from '@/api/saleManage/accountstatement';
   import accountInfoDialog from './accountInfoDialog.vue';
   import { shippingModeOp, transactionMethodsOp, paymentStatus, paymentType, invoiceStatusOp } from '@/enum/dict.js';
   import { receiptPaymentPlanPage } from '@/api/financialManage/payAndCollectPlan';
   export default {
     mixins: [dictMixins, tabMixins],
     components: {
-      search,
       accountInfoDialog
     },
     props: {

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

@@ -328,7 +328,7 @@
     computed: {
       totalAmountTotalPrice() {
         return this.tableForm.detailList.reduce((total, item) => {
-          return total + (parseFloat(item.amountTotalPrice) || 0);
+          return total + (parseFloat(item.invoiceAmount) || 0);
         }, 0);
       }
     },