sen
2025-12-17 fa0c90d5a05eac4e83b204b86311de7cb0e4b418
Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master
16个文件已添加
2073 ■■■■■ 已修改文件
service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java
New file
@@ -0,0 +1,108 @@
package com.ruoyi.cwgl.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.utils.file.DownloadExportUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cwgl.domain.PayableFeeDetail;
import com.ruoyi.cwgl.service.IPayableFeeDetailService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * 应付费用明细Controller
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@RestController
@RequestMapping("/cwgl/payableFeeDetail")
public class PayableFeeDetailController extends BaseController
{
    @Autowired
    private IPayableFeeDetailService payableFeeDetailService;
    /**
     * 查询应付费用明细列表
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:list')")
    @GetMapping("/list")
    public TableDataInfo list(PayableFeeDetail payableFeeDetail)
    {
        startPage();
        List<PayableFeeDetail> list = payableFeeDetailService.selectPayableFeeDetailList(payableFeeDetail);
        return getDataTable(list);
    }
    /**
     * 导出应付费用明细列表
     * @param payableFeeDetail 查询条件对象
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:export')")
    @Log(title = "应付费用明细", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(PayableFeeDetail payableFeeDetail,String exportKey)
    {
        payableFeeDetailService.export(payableFeeDetail,exportKey);
        return AjaxResult.success("导出请求成功,请稍后点击下载...!");
    }
    /**
     * 获取应付费用明细详细信息
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Integer id)
    {
        return AjaxResult.success(payableFeeDetailService.selectPayableFeeDetailById(id));
    }
    /**
     * 新增应付费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:add')")
    @Log(title = "应付费用明细", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody PayableFeeDetail payableFeeDetail)
    {
        return toAjax(payableFeeDetailService.insertPayableFeeDetail(payableFeeDetail));
    }
    /**
     * 修改应付费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:edit')")
    @Log(title = "应付费用明细", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody PayableFeeDetail payableFeeDetail)
    {
        return toAjax(payableFeeDetailService.updatePayableFeeDetail(payableFeeDetail));
    }
    /**
     * 删除应付费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:remove')")
    @Log(title = "应付费用明细", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Integer[] ids)
    {
        return toAjax(payableFeeDetailService.deletePayableFeeDetailByIds(ids));
    }
}
service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java
New file
@@ -0,0 +1,108 @@
package com.ruoyi.cwgl.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.utils.file.DownloadExportUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
import com.ruoyi.cwgl.service.IReceivableFeeDetailService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * 应收费用明细Controller
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@RestController
@RequestMapping("/cwgl/receivableFeeDetail")
public class ReceivableFeeDetailController extends BaseController
{
    @Autowired
    private IReceivableFeeDetailService receivableFeeDetailService;
    /**
     * 查询应收费用明细列表
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:list')")
    @GetMapping("/list")
    public TableDataInfo list(ReceivableFeeDetail receivableFeeDetail)
    {
        startPage();
        List<ReceivableFeeDetail> list = receivableFeeDetailService.selectReceivableFeeDetailList(receivableFeeDetail);
        return getDataTable(list);
    }
    /**
     * 导出应收费用明细列表
     * @param receivableFeeDetail 查询条件对象
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:export')")
    @Log(title = "应收费用明细", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ReceivableFeeDetail receivableFeeDetail,String exportKey)
    {
        receivableFeeDetailService.export(receivableFeeDetail,exportKey);
        return AjaxResult.success("导出请求成功,请稍后点击下载...!");
    }
    /**
     * 获取应收费用明细详细信息
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Integer id)
    {
        return AjaxResult.success(receivableFeeDetailService.selectReceivableFeeDetailById(id));
    }
    /**
     * 新增应收费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:add')")
    @Log(title = "应收费用明细", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ReceivableFeeDetail receivableFeeDetail)
    {
        return toAjax(receivableFeeDetailService.insertReceivableFeeDetail(receivableFeeDetail));
    }
    /**
     * 修改应收费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:edit')")
    @Log(title = "应收费用明细", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ReceivableFeeDetail receivableFeeDetail)
    {
        return toAjax(receivableFeeDetailService.updateReceivableFeeDetail(receivableFeeDetail));
    }
    /**
     * 删除应收费用明细
     */
    @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:remove')")
    @Log(title = "应收费用明细", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Integer[] ids)
    {
        return toAjax(receivableFeeDetailService.deleteReceivableFeeDetailByIds(ids));
    }
}
service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java
New file
@@ -0,0 +1,131 @@
package com.ruoyi.cwgl.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
 * 应付费用明细对象 payable_fee_detail
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@Data
public class PayableFeeDetail{
    /** ID */
        @TableField("id")
    private Integer id;
    /** 应付费用管理ID */
    @Excel(name = "应付费用管理ID")
        @TableField("payable_fee_id")
    private Integer payableFeeId;
    /** 费用类型 */
    @Excel(name = "费用类型")
        @TableField("fee_type")
    private String feeType;
    /** 费用名称 */
    @Excel(name = "费用名称")
        @TableField("fee_name")
    private String feeName;
    /** 计费单位 */
    @Excel(name = "计费单位")
        @TableField("billing_unit")
    private String billingUnit;
    /** 计费单价 */
    @Excel(name = "计费单价")
        @TableField("unit_price")
    private BigDecimal unitPrice;
    /** 计费数量 */
    @Excel(name = "计费数量")
        @TableField("billing_quantity")
    private BigDecimal billingQuantity;
    /** 计费金额 */
    @Excel(name = "计费金额")
        @TableField("billing_amount")
    private BigDecimal billingAmount;
    /** 实付金额 */
    @Excel(name = "实付金额")
        @TableField("actual_amount")
    private BigDecimal actualAmount;
    /** 币制 */
    @Excel(name = "币制")
        @TableField("currency")
    private String currency;
    /** 费用登记时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "费用登记时间", width = 30, dateFormat = "yyyy-MM-dd")
        @TableField("fee_reg_time")
    private Date feeRegTime;
    /** 备注 */
    @Excel(name = "备注")
        @TableField("remark")
    private String remark;
    /** 创建人 */
        @TableField("create_by")
    private String createBy;
    /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @TableField("create_time")
    private Date createTime;
    /** 更新人 */
        @TableField("update_by")
    private String updateBy;
    /** 更新时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @TableField("update_time")
    private Date updateTime;
    /** 删除标记(0:正常;1:删除) */
    @Excel(name = "删除标记(0:正常;1:删除)")
        @TableField("deleted")
    private Integer deleted;
}
service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java
New file
@@ -0,0 +1,132 @@
package com.ruoyi.cwgl.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
 * 应收费用明细对象 receivable_fee_detail
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@Data
public class ReceivableFeeDetail{
    /** ID */
        @TableField("id")
    private Integer id;
    /** 应收费用管理ID */
    @Excel(name = "应收费用管理ID")
        @TableField("receivable_fee_id")
    private Integer receivableFeeId;
    /** 费用类型 */
    @Excel(name = "费用类型")
        @TableField("fee_type")
    private String feeType;
    /** 费用名称 */
    @Excel(name = "费用名称")
        @TableField("fee_name")
    private String feeName;
    /** 计费单位 */
    @Excel(name = "计费单位")
        @TableField("billing_unit")
    private String billingUnit;
    /** 计费单价 */
    @Excel(name = "计费单价")
        @TableField("unit_price")
    private BigDecimal unitPrice;
    /** 计费数量 */
    @Excel(name = "计费数量")
        @TableField("billing_quantity")
    private BigDecimal billingQuantity;
    /** 计费金额 */
    @Excel(name = "计费金额")
        @TableField("billing_amount")
    private BigDecimal billingAmount;
    /** 实收金额 */
    @Excel(name = "实收金额")
        @TableField("actual_amount")
    private BigDecimal actualAmount;
    /** 币制 */
    @Excel(name = "币制")
        @TableField("currency")
    private String currency;
    /** 费用登记时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "费用登记时间", width = 30, dateFormat = "yyyy-MM-dd")
        @TableField("fee_reg_time")
    private Date feeRegTime;
    /** 备注 */
    @Excel(name = "备注")
        @TableField("remark")
    private String remark;
    /** 创建人 */
        @TableField("create_by")
    private String createBy;
    /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @TableField("create_time")
    private Date createTime;
    /** 更新人 */
        @TableField("update_by")
    private String updateBy;
    /** 更新时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @TableField("update_time")
    private Date updateTime;
    /** 删除标记(0:正常;1:删除) */
    @Excel(name = "删除标记(0:正常;1:删除)")
        @TableField("deleted")
    private Integer deleted;
}
service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java
New file
@@ -0,0 +1,87 @@
package com.ruoyi.cwgl.mapper;
import java.util.List;
import com.ruoyi.cwgl.domain.PayableFeeDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * 应付费用明细Mapper接口
 *
 * @author ruoyi
 * @date 2025-12-17
 */
