auto_score/AES-front
zlm133588 a9837d2128 一些小改动 2025-05-01 19:37:35 +08:00
..
.idea 完成单选按钮的切换,还剩作业批阅界面没写 2025-03-05 22:46:45 +08:00
.vscode 框架 2024-12-29 20:44:44 +08:00
build 框架 2024-12-29 20:44:44 +08:00
docs 框架 2024-12-29 20:44:44 +08:00
mock 框架 2024-12-29 20:44:44 +08:00
public 框架 2024-12-29 20:44:44 +08:00
settings 框架 2024-12-29 20:44:44 +08:00
src 一些小改动 2025-05-01 19:37:35 +08:00
.cz-config.js 框架 2024-12-29 20:44:44 +08:00
.editorconfig 框架 2024-12-29 20:44:44 +08:00
.env 一些小改动 2025-05-01 19:37:35 +08:00
.env.development 框架 2024-12-29 20:44:44 +08:00
.env.production 框架 2024-12-29 20:44:44 +08:00
.env.test 框架 2024-12-29 20:44:44 +08:00
.eslint-global-variables.json 框架 2024-12-29 20:44:44 +08:00
.eslintignore 框架 2024-12-29 20:44:44 +08:00
.gitignore 框架 2024-12-29 20:44:44 +08:00
.prettierignore 框架 2024-12-29 20:44:44 +08:00
.prettierrc.json 框架 2024-12-29 20:44:44 +08:00
README.md 改了一下下载路径 2025-04-14 10:54:37 +08:00
commitlint.config.js 框架 2024-12-29 20:44:44 +08:00
index.html 框架 2024-12-29 20:44:44 +08:00
jsconfig.json 框架 2024-12-29 20:44:44 +08:00
package-lock.json 完成下载附件,完成统计的页面和接口 2025-04-08 22:53:31 +08:00
package.json 完成下载附件,完成统计的页面和接口 2025-04-08 22:53:31 +08:00
pnpm-lock.yaml 一些小改动 2025-05-01 19:37:35 +08:00
unocss.config.js 框架 2024-12-29 20:44:44 +08:00
vercel.json 框架 2024-12-29 20:44:44 +08:00
vite.config.js 完成部分教师端前端代码,作业模块还没完成 2025-03-01 20:40:30 +08:00

README.md

OJ 2.0 前端重构指南

OJ 2.0 项目前端基于 Vue3

开始

Node 安装 18 及以上

