Procházet zdrojové kódy

会话管理菜单设置

yinbangzhong před 2 roky
rodič
revize
d1de15b9da

+ 0 - 48
src/router/routes/modules/exception.ts

@@ -1,48 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-
-const EXCEPTION: AppRouteRecordRaw = {
-  path: '/exception',
-  name: 'exception',
-  component: DEFAULT_LAYOUT,
-  meta: {
-    locale: 'menu.exception',
-    requiresAuth: true,
-    icon: 'icon-exclamation-circle',
-    order: 6,
-  },
-  children: [
-    {
-      path: '403',
-      name: '403',
-      component: () => import('@/views/exception/403/index.vue'),
-      meta: {
-        locale: 'menu.exception.403',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-    {
-      path: '404',
-      name: '404',
-      component: () => import('@/views/exception/404/index.vue'),
-      meta: {
-        locale: 'menu.exception.404',
-        requiresAuth: true,
-        roles: ['*'],
-      },
-    },
-    {
-      path: '500',
-      name: '500',
-      component: () => import('@/views/exception/500/index.vue'),
-      meta: {
-        locale: 'menu.exception.500',
-        requiresAuth: true,
-        roles: ['*'],
-      },
-    },
-  ],
-};
-
-export default EXCEPTION;

+ 0 - 38
src/router/routes/modules/form.ts

@@ -1,38 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-
-const FORM: AppRouteRecordRaw = {
-  path: '/form',
-  name: 'form',
-  component: DEFAULT_LAYOUT,
-  meta: {
-    locale: 'menu.form',
-    icon: 'icon-settings',
-    requiresAuth: true,
-    order: 3,
-  },
-  children: [
-    {
-      path: 'step',
-      name: 'Step',
-      component: () => import('@/views/form/step/index.vue'),
-      meta: {
-        locale: 'menu.form.step',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-    {
-      path: 'group',
-      name: 'Group',
-      component: () => import('@/views/form/group/index.vue'),
-      meta: {
-        locale: 'menu.form.group',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-  ],
-};
-
-export default FORM;

+ 0 - 38
src/router/routes/modules/list.ts

@@ -1,38 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-
-const LIST: AppRouteRecordRaw = {
-  path: '/list',
-  name: 'list',
-  component: DEFAULT_LAYOUT,
-  meta: {
-    locale: 'menu.list',
-    requiresAuth: true,
-    icon: 'icon-list',
-    order: 2,
-  },
-  children: [
-    {
-      path: 'search-table', // The midline path complies with SEO specifications
-      name: 'SearchTable',
-      component: () => import('@/views/list/search-table/index.vue'),
-      meta: {
-        locale: 'menu.list.searchTable',
-        requiresAuth: true,
-        roles: ['*'],
-      },
-    },
-    {
-      path: 'card',
-      name: 'Card',
-      component: () => import('@/views/list/card/index.vue'),
-      meta: {
-        locale: 'menu.list.cardList',
-        requiresAuth: true,
-        roles: ['*'],
-      },
-    },
-  ],
-};
-
-export default LIST;

+ 0 - 38
src/router/routes/modules/result.ts

@@ -1,38 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-
-const RESULT: AppRouteRecordRaw = {
-  path: '/result',
-  name: 'result',
-  component: DEFAULT_LAYOUT,
-  meta: {
-    locale: 'menu.result',
-    icon: 'icon-check-circle',
-    requiresAuth: true,
-    order: 5,
-  },
-  children: [
-    {
-      path: 'success',
-      name: 'Success',
-      component: () => import('@/views/result/success/index.vue'),
-      meta: {
-        locale: 'menu.result.success',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-    {
-      path: 'error',
-      name: 'Error',
-      component: () => import('@/views/result/error/index.vue'),
-      meta: {
-        locale: 'menu.result.error',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-  ],
-};
-
-export default RESULT;

+ 11 - 2
src/router/routes/modules/session.ts

@@ -16,12 +16,21 @@ const session: AppRouteRecordRaw = {
             path:'sessionManager',
             name:"sessionManager",
             meta:{
+                locale: '会话管理',
                 requiresAuth: true,
-                hideInMenu:true,
                 roles: ['*'],
-                activeMenu:'session'
             },
             component:()=>import('@/views/session/sessionManager/index.vue'),
+        },
+        {
+            path:'sessionRecordsManager',
+            name:"sessionRecordsManager",
+            meta:{
+                locale: '会话记录',
+                requiresAuth: true,
+                roles: ['*'],
+            },
+            component:()=>import('@/views/session/sessionRecordsManager/index.vue'),
         }
     ]
 };

+ 0 - 28
src/router/routes/modules/sessionRecords.ts

@@ -1,28 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-const sessionRecords: AppRouteRecordRaw = {
-    path: '/sessionRecords',
-    name: 'sessionRecords',
-    component: DEFAULT_LAYOUT,
-    meta: {
-        locale: 'menu.sessionRecords',
-        requiresAuth: true,
-        icon: 'icon-list',
-        order: 3,
-        hideInMenu:false
-    },
-    children:[
-        {
-            path:'sessionRecordsManager',
-            name:"sessionRecordsManager",
-            meta:{
-                requiresAuth: true,
-                hideInMenu:true,
-                roles: ['*'],
-                activeMenu:'sessionRecords'
-            },
-            component:()=>import('@/views/sessionRecords/sessionRecordsManager/index.vue'),
-        }
-    ]
-};
-export default sessionRecords;

+ 0 - 39
src/router/routes/modules/visualization.ts

@@ -1,39 +0,0 @@
-import { DEFAULT_LAYOUT } from '../base';
-import { AppRouteRecordRaw } from '../types';
-
-const VISUALIZATION: AppRouteRecordRaw = {
-  path: '/visualization',
-  name: 'visualization',
-  component: DEFAULT_LAYOUT,
-  meta: {
-    locale: 'menu.visualization',
-    requiresAuth: true,
-    icon: 'icon-apps',
-    order: 1,
-  },
-  children: [
-    {
-      path: 'data-analysis',
-      name: 'DataAnalysis',
-      component: () => import('@/views/visualization/data-analysis/index.vue'),
-      meta: {
-        locale: 'menu.visualization.dataAnalysis',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-    {
-      path: 'multi-dimension-data-analysis',
-      name: 'MultiDimensionDataAnalysis',
-      component: () =>
-        import('@/views/visualization/multi-dimension-data-analysis/index.vue'),
-      meta: {
-        locale: 'menu.visualization.multiDimensionDataAnalysis',
-        requiresAuth: true,
-        roles: ['admin'],
-      },
-    },
-  ],
-};
-
-export default VISUALIZATION;

+ 147 - 151
src/views/authority/resource/index.vue

@@ -8,6 +8,7 @@
           :bordered="false"
           :style="{ 'width': '100%', 'height': '900px', 'overflow-y': 'auto' }"
         >
+          <a-button @click="() => onIconClick(null)">新增父级菜单</a-button>
           <a-tree
             class="tree-demo"
             draggable
@@ -138,178 +139,173 @@
 </template>
 
 <script lang="ts" setup>
-  import { ref } from 'vue';
-  import { IconPlus } from '@arco-design/web-vue/es/icon';
-  import {
-    Resource,
-    ResourceAdd,
-    ResourceById,
-    ResourceDelete,
-    ResourceList,
-    ResourceUpdate,
-  } from '@/api/authority';
-  import Authheader from '@/views/authority/components/authheader.vue';
-  import { Modal } from '@arco-design/web-vue';
+import { ref } from "vue";
+import { IconPlus } from "@arco-design/web-vue/es/icon";
+import { Resource, ResourceAdd, ResourceById, ResourceDelete, ResourceList, ResourceUpdate } from "@/api/authority";
+import Authheader from "@/views/authority/components/authheader.vue";
+import { Modal } from "@arco-design/web-vue";
 
-  let visible = ref(false);
-  let treeData = ref([]);
-  let showLine = ref(true);
-  let menuTips = ref(['权限管理', '资源']);
-  const fieldNames = { value: 'key', label: 'value' };
-  // 0目录 1菜单 2按钮
-  let options = ref([
-    {
-      key: '3',
-      value: '目录',
-    },
-    {
-      key: '0',
-      value: '菜单',
-    },
-    {
-      key: '1',
-      value: '按钮',
-    },
-  ]);
-  let resourceform = ref<Resource>({
-    component: '',
-    createTime: '',
-    description: '',
-    icon: '',
-    menuId: '',
-    menuName: '',
-    menuType: '',
-    orderNum: '',
-    parentId: '',
-    parentName: '',
-    children: [],
-    path: '',
-    perms: '',
-    status: '',
-    syesourcetype: '',
-    target: '',
-    updateTime: '',
-  });
+let visible = ref(false);
+let treeData = ref([]);
+let showLine = ref(true);
+let menuTips = ref(["权限管理", "资源"]);
+const fieldNames = { value: "key", label: "value" };
+// 0目录 1菜单 2按钮
+let options = ref([
+  {
+    key: "3",
+    value: "目录"
+  },
+  {
+    key: "0",
+    value: "菜单"
+  },
+  {
+    key: "1",
+    value: "按钮"
+  }
+]);
+let resourceform = ref<Resource>({
+  component: "",
+  createTime: "",
+  description: "",
+  icon: "",
+  menuId: "",
+  menuName: "",
+  menuType: "",
+  orderNum: "",
+  parentId: "",
+  parentName: "",
+  children: [],
+  path: "",
+  perms: "",
+  status: "",
+  syesourcetype: "",
+  target: "",
+  updateTime: ""
+});
 
-  const onIconClick = (nodeData) => {
+const onIconClick = (nodeData) => {
+  if (nodeData) {
     resourceform.value.parentId = nodeData.menuId;
-    resourceform.value.component = '';
-    resourceform.value.createTime = '';
-    resourceform.value.description = '';
-    resourceform.value.icon = '';
-    resourceform.value.menuId = '';
-    resourceform.value.menuName = '';
-    resourceform.value.menuType = '';
-    resourceform.value.orderNum = '0';
     resourceform.value.parentName = nodeData.menuName;
-    resourceform.value.path = '';
-    resourceform.value.perms = '';
-    resourceform.value.status = '';
-    resourceform.value.syesourcetype = '';
+  }
+  resourceform.value.component = "";
+  resourceform.value.createTime = "";
+  resourceform.value.description = "";
+  resourceform.value.icon = "";
+  resourceform.value.menuId = "";
+  resourceform.value.menuName = "";
+  resourceform.value.menuType = "";
+  resourceform.value.orderNum = "0";
+  resourceform.value.path = "";
+  resourceform.value.perms = "";
+  resourceform.value.status = "";
+  resourceform.value.syesourcetype = "";
 
-    visible.value = true;
-  };
+  visible.value = true;
+};
 
-  const addresource = async () => {
-    await ResourceAdd({
-      ...resourceform.value,
-    } as unknown as Resource).then((res) => {
-      ResourceData('');
-    });
-  };
+const addresource = async () => {
+  await ResourceAdd({
+    ...resourceform.value
+  } as unknown as Resource).then((res) => {
+    ResourceData("");
+  });
+};
 
-  const onIconClickDelete = (nodeData) => {
-    ResourceDelete(nodeData.menuId).then(() => {
-      ResourceData('');
-    });
-  };
+const onIconClickDelete = (nodeData) => {
+  ResourceDelete(nodeData.menuId).then(() => {
+    ResourceData("");
+  });
+};
 
-  const showDetail = (id) => {
-    ResourceById(id).then((res) => {
-      resourceform.value = { ...res.data };
-    });
-  };
-  const editresource = () => {
-    ResourceUpdate({
-      ...resourceform.value,
-    } as unknown as Resource).then((res) => {
-      ResourceData('');
-      Modal.success({
-        title: '保存成功',
-        content: '保存成功',
-      });
+const showDetail = (id) => {
+  ResourceById(id).then((res) => {
+    resourceform.value = { ...res.data };
+  });
+};
+const editresource = () => {
+  ResourceUpdate({
+    ...resourceform.value
+  } as unknown as Resource).then((res) => {
+    ResourceData("");
+    Modal.success({
+      title: "保存成功",
+      content: "保存成功"
     });
-  };
-  const reset = (id) => {
-    ResourceById(id).then((res) => {
-      resourceform.value = { ...res.data };
+  });
+};
+const reset = (id) => {
+  ResourceById(id).then((res) => {
+    resourceform.value = { ...res.data };
+  });
+};
+
+const onDrop = ({ dragNode, dropNode, dropPosition }) => {
+  const data = treeData.value;
+  ResourceUpdate({
+    orderNum: "0",
+    parentId: dropNode.menuId,
+    menuId: dragNode.menuId
+  });
+  const loop = (data, key, callback) => {
+    data.some((item, index, arr) => {
+      if (item.menuId === key) {
+        callback(item, index, arr);
+        return true;
+      }
+      if (item.children) {
+        return loop(item.children, key, callback);
+      }
+      return false;
     });
   };
 
-  const onDrop = ({ dragNode, dropNode, dropPosition }) => {
-    const data = treeData.value;
-    ResourceUpdate({
-      orderNum: '0',
-      parentId: dropNode.menuId,
-      menuId: dragNode.menuId,
-    });
-    const loop = (data, key, callback) => {
-      data.some((item, index, arr) => {
-        if (item.menuId === key) {
-          callback(item, index, arr);
-          return true;
-        }
-        if (item.children) {
-          return loop(item.children, key, callback);
-        }
-        return false;
-      });
-    };
+  loop(data, dragNode.menuId, (_, index, arr) => {
+    arr.splice(index, 1);
+  });
 
-    loop(data, dragNode.menuId, (_, index, arr) => {
-      arr.splice(index, 1);
+  if (dropPosition === 0) {
+    loop(data, dropNode.menuId, (item) => {
+      item.children = item.children || [];
+      item.children.push(dragNode);
     });
+  } else {
+    loop(data, dropNode.menuId, (_, index, arr) => {
+      arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode);
+    });
+  }
+};
 
-    if (dropPosition === 0) {
-      loop(data, dropNode.menuId, (item) => {
-        item.children = item.children || [];
-        item.children.push(dragNode);
-      });
-    } else {
-      loop(data, dropNode.menuId, (_, index, arr) => {
-        arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode);
-      });
-    }
-  };
-
-  const handleCancel = (type) => {
-    if (type == 1) {
-      visible.value = false;
-    }
-  };
+const handleCancel = (type) => {
+  if (type == 1) {
+    visible.value = false;
+  }
+};
 
-  const ResourceData = async (key) => {
-    await ResourceList(key).then((res) => {
-      treeData.value = [...res.rows];
-    });
-  };
+const ResourceData = async (key) => {
+  await ResourceList(key).then((res) => {
+    treeData.value = [...res.rows];
+  });
+};
 
-  ResourceData('');
+ResourceData("");
 </script>
 
 <style scoped>
-  .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title),
-  .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover {
-    animation: blinkBg 0.4s 2;
-  }
+.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title),
+.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover {
+  animation: blinkBg 0.4s 2;
+}
 
-  @keyframes blinkBg {
-    0% {
-      background-color: transparent;
-    }
+@keyframes blinkBg {
+  0% {
+    background-color: transparent;
+  }
 
-    100% {
-      background-color: var(--color-primary-light-1);
-    }
+  100% {
+    background-color: var(--color-primary-light-1);
   }
+}
 </style>

+ 0 - 0
src/views/sessionRecords/sessionRecordsManager/index.vue → src/views/session/sessionRecordsManager/index.vue