- RBAC 平台管理:用户/角色/权限/菜单四页面(Vben VxeGrid+Modal) - 后端动态菜单(backend模式):菜单由 /menu/all 驱动,子路由相对path - 双token刷新:enableRefreshToken,access过期自动续期 - 头像代理:/api/files/preview 避免S3 https问题 - 权限管理树形展示(按Group分组) - vxe-table适配器补齐(CellTag/CellSwitch/CellOperation/VbenTableAction) - 新增:AI对话/知识库/IM聊天/工作流 模块API与页面 - 移除旧静态路由模块(改后端菜单驱动)
145 lines
3.8 KiB
HTML
145 lines
3.8 KiB
HTML
<style data-app-loading="inject-css">
|
|
html {
|
|
line-height: 1.15;
|
|
}
|
|
|
|
.loading {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
z-index: 9999;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: #f7fbff;
|
|
}
|
|
|
|
.loading.hidden {
|
|
visibility: hidden;
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
transition: all 0.8s ease-out;
|
|
}
|
|
|
|
.dark .loading {
|
|
background: #061f4d;
|
|
}
|
|
|
|
.logo {
|
|
width: 70px;
|
|
height: 70px;
|
|
filter: drop-shadow(0 16px 22px rgb(22 119 255 / 22%));
|
|
}
|
|
|
|
.logo-line {
|
|
stroke-dasharray: 58;
|
|
animation: buildflow-loading-line 2.5s ease-in-out infinite;
|
|
}
|
|
|
|
.logo-dot {
|
|
animation: buildflow-loading-dot 2.5s ease-in-out infinite;
|
|
}
|
|
|
|
.logo-node {
|
|
transform-box: fill-box;
|
|
transform-origin: center;
|
|
animation: buildflow-loading-node 2.5s ease-in-out infinite;
|
|
}
|
|
|
|
.logo-node--middle {
|
|
animation-delay: 0.18s;
|
|
}
|
|
|
|
.logo-node--finish {
|
|
animation-delay: 0.36s;
|
|
}
|
|
|
|
.title {
|
|
margin-top: 20px;
|
|
font-size: 22px;
|
|
font-weight: 650;
|
|
color: #0a5bff;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.dark .title {
|
|
color: #ffffff;
|
|
}
|
|
|
|
@keyframes buildflow-loading-line {
|
|
0% {
|
|
stroke-dashoffset: 58;
|
|
opacity: 0.28;
|
|
}
|
|
42%,
|
|
76% {
|
|
stroke-dashoffset: 0;
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
stroke-dashoffset: -58;
|
|
opacity: 0.28;
|
|
}
|
|
}
|
|
|
|
@keyframes buildflow-loading-dot {
|
|
0%,
|
|
100% {
|
|
opacity: 0.25;
|
|
}
|
|
48%,
|
|
76% {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes buildflow-loading-node {
|
|
0%,
|
|
100% {
|
|
transform: scale(0.96);
|
|
}
|
|
48%,
|
|
76% {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
</style>
|
|
<div class="loading" id="__app-loading__">
|
|
<svg id="buildflow-flow-mark" class="logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none" role="img" aria-label="BuildFlow">
|
|
<defs>
|
|
<linearGradient id="buildflow-loading-bg" x1="10" y1="5" x2="54" y2="59" gradientUnits="userSpaceOnUse">
|
|
<stop stop-color="#4AA3FF" />
|
|
<stop offset="0.55" stop-color="#1677FF" />
|
|
<stop offset="1" stop-color="#0A5BFF" />
|
|
</linearGradient>
|
|
<path id="buildflow-loading-motion-path" d="M16 40C21 29 27 24 32 24C37 24 43 29 48 40" />
|
|
</defs>
|
|
<rect x="6" y="6" width="52" height="52" rx="16" fill="url(#buildflow-loading-bg)" />
|
|
<path d="M16 40C21 29 27 24 32 24C37 24 43 29 48 40" fill="none" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.18" />
|
|
<use href="#buildflow-loading-motion-path" class="logo-line" fill="none" stroke="#FFFFFF" stroke-width="3.4" stroke-linecap="round" />
|
|
<circle class="logo-dot" r="2.8" fill="#FFFFFF">
|
|
<animateMotion dur="2.5s" repeatCount="indefinite" keyTimes="0;0.72;1" keyPoints="0;1;1" calcMode="linear">
|
|
<mpath href="#buildflow-loading-motion-path" />
|
|
</animateMotion>
|
|
</circle>
|
|
<g id="buildflow-node-start" class="logo-node">
|
|
<rect x="10" y="34" width="12" height="12" rx="4" fill="#FFFFFF" />
|
|
<path d="M13.5 38H18.5" stroke="#1677FF" stroke-width="1.8" stroke-linecap="round" />
|
|
<path d="M13.5 42H17.5" stroke="#1677FF" stroke-width="1.8" stroke-linecap="round" opacity="0.68" />
|
|
</g>
|
|
<g id="buildflow-node-middle" class="logo-node logo-node--middle">
|
|
<rect x="26" y="18" width="12" height="12" rx="6" fill="#FFFFFF" />
|
|
<path d="M33 20L28.6 25.2H31.7L30.6 30L35.7 23.8H32.5L33 20Z" fill="#1677FF" />
|
|
</g>
|
|
<g id="buildflow-node-finish" class="logo-node logo-node--finish">
|
|
<rect x="42" y="34" width="12" height="12" rx="6" fill="#FFFFFF" />
|
|
<path d="M45.1 40L47.3 42.1L51 37.5" fill="none" stroke="#1677FF" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" />
|
|
</g>
|
|
</svg>
|
|
<div class="title">%VITE_APP_TITLE%</div>
|
|
</div>
|