(推荐使用包管理工具 pnpm: https://pnpm.io/zh/installation)

  1. 安装 pnpm

    npm i -g pnpm
    
  2. 安装项目依赖

    pnpm i
    
  3. 运行开发模式

    pnpm dev
    
    

Build and Release

pnpm build

4. 导出功能的依赖
```shell
npm install xlsx file-saver
5. 展示图表的依赖
```shell
npm install echarts


## 技术栈

- Vue3 https://vuejs.org/
- Pinia https://pinia.web3doc.top/
- Naive UI https://www.naiveui.com/zh-CN/os-theme
- Unocss https://alfred-skyblue.github.io/unocss-docs-cn/

## 目录描述

Vue Naive Admin |-- .github // github相关,如推送github仓库后自动部署gh pages |-- .husky // git commit钩子 |-- .vscode // vscode编辑器相关 | |-- extensions.json // 插件推荐 | |-- settings.json // 项目级别的vscode配置,优先级大于全局vscode配置 |-- build // 构建相关配置 | |-- constant.js // 构建相关的常量 | |-- utils.js // 构建相关的工具方法 | |-- config
| | |-- define.js // 注入全局常量,启动或打包后将添加到window中 | | |-- proxy.js // 代理配置 | |-- plugin
| | |-- html.js // vite-plugin-html插件,用于注入变量或者html标签 | | |-- mock.js // vite-plugin-mock插件,处理mock | | |-- unplugin.js // unplugin相关插件,包含DefineOptions和自动导入 | |-- script // 打包完成后执行的一些node脚本(不重要) | |-- build-cname.js // 自动生成cname |-- mock // mock | |-- utils.js // mock请求需要用到的工具方法 | |-- api // mock接口 |-- public // 公共资源,文件夹下的文件会在打包后会直接加到dist根目录下 |-- settings // 项目配置 | |-- proxy-config.js // 代理配置文件 | |-- theme.json // 主题配置项,主题色等 |-- src | |-- api // 公共api | |-- assets // 静态资源 | | |-- images // 图片 | | |-- svg // svg图标 | |-- components // 全局组件 | | |-- common // 公共组件 | | |-- icon // icon相关组件 | | |-- page // 页面组件 | | |-- query-bar // 查询选项 | | |-- table // 封装的表格组件 | |-- composables // 封装的组合式函数 | |-- layout // 布局相关组件 | | |-- components | | |-- AppMain.vue // 主体内容 | | |-- header // 头部 | | |-- sidebar // 侧边菜单栏 | | |-- tags // 多页签栏 | |-- router // 路由 | | |-- guard // 路由守卫 | | |-- routes // 路由列表 | |-- store // 状态管理(pinia) | | |-- modules // 模块 | | |-- app // 管理页面重新加载、折叠菜单栏和keepAlive等 | | |-- permission // 权限相关,管理权限菜单 | | |-- tags // 管理多页签 | | |-- user // 用户模块,管理用户信息、登录登出 | |-- styles // 样式 | |-- utils // 封装的工具方法 | | |-- auth // 权限相关,如token、跳转登录页等 | | |-- common // 通用 | | |-- http // 封装axios | | |-- storage // 封装localStorage和sessionStorage | |-- views // 页面 | | |-- user // 用户端 | | |-- admin // 管理端 | | |-- error-page // 错误页面 | |-- App.vue | |-- main.js |-- .cz-config.js // git提交配置 |-- .editorconfig // 编辑器配置 |-- .env // 环境文件,所有环境都会载入 |-- .env.development // 开发环境文件 |-- .env.production // 生产环境文件 |-- .env.test // 测试环境文件 |-- .eslintignore // eslint忽略 |-- .eslintrc.js // eslint配置 |-- .gitignore // git忽略 |-- .prettierignore // prettier格式化忽略 |-- commitlint.config.js // commitlint规范配置 |-- index.html
|-- jsconfig.json // js配置 |-- LICENSE // 协议 |-- package.json // 依赖描述文件 |-- pnpm-lock.yaml // 依赖锁定文件 |-- prettier.config.js // prettier格式化配置 |-- README.md // 项目描述文档(英文) |-- README.zh-CN.md // 项目描述文档(中文) |-- unocss.config.js // unocss配置 |-- vite.config.js // vite配置



## 路由设计

- user/take-class
- user/software-list
- user/faq
- user/person-setting
- user/re-pw-info
- user/reset-password
- user/signup

- user/exam-list 【考试列表】

- user/contest/[examId] 【比赛:比赛题目列表页】
- user/contest/[examId]/problems/[problemId] 【比赛题目】
- user/contest/[examId]/score-rank-status【比赛成绩页面】
- user/contest/[examId]/score-only-rank
- user/contest/[examId]/score-top10

- user/training/[examId]【训练流程页】
- user/training/[examId]/problems/[problemId] 【训练题目】
- user/training/[examId]/score-train-rank 【训练成绩页面】

### 权限控制和认证

#### 认证

admin 端和 user 端分开存 token

#### 权限控制

定义路由时定义角色
角色: `student`, `admin` ...


## 提示、通知和弹框

全局声明了弹框相关的 API

1. 提示(toast)

    ```js
    $message.success('登录成功')
    $message.error('登录失败')
    $message.loading('正在尝试重新登录...')
    $message.removeMessage() //移除toast
    ```

2. 通知

    ```js
    $notification.info({
        content: '信息',
        duration: 2500,
    })
    ```

3. 对话框
    
    ```js
    $dialog.confirm
    $dialog.success
    $dialog.error
    ```


## 请求规范


## CSS规范



## 图标说明
使用SvgIcon 组件

1.去这个网站[阿里图标](https://www.iconfont.cn/),将图标的svg复制保存到项目的`/assets/svg`目录下面  
2.使用示例
```vue
<SvgIcon
    icon="tips"
    color="white"
    class="cursor-pointer pt-2"
    @click=""
/>