24282 11 ay önce
ebeveyn
işleme
99158cd299
24 değiştirilmiş dosya ile 1608 ekleme ve 0 silme
  1. 71 0
      jy-business/src/main/java/com/jy/business/payment/controller/PaymentRequestsController.java
  2. 79 0
      jy-business/src/main/java/com/jy/business/payment/dao/PaymentRequestsDao.java
  3. 20 0
      jy-business/src/main/java/com/jy/business/payment/dao/PaymentRequestsDetailDao.java
  4. 16 0
      jy-business/src/main/java/com/jy/business/payment/mapper/PaymentRequestsDetailMapper.java
  5. 16 0
      jy-business/src/main/java/com/jy/business/payment/mapper/PaymentRequestsMapper.java
  6. 5 0
      jy-business/src/main/java/com/jy/business/payment/mapper/xml/PaymentRequestsDetailMapper.xml
  7. 5 0
      jy-business/src/main/java/com/jy/business/payment/mapper/xml/PaymentRequestsMapper.xml
  8. 17 0
      jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDetailDto.java
  9. 17 0
      jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDetailSelectDto.java
  10. 17 0
      jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDto.java
  11. 22 0
      jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsSelectDto.java
  12. 137 0
      jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequests.java
  13. 77 0
      jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequestsDetail.java
  14. 74 0
      jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsDetailTable.java
  15. 134 0
      jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsTable.java
  16. 17 0
      jy-business/src/main/java/com/jy/business/payment/model/vo/PaymentRequestsDetailVo.java
  17. 37 0
      jy-business/src/main/java/com/jy/business/payment/model/vo/PaymentRequestsVo.java
  18. 15 0
      jy-business/src/main/java/com/jy/business/payment/service/PaymentRequestsDetailService.java
  19. 45 0
      jy-business/src/main/java/com/jy/business/payment/service/PaymentRequestsService.java
  20. 22 0
      jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsDetailServiceImpl.java
  21. 58 0
      jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsServiceImpl.java
  22. 27 0
      jy-ui/src/api/business/payment/requests.ts
  23. 479 0
      jy-ui/src/views/business/payment/requests/index.vue
  24. 201 0
      jy-ui/src/views/business/payment/requests/managePanel.vue

+ 71 - 0
jy-business/src/main/java/com/jy/business/payment/controller/PaymentRequestsController.java

@@ -0,0 +1,71 @@
+package com.jy.business.payment.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.payment.model.dto.PaymentRequestsDto;
+import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
+import com.jy.business.payment.model.vo.PaymentRequestsVo;
+import com.jy.business.payment.service.PaymentRequestsService;
+import com.jy.framework.model.base.BaseSelectDto;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 请款 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@RestController
+@RequestMapping("/paymentRequests")
+public class PaymentRequestsController {
+
+    @Resource
+    private PaymentRequestsService paymentRequestsService;
+
+    /**
+     * 请款分页
+     */
+    @GetMapping("/getPage")
+    public Page<PaymentRequestsVo> getPage(PaymentRequestsSelectDto dto) {
+        return paymentRequestsService.getPage(dto);
+    }
+
+    /**
+     * 请款明细
+     */
+    @GetMapping("/getDetail")
+    public PaymentRequestsVo getDetail(BaseSelectDto dto) {
+        return paymentRequestsService.getDetail(dto.getId());
+    }
+
+    /**
+     * 请款新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody PaymentRequestsDto dto) {
+        paymentRequestsService.add(dto);
+    }
+
+    /**
+     * 请款编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody PaymentRequestsDto dto) {
+        paymentRequestsService.edit(dto);
+    }
+
+    /**
+     * 请款删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        paymentRequestsService.delete(dto.getIdList());
+    }
+
+}

+ 79 - 0
jy-business/src/main/java/com/jy/business/payment/dao/PaymentRequestsDao.java

@@ -0,0 +1,79 @@
+package com.jy.business.payment.dao;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.model.table.CapitalAccountTable;
+import com.jy.business.corporation.model.table.CorporationTable;
+import com.jy.business.payment.mapper.PaymentRequestsMapper;
+import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
+import com.jy.business.payment.model.entity.PaymentRequests;
+import com.jy.business.payment.model.table.PaymentRequestsTable;
+import com.jy.business.payment.model.vo.PaymentRequestsVo;
+import com.jy.framework.model.base.BaseDao;
+import com.jy.system.model.entity.SysDept;
+import com.jy.system.model.table.SysDeptTable;
+import com.jy.system.model.table.SysUserTable;
+import com.jy.system.service.AuthService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PaymentRequestsDao extends BaseDao<PaymentRequestsMapper, PaymentRequests> {
+
+    @Resource
+    private AuthService authService;
+
+    /**
+     * 请款分页
+     */
+    public Page<PaymentRequestsVo> getPage(PaymentRequestsSelectDto dto) {
+        PaymentRequestsTable pr = PaymentRequestsTable.pr;
+
+        // 公司信息
+        CorporationTable c = CorporationTable.c;
+        // 部门
+        SysDeptTable sd = SysDeptTable.sd;
+        // 用户
+        SysUserTable su = SysUserTable.su;
+        // 资金账户
+        CapitalAccountTable ca = CapitalAccountTable.ca;
+
+        return sql(PaymentRequestsVo.class)
+                .select(
+                        pr.all,
+                        c.name.as(PaymentRequestsVo::getCorporationName),
+                        sd.name.as(PaymentRequestsVo::getDeptName),
+                        su.nickname.as(PaymentRequestsVo::getUserName),
+                        ca.accountAlias.as(PaymentRequestsVo::getCapitalAccountName)
+                )
+                .from(pr)
+                .leftJoin(c).on(pr.corporationId.eq(c.id))
+                .leftJoin(sd).on(pr.deptId.eq(sd.id))
+                .leftJoin(su).on(pr.createUser.eq(su.id))
+                .leftJoin(ca).on(pr.capitalAccountId.eq(ca.id))
+                .where(
+                        pr.createUser.in(authService.getUserPermissionSet())
+                )
+                .orderBy(
+                        pr.id.desc()
+                )
+                .page(dto.getPage());
+    }
+
+    /**
+     * 请款明细
+     */
+    public PaymentRequestsVo getDetail(Long id) {
+        PaymentRequestsTable pr = PaymentRequestsTable.pr;
+
+        return sql(PaymentRequestsVo.class)
+                .select(
+                        pr.all
+                )
+                .from(pr)
+                .where(
+                        pr.id.eq(id)
+                )
+                .one();
+    }
+
+}

