<template>
<div class="authorize">
<div class="authorize_hd">
<div class="authorize_logo" :style="authorize_logo_style">
<img :src="config.loginLogoImg">
</div>
<div class="authorize_text">{{$t('hivuiLogin_authorize_title')}}</div>
</div>
<div class="authorize_main" :style="bgStyle">
<div class="authorize_box">
<h3>{{$t('hivuiLogin_authorize_box_title')}}</h3>
<el-form ref="authorizeForm" label-width="64px">
<el-form-item class="authorize_field" prop="machineCode" :label="$t('hivuiLogin_authorize_machine_code')">
<el-input ref="machineCode" v-model="machineCode" type="text" :placeholder="$t('hivuiLogin_authorize_machine_code_placeholder')" readonly></el-input>
</el-form-item>
<el-upload
v-show="!authorizeUploadSuccess"
class="authorizeUpload"
:http-request="handleUpload"
:before-upload="beforeUpload"
:on-change="handleChange"
:file-list="fileList"
:limit="2"
:auto-upload="true"
:show-file-list="false"
accept=".md">
<el-button size="small" :type="'primary'" :loading="authorizeLoading">{{$t('hivuiLogin_authorize_upload_btn')}}</el-button>
</el-upload>
<div class="authorize_btn_box">
<el-button
size="small"
v-show="authorizeUploadSuccess"
class="authorize_submit"
:loading="authorizeLoading"
type="success"
@click="goLoginPage"
>{{$t('hivuiLogin_authorize_upload_success')+$t('hivuiLogin_authorize_btn_text')}}</el-button>
</div>
</el-form>
<!-- <div class="authorize_mask" v-show="authorizeUploadSuccess"></div> -->
<div class="authorize_tips">
<span @click="goLoginPage">{{$t('hivuiLogin_authorize_tiptext2')}}<i class="el-icon-arrow-right"></i></span>
</div>
</div>
</div>
<div class="authorize_ft" v-html="config.copyright"></div>
</div>
</template>
<script>
import {getMachineCode,uploadCard} from "../api/user";
import _loginLogoImg from "../assets/Logo1.png"
import _authorizeBgImg from "../assets/register/bg.png"
export default {
name: "authorize",
data() {
return {
machineCode: "",
fileList: [], // 用来保存文件列表
authorizeLoading: false,
authorizeUploadSuccess: false,
msgObj:null,
config: {
title: window.customSysCofig?.loginTitle||this.$t('hivuiLogin_main_def_title'),
loginLogoImg: window.customSysCofig?.loginLogo||_loginLogoImg,
loginLogoImg_height: window.customSysCofig?.loginLogo_h||56,
loginLogoImg_width: window.customSysCofig?.loginLogo_w||206,
authorizeBgImg: window.customSysCofig?.registerBgImg||_authorizeBgImg,
copyright: window.customSysCofig?.copyright||this.$t('hivuiLogin_main_def_copyright'),
},
};
},
model: {
prop: "value",
event: "valuechange"
},
props: {
value: {
type: Object
}
},
computed: {
bgStyle() {
return {
"background-image": "url(" + this.config.authorizeBgImg + ")",
};
},
authorize_logo_style(){
return {
"width":(this.config.loginLogoImg_width / 1920) * 100+"vw",
"height":(this.config.loginLogoImg_height / 1920) * 100+"vw",
}
}
},
mounted() {
getMachineCode().then((res)=>{
this.machineCode=res.dataPack;
});
},
methods: {
//上传证书
handleUpload() {
let me=this;
me.authorizeLoading=true;
if (this.fileList.length == 0) {
this.$message.warning(me.$t('hivuiLogin_authorize_file_empty'));
me.authorizeLoading=false;
return; // 阻止文件上传
}
let formData = new FormData();
formData.append("files", me.fileList[0].raw);
uploadCard(formData).then((res) => {
me.authorizeLoading=false;
if(res.status==200&&res.dataPack&&res.dataPack.time){
me.authorizeUploadSuccess=true;
me.msgObj=me.$message({
message: ((res.msg||me.$t('hivuiLogin_authorize_upload_success'))+"<br>"+$t('hivuiLogin_authorize_time')+":"+res.dataPack.time),
type: 'success',
duration:0,
showClose:true,
dangerouslyUseHTMLString: true
});
/*setTimeout(()=>{
location=window.HIVUI_SETTING.loginUrl;
},1*1000);*/
}
}).catch((err)=>{
me.authorizeLoading=false;
});
},
goLoginPage() {
this.msgObj&&this.msgObj.close();
this.$router.push("/");
},
// 在上传文件前检查
beforeUpload(file) {
},
// 文件上传改变事件
handleChange(file, fileList) {
this.fileList = [file]; // 保证只有一个文件在 fileList 中,覆盖旧的文件
},
}
};
</script>
<style lang="scss" scoped>
@function px2vw($px) {
@return calc(#{$px} / 1920 * 100vw);
}
$headH: px2vw(130);
$footH: px2vw(172);
.authorize {
height: 100%;
overflow: hidden;
.authorize_hd {
height: $headH;
display: flex;
align-items: center;
padding-top: px2vw(30);
padding-left: px2vw(15);
.authorize_logo {
width: px2vw(206);
height: px2vw(56);
margin-right: px2vw(20);
img {
height: 100%;
width: 100%;
}
}
.authorize_text {
font-size: px2vw(22);
color: #333;
position: relative;
padding-left: px2vw(32);
&:after {
content: "";
display: block;
height: px2vw(40);
width: px2vw(1);
background-color: #7ecef4;
position: absolute;
top: 0;
left: px2vw(10);
bottom: 0;
margin: auto;
}
}
}
.authorize_main {
height: calc(100% - #{$headH} - #{$footH});
position: relative;
background: url("../assets/register/bg.png") no-repeat center center;
background-size: cover;
.authorize_box {
position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: px2vw(500);
height: px2vw(300);
border-radius: px2vw(3);
background-color: #fff;
padding: 0 px2vw(40) px2vw(40);
h3 {
text-align: center;
line-height: px2vw(100);
font-size: px2vw(24);
color: #333;
font-weight: bold;
}
.authorize_field {
margin-bottom: px2vw(22);
line-height: px2vw(48);
::v-deep.el-input__inner {
line-height: px2vw(48);
height: px2vw(48);
}
::v-deep.el-form-item__content{
line-height: px2vw(50);
font-size: px2vw(14);
}
::v-deep.el-form-item__error{
padding-top: px2vw(4);
}
.authorize_pwStrength {
margin-top: px2vw(10);
}
&.authorize_row {
::v-deep.el-form-item__content {
display: flex;
align-items: center;
}
}
}
.authorize_capbtn {
width: px2vw(200);
height: px2vw(48);
line-height: px2vw(48);
padding: 0;
}
.authorize_btn_box{
display: flex;
justify-content: center;
.authorize_submit {
height: px2vw(40);
line-height: px2vw(40);
padding-top: 0;
margin: px2vw(0) auto;
}
}
.authorize_mask{
position: absolute;
z-index: 9999;
height: 60px;
width: 100%;
left: 0;
bottom: 40px;
}
.authorize_tips {
position: absolute;
bottom:px2vw(20);
right:px2vw(20);
padding-top: px2vw(20);
span {
color: #3486d2;
cursor: pointer;
}
}
.authorizeUpload{
display: flex;
justify-content: center;
::v-deep.el-upload-list{
height:32px;
overflow: hidden;
display: flex;
flex:1;
.el-upload-list__item{
line-height:32px;
margin-top:0;
flex:0 0 100%;
}
}
}
}
}
.authorize_ft {
height: $footH;
line-height: $footH;
background-color: #e8f1fa;
text-align: center;
font-size: px2vw(16);
color: #999;
border-top: px2vw(1) solid #ccc;
border-bottom: px2vw(1) solid #ccc;
::v-deep a{
margin-left:5px;
color:#0f406c;
&:hover{
color:#409eff;
}
}
}
}
</style>