Przeglądaj źródła

fix: 修改账号管理文案以及添加租户管理员时,取消角色字段可下拉选择能力,该位置文字提示“租户管理员默认拥有租全部角色权限

qindao 1 rok temu
rodzic
commit
fbe3503c2d

+ 156 - 172
src/views/system/user/CreateAdminDrawer.vue

@@ -1,51 +1,23 @@
 <template>
   <el-drawer v-model="isDrawer" :size="width" :title="props.title" @close="handleReset">
-    <el-form
-      :model="formParams"
-      :rules="rules"
-      ref="formRef"
-      label-placement="left"
-      :label-width="80"
-    >
+    <el-form :model="formParams" :rules="rules" ref="formRef" label-placement="left" :label-width="80">
       <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 label="姓名" prop="realname">
         <el-input placeholder="请输入姓名" v-model="formParams.realname" />
       </el-form-item>
       <el-form-item label="角色" prop="roleIdList">
-        <el-select clearable v-model="formParams.roleIdList" multiple>
-          <el-option
-            v-for="item in roleData"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+        <el-select clearable v-model="formParams.roleIdList" multiple v-if="isCanAddTenant && isSysTenant">
+          <el-option v-for="item in roleData" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
+        <el-input v-else placeholder="租户管理员默认拥有租全部角色权限" disabled />
       </el-form-item>
       <el-form-item v-if="isAddUser" label="密码" prop="password">
-        <el-input
-          type="password"
-          show-password-on="mousedown"
-          placeholder="请输入密码"
-          v-model="formParams.password"
-        />
+        <el-input type="password" show-password-on="mousedown" placeholder="请输入密码" v-model="formParams.password" />
       </el-form-item>
-      <el-form-item
-        v-if="isAddUser"
-        label="确认密码"
-        :prop="!formParams.username ? 'passwordRe' : ''"
-      >
-        <el-input
-          type="password"
-          show-password-on="mousedown"
-          placeholder="请输入密码"
-          v-model="formParams.passwordRe"
-        />
+      <el-form-item v-if="isAddUser" label="确认密码" :prop="!formParams.username ? 'passwordRe' : ''">
+        <el-input type="password" show-password-on="mousedown" placeholder="请输入密码" v-model="formParams.passwordRe" />
       </el-form-item>
       <el-form-item label="是否启用" prop="isDisabled">
         <el-switch v-model="formParams.isDisabled" />
@@ -61,133 +33,115 @@
 </template>
 
 <script lang="ts" setup>
-  import { ref, computed } from 'vue';
-  import { FormRules, ElMessage } from 'element-plus';
-  import { userInfo } from '@/api/system/user';
-  import { cloneDeep } from 'lodash-es';
-  import {
-    addTenantAdmin,
-    AddTenantAdminProps,
-    updateUser,
-    addSingleUser,
-  } from '@/api/system/user-operate';
-  import { EditType, OptionsProps, DisabledEnum } from './types';
-  import { useTargetTenantIdSetting } from '@/utils/useTargetTenantIdSetting';
-  import { ResultEnum } from '@/enums/httpEnum';
+import { ref, computed, watch } from 'vue';
+import { FormRules, ElMessage } from 'element-plus';
+import { userInfo } from '@/api/system/user';
+import { cloneDeep } from 'lodash-es';
+import {
+  addTenantAdmin,
+  AddTenantAdminProps,
+  updateUser,
+  addSingleUser,
+} from '@/api/system/user-operate';
+import { EditType, OptionsProps, DisabledEnum } from './types';
+import { useTargetTenantIdSetting } from '@/utils/useTargetTenantIdSetting';
+import { ResultEnum } from '@/enums/httpEnum';
 