+ 20 - 0
jy-business/src/main/java/com/jy/business/payment/dao/PaymentRequestsDetailDao.java

@@ -0,0 +1,20 @@
+package com.jy.business.payment.dao;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.payment.mapper.PaymentRequestsDetailMapper;
+import com.jy.business.payment.model.dto.PaymentRequestsDetailSelectDto;
+import com.jy.business.payment.model.entity.PaymentRequestsDetail;
+import com.jy.business.payment.model.table.PaymentRequestsDetailTable;
+import com.jy.business.payment.model.vo.PaymentRequestsDetailVo;
+import com.jy.framework.model.base.BaseDao;
+import com.jy.system.service.AuthService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PaymentRequestsDetailDao extends BaseDao<PaymentRequestsDetailMapper, PaymentRequestsDetail> {
+
+    @Resource
+    private AuthService authService;
+
+}

+ 16 - 0
jy-business/src/main/java/com/jy/business/payment/mapper/PaymentRequestsDetailMapper.java

@@ -0,0 +1,16 @@
+package com.jy.business.payment.mapper;
+
+import com.jy.business.payment.model.entity.PaymentRequestsDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 请款明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+public interface PaymentRequestsDetailMapper extends BaseMapper<PaymentRequestsDetail> {
+
+}

+ 16 - 0
jy-business/src/main/java/com/jy/business/payment/mapper/PaymentRequestsMapper.java

@@ -0,0 +1,16 @@
+package com.jy.business.payment.mapper;
+
+import com.jy.business.payment.model.entity.PaymentRequests;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 请款 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+public interface PaymentRequestsMapper extends BaseMapper<PaymentRequests> {
+
+}

+ 5 - 0
jy-business/src/main/java/com/jy/business/payment/mapper/xml/PaymentRequestsDetailMapper.xml

@@ -0,0 +1,5 @@
+<?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.jy.business.payment.mapper.PaymentRequestsDetailMapper">
+
+</mapper>

+ 5 - 0
jy-business/src/main/java/com/jy/business/payment/mapper/xml/PaymentRequestsMapper.xml

@@ -0,0 +1,5 @@
+<?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.jy.business.payment.mapper.PaymentRequestsMapper">
+
+</mapper>

+ 17 - 0
jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDetailDto.java

@@ -0,0 +1,17 @@
+package com.jy.business.payment.model.dto;
+
+import com.jy.business.payment.model.entity.PaymentRequestsDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款明细新增编辑入参实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsDetailDto extends PaymentRequestsDetail {
+
+}

+ 17 - 0
jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.jy.business.payment.model.dto;
+
+import com.jy.framework.model.base.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款明细列表查询入参实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsDto.java

@@ -0,0 +1,17 @@
+package com.jy.business.payment.model.dto;
+
+import com.jy.business.payment.model.entity.PaymentRequests;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款新增编辑入参实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsDto extends PaymentRequests {
+
+}

+ 22 - 0
jy-business/src/main/java/com/jy/business/payment/model/dto/PaymentRequestsSelectDto.java

@@ -0,0 +1,22 @@
+package com.jy.business.payment.model.dto;
+
+import com.jy.framework.model.base.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款列表查询入参实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsSelectDto extends BaseSelectDto {
+
+    /**
+     * 请款类型
+     */
+    private Integer type;
+
+}

+ 137 - 0
jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequests.java

