qa-education-exam-org-vue/static/bi/loading.html

333 lines
9.5 KiB
HTML
Raw Permalink Normal View History

2026-04-17 16:27:54 +08:00
<!DOCTYPE html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="author" content="ZCLOUDCHINA"/>
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./js/pre-loader.js"></script>
<!-- vue -->
<script src="./js/vue.js"></script>
<!--全局配置-->
<script src="../config.js"></script>
<style>
*, *:before, *:after {
box-sizing: border-box;
outline: none;
}
body {
background: #020438;
font: 14px/1 'Open Sans', helvetica, sans-serif;
-webkit-font-smoothing: antialiased;
}
.box {
height: 280px;
width: 280px;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background: #020438;
border-radius: 100%;
overflow: hidden;
}
.box .percent {
position: absolute;
left: 0;
top: 0;
z-index: 3;
width: 100%;
height: 100%;
display: flex;
display: -webkit-flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 64px;
}
.box .water {
position: absolute;
left: 0;
top: 0;
z-index: 2;
width: 100%;
height: 100%;
-webkit-transform: translate(0, 100%);
transform: translate(0, 100%);
background: #4D6DE3;
transition: all .3s;
}
.box .water_wave {
width: 200%;
position: absolute;
bottom: 100%;
}
.box .water_wave_back {
right: 0;
fill: #C7EEFF;
-webkit-animation: wave-back 1.4s infinite linear;
animation: wave-back 1.4s infinite linear;
}
.box .water_wave_front {
left: 0;
fill: #4D6DE3;
margin-bottom: -1px;
-webkit-animation: wave-front .7s infinite linear;
animation: wave-front .7s infinite linear;
}
@-webkit-keyframes wave-front {
100% {
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
}
@keyframes wave-front {
100% {
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
}
@-webkit-keyframes wave-back {
100% {
-webkit-transform: translate(50%, 0);
transform: translate(50%, 0);
}
}
@keyframes wave-back {
100% {
-webkit-transform: translate(50%, 0);
transform: translate(50%, 0);
}
}
.text-p {
color: #fff;
position: absolute;
top: 20%;
width: 99%;
text-align: center;
font-size: 40px;
}
</style>
</head>
<body>
<div class="text-p" id="app">
登录跳转中请稍后....
</div>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
style="display: none;">
<symbol id="wave">
<path
d="M420,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C514,6.5,518,4.7,528.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H420z"></path>
<path
d="M420,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C326,6.5,322,4.7,311.5,2.7C304.3,1.4,293.6-0.1,280,0c0,0,0,0,0,0v20H420z"></path>
<path
d="M140,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C234,6.5,238,4.7,248.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H140z"></path>
<path
d="M140,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C46,6.5,42,4.7,31.5,2.7C24.3,1.4,13.6-0.1,0,0c0,0,0,0,0,0l0,20H140z"></path>
</symbol>
</svg>
<div class="box">
<div class="percent">
<div class="percentNum" id="count">0</div>
<div class="percentB">%</div>
</div>
<div id="water" class="water">
<svg viewBox="0 0 560 20" class="water_wave water_wave_back">
<use xlink:href="#wave"></use>
</svg>
<svg viewBox="0 0 560 20" class="water_wave water_wave_front">
<use xlink:href="#wave"></use>
</svg>
</div>
</div>
</body>
</html>
<script type="text/javascript" src="./js/pre-loader.js"></script>
<script src="./js/sweetalert.min.js"></script>
<!-- 表单验证提示 -->
<script src="./js/base64.min.js"></script>
<script>
var cnt = document.getElementById('count')
var water = document.getElementById('water')
var percent = cnt.innerText
var interval
interval = setInterval(function() {
percent++
cnt.innerHTML = percent
water.style.transform = 'translate(0' + ',' + (100 - percent) + '%)'
if (percent == 100) {
clearInterval(interval)
}
}, 60)
var vm = new Vue({
el: '#app',
data: {
USERNAME: '',
PASSWORD: '',
PERSONNEL_TYPE: ''
},
methods: {
//初始执行
init() {
var _this = this
this.goLogin(this.getUrlKey('qa'), this.getUrlKey('zy'),this.getUrlKey('PERSONNEL_TYPE'))
},
//记住密码到Cookie
saveCookie: function() {
if (this.CHECKED) {
this.setCookie('USERNAME', this.USERNAME, 7)
this.setCookie('PASSWORD', this.PASSWORD, 7)
}
},
//根据url参数名称获取参数值
getUrlKey: function(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return decodeURI(r[2]);
return "";
// return decodeURIComponent(
// (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/\+/g, '%20')) || null
},
//设置cookie
setCookie: function(cname, cvalue, exdays) {
var d = new Date()
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000))
var expires = 'expires=' + d.toUTCString()
document.cookie = cname + '=' + cvalue + '; ' + expires
},
goLogin: function(username, password,PERSONNEL_TYPE) {
username = window.Base64.decode(username)
password = window.Base64.decode(password)
PERSONNEL_TYPE = window.Base64.decode(PERSONNEL_TYPE)
sessionStorage.clear()
$.ajax({
xhrFields: {
withCredentials: true
},
crossDomain: true,
type: 'POST',
url: config.httpurl + 'admin/check',
data: { KEYDATA: 'qdkjchina' + username + ',qd,' + password, SOURCE: '1', PERSONNEL_TYPE:PERSONNEL_TYPE, tm: new Date().getTime() },
dataType: 'json',
success: function(data) {
if ('success' == data.result) {
// $("#USERNAME").tips({
// side : 2,
// msg : '正在登录 , 请稍后 ...',
// bg : '#68B500',
// time : 10
// });
clearInterval(interval)
percent = 100
cnt.innerHTML = percent
water.style.transform = 'translate(0' + ',' + (100 - percent) + '%)'
setTimeout(()=>{
sessionStorage.setItem('user', JSON.stringify(data))
vm.USERNAME = username
console.log(data)
if(data.ISSTUDENT == 'true'){
window.location.href = config.weburl + '#/onlinexxks/course/mine'
} else {
window.location.href = config.weburl + '#/index'
}
// window.location.href = config.weburl + '#/index'
},500)
} else if ('usererror' == data.result) {
swal({
title: '登录失败!',
text: data.msg,
icon: 'error',
showCancelButton: true,
closeOnConfirm: false,
dangerMode: true
}).then((willDelete) => {
if (willDelete) {
window.close()
}
})
} else if ('invalid' == data.result) {
swal({
title: '登录失败!',
text: '账号已被冻结,请联系管理员',
icon: 'error',
showCancelButton: true,
closeOnConfirm: false,
dangerMode: true
}).then((willDelete) => {
if (willDelete) {
window.close()
}
})
// $("#USERNAME").tips({
// side : 2,
// msg : "账号已被冻结,请联系管理员",
// bg : '#FF5080',
// time : 15
// });
// $("#USERNAME").focus();
} else if ('exception' == data.result) {
swal({
title: '登录失败!',
text: data.exception,
icon: 'error',
showCancelButton: true,
closeOnConfirm: false,
dangerMode: true
}).then((willDelete) => {
if (willDelete) {
window.close()
}
})
}
}
}).done().fail(function() {
swal({
title: '登录失败!',
text: '请求服务器无响应,稍后再试',
icon: 'error',
showCancelButton: true,
closeOnConfirm: false,
dangerMode: true
}).then((willDelete) => {
if (willDelete) {
window.close()
}
})
})
}
},
mounted() {
this.init()
}
})
</script>