public interface PayableFeeDetailMapper  extends BaseMapper<PayableFeeDetail>
{
    /**
     * 查询应付费用明细
     *
     * @param id 应付费用明细ID
     * @return 应付费用明细
     */
    public PayableFeeDetail selectPayableFeeDetailById(Integer id);
    /**
     * 查询应付费用明细 记录数
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细集合
     */
    public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail);
    /**
     * 查询应付费用明细列表
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细集合
     */
    public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail);
    /**
     * 新增应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail);
    /**
     * 新增应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
    /**
     * 修改应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail);
    /**
     * 修改应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
    /**
     * 删除应付费用明细
     *
     * @param id 应付费用明细ID
     * @return 结果
     */
    public int deletePayableFeeDetailById(Integer id);
    /**
     * 批量删除应付费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deletePayableFeeDetailByIds(Integer[] ids);
}
service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java
New file
@@ -0,0 +1,87 @@
package com.ruoyi.cwgl.mapper;
import java.util.List;
import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * 应收费用明细Mapper接口
 *
 * @author ruoyi
 * @date 2025-12-17
 */
public interface ReceivableFeeDetailMapper  extends BaseMapper<ReceivableFeeDetail>
{
    /**
     * 查询应收费用明细
     *
     * @param id 应收费用明细ID
     * @return 应收费用明细
     */
    public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id);
    /**
     * 查询应收费用明细 记录数
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细集合
     */
    public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 查询应收费用明细列表
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细集合
     */
    public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 新增应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 新增应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
    /**
     * 修改应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 修改应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
    /**
     * 删除应收费用明细
     *
     * @param id 应收费用明细ID
     * @return 结果
     */
    public int deleteReceivableFeeDetailById(Integer id);
    /**
     * 批量删除应收费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteReceivableFeeDetailByIds(Integer[] ids);
}
service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java
New file
@@ -0,0 +1,102 @@
package com.ruoyi.cwgl.service;
import java.util.List;
import com.ruoyi.cwgl.domain.PayableFeeDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * 应付费用明细Service接口
 *
 * @author ruoyi
 * @date 2025-12-17
 */
public interface IPayableFeeDetailService extends IService<PayableFeeDetail>
{
    /**
     * 查询应付费用明细
     *
     * @param id 应付费用明细ID
     * @return 应付费用明细
     */
    public PayableFeeDetail selectPayableFeeDetailById(Integer id);
    /**
     * 查询应付费用明细 记录数
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细集合
     */
    public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail);
    /**
     * 查询应付费用明细列表
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细集合
     */
    public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail);
    /**
     * 查询应付费用明细列表 异步 导出
     *
     * @param payableFeeDetail 应付费用明细
     * @param exportKey 导出功能的唯一标识
     * @return 应付费用明细集合
     */
    public void export(PayableFeeDetail payableFeeDetail, String exportKey) ;
    /**
     * 新增应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail);
    /**
     * 新增应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
    /**
     * 修改应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail);
    /**
     * 修改应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
    /**
     * 批量删除应付费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deletePayableFeeDetailByIds(String ids);
    /**
     * 批量删除应付费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deletePayableFeeDetailByIds(Integer[] ids);
    /**
     * 删除应付费用明细信息
     *
     * @param id 应付费用明细ID
     * @return 结果
     */
    public int deletePayableFeeDetailById(Integer id);
}
service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java
New file
@@ -0,0 +1,102 @@
package com.ruoyi.cwgl.service;
import java.util.List;
import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * 应收费用明细Service接口
 *
 * @author ruoyi
 * @date 2025-12-17
 */
