feat: 添加系统管理-菜单管理 (#929)

* feat: 添加系统管理-菜单管理

* chore: update

* chore: add Copyright in login page

* chore: 将页脚放在一屏可视区

* chore: 依赖更新

* chore: update

* chore: update

* chore: 更新依赖

* chore: update `husky v9`

* style: 适配`el-dialog`样式的更新

* style: update `src/layout/components/search/components/SearchResult.vue`

* chore: update

* style: update

* fix: 修复`ReDialog`中点击取消和确定按钮会触发两次关闭回调

* chore: update

* chore: update src/views/system/menu/README.md

* chore: update

* chore: update

* chore: done

* chore: update
This commit is contained in:
xiaoming
2024-02-26 22:17:40 +08:00
committed by GitHub
parent f762587fa7
commit c314b0cd1c
45 changed files with 2743 additions and 1118 deletions

View File

@@ -5,14 +5,16 @@ const TITLE = getConfig("Title");
</script>
<template>
<footer class="layout-footer">
MIT © 2020-PRESENT
<footer
class="layout-footer text-[rgba(0,0,0,0.6)] dark:text-[rgba(220,220,242,0.8)]"
>
Copyright © 2020-present
<a
class="ml-1 hover:text-primary"
class="hover:text-primary"
href="https://github.com/pure-admin"
target="_blank"
>
{{ TITLE }}
&nbsp;{{ TITLE }}
</a>
</footer>
</template>
@@ -24,6 +26,6 @@ const TITLE = getConfig("Title");
justify-content: center;
width: 100%;
padding: 0 0 8px;
color: #c0c4cc;
font-size: 14px;
}
</style>

View File

@@ -4,7 +4,7 @@ export interface ListItem {
datetime: string;
type: string;
description: string;
status?: "" | "success" | "warning" | "info" | "danger";
status?: "primary" | "success" | "warning" | "info" | "danger";
extra?: string;
}

View File

@@ -115,7 +115,7 @@ defineExpose({ handleScroll });
cursor: pointer;
border: 0.1px solid #ccc;
border-radius: 4px;
transition: all 0.3s;
transition: font-size 0.16s;
&-title {
display: flex;

View File

@@ -1,7 +1,8 @@
<script setup lang="ts">
import { ref, computed } from "vue";
import { computed } from "vue";
import { useGlobal } from "@pureadmin/utils";
import { useNav } from "@/layout/hooks/useNav";
import MenuFold from "@iconify-icons/ri/menu-fold-fill";
interface Props {
@@ -12,7 +13,6 @@ const props = withDefaults(defineProps<Props>(), {
isActive: false
});
const visible = ref(false);
const { tooltipEffect } = useNav();
const iconClass = computed(() => {
@@ -42,21 +42,18 @@ const toggleClick = () => {
<template>
<div class="collapse-container">
<el-tooltip
placement="right"
:visible="visible"
:effect="tooltipEffect"
:content="props.isActive ? '点击折叠' : '点击展开'"
>
<IconifyIconOffline
:icon="MenuFold"
:class="[iconClass, themeColor === 'light' ? '' : 'text-primary']"
:style="{ transform: props.isActive ? 'none' : 'rotateY(180deg)' }"
@click="toggleClick"
@mouseenter="visible = true"
@mouseleave="visible = false"
/>
</el-tooltip>
<IconifyIconOffline
v-tippy="{
content: props.isActive ? '点击折叠' : '点击展开',
theme: tooltipEffect,
hideOnClick: 'toggle',
placement: 'right'
}"
:icon="MenuFold"
:class="[iconClass, themeColor === 'light' ? '' : 'text-primary']"
:style="{ transform: props.isActive ? 'none' : 'rotateY(180deg)' }"
@click="toggleClick"
/>
</div>
</template>

View File

@@ -3,7 +3,6 @@ import path from "path";
import { getConfig } from "@/config";
import { menuType } from "../../types";
import extraIcon from "./extraIcon.vue";
import { useDark } from "@pureadmin/utils";
import { ReText } from "@/components/ReText";
import { useNav } from "@/layout/hooks/useNav";
import { transformI18n } from "@/plugins/i18n";
@@ -16,7 +15,6 @@ import ArrowLeft from "@iconify-icons/ep/arrow-left-bold";
import ArrowRight from "@iconify-icons/ep/arrow-right-bold";
const { layout, isCollapse, tooltipEffect, getDivStyle } = useNav();
const { isDark } = useDark();
const props = defineProps({
item: {
@@ -143,7 +141,7 @@ function resolvePath(routePath) {
<ReText
:tippyProps="{
offset: [0, -10],
theme: !isDark ? tooltipEffect : undefined
theme: tooltipEffect
}"
class="!text-inherit"
>
@@ -181,7 +179,7 @@ function resolvePath(routePath) {
"
:tippyProps="{
offset: [0, -10],
theme: !isDark ? tooltipEffect : undefined
theme: tooltipEffect
}"
:class="{
'!text-inherit': true,