Prechádzať zdrojové kódy

FIx 修复年级管理员的数据过滤部分问题

Yue 2 rokov pred
rodič
commit
be056af166
19 zmenil súbory, kde vykonal 261 pridanie a 76 odobranie
  1. 44 0
      SERVER/YanZhongXYH/script/sql/Add.sql
  2. 5 2
      SERVER/YanZhongXYH/script/sql/YanZhongXYH.sql
  3. 1 0
      SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/constant/UserConstants.java
  4. 2 1
      SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/core/controller/BaseController.java
  5. 1 1
      SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/enums/UserType.java
  6. 1 1
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/controller/AmAlumnusController.java
  7. 2 2
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/domain/vo/AmAlumnusVo.java
  8. 8 0
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/mapper/AmAlumnusMapper.java
  9. 5 3
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmActivityServiceImpl.java
  10. 9 3
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmAlumnusServiceImpl.java
  11. 5 3
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmHelpServiceImpl.java
  12. 2 2
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/controller/system/SysUserController.java
  13. 13 3
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/service/SysLoginService.java
  14. 35 6
      SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/service/impl/SysUserServiceImpl.java
  15. 35 1
      SERVER/YanZhongXYH/xyh-system/src/main/resources/mapper/amActivity/AmAlumnusMapper.xml
  16. 1 3
      UI/XYH.VUE/src/components/modal/VbModal.vue
  17. 3 0
      UI/XYH.VUE/src/core/services/PermissionService.ts
  18. 75 39
      UI/XYH.VUE/src/views/amActivity/alumnus/index.vue
  19. 14 6
      UI/XYH.VUE/src/views/system/user/index.vue

+ 44 - 0
SERVER/YanZhongXYH/script/sql/Add.sql

@@ -1,4 +1,7 @@
 -- ----新增
+insert into sys_role_menu
+values ('3', 1007);
+
 -- 菜单 SQL
 insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
                       status, perms, icon, btn_class, btn_script, create_by, create_time, update_by, update_time,
@@ -66,6 +69,7 @@ insert into sys_role_menu
 values ('1', 2007);
 
 
+
 insert into sys_role_menu
 values ('2', 3);
 insert into sys_role_menu
@@ -77,6 +81,23 @@ values ('2', 2003);
 insert into sys_role_menu
 values ('2', 2004);
 
+insert into sys_role_menu
+values ('3', 3);
+insert into sys_role_menu
+values ('3', 2001);
+insert into sys_role_menu
+values ('3', 2002);
+insert into sys_role_menu
+values ('3', 2003);
+insert into sys_role_menu
+values ('3', 2004);
+insert into sys_role_menu
+values ('3', 2005);
+insert into sys_role_menu
+values ('3', 2006);
+insert into sys_role_menu
+values ('3', 2007);
+
 insert into sys_dict_type
 values (16, '活动审核状态', 'activity_audit_status', '0', 'admin', sysdate(), '', null, '活动审核状态');
 insert into sys_dict_data
@@ -201,6 +222,21 @@ values ('2', 2016);
 insert into sys_role_menu
 values ('2', 2017);
 
+insert into sys_role_menu
+values ('3', 2008);
+insert into sys_role_menu
+values ('3', 2009);
+insert into sys_role_menu
+values ('3', 2011);
+insert into sys_role_menu
+values ('3', 2013);
+insert into sys_role_menu
+values ('3', 2015);
+insert into sys_role_menu
+values ('3', 2016);
+insert into sys_role_menu
+values ('3', 2017);
+
 
 insert into sys_dict_type
 values (19, '互助审核状态', 'help_audit_status', '0', 'admin', sysdate(), '', null, '互助审核状态');
@@ -305,6 +341,14 @@ values ('2', 2022);
 insert into sys_role_menu
 values ('2', 2023);
 
+insert into sys_role_menu
+values ('3', 2019);
+insert into sys_role_menu
+values ('3', 2020);
+insert into sys_role_menu
+values ('3', 2022);
+insert into sys_role_menu
+values ('3', 2024);
 
 -- 菜单 SQL
 insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,

+ 5 - 2
SERVER/YanZhongXYH/script/sql/YanZhongXYH.sql