public interface IReceivableFeeDetailService extends IService<ReceivableFeeDetail>
{
    /**
     * 查询应收费用明细
     *
     * @param id 应收费用明细ID
     * @return 应收费用明细
     */
    public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id);
    /**
     * 查询应收费用明细 记录数
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细集合
     */
    public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 查询应收费用明细列表
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细集合
     */
    public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 查询应收费用明细列表 异步 导出
     *
     * @param receivableFeeDetail 应收费用明细
     * @param exportKey 导出功能的唯一标识
     * @return 应收费用明细集合
     */
    public void export(ReceivableFeeDetail receivableFeeDetail, String exportKey) ;
    /**
     * 新增应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 新增应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
    /**
     * 修改应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
    /**
     * 修改应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
    /**
     * 批量删除应收费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteReceivableFeeDetailByIds(String ids);
    /**
     * 批量删除应收费用明细
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteReceivableFeeDetailByIds(Integer[] ids);
    /**
     * 删除应收费用明细信息
     *
     * @param id 应收费用明细ID
     * @return 结果
     */
    public int deleteReceivableFeeDetailById(Integer id);
}
service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java
New file
@@ -0,0 +1,182 @@
package com.ruoyi.cwgl.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.core.service.BaseService;
import com.ruoyi.cwgl.mapper.PayableFeeDetailMapper;
import com.ruoyi.cwgl.domain.PayableFeeDetail;
import com.ruoyi.cwgl.service.IPayableFeeDetailService;
import com.ruoyi.common.core.text.Convert;
/**
 * 应付费用明细Service业务层处理
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class PayableFeeDetailServiceImpl  extends BaseService<PayableFeeDetailMapper, PayableFeeDetail> implements IPayableFeeDetailService
{
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Resource
    private PayableFeeDetailMapper payableFeeDetailMapper;
    /**
     * 查询应付费用明细
     *
     * @param id 应付费用明细ID
     * @return 应付费用明细
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public PayableFeeDetail selectPayableFeeDetailById(Integer id)
    {
        return payableFeeDetailMapper.selectPayableFeeDetailById(id);
    }
    /**
     * 查询应付费用明细 记录数
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail)
    {
        return payableFeeDetailMapper.selectPayableFeeDetailCount(payableFeeDetail);
    }
    /**
     * 查询应付费用明细列表
     *
     * @param payableFeeDetail 应付费用明细
     * @return 应付费用明细
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail)
    {
        return payableFeeDetailMapper.selectPayableFeeDetailList(payableFeeDetail);
    }
    /**
     * 查询应付费用明细列表 异步 导出
     *
     * @param payableFeeDetail 应付费用明细
     * @param exportKey 导出功能的唯一标识
     * @return 应付费用明细集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Async
    @Override
    public void export(PayableFeeDetail payableFeeDetail,String exportKey) {
        super.export(PayableFeeDetail.class,exportKey,"payableFeeDetailData",(pageNum)->{
            PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
            return selectPayableFeeDetailList(payableFeeDetail);
        });
    }
    /**
     * 新增应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    @Override
    public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail)
    {
        payableFeeDetail.setCreateTime(DateUtils.getNowDate());
        return payableFeeDetailMapper.insertPayableFeeDetail(payableFeeDetail);
    }
    /**
     * 新增应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    @Override
    public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails)
    {
        int rows = payableFeeDetailMapper.insertPayableFeeDetailBatch(payableFeeDetails);
        return rows;
    }
    /**
     * 修改应付费用明细
     *
     * @param payableFeeDetail 应付费用明细
     * @return 结果
     */
    @Override
    public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail)
    {
        payableFeeDetail.setUpdateTime(DateUtils.getNowDate());
        return payableFeeDetailMapper.updatePayableFeeDetail(payableFeeDetail);
    }
    /**
     * 修改应付费用明细[批量]
     *
     * @param payableFeeDetails 应付费用明细
     * @return 结果
     */
    @Override
    public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails){
        return payableFeeDetailMapper.updatePayableFeeDetailBatch(payableFeeDetails);
    }
    /**
     * 删除应付费用明细对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deletePayableFeeDetailByIds(String ids)
    {
        return deletePayableFeeDetailByIds(Convert.toIntArray(ids));
    }
    /**
     * 删除应付费用明细对象
     *
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deletePayableFeeDetailByIds(Integer[] ids)
    {
        return payableFeeDetailMapper.deletePayableFeeDetailByIds(ids);
    }
    /**
     * 删除应付费用明细信息
     *
     * @param id 应付费用明细ID
     * @return 结果
     */
    @Override
    public int deletePayableFeeDetailById(Integer id)
    {
        return payableFeeDetailMapper.deletePayableFeeDetailById(id);
    }
}
service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java
New file
@@ -0,0 +1,182 @@
package com.ruoyi.cwgl.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.core.service.BaseService;
import com.ruoyi.cwgl.mapper.ReceivableFeeDetailMapper;
import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
import com.ruoyi.cwgl.service.IReceivableFeeDetailService;
import com.ruoyi.common.core.text.Convert;
/**
 * 应收费用明细Service业务层处理
 *
 * @author ruoyi
 * @date 2025-12-17
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ReceivableFeeDetailServiceImpl  extends BaseService<ReceivableFeeDetailMapper, ReceivableFeeDetail> implements IReceivableFeeDetailService
{
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Resource
    private ReceivableFeeDetailMapper receivableFeeDetailMapper;
    /**
     * 查询应收费用明细
     *
     * @param id 应收费用明细ID
     * @return 应收费用明细
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id)
    {
        return receivableFeeDetailMapper.selectReceivableFeeDetailById(id);
    }
    /**
     * 查询应收费用明细 记录数
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail)
    {
        return receivableFeeDetailMapper.selectReceivableFeeDetailCount(receivableFeeDetail);
    }
    /**
     * 查询应收费用明细列表
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 应收费用明细
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail)
    {
        return receivableFeeDetailMapper.selectReceivableFeeDetailList(receivableFeeDetail);
    }
    /**
     * 查询应收费用明细列表 异步 导出
     *
     * @param receivableFeeDetail 应收费用明细
     * @param exportKey 导出功能的唯一标识
     * @return 应收费用明细集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Async
    @Override
    public void export(ReceivableFeeDetail receivableFeeDetail,String exportKey) {
        super.export(ReceivableFeeDetail.class,exportKey,"receivableFeeDetailData",(pageNum)->{
            PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
            return selectReceivableFeeDetailList(receivableFeeDetail);
        });
    }
    /**
     * 新增应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    @Override
    public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail)
    {
        receivableFeeDetail.setCreateTime(DateUtils.getNowDate());
        return receivableFeeDetailMapper.insertReceivableFeeDetail(receivableFeeDetail);
    }
    /**
     * 新增应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    @Override
    public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails)
    {
        int rows = receivableFeeDetailMapper.insertReceivableFeeDetailBatch(receivableFeeDetails);
        return rows;
    }
    /**
     * 修改应收费用明细
     *
     * @param receivableFeeDetail 应收费用明细
     * @return 结果
     */
    @Override
    public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail)
    {
        receivableFeeDetail.setUpdateTime(DateUtils.getNowDate());
        return receivableFeeDetailMapper.updateReceivableFeeDetail(receivableFeeDetail);
    }
    /**
     * 修改应收费用明细[批量]
     *
     * @param receivableFeeDetails 应收费用明细
     * @return 结果
     */
    @Override
    public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails){
        return receivableFeeDetailMapper.updateReceivableFeeDetailBatch(receivableFeeDetails);
    }
    /**
     * 删除应收费用明细对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteReceivableFeeDetailByIds(String ids)
    {
        return deleteReceivableFeeDetailByIds(Convert.toIntArray(ids));
    }
    /**
     * 删除应收费用明细对象
     *
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteReceivableFeeDetailByIds(Integer[] ids)
    {
        return receivableFeeDetailMapper.deleteReceivableFeeDetailByIds(ids);
    }
    /**
     * 删除应收费用明细信息
     *
     * @param id 应收费用明细ID
     * @return 结果
     */
    @Override
    public int deleteReceivableFeeDetailById(Integer id)
    {
        return receivableFeeDetailMapper.deleteReceivableFeeDetailById(id);
    }
}
service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml
New file
@@ -0,0 +1,182 @@
<?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.ruoyi.cwgl.mapper.PayableFeeDetailMapper">
    <resultMap type="com.ruoyi.cwgl.domain.PayableFeeDetail" id="PayableFeeDetailResult">
        <result property="id"    column="id"    />
        <result property="payableFeeId"    column="payable_fee_id"    />
        <result property="feeType"    column="fee_type"    />
        <result property="feeName"    column="fee_name"    />
        <result property="billingUnit"    column="billing_unit"    />
        <result property="unitPrice"    column="unit_price"    />
        <result property="billingQuantity"    column="billing_quantity"    />
        <result property="billingAmount"    column="billing_amount"    />
        <result property="actualAmount"    column="actual_amount"    />
        <result property="currency"    column="currency"    />
        <result property="feeRegTime"    column="fee_reg_time"    />
        <result property="remark"    column="remark"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="deleted"    column="deleted"    />
    </resultMap>
    <sql id="selectPayableFeeDetailVo">
        select thisTab.id, thisTab.payable_fee_id, thisTab.fee_type, thisTab.fee_name, thisTab.billing_unit, thisTab.unit_price, thisTab.billing_quantity, thisTab.billing_amount, thisTab.actual_amount, thisTab.currency, thisTab.fee_reg_time, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from payable_fee_detail AS thisTab
    </sql>
    <sql id="selectPayableFeeDetailVoCount">
        select count(0) from payable_fee_detail as thisTab
    </sql>
    <sql id="whereCondition">
        <if test="payableFeeId != null "> and thisTab.payable_fee_id = #{payableFeeId}</if>
        <if test="feeType != null  and feeType != ''"> and thisTab.fee_type = #{feeType}</if>
        <if test="feeName != null  and feeName != ''"> and  thisTab.fee_name like concat('%', #{feeName}, '%')</if>
        <if test="billingUnit != null  and billingUnit != ''"> and thisTab.billing_unit = #{billingUnit}</if>
        <if test="unitPrice != null "> and thisTab.unit_price = #{unitPrice}</if>
        <if test="billingQuantity != null "> and thisTab.billing_quantity = #{billingQuantity}</if>
        <if test="billingAmount != null "> and thisTab.billing_amount = #{billingAmount}</if>
        <if test="actualAmount != null "> and thisTab.actual_amount = #{actualAmount}</if>
        <if test="currency != null  and currency != ''"> and thisTab.currency = #{currency}</if>
        <if test="feeRegTime != null "> and thisTab.fee_reg_time = #{feeRegTime}</if>
        <if test="deleted != null "> and thisTab.deleted = #{deleted}</if>
    </sql>
    <!--查询-->
    <select id="selectPayableFeeDetailById" parameterType="Integer" resultMap="PayableFeeDetailResult">
        <include refid="selectPayableFeeDetailVo"/>
        where id = #{id}
    </select>
    <select id="selectPayableFeeDetailCount" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail" resultType="int">
        <include refid="selectPayableFeeDetailVoCount"/>
        <where>
            <include refid="whereCondition"/>
        </where>
    </select>
    <select id="selectPayableFeeDetailList" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail" resultMap="PayableFeeDetailResult">
        <include refid="selectPayableFeeDetailVo"/>
        <where>
            <include refid="whereCondition"/>
        </where>
        order by thisTab.id desc
    </select>
    <!-- 新增 -->
    <insert id="insertPayableFeeDetail" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail"  useGeneratedKeys="true" keyProperty="id">
        insert into payable_fee_detail
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="payableFeeId != null">payable_fee_id,</if>
            <if test="feeType != null and feeType != ''">fee_type,</if>
            <if test="feeName != null and feeName != ''">fee_name,</if>
            <if test="billingUnit != null">billing_unit,</if>
            <if test="unitPrice != null">unit_price,</if>
            <if test="billingQuantity != null">billing_quantity,</if>
            <if test="billingAmount != null">billing_amount,</if>
            <if test="actualAmount != null">actual_amount,</if>
            <if test="currency != null">currency,</if>
            <if test="feeRegTime != null">fee_reg_time,</if>
            <if test="remark != null">remark,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="deleted != null">deleted,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="payableFeeId != null">#{payableFeeId},</if>
            <if test="feeType != null and feeType != ''">#{feeType},</if>
            <if test="feeName != null and feeName != ''">#{feeName},</if>
            <if test="billingUnit != null">#{billingUnit},</if>
            <if test="unitPrice != null">#{unitPrice},</if>
            <if test="billingQuantity != null">#{billingQuantity},</if>
            <if test="billingAmount != null">#{billingAmount},</if>
            <if test="actualAmount != null">#{actualAmount},</if>
            <if test="currency != null">#{currency},</if>
            <if test="feeRegTime != null">#{feeRegTime},</if>
            <if test="remark != null">#{remark},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="deleted != null">#{deleted},</if>
         </trim>
    </insert>
    <insert id="insertPayableFeeDetailBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
        insert into payable_fee_detail
        <trim prefix="(" suffix=") values" suffixOverrides=",">
            id,payable_fee_id,fee_type,fee_name,billing_unit,unit_price,billing_quantity,billing_amount,actual_amount,currency,fee_reg_time,remark,create_by,create_time,update_by,update_time,deleted,
        </trim>
        <foreach item="item" index="index" collection="list" separator=",">
            <trim prefix="(" suffix=") " suffixOverrides=",">
                #{item.id},#{item.payableFeeId},#{item.feeType},#{item.feeName},#{item.billingUnit},#{item.unitPrice},#{item.billingQuantity},#{item.billingAmount},#{item.actualAmount},#{item.currency},#{item.feeRegTime},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
            </trim>
        </foreach>
    </insert>
    <!-- 修改 -->
    <update id="updatePayableFeeDetail" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail">
        update payable_fee_detail
        <trim prefix="SET" suffixOverrides=",">
            <if test="payableFeeId != null">payable_fee_id = #{payableFeeId},</if>
            <if test="feeType != null and feeType != ''">fee_type = #{feeType},</if>
            <if test="feeName != null and feeName != ''">fee_name = #{feeName},</if>
            <if test="billingUnit != null">billing_unit = #{billingUnit},</if>
            <if test="unitPrice != null">unit_price = #{unitPrice},</if>
            <if test="billingQuantity != null">billing_quantity = #{billingQuantity},</if>
            <if test="billingAmount != null">billing_amount = #{billingAmount},</if>
            <if test="actualAmount != null">actual_amount = #{actualAmount},</if>
            <if test="currency != null">currency = #{currency},</if>
            <if test="feeRegTime != null">fee_reg_time = #{feeRegTime},</if>
            <if test="remark != null">remark = #{remark},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="deleted != null">deleted = #{deleted},</if>
        </trim>
        where id = #{id}
    </update>
    <!-- 修改 -->
    <update id="updatePayableFeeDetailBatch" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" separator=";">
            update payable_fee_detail
            <trim prefix="SET" suffixOverrides=",">
                <if test="item.payableFeeId != null">payable_fee_id = #{item.payableFeeId},</if>
                <if test="item.feeType != null and item.feeType != ''">fee_type = #{item.feeType},</if>
                <if test="item.feeName != null and item.feeName != ''">fee_name = #{item.feeName},</if>
                <if test="item.billingUnit != null">billing_unit = #{item.billingUnit},</if>
                <if test="item.unitPrice != null">unit_price = #{item.unitPrice},</if>
                <if test="item.billingQuantity != null">billing_quantity = #{item.billingQuantity},</if>
                <if test="item.billingAmount != null">billing_amount = #{item.billingAmount},</if>
                <if test="item.actualAmount != null">actual_amount = #{item.actualAmount},</if>
                <if test="item.currency != null">currency = #{item.currency},</if>
                <if test="item.feeRegTime != null">fee_reg_time = #{item.feeRegTime},</if>
                <if test="item.remark != null">remark = #{item.remark},</if>
                <if test="item.createBy != null">create_by = #{item.createBy},</if>
                <if test="item.createTime != null">create_time = #{item.createTime},</if>
                <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
                <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
                <if test="item.deleted != null">deleted = #{item.deleted},</if>
            </trim>
        where id = #{item.id}
        </foreach>
    </update>
    <!--删除-->
    <delete id="deletePayableFeeDetailById" parameterType="Integer">
        delete from payable_fee_detail where id = #{id}
    </delete>
    <delete id="deletePayableFeeDetailByIds" parameterType="Integer">
        delete from payable_fee_detail where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml
New file
@@ -0,0 +1,182 @@
<?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.ruoyi.cwgl.mapper.ReceivableFeeDetailMapper">
    <resultMap type="com.ruoyi.cwgl.domain.ReceivableFeeDetail" id="ReceivableFeeDetailResult">
        <result property="id"    column="id"    />
        <result property="receivableFeeId"    column="receivable_fee_id"    />
        <result property="feeType"    column="fee_type"    />
        <result property="feeName"    column="fee_name"    />
        <result property="billingUnit"    column="billing_unit"    />
        <result property="unitPrice"    column="unit_price"    />
        <result property="billingQuantity"    column="billing_quantity"    />
        <result property="billingAmount"    column="billing_amount"    />
        <result property="actualAmount"    column="actual_amount"    />
        <result property="currency"    column="currency"    />
        <result property="feeRegTime"    column="fee_reg_time"    />
        <result property="remark"    column="remark"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="deleted"    column="deleted"    />
    </resultMap>
    <sql id="selectReceivableFeeDetailVo">
        select thisTab.id, thisTab.receivable_fee_id, thisTab.fee_type, thisTab.fee_name, thisTab.billing_unit, thisTab.unit_price, thisTab.billing_quantity, thisTab.billing_amount, thisTab.actual_amount, thisTab.currency, thisTab.fee_reg_time, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from receivable_fee_detail AS thisTab
    </sql>
    <sql id="selectReceivableFeeDetailVoCount">
        select count(0) from receivable_fee_detail as thisTab
    </sql>
    <sql id="whereCondition">
        <if test="receivableFeeId != null "> and thisTab.receivable_fee_id = #{receivableFeeId}</if>
        <if test="feeType != null  and feeType != ''"> and thisTab.fee_type = #{feeType}</if>
        <if test="feeName != null  and feeName != ''"> and  thisTab.fee_name like concat('%', #{feeName}, '%')</if>
        <if test="billingUnit != null  and billingUnit != ''"> and thisTab.billing_unit = #{billingUnit}</if>
        <if test="unitPrice != null "> and thisTab.unit_price = #{unitPrice}</if>
        <if test="billingQuantity != null "> and thisTab.billing_quantity = #{billingQuantity}</if>
        <if test="billingAmount != null "> and thisTab.billing_amount = #{billingAmount}</if>
        <if test="actualAmount != null "> and thisTab.actual_amount = #{actualAmount}</if>
        <if test="currency != null  and currency != ''"> and thisTab.currency = #{currency}</if>
        <if test="feeRegTime != null "> and thisTab.fee_reg_time = #{feeRegTime}</if>
        <if test="deleted != null "> and thisTab.deleted = #{deleted}</if>
    </sql>
    <!--查询-->
    <select id="selectReceivableFeeDetailById" parameterType="Integer" resultMap="ReceivableFeeDetailResult">
        <include refid="selectReceivableFeeDetailVo"/>
        where id = #{id}
    </select>
    <select id="selectReceivableFeeDetailCount" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail" resultType="int">
        <include refid="selectReceivableFeeDetailVoCount"/>
        <where>
            <include refid="whereCondition"/>
        </where>
    </select>
    <select id="selectReceivableFeeDetailList" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail" resultMap="ReceivableFeeDetailResult">
        <include refid="selectReceivableFeeDetailVo"/>
        <where>
            <include refid="whereCondition"/>
        </where>
        order by thisTab.id desc
    </select>
    <!-- 新增 -->
    <insert id="insertReceivableFeeDetail" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail"  useGeneratedKeys="true" keyProperty="id">
        insert into receivable_fee_detail
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="receivableFeeId != null">receivable_fee_id,</if>
            <if test="feeType != null and feeType != ''">fee_type,</if>
            <if test="feeName != null and feeName != ''">fee_name,</if>
            <if test="billingUnit != null">billing_unit,</if>
            <if test="unitPrice != null">unit_price,</if>
            <if test="billingQuantity != null">billing_quantity,</if>
            <if test="billingAmount != null">billing_amount,</if>
            <if test="actualAmount != null">actual_amount,</if>
            <if test="currency != null">currency,</if>
            <if test="feeRegTime != null">fee_reg_time,</if>
            <if test="remark != null">remark,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="deleted != null">deleted,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="receivableFeeId != null">#{receivableFeeId},</if>
            <if test="feeType != null and feeType != ''">#{feeType},</if>
            <if test="feeName != null and feeName != ''">#{feeName},</if>
            <if test="billingUnit != null">#{billingUnit},</if>
            <if test="unitPrice != null">#{unitPrice},</if>
            <if test="billingQuantity != null">#{billingQuantity},</if>
            <if test="billingAmount != null">#{billingAmount},</if>
            <if test="actualAmount != null">#{actualAmount},</if>
            <if test="currency != null">#{currency},</if>
            <if test="feeRegTime != null">#{feeRegTime},</if>
            <if test="remark != null">#{remark},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="deleted != null">#{deleted},</if>
         </trim>
    </insert>
    <insert id="insertReceivableFeeDetailBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
        insert into receivable_fee_detail
        <trim prefix="(" suffix=") values" suffixOverrides=",">
            id,receivable_fee_id,fee_type,fee_name,billing_unit,unit_price,billing_quantity,billing_amount,actual_amount,currency,fee_reg_time,remark,create_by,create_time,update_by,update_time,deleted,
        </trim>
        <foreach item="item" index="index" collection="list" separator=",">
            <trim prefix="(" suffix=") " suffixOverrides=",">
                #{item.id},#{item.receivableFeeId},#{item.feeType},#{item.feeName},#{item.billingUnit},#{item.unitPrice},#{item.billingQuantity},#{item.billingAmount},#{item.actualAmount},#{item.currency},#{item.feeRegTime},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
            </trim>
        </foreach>
    </insert>
    <!-- 修改 -->
    <update id="updateReceivableFeeDetail" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail">
        update receivable_fee_detail
        <trim prefix="SET" suffixOverrides=",">
            <if test="receivableFeeId != null">receivable_fee_id = #{receivableFeeId},</if>
            <if test="feeType != null and feeType != ''">fee_type = #{feeType},</if>
            <if test="feeName != null and feeName != ''">fee_name = #{feeName},</if>
            <if test="billingUnit != null">billing_unit = #{billingUnit},</if>
            <if test="unitPrice != null">unit_price = #{unitPrice},</if>
            <if test="billingQuantity != null">billing_quantity = #{billingQuantity},</if>
            <if test="billingAmount != null">billing_amount = #{billingAmount},</if>
            <if test="actualAmount != null">actual_amount = #{actualAmount},</if>
            <if test="currency != null">currency = #{currency},</if>
            <if test="feeRegTime != null">fee_reg_time = #{feeRegTime},</if>
            <if test="remark != null">remark = #{remark},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="deleted != null">deleted = #{deleted},</if>
        </trim>
        where id = #{id}
    </update>
    <!-- 修改 -->
    <update id="updateReceivableFeeDetailBatch" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" separator=";">
            update receivable_fee_detail
            <trim prefix="SET" suffixOverrides=",">
                <if test="item.receivableFeeId != null">receivable_fee_id = #{item.receivableFeeId},</if>
                <if test="item.feeType != null and item.feeType != ''">fee_type = #{item.feeType},</if>
                <if test="item.feeName != null and item.feeName != ''">fee_name = #{item.feeName},</if>
                <if test="item.billingUnit != null">billing_unit = #{item.billingUnit},</if>
                <if test="item.unitPrice != null">unit_price = #{item.unitPrice},</if>
                <if test="item.billingQuantity != null">billing_quantity = #{item.billingQuantity},</if>
                <if test="item.billingAmount != null">billing_amount = #{item.billingAmount},</if>
                <if test="item.actualAmount != null">actual_amount = #{item.actualAmount},</if>
                <if test="item.currency != null">currency = #{item.currency},</if>
                <if test="item.feeRegTime != null">fee_reg_time = #{item.feeRegTime},</if>
                <if test="item.remark != null">remark = #{item.remark},</if>
                <if test="item.createBy != null">create_by = #{item.createBy},</if>
                <if test="item.createTime != null">create_time = #{item.createTime},</if>
                <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
                <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
                <if test="item.deleted != null">deleted = #{item.deleted},</if>
            </trim>
        where id = #{item.id}
        </foreach>
    </update>
    <!--删除-->
    <delete id="deleteReceivableFeeDetailById" parameterType="Integer">
        delete from receivable_fee_detail where id = #{id}
    </delete>
    <delete id="deleteReceivableFeeDetailByIds" parameterType="Integer">
        delete from receivable_fee_detail where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts
New file
@@ -0,0 +1,67 @@
import request,{download,requestType} from "@/utils/request";
import {BaseEntityInterface} from "@/utils/globalInterface";
export interface PayableFeeDetailI extends BaseEntityInterface{
            id ?:  number   ,            payableFeeId ?:  number   ,            feeType ?:  string   ,            feeName ?:  string   ,            billingUnit ?:  string   ,            unitPrice ?:  string   ,            billingQuantity ?:  string   ,            billingAmount ?:  string   ,            actualAmount ?:  string   ,            currency ?:  string   ,            feeRegTime ?:  string   ,            remark ?:  string   ,            createBy ?:  string   ,            createTime ?:  string   ,            updateBy ?:  string   ,            updateTime ?:  string   ,            deleted ?:  number       }
/**
 * 查询应付费用明细列表
 */
export const listPayableFeeDetail:requestType = (query) => {
    return request({
        url: '/cwgl/payableFeeDetail/list',
        method:'get',
        params:query
    })
}
/**
 * 查询应付费用明细详细
 */
export const getPayableFeeDetail:requestType = (id) => {
    return request({
        url: '/cwgl/payableFeeDetail/' + id,
        method:'get'
    })
}
/**
 * 新增应付费用明细
 */
export const addPayableFeeDetail:requestType = (data) => {
    return request({
        url: '/cwgl/payableFeeDetail',
        method: 'post',
        data
    })
}
/**
 * 修改应付费用明细
 */
export const updatePayableFeeDetail:requestType = (data) => {
    return request({
        url: '/cwgl/payableFeeDetail',
        method: 'put',
        data
    })
}
/**
 * 删除应付费用明细
 */
export const delPayableFeeDetail:requestType = (id) => {
    return request({
        url: '/cwgl/payableFeeDetail/' + id,
        method: 'delete'
    })
}
/**
 * 导出应付费用明细
 */
export const exportPayableFeeDetail:requestType = (query) => {
    return new Promise<any>(()=>{
        download('/cwgl/payableFeeDetail/export',query);
    })
}
ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts
New file
@@ -0,0 +1,67 @@
import request,{download,requestType} from "@/utils/request";
import {BaseEntityInterface} from "@/utils/globalInterface";
export interface ReceivableFeeDetailI extends BaseEntityInterface{
            id ?:  number   ,            receivableFeeId ?:  number   ,            feeType ?:  string   ,            feeName ?:  string   ,            billingUnit ?:  string   ,            unitPrice ?:  string   ,            billingQuantity ?:  string   ,            billingAmount ?:  string   ,            actualAmount ?:  string   ,            currency ?:  string   ,            feeRegTime ?:  string   ,            remark ?:  string   ,            createBy ?:  string   ,            createTime ?:  string   ,            updateBy ?:  string   ,            updateTime ?:  string   ,            deleted ?:  number       }
/**
 * 查询应收费用明细列表
 */
export const listReceivableFeeDetail:requestType = (query) => {
    return request({
        url: '/cwgl/receivableFeeDetail/list',
        method:'get',
        params:query
    })
}
/**
 * 查询应收费用明细详细
 */
export const getReceivableFeeDetail:requestType = (id) => {
    return request({
        url: '/cwgl/receivableFeeDetail/' + id,
        method:'get'
    })
}
/**
 * 新增应收费用明细
 */
export const addReceivableFeeDetail:requestType = (data) => {
    return request({
        url: '/cwgl/receivableFeeDetail',
        method: 'post',
        data
    })
}
/**
 * 修改应收费用明细
 */
export const updateReceivableFeeDetail:requestType = (data) => {
    return request({
        url: '/cwgl/receivableFeeDetail',
        method: 'put',
        data
    })
}
/**
 * 删除应收费用明细
 */
export const delReceivableFeeDetail:requestType = (id) => {
    return request({
        url: '/cwgl/receivableFeeDetail/' + id,
        method: 'delete'
    })
}
/**
 * 导出应收费用明细
 */
export const exportReceivableFeeDetail:requestType = (query) => {
    return new Promise<any>(()=>{
        download('/cwgl/receivableFeeDetail/export',query);
    })
}
ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue
New file
@@ -0,0 +1,177 @@
<template>
  <basicContainer >
    <avue-crud
        :option="option"
        :table-loading="pageF.loading"
        :data="tableData"
        :page="page"
        :permission="permissionList"
        :before-open="beforeOpen"
        v-model="form"
        ref="crudRef"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @refresh-change="refreshChange"
        @row-del="rowDel"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @on-load="onLoad"
    >
      <template #menu-left>
        <el-button
            type="success"
            icon="Edit"
            :disabled="pageF.single"
            v-hasPermi="['cwgl:payableFeeDetail:edit']"
            @click="handleUpdate">修改
        </el-button>
        <el-button
            type="danger"
            icon="Delete"
            :disabled="pageF.multiple"
            @click="handleDelete"
            v-hasPermi="['cwgl:payableFeeDetail:remove']"
        >删除
        </el-button>
        <el-button
            type="warning"
            plain
            icon="Download"
            @click="handleExport"
            v-hasPermi="['cwgl:payableFeeDetail:export']"
        >导出
        </el-button>
      </template>
    </avue-crud>
  </basicContainer>
</template>
<script setup name="payableFeeDetail" lang="ts">
  import {PayableFeeDetailI,addPayableFeeDetail, delPayableFeeDetail, exportPayableFeeDetail, getPayableFeeDetail, listPayableFeeDetail, updatePayableFeeDetail} from "@/api/cwgl/payableFeeDetail";
  import useCurrentInstance from "@/utils/useCurrentInstance";
  import {computed,reactive, ref, toRefs} from "vue";
  import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
  import {usePagePlus} from "@/hooks/usePagePlus";
  import {hasPermission} from "@/utils/permissionUtils";
  const { proxy } = useCurrentInstance();
  const crudRef = ref();
  const permissionList = computed(()=>{
    return {
      addBtn: hasPermission(["cwgl:payableFeeDetail:add"]),
      delBtn: hasPermission(["cwgl:payableFeeDetail:remove"]),
      editBtn: hasPermission(["cwgl:payableFeeDetail:edit"]),
      viewBtn: hasPermission(["cwgl:payableFeeDetail:query"]),
    }
  })
  const data = reactive({
    form:<PayableFeeDetailI>{},
    queryParams:<PayableFeeDetailI&PageQueryInterface>{},
    page: <PagesInterface>{
      pageSize: 10,
      total: 0,
      currentPage: 1,
    },
    selectionList:[],
  })
  const {queryParams,form,page,selectionList} = toRefs(data);
  const option = ref({
    pageKey: 'PayableFeeDetail',
    rowKey: 'id',
    column: {
                                id: {
          label: 'ID',
                            },
                                payableFeeId: {
          label: '应付费用管理ID',
                                rules: [
              {
                required: true,
                message: "应付费用管理ID不能为空", trigger: "blur" }
            ],                  },
                                feeType: {
          label: '费用类型',
                                rules: [
              {
                required: true,
                message: "费用类型不能为空", trigger: "change"
                 }
            ],                  },
                                feeName: {
          label: '费用名称',
                                rules: [
              {
                required: true,
                message: "费用名称不能为空", trigger: "blur" }
            ],                  },
                                billingUnit: {
          label: '计费单位',
                            },
                                unitPrice: {
          label: '计费单价',
                            },
                                billingQuantity: {
          label: '计费数量',
                            },
                                billingAmount: {
          label: '计费金额',
                            },
                                actualAmount: {
          label: '实付金额',
                            },
                                currency: {
          label: '币制',
                            },
                                feeRegTime: {
          label: '费用登记时间',
                            },
                                remark: {
          label: '备注',
                      type: 'textarea', minRows: 3, maxRows: 5,
                            },
                                createBy: {
          label: '创建人',
                            },
                                createTime: {
          label: '创建时间',
                            },
                                updateBy: {
          label: '更新人',
                            },
                                updateTime: {
          label: '更新时间',
                            },
                                deleted: {
          label: '删除标记(0:正常;1:删除)',
                            },
          }
  })
  const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
    searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
    form:form,
    option:option,
    queryParams:queryParams,
    idKey:'id',
    page:page.value,
    getListApi:listPayableFeeDetail,
    getDetailApi:getPayableFeeDetail,
    exportApi:exportPayableFeeDetail,
    deleteApi:delPayableFeeDetail,
    addApi:addPayableFeeDetail,
    updateApi:updatePayableFeeDetail,
    handleUpdateFunc:()=>{
      crudRef.value.rowEdit(selectionList.value[0]);
    },
    handleSelectionChangeFunc:(selection:any)=>{
      selectionList.value = selection;
    }
  })
