Prechádzať zdrojové kódy

应收明细添加驳回功能/收款登记添加贴息相关字段

lph 1 rok pred
rodič
commit
d037584318

+ 9 - 0
zkqy-ui/src/api/system/SaleAccountsReceivableDetail.js

@@ -99,3 +99,12 @@ export function cancelBilling(data) {
   })
 }
 
+// 应收账  驳回
+export function rejectHandler(data) {
+  return request({
+    url: 'system/SaleAccountsReceivableDetail/reject',
+    method: 'post',
+    data: data
+  })
+}
+

+ 23 - 0
zkqy-ui/src/utils/other.js

@@ -104,3 +104,26 @@ export class numToCapital {
     return zh.charAt(a)
   }
 }
+/* 获取两个日期之间的天数 */
+export function calculateDaysBetweenDates(startDateStr, endDateStr) {
+  console.log(startDateStr, endDateStr);
+  // 将字符串转换为Date对象  
+  const startDate = new Date(startDateStr);
+  const endDate = new Date(endDateStr);
+  console.log(endDate, startDate);
+  // 检查日期是否有效  
+  if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
+    throw new Error('Invalid date string');
+  }
+
+  // 计算两个日期之间的毫秒差  
+  const diff = endDate - startDate;
+  console.log(diff);
+
+  // 将毫秒差转换为天数  
+  // 注意:这里我们使用了Math.abs来确保得到的是绝对值,即不考虑开始日期和结束日期的顺序  
+  // 如果你想要得到有方向的天数差(例如,开始日期到结束日期的天数差可能是正数,反之为负数),可以去掉Math.abs  
+  const daysBetween = Math.ceil(Math.abs(diff) / (1000 * 3600 * 24));
+
+  return daysBetween;
+}

+ 70 - 8
zkqy-ui/src/views/system/financialManage/receiveRecord.vue

@@ -276,6 +276,7 @@
           <el-col :span="12">
             <el-form-item label="收款日期" prop="collectionMoneyDate">
               <el-date-picker
+                @change="getInterestCountingDays"
                 clearable
                 v-model="form.collectionMoneyDate"
                 type="date"
@@ -316,7 +317,12 @@
           <el-col :span="12">
             <el-form-item label="付款方式" prop="paymentMethod">
               <!-- <el-input v-model="form.paymentMethod" placeholder="请输入付款方式" /> -->
-              <el-select v-model="form.paymentMethod" clearable filterable>
+              <el-select
+                v-model="form.paymentMethod"
+                clearable
+                filterable
+                @change="getInterestCountingDays"
+              >
                 <el-option
                   v-for="item in dict.type
                     .collection_registration_payment_method"
@@ -368,12 +374,36 @@
               <el-input v-model="form.remark" placeholder="请输入备注" />
             </el-form-item>
           </el-col>
-          <!-- <el-form-item label="记账标志" prop="bookkeepingFlag">
-            <el-input
-              v-model="form.bookkeepingFlag"
-              placeholder="请输入记账标志"
-            />
-          </el-form-item> -->
+          <el-col :span="24" v-show="form.paymentMethod == 4">
+            <el-divider direction="horizontal"></el-divider>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="贴  息" prop="interestSubsidy">
+              <el-input
+                v-model="form.interestSubsidy"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="票据到期日" prop="dueDate">
+              <el-date-picker
+                v-model="form.dueDate"
+                type="date"
+                placeholder="选择日期"
+                @change="getInterestCountingDays"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="计息天数" prop="interestCountingDays">
+              <el-input
+                v-model="form.interestCountingDays"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
         </el-form>
       </el-row>
       <el-dialog
@@ -488,6 +518,7 @@ import {
   deleteSettlementUnit,
 } from "@/api/system/SaleRegistrationCollection";
 import moment from "moment";
