Compare commits

..

No commits in common. "master" and "alvis" have entirely different histories.

147 changed files with 28521 additions and 20501 deletions

View File

@ -46,13 +46,13 @@
### 学之思交流群(加群获取数据库脚本)
* QQ交流群八:`902855996`
* QQ交流群七:`873533715`
* QQ`2693073475`
* 微信:`alvis-u`
### 开发部署教程
* [https://www.mindskip.net:999](https://www.mindskip.net:999)
* [https://mindskip.gitee.io/xzs-mysql](https://mindskip.gitee.io/xzs-mysql)
### 学生系统功能
@ -73,7 +73,7 @@
* 卷题管理:
1. 试卷列表:试卷的增删改查,新增包含选择学科、试卷类型、试卷名称、考试时间,试卷内容包含添加大标题,然后添加题目到此试卷中,组成一套完整的试卷
2. 题目列表:题目的增删改查,目前题型包含单选题、多选题、判断题、填空题、简单题,支持图片、公式等。
* 任务管理:对任务进行修改
* 任务管理:对任务进行修改
* 教育管理:对不同年级的学科进行增删改查
* 消息中心:可以对多个用户进行消息发送
* 日志中心:用户的基本操作进行日志记录,了解用户使用过情况

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View File

@ -21,7 +21,7 @@ github - mysql [https://github.com/mindskip/xzs-mysql](https://github.com/min
| 环境 | 版本 |
| ---- | ---- |
| 操作系统 | Windows / Linux |
| Jdk | 1.8 |
| Jdk | 8 |
| Redis | 6.0 |
| Mysql | 8.0 |
@ -52,201 +52,7 @@ github - mysql [https://github.com/mindskip/xzs-mysql](https://github.com/min
## 架构图
![架构图](1.png)
## 数据库设计
### 试卷表 t_exam_paper
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| name | varchar | 试卷名称 |
| subject_id | int | 学科 |
| paper_type | int | 试卷类型( 1固定试卷 4.时段试卷 6.任务试卷) |
| grade_level | int | 年级 |
| score | int | 试卷总分(千分制) |
| question_count | int | 题目数量 |
| suggest_time | int | 建议时长(分钟) |
| limit_start_time | datetime | 时段试卷 开始时间 |
| limit_end_time | datetime | 时段试卷 结束时间 |
| frame_text_content_id | int | 试卷框架 内容为JSON |
| create_user | int | |
| create_time | datetime | |
| deleted | bit | |
| task_exam_id | int | |
### 试卷答案表 t_exam_paper_answer
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| exam_paper_id | int | |
| paper_name | varchar | 试卷名称 |
| paper_type | int | 试卷类型( 1固定试卷 2临时试卷 3班级试卷 4.时段试卷 ) |
| subject_id | int | 学科 |
| system_score | int | 系统判定得分 |
| user_score | int | 最终得分(千分制) |
| paper_score | int | 试卷总分 |
| question_correct | int | 做对题目数量 |
| question_count | int | 题目总数量 |
| do_time | int | 做题时间(秒) |
| status | int | 试卷状态(1待判分 2完成) |
| create_user | int | 学生 |
| create_time | datetime | 提交时间 |
| task_exam_id | int | |
### 试卷题目答案表 t_exam_paper_question_customer_answer
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| question_id | int | 题目Id |
| exam_paper_id | int | 答案Id |
| exam_paper_answer_id | int | |
| question_type | int | 题型 |
| subject_id | int | 学科 |
| customer_score | int | 得分 |
| question_score | int | 题目原始分数 |
| question_text_content_id | int | 问题内容 |
| answer | varchar | 做题答案 |
| text_content_id | int | 做题内容 |
| do_right | bit | 是否正确 |
| create_user | int | 做题人 |
| create_time | datetime | |
| item_order | int | |
### 消息表 t_message
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| title | varchar | 标题 |
| content | varchar | 内容 |
| create_time | datetime | |
| send_user_id | int | 发送者用户ID |
| send_user_name | varchar | 发送者用户名 |
| send_real_name | varchar | 发送者真实姓名 |
| receive_user_count | int | 接收人数 |
| read_count | int | 已读人数 |
### 用户消息表 t_message_user
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| message_id | int | 消息内容ID |
| receive_user_id | int | 接收人ID |
| receive_user_name | varchar | 接收人用户名 |
| receive_real_name | varchar | 接收人真实姓名 |
| readed | bit | 是否已读 |
| create_time | datetime | |
| read_time | datetime | 阅读时间 |
### 题目表 t_question
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| question_type | int | 1.单选题 2.多选题 3.判断题 4.填空题 5.简答题 |
| subject_id | int | 学科 |
| score | int | 题目总分(千分制) |
| grade_level | int | 级别 |
| difficult | int | 题目难度 |
| correct | text | 正确答案 |
| info_text_content_id | int | 题目 填空、 题干、解析、答案等信息 |
| create_user | int | 创建人 |
| status | int | 1.正常 |
| create_time | datetime | 创建时间 |
| deleted | bit | |
### 学科表 t_subject
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| name | varchar | 语文 数学 英语 等 |
| level | int | 年级 (1-12) 小学 初中 高中 大学 |
| level_name | varchar | 一年级、二年级等 |
| item_order | int | 排序 |
| deleted | bit | |
### 任务表 t_task_exam
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| title | varchar | |
| grade_level | int | 级别 |
| frame_text_content_id | int | 任务框架 内容为JSON |
| create_user | int | |
| create_time | datetime | |
| deleted | bit | |
| create_user_name | varchar | |
### 用户任务表 t_task_exam_customer_answer
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| task_exam_id | int | |
| create_user | int | |
| create_time | datetime | |
| text_content_id | int | 任务完成情况(Json) |
### 文本表 t_text_content
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| content | text | |
| create_time | datetime | |
### 用户表 t_user
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| user_uuid | varchar | |
| user_name | varchar | 用户名 |
| password | varchar | |
| real_name | varchar | 真实姓名 |
| age | int | |
| sex | int | 1.男 2女 |
| birth_day | datetime | |
| user_level | int | 学生年级(1-12) |
| phone | varchar | |
| role | int | 1.学生 2.老师 3.管理员 |
| status | int | 1.启用 2禁用 |
| image_path | varchar | 头像地址 |
| create_time | datetime | |
| modify_time | datetime | |
| last_active_time | datetime | |
| deleted | bit | 是否删除 |
| wx_open_id | varchar | 微信openId |
### 用户日志表 t_user_event_log
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| user_id | int | 用户id |
| user_name | varchar | 用户名 |
| real_name | varchar | 真实姓名 |
| content | text | 内容 |
| create_time | datetime | 时间 |
### 用户Token表 t_user_token
| 字段名 | 类型 | 注释 |
| ---- | ---- | ---- |
| id | int | |
| token | varchar | |
| user_id | int | 用户Id |
| wx_open_id | varchar | 微信openId |
| create_time | datetime | |
| end_time | datetime | |
| user_name | varchar | 用户名 |
![架构图](https://gitee.com/mindskip/xzs-mysql/raw/master/doc/image/frame/1.png)
## 项目开发
@ -316,7 +122,7 @@ npm run build
* 执行下列命令,运行程序
```java
nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod xzs-3.2.0.jar > start1.log 2>&1 &
nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod xzs-3.1.0.jar > start1.log 2>&1 &
```
### 前后端分离部署
@ -351,6 +157,6 @@ server {
* 管理员端访问地址为:<http://ip:8001/admin>
```docker
docker pull registry.cn-hangzhou.aliyuncs.com/mindskip/xzs:v3.2.0
docker run -d --name xzs --privileged -it -d -p 8001:8001 -v /etc/localtime:/etc/localtime:ro registry.cn-hangzhou.aliyuncs.com/mindskip/xzs:v3.2.0 /usr/sbin/init
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
```

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<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="vue.css">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="xzs.css">
<link rel="shortcut icon" href="favicon.png">
</head>
@ -35,8 +35,7 @@
coverpage: false
}
</script>
<!-- Docsify v4 -->
<script src="docsify@4.js"></script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

14185
source/vue/xzs-admin/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

View File

@ -27,12 +27,6 @@
</el-table-column>
<el-table-column prop="doTime" label="耗时" width="100px"/>
<el-table-column prop="createTime" label="提交时间" width="160px"/>
<el-table-column label="操作" width="160px">
<template slot-scope="scope" >
<el-button v-show="scope.row.status == 1" type="primary" round @click="toedit(scope.row.id,1)">批改</el-button>
<el-button v-show="scope.row.status == 2" type="primary" round @click="toedit(scope.row.id,0)">查看试卷</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
@pagination="search"/>
@ -78,13 +72,6 @@ export default {
this.queryParam.pageIndex = 1
this.search()
},
toedit(id,type){
if(type == 1){
window.open("/student/index.html#/edit?id=" + id)
}else{
window.open("/student/index.html#/read?id=" + id)
}
},
...mapActions('exam', { initSubject: 'initSubject' })
},
computed: {

View File

@ -19,7 +19,7 @@ module.exports = {
hotOnly: false,
proxy: {
'/api': {
target: 'http://129.211.1.159:8080',
target: 'http://localhost:8000',
changeOrigin: true
}
}

File diff suppressed because it is too large Load Diff

14180
source/vue/xzs-student/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@
"babel-eslint": "^10.0.3",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"node-sass": "^4.0.0",
"node-sass": "^4.14.1",
"sass-loader": "^8.0.0",
"svg-sprite-loader": "4.1.6",
"vue-template-compiler": "^2.6.10"

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

View File

@ -1,5 +1,6 @@
import axios from 'axios'
import vue from 'vue'
const request = function (loadtip, query) {
let loading
if (loadtip) {

View File

@ -50,8 +50,8 @@
</el-row>
<el-row class="app-item-contain">
<h3 class="index-title-h3">固定试卷</h3>
<div style="padding-left: 15px;display: flex;flex-wrap: wrap;">
<el-col style="float: unset;" :span="4" v-for="(item, index) in fixedPaper" :key="index" :offset="index > 0 ? 1 : 0">
<div style="padding-left: 15px">
<el-col :span="4" v-for="(item, index) in fixedPaper" :key="index" :offset="index > 0 ? 1 : 0">
<el-card :body-style="{ padding: '0px' }" v-loading="loading">
<img src="@/assets/exam-paper/show1.png" class="image">
<div style="padding: 14px;">

View File

@ -67,13 +67,10 @@
<span v-html="question.analyze" class="q-item-span-content" />
</div>
<div class="question-answer-show-item">
<span :class="{'question-show-item': qType!=4}">正确答案</span>
<span class="question-show-item">正确答案</span>
<span v-if="qType==1||qType==2 ||qType==5" v-html="question.correct" class="q-item-span-content"/>
<span v-if="qType==3" v-html="trueFalseFormatter(question)" class="q-item-span-content"/>
<!-- <span v-if="qType==4" v-for="(item,key) in question.correctArray" :key="key" v-html="item"></span> -->
<ol v-if="qType==4">
<li v-for="(item,key) in question.correctArray" :key="key" v-html="item"></li>
</ol>
<span v-if="qType==4">{{question.correctArray}}</span>
</div>
</div>
<div v-else>

View File

@ -95,7 +95,7 @@ export default {
_this.$alert('试卷得分:' + re.response + '分', '考试结果', {
confirmButtonText: '返回考试记录',
callback: action => {
window.close()
_this.$router.push('/record/index')
}
})
} else {

View File

@ -16,11 +16,10 @@
<el-table-column prop="createTime" label="做题时间" width="170" />
<el-table-column align="right" width="70">
<template slot-scope="{row}">
<!-- <router-link target="_blank" :to="{path:'/edit',query:{id:row.id}}" v-if="row.status === 1 ">
<router-link target="_blank" :to="{path:'/edit',query:{id:row.id}}" v-if="row.status === 1 ">
<el-button type="text" size="small">批改</el-button>
</router-link> -->
<!-- v-if="row.status === 2 -->
<router-link target="_blank" :to="{path:'/read',query:{id:row.id}}">
</router-link>
<router-link target="_blank" :to="{path:'/read',query:{id:row.id}}" v-if="row.status === 2 ">
<el-button type="text" size="small">查看试卷</el-button>
</router-link>
</template>

View File

@ -19,7 +19,7 @@ module.exports = {
hotOnly: false,
proxy: {
'/api': {
target: 'http://129.211.1.159:8080',
target: 'http://localhost:8000',
changeOrigin: true
}
}

File diff suppressed because it is too large Load Diff

View File

@ -68,8 +68,6 @@ public class SecurityConfigurer {
.authorizeRequests()
.antMatchers(securityIgnoreUrls.toArray(ignores)).permitAll()
.antMatchers("/api/admin/**").hasRole(RoleEnum.ADMIN.getName())
.antMatchers("/api/student/exampaper/answer/read/*").hasAnyRole(RoleEnum.ADMIN.getName(),RoleEnum.STUDENT.getName())
.antMatchers("/api/student/exampaper/answer/edit").hasAnyRole(RoleEnum.ADMIN.getName())
.antMatchers("/api/student/**").hasRole(RoleEnum.STUDENT.getName())
.anyRequest().permitAll()
.and().exceptionHandling().accessDeniedHandler(restAccessDeniedHandler)

View File

@ -44,7 +44,7 @@ public class ExamPaperAnswerController extends BaseApiController {
vm.setSubjectName(subject.getName());
vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
User user = userService.selectById(e.getCreateUser());
vm.setUserName(user.getRealName());
vm.setUserName(user.getUserName());
return vm;
});
return RestResponse.ok(page);

View File

@ -3,9 +3,9 @@ logging:
spring:
redis:
host: 127.0.0.1
host: 192.168.0.96
datasource:
url: jdbc:mysql://127.0.0.1:3306/tiku?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: Ggy101600!
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

View File

@ -1,5 +1,5 @@
server:
port: 8080
port: 8000
undertow:
io-threads: 16
worker-threads: 4000
@ -56,7 +56,6 @@ pagehelper:
spring:
session:
store-type: redis
timeout: 86400
datasource:
hikari:
idle-timeout: 600000 #10 min

View File

@ -293,7 +293,7 @@
and #{dateTime} between limit_start_time and limit_end_time
</if>
</where>
ORDER BY id desc
ORDER BY id desc limit 5
</select>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><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%;
}
@ -13,4 +13,4 @@
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-066bbd34.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-099b9c43.1951fa25.css" rel="prefetch"><link href="static/css/chunk-157f9069.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-19291efa.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-2e16d177.89936c18.css" rel="prefetch"><link href="static/css/chunk-360c43ba.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-3f483335.7fbe318e.css" rel="prefetch"><link href="static/css/chunk-42236473.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-5bc3d75d.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-65f8ca6f.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-7741c2bf.d650a2aa.css" rel="prefetch"><link href="static/css/chunk-7c62808c.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-a85d3c1e.8287280f.css" rel="prefetch"><link href="static/css/chunk-a9d03770.0fe86cb0.css" rel="prefetch"><link href="static/css/chunk-bab2e2c4.0fe86cb0.css" rel="prefetch"><link href="static/js/chunk-066bbd34.f0457694.js" rel="prefetch"><link href="static/js/chunk-099b9c43.9298ae82.js" rel="prefetch"><link href="static/js/chunk-157f9069.f003ea6f.js" rel="prefetch"><link href="static/js/chunk-16f9edc1.7b8dad0f.js" rel="prefetch"><link href="static/js/chunk-19291efa.66883764.js" rel="prefetch"><link href="static/js/chunk-2d0c138b.3ad920de.js" rel="prefetch"><link href="static/js/chunk-2d221bd2.1c6437e5.js" rel="prefetch"><link href="static/js/chunk-2d2300ef.60f02a7d.js" rel="prefetch"><link href="static/js/chunk-2d230fe7.a21e19a8.js" rel="prefetch"><link href="static/js/chunk-2e16d177.bcbb7ceb.js" rel="prefetch"><link href="static/js/chunk-360c43ba.3c1f02fa.js" rel="prefetch"><link href="static/js/chunk-3f483335.409fa3a4.js" rel="prefetch"><link href="static/js/chunk-42236473.219a1360.js" rel="prefetch"><link href="static/js/chunk-5bc3d75d.5640a809.js" rel="prefetch"><link href="static/js/chunk-5d5cbe73.e9da2c17.js" rel="prefetch"><link href="static/js/chunk-65f8ca6f.807955c2.js" rel="prefetch"><link href="static/js/chunk-733c35b2.ce9fdb48.js" rel="prefetch"><link href="static/js/chunk-75f11c77.b4b89710.js" rel="prefetch"><link href="static/js/chunk-7741c2bf.f02cdd08.js" rel="prefetch"><link href="static/js/chunk-78234ca2.41f829a6.js" rel="prefetch"><link href="static/js/chunk-7c62808c.0a927631.js" rel="prefetch"><link href="static/js/chunk-a85d3c1e.781ccce8.js" rel="prefetch"><link href="static/js/chunk-a9d03770.15a91226.js" rel="prefetch"><link href="static/js/chunk-bab2e2c4.734397cc.js" rel="prefetch"><link href="static/js/chunk-d0753fda.cad95821.js" rel="prefetch"><link href="static/css/chunk-vendors.ee57d822.css" rel="preload" as="style"><link href="static/css/index.d8d9b9e2.css" rel="preload" as="style"><link href="static/js/chunk-vendors.d739977f.js" rel="preload" as="script"><link href="static/js/index.c8ae58d0.js" rel="preload" as="script"><link href="static/css/chunk-vendors.ee57d822.css" rel="stylesheet"><link href="static/css/index.d8d9b9e2.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.d739977f.js"></script><script src="static/js/index.c8ae58d0.js"></script></body></html>
})()</script><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-19291efa.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-3f483335.7fbe318e.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-066bbd34.8c049bb7.js" rel="prefetch"><link href="static/js/chunk-111f3671.4c2227bd.js" rel="prefetch"><link href="static/js/chunk-157f9069.2a2ffd47.js" rel="prefetch"><link href="static/js/chunk-16f9edc1.e12730ad.js" rel="prefetch"><link href="static/js/chunk-19291efa.bae3d3e0.js" rel="prefetch"><link href="static/js/chunk-2d0c138b.ff17e698.js" rel="prefetch"><link href="static/js/chunk-2d221bd2.586cf167.js" rel="prefetch"><link href="static/js/chunk-2d2300ef.31228a21.js" rel="prefetch"><link href="static/js/chunk-2d230fe7.3bd3f709.js" rel="prefetch"><link href="static/js/chunk-2e16d177.9fe950b0.js" rel="prefetch"><link href="static/js/chunk-360c43ba.45b8867e.js" rel="prefetch"><link href="static/js/chunk-3f483335.d8f930c4.js" rel="prefetch"><link href="static/js/chunk-42236473.aed74adb.js" rel="prefetch"><link href="static/js/chunk-5bc3d75d.a8c7121b.js" rel="prefetch"><link href="static/js/chunk-65f8ca6f.b96de11f.js" rel="prefetch"><link href="static/js/chunk-733c35b2.3f36c42f.js" rel="prefetch"><link href="static/js/chunk-75f11c77.9ffd406c.js" rel="prefetch"><link href="static/js/chunk-78234ca2.2b01cce9.js" rel="prefetch"><link href="static/js/chunk-793f0082.d38eb1ab.js" rel="prefetch"><link href="static/js/chunk-7c62808c.03172c2b.js" rel="prefetch"><link href="static/js/chunk-873a42e2.b76c19b6.js" rel="prefetch"><link href="static/js/chunk-a85d3c1e.9dae7794.js" rel="prefetch"><link href="static/js/chunk-a9d03770.3d0b088b.js" rel="prefetch"><link href="static/js/chunk-bab2e2c4.cf6e5b3d.js" rel="prefetch"><link href="static/js/chunk-d0753fda.4de701a1.js" rel="prefetch"><link href="static/css/chunk-vendors.ee57d822.css" rel="preload" as="style"><link href="static/css/index.9dc49bd0.css" rel="preload" as="style"><link href="static/js/chunk-vendors.6ba47d39.js" rel="preload" as="script"><link href="static/js/index.3d9957c8.js" rel="preload" as="script"><link href="static/css/chunk-vendors.ee57d822.css" rel="stylesheet"><link href="static/css/index.9dc49bd0.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.6ba47d39.js"></script><script src="static/js/index.3d9957c8.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d230fe7"],{ef3c:function(e,r,n){"use strict";n.r(r);n("5319"),n("ac1f");var t,u,a={created:function(){var e=this.$route,r=e.params,n=e.query,t=r.path;this.$router.replace({path:"/"+t,query:n})},render:function(e){return e()}},c=a,o=n("2877"),p=Object(o["a"])(c,t,u,!1,null,null,null);r["default"]=p.exports}}]);
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d230fe7"],{ef3c:function(e,r,n){"use strict";n.r(r);n("ac1f"),n("5319");var t,u,a={created:function(){var e=this.$route,r=e.params,n=e.query,t=r.path;this.$router.replace({path:"/"+t,query:n})},render:function(e){return e()}},c=a,o=n("2877"),p=Object(o["a"])(c,t,u,!1,null,null,null);r["default"]=p.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-099b9c43"],{"1db4":function(t,s,i){"use strict";i.r(s);var a=function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[t._m(0),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),i("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),i("div",{staticClass:"bullshit__info"},[t._v("请检查你的访问地址是否正确, 或点击下面按钮返回主页.")]),i("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("返回主页")])])])])},c=[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"pic-404"},[a("img",{staticClass:"pic-404__parent",attrs:{src:i("a36b"),alt:"404"}}),a("img",{staticClass:"pic-404__child left",attrs:{src:i("26fc"),alt:"404"}}),a("img",{staticClass:"pic-404__child mid",attrs:{src:i("26fc"),alt:"404"}}),a("img",{staticClass:"pic-404__child right",attrs:{src:i("26fc"),alt:"404"}})])}],l={name:"Page404",computed:{message:function(){return"页面未找到..."}}},n=l,e=(i("8485"),i("2877")),r=Object(e["a"])(n,a,c,!1,null,"52fe14af",null);s["default"]=r.exports},"26fc":function(t,s,i){t.exports=i.p+"static/img/404_cloud.0f4bc32b.png"},8485:function(t,s,i){"use strict";i("9648")},9648:function(t,s,i){},a36b:function(t,s,i){t.exports=i.p+"static/img/404.a57b6f31.png"}}]);
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-873a42e2"],{"1db4":function(t,s,i){"use strict";i.r(s);var a=function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[t._m(0),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),i("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),i("div",{staticClass:"bullshit__info"},[t._v("请检查你的访问地址是否正确, 或点击下面按钮返回主页.")]),i("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("返回主页")])])])])},c=[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"pic-404"},[a("img",{staticClass:"pic-404__parent",attrs:{src:i("a36b"),alt:"404"}}),a("img",{staticClass:"pic-404__child left",attrs:{src:i("26fc"),alt:"404"}}),a("img",{staticClass:"pic-404__child mid",attrs:{src:i("26fc"),alt:"404"}}),a("img",{staticClass:"pic-404__child right",attrs:{src:i("26fc"),alt:"404"}})])}],l={name:"Page404",computed:{message:function(){return"页面未找到..."}}},e=l,n=(i("8485"),i("2877")),r=Object(n["a"])(e,a,c,!1,null,"52fe14af",null);s["default"]=r.exports},"26fc":function(t,s,i){t.exports=i.p+"static/img/404_cloud.0f4bc32b.png"},8485:function(t,s,i){"use strict";i("9648")},9648:function(t,s,i){},a36b:function(t,s,i){t.exports=i.p+"static/img/404.a57b6f31.png"}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,17 +0,0 @@
<!DOCTYPE html><html><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%;
}
body {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}</style><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-099b9c43.1951fa25.css" rel="prefetch"><link href="static/css/chunk-122e80b5.87ccd637.css" rel="prefetch"><link href="static/css/chunk-1d601c29.87ccd637.css" rel="prefetch"><link href="static/css/chunk-31aa2150.ad364b97.css" rel="prefetch"><link href="static/css/chunk-32d09f6a.b56209ba.css" rel="prefetch"><link href="static/css/chunk-5001fd2c.7bab6136.css" rel="prefetch"><link href="static/css/chunk-66bf5956.87ccd637.css" rel="prefetch"><link href="static/css/chunk-69a4052e.54efd6ce.css" rel="prefetch"><link href="static/css/chunk-7d11f9e8.4381df1f.css" rel="prefetch"><link href="static/css/chunk-a938f5fc.87ccd637.css" rel="prefetch"><link href="static/css/chunk-efc0f600.55fc2650.css" rel="prefetch"><link href="static/js/chunk-099b9c43.10f93443.js" rel="prefetch"><link href="static/js/chunk-122e80b5.1888b1be.js" rel="prefetch"><link href="static/js/chunk-1d601c29.519a987f.js" rel="prefetch"><link href="static/js/chunk-2d20f362.f7566b72.js" rel="prefetch"><link href="static/js/chunk-31aa2150.6669a7f5.js" rel="prefetch"><link href="static/js/chunk-32d09f6a.69a9813d.js" rel="prefetch"><link href="static/js/chunk-5001fd2c.38bd24a7.js" rel="prefetch"><link href="static/js/chunk-66bf5956.0bbb6aee.js" rel="prefetch"><link href="static/js/chunk-69a4052e.e5d45fa3.js" rel="prefetch"><link href="static/js/chunk-7d11f9e8.e9fb9895.js" rel="prefetch"><link href="static/js/chunk-a938f5fc.593d7d54.js" rel="prefetch"><link href="static/js/chunk-aa32bb26.e145ebd5.js" rel="prefetch"><link href="static/js/chunk-efc0f600.da82a70b.js" rel="prefetch"><link href="static/css/chunk-vendors.f445a17a.css" rel="preload" as="style"><link href="static/css/index.9fe4a73d.css" rel="preload" as="style"><link href="static/js/chunk-vendors.4379415b.js" rel="preload" as="script"><link href="static/js/index.81977f7e.js" rel="preload" as="script"><link href="static/css/chunk-vendors.f445a17a.css" rel="stylesheet"><link href="static/css/index.9fe4a73d.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.4379415b.js"></script><script src="static/js/index.81977f7e.js"></script></body></html>

