Commit c2ef6744 by @xu-tengbo

a

parent 16a8956b
# 页面标题
VUE_APP_TITLE = 艺考报名系统
# 开发环境配置
ENV = 'development'
# 智慧校园/开发环境
VUE_APP_BASE_API = '/dev-api'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 页面标题
VUE_APP_TITLE = 艺考报名系统
# 生产环境配置
ENV = 'production'
# 智慧校园/生产环境
VUE_APP_BASE_API = '/prod-api'
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
2222 # art-exam-web
\ No newline at end of file
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "art-exam-web",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "^1.3.5",
"core-js": "^3.8.3",
"element-ui": "^2.15.13",
"js-cookie": "^3.0.4",
"nprogress": "^0.2.0",
"print-js": "^1.6.0",
"vue": "^2.6.14",
"vue-axios": "^3.5.2",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"less": "^4.0.0",
"less-loader": "^8.0.0",
"mockjs": "^1.1.0",
"vue-template-compiler": "^2.6.14"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
</body>
</html>
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App',
created () {
// 在页面加载时读取sessionStorage里的状态信息
if (sessionStorage.getItem('store')) {
this.$store.replaceState(
Object.assign(
{},
this.$store.state,
JSON.parse(sessionStorage.getItem('store'))
)
)
} // 在页面刷新时将vuex里的信息保存到sessionStorage里 // beforeunload事件在页面刷新时先触发
window.addEventListener('beforeunload', () => {
sessionStorage.setItem('store', JSON.stringify(this.$store.state))
})
},
}
</script>
import request from '@/utils/request';
// 登录
export function login(idCard, phoneNumber, password) {
const data = {
idCard,
phoneNumber,
password,
}
return request({
url: '/web/artStudent/login',
headers: {
isToken: false
},
method: 'post',
data: data
})
}
// 注册
export function register(data) {
return request({
url: '/web/artStudent/register',
method: 'post',
data:data
})
}
// 获取信息
export function getInfo() {
return request({
url: '/web/artStudent/getInfo',
method: 'get'
})
}
// 退出登录
export function logout() {
return request({
url: '/web/artStudent/logout',
method: 'get'
})
}
\ No newline at end of file
import request from '@/utils/request';
// 获取考试列表
export function getList(studentId) {
return request({
url: '/web/artStudent/list/' + studentId,
method: 'get'
})
}
// 是否能进入
export function isEnter(testId,studentId) {
return request({
url: '/web/artStudent/enterBtn/' + testId + '/' + studentId,
method: 'get'
})
}
// 判断页面
export function allInfo(testId,studentId) {
return request({
url: '/web/artStudent/enter/all/' + testId + '/' + studentId,
method: 'get'
})
}
export function getAvatar(data) {
return request({
url: '/web/artStudent/avatar',
method: 'post',
headers: {
'Content-Type': 'multipart/form-data'
},
data: data
})
}
// 报名暂存
export function webSave(data,testId) {
return request({
url: '/web/artStudent/webSave/' + testId,
method: 'put',
data: data
})
}
// 报名提交
export function webSubmit(data,testId) {
return request({
url: '/web/artStudent/webSubmit/' + testId,
method: 'put',
data: data
})
}
// 打印准考证
export function printCard(testId,studentId) {
return request({
url: '/web/artStudent/enterPrint/' + testId + '/' + studentId,
method: 'get'
})
}
// 考试成绩查询
export function scoreView(testId,studentId) {
return request({
url: '/web/artStudent/enterScore/' + testId + '/' + studentId,
method: 'get'
})
}
// 测试项目
export function getProject(testId) {
return request({
url: '/web/artStudent/getProjectList/' + testId,
method: 'get'
})
}
// 初中学校
export function getSchoolList() {
return request({
url: '/web/artStudent/schoolList',
method: 'get'
})
}
\ No newline at end of file
<template>
<div class="check">
<div style="margin-top: 10px; ">
<div style=" display: inline-block; margin-left: 10px; margin-right: 10px; width: 8px; height: 30px; background: #2a7eec"></div>
<b style="line-height: 30px; vertical-align: top">审 核</b>
<el-divider></el-divider>
</div>
<div class="shade" v-if="success== 1 || success== 3">
<div class="shadeImg">
<el-image v-show="success==1" :src="successPng" style="width: 300px; height: 250px"
alt="报名成功"/>
<el-image v-show="success==3" :src="checkPng" style="width: 200px; height: 180px"
alt="审批中"/>
</div>
<div class="shadeBackGround">
</div>
</div>
<div class="value">
<el-form ref="form" style="margin-top: 50px; width: 100%;" :model="form" label-width="90px"
:rules="rules"
v-loading="loading">
<el-row :gutter="25">
<el-col :offset="1" :span="4" style="text-align: center">
<el-form-item label-width="0px" prop="photo">
<el-upload class="avatar-uploader" action="#"
:show-file-list="false"
:http-request="handleUpload"
:before-upload="beforeAvatarUpload"
>
<!-- <img v-if="form.photo" :src="prefix + form.photo" class="avatar">-->
<img v-if="form.photo" :src="form.photoData" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<br/>
<b style="color:rgb(96,98,102)">照 片</b>
</el-col>
<el-col :span="6">
<el-form-item label="姓名" prop="studentName">
<el-input disabled v-model="form.studentName"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idCard">
<el-input disabled v-model="form.idCard"></el-input>
</el-form-item>
<el-form-item label="学籍号" prop="studentNumber">
<el-input v-model.trim="form.studentNumber" placeholder="请输入学籍号"></el-input>
</el-form-item>
<el-form-item label="初中学校" prop="schoolName">
<el-select v-model="form.juniorId" @change="handleChange"
placeholder="请选择初中学校"
style="width:100%">
<el-option v-for="item in schoolList" :key="item.schoolId" :label="item.name"
:value="item.schoolId"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="性别" prop="sex">
<el-select disabled v-model="form.sex" placeholder="请选择性别" style="width:100%">
<el-option label="男" value="0"></el-option>
<el-option label="女" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="身高" prop="height">
<el-input v-model.trim="form.height" placeholder="请输入身高">
<i slot="suffix" style="font-style:normal;">cm</i>
</el-input>
</el-form-item>
<el-form-item label="体重" prop="weight">
<el-input v-model.trim="form.weight" placeholder="请输入体重">
<i slot="suffix" style="font-style:normal;">kg</i>
</el-input>
</el-form-item>
<el-form-item label="测试项目" prop="project">
<el-select v-model="+form.testId" @change="handleTestChange"
placeholder="请选择测试项目"
style="width:100%">
<el-option v-for="item in projectList" :key="item.projectId" :label="item.name"
:value="item.projectId"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系方式1" prop="telephone1">
<el-input v-model.trim="form.telephone1" placeholder="请输入联系方式1"></el-input>
</el-form-item>
<el-form-item label="联系方式2" prop="telephone2">
<el-input v-model.trim="form.telephone2" placeholder="请输入联系方式2"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item style=" width: 300px; margin: auto">
<br/>
<el-button type="primary" @click="onSubmit">提 交</el-button>
<!-- <el-button @click="onStorage">暂 存</el-button>-->
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import {webSubmit, getProject, getSchoolList, getAvatar, allInfo} from '@/api/student'
import {validatePhone} from "@/utils/validate";
import checkPng from '@/assets/image/check.png'
import successPng from '@/assets/image/success.png'
export default {
name: 'Check',
props: ['PropTestId'],
created() {
this.studentId = this.$store.state.user.studentId
this.getProjectList()
this.getSchool()
//获取表单数据
this.getAllInfo()
},
computed: {
success: {
get() {
return this.form?.auditStatus
}
}
},
data() {
const isNum = (rule, value, callback) => {
const age = /^[0-9]*$/
if (!age.test(value)) {
callback(new Error('只能为数字'))
} else {
callback()
}
}
return {
base64Img: undefined,
uploadFile: undefined,
checkPng,
successPng,
form: {
juniorId: '',
studentName: '',// 学生姓名
id: '',// 学生id
idCard: '',// 身份证
studentNumber: '',// 学籍号
schoolName: '',// 初中学校
sex: '',// 性别
height: '',// 身高
weight: '',// 体重
project: '',// 测试项目
testId: '',
telephone1: '',// 联系方式1
telephone2: '',// 联系方式2
photo: '',// 照片url
photoData: ''// 照片base64
},
loading: false,
testId: '',// 考试id
studentId: '',
projectList: [],// 项目列表
schoolList: [],// 学校列表
imgUrl: '',// 当前图片
prefix: 'http://localhost:8848',//前缀
// 表单校验
rules: {
studentNumber: [
{required: true, message: '学籍号不能为空', trigger: 'blur'}
],
schoolName: [
{required: true, message: '初中学校不能为空', trigger: 'blur'}
],
photo: [
{required: true, message: '图片不能为空,请上传', trigger: 'blur'}
],
// sex: [
// {required: true, message: '请选择性别', trigger: 'blur'}
// ],
height: [
{required: true, message: '身高不能为空', trigger: 'blur'},
{validator: isNum, trigger: 'blur'}
],
weight: [
{required: true, message: '体重不能为空', trigger: 'blur'},
{validator: isNum, trigger: 'blur'}
],
project: [
{required: true, message: '测试项目不能为空', trigger: 'blur'}
],
telephone1: [
{required: true, message: '联系方式1不能为空', trigger: 'blur'},
{required: true, validator: validatePhone, trigger: "blur"}
],
telephone2: [
{required: true, message: '联系方式2不能为空', trigger: 'blur'},
{required: true, validator: validatePhone, trigger: "blur"}
],
}
}
},
methods: {
getAllInfo() {
allInfo(this.PropTestId, this.studentId).then(res => {
if (res.node == 3) {
/** 进入打印准考证模块 */
this.$emit("changeTab", 2, "打印准考证")
} else {
this.form = res.data
}
})
},
getSchool() {
getSchoolList().then(res => {
this.schoolList = res.rows.map(item => {
return {
schoolId: item.id,
name: item.schoolName
}
})
})
},
getProjectList() {
getProject(this.PropTestId).then(res => {
this.projectList = res.rows.map(item => {
return {
projectId: item.id,
name: item.project
}
})
})
},
async handleUpload(file) {
this.uploadFile = file
let formData = new FormData();
formData.append("file", file.file);
let res = await getAvatar(formData)
if (res.code == 200) {
await this.handleAvatar()
this.form.photo = res.url
this.$message({
type: 'success',
message: '照片上传成功!'
});
}
},
handleAvatar() {
let reader = new FileReader(); //创建实例
reader.readAsDataURL(this.uploadFile.file);
reader.onload = (e) => {
this.$set(this.form, "photoData", reader.result)
this.base64Img = reader.result
}
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
this.imageUrl = URL.createObjectURL(file);
return isJPG && isLt2M;
},
// 处理上传图片后更改仓库图片
handleUploadPhoto() {
this.$store.commit('SET_PHOTO', this.form.photo)
this.$store.commit('SET_PHOTODATA', this.base64Img)
},
onSubmit() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$confirm('是否确认提交', '提示', {
type: 'info'
}).then(async () => {
let res = await webSubmit(this.form, this.PropTestId)
if (res.code == 200) {
this.handleUploadPhoto()
}
}).then(res => {
this.$message({
type: 'success',
message: '提交成功!'
});
this.getAllInfo()
this.$emit("changeTab", 1, "审核")
}).catch((err) => {
})
}
})
},
// 处理初中学校选中变化
handleChange(value) {
const item = this.schoolList?.find(i => i.schoolId === value);
this.form.schoolName = item.name;
},
// 处理测试项目的
handleTestChange(value) {
const item = this.projectList?.find(i => i.projectId === value);
this.form.project = item.name;
},
}
}
</script>
<style scoped lang="less">
.avatar-uploader {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 180px;
height: 200px;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 180px;
height: 200px;
display: block;
}
.check {
position: relative;
width: 100%;
//height: 100vh;
//height: 780px;
}
.shade {
width: 100%;
height: 738px;
position: absolute;
z-index: 9;
//background: darkgreen;
}
.shadeImg {
position: absolute;
z-index: 9;
left: 40%;
top: 10%;
}
.shadeBackGround {
position: absolute;
width: 100%;
height: 740px;
background: #252424;
opacity: 0.2;
}
.value {
position: absolute;
width: 100%;
}
.el-divider--horizontal {
margin-top: 10px;
margin-bottom: 0px;
}
</style>
<template>
<div class="box1">
<div class="web-icon">
<el-image @click="returnIndex" :src="logo" alt="加载失败了"></el-image>
</div>
<span class="web-title" @click="returnIndex">艺考报名网</span>
<div class="drawer">
<el-dropdown>
<div class="el-dropdown-link">
<el-image :src="pic"
style="vertical-align: middle; border-radius: 50%; width: 45px; height: 45px"
alt="头像">
</el-image>&emsp;
{{ name }}<i class="el-icon-arrow-down el-icon--right"></i>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<el-button type="text" @click="handleLogout">退出登录</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</template>
<script>
import logo from '@/assets/logo.png'
import defaultPhoto from '@/assets/image/photo.png'
export default {
name: 'HeadInfo',
props: ['name'],
computed: {
pic: {
get() {
if (this.$store.state.user.photo) {
return this.$store.state.user.photoData
} else {
return defaultPhoto
}
}
}
},
data() {
return {
logo,
baseUrl: 'http://localhost:8848',//前缀
}
},
methods: {
returnIndex() {
this.$router.push({
path: "/"
})
},
handleLogout() {
this.$alert('是否确认退出登录?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(() => {
this.$store.dispatch('LogOut').then(res => {
this.$router.push({
path: '/login'
}).catch(() => {
});
})
})
}
}
}
</script>
<style scoped lang="less">
.box1 {
margin-top: 10px;
height: 120px;
}
.web-icon {
width: 70px;
height: 70px;
display: inline-block;
//&:hover {
// background: white;
//}
}
.web-title {
margin-left: 40px;
color: white;
font-size: 28px;
display: inline-block;
width: 5em;
height: 80px;
vertical-align: bottom;
line-height: 80px;
font-weight: bold;
}
.drawer {
width: 160px;
text-align: center;
height: 80px;
line-height: 80px;
display: inline-block;
float: right;
}
.photo-icon {
float: left;
width: 27px;
height: 27px;
background-image: url(../assets/image/photo.png);
}
</style>
<style scoped>
.el-dropdown-link {
font-size: 18px;
cursor: pointer;
color: #ffffff;
}
.el-icon-arrow-down {
font-size: 12px;
}
</style>
\ No newline at end of file
<template>
<div class="print">
<div style="margin-top: 10px;">
<div style=" display: inline-block; margin-left: 10px; margin-right: 10px; width: 8px; height: 30px; background: #2a7eec"></div>
<b style="line-height: 30px; vertical-align: top">打印准考证</b>
<el-divider></el-divider>
</div>
<!-- 打印 -->
<div class="pic" v-if="!hasAdmissionCard">
<div style="font-weight: 700">暂无准考证信息</div>
</div>
<div v-else>
<el-button type="primary" style="display:block; font-weight: bold; margin: auto"
@click="print">打印准考证
</el-button>
<el-card style="width: 940px; margin: auto">
<!-- <div id="printArea" style="background: gold; margin: auto; width: 900px; height: 100%">-->
<br/>
<div id="printArea" class="main">
<br/>
<div class="title">东营市第二中学{{
todayYear
}}特色招生专业测试
</div>
<div class="titleSub">
准考证
</div>
<br/><br/><br/>
<div>
<div class="left">
<ul style="margin-left: 40px">
<li>
<b>姓名:</b>{{ examForm.studentName }}<br/><br/>
</li>
<li>
<b>准考证号:</b>{{ examForm.examNumber }}<br/><br/>
</li>
<li>
<b>测试项目:</b>{{ examForm.project }}<br/><br/>
</li>
<li>
<b>组别(座号):</b>{{ examForm.inGroup }}<br/><br/>
</li>
<li>
<b>联系电话:</b>{{ examForm.phoneNumber }}<br/><br/>
</li>
<li>
<b>毕业学校:</b>{{ examForm.schoolName }}<br/><br/>
</li>
</ul>
</div>
<div class="right">
<el-image :src="examForm.photoData"
style="width: 180px; height: 220px;"></el-image>
</div>
</div>
<table border="1">
<tr>
<th style="width: 35%;height: 30px;text-align: center;">考试时间({{
todayYear
}}年)
</th>
<th style="width: 30%;height: 30px;text-align: center;">考试时间</th>
<th style="width: 35%;height: 30px;text-align: center;">考试地点</th>
</tr>
<tr>
<th style="height: 30px;text-align: center;">{{ examForm.examDate }}</th>
<th style="height: 30px;text-align: center;">{{ examForm.examTime }}</th>
<th style="height: 30px;text-align: center;">{{ examForm.examAddress }}</th>
</tr>
</table>
<br/>
<div style="width: 800px;height:600px; margin: auto">
<b style="font-size: 16px; line-height: 30px">注意事项:</b>
<p v-html="examForm.notice" style="line-height: 22px; font-size: 14px"></p>
</div>
</div><!-- main的结束div-->
<!-- </div>-->
</el-card>
<br/> <br/> <br/> <br/>
</div>
</div>
</template>
<script>
import printJS from 'print-js'
import {allInfo, printCard} from '@/api/student'
export default {
name: 'Print',
props: ['PropTestId', 'PropStudentId'],
created() {
this.studentId = this.$store.state.user.studentId
//获取表单数据
this.getAllInfo()
},
computed: {
todayYear() {
const time = new Date()
return time.getFullYear()
}
},
data() {
return {
studentId: undefined,
baseUrl: 'http://localhost:8848',//前缀
examForm: {},
hasAdmissionCard: undefined,
}
},
methods: {
getAllInfo() {
allInfo(this.PropTestId, this.studentId).then(res => {
if (res.node == 4) {
this.$emit("changeTab", 3, "成绩查询")
} else if (res.node == 3) {
/** 允许打印准考证 */
this.examForm = res.data
this.hasAdmissionCard = true
} else {
this.hasAdmissionCard = false
}
})
},
print() {
// 重置表单
printJS({
printable: 'printArea',
targetStyles: ['*'],
type: "html",
})
},
}
}
</script>
<style scoped lang="less">
.print {
width: 100%;
//background:firebrick ;
height: 780px;
overflow-y: auto;
}
.title {
font-size: 32px;
font-weight: bolder;
text-align: center;
letter-spacing: 5px
}
.titleSub {
text-align: center;
font-weight: bold;
font-size: 30px;
margin-top: 15px;
letter-spacing: 10px
}
.pic {
width: 210px;
height: 199px;
margin: 110px auto;
background-image: url(../assets/image/nocard.png);
}
.main {
width: 95%;
// width: 840px;
//background: greenyellow;
height: 1200px;
margin: auto;
border: 1px solid rgb(101, 98, 98);
}
.notice {
width: 700px;
margin: auto;
}
.left {
width: 65%;
height: 260px;
display: inline-block;
vertical-align: top;
//background: red;
ul li {
list-style: none;
}
}
.right {
display: inline-block;
width: 25%;
//background: yellow;
}
table {
//background: #8c939d;
border-color: rgb(101, 98, 98);
border-collapse: collapse;
width: 100%;
height: 120px;
//margin: auto;
//border: 1px solid black;
}
.el-divider--horizontal {
margin: 15px 0;
}
</style>
\ No newline at end of file
<template>
<div>
<el-card style="width: 80%; margin: auto; height: 600px">
<div style="margin-top: 10px;">
<div style=" display: inline-block; margin-left: 10px; margin-right: 10px; width: 8px; height: 30px; background: #2a7eec"></div>
<b style="line-height: 30px; vertical-align: top">成绩查询</b>
<el-divider></el-divider>
</div>
<div v-if="!haveScore">
<el-image :src="noScore" style="width: 200px; height: 180px" alt="图片加载失败"/>
</div>
<div v-else style="width: 850px; margin: auto">
<br/> <br/>
<h1 style="text-align: center;color: #416af1; letter-spacing: 5px">
{{ todayYear }}{{ form.examName }}考试成绩查询结果
</h1>
<br/><br/>
<el-form :model="form" label-width="130px" style="margin: auto;">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="姓名:">
<el-input v-model="form.studentName"></el-input>
</el-form-item>
<el-form-item label="学籍号:">
<el-input v-model="form.studentNumber"></el-input>
</el-form-item>
<el-form-item label="准考证号:">
<el-input v-model="form.examNumber"></el-input>
</el-form-item>
<el-form-item label="证件号:">
<el-input v-model="form.idCard"></el-input>
</el-form-item>
<el-form-item label="考试类别:">
<el-input v-model="form.examSort"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="考试项目:">
<el-input v-model="form.examProject"></el-input>
</el-form-item>
<el-form-item label="成绩:">
<el-input v-model="form.score"></el-input>
</el-form-item>
<el-form-item label="专业测试结果:">
<el-input v-model="form.examNumber"></el-input>
</el-form-item>
<el-form-item label="专业录取资格线:">
<el-input v-model="form.passScore"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- <el-button type="primary" @click="handleReturn">返 回</el-button>-->
</div>
</el-card>
</div>
</template>
<script>
import {allInfo, scoreView} from '@/api/student';
import noScore from '@/assets/image/noScore.png';
export default {
name: 'Score',
props: ['PropTestId'],
computed: {
todayYear() {
const time = new Date()
return time.getFullYear()
}
},
created() {
this.studentId = this.$store.state.user.studentId
this.getAllInfo()
},
data() {
return {
studentId: undefined,
noScore: undefined,
haveScore: undefined,
form: [],
isView: true,// 是否可查看
}
},
methods: {
getAllInfo() {
allInfo(this.PropTestId, this.studentId).then(res => {
if (res.node == 4) {
/** 允许查看成绩 */
this.form = res.data
this.haveScore = true
} else {
this.haveScore = false
}
})
},
getScore() {
scoreView().then(res => {
})
},
handleReturn() {
this.$router.push({
path: '/entry'
})
}
}
}
</script>
<style scoped lang="less">
* {
margin: 0;
padding: 0;
}
.el-divider--horizontal {
margin: 15px 0;
}
.el-form-item {
margin: 10px;
}
</style>
\ No newline at end of file
<template>
<div class="sign-up">
<div style="margin-top: 10px;">
<div style=" display: inline-block; margin-left: 10px; margin-right: 10px; width: 8px; height: 30px; background: #2a7eec"></div>
<b style="line-height: 30px; vertical-align: top">考生报名</b>
<el-divider></el-divider>
</div>
<el-form ref="form" style="margin-top: 50px" :model="form" label-width="90px" :rules="rules"
v-loading="loading">
<el-row :gutter="25">
<el-col :offset="1" :span="4" style="text-align: center">
<el-form-item label-width="0px" prop="photo">
<el-upload class="avatar-uploader" action="#" style="margin: auto"
:show-file-list="false"
:http-request="handleUpload"
:before-upload="beforeAvatarUpload"
accept="image/*"
>
<img v-if="form.photo" :src="form.photoData" alt="加载失败" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<br/>
<div style="text-align: center;">
<b style="color:rgb(96,98,102);">照 片</b>
</div>
</el-col>
<el-col :span="6">
<el-form-item label="姓名" prop="studentName">
<el-input disabled v-model="form.studentName"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idCard">
<el-input disabled v-model="form.idCard"></el-input>
</el-form-item>
<el-form-item label="学籍号" prop="studentNumber">
<el-input v-model.trim="form.studentNumber" placeholder="请输入学籍号"></el-input>
</el-form-item>
<el-form-item label="初中学校" prop="schoolName">
<el-select v-model="form.juniorId" filterable @change="handleChange"
placeholder="请选择初中学校"
style="width:100%">
<el-option v-for="item in schoolList" :key="item.schoolId" :label="item.name"
:value="item.schoolId"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="性别" prop="sex">
<el-select disabled v-model="form.sex" placeholder="请选择性别" style="width:100%">
<el-option label="男" value="0"></el-option>
<el-option label="女" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="身高" prop="height">
<el-input v-model.trim="form.height" placeholder="请输入身高">
<i slot="suffix" style="font-style:normal;">cm</i>
</el-input>
</el-form-item>
<el-form-item label="体重" prop="weight">
<el-input v-model.trim="form.weight" placeholder="请输入体重">
<i slot="suffix" style="font-style:normal;">kg</i>
</el-input>
</el-form-item>
<el-form-item label="测试项目" prop="project">
<el-select v-model="form.testId" filterable @change="handleTestChange"
placeholder="请选择测试项目"
style="width:100%">
<el-option v-for="item in projectList" :key="item.projectId" :label="item.name"
:value="item.projectId"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系方式1" prop="telephone1">
<el-input v-model.trim="form.telephone1" placeholder="请输入联系方式1"></el-input>
</el-form-item>
<el-form-item label="联系方式2" prop="telephone2">
<el-input v-model.trim="form.telephone2" placeholder="请输入联系方式2"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item style=" width: 300px; margin: auto">
<br/>
<el-button @click="onStorage">暂 存</el-button>&emsp;
<el-button type="primary" @click="onSubmit">提 交</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import {webSubmit, webSave, getProject, getSchoolList, getAvatar, allInfo} from '@/api/student'
import {validatePhone} from '@/utils/validate'
export default {
name: 'SignUp',
props: ['PropTestId'],
data() {
const isNum = (rule, value, callback) => {
const age = /^[0-9]*$/
if (!age.test(value)) {
callback(new Error('只能为数字'))
} else {
callback()
}
}
return {
studentId: undefined,
base64Img: undefined,
uploadFile: undefined,
form: {
juniorId: '',
studentName: '',// 学生姓名
id: '',// 学生id
idCard: '',// 身份证
studentNumber: '',// 学籍号
schoolName: '',// 初中学校
sex: '',// 性别
height: '',// 身高
weight: '',// 体重
project: '',// 测试项目
testId: '',
telephone1: '',// 联系方式1
telephone2: '',// 联系方式2
photo: '',// 照片url
photoData: ''// 照片base64
},
loading: false,
testId: '',// 考试id
projectList: [],// 项目列表
schoolList: [],// 学校列表
imgUrl: '',// 当前图片
prefix: 'http://localhost:8848',//前缀
// 表单校验
rules: {
studentNumber: [
{required: true, message: '学籍号不能为空', trigger: 'blur'}
],
schoolName: [
{required: true, message: '初中学校不能为空', trigger: 'blur'}
],
photo: [
{required: true, message: '图片不能为空,请上传', trigger: 'blur'}
],
// sex: [
// {required: true, message: '请选择性别', trigger: 'blur'}
// ],
height: [
{required: true, message: '身高不能为空', trigger: 'blur'},
{validator: isNum, trigger: 'blur'}
],
weight: [
{required: true, message: '体重不能为空', trigger: 'blur'},
{validator: isNum, trigger: 'blur'}
],
project: [
{required: true, message: '测试项目不能为空', trigger: 'blur'}
],
telephone1: [
{required: true, message: '联系方式1不能为空', trigger: 'blur'},
{required: true, validator: validatePhone, trigger: "blur"}
],
telephone2: [
{required: true, message: '联系方式2不能为空', trigger: 'blur'},
{required: true, validator: validatePhone, trigger: "blur"}
],
}
}
},
emits: ['onSubmit'],
created() {
this.base64Img = this.$store.state.user?.temPhotoData
this.studentId = this.$store.state.user.studentId
this.form.id = this.$store.state.user.studentId
this.testId = this.$route.query.testId
this.getProjectList()
this.getSchoolList()
//获取表单数据
this.getAllInfo()
},
methods: {
getAllInfo() {
allInfo(this.PropTestId, this.studentId).then(res => {
if (res.node != 0) {
this.form = res.data
}
this.form.studentName = this.$store.state.user.studentName
this.form.idCard = this.$store.state.user.idCard
//根据身份证获取一些信息
this.getInfoByIdcard(this.form.idCard)
})
},
getSchoolList() {
getSchoolList().then(res => {
this.schoolList = res.rows.map(item => {
return {
schoolId: item.id,
name: item.schoolName
}
})
})
},
getProjectList() {
getProject(this.testId).then(res => {
this.projectList = res.rows.map(item => {
return {
projectId: item.id,
name: item.project
}
})
})
},
async handleUpload(file) {
this.uploadFile = file
let formData = new FormData();
formData.append("file", file.file);
let res = await getAvatar(formData)
if (res.code == 200) {
await this.handleAvatar()
this.form.photo = res.url
this.$message({
type: 'success',
message: '照片上传成功!'
});
}
},
handleAvatar() {
let reader = new FileReader(); //创建实例
reader.readAsDataURL(this.uploadFile.file);
reader.onload = (e) => {
this.$set(this.form, "photoData", reader.result)
this.base64Img = reader.result
}
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
this.imageUrl = URL.createObjectURL(file);
return isJPG && isLt2M;
},
// 处理上传图片后更改仓库图片
handleUploadPhoto() {
this.$store.commit('SET_PHOTO', this.form.photo)
this.$store.commit('SET_PHOTODATA', this.base64Img)
},
onSubmit() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$confirm('是否确认提交', '提示', {
type: 'info'
}).then(async () => {
let res = await webSubmit(this.form, this.testId)
if (res.code == 200) {
this.handleUploadPhoto()
}
}).then(res => {
this.$message({
type: 'success',
message: '提交成功!'
});
this.$emit("changeTab", 1, "审核")
}).catch((err) => {
})
}
})
},
onStorage() {
webSave(this.form, this.testId).then(res => {
// this.handleUploadPhoto()
this.$store.commit('SET_TEMPHOTODATA', this.base64Img)
this.$router.replace({
path: '/entry',
})
})
},
// 处理初中学校选中变化
handleChange(value) {
const item = this.schoolList?.find(i => i.schoolId === value);
this.form.schoolName = item.name;
},
// 处理测试项目的
handleTestChange(value) {
const item = this.projectList?.find(i => i.projectId === value);
this.form.project = item.name;
},
//根据身份证获取信息
getInfoByIdcard(val) {
let iden = this.form.idCard;
let sex = null;
let birth = null;
let myDate = new Date();
let month = myDate.getMonth() + 1;
let day = myDate.getDate();
let age = 0;
if (val.length === 18) {
age = myDate.getFullYear() - iden.substring(6, 10) - 1;
sex = iden.substring(16, 17);
birth = iden.substring(6, 10) + "-" + iden.substring(10, 12) + "-" + iden.substring(12, 14);
if (iden.substring(10, 12) < month || iden.substring(10, 12) == month && iden.substring(12, 14) <= day) age++;
}
if (val.length === 15) {
age = myDate.getFullYear() - iden.substring(6, 8) - 1901;
sex = iden.substring(13, 14);
birth = "19" + iden.substring(6, 8) + "-" + iden.substring(8, 10) + "-" + iden.substring(10, 12);
if (iden.substring(8, 10) < month || iden.substring(8, 10) == month && iden.substring(10, 12) <= day) age++;
}
//0男1女
if (sex % 2 === 0)
sex = '1';
else {
sex = '0';
}
this.$set(this.form, 'sex', sex)
}
}
}
</script>
<style scoped lang="less">
.sign-up {
//width: 1350px;
//height: 490.5px;
position: relative;
// width: 100vh;
}
.form {
width: 1350px;
overflow: hidden;
position: absolute;
/* 水平垂直居中 */
left: 0;
right: 0;
top: 50px;
}
</style>
<style scoped>
.avatar-uploader {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 180px;
height: 200px;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 30px;
color: #8c939d;
width: 180px;
height: 200px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 180px;
height: 200px;
display: block;
}
.el-divider--horizontal {
margin: 15px 0;
}
</style>
\ No newline at end of file
<template>
<div class="s-canvas">
<canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas>
</div>
</template>
<script>
export default {
name: 'Validate',
props: {
identifyCode: {
type: String,
default: '1234'
},
fontSizeMin: {
type: Number,
default: 16
},
fontSizeMax: {
type: Number,
default: 40
},
backgroundColorMin: {
type: Number,
default: 180
},
backgroundColorMax: {
type: Number,
default: 240
},
colorMin: {
type: Number,
default: 50
},
colorMax: {
type: Number,
default: 160
},
lineColorMin: {
type: Number,
default: 40
},
lineColorMax: {
type: Number,
default: 180
},
dotColorMin: {
type: Number,
default: 0
},
dotColorMax: {
type: Number,
default: 255
},
contentWidth: {
type: Number,
default: 111
},
contentHeight: {
type: Number,
default: 38
}
},
methods: {
// 生成一个随机数
randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min)
},
// 生成一个随机的颜色
randomColor(min, max) {
let r = this.randomNum(min, max)
let g = this.randomNum(min, max)
let b = this.randomNum(min, max)
return 'rgb(' + r + ',' + g + ',' + b + ')'
},
drawPic() {
let canvas = document.getElementById('s-canvas')
let ctx = canvas.getContext('2d')
ctx.textBaseline = 'bottom'
// 绘制背景
ctx.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)
ctx.fillRect(0, 0, this.contentWidth, this.contentHeight)
// 绘制文字
for (let i = 0; i < this.identifyCode.length; i++) {
this.drawText(ctx, this.identifyCode[i], i)
}
this.drawLine(ctx)
this.drawDot(ctx)
},
drawText(ctx, txt, i) {
ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax)
ctx.font = this.randomNum(this.fontSizeMin, this.fontSizeMax) + 'px SimHei'
let x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1))
let y = this.randomNum(this.fontSizeMax, this.contentHeight - 5)
var deg = this.randomNum(-45, 45)
// 修改坐标原点和旋转角度
ctx.translate(x, y)
ctx.rotate(deg * Math.PI / 180)
ctx.fillText(txt, 0, 0)
// 恢复坐标原点和旋转角度
ctx.rotate(-deg * Math.PI / 180)
ctx.translate(-x, -y)
},
drawLine(ctx) {
// 绘制干扰线
for (let i = 0; i < 8; i++) {
ctx.strokeStyle = this.randomColor(this.lineColorMin, this.lineColorMax)
ctx.beginPath()
ctx.moveTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))
ctx.lineTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))
ctx.stroke()
}
},
drawDot(ctx) {
// 绘制干扰点
for (let i = 0; i < 100; i++) {
ctx.fillStyle = this.randomColor(0, 255)
ctx.beginPath()
ctx.arc(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight), 1, 0, 2 * Math.PI)
ctx.fill()
}
}
},
watch: {
identifyCode() {
this.drawPic()
}
},
mounted() {
this.drawPic()
}
}
</script>
<style lang="less" scoped>
.s-canvas {
height: 38px;
canvas{
margin-top: 5px;
}
}
</style>
\ No newline at end of file
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import './permission'
Vue.use(ElementUI);
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
import router from './router'
import store from './store'
import {Message} from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// auth文件主要依赖js-cookie模块,getToken,setToken,removeToken
import {getToken} from '@/utils/auth'
// 显示又上方螺旋加载提示
NProgress.configure({showSpinner: false})
// 路由白名单列表,把路由添加到这个数组中,不用登陆也可以访问
const whiteList = ['/login', '/register']
router.beforeEach((to, from, next) => {
// 请求路由时进度条开始
NProgress.start()
if (getToken()) {
// 如果用户存在令牌的情况下还请求登录页面,就让用户跳转到首页,避免重复登录的情况
if (to.path === '/login') {
next({path: '/entry'})
NProgress.done()
} else {
if (store.state.user.studentName === '') {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
next()
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({path: '/login'})
}).catch(err => {
next({path: '/login'})
})
})
} else {
next()
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
} else {
next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
NProgress.done()
}
}
})
router.afterEach(() => {
NProgress.done()
})
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../views/Login.vue'
import Register from '../views/Register.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
redirect: '/entry'
},
{
path: '/login',
name: 'Login',
component: Login
},
{
path: '/register',
name: 'Register',
component: Register
},
{
path: '/entry',
name: 'Entry',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/Entry.vue')
},
{
path: '/instruction',
name: 'Instruction',
component: () => import(/* webpackChunkName: "about" */ '../views/Instruction.vue')
},
{
path: '/applyProcess',
name: 'ApplyProcess',
component: () => import(/* webpackChunkName: "about" */ '../views/ApplyProcess.vue')
},
// {
// path: '/print',
// name: 'Print',
// component: () => import(/* webpackChunkName: "about" */ '../views/Print.vue')
// },
]
const router = new VueRouter({
routes
})
export default router
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
Vue.use(Vuex)
export default new Vuex.Store({
getters: {
},
modules: {
user
}
})
import {login, logout, getInfo} from '@/api/login'
import {getToken, setToken, removeToken} from '@/utils/auth'
const user = {
state: {
token: getToken(),
studentName: '',
studentId: '',
idCard: '',
phoneNumber: '',
photo: '',
photoData: '',
temPhotoData: '',
active: 0,
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_NAME: (state, studentName) => {
state.studentName = studentName
},
SET_ID: (state, studentId) => {
state.studentId = studentId
},
SET_IDCARD: (state, idCard) => {
state.idCard = idCard
},
SET_PHONENUMBER: (state, phoneNumber) => {
state.phoneNumber = phoneNumber
},
SET_PHOTO: (state, photo) => {
state.photo = photo
},
SET_PHOTODATA: (state, photoData) => {
state.photoData = photoData
},
SET_TEMPHOTODATA: (state, temPhotoData) => {
state.temPhotoData = temPhotoData
},
SET_ACTIVE: (state, active) => {
state.active = Number(active)
console.log('SET_ACTIVE', state.active)
},
},
actions: {
// 登录
Login({commit}, userInfo) {
const idCard = userInfo.idCard
const phoneNumber = userInfo.phoneNumber
const password = userInfo.password
return new Promise((resolve, reject) => {
login(idCard, phoneNumber, password).then(res => {
setToken(res.token)
commit('SET_TOKEN', res.token)
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息
GetInfo({commit}, state) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
// console.log(getInfo)
const user = res.info
commit('SET_NAME', user.studentName)
commit('SET_IDCARD', user.idCard)
commit('SET_PHONENUMBER', user.phoneNumber)
commit('SET_PHOTO', user.photo)
commit('SET_PHOTODATA', user.photoData)
commit('SET_ID', user.id)
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 退出系统
LogOut({commit}, state) {
return new Promise((resolve, reject) => {
logout().then(() => {
commit('SET_TOKEN', '')
commit('SET_NAME', '')
commit('studentId', '')
commit('idCard', '')
commit('phoneNumber', '')
commit('photo', '')
commit('photoData', '')
removeToken()
resolve()
}).catch(error => {
removeToken()
reject(error)
})
})
},
// 前端 登出
FedLogOut({commit}) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
}
}
}
export default user
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
\ No newline at end of file
/**** request.js ****/
// 导入axios
import axios from 'axios'
// 使用element-ui Message做消息提醒
import {Notification, Message, MessageBox} from 'element-ui'
import {getToken} from '@/utils/auth'
import store from "@/store";
// 是否显示重新登录
export let isRelogin = {show: false};
//1. 创建新的axios实例,
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const service = axios.create({
// 公共接口
// baseURL: "http://localhost:8080",
baseURL: process.env.VUE_APP_BASE_API,
// 超时时间 单位是ms,这里设置了3s的超时时间
timeout: 120 * 1000
})
// 2.请求拦截器
service.interceptors.request.use(config => {
const isToken = (config.headers || {}).isToken === false
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
return config
}, error => {
Promise.reject(error)
})
// 3.响应拦截器
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
const code = res.data.code || res.data.status || 200;
// 获取错误信息
const msg = res.data.msg
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
return res.data
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => {
isRelogin.show = false;
store.dispatch('LogOut').then(() => {
location.href = '/login';
})
}).catch(() => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({
dangerouslyUseHTMLString: true,//重点代码
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
} else if (code !== 200) {
Notification.error({
title: msg
})
return Promise.reject('error')
} else {
return res.data
}
}, error => {
let {message} = error;
if (message == "Network Error") {
message = "后端接口连接异常";
} else if (message.includes("timeout")) {
message = "系统接口请求超时";
} else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常";
}
Message({
message: message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
})
export default service
/**
* @description 封装公共校验规则
* */
// 校验身份证
export function checkIdcard(rule, idCard, callback) {
if (idCard && idCard.length == 18) {
var idCard_string = JSON.stringify(idCard);
var spstr = idCard_string.split("");
var x = spstr[spstr.length - 2];
if (x === "x") {
return callback(new Error("身份证号最后一位X为大写"));
}
var reg = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = idCard.match(reg); //检查生日日期是否正确,value就是身份证号
if (!arrSplit) {
return callback(new Error("身份证号格式有问题,请重新输入"));
}
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = dtmBirth.getFullYear() == Number(arrSplit[2]) && dtmBirth.getMonth() + 1 == Number(arrSplit[3]) &&
dtmBirth.getDate() == Number(arrSplit[4]);
if (!bGoodDay) {
return callback(new Error("输入的身份证号里出生日期不对!"));
} else {
//检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0,
i;
for (i = 0; i < 17; i++) {
nTemp += idCard.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != idCard.substr(17, 1)) {
return callback(new Error("末位校验码应该为:" + valnum));
}
return callback();
}
} else {
return callback(new Error("输入的身份证号不满足18位!"));
}
}
// 电话号码校验
export function validatePhone(rule, value, callback) {
let phone = value.replace(/\s/g, "")
let regs = /^1(3|4|5|7|8|9)\d{9}$/;
if (value.length != 0) {
if (!regs.test(phone)) {
callback([new Error("手机号输入不合法")])
} else {
callback()
}
}
}
<template>
<div class="box">
<div class="container">
<div class="head">
<head-info :name="studentName"></head-info>
</div>
<div class="main">
<div class="step">
<div class="stepChild">
<el-steps :active="active" finish-status="success" align-center>
<el-step title="报名"></el-step>
<el-step title="审核"></el-step>
<el-step title="打印准考证"></el-step>
<el-step title="成绩查询"></el-step>
</el-steps>
</div>
</div>
<component :is="tabs[active]" :PropTestId="testId" @changeTab="changeStep"></component>
</div>
<div style="width: 100%; height: 60px; text-align: center; color: white; font-size: 16px; font-weight: bold; padding-top: 30px; letter-spacing: 2px">
山东省东营市第二中学
</div>
</div>
</div>
</template>
<script>
import Score from '@/components/Score.vue'
import Print from '@/components/Print.vue'
import SignUp from '@/components/SignUp.vue'
import Check from '@/components/Check.vue'
import HeadInfo from '@/components/HeadInfo.vue'
export default {
name: 'ApplyProcess',
components: {
Score,
Print,
SignUp,
Check,
HeadInfo
},
computed: {
active() {
console.log('active', this.$store.state.user.active)
return this.$store.state.user.active
}
},
data() {
return {
tabs: ["signUp", 'check', 'print', 'score'],
titles: ['报名', '审核', '打印准考证', '成绩查询'],
studentName: '',
testId: '',
studentId: '',
};
},
created() {
this.studentName = this.$store.state.user.studentName
/** 点击暂存,进入Entry页面,点击进入按钮,路由传带的参数*/
this.testId = this.$route?.query?.testId
this.studentId = this.$route?.query?.studentId
},
methods: {
changeStep(index, title) {
this.$store.commit('SET_ACTIVE', index)
},
}
}
</script>
<style scoped lang="less">
.box {
display: flex;
justify-content: center;
background-image: url("../assets/image/background.png");
}
.container {
width: 80%;
height: 100%;
}
.head {
width: 100%;
height: 90px;
}
.main {
border-radius: 10px;
background: #fdfdfe;
width: 100%;
height: 890px;
}
.step {
width: 100%;
height: 65px;
padding-top: 20px;
padding-bottom: 10px;
background: #f5f8fb;
border-radius: 10px;
}
.stepChild {
width: 80%;
margin: auto;
}
</style>
\ No newline at end of file
<template>
<div class="box">
<div class="container">
<div class="head">
<head-info :name="studentName"></head-info>
</div>
<div class="entry-card-container">
<div class="entry-top">
<span>&emsp;&nbsp;考试报名</span>
</div>
<el-table
:data="testList"
:header-cell-style="{'text-align':'center', 'color':'#416af2'}"
:cell-style="{'text-align':'center', 'color': '#000000'}"
class="table"
border
v-loading="loading"
height="750"
style="width:100%; ">
<el-table-column prop="date" label="序号" type="index" width="100"/>
<el-table-column prop="examName" label="考试名称" min-width="180"/>
<el-table-column prop="deadline" label="报名截止日期" min-width="180"/>
<el-table-column prop="currentState" label="当前状态" min-width="180">
<template slot-scope="scope">
{{ getState(scope.row.currentState) }}
</template>
</el-table-column>
<el-table-column label="操作" min-width="120">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-d-arrow-right"
@click="handleSignUp(scope.row)"
>进入
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div style="width: 100%; height: 60px; text-align: center; color: white; font-size: 16px; font-weight: bold; padding-top: 30px; letter-spacing: 2px">
山东省东营市第二中学
</div>
</div>
</div>
</template>
<script>
import HeadInfo from '@/components/HeadInfo.vue';
import {getList, isEnter, allInfo} from '@/api/student'
export default {
name: 'Entry',
components: {
HeadInfo
},
data() {
return {
loading: true,// 遮罩层
testList: [], // 考试列表
studentName: '',// 学生姓名
studentId: '',// 学生ID
}
},
created() {
this.studentName = this.$store.state.user.studentName
this.studentId = this.$store.state.user.studentId
this.getTestList()
},
methods: {
getTestList() {
getList(this.studentId).then(res => {
this.testList = res.rows
this.loading = false
})
},
handleSignUp(row) {
//查询能否进入
isEnter(row.id, this.studentId).then(res => {
if (res.data == 1) {
/** 如果为1则有权限进入,为0则无权进入 */
//查询进入页面显示的阶段
allInfo(row.id, this.studentId).then(res => {
let node = res?.node
if (node === "0") {
//考试须知阶段
this.$router.push({
path: '/Instruction',
query: {
testId: row.id,
}
})
} else {
this.$store.commit("SET_ACTIVE", res?.node - 1)
//其他阶段,大页面
this.$router.push({
path: '/ApplyProcess',
query: {
testId: row.id,
studentId: this.studentId
}
})
}
})
} else {
/** 为0则无权进入 */
this.$message({
message: '暂时无法进入',
type: 'warning'
});
}
}).catch(err => {
})
},
},
computed: {
getState() {
return function (cur) {
let state = ''
switch (cur) {
case '0':
state = '待报名'
break
case '1':
state = '待审核'
break
case '2':
state = '通过'
break
case '3':
state = '驳回'
break
case '4':
state = '信息修改'
break
case '5':
state = '准考证打印'
break
case '6':
state = '成绩查询'
break
case '7':
state = '审核中'
}
return state
}
}
}
}
</script>
<style>
.box {
display: flex;
justify-content: center;
background-image: url("../assets/image/background.png");
}
.container {
width: 70%;
height: 100%;
/*background: red;*/
}
.head {
width: 100%;
height: 100px;
}
.entry-card-container {
width: 100%;
height: 845px;
/*margin: 25px auto 105px;*/
/* border: 2px solid black; */
border-radius: 12px;
background-color: #fff;
}
.entry-top {
background-color: rgb(245, 248, 251);
height: 80px;
border-radius: 12px 12px 0 0;
line-height: 80px;
font-size: 18px;
font-weight: 700;
}
</style>
\ No newline at end of file
<template>
<div class="instruction">
<div class="instruction-card-container">
<div class="title">
东营市第二中学艺考报名
</div>
<h3 class="instruction-title">报考须知</h3>
<br/>
<div class="content-card">
<div class="content">
<p v-html="notice"></p>
<p v-html="examArrange"></p>
</div>
</div>
<br/>
<div class="buttonGroup">
<el-button :disabled="disable" style="width: 150px" type="primary" @click="onContinue">已阅读并知晓<span
v-show="timerCount>0">({{ timerCount }})</span></el-button>
&emsp;
<el-button style="width: 150px" @click="onReturn">返 回</el-button>
</div>
</div>
</div>
</template>
<script>
import {allInfo} from "@/api/student";
export default {
name: 'Instruction',
data() {
return {
propStudentId: undefined,
disable: true,
testId: '',// 考试ID
timerCount: 10,
studentId: '',// 学生ID
examArrange: '',// 考试安排
notice: '',// 考试注意事项
}
},
created() {
this.testId = this.$route.query.testId
this.studentId = this.$store.state.user.studentId
this.getInfo()
},
methods: {
getInfo() {
allInfo(this.testId, this.studentId).then(res => {
this.notice = res.data.notice,
this.examArrange = res.data.examArrange
})
},
onContinue() {
this.$store.commit('SET_ACTIVE', 0)
this.$router.push({
path: '/ApplyProcess',
query: {
title: '报名',
index: 0,
testId: this.testId,
studentId: this.studentId,
}
})
},
onReturn() {
this.$router.back()
}
},
watch: {
timerCount: {
handler(value) {
if (value > 0) {
setTimeout(() => {
this.timerCount--;
}, 1000);
} else {
this.disable = false
}
},
immediate: true
}
}
}
</script>
<style scoped>
.instruction {
background-image: url("../assets/image/background.png");
height: 100vh;
display: flex;
justify-content: center;
}
.instruction-card-container {
width: 680px;
height: 625px;
background-color: #ffffff;
border-radius: 20px;
align-self: center;
position: relative;
}
.title {
width: 310px;
height: 56px;
line-height: 56px;
position: absolute;
left: 185px;
top: -28px;
text-align: center;
justify-content: center;
color: #ffffff;
font-size: 18px;
font-weight: 900;
background-size: cover;
background-image: url("../assets/image/title.png");
}
.instruction-title {
text-align: center;
margin-top: 40px;
font-size: 20px;
}
.content-card {
width: 640px;
height: 457px;
background: #f4f4f4;
margin: 0 auto;
}
.buttonGroup {
width: 300px;
height: 40px;
margin: auto;
/*background: red;*/
display: flex;
justify-content: center
}
.content {
height: 420px;
padding: 20px;
overflow-y: auto;
/*font-weight: bold;*/
line-height: 25px;
}
</style>
\ No newline at end of file
<template>
<div class="login">
<div class="login-card-container">
<div class="title">
艺考报名网页
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
@submit.prevent
>
<h3 class="login-title">考生登录</h3>
<el-form-item prop="idCard">
<el-input
v-model="loginForm.idCard"
type="text"
auto-complete="off"
placeholder="请输入身份证号">
</el-input>
</el-form-item>
<el-form-item prop="phoneNumber">
<el-input
v-model="loginForm.phoneNumber"
type="text"
auto-complete="off"
placeholder="请输入手机号">
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="text"
style="text-security:disc; -webkit-text-security:disc;"
auto-complete="off"
placeholder="请输入密码"
@keyup.enter.native="handleLogin">
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<div class="login-code-main">
<div class="login-code-sub">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="请输入验证码"
@keyup.enter.native="handleLogin"
style="width:100%;"
>
</el-input>
</div>
<div style="border: none; margin-left: 50px" @click="refreshCode">
<Validate :identifyCode="identifyCode"></Validate>
</div>
</div>
</el-form-item>
<!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 20px;">记住密码</el-checkbox> -->
<el-form-item style="width:100%;" label-width="0">
<el-button :loading="loading" size="medium" type="primary" class="login-button"
@click="handleLogin">
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
<div>
<div v-if="register">
<router-link class="link-type" :to="'/register'">新用户注册</router-link>
</div>
</div>
</el-form-item>
</el-form>
</div>
<!-- 底部 -->
<div class="el-login-footer">
<span></span>
</div>
</div>
</template>
<script>
import {checkIdcard, validatePhone} from "@/utils/validate/index"
import Validate from '@/components/validate.vue'
export default {
name: "Login",
components: {
Validate
},
mounted() {
const that = this
that.identifyCode = "";
that.makeCode(this.identifyCodes, 4);
},
created() {
this.refreshCode();
},
data() {
const validateCode = (rule, value, callback) => {
if (this.identifyCode !== value) {
this.loginForm.code = ''
this.refreshCode()
callback(new Error('请输入正确的验证码'))
} else {
callback()
}
}
return {
identifyCode: '',//图形验证码
identifyCodes: '1234567890',
codeUrl: "",
loginForm: {
idCard: '',
phoneNumber: '',
password: "",
// rememberMe: false,
code: "",
},
loginRules: {
idCard: [
{required: true, trigger: "blur", message: "请输入您的身份证号"},
{required: true, validator: checkIdcard, trigger: "blur"}
],
phoneNumber: [
{required: true, trigger: "blur", message: "请输入您的手机号"},
{required: true, validator: validatePhone, trigger: "blur"}
],
password: [
{required: true, trigger: "blur", message: "请输入您的密码"},
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
],
code: [{required: true, trigger: "change", message: "请输入验证码"},
{required: true, validator: validateCode, trigger: "blur"}
]
},
loading: false,
// 验证码开关
captchaEnabled: true,
// 注册开关
register: true,
};
},
methods: {
handleLogin() {
this.$refs.loginForm.validate(valid => {
if (!valid) return;
const {idCard, phoneNumber, password} = this.loginForm
this.$store.dispatch('Login', {idCard, phoneNumber, password}).then(res => {
this.$router.push({
path: '/entry'
})
})
})
},
/** *********前端实现验证码功能开始************/
refreshCode() {
this.identifyCode = ''
this.makeCode(this.identifyCodes, 4)
},
makeCode(o, l) {
for (let i = 0; i < l; i++) {
this.identifyCode += this.identifyCodes[
this.randomNum(0, this.identifyCodes.length)
]
}
},
randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min)
},
/** *********前端实现验证码功能结束************/
}
}
</script>
<style>
* {
margin: 0;
padding: 0;
}
</style>
<style lang="less" scoped>
.login-code-main {
display: flex;
flex-direction: row;
}
.login-container {
//transition: transform .5s ease-in;
.login-page {
//height: 100vh;
}
}
.login {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-image: url("../assets/image/background.png");
// background-size: cover;
.login-card-container {
display: flex;
position: relative;
width: 520px;
height: 470px;
background-color: #ffffff;
border-radius: 6px;
//padding: 20px;
//justify-content: center;
//align-items: center;
}
}
.title {
width: 310px;
height: 56px;
line-height: 56px;
position: absolute;
left: 105px;
top: -28px;
text-align: center;
justify-content: center;
color: #ffffff;
font-size: 18px;
font-weight: 900;
background-size: cover;
background-image: url("../assets/image/title.png");
}
.login-title {
margin: 45px auto 20px;
text-align: center;
color: #000000;
font-weight: 900;
}
.login-form {
border-radius: 6px;
// border: 1px solid;
width: 413px;
// height: 411px;
margin: 0 auto;
// padding: 26px 85px 26px 50px;
/deep/ .el-input .el-input__inner {
height: 45px;
}
}
.login-button {
width: 413px;
height: 60px;
background: #416af2;
border-radius: 6px;
}
// 封面背景
// .login-cover {
// // background-image: url("");
// background-size: cover;
// }
// .login-top {
// background-color: rgb(240, 248, 255);
// position: fixed;
// top: 10px;
// padding-top: 15px;
// width: 95%;
// height: 45px;
// font-size: 18px;
// }
// 封面内容
// .cover-container {
// width: 1200px;
// margin: auto;
// height: 100%;
// display: flex;
// flex-direction: column;
// .cover-center {
// position: relative;
// .cover-center__left {
// position: absolute;
// left: 0;
// top: 0;
// display: flex;
// flex-direction: column;
// }
// .cover-center__right {
// position: absolute;
// width: 559px;
// height: 559px;
// right: 0;
// }
// }
// }
// 登录页
.el-login-footer {
height: 40px;
line-height: 40px;
position: absolute;
bottom: 0;
width: 100%;
text-align: center;
//color: #fff;
color: #989797;
font-family: Arial;
font-size: 12px;
letter-spacing: 1px;
}
</style>
<template>
<div class="register">
<div class="register-card-container">
<div class="title">
艺考报名网页
</div>
<el-form
ref="registerForm"
:model="registerForm"
:rules="registerRules"
class="register-form"
>
<h3 class="register-title">个人注册</h3>
<el-form-item prop="studentName">
<el-input v-model="registerForm.studentName" type="text" auto-complete="off"
placeholder="请输入姓名">
</el-input>
</el-form-item>
<el-form-item prop="idCard">
<el-input v-model="registerForm.idCard" type="text" auto-complete="off"
placeholder="请输入身份证号">
</el-input>
</el-form-item>
<el-form-item prop="phoneNumber">
<el-input v-model="registerForm.phoneNumber" type="text" auto-complete="off"
placeholder="请输入手机号">
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="registerForm.password"
type="text"
style="text-security:disc; -webkit-text-security:disc;"
auto-complete="off"
placeholder="请输入密码"
@keyup.enter.native="handleRegister"
>
</el-input>
</el-form-item>
<el-form-item prop="confirmPassword">
<el-input
v-model="registerForm.confirmPassword"
type="text"
style="text-security:disc; -webkit-text-security:disc;"
auto-complete="off"
placeholder="请再次输入密码确认"
@keyup.enter.native="handleRegister"
>
</el-input>
</el-form-item>
<!-- <el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="registerForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
@keyup.enter.native="handleRegister"
>
</el-input>
<div class="register-code">
<img :src="codeUrl" @click="getCode" class="register-code-img"/>
</div>
</el-form-item> -->
<el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
type="primary"
class="register-button"
@click.native.prevent="handleRegister"
>
<span v-if="!loading">注 册</span>
<span v-else>注 册 中...</span>
</el-button>
<div style="float: right;">
<router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
</div>
</el-form-item>
</el-form>
</div>
<!-- 底部 -->
<div class="el-register-footer">
<span></span>
</div>
</div>
</template>
<script>
import {register} from "@/api/login";
import {checkIdcard, validatePhone} from "@/utils/validate/index"
export default {
name: "Register",
data() {
// 确认密码
const equalToPassword = (rule, value, callback) => {
if (this.registerForm.password !== value) {
callback(new Error("两次输入的密码不一致"));
} else {
callback();
}
};
return {
codeUrl: "",
confirmPassword: "", // 确认密码
registerForm: {
studentName: "", // 学生姓名
idCard: "", // 身份证
phoneNumber: "",
password: "", // 密码
// code: "",
// uuid: ""
},
registerRules: {
studentName: [
{required: true, trigger: "blur", message: "请输入您的姓名"},
],
idCard: [
{required: true, trigger: "blur", message: "请输入您的身份证号"},
{required: true, validator: checkIdcard, trigger: "blur"}
],
phoneNumber: [
{required: true, trigger: "blur", message: "请输入您的手机号"},
{required: true, validator: validatePhone, trigger: "blur"}
],
password: [
{required: true, trigger: "blur", message: "请输入您的密码"},
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
],
confirmPassword: [
{required: true, trigger: "blur", message: "请再次输入您的密码"},
{required: true, validator: equalToPassword, trigger: "blur"}
],
// code: [{ required: true, trigger: "change", message: "请输入验证码" }]
},
loading: false,
captchaEnabled: true
};
},
created() {
// this.getCode();
},
methods: {
// getCode() {
// getCodeImg().then(res => {
// this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
// if (this.captchaEnabled) {
// this.codeUrl = "data:image/gif;base64," + res.img;
// this.registerForm.uuid = res.uuid;
// }
// });
// },
handleRegister() {
this.$refs.registerForm.validate(valid => {
if (valid) {
this.loading = true;
register(this.registerForm).then(res => {
this.$message({
type: 'success',
message: "注册成功"
});
this.$router.push({
path: '/login'
});
// const studentName = this.registerForm.studentName;
// this.$alert(
// "恭喜你,您的账号 " + studentName + " 注册成功!", '系统提示', {
// confirmButtonText: '确定',
// callback: action => {
// }
// }).then(() => {
// })
}).catch(() => {
this.loading = false;
if (this.captchaEnabled) {
this.getCode();
}
})
}
});
}
}
};
</script>
<style lang="less" scoped>
.register {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-image: url("../assets/image/background.png");
// background-size: cover;
.register-card-container {
display: flex;
position: relative;
width: 520px;
// height: 411px;
background-color: #ffffff;
border-radius: 6px;
//padding: 20px;
//justify-content: center;
//align-items: center;
}
}
.title {
width: 310px;
height: 56px;
line-height: 56px;
position: absolute;
left: 105px;
top: -28px;
text-align: center;
justify-content: center;
color: #ffffff;
font-size: 18px;
font-weight: 900;
background-size: cover;
background-image: url("../assets/image/title.png");
}
.register-title {
margin: 30px auto 30px;
text-align: center;
color: #000000;
font-weight: 900;
}
.register-form {
border-radius: 6px;
// border: 1px solid;
width: 413px;
// height: 411px;
margin: 0 auto;
// padding: 26px 85px 26px 50px;
/deep/ .el-input .el-input__inner {
height: 48px;
}
}
.register-button {
width: 413px;
height: 60px;
background: #416af2;
border-radius: 6px;
}
.register-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.register-code {
width: 33%;
height: 38px;
float: right;
img {
cursor: pointer;
vertical-align: middle;
}
}
.el-register-footer {
height: 40px;
line-height: 40px;
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
color: #fff;
font-family: Arial;
font-size: 12px;
letter-spacing: 1px;
}
.register-code-img {
height: 38px;
}
</style>
const {defineConfig} = require('@vue/cli-service')
module.exports = defineConfig({
publicPath: '/',
outputDir: 'web_dist',
assetsDir: 'static',
transpileDependencies: true,
lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
open: true,
//proxy: 'http://localhost:8848'
//proxy: 'http://10.20.100.200:11324'
proxy: {
[process.env.VUE_APP_BASE_API]: {
//target:'http://10.20.100.200:11324',
target: 'http://localhost:8848',
//crossOrigin:true,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
},
}
}
}
})
<!doctype html><html lang=""><head><meta charset="utf-8"><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>art-exam-web</title><script defer="defer" src="/static/js/chunk-vendors.3ec8172f.js"></script><script defer="defer" src="/static/js/app.53de8550.js"></script><link href="/static/css/chunk-vendors.09a7ec0e.css" rel="stylesheet"><link href="/static/css/app.7e110e8b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but art-exam-web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
.box1[data-v-6f96cfc9]{margin-top:10px;height:120px}.web-icon[data-v-6f96cfc9]{width:70px;height:70px;display:inline-block}.web-title[data-v-6f96cfc9]{margin-left:40px;color:#fff;font-size:28px;display:inline-block;width:5em;height:80px;vertical-align:bottom;line-height:80px;font-weight:700}.drawer[data-v-6f96cfc9]{width:160px;text-align:center;height:80px;line-height:80px;display:inline-block;float:right}.photo-icon[data-v-6f96cfc9]{float:left;width:27px;height:27px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAAAXNSR0IArs4c6QAAAvtJREFUSEu9lkvMXlMUhp9n0kFFRTTERGhd4h4pTUqTdkArbmGCUJcm2kmpUrRpIumocSuiTJC4FMEAEcSlA6LVpDTiHqIlJkKIIAxMXllxfjnf+c/5/68hXcnKyfed/Z537/2u/a4t+zHcj1xMS5ZkJnAxcHyTJzTPL4DPgXpWvqT+OdXkpyRLchpwPzAP+KSTJwPt3A2sUT8cIhwkS3I18ATwInCrumfoI0nmAncDlwDXqE/2je0lS/IqcB6wUn1kXF2TrAAeBl5Tz+/iJpEluRZ4DJit/jwu0cS4JIcAPwHL1cfb+BGyJAcA3wC39G1FUyzXA6cDHwAP9hVFI8E9wFHqHxOEXbKHmhVd1l1RkrOA7VV1wDPAFU2VLlR39Ix/rlaorhoi2wtcNQDeBWxTN7S2bBNwtjp/YHJb1TmTyJIcB3wGHKz+3gYnORT4Qe3TOMBh6o8dzIHAL8CJ6pf17l9wksuBDeopPbM8EtitlvgjkaSKaJ76bc+7j4FN6rNdsgcavUqLSZGkgHeqT7e28UpgXd8Ea0yS0rZ0W90lq8O7V107QLa0KYwt6sYkG4EbqlDUNwYwm4E5ah32kW1cUw6gLhoALgYubbKsq6zq+Ur17QHMO+VAalneCNkC4JUBXcp+jgWuUz9tbeNJwKPAV2rZW5+eF6g7u2QzquKAxepHrQ/+CixQy+F7I0l1gp3qQS3cqUCtuCr1rxGyRtCXgT3qTc3v14HSqLxyykhyIbBKPbfB3gfMVS+aAHYdZAlQYpeg5fKb1fpvrEiyDbgROKbpFkvVN3vJmhk9BZwJrK8iUG8fi+mfUt8CvAvcAbynLmtjh1pMuUKRViW9sA9kde5qG5f1uc0QWblILf974Db1rekIk5wD3AUcDixRywRGYrprwc2lW3M12Ap8rf7WqrhZwNFl3nUlANaq9w5NbJwLz8Jq9cAZQJXzd+U05QzAEUAdk/frCqFWCxqMacnayCSzgWonldVydqnVlceKfSIb64v/18r+K9nfI5g9KzVPStcAAAAASUVORK5CYII=)}.el-dropdown-link[data-v-6f96cfc9]{font-size:18px;cursor:pointer;color:#fff}.el-icon-arrow-down[data-v-6f96cfc9]{font-size:12px}.box{display:flex;justify-content:center;background-image:url(/static/img/background.743fea97.png)}.container{width:70%;height:100%}.head{width:100%;height:100px}.entry-card-container{width:100%;height:845px;border-radius:12px;background-color:#fff}.entry-top{background-color:#f5f8fb;height:80px;border-radius:12px 12px 0 0;line-height:80px;font-size:18px;font-weight:700}.instruction[data-v-58cea8fe]{background-image:url(/static/img/background.743fea97.png);height:100vh;display:flex;justify-content:center}.instruction-card-container[data-v-58cea8fe]{width:680px;height:625px;background-color:#fff;border-radius:20px;align-self:center;position:relative}.title[data-v-58cea8fe]{width:310px;height:56px;line-height:56px;position:absolute;left:185px;top:-28px;text-align:center;justify-content:center;color:#fff;font-size:18px;font-weight:900;background-size:cover;background-image:url(/static/img/title.b8ec70cd.png)}.instruction-title[data-v-58cea8fe]{text-align:center;margin-top:40px;font-size:20px}.content-card[data-v-58cea8fe]{width:640px;height:457px;background:#f4f4f4;margin:0 auto}.buttonGroup[data-v-58cea8fe]{width:300px;height:40px;margin:auto;display:flex;justify-content:center}.content[data-v-58cea8fe]{height:420px;padding:20px;overflow-y:auto;line-height:25px}[data-v-6d0ee9e4]{margin:0;padding:0}.el-divider--horizontal[data-v-6d0ee9e4]{margin:15px 0}.el-form-item[data-v-6d0ee9e4]{margin:10px}.print[data-v-2cb272e6]{width:100%;height:780px;overflow-y:auto}.title[data-v-2cb272e6]{font-size:32px;font-weight:bolder;text-align:center;letter-spacing:5px}.titleSub[data-v-2cb272e6]{text-align:center;font-weight:700;font-size:30px;margin-top:15px;letter-spacing:10px}.pic[data-v-2cb272e6]{width:210px;height:199px;margin:110px auto;background-image:url(/static/img/nocard.2e304309.png)}.main[data-v-2cb272e6]{width:95%;height:1200px;margin:auto;border:1px solid #656262}.notice[data-v-2cb272e6]{width:700px;margin:auto}.left[data-v-2cb272e6]{width:65%;height:260px;display:inline-block;vertical-align:top}.left ul li[data-v-2cb272e6]{list-style:none}.right[data-v-2cb272e6]{display:inline-block;width:25%}table[data-v-2cb272e6]{border-color:#656262;border-collapse:collapse;width:100%;height:120px}.el-divider--horizontal[data-v-2cb272e6]{margin:15px 0}.sign-up[data-v-da89fe16]{position:relative}.form[data-v-da89fe16]{width:1350px;overflow:hidden;position:absolute;left:0;right:0;top:50px}.avatar-uploader[data-v-da89fe16]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;width:180px;height:200px}.avatar-uploader .el-upload[data-v-da89fe16]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-da89fe16]{font-size:30px;color:#8c939d;width:180px;height:200px;line-height:178px;text-align:center}.avatar[data-v-da89fe16]{width:180px;height:200px;display:block}.el-divider--horizontal[data-v-da89fe16]{margin:15px 0}.avatar-uploader[data-v-68cea98e]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;width:180px;height:200px}.avatar-uploader .el-upload[data-v-68cea98e]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-68cea98e]{font-size:28px;color:#8c939d;width:178px;height:178px;line-height:178px;text-align:center}.avatar[data-v-68cea98e]{width:180px;height:200px;display:block}.check[data-v-68cea98e]{position:relative;width:100%}.shade[data-v-68cea98e]{width:100%;height:738px;position:absolute;z-index:9}.shadeImg[data-v-68cea98e]{position:absolute;z-index:9;left:40%;top:10%}.shadeBackGround[data-v-68cea98e]{position:absolute;width:100%;height:740px;background:#252424;opacity:.2}.value[data-v-68cea98e]{position:absolute;width:100%}.el-divider--horizontal[data-v-68cea98e]{margin-top:10px;margin-bottom:0}.box[data-v-5ff2a068]{display:flex;justify-content:center;background-image:url(/static/img/background.743fea97.png)}.container[data-v-5ff2a068]{width:80%;height:100%}.head[data-v-5ff2a068]{width:100%;height:90px}.main[data-v-5ff2a068]{border-radius:10px;background:#fdfdfe;width:100%;height:890px}.step[data-v-5ff2a068]{width:100%;height:65px;padding-top:20px;padding-bottom:10px;background:#f5f8fb;border-radius:10px}.stepChild[data-v-5ff2a068]{width:80%;margin:auto}
\ No newline at end of file
.s-canvas[data-v-17c9cb97]{height:38px}.s-canvas canvas[data-v-17c9cb97]{margin-top:5px}*{margin:0;padding:0}.login-code-main[data-v-504b1909]{display:flex;flex-direction:row}.login[data-v-504b1909]{display:flex;justify-content:center;align-items:center;height:100vh;background-image:url(/static/img/background.743fea97.png)}.login .login-card-container[data-v-504b1909]{display:flex;position:relative;width:520px;height:470px;background-color:#fff;border-radius:6px}.title[data-v-504b1909]{width:310px;height:56px;line-height:56px;position:absolute;left:105px;top:-28px;text-align:center;justify-content:center;color:#fff;font-size:18px;font-weight:900;background-size:cover;background-image:url(/static/img/title.b8ec70cd.png)}.login-title[data-v-504b1909]{margin:45px auto 20px;text-align:center;color:#000;font-weight:900}.login-form[data-v-504b1909]{border-radius:6px;width:413px;margin:0 auto}.login-form[data-v-504b1909] .el-input .el-input__inner{height:45px}.login-button[data-v-504b1909]{width:413px;height:60px;background:#416af2;border-radius:6px}.el-login-footer[data-v-504b1909]{height:40px;line-height:40px;position:absolute;bottom:0;width:100%;text-align:center;color:#989797;font-family:Arial;font-size:12px;letter-spacing:1px}.register[data-v-11b4b6c4]{display:flex;justify-content:center;align-items:center;height:100vh;background-image:url(/static/img/background.743fea97.png)}.register .register-card-container[data-v-11b4b6c4]{display:flex;position:relative;width:520px;background-color:#fff;border-radius:6px}.title[data-v-11b4b6c4]{width:310px;height:56px;line-height:56px;position:absolute;left:105px;top:-28px;text-align:center;justify-content:center;color:#fff;font-size:18px;font-weight:900;background-size:cover;background-image:url(/static/img/title.b8ec70cd.png)}.register-title[data-v-11b4b6c4]{margin:30px auto 30px;text-align:center;color:#000;font-weight:900}.register-form[data-v-11b4b6c4]{border-radius:6px;width:413px;margin:0 auto}.register-form[data-v-11b4b6c4] .el-input .el-input__inner{height:48px}.register-button[data-v-11b4b6c4]{width:413px;height:60px;background:#416af2;border-radius:6px}.register-tip[data-v-11b4b6c4]{font-size:13px;text-align:center;color:#bfbfbf}.register-code[data-v-11b4b6c4]{width:33%;height:38px;float:right}.register-code img[data-v-11b4b6c4]{cursor:pointer;vertical-align:middle}.el-register-footer[data-v-11b4b6c4]{height:40px;line-height:40px;position:fixed;bottom:0;width:100%;text-align:center;color:#fff;font-family:Arial;font-size:12px;letter-spacing:1px}.register-code-img[data-v-11b4b6c4]{height:38px}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
(self["webpackChunkart_exam_web"]=self["webpackChunkart_exam_web"]||[]).push([[443],{7100:function(t,e,r){"use strict";r.d(e,{Z:function(){return u}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"box1"},[e("div",{staticClass:"web-icon"},[e("el-image",{attrs:{src:t.logo,alt:"加载失败了"},on:{click:t.returnIndex}})],1),e("span",{staticClass:"web-title",on:{click:t.returnIndex}},[t._v("艺考报名网")]),e("div",{staticClass:"drawer"},[e("el-dropdown",[e("div",{staticClass:"el-dropdown-link"},[e("el-image",{staticStyle:{"vertical-align":"middle","border-radius":"50%",width:"45px",height:"45px"},attrs:{src:t.pic,alt:"头像"}}),t._v("  "+t._s(t.name)),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})],1),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e("el-dropdown-item",[e("el-button",{attrs:{type:"text"},on:{click:t.handleLogout}},[t._v("退出登录")])],1)],1)],1)],1)])},a=[],s=(r(7658),"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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"),n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAAAXNSR0IArs4c6QAAAvtJREFUSEu9lkvMXlMUhp9n0kFFRTTERGhd4h4pTUqTdkArbmGCUJcm2kmpUrRpIumocSuiTJC4FMEAEcSlA6LVpDTiHqIlJkKIIAxMXllxfjnf+c/5/68hXcnKyfed/Z537/2u/a4t+zHcj1xMS5ZkJnAxcHyTJzTPL4DPgXpWvqT+OdXkpyRLchpwPzAP+KSTJwPt3A2sUT8cIhwkS3I18ATwInCrumfoI0nmAncDlwDXqE/2je0lS/IqcB6wUn1kXF2TrAAeBl5Tz+/iJpEluRZ4DJit/jwu0cS4JIcAPwHL1cfb+BGyJAcA3wC39G1FUyzXA6cDHwAP9hVFI8E9wFHqHxOEXbKHmhVd1l1RkrOA7VV1wDPAFU2VLlR39Ix/rlaorhoi2wtcNQDeBWxTN7S2bBNwtjp/YHJb1TmTyJIcB3wGHKz+3gYnORT4Qe3TOMBh6o8dzIHAL8CJ6pf17l9wksuBDeopPbM8EtitlvgjkaSKaJ76bc+7j4FN6rNdsgcavUqLSZGkgHeqT7e28UpgXd8Ea0yS0rZ0W90lq8O7V107QLa0KYwt6sYkG4EbqlDUNwYwm4E5ah32kW1cUw6gLhoALgYubbKsq6zq+Ur17QHMO+VAalneCNkC4JUBXcp+jgWuUz9tbeNJwKPAV2rZW5+eF6g7u2QzquKAxepHrQ/+CixQy+F7I0l1gp3qQS3cqUCtuCr1rxGyRtCXgT3qTc3v14HSqLxyykhyIbBKPbfB3gfMVS+aAHYdZAlQYpeg5fKb1fpvrEiyDbgROKbpFkvVN3vJmhk9BZwJrK8iUG8fi+mfUt8CvAvcAbynLmtjh1pMuUKRViW9sA9kde5qG5f1uc0QWblILf974Db1rekIk5wD3AUcDixRywRGYrprwc2lW3M12Ap8rf7WqrhZwNFl3nUlANaq9w5NbJwLz8Jq9cAZQJXzd+U05QzAEUAdk/frCqFWCxqMacnayCSzgWonldVydqnVlceKfSIb64v/18r+K9nfI5g9KzVPStcAAAAASUVORK5CYII=",o={name:"HeadInfo",props:["name"],computed:{pic:{get(){return this.$store.state.user.photo?this.$store.state.user.photoData:n}}},data(){return{logo:s,baseUrl:"http://localhost:8848"}},methods:{returnIndex(){this.$router.push({path:"/"})},handleLogout(){this.$alert("是否确认退出登录?","提示",{confirmButtonText:"确定",cancelButtonText:"取消"}).then((()=>{this.$store.dispatch("LogOut").then((t=>{this.$router.push({path:"/login"}).catch((()=>{}))}))}))}}},l=o,d=r(1001),c=(0,d.Z)(l,i,a,!1,null,"6f96cfc9",null),u=c.exports},6486:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return M}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{staticClass:"container"},[e("div",{staticClass:"head"},[e("head-info",{attrs:{name:t.studentName}})],1),e("div",{staticClass:"main"},[e("div",{staticClass:"step"},[e("div",{staticClass:"stepChild"},[e("el-steps",{attrs:{active:t.active,"finish-status":"success","align-center":""}},[e("el-step",{attrs:{title:"报名"}}),e("el-step",{attrs:{title:"审核"}}),e("el-step",{attrs:{title:"打印准考证"}}),e("el-step",{attrs:{title:"成绩查询"}})],1)],1)]),e(t.tabs[t.active],{tag:"component",attrs:{PropTestId:t.testId},on:{changeTab:t.changeStep}})],1),e("div",{staticStyle:{width:"100%",height:"60px","text-align":"center",color:"white","font-size":"16px","font-weight":"bold","padding-top":"30px","letter-spacing":"2px"}},[t._v(" 山东省东营市第二中学 ")])])])},a=[],s=function(){var t=this,e=t._self._c;return e("div",[e("el-card",{staticStyle:{width:"80%",margin:"auto",height:"600px"}},[e("div",{staticStyle:{"margin-top":"10px"}},[e("div",{staticStyle:{display:"inline-block","margin-left":"10px","margin-right":"10px",width:"8px",height:"30px",background:"#2a7eec"}}),e("b",{staticStyle:{"line-height":"30px","vertical-align":"top"}},[t._v("成绩查询")]),e("el-divider")],1),t.haveScore?e("div",{staticStyle:{width:"850px",margin:"auto"}},[e("br"),t._v(" "),e("br"),e("h1",{staticStyle:{"text-align":"center",color:"#416af1","letter-spacing":"5px"}},[t._v(" "+t._s(t.todayYear)+"年"+t._s(t.form.examName)+"考试成绩查询结果 ")]),e("br"),e("br"),e("el-form",{staticStyle:{margin:"auto"},attrs:{model:t.form,"label-width":"130px"}},[e("el-row",{attrs:{gutter:20}},[e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"姓名:"}},[e("el-input",{model:{value:t.form.studentName,callback:function(e){t.$set(t.form,"studentName",e)},expression:"form.studentName"}})],1),e("el-form-item",{attrs:{label:"学籍号:"}},[e("el-input",{model:{value:t.form.studentNumber,callback:function(e){t.$set(t.form,"studentNumber",e)},expression:"form.studentNumber"}})],1),e("el-form-item",{attrs:{label:"准考证号:"}},[e("el-input",{model:{value:t.form.examNumber,callback:function(e){t.$set(t.form,"examNumber",e)},expression:"form.examNumber"}})],1),e("el-form-item",{attrs:{label:"证件号:"}},[e("el-input",{model:{value:t.form.idCard,callback:function(e){t.$set(t.form,"idCard",e)},expression:"form.idCard"}})],1),e("el-form-item",{attrs:{label:"考试类别:"}},[e("el-input",{model:{value:t.form.examSort,callback:function(e){t.$set(t.form,"examSort",e)},expression:"form.examSort"}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"考试项目:"}},[e("el-input",{model:{value:t.form.examProject,callback:function(e){t.$set(t.form,"examProject",e)},expression:"form.examProject"}})],1),e("el-form-item",{attrs:{label:"成绩:"}},[e("el-input",{model:{value:t.form.score,callback:function(e){t.$set(t.form,"score",e)},expression:"form.score"}})],1),e("el-form-item",{attrs:{label:"专业测试结果:"}},[e("el-input",{model:{value:t.form.examNumber,callback:function(e){t.$set(t.form,"examNumber",e)},expression:"form.examNumber"}})],1),e("el-form-item",{attrs:{label:"专业录取资格线:"}},[e("el-input",{model:{value:t.form.passScore,callback:function(e){t.$set(t.form,"passScore",e)},expression:"form.passScore"}})],1)],1)],1)],1)],1):e("div",[e("el-image",{staticStyle:{width:"200px",height:"180px"},attrs:{src:t.noScore,alt:"图片加载失败"}})],1)])],1)},n=[],o=(r(7658),r(1037)),l=(r.p,{name:"Score",props:["PropTestId"],computed:{todayYear(){const t=new Date;return t.getFullYear()}},created(){this.studentId=this.$store.state.user.studentId,this.getAllInfo()},data(){return{studentId:void 0,noScore:void 0,haveScore:void 0,form:[],isView:!0}},methods:{getAllInfo(){(0,o.LG)(this.PropTestId,this.studentId).then((t=>{4==t.node?(this.form=t.data,this.haveScore=!0):this.haveScore=!1}))},getScore(){(0,o.PX)().then((t=>{}))},handleReturn(){this.$router.push({path:"/entry"})}}}),d=l,c=r(1001),u=(0,c.Z)(d,s,n,!1,null,"6d0ee9e4",null),p=u.exports,m=function(){var t=this,e=t._self._c;return e("div",{staticClass:"print"},[e("div",{staticStyle:{"margin-top":"10px"}},[e("div",{staticStyle:{display:"inline-block","margin-left":"10px","margin-right":"10px",width:"8px",height:"30px",background:"#2a7eec"}}),e("b",{staticStyle:{"line-height":"30px","vertical-align":"top"}},[t._v("打印准考证")]),e("el-divider")],1),t.hasAdmissionCard?e("div",[e("el-button",{staticStyle:{display:"block","font-weight":"bold",margin:"auto"},attrs:{type:"primary"},on:{click:t.print}},[t._v("打印准考证 ")]),e("el-card",{staticStyle:{width:"940px",margin:"auto"}},[e("br"),e("div",{staticClass:"main",attrs:{id:"printArea"}},[e("br"),e("div",{staticClass:"title"},[t._v("东营市第二中学"+t._s(t.todayYear)+"特色招生专业测试 ")]),e("div",{staticClass:"titleSub"},[t._v(" 准考证 ")]),e("br"),e("br"),e("br"),e("div",[e("div",{staticClass:"left"},[e("ul",{staticStyle:{"margin-left":"40px"}},[e("li",[e("b",[t._v("姓名:")]),t._v(t._s(t.examForm.studentName)),e("br"),e("br")]),e("li",[e("b",[t._v("准考证号:")]),t._v(t._s(t.examForm.examNumber)),e("br"),e("br")]),e("li",[e("b",[t._v("测试项目:")]),t._v(t._s(t.examForm.project)),e("br"),e("br")]),e("li",[e("b",[t._v("组别(座号):")]),t._v(t._s(t.examForm.inGroup)),e("br"),e("br")]),e("li",[e("b",[t._v("联系电话:")]),t._v(t._s(t.examForm.phoneNumber)),e("br"),e("br")]),e("li",[e("b",[t._v("毕业学校:")]),t._v(t._s(t.examForm.schoolName)),e("br"),e("br")])])]),e("div",{staticClass:"right"},[e("el-image",{staticStyle:{width:"180px",height:"220px"},attrs:{src:t.examForm.photoData}})],1)]),e("table",{attrs:{border:"1"}},[e("tr",[e("th",{staticStyle:{width:"35%",height:"30px","text-align":"center"}},[t._v("考试时间("+t._s(t.todayYear)+"年) ")]),e("th",{staticStyle:{width:"30%",height:"30px","text-align":"center"}},[t._v("考试时间")]),e("th",{staticStyle:{width:"35%",height:"30px","text-align":"center"}},[t._v("考试地点")])]),e("tr",[e("th",{staticStyle:{height:"30px","text-align":"center"}},[t._v(t._s(t.examForm.examDate))]),e("th",{staticStyle:{height:"30px","text-align":"center"}},[t._v(t._s(t.examForm.examTime))]),e("th",{staticStyle:{height:"30px","text-align":"center"}},[t._v(t._s(t.examForm.examAddress))])])]),e("br"),e("div",{staticStyle:{width:"800px",height:"600px",margin:"auto"}},[e("b",{staticStyle:{"font-size":"16px","line-height":"30px"}},[t._v("注意事项:")]),e("p",{staticStyle:{"line-height":"22px","font-size":"14px"},domProps:{innerHTML:t._s(t.examForm.notice)}})])])]),e("br"),t._v(" "),e("br"),t._v(" "),e("br"),t._v(" "),e("br")],1):e("div",{staticClass:"pic"},[e("div",{staticStyle:{"font-weight":"700"}},[t._v("暂无准考证信息")])])])},h=[],f=r(6801),b=r.n(f),g={name:"Print",props:["PropTestId","PropStudentId"],created(){this.studentId=this.$store.state.user.studentId,this.getAllInfo()},computed:{todayYear(){const t=new Date;return t.getFullYear()}},data(){return{studentId:void 0,baseUrl:"http://localhost:8848",examForm:{},hasAdmissionCard:void 0}},methods:{getAllInfo(){(0,o.LG)(this.PropTestId,this.studentId).then((t=>{4==t.node?this.$emit("changeTab",3,"成绩查询"):3==t.node?(this.examForm=t.data,this.hasAdmissionCard=!0):this.hasAdmissionCard=!1}))},print(){b()({printable:"printArea",targetStyles:["*"],type:"html"})}}},y=g,v=(0,c.Z)(y,m,h,!1,null,"2cb272e6",null),w=v.exports,x=function(){var t=this,e=t._self._c;return e("div",{staticClass:"sign-up"},[e("div",{staticStyle:{"margin-top":"10px"}},[e("div",{staticStyle:{display:"inline-block","margin-left":"10px","margin-right":"10px",width:"8px",height:"30px",background:"#2a7eec"}}),e("b",{staticStyle:{"line-height":"30px","vertical-align":"top"}},[t._v("考生报名")]),e("el-divider")],1),e("el-form",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],ref:"form",staticStyle:{"margin-top":"50px"},attrs:{model:t.form,"label-width":"90px",rules:t.rules}},[e("el-row",{attrs:{gutter:25}},[e("el-col",{staticStyle:{"text-align":"center"},attrs:{offset:1,span:4}},[e("el-form-item",{attrs:{"label-width":"0px",prop:"photo"}},[e("el-upload",{staticClass:"avatar-uploader",staticStyle:{margin:"auto"},attrs:{action:"#","show-file-list":!1,"http-request":t.handleUpload,"before-upload":t.beforeAvatarUpload,accept:"image/*"}},[t.form.photo?e("img",{staticClass:"avatar",attrs:{src:t.form.photoData,alt:"加载失败"}}):e("i",{staticClass:"el-icon-plus avatar-uploader-icon"})])],1),e("br"),e("div",{staticStyle:{"text-align":"center"}},[e("b",{staticStyle:{color:"rgb(96,98,102)"}},[t._v("照 片")])])],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"姓名",prop:"studentName"}},[e("el-input",{attrs:{disabled:""},model:{value:t.form.studentName,callback:function(e){t.$set(t.form,"studentName",e)},expression:"form.studentName"}})],1),e("el-form-item",{attrs:{label:"身份证号",prop:"idCard"}},[e("el-input",{attrs:{disabled:""},model:{value:t.form.idCard,callback:function(e){t.$set(t.form,"idCard",e)},expression:"form.idCard"}})],1),e("el-form-item",{attrs:{label:"学籍号",prop:"studentNumber"}},[e("el-input",{attrs:{placeholder:"请输入学籍号"},model:{value:t.form.studentNumber,callback:function(e){t.$set(t.form,"studentNumber","string"===typeof e?e.trim():e)},expression:"form.studentNumber"}})],1),e("el-form-item",{attrs:{label:"初中学校",prop:"schoolName"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择初中学校"},on:{change:t.handleChange},model:{value:t.form.juniorId,callback:function(e){t.$set(t.form,"juniorId",e)},expression:"form.juniorId"}},t._l(t.schoolList,(function(t){return e("el-option",{key:t.schoolId,attrs:{label:t.name,value:t.schoolId}})})),1)],1)],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"性别",prop:"sex"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{disabled:"",placeholder:"请选择性别"},model:{value:t.form.sex,callback:function(e){t.$set(t.form,"sex",e)},expression:"form.sex"}},[e("el-option",{attrs:{label:"男",value:"0"}}),e("el-option",{attrs:{label:"女",value:"1"}})],1)],1),e("el-form-item",{attrs:{label:"身高",prop:"height"}},[e("el-input",{attrs:{placeholder:"请输入身高"},model:{value:t.form.height,callback:function(e){t.$set(t.form,"height","string"===typeof e?e.trim():e)},expression:"form.height"}},[e("i",{staticStyle:{"font-style":"normal"},attrs:{slot:"suffix"},slot:"suffix"},[t._v("cm")])])],1),e("el-form-item",{attrs:{label:"体重",prop:"weight"}},[e("el-input",{attrs:{placeholder:"请输入体重"},model:{value:t.form.weight,callback:function(e){t.$set(t.form,"weight","string"===typeof e?e.trim():e)},expression:"form.weight"}},[e("i",{staticStyle:{"font-style":"normal"},attrs:{slot:"suffix"},slot:"suffix"},[t._v("kg")])])],1),e("el-form-item",{attrs:{label:"测试项目",prop:"project"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择测试项目"},on:{change:t.handleTestChange},model:{value:t.form.testId,callback:function(e){t.$set(t.form,"testId",e)},expression:"form.testId"}},t._l(t.projectList,(function(t){return e("el-option",{key:t.projectId,attrs:{label:t.name,value:t.projectId}})})),1)],1)],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"联系方式1",prop:"telephone1"}},[e("el-input",{attrs:{placeholder:"请输入联系方式1"},model:{value:t.form.telephone1,callback:function(e){t.$set(t.form,"telephone1","string"===typeof e?e.trim():e)},expression:"form.telephone1"}})],1),e("el-form-item",{attrs:{label:"联系方式2",prop:"telephone2"}},[e("el-input",{attrs:{placeholder:"请输入联系方式2"},model:{value:t.form.telephone2,callback:function(e){t.$set(t.form,"telephone2","string"===typeof e?e.trim():e)},expression:"form.telephone2"}})],1)],1)],1),e("el-form-item",{staticStyle:{width:"300px",margin:"auto"}},[e("br"),e("el-button",{on:{click:t.onStorage}},[t._v("暂 存")]),t._v("  "),e("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("提 交")])],1)],1)],1)},I=[],S=r(3633),C={name:"SignUp",props:["PropTestId"],data(){const t=(t,e,r)=>{const i=/^[0-9]*$/;i.test(e)?r():r(new Error("只能为数字"))};return{studentId:void 0,base64Img:void 0,uploadFile:void 0,form:{juniorId:"",studentName:"",id:"",idCard:"",studentNumber:"",schoolName:"",sex:"",height:"",weight:"",project:"",testId:"",telephone1:"",telephone2:"",photo:"",photoData:""},loading:!1,testId:"",projectList:[],schoolList:[],imgUrl:"",prefix:"http://localhost:8848",rules:{studentNumber:[{required:!0,message:"学籍号不能为空",trigger:"blur"}],schoolName:[{required:!0,message:"初中学校不能为空",trigger:"blur"}],photo:[{required:!0,message:"图片不能为空,请上传",trigger:"blur"}],height:[{required:!0,message:"身高不能为空",trigger:"blur"},{validator:t,trigger:"blur"}],weight:[{required:!0,message:"体重不能为空",trigger:"blur"},{validator:t,trigger:"blur"}],project:[{required:!0,message:"测试项目不能为空",trigger:"blur"}],telephone1:[{required:!0,message:"联系方式1不能为空",trigger:"blur"},{required:!0,validator:S.a,trigger:"blur"}],telephone2:[{required:!0,message:"联系方式2不能为空",trigger:"blur"},{required:!0,validator:S.a,trigger:"blur"}]}}},emits:["onSubmit"],created(){this.base64Img=this.$store.state.user?.temPhotoData,this.studentId=this.$store.state.user.studentId,this.form.id=this.$store.state.user.studentId,this.testId=this.$route.query.testId,this.getProjectList(),this.getSchoolList(),this.getAllInfo()},methods:{getAllInfo(){(0,o.LG)(this.PropTestId,this.studentId).then((t=>{0!=t.node&&(this.form=t.data),this.form.studentName=this.$store.state.user.studentName,this.form.idCard=this.$store.state.user.idCard,this.getInfoByIdcard(this.form.idCard)}))},getSchoolList(){(0,o.K$)().then((t=>{this.schoolList=t.rows.map((t=>({schoolId:t.id,name:t.schoolName})))}))},getProjectList(){(0,o.e5)(this.testId).then((t=>{this.projectList=t.rows.map((t=>({projectId:t.id,name:t.project})))}))},async handleUpload(t){this.uploadFile=t;let e=new FormData;e.append("file",t.file);let r=await(0,o.wX)(e);200==r.code&&(await this.handleAvatar(),this.form.photo=r.url,this.$message({type:"success",message:"照片上传成功!"}))},handleAvatar(){let t=new FileReader;t.readAsDataURL(this.uploadFile.file),t.onload=e=>{this.$set(this.form,"photoData",t.result),this.base64Img=t.result}},beforeAvatarUpload(t){const e="image/jpeg"===t.type,r=t.size/1024/1024<2;return e||this.$message.error("上传头像图片只能是 JPG 格式!"),r||this.$message.error("上传头像图片大小不能超过 2MB!"),this.imageUrl=URL.createObjectURL(t),e&&r},handleUploadPhoto(){this.$store.commit("SET_PHOTO",this.form.photo),this.$store.commit("SET_PHOTODATA",this.base64Img)},onSubmit(){this.$refs["form"].validate((t=>{t&&this.$confirm("是否确认提交","提示",{type:"info"}).then((async()=>{let t=await(0,o.sj)(this.form,this.testId);200==t.code&&this.handleUploadPhoto()})).then((t=>{this.$message({type:"success",message:"提交成功!"}),this.$emit("changeTab",1,"审核")})).catch((t=>{}))}))},onStorage(){(0,o.Ti)(this.form,this.testId).then((t=>{this.$store.commit("SET_TEMPHOTODATA",this.base64Img),this.$router.replace({path:"/entry"})}))},handleChange(t){const e=this.schoolList?.find((e=>e.schoolId===t));this.form.schoolName=e.name},handleTestChange(t){const e=this.projectList?.find((e=>e.projectId===t));this.form.project=e.name},getInfoByIdcard(t){let e=this.form.idCard,r=null,i=null,a=new Date,s=a.getMonth()+1,n=a.getDate(),o=0;18===t.length&&(o=a.getFullYear()-e.substring(6,10)-1,r=e.substring(16,17),i=e.substring(6,10)+"-"+e.substring(10,12)+"-"+e.substring(12,14),(e.substring(10,12)<s||e.substring(10,12)==s&&e.substring(12,14)<=n)&&o++),15===t.length&&(o=a.getFullYear()-e.substring(6,8)-1901,r=e.substring(13,14),i="19"+e.substring(6,8)+"-"+e.substring(8,10)+"-"+e.substring(10,12),(e.substring(8,10)<s||e.substring(8,10)==s&&e.substring(10,12)<=n)&&o++),r=r%2===0?"1":"0",this.$set(this.form,"sex",r)}}},k=C,A=(0,c.Z)(k,x,I,!1,null,"da89fe16",null),j=A.exports,E=function(){var t=this,e=t._self._c;return e("div",{staticClass:"check"},[e("div",{staticStyle:{"margin-top":"10px"}},[e("div",{staticStyle:{display:"inline-block","margin-left":"10px","margin-right":"10px",width:"8px",height:"30px",background:"#2a7eec"}}),e("b",{staticStyle:{"line-height":"30px","vertical-align":"top"}},[t._v("审 核")]),e("el-divider")],1),1==t.success||3==t.success?e("div",{staticClass:"shade"},[e("div",{staticClass:"shadeImg"},[e("el-image",{directives:[{name:"show",rawName:"v-show",value:1==t.success,expression:"success==1"}],staticStyle:{width:"300px",height:"250px"},attrs:{src:t.successPng,alt:"报名成功"}}),e("el-image",{directives:[{name:"show",rawName:"v-show",value:3==t.success,expression:"success==3"}],staticStyle:{width:"200px",height:"180px"},attrs:{src:t.checkPng,alt:"审批中"}})],1),e("div",{staticClass:"shadeBackGround"})]):t._e(),e("div",{staticClass:"value"},[e("el-form",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],ref:"form",staticStyle:{"margin-top":"50px",width:"100%"},attrs:{model:t.form,"label-width":"90px",rules:t.rules}},[e("el-row",{attrs:{gutter:25}},[e("el-col",{staticStyle:{"text-align":"center"},attrs:{offset:1,span:4}},[e("el-form-item",{attrs:{"label-width":"0px",prop:"photo"}},[e("el-upload",{staticClass:"avatar-uploader",attrs:{action:"#","show-file-list":!1,"http-request":t.handleUpload,"before-upload":t.beforeAvatarUpload}},[t.form.photo?e("img",{staticClass:"avatar",attrs:{src:t.form.photoData}}):e("i",{staticClass:"el-icon-plus avatar-uploader-icon"})])],1),e("br"),e("b",{staticStyle:{color:"rgb(96,98,102)"}},[t._v("照 片")])],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"姓名",prop:"studentName"}},[e("el-input",{attrs:{disabled:""},model:{value:t.form.studentName,callback:function(e){t.$set(t.form,"studentName",e)},expression:"form.studentName"}})],1),e("el-form-item",{attrs:{label:"身份证号",prop:"idCard"}},[e("el-input",{attrs:{disabled:""},model:{value:t.form.idCard,callback:function(e){t.$set(t.form,"idCard",e)},expression:"form.idCard"}})],1),e("el-form-item",{attrs:{label:"学籍号",prop:"studentNumber"}},[e("el-input",{attrs:{placeholder:"请输入学籍号"},model:{value:t.form.studentNumber,callback:function(e){t.$set(t.form,"studentNumber","string"===typeof e?e.trim():e)},expression:"form.studentNumber"}})],1),e("el-form-item",{attrs:{label:"初中学校",prop:"schoolName"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{placeholder:"请选择初中学校"},on:{change:t.handleChange},model:{value:t.form.juniorId,callback:function(e){t.$set(t.form,"juniorId",e)},expression:"form.juniorId"}},t._l(t.schoolList,(function(t){return e("el-option",{key:t.schoolId,attrs:{label:t.name,value:t.schoolId}})})),1)],1)],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"性别",prop:"sex"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{disabled:"",placeholder:"请选择性别"},model:{value:t.form.sex,callback:function(e){t.$set(t.form,"sex",e)},expression:"form.sex"}},[e("el-option",{attrs:{label:"男",value:"0"}}),e("el-option",{attrs:{label:"女",value:"1"}})],1)],1),e("el-form-item",{attrs:{label:"身高",prop:"height"}},[e("el-input",{attrs:{placeholder:"请输入身高"},model:{value:t.form.height,callback:function(e){t.$set(t.form,"height","string"===typeof e?e.trim():e)},expression:"form.height"}},[e("i",{staticStyle:{"font-style":"normal"},attrs:{slot:"suffix"},slot:"suffix"},[t._v("cm")])])],1),e("el-form-item",{attrs:{label:"体重",prop:"weight"}},[e("el-input",{attrs:{placeholder:"请输入体重"},model:{value:t.form.weight,callback:function(e){t.$set(t.form,"weight","string"===typeof e?e.trim():e)},expression:"form.weight"}},[e("i",{staticStyle:{"font-style":"normal"},attrs:{slot:"suffix"},slot:"suffix"},[t._v("kg")])])],1),e("el-form-item",{attrs:{label:"测试项目",prop:"project"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{placeholder:"请选择测试项目"},on:{change:t.handleTestChange},model:{value:+t.form.testId,callback:function(e){t.$set(+t.form,"testId",e)},expression:"+form.testId"}},t._l(t.projectList,(function(t){return e("el-option",{key:t.projectId,attrs:{label:t.name,value:t.projectId}})})),1)],1)],1),e("el-col",{attrs:{span:6}},[e("el-form-item",{attrs:{label:"联系方式1",prop:"telephone1"}},[e("el-input",{attrs:{placeholder:"请输入联系方式1"},model:{value:t.form.telephone1,callback:function(e){t.$set(t.form,"telephone1","string"===typeof e?e.trim():e)},expression:"form.telephone1"}})],1),e("el-form-item",{attrs:{label:"联系方式2",prop:"telephone2"}},[e("el-input",{attrs:{placeholder:"请输入联系方式2"},model:{value:t.form.telephone2,callback:function(e){t.$set(t.form,"telephone2","string"===typeof e?e.trim():e)},expression:"form.telephone2"}})],1)],1)],1),e("el-form-item",{staticStyle:{width:"300px",margin:"auto"}},[e("br"),e("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("提 交")])],1)],1)],1)])},N=[],T=r.p+"static/img/check.6b46e399.png",P=r.p+"static/img/success.39b6a92a.png",U={name:"Check",props:["PropTestId"],created(){this.studentId=this.$store.state.user.studentId,this.getProjectList(),this.getSchool(),this.getAllInfo()},computed:{success:{get(){return this.form?.auditStatus}}},data(){const t=(t,e,r)=>{const i=/^[0-9]*$/;i.test(e)?r():r(new Error("只能为数字"))};return{base64Img:void 0,uploadFile:void 0,checkPng:T,successPng:P,form:{juniorId:"",studentName:"",id:"",idCard:"",studentNumber:"",schoolName:"",sex:"",height:"",weight:"",project:"",testId:"",telephone1:"",telephone2:"",photo:"",photoData:""},loading:!1,testId:"",studentId:"",projectList:[],schoolList:[],imgUrl:"",prefix:"http://localhost:8848",rules:{studentNumber:[{required:!0,message:"学籍号不能为空",trigger:"blur"}],schoolName:[{required:!0,message:"初中学校不能为空",trigger:"blur"}],photo:[{required:!0,message:"图片不能为空,请上传",trigger:"blur"}],height:[{required:!0,message:"身高不能为空",trigger:"blur"},{validator:t,trigger:"blur"}],weight:[{required:!0,message:"体重不能为空",trigger:"blur"},{validator:t,trigger:"blur"}],project:[{required:!0,message:"测试项目不能为空",trigger:"blur"}],telephone1:[{required:!0,message:"联系方式1不能为空",trigger:"blur"},{required:!0,validator:S.a,trigger:"blur"}],telephone2:[{required:!0,message:"联系方式2不能为空",trigger:"blur"},{required:!0,validator:S.a,trigger:"blur"}]}}},methods:{getAllInfo(){(0,o.LG)(this.PropTestId,this.studentId).then((t=>{3==t.node?this.$emit("changeTab",2,"打印准考证"):this.form=t.data}))},getSchool(){(0,o.K$)().then((t=>{this.schoolList=t.rows.map((t=>({schoolId:t.id,name:t.schoolName})))}))},getProjectList(){(0,o.e5)(this.PropTestId).then((t=>{this.projectList=t.rows.map((t=>({projectId:t.id,name:t.project})))}))},async handleUpload(t){this.uploadFile=t;let e=new FormData;e.append("file",t.file);let r=await(0,o.wX)(e);200==r.code&&(await this.handleAvatar(),this.form.photo=r.url,this.$message({type:"success",message:"照片上传成功!"}))},handleAvatar(){let t=new FileReader;t.readAsDataURL(this.uploadFile.file),t.onload=e=>{this.$set(this.form,"photoData",t.result),this.base64Img=t.result}},beforeAvatarUpload(t){const e="image/jpeg"===t.type,r=t.size/1024/1024<2;return e||this.$message.error("上传头像图片只能是 JPG 格式!"),r||this.$message.error("上传头像图片大小不能超过 2MB!"),this.imageUrl=URL.createObjectURL(t),e&&r},handleUploadPhoto(){this.$store.commit("SET_PHOTO",this.form.photo),this.$store.commit("SET_PHOTODATA",this.base64Img)},onSubmit(){this.$refs["form"].validate((t=>{t&&this.$confirm("是否确认提交","提示",{type:"info"}).then((async()=>{let t=await(0,o.sj)(this.form,this.PropTestId);200==t.code&&this.handleUploadPhoto()})).then((t=>{this.$message({type:"success",message:"提交成功!"}),this.getAllInfo(),this.$emit("changeTab",1,"审核")})).catch((t=>{}))}))},handleChange(t){const e=this.schoolList?.find((e=>e.schoolId===t));this.form.schoolName=e.name},handleTestChange(t){const e=this.projectList?.find((e=>e.projectId===t));this.form.project=e.name}}},L=U,R=(0,c.Z)(L,E,N,!1,null,"68cea98e",null),z=R.exports,O=r(7100),Z={name:"ApplyProcess",components:{Score:p,Print:w,SignUp:j,Check:z,HeadInfo:O.Z},computed:{active(){return console.log("active",this.$store.state.user.active),this.$store.state.user.active}},data(){return{tabs:["signUp","check","print","score"],titles:["报名","审核","打印准考证","成绩查询"],studentName:"",testId:"",studentId:""}},created(){this.studentName=this.$store.state.user.studentName,this.testId=this.$route?.query?.testId,this.studentId=this.$route?.query?.studentId},methods:{changeStep(t,e){this.$store.commit("SET_ACTIVE",t)}}},B=Z,W=(0,c.Z)(B,i,a,!1,null,"5ff2a068",null),M=W.exports},3362:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return u}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{staticClass:"container"},[e("div",{staticClass:"head"},[e("head-info",{attrs:{name:t.studentName}})],1),e("div",{staticClass:"entry-card-container"},[t._m(0),e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"table",staticStyle:{width:"100%"},attrs:{data:t.testList,"header-cell-style":{"text-align":"center",color:"#416af2"},"cell-style":{"text-align":"center",color:"#000000"},border:"",height:"750"}},[e("el-table-column",{attrs:{prop:"date",label:"序号",type:"index",width:"100"}}),e("el-table-column",{attrs:{prop:"examName",label:"考试名称","min-width":"180"}}),e("el-table-column",{attrs:{prop:"deadline",label:"报名截止日期","min-width":"180"}}),e("el-table-column",{attrs:{prop:"currentState",label:"当前状态","min-width":"180"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(t.getState(e.row.currentState))+" ")]}}])}),e("el-table-column",{attrs:{label:"操作","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(r){return[e("el-button",{attrs:{size:"mini",type:"text",icon:"el-icon-d-arrow-right"},on:{click:function(e){return t.handleSignUp(r.row)}}},[t._v("进入 ")])]}}])})],1)],1),e("div",{staticStyle:{width:"100%",height:"60px","text-align":"center",color:"white","font-size":"16px","font-weight":"bold","padding-top":"30px","letter-spacing":"2px"}},[t._v(" 山东省东营市第二中学 ")])])])},a=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"entry-top"},[e("span",[t._v("  考试报名")])])}],s=(r(7658),r(7100)),n=r(1037),o={name:"Entry",components:{HeadInfo:s.Z},data(){return{loading:!0,testList:[],studentName:"",studentId:""}},created(){this.studentName=this.$store.state.user.studentName,this.studentId=this.$store.state.user.studentId,this.getTestList()},methods:{getTestList(){(0,n.gp)(this.studentId).then((t=>{this.testList=t.rows,this.loading=!1}))},handleSignUp(t){(0,n.tH)(t.id,this.studentId).then((e=>{1==e.data?(0,n.LG)(t.id,this.studentId).then((e=>{let r=e?.node;"0"===r?this.$router.push({path:"/Instruction",query:{testId:t.id}}):(this.$store.commit("SET_ACTIVE",e?.node-1),this.$router.push({path:"/ApplyProcess",query:{testId:t.id,studentId:this.studentId}}))})):this.$message({message:"暂时无法进入",type:"warning"})})).catch((t=>{}))}},computed:{getState(){return function(t){let e="";switch(t){case"0":e="待报名";break;case"1":e="待审核";break;case"2":e="通过";break;case"3":e="驳回";break;case"4":e="信息修改";break;case"5":e="准考证打印";break;case"6":e="成绩查询";break;case"7":e="审核中"}return e}}}},l=o,d=r(1001),c=(0,d.Z)(l,i,a,!1,null,null,null),u=c.exports},2548:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return c}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"instruction"},[e("div",{staticClass:"instruction-card-container"},[e("div",{staticClass:"title"},[t._v(" 东营市第二中学艺考报名 ")]),e("h3",{staticClass:"instruction-title"},[t._v("报考须知")]),e("br"),e("div",{staticClass:"content-card"},[e("div",{staticClass:"content"},[e("p",{domProps:{innerHTML:t._s(t.notice)}}),e("p",{domProps:{innerHTML:t._s(t.examArrange)}})])]),e("br"),e("div",{staticClass:"buttonGroup"},[e("el-button",{staticStyle:{width:"150px"},attrs:{disabled:t.disable,type:"primary"},on:{click:t.onContinue}},[t._v("已阅读并知晓"),e("span",{directives:[{name:"show",rawName:"v-show",value:t.timerCount>0,expression:"timerCount>0"}]},[t._v("("+t._s(t.timerCount)+")")])]),t._v("   "),e("el-button",{staticStyle:{width:"150px"},on:{click:t.onReturn}},[t._v("返 回")])],1)])])},a=[],s=(r(7658),r(1037)),n={name:"Instruction",data(){return{propStudentId:void 0,disable:!0,testId:"",timerCount:10,studentId:"",examArrange:"",notice:""}},created(){this.testId=this.$route.query.testId,this.studentId=this.$store.state.user.studentId,this.getInfo()},methods:{getInfo(){(0,s.LG)(this.testId,this.studentId).then((t=>{this.notice=t.data.notice,this.examArrange=t.data.examArrange}))},onContinue(){this.$store.commit("SET_ACTIVE",0),this.$router.push({path:"/ApplyProcess",query:{title:"报名",index:0,testId:this.testId,studentId:this.studentId}})},onReturn(){this.$router.back()}},watch:{timerCount:{handler(t){t>0?setTimeout((()=>{this.timerCount--}),1e3):this.disable=!1},immediate:!0}}},o=n,l=r(1001),d=(0,l.Z)(o,i,a,!1,null,"58cea8fe",null),c=d.exports},6801:function(t,e,r){r(3767),r(8585),r(8696),r(2801),function(e,r){t.exports=r()}(window,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var a=e[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)r.d(i,a,function(e){return t[e]}.bind(null,a));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}({"./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);r(/*! ./sass/index.scss */"./src/sass/index.scss");var i=r(/*! ./js/init */"./src/js/init.js"),a=i["default"].init;"undefined"!==typeof window&&(window.printJS=a),e["default"]=a},"./src/js/browser.js":
/*!***************************!*\
!*** ./src/js/browser.js ***!
\***************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i={isFirefox:function(){return"undefined"!==typeof InstallTrigger},isIE:function(){return-1!==navigator.userAgent.indexOf("MSIE")||!!document.documentMode},isEdge:function(){return!i.isIE()&&!!window.StyleMedia},isChrome:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return!!t.chrome},isSafari:function(){return Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||-1!==navigator.userAgent.toLowerCase().indexOf("safari")},isIOSChrome:function(){return-1!==navigator.userAgent.toLowerCase().indexOf("crios")}};e["default"]=i},"./src/js/functions.js":
/*!*****************************!*\
!*** ./src/js/functions.js ***!
\*****************************/
/*! exports provided: addWrapper, capitalizePrint, collectStyles, addHeader, cleanUp, isRawHTML */
function(t,e,r){"use strict";r.r(e),r.d(e,"addWrapper",(function(){return n})),r.d(e,"capitalizePrint",(function(){return o})),r.d(e,"collectStyles",(function(){return l})),r.d(e,"addHeader",(function(){return c})),r.d(e,"cleanUp",(function(){return u})),r.d(e,"isRawHTML",(function(){return p}));var i=r(/*! ./modal */"./src/js/modal.js"),a=r(/*! ./browser */"./src/js/browser.js");function s(t){return s="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function n(t,e){var r="font-family:"+e.font+" !important; font-size: "+e.font_size+" !important; width:100%;";return'<div style="'+r+'">'+t+"</div>"}function o(t){return t.charAt(0).toUpperCase()+t.slice(1)}function l(t,e){for(var r=document.defaultView||window,i="",a=r.getComputedStyle(t,""),s=0;s<a.length;s++)(-1!==e.targetStyles.indexOf("*")||-1!==e.targetStyle.indexOf(a[s])||d(e.targetStyles,a[s]))&&a.getPropertyValue(a[s])&&(i+=a[s]+":"+a.getPropertyValue(a[s])+";");return i+="max-width: "+e.maxWidth+"px !important; font-size: "+e.font_size+" !important;",i}function d(t,e){for(var r=0;r<t.length;r++)if("object"===s(e)&&-1!==e.indexOf(t[r]))return!0;return!1}function c(t,e){var r=document.createElement("div");if(p(e.header))r.innerHTML=e.header;else{var i=document.createElement("h1"),a=document.createTextNode(e.header);i.appendChild(a),i.setAttribute("style",e.headerStyle),r.appendChild(i)}t.insertBefore(r,t.childNodes[0])}function u(t){t.showModal&&i["default"].close(),t.onLoadingEnd&&t.onLoadingEnd(),(t.showModal||t.onLoadingStart)&&window.URL.revokeObjectURL(t.printable);var e="mouseover";(a["default"].isChrome()||a["default"].isFirefox())&&(e="focus");var r=function r(){window.removeEventListener(e,r),t.onPrintDialogClose();var i=document.getElementById(t.frameId);i&&i.remove()};window.addEventListener(e,r)}function p(t){var e=new RegExp("<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>");return e.test(t)}},"./src/js/html.js":
/*!************************!*\
!*** ./src/js/html.js ***!
\************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./functions */"./src/js/functions.js"),a=r(/*! ./print */"./src/js/print.js");function s(t){return s="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function n(t,e){for(var r=t.cloneNode(),a=Array.prototype.slice.call(t.childNodes),s=0;s<a.length;s++)if(-1===e.ignoreElements.indexOf(a[s].id)){var o=n(a[s],e);r.appendChild(o)}switch(e.scanStyles&&1===t.nodeType&&r.setAttribute("style",Object(i["collectStyles"])(t,e)),t.tagName){case"SELECT":r.value=t.value;break;case"CANVAS":r.getContext("2d").drawImage(t,0,0);break}return r}function o(t){return"object"===s(t)&&t&&(t instanceof HTMLElement||1===t.nodeType)}e["default"]={print:function(t,e){var r=o(t.printable)?t.printable:document.getElementById(t.printable);r?(t.printableElement=n(r,t),t.header&&Object(i["addHeader"])(t.printableElement,t),a["default"].send(t,e)):window.console.error("Invalid HTML element id: "+t.printable)}}},"./src/js/image.js":
/*!*************************!*\
!*** ./src/js/image.js ***!
\*************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./functions */"./src/js/functions.js"),a=r(/*! ./print */"./src/js/print.js"),s=r(/*! ./browser */"./src/js/browser.js");e["default"]={print:function(t,e){t.printable.constructor!==Array&&(t.printable=[t.printable]),t.printableElement=document.createElement("div"),t.printable.forEach((function(e){var r=document.createElement("img");if(r.setAttribute("style",t.imageStyle),r.src=e,s["default"].isFirefox()){var i=r.src;r.src=i}var a=document.createElement("div");a.appendChild(r),t.printableElement.appendChild(a)})),t.header&&Object(i["addHeader"])(t.printableElement,t),a["default"].send(t,e)}}},"./src/js/init.js":
/*!************************!*\
!*** ./src/js/init.js ***!
\************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./browser */"./src/js/browser.js"),a=r(/*! ./modal */"./src/js/modal.js"),s=r(/*! ./pdf */"./src/js/pdf.js"),n=r(/*! ./html */"./src/js/html.js"),o=r(/*! ./raw-html */"./src/js/raw-html.js"),l=r(/*! ./image */"./src/js/image.js"),d=r(/*! ./json */"./src/js/json.js");function c(t){return c="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}var u=["pdf","html","image","json","raw-html"];e["default"]={init:function(){var t={printable:null,fallbackPrintable:null,type:"pdf",header:null,headerStyle:"font-weight: 300;",maxWidth:800,properties:null,gridHeaderStyle:"font-weight: bold; padding: 5px; border: 1px solid #dddddd;",gridStyle:"border: 1px solid lightgray; margin-bottom: -1px;",showModal:!1,onError:function(t){throw t},onLoadingStart:null,onLoadingEnd:null,onPrintDialogClose:function(){},onIncompatibleBrowser:function(){},modalMessage:"Retrieving Document...",frameId:"printJS",printableElement:null,documentTitle:"Document",targetStyle:["clear","display","width","min-width","height","min-height","max-height"],targetStyles:["border","box","break","text-decoration"],ignoreElements:[],repeatTableHeader:!0,css:null,style:null,scanStyles:!0,base64:!1,onPdfOpen:null,font:"TimesNewRoman",font_size:"12pt",honorMarginPadding:!0,honorColor:!1,imageStyle:"max-width: 100%;"},e=arguments[0];if(void 0===e)throw new Error("printJS expects at least 1 attribute.");switch(c(e)){case"string":t.printable=encodeURI(e),t.fallbackPrintable=t.printable,t.type=arguments[1]||t.type;break;case"object":for(var r in t.printable=e.printable,t.fallbackPrintable="undefined"!==typeof e.fallbackPrintable?e.fallbackPrintable:t.printable,t.fallbackPrintable=t.base64?"data:application/pdf;base64,".concat(t.fallbackPrintable):t.fallbackPrintable,t)"printable"!==r&&"fallbackPrintable"!==r&&(t[r]="undefined"!==typeof e[r]?e[r]:t[r]);break;default:throw new Error('Unexpected argument type! Expected "string" or "object", got '+c(e))}if(!t.printable)throw new Error("Missing printable information.");if(!t.type||"string"!==typeof t.type||-1===u.indexOf(t.type.toLowerCase()))throw new Error("Invalid print type. Available types are: pdf, html, image and json.");t.showModal&&a["default"].show(t),t.onLoadingStart&&t.onLoadingStart();var p=document.getElementById(t.frameId);p&&p.parentNode.removeChild(p);var m=document.createElement("iframe");switch(i["default"].isFirefox()?m.setAttribute("style","width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0"):m.setAttribute("style","visibility: hidden; height: 0; width: 0; position: absolute; border: 0"),m.setAttribute("id",t.frameId),"pdf"!==t.type&&(m.srcdoc="<html><head><title>"+t.documentTitle+"</title>",t.css&&(Array.isArray(t.css)||(t.css=[t.css]),t.css.forEach((function(t){m.srcdoc+='<link rel="stylesheet" href="'+t+'">'}))),m.srcdoc+="</head><body></body></html>"),t.type){case"pdf":if(i["default"].isIE())try{console.info("Print.js doesn't support PDF printing in Internet Explorer.");var h=window.open(t.fallbackPrintable,"_blank");h.focus(),t.onIncompatibleBrowser()}catch(f){t.onError(f)}finally{t.showModal&&a["default"].close(),t.onLoadingEnd&&t.onLoadingEnd()}else s["default"].print(t,m);break;case"image":l["default"].print(t,m);break;case"html":n["default"].print(t,m);break;case"raw-html":o["default"].print(t,m);break;case"json":d["default"].print(t,m);break}}}},"./src/js/json.js":
/*!************************!*\
!*** ./src/js/json.js ***!
\************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./functions */"./src/js/functions.js"),a=r(/*! ./print */"./src/js/print.js");function s(t){return s="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function n(t){var e=t.printable,r=t.properties,a='<table style="border-collapse: collapse; width: 100%;">';t.repeatTableHeader&&(a+="<thead>"),a+="<tr>";for(var s=0;s<r.length;s++)a+='<th style="width:'+r[s].columnSize+";"+t.gridHeaderStyle+'">'+Object(i["capitalizePrint"])(r[s].displayName)+"</th>";a+="</tr>",t.repeatTableHeader&&(a+="</thead>"),a+="<tbody>";for(var n=0;n<e.length;n++){a+="<tr>";for(var o=0;o<r.length;o++){var l=e[n],d=r[o].field.split(".");if(d.length>1)for(var c=0;c<d.length;c++)l=l[d[c]];else l=l[r[o].field];a+='<td style="width:'+r[o].columnSize+t.gridStyle+'">'+l+"</td>"}a+="</tr>"}return a+="</tbody></table>",a}e["default"]={print:function(t,e){if("object"!==s(t.printable))throw new Error("Invalid javascript data object (JSON).");if("boolean"!==typeof t.repeatTableHeader)throw new Error("Invalid value for repeatTableHeader attribute (JSON).");if(!t.properties||!Array.isArray(t.properties))throw new Error("Invalid properties array for your JSON data.");t.properties=t.properties.map((function(e){return{field:"object"===s(e)?e.field:e,displayName:"object"===s(e)?e.displayName:e,columnSize:"object"===s(e)&&e.columnSize?e.columnSize+";":100/t.properties.length+"%;"}})),t.printableElement=document.createElement("div"),t.header&&Object(i["addHeader"])(t.printableElement,t),t.printableElement.innerHTML+=n(t),a["default"].send(t,e)}}},"./src/js/modal.js":
/*!*************************!*\
!*** ./src/js/modal.js ***!
\*************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i={show:function(t){var e="font-family:sans-serif; display:table; text-align:center; font-weight:300; font-size:30px; left:0; top:0;position:fixed; z-index: 9990;color: #0460B5; width: 100%; height: 100%; background-color:rgba(255,255,255,.9);transition: opacity .3s ease;",r=document.createElement("div");r.setAttribute("style",e),r.setAttribute("id","printJS-Modal");var a=document.createElement("div");a.setAttribute("style","display:table-cell; vertical-align:middle; padding-bottom:100px;");var s=document.createElement("div");s.setAttribute("class","printClose"),s.setAttribute("id","printClose"),a.appendChild(s);var n=document.createElement("span");n.setAttribute("class","printSpinner"),a.appendChild(n);var o=document.createTextNode(t.modalMessage);a.appendChild(o),r.appendChild(a),document.getElementsByTagName("body")[0].appendChild(r),document.getElementById("printClose").addEventListener("click",(function(){i.close()}))},close:function(){var t=document.getElementById("printJS-Modal");t&&t.parentNode.removeChild(t)}};e["default"]=i},"./src/js/pdf.js":
/*!***********************!*\
!*** ./src/js/pdf.js ***!
\***********************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./print */"./src/js/print.js"),a=r(/*! ./functions */"./src/js/functions.js");function s(t,e,r){var a=new window.Blob([r],{type:"application/pdf"});a=window.URL.createObjectURL(a),e.setAttribute("src",a),i["default"].send(t,e)}e["default"]={print:function(t,e){if(t.base64){var r=Uint8Array.from(atob(t.printable),(function(t){return t.charCodeAt(0)}));s(t,e,r)}else{t.printable=/^(blob|http|\/\/)/i.test(t.printable)?t.printable:window.location.origin+("/"!==t.printable.charAt(0)?"/"+t.printable:t.printable);var i=new window.XMLHttpRequest;i.responseType="arraybuffer",i.addEventListener("error",(function(){Object(a["cleanUp"])(t),t.onError(i.statusText,i)})),i.addEventListener("load",(function(){if(-1===[200,201].indexOf(i.status))return Object(a["cleanUp"])(t),void t.onError(i.statusText,i);s(t,e,i.response)})),i.open("GET",t.printable,!0),i.send()}}}},"./src/js/print.js":
/*!*************************!*\
!*** ./src/js/print.js ***!
\*************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./browser */"./src/js/browser.js"),a=r(/*! ./functions */"./src/js/functions.js"),s={send:function(t,e){document.getElementsByTagName("body")[0].appendChild(e);var r=document.getElementById(t.frameId);r.onload=function(){if("pdf"!==t.type){var e=r.contentWindow||r.contentDocument;if(e.document&&(e=e.document),e.body.appendChild(t.printableElement),"pdf"!==t.type&&t.style){var a=document.createElement("style");a.innerHTML=t.style,e.head.appendChild(a)}var s=e.getElementsByTagName("img");s.length>0?o(Array.from(s)).then((function(){return n(r,t)})):n(r,t)}else i["default"].isFirefox()?setTimeout((function(){return n(r,t)}),1e3):n(r,t)}}};function n(t,e){try{if(t.focus(),i["default"].isEdge()||i["default"].isIE())try{t.contentWindow.document.execCommand("print",!1,null)}catch(r){t.contentWindow.print()}else t.contentWindow.print()}catch(s){e.onError(s)}finally{i["default"].isFirefox()&&(t.style.visibility="hidden",t.style.left="-1px"),Object(a["cleanUp"])(e)}}function o(t){var e=t.map((function(t){if(t.src&&t.src!==window.location.href)return l(t)}));return Promise.all(e)}function l(t){return new Promise((function(e){var r=function r(){t&&"undefined"!==typeof t.naturalWidth&&0!==t.naturalWidth&&t.complete?e():setTimeout(r,500)};r()}))}e["default"]=s},"./src/js/raw-html.js":
/*!****************************!*\
!*** ./src/js/raw-html.js ***!
\****************************/
/*! exports provided: default */
function(t,e,r){"use strict";r.r(e);var i=r(/*! ./print */"./src/js/print.js");e["default"]={print:function(t,e){t.printableElement=document.createElement("div"),t.printableElement.setAttribute("style","width:100%"),t.printableElement.innerHTML=t.printable,i["default"].send(t,e)}}},"./src/sass/index.scss":
/*!*****************************!*\
!*** ./src/sass/index.scss ***!
\*****************************/
/*! no static exports found */
function(t,e,r){},0:
/*!****************************!*\
!*** multi ./src/index.js ***!
\****************************/
/*! no static exports found */
function(t,e,r){t.exports=r(/*! ./src/index.js */"./src/index.js")}})["default"]}))},1037:function(t,e,r){"use strict";r.d(e,{K$:function(){return p},LG:function(){return n},PX:function(){return c},Ti:function(){return l},e5:function(){return u},gp:function(){return a},sj:function(){return d},tH:function(){return s},wX:function(){return o}});var i=r(4471);function a(t){return(0,i.Z)({url:"/web/artStudent/list/"+t,method:"get"})}function s(t,e){return(0,i.Z)({url:"/web/artStudent/enterBtn/"+t+"/"+e,method:"get"})}function n(t,e){return(0,i.Z)({url:"/web/artStudent/enter/all/"+t+"/"+e,method:"get"})}function o(t){return(0,i.Z)({url:"/web/artStudent/avatar",method:"post",headers:{"Content-Type":"multipart/form-data"},data:t})}function l(t,e){return(0,i.Z)({url:"/web/artStudent/webSave/"+e,method:"put",data:t})}function d(t,e){return(0,i.Z)({url:"/web/artStudent/webSubmit/"+e,method:"put",data:t})}function c(t,e){return(0,i.Z)({url:"/web/artStudent/enterScore/"+t+"/"+e,method:"get"})}function u(t){return(0,i.Z)({url:"/web/artStudent/getProjectList/"+t,method:"get"})}function p(){return(0,i.Z)({url:"/web/artStudent/schoolList",method:"get"})}}}]);
\ No newline at end of file
(function(){"use strict";var e={2223:function(e,t,r){r.d(t,{C5:function(){return a},kS:function(){return s},x4:function(){return o},z2:function(){return i}});var n=r(4471);function o(e,t,r){const o={idCard:e,phoneNumber:t,password:r};return(0,n.Z)({url:"/web/artStudent/login",headers:{isToken:!1},method:"post",data:o})}function i(e){return(0,n.Z)({url:"/web/artStudent/register",method:"post",data:e})}function a(){return(0,n.Z)({url:"/web/artStudent/getInfo",method:"get"})}function s(){return(0,n.Z)({url:"/web/artStudent/logout",method:"get"})}},3465:function(e,t,r){var n=r(6369),o=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},i=[],a={name:"App",created(){sessionStorage.getItem("store")&&this.$store.replaceState(Object.assign({},this.$store.state,JSON.parse(sessionStorage.getItem("store")))),window.addEventListener("beforeunload",(()=>{sessionStorage.setItem("store",JSON.stringify(this.$store.state))}))}},s=a,u=r(1001),l=(0,u.Z)(s,o,i,!1,null,null,null),d=l.exports,c=r(2631),m=function(){var e=this,t=e._self._c;return t("div",{staticClass:"login"},[t("div",{staticClass:"login-card-container"},[t("div",{staticClass:"title"},[e._v(" 艺考报名网页 ")]),t("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,rules:e.loginRules},on:{submit:function(e){e.preventDefault()}}},[t("h3",{staticClass:"login-title"},[e._v("考生登录")]),t("el-form-item",{attrs:{prop:"idCard"}},[t("el-input",{attrs:{type:"text","auto-complete":"off",placeholder:"请输入身份证号"},model:{value:e.loginForm.idCard,callback:function(t){e.$set(e.loginForm,"idCard",t)},expression:"loginForm.idCard"}})],1),t("el-form-item",{attrs:{prop:"phoneNumber"}},[t("el-input",{attrs:{type:"text","auto-complete":"off",placeholder:"请输入手机号"},model:{value:e.loginForm.phoneNumber,callback:function(t){e.$set(e.loginForm,"phoneNumber",t)},expression:"loginForm.phoneNumber"}})],1),t("el-form-item",{attrs:{prop:"password"}},[t("el-input",{staticStyle:{"text-security":"disc","-webkit-text-security":"disc"},attrs:{type:"text","auto-complete":"off",placeholder:"请输入密码"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin.apply(null,arguments)}},model:{value:e.loginForm.password,callback:function(t){e.$set(e.loginForm,"password",t)},expression:"loginForm.password"}})],1),e.captchaEnabled?t("el-form-item",{attrs:{prop:"code"}},[t("div",{staticClass:"login-code-main"},[t("div",{staticClass:"login-code-sub"},[t("el-input",{staticStyle:{width:"100%"},attrs:{"auto-complete":"off",placeholder:"请输入验证码"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin.apply(null,arguments)}},model:{value:e.loginForm.code,callback:function(t){e.$set(e.loginForm,"code",t)},expression:"loginForm.code"}})],1),t("div",{staticStyle:{border:"none","margin-left":"50px"},on:{click:e.refreshCode}},[t("Validate",{attrs:{identifyCode:e.identifyCode}})],1)])]):e._e(),t("el-form-item",{staticStyle:{width:"100%"},attrs:{"label-width":"0"}},[t("el-button",{staticClass:"login-button",attrs:{loading:e.loading,size:"medium",type:"primary"},on:{click:e.handleLogin}},[e.loading?t("span",[e._v("登 录 中...")]):t("span",[e._v("登 录")])]),t("div",[e.register?t("div",[t("router-link",{staticClass:"link-type",attrs:{to:"/register"}},[e._v("新用户注册")])],1):e._e()])],1)],1)],1),e._m(0)])},f=[function(){var e=this,t=e._self._c;return t("div",{staticClass:"el-login-footer"},[t("span")])}],h=(r(7658),r(3633)),p=function(){var e=this,t=e._self._c;return t("div",{staticClass:"s-canvas"},[t("canvas",{attrs:{id:"s-canvas",width:e.contentWidth,height:e.contentHeight}})])},g=[],b={name:"Validate",props:{identifyCode:{type:String,default:"1234"},fontSizeMin:{type:Number,default:16},fontSizeMax:{type:Number,default:40},backgroundColorMin:{type:Number,default:180},backgroundColorMax:{type:Number,default:240},colorMin:{type:Number,default:50},colorMax:{type:Number,default:160},lineColorMin:{type:Number,default:40},lineColorMax:{type:Number,default:180},dotColorMin:{type:Number,default:0},dotColorMax:{type:Number,default:255},contentWidth:{type:Number,default:111},contentHeight:{type:Number,default:38}},methods:{randomNum(e,t){return Math.floor(Math.random()*(t-e)+e)},randomColor(e,t){let r=this.randomNum(e,t),n=this.randomNum(e,t),o=this.randomNum(e,t);return"rgb("+r+","+n+","+o+")"},drawPic(){let e=document.getElementById("s-canvas"),t=e.getContext("2d");t.textBaseline="bottom",t.fillStyle=this.randomColor(this.backgroundColorMin,this.backgroundColorMax),t.fillRect(0,0,this.contentWidth,this.contentHeight);for(let r=0;r<this.identifyCode.length;r++)this.drawText(t,this.identifyCode[r],r);this.drawLine(t),this.drawDot(t)},drawText(e,t,r){e.fillStyle=this.randomColor(this.colorMin,this.colorMax),e.font=this.randomNum(this.fontSizeMin,this.fontSizeMax)+"px SimHei";let n=(r+1)*(this.contentWidth/(this.identifyCode.length+1)),o=this.randomNum(this.fontSizeMax,this.contentHeight-5);var i=this.randomNum(-45,45);e.translate(n,o),e.rotate(i*Math.PI/180),e.fillText(t,0,0),e.rotate(-i*Math.PI/180),e.translate(-n,-o)},drawLine(e){for(let t=0;t<8;t++)e.strokeStyle=this.randomColor(this.lineColorMin,this.lineColorMax),e.beginPath(),e.moveTo(this.randomNum(0,this.contentWidth),this.randomNum(0,this.contentHeight)),e.lineTo(this.randomNum(0,this.contentWidth),this.randomNum(0,this.contentHeight)),e.stroke()},drawDot(e){for(let t=0;t<100;t++)e.fillStyle=this.randomColor(0,255),e.beginPath(),e.arc(this.randomNum(0,this.contentWidth),this.randomNum(0,this.contentHeight),1,0,2*Math.PI),e.fill()}},watch:{identifyCode(){this.drawPic()}},mounted(){this.drawPic()}},y=b,v=(0,u.Z)(y,p,g,!1,null,"17c9cb97",null),C=v.exports,w={name:"Login",components:{Validate:C},mounted(){const e=this;e.identifyCode="",e.makeCode(this.identifyCodes,4)},created(){this.refreshCode()},data(){const e=(e,t,r)=>{this.identifyCode!==t?(this.loginForm.code="",this.refreshCode(),r(new Error("请输入正确的验证码"))):r()};return{identifyCode:"",identifyCodes:"1234567890",codeUrl:"",loginForm:{idCard:"",phoneNumber:"",password:"",code:""},loginRules:{idCard:[{required:!0,trigger:"blur",message:"请输入您的身份证号"},{required:!0,validator:h.O,trigger:"blur"}],phoneNumber:[{required:!0,trigger:"blur",message:"请输入您的手机号"},{required:!0,validator:h.a,trigger:"blur"}],password:[{required:!0,trigger:"blur",message:"请输入您的密码"},{min:5,max:20,message:"用户密码长度必须介于 5 和 20 之间",trigger:"blur"}],code:[{required:!0,trigger:"change",message:"请输入验证码"},{required:!0,validator:e,trigger:"blur"}]},loading:!1,captchaEnabled:!0,register:!0}},methods:{handleLogin(){this.$refs.loginForm.validate((e=>{if(!e)return;const{idCard:t,phoneNumber:r,password:n}=this.loginForm;this.$store.dispatch("Login",{idCard:t,phoneNumber:r,password:n}).then((e=>{this.$router.push({path:"/entry"})}))}))},refreshCode(){this.identifyCode="",this.makeCode(this.identifyCodes,4)},makeCode(e,t){for(let r=0;r<t;r++)this.identifyCode+=this.identifyCodes[this.randomNum(0,this.identifyCodes.length)]},randomNum(e,t){return Math.floor(Math.random()*(t-e)+e)}}},N=w,k=(0,u.Z)(N,m,f,!1,null,"504b1909",null),E=k.exports,x=function(){var e=this,t=e._self._c;return t("div",{staticClass:"register"},[t("div",{staticClass:"register-card-container"},[t("div",{staticClass:"title"},[e._v(" 艺考报名网页 ")]),t("el-form",{ref:"registerForm",staticClass:"register-form",attrs:{model:e.registerForm,rules:e.registerRules}},[t("h3",{staticClass:"register-title"},[e._v("个人注册")]),t("el-form-item",{attrs:{prop:"studentName"}},[t("el-input",{attrs:{type:"text","auto-complete":"off",placeholder:"请输入姓名"},model:{value:e.registerForm.studentName,callback:function(t){e.$set(e.registerForm,"studentName",t)},expression:"registerForm.studentName"}})],1),t("el-form-item",{attrs:{prop:"idCard"}},[t("el-input",{attrs:{type:"text","auto-complete":"off",placeholder:"请输入身份证号"},model:{value:e.registerForm.idCard,callback:function(t){e.$set(e.registerForm,"idCard",t)},expression:"registerForm.idCard"}})],1),t("el-form-item",{attrs:{prop:"phoneNumber"}},[t("el-input",{attrs:{type:"text","auto-complete":"off",placeholder:"请输入手机号"},model:{value:e.registerForm.phoneNumber,callback:function(t){e.$set(e.registerForm,"phoneNumber",t)},expression:"registerForm.phoneNumber"}})],1),t("el-form-item",{attrs:{prop:"password"}},[t("el-input",{staticStyle:{"text-security":"disc","-webkit-text-security":"disc"},attrs:{type:"text","auto-complete":"off",placeholder:"请输入密码"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleRegister.apply(null,arguments)}},model:{value:e.registerForm.password,callback:function(t){e.$set(e.registerForm,"password",t)},expression:"registerForm.password"}})],1),t("el-form-item",{attrs:{prop:"confirmPassword"}},[t("el-input",{staticStyle:{"text-security":"disc","-webkit-text-security":"disc"},attrs:{type:"text","auto-complete":"off",placeholder:"请再次输入密码确认"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleRegister.apply(null,arguments)}},model:{value:e.registerForm.confirmPassword,callback:function(t){e.$set(e.registerForm,"confirmPassword",t)},expression:"registerForm.confirmPassword"}})],1),t("el-form-item",{staticStyle:{width:"100%"}},[t("el-button",{staticClass:"register-button",attrs:{loading:e.loading,size:"medium",type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleRegister.apply(null,arguments)}}},[e.loading?t("span",[e._v("注 册 中...")]):t("span",[e._v("注 册")])]),t("div",{staticStyle:{float:"right"}},[t("router-link",{staticClass:"link-type",attrs:{to:"/login"}},[e._v("使用已有账户登录")])],1)],1)],1)],1),e._m(0)])},S=[function(){var e=this,t=e._self._c;return t("div",{staticClass:"el-register-footer"},[t("span")])}],_=r(2223),T={name:"Register",data(){const e=(e,t,r)=>{this.registerForm.password!==t?r(new Error("两次输入的密码不一致")):r()};return{codeUrl:"",confirmPassword:"",registerForm:{studentName:"",idCard:"",phoneNumber:"",password:""},registerRules:{studentName:[{required:!0,trigger:"blur",message:"请输入您的姓名"}],idCard:[{required:!0,trigger:"blur",message:"请输入您的身份证号"},{required:!0,validator:h.O,trigger:"blur"}],phoneNumber:[{required:!0,trigger:"blur",message:"请输入您的手机号"},{required:!0,validator:h.a,trigger:"blur"}],password:[{required:!0,trigger:"blur",message:"请输入您的密码"},{min:5,max:20,message:"用户密码长度必须介于 5 和 20 之间",trigger:"blur"}],confirmPassword:[{required:!0,trigger:"blur",message:"请再次输入您的密码"},{required:!0,validator:e,trigger:"blur"}]},loading:!1,captchaEnabled:!0}},created(){},methods:{handleRegister(){this.$refs.registerForm.validate((e=>{e&&(this.loading=!0,(0,_.z2)(this.registerForm).then((e=>{this.$message({type:"success",message:"注册成功"}),this.$router.push({path:"/login"})})).catch((()=>{this.loading=!1,this.captchaEnabled&&this.getCode()})))}))}}},O=T,P=(0,u.Z)(O,x,S,!1,null,"11b4b6c4",null),F=P.exports;n["default"].use(c.ZP);const M=[{path:"/",redirect:"/entry"},{path:"/login",name:"Login",component:E},{path:"/register",name:"Register",component:F},{path:"/entry",name:"Entry",component:()=>r.e(443).then(r.bind(r,3362))},{path:"/instruction",name:"Instruction",component:()=>r.e(443).then(r.bind(r,2548))},{path:"/applyProcess",name:"ApplyProcess",component:()=>r.e(443).then(r.bind(r,6486))}],A=new c.ZP({routes:M});var L=A,Z=r(6292),D=r(8499),$=r.n(D),q=r(530),I=r.n(q),j=r(1836);I().configure({showSpinner:!1});const R=["/login","/register"];L.beforeEach(((e,t,r)=>{I().start(),(0,j.LP)()?"/login"===e.path?(r({path:"/entry"}),I().done()):""===Z.Z.state.user.studentName?Z.Z.dispatch("GetInfo").then((()=>{r()})).catch((e=>{Z.Z.dispatch("LogOut").then((()=>{D.Message.error(e),r({path:"/login"})})).catch((e=>{r({path:"/login"})}))})):r():-1!==R.indexOf(e.path)?r():(r(`/login?redirect=${e.path}`),I().done())})),L.afterEach((()=>{I().done()})),n["default"].use($()),n["default"].config.productionTip=!1,new n["default"]({router:L,store:Z.Z,render:e=>e(d)}).$mount("#app")},6292:function(e,t,r){r.d(t,{Z:function(){return l}});var n=r(6369),o=r(3822),i=r(2223),a=r(1836);const s={state:{token:(0,a.LP)(),studentName:"",studentId:"",idCard:"",phoneNumber:"",photo:"",photoData:"",temPhotoData:"",active:0},mutations:{SET_TOKEN:(e,t)=>{e.token=t},SET_NAME:(e,t)=>{e.studentName=t},SET_ID:(e,t)=>{e.studentId=t},SET_IDCARD:(e,t)=>{e.idCard=t},SET_PHONENUMBER:(e,t)=>{e.phoneNumber=t},SET_PHOTO:(e,t)=>{e.photo=t},SET_PHOTODATA:(e,t)=>{e.photoData=t},SET_TEMPHOTODATA:(e,t)=>{e.temPhotoData=t},SET_ACTIVE:(e,t)=>{e.active=Number(t),console.log("SET_ACTIVE",e.active)}},actions:{Login({commit:e},t){const r=t.idCard,n=t.phoneNumber,o=t.password;return new Promise(((t,s)=>{(0,i.x4)(r,n,o).then((r=>{(0,a.o4)(r.token),e("SET_TOKEN",r.token),t()})).catch((e=>{s(e)}))}))},GetInfo({commit:e},t){return new Promise(((t,r)=>{(0,i.C5)().then((r=>{const n=r.info;e("SET_NAME",n.studentName),e("SET_IDCARD",n.idCard),e("SET_PHONENUMBER",n.phoneNumber),e("SET_PHOTO",n.photo),e("SET_PHOTODATA",n.photoData),e("SET_ID",n.id),t(r)})).catch((e=>{r(e)}))}))},LogOut({commit:e},t){return new Promise(((t,r)=>{(0,i.kS)().then((()=>{e("SET_TOKEN",""),e("SET_NAME",""),e("studentId",""),e("idCard",""),e("phoneNumber",""),e("photo",""),e("photoData",""),(0,a.gy)(),t()})).catch((e=>{(0,a.gy)(),r(e)}))}))},FedLogOut({commit:e}){return new Promise((t=>{e("SET_TOKEN",""),(0,a.gy)(),t()}))}}};var u=s;n["default"].use(o.ZP);var l=new o.ZP.Store({getters:{},modules:{user:u}})},1836:function(e,t,r){r.d(t,{LP:function(){return i},gy:function(){return s},o4:function(){return a}});var n=r(680);const o="Admin-Token";function i(){return n.Z.get(o)}function a(e){return n.Z.set(o,e)}function s(){return n.Z.remove(o)}},4471:function(e,t,r){var n=r(4161),o=r(8499),i=r(1836),a=r(6292);let s={show:!1};n.Z.defaults.headers["Content-Type"]="application/json;charset=utf-8";const u=n.Z.create({baseURL:"/prod-api",timeout:12e4});u.interceptors.request.use((e=>{const t=!1===(e.headers||{}).isToken;return(0,i.LP)()&&!t&&(e.headers["Authorization"]="Bearer "+(0,i.LP)()),e}),(e=>{Promise.reject(e)})),u.interceptors.response.use((e=>{const t=e.data.code||e.data.status||200,r=e.data.msg;return"blob"===e.request.responseType||"arraybuffer"===e.request.responseType?e.data:401===t?(s.show||(s.show=!0,o.MessageBox.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录","系统提示",{confirmButtonText:"重新登录",cancelButtonText:"取消",type:"warning"}).then((()=>{s.show=!1,a.Z.dispatch("LogOut").then((()=>{location.href="/login"}))})).catch((()=>{s.show=!1}))),Promise.reject("无效的会话,或者会话已过期,请重新登录。")):500===t?((0,o.Message)({dangerouslyUseHTMLString:!0,message:r,type:"error"}),Promise.reject(new Error(r))):200!==t?(o.Notification.error({title:r}),Promise.reject("error")):e.data}),(e=>{let{message:t}=e;return"Network Error"==t?t="后端接口连接异常":t.includes("timeout")?t="系统接口请求超时":t.includes("Request failed with status code")&&(t="系统接口"+t.substr(t.length-3)+"异常"),(0,o.Message)({message:t,type:"error",duration:5e3}),Promise.reject(e)})),t["Z"]=u},3633:function(e,t,r){function n(e,t,r){if(t&&18==t.length){var n=JSON.stringify(t),o=n.split(""),i=o[o.length-2];if("x"===i)return r(new Error("身份证号最后一位X为大写"));var a=new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/),s=t.match(a);if(!s)return r(new Error("身份证号格式有问题,请重新输入"));var u,l=new Date(s[2]+"/"+s[3]+"/"+s[4]);if(u=l.getFullYear()==Number(s[2])&&l.getMonth()+1==Number(s[3])&&l.getDate()==Number(s[4]),u){var d,c,m=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),f=new Array("1","0","X","9","8","7","6","5","4","3","2"),h=0;for(c=0;c<17;c++)h+=t.substr(c,1)*m[c];return d=f[h%11],d!=t.substr(17,1)?r(new Error("末位校验码应该为:"+d)):r()}return r(new Error("输入的身份证号里出生日期不对!"))}return r(new Error("输入的身份证号不满足18位!"))}function o(e,t,r){let n=t.replace(/\s/g,""),o=/^1(3|4|5|7|8|9)\d{9}$/;0!=t.length&&(o.test(n)?r():r([new Error("手机号输入不合法")]))}r.d(t,{O:function(){return n},a:function(){return o}})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,function(){r.amdO={}}(),function(){var e=[];r.O=function(t,n,o,i){if(!n){var a=1/0;for(d=0;d<e.length;d++){n=e[d][0],o=e[d][1],i=e[d][2];for(var s=!0,u=0;u<n.length;u++)(!1&i||a>=i)&&Object.keys(r.O).every((function(e){return r.O[e](n[u])}))?n.splice(u--,1):(s=!1,i<a&&(a=i));if(s){e.splice(d--,1);var l=o();void 0!==l&&(t=l)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[n,o,i]}}(),function(){r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,{a:t}),t}}(),function(){r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))}}(),function(){r.u=function(e){return"static/js/about.ea9e2d00.js"}}(),function(){r.miniCssF=function(e){return"static/css/about.22b6c9c6.css"}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="art-exam-web:";r.l=function(n,o,i,a){if(e[n])e[n].push(o);else{var s,u;if(void 0!==i)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var c=l[d];if(c.getAttribute("src")==n||c.getAttribute("data-webpack")==t+i){s=c;break}}s||(u=!0,s=document.createElement("script"),s.charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",t+i),s.src=n),e[n]=[o];var m=function(t,r){s.onerror=s.onload=null,clearTimeout(f);var o=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((function(e){return e(r)})),t)return t(r)},f=setTimeout(m.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=m.bind(null,s.onerror),s.onload=m.bind(null,s.onload),u&&document.head.appendChild(s)}}}(),function(){r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e}}(),function(){r.p="/"}(),function(){if("undefined"!==typeof document){var e=function(e,t,r,n,o){var i=document.createElement("link");i.rel="stylesheet",i.type="text/css";var a=function(r){if(i.onerror=i.onload=null,"load"===r.type)n();else{var a=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=a,u.request=s,i.parentNode&&i.parentNode.removeChild(i),o(u)}};return i.onerror=i.onload=a,i.href=t,r?r.parentNode.insertBefore(i,r.nextSibling):document.head.appendChild(i),i},t=function(e,t){for(var r=document.getElementsByTagName("link"),n=0;n<r.length;n++){var o=r[n],i=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(i===e||i===t))return o}var a=document.getElementsByTagName("style");for(n=0;n<a.length;n++){o=a[n],i=o.getAttribute("data-href");if(i===e||i===t)return o}},n=function(n){return new Promise((function(o,i){var a=r.miniCssF(n),s=r.p+a;if(t(a,s))return o();e(n,s,null,o,i)}))},o={143:0};r.f.miniCss=function(e,t){var r={443:1};o[e]?t.push(o[e]):0!==o[e]&&r[e]&&t.push(o[e]=n(e).then((function(){o[e]=0}),(function(t){throw delete o[e],t})))}}}(),function(){var e={143:0};r.f.j=function(t,n){var o=r.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else{var i=new Promise((function(r,n){o=e[t]=[r,n]}));n.push(o[2]=i);var a=r.p+r.u(t),s=new Error,u=function(n){if(r.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var i=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",s.name="ChunkLoadError",s.type=i,s.request=a,o[1](s)}};r.l(a,u,"chunk-"+t,t)}},r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,i,a=n[0],s=n[1],u=n[2],l=0;if(a.some((function(t){return 0!==e[t]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(u)var d=u(r)}for(t&&t(n);l<a.length;l++)i=a[l],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(d)},n=self["webpackChunkart_exam_web"]=self["webpackChunkart_exam_web"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var n=r.O(void 0,[998],(function(){return r(3465)}));n=r.O(n)})();
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment