feat: add template edit shell layout

This commit is contained in:
zwt13703
2026-07-01 20:34:24 +08:00
parent 217af9bc99
commit b4e128c227
9 changed files with 579 additions and 6 deletions
@@ -0,0 +1,116 @@
<script setup lang="ts">
import {
AppstoreOutlined,
DatabaseOutlined,
FileTextOutlined,
SettingOutlined,
} from "@ant-design/icons-vue";
</script>
<template>
<aside class="left-menu">
<div class="brand">
<div class="brand-mark">AI</div>
<span>AI 文档模板系统</span>
</div>
<nav class="menu-list">
<div class="menu-group-title">模板管理</div>
<button class="menu-item active" type="button">
<FileTextOutlined />
模板标注
</button>
<button class="menu-item" type="button">
<AppstoreOutlined />
模板中心
</button>
<div class="menu-group-title">资料与配置</div>
<button class="menu-item" type="button">
<DatabaseOutlined />
数据源
</button>
<button class="menu-item" type="button">
<SettingOutlined />
系统配置
</button>
</nav>
</aside>
</template>
<style scoped>
.left-menu {
min-width: 0;
border-right: 1px solid var(--c-border);
background: var(--c-surface);
}
.brand {
display: flex;
align-items: center;
gap: 8px;
height: 52px;
padding: 0 16px;
border-bottom: 1px solid var(--c-border);
font-weight: 600;
}
.brand-mark {
display: grid;
width: 26px;
height: 26px;
place-items: center;
border-radius: 5px;
color: #fff;
background: var(--c-primary);
font-size: 13px;
font-weight: 700;
}
.menu-list {
padding: 8px 0;
}
.menu-group-title {
padding: 8px 16px 4px;
color: var(--c-text-muted);
font-size: 11px;
font-weight: 500;
}
.menu-item {
position: relative;
display: flex;
align-items: center;
width: 100%;
gap: 8px;
padding: 8px 16px;
border: 0;
color: var(--c-text-secondary);
background: transparent;
cursor: pointer;
text-align: left;
}
.menu-item:hover {
color: var(--c-text);
background: var(--c-surface-soft);
}
.menu-item.active {
color: var(--c-primary);
background: var(--c-primary-soft);
font-weight: 500;
}
.menu-item.active::before {
position: absolute;
top: 4px;
bottom: 4px;
left: 0;
width: 3px;
border-radius: 0 2px 2px 0;
background: var(--c-primary);
content: "";
}
</style>