提交
This commit is contained in:
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>
|
||||
|
||||
Reference in new issue
Block a user