wangwei il y a 4 ans
Parent
commit
c0756276fb

+ 2 - 3
src/api/sys/model/menuModel.ts

@@ -1,4 +1,5 @@
 import { RouteMeta } from '/@/router/types';
+import type { AppRouteRecordRaw } from '/@/router/types';
 export interface RouteItem {
   path: string;
   component: any;
@@ -13,6 +14,4 @@ export interface RouteItem {
 /**
  * @description: Get menu return value
  */
-export type getMenuListResultModel = {
-  tree: RouteItem[];
-};
+export type getMenuListResultModel = AppRouteRecordRaw[];

+ 1 - 1
src/api/sys/model/userModel.ts

@@ -94,7 +94,7 @@ export interface getGroupTreeModel {
 /**
  * @description: Get user information return value
  */
-export interface GetUserInfoByUserIdModel {
+export interface GetUserInfoModel {
   // 用户id
   id: string | number;
   // 用户名

+ 12 - 2
src/api/sys/user.ts

@@ -4,7 +4,7 @@ import {
   LoginResultModel,
   GetUserInfoByUserIdParams,
   getUserListParams,
-  GetUserInfoByUserIdModel,
+  GetUserInfoModel,
   CommonRowModel,
   getGroupTreeModel,
   CommonTreeModel,
@@ -24,6 +24,7 @@ import { ErrorMessageMode } from '/@/utils/http/axios/types';
 enum Api {
   LoginUrl = 'admin/login',
   AdminUrl = 'admin/',
+  MyInfoUrl = 'admin/my',
   GroupUrl = 'admin/group/',
   RuleUrl = 'admin/rule/',
   MenuUrl = 'admin/menu/',
@@ -48,8 +49,17 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
 /**
  * @description: getUserInfoById
  */
+export function getMyInfo() {
+  return defHttp.request<GetUserInfoModel>({
+    url: Api.MyInfoUrl,
+    method: 'GET',
+  });
+}
+/**
+ * @description: getUserInfoById
+ */
 export function getUserInfoById(params: GetUserInfoByUserIdParams) {
-  return defHttp.request<GetUserInfoByUserIdModel>({
+  return defHttp.request<GetUserInfoModel>({
     url: Api.AdminUrl + params.id,
     method: 'GET',
   });

+ 1 - 1
src/components/Table/src/components/ExpandIcon.tsx

@@ -8,7 +8,7 @@ export default () => {
     return (
       <BasicArrow
         class="mr-1"
-        iconStyle="margin-top: -2px;"
+        iconStyle="margin:0 5px; margin-top: -2px;"
         onClick={(e: Event) => {
           props.onExpand(props.record, e);
         }}

+ 14 - 1
src/store/modules/permission.ts

@@ -120,7 +120,8 @@ export const usePermissionStore = defineStore({
         let routeList: AppRouteRecordRaw[] = [];
         try {
           // this.changePermissionCode();
-          routeList = (await getMenuList()).tree as AppRouteRecordRaw[]; //请求后端路由菜单数组
+          routeList = await getMenuList(); //请求后端路由菜单数组
+          console.log(`routeList == backend`, routeList);
           // 默认路由
           const dashboard = {
             path: '/dashboard',
@@ -151,7 +152,19 @@ export const usePermissionStore = defineStore({
               },
             ],
           };
+          const test = {
+            path: '/test',
+            name: 'Test',
+            component: 'LAYOUT',
+            redirect: '/general/config',
+            meta: {
+              icon: 'ion:grid-outline',
+              title: '测试',
+            },
+          };
+          console.log(`routeList`, routeList);
           routeList.unshift(dashboard);
+          routeList.push(test);
           console.log(`routeList==tree`, routeList);
         } catch (error) {
           console.error(error);

+ 7 - 7
src/store/modules/user.ts

@@ -11,11 +11,11 @@ import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum';
 import { getAuthCache, setAuthCache } from '/@/utils/auth';
 import type {
   LoginParams,
-  GetUserInfoByUserIdModel,
+  GetUserInfoModel,
   // GetUserInfoByUserIdParams,
 } from '/@/api/sys/model/userModel';
 
-import { getUserInfoById, loginApi } from '/@/api/sys/user';
+import { getMyInfo, loginApi } from '/@/api/sys/user';
 
 import { useI18n } from '/@/hooks/web/useI18n';
 import { useMessage } from '/@/hooks/web/useMessage';
@@ -84,16 +84,16 @@ export const useUserStore = defineStore({
         goHome?: boolean;
         mode?: ErrorMessageMode;
       }
-    ): Promise<GetUserInfoByUserIdModel | null> {
+    ): Promise<GetUserInfoModel | null> {
       try {
         const { goHome = true, mode, ...loginParams } = params;
         const data = await loginApi(loginParams, mode);
-        const { token, id } = data;
+        const { token } = data;
 
         // save token
         this.setToken(token);
         // get user info
-        const userInfo = await this.getUserInfoAction({ id });
+        const userInfo = await this.getUserInfoAction();
 
         const sessionTimeout = this.sessionTimeout;
         sessionTimeout && this.setSessionTimeout(false);
@@ -103,8 +103,8 @@ export const useUserStore = defineStore({
         return Promise.reject(error);
       }
     },
-    async getUserInfoAction({ id }) {
-      const result = await getUserInfoById({ id });
+    async getUserInfoAction() {
+      const result = await getMyInfo();
       const userInfo = result.row;
       const roles = userInfo;
       roles.value = roles.username;

+ 0 - 1
src/views/admin/admin/data.ts

@@ -317,7 +317,6 @@ export const schemas: FormSchema[] = [
     colProps: {
       span: adaptWidth.elContainer,
     },
-    required: true,
   },
   {
     field: 'loginfailure',

+ 1 - 0
src/views/admin/admin/index.vue

@@ -69,6 +69,7 @@
   }
 
   export default defineComponent({
+    name: 'Admin',
     components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
     setup() {
       init();

+ 10 - 12
src/views/admin/admin/popup.vue

@@ -34,16 +34,14 @@
       const popupData = props.popupData as PopupData;
       const modelRef = ref({});
 
-      const [registerForm, { getFieldsValue, updateSchema, setFieldsValue, resetFields }] = useForm(
-        {
-          labelWidth: 120,
-          schemas,
-          showActionButtonGroup: false,
-          actionColOptions: {
-            span: 24,
-          },
-        }
-      );
+      const [registerForm, { updateSchema, setFieldsValue, resetFields, validate }] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
       //   const [register, { closeModal }] = useModalInner((data) => {
       //     modelRef.value = data;
 
@@ -64,8 +62,8 @@
         });
       });
 
-      function confirm() {
-        const data = getFieldsValue();
+      async function confirm() {
+        const data = await validate();
         console.log(`确定`, data);
         if (role.id) {
           data.id = role.id;

+ 1 - 0
src/views/admin/group/data.ts

@@ -54,6 +54,7 @@ export const schemas: FormSchema[] = [
       },
       getPopupContainer: () => document.body,
     },
+    required: true,
     labelWidth: adaptWidth.labelWidth,
     colProps: {
       span: adaptWidth.elContainer,

+ 8 - 3
src/views/admin/group/index.vue

@@ -36,7 +36,7 @@
   import { useModal } from '/@/components/Modal';
   //   import { getAllMenuList } from '/@/api/sys/menu';
   import { columns } from './data';
-  // import { useUserStore } from '/@/store/modules/user';
+  import { useUserStore } from '/@/store/modules/user';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { jsonToSheetXlsx, ExpExcelModel, ExportModalResult } from '/@/components/Excel';
   import {
@@ -72,7 +72,7 @@
   export default defineComponent({
     components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
     setup() {
-      // const userStore = useUserStore();
+      const userStore = useUserStore();
       const { createMessage } = useMessage();
       const { success /*, error */ } = createMessage;
       const tableRef = ref<Nullable<TableActionType>>(null);
@@ -149,8 +149,11 @@
       }
 
       function handleEdit(record: EditRecordRow) {
+        console.log(`record 5555`, record);
+        if (record.pid === 0) {
+          return;
+        }
         currentEditKeyRef.value = record.id; // record.key
-        console.log(record);
         popupData.title = '编辑';
 
         const data = getTableAction().getDataSource();
@@ -159,6 +162,7 @@
             record = item;
           }
         });
+        console.log(`record ===group`, record);
         openPopup(true, record);
       }
 
@@ -174,6 +178,7 @@
       }
 
       function selectionChange() {
+        console.log(`userStore`, userStore.getUserInfo());
         const keys = getTableAction().getSelectRowKeys();
         if (keys.length) {
           btn.disable_btn = false;

+ 7 - 12
src/views/admin/group/popup.vue

@@ -8,6 +8,7 @@
         v-if="allowRule.length"
         checkable
         :tree-data="allowRule"
+        :multiple="true"
         showLine
         defaultExpandAll
         :replace-fields="replaceFields"
@@ -61,14 +62,8 @@
       const replaceFields = {
         key: 'id',
       };
-      //   watch(reactData, () => {
-      //     console.log('rules', reactData.rules);
-      //   });
 
-      const [
-        registerForm,
-        { getFieldsValue, updateSchema, setFieldsValue, resetFields /* validate*/ },
-      ] = useForm({
+      const [registerForm, { updateSchema, setFieldsValue, resetFields, validate }] = useForm({
         labelWidth: 100,
         schemas,
         showActionButtonGroup: false,
@@ -88,7 +83,7 @@
         }
         getRuleTree(data.pid);
         if (data.rules) {
-          reactData.initRules = data.rules.split(',');
+          reactData.initRules = data.rules.split(','); // 编辑 的rules
           reactData.initRules = reactData.initRules.map((item) => parseInt(item));
         }
 
@@ -155,17 +150,17 @@
         });
       }
 
-      function confirm() {
+      async function confirm() {
         console.log('确定');
-        const data = getFieldsValue();
+        const data = await validate();
         data.rules = [...reactData.rules];
         if (reactData.id) {
           data.id = reactData.id;
         }
         console.log(`pid`, data);
         console.log(`data`, data);
-        const childerData = { closeModal, data };
-        emit('saveData', childerData);
+        const childData = { closeModal, data };
+        emit('saveData', childData);
       }
       return {
         register,

+ 1 - 0
src/views/admin/logs/index.vue

@@ -67,6 +67,7 @@
   ];
 
   export default defineComponent({
+    name: 'Log',
     components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
     setup() {
       const tableRef = ref<Nullable<TableActionType>>(null);

+ 42 - 11
src/views/admin/rule/data.ts

@@ -12,6 +12,13 @@ const adaptWidth = adapt();
 
 export const columns: BasicColumn[] = [
   {
+    // title: '**',
+    // dataIndex: '',
+
+    align: 'left',
+    width: 60,
+  },
+  {
     title: 'ID',
     dataIndex: 'id',
     editComponentProps: {
@@ -78,6 +85,7 @@ export const schemas: FormSchema[] = [
     field: 'pid',
     label: '父级',
     component: 'TreeSelect',
+    defaultValue: 0,
     componentProps: {
       replaceFields: {
         title: 'title',
@@ -108,41 +116,54 @@ export const schemas: FormSchema[] = [
     colProps: {
       span: adaptWidth.elContainer,
     },
+    required: true,
   },
   {
-    field: 'weigh',
-    component: 'InputNumber',
-    label: '权重',
+    field: 'icon',
+    label: '图标',
+    component: 'IconPicker',
     labelWidth: adaptWidth.labelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
-    required: true,
   },
   {
-    field: 'redirect',
+    field: 'path',
     component: 'Input',
-    label: '重定向',
+    label: '路径',
     labelWidth: adaptWidth.labelWidth,
+    defaultValue: '',
     colProps: {
       span: adaptWidth.elContainer,
     },
     show: ({ values }) => {
-      if (values.pid || !values.ismenu) {
+      if (!values.ismenu) {
         return false;
       }
       return true;
     },
-    required: true,
   },
   {
-    field: 'icon',
-    label: '图标',
-    component: 'IconPicker',
+    field: 'redirect',
+    component: 'Input',
+    label: '重定向',
     labelWidth: adaptWidth.labelWidth,
+    defaultValue: '',
     colProps: {
       span: adaptWidth.elContainer,
     },
+    show: ({ values }) => {
+      if (values.pid || !values.ismenu) {
+        return false;
+      }
+      return true;
+    },
+    required: ({ values }) => {
+      if (values.pid || !values.ismenu) {
+        return false;
+      }
+      return true;
+    },
   },
   {
     field: 'ismenu',
@@ -154,6 +175,16 @@ export const schemas: FormSchema[] = [
     },
   },
   {
+    field: 'weigh',
+    component: 'InputNumber',
+    label: '权重',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    required: true,
+  },
+  {
     field: 'status',
     label: '状态',
     component: 'RadioButtonGroup',

+ 5 - 0
src/views/admin/rule/index.vue

@@ -61,6 +61,7 @@
   }
 
   export default defineComponent({
+    name: 'Rule',
     components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
     setup() {
       const { reloadMenu } = usePermission();
@@ -202,6 +203,10 @@
           success('创建成功!');
           console.log('----------add---');
         } else {
+          if (!data.pid) {
+            data.pid = 0;
+          }
+          console.log(`ruledata`, data);
           await editRule(data).then((res) => {
             console.log(res);
             getTableAction().reload();

+ 15 - 15
src/views/admin/rule/popup.vue

@@ -1,5 +1,5 @@
 <template>
-  <BasicModal v-bind="$attrs" @register="register" @ok="confirm" :title="title">
+  <BasicModal v-bind="$attrs" @register="register" @ok="handleSubmit" :title="title">
     <BasicForm @register="registerForm" :model="model" />
   </BasicModal>
 </template>
@@ -40,10 +40,7 @@
         key: 'id',
       };
 
-      const [
-        registerForm,
-        { getFieldsValue, updateSchema, setFieldsValue, resetFields /* validate*/ },
-      ] = useForm({
+      const [registerForm, { updateSchema, setFieldsValue, resetFields, validate }] = useForm({
         labelWidth: 100,
         schemas,
         showActionButtonGroup: false,
@@ -67,18 +64,21 @@
         });
       });
 
-      function confirm() {
+      async function handleSubmit() {
         console.log('确定');
-        const data = getFieldsValue();
-        let menuChange = false;
-        if (state.rule_id) {
-          data.id = state.rule_id;
-          if (data.ismenu !== state.ismenu) {
-            menuChange = true;
+        try {
+          const data = await validate();
+          let menuChange = false;
+          if (state.rule_id) {
+            data.id = state.rule_id;
+            if (data.ismenu !== state.ismenu) {
+              menuChange = true;
+            }
           }
+          const popupData = { closeModal, data, menuChange };
+          emit('saveData', popupData);
+        } finally {
         }
-        const popupData = { closeModal, data, menuChange };
-        emit('saveData', popupData);
       }
       return {
         register,
@@ -86,7 +86,7 @@
         registerForm,
         replaceFields,
         model: modelRef,
-        confirm,
+        handleSubmit,
         ...toRefs(popupData),
       };
     },

+ 2 - 0
src/views/general/config/index.vue

@@ -71,8 +71,10 @@
   import { columns } from './data';
 
   export default defineComponent({
+    name: 'Config',
     components: { CollapseContainer, BasicTable, BasicForm, TableAction },
     setup() {
+      console.log('==============init===========');
       const { t } = useI18n();
       const { createMessage } = useMessage();
       const { success /*, error */ } = createMessage;