auto_score/AES-front
musteven 1f72287756 基本完成学生作业查询界面(剩俩控件),创建新模型用于存储submitreport表数据。 2025-03-18 20:57:29 +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 基本完成学生作业查询界面(剩俩控件),创建新模型用于存储submitreport表数据。 2025-03-18 20:57:29 +08:00
.cz-config.js 框架 2024-12-29 20:44:44 +08:00
.editorconfig 框架 2024-12-29 20:44:44 +08:00
.env 框架 2024-12-29 20:44:44 +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 框架 2024-12-29 20:44:44 +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 框架 2024-12-29 20:44:44 +08:00
package.json 完成单选按钮的切换,还剩作业批阅界面没写 2025-03-05 22:46:45 +08:00
pnpm-lock.yaml 完成部分教师端前端代码,作业模块还没完成 2025-03-01 20:40:30 +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

# Prod Environment
pnpm build

技术栈

目录描述

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)

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

    $notification.info({
        content: '信息',
        duration: 2500,
    })
    
  3. 对话框

    $dialog.confirm
    $dialog.success
    $dialog.error
    

请求规范

CSS规范

图标说明

使用SvgIcon 组件

1.去这个网站阿里图标,将图标的svg复制保存到项目的/assets/svg目录下面
2.使用示例

<SvgIcon
    icon="tips"
    color="white"
    class="cursor-pointer pt-2"
    @click=""
/>