基层教学组织评估系统3_申报表内容的返回修改、层级用户角色分配、用户管理、校、院二层审核、评审专家的分配、打分功能基本实现

申报表内容的返回修改、用户角色分配、层级用户管理、校、院二层审核、评审专家的分配、打分功能基本实现

一、需求

  • 用户管理:系统管理员可以 增、删、改、查 各个用户的账号信息,设置不同角色的账户

  • 层级用户角色分配:校级管理员可以 分配 不同院的 院级管理员 账户,分配评审专家账户;院级管理员可以分配 基层教学组织负责人 账户

  • 校、院管理员的二层审核:基层教学组织负责人完成申报表信息填报后,院级管理员审核,将状态改为 院级审核通过 或者 返回修改,校级管理员能看到 院级审核通过 之后的申报表,继而 审核,将状态改为 校级审核通过 或 返回修改

  • 申报表的返回修改:对于 返回修改 状态下的 申报表 ,基层教学组织负责人可以 修改申报表内容,再次提交审核

  • 评审专家的分配:校级管理员可以将 校级审核通过 的申报表 批量分配给 指定 评审专家

  • 评审专家的打分:评审专家 可以 给 分配给自己的 申报表 打分

二、实现

后端源码:https://github.com/GitHubSi/base_education_system

前端源码:https://github.com/GitHubSi/base_education_vue

2.1用户管理、层级用户角色分配

关于系统管理员最基本的增删改查就不说了,比较复杂的地方就是

  • 对于 系统管理员分配各个账户、校级管理员分配院级管理员 和 评审专家 : 学院下拉列表的获取、角色列表的获取,需要设置另外两张表,便于获取
    • 学院下拉列表:可以直接获取 各个学院 绑定到下拉列表中
    • 角色下拉列表:需要根据当前角色,动态获取,对应的是 同一个collection的多个document,每一个document和role绑定
  • 对于 动态条件 查询 用户信息:查询条件是可变的,这里我用的是 最原始的 方法 处理,根据查询条件组合查询,见下代码

在这里插入图片描述

