diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/AddType.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/AddType.java new file mode 100644 index 0000000..f3b7b9a --- /dev/null +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/AddType.java @@ -0,0 +1,17 @@ +package com.cxyxiaomo.epp.PageTable.enums; + +public enum AddType { + CAN_NOT_ADD("plainText"), + INPUT("input"), + SELECT("select"); + + private final String value; + + private AddType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/EditType.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/EditType.java similarity index 75% rename from backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/EditType.java rename to backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/EditType.java index 3ca99d4..e7dac60 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/EditType.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/EditType.java @@ -1,7 +1,7 @@ -package com.cxyxiaomo.epp.common.enums; +package com.cxyxiaomo.epp.PageTable.enums; public enum EditType { - PLAIN_TEXT("plainText"), + CAN_NOT_EDIT("plainText"), INPUT("input"), SELECT("select"); diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/SearchType.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/SearchType.java similarity index 76% rename from backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/SearchType.java rename to backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/SearchType.java index 9e82621..a9a84b7 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/enums/SearchType.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/enums/SearchType.java @@ -1,7 +1,7 @@ -package com.cxyxiaomo.epp.common.enums; +package com.cxyxiaomo.epp.PageTable.enums; public enum SearchType { - CAN_NOT_SEARCH(null), + CAN_NOT_SEARCH("null"), INPUT("input"), SELECT("select"); diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/query/PageQuery.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/query/PageQuery.java similarity index 92% rename from backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/query/PageQuery.java rename to backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/query/PageQuery.java index d22f711..18e9d86 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/query/PageQuery.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/query/PageQuery.java @@ -1,4 +1,4 @@ -package com.cxyxiaomo.epp.common.query; +package com.cxyxiaomo.epp.PageTable.query; import lombok.Getter; diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldBuilder.java new file mode 100644 index 0000000..ab434d7 --- /dev/null +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldBuilder.java @@ -0,0 +1,85 @@ +package com.cxyxiaomo.epp.PageTable.utils; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cxyxiaomo.epp.PageTable.enums.AddType; +import com.cxyxiaomo.epp.PageTable.enums.EditType; +import com.cxyxiaomo.epp.PageTable.enums.SearchType; + +public class FieldBuilder { + + public final static String SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME = ""; + + public final static String EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER = ""; + private JSONArray columns; + + public static FieldBuilder create() { + FieldBuilder builder = new FieldBuilder(); + builder.columns = new JSONArray(); + return builder; + } + + /** + * @param field 对应 POJO 中的属性名称
+ * 用于新增/修改弹窗
+ * @param prop 显示的字段名 如果需要翻译(例如roleId->roleName)则填写翻译后的字段
+ * 用于渲染表格时指定显示列
+ * @param fieldName 列的显示名称
+ * @param defaultValue 新增弹窗中的默认值
+ * @param showInTable
+ * @param searchPlaceholder 搜索的placeholder
+ * 如果为 null 则使用 fieldName
+ * @param addPlaceholder
+ * @param editPlaceholder
+ * @param searchType 该筛选字段显示为什么类型
+ * @param addType 新增弹窗中该字段显示为什么类型
+ * @param editType 修改弹窗中该字段显示为什么类型
+ * @param fieldRuleListBuilder 提交时的表单验证
+ * @param mockDataPattern mock数据正则
+ * @return FieldBuilder + */ + public FieldBuilder add(String field, String prop, String fieldName, Object defaultValue, + Boolean showInTable, SearchType searchType, AddType addType, EditType editType, + String searchPlaceholder, String addPlaceholder, String editPlaceholder, + FieldRuleListBuilder fieldRuleListBuilder, String mockDataPattern) { + JSONObject jsonObject = new JSONObject(2); + + /* 实际字段 */ + // 用于筛选、增删改 + jsonObject.put("field", field); + + /* 表格数据 */ + // 展示字段 + jsonObject.put("prop", prop); + // 表格列显示名称 + jsonObject.put("label", fieldName); + // 表格是否展示该字段 + jsonObject.put("showInTable", showInTable); + + /* 筛选 */ + // 上方筛选条件 + jsonObject.put("searchType", searchType.getValue()); + jsonObject.put("searchPlaceholder", SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME.equals(searchPlaceholder) ? fieldName : searchPlaceholder); + + /* 弹窗 */ + // 新增弹窗 + jsonObject.put("addType", addType.getValue()); + jsonObject.put("addPlaceholder", addPlaceholder); + // 修改弹窗 + jsonObject.put("editType", editType.getValue()); + jsonObject.put("editPlaceholder", EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER.equals(editPlaceholder) ? addPlaceholder : editPlaceholder); + // 新增/修改时的前端表单验证 + jsonObject.put("validateRules", fieldRuleListBuilder.build()); + // 新增弹窗 字段默认值 + jsonObject.put("default", defaultValue); + + jsonObject.put("mockRegex", mockDataPattern); + + columns.add(jsonObject); + return this; + } + + public JSONArray build() { + return columns; + } +} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldMapperBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldMapperBuilder.java similarity index 75% rename from backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldMapperBuilder.java rename to backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldMapperBuilder.java index e972085..7430625 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldMapperBuilder.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldMapperBuilder.java @@ -1,16 +1,16 @@ -package com.cxyxiaomo.epp.common.utils; +package com.cxyxiaomo.epp.PageTable.utils; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import java.util.HashMap; -public class PageTableFieldMapperBuilder { +public class FieldMapperBuilder { private JSONArray columns; - public static PageTableFieldMapperBuilder create() { - PageTableFieldMapperBuilder builder = new PageTableFieldMapperBuilder(); + public static FieldMapperBuilder create() { + FieldMapperBuilder builder = new FieldMapperBuilder(); builder.columns = new JSONArray(); return builder; } @@ -27,7 +27,7 @@ public class PageTableFieldMapperBuilder { // return this; // } - public PageTableFieldMapperBuilder add(String prop, String label, HashMap mapper) { + public FieldMapperBuilder add(String prop, String label, HashMap mapper) { JSONObject jsonObject = new JSONObject(2); jsonObject.put("key", prop); jsonObject.put("value", label); diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleBuilder.java new file mode 100644 index 0000000..f9480a1 --- /dev/null +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleBuilder.java @@ -0,0 +1,86 @@ +package com.cxyxiaomo.epp.PageTable.utils; + +import com.alibaba.fastjson2.JSONObject; + +/** + * Element Plus 表单验证 + * GiHub refer: https://github.com/yiminghe/async-validator + */ +public class FieldRuleBuilder { + + private String fieldDisplayName; + private JSONObject rules; + + public static FieldRuleBuilder create(String fieldDisplayName) { + FieldRuleBuilder builder = new FieldRuleBuilder(); + builder.rules = new JSONObject(); + builder.fieldDisplayName = fieldDisplayName; + // 默认在 blur 时触发验证 + // builder.rules.put("trigger", "blur"); + builder.rules.put("trigger", "change"); + return builder; + } + + public FieldRuleBuilder trigger(String trigger) { + rules.put("trigger", trigger); + return this; + } + + public FieldRuleBuilder message(String message) { + rules.put("message", message); + return this; + } + + public FieldRuleBuilder required() { + rules.put("required", true); + rules.put("message", fieldDisplayName + "不能为空"); + return this; + } + + public FieldRuleBuilder pattern(String regEx) { + rules.put("pattern", regEx); + rules.put("message", fieldDisplayName + "输入不符合要求,请检查"); + return this; + } + + public FieldRuleBuilder number() { + rules.put("type", "number"); + rules.put("message", fieldDisplayName + "必须为数字"); + return this; + } + + public FieldRuleBuilder min(Integer min) { + rules.put("min", min); + rules.put("message", fieldDisplayName + "过短"); + return this; + } + + public FieldRuleBuilder max(Integer max) { + rules.put("max", max); + rules.put("message", fieldDisplayName + "过长"); + return this; + } + + public FieldRuleBuilder minMax(Integer min, Integer max) { + rules.put("min", min); + rules.put("max", max); + rules.put("message", fieldDisplayName + "长度应在 " + min + " 至 " + max + " 之间"); + return this; + } + + public FieldRuleBuilder length(Integer len) { + rules.put("min", len); + rules.put("max", len); + rules.put("message", fieldDisplayName + "位数不对,应为 " + len + " 位"); + return this; + } + + public FieldRuleBuilder add(String field, Object value) { + rules.put(field, value); + return this; + } + + public JSONObject build() { + return rules; + } +} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleListBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleListBuilder.java new file mode 100644 index 0000000..76a7e0d --- /dev/null +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldRuleListBuilder.java @@ -0,0 +1,23 @@ +package com.cxyxiaomo.epp.PageTable.utils; + +import com.alibaba.fastjson2.JSONArray; + +public class FieldRuleListBuilder { + + private JSONArray ruleList; + + public static FieldRuleListBuilder create() { + FieldRuleListBuilder builder = new FieldRuleListBuilder(); + builder.ruleList = new JSONArray(); + return builder; + } + + public FieldRuleListBuilder add(FieldRuleBuilder fieldRuleBuilder) { + ruleList.add(fieldRuleBuilder.build()); + return this; + } + + public JSONArray build() { + return ruleList; + } +} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldValidateBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldValidateBuilder.java new file mode 100644 index 0000000..ff5165b --- /dev/null +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/FieldValidateBuilder.java @@ -0,0 +1,29 @@ +package com.cxyxiaomo.epp.PageTable.utils; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; + +public class FieldValidateBuilder { + + private JSONObject validates; + + public static FieldValidateBuilder create() { + FieldValidateBuilder builder = new FieldValidateBuilder(); + builder.validates = new JSONObject(); + return builder; + } + + public FieldValidateBuilder add(String field, FieldRuleBuilder fieldRuleBuilder) { + JSONArray jsonArray = validates.getJSONArray(field); + if (jsonArray == null) { + jsonArray = new JSONArray(); + } + jsonArray.add(fieldRuleBuilder.build()); + validates.put(field, jsonArray); + return this; + } + + public JSONObject build() { + return validates; + } +} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageUtils.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/PageUtils.java similarity index 95% rename from backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageUtils.java rename to backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/PageUtils.java index bfce4f8..9fc8ea4 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageUtils.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/PageTable/utils/PageUtils.java @@ -1,4 +1,4 @@ -package com.cxyxiaomo.epp.common.utils; +package com.cxyxiaomo.epp.PageTable.utils; import com.github.pagehelper.PageInfo; import org.springframework.beans.BeanUtils; diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldBuilder.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldBuilder.java deleted file mode 100644 index 020d241..0000000 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/utils/PageTableFieldBuilder.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.cxyxiaomo.epp.common.utils; - -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; -import com.cxyxiaomo.epp.common.enums.EditType; -import com.cxyxiaomo.epp.common.enums.SearchType; - -public class PageTableFieldBuilder { - - private JSONArray columns; - - public static PageTableFieldBuilder create() { - PageTableFieldBuilder builder = new PageTableFieldBuilder(); - builder.columns = new JSONArray(); - return builder; - } - - /** - * @param field 对应 POJO 中的属性名称
- * 用于新增/修改弹窗
- * @param prop 显示的字段名 如果需要翻译(例如roleId->roleName)则填写翻译后的字段
- * 用于渲染表格时指定显示列
- * @param label 列的显示名称
- * @param canSearch 该字段能否在表格上方被筛选
- * @param searchType 该筛选字段显示为什么类型
- * @param canEdit 该字段能否在新增/修改弹窗中被修改
- * @param editType 新增/修改弹窗中该字段显示为什么类型
- * @param defaultWhenAdd 新增弹窗中的默认值
- * @return - */ - public PageTableFieldBuilder add(String field, String prop, String label, - Boolean canSearch, SearchType searchType, - Boolean canEdit, EditType editType, Object defaultWhenAdd) { - JSONObject jsonObject = new JSONObject(2); - // 表格数据 - jsonObject.put("prop", prop); - jsonObject.put("label", label); - - // 上方筛选条件 - jsonObject.put("canSearch", canSearch); - jsonObject.put("searchType", searchType.getValue()); - - // 新增、修改弹窗 - jsonObject.put("field", field); - jsonObject.put("canEdit", canEdit); - jsonObject.put("editType", editType.getValue()); - - // 新增弹窗 字段默认值 - jsonObject.put("default", defaultWhenAdd); - - columns.add(jsonObject); - return this; - } - - public JSONArray build() { - return columns; - } -} diff --git a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/vo/UserVO.java b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/vo/UserVO.java index 0cd8ba4..e1a9ab5 100644 --- a/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/vo/UserVO.java +++ b/backend/microservice-common/src/main/java/com/cxyxiaomo/epp/common/vo/UserVO.java @@ -45,4 +45,13 @@ public class UserVO implements Serializable { List userVOList = userList.stream().map(UserVO::convertFrom).collect(Collectors.toList()); return userVOList; } + + public static User convertTo(UserVO userVO) { + if (userVO == null) { + return null; + } + User user = new User(); + BeanUtils.copyProperties(userVO, user); + return user; + } } diff --git a/backend/microservice-provider-user-8001/pom.xml b/backend/microservice-provider-user-8001/pom.xml index f27fa54..70781e7 100644 --- a/backend/microservice-provider-user-8001/pom.xml +++ b/backend/microservice-provider-user-8001/pom.xml @@ -99,10 +99,10 @@ - - org.springframework.boot - spring-boot-devtools - + + + + diff --git a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/controller/UserController.java b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/controller/UserController.java index 7bb9570..2ba7083 100644 --- a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/controller/UserController.java +++ b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/controller/UserController.java @@ -2,14 +2,17 @@ package com.cxyxiaomo.epp.user.controller; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.cxyxiaomo.epp.common.enums.EditType; -import com.cxyxiaomo.epp.common.enums.SearchType; +import com.cxyxiaomo.epp.PageTable.enums.AddType; +import com.cxyxiaomo.epp.PageTable.enums.EditType; +import com.cxyxiaomo.epp.PageTable.enums.SearchType; +import com.cxyxiaomo.epp.PageTable.query.PageQuery; +import com.cxyxiaomo.epp.PageTable.utils.FieldBuilder; +import com.cxyxiaomo.epp.PageTable.utils.FieldMapperBuilder; +import com.cxyxiaomo.epp.PageTable.utils.FieldRuleBuilder; +import com.cxyxiaomo.epp.PageTable.utils.FieldRuleListBuilder; import com.cxyxiaomo.epp.common.pojo.Role; import com.cxyxiaomo.epp.common.pojo.User; -import com.cxyxiaomo.epp.common.query.PageQuery; import com.cxyxiaomo.epp.common.response.Res; -import com.cxyxiaomo.epp.common.utils.PageTableFieldBuilder; -import com.cxyxiaomo.epp.common.utils.PageTableFieldMapperBuilder; import com.cxyxiaomo.epp.common.vo.UserVO; import com.cxyxiaomo.epp.user.service.RoleService; import com.cxyxiaomo.epp.user.service.UserService; @@ -66,7 +69,7 @@ public class UserController { */ @PostMapping("/rpc/getUserById") @ResponseBody - public User getUserById(Long id) { + public User getUserById(Integer id) { return userService.getUserById(id); } @@ -78,7 +81,6 @@ public class UserController { @GetMapping("/manage/getUserList") @ResponseBody public Res getUserList(PageQuery pageQuery, UserVO userVO) { - // 查询分页数据 PageHelper.startPage(pageQuery.getPageIndex(), pageQuery.getPageSize()); List userList = userService.getUserList(userVO); @@ -86,29 +88,82 @@ public class UserController { List list = userPageInfo.getList(); List voList = UserVO.convertFrom(list); + // id列 字段名(区分大小写;以VO中的变量名为准) + // 新增、修改弹窗时,使用该列作为主键列进行操作 + String idFieldName = "id"; + // 指定前端表格显示列 - JSONArray columns = PageTableFieldBuilder.create() - .add("username", "username", "用户名", - true, SearchType.INPUT, - false, EditType.PLAIN_TEXT, null) - .add("roleId", "roleName", "角色", - true, SearchType.SELECT, - true, EditType.SELECT, 0) - .add("realname", "realname", "真实姓名", - true, SearchType.INPUT, - true, EditType.INPUT, "") - .add("phoneNumber", "phoneNumber", "电话", - true, SearchType.INPUT, - true, EditType.INPUT, "") - .add("idNumber", "idNumber", "身份证号", - true, SearchType.INPUT, - true, EditType.INPUT, "") - .add("buildingId", "buildingId", "门栋/单元号", - true, SearchType.INPUT, - true, EditType.INPUT, "") - .add("doorplate", "doorplate", "门牌号", - true, SearchType.INPUT, - true, EditType.INPUT, "") + JSONArray columns = FieldBuilder.create() + .add("username", "username", "账号", "", + true, SearchType.INPUT, AddType.INPUT, EditType.CAN_NOT_EDIT, + FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME, + "用户名", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("用户名").required()) + .add(FieldRuleBuilder.create("用户名").minMax(2, 10)), + "DPD @word(2, 10)" + ) + .add("password", "password", "密码", "", + false, SearchType.CAN_NOT_SEARCH, AddType.INPUT, EditType.INPUT, + null, + "必填", "若不修改则留空", + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("用户密码").minMax(2, 10)), + "DPD @word(2, 10)" + ) + .add("roleId", "roleName", "角色", "", + true, SearchType.SELECT, AddType.SELECT, EditType.SELECT, + "用户角色", + "用户的角色", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("角色").required()), + "DPD @pick([\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"])" + ) + .add("realname", "realname", "真实姓名", "", + true, SearchType.INPUT, AddType.INPUT, EditType.INPUT, + FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME, + "用户的真实姓名", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("真实姓名").required()) + .add(FieldRuleBuilder.create("真实姓名").minMax(2, 15)), + "DPD @cword(2, 8)" + ) + .add("phoneNumber", "phoneNumber", "电话", "", + true, SearchType.INPUT, AddType.INPUT, EditType.INPUT, + "电话号码", + "支持11位手机号码、区号-7/8位座机号码", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("电话").required()) + .add(FieldRuleBuilder.create("电话").pattern("^(1[3-9]\\d{9})$|^(0\\d{2,3}-?\\d{7,8})$")), + "DTD /^(1[3-9]\\d{9})$|^(0\\d{2,3}-?\\d{7,8})$/" + ) + .add("idNumber", "idNumber", "身份证号", "", + true, SearchType.INPUT, AddType.INPUT, EditType.INPUT, + FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME, + "支持15位、18位数字、17位数字+X格式", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("身份证号").required()) + .add(FieldRuleBuilder.create("身份证号").min(15)) + .add(FieldRuleBuilder.create("身份证号").max(18)) + .add(FieldRuleBuilder.create("身份证号").pattern("^(\\d{15})$|^(\\d{18})$|^(\\d{17}(\\d|X|x))$")), + "DTD /^(\\d{15})$|^(\\d{18})$|^(\\d{17}(\\d|X|x))$/" + ) + .add("buildingId", "buildingId", "门栋单元", "", + true, SearchType.INPUT, AddType.INPUT, EditType.INPUT, + FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME, + "门栋及单元号,例如:11-05(11栋05单元)", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("门栋/单元号").minMax(2, 10)), + "DTD /^\\d{2}-\\d{2}$/" + ) + .add("doorplate", "doorplate", "门牌号", "", + true, SearchType.INPUT, AddType.INPUT, EditType.INPUT, + FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME, + "门牌号,例如:2003(20楼03户)", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER, + FieldRuleListBuilder.create() + .add(FieldRuleBuilder.create("门牌号").minMax(1, 10)), + "DTD /^\\d{4}$/" + ) .build(); // 指定需要翻译的字段 @@ -119,7 +174,7 @@ public class UserController { roleMap.put(role.getId(), role.getRoleName()); } // build - JSONArray fieldMapper = PageTableFieldMapperBuilder.create() + JSONArray fieldMapper = FieldMapperBuilder.create() .add("roleId", "roleName", roleMap) .build(); @@ -129,31 +184,70 @@ public class UserController { map.put("list", voList); map.put("columns", columns); map.put("fieldMapper", fieldMapper); + map.put("idFieldName", idFieldName); // 返回结果 return Res.success(map); } - - @RequestMapping("/person") + /** + * 新增 / 编辑用户 + * + * @return + */ + @PostMapping("/manage/editUser") @ResponseBody - public User person(String username) { - return null; - // return userService.getUserByUsername(username); + public Res editUser(@ModelAttribute UserVO userVO, String password) { + User user = UserVO.convertTo(userVO); + + // 先查询用户名是否存在 + User existUser = userService.getUserByUsername(user.getUsername()); + + if (user.getId() == null || user.getId() < 1) { + // 新增用户 + if (existUser != null) { + return Res.error("用户名已存在,操作失败"); + } + if (password == null || "".equals(password)) { + return Res.error("密码不能为空"); + } + String passwordHash = DigestUtils.sha512Hex(password); + user.setPassword(passwordHash); + userService.addUser(user); + } else { + // 修改用户 + if (existUser == null) { + return Res.error("用户不存在,操作失败"); + } + if (password == null || "".equals(password)) { + user.setPassword(null); + } else { + String passwordHash = DigestUtils.sha512Hex(password); + user.setPassword(passwordHash); + } + userService.updateUser(user); + } + return Res.success(true); } - @RequestMapping("/addUser") + /** + * 删除用户 + * + * @param id + * @return + */ + @PostMapping("/manage/deleteUser") @ResponseBody - public Res addUser(String username, String name, Integer role) { - // User user = new User(); - // user.setUsername(username); - // user.setPassword(username); - // user.setName(name); - // if (role == 2) { - // user.setStu_id(username); - // } - // user.setRole(role); - // return Res.success(userService.addUser(user)); - return null; + public Res deleteUser(Integer id) { + if (id == null || id <= 0) { + return Res.error("用户不存在,删除失败"); + } + // 先查询用户名是否存在 + User existUser = userService.getUserById(id); + if (existUser == null) { + return Res.error("用户不存在,删除失败"); + } + boolean b = userService.deleteUser(existUser.getId()); + return Res.success(b); } } diff --git a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/dao/UserDao.java b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/dao/UserDao.java index 83fe076..eba0b80 100644 --- a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/dao/UserDao.java +++ b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/dao/UserDao.java @@ -13,9 +13,13 @@ public interface UserDao { public boolean addUser(User user); - public User getUserById(Long id); + public boolean updateUser(User user); + + public User getUserById(Integer id); User getUserByUsername(String username); public List getUserList(UserVO userVO); + + public boolean deleteUserById(Integer userId); } diff --git a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/service/UserService.java b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/service/UserService.java index 1ad9a4d..401c1de 100644 --- a/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/service/UserService.java +++ b/backend/microservice-provider-user-8001/src/main/java/com/cxyxiaomo/epp/user/service/UserService.java @@ -18,7 +18,7 @@ public class UserService { return userDao.getUserByUsername(username); } - public User getUserById(Long id) { + public User getUserById(Integer id) { return userDao.getUserById(id); } @@ -26,4 +26,21 @@ public class UserService { List userList = userDao.getUserList(userVO); return userList; } + + public boolean addUser(User user) { + user.setId(null); + if (user.getPermission() == null) { + // 填充默认值 + user.setPermission("0"); + } + return userDao.addUser(user); + } + + public boolean updateUser(User user) { + return userDao.updateUser(user); + } + + public boolean deleteUser(Integer userId) { + return userDao.deleteUserById(userId); + } } diff --git a/backend/microservice-provider-user-8001/src/main/resources/mybatis/mapper/UserMapper.xml b/backend/microservice-provider-user-8001/src/main/resources/mybatis/mapper/UserMapper.xml index 2576600..e603f17 100644 --- a/backend/microservice-provider-user-8001/src/main/resources/mybatis/mapper/UserMapper.xml +++ b/backend/microservice-provider-user-8001/src/main/resources/mybatis/mapper/UserMapper.xml @@ -4,10 +4,48 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - INSERT INTO user (username, password) - VALUES (#{username}, #{password}) + INSERT INTO user (username, `password`, realname, id_number, phone_number, role_id, building_id, doorplate, + permission, permission_time) + VALUES (#{username}, #{password}, #{realname}, #{idNumber}, #{phoneNumber}, #{roleId}, #{buildingId}, + #{doorplate}, #{permission}, #{permissionTime}) - SELECT * FROM user WHERE id = #{id} @@ -43,4 +81,10 @@ AND doorplate LIKE concat('%',#{doorplate,jdbcType=VARCHAR},'%') + + + DELETE + FROM user + WHERE id = #{userId} + diff --git a/database/epp.sql b/database/epp.sql index 71502aa..25f8f93 100644 --- a/database/epp.sql +++ b/database/epp.sql @@ -11,7 +11,7 @@ Target Server Version : 80012 File Encoding : 65001 - Date: 28/03/2023 22:11:06 + Date: 29/03/2023 17:21:45 */ SET NAMES utf8mb4; @@ -57,7 +57,7 @@ CREATE TABLE `community_gate1` ( `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '大门显示名称', `open` tinyint(1) NOT NULL DEFAULT 1 COMMENT '大门是否开放 1为开放 2为关闭', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社区大门' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社区大门' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of community_gate1 @@ -356,7 +356,7 @@ CREATE TABLE `role` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'role_id', `role_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'roleName', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role @@ -394,31 +394,39 @@ CREATE TABLE `user` ( `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码', `realname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '真实姓名', `id_number` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份证号', - `phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号', + `phone_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号', `role_id` int(11) NOT NULL COMMENT '角色id', `building_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门栋号+单元号', `doorplate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门牌号', - `permission` int(11) NOT NULL DEFAULT 0 COMMENT '进出权限 (0-无 1-继承(普通居民) 2-永久 3-限时)', + `permission` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '进出权限 (0-无 1-继承(普通居民) 2-永久 3-限时)', `permission_time` datetime NULL DEFAULT NULL COMMENT '进出权限失效时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `username`(`username`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of user -- ---------------------------- -INSERT INTO `user` VALUES (1, 'root', '99adc231b045331e514a516b4b7680f588e3823213abe901738bc3ad67b2f6fcb3c64efb93d18002588d3ccc1a49efbae1ce20cb43df36b38651f11fa75678e8', '管理员 密码root', '420111111111111111', '110', 1, '28-1', '1101', 0, NULL); -INSERT INTO `user` VALUES (2, 'admin', 'c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec', '社区管理员 密码admin', '420111111111111111', '111', 2, '16-3', '0203', 0, NULL); -INSERT INTO `user` VALUES (3, 'user', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (4, 'user2', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户2 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (5, 'user3', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户3 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (6, 'user4', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户4 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (7, 'user5', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户5 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (8, 'user6', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户6 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (9, 'user7', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户7 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (10, 'user8', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户8 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (11, 'user9', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户9 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); -INSERT INTO `user` VALUES (12, 'user10', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户10 密码user', '420111111111111111', '112', 3, '20-2', '0802', 0, NULL); +INSERT INTO `user` VALUES (1, 'root', '99adc231b045331e514a516b4b7680f588e3823213abe901738bc3ad67b2f6fcb3c64efb93d18002588d3ccc1a49efbae1ce20cb43df36b38651f11fa75678e8', '管理员 密码root', '420111111111111112', '18911111111', 1, '28-1', '1101', '0', NULL); +INSERT INTO `user` VALUES (2, 'admin', 'c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec', '社区管理员 密码admin', '420111111111111111', '027-22222121', 2, '16-3', '0203', '0', NULL); +INSERT INTO `user` VALUES (3, 'user', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户 密码user', '420111111111111111', '18911111111', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (4, 'user2', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户2 密码user', '420111111111111111', '027-22222121', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (5, 'user3', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户3 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (6, 'user4', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户4 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (7, 'user5', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户5 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (8, 'user6', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户6 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (9, 'user7', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户7 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (10, 'user8', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户8 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (11, 'user9', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户9 密码user', '420111111111111111', '13123321311', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (12, 'user10', 'b14361404c078ffd549c03db443c3fede2f3e534d73f78f77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec8510c204fc1c1edb21d0941c00e9e2c1ce2', '用户10 密码user', '420111111111111111', '112', 3, '20-2', '0802', '0', NULL); +INSERT INTO `user` VALUES (13, 'qlrfsuxp', 'b5f2ac77c2b8a58dfbff97ff290406cee696c7b54dcd6ebdaf3fdb9205c531c720289f66f47d90c232ff36f942da5533e40e01f3472863c2d78923488fd81055', '而样分', '929309818756666037', '13480331104', 5, '24-62', '1354', '0', NULL); +INSERT INTO `user` VALUES (15, 'zqnpgccvq', 'c2bf9f49ef2c0da78eedacde07b37322aa063fa045dd6f24b1d449e5eb81d38fceb5ee656ab479f84cae1a56a4f7c6eac93242dd1cf0d0c754ce12e3b653f713', '机得什后叫', '375601190881718', '16792348638', 4, '78-16', '7138', '0', NULL); +INSERT INTO `user` VALUES (16, 'leyp', '00320b98cb7b69671f8298d0bd3340c84d954aabccddfae2f9355f91ed0342e721926ebb62192af6dd56cdc67ca54fcea65679ec6e18e3e8970d50c72bfabd22', '问组使增员了者', '576761656075477737', '13513873254', 6, '21-84', '8164', '0', NULL); +INSERT INTO `user` VALUES (17, 'kbiwiw', 'dd9d455bf8b09f491151c3af1448aca8c6136cd4c902d0b19ba5792c18577add4edf5bdb892238ab785cd8a540a22cea62d21139657f353a41be65a554330846', '感转', '634896418246896', '015-6634216', 2, '73-41', '9435', '0', NULL); +INSERT INTO `user` VALUES (18, 'dgciqwqhj', 'bec427eb1d7767afd214f6524f5aebc07e181d34cc054cbe23c7a87f262fd577dbe5b9e25e7184d192579296af7a933bea3d26017499ad499364cd8996610a69', '层开名法', '417821248186407144', '18865882572', 3, '23-78', '6264', '0', NULL); +INSERT INTO `user` VALUES (19, 'cm', '105056cce8fc85bdbecaed247db90332cf785c8fed9cbcb71dba57187aded6b81d049679a9b56155716c9e47958bc676722985956d0ab2fd040ae0e8cdb7720f', '指及价常件', '124677736597155066', '05961067874', 3, '54-64', '1370', '0', NULL); +INSERT INTO `user` VALUES (20, 'fcslfbk', '975c3a52d5435ae60a6f30f4572e754ab458613d0d6c309783bde047198f7944b75b54a62cfbae58594f30573717882aca9bebcccb3ade84fdd5a7d2dd9a0c0f', '集命问已土美石日', '464715523910577877', '0785-3674834', 4, '63-94', '2420', '0', NULL); +INSERT INTO `user` VALUES (21, 'vrk', 'f7e3fa3af542e7dd3960069eebb22b5e76adb57e5cf1df0ef0da5cea79e3e8f1a8414b612ebc6f4f08e64bddce070c7e6e55a8f4c098f90145b476acdd3f2808', '称红', '441911654591292', '17474066066', 2, '22-23', '7866', '0', NULL); -- ---------------------------- -- Table structure for visitor1 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d844119..9cdd37f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,6 +13,7 @@ "echarts": "^5.4.1", "element-plus": "^2.2.14", "md-editor-v3": "^2.2.1", + "mockjs": "^1.1.0", "pinia": "^2.0.20", "qs": "^6.11.1", "vue": "^3.2.37", @@ -792,9 +793,7 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "peer": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/core-js-pure": { "version": "3.28.0", @@ -1772,6 +1771,17 @@ "ufo": "^1.1.0" } }, + "node_modules/mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dependencies": { + "commander": "*" + }, + "bin": { + "random": "bin/random" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 18010ce..6ff0fa2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "echarts": "^5.4.1", "element-plus": "^2.2.14", "md-editor-v3": "^2.2.1", + "mockjs": "^1.1.0", "pinia": "^2.0.20", "qs": "^6.11.1", "vue": "^3.2.37", diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 04f0ede..f862d6f 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -35,3 +35,29 @@ export function getUserList(params) { params: params, }); }; + +/** + * 添加/修改用户信息 + * @returns + */ +export function editUser(params) { + return send_request({ + url: '/user/manage/editUser', + method: 'POST', + useQS: true, + params: params, + }); +}; + +/** + * 删除用户 + * @returns + */ +export function deleteUser(params) { + return send_request({ + url: '/user/manage/deleteUser', + method: 'POST', + useQS: true, + params: params, + }); +}; diff --git a/frontend/src/components/manage-list.vue b/frontend/src/components/manage-list.vue index 4ab7483..2ef3f9e 100644 --- a/frontend/src/components/manage-list.vue +++ b/frontend/src/components/manage-list.vue @@ -1,25 +1,23 @@