فهرست منبع

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

QuYueTing 7 ماه پیش
والد
کامیت
ce7836d911
14فایلهای تغییر یافته به همراه389 افزوده شده و 174 حذف شده
  1. 1 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractController.java
  2. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractPayCustomizedController.java
  3. 19 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractPaymentController.java
  4. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Contract.java
  5. 1 43
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractCustom.java
  6. 99 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractPayCustomized.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ContractPayCustomizedMapper.java
  8. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractPayCustomizedService.java
  9. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractService.java
  10. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractPayCustomizedServiceImpl.java
  11. 59 27
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java
  12. 1 8
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractCustomMapper.xml
  13. 25 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractPayCustomizedMapper.xml
  14. 107 90
      fhKeeper/formulahousekeeper/timesheet/src/views/contract/components/customContract.vue

+ 1 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractController.java

@@ -2,10 +2,7 @@ package com.management.platform.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Contract;
-import com.management.platform.entity.ContractCustom;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.User;
+import com.management.platform.entity.*;
 import com.management.platform.mapper.ProjectMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ContractService;

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractPayCustomizedController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-09-23
+ */
+@RestController
+@RequestMapping("/contract-pay-customized")
+public class ContractPayCustomizedController {
+
+}
+

+ 19 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractPaymentController.java

@@ -2,14 +2,19 @@ package com.management.platform.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.ContractPayCustomized;
 import com.management.platform.entity.ContractPayment;
+import com.management.platform.entity.User;
+import com.management.platform.service.ContractPayCustomizedService;
 import com.management.platform.service.ContractPaymentService;
