24282 il y a 11 mois
Parent
commit
87fe04ff47
16 fichiers modifiés avec 884 ajouts et 3 suppressions
  1. 74 0
      jy-business/src/main/java/com/jy/business/capital/controller/CapitalAccountController.java
  2. 76 0
      jy-business/src/main/java/com/jy/business/capital/dao/CapitalAccountDao.java
  3. 16 0
      jy-business/src/main/java/com/jy/business/capital/mapper/CapitalAccountMapper.java
  4. 5 0
      jy-business/src/main/java/com/jy/business/capital/mapper/xml/CapitalAccountMapper.xml
  5. 17 0
      jy-business/src/main/java/com/jy/business/capital/model/dto/CapitalAccountDto.java
  6. 47 0
      jy-business/src/main/java/com/jy/business/capital/model/dto/CapitalAccountSelectDto.java
  7. 104 0
      jy-business/src/main/java/com/jy/business/capital/model/entity/CapitalAccount.java
  8. 94 0
      jy-business/src/main/java/com/jy/business/capital/model/table/CapitalAccountTable.java
  9. 22 0
      jy-business/src/main/java/com/jy/business/capital/model/vo/CapitalAccountVo.java
  10. 45 0
      jy-business/src/main/java/com/jy/business/capital/service/CapitalAccountService.java
  11. 61 0
      jy-business/src/main/java/com/jy/business/capital/service/impl/CapitalAccountServiceImpl.java
  12. 2 0
      jy-business/src/main/java/com/jy/business/corporation/dao/CorporationDao.java
  13. 10 2
      jy-business/src/main/java/com/jy/business/corporation/model/entity/Corporation.java
  14. 10 1
      jy-business/src/main/java/com/jy/business/corporation/service/impl/CorporationServiceImpl.java
  15. 27 0
      jy-ui/src/api/business/capital/account.ts
  16. 274 0
      jy-ui/src/views/business/capital/account/index.vue

+ 74 - 0
jy-business/src/main/java/com/jy/business/capital/controller/CapitalAccountController.java

@@ -0,0 +1,74 @@
+package com.jy.business.capital.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.model.dto.CapitalAccountDto;
+import com.jy.business.capital.model.dto.CapitalAccountSelectDto;
+import com.jy.business.capital.model.vo.CapitalAccountVo;
+import com.jy.business.capital.service.CapitalAccountService;
+import com.jy.framework.model.base.BaseSelectDto;
+import com.jy.framework.model.validation.AddGroup;
+import com.jy.framework.model.validation.EditGroup;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+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-16
+ */
+@RestController
+@RequestMapping("/capitalAccount")
+public class CapitalAccountController {
+
+    @Resource
+    private CapitalAccountService capitalAccountService;
+
+    /**
+     * 资金账户分页
+     */
+    @GetMapping("/getPage")
+    public Page<CapitalAccountVo> getPage(CapitalAccountSelectDto dto) {
+        return capitalAccountService.getPage(dto);
+    }
+
+    /**
+     * 资金账户明细
+     */
+    @GetMapping("/getDetail")
+    public CapitalAccountVo getDetail(BaseSelectDto dto) {
+        return capitalAccountService.getDetail(dto.getId());
+    }
+
+    /**
+     * 资金账户新增
+     */
+    @PostMapping("/add")
+    public void add(@Validated(AddGroup.class) @RequestBody CapitalAccountDto dto) {
+        capitalAccountService.add(dto);
+    }
+
+    /**
+     * 资金账户编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@Validated(EditGroup.class) @RequestBody CapitalAccountDto dto) {
+        capitalAccountService.edit(dto);
+    }
+
+    /**
+     * 资金账户删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        capitalAccountService.delete(dto.getIdList());
+    }
+
+}

+ 76 - 0
jy-business/src/main/java/com/jy/business/capital/dao/CapitalAccountDao.java

@@ -0,0 +1,76 @@
+package com.jy.business.capital.dao;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.mapper.CapitalAccountMapper;
+import com.jy.business.capital.model.dto.CapitalAccountSelectDto;
+import com.jy.business.capital.model.entity.CapitalAccount;
+import com.jy.business.capital.model.table.CapitalAccountTable;
+import com.jy.business.capital.model.vo.CapitalAccountVo;
+import com.jy.business.corporation.model.table.CorporationTable;
+import com.jy.framework.model.base.BaseDao;
+import com.jy.system.service.AuthService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CapitalAccountDao extends BaseDao<CapitalAccountMapper, CapitalAccount> {
+
+    @Resource
+    private AuthService authService;
+
+    /**
+     * 资金账户分页
+     */
+    public Page<CapitalAccountVo> getPage(CapitalAccountSelectDto dto) {
+        CapitalAccountTable ca = CapitalAccountTable.ca;
+        CorporationTable c = CorporationTable.c;
+
+        return sql(CapitalAccountVo.class)
+                .select(
+                        ca.all,
+                        c.name.as(CapitalAccountVo::getCorporationName)
+                )
+                .from(ca)
+                .leftJoin(c).on(ca.corporationId.eq(c.id))
+                .where(
+                        ca.createUser.in(authService.getUserPermissionSet()),
+                        ca.corporationId.eq(dto.getCorporationId()),
+                        ca.accountAlias.like(dto.getAccountAlias()),
+                        ca.depositBank.like(dto.getDepositBank()),
+                        ca.accountName.like(dto.getAccountName()),
+                        ca.account.like(dto.getAccount()),
+                        ca.correspondentNumber.like(dto.getCorrespondentNumber())
+                )
+                .orderBy(
+                        ca.id.desc()
+                )
+                .page(dto.getPage());
+    }
+
+    /**
+     * 资金账户明细
+     */
+    public CapitalAccountVo getDetail(Long id) {
+        CapitalAccountTable ca = CapitalAccountTable.ca;
+
+        return sql(CapitalAccountVo.class)
+                .select(
+                        ca.all
+                )
+                .from(ca)
+                .where(
+                        ca.id.eq(id)
+                )
+                .one();
+    }
+
+    /**
+     * 公司是否存在资金账户
+     */
+    public boolean corporationExists(List<Long> idList) {
+        return lambdaQuery().in(CapitalAccount::getCorporationId, idList).exists();
+    }
+
+}

