296 lines
8.4 KiB
Vue
296 lines
8.4 KiB
Vue
<template>
|
||
<div class="registerContainer">
|
||
<div class="login-title">{{ $t('login.userRegister') }}</div>
|
||
<el-form :model="registerForm" :rules="rules" ref="registerForm" class="login-form">
|
||
<el-form-item prop="inviteCode">
|
||
<el-input
|
||
@keyup.enter.native="handleRegister"
|
||
v-model="registerForm.inviteCode"
|
||
:auto-complete="off"
|
||
placeholder="请输入邀请码:JL10000000"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item prop="companyName">
|
||
<el-input
|
||
@keyup.enter.native="handleRegister"
|
||
v-model="registerForm.companyName"
|
||
:auto-complete="off"
|
||
placeholder="请输入您的企业名"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item prop="companyTid">
|
||
<el-input
|
||
@keyup.enter.native="handleRegister"
|
||
v-model="registerForm.companyTid"
|
||
:auto-complete="off"
|
||
placeholder="统一社会信用代码"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item prop="account">
|
||
<el-input
|
||
@keyup.enter.native="handleRegister"
|
||
v-model.trim="registerForm.account"
|
||
:auto-complete="off"
|
||
placeholder="请输入您的手机号"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item prop="code">
|
||
<el-input
|
||
@keyup.enter.native="handleRegister"
|
||
v-model.trim="registerForm.code"
|
||
auto-complete="off"
|
||
placeholder="请输入验证码"
|
||
class="code-input"
|
||
></el-input>
|
||
<div class="login-code">
|
||
<el-button :disabled="msgKey" type="text" @click="handleSend" class="msg-text">{{msgText}}</el-button>
|
||
</div>
|
||
</el-form-item>
|
||
<el-form-item prop="password">
|
||
<el-input
|
||
type="password"
|
||
@keyup.enter.native="handleRegister"
|
||
v-model.trim="registerForm.password"
|
||
:auto-complete="off"
|
||
placeholder="请输入6-20位包含数字和字母的新密码"
|
||
></el-input>
|
||
</el-form-item>
|
||
<div>
|
||
<el-button
|
||
size="small"
|
||
type="primary"
|
||
@click="handleRegister"
|
||
class="register-submit"
|
||
>{{$t('login.registerSubmit')}}</el-button>
|
||
</div>
|
||
</el-form>
|
||
<div class="reg-bottom">
|
||
<div>
|
||
<el-checkbox v-model="checked"></el-checkbox>
|
||
<span @click="checked = !checked" class="reg-agreement">
|
||
同意德阳市智慧就业服务平台用工
|
||
<a
|
||
@click.stop
|
||
href="/blackboard/account/companyagreement.html"
|
||
target="blank"
|
||
>用户协议及隐私政策</a>
|
||
</span>
|
||
</div>
|
||
<div>
|
||
<a @click="$emit('change','login')">{{$t('login.directLogin')}}</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { mapGetters } from "vuex";
|
||
import topLang from "@/page/index/top/top-lang";
|
||
import { isvalidatemobile } from "@/util/validate";
|
||
import { reg, sendValidate,regCheckIdentity } from "@/api/tenant/reg";
|
||
import md5 from "js-md5";
|
||
|
||
export default {
|
||
name: "login",
|
||
components: {
|
||
topLang,
|
||
},
|
||
data () {
|
||
const validatePhone = (rule, value, callback) => {
|
||
if (isvalidatemobile(value)[0]) {
|
||
callback(new Error(isvalidatemobile(value)[1]));
|
||
} else {
|
||
callback();
|
||
}
|
||
};
|
||
const validatePwd = (rule, value, callback) => {
|
||
var re = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/;
|
||
var match = value.match(re);
|
||
if (value.length < 6 || value.length > 20 || !match) {
|
||
callback(new Error("密码格式不正确"));
|
||
} else {
|
||
callback();
|
||
}
|
||
};
|
||
const validateTcode = (rule, value, callback) => {
|
||
if(value){
|
||
regCheckIdentity(value).then(()=>{
|
||
callback();
|
||
})
|
||
.catch((err)=>{
|
||
callback(err);
|
||
})
|
||
}
|
||
else{
|
||
callback(new Error('请输入社会统一信用代码'))
|
||
}
|
||
|
||
}
|
||
const validateChecked = (rule, value, callback) => {
|
||
if (!value) {
|
||
callback(new Error('请阅读并同意《服务及隐私协议》'));
|
||
}
|
||
else {
|
||
callback();
|
||
}
|
||
}
|
||
return {
|
||
msgText: "获取验证码",
|
||
msgTime: 120,
|
||
msgKey: false,
|
||
checked: false,
|
||
registerForm: {
|
||
inviteCode: "",
|
||
account: "",
|
||
password: "",
|
||
code: "",
|
||
checked: false,
|
||
},
|
||
rules: {
|
||
companyName: [
|
||
{ required: true, trigger: "blur", message: "请输入用工单位" },
|
||
],
|
||
companyTid: [
|
||
{
|
||
required: true,
|
||
whitespace: true,
|
||
message: "请输入统一社会信用代码",
|
||
trigger: "blur",
|
||
},
|
||
{ validator: validateTcode, trigger: "blur" },
|
||
],
|
||
account: [
|
||
{ required: true, trigger: "blur", validator: validatePhone },
|
||
],
|
||
inviteCode: [
|
||
{ required: true, message: "请输入邀请码", trigger: "blur" },
|
||
{ min: 10, message: "长度不少于10个字符", trigger: "blur" },
|
||
],
|
||
code: [
|
||
{ required: true, message: "请输入短信验证码", trigger: "blur" },
|
||
],
|
||
password: [
|
||
{ required: true, message: "请输入密码" },
|
||
{ trigger: "blur", validator: validatePwd },
|
||
],
|
||
checked: [
|
||
{
|
||
validator: validateChecked, trigger: 'blur'
|
||
}
|
||
]
|
||
},
|
||
passwordType: "password",
|
||
};
|
||
},
|
||
watch: {},
|
||
mounted () { },
|
||
computed: {
|
||
...mapGetters(["website", "tagWel"]),
|
||
},
|
||
props: [],
|
||
methods: {
|
||
showPassword () {
|
||
this.passwordType === ""
|
||
? (this.passwordType = "password")
|
||
: (this.passwordType = "");
|
||
},
|
||
/*发送短信验证码 */
|
||
handleSend () {
|
||
const inviteCode = new Promise((resolve) => {
|
||
this.$refs.registerForm.validateField("inviteCode", resolve);
|
||
});
|
||
const account = new Promise((resolve) => {
|
||
this.$refs.registerForm.validateField("account", resolve);
|
||
});
|
||
Promise.all([inviteCode, account]).then((err) => {
|
||
if (err[0] || err[1]) {
|
||
return;
|
||
}
|
||
this.msgKey = true;
|
||
this.msgText = "发送中...";
|
||
sendValidate(this.registerForm.account, 0)
|
||
.then(() => {
|
||
this.msgText = "剩余" + 120 + "s";
|
||
this.msgKey = true;
|
||
const time = setInterval(() => {
|
||
this.msgTime--;
|
||
this.msgText = "剩余" + this.msgTime + "s";
|
||
if (this.msgTime === 0) {
|
||
this.msgTime = 120;
|
||
this.msgText = "重新获取";
|
||
this.msgKey = false;
|
||
clearInterval(time);
|
||
}
|
||
}, 1000);
|
||
})
|
||
.catch(() => {
|
||
this.msgText = "重新获取";
|
||
this.msgKey = false;
|
||
});
|
||
});
|
||
},
|
||
handleRegister () {
|
||
this.$refs.registerForm.validate((valid) => {
|
||
if (valid) {
|
||
if (this.checked) {
|
||
const loading = this.$loading({
|
||
lock: true,
|
||
text: "注册中,请稍后。。。",
|
||
spinner: "el-icon-loading",
|
||
});
|
||
reg(
|
||
this.registerForm.inviteCode,
|
||
this.registerForm.companyName,
|
||
this.registerForm.companyTid,
|
||
this.registerForm.code,
|
||
this.registerForm.account,
|
||
md5(this.registerForm.password)
|
||
).then(
|
||
() => {
|
||
this.$message({
|
||
message: "注册成功",
|
||
type: "success",
|
||
});
|
||
loading.close();
|
||
setTimeout(() => {
|
||
this.$emit("change", "login");
|
||
}, 1000);
|
||
},
|
||
() => {
|
||
loading.close();
|
||
}
|
||
);
|
||
} else {
|
||
this.$message.error("请阅读并同意德阳市智慧就业服务平台用工用户协议及隐私政策");
|
||
}
|
||
}
|
||
});
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
@import "@/styles/login.scss";
|
||
.reg-bottom {
|
||
margin: 0 30px 0 30px;
|
||
display: flex;
|
||
font-family: PingFangSC-Regular;
|
||
font-size: 14px;
|
||
color: #999999;
|
||
letter-spacing: 0;
|
||
text-align: left;
|
||
line-height: 14px;
|
||
justify-content: space-between;
|
||
flex-wrap: wrap;
|
||
cursor: pointer;
|
||
}
|
||
.reg-bottom > div {
|
||
padding-top: 9px;
|
||
}
|
||
|
||
.reg-bottom a {
|
||
color: #5aa0fa;
|
||
}
|
||
</style>
|