@@ -170,9 +170,12 @@ create table sys_role
 insert into sys_role
 values ('1', '超级管理员', 'admin', 1, 1, 1, 1, '1', '0', '0', 'admin', sysdate(), '', null, '超级管理员');
 insert into sys_role
-values ('2', '校友内置角色', 'amActivity', 2, 5, 1, 1, '1', '0', '0', 'admin', sysdate(), '', null, '校友默认角色');
+values ('2', '校友内置角色', 'alumnus', 2, 5, 1, 1, '1', '0', '0', 'admin', sysdate(), '', null, '校友默认角色');
 insert into sys_role
-values ('3', '普通角色', 'common', 3, 2, 1, 1, '0', '0', '0', 'admin', sysdate(), '', null, '普通角色');
+values ('3', '校友年级管理员', 'amYear', 3, 4, 1, 1, '1', '0', '0', 'admin', sysdate(), '', null,
+        '校友年级管理员');
+insert into sys_role
+values ('4', '普通角色', 'common', 4, 2, 1, 1, '0', '0', '0', 'admin', sysdate(), '', null, '普通角色');
 
 -- ----------------------------
 -- 5、菜单权限表

+ 1 - 0
SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/constant/UserConstants.java

@@ -138,6 +138,7 @@ public interface UserConstants {
      * 校友默认角色ID
      */
     Long ALUMNUS_DEFAULT_ROLE_ID = 2L;
+    Long ALUMNUS_SYSTEM_ROLE_ID = 3L;
 
 
 }

+ 2 - 1
SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/core/controller/BaseController.java