+import { calculateDaysBetweenDates } from "@/utils/other";
 
 export default {
   name: "SaleRegistrationCollection",
@@ -574,6 +605,32 @@ export default {
     this.initSelectData();
   },
   methods: {
+    // 获取计息天数
+    getInterestCountingDays() {
+      if (
+        this.form.paymentMethod == 4 &&
+        this.form.collectionMoneyDate &&
+        this.form.dueDate
+      ) {
+        console.log(
+          this.form.paymentMethod,
+          this.form.collectionMoneyDate,
+          this.form.dueDate
+        );
+        if (
+          new Date(this.form.collectionMoneyDate).getTime() >
+          new Date(this.form.dueDate).getTime()
+        ) {
+          this.form.interestCountingDays = 0;
+          this.$message.error("计息天数不能小于收款日期");
+        } else {
+          this.form.interestCountingDays = calculateDaysBetweenDates(
+            this.form.collectionMoneyDate,
+            this.form.dueDate
+          );
+        }
+      }
+    },
     // 日期范围改变回调
     timeRangeChange(val) {
       this.queryParams.startTime = moment(val[0]).format("YYYY-MM-DD");
@@ -788,7 +845,9 @@ export default {
         paymentMethod: null,
         amounts: null,
         collectionMoneyType: "货款",
-        collectionMoneyDate: new Date(),
+        collectionMoneyDate: new Date(
+          moment(new Date()).format("YYYY-MM-DD 00:00:00")
+        ),
         settlementUnitId: null,
         remark: null,
         bookkeepingFlag: null,
@@ -799,6 +858,9 @@ export default {
         updateById: null,
         updateTime: null,
         delFlag: null,
+        interestSubsidy: "0.00", //贴息
+        dueDate: null, //到期日
+        interestCountingDays: null, //计息天数
       };
       this.settlementUnitList = [];
       this.resetForm("form");

+ 37 - 7
zkqy-ui/src/views/system/financialManage/receiveRecordReview.vue

@@ -65,7 +65,7 @@
         >
         </el-date-picker> -->
         <el-date-picker
-        :unlink-panels="true"
+          :unlink-panels="true"
           v-model="timeRange"
           type="daterange"
           range-separator="至"
@@ -369,12 +369,38 @@
               />
             </el-form-item>
           </el-col>
-          <!-- <el-form-item label="记账标志" prop="bookkeepingFlag">
-            <el-input
-              v-model="form.bookkeepingFlag"
-              placeholder="请输入记账标志"
-            />
-          </el-form-item> -->
+          <el-col :span="24" v-show="form.paymentMethod == 4">
+            <el-divider direction="horizontal"></el-divider>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="贴  息" prop="interestSubsidy">
+              <el-input
+                disabled
+                v-model="form.interestSubsidy"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="票据到期日" prop="dueDate">
+              <el-date-picker
+                disabled
+                v-model="form.dueDate"
+                type="date"
+                placeholder="选择日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-show="form.paymentMethod == 4">
+            <el-form-item label="计息天数" prop="interestCountingDays">
+              <el-input
+                disabled
+                v-model="form.interestCountingDays"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
         </el-form>
       </el-row>
       <el-divider direction="horizontal" content-position="center"
@@ -772,6 +798,9 @@ export default {
         updateById: null,
         updateTime: null,
         delFlag: null,
+        interestSubsidy: "0.00", //贴息
+        dueDate: null, //到期日
+        interestCountingDays: null, //计息天数
       };
       this.settlementUnitList = [];
       this.resetForm("form");
@@ -844,6 +873,7 @@ export default {
               remark: this.currentRow.remark,
               collectionMoneyDate: this.currentRow.collectionMoneyDate,
               settlementUnitId: this.currentRow.settlementUnitId,
+              interestSubsidy: this.currentRow.interestSubsidy,
             };
             reviewApprovedPass(payLoad).then((response) => {
               if (response.code == 200) {

+ 47 - 4
zkqy-ui/src/views/system/financialManage/saleAccountsReceivableDetail.vue

@@ -41,7 +41,7 @@
         <el-col :span="10">
           <el-form-item label="日期范围" prop="startTime">
             <el-date-picker
-            :unlink-panels="true"
+              :unlink-panels="true"
               v-model="timeRange"
               type="daterange"
               range-separator="至"
@@ -229,6 +229,7 @@
       <el-table-column label="单价" align="center" prop="productPrice" />
       <el-table-column label="应收" align="center" prop="amountReceivable" />
       <el-table-column label="已收" align="center" prop="receivedAmount" />
+      <!-- <el-table-column label="贴息金额" align="center" prop="interestSubsidy" /> -->
       <el-table-column label="余额" align="center" prop="amounts" />
       <el-table-column label="付款方式" align="center" prop="paymentMethod">
         <template slot-scope="scope">{{
@@ -322,7 +323,7 @@
           </span>
         </template>
       </el-table-column>
-      <!-- <el-table-column
+      <el-table-column
         label="操作"
         align="center"
         class-name="small-padding fixed-width"
@@ -333,18 +334,26 @@
               操作<i class="el-icon-arrow-down el-icon--right"></i>
             </el-button>
             <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item
+              <!-- <el-dropdown-item
                 ><el-button
                   size="mini"
                   type="text"
                   @click="handlerReceipt(scope.row.id)"
                   >回 单</el-button
                 ></el-dropdown-item
+              > -->
+              <el-dropdown-item v-show="scope.row.accountingType == 3"
+                ><el-button
+                  size="mini"
+                  type="text"
+                  @click="handlerReturn(scope.row)"
+                  >驳 回</el-button
+                ></el-dropdown-item
               >
             </el-dropdown-menu>
           </el-dropdown>
         </template>
-      </el-table-column> -->
+      </el-table-column>
     </el-table>
 
     <pagination
@@ -772,6 +781,7 @@ import {
   updateSaleAccountsReceivableDetail,
   addBilling,
   cancelBilling,
+  rejectHandler,
 } from "@/api/system/SaleAccountsReceivableDetail";
 import {
   getCustomList,
@@ -915,6 +925,39 @@ export default {
     }),
   },
   methods: {
+    // 驳回回调
+    handlerReturn(row) {
+      this.$confirm("是否确认驳回?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          try {
+            let payload = {
+              status: 3,
+              id: row.id,
+              otherCollectionId: row.otherCollectionId,
+              customerId: row.customerId,
+            };
+            let res = await rejectHandler(payload);
+            if (res.code == 200) {
+              this.$message.success("驳回成功!");
+              this.getList();
+            } else {
+              throw new Error(res.msg);
+            }
+          } catch (error) {
+            this.$message.error(error);
+          }
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消驳回",
+          });
+        });
+    },
     // 确认开票
     submitBillingForm() {
       this.$refs["billingForm"].validate((valid) => {