46 Commits

Author SHA1 Message Date
思维跳跃科技
2f4ff08e21 Merge pull request #3 from mindskip/master
分支同步
2020-11-25 12:26:17 +08:00
alvis
6fab2ea2cd Merge pull request #2 from mindskip/alvis
组件升级:
2020-11-25 11:30:52 +08:00
alvis
5a99fe23d8 组件升级:
+ @vue/cli-service@4.5.9
+ @vue/cli-plugin-router@4.5.9
+ @vue/cli-plugin-eslint@4.5.9
+ @vue/cli-plugin-babel@4.5.9
+ @vue/cli-plugin-vuex@4.5.9

bug 修复:
重置
2020-11-25 11:24:23 +08:00
alvis
e8272a723e Merge pull request #1 from mindskip/alvis
bug 修复
2020-11-24 11:33:22 +08:00
alvis
2fc25ad943 bug 修复 2020-11-24 11:31:23 +08:00
mindskip
e53c08839f v3.0.8 2020-11-23 10:52:40 +08:00
mindskip
adb674d5ed Merge branch 'master' of gitee.com:mindskip/xzs-mysql 2020-11-23 10:26:14 +08:00
mindskip
1bcd1e25d0 学之思交流群⑥:593529956 2020-11-23 10:24:54 +08:00
alvis
4ee37785c2 remove useless code 2020-11-22 13:32:37 +08:00
mindskip
15ce5c73cd v3.0.8 2020-11-21 14:22:39 +08:00
mindskip
423ca88806 文档更新 2020-11-20 08:45:05 +08:00
mindskip
a8df81aad4 docker 2020-11-19 09:22:12 +08:00
mindskip
29154803b0 docker部署 2020-11-18 09:51:55 +08:00
mindskip
7101bad7fe docker部署 2020-11-18 09:41:57 +08:00
mindskip
7fb56a99ae 支持docker部署 2020-11-18 09:37:25 +08:00
mindskip
c6fc18483d 部署文档更新 2020-11-17 09:05:27 +08:00
mindskip
d0c8525cbf update 2020-11-16 11:20:56 +08:00
mindskip
e0109cc05e update README.md 2020-11-16 09:37:54 +08:00
mindskip
1bfea8deb8 开发部署教程 2020-11-13 09:22:47 +08:00
mindskip
92bc3e8d6a 组件升级 2020-11-12 09:30:30 +08:00
mindskip
10fe1918d2 开发部署文档 2020-11-11 13:09:20 +08:00
mindskip
db304e38b3 开发部署文档 2020-11-10 09:56:03 +08:00
mindskip
3ade19fcdc 开发、部署教程 2020-11-09 08:27:36 +08:00
mindskip
d3f95c4d46 组件升级 2020-11-06 09:25:58 +08:00
mindskip
ad30c8bf3c 部署教程 2020-11-05 09:35:20 +08:00
mindskip
0260e6c3cb 教程更新 2020-11-04 09:24:30 +08:00
mindskip
fdc3ad80b0 维多多培训考试系统:https://www.mindskip.net/wdd.html 2020-11-03 09:40:02 +08:00
mindskip
0f37f31c43 update README.md 2020-11-02 09:03:52 +08:00
mindskip
e7785d992d update README.md 2020-10-30 09:32:12 +08:00
mindskip
4d2b89e112 update README.md 2020-10-29 09:35:51 +08:00
mindskip
7a296b6a08 update README.md 2020-10-28 10:51:25 +08:00
mindskip
fd74fa76a9 update README.md 2020-10-27 09:13:58 +08:00
mindskip
a78927471d update README.md 2020-10-26 09:05:50 +08:00
mindskip
79a4c4df05 中国开源项目评选地址: https://www.oschina.net/p/alvis-yu-exam 2020-10-23 10:30:31 +08:00
mindskip
83297d9cfc update README.md 2020-10-22 10:05:55 +08:00
mindskip
de874519d3 update README.md 2020-10-21 09:07:57 +08:00
mindskip
b6eddc1dbe 组件更新 2020-10-19 09:08:58 +08:00
mindskip
3e5fada769 update README.md 2020-10-14 10:05:50 +08:00
mindskip
94f625f47b update 2020-10-12 20:00:36 +08:00
mindskip
8f4f2c78e8 update 2020-10-12 08:58:44 +08:00
mindskip
6b62071d05 update docs/README.md 2020-10-09 09:46:08 +08:00
mindskip
caa5f773d8 update doc 2020-09-27 21:08:40 +08:00
mindskip
667db6bac8 docs 2020-09-24 09:55:31 +08:00
mindskip
6f79d3b2e8 组件升级 2020-09-20 21:00:44 +08:00
mindskip
6462e586c8 update 2020-09-13 21:34:07 +08:00
mindskip
3b069128c6 bug fix 2020-09-07 10:32:30 +08:00
210 changed files with 3274 additions and 2465 deletions

6
.gitattributes vendored
View File

@@ -1,2 +1,4 @@
*.js linguist-language=java
*.css linguist-language=java
*.js linguist-language=javascript
*.css linguist-language=css
*.java linguist-language=java
*.vue linguist-language=vue

4
.gitignore vendored
View File

@@ -11,7 +11,7 @@ target/
.project
.classpath
# idea ignore
# idea ignore
.idea/
*.ipr
*.iml
@@ -26,7 +26,7 @@ logs/
*.patch
*.tmp
# system ignore
# system ignore
.DS_Store
Thumbs.db

View File

@@ -1,5 +1,5 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies

View File

