Bladeren bron

知识库按全院、科室、个人权限划分,全院权限只能看全院类型的,个人可以查看全院和科室的数据以及本人的数据,每个用户只能维护自己的知识库

86187 6 maanden geleden
bovenliggende
commit
92d212e0c3

+ 46 - 4
admin-ui/src/views/work/knowledge/index.vue

@@ -33,15 +33,41 @@
           <el-tag type="danger" v-if="scope.row.state == 1">停用</el-tag>
         </template>
       </el-table-column>
+      <el-table-column label="范围" align="center" prop="rangeNum" width="140">
+        <template slot-scope="scope">
+          <el-tag type="success" v-if="scope.row.rangeNum == 0">个人</el-tag>
+          <el-tag type="danger" v-if="scope.row.rangeNum == 1">科室</el-tag>
+          <el-tag type="danger" v-if="scope.row.rangeNum == 2">全院</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="创建人" align="center" prop="createBy" width="130" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
       <el-table-column label="所属科室" align="center" prop="deptName" width="160" />
       <el-table-column label="操作" align="center" width="200">
         <template slot-scope="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-hasPermi="['work:knowledge:edit']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:knowledge:remove']">删除</el-button>
+          <el-button
+            v-if="scope.row.userId === currentUserId || isAdmin"
+          size="mini"
+          type="text"
+          icon="el-icon-edit"
+          @click="op('edit', scope.row)"
+          v-hasPermi="['work:knowledge:edit']"
+          >
+          修改
+          </el-button>
+          <el-button
+            v-if="scope.row.userId === currentUserId || isAdmin"
+          size="mini"
+          type="text"
+          icon="el-icon-delete"
+          @click="del(scope.row)"
+          v-hasPermi="['work:knowledge:remove']"
+          >
+          删除
+          </el-button>
         </template>
       </el-table-column>
+
       <template slot="empty">
         <el-empty></el-empty>
       </template>
@@ -52,6 +78,7 @@
 
 <script>
 import edit from './edit';
+import {getInfo} from "@/api/login";
 export default {
   dicts: ['knowledge_type'],
   name: 'Knowledge',
@@ -63,14 +90,29 @@ export default {
         type: null,
         title: null,
         orderByColumn: 'id', //排序字段
-        isAsc: 'desc' //排序方式
-      }
+        isAsc: 'desc', //排序方式
+      },
+      isAdmin: false,
+      currentUserId:null
     };
   },
   created() {
     this.getList();
   },
+  mounted() {
+    this.fetchCurrentUser(); // 获取当前用户信息
+  },
   methods: {
+    fetchCurrentUser() {
+      getInfo()
+        .then(response => {
+          this.currentUserId = response.user.userId;
+          this.isAdmin = response.user.admin;
+        })
+        .catch(error => {
+          console.error('获取用户信息失败:', error);
+        });
+    },
     getList() {
       if (this.dateRange) {
         this.queryParams.dateBegin = this.dateRange[0];

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Knowledge.java

@@ -28,7 +28,7 @@ public class Knowledge extends BaseData {
 
 
     @ApiModelProperty(value = "范围")
-    private Integer rangeNum;
+    private int rangeNum;
 
     @ApiModelProperty(value = "状态:0=正常,1=停用")
     private Integer state;

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/vo/KnowledgeVoList.java

@@ -19,7 +19,7 @@ public class KnowledgeVoList {
 
 
     @ApiModelProperty(value = "范围")
-    private Integer rangeNum;
+    private int rangeNum;
 
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 19 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/KnowledgeServiceImpl.java

@@ -3,6 +3,10 @@ package com.ruoyi.web.work.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.web.domain.server.Sys;
 import com.ruoyi.web.work.domain.Knowledge;
 import com.ruoyi.web.work.domain.vo.KnowledgeVoList;
 import com.ruoyi.web.work.mapper.KnowledgeMapper;
@@ -10,8 +14,11 @@ import com.ruoyi.web.work.service.IKnowledgeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 
+import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
+
 /**
  * @author lsw
  * @date 2024-07-10
@@ -34,7 +41,19 @@ public class KnowledgeServiceImpl extends ServiceImpl<KnowledgeMapper, Knowledge
     @Override
     @DataScope(deptAlias = "k",userAlias = "k")
     public List<Knowledge> selectList(Knowledge knowledge) {
+        // 获取当前用户
+        LoginUser loginUser = getLoginUser();
+        Long userId = loginUser.getUserId(); // 获取用户ID
         knowledge.setState(0);
+        knowledge.setUserId(userId);
+//        判断是否属于管理员
+        if (SecurityUtils.isAdmin(userId)){
+            //查询全部数据
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("admin",0);
+            knowledge.setParams(map);
+            knowledge.setUserId(null);
+        }
         return knowledgeMapper.selectList(knowledge);
     }
 

+ 8 - 3
ruoyi-admin/src/main/resources/mapper/work/KnowledgeMapper.xml

@@ -12,18 +12,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         k.create_time,
         k.create_by,
         k.state,
+        k.range_num,
+        k.user_id,
         d.dept_name AS deptName
         FROM
         tb_knowledge k
         LEFT JOIN sys_dept d ON d.dept_id = k.dept_id
-        WHERE range in(0,1,2)
-            <if test="userId != null "> and k.user_id = #{userId}</if>
+        WHERE range_num in (1,2)
+            <if test="userId != null "> or k.user_id = #{userId}</if>
+            <if test="params.admin != null">
+                or range_num = 0
+            </if>
             <if test="type != null  and type != ''"> and k.type = #{type}</if>
             <if test="title != null  and title != ''"> and k.title like concat('%', #{title}, '%')</if>
             <if test="dateBegin != null  and dateBegin != ''"> AND k.create_time BETWEEN #{dateBegin} AND #{dateEnd} + INTERVAL 1 DAY</if>
             <if test="deptId != null and deptId != 0">AND (k.dept_id = #{deptId} OR k.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, parent_id) ))</if>
             <!-- 数据范围过滤 -->
-            ${params.dataScope}
+--             ${params.dataScope}
     </select>
 
     <select id="selectAppList" resultType="com.ruoyi.web.work.domain.vo.KnowledgeVoList">