+ 16 - 0
jy-business/src/main/java/com/jy/business/capital/mapper/CapitalAccountMapper.java

@@ -0,0 +1,16 @@
+package com.jy.business.capital.mapper;
+
+import com.jy.business.capital.model.entity.CapitalAccount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 资金账户 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-16
+ */
+public interface CapitalAccountMapper extends BaseMapper<CapitalAccount> {
+
+}

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/mapper/xml/CapitalAccountMapper.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.capital.mapper.CapitalAccountMapper">
+
+</mapper>

+ 17 - 0
jy-business/src/main/java/com/jy/business/capital/model/dto/CapitalAccountDto.java

@@ -0,0 +1,17 @@
+package com.jy.business.capital.model.dto;
+
+import com.jy.business.capital.model.entity.CapitalAccount;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金账户新增编辑入参实体
+ *
+ * @author 
+ * @since 2024-10-16
+ */
+@Getter
+@Setter
+public class CapitalAccountDto extends CapitalAccount {
+
+}

+ 47 - 0
jy-business/src/main/java/com/jy/business/capital/model/dto/CapitalAccountSelectDto.java

@@ -0,0 +1,47 @@
+package com.jy.business.capital.model.dto;
+
+import com.jy.framework.model.base.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金账户列表查询入参实体
+ *
+ * @author 
+ * @since 2024-10-16
+ */
+@Getter
+@Setter
+public class CapitalAccountSelectDto extends BaseSelectDto {
+
+    /**
+     * 公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 账户别名
+     */
+    private String accountAlias;
+
+    /**
+     * 开户银行
+     */
+    private String depositBank;
+
+    /**
+     * 账户名
+     */
+    private String accountName;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 联行号
+     */
+    private String correspondentNumber;
+
+}

+ 104 - 0
jy-business/src/main/java/com/jy/business/capital/model/entity/CapitalAccount.java

@@ -0,0 +1,104 @@
+package com.jy.business.capital.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 com.jy.framework.model.validation.AddGroup;
+import com.jy.framework.model.validation.EditGroup;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 资金账户
+ * </p>
+ *
+ * @author
+ * @since 2024-10-16
+ */
+@Getter
+@Setter
+@TableName("capital_account")
+public class CapitalAccount extends BaseIdPo {
+
+    /**
+     * 公司id
+     */
+    @NotNull(groups = {AddGroup.class, EditGroup.class})
+    private Long corporationId;
+
+    /**
+     * 账户别名
+     */
+    @NotBlank(groups = {AddGroup.class, EditGroup.class})
+    private String accountAlias;
+
+    /**
+     * 开户银行
+     */
+    private String depositBank;
+
+    /**
+     * 账户名
+     */
+    private String accountName;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 联行号
+     */
+    private String correspondentNumber;
+
+    /**
+     * 账户余额
+     */
+    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;
+
+}