-  const { isSysTenant } = useTargetTenantIdSetting();
-  const rules: FormRules = {
-    username: {
-      required: true,
-      message: '登录账号不能为空',
-      trigger: 'blur',
-    },
-    realname: {
-      required: true,
-      message: '姓名不能为空',
-      trigger: 'blur',
-    },
-    roleIdList: {
-      required: true,
-      message: '请选择角色',
-      trigger: 'change',
-    },
-    password: {
-      required: true,
-      message: '密码不能为空',
-      trigger: 'blur',
-    },
-    passwordRe: {
-      required: true,
-      message: '密码不能为空',
-      trigger: 'blur',
-    },
-  };
+const { isSysTenant } = useTargetTenantIdSetting();
+let rules: FormRules = {
+  username: {
+    required: true,
+    message: '登录账号不能为空',
+    trigger: 'blur',
+  },
+  realname: {
+    required: true,
+    message: '姓名不能为空',
+    trigger: 'blur',
+  },
+  roleIdList: {
+    required: true,
+    message: '请选择角色',
+    trigger: 'change',
+  },
+  password: {
+    required: true,
+    message: '密码不能为空',
+    trigger: 'blur',
+  },
+  passwordRe: {
+    required: true,
+    message: '密码不能为空',
+    trigger: 'blur',
+  },
+};
 
-  const emit = defineEmits(['change']);
-  const props = withDefaults(
-    defineProps<{ title: string; width: number; editType: EditType; roleData: OptionsProps[] }>(),
-    {
-      title: '添加用户',
-      width: 450,
-    },
-  );
+const emit = defineEmits(['change']);
+const props = withDefaults(
+  defineProps<{ title: string; width: number; editType: EditType; roleData: OptionsProps[], isCanAddTenant: boolean, isSysTenant: boolean }>(),
+  {
+    title: '添加用户',
+    width: 450,
+  },
+);
 
-  const defaultValueRef = () => ({
-    username: '',
-    isDisabled: true,
-    realname: '',
-    roleIdList: [],
-    password: '',
-    passwordRe: '',
-  });
+const defaultValueRef = () => ({
+  username: '',
+  isDisabled: true,
+  realname: '',
+  roleIdList: [],
+  password: '',
+  passwordRe: '',
+});
 
-  const message = ElMessage;
-  const formRef: any = ref(null);
-  const isDrawer = ref(false);
-  const subLoading = ref(false);
-  const formParams = ref<AddTenantAdminProps>(defaultValueRef());
+const message = ElMessage;
+const formRef: any = ref(null);
+const isDrawer = ref(false);
+const subLoading = ref(false);
+const formParams = ref<AddTenantAdminProps>(defaultValueRef());
 
-  async function openDrawer(userId?) {
-    if (userId) {
-      formParams.value.userId = userId;
-      getInfo();
-      return;
-    }
-    isDrawer.value = true;
+async function openDrawer(userId?) {
+  if (userId) {
+    formParams.value.userId = userId;
+    getInfo();
+    return;
   }
+  isDrawer.value = true;
+}
 
-  const isAddUser = computed(() => {
-    return props.editType === EditType.create;
-  });
+const isAddUser = computed(() => {
+  return props.editType === EditType.create;
+});
 
-  function closeDrawer() {
-    isDrawer.value = false;
-  }
+function closeDrawer() {
+  isDrawer.value = false;
+}
 
-  function formSubmit() {
-    formRef.value.validate((valid) => {
-      if (!valid) {
-        message.error('请填写完整信息');
-        return;
-      }
+function formSubmit() {
+  formRef.value.validate((valid) => {
+    if (!valid) {
+      message.error('请填写完整信息');
+      return;
+    }
 
-      // 克隆
-      const params = cloneDeep(formParams.value);
-      if (params.password != params.passwordRe) {
-        return message.error('两次密码不一致');
-      }
-      if (isAddUser.value) {
-        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);
-            });
-        }
+    // 克隆
+    const params = cloneDeep(formParams.value);
+    if (params.password != params.passwordRe) {
+      return message.error('两次密码不一致');
+    }
+    if (isAddUser.value) {
+      formParams.value.isDisabled
+        ? (params.isDisabled = DisabledEnum.NO)
+        : (params.isDisabled = DisabledEnum.YES);
+      if (!isSysTenant) {
+        addTenantAdmin(params).then((res) => {
+          message.success('添加管理员账户成功');
+          emit('change');
+          handleReset();
+          closeDrawer();
+        });
       } else {
-        formParams.value.isDisabled
-          ? (params.isDisabled = DisabledEnum.NO)
-          : (params.isDisabled = DisabledEnum.YES);
-        updateUser(params)
+        addSingleUser(params)
           .then((res) => {
             if (res.code !== ResultEnum.SUCCESS) {
               return Promise.reject(res.msg);
@@ -195,34 +149,64 @@
             emit('change');
             handleReset();
             closeDrawer();
-            ElMessage.success('修改成功');
+            ElMessage.success('添加成功');
           })
           .catch((error) => {
             ElMessage.error(error);
           });
       }
-    });
-  }
+    } else {
+      formParams.value.isDisabled
+        ? (params.isDisabled = DisabledEnum.NO)
+        : (params.isDisabled = DisabledEnum.YES);
+      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);
+        });
+    }
+  });
+}
 
