Procházet zdrojové kódy

fix: 修改账号管理权限超级管理员不嫩修改自己密码

qindao před 1 rokem
rodič
revize
3f234aacc8

+ 11 - 0
src/api/auth/dept.ts

@@ -65,3 +65,14 @@ export function deleteDept(params) {
     params,
     params,
   });
   });
 }
 }
+
+/**
+ * @description: V4:组织列表
+ */
+ export function queryUserGroupList(params) {
+  return http.request({
+    url: '/userGroup/queryUserGroupList',
+    method: 'post',
+    params,
+  });
+}

+ 0 - 0
src/types/dept/constants.ts


+ 7 - 0
src/types/dept/type.ts

@@ -0,0 +1,7 @@
+export interface DeptPageRequest {
+  queryUserGroupListReq: {
+    pageNumber: number;
+    pageSize: number;
+    queryStr: string;
+  }
+}

+ 66 - 33
src/views/system/user/CreateAdminDrawer.vue

@@ -8,7 +8,11 @@
       :label-width="80"
       :label-width="80"
     >
     >
       <el-form-item label="登录账号" prop="username">
       <el-form-item label="登录账号" prop="username">
-        <el-input placeholder="请输入登录账号" v-model="formParams.username" :disabled="!isAddUser" />
+        <el-input
+          placeholder="请输入登录账号"
+          v-model="formParams.username"
+          :disabled="!isAddUser"
+        />
       </el-form-item>
       </el-form-item>
       <el-form-item label="姓名" prop="realname">
       <el-form-item label="姓名" prop="realname">
         <el-input placeholder="请输入姓名" v-model="formParams.realname" />
         <el-input placeholder="请输入姓名" v-model="formParams.realname" />
@@ -23,7 +27,7 @@
           />
           />
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-       <el-form-item v-if="isAddUser" label="密码" prop="password">
+      <el-form-item v-if="isAddUser" label="密码" prop="password">
         <el-input
         <el-input
           type="password"
           type="password"
           show-password-on="mousedown"
           show-password-on="mousedown"
@@ -57,14 +61,21 @@
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-  import { ref,computed } from 'vue';
+  import { ref, computed } from 'vue';
   import { FormRules, ElMessage } from 'element-plus';
   import { FormRules, ElMessage } from 'element-plus';
   import { userInfo } from '@/api/system/user';
   import { userInfo } from '@/api/system/user';
   import { cloneDeep } from 'lodash-es';
   import { cloneDeep } from 'lodash-es';
-  import { addTenantAdmin, AddTenantAdminProps, updateUser } from '@/api/system/user-operate';
+  import {
+    addTenantAdmin,
+    AddTenantAdminProps,
+    updateUser,
+    addSingleUser,
+  } from '@/api/system/user-operate';
   import { EditType, OptionsProps, DisabledEnum } from './types';
   import { EditType, OptionsProps, DisabledEnum } from './types';
+  import { useTargetTenantIdSetting } from '@/utils/useTargetTenantIdSetting';
   import { ResultEnum } from '@/enums/httpEnum';
   import { ResultEnum } from '@/enums/httpEnum';
-  
+
+  const { isSysTenant } = useTargetTenantIdSetting();
   const rules: FormRules = {
   const rules: FormRules = {
     username: {
     username: {
       required: true,
       required: true,
@@ -94,10 +105,13 @@
   };
   };
 
 
   const emit = defineEmits(['change']);
   const emit = defineEmits(['change']);
-  const props = withDefaults(defineProps<{ title: string; width: number; editType: EditType,roleData: OptionsProps[]}>(), {
+  const props = withDefaults(
+    defineProps<{ title: string; width: number; editType: EditType; roleData: OptionsProps[] }>(),
+    {
       title: '添加用户',
       title: '添加用户',
       width: 450,
       width: 450,
-    });
+    },
+  );
 
 
   const defaultValueRef = () => ({
   const defaultValueRef = () => ({
     username: '',
     username: '',
@@ -105,7 +119,7 @@
     realname: '',
     realname: '',
     roleIdList: [],
     roleIdList: [],
     password: '',
     password: '',
-    passwordRe: ''
+    passwordRe: '',
   });
   });
 
 
   const message = ElMessage;
   const message = ElMessage;
@@ -137,36 +151,55 @@
         message.error('请填写完整信息');
         message.error('请填写完整信息');
         return;
         return;
       }
       }
-      
+
       // 克隆
       // 克隆
       const params = cloneDeep(formParams.value);
       const params = cloneDeep(formParams.value);
       if (params.password != params.passwordRe) {
       if (params.password != params.passwordRe) {
         return message.error('两次密码不一致');
         return message.error('两次密码不一致');
       }
       }
       if (isAddUser.value) {
       if (isAddUser.value) {
-        formParams.value.isDisabled ? params.isDisabled = DisabledEnum.NO : params.isDisabled = DisabledEnum.YES;
-        addTenantAdmin(params).then((res) => {
-          
-          message.success('添加管理员账户成功');
-          emit('change');
-          handleReset();
-          closeDrawer();
-        });
+        formParams.value.isDisabled
+          ? (params.isDisabled = DisabledEnum.NO)
+          : (params.isDisabled = DisabledEnum.YES);
+        if (isSysTenant) {
+          addTenantAdmin(params).then((res) => {
+            message.success('添加管理员账户成功');
+            emit('change');
+            handleReset();
+            closeDrawer();
+          });
+        } else {
+          addSingleUser(params)
+            .then((res) => {
+              if (res.code !== ResultEnum.SUCCESS) {
+                return Promise.reject(res.msg);
+              }
+              emit('change');
+              handleReset();
+              closeDrawer();
+              ElMessage.success('添加成功');
+            })
+            .catch((error) => {
+              ElMessage.error(error);
+            });
+        }
       } else {
       } else {
-         formParams.value.isDisabled ? params.isDisabled = DisabledEnum.NO : params.isDisabled = DisabledEnum.YES;
+        formParams.value.isDisabled
+          ? (params.isDisabled = DisabledEnum.NO)
+          : (params.isDisabled = DisabledEnum.YES);
         updateUser(params)
         updateUser(params)
-        .then((res) => {
-          if (res.code !== ResultEnum.SUCCESS) {
-            return Promise.reject(res.msg);
-          }
-          emit('change');
-          handleReset();
-          closeDrawer();
-          ElMessage.success('修改成功');
-        })
-        .catch((error) => {
-          ElMessage.error(error);
-        });
+          .then((res) => {
+            if (res.code !== ResultEnum.SUCCESS) {
+              return Promise.reject(res.msg);
+            }
+            emit('change');
+            handleReset();
+            closeDrawer();
+            ElMessage.success('修改成功');
+          })
+          .catch((error) => {
+            ElMessage.error(error);
+          });
       }
       }
     });
     });
   }
   }
