From 1a490bb58188c2ab33580c98a7e5c753fa5fd93e Mon Sep 17 00:00:00 2001 From: luozhun <2025254074@qq.com> Date: Tue, 3 Sep 2024 10:51:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/exception/MessageException.java | 4 + .../com/changhu/common/pojo/vo/TokenInfo.java | 4 + .../java/com/changhu/config/WebConfig.java | 3 - .../java/com/changhu/enums/ClientType.java | 11 +- .../handler/ManagementPoliceUnitLogin.java | 78 +++++++++ .../handler/ManagementSecurityUnitLogin.java | 77 +++++++++ .../enums/handler/ManagementSuperLogin.java | 2 +- .../controller/EnterprisesUnitController.java | 16 ++ .../controller/IndexController.java | 7 + .../ManagementPoliceUnitUserController.java | 14 ++ .../ManagementSecurityUnitUserController.java | 28 +++ .../handler/AbstractUnitTypeHandler.java | 7 + .../enums/handler/PoliceUnitTypeHandler.java | 23 +++ .../handler/SecurityUnitTypeHandler.java | 21 +++ .../mapper/EnterprisesUnitMapper.java | 15 ++ .../pojo/entity/EnterprisesUnit.java | 81 +++++++++ .../params/IndexDisableOrEnableParams.java | 22 +++ ...entSecurityUnitUserSaveOrUpdateParams.java | 45 +++++ .../service/EnterprisesUnitService.java | 13 ++ .../management/service/IndexService.java | 8 + .../ManagementSecurityUnitUserService.java | 7 + .../impl/EnterprisesUnitServiceImpl.java | 17 ++ .../service/impl/IndexServiceImpl.java | 8 + ...ManagementSecurityUnitUserServiceImpl.java | 39 +++++ .../ManagementPoliceUnitLoginParams.java | 19 ++ .../ManagementSecurityUnitLoginParams.java | 19 ++ superManagement/src/assets/scss/myAntD.scss | 162 ++++++++++++++++++ superManagement/src/config/dict.ts | 4 +- superManagement/src/config/index.ts | 10 ++ superManagement/src/main.ts | 6 +- .../unitManage/enterprisesUnit/index.vue | 13 ++ .../src/views/unitManage/policeUnit/index.vue | 21 ++- .../views/unitManage/securityUnit/index.vue | 22 ++- 33 files changed, 803 insertions(+), 23 deletions(-) create mode 100644 policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementPoliceUnitLogin.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSecurityUnitLogin.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/controller/EnterprisesUnitController.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementPoliceUnitUserController.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementSecurityUnitUserController.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/mapper/EnterprisesUnitMapper.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/EnterprisesUnit.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/IndexDisableOrEnableParams.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/ManagementSecurityUnitUserSaveOrUpdateParams.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/service/EnterprisesUnitService.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/EnterprisesUnitServiceImpl.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementPoliceUnitLoginParams.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementSecurityUnitLoginParams.java create mode 100644 superManagement/src/assets/scss/myAntD.scss create mode 100644 superManagement/src/views/unitManage/enterprisesUnit/index.vue diff --git a/policeSecurityServer/src/main/java/com/changhu/common/exception/MessageException.java b/policeSecurityServer/src/main/java/com/changhu/common/exception/MessageException.java index db516c8..bb29525 100644 --- a/policeSecurityServer/src/main/java/com/changhu/common/exception/MessageException.java +++ b/policeSecurityServer/src/main/java/com/changhu/common/exception/MessageException.java @@ -60,6 +60,10 @@ public class MessageException extends RuntimeException { this.message = resultCode.getMessage(); } + public MessageException() { + + } + @Override public String toString() { return StrUtil.format("业务错误:错误代码:{},错误内容:{}", Objects.isNull(this.code) ? 500 : this.code, this.message); diff --git a/policeSecurityServer/src/main/java/com/changhu/common/pojo/vo/TokenInfo.java b/policeSecurityServer/src/main/java/com/changhu/common/pojo/vo/TokenInfo.java index 38e997d..b1e3284 100644 --- a/policeSecurityServer/src/main/java/com/changhu/common/pojo/vo/TokenInfo.java +++ b/policeSecurityServer/src/main/java/com/changhu/common/pojo/vo/TokenInfo.java @@ -1,5 +1,6 @@ package com.changhu.common.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -9,7 +10,10 @@ import lombok.Data; */ @Data public class TokenInfo { + + @Schema(description = "token的名字") private String name; + @Schema(description = "token的值") private String value; public TokenInfo(String name, String value) { diff --git a/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java b/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java index d9a481f..3422710 100644 --- a/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java +++ b/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java @@ -23,9 +23,6 @@ public class WebConfig implements WebMvcConfigurer { private final List whiteList = new ArrayList<>(); public WebConfig() { - //todo 要删除的 - whiteList.add("/managementSuperUser/**"); - whiteList.add("/common/**"); whiteList.add("/test/**"); whiteList.add("/login"); diff --git a/policeSecurityServer/src/main/java/com/changhu/enums/ClientType.java b/policeSecurityServer/src/main/java/com/changhu/enums/ClientType.java index 360eb85..2b9923e 100644 --- a/policeSecurityServer/src/main/java/com/changhu/enums/ClientType.java +++ b/policeSecurityServer/src/main/java/com/changhu/enums/ClientType.java @@ -1,6 +1,8 @@ package com.changhu.enums; import com.changhu.enums.handler.AbstractLoginHandler; +import com.changhu.enums.handler.ManagementPoliceUnitLogin; +import com.changhu.enums.handler.ManagementSecurityUnitLogin; import com.changhu.enums.handler.ManagementSuperLogin; import lombok.AllArgsConstructor; import lombok.Getter; @@ -13,13 +15,12 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum ClientType { - MANAGEMENT_SUPER("management_super", "超级后台", ManagementSuperLogin.instance), - MANAGEMENT_POLICE("management_police", "公安后台", ManagementSuperLogin.instance), - MANAGEMENT_SECURITY("management_security", "保安后台", ManagementSuperLogin.instance), - MINI_PROGRAM("mini_program", "微信小程序", ManagementSuperLogin.instance), + MANAGEMENT_SUPER("超级后台", ManagementSuperLogin.instance), + MANAGEMENT_POLICE("公安后台", ManagementPoliceUnitLogin.instance), + MANAGEMENT_SECURITY("保安后台", ManagementSecurityUnitLogin.instance), + MINI_PROGRAM("微信小程序", ManagementSuperLogin.instance), ; - private final String value; private final String remark; private final AbstractLoginHandler loginHandler; } diff --git a/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementPoliceUnitLogin.java b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementPoliceUnitLogin.java new file mode 100644 index 0000000..ed5f085 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementPoliceUnitLogin.java @@ -0,0 +1,78 @@ +package com.changhu.enums.handler; + +import cn.dev33.satoken.stp.SaTokenInfo; +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSONObject; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.common.enums.ResultCode; +import com.changhu.common.exception.MessageException; +import com.changhu.common.pojo.vo.TokenInfo; +import com.changhu.common.utils.RsaUtil; +import com.changhu.common.utils.UserUtil; +import com.changhu.common.utils.ValidatorUtil; +import com.changhu.module.management.pojo.entity.ManagementPoliceUnitUser; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.service.ManagementPoliceUnitUserService; +import com.changhu.module.management.service.PoliceUnitService; +import com.changhu.pojo.params.ManagementPoliceUnitLoginParams; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; + +/** + * @author 20252 + * @createTime 2024/9/2 下午4:52 + * @desc ManagementPoliceUnitLogin... + */ +public class ManagementPoliceUnitLogin extends AbstractLoginHandler { + + private final ManagementPoliceUnitUserService policeUnitUserService = SpringUtil.getBean(ManagementPoliceUnitUserService.class); + private final PoliceUnitService policeUnitService = SpringUtil.getBean(PoliceUnitService.class); + + public static final ManagementPoliceUnitLogin instance = new ManagementPoliceUnitLogin(); + + private ManagementPoliceUnitLogin() { + } + + + @Override + public TokenInfo login(JSONObject jsonObject) { + ManagementPoliceUnitLoginParams managementPoliceUnitLoginParams = jsonObject.to(ManagementPoliceUnitLoginParams.class); + ValidatorUtil.manual(managementPoliceUnitLoginParams); + + String accountOrTelephone = managementPoliceUnitLoginParams.getAccountOrTelephone(); + String password = RsaUtil.decrypt(managementPoliceUnitLoginParams.getPassword()); + + //查看 账号/手机号 是否存在 + ManagementPoliceUnitUser managementPoliceUnitUser = policeUnitUserService.lambdaQuery() + .eq(ManagementPoliceUnitUser::getAccount, accountOrTelephone) + .or() + .eq(ManagementPoliceUnitUser::getTelephone, accountOrTelephone) + .oneOpt() + .orElseThrow(() -> new MessageException(ResultCode.USER_NOT_FOUND)); + + //判断用户是否禁用 + if (managementPoliceUnitUser.getIsEnable().equals(IsEnable.FALSE)) { + throw new MessageException(ResultCode.USER_IS_DISABLE); + } + + //判断单位是否禁用 + IsEnable unitEnable = policeUnitService.lambdaQuery() + .eq(BaseEntity::getSnowFlakeId, managementPoliceUnitUser.getPoliceUnitId()) + .oneOpt() + .map(PoliceUnit::getIsEnable) + .orElseThrow(() -> new MessageException("单位不存在")); + if (unitEnable.equals(IsEnable.FALSE)) { + throw new MessageException("单位被禁用"); + } + + + //判断密码是否正确 + if (!UserUtil.verifyPassWord(password, managementPoliceUnitUser.getSalt(), managementPoliceUnitUser.getPassword())) { + throw new MessageException(ResultCode.PASSWORD_ERROR); + } + + //登录 + SaTokenInfo saTokenInfo = UserUtil.loginAndTokenInfo(managementPoliceUnitUser.getSnowFlakeId()); + //返回token + return new TokenInfo(saTokenInfo.getTokenName(), saTokenInfo.getTokenValue()); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSecurityUnitLogin.java b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSecurityUnitLogin.java new file mode 100644 index 0000000..79ebe20 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSecurityUnitLogin.java @@ -0,0 +1,77 @@ +package com.changhu.enums.handler; + +import cn.dev33.satoken.stp.SaTokenInfo; +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSONObject; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.common.enums.ResultCode; +import com.changhu.common.exception.MessageException; +import com.changhu.common.pojo.vo.TokenInfo; +import com.changhu.common.utils.RsaUtil; +import com.changhu.common.utils.UserUtil; +import com.changhu.common.utils.ValidatorUtil; +import com.changhu.module.management.pojo.entity.ManagementSecurityUnitUser; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.entity.SecurityUnit; +import com.changhu.module.management.service.ManagementSecurityUnitUserService; +import com.changhu.module.management.service.SecurityUnitService; +import com.changhu.pojo.params.ManagementSecurityUnitLoginParams; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; + +/** + * @author 20252 + * @createTime 2024/9/2 下午5:48 + * @desc ManagementSecurityUnitLogin... + */ +public class ManagementSecurityUnitLogin extends AbstractLoginHandler { + + private final ManagementSecurityUnitUserService securityUnitUserService = SpringUtil.getBean(ManagementSecurityUnitUserService.class); + private final SecurityUnitService securityUnitService = SpringUtil.getBean(SecurityUnitService.class); + + public static final ManagementSecurityUnitLogin instance = new ManagementSecurityUnitLogin(); + + private ManagementSecurityUnitLogin() { + } + + @Override + public TokenInfo login(JSONObject jsonObject) { + ManagementSecurityUnitLoginParams loginParams = jsonObject.to(ManagementSecurityUnitLoginParams.class); + ValidatorUtil.manual(loginParams); + + String accountOrTelephone = loginParams.getAccountOrTelephone(); + String password = RsaUtil.decrypt(loginParams.getPassword()); + + //查看 账号/手机号 是否存在 + ManagementSecurityUnitUser managementSecurityUnitUser = securityUnitUserService.lambdaQuery() + .eq(ManagementSecurityUnitUser::getAccount, accountOrTelephone) + .or() + .eq(ManagementSecurityUnitUser::getTelephone, accountOrTelephone) + .oneOpt() + .orElseThrow(() -> new MessageException(ResultCode.ERROR)); + + //判断用户是否禁用 + if (managementSecurityUnitUser.getIsEnable().equals(IsEnable.FALSE)) { + throw new MessageException(ResultCode.USER_IS_DISABLE); + } + + //判断单位是否禁用 + IsEnable unitEnable = securityUnitService.lambdaQuery() + .eq(BaseEntity::getSnowFlakeId, managementSecurityUnitUser.getSecurityUnitId()) + .oneOpt() + .map(SecurityUnit::getIsEnable) + .orElseThrow(() -> new MessageException("单位不存在")); + if (unitEnable.equals(IsEnable.FALSE)) { + throw new MessageException("单位被禁用"); + } + + //判断密码是否正确 + if (!UserUtil.verifyPassWord(password, managementSecurityUnitUser.getSalt(), managementSecurityUnitUser.getPassword())) { + throw new MessageException(ResultCode.PASSWORD_ERROR); + } + + //登录 + SaTokenInfo saTokenInfo = UserUtil.loginAndTokenInfo(managementSecurityUnitUser.getSnowFlakeId()); + //返回token + return new TokenInfo(saTokenInfo.getTokenName(), saTokenInfo.getTokenValue()); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSuperLogin.java b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSuperLogin.java index 66c92be..4b9f790 100644 --- a/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSuperLogin.java +++ b/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementSuperLogin.java @@ -38,7 +38,7 @@ public class ManagementSuperLogin extends AbstractLoginHandler { ManagementSuperUser user = managementSuperUserService.lambdaQuery() .eq(ManagementSuperUser::getTelephone, telephone) .oneOpt() - .orElseThrow(() -> new MessageException("用户不存在")); + .orElseThrow(() -> new MessageException(ResultCode.USER_NOT_FOUND)); //判断密码是否正确 if (!UserUtil.verifyPassWord(password, user.getSalt(), user.getPassword())) { diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/EnterprisesUnitController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/EnterprisesUnitController.java new file mode 100644 index 0000000..21227ce --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/EnterprisesUnitController.java @@ -0,0 +1,16 @@ +package com.changhu.module.management.controller; + +import com.changhu.common.annotation.JsonBody; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author 20252 + * @createTime 2024/9/3 上午10:17 + * @desc EnterprisesUnitController... + */ +@Tag(name = "企事业单位") +@JsonBody +@RequestMapping("/enterprisesUnit") +public class EnterprisesUnitController { +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/IndexController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/IndexController.java index 12ba752..cb58b24 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/IndexController.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/IndexController.java @@ -3,6 +3,7 @@ package com.changhu.module.management.controller; import com.changhu.common.annotation.JsonBody; import com.changhu.module.management.pojo.params.IndexCheckPassParams; import com.changhu.module.management.pojo.params.IndexCheckStatusParams; +import com.changhu.module.management.pojo.params.IndexDisableOrEnableParams; import com.changhu.module.management.pojo.vo.UnitCheckStatusVo; import com.changhu.module.management.service.IndexService; import io.swagger.v3.oas.annotations.Operation; @@ -37,4 +38,10 @@ public class IndexController { public UnitCheckStatusVo getCheckStatus(@RequestBody @Valid IndexCheckStatusParams params) { return indexService.getCheckStatus(params); } + + @Operation(summary = "启用或禁用状态") + @PostMapping("/disableOrEnable") + public void disableOrEnable(@RequestBody @Valid IndexDisableOrEnableParams params) { + indexService.disableOrEnable(params); + } } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementPoliceUnitUserController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementPoliceUnitUserController.java new file mode 100644 index 0000000..bffda7a --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementPoliceUnitUserController.java @@ -0,0 +1,14 @@ +package com.changhu.module.management.controller; + +import com.changhu.common.annotation.JsonBody; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author 20252 + * @createTime 2024/9/3 上午10:21 + * @desc ManagementPoliceUnitUserController... + */ +@JsonBody +@RequestMapping("/managementPoliceUnitUser") +public class ManagementPoliceUnitUserController { +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementSecurityUnitUserController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementSecurityUnitUserController.java new file mode 100644 index 0000000..e0a071a --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/ManagementSecurityUnitUserController.java @@ -0,0 +1,28 @@ +package com.changhu.module.management.controller; + +import com.changhu.common.annotation.JsonBody; +import com.changhu.module.management.pojo.params.ManagementSecurityUnitUserSaveOrUpdateParams; +import com.changhu.module.management.service.ManagementSecurityUnitUserService; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author 20252 + * @createTime 2024/9/3 上午10:22 + * @desc ManagementSecurityUnitUserController... + */ +@JsonBody +@RequestMapping("/managementSecurityUnitUser") +public class ManagementSecurityUnitUserController { + + @Autowired + private ManagementSecurityUnitUserService managementSecurityUnitUserService; + + @PostMapping("/saveOrUpdate") + public void saveOrUpdate(@RequestBody @Valid ManagementSecurityUnitUserSaveOrUpdateParams saveOrUpdateParams) { + managementSecurityUnitUserService.saveOrUpdate(saveOrUpdateParams); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/AbstractUnitTypeHandler.java b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/AbstractUnitTypeHandler.java index 01f3f48..db71404 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/AbstractUnitTypeHandler.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/AbstractUnitTypeHandler.java @@ -25,4 +25,11 @@ public abstract class AbstractUnitTypeHandler { * @return 审核状态 */ public abstract UnitCheckStatusVo getCheckStatus(String onlyCode); + + /** + * 启用或者禁用状态 + * + * @param unitId 单位id + */ + public abstract void disableOrEnable(Long unitId); } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/PoliceUnitTypeHandler.java b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/PoliceUnitTypeHandler.java index 0f49227..52f6e15 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/PoliceUnitTypeHandler.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/PoliceUnitTypeHandler.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; import com.changhu.common.db.enums.IsOrNot; import com.changhu.common.db.enums.Sex; import com.changhu.common.enums.ResultCode; @@ -11,6 +12,7 @@ import com.changhu.common.exception.MessageException; import com.changhu.common.utils.UserUtil; import com.changhu.module.management.pojo.entity.ManagementPoliceUnitUser; import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.entity.SecurityUnit; import com.changhu.module.management.pojo.vo.UnitCheckStatusVo; import com.changhu.module.management.service.ManagementPoliceUnitUserService; import com.changhu.module.management.service.PoliceUnitService; @@ -103,4 +105,25 @@ public class PoliceUnitTypeHandler extends AbstractUnitTypeHandler { } return unitCheckStatusVo; } + + @Override + public void disableOrEnable(Long unitId) { + PoliceUnit policeUnit = policeUnitService.lambdaQuery() + .eq(BaseEntity::getSnowFlakeId, unitId) + .oneOpt() + .orElseThrow(() -> new MessageException(ResultCode.DATA_NOT_FOUND)); + //取反 + IsEnable isEnable = switch (policeUnit.getIsEnable()) { + case TRUE -> IsEnable.FALSE; + case FALSE -> IsEnable.TRUE; + }; + + boolean update = policeUnitService.lambdaUpdate() + .set(PoliceUnit::getIsEnable, isEnable) + .eq(BaseEntity::getSnowFlakeId, unitId) + .update(); + if (!update) { + throw new MessageException(); + } + } } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/SecurityUnitTypeHandler.java b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/SecurityUnitTypeHandler.java index a67df1a..dbb918f 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/SecurityUnitTypeHandler.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/enums/handler/SecurityUnitTypeHandler.java @@ -105,4 +105,25 @@ public class SecurityUnitTypeHandler extends AbstractUnitTypeHandler { return unitCheckStatusVo; } + @Override + public void disableOrEnable(Long unitId) { + SecurityUnit securityUnit = securityUnitService.lambdaQuery() + .eq(BaseEntity::getSnowFlakeId, unitId) + .oneOpt() + .orElseThrow(() -> new MessageException(ResultCode.DATA_NOT_FOUND)); + //取反 + IsEnable isEnable = switch (securityUnit.getIsEnable()) { + case TRUE -> IsEnable.FALSE; + case FALSE -> IsEnable.TRUE; + }; + + boolean update = securityUnitService.lambdaUpdate() + .set(SecurityUnit::getIsEnable, isEnable) + .eq(BaseEntity::getSnowFlakeId, unitId) + .update(); + if (!update) { + throw new MessageException(); + } + } + } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/EnterprisesUnitMapper.java b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/EnterprisesUnitMapper.java new file mode 100644 index 0000000..d2c52c2 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/EnterprisesUnitMapper.java @@ -0,0 +1,15 @@ +package com.changhu.module.management.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.changhu.module.management.pojo.entity.EnterprisesUnit; +import org.apache.ibatis.annotations.Mapper; + +/** + * enterprises_unit (企事业单位) 固化类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Mapper +public interface EnterprisesUnitMapper extends BaseMapper { + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/EnterprisesUnit.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/EnterprisesUnit.java new file mode 100644 index 0000000..04fb73d --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/EnterprisesUnit.java @@ -0,0 +1,81 @@ +package com.changhu.module.management.pojo.entity; + +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.EqualsAndHashCode; +import com.baomidou.mybatisplus.annotation.TableName; + + +/** + * 企事业单位 实体类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@TableName(autoResultMap = true) +public class EnterprisesUnit extends BaseEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 所属公安机关id + */ + private Long policeUnitId; + + /** + * 名称 + */ + private String name; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区/县 + */ + private String districts; + + /** + * 街道 + */ + private String street; + + /** + * 详细地址 + */ + private String address; + + /** + * 联系人 + */ + @TableField(typeHandler = Fastjson2TypeHandler.class) + private ContactPersonInfo contactPersonInfo; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/IndexDisableOrEnableParams.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/IndexDisableOrEnableParams.java new file mode 100644 index 0000000..b81fee7 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/IndexDisableOrEnableParams.java @@ -0,0 +1,22 @@ +package com.changhu.module.management.pojo.params; + +import com.changhu.module.management.enums.UnitOptType; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author 20252 + * @createTime 2024/9/3 上午9:28 + * @desc IndexDisableOrEnableParams... + */ +@Data +public class IndexDisableOrEnableParams { + @Schema(description = "单位id") + @NotNull(message = "单位id不能为空") + private Long unitId; + + @Schema(description = "单位类型") + @NotNull(message = "单位类型不能为空") + private UnitOptType unitOptType; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/ManagementSecurityUnitUserSaveOrUpdateParams.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/ManagementSecurityUnitUserSaveOrUpdateParams.java new file mode 100644 index 0000000..dc58729 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/ManagementSecurityUnitUserSaveOrUpdateParams.java @@ -0,0 +1,45 @@ +package com.changhu.module.management.pojo.params; + +import com.changhu.common.db.enums.IsEnable; +import com.changhu.common.db.enums.Sex; +import com.changhu.common.validator.annotation.IsMobile; +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/9/3 上午10:26 + * @desc ManagementSecurityUnitUserSaveOrUpdateParams... + */ +@Data +public class ManagementSecurityUnitUserSaveOrUpdateParams { + + @Schema(description = "id") + private Long snowFlakeId; + + @NotBlank(message = "名称不能为空") + @Schema(description = "名称") + private String name; + + @Schema(description = "性别") + @NotNull(message = "性别不能为空") + private Sex sex; + + @IsMobile + @NotBlank(message = "手机号不能为空") + private String telephone; + + @NotNull(message = "启用状态不能为空") + @Schema(description = "启用状态") + private IsEnable isEnable; + + @Schema(description = "备注") + private String remark; + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/EnterprisesUnitService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/EnterprisesUnitService.java new file mode 100644 index 0000000..d95b852 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/EnterprisesUnitService.java @@ -0,0 +1,13 @@ +package com.changhu.module.management.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.changhu.module.management.pojo.entity.EnterprisesUnit; + +/** + * enterprises_unit (企事业单位) 服务类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +public interface EnterprisesUnitService extends IService{ + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/IndexService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/IndexService.java index 58507d4..4b6fc8b 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/IndexService.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/IndexService.java @@ -2,6 +2,7 @@ package com.changhu.module.management.service; import com.changhu.module.management.pojo.params.IndexCheckPassParams; import com.changhu.module.management.pojo.params.IndexCheckStatusParams; +import com.changhu.module.management.pojo.params.IndexDisableOrEnableParams; import com.changhu.module.management.pojo.vo.UnitCheckStatusVo; /** @@ -25,4 +26,11 @@ public interface IndexService { * @return 结果 */ UnitCheckStatusVo getCheckStatus(IndexCheckStatusParams params); + + /** + * 启用或者禁用单位 + * + * @param params 参数 + */ + void disableOrEnable(IndexDisableOrEnableParams params); } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/ManagementSecurityUnitUserService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/ManagementSecurityUnitUserService.java index bcee24a..cd0d63d 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/ManagementSecurityUnitUserService.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/ManagementSecurityUnitUserService.java @@ -2,6 +2,7 @@ package com.changhu.module.management.service; import com.baomidou.mybatisplus.extension.service.IService; import com.changhu.module.management.pojo.entity.ManagementSecurityUnitUser; +import com.changhu.module.management.pojo.params.ManagementSecurityUnitUserSaveOrUpdateParams; /** * management_security_unit_user (后台-保安单位用户表) 服务类 @@ -10,4 +11,10 @@ import com.changhu.module.management.pojo.entity.ManagementSecurityUnitUser; */ public interface ManagementSecurityUnitUserService extends IService { + /** + * 新增或者修改 + * + * @param saveOrUpdateParams 参数 + */ + void saveOrUpdate(ManagementSecurityUnitUserSaveOrUpdateParams saveOrUpdateParams); } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/EnterprisesUnitServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/EnterprisesUnitServiceImpl.java new file mode 100644 index 0000000..462314e --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/EnterprisesUnitServiceImpl.java @@ -0,0 +1,17 @@ +package com.changhu.module.management.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.changhu.module.management.mapper.EnterprisesUnitMapper; +import com.changhu.module.management.pojo.entity.EnterprisesUnit; +import com.changhu.module.management.service.EnterprisesUnitService; +import org.springframework.stereotype.Service; + +/** + * enterprises_unit (企事业单位) 服务实现类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Service +public class EnterprisesUnitServiceImpl extends ServiceImpl implements EnterprisesUnitService { + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/IndexServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/IndexServiceImpl.java index d3efd13..4fbec9f 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/IndexServiceImpl.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/IndexServiceImpl.java @@ -2,6 +2,7 @@ package com.changhu.module.management.service.impl; import com.changhu.module.management.pojo.params.IndexCheckPassParams; import com.changhu.module.management.pojo.params.IndexCheckStatusParams; +import com.changhu.module.management.pojo.params.IndexDisableOrEnableParams; import com.changhu.module.management.pojo.vo.UnitCheckStatusVo; import com.changhu.module.management.service.IndexService; import org.springframework.stereotype.Service; @@ -26,4 +27,11 @@ public class IndexServiceImpl implements IndexService { .getHandler() .getCheckStatus(params.getOnlyCode()); } + + @Override + public void disableOrEnable(IndexDisableOrEnableParams params) { + params.getUnitOptType() + .getHandler() + .disableOrEnable(params.getUnitId()); + } } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ManagementSecurityUnitUserServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ManagementSecurityUnitUserServiceImpl.java index 38a4fc6..351660f 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ManagementSecurityUnitUserServiceImpl.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ManagementSecurityUnitUserServiceImpl.java @@ -1,10 +1,19 @@ package com.changhu.module.management.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.changhu.common.exception.MessageException; +import com.changhu.common.utils.UserUtil; import com.changhu.module.management.mapper.ManagementSecurityUnitUserMapper; import com.changhu.module.management.pojo.entity.ManagementSecurityUnitUser; +import com.changhu.module.management.pojo.params.ManagementSecurityUnitUserSaveOrUpdateParams; import com.changhu.module.management.service.ManagementSecurityUnitUserService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** * management_security_unit_user (后台-保安单位用户表) 服务实现类 @@ -14,4 +23,34 @@ import org.springframework.stereotype.Service; @Service public class ManagementSecurityUnitUserServiceImpl extends ServiceImpl implements ManagementSecurityUnitUserService { + @Transactional(rollbackFor = Exception.class) + @Override + public void saveOrUpdate(ManagementSecurityUnitUserSaveOrUpdateParams saveOrUpdateParams) { + //查看手机号是否已存在 + boolean exists = this.lambdaQuery() + .eq(ManagementSecurityUnitUser::getTelephone, saveOrUpdateParams.getTelephone()) + .exists(); + if (exists) { + throw new MessageException("该手机号已存在"); + } + ManagementSecurityUnitUser managementSecurityUnitUser = BeanUtil.copyProperties(saveOrUpdateParams, ManagementSecurityUnitUser.class); + //新增 需要补全一些信息 + if (managementSecurityUnitUser.getSnowFlakeId() == null) { + String account = RandomUtil.randomString(6); + boolean accExits = this.lambdaQuery() + .eq(ManagementSecurityUnitUser::getAccount, account) + .exists(); + if (accExits) { + throw new MessageException("生成的账号已存在 请重新提交生成"); + } + //生成账号 + managementSecurityUnitUser.setAccount(account); + //生成密码 + String passWordEncrypt = UserUtil.passWordEncrypt(UserUtil.DEFAULT_PASSWORD); + List saltAndPassWord = StrUtil.split(passWordEncrypt, "$$"); + managementSecurityUnitUser.setSalt(saltAndPassWord.get(0)); + managementSecurityUnitUser.setPassword(saltAndPassWord.get(1)); + } + this.saveOrUpdate(managementSecurityUnitUser); + } } diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementPoliceUnitLoginParams.java b/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementPoliceUnitLoginParams.java new file mode 100644 index 0000000..30baccf --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementPoliceUnitLoginParams.java @@ -0,0 +1,19 @@ +package com.changhu.pojo.params; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author 20252 + * @createTime 2024/9/2 下午4:53 + * @desc ManagementPoliceUnitLoginParams... + */ +@Data +public class ManagementPoliceUnitLoginParams { + + @NotBlank(message = "账号/手机号不能为空") + private String accountOrTelephone; + + @NotBlank(message = "密码不能为空") + private String password; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementSecurityUnitLoginParams.java b/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementSecurityUnitLoginParams.java new file mode 100644 index 0000000..aa2c917 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/params/ManagementSecurityUnitLoginParams.java @@ -0,0 +1,19 @@ +package com.changhu.pojo.params; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author 20252 + * @createTime 2024/9/2 下午4:53 + * @desc ManagementPoliceUnitLoginParams... + */ +@Data +public class ManagementSecurityUnitLoginParams { + + @NotBlank(message = "账号/手机号不能为空") + private String accountOrTelephone; + + @NotBlank(message = "密码不能为空") + private String password; +} diff --git a/superManagement/src/assets/scss/myAntD.scss b/superManagement/src/assets/scss/myAntD.scss new file mode 100644 index 0000000..1b055a3 --- /dev/null +++ b/superManagement/src/assets/scss/myAntD.scss @@ -0,0 +1,162 @@ +/* 扩展ant design pro按钮组件颜色 */ +$--my-antd-important: !important; + +.btn-danger { + color: #ffffff; + background-color: #F5222D; + border-color: #F5222D; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #ff4d4f $--my-antd-important; + border-color: #ff4d4f $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #cf1322 $--my-antd-important; + border-color: #cf1322 $--my-antd-important; + } +} + +.btn-volcano { + color: #ffffff; + background-color: #FA541C; + border-color: #FA541C; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #ff7a45 $--my-antd-important; + border-color: #ff7a45 $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #d4380d $--my-antd-important; + border-color: #d4380d $--my-antd-important; + } +} + +.btn-warn { + color: #ffffff; + background-color: #FAAD14; + border-color: #FAAD14; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #ffc53d $--my-antd-important; + border-color: #ffc53d $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #d48806 $--my-antd-important; + border-color: #d48806 $--my-antd-important; + } +} + +.btn-success { + color: #ffffff; + background-color: #52C41A; + border-color: #52C41A; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #73d13d $--my-antd-important; + border-color: #73d13d $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #389e0d $--my-antd-important; + border-color: #389e0d $--my-antd-important; + } +} + +.button-color-cyan { + color: #ffffff; + background-color: #13C2C2; + border-color: #13C2C2; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #36cfc9 $--my-antd-important; + border-color: #36cfc9 $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #08979c $--my-antd-important; + border-color: #08979c $--my-antd-important; + } +} + +.btn-daybreak { + color: #ffffff; + background-color: #1890FF; + border-color: #1890FF; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #096dd9 $--my-antd-important; + border-color: #096dd9 $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #40a9ff $--my-antd-important; + border-color: #40a9ff $--my-antd-important; + } +} + +.button-color-geekblue { + color: #ffffff; + background-color: #2F54EB; + border-color: #2F54EB; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #1d39c4 $--my-antd-important; + border-color: #1d39c4 $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #597ef7 $--my-antd-important; + border-color: #597ef7 $--my-antd-important; + } +} + +.btn-purple { + color: #ffffff; + background-color: #722ED1; + border-color: #722ED1; + + &:hover, &:focus { + color: #ffffff $--my-antd-important; + background-color: #9254de $--my-antd-important; + border-color: #9254de $--my-antd-important; + } + + &:active, &.active { + color: #ffffff $--my-antd-important; + background-color: #531dab $--my-antd-important; + border-color: #531dab $--my-antd-important; + } +} + +.table-row-warn td { + background-color: #fefca6; +} + +.table-row-danger td { + background-color: #f79988; +} + +.table-row-success td { + background-color: #b6fcbe; +} + +.ant-table-summary td { + background: #edeff6; +} \ No newline at end of file diff --git a/superManagement/src/config/dict.ts b/superManagement/src/config/dict.ts index 86dc984..2d019fb 100644 --- a/superManagement/src/config/dict.ts +++ b/superManagement/src/config/dict.ts @@ -7,11 +7,11 @@ type DictType = | 'IsOrNot' | 'Sex' -export const initEnums = () => { +export const initDict = () => { api.get[]>>('/common/enums').then(resp => { sessionStorage.setItem('dictMap', JSON.stringify(resp.data)) }) } -export const enumSelectNodes = (enumType: DictType): SelectNodeVo[] => JSON.parse(sessionStorage.getItem('dictMap') as string)?.[enumType] || [] +export const dictSelectNodes = (dictType: DictType): SelectNodeVo[] => JSON.parse(sessionStorage.getItem('dictMap') as string)?.[dictType] || [] diff --git a/superManagement/src/config/index.ts b/superManagement/src/config/index.ts index e2aa714..50e7862 100644 --- a/superManagement/src/config/index.ts +++ b/superManagement/src/config/index.ts @@ -2,6 +2,10 @@ import {SystemMenu} from "@/types/config"; export const CLIENT_TYPE = "MANAGEMENT_SUPER"; export const ROUTER_WHITE_LIST: string[] = ['/login', '/test']; +export const UNIT_TYPE = { + security: 'SECURITY_UNIT', + police: 'POLICE_UNIT' +} export const SYSTEM_MENUS: SystemMenu[] = [ { @@ -28,6 +32,12 @@ export const SYSTEM_MENUS: SystemMenu[] = [ path: '/securityUnit', type: 'menu', component: () => import('@/views/unitManage/securityUnit/index.vue') + }, { + title: '企事业单位', + name: 'enterprisesUnit', + path: '/enterprisesUnit', + type: 'menu', + component: () => import('@/views/unitManage/enterprisesUnit/index.vue') } ] } diff --git a/superManagement/src/main.ts b/superManagement/src/main.ts index 826df26..fc498ba 100644 --- a/superManagement/src/main.ts +++ b/superManagement/src/main.ts @@ -4,15 +4,17 @@ import '@/reset.css' // 公共样式 import '@/assets/scss/common.scss' +//ant design 扩展样式 +import '@/assets/scss/myAntD.scss' // iconfont css import "@/assets/iconfont/iconfont.css"; // vue Router import router from "@/router"; // pinia stores import pinia from "@/stores"; -import {initEnums} from "@/config/dict.ts"; +import {initDict} from "@/config/dict.ts"; -initEnums(); +initDict(); const vueApp = createApp(App); diff --git a/superManagement/src/views/unitManage/enterprisesUnit/index.vue b/superManagement/src/views/unitManage/enterprisesUnit/index.vue new file mode 100644 index 0000000..9ff5f85 --- /dev/null +++ b/superManagement/src/views/unitManage/enterprisesUnit/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/superManagement/src/views/unitManage/policeUnit/index.vue b/superManagement/src/views/unitManage/policeUnit/index.vue index 1f149d7..4603349 100644 --- a/superManagement/src/views/unitManage/policeUnit/index.vue +++ b/superManagement/src/views/unitManage/policeUnit/index.vue @@ -16,8 +16,9 @@ import {ComponentExposed} from "vue-component-type-helpers"; import {TableProMaxProps} from "@/types/components/table"; import {PoliceUnitPagerQueryParams, PoliceUnitPagerVo} from "@/types/views/unitManage/policeUnit.ts"; import api from "@/axios"; -import {enumSelectNodes} from "@/config/dict.ts"; +import {dictSelectNodes} from "@/config/dict.ts"; import {message} from "ant-design-vue"; +import {UNIT_TYPE} from "@/config"; type TableProps = TableProMaxProps @@ -61,7 +62,7 @@ const columns: TableProps['columns'] = [ onConfirm={async () => { const resp = await api.post('/management/checkPass', { checkDataId: record.snowFlakeId, - unitOptType: 'POLICE_UNIT' + unitOptType: UNIT_TYPE.police }) message.success(resp.message) await tableRef.value?.requestGetTableData() @@ -70,7 +71,17 @@ const columns: TableProps['columns'] = [ } - {record.isEnable.value === 0 ? 禁用 : 启用} + { + const resp = await api.post('/management/disableOrEnable', { + unitId: record.snowFlakeId, + unitOptType: UNIT_TYPE.police + }) + message.success(resp.message) + await tableRef.value?.requestGetTableData() + }} + >{record.isEnable.value === 0 ? '禁用' : '启用'} }, } @@ -89,7 +100,7 @@ const searchFormOptions: TableProps["searchFormOptions"] = { { value: null, label: '全部' - }, ...enumSelectNodes('IsEnable') + }, ...dictSelectNodes('IsEnable') ] }, checkStatus: { type: 'select', @@ -98,7 +109,7 @@ const searchFormOptions: TableProps["searchFormOptions"] = { { value: null, label: '全部' - }, ...enumSelectNodes('CheckStatus') + }, ...dictSelectNodes('CheckStatus') ] } } diff --git a/superManagement/src/views/unitManage/securityUnit/index.vue b/superManagement/src/views/unitManage/securityUnit/index.vue index ffdf22b..28c2a23 100644 --- a/superManagement/src/views/unitManage/securityUnit/index.vue +++ b/superManagement/src/views/unitManage/securityUnit/index.vue @@ -17,8 +17,10 @@ import {SecurityUnitPagerQueryParams, SecurityUnitPagerVo} from "@/types/views/u import api from "@/axios"; import {ref} from "vue"; import {ComponentExposed} from "vue-component-type-helpers"; -import {enumSelectNodes} from "@/config/dict.ts"; +import {dictSelectNodes} from "@/config/dict.ts"; import {message} from "ant-design-vue"; +import {UNIT_TYPE} from "@/config"; + type TableProps = TableProMaxProps @@ -85,7 +87,7 @@ const columns: TableProps['columns'] = [ onConfirm={async () => { const resp = await api.post('/management/checkPass', { checkDataId: record.snowFlakeId, - unitOptType: 'SECURITY_UNIT' + unitOptType: UNIT_TYPE.security }) message.success(resp.message) await tableRef.value?.requestGetTableData() @@ -94,7 +96,17 @@ const columns: TableProps['columns'] = [ } - {record.isEnable.value === 0 ? 禁用 : 启用} + { + const resp = await api.post('/management/disableOrEnable', { + unitId: record.snowFlakeId, + unitOptType: UNIT_TYPE.security + }) + message.success(resp.message) + await tableRef.value?.requestGetTableData() + }} + >{record.isEnable.value === 0 ? '禁用' : '启用'} }, width: 200 @@ -115,7 +127,7 @@ const searchFormOptions: TableProps["searchFormOptions"] = { { value: null, label: '全部' - }, ...enumSelectNodes('IsEnable') + }, ...dictSelectNodes('IsEnable') ] }, checkStatus: { type: 'select', @@ -124,7 +136,7 @@ const searchFormOptions: TableProps["searchFormOptions"] = { { value: null, label: '全部' - }, ...enumSelectNodes('CheckStatus') + }, ...dictSelectNodes('CheckStatus') ] } } From c20eb9f1be4dd364f492e165a3b801628cdc30b9 Mon Sep 17 00:00:00 2001 From: wangyilin <1454641981@qq.com> Date: Tue, 3 Sep 2024 11:28:48 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=85=A5=E9=A9=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- policeManagement/src/router/staticRouters.ts | 1 - securityManagement/package.json | 7 +- securityManagement/postcss.config.js | 6 + .../src/components/iconfont/IconFont.vue | 20 ++ .../src/components/layout/MenuItem.vue | 47 ++++ .../src/components/layout/SystemMenus.vue | 30 +++ .../src/components/layout/layout.vue | 2 + .../src/components/login/TelephoneLogin.vue | 18 +- securityManagement/src/config/dict.ts | 17 ++ securityManagement/src/config/index.ts | 35 ++- securityManagement/src/global.d.ts | 16 ++ securityManagement/src/index.css | 3 + securityManagement/src/main.ts | 5 +- .../src/router/staticRouters.ts | 62 +++--- .../src/stores/modules/userStore.ts | 4 +- .../src/types/components/iconfont/IconFont.ts | 5 + securityManagement/src/types/config/index.ts | 12 + .../src/types/stores/userStore.ts | 4 +- .../src/types/views/enterprise.ts | 0 securityManagement/src/views/enterprise.vue | 207 +++++++++++------- .../src/views/serviceManagement/index.vue | 12 + securityManagement/src/views/test.vue | 12 +- .../userManagement/bgManagement/index.vue | 12 + .../userManagement/uniManagement/index.vue | 11 + securityManagement/tailwind.config.js | 9 + 25 files changed, 431 insertions(+), 126 deletions(-) create mode 100644 securityManagement/postcss.config.js create mode 100644 securityManagement/src/components/iconfont/IconFont.vue create mode 100644 securityManagement/src/components/layout/MenuItem.vue create mode 100644 securityManagement/src/components/layout/SystemMenus.vue create mode 100644 securityManagement/src/config/dict.ts create mode 100644 securityManagement/src/index.css create mode 100644 securityManagement/src/types/components/iconfont/IconFont.ts create mode 100644 securityManagement/src/types/config/index.ts create mode 100644 securityManagement/src/types/views/enterprise.ts create mode 100644 securityManagement/src/views/serviceManagement/index.vue create mode 100644 securityManagement/src/views/userManagement/bgManagement/index.vue create mode 100644 securityManagement/src/views/userManagement/uniManagement/index.vue create mode 100644 securityManagement/tailwind.config.js diff --git a/policeManagement/src/router/staticRouters.ts b/policeManagement/src/router/staticRouters.ts index 244a79f..41cf84c 100644 --- a/policeManagement/src/router/staticRouters.ts +++ b/policeManagement/src/router/staticRouters.ts @@ -68,7 +68,6 @@ export const staticRouter: RouteRecordRaw[] = }, component: () => import('@/views/login.vue') }, - { //登录页面 path: '/register-index', diff --git a/securityManagement/package.json b/securityManagement/package.json index 1986058..513bdda 100644 --- a/securityManagement/package.json +++ b/securityManagement/package.json @@ -13,19 +13,22 @@ "ant-design-vue": "^4.2.3", "axios": "^1.7.5", "jsencrypt": "^3.3.2", + "lodash-es": "^4.17.21", "pinia": "^2.2.2", "pinia-plugin-persistedstate": "^3.2.0", "sass": "^1.77.8", "vue": "^3.4.37", "vue-router": "4", - "vue-uuid": "^3.0.0", - "lodash-es": "^4.17.21" + "vue-uuid": "^3.0.0" }, "devDependencies": { "@types/lodash-es": "^4.17.8", "@types/node": "^22.5.1", "@vitejs/plugin-vue": "^5.1.2", "@vitejs/plugin-vue-jsx": "^4.0.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.44", + "tailwindcss": "^3.4.10", "typescript": "^5.5.3", "unplugin-vue-components": "^0.27.4", "vite": "^5.4.1", diff --git a/securityManagement/postcss.config.js b/securityManagement/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/securityManagement/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/securityManagement/src/components/iconfont/IconFont.vue b/securityManagement/src/components/iconfont/IconFont.vue new file mode 100644 index 0000000..fc208f1 --- /dev/null +++ b/securityManagement/src/components/iconfont/IconFont.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/securityManagement/src/components/layout/MenuItem.vue b/securityManagement/src/components/layout/MenuItem.vue new file mode 100644 index 0000000..0d928f6 --- /dev/null +++ b/securityManagement/src/components/layout/MenuItem.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/securityManagement/src/components/layout/SystemMenus.vue b/securityManagement/src/components/layout/SystemMenus.vue new file mode 100644 index 0000000..4e34340 --- /dev/null +++ b/securityManagement/src/components/layout/SystemMenus.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/securityManagement/src/components/layout/layout.vue b/securityManagement/src/components/layout/layout.vue index f69b7c5..09ce243 100644 --- a/securityManagement/src/components/layout/layout.vue +++ b/securityManagement/src/components/layout/layout.vue @@ -12,6 +12,7 @@ + import {ref} from "vue"; import LayoutHeader from "@/components/layout/header/LayoutHeader.vue"; +import SystemMenus from "@/components/layout/SystemMenus.vue"; const collapsed = ref(false); diff --git a/securityManagement/src/components/login/TelephoneLogin.vue b/securityManagement/src/components/login/TelephoneLogin.vue index 3e2b9a2..99a5d89 100644 --- a/securityManagement/src/components/login/TelephoneLogin.vue +++ b/securityManagement/src/components/login/TelephoneLogin.vue @@ -38,17 +38,22 @@ \ No newline at end of file diff --git a/securityManagement/src/views/serviceManagement/index.vue b/securityManagement/src/views/serviceManagement/index.vue new file mode 100644 index 0000000..84db465 --- /dev/null +++ b/securityManagement/src/views/serviceManagement/index.vue @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/securityManagement/src/views/test.vue b/securityManagement/src/views/test.vue index 1a58db2..ba851b8 100644 --- a/securityManagement/src/views/test.vue +++ b/securityManagement/src/views/test.vue @@ -1,13 +1,11 @@ + + \ No newline at end of file + diff --git a/securityManagement/src/views/userManagement/bgManagement/index.vue b/securityManagement/src/views/userManagement/bgManagement/index.vue new file mode 100644 index 0000000..d3e0a2c --- /dev/null +++ b/securityManagement/src/views/userManagement/bgManagement/index.vue @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/securityManagement/src/views/userManagement/uniManagement/index.vue b/securityManagement/src/views/userManagement/uniManagement/index.vue new file mode 100644 index 0000000..902efdc --- /dev/null +++ b/securityManagement/src/views/userManagement/uniManagement/index.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/securityManagement/tailwind.config.js b/securityManagement/tailwind.config.js new file mode 100644 index 0000000..5eef83c --- /dev/null +++ b/securityManagement/tailwind.config.js @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +} + From edea048d4439cdd030c2513fb11ac28588cadfc0 Mon Sep 17 00:00:00 2001 From: wangyilin <1454641981@qq.com> Date: Tue, 3 Sep 2024 11:34:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=85=A5=E9=A9=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- securityManagement/src/views/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/securityManagement/src/views/index.vue b/securityManagement/src/views/index.vue index 86ff46a..0948109 100644 --- a/securityManagement/src/views/index.vue +++ b/securityManagement/src/views/index.vue @@ -1,5 +1,5 @@ - - diff --git a/superManagement/src/views/unitManage/policeUnit/index.vue b/superManagement/src/views/unitManage/policeUnit/index.vue index 4603349..d2cf4af 100644 --- a/superManagement/src/views/unitManage/policeUnit/index.vue +++ b/superManagement/src/views/unitManage/policeUnit/index.vue @@ -13,15 +13,24 @@ import TableProMax from "@/components/table/TableProMax.vue"; import {ref} from "vue"; import {ComponentExposed} from "vue-component-type-helpers"; -import {TableProMaxProps} from "@/types/components/table"; -import {PoliceUnitPagerQueryParams, PoliceUnitPagerVo} from "@/types/views/unitManage/policeUnit.ts"; +import {TableProMaxProps, TableProMaxSlots} from "@/types/components/table"; +import { + EnterprisesUnitPagerQueryParams, EnterprisesUnitPagerVo, EnterprisesUnitSaveOrUpdateParams, + PoliceUnitPagerQueryParams, + PoliceUnitPagerVo +} from "@/types/views/unitManage/policeUnit.ts"; import api from "@/axios"; import {dictSelectNodes} from "@/config/dict.ts"; -import {message} from "ant-design-vue"; +import {message, Modal} from "ant-design-vue"; import {UNIT_TYPE} from "@/config"; +import {PageParams} from "@/types/hooks/useTableProMax.ts"; +import {submitSimpleFormModal} from "@/components/tsx/ModalPro.tsx"; +import useSelectAndTreeNodeVos from "@/hooks/useSelectAndTreeNodeVos.ts"; type TableProps = TableProMaxProps +const {administrativeDivisionTree} = useSelectAndTreeNodeVos('administrativeDivisionTree') + const tableRef = ref>(null!) const reqApi: TableProps['requestApi'] = (params) => api.post('/policeUnit/pager', params) const columns: TableProps['columns'] = [ @@ -56,21 +65,29 @@ const columns: TableProps['columns'] = [ dataIndex: 'opt', title: '操作', customRender({record}) { + if (record.checkStatus.value === 1) { + return + { + const resp = await api.post('/management/checkPass', { + checkDataId: record.snowFlakeId, + unitOptType: UNIT_TYPE.police + }) + message.success(resp.message) + await tableRef.value?.requestGetTableData() + }}> + 审核通过 + + + + } return - {record.checkStatus.value === 1 && { - const resp = await api.post('/management/checkPass', { - checkDataId: record.snowFlakeId, - unitOptType: UNIT_TYPE.police - }) - message.success(resp.message) - await tableRef.value?.requestGetTableData() - }}> - 审核通过 - - - } + showEnterprisesUnit(record)} + >企事业单位 + { @@ -114,6 +131,135 @@ const searchFormOptions: TableProps["searchFormOptions"] = { } } +type _TableProps = TableProMaxProps; +const showEnterprisesUnit = (policeUnitPagerVo: PoliceUnitPagerVo) => { + const saveOrUpdateEnterprisesUnit = (data?: EnterprisesUnitSaveOrUpdateParams & { + contactPersonInfoName?: string; + contactPersonInfoTelephone?: string + }) => { + submitSimpleFormModal({ + title: data.snowFlakeId ? `【${data.name}】 信息编辑` : '新增企事业单位', + formOptions: { + name: { + type: 'input', + label: '单位名称', + required: true + }, + administrativeDivisionCodes: { + type: 'cascader', + label: '行政区划', + required: true, + options: administrativeDivisionTree.value, + componentsProps: { + showSearch: true + } + }, + address: { + type: 'inputTextArea', + label: '详细地址' + }, + contactPersonInfoName: { + type: 'input', + label: '联系人名称' + }, + contactPersonInfoTelephone: { + type: 'input', + label: '联系人电话' + }, + remark: { + type: 'inputTextArea', + label: '备注' + } + }, + formParams: data, + submit: async (params) => { + params.contactPersonInfo = { + name: params.contactPersonInfoName, + telephone: params.contactPersonInfoTelephone + } + const resp = await api.post('/enterprisesUnit/saveOrUpdate', params) + message.success(resp.message) + await _tableRef.value?.requestGetTableData() + } + }) + } + const _tableRef = ref>(null) + const _columns: _TableProps['columns'] = [ + { + dataIndex: 'name', + title: '名称' + }, { + dataIndex: 'contactPersonInfo', + title: '联系人', + customRender: ({text}) => text?.name + "/" + text.telephone + }, { + dataIndex: 'province', + title: '行政区划', + customRender: ({record}) => [record.provinceName, record.cityName, record.districtsName, record.streetName].filter(Boolean).join("/") + }, { + dataIndex: 'address', + title: '详细地址' + }, { + dataIndex: 'remark', + title: '备注' + }, { + dataIndex: 'createTime', + title: '创建时间' + }, { + dataIndex: 'opt', + title: '操作', + customRender: ({record}) => + saveOrUpdateEnterprisesUnit({ + snowFlakeId: record.snowFlakeId, + policeUnitId: record.policeUnitId, + name: record.name, + administrativeDivisionCodes: [record.province, record.city, record.districts, record.street].filter(Boolean), + address: record.address, + contactPersonInfoName: record.contactPersonInfo?.name, + contactPersonInfoTelephone: record.contactPersonInfo?.telephone, + remark: record.remark + })} + >编辑 + + + } + ] + const _reqApi: _TableProps["requestApi"] = (params) => { + (params as PageParams).params.policeUnitId = policeUnitPagerVo.snowFlakeId + return api.post('/enterprisesUnit/pager', params) + } + Modal.info({ + title: `【${policeUnitPagerVo.name}】 管辖企事业单位`, + width: '80%', + content: () => { + return + saveOrUpdateEnterprisesUnit({ + name: undefined, + policeUnitId: policeUnitPagerVo.snowFlakeId, + administrativeDivisionCodes: [policeUnitPagerVo.province, policeUnitPagerVo.city, policeUnitPagerVo.districts, policeUnitPagerVo.street].filter(Boolean) + })} + >新增 + + 导入 + + } + } as TableProMaxSlots} + /> + }) +} + diff --git a/securityManagement/src/components/table/TableProMax.vue b/securityManagement/src/components/table/TableProMax.vue new file mode 100644 index 0000000..c98ef55 --- /dev/null +++ b/securityManagement/src/components/table/TableProMax.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/securityManagement/src/config/dict.ts b/securityManagement/src/config/dict.ts index 86dc984..e27fe55 100644 --- a/securityManagement/src/config/dict.ts +++ b/securityManagement/src/config/dict.ts @@ -13,5 +13,5 @@ export const initEnums = () => { }) } -export const enumSelectNodes = (enumType: DictType): SelectNodeVo[] => JSON.parse(sessionStorage.getItem('dictMap') as string)?.[enumType] || [] +export const dictSelectNodes = (enumType: DictType): SelectNodeVo[] => JSON.parse(sessionStorage.getItem('dictMap') as string)?.[enumType] || [] diff --git a/securityManagement/src/config/index.ts b/securityManagement/src/config/index.ts index 251a99c..7934799 100644 --- a/securityManagement/src/config/index.ts +++ b/securityManagement/src/config/index.ts @@ -12,13 +12,13 @@ export const SYSTEM_MENUS: SystemMenu[] = [ type: "menu", component: () => import('@/views/index.vue') }, { - title: '单位管理', + title: '用户管理', name: 'userManagement', path: '/userManagement', type: 'dir', children: [ { - title: '用户管理', + title: '后台管理', name: 'bgManagement', path: '/bgManagement', type: 'menu', diff --git a/securityManagement/src/hooks/useTableProMax.ts b/securityManagement/src/hooks/useTableProMax.ts new file mode 100644 index 0000000..360f18e --- /dev/null +++ b/securityManagement/src/hooks/useTableProMax.ts @@ -0,0 +1,134 @@ +import {ref, Ref} from "vue"; +import {Page, PageParams, PageResult} from "@/types/hooks/useTableProMax.ts"; +import {FormInstance} from "ant-design-vue"; +import {BaseTableRowRecord, RequestApiType} from "@/types/components/table"; + +/** + * + * @param api 查询方法 + * @param searchFormRef 表单校验 + * @param searchParams 查询的参数 + * @param isPageTable 是否分页 + * @param dataCallBack 查询到数据后的回调 + * @param requestError 查询出错回调 + */ +export default | PageParams

>(api: RequestApiType, + searchFormRef: Ref, + searchParams: Ref

, + isPageTable: boolean = true, + dataCallBack?: (data: T[]) => T[], + requestError?: (errorMsg: any) => void) => { + + const dataSource = ref([]) as Ref; + const loading = ref(false); + const pageParams = ref({ + current: 1, + size: 10, + total: 0 + }) + + /** + * 获取表格数据 + */ + const requestGetTableData = async (isInit: boolean = false) => { + try { + //校验表单 + !isInit && await searchFormRef.value?.validate(); + //组装参数 + let totalSearchParams; + if (isPageTable) { + totalSearchParams = { + params: searchParams.value, + page: { + current: pageParams.value.current, + size: pageParams.value.size + } + } as PageParams

; + } else { + totalSearchParams = searchParams.value + } + + loading.value = true; + + const resp = await api(totalSearchParams as P); + let tableData: T[]; + + if (isPageTable) { + const {current, records, size, total} = resp.data as PageResult; + isPageTable && updatePageParams({ + current: parseInt(current), + size: parseInt(size), + total: parseInt(total) + }); + tableData = records; + } else { + tableData = resp.data as T[] + } + dataCallBack && (tableData = dataCallBack(tableData)); + dataSource.value = tableData; + } catch (error) { + requestError && requestError(error); + } finally { + loading.value = false; + } + } + + /** + * 更新分页信息 + */ + const updatePageParams = (ps: Page) => Object.assign(pageParams.value, ps) + + /** + * 重置表格状态 包括 dataSource loading pageParams + */ + const resetState = () => { + dataSource.value = []; + loading.value = false; + pageParams.value = { + current: 1, + size: 10, + total: 0 + } + } + + /** + * 表格数据查询 与 requestGetTableData 区别是会将页面重置为1 + * 如果只做刷新数据请用 requestGetTableData + */ + const search = async () => { + pageParams.value.current = 1; + await requestGetTableData(); + }; + + /** + * @description 每页条数改变 + * @param _ + * @param {Number} size 页显示数量 + */ + const handleSizeChange = async (_: number, size: number) => { + pageParams.value.current = 1; + pageParams.value.size = size; + await requestGetTableData(); + }; + + /** + * @description 当前页改变 + * @param current 当前页 + */ + const handleCurrentChange = async (current: number) => { + pageParams.value.current = current; + await requestGetTableData(); + }; + + return { + dataSource, + loading, + pageParams, + requestGetTableData, + search, + handleSizeChange, + handleCurrentChange, + resetState + }; + +} diff --git a/securityManagement/src/main.ts b/securityManagement/src/main.ts index b636b33..ed5c439 100644 --- a/securityManagement/src/main.ts +++ b/securityManagement/src/main.ts @@ -4,6 +4,7 @@ import '@/reset.css' import './index.css' // 公共样式 import '@/assets/scss/common.scss' +import '@/assets/scss/myAntD.scss' // iconfont css import "@/assets/iconfont/iconfont.css"; // vue Router diff --git a/securityManagement/src/router/index.ts b/securityManagement/src/router/index.ts index 3864660..106f0ed 100644 --- a/securityManagement/src/router/index.ts +++ b/securityManagement/src/router/index.ts @@ -32,7 +32,7 @@ router.beforeEach(async (to, from, next) => { // 不在白名单内需要查看是否携带token 没有token需要返回登录页进行登录 if (!userStore.getTokenInfo?.value) { await message.warn('未找到token,请重新登陆!') - return next('/login'); + return next('/enterprise'); } //放行 return next(); diff --git a/securityManagement/src/router/staticRouters.ts b/securityManagement/src/router/staticRouters.ts index 2739b4f..8b53ef5 100644 --- a/securityManagement/src/router/staticRouters.ts +++ b/securityManagement/src/router/staticRouters.ts @@ -51,4 +51,9 @@ export const staticRouter: RouteRecordRaw[] = [ name: 'test', component: () => import("@/views/test.vue"), }, + { + path: '/enterprise', + name: 'enterprise', + component: () => import("@/views/enterprise.vue"), + }, ] diff --git a/securityManagement/src/types/components/form/index.ts b/securityManagement/src/types/components/form/index.ts new file mode 100644 index 0000000..0477415 --- /dev/null +++ b/securityManagement/src/types/components/form/index.ts @@ -0,0 +1,73 @@ +import { + FormProps, + RangePicker, + Input, + InputNumber, + Textarea, + InputPassword, + RadioGroup, + Select, + TreeSelect, + Cascader, + CheckboxGroup, + DatePicker, + FormItem, TimeRangePicker, TimePicker, +} from "ant-design-vue"; +import {Ref, UnwrapRef, VNode} from "vue"; +import {ComponentProps} from "vue-component-type-helpers"; + +type FormProMaxItemType = + | 'custom' + | 'input' + | 'inputPassword' + | 'inputNumber' + | 'inputTextArea' + | 'radioGroup' + | 'select' + | 'selectIcon' + | 'selectUser' + | 'treeSelect' + | 'cascader' + | 'checkboxGroup' + | 'datePicker' + | 'rangePicker' + | 'timeRangePicker' + | 'timePicker'; + +interface FormProMaxItemCommonProps extends ComponentProps { + label?: string, + grid?: Grid, + placeholder?: string, + remarkRender?: () => VNode | string, + customRender?: () => VNode; + options?: (SelectNodeVo | TreeNodeVo) [] | Ref<(SelectNodeVo | TreeNodeVo)[]> +} + +export interface FormProMaxItemProps extends FormProMaxItemCommonProps { + type: T + componentsProps?: C +} + +export type FormProMaxItemOptions = { + [key in keyof T | string]: + FormProMaxItemProps<'custom', ComponentProps>> + | FormProMaxItemProps<'input', ComponentProps> + | FormProMaxItemProps<'inputPassword', ComponentProps> + | FormProMaxItemProps<'inputNumber', ComponentProps> + | FormProMaxItemProps<'inputTextArea', ComponentProps> + | FormProMaxItemProps<'radioGroup', ComponentProps> + | FormProMaxItemProps<'select', ComponentProps> + | FormProMaxItemProps<'treeSelect', ComponentProps> + | FormProMaxItemProps<'cascader', ComponentProps> + | FormProMaxItemProps<'checkboxGroup', ComponentProps> + | FormProMaxItemProps<'datePicker', ComponentProps> + | FormProMaxItemProps<'rangePicker', ComponentProps> + | FormProMaxItemProps<'timeRangePicker', ComponentProps> + | FormProMaxItemProps<'timePicker', ComponentProps> +} + +export interface FormProMaxProps extends FormProps { + grid?: Grid + gutter?: number; + formItemOptions?: FormProMaxItemOptions | Ref> | UnwrapRef> +} diff --git a/securityManagement/src/types/components/table/index.ts b/securityManagement/src/types/components/table/index.ts new file mode 100644 index 0000000..20c3793 --- /dev/null +++ b/securityManagement/src/types/components/table/index.ts @@ -0,0 +1,55 @@ +import {PaginationProps, Table, TableProps} from "ant-design-vue"; +import {TableRowSelection} from "ant-design-vue/lib/table/interface"; +import {Ref, UnwrapRef} from "vue"; +import {ColumnType} from "ant-design-vue/es/table/interface"; +import {ComponentSlots} from "vue-component-type-helpers"; +import {FormProMaxItemOptions, FormProMaxProps} from "@/types/components/form"; +import {PageParams, PageResult} from "@/types/hooks/useTableProMax.ts"; + + +export type TableProMaxColumnType = Omit, 'dataIndex'> & { + dataIndex: keyof T | string | string[] | number | number[]; +} + + +export type TableProMaxProps< + T extends BaseTableRowRecord = {}, + P extends { [key: string]: any } = {} +> = Partial, "dataSource" | 'pagination' | 'loading' | 'rowKey' | 'columns'>> & { + rowKey?: keyof T, + columns?: TableProMaxColumnType[], + searchFormProps?: Omit, 'formItems'> + searchFormOptions?: FormProMaxItemOptions

| Ref> | UnwrapRef>, + defaultSearchParams?: { [key in keyof P | string]: any }; + requestAuto?: boolean, + requestApi: RequestApiType, + requestError?: (errorMsg: any) => void, + dataCallback?: (data: T[]) => T[], + isPagination?: boolean, + paginationProps?: TableProMaxPaginationProps, + isSelection?: boolean, + selectionProps?: TableProMaxRowSelect, + isPrinter?: boolean, + needIndex?: boolean +} + +export type TableProMaxSlots = ComponentSlots & { + tableHeader: (scope: { selectKeys: string[], selectRows: T[] }) => any, + tableHeaderRight: (scope: { selectKeys: string[], selectRows: T[] }) => any, +} + +export type RequestApiType = (params: P | PageParams

) => Promise>>; + +export type TableProMaxPaginationProps = Partial>; + +export type TableProMaxRowSelect = TableRowSelection; + +export interface BaseTableRowRecord { + snowFlakeId?: string; + createUserName?: string; + createTime?: Date | string; + updateUserName?: string; + updateTime?: Date | string +} diff --git a/securityManagement/src/types/hooks/useTableProMax.ts b/securityManagement/src/types/hooks/useTableProMax.ts new file mode 100644 index 0000000..3989828 --- /dev/null +++ b/securityManagement/src/types/hooks/useTableProMax.ts @@ -0,0 +1,26 @@ +/** + * 分页对象 + */ +export interface Page { + current: number, + size: number, + total: number +} + +/** + * 分页参数 + */ +export interface PageParams = {}> { + params: T & { [key: string]: any }, + page: Omit +} + +/** + * 分页结果 + */ +export interface PageResult { + current: string, + records: T[], + size: string, + total: string +} \ No newline at end of file diff --git a/securityManagement/src/types/views/bgManagement.ts b/securityManagement/src/types/views/bgManagement.ts new file mode 100644 index 0000000..6986e6d --- /dev/null +++ b/securityManagement/src/types/views/bgManagement.ts @@ -0,0 +1,22 @@ +import {BaseTableRowRecord} from "@/types/components/table"; + +export interface BgManagementPagerQueryParams extends BaseTableRowRecord{ + /** 名称 **/ + name?: string; + /** 社会编码 **/ + socialCode?: string; + /** 行政区划编码 **/ + administrativeDivisionCodes?: string[]; + /** 是否启用 **/ + isEnable?: number; + /** 审核状态 **/ + checkStatus?: number; + /** 账号 **/ + account?:string, + sex?:BaseEnum, + telephone?:string, + createTime?:string, + snowFlakeId?:string, + remark?:string, +} + diff --git a/securityManagement/src/views/test.vue b/securityManagement/src/views/test.vue index ba851b8..057eb32 100644 --- a/securityManagement/src/views/test.vue +++ b/securityManagement/src/views/test.vue @@ -1,11 +1,264 @@ - +