@@ -0,0 +1,137 @@
+package com.jy.business.payment.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jy.framework.model.base.BaseIdPo;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 请款
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+@TableName("payment_requests")
+public class PaymentRequests extends BaseIdPo {
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 请款类型
+     */
+    private Integer type;
+
+    /**
+     * 用款时间
+     */
+    private Date useTime;
+
+    /**
+     * 用款说明
+     */
+    private String useRemark;
+
+    /**
+     * 附件列表
+     */
+    private String atts;
+
+    /**
+     * 付款总金额
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 单据数量
+     */
+    private Integer documentQuantity;
+
+    /**
+     * 付款方式
+     */
+    private Integer payType;
+
+    /**
+     * 资金账户id
+     */
+    private Long capitalAccountId;
+
+    /**
+     * 户名
+     */
+    private String accountName;
+
+    /**
+     * 银行账号
+     */
+    private String account;
+
+    /**
+     * 开户银行
+     */
+    private String depositBank;
+
+    /**
+     * 联行号/ SWIFT Code
+     */
+    private String correspondentNumber;
+
+    /**
+     * 审批状态
+     */
+    private Integer approvalStatus;
+
+    /**
+     * 放款状态
+     */
+    private Integer paymentStatus;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /**
+     * 逻辑删除标记
+     */
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private Long delFlag;
+
+}

+ 77 - 0
jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequestsDetail.java

@@ -0,0 +1,77 @@
+package com.jy.business.payment.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jy.framework.model.base.BaseIdPo;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 请款明细
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+@TableName("payment_requests_detail")
+public class PaymentRequestsDetail extends BaseIdPo {
+
+    /**
+     * 请款id
+     */
+    private Long paymentRequests;
+
+    /**
+     * 费用类型
+     */
+    private Integer expenseType;
+
+    /**
+     * 请款金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 款项说明
+     */
+    private String remark;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /**
+     * 逻辑删除标记
+     */
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private Long delFlag;
+
+}

+ 74 - 0
jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsDetailTable.java

@@ -0,0 +1,74 @@
+package com.jy.business.payment.model.table;
+
+import com.jy.business.payment.model.entity.PaymentRequestsDetail;
+import com.jy.framework.mybatis.join.QueryColumn;
+import com.jy.framework.mybatis.join.Table;
+
+public class PaymentRequestsDetailTable extends Table<PaymentRequestsDetail> {
+
+    public static PaymentRequestsDetailTable payment_requests_detail = new PaymentRequestsDetailTable();
+    public static PaymentRequestsDetailTable prd = payment_requests_detail.as("prd");
+
+    /**
+     * 请款明细id
+     */
+    public QueryColumn id = this.field(PaymentRequestsDetail::getId);
+
+    /**
+     * 请款id
+     */
+    public QueryColumn paymentRequests = this.field(PaymentRequestsDetail::getPaymentRequests);
+
+    /**
+     * 费用类型
+     */
+    public QueryColumn expenseType = this.field(PaymentRequestsDetail::getExpenseType);
+
+    /**
+     * 请款金额
+     */
+    public QueryColumn amount = this.field(PaymentRequestsDetail::getAmount);
+
+    /**
+     * 款项说明
+     */
+    public QueryColumn remark = this.field(PaymentRequestsDetail::getRemark);
+
+    /**
+     * 创建人
+     */
+    public QueryColumn createUser = this.field(PaymentRequestsDetail::getCreateUser);
+
+    /**
+     * 创建时间
+     */
+    public QueryColumn createTime = this.field(PaymentRequestsDetail::getCreateTime);
+
+    /**
+     * 更新人
+     */
+    public QueryColumn updateUser = this.field(PaymentRequestsDetail::getUpdateUser);
+
+    /**
+     * 更新时间
+     */
+    public QueryColumn updateTime = this.field(PaymentRequestsDetail::getUpdateTime);
+
+    /**
+     * 逻辑删除标记
+     */
+    public QueryColumn delFlag = this.field(PaymentRequestsDetail::getDelFlag);
+
+    private PaymentRequestsDetailTable() {
+        super(PaymentRequestsDetail.class);
+    }
+
+    private PaymentRequestsDetailTable(String alias) {
+        super(PaymentRequestsDetail.class, alias);
+    }
+
+    public PaymentRequestsDetailTable as(String alias) {
+        return new PaymentRequestsDetailTable(alias);
+    }
+
+}

+ 134 - 0
jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsTable.java

