# techhero-guangxi-web-ui
**Repository Path**: defaultjs2105/techhero-guangxi-web-ui
## Basic Information
- **Project Name**: techhero-guangxi-web-ui
- **Description**: 网页端
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-01
- **Last Updated**: 2026-07-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# techhero-guangxi-web-ui
广西招生考试院公众服务平台 — Web前端项目(桌面端)
---
## 项目简介
本项目是基于 Vue 3 + Vite + Element Plus 构建的 Web 前端项目,面向 PC 浏览器用户提供高考志愿填报信息服务。与现有的 uni-app 移动端(`techhero-uni` / `techhero-guangxi-uniapp-ui`)共用同一套后端 API(`techhero-guangxi-server`),在桌面大屏场景下展示更完整的数据、更高效的交互。
**定位差异**:
| 维度 | 移动端 (uni-app) | Web端 (本项目) |
|------|-----------------|---------------|
| 运行环境 | 微信小程序 / H5 / App | PC浏览器 (Chrome/Edge) |
| 屏幕尺寸 | 375-414px 宽 | 1366-1920px 宽 |
| 数据展示 | 卡片列表,字段截断 | 完整表格,多列并排 |
| 筛选方式 | 底部弹出 (bottom-sheet) | 左侧固定面板 |
| 权限控制 | 页面跳转拦截 | 按钮级权限 + 路由守卫 |
---
## 程序结构对比
### 三项目架构对照表
| 层级 | techhero-uni (原始) | techhero-guangxi-uniapp-ui (优化) | techhero-guangxi-web-ui (本项目) |
|------|-------------------|----------------------------------|-------------------------------|
| 框架 | uni-app (Vue 3) | uni-app (Vue 3) | Vue 3 + Vite |
| 状态管理 | 无集中管理 (Storage + globalData) | Pinia 4 stores | Pinia 4 stores |
| HTTP | uni.request 封装 | uni.request 封装 (模块化拆分) | Axios 封装 (HMAC-SHA256签名) |
| 路由 | pages.json (40+页面) | pages.json + subPackages | Vue Router 4 (hash模式) |
| UI组件 | uni-ui 组件库 | uni-ui 组件库 | Element Plus |
| 图表 | uCharts (qiun-data-charts) | uCharts | ECharts 5 |
| 样式单位 | rpx 混用 | 统一 rpx | px/rem/vw |
| 条件编译 | #ifdef MP-WEIXIN / H5 | 多平台 #ifdef | 无 (统一H5) |
| 代码组织 | 平铺 pages/ + 混入 mixin | 分包 subPackages + composables | 模块化 views/ + composables |
| 构建 | Webpack 5 + Vite 7 | Webpack 5 + Vite 7 | Vite 7 |
| 反爬 | 代码混淆 (H5) | 代码混淆 (H5) | JS混淆 + 运行时防护 + 密钥分段 |
### 目录结构对照
```
techhero-uni/ techhero-guangxi-uniapp-ui/ techhero-guangxi-web-ui/
├── api/ 17个模块 ├── api/ 17个模块 ├── api/modules/ 17个模块
├── utils/request/ 627行单体 ├── utils/request/ 4模块拆分 ├── api/index.js axios封装
├── pages/ 40+页面 ├── pages/ 40+页面(分包) ├── views/ 30+页面
├── components/ 全局组件 ├── components/ 共享组件 ├── components/ 布局+通用
├── mixins/ dictMixin ├── composables/ 4个hooks ├── composables/ 4个hooks
├── (无状态管理) ├── stores/ 5个Pinia ├── stores/ 4个Pinia
└── (无router) └── pages.json 路由配置 └── router/ Vue Router
```
---
## 修订说明
| 日期 | 版本 | 修订内容 |
|------|------|---------|
| 2026-07-01 | v1.0.0 | 初始版本:基于 `techhero-guangxi-uniapp-ui` API模块和Pinia stores,创建Web端Vue 3项目 |
| - | - | 完整迁移17个API模块(axios适配),4个Pinia stores(localStorage适配) |
| - | - | 实现30+页面视图(核心13 + 辅助10 + 通用8) |
| - | - | 集成Element Plus组件库,ECharts图表 |
| - | - | 实现HMAC-SHA256请求签名,Bearer Token认证 |
| - | - | 桌面优先响应式布局(≥1200px / 768-1199px / <768px) |
| - | - | 反爬取机制:JS混淆 + 运行时防护 + 密钥分段 |
| - | - | 用户角色权限:普通用户(收藏)+ 考生用户(收藏+成绩+录取) |
---
## 技术栈
| 层级 | 技术 | 版本 |
|------|------|------|
| 框架 | Vue 3 (Composition API) | ^3.5.0 |
| 构建 | Vite | ^7.1.0 |
| 路由 | Vue Router | ^4.4.0 |
| 状态管理 | Pinia | ^2.1.7 |
| HTTP客户端 | Axios | ^1.7.0 |
| UI组件库 | Element Plus | ^2.8.0 |
| 图表 | ECharts | ^5.5.0 |
| 加密 | crypto-js | ^4.2.0 |
| 样式 | SCSS | - |
| 混淆 | javascript-obfuscator | ^4.1.1 |
---
## 快速开始
### 环境要求
- Node.js 18+
- npm 9+
### 安装
```bash
cd techhero-guangxi-web-ui
npm install
```
### 开发
```bash
npm run dev # 启动开发服务器 (http://localhost:3000)
```
### 构建
```bash
npm run build # 生产构建 (输出到 dist/)
npm run preview # 预览构建产物
```
### 验证
```bash
npm run verify # 运行代码质量验证
```
---
## 项目结构
```
techhero-guangxi-web-ui/
├── .gitignore # Git过滤策略
├── package.json # 项目配置与依赖
├── vite.config.js # Vite构建配置
├── index.html # SPA入口
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
│
├── build/
│ └── obfuscator.config.js # JS混淆配置
│
├── scripts/
│ └── verify.mjs # 代码质量验证
│
├── src/
│ ├── main.js # Vue应用入口
│ ├── App.vue # 根组件 (Header+Content+Footer)
│ │
│ ├── api/ # API层(17个模块,100%复用后端接口)
│ │ ├── index.js # Axios封装 (签名/加密/重试/反爬)
│ │ └── modules/ # API模块
│ │
│ ├── stores/ # Pinia状态管理(4个store)
│ ├── composables/ # 组合式API(4个hook)
│ ├── router/ # Vue Router (路由+守卫+权限)
│ ├── components/ # 共享组件(布局+通用+图表)
│ ├── views/ # 页面视图(30+页面)
│ ├── utils/ # 工具函数(加密/签名/存储/验证/反爬)
│ ├── styles/ # 全局样式(变量/混入/重置/公共)
│ └── assets/ # 静态资源
│
└── public/ # 公共资源
```
---
## 反爬取机制
| 层级 | 措施 | 说明 |
|------|------|------|
| 构建时 | JS混淆 (controlFlowFlattening + RC4 + deadCode) | javascript-obfuscator |
| 构建时 | 域名锁 (ksfw.gxeea.cn) | 仅允许指定域名运行 |
| 运行时 | 禁用右键菜单 | document.oncontextmenu |
| 运行时 | 禁用F12/Ctrl+Shift+I/Ctrl+U | 键盘事件拦截 |
| 运行时 | DevTools打开检测 | 窗口尺寸差异检测 |
| 运行时 | console输出禁用 | console.log重写为空函数 |
| 网络层 | HMAC-SHA256签名 | 每请求签名校验 |
| 网络层 | 密钥分段存储 | 密钥分散在env/localStorage/代码中 |
| 网络层 | 时间戳防重放 | X-Ca-Timestamp + 服务器时间校正 |
| 后端 | 签名校验 + 限流(478) + Token认证 | 由techhero-guangxi-server提供 |
---
## Git提交状态
```
仓库: techhero-guangxi-web-ui
分支: master
初始提交: (待首次提交)
```
项目从空仓库初始化,所有文件为新增。
---
## 验证说明
### 编译验证
```bash
npm install && npm run build # 确认编译无error/warning
```
### API一致性
- API模块URL路径与 `techhero-guangxi-uniapp-ui/api/` 保持一致
- 请求签名算法与后端网关校验兼容
### 路由覆盖率
- Vue Router路由覆盖 `pages.json` 所有页面
- 路由守卫实现登录校验 + 角色权限
### Store一致性
- Pinia store state/getters/actions 与 uniapp-ui 保持一致
### 功能等价性
- 同一API调用 → 请求参数结构相同
- 同一操作流程 → 状态变更序列相同
- 同一数据 → UI展示字段更完整(桌面端优势)