</script>
ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue
New file
@@ -0,0 +1,177 @@
<template>
  <basicContainer >
    <avue-crud
        :option="option"
        :table-loading="pageF.loading"
        :data="tableData"
        :page="page"
        :permission="permissionList"
        :before-open="beforeOpen"
        v-model="form"
        ref="crudRef"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @refresh-change="refreshChange"
        @row-del="rowDel"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @on-load="onLoad"
    >
      <template #menu-left>
        <el-button
            type="success"
            icon="Edit"
            :disabled="pageF.single"
            v-hasPermi="['cwgl:receivableFeeDetail:edit']"
            @click="handleUpdate">修改
        </el-button>
        <el-button
            type="danger"
            icon="Delete"
            :disabled="pageF.multiple"
            @click="handleDelete"
            v-hasPermi="['cwgl:receivableFeeDetail:remove']"
        >删除
        </el-button>
        <el-button
            type="warning"
            plain
            icon="Download"
            @click="handleExport"
            v-hasPermi="['cwgl:receivableFeeDetail:export']"
        >导出
        </el-button>
      </template>
    </avue-crud>
  </basicContainer>
</template>
<script setup name="receivableFeeDetail" lang="ts">
  import {ReceivableFeeDetailI,addReceivableFeeDetail, delReceivableFeeDetail, exportReceivableFeeDetail, getReceivableFeeDetail, listReceivableFeeDetail, updateReceivableFeeDetail} from "@/api/cwgl/receivableFeeDetail";
  import useCurrentInstance from "@/utils/useCurrentInstance";
  import {computed,reactive, ref, toRefs} from "vue";
  import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
  import {usePagePlus} from "@/hooks/usePagePlus";
  import {hasPermission} from "@/utils/permissionUtils";
  const { proxy } = useCurrentInstance();
  const crudRef = ref();
  const permissionList = computed(()=>{
    return {
      addBtn: hasPermission(["cwgl:receivableFeeDetail:add"]),
      delBtn: hasPermission(["cwgl:receivableFeeDetail:remove"]),
      editBtn: hasPermission(["cwgl:receivableFeeDetail:edit"]),
      viewBtn: hasPermission(["cwgl:receivableFeeDetail:query"]),
    }
  })
  const data = reactive({
    form:<ReceivableFeeDetailI>{},
    queryParams:<ReceivableFeeDetailI&PageQueryInterface>{},
    page: <PagesInterface>{
      pageSize: 10,
      total: 0,
      currentPage: 1,
    },
    selectionList:[],
  })
  const {queryParams,form,page,selectionList} = toRefs(data);
  const option = ref({
    pageKey: 'ReceivableFeeDetail',
    rowKey: 'id',
    column: {
                                id: {
          label: 'ID',
                            },
                                receivableFeeId: {
          label: '应收费用管理ID',
                                rules: [
              {
                required: true,
                message: "应收费用管理ID不能为空", trigger: "blur" }
            ],                  },
                                feeType: {
          label: '费用类型',
                                rules: [
              {
                required: true,
                message: "费用类型不能为空", trigger: "change"
                 }
            ],                  },
                                feeName: {
          label: '费用名称',
                                rules: [
              {
                required: true,
                message: "费用名称不能为空", trigger: "blur" }
            ],                  },
                                billingUnit: {
          label: '计费单位',
                            },
                                unitPrice: {
          label: '计费单价',
                            },
                                billingQuantity: {
          label: '计费数量',
                            },
                                billingAmount: {
          label: '计费金额',
                            },
                                actualAmount: {
          label: '实收金额',
                            },
                                currency: {
          label: '币制',
                            },
                                feeRegTime: {
          label: '费用登记时间',
                            },
                                remark: {
          label: '备注',
                      type: 'textarea', minRows: 3, maxRows: 5,
                            },
                                createBy: {
          label: '创建人',
                            },
                                createTime: {
          label: '创建时间',
                            },
                                updateBy: {
          label: '更新人',
                            },
                                updateTime: {
          label: '更新时间',
                            },
                                deleted: {
          label: '删除标记(0:正常;1:删除)',
                            },
          }
  })
  const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
    searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
    form:form,
    option:option,
    queryParams:queryParams,
    idKey:'id',
    page:page.value,
    getListApi:listReceivableFeeDetail,
    getDetailApi:getReceivableFeeDetail,
    exportApi:exportReceivableFeeDetail,
    deleteApi:delReceivableFeeDetail,
    addApi:addReceivableFeeDetail,
    updateApi:updateReceivableFeeDetail,
    handleUpdateFunc:()=>{
      crudRef.value.rowEdit(selectionList.value[0]);
    },
    handleSelectionChangeFunc:(selection:any)=>{
      selectionList.value = selection;
    }
  })
</script>