+import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -26,10 +31,22 @@ public class ContractPaymentController {
     @Resource
     private ContractPaymentService contractPaymentService;
 
+    @Resource
+    private UserService userService;
+
+    @Resource
+    private ContractPayCustomizedService payCustomizedService;
+
     @RequestMapping("/getList")
-    public HttpRespMsg getList(Integer contractId) {
+    public HttpRespMsg getList(HttpServletRequest request,Integer contractId) {
         HttpRespMsg msg = new HttpRespMsg();
-        msg.data = contractPaymentService.list(new QueryWrapper<ContractPayment>().eq("contract_id", contractId));
+        String token = request.getHeader("token");
+        User user = userService.getById(token);
+        if (user.getCompanyId()!=4215){
+            msg.data = contractPaymentService.list(new QueryWrapper<ContractPayment>().eq("contract_id", contractId));
+        }else {
+            msg.data = payCustomizedService.list(new QueryWrapper<ContractPayCustomized>().eq("contract_id", contractId));
+        }
         return msg;
     }
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Contract.java

@@ -163,6 +163,9 @@ public class Contract extends Model<Contract> {
     @TableField(exist = false)
     public ContractCustom customData;
 
+    @TableField(exist = false)
+    public ContractPayCustomized payCustomizedData;
+
     /**
      * 二级分类id
      */

+ 1 - 43
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractCustom.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2024-09-10
+ * @since 2024-09-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -102,48 +102,6 @@ public class ContractCustom extends Model<ContractCustom> {
     @TableField("currency")
     private String currency;
 
-    /**
-     * 已付款金额(元)
-     */
-    @TableField("payed_amount")
-    private BigDecimal payedAmount;
-
-    /**
-     * 付款类型:1-预付,2-报账
-     */
-    @TableField("pay_way")
-    private Integer payWay;
-
-    /**
-     * 凭证号
-     */
-    @TableField("bill_number")
-    private String billNumber;
-
-    /**
-     * 已冲销金额
-     */
-    @TableField("reserved_amounts")
-    private BigDecimal reservedAmounts;
-
-    /**
-     * 冲销凭证号
-     */
-    @TableField("reserved_bill_number")
-    private String reservedBillNumber;
-
-    /**
-     * 付款总金额
-     */
-    @TableField("total_payed_amounts")
-    private BigDecimal totalPayedAmounts;
-
-    /**
-     * 待付款金额
-     */
-    @TableField("pending_amounts")
-    private BigDecimal pendingAmounts;
-
     /**
      * 合同状态(是否结清):1-履约中,2-履约结束
      */

+ 99 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractPayCustomized.java

@@ -0,0 +1,99 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-09-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractPayCustomized extends Model<ContractPayCustomized> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同id
+     */
+    @TableId("contract_id")
+    private Integer contractId;
+
+    /**
+     * 付款日期
+     */
+    @TableField("pay_date")
+    private String payDate;
+
+    /**
+     * 已付款金额(元)
+     */
+    @TableField("payed_amount")
+    private BigDecimal payedAmount;
+
+    /**
+     * 付款类型:1-预付,2-报账
+     */
+    @TableField("pay_way")
+    private Integer payWay;
+
+    /**
+     * 凭证号
+     */
+    @TableField("bill_number")
+    private String billNumber;
+
+    /**
+     * 已冲销金额
+     */
+    @TableField("reserved_amounts")
+    private BigDecimal reservedAmounts;
+
+    /**
+     * 冲销凭证号
+     */
+    @TableField("reserved_bill_number")
+    private String reservedBillNumber;
+
+    /**
+     * 付款总金额
+     */
+    @TableField("total_payed_amounts")
+    private BigDecimal totalPayedAmounts;
+
+    /**
+     * 待付款金额
+     */
+    @TableField("pending_amounts")
+    private BigDecimal pendingAmounts;
+
+    /**
+     * 是否已付款
+     */
+    @TableField("is_payed")
+    private Boolean isPayed;
+
+    /**
+     * 付款类型:0报账,1预付
+     */
+    @TableField("pay_type")
+    private Boolean payType;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.contractId;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ContractPayCustomizedMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ContractPayCustomized;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-09-23
+ */
+public interface ContractPayCustomizedMapper extends BaseMapper<ContractPayCustomized> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractPayCustomizedService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ContractPayCustomized;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-09-23
+ */
+public interface ContractPayCustomizedService extends IService<ContractPayCustomized> {
+
+}

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractService.java

@@ -3,6 +3,7 @@ package com.management.platform.service;
 import com.management.platform.entity.Contract;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.management.platform.entity.ContractCustom;
+import com.management.platform.entity.ContractPayCustomized;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractPayCustomizedServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ContractPayCustomized;
+import com.management.platform.mapper.ContractPayCustomizedMapper;
+import com.management.platform.service.ContractPayCustomizedService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-09-23
+ */
+@Service
+public class ContractPayCustomizedServiceImpl extends ServiceImpl<ContractPayCustomizedMapper, ContractPayCustomized> implements ContractPayCustomizedService {
+
+}

+ 59 - 27
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java

@@ -10,6 +10,7 @@ import com.management.platform.entity.vo.ContractPageVO;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.ContractDocumentService;
+import com.management.platform.service.ContractPayCustomizedService;
 import com.management.platform.service.ContractService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.service.ExcelExportService;
@@ -56,6 +57,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     @Resource
     private ContractCustomMapper contractCustomMapper;
     @Resource
+    private ContractPayCustomizedMapper payCustomizedMapper;
+    @Resource
     private ContractMapper contractMapper;
     @Resource
     private ContractPaymentMapper contractPaymentMapper;
@@ -364,17 +367,32 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
 
 
         if (StringUtils.isNotBlank(paymentListStr)){
-            List<ContractPayment> contractPaymentList = JSON.parseArray(paymentListStr, ContractPayment.class);
-            BigDecimal bg = new BigDecimal("0");
-            for (ContractPayment contractPayment:contractPaymentList) {
-                contractPayment.setContractId(contract.getId());
-                contractPaymentMapper.insert(contractPayment);
-                if (contractPayment.getIsPayed()) {
-                    bg = bg.add(contractPayment.getAmount());
+            if (user.getCompanyId()==4215){
+                List<ContractPayCustomized> payCustomizedList = JSON.parseArray(paymentListStr, ContractPayCustomized.class);
+                BigDecimal bg = new BigDecimal("0");
+                for (ContractPayCustomized payCustomized:payCustomizedList) {
+                    payCustomized.setContractId(contract.getId());
+                    payCustomizedMapper.insert(payCustomized);
+                    if (payCustomized.getIsPayed()) {
+                        bg = bg.add(payCustomized.getPayedAmount());
+                    }
                 }
+                contract.setPayment(bg);
+                contractMapper.updateById(contract);
+            }else {
+                List<ContractPayment> contractPaymentList = JSON.parseArray(paymentListStr, ContractPayment.class);
+                BigDecimal bg = new BigDecimal("0");
+                for (ContractPayment contractPayment:contractPaymentList) {
+                    contractPayment.setContractId(contract.getId());
+                    contractPaymentMapper.insert(contractPayment);
+                    if (contractPayment.getIsPayed()) {
+                        bg = bg.add(contractPayment.getAmount());
+                    }
+                }
+                contract.setPayment(bg);
+                contractMapper.updateById(contract);
             }
-            contract.setPayment(bg);
-            contractMapper.updateById(contract);
+
         }
 
         ContractLog contractLog = new ContractLog();
@@ -437,17 +455,31 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
             contract.setIndate(null);
             //更新回款计划
             if (StringUtils.isNotBlank(paymentListStr)){
-                List<ContractPayment> contractPaymentList = JSON.parseArray(paymentListStr, ContractPayment.class);
-                contractPaymentMapper.delete(new QueryWrapper<ContractPayment>().eq("contract_id",contract.getId()));
-                BigDecimal bg = new BigDecimal("0");
-                for (ContractPayment contractPayment:contractPaymentList) {
-                    contractPaymentMapper.insert(contractPayment);
-                    if (contractPayment.getIsPayed()) {
-                        bg = bg.add(contractPayment.getAmount());
+                if (user.getCompanyId()==4215){
+                    List<ContractPayCustomized> payCustomizedList = JSON.parseArray(paymentListStr, ContractPayCustomized.class);
+                    payCustomizedMapper.delete(new QueryWrapper<ContractPayCustomized>().eq("contract_id",contract.getId()));
+                    BigDecimal bg = new BigDecimal("0");
+                    for (ContractPayCustomized payCustomized:payCustomizedList) {
+                        payCustomized.setContractId(contract.getId());
+                        payCustomizedMapper.insert(payCustomized);
+                        if (payCustomized.getIsPayed()) {
+                            bg = bg.add(payCustomized.getPayedAmount());
+                        }
+                    }
+                    contract.setPayment(bg);
+                }else {
+                    List<ContractPayment> contractPaymentList = JSON.parseArray(paymentListStr, ContractPayment.class);
+                    contractPaymentMapper.delete(new QueryWrapper<ContractPayment>().eq("contract_id",contract.getId()));
+                    BigDecimal bg = new BigDecimal("0");
+                    for (ContractPayment contractPayment:contractPaymentList) {
+                        contractPaymentMapper.insert(contractPayment);
+                        if (contractPayment.getIsPayed()) {
+                            bg = bg.add(contractPayment.getAmount());
+                        }
                     }
+                    System.out.println("回款金额: " + bg);
+                    contract.setPayment(bg);
                 }
-                System.out.println("回款金额: " + bg);
-                contract.setPayment(bg);
             }
             contractMapper.updateById(contract);
             boolean flag = false;
@@ -809,18 +841,18 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
                 customItem.setCurrency(row.getCell(19)==null?null:row.getCell(19).getStringCellValue());
 
                 String s = row.getCell(20) == null ? null : row.getCell(20).getStringCellValue();
-                if (StringUtils.isNotBlank(s)){
+                /*if (StringUtils.isNotBlank(s)){
                     customItem.setPayedAmount(new BigDecimal(s));
-                }
+                }*/
                 String s1 = (row.getCell(21) == null) ? null : row.getCell(21).getStringCellValue();
-                if (StringUtils.isNotBlank(s1)){
+                /*if (StringUtils.isNotBlank(s1)){
                     if ("预付".equals(s1)) {
                         customItem.setPayWay(1);
                     } else {
                         customItem.setPayWay(2);
                     }
-                }
-                customItem.setBillNumber(row.getCell(22)==null?null:row.getCell(22).getStringCellValue());
+                }*/
+                /*customItem.setBillNumber(row.getCell(22)==null?null:row.getCell(22).getStringCellValue());
                 String s2 = row.getCell(23) == null ? null : row.getCell(23).getStringCellValue();
                 if (StringUtils.isNotBlank(s2)){
                     customItem.setReservedAmounts(new BigDecimal(s2));
@@ -833,8 +865,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
                 String s4 = row.getCell(26) == null ? null : row.getCell(26).getStringCellValue();
                 if (StringUtils.isNotBlank(s4)){
                     customItem.setPendingAmounts(new BigDecimal(s4));
-                }
-                String status = row.getCell(27)==null?null:row.getCell(27).getStringCellValue();
+                }*/
+                String status = row.getCell(20)==null?null:row.getCell(20).getStringCellValue();
                 if (StringUtils.isNotBlank(status)){
                     if ("履约中".equals(status)) {
                         customItem.setFinishStatus(1);
@@ -842,8 +874,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
                         customItem.setFinishStatus(2);
                     }
                 }
-                String remarks = row.getCell(28)==null?null:row.getCell(28).getStringCellValue();
-                customItem.setStampDutyItems(row.getCell(29)==null?null:row.getCell(29).getStringCellValue());
+                String remarks = row.getCell(21)==null?null:row.getCell(21).getStringCellValue();
+                customItem.setStampDutyItems(row.getCell(22)==null?null:row.getCell(22).getStringCellValue());
                 Contract item = new Contract();
                 //检查合同编号是否存在
                 if (StringUtils.isNotBlank(No)){

+ 1 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractCustomMapper.xml

@@ -17,20 +17,13 @@
         <result column="tax_rate" property="taxRate" />
         <result column="amounts_no_tax" property="amountsNoTax" />
         <result column="currency" property="currency" />
-        <result column="payed_amount" property="payedAmount" />
-        <result column="pay_way" property="payWay" />
-        <result column="bill_number" property="billNumber" />
-        <result column="reserved_amounts" property="reservedAmounts" />
-        <result column="reserved_bill_number" property="reservedBillNumber" />
-        <result column="total_payed_amounts" property="totalPayedAmounts" />
-        <result column="pending_amounts" property="pendingAmounts" />
         <result column="finish_status" property="finishStatus" />
         <result column="stamp_duty_items" property="stampDutyItems" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        contract_id, customer_org, customer_contact, customer_phone, use_department, funds_source, undertaker, agent, sign_date, filings_date, tax_rate, amounts_no_tax, currency, payed_amount, pay_way, bill_number, reserved_amounts, reserved_bill_number, total_payed_amounts, pending_amounts, finish_status, stamp_duty_items
+        contract_id, customer_org, customer_contact, customer_phone, use_department, funds_source, undertaker, agent, sign_date, filings_date, tax_rate, amounts_no_tax, currency, finish_status, stamp_duty_items
     </sql>
 
 </mapper>

+ 25 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractPayCustomizedMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ContractPayCustomizedMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ContractPayCustomized">
+        <id column="contract_id" property="contractId" />
+        <result column="pay_date" property="payDate" />
+        <result column="payed_amount" property="payedAmount" />
+        <result column="pay_way" property="payWay" />
+        <result column="bill_number" property="billNumber" />
+        <result column="reserved_amounts" property="reservedAmounts" />
+        <result column="reserved_bill_number" property="reservedBillNumber" />
+        <result column="total_payed_amounts" property="totalPayedAmounts" />
+        <result column="pending_amounts" property="pendingAmounts" />
+        <result column="is_payed" property="isPayed" />
+        <result column="pay_type" property="payType" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        contract_id, pay_date, payed_amount, pay_way, bill_number, reserved_amounts, reserved_bill_number, total_payed_amounts, pending_amounts, is_payed, pay_type
+    </sql>
+
+</mapper>

+ 107 - 90
fhKeeper/formulahousekeeper/timesheet/src/views/contract/components/customContract.vue

@@ -96,8 +96,8 @@
       <el-table-column prop="useDepartment" label="使用部门" min-width="190"></el-table-column>
       <el-table-column prop="fundsSource" label="经费来源" min-width="190">
         <template slot-scope="scope">
-          <span v-if="scope.row.payWay == 1">科研</span>
-          <span v-if="scope.row.payWay == 2">其他(专项等)</span>
+          <span v-if="scope.row.fundsSource == 1">科研</span>
+          <span v-if="scope.row.fundsSource == 2">其他(专项等)</span>
         </template>
       </el-table-column>
       <el-table-column prop="undertaker" label="合同承办人" min-width="190"></el-table-column>
@@ -114,18 +114,6 @@
       </el-table-column>
       <el-table-column prop="amountsNoTax" label="合同金额(元)/不含税价" min-width="190"></el-table-column>
       <el-table-column prop="currency" label="币种" min-width="190"></el-table-column>
-      <el-table-column prop="payedAmount" label="已付款金额(元)" min-width="190"></el-table-column>
-      <el-table-column prop="payWay" label="付款类型" min-width="190">
-        <template slot-scope="scope">
-          <span v-if="scope.row.payWay == 1">预付</span>
-          <span v-if="scope.row.payWay == 2">报账</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="billNumber" label="凭证号" min-width="190"></el-table-column>
-      <el-table-column prop="reservedAmounts" label="已冲销金额" min-width="190"></el-table-column>
-      <el-table-column prop="reservedBillNumber" label="冲销凭证号" min-width="190"></el-table-column>
-      <el-table-column prop="totalPayedAmounts" label="付款总金额" min-width="190"></el-table-column>
-      <el-table-column prop="pendingAmounts" label="待付款金额" min-width="190"></el-table-column>
       <el-table-column prop="finishStatus" label="合同状态(是否结清)" min-width="190">
         <template slot-scope="scope">
           <span v-if="scope.row.finishStatus == 1">履约中</span>
@@ -157,7 +145,7 @@
       ></el-pagination>
     </el-col>
 
-    <el-dialog :title="dialogTitle + $t('he-tong')" :visible.sync="addDialog" v-if="addDialog" :close-on-click-modal="false" customClass="customWidth" width="900px" :top="'7.8vh'">
+    <el-dialog :title="dialogTitle + $t('he-tong')" :visible.sync="addDialog" v-if="addDialog" :close-on-click-modal="false" customClass="customWidth" width="1200px" :top="'7.8vh'">
       <div style="height: 72vh;overflow-y: auto;overflow-x: hidden;">
         <el-form ref="contractForm" :model="contractForm" label-width="160px" :rules="rules" class="contractForm">
           <el-form-item :label="$t('contractno')">
@@ -242,7 +230,7 @@
             <el-date-picker v-model="contractForm.filingsDate" value-format="yyyy-MM-dd" type="date" :placeholder="$t('optiondate')"></el-date-picker>
           </el-form-item>
           <el-form-item label="合同金额(元)/含税价">
-            <el-input v-model="contractForm.amounts" :placeholder="$t('peaseenterthe')" clearable>
+            <el-input v-model="contractForm.amounts" :placeholder="$t('peaseenterthe')" @change="chgPayedAmount()" clearable>
               <span slot="prefix">¥</span>
             </el-input>
           </el-form-item>
@@ -259,38 +247,6 @@
           <el-form-item label="币种">
             <el-input v-model="contractForm.currency" :placeholder="$t('peaseenterthe')" clearable></el-input>
           </el-form-item>
-          <el-form-item label="已付款金额(元)">
-            <el-input v-model="contractForm.payedAmount" :placeholder="$t('peaseenterthe')" clearable>
-              <span slot="prefix">¥</span>
-            </el-input>
-          </el-form-item>
-          <el-form-item label="付款类型">
-            <el-select v-model="contractForm.payWay" placeholder="请选择">
-              <el-option label="付款" :value="1"></el-option>
-              <el-option label="报账" :value="2"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="凭证号">
-            <el-input v-model="contractForm.billNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
-          </el-form-item>
-          <el-form-item label="已冲销金额">
-            <el-input v-model="contractForm.reservedAmounts" :placeholder="$t('peaseenterthe')" clearable>
-              <span slot="prefix">¥</span>
-            </el-input>
-          </el-form-item>
-          <el-form-item label="冲销凭证号">
-            <el-input v-model="contractForm.reservedBillNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
-          </el-form-item>
-          <el-form-item label="付款总金额">
-            <el-input v-model="contractForm.totalPayedAmounts" :placeholder="$t('peaseenterthe')" clearable>
-              <span slot="prefix">¥</span>
-            </el-input>
-          </el-form-item>
-          <el-form-item label="待付款金额">
-            <el-input v-model="contractForm.pendingAmounts" :placeholder="$t('peaseenterthe')" clearable>
-              <span slot="prefix">¥</span>
-            </el-input>
-          </el-form-item>
           <el-form-item label="合同状态(是否结清)">
             <el-select v-model="contractForm.finishStatus" placeholder="请选择">
               <el-option label="履约中" :value="1"></el-option>
@@ -304,9 +260,53 @@
             <el-input v-model="contractForm.remarks" :disabled="contractForm.status == 0" :placeholder="$t('peaseenterthe')" type="textarea" :rows="3" clearable></el-input>
           </el-form-item>
 
-          <el-form-item :label="$t('hui-kuan-ji-hua')">
+          <el-form-item label="付款计划">
             <el-table :data="contractPaymentList" size="small" :key="Math.random()" :height="'300px'" show-header="false" style="margin-top:10px;">
-                  <el-table-column prop="isPayed" >
+              <el-table-column prop="isPayed" width="120">
+                  <template slot-scope="scope">
+                      <el-checkbox v-model="scope.row.isPayed" >已付款</el-checkbox>
+                  </template>
+                  <template slot="header" >
+                      <span style="font-size:14px;font-weight:normal;">是否已付款</span>
+                  </template>
+              </el-table-column>
+                <el-table-column prop="payDate" label="付款日期" width="150">
+                  <template slot-scope="scope">
+                      <div><el-date-picker type="date" v-model="scope.row.payDate" style="width:140px;" :placeholder="$t('optiondate')" value-format="yyyy-MM-dd" size="small"></el-date-picker></div>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="payedAmount" label="已付款金额(元)" width="160">
+                  <template slot-scope="scope">
+                    <el-input-number v-model="scope.row.payedAmount" controls-position="right" @change="chgPayedAmount()" :min="0" size="small" :precision="2"></el-input-number>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="payType" label="付款类型" width="140">
+                  <template slot-scope="scope">
+                    <el-select v-model="scope.row.payType" placeholder="请选择" size="small">
+                      <el-option label="预付" :value="1"></el-option>
+                      <el-option label="报账" :value="2"></el-option>
+                    </el-select>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="billNumber" label="凭证号" width="210">
+                  <template slot-scope="scope">
+                    <el-input v-model="scope.row.billNumber" :placeholder="$t('peaseenterthe')" clearable  size="small"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="pendingAmounts" label="待付款金额(元)" width="210">
+                  <template slot-scope="scope">
+                    {{ scope.row.pendingAmounts }}
+                  </template>
+                </el-table-column>
+                <el-table-column width="80" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button icon="el-icon-delete" size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.$index)"></el-button>
+                    </template>
+                    <template slot="header" >
+                        <el-link type="primary" :underline="false" @click="addItem">{{ $t('addTian') }}</el-link>
+                    </template>
+                </el-table-column>
+                  <!-- <el-table-column prop="isPayed" >
                       <template slot-scope="scope">
                           <el-checkbox v-model="scope.row.isPayed" >{{ $t('yi-hui-kuan') }}</el-checkbox>
                       </template>
@@ -334,7 +334,7 @@
                       <template slot="header" >
                           <el-link type="primary" :underline="false" @click="addItem">{{ $t('addTian') }}</el-link>
                       </template>
-                  </el-table-column>
+                  </el-table-column> -->
               </el-table>
           </el-form-item>
           
@@ -374,7 +374,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog :title="$t('cha-kan-he-tong')" :visible.sync="lookoverDialog" v-if="lookoverDialog" :close-on-click-modal="false" customClass="customWidth" width="900px">
+    <el-dialog :title="$t('cha-kan-he-tong')" :visible.sync="lookoverDialog" v-if="lookoverDialog" :close-on-click-modal="false" customClass="customWidth" width="1200px" top="7.5vh">
       <div style="height: 72vh;overflow-y: auto;overflow-x: hidden;">
         <el-form label-width="160px" class="lookoverContract clearfix">
           <el-form-item :label="$t('contractno')">
@@ -454,25 +454,6 @@
           <el-form-item label="币种">
             {{contractForm.currency}}
           </el-form-item>
-          <el-form-item label="已付款金额(元)">
-            ¥ {{contractForm.payedAmount}}
-          </el-form-item>
-          <el-form-item label="付款类型">
-            <span v-if="contractForm.payWay">付款</span>
-            <span v-if="contractForm.payWay">报账</span>
-          </el-form-item>
-          <el-form-item label="凭证号">
-            {{contractForm.billNumber}}
-          </el-form-item>
-          <el-form-item label="已冲销金额">
-            ¥ {{contractForm.reservedAmounts}}
-          </el-form-item>
-          <el-form-item label="冲销凭证号">
-            {{contractForm.reservedBillNumber}}
-          </el-form-item>
-          <el-form-item label="付款总金额">
-            ¥ {{contractForm.totalPayedAmounts}}
-          </el-form-item>
           <el-form-item label="合同状态(是否结清)">
             <span v-if="contractForm.finishStatus == 1">履约中</span>
             <span v-else>履约完成</span>
@@ -484,27 +465,25 @@
           <el-form-item style="width:100%" :label="$t('bei-zhu')">
             {{contractForm.remarks}}
           </el-form-item>
-          <el-form-item style="width:100%" :label="$t('hui-kuan-ji-hua')">
+          <el-form-item style="width:100%" label="付款计划">
             <el-table :data="contractPaymentList" size="small" :key="Math.random()" :height="'300px'" show-header="false" style="margin-top:10px;">
                   <el-table-column prop="isPayed" >
                       <template slot-scope="scope">
-                        {{ scope.row.isPayed?$t('yi-hui-kuan'):$t('wei-hui-kuan') }}
+                        {{ scope.row.isPayed?'已付款':'未付款' }}
                       </template>
                       <template slot="header" >
-                          <span style="font-size:14px;font-weight:normal;">{{ $t('shi-fou-yi-hui-kuan') }}</span>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="payDate"  :label="$t('hui-kuan-ri-qi')" width="210">
-                      <template slot-scope="scope">
-                          <div>{{ scope.row.payDate }}</div>
+                          <span style="font-size:14px;font-weight:normal;">是否已付款</span>
                       </template>
                   </el-table-column>
-                  
-                  <el-table-column prop="amount" :label="$t('hui-kuan-jin-e')">
-                      <template slot-scope="scope">
-                        <div>{{ scope.row.amount }}</div>
-                      </template>
+                  <el-table-column prop="payDate" label="付款日期" width="150"></el-table-column>
+                  <el-table-column prop="payedAmount" label="已付款金额(元)" width="160"></el-table-column>
+                  <el-table-column prop="payType" label="付款类型" width="140">
+                    <template slot-scope="scope">
+                      {{scope.row.payType?'预付':'报账'}}
+                    </template>
                   </el-table-column>
+                  <el-table-column prop="billNumber" label="凭证号" width="210"></el-table-column>
+                  <el-table-column prop="pendingAmounts" label="待付款金额(元)" width="180"></el-table-column>
               </el-table>
           </el-form-item>
           
@@ -712,6 +691,23 @@ export default {
     //   console.log('test',row);
     //   // this.$refs.uploadFile.submit()
     // },
+    chgPayedAmount() {
+      const { amounts } = this.contractForm
+      const list = this.contractPaymentList || []
+      let totalNum = +amounts || 0
+      if(amounts <= 0 || list.length <= 0) {
+        return
+      }
+      
+      for(let i in list) {
+        if(list[i].payedAmount) {
+          totalNum = totalNum - list[i].payedAmount
+          list[i].pendingAmounts = totalNum
+        }
+      }
+
+      this.contractPaymentList = list
+    },
     restrictNumber(targetId) {
                 let inpu = document.getElementById(targetId);
                 inpu.value = inpu.value.replace(/[^\d.]/g, "");  //仅保留数字和"."
@@ -747,8 +743,20 @@ export default {
         },
         //添加合同回款情况
         addItem() {
-            let p = 0;
-            this.contractPaymentList.push( { contractId:this.contractForm.id, isPayed:false,payDate: null, amount:0.0});
+            // let p = 0;
+            // this.contractPaymentList.push( { contractId:this.contractForm.id, isPayed:false,payDate: null, amount:0.0});
+            
+            let val = {
+              contractId:this.contractForm.id, 
+              isPayed:false,
+              payDate: null,
+              payedAmount: 0,
+              payType: 1,
+              billNumber: '',
+              pendingAmounts: 0,
+            }
+
+            this.contractPaymentList.push(val)
         },
         
         getProjectList() {
@@ -1013,6 +1021,11 @@ export default {
       this.http.post('/contract-payment/getList',{contractId: this.contractForm.id},
       res => {
         if(res.code == 'ok'){
+          res.data = res.data.map(item => ({
+            ...item,
+            payType: item.payType ? 1 : 0
+          }));
+          console.log(res.data, '<==== 数据')
           this.contractPaymentList = res.data;
         }else{
           this.$message({
@@ -1158,14 +1171,14 @@ export default {
               })
               return;
             }
-            if (!this.contractPaymentList[i].amount) {
+            if (!this.contractPaymentList[i].payedAmount) {
               this.$message({
                 message: this.$t('hui-kuan-jinebu-neng-wei-0'),
                 type: 'error'
               })
               return;
             }
-            totalPayment += parseFloat(this.contractPaymentList[i].amount);
+            totalPayment += parseFloat(this.contractPaymentList[i].payedAmount);
           }
           if (totalPayment > parseFloat(this.contractForm.amounts)) {
             this.$message({
@@ -1177,11 +1190,16 @@ export default {
           this.submitLoading = true
           delete this.contractForm.files
           this.contractForm.paymentListStr = JSON.stringify(this.contractPaymentList);
+          delete this.contractForm.msg
+          delete this.contractForm.nextPaymentDate
+          delete this.contractForm.nextPaymentAmount
+          delete this.contractForm.payCustomizedData
+          delete this.contractForm.checkerId
           this.http.post(this.dialogTitle == this.$t('add') ? '/contract/addContract' : '/contract/editContract',this.contractForm,
           res => {
             this.submitLoading = false
-            this.addDialog = false
             if(res.code == 'ok'){
+              this.addDialog = false
               this.$message({
                 message: res.msg,
                 type: 'success'
@@ -1199,7 +1217,6 @@ export default {
             }
           },err => {
             this.submitLoading = false
-            this.addDialog = false
             this.$message({
               message: err,
               type: 'error'