// 3. 判断当前角色
        if("系统管理员".equals(role)){
    
    
            // 3.1 没有条件的查询
            if(queryUsername == null && queryCollege == null && queryRole == null){
    
    
                List<User> userList = mongoTemplate.findAll(User.class, "user");
                return userList;
            }

            // 3.2 三个条件都有的查询
            if(queryUsername!= null && queryCollege != null && queryRole != null){
    
    

                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            // 3.3 一个条件
            if(queryUsername!= null && queryCollege == null && queryRole == null){
    
    

                Query query = new Query(Criteria.where("username").is(queryUsername));

                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege != null &&queryRole == null){
    
    

                Query query = new Query(Criteria.where("college").is(queryCollege));

                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege == null && queryRole!= null){
    
    

                Query query = new Query(Criteria.where("role").is(queryRole));
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }

            // 3.4 两个条件
            if(queryUsername!= null && queryCollege != null && queryRole == null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername != null && queryCollege == null &&queryRole != null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege != null && queryRole!= null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }



        }
         if("校级管理员".equals(role)){
    
    
             //1. 无条件查询
            if(queryUsername == null && queryCollege == null && queryRole == null){
    
    
                Criteria criteria = Criteria.where("role").in("院级管理员","评审专家");
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }

             // 3.2 三个条件都有的查询
             if(queryUsername!= null && queryCollege != null && queryRole != null){
    
    

                 Criteria criteria = new Criteria();
                 criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                 Query query = new Query();
                 query.addCriteria(criteria);
                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }
             // 3.3 一个条件
             if(queryUsername!= null && queryCollege == null && queryRole == null){
    
    

                 Query query = new Query(Criteria.where("username").is(queryUsername));

                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }
             if(queryUsername == null && queryCollege != null &&queryRole == null){
    
    

                 Query query = new Query(Criteria.where("college").is(queryCollege));

                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }
             if(queryUsername == null && queryCollege == null && queryRole!= null){
    
    

                 Query query = new Query(Criteria.where("role").is(queryRole));
                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }

             // 3.4 两个条件
             if(queryUsername!= null && queryCollege != null && queryRole == null){
    
    
                 Criteria criteria = new Criteria();
                 criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege));
                 Query query = new Query();
                 query.addCriteria(criteria);
                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }
             if(queryUsername != null && queryCollege == null && queryRole != null){
    
    
                 Criteria criteria = new Criteria();
                 criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("role").is(queryRole));
                 Query query = new Query();
                 query.addCriteria(criteria);
                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }
             if(queryUsername == null && queryCollege != null && queryRole!= null){
    
    
                 Criteria criteria = new Criteria();
                 criteria.andOperator(Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                 Query query = new Query();
                 query.addCriteria(criteria);
                 List<User> userList = mongoTemplate.find(query, User.class, "user");
                 return userList;
             }



        }
        if("院级管理员".equals(role)) {
    
    

            // 1. 无条件查询
            if (queryUsername == null && queryCollege == null && queryRole == null) {
    
    
                Criteria criteria = Criteria.where("role").is("基层教学组织负责人").and("college").is(college);
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }

            // 3.2 三个条件都有的查询
            if(queryUsername!= null && queryCollege != null && queryRole != null){
    
    

                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            // 3.3 一个条件
            if(queryUsername!= null && queryCollege == null && queryRole == null){
    
    

                Query query = new Query(Criteria.where("username").is(queryUsername));

                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege != null &&queryRole == null){
    
    

                Query query = new Query(Criteria.where("college").is(queryCollege));

                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege == null && queryRole!= null){
    
    

                Query query = new Query(Criteria.where("role").is(queryRole));
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }

            // 3.4 两个条件
            if(queryUsername!= null && queryCollege != null && queryRole == null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("college").is(queryCollege));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername != null && queryCollege == null &&queryRole != null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("username").is(queryUsername),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }
            if(queryUsername == null && queryCollege != null && queryRole!= null){
    
    
                Criteria criteria = new Criteria();
                criteria.andOperator(Criteria.where("college").is(queryCollege),Criteria.where("role").is(queryRole));
                Query query = new Query();
                query.addCriteria(criteria);
                List<User> userList = mongoTemplate.find(query, User.class, "user");
                return userList;
            }


        
2.2校、院管理员的二层审核

获取当前用户的角色,显示不同的status

在这里插入图片描述
然后就是申报表列表的处理,校级管理员只能看到 院级审核通过 状态下的 申报表

本来我想着是拿着status和role再次向后端发请求获取,但是前端说可以根据role直接在前端进行筛选剔除不符合条件的

这样也好,不用再发请求了

在这里插入图片描述

2.3申报表的返回修改

这个没什么说的,关键就是 是选择在 详情页修改,还是在申报页数据回显修改

我本来想着是在拿出来一个详情页,修改一下,对于每部分加上 修改的按钮请求

但是前端说,有些不少excel导入的数据功能需求 还得一个个加上,麻烦,干脆直接在填报也 回显数据修改

确实,数据量表单数量多,大约13张分表,体力活

实现过程不太容易,出了点问题,主要是 前端 富文本Thymce的问题,见

Vue解决报错5_Tinymce 富文本不能传递双向绑定的数据到后端、使用过程遇到问题及解决

Vue解决报错6_日期类型的数据具有格式要求,需要和后端数据库对应,以便于存储和展示

2.4评审专家的分配

分配实现的原理就是 将申报表decument的字段userNumberOfMarker 和 评审专家的 userNumber学工号关联起来

然后评审专家只能看到 分配给自己的 申报表,这个也是前端 来 剔除 就行

在这里插入图片描述

2.5评审专家的打分

这个好实现没什么问题

打分 按钮权限控制也是前端,只有评审专家 且 校级审核之后 才显示此按钮

点击按钮弹出 弹框,输入各项分数 发请求,将titalScore存储到数据库,状态改为 评阅结束,不可在次评分


至此上述功能基本完成,但是好像又增加了需求,后续会接着完成!

猜你喜欢

转载自blog.csdn.net/qq_24654501/article/details/114682233
今日推荐