+ 94 - 0
jy-business/src/main/java/com/jy/business/capital/model/table/CapitalAccountTable.java

@@ -0,0 +1,94 @@
+package com.jy.business.capital.model.table;
+
+import com.jy.business.capital.model.entity.CapitalAccount;
+import com.jy.framework.mybatis.join.QueryColumn;
+import com.jy.framework.mybatis.join.Table;
+
+public class CapitalAccountTable extends Table<CapitalAccount> {
+
+    public static CapitalAccountTable capital_account = new CapitalAccountTable();
+    public static CapitalAccountTable ca = capital_account.as("ca");
+
+    /**
+     * 资金账户id
+     */
+    public QueryColumn id = this.field(CapitalAccount::getId);
+
+    /**
+     * 公司id
+     */
+    public QueryColumn corporationId = this.field(CapitalAccount::getCorporationId);
+
+    /**
+     * 账户别名
+     */
+    public QueryColumn accountAlias = this.field(CapitalAccount::getAccountAlias);
+
+    /**
+     * 开户银行
+     */
+    public QueryColumn depositBank = this.field(CapitalAccount::getDepositBank);
+
+    /**
+     * 账户名
+     */
+    public QueryColumn accountName = this.field(CapitalAccount::getAccountName);
+
+    /**
+     * 账号
+     */
+    public QueryColumn account = this.field(CapitalAccount::getAccount);
+
+    /**
+     * 联行号
+     */
+    public QueryColumn correspondentNumber = this.field(CapitalAccount::getCorrespondentNumber);
+
+    /**
+     * 账户余额
+     */
+    public QueryColumn amount = this.field(CapitalAccount::getAmount);
+
+    /**
+     * 备注
+     */
+    public QueryColumn remark = this.field(CapitalAccount::getRemark);
+
+    /**
+     * 创建人
+     */
+    public QueryColumn createUser = this.field(CapitalAccount::getCreateUser);
+
+    /**
+     * 创建时间
+     */
+    public QueryColumn createTime = this.field(CapitalAccount::getCreateTime);
+
+    /**
+     * 更新人
+     */
+    public QueryColumn updateUser = this.field(CapitalAccount::getUpdateUser);
+
+    /**
+     * 更新时间
+     */
+    public QueryColumn updateTime = this.field(CapitalAccount::getUpdateTime);
+
+    /**
+     * 逻辑删除标记
+     */
+    public QueryColumn delFlag = this.field(CapitalAccount::getDelFlag);
+
+    private CapitalAccountTable() {
+        super(CapitalAccount.class);
+    }
+
+    private CapitalAccountTable(String alias) {
+        super(CapitalAccount.class, alias);
+    }
+
+    public CapitalAccountTable as(String alias) {
+        return new CapitalAccountTable(alias);
+    }
+
+}

+ 22 - 0
jy-business/src/main/java/com/jy/business/capital/model/vo/CapitalAccountVo.java

@@ -0,0 +1,22 @@
+package com.jy.business.capital.model.vo;
+
+import com.jy.business.capital.model.entity.CapitalAccount;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金账户列表查询返回值实体
+ *
+ * @author 
+ * @since 2024-10-16
+ */
+@Getter
+@Setter
+public class CapitalAccountVo extends CapitalAccount {
+
+    /**
+     * 公司名称
+     */
+    private String corporationName;
+
+}

+ 45 - 0
jy-business/src/main/java/com/jy/business/capital/service/CapitalAccountService.java