@@ -177,10 +210,10 @@
   }
   }
 
 
   function getInfo() {
   function getInfo() {
-    userInfo({userId: Number(formParams.value.userId)}).then((res) => {
+    userInfo({ userId: Number(formParams.value.userId) }).then((res) => {
       Object.entries(res).forEach(([key, value]) => {
       Object.entries(res).forEach(([key, value]) => {
-        formParams.value[key] = value
-      })
+        formParams.value[key] = value;
+      });
       formParams.value.roleIdList = res.roleIds;
       formParams.value.roleIdList = res.roleIds;
       formParams.value.passwordRe = res.password;
       formParams.value.passwordRe = res.password;
       formParams.value.isDisabled = res.isDisabled === DisabledEnum.NO ? true : false;
       formParams.value.isDisabled = res.isDisabled === DisabledEnum.NO ? true : false;

+ 6 - 20
src/views/system/user/user.vue

@@ -75,10 +75,10 @@
         <el-table-column label="创建时间" prop="createdAt" />
         <el-table-column label="创建时间" prop="createdAt" />
         <el-table-column label="操作" width="200">
         <el-table-column label="操作" width="200">
           <template #default="scope ">
           <template #default="scope ">
-            <el-space>
-              <el-button v-if="scope.row.roleType !== RoleTypeEnum.SUPER_ADMIN" type="primary" :icon="Edit" text @click="handleEdit(scope.row)" />
-              <el-button  v-if="scope.row.roleType !== RoleTypeEnum.SUPER_ADMIN"  type="primary" :icon="Delete" text @click="handleDelete(scope.row.id)"  />
-              <el-button type="primary" text @click="handleResetCode(scope.row)">重置密码</el-button>
+            <el-space v-if="scope.row.roleType !== RoleTypeEnum.SUPER_ADMIN">
+              <el-button type="primary" :icon="Edit" text @click="handleEdit(scope.row)" />
+              <el-button type="primary" :icon="Delete" text @click="handleDelete(scope.row.id)"  />
+              <el-button type="primary" v-if="(!isSysTenant) || (isSysTenant && scope.row.roleType !== RoleTypeEnum.TENANT_ADMIN) " text @click="handleResetCode(scope.row)">重置密码</el-button>
             </el-space>
             </el-space>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
@@ -151,9 +151,6 @@
   const createDrawerRef = ref<InstanceType<typeof CreateDrawer>>();
   const createDrawerRef = ref<InstanceType<typeof CreateDrawer>>();
   const ResetCodeDrawerRef = ref<InstanceType<typeof ResetCodeDrawer>>();
   const ResetCodeDrawerRef = ref<InstanceType<typeof ResetCodeDrawer>>();
   const createAdminDrawerRef = ref<InstanceType<typeof CreateAdminDrawer>>();
   const createAdminDrawerRef = ref<InstanceType<typeof CreateAdminDrawer>>();
-  const rowKeys = ref([]);
-  const rowKeysName = ref([]);
-  const tableData = ref();
   const drawerTitle = ref('添加用户');
   const drawerTitle = ref('添加用户');
   const createAdminTitle = ref('添加租户管理员');
   const createAdminTitle = ref('添加租户管理员');
   const roleData = ref<OptionsProps[]>([]);
   const roleData = ref<OptionsProps[]>([]);
@@ -161,25 +158,14 @@
   const createAdminType = ref(EditType.create);
   const createAdminType = ref(EditType.create);
   const { isSysTenant } = useTargetTenantIdSetting();
   const { isSysTenant } = useTargetTenantIdSetting();
 
 
-  function onCheckedRow(keys) {
-    rowKeys.value = keys;
-    rowKeysName.value = tableData.value
-      .filter((item) => {
-        return keys.includes(item.id);
-      })
-      .map((item) => {
-        return item.username;
-      })
-      .join(',');
-  }
-
   function reloadTable() {
   function reloadTable() {
     loadPageData();
     loadPageData();
   }
   }
 
 
   const openAddSingleDrawer = () => {
   const openAddSingleDrawer = () => {
     drawerTitle.value = '添加用户';
     drawerTitle.value = '添加用户';
-    if (!isSysTenant.value) {
+    
+    if (!isSysTenant) {
       createAdminType.value = EditType.create;
       createAdminType.value = EditType.create;
       createAdminDrawerRef.value?.openDrawer();
       createAdminDrawerRef.value?.openDrawer();
     } else {
     } else {