编译修正

This commit is contained in:
2026-01-02 15:50:20 +08:00
parent 97724c8c8d
commit 5d54ac1cd4
15 changed files with 456 additions and 27 deletions

View File

@@ -0,0 +1,21 @@
<template>
<router-view />
</template>
<script setup lang="ts">
// Bidding App 根组件
</script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body, #app {
width: 100%;
height: 100%;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
</style>

View File

@@ -0,0 +1,191 @@
// ==================== 品牌色变量 ====================
$brand-color: #0055AA;
$brand-color-light: #EBF5FF;
$brand-color-hover: #004488;
.sidebar-layout {
display: flex;
width: 100%;
height: 100vh;
overflow: hidden;
background: #fff;
font-family: 'Inter', 'Noto Sans SC', sans-serif;
}
// ==================== 侧边栏 ====================
.sidebar {
width: 256px;
height: 100%;
background: #fff;
display: flex;
flex-direction: column;
color: #333;
flex-shrink: 0;
transition: width 0.3s ease;
border-right: 1px solid #f1f5f9;
z-index: 50;
&.collapsed {
width: 80px;
overflow: visible;
.sidebar-header {
padding: 16px 0;
justify-content: center;
}
.nav-item {
justify-content: center;
padding: 12px;
border-radius: 8px;
margin: 0 12px;
span {
display: none;
}
}
.user-section {
justify-content: center;
padding: 16px;
.user-name {
display: none;
}
}
}
}
.sidebar-header {
height: 64px;
padding: 0 16px;
margin-bottom: 8px;
display: flex;
align-items: center;
justify-content: space-between;
user-select: none;
}
.collapse-btn {
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
cursor: pointer;
color: #94a3b8;
background: transparent;
border: none;
transition: all 0.2s;
flex-shrink: 0;
&:hover {
background: #f1f5f9;
color: #64748b;
}
}
.logo {
display: flex;
align-items: center;
gap: 8px;
.logo-img {
height: 32px;
width: auto;
border-radius: 8px;
object-fit: contain;
}
.logo-text {
font-size: 16px;
font-weight: 600;
color: #1e293b;
letter-spacing: -0.02em;
}
}
// 导航菜单
.nav-menu {
flex: 1;
padding: 8px 12px;
}
.nav-section {
padding: 0;
}
.nav-item {
position: relative;
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
margin-bottom: 2px;
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
color: #64748b;
font-size: 14px;
font-weight: 500;
&:hover {
background: $brand-color-light;
color: $brand-color;
}
&.active {
background: $brand-color;
color: #fff;
box-shadow: 0 4px 12px rgba($brand-color, 0.25);
}
span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
// 用户信息
.user-section {
padding: 16px;
border-top: 1px solid #f1f5f9;
background: #f8fafc;
cursor: pointer;
transition: background 0.2s;
&:hover {
background: #f1f5f9;
}
.user-info-wrapper {
display: flex;
align-items: center;
gap: 12px;
}
.user-avatar {
position: relative;
flex-shrink: 0;
}
.user-name {
font-size: 14px;
font-weight: 500;
color: #374151;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
// ==================== 主内容区 ====================
.main-content {
flex: 1;
height: 100%;
overflow: hidden;
background: #f8fafc;
position: relative;
}

View File

@@ -1 +0,0 @@
export { default as SidebarLayout } from './SidebarLayout.vue'

View File

@@ -1,3 +1,2 @@
export { default as SidebarLayout } from './SidebarLayout/SidebarLayout.vue'
// BlankLayoutSubSidebarLayout 从 shared 导入
export { BlankLayout, SubSidebarLayout } from 'shared/layouts'
export { BlankLayout, SubSidebarLayout } from 'shared/layouts';

View File

@@ -0,0 +1,79 @@
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
import router from './router/'
import { AES_SECRET_KEY } from './config'
// 导入需要的 Lucide 图标
import {
LayoutGrid,
FileText,
Users,
User,
Settings,
Home,
ChevronDown,
ChevronRight,
ChevronLeft,
PanelLeftClose,
PanelLeftOpen,
RefreshCw,
LogOut,
Plus,
Trash2,
Search,
Menu
} from 'lucide-vue-next'
// Lucide 图标映射
const lucideIcons = {
LayoutGrid,
FileText,
Users,
User,
Settings,
Home,
ChevronDown,
ChevronRight,
ChevronLeft,
PanelLeftClose,
PanelLeftOpen,
RefreshCw,
LogOut,
Plus,
Trash2,
Search,
Menu
}
// 异步初始化应用
async function initApp() {
// 创建 Vue 应用
const app = createApp(App)
// 注册 Pinia
const pinia = createPinia()
app.use(pinia)
// 注册 Element Plus
app.use(ElementPlus)
// 注册 Lucide 图标
for (const [name, component] of Object.entries(lucideIcons)) {
app.component(name, component)
}
// 注册路由
app.use(router)
// 挂载应用
app.mount('#app')
console.log('✅ Bidding 应用启动成功')
}
// 启动应用
initApp()