HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Date: Sun, 03 Nov 2024 02:23:12 GMT
Transfer-Encoding: chunked
800
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/assets/ant-design-vue@1.7.2/antd.min.css">
<link rel="stylesheet" href="/assets/element-ui@2.15.0/theme-chalk/display.css">
<link rel="stylesheet" href="/assets/css/custom.css?0.3.2">
<style>
[v-cloak] {
display: none;
}
</style>
<title>登录</title>
</head>
<style>
#app {
padding-top: 100px;
}
h1 {
text-align: center;
color: #fff;
margin: 20px 0 50px 0;
}
.ant-btn, .ant-input {
height: 50px;
border-radius: 30px;
}
.ant-input-affix-wrapper .ant-input-prefix {
left: 23px;
}
.ant-input-affix-wrapper .ant-input:not(:first-child) {
padding-left: 50px;
}
</style>
<body>
<a-layout id="app" v-cloak>
<transition name="list" appear>
<a-layout-content>
<a-row type="flex" justify="center">
<a-col :xs="22" :sm="20" :md="16" :lg="12" :xl="8">
<h1>登录</h1>
</a-col>
</a-row>
<a-row type="flex" justify="center">
<a-col :xs="22" :sm="20" :md="16" :lg="12" :xl="8">
<a-form>
<a-form-item>
<a-input v-model.trim="user.username" placeholder='用户名'
@keydown.enter.native="login" autofocus>
<a-icon slot="prefix" type="user" style="color: rgba(0,0,0,.25)"/>
</a-input>
</a-form-item>
<a-form-item>
<a-input type="password" v-model.trim="user.password"
placeholder='密码' @keydown.enter.native="login">
800
<a-icon slot="prefix" type="lock" style="color: rgba(0,0,0,.25)"/>
</a-input>
</a-form-item>
<a-form-item>
<a-button block @click="login" :loading="loading">登录</a-button>
</a-form-item>
</a-form>
</a-col>
</a-row>
</a-layout-content>
</transition>
</a-layout>
<script src="/assets/vue@2.6.12/vue.min.js"></script>
<script src="/assets/moment/moment.min.js"></script>
<script src="/assets/ant-design-vue@1.7.2/antd.min.js"></script>
<script src="/assets/base64/base64.min.js"></script>
<script src="/assets/axios/axios.min.js"></script>
<script src="/assets/qs/qs.min.js"></script>
<script src="/assets/qrcode/qrious.min.js"></script>
<script src="/assets/clipboard/clipboard.min.js"></script>
<script src="/assets/uri/URI.min.js"></script>
<script src="/assets/js/axios-init.js?0.3.2"></script>
<script src="/assets/js/util/common.js?0.3.2"></script>
<script src="/assets/js/util/date-util.js?0.3.2"></script>
<script src="/assets/js/util/utils.js?0.3.2"></script>
<script src="/assets/js/model/xray.js?0.3.2"></script>
<script src="/assets/js/model/models.js?0.3.2"></script>
<script>
const basePath = '\/';
axios.defaults.baseURL = basePath;
</script>
<script>
const leftColor = RandomUtil.randomIntRange(0x222222, 0xFFFFFF / 2).toString(16);
const rightColor = RandomUtil.randomIntRange(0xFFFFFF / 2, 0xDDDDDD).toString(16);
const deg = RandomUtil.randomIntRange(0, 360);
const background = `linear-gradient(${deg}deg, #${leftColor} 10%, #${rightColor} 100%)`;
document.querySelector('#app').style.background = background;
const app = new Vue({
delimiters: ['[[', ']]'],
el: '#app',
data: {
loading: false,
user: new User(),
},
methods: {
async login() {
this.loading = true;
con
fe
st msg = await HttpUtil.post('/login', this.user);
this.loading = false;
if (msg.success) {
location.href = basePath + 'xui/';
}
}
}
});
</script>
</body>
</html>
0