@@ -0,0 +1,134 @@
+package com.jy.business.payment.model.table;
+
+import com.jy.business.payment.model.entity.PaymentRequests;
+import com.jy.framework.mybatis.join.QueryColumn;
+import com.jy.framework.mybatis.join.Table;
+
+public class PaymentRequestsTable extends Table<PaymentRequests> {
+
+    public static PaymentRequestsTable payment_requests = new PaymentRequestsTable();
+    public static PaymentRequestsTable pr = payment_requests.as("pr");
+
+    /**
+     * 请款id
+     */
+    public QueryColumn id = this.field(PaymentRequests::getId);
+
+    /**
+     * 归属公司id
+     */
+    public QueryColumn corporationId = this.field(PaymentRequests::getCorporationId);
+
+    /**
+     * 部门id
+     */
+    public QueryColumn deptId = this.field(PaymentRequests::getDeptId);
+
+    /**
+     * 请款类型
+     */
+    public QueryColumn type = this.field(PaymentRequests::getType);
+
+    /**
+     * 用款时间
+     */
+    public QueryColumn useTime = this.field(PaymentRequests::getUseTime);
+
+    /**
+     * 用款说明
+     */
+    public QueryColumn useRemark = this.field(PaymentRequests::getUseRemark);
+
+    /**
+     * 附件列表
+     */
+    public QueryColumn atts = this.field(PaymentRequests::getAtts);
+
+    /**
+     * 付款总金额
+     */
+    public QueryColumn totalAmount = this.field(PaymentRequests::getTotalAmount);
+
+    /**
+     * 单据数量
+     */
+    public QueryColumn documentQuantity = this.field(PaymentRequests::getDocumentQuantity);
+
+    /**
+     * 付款方式
+     */
+    public QueryColumn payType = this.field(PaymentRequests::getPayType);
+
+    /**
+     * 资金账户id
+     */
+    public QueryColumn capitalAccountId = this.field(PaymentRequests::getCapitalAccountId);
+
+    /**
+     * 户名
+     */
+    public QueryColumn accountName = this.field(PaymentRequests::getAccountName);
+
+    /**
+     * 银行账号
+     */
+    public QueryColumn account = this.field(PaymentRequests::getAccount);
+
+    /**
+     * 开户银行
+     */
+    public QueryColumn depositBank = this.field(PaymentRequests::getDepositBank);
+
+    /**
+     * 联行号/ SWIFT Code
+     */
+    public QueryColumn correspondentNumber = this.field(PaymentRequests::getCorrespondentNumber);
+
+    /**
+     * 审批状态
+     */
+    public QueryColumn approvalStatus = this.field(PaymentRequests::getApprovalStatus);
+
+    /**
+     * 放款状态
+     */
+    public QueryColumn paymentStatus = this.field(PaymentRequests::getPaymentStatus);
+
+    /**
+     * 创建人
+     */
+    public QueryColumn createUser = this.field(PaymentRequests::getCreateUser);
+
+    /**
+     * 创建时间
+     */
+    public QueryColumn createTime = this.field(PaymentRequests::getCreateTime);
+
+    /**
+     * 更新人
+     */
+    public QueryColumn updateUser = this.field(PaymentRequests::getUpdateUser);
+
+    /**
+     * 更新时间
+     */
+    public QueryColumn updateTime = this.field(PaymentRequests::getUpdateTime);
+
+    /**
+     * 逻辑删除标记
+     */
+    public QueryColumn delFlag = this.field(PaymentRequests::getDelFlag);
+
+    private PaymentRequestsTable() {
+        super(PaymentRequests.class);
+    }
+
+    private PaymentRequestsTable(String alias) {
+        super(PaymentRequests.class, alias);
+    }
+
+    public PaymentRequestsTable as(String alias) {
+        return new PaymentRequestsTable(alias);
+    }
+
+}

+ 17 - 0
jy-business/src/main/java/com/jy/business/payment/model/vo/PaymentRequestsDetailVo.java

@@ -0,0 +1,17 @@
+package com.jy.business.payment.model.vo;
+
+import com.jy.business.payment.model.entity.PaymentRequestsDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款明细列表查询返回值实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsDetailVo extends PaymentRequestsDetail {
+
+}

+ 37 - 0
jy-business/src/main/java/com/jy/business/payment/model/vo/PaymentRequestsVo.java

@@ -0,0 +1,37 @@
+package com.jy.business.payment.model.vo;
+
+import com.jy.business.payment.model.entity.PaymentRequests;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款列表查询返回值实体
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Getter
+@Setter
+public class PaymentRequestsVo extends PaymentRequests {
+
+    /**
+     * 归属公司
+     */
+    private String corporationName;
+
+    /**
+     * 归属部门
+     */
+    private String deptName;
+
+    /**
+     * 请款人
+     */
+    private String userName;
+
+    /**
+     * 付款账户
+     */
+    private String capitalAccountName;
+
+}

+ 15 - 0
jy-business/src/main/java/com/jy/business/payment/service/PaymentRequestsDetailService.java

@@ -0,0 +1,15 @@
+package com.jy.business.payment.service;
+
+
+
+/**
+ * <p>
+ * 请款明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+public interface PaymentRequestsDetailService {
+
+}

+ 45 - 0
jy-business/src/main/java/com/jy/business/payment/service/PaymentRequestsService.java

@@ -0,0 +1,45 @@
+package com.jy.business.payment.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.payment.model.dto.PaymentRequestsDto;
+import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
+import com.jy.business.payment.model.vo.PaymentRequestsVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 请款 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+public interface PaymentRequestsService {
+
+    /**
+     * 请款分页
+     */
+    Page<PaymentRequestsVo> getPage(PaymentRequestsSelectDto dto);
+
+    /**
+     * 请款明细
+     */
+    PaymentRequestsVo getDetail(Long id);
+
+    /**
+     * 请款新增
+     */
+    void add(PaymentRequestsDto dto);
+
+    /**
+     * 请款编辑
+     */
+    void edit(PaymentRequestsDto dto);
+
+    /**
+     * 请款删除
+     */
+    void delete(List<Long> idList);
+
+}

+ 22 - 0
jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsDetailServiceImpl.java