@@ -0,0 +1,45 @@
+package com.jy.business.capital.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.model.dto.CapitalAccountDto;
+import com.jy.business.capital.model.dto.CapitalAccountSelectDto;
+import com.jy.business.capital.model.vo.CapitalAccountVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 资金账户 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-10-16
+ */
+public interface CapitalAccountService {
+
+    /**
+     * 资金账户分页
+     */
+    Page<CapitalAccountVo> getPage(CapitalAccountSelectDto dto);
+
+    /**
+     * 资金账户明细
+     */
+    CapitalAccountVo getDetail(Long id);
+
+    /**
+     * 资金账户新增
+     */
+    void add(CapitalAccountDto dto);
+
+    /**
+     * 资金账户编辑
+     */
+    void edit(CapitalAccountDto dto);
+
+    /**
+     * 资金账户删除
+     */
+    void delete(List<Long> idList);
+
+}

+ 61 - 0
jy-business/src/main/java/com/jy/business/capital/service/impl/CapitalAccountServiceImpl.java

@@ -0,0 +1,61 @@
+package com.jy.business.capital.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.dao.CapitalAccountDao;
+import com.jy.business.capital.model.dto.CapitalAccountDto;
+import com.jy.business.capital.model.dto.CapitalAccountSelectDto;
+import com.jy.business.capital.model.vo.CapitalAccountVo;
+import com.jy.business.capital.service.CapitalAccountService;
+import com.jy.framework.utils.AssertUtil;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 资金账户 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-10-16
+ */
+@Service
+public class CapitalAccountServiceImpl implements CapitalAccountService {
+
+    @Resource
+    private CapitalAccountDao capitalAccountDao;
+
+    @Override
+    public Page<CapitalAccountVo> getPage(CapitalAccountSelectDto dto) {
+        return capitalAccountDao.getPage(dto);
+    }
+
+    @Override
+    public CapitalAccountVo getDetail(Long id) {
+        CapitalAccountVo vo = capitalAccountDao.getDetail(id);
+        AssertUtil.notNull(vo, "未知数据");
+        return vo;
+    }
+
+    @Override
+    public void add(CapitalAccountDto dto) {
+        dto.setAmount(BigDecimal.ZERO);
+        capitalAccountDao.save(dto);
+    }
+
+    @Override
+    public void edit(CapitalAccountDto dto) {
+        dto.setAmount(null);
+        capitalAccountDao.updateById(dto);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<Long> idList) {
+        capitalAccountDao.removeBatchByIds(idList);
+    }
+
+}

+ 2 - 0
jy-business/src/main/java/com/jy/business/corporation/dao/CorporationDao.java

