# ZYUAS Neo - 企业官网重构项目
> 使用 Vue 3 + TypeScript + Element Plus + Vite + SCSS 构建的企业官方网站
**版本:** v1.1.0
**构建状态:** ✅ 成功
**类型检查:** ✅ 通过
**最后更新:** 2026-02-26
---
## 📋 目录
1. [项目简介](#-项目简介)
2. [技术栈](#-技术栈)
3. [快速开始](#-快速开始)
4. [项目结构](#-项目结构)
5. [已完成功能](#-已完成功能)
6. [TypeScript 类型系统](#-typescript-类型系统)
7. [设计系统](#-设计系统)
8. [SCSS 样式系统](#-scss-样式系统)
9. [响应式布局](#-响应式布局)
10. [图标使用指南](#-图标使用指南)
11. [开发规范](#-开发规范)
12. [构建与部署](#-构建与部署)
13. [常见问题](#-常见问题)
---
## 📦 项目简介
使用 **Vue 3 + TypeScript + Element Plus + Vite + SCSS** 构建的企业官方网站,替代原有的 Vue 2 + Bootstrap 版本。
### 技术升级对比
| 组件 | 原版本 | 新版本 | 改进 |
|------|--------|--------|------|
| 框架 | Vue 2.7.16 | Vue 3.5.25 | Composition API + TypeScript |
| 构建工具 | Webpack 4 | Vite 7 | 10x 更快构建 |
| UI 框架 | Bootstrap 3 | Element Plus 2.13 | 现代化组件库 |
| 路由 | Vue Router 3 | Vue Router 4 | 完整 TS 支持 |
| 状态管理 | Vuex 3 | Pinia 3 | 更简洁的 API |
| 轮播 | Swiper 4 | Swiper 12 | 最新特性 |
| 样式 | CSS | SCSS | 变量 + 混入系统 |
| 类型系统 | - | TypeScript 5.9 | 编译时类型检查 |
---
## 🛠️ 技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 3.5.25 | Composition API + `
```
### 可用命令
| 命令 | 说明 |
|------|------|
| `npm run type-check` | 仅类型检查 |
| `npm run build` | 生产构建(含类型检查) |
| `npm run build:skip-typecheck` | 跳过类型检查构建 |
---
## 🎨 设计系统
### 主题色
```scss
$primary-color: #1e73be; // 主色(蓝色)
$primary-light: #3b82f6; // 亮蓝
$primary-dark: #185a9d; // 深蓝
$primary-gradient: linear-gradient(135deg, #1e73be, #3b82f6);
```
### 中性色
```scss
$text-primary: #1a1a1a; // 主文本
$text-regular: #555555; // 常规文本
$text-tertiary: #666666; // 次要文本
$text-muted: #999999; // 弱化文本
```
### 间距系统
```scss
$spacer-1: 10px;
$spacer-2: 20px;
$spacer-3: 30px;
$spacer-4: 40px;
$spacer-5: 50px;
$spacer-6: 60px;
```
### 圆角与阴影
```scss
// 圆角
$radius-sm: 8px;
$radius-md: 12px;
$radius-lg: 16px;
$radius-xl: 20px;
// 阴影
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
$shadow-md: 0 8px 32px rgba(0, 0, 0, 0.12);
$shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.15);
```
---
## 📐 SCSS 样式系统
### 变量文件 (`variables.scss`)
```scss
// 主题色
$primary-color: #1e73be;
$primary-light: #3b82f6;
// 中性色
$text-primary: #1a1a1a;
$text-regular: #555555;
// 间距
$spacer-1: 10px;
$spacer-2: 20px;
// 断点
$breakpoint-sm: 576px;
$breakpoint-md: 768px;
$breakpoint-lg: 992px;
$breakpoint-xl: 1200px;
```
### 混入文件 (`mixins.scss`)
```scss
// 响应式
@mixin mobile { @media (max-width: 767px) { @content; } }
@mixin tablet { @media (min-width: 768px) and (max-width: 991px) { @content; } }
@mixin desktop { @media (min-width: 992px) { @content; } }
// Flexbox
@mixin flex-center { display: flex; align-items: center; justify-content: center; }
@mixin flex-between { display: flex; align-items: center; justify-content: space-between; }
// 玻璃拟态
@mixin glass-morphism {
background: rgba(255, 255, 255, 0.8);
border: 1px solid rgba(255, 255, 255, 0.5);
backdrop-filter: blur(10px);
}
```
### 在 Vue 文件中使用
```vue
```
---
## 📱 响应式布局
### 容器边距系统
| 断点 | 屏幕宽度 | 容器边距 | 说明 |
|------|----------|----------|------|
| 桌面端 | > 1200px | 20px | 标准边距 |
| 平板端 | 768px - 1200px | 30px | 增加边距 |
| 移动端 | < 768px | 20px | 标准边距 |
### 响应式字体
| 元素 | 桌面端 | 平板端 | 移动端 |
|------|--------|--------|--------|
| 根字体 | 16px | 16px | 14px |
| 章节标题 | 36px | 28px | 24px |
| 大标题 | 42px | 32px | 28px |
### 断点混入
```scss
// 移动端 (< 768px)
@include mobile {
.element {
// 移动端样式
}
}
// 平板端 (768px - 991px)
@include tablet {
.element {
// 平板端样式
}
}
// 桌面端 (>= 992px)
@include desktop {
.element {
// 桌面端样式
}
}
```
---
## 🔣 图标使用指南
### 已用图标清单
#### 导航组件
| 图标 | 用途 |
|------|------|
| `ArrowDown`, `ArrowRight` | 下拉菜单、按钮 |
| `Menu`, `Close` | 移动端导航 |
| `ArrowUp` | 回到顶部 |
#### 首页
| 图标 | 用途 |
|------|------|
| `ArrowLeft`, `ArrowRight` | 轮播图导航 |
| `Connection` | 解决方案链接 |
| `Star`, `Monitor`, `Picture`, `DataAnalysis` | 技术优势 |
| `Service`, `Timer`, `Medal` | 服务优势 |
### 图标使用方式
```vue
```
### 类型声明
所有 Element Plus 图标已在 `src/types/vite-env.d.ts` 中声明:
```typescript
declare module '@element-plus/icons-vue' {
export const ArrowDown: any
export const ArrowRight: any
export const CircleCheckFilled: any
// ... 更多图标
}
```
---
## 📝 开发规范
### 组件命名
- 使用 PascalCase(大驼峰)
- 页面组件首字母大写
- 公共组件首字母大写
### TypeScript 代码风格
- 使用 `