This commit is contained in:
zlwu committed 2026-05-26 19:04:27 +08:00
1 parent 4a00f21bfb
commit edf88dc016
1503 files changed
+329728 -41987

No files matched your search

@@ -1,12 +1,7 @@
<!-- 系统logo -->
<template>
<div class="flex-cc">
<img
:style="logoStyle"
src="/logo.png"
alt="中科兴皖"
class="block object-contain"
/>
<img :style="logoStyle" src="/logo.png" alt="中科兴皖" class="block object-contain" />
</div>
</template>
@@ -138,7 +138,10 @@
// 自定义上传
if (props.uploadConfig?.isCustomUpload && props.uploadConfig?.server && editorConfig.MENU_CONF) {
editorConfig.MENU_CONF.uploadImage.customUpload = async (file: File, insertFn: InsertFnType) => {
editorConfig.MENU_CONF.uploadImage.customUpload = async (
file: File,
insertFn: InsertFnType
) => {
try {
const formData = new FormData()
formData.append(mergedUploadConfig.value.fieldName, file)
@@ -147,7 +150,7 @@
url: props.uploadConfig?.server,
data: formData,
headers: {
'Content-Type':'multipart/form-data',
'Content-Type': 'multipart/form-data',
Authorization: userStore.accessToken
}
})
@@ -21,7 +21,7 @@
<template #default>
<div class="pt-3">
<div class="flex-c pb-1 px-0">
<el-avatar :size="40" :src="avatarDisplayUrl" style="margin-right: 12px;">
<el-avatar :size="40" :src="avatarDisplayUrl" style="margin-right: 12px">
{{ userInfo.realName?.charAt(0) || userInfo.username?.charAt(0) || '管' }}
</el-avatar>
<div class="w-[calc(100%-60px)] h-full">
@@ -110,57 +110,57 @@
</script>
<style scoped lang="scss">
.user-avatar-wrapper {
cursor: pointer;
margin-right: 5px;
background-color: #fff;
border-radius: 50%;
padding: 2px;
.user-avatar-wrapper {
cursor: pointer;
margin-right: 5px;
background-color: #fff;
border-radius: 50%;
padding: 2px;
&:hover {
opacity: 0.8;
}
}
.btn-item {
display: flex;
align-items: center;
padding: 8px;
margin-bottom: 12px;
border-radius: 6px;
cursor: pointer;
user-select: none;
transition: background-color 0.2s;
span {
font-size: 14px;
&:hover {
opacity: 0.8;
}
}
.art-svg-icon {
margin-right: 8px;
font-size: 16px;
.btn-item {
display: flex;
align-items: center;
padding: 8px;
margin-bottom: 12px;
border-radius: 6px;
cursor: pointer;
user-select: none;
transition: background-color 0.2s;
span {
font-size: 14px;
}
.art-svg-icon {
margin-right: 8px;
font-size: 16px;
}
&:hover {
background-color: var(--art-gray-200);
}
&:last-child {
margin-bottom: 0;
}
}
&:hover {
background-color: var(--art-gray-200);
}
.log-out {
padding: 6px;
margin-top: 20px;
text-align: center;
font-size: 12px;
border: 1px solid var(--art-gray-400);
border-radius: 6px;
transition: all 0.2s;
&:last-child {
margin-bottom: 0;
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
}
}
.log-out {
padding: 6px;
margin-top: 20px;
text-align: center;
font-size: 12px;
border: 1px solid var(--art-gray-400);
border-radius: 6px;
transition: all 0.2s;
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
}
</style>
@@ -60,11 +60,7 @@
</ul>
</ElScrollbar>
<ArtIconButton
class="switch-btn size-10"
icon="sort"
@click="toggleDualMenuMode"
/>
<ArtIconButton class="switch-btn size-10" icon="sort" @click="toggleDualMenuMode" />
</div>
<!-- 左侧菜单 || 双列菜单(右侧) -->
@@ -119,10 +115,7 @@
<!-- 双列菜单右侧折叠按钮 -->
<div class="dual-menu-collapse-btn" v-if="isDualMenu" @click="toggleMenuVisibility">
<ArtSvgIcon
class="text-g-500/70"
:icon="menuOpen ? 'arrow-left' : 'arrow-right'"
/>
<ArtSvgIcon class="text-g-500/70" :icon="menuOpen ? 'arrow-left' : 'arrow-right'" />
</div>
<div
@@ -443,9 +436,21 @@
@use './theme';
.layout-sidebar {
// 展开的宽度
.el-menu:not(.el-menu--collapse) {
// 侧栏容器宽度固定,内部菜单可横向滚动
.menu-left-open {
width: v-bind(menuopenwidth);
flex-shrink: 0;
}
.menu-left-close {
width: v-bind(menuclosewidth);
flex-shrink: 0;
}
// 展开的宽度:侧栏容器固定,菜单内容可随长标题撑开并横向滚动
.el-menu:not(.el-menu--collapse) {
width: max-content;
min-width: v-bind(menuopenwidth);
}
// 折叠后宽度
@@ -99,8 +99,23 @@
position: relative;
box-sizing: border-box;
height: 100vh;
overflow: hidden;
background: var(--mint-surface, #fff);
// 长菜单名完整展示:侧栏宽度不变,内容区可横向滚动
:deep(.el-scrollbar__wrap) {
overflow-x: auto !important;
}
:deep(.el-scrollbar__view) {
width: max-content;
min-width: 100%;
}
:deep(.el-scrollbar__bar.is-horizontal) {
height: 4px;
}
@media only screen and (width <= 640px) {
height: 100dvh;
}
@@ -10,9 +10,10 @@ $popup-menu-padding: 8px;
$popup-menu-margin: 5px;
$popup-menu-radius: 6px;
// 通用菜单项样式
// 通用菜单项样式(min-width 保证短标题仍铺满侧栏;width: max-content 允许长标题撑开以配合横向滚动)
@mixin menu-item-base {
width: calc(100% - 12px);
width: max-content;
min-width: calc(100% - 12px);
margin-left: 6px;
border-radius: 8px;
@@ -143,8 +144,10 @@ $popup-menu-radius: 6px;
height: $menu-height !important;
margin-bottom: 2px;
line-height: $menu-height !important;
overflow: visible !important;
span {
.menu-name {
flex-shrink: 0;
font-size: $menu-font-size !important;
font-weight: 500;
// Fresh Mint:默认菜单项为中性色(demo `.nav a`)
@@ -152,8 +155,7 @@ $popup-menu-radius: 6px;
text-rendering: geometricprecision;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@include ellipsis();
white-space: nowrap;
}
}
@@ -45,7 +45,7 @@
>{{ item.label }}</span
>
<ArtSvgIcon
icon="arrow-right"
icon="arrow-right"
class="ubmenu-arrow ml-auto mr-0 text-base text-g-500 transition-transform duration-150"
/>
</div>
@@ -79,10 +79,7 @@
class="drag-icon mr-2 h-4.5 flex-cc text-g-500"
:class="item.fixed ? 'cursor-default text-g-300' : 'cursor-move'"
>
<ArtSvgIcon
:icon="item.fixed ? 'close' : 'rank'"
class="text-base"
/>
<ArtSvgIcon :icon="item.fixed ? 'close' : 'rank'" class="text-base" />
</div>
<ElCheckbox
:model-value="getColumnVisibility(item)"
@@ -27,7 +27,12 @@
<ElIcon :size="16"><ArrowLeft /></ElIcon>
<span>{{ backText }}</span>
</ElButton>
<ElButton type="primary" size="large" class="exception-page__btn-home" @click="backHome">
<ElButton
type="primary"
size="large"
class="exception-page__btn-home"
@click="backHome"
>
<ElIcon :size="16"><HomeFilled /></ElIcon>
<span>{{ homeText }}</span>
</ElButton>
@@ -7,113 +7,188 @@
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<template v-if="variant === 'forbidden'">
<rect x="48" y="52" width="224" height="156" rx="16" fill="var(--mint-primary-bg)" />
<rect x="48" y="52" width="224" height="156" rx="16" stroke="var(--mint-border)" stroke-width="2" />
<path
d="M160 88c-14.9 0-27 12.1-27 27v12h54v-12c0-14.9-12.1-27-27-27Z"
fill="#fff"
stroke="var(--mint-primary-dark)"
stroke-width="2"
stroke-linejoin="round"
/>
<rect
x="118"
y="127"
width="84"
height="58"
rx="10"
fill="#fff"
stroke="var(--mint-primary-dark)"
stroke-width="2"
/>
<circle cx="160" cy="156" r="10" fill="var(--mint-primary-bg)" stroke="var(--mint-primary)" stroke-width="2" />
<path
d="M160 162v8"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
<path
d="M96 118h128"
stroke="var(--mint-border)"
stroke-width="2"
stroke-linecap="round"
stroke-dasharray="6 6"
/>
<circle cx="248" cy="72" r="22" fill="var(--mint-primary)" opacity="0.15" />
<path
d="M248 64v16M240 72h16"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
</template>
<template v-if="variant === 'forbidden'">
<rect x="48" y="52" width="224" height="156" rx="16" fill="var(--mint-primary-bg)" />
<rect
x="48"
y="52"
width="224"
height="156"
rx="16"
stroke="var(--mint-border)"
stroke-width="2"
/>
<path
d="M160 88c-14.9 0-27 12.1-27 27v12h54v-12c0-14.9-12.1-27-27-27Z"
fill="#fff"
stroke="var(--mint-primary-dark)"
stroke-width="2"
stroke-linejoin="round"
/>
<rect
x="118"
y="127"
width="84"
height="58"
rx="10"
fill="#fff"
stroke="var(--mint-primary-dark)"
stroke-width="2"
/>
<circle
cx="160"
cy="156"
r="10"
fill="var(--mint-primary-bg)"
stroke="var(--mint-primary)"
stroke-width="2"
/>
<path
d="M160 162v8"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
<path
d="M96 118h128"
stroke="var(--mint-border)"
stroke-width="2"
stroke-linecap="round"
stroke-dasharray="6 6"
/>
<circle cx="248" cy="72" r="22" fill="var(--mint-primary)" opacity="0.15" />
<path
d="M248 64v16M240 72h16"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
</template>
<template v-else-if="variant === 'not-found'">
<circle cx="160" cy="120" r="78" fill="var(--mint-primary-bg)" />
<circle cx="160" cy="120" r="78" stroke="var(--mint-border)" stroke-width="2" />
<path
d="M160 62v24M160 154v24M82 120h24M214 120h24"
stroke="var(--mint-primary)"
stroke-width="2"
stroke-linecap="round"
opacity="0.45"
/>
<circle cx="160" cy="120" r="34" fill="#fff" stroke="var(--mint-primary-dark)" stroke-width="2" />
<path
d="M148 120c0-6.6 5.4-12 12-12s12 5.4 12 12-5.4 12-12 12"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
<circle cx="172" cy="108" r="3" fill="var(--mint-primary-dark)" />
<path
d="M72 188c18-10 38-15 88-15s70 5 88 15"
stroke="var(--mint-primary)"
stroke-width="2"
stroke-linecap="round"
opacity="0.35"
/>
<rect x="208" y="48" width="56" height="36" rx="8" fill="#fff" stroke="var(--mint-border)" stroke-width="2" />
<path
d="M220 66h32M220 58h20"
stroke="var(--mint-text-muted)"
stroke-width="2"
stroke-linecap="round"
/>
</template>
<template v-else-if="variant === 'not-found'">
<circle cx="160" cy="120" r="78" fill="var(--mint-primary-bg)" />
<circle cx="160" cy="120" r="78" stroke="var(--mint-border)" stroke-width="2" />
<path
d="M160 62v24M160 154v24M82 120h24M214 120h24"
stroke="var(--mint-primary)"
stroke-width="2"
stroke-linecap="round"
opacity="0.45"
/>
<circle
cx="160"
cy="120"
r="34"
fill="#fff"
stroke="var(--mint-primary-dark)"
stroke-width="2"
/>
<path
d="M148 120c0-6.6 5.4-12 12-12s12 5.4 12 12-5.4 12-12 12"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
/>
<circle cx="172" cy="108" r="3" fill="var(--mint-primary-dark)" />
<path
d="M72 188c18-10 38-15 88-15s70 5 88 15"
stroke="var(--mint-primary)"
stroke-width="2"
stroke-linecap="round"
opacity="0.35"
/>
<rect
x="208"
y="48"
width="56"
height="36"
rx="8"
fill="#fff"
stroke="var(--mint-border)"
stroke-width="2"
/>
<path
d="M220 66h32M220 58h20"
stroke="var(--mint-text-muted)"
stroke-width="2"
stroke-linecap="round"
/>
</template>
<template v-else>
<rect x="56" y="64" width="208" height="128" rx="14" fill="var(--mint-primary-bg)" />
<rect x="56" y="64" width="208" height="128" rx="14" stroke="var(--mint-border)" stroke-width="2" />
<rect x="76" y="84" width="168" height="18" rx="6" fill="#fff" stroke="var(--mint-border)" stroke-width="1.5" />
<rect x="76" y="112" width="120" height="12" rx="4" fill="#fff" stroke="var(--mint-border)" stroke-width="1.5" />
<rect x="76" y="132" width="148" height="12" rx="4" fill="#fff" stroke="var(--mint-border)" stroke-width="1.5" />
<rect x="76" y="152" width="96" height="12" rx="4" fill="#fff" stroke="var(--mint-border)" stroke-width="1.5" />
<circle cx="228" cy="92" r="5" fill="var(--mint-primary)" />
<circle cx="244" cy="92" r="5" fill="#fbbf24" />
<circle cx="260" cy="92" r="5" fill="#f87171" />
<path
d="M248 176l18-30 18 30"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M266 176v14H230v-14"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M160 44l8 14h16l-13 10 5 14-16-11-16 11 5-14-13-10h16l8-14Z"
fill="var(--mint-primary)"
opacity="0.85"
/>
</template>
<template v-else>
<rect x="56" y="64" width="208" height="128" rx="14" fill="var(--mint-primary-bg)" />
<rect
x="56"
y="64"
width="208"
height="128"
rx="14"
stroke="var(--mint-border)"
stroke-width="2"
/>
<rect
x="76"
y="84"
width="168"
height="18"
rx="6"
fill="#fff"
stroke="var(--mint-border)"
stroke-width="1.5"
/>
<rect
x="76"
y="112"
width="120"
height="12"
rx="4"
fill="#fff"
stroke="var(--mint-border)"
stroke-width="1.5"
/>
<rect
x="76"
y="132"
width="148"
height="12"
rx="4"
fill="#fff"
stroke="var(--mint-border)"
stroke-width="1.5"
/>
<rect
x="76"
y="152"
width="96"
height="12"
rx="4"
fill="#fff"
stroke="var(--mint-border)"
stroke-width="1.5"
/>
<circle cx="228" cy="92" r="5" fill="var(--mint-primary)" />
<circle cx="244" cy="92" r="5" fill="#fbbf24" />
<circle cx="260" cy="92" r="5" fill="#f87171" />
<path
d="M248 176l18-30 18 30"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M266 176v14H230v-14"
stroke="var(--mint-primary-dark)"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M160 44l8 14h16l-13 10 5 14-16-11-16 11 5-14-13-10h16l8-14Z"
fill="var(--mint-primary)"
opacity="0.85"
/>
</template>
</svg>
</template>
@@ -25,10 +25,7 @@
</div>
</div>
<div class="btn palette-btn relative z-[2] h-8 w-8 c-p flex-cc tad-300">
<ArtSvgIcon
icon="brush"
class="text-xl text-g-800 transition-colors duration-300"
/>
<ArtSvgIcon icon="brush" class="text-xl text-g-800 transition-colors duration-300" />
</div>
</div>
<ElDropdown
@@ -62,7 +59,7 @@
@click="themeAnimation"
>
<ArtSvgIcon
:icon="isDark ? 'sunny' : 'moon'"
:icon="isDark ? 'sunny' : 'moon'"
class="text-xl text-g-800 transition-colors duration-300"
/>
</div>