@@ -11,6 +11,8 @@ import com.jy.system.service.AuthService;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class CorporationDao extends BaseDao<CorporationMapper, Corporation> {
 

+ 10 - 2
jy-business/src/main/java/com/jy/business/corporation/model/entity/Corporation.java

@@ -4,16 +4,21 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.jy.framework.model.base.BaseIdPo;
-import java.util.Date;
+import com.jy.framework.model.validation.AddGroup;
+import com.jy.framework.model.validation.EditGroup;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * <p>
  * 公司信息
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-10-16
  */
 @Getter
@@ -23,16 +28,19 @@ public class Corporation extends BaseIdPo {
     /**
      * 公司名称
      */
+    @NotBlank(groups = {AddGroup.class, EditGroup.class})
     private String name;
 
     /**
      * 企业类型
      */
+    @NotNull(groups = {AddGroup.class, EditGroup.class})
     private Integer type;
 
     /**
      * 统一信用代码
      */
+    @NotBlank(groups = {AddGroup.class, EditGroup.class})
     private String uscCode;
 
     /**

+ 10 - 1
jy-business/src/main/java/com/jy/business/corporation/service/impl/CorporationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jy.business.corporation.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.dao.CapitalAccountDao;
 import com.jy.business.corporation.dao.CorporationDao;
 import com.jy.business.corporation.model.dto.CorporationDto;
 import com.jy.business.corporation.model.dto.CorporationSelectDto;
@@ -18,7 +19,7 @@ import java.util.List;
  * 公司信息 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-10-16
  */
 @Service
@@ -27,6 +28,9 @@ public class CorporationServiceImpl implements CorporationService {
     @Resource
     private CorporationDao corporationDao;
 
+    @Resource
+    private CapitalAccountDao capitalAccountDao;
+
     @Override
     public Page<CorporationVo> getPage(CorporationSelectDto dto) {
         return corporationDao.getPage(dto);
@@ -52,6 +56,11 @@ public class CorporationServiceImpl implements CorporationService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(List<Long> idList) {
+        // 公司是否存在资金账户
+        boolean corporationExists = capitalAccountDao.corporationExists(idList);
+        AssertUtil.eqFalse(corporationExists, "存在资金账户,无法删除");
+
+        // 删除公司
         corporationDao.removeBatchByIds(idList);
     }
 

+ 27 - 0
jy-ui/src/api/business/capital/account.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('/capitalAccount/getPage', params)
+}
+
+// 资金账户明细
+export function getDetailApi(params: StrAnyObj): Promise<StrAnyObj> {
+  return request.get('/capitalAccount/getDetail', params)
+}
+
+// 资金账户新增
+export function addApi(data: StrAnyObj): Promise<void> {
+  return request.post('/capitalAccount/add', data)
+}
+
+// 资金账户编辑
+export function editApi(data: StrAnyObj): Promise<void> {
+  return request.post('/capitalAccount/edit', data)
+}
+
+// 资金账户删除
+export function deleteApi(data: StrAnyObj): Promise<void> {
+  return request.post('/capitalAccount/delete', data)
+}

+ 274 - 0
jy-ui/src/views/business/capital/account/index.vue

@@ -0,0 +1,274 @@
+<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/capital/account'
+import { getPageApi as getCorporationPageApi } from '@/api/business/corporation/corporation'
+
+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>({ amount: 0 })
+
+const dialogTitle = ref<string>('')
+const dialogVisible = ref<boolean>(false)
+
+const queryConfig: FormConfigType[] = [
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '归属公司',
+    async option() {
+      const data = await getCorporationPageApi({searchAll: true})
+      return data.records
+    },
+    keyName: 'id',
+    labelName: 'name'
+  },
+  {
+    type: 'input',
+    prop: 'accountAlias',
+    label: '账户别名'
+  },
+  {
+    type: 'input',
+    prop: 'depositBank',
+    label: '开户银行'
+  },
+  {
+    type: 'input',
+    prop: 'accountName',
+    label: '账户名'
+  },
+  {
+    type: 'input',
+    prop: 'account',
+    label: '账号'
+  },
+  {
+    type: 'input',
+    prop: 'correspondentNumber',
+    label: '联行号'
+  }
+]
+
+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 = '新增'
+    }
+  },
+  {
+    common: 'delete',
+    disabled() {
+      return selectKeys.value.length == 0
+    },
+    click() {
+      handleRemove(selectKeys.value)
+    }
+  }
+]
+
+const columnConfig: ColumnConfigType[] = [
+  {
+    prop: 'corporationName',
+    label: '归属公司'
+  },
+  {
+    prop: 'accountAlias',
+    label: '账户别名'
+  },
+  {
+    prop: 'depositBank',
+    label: '开户银行'
+  },
+  {
+    prop: 'accountName',
+    label: '账户名'
+  },
+  {
+    prop: 'account',
+    label: '账号'
+  },
+  {
+    prop: 'correspondentNumber',
+    label: '联行号'
+  },
+  {
+    prop: 'amount',
+    label: '账户余额'
+  },
+  {
+    width: 250,
+    handleConfig: [
+      {
+        common: 'update',
+        click(row) {
+          dialogVisible.value = true
+          dialogTitle.value = '编辑'
+          getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
+            formData.value = resp
+          })
+        }
+      },
+      {
+        common: 'delete',
+        click(row) {
+          handleRemove([row.id])
+        }
+      }
+    ]
+  }
+]
+
+const formConfig: FormConfigType[] = [
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '归属公司',
+    async option() {
+      const data = await getCorporationPageApi({searchAll: true})
+      return data.records
+    },
+    keyName: 'id',
+    labelName: 'name',
+    rule: [{ required: true, message: '公司id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'accountAlias',
+    label: '账户别名',
+    rule: [{ required: true, message: '账户别名不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'depositBank',
+    label: '开户银行',
+  },
+  {
+    type: 'input',
+    prop: 'accountName',
+    label: '账户名',
+  },
+  {
+    type: 'input',
+    prop: 'account',
+    label: '账号',
+  },
+  {
+    type: 'input',
+    prop: 'correspondentNumber',
+    label: '联行号',
+  },
+  {
+    type: 'input',
+    prop: 'remark',
+    itemType: 'textarea',
+    rows: 5,
+    label: '备注',
+  }
+]
+
+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()
+    })
+  })
+}
+</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"
+    >
+      <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
+    </a-dialog>
+  </div>
+</template>