Bläddra i källkod

管理用户添加角色

lrf 1 år sedan
förälder
incheckning
b709ae1197
2 ändrade filer med 21 tillägg och 1 borttagningar
  1. 1 0
      src/components/frame/c-form.vue
  2. 20 1
      src/views/user/admin/index.vue

+ 1 - 0
src/components/frame/c-form.vue

@@ -230,6 +230,7 @@ defineExpose({ sss });
 .btn {
   text-align: center;
 }
+
 .form {
   display: flex;
   flex-direction: row;

+ 20 - 1
src/views/user/admin/index.vue

@@ -29,6 +29,9 @@
         <template #is_use>
           <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{ i.label }}</el-radio>
         </template>
+        <template #role>
+          <el-option v-for="i in roleList" :key="i._id" :label="i.name" :value="i.code"></el-option>
+        </template>
       </cForm>
     </el-col>
   </cDialog>
@@ -38,6 +41,7 @@
 import { ref, Ref, onMounted, inject } from 'vue';
 import { AdminStore } from '@/stores/users/admin';
 import { DictDataStore } from '@/stores/system/dictData';
+import { RoleStore } from '@/stores/system/role';
 import { LoginStore } from '@/stores/login';
 import type { IQueryResult } from '@/util/types.util';
 import { cloneDeep, get } from 'lodash';
@@ -47,6 +51,7 @@ const loading: Ref<any> = ref(false);
 const store = AdminStore();
 const dictDataStore = DictDataStore();
 const loginStore = LoginStore();
+const roleStore = RoleStore();
 const $checkRes = inject('$checkRes') as Function;
 let list: Ref<any> = ref([]);
 let total: Ref<number> = ref(0);
@@ -55,6 +60,7 @@ let limit = inject('$limit') as number;
 let fields: Ref<any[]> = ref([
   { label: '账号', model: 'account', isSearch: true },
   { label: '名称', model: 'nick_name' },
+  { label: '角色', model: 'role', format: (i) => getRole(i) },
   { label: '是否是超级管理员', model: 'is_super', format: (i) => (i === '0' ? '是' : '否') },
   { label: '是否启用', model: 'is_use', format: (i) => getDict(i) }
 ]);
@@ -91,6 +97,7 @@ const formFieldsForUpdate = [
   { label: '名称', model: 'nick_name' },
   { label: '是否启用', model: 'is_use', type: 'radio' }
 ];
+const roleField = { label: '角色', model: 'role', type: 'select' };
 const defaultForm = { is_use: '0' };
 const formFields: Ref<any> = ref();
 
@@ -135,12 +142,15 @@ const toSearch = (query) => {
 };
 const toAdd = () => {
   formFields.value = formFieldsForCreate;
+  formFields.value.push(roleField);
   form.value = cloneDeep(defaultForm);
   dialog.value.show = true;
 };
 const toEdit = (data) => {
-  formFields.value = formFieldsForUpdate;
+  formFields.value = cloneDeep(formFieldsForUpdate);
   form.value = data;
+  console.log(data)
+  if (data.is_super !== '0') formFields.value.push(roleField);
   dialog.value.show = true;
 };
 
@@ -156,11 +166,20 @@ onMounted(async () => {
   loading.value = false;
 });
 const isUseList: Ref<any> = ref([]);
+const roleList: Ref<any> = ref([]);
 const searchOther = async () => {
   const result: IQueryResult = await dictDataStore.query({ code: 'isUse', is_use: '0' });
   if ($checkRes(result)) {
     isUseList.value = result.data;
   }
+  const roleResult: IQueryResult = await roleStore.query();
+  if ($checkRes(roleResult)) {
+    roleList.value = roleResult.data;
+  }
+};
+const getRole = (data) => {
+  const res = roleList.value.find((f) => f.code === data);
+  return get(res, 'name');
 };
 const getDict = (data) => {
   const res = isUseList.value.find((f) => f.value == data);