@@ -1,102 +1,78 @@
# 学之思在线考试系统
### 项目介绍
学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。目前支持web端和微信小程序能覆盖到pc机和手机等设备。
## 项目介绍
学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序能覆盖到pc机和手机等设备。
支持多种部署方式集成部署、前后端分离部署、docker部署。
### 开源版使用须知
* 仅用个人学习,商用请购买授权 [http://www.mindskip.net/buy.html](http://www.mindskip.net/buy.html)
* 禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负
* 仅用个人学习
* 禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负
### 演示地址
* 官网:[http://www.mindskip.net](http://www.mindskip.net)
* 学之思[http://www.mindskip.net/xzs.html](http://www.mindskip.net/xzs.html)
*多多[http://www.mindskip.net/xdd.html](http://www.mindskip.net/xdd.html)
* 思多多:[http://www.mindskip.net/sdd.html](http://www.mindskip.net/sdd.html)
* 官网[http://www.mindskip.net](http://www.mindskip.net)
*之思考试系统[http://www.mindskip.net/xzs.html](http://www.mindskip.net/xzs.html)
* 思多多智能考试平台[http://www.mindskip.net/sdd.html](http://www.mindskip.net/sdd.html)
* 维多多培训考试系统:[http://www.mindskip.net/wdd.html](http://www.mindskip.net/wdd.html)
* 学多多考试系统:[http://www.mindskip.net/xdd.html](http://www.mindskip.net/xdd.html)
### 学之思仓库版本地址
* gitee - postgresql [https://gitee.com/mindskip/uexam](https://gitee.com/mindskip/uexam)
* github - postgresql [https://github.com/mindskip/xzs](https://github.com/mindskip/xzs)
* gitee - mysql [https://gitee.com/mindskip/xzs-mysql](https://gitee.com/mindskip/xzs-mysql)
* github - postgresql [https://github.com/mindskip/xzs](https://github.com/mindskip/xzs)
* github - mysql [https://github.com/mindskip/xzs-mysql](https://github.com/mindskip/xzs-mysql)
### 学之思交流群(加群获取数据库脚本)
* 交流五群:`1074095891`
* 交流六群:`593529956`
* QQ`2693073475`
* 微信:`alvis-u`
### 大事件
* 2020/5 思多多智能考试平台新版发布 地址:[http://www.mindskip.net/sdd.html](http://www.mindskip.net/sdd.html)
* 2020/2 项目累计突破2000 star
* 2020/1 累计超过150万用户使用
* 2019/12 项目累计突破1000 star
* 2019/11 入围开源中国最受欢迎开源项目
* 2019/10 累计超过100万学生使用
* 2019/10 荣获码云最有价值开源项目
### 开发部署教程
* [http://mindskip.gitee.io/uexam/](http://mindskip.gitee.io/uexam/)
### 学生系统功能
* 登录、注册: 注册时要选年级,过滤不同年级的试卷, 账号为student/123456
* 登录、注册: 注册时要选年级,过滤不同年级的试卷, 账号为student/123456
* 首页: 任务中心、固定试卷、时段试卷、可以能做的一部分试卷
* 试卷中心: 包含了所有能做的试卷,按学科来过滤和分页
* 考试记录: 所有的试卷考试记录在此处分页,可以查看试卷结果、用时、得分、自行批改等
* 错题本: 所有做错的题目,可以看到做题的结果、分数、难度、解析、正确答案等
* 个人中心: 个人日志记录
* 消息: 消息通知
* 消息: 消息通知
* 试卷答题和试卷查看: 展示出题目的基本信息和需要填写的内容
### 管理系统功能
* 登录: 账号为 admin/123456
* 登录: 账号为: admin/123456
* 主页: 包含了试卷、题目、做卷数、做题数、用户活跃度的统计功能,活跃度和做题数是按月统计
* 用户管理: 对不同角色 学生、教师、管理员 的增删改查管理功能
* 卷题管理:
1. 试卷列表:试卷的增删改查,新增包含选择学科、试卷类型、试卷名称、考试时间,试卷内容包含添加大标题,然后添加题目到此试卷中,组成一套完整的试卷
2. 题目列表:题目的增删改查,目前题型包含单选题、多选题、判断题、填空题、简单题,支持图片、公式等。
* 任务管理:对任务进行修改
* 教育管理:对不同年级的学科进行增删改查
* 消息中心:可以对多个用户进行消息发送,预留:加入班级,推送试卷等消息
* 消息中心:可以对多个用户进行消息发送
* 日志中心:用户的基本操作进行日志记录,了解用户使用过情况
### 小程序学生系统功能
### 小程序功能
* 用户登录登出功能,登录会自动绑定微信账号,登出会解绑
* 首页包含任务中心、固定试卷、时段试卷、推送试卷模块和web端保持一致
* 首页包含任务中心、固定试卷、时段试卷和web端保持一致
* 试卷模块,固定试卷和时段试卷的分页查询,下拉加载更多,上拉刷新当前数据
* 记录模块,考试结果的分页,包含了试卷基本信息
* 我的模块,包含个人资料的修改,个人动态,消息中心模块
### 技术栈列表
后台系统:
* spring-boot 2.1.6.RELEASE
* spring-boot-security 用户登录验证
* undertow web容器
* postgresql/mysql 优秀的开源数据库
* redis 缓存,提升系统性能
* mybatis 数据库中间件
* hikari 速度最快的数据库连接池
* 七牛云存储 目前10G内免费
前台系统:
* Vue.js 采用新版使用了vue-cli3搭建的系统减少大量配置文件
* element-ui 最流行的vue组件采用的最新版
* vue-element-admin 最新版,对该系统做了大量精简,只保留了部分样式和控件
* echarts 图表统计
* ueditor 填空题扩展插件
微信小程序:
* iView 主题样式
### 使用教程
1. redis 安装
2. 进群获取到数据库脚本,创建表初始化数据
3. /uexam/source/xzs为后台代码建议使用IntelliJ IDEA打开在application-dev.yml文件中配置好postgesql/mysql、redis的服务地址打开XzsApplication文件编译运行,默认端口为8000。
4. 学生系统地址http://localhost:8000/student
5. 管理端地址http://localhost:8000/admin
### 软件架构图
![](doc/image/frame/2.png)
### 系统展示
* 学生考试系统
<table>
<tr>
@@ -128,5 +104,4 @@
<td><img src="doc/image/admin/12.png"/></td>
<td><img src="doc/image/admin/13.png"/></td>
</tr>
</table>
</table>

BIN
doc/frame/架构图.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Binary file not shown.

0
docs/.nojekyll Normal file
View File

161
docs/README.md Normal file
View File

@@ -0,0 +1,161 @@
# 目录
## 项目介绍
学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序能覆盖到pc机和手机等设备。 支持多种部署方式集成部署、前后端分离部署、docker部署。
## 开源版使用须知
仅用个人学习
禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负
## 学之思仓库版本地址
gitee - postgresql [https://gitee.com/mindskip/uexam](https://gitee.com/mindskip/uexam)
gitee - mysql [https://gitee.com/mindskip/xzs-mysql](https://gitee.com/mindskip/xzs-mysql)
github - postgresql [https://github.com/mindskip/xzs](https://github.com/mindskip/xzs)
github - mysql [https://github.com/mindskip/xzs-mysql](https://github.com/mindskip/xzs-mysql)
## 运行环境
| 环境 | 版本 |
| ---- | ---- |
| 操作系统 | Windows / Linux |
| Jdk | 8 |
| Redis | 6.0 |
| PostgreSql / Mysql | 12.0 / 8.0 |
## 技术栈列表
### 后台系统
* spring-boot 2.1.6.RELEASE
* spring-boot-security 用户登录验证
* undertow web容器
* postgresql/mysql 优秀的开源数据库
* redis 缓存,提升系统性能
* mybatis 数据库中间件
* hikari 速度最快的数据库连接池
* 七牛云存储 目前10G内免费
### 前台系统
* Vue.js 采用新版使用了vue-cli3搭建的系统减少大量配置文件
* element-ui 最流行的vue组件采用的最新版
* vue-element-admin 优化和扩展版本
* echarts 图表统计
* ueditor 优化版
### 微信小程序
* iView 主题样式
## 项目开发
### 开发说明
* redis 安装
* 进群获取到数据库脚本创建表初始化数据数据库名称为xzs
* 代码分为 mysql / postgresql 2个版本配合响应的数据库使用
* 安装mysql / postgresql ,数据库二选一即可 导入sql脚本。mysql导入xzs-mysql.sql脚本。postgresql导入xzx-postgresql.sql脚本
* 学生端默认账号student / 123456
* 管理端默认账号admin / 123456
### 后端开发
* /uexam/source/xzs为后台代码建议使用IntelliJ IDEA打开
* 打开application-dev.yml文件中配置好postgesql/mysql、redis的服务地址
* 启动后台程序,默认端口为8000。
* 学生系统地址:<http://localhost:8000/student>
* 管理端地址:<http://localhost:8000/admin>
### 前端开发
* 前端使用webstorm或者vscode分别打开文件夹打开源代码\source\vue\xzs-student和source\vue\xzs-admin
* 执行下面2个命令安装node_module
```npm
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm install --registry https://registry.npm.taobao.org
```
* 执行下面命令,启动前端代码
```npm
npm run serve
```
* 打包命名
```npm
npm run build
```
### 微信小程序开发
* 去腾讯小程序官网注册账号拿到appid和secret信息
* 下载好微信小程序开发工具
* 打开工具,导入代码 \source\wx\xzs-student
* 修改application.yml文件里的wx配置下面的appid和secret
* 启动小程序开发工具
## 项目部署
### 集成部署
* 分别在\source\vue\xzs-student目录和source\vue\xzs-admin目录执行前端打包命令
```npm
npm run build
```
* 打包后的目录为student和admin
* 将文件放到\source\xzs\src\main\resources\static下然后将java程序打包成jar包
* 修改application-prod.yml中的datasource和redis地址
* 学生端访问地址为:<http://ip:8000/student>
* 管理员端访问地址为:<http://ip:8000/admin>
* 执行下列命令,运行程序
```java
nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod xzs-3.0.7.jar > start1.log 2>&1 &
```
### 前后端分离部署
* 采用前后端分离方式部署后端启动和部署方式1一样
* 前端采用nginx来装载静态页面,先创建/usr/local/xzs/web/目录然后将打包后的student、admin放到此目录下
* 页面访问端口为8001注意检查防火墙端口是否打开
* 学生端访问地址为:<http://ip:8001/student>
* 管理员端访问地址为:<http://ip:8001/admin>
* nginx配置如下
```nginx
server {
listen 8001;
server_name xzs;
location / {
root /usr/local/xzs/web/;
index index.html;
}
location /api/ {
proxy_pass https://localhost:8000;
}
}
```
### docker部署
* 先检查服务器端口、ip转发的是否配置正确否则无法访问到docker内部
* docker内部镜像已经安装了java、mysql、redis、nginx,均已配置好,无需其他操作
* 执行下列docker命令拉取镜像启动容器
* 学生端访问地址为:<http://ip:8001/student>
* 管理员端访问地址为:<http://ip:8001/admin>
```docker
docker pull registry.cn-hangzhou.aliyuncs.com/mindskip/xzs:v3.0.6
docker run -d --name xzs --privileged -it -d -p 8001:8001 registry.cn-hangzhou.aliyuncs.com/mindskip/xzs:v3.0.6 /usr/sbin/init
```

7
docs/_coverpage.md Normal file
View File

@@ -0,0 +1,7 @@
# 学之思考试系统
> 学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序能覆盖到pc机和手机等设备。 支持多种部署方式集成部署、前后端分离部署、docker部署。
[Gitee](https://gitee.com/mindskip/uexam)
[Get Started](#目录)

BIN
docs/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

36
docs/index.html Normal file
View File

@@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学之思开发部署教程</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="xzs.css">
<link rel="shortcut icon" href="favicon.ico">
</head>
<body style="min-width: 1024px;">
<nav class="head">
<div class="head-logo">
<img src="http://www.mindskip.net/images/icon/logo-white.png"/>
</div>
<div class="head-link">
<a href="https:www.mindskip.net" target="_blank">官网</a>
<a href="https:www.mindskip.net/sdd.html" target="_blank">思多多</a>
<a href="https:www.mindskip.net/wdd.html" target="_blank">维多多</a>
<a href="https:www.mindskip.net/xdd.html" target="_blank">学多多</a>
<a href="https:www.mindskip.net/xzs.html" target="_blank">学之思</a>
<a href="https:www.mindskip.net/buy.html" target="_blank">商业购买</a>
</div>
</nav>
<div id="app"></div>
<script>
window.$docsify = {
name: '学之思开发部署教程',
coverpage: false
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
</body>
</html>

37
docs/xzs.css Normal file
View File

@@ -0,0 +1,37 @@
table th {
min-width: 200px;
}
table td {
text-align: center;
}
.head {
position: fixed !important;
display: flex;
flex-direction: row;
justify-content: space-between;
width: calc(100% - 300px);
margin: 0px !important;
line-height: 58px;
padding: 10px 20px;
background-color: #f8f8f8;
}
.head-logo{
height: 58px;
width: 182px;
}
.head-link{
flex: 1;
width: 100%;
}
.head-link a{
margin-left: 25px;
}
.content{
padding-top: 80px !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{
"name": "xzs-admin",
"version": "3.0.7",
"author": "武汉思维跳跃科技",
"version": "3.0.8",
"author": "武汉思维跳跃科技有限公司",
"description": "学之思管理系统",
"license": "AGPL-3.0",
"private": true,
@@ -16,22 +16,22 @@
},
"dependencies": {
"axios": "^0.19.0",
"core-js": "^3.6.5",
"element-ui": "^2.13.2",
"core-js": "^3.7.0",
"element-ui": "^2.14.1",
"js-cookie": "2.2.0",
"normalize.css": "8.0.1",
"nprogress": "0.2.0",
"vue": "^2.6.10",
"vue-count-to": "^1.0.13",
"vue-router": "^3.3.4",
"vue-router": "^3.4.9",
"vuex": "^3.5.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.4.6",
"@vue/cli-plugin-eslint": "^4.4.6",
"@vue/cli-plugin-router": "^4.4.6",
"@vue/cli-plugin-vuex": "^4.4.6",
"@vue/cli-service": "^4.4.6",
"@vue/cli-plugin-babel": "^4.5.9",
"@vue/cli-plugin-eslint": "^4.5.9",
"@vue/cli-plugin-router": "^4.5.9",
"@vue/cli-plugin-vuex": "^4.5.9",
"@vue/cli-service": "^4.5.9",
"@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "^10.1.0",
"eslint": "^5.16.0",

File diff suppressed because one or more lines are too long

View File

@@ -176,6 +176,12 @@ export default {
},
resetForm () {
this.$refs['form'].resetFields()
this.form = {
id: null,
gradeLevel: null,
title: '',
paperItems: []
}
},
subjectFormatter (row, column, cellValue, index) {
return this.subjectEnumFormat(cellValue)

View File

@@ -105,6 +105,18 @@ export default {
},
resetForm () {
this.$refs['form'].resetFields()
this.form = {
id: null,
userName: '',
password: '',
realName: '',
role: 3,
status: 1,
age: '',
sex: '',
birthDay: null,
phone: null
}
},
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
},

View File

@@ -114,6 +114,19 @@ export default {
},
resetForm () {
this.$refs['form'].resetFields()
this.form = {
id: null,
userName: '',
password: '',
realName: '',
role: 1,
status: 1,
age: '',
sex: '',
birthDay: null,
phone: null,
userLevel: null
}
},
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
},

View File

@@ -105,6 +105,18 @@ export default {
},
resetForm () {
this.$refs['form'].resetFields()
this.form = {
id: null,
userName: '',
password: '',
realName: '',
role: 2,
status: 1,
age: '',
sex: '',
birthDay: null,
phone: null
}
},
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
},

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{
"name": "xzs-student",
"version": "3.0.7",
"author": "武汉思维跳跃科技",
"version": "3.0.8",
"author": "武汉思维跳跃科技有限公司",
"description": "学之思考试系统",
"license": "AGPL-3.0",
"private": true,
@@ -16,21 +16,21 @@
},
"dependencies": {
"axios": "^0.19.0",
"core-js": "^3.4.4",
"element-ui": "^2.13.2",
"core-js": "^3.7.0",
"element-ui": "^2.14.1",
"js-cookie": "2.2.0",
"normalize.css": "8.0.1",
"nprogress": "0.2.0",
"vue": "^2.6.10",
"vue-router": "^3.3.4",
"vue-router": "^3.4.9",
"vuex": "^3.5.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.4.6",
"@vue/cli-plugin-eslint": "^4.4.6",
"@vue/cli-plugin-router": "^4.4.6",
"@vue/cli-plugin-vuex": "^4.4.6",
"@vue/cli-service": "^4.4.6",
"@vue/cli-plugin-babel": "^4.5.9",
"@vue/cli-plugin-eslint": "^4.5.9",
"@vue/cli-plugin-router": "^4.5.9",
"@vue/cli-plugin-vuex": "^4.5.9",
"@vue/cli-service": "^4.5.9",
"@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "^10.0.3",
"eslint": "^5.16.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -35,11 +35,25 @@
<div class="container">
<div class="footer-main">
<h4>产品介绍</h4>
<a href="http://www.mindskip.net" target="_blank" class="footer-main-link">思维跳跃科技</a>
<a href="http://www.mindskip.net/sdd.html" target="_blank" class="footer-main-link">思多多智能考试平台</a>
<a href="http://www.mindskip.net/wdd.html" target="_blank" class="footer-main-link">维多多培训考试系统</a>
<a href="http://www.mindskip.net/xdd.html" target="_blank" class="footer-main-link">学多多考试系统</a>
<a href="http://www.mindskip.net/xzs.html" target="_blank" class="footer-main-link">学之思考试系统</a>
</div>
<div class="footer-main">
<h4>学多多小程序</h4>
<img src="@/assets/code/1.jpg" style="width: 100px;height: 100px;"/>
</div>
<div class="footer-main">
<h4>跃考 H5小程序</h4>
<img src="@/assets/code/2.png" style="width: 100px;height: 100px;"/>
<img src="@/assets/code/3.jpg" style="width: 100px;height: 100px;margin-left: 10px"/>
</div>
<div class="footer-main">
<h4>维考 H5小程序</h4>
<img src="@/assets/code/6.png" style="width: 100px;height: 100px;"/>
<img src="@/assets/code/7.jpg" style="width: 100px;height: 100px;margin-left: 10px"/>
</div>
<div class="footer-main">
<h4>关于我们</h4>
<img src="@/assets/4.jpg" style="width: 100px;height: 100px;"/>

View File

@@ -5,11 +5,11 @@
<groupId>com.mindskip</groupId>
<artifactId>xzs</artifactId>
<version>3.0.7</version>
<version>3.0.8</version>
<packaging>jar</packaging>
<name>xzs</name>
<description>武汉思维跳跃科技-学之思考试系统</description>
<description>学之思考试系统 - 武汉思维跳跃科技有限公司</description>
<properties>

View File

@@ -8,7 +8,7 @@ import org.springframework.cache.annotation.EnableCaching;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@SpringBootApplication
@EnableTransactionManagement

View File

@@ -8,7 +8,7 @@ import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class BaseApiController {
protected final static String DEFAULT_PAGE_SIZE = "10";

View File

@@ -2,7 +2,7 @@ package com.mindskip.xzs.base;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public abstract class BaseEntity {

View File

@@ -3,7 +3,7 @@ package com.mindskip.xzs.base;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -1,7 +1,7 @@
package com.mindskip.xzs.base;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class RestResponse<T> {
private int code;

View File

@@ -1,7 +1,7 @@
package com.mindskip.xzs.base;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public enum SystemCode {
/**

View File

@@ -6,7 +6,7 @@ import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
public class ApplicationContextProvider implements ApplicationContextAware {

View File

@@ -3,7 +3,7 @@ package com.mindskip.xzs.configuration.property;
public class CookieConfig {
public static String getName() {
return "exam";
return "xzs";
}
public static Integer getInterval() {

View File

@@ -7,7 +7,7 @@ import java.util.List;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@ConfigurationProperties(prefix = "system")
@Data

View File

@@ -29,26 +29,6 @@ import java.time.Duration;
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
/* @Autowired
private CacheProperties cacheProperties;*/
/**
* redis序列化修改为ObjectMapper
*
* @return RedisCacheConfiguration
*/
/* @Bean
public RedisCacheConfiguration redisCacheConfiguration() {
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(objectMapper);
return RedisCacheConfiguration.defaultCacheConfig().entryTtl(cacheProperties.getRedis().getTimeToLive())
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));
}*/
/**
* spring boot redis默认序列化方式
*

View File

@@ -10,7 +10,7 @@ import java.util.List;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Configuration

View File

@@ -3,7 +3,7 @@ package com.mindskip.xzs.configuration.spring.security;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -12,7 +12,7 @@ import java.io.IOException;
/**
* 未登录
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
public final class LoginAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {

View File

@@ -12,7 +12,7 @@ import java.io.IOException;
/**
* 账号验证异常
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
public class RestAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {

View File

@@ -24,9 +24,8 @@ import java.util.ArrayList;
/**
* 登录用户名密码验证
*
* @author : Alvis
* @author : 武汉思维跳跃科技有限公司
* Description : 身份验证
* Creation Date: 2018-05-02 5:00 PM
*/
@Component

View File

@@ -20,7 +20,7 @@ import java.util.Date;
/**
* 登录成功返回
*
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
@AllArgsConstructor

View File

@@ -14,9 +14,8 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
/**
* @author : Alvis
* @author : 武汉思维跳跃科技有限公司
* Description : 验证通过之后,第二、三...请求,会调用此类
* Creation Date: 2018-05-02 4:32 PM
*/
@Component

View File

@@ -19,7 +19,7 @@ import java.io.InputStream;
/**
* 登录参数序列化
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class RestLoginAuthenticationFilter extends AbstractAuthenticationProcessingFilter {

View File

@@ -18,7 +18,7 @@ import java.util.Date;
/**
* 用户登出
*
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
@AllArgsConstructor

View File

@@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletRequest;
/**
* 记住我Cookie
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class RestTokenBasedRememberMeServices extends TokenBasedRememberMeServices {
public RestTokenBasedRememberMeServices(String key, UserDetailsService userDetailsService) {

View File

@@ -10,7 +10,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class RestUtil {
private static final Logger logger = LoggerFactory.getLogger(RestUtil.class);

View File

@@ -19,7 +19,7 @@ import java.util.List;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Configuration

View File

@@ -26,7 +26,7 @@ import java.util.UUID;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@RestController("AdminUserController")
@RequestMapping(value = "/api/admin/user")

View File

@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@RestController("StudentUserController")
@RequestMapping(value = "/api/student/user")

View File

@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Controller("WXStudentUserController")
@RequestMapping(value = "/api/wx/student/user")

View File

@@ -6,10 +6,7 @@ import java.util.Map;
public enum ExamPaperTypeEnum {
Fixed(1, "固定试卷"),
Temp(2, "临时时间"),
Classes(3, "班级试卷"),
TimeLimit(4, "时段试卷"),
Push(5, "推送试卷"),
Task(6, "任务试卷");
int code;

View File

@@ -4,7 +4,7 @@ import com.mindskip.xzs.domain.ExamPaperAnswerInfo;
import org.springframework.context.ApplicationEvent;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class CalculateExamPaperAnswerCompleteEvent extends ApplicationEvent {

View File

@@ -4,7 +4,7 @@ import com.mindskip.xzs.domain.User;
import org.springframework.context.ApplicationEvent;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class OnRegistrationCompleteEvent extends ApplicationEvent {

View File

@@ -1,7 +1,7 @@
package com.mindskip.xzs.exception;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class BusinessException extends RuntimeException {

View File

@@ -19,7 +19,7 @@ import java.util.List;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
@AllArgsConstructor

View File

@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Component
public class EmailSendListener implements ApplicationListener<OnRegistrationCompleteEvent> {

View File

@@ -10,7 +10,7 @@ import java.util.List;
import java.util.Map;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Mapper

View File

@@ -3,7 +3,7 @@ package com.mindskip.xzs.service;
import com.mindskip.xzs.domain.User;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public interface AuthenticationService {

View File

@@ -8,7 +8,7 @@ import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public interface UserService extends BaseService<User> {

View File

@@ -9,7 +9,7 @@ import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Service
@AllArgsConstructor

View File

@@ -21,7 +21,7 @@ import java.util.List;
import java.util.Map;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Service
public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {

View File

@@ -10,7 +10,7 @@ import java.time.Duration;
import java.util.*;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class DateTimeUtil {

View File

@@ -1,6 +1,7 @@
package com.mindskip.xzs.utility;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
@@ -14,6 +15,10 @@ public class JsonUtil {
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
static {
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
public static <T> String toJsonStr(T o) {
try {
return MAPPER.writeValueAsString(o);

View File

@@ -11,7 +11,7 @@ import java.security.NoSuchAlgorithmException;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class Md5Util {

View File

@@ -6,7 +6,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class PageInfoHelper {

View File

@@ -13,7 +13,7 @@ import java.util.Base64;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
public class RsaUtil {
/**

View File

@@ -5,7 +5,7 @@ import lombok.Data;
import org.modelmapper.ModelMapper;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -4,7 +4,7 @@ import com.mindskip.xzs.base.BasePage;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -4,7 +4,7 @@ import com.mindskip.xzs.base.BasePage;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -6,7 +6,7 @@ import com.mindskip.xzs.viewmodel.BaseVM;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -6,7 +6,7 @@ import com.mindskip.xzs.viewmodel.BaseVM;
import lombok.Data;
/**
* @author alvis
* @author 武汉思维跳跃科技有限公司
*/
@Data

View File

@@ -5,7 +5,7 @@ spring:
redis:
host: 192.168.0.96
datasource:
url: jdbc:mysql://192.168.0.69:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
url: jdbc:mysql://192.168.0.96:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

View File

@@ -5,7 +5,7 @@ spring:
redis:
host: 192.168.0.96
datasource:
url: jdbc:mysql://192.168.0.69:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
url: jdbc:mysql://192.168.0.96:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=Cache-Control content="no-cache, no-store, must-revalidate"><meta http-equiv=Pragma content=no-cache><meta http-equiv=Expires content=0><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>学之思管理系统</title><style>html {
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Expires" content="0"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>学之思管理系统</title><style>html {
height: 100%;
width: 100%;
}
@@ -7,10 +7,10 @@
margin: 0;
height:100%;
width: 100%;
}</style><script src=./admin/components/echarts/echarts.min.js></script><script src=./admin/components/echarts/theme/macarons.js></script><script src="./admin/components/ueditor/ueditor.config.js?v=3"></script><script src="./admin/components/ueditor/ueditor.all.js?v=3"></script><script src=./admin/components/ueditor/lang/zh-cn/zh-cn.js></script><script src=./admin/components/ueditor/kityformula-plugin/addKityFormulaDialog.js></script><script src=./admin/components/ueditor/kityformula-plugin/getKfContent.js></script><script src=./admin/components/ueditor/kityformula-plugin/defaultFilterFix.js></script><script>var _hmt = _hmt || [];
}</style><script src="./admin/components/echarts/echarts.min.js"></script><script src="./admin/components/echarts/theme/macarons.js"></script><script src="./admin/components/ueditor/ueditor.config.js?v=3"></script><script src="./admin/components/ueditor/ueditor.all.js?v=3"></script><script src="./admin/components/ueditor/lang/zh-cn/zh-cn.js"></script><script src="./admin/components/ueditor/kityformula-plugin/addKityFormulaDialog.js"></script><script src="./admin/components/ueditor/kityformula-plugin/getKfContent.js"></script><script src="./admin/components/ueditor/kityformula-plugin/defaultFilterFix.js"></script><script>var _hmt = _hmt || [];
(function () {
var hm = document.createElement('script')
hm.src = 'https://hm.baidu.com/hm.js?cd8218cd51f800ed2b73e5751cb3f4f9'
var s = document.getElementsByTagName('script')[0]
s.parentNode.insertBefore(hm, s)
})()</script><link href=static/css/chunk-04b6c2be.b6b9412a.css rel=prefetch><link href=static/css/chunk-07d991b3.b6b9412a.css rel=prefetch><link href=static/css/chunk-1159e38a.a13e9690.css rel=prefetch><link href=static/css/chunk-37f7a892.b6b9412a.css rel=prefetch><link href=static/css/chunk-4472f2d7.6aadbd54.css rel=prefetch><link href=static/css/chunk-448755e2.b6b9412a.css rel=prefetch><link href=static/css/chunk-4cf8ab8c.b6b9412a.css rel=prefetch><link href=static/css/chunk-5025ea04.b6b9412a.css rel=prefetch><link href=static/css/chunk-63af86fe.b6b9412a.css rel=prefetch><link href=static/css/chunk-6e3b3ca0.60f7ef12.css rel=prefetch><link href=static/css/chunk-71f81c10.d7c9fb7c.css rel=prefetch><link href=static/css/chunk-913f50a6.b6b9412a.css rel=prefetch><link href=static/css/chunk-c2aa2eac.b6b9412a.css rel=prefetch><link href=static/css/chunk-c7b9eaf2.03972c94.css rel=prefetch><link href=static/js/chunk-04b6c2be.d3d1d894.js rel=prefetch><link href=static/js/chunk-07d991b3.91538e3d.js rel=prefetch><link href=static/js/chunk-1159e38a.e9f2d52a.js rel=prefetch><link href=static/js/chunk-16f9edc1.9e607ba9.js rel=prefetch><link href=static/js/chunk-2d0c138b.6013aadc.js rel=prefetch><link href=static/js/chunk-2d221bd2.f0317f6a.js rel=prefetch><link href=static/js/chunk-2d2300ef.364e9538.js rel=prefetch><link href=static/js/chunk-2d230fe7.042d38d1.js rel=prefetch><link href=static/js/chunk-37f7a892.4b2c4910.js rel=prefetch><link href=static/js/chunk-4472f2d7.ce2acb74.js rel=prefetch><link href=static/js/chunk-448755e2.6bfbe912.js rel=prefetch><link href=static/js/chunk-4cf8ab8c.8e8d8e31.js rel=prefetch><link href=static/js/chunk-5025ea04.4db07336.js rel=prefetch><link href=static/js/chunk-63af86fe.1559b7ea.js rel=prefetch><link href=static/js/chunk-6e3b3ca0.9246343f.js rel=prefetch><link href=static/js/chunk-71f81c10.6f8ea9d4.js rel=prefetch><link href=static/js/chunk-733c35b2.b1ed088c.js rel=prefetch><link href=static/js/chunk-75f11c77.127f2336.js rel=prefetch><link href=static/js/chunk-78234ca2.20c96828.js rel=prefetch><link href=static/js/chunk-793f0082.c3d69e72.js rel=prefetch><link href=static/js/chunk-913f50a6.98221e66.js rel=prefetch><link href=static/js/chunk-c2aa2eac.0f9bd604.js rel=prefetch><link href=static/js/chunk-c7b9eaf2.d49733ad.js rel=prefetch><link href=static/js/chunk-d0753fda.cd82a2db.js rel=prefetch><link href=static/css/chunk-vendors.ee57d822.css rel=preload as=style><link href=static/css/index.74782572.css rel=preload as=style><link href=static/js/chunk-vendors.7fbfa118.js rel=preload as=script><link href=static/js/index.7ba6ea01.js rel=preload as=script><link href=static/css/chunk-vendors.ee57d822.css rel=stylesheet><link href=static/css/index.74782572.css rel=stylesheet></head><body><noscript><strong>We're sorry but vue-demo doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=static/js/chunk-vendors.7fbfa118.js></script><script src=static/js/index.7ba6ea01.js></script></body></html>
})()</script><link href="static/css/chunk-0226adbc.0e1403ca.css" rel="prefetch"><link href="static/css/chunk-066bbd34.c306629d.css" rel="prefetch"><link href="static/css/chunk-111f3671.d650a2aa.css" rel="prefetch"><link href="static/css/chunk-157f9069.c306629d.css" rel="prefetch"><link href="static/css/chunk-2e16d177.89936c18.css" rel="prefetch"><link href="static/css/chunk-360c43ba.c306629d.css" rel="prefetch"><link href="static/css/chunk-42236473.c306629d.css" rel="prefetch"><link href="static/css/chunk-5bc3d75d.c306629d.css" rel="prefetch"><link href="static/css/chunk-65f8ca6f.c306629d.css" rel="prefetch"><link href="static/css/chunk-7c62808c.c306629d.css" rel="prefetch"><link href="static/css/chunk-873a42e2.1951fa25.css" rel="prefetch"><link href="static/css/chunk-a85d3c1e.c8588555.css" rel="prefetch"><link href="static/css/chunk-a9d03770.c306629d.css" rel="prefetch"><link href="static/css/chunk-bab2e2c4.c306629d.css" rel="prefetch"><link href="static/js/chunk-0226adbc.3bf936af.js" rel="prefetch"><link href="static/js/chunk-066bbd34.fe350225.js" rel="prefetch"><link href="static/js/chunk-111f3671.43084b31.js" rel="prefetch"><link href="static/js/chunk-157f9069.915b3f54.js" rel="prefetch"><link href="static/js/chunk-16f9edc1.bba1481d.js" rel="prefetch"><link href="static/js/chunk-2d0c138b.b4cc34f3.js" rel="prefetch"><link href="static/js/chunk-2d221bd2.0d60a519.js" rel="prefetch"><link href="static/js/chunk-2d2300ef.07397eb2.js" rel="prefetch"><link href="static/js/chunk-2d230fe7.042d38d1.js" rel="prefetch"><link href="static/js/chunk-2e16d177.b87f0553.js" rel="prefetch"><link href="static/js/chunk-360c43ba.57bc1551.js" rel="prefetch"><link href="static/js/chunk-42236473.e28ff618.js" rel="prefetch"><link href="static/js/chunk-5bc3d75d.76a57e6a.js" rel="prefetch"><link href="static/js/chunk-65f8ca6f.747bcb8d.js" rel="prefetch"><link href="static/js/chunk-733c35b2.96963128.js" rel="prefetch"><link href="static/js/chunk-75f11c77.3e0718d5.js" rel="prefetch"><link href="static/js/chunk-78234ca2.358d6493.js" rel="prefetch"><link href="static/js/chunk-793f0082.2a968cbd.js" rel="prefetch"><link href="static/js/chunk-7c62808c.12b4eee3.js" rel="prefetch"><link href="static/js/chunk-873a42e2.82b236f8.js" rel="prefetch"><link href="static/js/chunk-a85d3c1e.0136c614.js" rel="prefetch"><link href="static/js/chunk-a9d03770.42a58c33.js" rel="prefetch"><link href="static/js/chunk-bab2e2c4.ba646524.js" rel="prefetch"><link href="static/js/chunk-d0753fda.6f5b88e5.js" rel="prefetch"><link href="static/css/chunk-vendors.ee57d822.css" rel="preload" as="style"><link href="static/css/index.a92eac13.css" rel="preload" as="style"><link href="static/js/chunk-vendors.9dd0934b.js" rel="preload" as="script"><link href="static/js/index.c164ac25.js" rel="preload" as="script"><link href="static/css/chunk-vendors.ee57d822.css" rel="stylesheet"><link href="static/css/index.a92eac13.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-demo doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.9dd0934b.js"></script><script src="static/js/index.c164ac25.js"></script></body></html>

View File

@@ -1 +1 @@
@supports (-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#fff;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;box-shadow:inset 0 0 0 1000px #283443!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-e35e4c42]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-e35e4c42]{position:relative;width:520px;max-width:100%;padding:30px 50px 10px 50px;margin:120px auto auto auto;overflow:hidden;background:rgba(252,254,255,.11)}.login-container .tips[data-v-e35e4c42]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-e35e4c42]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-e35e4c42]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-e35e4c42]{position:relative}.login-container .title-container .title[data-v-e35e4c42]{font-size:26px;color:#eee;margin:0 auto 40px auto;text-align:center;font-weight:700}.login-container .show-pwd[data-v-e35e4c42]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.login-container .thirdparty-button[data-v-e35e4c42]{position:absolute;right:0;bottom:6px}@media only screen and (max-width:470px){.login-container .thirdparty-button[data-v-e35e4c42]{display:none}}
@supports (-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#fff;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;box-shadow:inset 0 0 0 1000px #283443!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-675a2798]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-675a2798]{position:relative;width:520px;max-width:100%;padding:30px 50px 10px 50px;margin:120px auto auto auto;overflow:hidden;background:rgba(252,254,255,.11)}.login-container .tips[data-v-675a2798]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-675a2798]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-675a2798]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-675a2798]{position:relative}.login-container .title-container .title[data-v-675a2798]{font-size:26px;color:#eee;margin:0 auto 40px auto;text-align:center;font-weight:700}.login-container .show-pwd[data-v-675a2798]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.login-container .thirdparty-button[data-v-675a2798]{position:absolute;right:0;bottom:6px}@media only screen and (max-width:470px){.login-container .thirdparty-button[data-v-675a2798]{display:none}}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -0,0 +1 @@
.dashboard-container[data-v-777ccb68]{padding:32px;background-color:#f0f2f5;position:relative}.dashboard-container .chart-wrapper[data-v-777ccb68]{background:#fff;padding:16px 16px 0;margin-bottom:32px}.dashboard-editor-container[data-v-777ccb68]{padding:32px;background-color:#f0f2f5;position:relative}.dashboard-editor-container .github-corner[data-v-777ccb68]{position:absolute;top:0;border:0;right:0}.dashboard-editor-container .chart-wrapper[data-v-777ccb68]{background:#fff;padding:16px 16px 0;margin-bottom:32px}@media (max-width:1024px){.chart-wrapper[data-v-777ccb68]{padding:8px}}.panel-group[data-v-777ccb68]{margin-top:18px}.panel-group .card-panel-col[data-v-777ccb68]{margin-bottom:32px}.panel-group .card-panel[data-v-777ccb68]{height:108px;cursor:pointer;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;-webkit-box-shadow:4px 4px 40px rgba(0,0,0,.05);box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05)}.panel-group .card-panel:hover .card-panel-icon-wrapper[data-v-777ccb68]{color:#fff}.panel-group .card-panel:hover .icon-people[data-v-777ccb68]{background:#40c9c6}.panel-group .card-panel:hover .icon-message[data-v-777ccb68]{background:#36a3f7}.panel-group .card-panel:hover .icon-money[data-v-777ccb68]{background:#f4516c}.panel-group .card-panel:hover .icon-shopping[data-v-777ccb68]{background:#34bfa3}.panel-group .card-panel .icon-people[data-v-777ccb68]{color:#40c9c6}.panel-group .card-panel .icon-message[data-v-777ccb68]{color:#36a3f7}.panel-group .card-panel .icon-money[data-v-777ccb68]{color:#f4516c}.panel-group .card-panel .icon-shopping[data-v-777ccb68]{color:#34bfa3}.panel-group .card-panel .card-panel-icon-wrapper[data-v-777ccb68]{float:left;margin:14px 0 0 14px;padding:16px;-webkit-transition:all .38s ease-out;transition:all .38s ease-out;border-radius:6px}.panel-group .card-panel .card-panel-icon[data-v-777ccb68]{float:left;font-size:48px}.panel-group .card-panel .card-panel-description[data-v-777ccb68]{float:right;font-weight:700;margin:26px;margin-left:0}.panel-group .card-panel .card-panel-description .card-panel-text[data-v-777ccb68]{line-height:18px;color:rgba(0,0,0,.45);font-size:16px;margin-bottom:12px}.panel-group .card-panel .card-panel-description .card-panel-num[data-v-777ccb68]{font-size:20px}@media (max-width:550px){.card-panel-description[data-v-777ccb68]{display:none}.card-panel-icon-wrapper[data-v-777ccb68]{float:none!important;width:100%;height:100%;margin:0!important}.card-panel-icon-wrapper .svg-icon[data-v-777ccb68]{display:block;margin:14px auto!important;float:none!important}}.echarts-line[data-v-777ccb68]{background:#fff;padding:16px 16px 0;margin-bottom:32px}

View File

@@ -1 +0,0 @@
.dashboard-container[data-v-3089d1f3]{padding:32px;background-color:#f0f2f5;position:relative}.dashboard-container .chart-wrapper[data-v-3089d1f3]{background:#fff;padding:16px 16px 0;margin-bottom:32px}.dashboard-editor-container[data-v-3089d1f3]{padding:32px;background-color:#f0f2f5;position:relative}.dashboard-editor-container .github-corner[data-v-3089d1f3]{position:absolute;top:0;border:0;right:0}.dashboard-editor-container .chart-wrapper[data-v-3089d1f3]{background:#fff;padding:16px 16px 0;margin-bottom:32px}@media (max-width:1024px){.chart-wrapper[data-v-3089d1f3]{padding:8px}}.panel-group[data-v-3089d1f3]{margin-top:18px}.panel-group .card-panel-col[data-v-3089d1f3]{margin-bottom:32px}.panel-group .card-panel[data-v-3089d1f3]{height:108px;cursor:pointer;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;-webkit-box-shadow:4px 4px 40px rgba(0,0,0,.05);box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05)}.panel-group .card-panel:hover .card-panel-icon-wrapper[data-v-3089d1f3]{color:#fff}.panel-group .card-panel:hover .icon-people[data-v-3089d1f3]{background:#40c9c6}.panel-group .card-panel:hover .icon-message[data-v-3089d1f3]{background:#36a3f7}.panel-group .card-panel:hover .icon-money[data-v-3089d1f3]{background:#f4516c}.panel-group .card-panel:hover .icon-shopping[data-v-3089d1f3]{background:#34bfa3}.panel-group .card-panel .icon-people[data-v-3089d1f3]{color:#40c9c6}.panel-group .card-panel .icon-message[data-v-3089d1f3]{color:#36a3f7}.panel-group .card-panel .icon-money[data-v-3089d1f3]{color:#f4516c}.panel-group .card-panel .icon-shopping[data-v-3089d1f3]{color:#34bfa3}.panel-group .card-panel .card-panel-icon-wrapper[data-v-3089d1f3]{float:left;margin:14px 0 0 14px;padding:16px;-webkit-transition:all .38s ease-out;transition:all .38s ease-out;border-radius:6px}.panel-group .card-panel .card-panel-icon[data-v-3089d1f3]{float:left;font-size:48px}.panel-group .card-panel .card-panel-description[data-v-3089d1f3]{float:right;font-weight:700;margin:26px;margin-left:0}.panel-group .card-panel .card-panel-description .card-panel-text[data-v-3089d1f3]{line-height:18px;color:rgba(0,0,0,.45);font-size:16px;margin-bottom:12px}.panel-group .card-panel .card-panel-description .card-panel-num[data-v-3089d1f3]{font-size:20px}@media (max-width:550px){.card-panel-description[data-v-3089d1f3]{display:none}.card-panel-icon-wrapper[data-v-3089d1f3]{float:none!important;width:100%;height:100%;margin:0!important}.card-panel-icon-wrapper .svg-icon[data-v-3089d1f3]{display:block;margin:14px auto!important;float:none!important}}.echarts-line[data-v-3089d1f3]{background:#fff;padding:16px 16px 0;margin-bottom:32px}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

View File

@@ -0,0 +1 @@
.box-center[data-v-bd51907a]{margin:0 auto;display:table}.text-muted[data-v-bd51907a]{color:#777}.user-profile .user-name[data-v-bd51907a]{font-weight:700}.user-profile .box-center[data-v-bd51907a]{padding-top:10px}.user-profile .user-role[data-v-bd51907a]{padding-top:10px;font-weight:400;font-size:14px}.user-profile .box-social[data-v-bd51907a]{padding-top:30px}.user-profile .box-social .el-table[data-v-bd51907a]{border-top:1px solid #dfe6ec}.user-profile .user-follow[data-v-bd51907a]{padding-top:20px}.user-bio[data-v-bd51907a]{margin-top:20px;color:#606266}.user-bio span[data-v-bd51907a]{padding-left:4px}.user-bio .user-bio-section[data-v-bd51907a]{font-size:14px;padding:15px 0}.user-bio .user-bio-section .user-bio-section-header[data-v-bd51907a]{border-bottom:1px solid #dfe6ec;padding-bottom:10px;margin-bottom:10px;font-weight:700}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}.exampaper-item-box .q-title{margin:0 5px 0 5px}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

View File

@@ -1 +0,0 @@
.pagination-container[data-v-4e4cda8d]{background:#fff}.pagination-container.hidden[data-v-4e4cda8d]{display:none}

View File

@@ -0,0 +1 @@
.pagination-container[data-v-90fd946a]{background:#fff}.pagination-container.hidden[data-v-90fd946a]{display:none}

Some files were not shown because too many files have changed in this diff Show More