Browse Source

修改取消用户授权相关功能问题

Zt 2 years ago
parent
commit
f50ab1ef1a

+ 9 - 0
chuanyi-admin/src/api/system/user.js

@@ -61,6 +61,15 @@ export function delUserById(data) {
   })
 }
 
+// 批量删除用户
+export function delUserByIds(data) {
+  return request({
+    url: '/user/updateUserListState',
+    method: 'post',
+    data
+  })
+}
+
 // 根据角色ID查询该角色下人员
 export function getUserListById(query) {
   return request({

+ 1 - 2
chuanyi-admin/src/layout/components/Navbar.vue

@@ -144,8 +144,7 @@ export default {
       // 表单验证
       rules: {
         password: [
-          { required: true, message: '旧密码不能为空', trigger: 'blur' },
-          { validator: validatePass, trigger: 'blur' }
+          { required: true, message: '旧密码不能为空', trigger: 'blur' }
         ],
         newPassword: [
           { required: true, message: '新密码不能为空', trigger: 'blur' },

+ 9 - 2
chuanyi-admin/src/permission.js

@@ -2,7 +2,7 @@ import router from './router'
 import store from './store'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { getToken, removeToken } from '@/utils/auth'
+import { getToken, removeAll, removeToken } from '@/utils/auth'
 import getPageTitle from '@/utils/get-page-title'
 
 NProgress.configure({ showSpinner: false })
@@ -31,7 +31,14 @@ router.beforeEach(async(to, from, next) => {
       } else {
         try {
           // 获取用户角色信息
-          const { userId } = await store.dispatch('user/getInfo')
+          const { userId, roleList } = await store.dispatch('user/getInfo')
+
+          // 用户未分配角色
+          if (!roleList.length) {
+            removeAll()
+            router.push('/login')
+            return
+          }
 
           // 路由权限配置
           const accessRoutes = await store.dispatch('permission/GenerateRoutes', userId)

+ 1 - 0
chuanyi-admin/src/store/modules/permission.js

@@ -127,6 +127,7 @@ const actions = {
           commit('SET_ROUTES', accessedRoutes)
           resolve(accessedRoutes)
         } catch (error) {
+          console.log(error)
           reject(error)
         }
       })

+ 10 - 1
chuanyi-admin/src/store/modules/user.js

@@ -1,6 +1,7 @@
 import { getUserInfo, login, logout, updatePsd, resetPsd } from '@/api/user'
 import { getToken, setToken, getUid, getUsername, setUid, setUsername, removeAll, setPubKey, getPubKey } from '@/utils/auth'
 import { encrypt } from '@/utils/jsencrypt'
+import { Message } from 'element-ui'
 import router, { resetRouter } from '@/router'
 import errorCode from '@/utils/errorCode'
 
@@ -75,7 +76,15 @@ const actions = {
         // commit('SET_ROLES', user.roleList)
         commit('SET_AVATAR', '')
         // commit('SET_INTRODUCTION', introduction)
-        resolve(response)
+        if (!user.roleList.length) {
+          Message({
+            message: '用户暂未分配角色',
+            type: 'error'
+          })
+          reject()
+        } else {
+          resolve(response)
+        }
       }).catch(error => {
         reject(error)
       })

+ 106 - 47
chuanyi-admin/src/views/system/role/role-auth.vue

@@ -11,14 +11,29 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+        >搜索</el-button>
+        <el-button
+          icon="el-icon-refresh"
+          size="mini"
+          @click="resetQuery"
+        >重置</el-button>
       </el-form-item>
     </el-form>
 
     <el-row :gutter="10" class="mb8 czBtns">
       <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="openSelectUser">添加用户</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="openSelectUser"
+        >添加用户</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -31,7 +46,13 @@
         >批量取消授权</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-back" size="mini" @click="handleClose">返回</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-back"
+          size="mini"
+          @click="handleClose"
+        >返回</el-button>
       </el-col>
     </el-row>
 
@@ -45,24 +66,43 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-      <el-table-column label="用户状态" prop="state" :show-overflow-tooltip="true">
+      <el-table-column
+        label="用户名称"
+        prop="userName"
+        :show-overflow-tooltip="true"
+      />
+      <el-table-column
+        label="用户状态"
+        prop="state"
+        :show-overflow-tooltip="true"
+      >
         <template slot-scope="scope">
           <span>{{ convertUserStatus(scope.row.state) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="用户类型" prop="userType" :show-overflow-tooltip="true">
+      <el-table-column
+        label="用户类型"
+        prop="userType"
+        :show-overflow-tooltip="true"
+      >
         <template slot-scope="scope">
           <span>{{ convertUserType(scope.row.userType) }}</span>
         </template>
       </el-table-column>
       <el-table-column label="最后登录时间" prop="lastLoginTime" width="160" />
       <el-table-column label="创建时间" prop="createTime" width="160" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
-          <el-button size="mini" type="text" :disabled="!multiple" @click="cancelAuthUser(scope.row)"><i
-            class="el-icon-circle-close celBtn"
-          /><span>取消授权</span>
+          <el-button
+            size="mini"
+            type="text"
+            :disabled="!multiple"
+            @click="cancelAuthUser(scope.row)"
+          ><i class="el-icon-circle-close celBtn" /><span>取消授权</span>
           </el-button>
         </template>
       </el-table-column>
@@ -76,13 +116,21 @@
       align="right"
       @pagination="getList"
     />
-    <select-role ref="select" :role-id="queryParams.roleId" @updateUserList="getList()" />
+    <select-role
+      ref="select"
+      :role-id="queryParams.roleId"
+      @updateUserList="getList()"
+    />
   </div>
 </template>
 
 <script>
 import selectRole from './role-select'
-import { getUserListById, cancelRoleAuth, cancelAllRoleAuth } from '@/api/system/user'
+import {
+  getUserListById,
+  cancelRoleAuth,
+  cancelAllRoleAuth
+} from '@/api/system/user'
 export default {
   name: 'UserAuth',
   components: { selectRole },
@@ -142,16 +190,18 @@ export default {
       //     result = e.name
       //   }
       // })
-      val === 0 ? result = '客户端用户' : result = '管理端用户'
+      val === 0 ? (result = '客户端用户') : (result = '管理端用户')
       return result
     },
     /** 查询授权用户列表 */
     getList() {
-      getUserListById(this.queryParams).then(res => {
+      getUserListById(this.queryParams).then((res) => {
         if (res.code === 200) {
           const data = res.data
-          data.userList.forEach(item => {
-            item.lastLoginTime ? item.lastLoginTime : item.lastLoginTime = '暂未登录'
+          data.userList.forEach((item) => {
+            item.lastLoginTime
+              ? item.lastLoginTime
+              : (item.lastLoginTime = '暂未登录')
           })
           this.userList = data.userList
           this.total = data.count
@@ -179,7 +229,7 @@ export default {
     },
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
-      this.userIds = selection.map(item => {
+      this.userIds = selection.map((item) => {
         return {
           userId: item.userId,
           roleId: this.queryParams.roleId
@@ -197,28 +247,35 @@ export default {
         roleId: this.queryParams.roleId,
         userId: row.userId
       }
+      const uid = this.$store.getters.uid
       this.$confirm('您确定要取消该用户的授权吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        cancelRoleAuth(query).then(res => {
-          if (res.code === 200) {
-            this.getList()
-            this.$message({
-              type: 'success',
-              message: '取消授权成功'
-            })
-          }
+      })
+        .then(() => {
+          cancelRoleAuth(query).then((res) => {
+            if (res.code === 200) {
+              this.$message({
+                type: 'success',
+                message: '取消授权成功'
+              })
+              if (uid === query.userId) {
+                this.$router.push('/login')
+                return
+              }
+              this.getList()
+            }
+          })
         })
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '取消操作'
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '取消操作'
+          })
         })
-      })
     },
     /** 批量取消授权按钮操作 */
     cancelAuthUserAll() {
@@ -228,23 +285,25 @@ export default {
         cancelButtonClass: 'btn_custom_cancel',
         closeOnClickModal: false,
         type: 'warning'
-      }).then(() => {
-        cancelAllRoleAuth(this.userIds).then(res => {
-          if (res.code === 200) {
-            this.getList()
-            this.$message({
-              type: 'success',
-              message: '批量取消授权成功'
-            })
-          }
+      })
+        .then(() => {
+          cancelAllRoleAuth(this.userIds).then((res) => {
+            if (res.code === 200) {
+              this.getList()
+              this.$message({
+                type: 'success',
+                message: '批量取消授权成功'
+              })
+            }
+          })
         })
-      }).catch(() => {
-        this.$refs.roleTable.clearSelection()
-        this.$message({
-          type: 'info',
-          message: '取消操作'
+        .catch(() => {
+          this.$refs.roleTable.clearSelection()
+          this.$message({
+            type: 'info',
+            message: '取消操作'
+          })
         })
-      })
     }
   }
 }

+ 2 - 3
chuanyi-admin/src/views/system/role/role-select.vue

@@ -109,10 +109,9 @@ export default {
     },
     /** 显示弹框 */
     show() {
-      this.queryParams.startNum = 1
-      this.queryParams.roleId = this.roleId
       this.visible = true
-      this.getList()
+      this.queryParams.roleId = this.roleId
+      this.resetQuery()
     },
     /** 行点击事件 */
     clickRow(row) {

+ 11 - 19
chuanyi-admin/src/views/system/user/index.vue

@@ -205,10 +205,9 @@
 </template>
 
 <script>
-import { addUserInfo, getUserList, updateUserInfo, delUserById, userDetail } from '@/api/system/user'
+import { addUserInfo, getUserList, updateUserInfo, delUserById, userDetail, delUserByIds } from '@/api/system/user'
 import { getPubKey } from '@/utils/auth'
 import { encrypt } from '@/utils/jsencrypt'
-
 export default {
   name: 'Index',
   data() {
@@ -354,7 +353,7 @@ export default {
         })
         if (isUid === this.defaultAdminId) {
           this.$message({
-            message: '用户不支持删除',
+            message: 'admin用户不支持删除',
             type: 'warning'
           })
           return
@@ -380,23 +379,16 @@ export default {
           closeOnClickModal: false,
           type: 'warning'
         }).then(() => {
-          for (const i in userIdList) {
-            const id = userIdList[i]
-            if (id === this.defaultAdminId) {
-              continue
+          const userId = userIdList
+          delUserByIds(userId).then(res => {
+            if (res.code === 200) {
+              this.$message({
+                message: '批量删除成功',
+                type: 'success'
+              })
+              this.getUserList()
             }
-            delUserById({
-              'userId': id
-            }).then(response => {
-              if (response.code === 200) {
-                this.$message({
-                  message: '删除成功',
-                  type: 'success'
-                })
-                this.getUserList()
-              }
-            })
-          }
+          })
         }).catch(() => {
           this.$refs.userTable.clearSelection()
         })