svc-code/web/
├── index.html # Vite入口文件(替换原有)
├── package.json # 依赖配置
├── vite.config.ts # Vite配置
├── tsconfig.json # TypeScript配置
├── src/
│ ├── App.vue # 主应用(含顶部工具栏)
│ ├── main.ts # 应用入口
│ ├── views/ # 页面视图
│ │ ├── init/ # 初始化页面(完整实现)
│ │ ├── replenish/ # 补货(占位)
│ │ ├── transfer/ # 调货(占位)
│ │ ├── allocation/ # 配货(占位)
│ │ ├── distribution/ # 分货(占位)
│ │ └── report/ # 报表(占位)
│ ├── components/ # 组件
│ ├── router/ # 路由配置
│ ├── api/ # API接口(静态数据)
│ ├── styles/ # 全局样式
│ └── utils/ # 工具函数
├── public/ # 静态资源
└── dist/ # 构建输出(用于Go嵌入)
布局结构:
┌─────────────────────────────────────────────┐
│ 顶部工具栏(App.vue) │
├───────────────┬─────────────────────────────┤
│ 左侧树 │ 右侧(Splitpanes垂直分割) │
│ ├─────────────────────────────┤
│ 可拖动分割线 │ 上部:Tabs区域 │
│ │ • 日志(文本显示) │
│ │ • Agent(Markdown编辑器) │
│ │ • Skills(Markdown编辑器) │
│ │ • Data(SQL/Markdown高亮) │
│ ├─────────────────────────────┤
│ │ 下部:可拖拽高度的多行输入框 │
│ │ • 支持换行 │
│ │ • 可拖拽调整高度 │
└───────────────┴─────────────────────────────┘
组件细节:
api/init.ts 包含树数据、日志、配置等接口# 进入web目录
cd svc-code/web
# 安装依赖(可能需要多次尝试,网络问题)
npm install
# 启动开发服务器
npm run dev
开发服务器运行在 http://localhost:3000,API请求代理到 http://localhost:8787
# 构建前端
npm run build
# 构建产物输出到 web/dist 目录
构建完成后,可以使用以下方式提供前端服务:
cd web && npm run buildembed_frontend.go 到 main.go:
```go
// 导入embed包(如果还没有)
// import “embed”
// 替换现有的静态文件服务(大约第89-90行) // 原来的: // fs := http.FileServer(http.Dir(“web”)) // webServcie.GetRouter().Handle(“/”, fs)
// 修改为: // frontendHandler := ServeFrontend() // webServcie.GetRouter().Handle(“/”, frontendHandler)
3. 重新编译Go程序
### 方式2:使用文件系统
```go
// 修改main.go中的静态文件服务
fs := http.FileServer(http.Dir("web/dist"))
webServcie.GetRouter().Handle("/", fs)
src/views/init/ - 初始化页面(完整实现)src/views/replenish/ - 补货页面(占位)src/views/transfer/ - 调货页面(占位)src/views/allocation/ - 配货页面(占位)src/views/distribution/ - 分货页面(占位)src/views/report/ - 报表页面(占位)src/components/VMarkdownEditor.vue - Markdown编辑器组件src/components/VMarkdownPreview.vue - Markdown预览组件src/api/index.ts - axios配置和拦截器src/api/init.ts - 初始化相关API(静态数据)所有展示数据均为前端模拟,API调用代码已注释。例如:
// api/init.ts
export const getTreeData = async (): Promise<TreeNode[]> => {
// TODO: 调用后端API
// const response = await request.get('/api/init/tree')
// return response.data
// 静态数据
return [
{ id: '1', label: '数据库', icon: 'DataBoard', children: [...] }
]
}
添加新页面:
src/views/ 下创建目录src/router/index.ts 中添加路由src/App.vue 的菜单中添加对应项连接后端API:
src/api/ 下创建对应模块样式自定义:
src/styles/index.scss<style scoped>依赖安装:如果 npm install 失败,可以尝试:
npm cache clean --force
npm install --registry=https://registry.npmjs.org
Markdown编辑器:当前使用了基础版本,如需完整功能需安装插件:
npm install @kangc/v-md-editor@2.3.17
Go嵌入:确保 web/dist 目录存在且包含构建产物
API代理:开发时Vite将 /api 请求代理到 http://localhost:8787
已创建的主要文件:
package.json, vite.config.ts, tsconfig.jsonindex.html, main.ts, App.vueviews/init/Index.vue 等6个页面components/VMarkdownEditor.vue, components/VMarkdownPreview.vueapi/index.ts, api/init.tsstyles/index.scssrouter/index.ts../embed_frontend.go