@@ -0,0 +1,22 @@
+package com.jy.business.payment.service.impl;
+
+import com.jy.business.payment.dao.PaymentRequestsDetailDao;
+import com.jy.business.payment.service.PaymentRequestsDetailService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 请款明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Service
+public class PaymentRequestsDetailServiceImpl implements PaymentRequestsDetailService {
+
+    @Resource
+    private PaymentRequestsDetailDao paymentRequestsDetailDao;
+
+}

+ 58 - 0
jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsServiceImpl.java

@@ -0,0 +1,58 @@
+package com.jy.business.payment.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.payment.dao.PaymentRequestsDao;
+import com.jy.business.payment.model.dto.PaymentRequestsDto;
+import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
+import com.jy.business.payment.model.vo.PaymentRequestsVo;
+import com.jy.business.payment.service.PaymentRequestsService;
+import com.jy.framework.utils.AssertUtil;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 请款 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-18
+ */
+@Service
+public class PaymentRequestsServiceImpl implements PaymentRequestsService {
+
+    @Resource
+    private PaymentRequestsDao paymentRequestsDao;
+
+    @Override
+    public Page<PaymentRequestsVo> getPage(PaymentRequestsSelectDto dto) {
+        return paymentRequestsDao.getPage(dto);
+    }
+
+    @Override
+    public PaymentRequestsVo getDetail(Long id) {
+        PaymentRequestsVo vo = paymentRequestsDao.getDetail(id);
+        AssertUtil.notNull(vo, "未知数据");
+        return vo;
+    }
+
+    @Override
+    public void add(PaymentRequestsDto dto) {
+        paymentRequestsDao.save(dto);
+    }
+
+    @Override
+    public void edit(PaymentRequestsDto dto) {
+        paymentRequestsDao.updateById(dto);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<Long> idList) {
+        paymentRequestsDao.removeBatchByIds(idList);
+    }
+
+}

+ 27 - 0
jy-ui/src/api/business/payment/requests.ts

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+import { PageType, StrAnyObj } from '@/typings'
+
+// 请款分页
+export function getPageApi(params: StrAnyObj): Promise<PageType<StrAnyObj>> {
+  return request.get('/paymentRequests/getPage', params)
+}
+
+// 请款明细
+export function getDetailApi(params: StrAnyObj): Promise<StrAnyObj> {
+  return request.get('/paymentRequests/getDetail', params)
+}
+
+// 请款新增
+export function addApi(data: StrAnyObj): Promise<void> {
+  return request.post('/paymentRequests/add', data)
+}
+
+// 请款编辑
+export function editApi(data: StrAnyObj): Promise<void> {
+  return request.post('/paymentRequests/edit', data)
+}
+
+// 请款删除
+export function deleteApi(data: StrAnyObj): Promise<void> {
+  return request.post('/paymentRequests/delete', data)
+}

+ 479 - 0
jy-ui/src/views/business/payment/requests/index.vue

@@ -0,0 +1,479 @@
+<script setup lang="ts">
+import AForm from '@/components/AForm/index.vue'
+import { FormConfigType } from '@/components/AForm/type'
+import { ToolbarConfigType } from '@/components/AToolbar/type'
+import { ColumnConfigType } from '@/components/ATable/type'
+import { StrAnyObj, StrAnyObjArr } from '@/typings'
+import { useHandleData } from '@/utils/useHandleData'
+import {
+  getPageApi,
+  getDetailApi,
+  addApi,
+  editApi,
+  deleteApi
+} from '@/api/business/payment/requests'
+import {getPageApi as getCorporationPageApi} from "@/api/business/corporation/corporation";
+import DeptTreeSelect from "@/views/components/DeptTreeSelect/index.vue";
+import {getPageApi as getCapitalAccountPageApi} from "@/api/business/capital/account";
+
+const queryRef = ref<InstanceType<typeof AForm>>()
+const formRef = ref<InstanceType<typeof AForm>>()
+
+const showQuery = ref<boolean>(true)
+const selectKeys = ref<string[]>([])
+const pageTotal = ref<number>(0)
+
+const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
+const tableData = ref<StrAnyObjArr>([])
+const formData = ref<StrAnyObj>({ paymentRequestsDetailList: [{}] })
+
+const dialogTitle = ref<string>('')
+const dialogVisible = ref<boolean>(false)
+
+const deptIdRef = ref<InstanceType<typeof DeptTreeSelect>>()
+
+const queryConfig: FormConfigType[] = [
+  {
+    type: 'input',
+    prop: 'corporationId',
+    label: '归属公司id'
+  },
+  {
+    type: 'input',
+    prop: 'deptId',
+    label: '部门id'
+  },
+  {
+    type: 'input',
+    prop: 'type',
+    label: '请款类型'
+  },
+  {
+    type: 'input',
+    prop: 'useTime',
+    label: '用款时间'
+  },
+  {
+    type: 'input',
+    prop: 'useRemark',
+    label: '用款说明'
+  },
+  {
+    type: 'input',
+    prop: 'atts',
+    label: '附件列表'
+  },
+  {
+    type: 'input',
+    prop: 'totalAmount',
+    label: '付款总金额'
+  },
+  {
+    type: 'input',
+    prop: 'documentQuantity',
+    label: '单据数量'
+  },
+  {
+    type: 'input',
+    prop: 'payType',
+    label: '付款方式'
+  },
+  {
+    type: 'input',
+    prop: 'capitalAccountId',
+    label: '资金账户id'
+  },
+  {
+    type: 'input',
+    prop: 'accountName',
+    label: '户名'
+  },
+  {
+    type: 'input',
+    prop: 'account',
+    label: '银行账号'
+  },
+  {
+    type: 'input',
+    prop: 'depositBank',
+    label: '开户银行'
+  },
+  {
+    type: 'input',
+    prop: 'correspondentNumber',
+    label: '联行号/ SWIFT Code'
+  }
+]
+
+const toolbarConfig: ToolbarConfigType[] = [
+  {
+    common: 'search',
+    click() {
+      queryData.value.pageNum = 1
+      getPage()
+    }
+  },
+  {
+    common: 'reset',
+    click() {
+      queryRef.value?.resetFields()
+      getPage()
+    }
+  },
+  {
+    common: 'add',
+    click() {
+      dialogVisible.value = true
+      dialogTitle.value = '新增'
+      nextTick(() => deptIdRef.value?.load())
+    }
+  },
+  {
+    common: 'delete',
+    disabled() {
+      return selectKeys.value.length == 0
+    },
+    click() {
+      handleRemove(selectKeys.value)
+    }
+  }
+]
+
+const columnConfig: ColumnConfigType[] = [
+  {
+    prop: 'corporationName',
+    label: '归属公司'
+  },
+  {
+    prop: 'deptName',
+    label: '归属部门'
+  },
+  {
+    prop: 'type',
+    label: '请款类型',
+    dict: 'payment_requests_type'
+  },
+  {
+    prop: 'userName',
+    label: '请款人'
+  },
+  {
+    prop: 'createTime',
+    label: '请款时间'
+  },
+  {
+    prop: 'useTime',
+    label: '用款时间'
+  },
+  {
+    prop: 'useRemark',
+    label: '用款说明',
+    showOverflowTooltip: true
+  },
+  {
+    prop: 'totalAmount',
+    label: '请款金额'
+  },
+  {
+    prop: 'payType',
+    label: '付款方式',
+    dict: 'pay_type'
+  },
+  {
+    prop: 'capitalAccountName',
+    label: '付款账户'
+  },
+  {
+    prop: 'approvalStatus',
+    label: '审批状态'
+  },
+  {
+    prop: 'paymentStatus',
+    label: '放款状态'
+  },
+  {
+    width: 250,
+    handleConfig: [
+      {
+        common: 'update',
+        click(row) {
+          dialogVisible.value = true
+          dialogTitle.value = '编辑'
+          getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
+            formData.value = resp
+          })
+          nextTick(() => deptIdRef.value?.load())
+        }
+      },
+      {
+        common: 'delete',
+        click(row) {
+          handleRemove([row.id])
+        }
+      }
+    ]
+  }
+]
+
+const formConfig: FormConfigType[] = [
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '归属公司',
+    keyName: 'id',
+    labelName: 'name',
+    async option ()  {
+      const data = await getCorporationPageApi({ searchAll: true })
+      return data.records
+    },
+    rule: [{ required: true, message: '归属公司id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'slot',
+    prop: 'dept',
+    label: '归属部门',
+    rule: [{ required: true, message: '部门id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'type',
+    label: '请款类型',
+    dict: 'payment_requests_type',
+    rule: [{ required: true, message: '请款类型不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'datePicker',
+    prop: 'useTime',
+    label: '用款时间',
+    datePickerType: 'datetime',
+    format: 'YYYY-MM-DD 00:00:00',
+    valueFormat: 'YYYY-MM-DD 00:00:00'
+  },
+  {
+    type: 'input',
+    itemType: 'textarea',
+    prop: 'useRemark',
+    label: '用款说明',
+    rows: 3,
+    span: 24,
+    placeholder: '自动拼接请款明细中的款项说明',
+    disabled: true
+  },
+  {
+    type: 'slot',
+    prop: 'atts',
+    label: '上传附件',
+    span: 24
+  },
+  {
+    type: 'slot',
+    prop: 'detailTable',
+    label: '请款明细',
+    span: 24
+  },
+  {
+    type: 'input',
+    prop: 'totalAmount',
+    label: '付款总金额',
+    disabled: true,
+    placeholder: '自动统计请款明细中的请款金额'
+  },
+  {
+    type: 'inputNumber',
+    prop: 'documentQuantity',
+    label: '单据数量',
+    min: 0,
+    precision: 0,
+    rule: [{ required: true, message: '单据数量不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'payType',
+    label: '付款方式',
+    dict: 'pay_type',
+    rule: [{ required: true, message: '付款方式不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'capitalAccountId',
+    label: '付款账户',
+    keyName: 'id',
+    labelName: 'accountAlias',
+    async option() {
+      const data = await getCapitalAccountPageApi({ searchAll: true })
+      return data.records
+    }
+  },
+  {
+    type: 'input',
+    prop: 'accountName',
+    label: '户名',
+  },
+  {
+    type: 'input',
+    prop: 'account',
+    label: '银行账号',
+  },
+  {
+    type: 'input',
+    prop: 'depositBank',
+    label: '开户银行',
+  },
+  {
+    type: 'input',
+    prop: 'correspondentNumber',
+    label: '联行号/SWIFT Code',
+  }
+]
+
+const detailTableColumnConfig: ColumnConfigType[] = [
+  {
+    slot: 'expenseType',
+    label: '费用类型',
+    width: 250
+  },
+  {
+    slot: 'remark',
+    label: '款项说明',
+  },
+  {
+    slot: 'amount',
+    label: '请款金额',
+    width: 180
+  },
+  {
+    width: 100,
+    handleConfig: [
+      {
+        common: 'delete',
+        click(row, index) {
+          formData.value.paymentRequestsDetailList.splice(index, 1)
+          updateDetailRemark()
+          updateAmount()
+        }
+      }
+    ]
+  }
+]
+
+onMounted(() => {
+  getPage()
+})
+
+function getPage() {
+  getPageApi(queryData.value).then((resp) => {
+    tableData.value = resp.records
+    pageTotal.value = resp.total
+  })
+}
+
+function tableSelectionChange(item: StrAnyObjArr) {
+  selectKeys.value = item.map((item) => item.id)
+}
+
+function formSubmit() {
+  formRef.value?.validate(() => {
+    if (formData.value.id) {
+      editApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('修改成功')
+        getPage()
+      })
+    } else {
+      addApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('新增成功')
+        getPage()
+      })
+    }
+  })
+}
+
+function formClosed() {
+  formRef.value?.resetFields()
+}
+
+function handleRemove(idList: string[]) {
+  useHandleData('是否确认删除?', () => {
+    deleteApi({ idList }).then(() => {
+      ElMessage.success('删除成功')
+      getPage()
+    })
+  })
+}
+
+function addPaymentRequestsDetailList() {
+  formData.value.paymentRequestsDetailList.push({})
+}
+
+function updateDetailRemark() {
+  formData.value.useRemark = formData.value.paymentRequestsDetailList
+    .map((item) => item.remark)
+      .filter((item) => item !== '' && item !== null && item !== undefined)
+      .join(' - \n')
+}
+
+function updateAmount() {
+  formData.value.totalAmount = formData.value.paymentRequestsDetailList
+      .map((item) => item.amount)
+      .filter((item) => item !== '' && item !== null && item !== undefined)
+      .reduce((pre, next) => pre + next, 0)
+}
+
+</script>
+
+<template>
+  <div>
+    <el-card v-if="showQuery">
+      <a-form ref="queryRef" v-model="queryData" :config="queryConfig" :span="6"> </a-form>
+    </el-card>
+
+    <a-table
+      selection
+      :data="tableData"
+      :page-total="pageTotal"
+      :toolbar-config="toolbarConfig"
+      :column-config="columnConfig"
+      v-model:showQuery="showQuery"
+      v-model:page-num="queryData.pageNum"
+      v-model:page-size="queryData.pageSize"
+      @page-num-change="getPage"
+      @page-size-change="getPage"
+      @selection-change="tableSelectionChange"
+    >
+    </a-table>
+
+    <a-dialog
+      v-model="dialogVisible"
+      :title="dialogTitle"
+      @submit="formSubmit"
+      @closed="formClosed"
+      width="1400px"
+      height="200px"
+    >
+      <a-form ref="formRef" v-model="formData" :config="formConfig" :span="12">
+        <template #dept>
+          <dept-tree-select ref="deptIdRef" v-model="formData.deptId" />
+        </template>
+        <template #atts>
+        </template>
+        <template #detailTable>
+          <a-table :data="formData.paymentRequestsDetailList" :columnConfig="detailTableColumnConfig" style="width: 100%" :card="false">
+            <template #expenseType="scope">
+              <a-select v-model="scope.row.expenseType" dict="expense_type"/>
+            </template>
+            <template #remark="scope">
+              <a-input v-model="scope.row.remark" type="textarea" rows="2" @change="updateDetailRemark"/>
+            </template>
+            <template #amount="scope">
+              <a-inputNumber v-model="scope.row.amount" :min="0.01" :precision="2" @change="updateAmount" />
+            </template>
+          </a-table>
+          <el-button style="width: 100%; margin-bottom: 20px" type="primary" @click="addPaymentRequestsDetailList">
+            添加行
+          </el-button>
+        </template>
+      </a-form>
+    </a-dialog>
+  </div>
+</template>

+ 201 - 0
jy-ui/src/views/business/payment/requests/managePanel.vue

@@ -0,0 +1,201 @@
+<script setup lang="ts">
+import AForm from '@/components/AForm/index.vue'
+import { FormConfigType } from '@/components/AForm/type'
+import { ColumnConfigType } from '@/components/ATable/type'
+import { StrAnyObj } from '@/typings'
+import {getPageApi as getCorporationPageApi} from "@/api/business/corporation/corporation";
+import DeptTreeSelect from "@/views/components/DeptTreeSelect/index.vue";
+import {getPageApi as getCapitalAccountPageApi} from "@/api/business/capital/account";
+
+const formRef = ref<InstanceType<typeof AForm>>()
+
+const formData = ref<StrAnyObj>({ paymentRequestsDetailList: [{}] })
+
+const deptIdRef = ref<InstanceType<typeof DeptTreeSelect>>()
+
+const formConfig: FormConfigType[] = [
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '归属公司',
+    keyName: 'id',
+    labelName: 'name',
+    async option ()  {
+      const data = await getCorporationPageApi({ searchAll: true })
+      return data.records
+    },
+    rule: [{ required: true, message: '归属公司id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'slot',
+    prop: 'dept',
+    label: '归属部门',
+    rule: [{ required: true, message: '部门id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'type',
+    label: '请款类型',
+    dict: 'payment_requests_type',
+    rule: [{ required: true, message: '请款类型不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'datePicker',
+    prop: 'useTime',
+    label: '用款时间',
+    datePickerType: 'datetime',
+    format: 'YYYY-MM-DD 00:00:00',
+    valueFormat: 'YYYY-MM-DD 00:00:00'
+  },
+  {
+    type: 'input',
+    itemType: 'textarea',
+    prop: 'useRemark',
+    label: '用款说明',
+    rows: 3,
+    span: 24,
+    placeholder: '自动拼接请款明细中的款项说明',
+    disabled: true
+  },
+  {
+    type: 'slot',
+    prop: 'atts',
+    label: '上传附件',
+    span: 24
+  },
+  {
+    type: 'slot',
+    prop: 'detailTable',
+    label: '请款明细',
+    span: 24
+  },
+  {
+    type: 'input',
+    prop: 'totalAmount',
+    label: '付款总金额',
+    disabled: true,
+    placeholder: '自动统计请款明细中的请款金额'
+  },
+  {
+    type: 'inputNumber',
+    prop: 'documentQuantity',
+    label: '单据数量',
+    min: 0,
+    precision: 0,
+    rule: [{ required: true, message: '单据数量不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'payType',
+    label: '付款方式',
+    dict: 'pay_type',
+    rule: [{ required: true, message: '付款方式不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'select',
+    prop: 'capitalAccountId',
+    label: '付款账户',
+    keyName: 'id',
+    labelName: 'accountAlias',
+    async option() {
+      const data = await getCapitalAccountPageApi({ searchAll: true })
+      return data.records
+    }
+  },
+  {
+    type: 'input',
+    prop: 'accountName',
+    label: '户名',
+  },
+  {
+    type: 'input',
+    prop: 'account',
+    label: '银行账号',
+  },
+  {
+    type: 'input',
+    prop: 'depositBank',
+    label: '开户银行',
+  },
+  {
+    type: 'input',
+    prop: 'correspondentNumber',
+    label: '联行号/SWIFT Code',
+  }
+]
+
+const detailTableColumnConfig: ColumnConfigType[] = [
+  {
+    slot: 'expenseType',
+    label: '费用类型',
+    width: 250
+  },
+  {
+    slot: 'remark',
+    label: '款项说明',
+  },
+  {
+    slot: 'amount',
+    label: '请款金额',
+    width: 180
+  },
+  {
+    width: 100,
+    handleConfig: [
+      {
+        common: 'delete',
+        click(row, index) {
+          formData.value.paymentRequestsDetailList.splice(index, 1)
+          updateDetailRemark()
+          updateAmount()
+        }
+      }
+    ]
+  }
+]
+
+function addPaymentRequestsDetailList() {
+  formData.value.paymentRequestsDetailList.push({})
+}
+
+function updateDetailRemark() {
+  formData.value.useRemark = formData.value.paymentRequestsDetailList
+      .map((item) => item.remark)
+      .filter((item) => item !== '' && item !== null && item !== undefined)
+      .join(' - \n')
+}
+
+function updateAmount() {
+  formData.value.totalAmount = formData.value.paymentRequestsDetailList
+      .map((item) => item.amount)
+      .filter((item) => item !== '' && item !== null && item !== undefined)
+      .reduce((pre, next) => pre + next, 0)
+}
+
+</script>
+
+<template>
+  <a-form ref="formRef" v-model="formData" :config="formConfig" :span="12">
+    <template #dept>
+      <dept-tree-select ref="deptIdRef" v-model="formData.deptId" />
+    </template>
+    <template #atts>
+    </template>
+    <template #detailTable>
+      <a-table :data="formData.paymentRequestsDetailList" :columnConfig="detailTableColumnConfig" style="width: 100%" :card="false">
+        <template #expenseType="scope">
+          <a-select v-model="scope.row.expenseType" dict="expense_type"/>
+        </template>
+        <template #remark="scope">
+          <a-input v-model="scope.row.remark" type="textarea" rows="2" @change="updateDetailRemark"/>
+        </template>
+        <template #amount="scope">
+          <a-inputNumber v-model="scope.row.amount" :min="0.01" :precision="2" @change="updateAmount" />
+        </template>
+      </a-table>
+      <el-button style="width: 100%; margin-bottom: 20px" type="primary" @click="addPaymentRequestsDetailList">
+        添加行
+      </el-button>
+    </template>
+  </a-form>
+</template>