-  function handleReset() {
-    formRef.value.resetFields();
-    formParams.value = Object.assign(formParams.value, defaultValueRef());
-  }
+function handleReset() {
+  formRef.value.resetFields();
+  formParams.value = Object.assign(formParams.value, defaultValueRef());
+}
 
-  function getInfo() {
-    userInfo({ userId: Number(formParams.value.userId) }).then((res) => {
-      Object.entries(res).forEach(([key, value]) => {
-        formParams.value[key] = value;
-      });
-      formParams.value.roleIdList = res.roleIds;
-      formParams.value.passwordRe = res.password;
-      formParams.value.isDisabled = res.isDisabled === DisabledEnum.NO ? true : false;
-      isDrawer.value = true;
+function getInfo() {
+  userInfo({ userId: Number(formParams.value.userId) }).then((res) => {
+    Object.entries(res).forEach(([key, value]) => {
+      formParams.value[key] = value;
     });
+    formParams.value.roleIdList = res.roleIds;
+    formParams.value.passwordRe = res.password;
+    formParams.value.isDisabled = res.isDisabled === DisabledEnum.NO ? true : false;
+    isDrawer.value = true;
+  });
+}
+
+watch(
+  () => props,
+  () => {
+    if (props.isCanAddTenant && !props.isSysTenant) {
+      rules!.roleIdList!.required = false
+    }
+  },
+  {
+    immediate: true
   }
+)
 
-  defineExpose({
-    openDrawer,
-    closeDrawer,
-  });
+defineExpose({
+  openDrawer,
+  closeDrawer,
+});
 </script>

+ 2 - 2
src/views/system/user/user.vue

@@ -54,7 +54,7 @@
              <el-tooltip
               class="box-item"
               effect="dark"
-              content="该账号为租户管理员账号,自动拥有全部相机的查看权限,其他账号无此功能"
+              content="租户管理员账号,自动拥有全部相机查看权限及功能权限"
               placement="top-start"
               v-if="scope.row.roleType === RoleTypeEnum.TENANT_ADMIN"
             >
@@ -119,7 +119,7 @@
       :roleData="roleData" :width="450" />
     <ResetCodeDrawer ref="ResetCodeDrawerRef" :title="drawerTitle" @change="reloadTable" />
     <CreateAdminDrawer ref="createAdminDrawerRef" :title="createAdminTitle" @change="reloadTable"
-      :editType="createAdminType" :roleData="roleData" :width="450" />
+      :editType="createAdminType" :roleData="roleData" :width="450" :isCanAddTenant="isCanAddTenant" :isSysTenant="isSysTenant"/>
     <AddUser v-if="showAddPopover" :colseAddUser="setShowAddPopoverFalse" v-model="showAddPopover" class="add-popover"
       @change="reloadTable" />
   </div>