@@ -98,7 +98,8 @@ public class BaseController {
      * 是否为校友管理员
      */
     public Boolean isAlumnusSys() {
-        UserType userType = UserType.getUserType(getLoginUser().getUserType());
+        String type = getLoginUser().getUserType();
+        UserType userType = UserType.getUserType(type);
         return userType == UserType.SYS_AM_USER;
     }
 

+ 1 - 1
SERVER/YanZhongXYH/xyh-common/src/main/java/cn/xyh/common/enums/UserType.java

@@ -22,7 +22,7 @@ public enum UserType {
     /**
      * 校友用户
      */
-    AM_USER("am"),
+    AM_USER("am_user"),
 
     /**
      * 校友用户

+ 1 - 1
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/controller/AmAlumnusController.java

@@ -124,7 +124,7 @@ public class AmAlumnusController extends BaseController {
     @RepeatSubmit()
     @PutMapping()
     public R<Void> edit(@Validated(EditGroup.class) @RequestBody AmAlumnusBo bo) {
-        if (isAlumnus() && !getAmId().equals(bo.getAmId())) {
+        if (isAlumnus() && !isAlumnusSys() && !getAmId().equals(bo.getAmId())) {
             return toAjax(false, "不能修改其他用户的校友信息");
         }
         return toAjax(amAlumnusService.updateByBo(bo));

+ 2 - 2
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/domain/vo/AmAlumnusVo.java

@@ -179,7 +179,7 @@ public class AmAlumnusVo implements Serializable {
     /**
      * 审核人
      */
-    private Long auditUser;
+    private String auditUser;
 
     //@Translation(type = TransConstant.USER_ID_OR_NAME_TO_USER, mapper = "auditUser")
     //private String auditUserName;
@@ -249,6 +249,6 @@ public class AmAlumnusVo implements Serializable {
     private String remark;
 
     private Long followMeCount;
-    
+
 }
 

+ 8 - 0
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/mapper/AmAlumnusMapper.java

@@ -3,6 +3,8 @@ package cn.xyh.amActivity.mapper;
 import cn.xyh.amActivity.domain.AmAlumnus;
 import cn.xyh.amActivity.domain.vo.AmAlumnusCountVo;
 import cn.xyh.amActivity.domain.vo.AmAlumnusVo;
+import cn.xyh.common.annotation.DataColumn;
+import cn.xyh.common.annotation.DataPermission;
 import cn.xyh.common.core.mapper.BaseMapperPlus;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -25,6 +27,12 @@ public interface AmAlumnusMapper extends BaseMapperPlus<AmAlumnusMapper, AmAlumn
 
     AmAlumnus selectVoByUserPhone(String phonenumber);
 
+    @DataPermission({
+            @DataColumn(key = "orgName", value = "o.org_id"),
+            @DataColumn(key = "userName", value = "u.user_id")
+    })
+    Page<AmAlumnusVo> selectAlumnusPageFilter(@Param("page") Page<AmAlumnus> page, @Param(Constants.WRAPPER) Wrapper<AmAlumnus> queryWrapper);
+
     Page<AmAlumnusVo> selectAlumnusPage(@Param("page") Page<AmAlumnus> page, @Param(Constants.WRAPPER) Wrapper<AmAlumnus> queryWrapper);
 
     AmAlumnusCountVo queryAlumnusCount(Long amId);

+ 5 - 3
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmActivityServiceImpl.java

@@ -11,6 +11,7 @@ import cn.xyh.amActivity.service.IAmActivityService;
 import cn.xyh.common.core.domain.PageQuery;
 import cn.xyh.common.core.page.TableDataInfo;
 import cn.xyh.common.core.service.IUserService;
+import cn.xyh.common.enums.UserType;
 import cn.xyh.common.exception.ServiceException;
 import cn.xyh.common.helper.LoginHelper;
 import cn.xyh.common.utils.StreamUtils;
@@ -82,10 +83,11 @@ public class AmActivityServiceImpl implements IAmActivityService {
                 AmActivity::getCreateBy);
         String years = LoginHelper.getYears();
         Page<AmActivityVo> result;
-        if (StringUtils.isNotBlank(years)) {
-            result = baseMapper.selectFilterVoPage(pageQuery.build(), lqw, Arrays.asList(years.split(",")));
-        } else {
+        if (LoginHelper.getUserType().equals(UserType.SYS_USER) || (years == null || !years.equals("all"))) {
             result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        } else {
+            years = StringUtils.isEmpty(years) ? "0" : years;
+            result = baseMapper.selectFilterVoPage(pageQuery.build(), lqw, Arrays.asList(years.split(",")));
         }
         return TableDataInfo.build(result);
     }

+ 9 - 3
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmAlumnusServiceImpl.java

@@ -130,10 +130,12 @@ public class AmAlumnusServiceImpl implements IAmAlumnusService {
     public TableDataInfo<AmAlumnusVo> queryPageList(AmAlumnusBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<AmAlumnus> lqw = buildQueryWrapper(bo);
         String years = LoginHelper.getYears();
-        if (StringUtils.isNotEmpty(years)) {
+        Page<AmAlumnusVo> result;
+        if (!LoginHelper.getUserType().equals(UserType.SYS_USER) && (years == null || !years.equals("all"))) {
+            years = StringUtils.isEmpty(years) ? "0" : years;
             lqw.in(AmAlumnus::getGraduateYear, Arrays.asList(years.split(",")));
         }
-        Page<AmAlumnusVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        result = baseMapper.selectAlumnusPageFilter(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
 
@@ -212,6 +214,9 @@ public class AmAlumnusServiceImpl implements IAmAlumnusService {
         validEntityBeforeSave(add);
         SysUser user = new SysUser();
         String username = StringUtils.isEmpty(bo.getUserName()) ? GuidUtil.getUnionUserName() : bo.getUserName();
+        if (bo.getUserId() != null) {
+            user.setUserId(bo.getUserId());
+        }
         user.setUserName(username);
         user.setEmail(bo.getEmail());
         user.setPhonenumber(bo.getPhonenumber());
@@ -223,7 +228,8 @@ public class AmAlumnusServiceImpl implements IAmAlumnusService {
         user.setAvatar(bo.getAvatar());
         user.setUserType(UserType.AM_USER.getUserType());
         user.setStatus("0");
-        user.setRoleId(ALUMNUS_DEFAULT_ROLE_ID);
+        Long[] roleIds = new Long[]{ALUMNUS_DEFAULT_ROLE_ID};
+        user.setRoleIds(roleIds);
         if (!userService.checkUserNameUnique(user)) {
             throw new ServiceException("新增校友'" + user.getUserName() + "'失败,登录账号已存在");
         } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {

+ 5 - 3
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/amActivity/service/impl/AmHelpServiceImpl.java

@@ -8,6 +8,7 @@ import cn.xyh.amActivity.mapper.AmHelpMapper;
 import cn.xyh.amActivity.service.IAmHelpService;
 import cn.xyh.common.core.domain.PageQuery;
 import cn.xyh.common.core.page.TableDataInfo;
+import cn.xyh.common.enums.UserType;
 import cn.xyh.common.exception.ServiceException;
 import cn.xyh.common.helper.LoginHelper;
 import cn.xyh.common.utils.StringUtils;
@@ -68,10 +69,11 @@ public class AmHelpServiceImpl implements IAmHelpService {
                 AmHelp::getCreateBy);
         String years = LoginHelper.getYears();
         Page<AmHelpVo> result;
-        if (StringUtils.isNotBlank(years)) {
-            result = baseMapper.selectFilterVoPage(pageQuery.build(), lqw, Arrays.asList(years.split(",")));
-        } else {
+        if (LoginHelper.getUserType().equals(UserType.SYS_USER) || (years == null || !years.equals("all"))) {
             result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        } else {
+            years = StringUtils.isEmpty(years) ? "0" : years;
+            result = baseMapper.selectFilterVoPage(pageQuery.build(), lqw, Arrays.asList(years.split(",")));
         }
         return TableDataInfo.build(result);
     }

+ 2 - 2
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/controller/system/SysUserController.java

@@ -250,8 +250,8 @@ public class SysUserController extends BaseController {
 
     @SaCheckPermission(PermissionName.SystemUserSetSys)
     @Log(title = "校友设为管理员", businessType = BusinessType.UPDATE)
-    @PostMapping("/setYearSys/{userId}/{years}")
-    public R<Void> setUserYearSys(@PathVariable Long userId, @PathVariable String years) {
+    @PostMapping(value = {"/setYearSys/{userId}/{years}", "/setYearSys/{userId}"})
+    public R<Void> setUserYearSys(@PathVariable Long userId, @PathVariable(value = "years", required = false) String years) {
         return toAjax(userService.setYearSys(userId, years));
     }
 

+ 13 - 3
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/service/SysLoginService.java

@@ -100,16 +100,26 @@ public class SysLoginService {
         }
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
 
+
         // 生成token
-        if (StringUtils.isEmpty(openId)) {
+        if (UserType.getUserType(user.getUserType()).equals(UserType.SYS_USER)) {
             LoginUser loginUser = buildLoginUser(user);
-            LoginHelper.loginByDevice(loginUser, DeviceType.PC);
+            if (StringUtils.isEmpty(openId)) {
+                LoginHelper.loginByDevice(loginUser, DeviceType.PC);
+            } else {
+                LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
+            }
         } else {
             XcxLoginUser loginUser = buildXcxLoginUser(user);
             loginUser.setOpenid(openId);
-            LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
+            if (StringUtils.isEmpty(openId)) {
+                LoginHelper.loginByDevice(loginUser, DeviceType.PC);
+            } else {
+                LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
+            }
         }
 
+
         recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
         recordLoginInfo(user.getUserId(), username);
         return StpUtil.getTokenValue();

+ 35 - 6
SERVER/YanZhongXYH/xyh-system/src/main/java/cn/xyh/system/service/impl/SysUserServiceImpl.java

@@ -285,12 +285,16 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
     public int insertUser(SysUser user) {
         // 新增用户信息
         int rows = baseMapper.insert(user);
-        // 新增用户行业/兴趣分会关联
-        insertUserPost(user);
-        // 新增用户与行业/兴趣分会管理
-        if (user.getPostIds() != null && user.getPostIds().length > 0) {
-            insertUserPost(user);
+        if (rows > 0) {
+            SysUser newUser = baseMapper.selectUserByUserName(user.getUserName());
+            // 新增用户行业/兴趣分会关联
+            newUser.setPostIds(user.getPostIds());
+            insertUserPost(newUser);
+            // 新增用户与角色管理
+            newUser.setRoleIds(user.getRoleIds());
+            insertUserRole(newUser);
         }
+
         return rows;
     }
 
@@ -462,6 +466,7 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
         this.insertUserRole(user.getUserId(), user.getRoleIds());
     }
 
+
     /**
      * 新增用户行业/兴趣分会信息
      *
@@ -487,7 +492,7 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
      * @param userId  用户ID
      * @param roleIds 角色组
      */
-    public void insertUserRole(Long userId, Long[] roleIds) {
+    private void insertUserRole(Long userId, Long[] roleIds) {
         if (ArrayUtil.isNotEmpty(roleIds)) {
             // 新增用户与角色管理
             List<SysUserRole> list = StreamUtils.toList(Arrays.asList(roleIds), roleId -> {
@@ -500,6 +505,23 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
         }
     }
 
+    /**
+     * 新增用户角色信息
+     *
+     * @param userId  用户ID
+     * @param roleIds 角色组
+     */
+    public void removeUserRole(Long userId, Long[] roleIds) {
+        if (ArrayUtil.isNotEmpty(roleIds)) {
+            userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId).and(
+                            w -> w.in(SysUserRole::getRoleId, (Object) roleIds)
+                    )
+            );
+
+        }
+    }
+
+
     /**
      * 通过用户ID删除用户
      *
@@ -571,6 +593,12 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
             sysUser.setUserType(UserType.SYS_AM_USER.getUserType());
             baseMapper.updateById(sysUser);
         }
+        if (userRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId).eq(SysUserRole::getRoleId, UserConstants.ALUMNUS_SYSTEM_ROLE_ID)) == null) {
+            SysUserRole sysUserRole = new SysUserRole();
+            sysUserRole.setUserId(userId);
+            sysUserRole.setRoleId(UserConstants.ALUMNUS_SYSTEM_ROLE_ID);
+            userRoleMapper.insert(sysUserRole);
+        }
         SysUserYear sysYear = userYearMapper.selectOne(new LambdaQueryWrapper<SysUserYear>()
                 .eq(SysUserYear::getUserId, userId));
         if (sysYear == null) {
@@ -596,6 +624,7 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
         if (UserType.SYS_AM_USER.getUserType().equals(sysUserType)) {
             sysUser.setUserType(UserType.AM_USER.getUserType());
             baseMapper.updateById(sysUser);
+            removeUserRole(sysUser.getUserId(), new Long[]{UserConstants.ALUMNUS_SYSTEM_ROLE_ID});
         }
         return userYearMapper.delete(new LambdaQueryWrapper<SysUserYear>()
                 .eq(SysUserYear::getUserId, userId)) > 0;

+ 35 - 1
SERVER/YanZhongXYH/xyh-system/src/main/resources/mapper/amActivity/AmAlumnusMapper.xml

@@ -82,9 +82,9 @@
                am.enrol_year,
                am.graduate_year,
                am.am_class,
-               am.audit_user,
                am.audit_status,
                am.audit_time,
+               am.audit_user,
                am.education,
                am.province,
                am.city,
@@ -180,6 +180,40 @@
         WHERE am.am_id = #{userId}
     </select>
 
+    <select id="selectAlumnusPageFilter" resultMap="AmAlumnusVoResult">
+        SELECT am.am_id,
+               am.user_id,
+               am.`name`,
+               am.gender,
+               am.type,
+               am.enrol_year,
+               am.graduate_year,
+               am.am_class,
+               am.audit_status,
+               am.audit_user,
+               am.audit_time,
+               am.industry,
+               am.industry_area,
+               am.work_unit,
+               am.am_public,
+               am.native_place,
+               am.position,
+               am.birthday,
+               am.city,
+               am.province,
+               am.district,
+               u.avatar,
+               u.login_date,
+               u.login_ip,
+               u.org_id,
+               u.phonenumber,
+               o.org_name
+        FROM am_alumnus AS am
+                 LEFT JOIN sys_user AS u ON am.user_id = u.user_id
+                 LEFT JOIN sys_org AS o ON u.org_id = o.org_id
+            ${ew.getCustomSqlSegment}
+    </select>
+
 
     <select id="selectAlumnusPage" resultMap="AmAlumnusVoResult">
         SELECT am.am_id,

+ 1 - 3
UI/XYH.VUE/src/components/modal/VbModal.vue

@@ -139,9 +139,7 @@ function cancel() {
 	if (props.closeNeedConfrim) {
 		message.confirm("数据还未保存,确认关闭对话框?", "关闭对话框").then((confirm: any) => {
 			console.log("confirm", confirm)
-			if (confirm.isConfirmed) {
-				closeModal()
-			}
+			closeModal()
 		})
 	} else {
 		closeModal()

+ 3 - 0
UI/XYH.VUE/src/core/services/PermissionService.ts

@@ -14,6 +14,9 @@ export function checkPermission(value: string | string[]) {
 	}
 	if (value && value instanceof Array && value.length > 0) {
 		const permissions = appStore.authStore.user.permissions
+		if (!permissions || permissions.length == 0) {
+			return false
+		}
 		const permissionDatas = value
 		const all_permission = "*:*:*"
 		const hasPermission = permissions.some((permission) => {

+ 75 - 39
UI/XYH.VUE/src/views/amActivity/alumnus/index.vue

@@ -4,12 +4,15 @@ import { permissionNames } from "@@/services/PermissionNames"
 import { useCascaderAreaData } from "@@/config/area-data"
 import { useCascaderIndustryData } from "@/core/config/industry-data"
 import dayjs from "dayjs"
+import appStore from "@s"
 const { am_alumnus_type } = useDict("am_alumnus_type")
 
 const tableRef = ref()
 const modalRef = ref()
 const auditModalRef = ref()
 const orgColumns = ref<any[]>([])
+const userId = computed(() => appStore.authStore.user.userId)
+
 const yearColumns = computed(() => {
 	const cols: any = []
 	for (let i = new Date().getFullYear(); i >= 1950; i--) {
@@ -66,10 +69,10 @@ const opts = reactive({
 		{ field: "userId", name: "用户id", visible: false, width: 80 },
 		{ field: "name", name: "姓名", visible: true, isSort: true, width: 100 },
 		{ field: "gender", name: "性别", visible: true, isSort: true, width: 80 },
-		{ field: "birthday", name: "出生日期", visible: true, isSort: true, width: 100 },
-		{ field: "type", name: "校友身份", visible: true, isSort: true, width: 80 },
-		{ field: "enrolYear", name: "入学年份", visible: true, isSort: true, width: 80 },
-		{ field: "graduateYear", name: "毕业年份", visible: true, isSort: true, width: 80 },
+		// { field: "birthday", name: "出生日期", visible: true, isSort: true, width: 100 },
+		{ field: "type", name: "校友身份", visible: true, isSort: true, width: 100 },
+		{ field: "enrolYear", name: "入学年份", visible: true, isSort: true, width: 100 },
+		{ field: "graduateYear", name: "毕业年份", visible: true, isSort: true, width: 100 },
 		{ field: "city", name: "所在地区", visible: true, isSort: true },
 		{ field: "amClass", name: "班级", visible: true, isSort: true, width: 80 },
 		{ field: "amPublic", name: "信息公开", visible: true, width: 100 },
@@ -510,6 +513,25 @@ function handleAudit(row: any) {
 	})
 }
 
+function handleResetPwd(row: any) {
+	message
+		.prompt('请输入"' + row.name + '"的新密码', "提示", {
+			confirmButtonText: "确定",
+			cancelButtonText: "取消",
+			closeOnClickModal: false,
+			inputPattern: /^.{5,20}$/,
+			inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
+		})
+		.then(({ value }) => {
+			apis.system.userApi.resetUserPwd(row.userId, value).then(() => {
+				message.msgSuccess("修改成功,新密码是:" + value)
+			})
+		})
+		.catch(() => {
+			//
+		})
+}
+
 /** 提交按钮 */
 function submitForm() {
 	apis.amActivity.alumnusApi.addOrUpdateAlumnus(form.value).then(() => {
@@ -581,8 +603,8 @@ onMounted(init)
 				<span v-if="row.province">
 					{{ row.province }}
 					<span v-if="row.city">
-						/{{ row.city }}
-						<span v-if="row.district">/{{ row.district }}</span>
+						/ {{ row.city }}
+						<span v-if="row.district">/ {{ row.district }}</span>
 					</span>
 				</span>
 			</template>
@@ -590,39 +612,53 @@ onMounted(init)
 				<DictTag type="alumnus_audit_status" :value="row.auditStatus"></DictTag>
 			</template>
 			<template #actions="{ row }">
-				<vb-tooltip v-if="row.auditStatus != 1" content="审核" placement="top">
-					<el-button
-						link
-						:type="row.auditStatus == 0 ? 'success' : 'danger'"
-						@click="handleAudit(row)"
-						v-hasPermission="permissionNames.AmActivityAlumnusAudit">
-						<template #icon>
-							<VbIcon icon-name="check-square" icon-type="duotone" class="fs-3"></VbIcon>
-						</template>
-					</el-button>
-				</vb-tooltip>
-				<vb-tooltip content="修改" placement="top">
-					<el-button
-						link
-						type="primary"
-						@click="handleUpdate(row)"
-						v-hasPermission="permissionNames.AmActivityAlumnusEdit">
-						<template #icon>
-							<VbIcon icon-name="notepad-edit" icon-type="duotone" class="fs-3"></VbIcon>
-						</template>
-					</el-button>
-				</vb-tooltip>
-				<vb-tooltip content="删除" placement="top">
-					<el-button
-						link
-						type="primary"
-						@click="handleDelete([row])"
-						v-hasPermission="permissionNames.AmActivityAlumnusRemove">
-						<template #icon>
-							<VbIcon icon-name="trash-square" icon-type="duotone" class="fs-3"></VbIcon>
-						</template>
-					</el-button>
-				</vb-tooltip>
+				<span v-if="row.userId == userId" class="text-muted">-</span>
+				<template v-else>
+					<vb-tooltip v-if="row.auditStatus != 1" content="审核" placement="top">
+						<el-button
+							link
+							:type="row.auditStatus == 0 ? 'success' : 'danger'"
+							@click="handleAudit(row)"
+							v-hasPermission="permissionNames.AmActivityAlumnusAudit">
+							<template #icon>
+								<VbIcon icon-name="check-square" icon-type="duotone" class="fs-3"></VbIcon>
+							</template>
+						</el-button>
+					</vb-tooltip>
+					<vb-tooltip content="修改" placement="top">
+						<el-button
+							link
+							type="primary"
+							@click="handleUpdate(row)"
+							v-hasPermission="permissionNames.AmActivityAlumnusEdit">
+							<template #icon>
+								<VbIcon icon-name="notepad-edit" icon-type="duotone" class="fs-3"></VbIcon>
+							</template>
+						</el-button>
+					</vb-tooltip>
+					<vb-tooltip content="删除" placement="top">
+						<el-button
+							link
+							type="primary"
+							@click="handleDelete([row])"
+							v-hasPermission="permissionNames.AmActivityAlumnusRemove">
+							<template #icon>
+								<VbIcon icon-name="trash-square" icon-type="duotone" class="fs-3"></VbIcon>
+							</template>
+						</el-button>
+					</vb-tooltip>
+					<vb-tooltip content="重置密码" placement="top">
+						<el-button
+							link
+							type="primary"
+							@click="handleResetPwd(row)"
+							v-hasPermission="permissionNames.SystemUserResetPwd">
+							<template #icon>
+								<VbIcon icon-name="key-square" icon-type="duotone" class="fs-3"></VbIcon>
+							</template>
+						</el-button>
+					</vb-tooltip>
+				</template>
 			</template>
 		</VbDataTable>
 		<VbModal

+ 14 - 6
UI/XYH.VUE/src/views/system/user/index.vue

@@ -410,7 +410,6 @@ const yearFormItems: any = [
 		field: "years",
 		label: "管理年级",
 		class: "w-100",
-		required: true,
 		component: "vs",
 		data: () => yearColumns.value,
 		props: {
@@ -438,16 +437,25 @@ function handleSetYearSys(row: any) {
 	sysYearModalRef.value.show()
 	yearForm.value.name = row.nickName
 	yearForm.value.userId = row.userId
-	yearForm.value.years = row.years ? row.years.split(",") : []
+	yearForm.value.years = row.years && row.years != "all" ? row.years.split(",") : []
 }
 
 function submitSetYear() {
 	if (yearForm.value.years.length === 0) {
-		message.msgWarning("请选择年级")
+		message
+			.confirm("确认要设置[ " + yearForm.value.name + " ]的全年级管理员吗?")
+			.then((res: any) => {
+				apis.system.userApi.setYearSys(yearForm.value.userId, "all").then(() => {
+					handleQuery()
+				})
+			})
+	} else {
+		apis.system.userApi
+			.setYearSys(yearForm.value.userId, yearForm.value.years.join(","))
+			.then(() => {
+				handleQuery()
+			})
 	}
-	apis.system.userApi.setYearSys(yearForm.value.userId, yearForm.value.years.join(",")).then(() => {
-		handleQuery()
-	})
 }
 function handleCancelYearSys(row: any) {
 	message.confirm("确认要取消[ " + row.userName + '" ]的年级管理员吗?').then(() => {