View File

@ -1 +0,0 @@
.wscn-http404-container[data-v-52fe14af]{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;top:40%;left:50%}.wscn-http404[data-v-52fe14af]{position:relative;width:1200px;padding:0 50px;overflow:hidden}.wscn-http404 .pic-404[data-v-52fe14af]{position:relative;float:left;width:600px;overflow:hidden}.wscn-http404 .pic-404__parent[data-v-52fe14af]{width:100%}.wscn-http404 .pic-404__child[data-v-52fe14af]{position:absolute}.wscn-http404 .pic-404__child.left[data-v-52fe14af]{width:80px;top:17px;left:220px;opacity:0;-webkit-animation-name:cloudLeft-data-v-52fe14af;animation-name:cloudLeft-data-v-52fe14af;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}.wscn-http404 .pic-404__child.mid[data-v-52fe14af]{width:46px;top:10px;left:420px;opacity:0;-webkit-animation-name:cloudMid-data-v-52fe14af;animation-name:cloudMid-data-v-52fe14af;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1.2s;animation-delay:1.2s}.wscn-http404 .pic-404__child.right[data-v-52fe14af]{width:62px;top:100px;left:500px;opacity:0;-webkit-animation-name:cloudRight-data-v-52fe14af;animation-name:cloudRight-data-v-52fe14af;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes cloudLeft-data-v-52fe14af{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudLeft-data-v-52fe14af{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@-webkit-keyframes cloudMid-data-v-52fe14af{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudMid-data-v-52fe14af{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@-webkit-keyframes cloudRight-data-v-52fe14af{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}@keyframes cloudRight-data-v-52fe14af{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.wscn-http404 .bullshit[data-v-52fe14af]{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.wscn-http404 .bullshit__oops[data-v-52fe14af]{font-size:32px;line-height:40px;color:#1482f0;margin-bottom:20px;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__headline[data-v-52fe14af],.wscn-http404 .bullshit__oops[data-v-52fe14af]{font-weight:700;opacity:0;-webkit-animation-name:slideUp-data-v-52fe14af;animation-name:slideUp-data-v-52fe14af;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__headline[data-v-52fe14af]{font-size:20px;line-height:24px;color:#222;margin-bottom:10px;-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-52fe14af]{font-size:13px;line-height:21px;color:grey;margin-bottom:30px;-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-52fe14af],.wscn-http404 .bullshit__return-home[data-v-52fe14af]{opacity:0;-webkit-animation-name:slideUp-data-v-52fe14af;animation-name:slideUp-data-v-52fe14af;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__return-home[data-v-52fe14af]{display:block;float:left;width:110px;height:36px;background:#1482f0;border-radius:100px;text-align:center;color:#fff;font-size:14px;line-height:36px;cursor:pointer;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slideUp-data-v-52fe14af{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUp-data-v-52fe14af{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}

View File

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

View File

@ -1 +0,0 @@
.align-center[data-v-a51a27fe]{text-align:center}.exam-question-item[data-v-a51a27fe]{padding:10px}.exam-question-item .el-form-item__label[data-v-a51a27fe]{font-size:15px!important}.question-title-padding[data-v-a51a27fe]{padding-left:25px;padding-right:25px}

File diff suppressed because one or more lines are too long

View File

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

View File

@ -1 +0,0 @@
.align-center[data-v-15c1a324]{text-align:center}.exam-question-item[data-v-15c1a324]{padding:10px}.exam-question-item .el-form-item__label[data-v-15c1a324]{font-size:15px!important}.question-title-padding[data-v-15c1a324]{padding-left:25px;padding-right:25px}

File diff suppressed because one or more lines are too long

View File

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

View File

@ -1 +0,0 @@
.align-center[data-v-367a3d4c]{text-align:center}.exam-question-item[data-v-367a3d4c]{padding:10px}.exam-question-item .el-form-item__label[data-v-367a3d4c]{font-size:15px!important}.question-title-padding[data-v-367a3d4c]{padding-left:25px;padding-right:25px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

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