Commit 08189f7c authored by 李晓兵's avatar 李晓兵

'登录注册'

parent dda81058
......@@ -13,13 +13,13 @@
</div>
</h-header>
<Tab @getTabNum="getTabNum" />
<h-content>
<div class="hinput">
<div class="search-box">
<input type="text" placeholder="请输入进件号/承租人名称">
<img src="@/assets/distributorSign/search.png" alt="">
</div>
<div class="hinput">
<div class="search-box">
<input type="text" placeholder="请输入进件号/承租人名称">
<img src="@/assets/distributorSign/search.png" alt="">
</div>
</div>
<h-content>
<div v-for="(item,index) in contractMsg" :key="index" class="contract-list">
<div class="item">
<img src="@/assets/distributorSign/icon-进件合同.png" alt="">
......@@ -127,12 +127,15 @@ export default {
}
}
}
.content{
padding-bottom: 14px;
}
.contract-list {
width: 100%;
height: 120px;
// border: 1px solid #ccc;
background: #fff;
margin-bottom: 8px;
//margin-bottom: 8px;
.item {
width: 100%;
height: 34px;
......@@ -167,8 +170,8 @@ export default {
height: 86px;
display: flex;
flex-direction: column;
justify-content: space-evenly;
justify-content: space-around;
padding: 6px 0;
.option {
width: 100%;
height: 18px;
......
......@@ -7,13 +7,13 @@
</div>
</h-header>
<Tab @getTabNum="getTabNum" />
<h-content>
<div class="hinput">
<div class="search-box">
<input type="text" placeholder="请输入进件号/承租人名称">
<img src="@/assets/distributorSign/search.png" alt="">
</div>
<div class="hinput">
<div class="search-box">
<input type="text" placeholder="请输入进件号/承租人名称">
<img src="@/assets/distributorSign/search.png" alt="">
</div>
</div>
<h-content>
<div v-for="(item,index) in contractMsg" :key="index" class="contract-list">
<div class="item">
<img src="@/assets/distributorSign/icon-进件合同.png" alt="">
......@@ -126,6 +126,9 @@ export default {
}
}
}
.content{
padding-bottom: 14px;
}
.contract-list {
width: 100%;
height: 120px;
......@@ -161,44 +164,44 @@ export default {
font-weight: bolder
}
}
.details {
width: 100%;
height: 86px;
display: flex;
flex-direction: column;
justify-content: space-evenly;
.option {
width: 100%;
height: 18px;
display: flex;
flex-basis: row;
.name {
font-family: PingFangSC-Regular;
font-size: 13px;
color: rgba(56,63,69,0.60);
width: 80px;
height: 18px;
line-height: 18px;
padding-left: 20px;
}
.normal {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #383F45;
height: 18px;
line-height: 18px;
margin-left: 8px;
}
.money {
color: #FCC800;
}
img {
margin-left: 55%
}
.details {
width: 100%;
height: 86px;
display: flex;
flex-direction: column;
justify-content: space-around;
padding: 6px 0;
.option {
width: 100%;
height: 18px;
display: flex;
flex-direction: row;
.name {
font-family: PingFangSC-Regular;
font-size: 13px;
color: rgba(56,63,69,0.60);
width: 80px;
height: 18px;
line-height: 18px;
text-align: right
}
.normal {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #383F45;
height: 18px;
line-height: 18px;
margin-left: 8px;
}
.money {
color: #FCC800;
}
img {
margin-left: 55%
}
}
}
}
}
}
}
</style>
<template>
<scroll id="login" ref="scroll" class="content">
<div>
<div class="bird-icon"><img src="../assets/image/login/bird-icon.png"></div>
<div class="bird-icon"/>
<div class="login-wrap">
<div class="pwd">
<div class="pwd-icon"><img src="../assets/image/login/user.png"></div>
<div class="pwd-icon"><img src="../assets/login/user.png"></div>
<div class="pwd-input"><input v-model="username" type="text" placeholder="请输入用户名/手机号"></div>
<div v-if="username" class="delete" @click="clearAccount"><img src="../assets/image/login/delete.png"></div>
<div v-if="username" class="delete" @click="clearAccount"><img src="../assets/login/delete.png"></div>
</div>
<div class="pwd">
<div class="pwd-icon"><img src="../assets/image/login/password.png"></div>
<div class="pwd-input"><input v-model="password" type="password" placeholder="请输入密码"></div>
<div v-if="password" class="delete" @click="clearPassword"><img src="../assets/image/login/delete.png"></div>
<div class="pwd-icon"><img src="../assets/login/password.png"></div>
<div class="pwd-input"><input v-model="password" :type="pwdType" placeholder="请输入密码"></div>
<div v-if="password" class="delete" @click="changeType"><img :src="openEye"></div>
</div>
<div class="button submit" @click="access">登录</div>
<div class="other-function">
<div class="register" @click="registerNew">用户注册</div>
<div class="pwd-forgotten" @click="pwdForgotten">忘记密码</div>
<div class="register" @click="registerNew">注册</div>
<div class="pwd-forgotten" @click="pwdForgotten">忘记密码</div>
</div>
<div class="button submit" @click="access">登录</div>
</div>
</scroll>
</template>
......@@ -26,6 +27,8 @@ var CryptoJS = require('crypto-js')
export default {
data () {
return {
pwdType: 'password', // 密码类型
openEye: require('@/assets/login/passNoShow.png'), // 图片地址
username: window.localStorage.username ? window.localStorage.username : '',
password: '',
version: process.env.currentVersion,
......@@ -33,42 +36,41 @@ export default {
}
},
methods: {
changeType () {
this.pwdType = this.pwdType === 'password' ? 'text' : 'password'
this.openEye = this.pwdType === 'password' ? require('@/assets/login/passNoShow.png') : require('@/assets/login/passShow.png')
},
login: function () {
let vm = this
vm.$router.push('tab')
/* let vm = this
// debugger;
// vm.password = CryptoJS.MD5(vm.password).toString().toUpperCase();
let md5passwprd = CryptoJS.MD5(vm.password).toString().toUpperCase()
let param = {
'user_name': vm.username,
'user_password': md5passwprd,
'platform': 'C',
'phone': vm.username,
'password': md5passwprd,
}
vm.$post(process.env.basePath + 'tc_app_login', param)
vm.$post(process.env.basePath + 'app_login', param)
.then(function (res) {
if (res.result === 'S') {
vm.hlsPopup.hideLoading()
window.localStorage.setItem('username', vm.username.toUpperCase())
window.localStorage.setItem('user_phone', vm.username)
window.localStorage.setItem('password', md5passwprd)
window.localStorage.setItem('user_id', res.user_id)
if (res.bp_id && res.bp_id !== 'undefined') {
/* if (res.bp_id && res.bp_id !== 'undefined') {
window.localStorage.setItem('bp_id', res.bp_id)
}
} */
// if (vm.routeName) {
// vm.$router.push({name: vm.routeName})
// } else {
vm.$router.push('tab')
// }
let tagOption = {
/* let tagOption = {
'username': vm.username.toUpperCase(),
'user_id': res.user_id,
}
vm.Jpush._jpush_config(tagOption)
vm.Jpush._jpush_config(tagOption) */
}
// 极光推送
})*/
})
},
access: function () {
let vm = this
......@@ -105,77 +107,32 @@ export default {
<style lang="less" scoped type="text/less">
#login {
background: url("../assets/image/login/bg@2x.png") no-repeat;
background: url("../assets/login/bg@2x.png") no-repeat;
background-size: cover;
background-position-x: 0px;
color: #FFFFFF;
width: 100%;
height: 100%;
margin: 0 auto;
.bird-icon {
padding-top: 25%;
width: 100%;
display: flex;
display: -webkit-flex;
.scrollContent{
display: flex;
justify-content: center;
-webkit-justify-content: center;
img {
width: 138px;
height: 48px;
}
align-items: center;
}
.login {
border-bottom: 1px solid #5D98F6;
display: flex;
display: -webkit-flex;
margin: 15% auto 0;
width: 250px;
justify-content: center;
.person-icon {
margin-bottom: 9px;
margin-right: 15px;
margin-left: 3px;
img {
width: 18px;
height: 20px;
}
}
.admin-input {
//width: 380px;
height: 25px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
input {
width: 100%;
height: 100%;
font-size: 16px;
color: #9e9e9e;
margin-bottom: 5px;
line-height: 22px;
}
input::-webkit-input-placeholder {
font-size: 16px;
color: #CDD1D3;
}
}
.delete {
img {
margin-top: 5px;
width: 12px;
height: 12px;
}
}
.bird-icon{
padding-top: 25%;
}
.login-wrap{
width: 100%;
margin-top: 60%;
}
.pwd {
border-bottom: 1px solid #5D98F6;
display: flex;
display: -webkit-flex;
margin: 15% auto 0;
width: 250px;
margin: 5% 0 5% 14%;
.pwd-icon {
margin-bottom: 9px;
margin-bottom: 6px;
margin-right: 15px;
margin-left: 3px;
img {
......@@ -184,19 +141,21 @@ export default {
}
}
.pwd-input {
//width: 380px;
height: 25px;
margin-left: 4%;
width: 100%;
margin-bottom: 10px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
// background-color: #0057C3 !important;
input {
width: 100%;
height: 100%;
font-size: 16px;
color: #9e9e9e;
color: #fff;
line-height: 22px;
margin-bottom: 5px;
background-color: rgba(0,87,195,0) !important;
}
input::-webkit-input-placeholder {
font-size: 16px;
......@@ -205,19 +164,20 @@ export default {
}
.delete {
img {
margin-right: 20px;
margin-top: 5px;
width: 12px;
height: 12px;
width: 14px;
height: 14px;
}
}
}
.other-function {
width: 250px;
width: 64%;
display: flex;
display: -webkit-flex;
justify-content: space-between;
-webkit-justify-content: space-between;
margin: 8% auto 0;
margin: 0 0 0 23%;
.register {
color: #5D98F6;
font-size: 15px;
......@@ -228,14 +188,14 @@ export default {
}
}
.submit {
width: 250px;
opacity: 1;
background-color: #5D98F6;
border-radius: 4px;
height: 40px;
margin: 22% auto 0;
background: #FDFDFD;
border-radius: 8px 0 0 8px;
height: 50px;
margin: 10% 0 6% 14%;
font-size:16px;
color: #FEFEFE;
color: #000000;
display: flex;
display: -webkit-flex;
justify-content: center;
......
<template>
<h-view class="public-style pwd-forgotten">
<h-header>
<h-header :proportion="[5,1,1]" class="header">
<div slot="left" class="h-header-btn" @click="$routeGo()">
<i class="ion-ios-arrow-back"/>
<img src="@/assets/userBind/arrow.png" >
<span>忘记密码</span>
</div>
<div slot="center">忘记密码</div>
</h-header>
<h-content class="has-header">
<div class="phone_number">
<div class="phone-icon"><img src="../assets/image/login/cellphone@2x.png"/></div>
<div class="number">手机号</div>
<div class="input-box"><input type="number" placeholder="请输入手机号" v-model="phone_number"/></div>
<div class="getVerify" :class="{'disable':showTimer}" @blur="checkPhone" @click="getPhoneCode"><span
v-if="showTimer">{{timerCount}}</span>{{text}}
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/verification@2x.png"/></div>
<div class="user-name">验证码</div>
<div class="user-input"><input type="text" maxlength="6" placeholder="请输入验证码" v-model="verifiedCode"/>
<img
src="../assets/image/login/checked@2x.png" v-if="verifiedCodeFlag"/>
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/locked@2x.png"/></div>
<div class="user-name">新密码</div>
<div class="user-input"><input type="password" maxlength="12" placeholder="请输入至少6位密码"
v-model="user_password" @blur="passwordCheck"/>
<img
src="../assets/image/login/checked@2x.png" v-if="passwordFlag"/>
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/locked@2x.png"/></div>
<div class="user-name">&#12288;</div>
<div class="user-input"><input type="password" maxlength="12" placeholder="请与密码保持一致" @blur="confirmCheck"
v-model="confirm"/>
<img
src="../assets/image/login/checked@2x.png" v-if="confirmPassword"/>
</div>
</div>
<div :class="{'submit':!confirmPassword,'selected':confirmPassword}" @click="submit">提交</div>
<h-content>
<div class="description">请使用原注册手机号接收验证码并重新设置密码</div>
<list-item>
<item>
<img slot="left-icon" src="../assets/login/phone.png" class="left-icon">
<div slot="name" class="required">手机号码</div>
<div slot="content">{{ phone_number }}</div>
</item>
<item>
<img slot="left-icon" src="../assets/login/phone_code.png" class="left-icon">
<div slot="name" class="required">验证码</div>
<input slot="content" v-model="verifiedCode" type="text" placeholder="请填写验证码">
<div slot="right-icon" class="verified-code">
<div v-if="!showTimer" class="verified-code-box" @click="getPhoneCode">点击获取</div>
<span v-if="showTimer" class="verified-code-des">{{ timerCount }}{{ text }}</span>
</div>
</item>
<item>
<img slot="left-icon" src="../assets/login/passwordConfirm.png" class="left-icon">
<div slot="name" class="required">设置密码</div>
<input
slot="content" v-model="user_password" type="text" placeholder="请输入6~20位密码"
maxlength="20" @blur="passwordCheck">
</item>
<item :proportion="[2,2]">
<img slot="left-icon" src="../assets/login/passwordConfirm.png" class="left-icon">
<div slot="name" class="required">重新输入密码</div>
<input
slot="content" v-model="confirm" type="text" placeholder="请重新输入密码"
@blur="confirmCheck">
</item>
</list-item>
</h-content>
<bottom-tab class="footer-button">
<tab-button class="put" @click.native="submit">确认</tab-button>
</bottom-tab>
</h-view>
</template>
<script>
var CryptoJS = require('crypto-js')
export default {
data () {
return {
phone_number: window.localStorage.getItem('user_phone'),
verifiedCode: '',
export default {
data() {
return {
username: '',
username: '',
phone_number: '',
verifiedCode: '',
user_password: '',
confirm: '',
user_password: '',
confirm: '',
phoneNumberFlag: false,
verifiedCodeFlag: false,
passwordFlag: false,
confirmPassword: false,
phoneNumberFlag: false,
verifiedCodeFlag: false,
passwordFlag: false,
confirmPassword: false,
captchaKey: '',
phoneCodeTimeOut: false,
timer: 60000,
showTimer: false,
timerCount: 60,
text: '获取验证码'
captchaKey: '123456',
phoneCodeTimeOut: false,
timer: 60000,
showTimer: false,
timerCount: 60,
text: '获取验证码',
}
},
watch: {
verifiedCode (value) {
let vm = this
if (value.length === 6) {
vm.verifiedCodeFlag = false
if (vm.captchaKey.length === 0) {
hlsPopup.showLongCenter('请先获取验证码')
} else if (vm.phoneCodeTimeOut) {
hlsPopup.showLongCenter('验证码已失效,请从新获取')
} else {
vm.verifiedCodeFlag = true
}
}
},
user_password (value) {
if (value.length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
}
},
methods: {
checkPhone() {
let vm = this;
vm.phoneNumberFlag = false;
confirm (value) {
if (value.length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
}
},
},
created () {
let vm = this
let url = process.env.loginPath + 'appadmin'
let param = {}
vm.$post(url, param).then(function (res) {
window.localStorage.setItem('access_token', res.access_token)
})
},
methods: {
checkPhone () {
let vm = this
vm.phoneNumberFlag = false
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true
}
},
getPhoneCode () {
let vm = this
if (!vm.showTimer) {
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true;
}
},
getPhoneCode() {
let vm = this;
if (!vm.showTimer) {
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true;
vm.getVerifiedCode();
vm.showTimer = true;
vm.text = "秒后重新获取";
let counter = setInterval(function () {
if (vm.timerCount >= 0)
vm.timerCount = vm.timerCount - 1;
}, 1000);
setTimeout(function () {
vm.text = "获取验证码";
vm.showTimer = false;
clearInterval(counter)
vm.showTimer = false;
vm.timerCount = vm.timer / 1000;
}, vm.timer);
}
else {
hlsPopup.showLongCenter('手机号不存在,请重新输入!');
}
}
},
passwordCheck() {
let vm = this;
let length = vm.user_password.length;
if (length < 6 || length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
} else {
vm.passwordFlag = true;
}
},
confirmCheck() {
let vm = this;
let length = vm.confirm.length;
if (length < 6 || length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
} else if (vm.confirm != vm.user_password) {
hlsPopup.showLongBottom('两次输入的密码不一致,请从新输入')
vm.phoneNumberFlag = true
vm.getVerifiedCode()
vm.showTimer = true
vm.text = '秒后失效'
let counter = setInterval(function () {
if (vm.timerCount >= 0) { vm.timerCount = vm.timerCount - 1 }
}, 1000)
setTimeout(function () {
vm.text = '获取验证码'
vm.showTimer = false
clearInterval(counter)
vm.showTimer = false
vm.timerCount = vm.timer / 1000
}, vm.timer)
} else {
vm.confirmPassword = true;
hlsPopup.showLongCenter('手机号不存在,请重新输入!')
}
},
submit() {
let vm = this;
if (!vm.phoneNumberFlag) {
hlsPopup.showLongBottom('请输入手机号!')
} else if (!vm.verifiedCodeFlag) {
hlsPopup.showLongBottom('请输入验证码!')
} else if (!vm.passwordFlag) {
hlsPopup.showLongBottom('请输入密码!')
} else if (!vm.confirmPassword) {
hlsPopup.showLongBottom('请确认密码!')
} else {
let url = process.env.rootPath + '/captcha/do?captchaKey=' + vm.captchaKey + '&captchaCode=' + vm.verifiedCode + '&sysName=HLS_APP&apiName=tc_change_password';
let params = {
user_name: vm.phone_number,
new_password: vm.user_password,
phone_number: vm.phone_number
}
hlsHttp.post(url, params).then(function (res) {
if (res.result == 'S') {
hlsPopup.showLongBottom('修改成功');
setTimeout(function () {
vm.$router.push('login');
}, 100)
}
})
}
},
getVerifiedCode() {
let vm = this;
let url = process.env.rootPath + '/aliyun/sms';
}
},
passwordCheck () {
let vm = this
let length = vm.user_password.length
if (length < 6 || length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
} else {
vm.passwordFlag = true
}
},
confirmCheck () {
let vm = this
let length = vm.confirm.length
if (length < 6 || length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
} else if (vm.confirm !== vm.user_password) {
hlsPopup.showLongCenter('两次输入的密码不一致,请从新输入')
} else {
vm.confirmPassword = true
}
},
submit () {
let vm = this
if (!vm.phoneNumberFlag) {
hlsPopup.showLongCenter('请输入手机号!')
} else if (!vm.verifiedCodeFlag) {
hlsPopup.showLongCenter('验证码错误!')
} else if (!vm.passwordFlag) {
hlsPopup.showLongCenter('请输入密码!')
} else if (!vm.confirmPassword) {
hlsPopup.showLongCenter('请确认密码!')
} else {
let url = process.env.basePath + 'lose_password'
let md5passwprd = CryptoJS.MD5(vm.user_password).toString().toUpperCase()
let params = {
phoneNumber: vm.phone_number,
signName: '车租易',
templateCode: 'SMS_154585462'
phone: vm.phone_number,
password: md5passwprd
}
hlsHttp.post(url, params).then(function (res) {
if (res.code == 'OK') {
vm.captchaKey = res.captchaKey;
vm.phoneCodeTimeOut = false;
setTimeout(function () {
vm.captchaKey = '';
vm.phoneCodeTimeOut = true
}, 300000)
hlsPopup.showLongBottom('验证码发送成功!');
} else {
hlsPopup.showLongBottom(res.message);
}
if (res.result === 'S') {
hlsPopup.showLongCenter('修改成功')
setTimeout(function () {
vm.$router.push('login')
}, 100)
}
)
/*post response {
"Code": "OK",
"Message": "OK",
"sendNum": 641164
}*/
})
}
},
watch: {
verifiedCode(value) {
let vm = this;
//console.log(value)
if (value.length == 6) {
vm.verifiedCodeFlag = false;
if (vm.captchaKey.length == 0) {
hlsPopup.showLongBottom('请先获取验证码')
} else if (vm.phoneCodeTimeOut) {
hlsPopup.showLongBottom('验证码已失效,请从新获取')
} else {
vm.verifiedCodeFlag = true;
}
}
},
user_password(value) {
if (value.length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
}
},
confirm(value) {
if (value.length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
getVerifiedCode () {
let vm = this
hlsPopup.showLongCenter('测试验证码为123456')
/* let url = process.env.rootPath + '/aliyun/sms'
let params = {
phoneNumber: vm.phone_number,
signName: '车租易',
templateCode: 'SMS_154585462',
}
hlsHttp.post(url, params).then(function (res) {
if (res.code == 'OK') {
vm.captchaKey = res.captchaKey
vm.phoneCodeTimeOut = false
setTimeout(function () {
vm.captchaKey = ''
vm.phoneCodeTimeOut = true
}, 300000)
hlsPopup.showLongBottom('验证码发送成功!')
} else {
hlsPopup.showLongBottom(res.message)
}
}
) */
},
created() {
let vm = this;
let url = process.env.loginPath + 'appadmin';
let param = {};
//vm.hlsPopup.showLoading('请稍等');
vm.$post(url, param).then(function (res) {
window.localStorage.setItem('access_token', res.access_token);
})
}
}
},
}
</script>
<style scoped lang="less">
.pwd-forgotten {
.content {
background-color: #f7f7f8;
padding: 0;
.phone_number {
margin-top: 30px;
padding: 2% 30px;
width: 100%;
background-color: #FFFFFF;
display: flex;
display: -webkit-flex;
align-items: center;
//justify-content: space-between;
.number {
color: #000000;
letter-spacing: -0.83px;
font-size: 26px;
margin-right: 3%;
padding: 0 3%;
border-right: 1px solid #EFEFEF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
}
.phone-icon {
img {
margin-top: 5px;
width: 26px;
height: 46px;
}
}
.input-box {
width: 50%;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
input {
height: 100%;
width: 100%;
font-size: 26px;
line-height: 32px;
color: #000000;
letter-spacing: -0.83px;
border:none;
}
input::-webkit-input-placeholder {
font-size: 26px;
line-height: 32px;
color: #C6C6CC;
letter-spacing: -0.83px;
}
}
.delete {
img {
margin-top: 10px;
width: 24px;
height: 24px;
}
}
.getVerify {
border-radius: 6px;
background-color: @headerColor;
font-size: 22px;
padding: 15px 0;
width: 25%;
height: 100%;
color: #FFFFFF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
text-align: center;
}
.disable {
background-color: #DADADF;
}
@import "../styles/mixin";
.header {
background-color: #00469c;
color: #fff;
.h-header-btn {
img {
width: 16px;
height: 16px;
margin-left: 4px;
}
.user_name {
margin-top: 2%;
padding: 3% 30px;
width: 100%;
background-color: #FFFFFF;
display: flex;
display: -webkit-flex;
.user-icon {
img {
width: 32px;
height: 34px;
}
}
.user-name {
color: #000000;
letter-spacing: -0.83px;
font-size: 26px;
margin-right: 3%;
padding-right: 3%;
padding-left: 2.5%;
border-right: 1px solid #EFEFEF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
}
.user-input {
width: 75%;
height: 3%;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
input {
width: 100%;
height: 100%;
font-size: 26px;
color: #000000;
letter-spacing: -0.83px;
line-height: 34px;
float: left;
}
input::-webkit-input-placeholder {
font-size: 26px;
color: #C6C6CC;
letter-spacing: -0.83px;
line-height: 34px;
}
img {
float: right;
}
}
}
.submit {
background-color: #DADADF;
border-radius: 6px;
width: 88.3%;
height: 90px;
font-size: 32px;
color: #FFFFFF;
letter-spacing: 6px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
margin: 12% 40px 8% 40px;
}
.selected {
background-color: @headerColor;
border-radius: 6px;
width: 88.3%;
height: 90px;
font-size: 32px;
color: #FFFFFF;
letter-spacing: 6px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
margin: 12% 40px 8% 40px;
span {
color: #fff;
font-family: PingFangSC-Semibold;
margin-left: 16px;
font-size: 17px;
letter-spacing: 0.6px;
line-height: 24px;
}
}
}
.description{
.wh(100%,50px);
.fja();
background-color: #00469c;
.sc(14px,#fff);
}
.verified-code{
.wh(60%,100%);
text-align: right;
.verified-code-box{
margin-left: 14px;
.border-left;
color:#0057C3;
line-height: 30px;
}
.verified-code-des{
font-size: 10px;
color:#0057C3;
}
}
.tab-content{
background-color: #00469c;
margin: 0 2%;
color: #fff;
}
</style>
<template>
<h-view class="public-style t-regiester">
<h-header>
<h-view class="public-style pwd-forgotten">
<h-header :proportion="[5,1,1]" class="header">
<div slot="left" class="h-header-btn" @click="$routeGo()">
<i class="ion-ios-arrow-back"/>
<img src="@/assets/userBind/arrow.png" >
<span>用户注册</span>
</div>
<div slot="center">注册</div>
</h-header>
<h-content class="has-header">
<!--<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/username@2x.png"/></div>
<div class="user-name">用户名</div>
<div class="user-input"><input type="text" placeholder="请输入用户名" v-model="user_name"/></div>
</div>-->
<div class="phone_number">
<div class="phone-icon"><img src="../assets/image/login/cellphone@2x.png"/></div>
<div class="number">手机号</div>
<div class="input-box"><input type="number" placeholder="请输入手机号" v-model="phone_number"/></div>
<div class="getVerify" :class="{'disable':showTimer}" @blur="checkPhone" @click="getPhoneCode"><span
v-if="showTimer">{{timerCount}}</span>{{text}}
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/verification@2x.png"/></div>
<div class="user-name">验证码</div>
<div class="user-input"><input type="text" maxlength="6" placeholder="请输入验证码" v-model="verifiedCode"/>
<img
src="../assets/image/login/checked@2x.png" v-if="verifiedCodeFlag"/>
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/locked@2x.png"/></div>
<div class="user-name">&#12288;</div>
<div class="user-input"><input type="password" maxlength="12" placeholder="请输入至少6位密码"
v-model="user_password" @blur="passwordCheck"/>
<img
src="../assets/image/login/checked@2x.png" v-if="passwordFlag"/>
</div>
</div>
<div class="user_name">
<div class="user-icon"><img src="../assets/image/login/locked@2x.png"/></div>
<div class="user-name">&#12288;</div>
<div class="user-input"><input type="password" maxlength="12" placeholder="请与密码保持一致" @blur="confirmCheck"
v-model="confirm"/>
<img
src="../assets/image/login/checked@2x.png" v-if="confirmPassword"/>
</div>
</div>
<div :class="{'submit':!agreeFlag,'selected':agreeFlag}" @click="submit">注册</div>
<div class="potocol">
<div class="img-box" v-if="!agreeFlag" @click="changeStatus()"><img
src="../assets/image/login/unchecked@2x.png"/></div>
<div class="img-box" v-if="agreeFlag" @click="changeStatus()"><img
src="../assets/image/login/checked@2x.png"/></div>
<div class="agreed">我已同意并阅读</div>
<div class="clause" @click="goUserAgree">《车租易会员服务条款》</div>
</div>
<h-content>
<div class="description">请注册手机号接收验证码并设置密码</div>
<list-item>
<item>
<img slot="left-icon" src="../assets/login/phone.png" class="left-icon">
<div slot="name" class="required">手机号码</div>
<input slot="content" v-model="phone_number" placeholder="请输入手机号码">
</item>
<item>
<img slot="left-icon" src="../assets/login/phone_code.png" class="left-icon">
<div slot="name" class="required">验证码</div>
<input slot="content" v-model="verifiedCode" type="text" placeholder="请填写验证码">
<div slot="right-icon" class="verified-code">
<div v-if="!showTimer" class="verified-code-box" @click="getPhoneCode">点击获取</div>
<span v-if="showTimer" class="verified-code-des">{{ timerCount }}{{ text }}</span>
</div>
</item>
<item>
<img slot="left-icon" src="../assets/login/passwordConfirm.png" class="left-icon">
<div slot="name" class="required">设置密码</div>
<input
slot="content" v-model="user_password" type="text" placeholder="请输入6~20位密码"
maxlength="20" @blur="passwordCheck">
</item>
<item :proportion="[2,2]">
<img slot="left-icon" src="../assets/login/passwordConfirm.png" class="left-icon">
<div slot="name" class="required">重新输入密码</div>
<input
slot="content" v-model="confirm" type="text" placeholder="请重新输入密码"
@blur="confirmCheck">
</item>
</list-item>
</h-content>
<bottom-tab class="footer-button">
<tab-button class="put" @click.native="submit">确认</tab-button>
</bottom-tab>
</h-view>
</template>
<script>
import hlsPopup from "../scripts/hlsPopup";
var CryptoJS = require("crypto-js");
var CryptoJS = require('crypto-js')
export default {
data () {
return {
phone_number: '',
verifiedCode: '',
user_password: '',
confirm: '',
export default {
data() {
return {
phoneNumberFlag: false,
verifiedCodeFlag: false,
passwordFlag: false,
confirmPassword: false,
user_name: '',
phone_number: '',
verifiedCode: '',
user_password: '',
confirm: '',
phoneNumberFlag: false,
verifiedCodeFlag: false,
passwordFlag: false,
confirmPassword: false,
agreeFlag: false,
captchaKey: '',
phoneCodeTimeOut: false,
timer: 60000,
showTimer: false,
timerCount: 60,
text: '获取验证码'
captchaKey: '123456',
phoneCodeTimeOut: false,
timer: 60000,
showTimer: false,
timerCount: 60,
text: '获取验证码',
}
},
watch: {
verifiedCode (value) {
let vm = this
if (value.length === 6) {
vm.verifiedCodeFlag = false
if (vm.captchaKey.length === 0) {
hlsPopup.showLongCenter('请先获取验证码')
} else if (vm.phoneCodeTimeOut) {
hlsPopup.showLongCenter('验证码已失效,请从新获取')
} else {
vm.verifiedCodeFlag = true
}
}
},
methods: {
goUserAgree(){
this.$router.push({
name:"UserAgree"
})
},
checkPhone() {
let vm = this;
vm.phoneNumberFlag = false;
user_password (value) {
if (value.length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
}
},
confirm (value) {
if (value.length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
}
},
},
created () {
let vm = this
let url = process.env.loginPath + 'appadmin'
let param = {}
vm.$post(url, param).then(function (res) {
window.localStorage.setItem('access_token', res.access_token)
})
},
methods: {
checkPhone () {
let vm = this
vm.phoneNumberFlag = false
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true
}
},
getPhoneCode () {
let vm = this
if (!vm.showTimer) {
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true;
}
},
getPhoneCode() {
let vm = this;
if (!vm.showTimer) {
if (hlsUtil.phoneNumber(vm.phone_number) || hlsUtil.phoneNumber86(vm.phone_number)) {
vm.phoneNumberFlag = true;
vm.getVerifiedCode();
vm.showTimer = true;
vm.text = "秒后重新获取";
let counter = setInterval(function () {
if (vm.timerCount >= 0)
vm.timerCount = vm.timerCount - 1;
}, 1000);
setTimeout(function () {
vm.text = "获取验证码";
vm.showTimer = false;
clearInterval(counter)
vm.showTimer = false;
vm.timerCount = vm.timer / 1000;
}, vm.timer);
}
else {
hlsPopup.showLongCenter('手机号不存在,请重新输入!');
}
}
},
passwordCheck() {
let vm = this;
let length = vm.user_password.length;
if (length < 6 || length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
vm.phoneNumberFlag = true
vm.getVerifiedCode()
vm.showTimer = true
vm.text = '秒后失效'
let counter = setInterval(function () {
if (vm.timerCount >= 0) { vm.timerCount = vm.timerCount - 1 }
}, 1000)
setTimeout(function () {
vm.text = '获取验证码'
vm.showTimer = false
clearInterval(counter)
vm.showTimer = false
vm.timerCount = vm.timer / 1000
}, vm.timer)
} else {
vm.passwordFlag = true;
hlsPopup.showLongCenter('手机号不存在,请重新输入!')
}
},
confirmCheck() {
let vm = this;
let length = vm.confirm.length;
if (length < 6 || length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
} else if (vm.confirm != vm.user_password) {
hlsPopup.showLongBottom('两次输入的密码不一致,请从新输入')
} else {
vm.confirmPassword = true;
}
},
passwordCheck () {
let vm = this
let length = vm.user_password.length
if (length < 6 || length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
} else {
vm.passwordFlag = true
}
},
confirmCheck () {
let vm = this
let length = vm.confirm.length
if (length < 6 || length > 20) {
hlsPopup.showLongCenter('密码长度6~20位之间')
} else if (vm.confirm !== vm.user_password) {
hlsPopup.showLongCenter('两次输入的密码不一致,请从新输入')
} else {
vm.confirmPassword = true
}
},
submit () {
let vm = this
if (!vm.phoneNumberFlag) {
hlsPopup.showLongCenter('请输入手机号!')
} else if (!vm.verifiedCodeFlag) {
hlsPopup.showLongCenter('验证码错误!')
} else if (!vm.passwordFlag) {
hlsPopup.showLongCenter('请输入密码!')
} else if (!vm.confirmPassword) {
hlsPopup.showLongCenter('请确认密码!')
} else {
let url = process.env.basePath + 'register'
let md5passwprd = CryptoJS.MD5(vm.user_password).toString().toUpperCase()
let params = {
phone: vm.phone_number,
password: md5passwprd
}
},
changeStatus() {
let vm = this;
vm.agreeFlag = !vm.agreeFlag;
},
submit() {
let vm =this;
//vm.user_password = CryptoJS.MD5(vm.user_password).toString().toUpperCase();
let md5password = CryptoJS.MD5(vm.user_password).toString().toUpperCase();
if (!vm.phoneNumberFlag) {
hlsPopup.showLongBottom('请输入手机号!')
} else if (!vm.verifiedCodeFlag) {
hlsPopup.showLongBottom('请输入验证码!')
} else if (!vm.passwordFlag) {
hlsPopup.showLongBottom('请输入密码!')
} else if (!vm.confirmPassword) {
hlsPopup.showLongBottom('请确认密码!')
} else if (!vm.agreeFlag) {
hlsPopup.showLongBottom('请同意《车租易会员服务条款》!')
} else {
let url = process.env.rootPath + '/captcha/do?captchaKey=' + vm.captchaKey + '&captchaCode=' + vm.verifiedCode + '&sysName=HLS_APP&apiName=tc_app_regiester';
let params = {
user_name: vm.phone_number,
user_password: md5password,
phone_number: vm.phone_number
hlsHttp.post(url, params).then(function (res) {
if (res.result === 'S') {
hlsPopup.showLongCenter('注册成功')
setTimeout(function () {
vm.$router.push('login')
}, 100)
}
hlsHttp.post(url, params).then(function (res) {
if (res.result == 'S') {
hlsPopup.showLongBottom('注册成功');
window.localStorage.setItem('username', res.phone_number)
window.localStorage.setItem('user_id', res.user_id)
setTimeout(function () {
vm.$router.push('login');
}, 100)
}
})
}
},
getVerifiedCode() {
let vm = this;
let url = process.env.rootPath + '/aliyun/sms';
})
}
},
getVerifiedCode () {
let vm = this
hlsPopup.showLongCenter('测试验证码为123456')
/* let url = process.env.rootPath + '/aliyun/sms'
let params = {
phoneNumber: vm.phone_number,
signName: '车租易',
templateCode: 'SMS_154585462'
templateCode: 'SMS_154585462',
}
hlsHttp.post(url, params).then(function (res) {
if (res.code == 'OK') {
vm.captchaKey = res.captchaKey;
vm.phoneCodeTimeOut = false;
setTimeout(function () {
vm.captchaKey = '';
vm.phoneCodeTimeOut = true
}, 300000)
hlsPopup.showLongBottom('验证码发送成功!');
} else {
hlsPopup.showLongBottom(res.message);
}
}
)
/*post response {
"Code": "OK",
"Message": "OK",
"sendNum": 641164
}*/
}
},
watch: {
verifiedCode(value) {
let vm = this;
//console.log(value)
if (value.length == 6) {
vm.verifiedCodeFlag = false;
if (vm.captchaKey.length == 0) {
hlsPopup.showLongBottom('请先获取验证码')
} else if (vm.phoneCodeTimeOut) {
hlsPopup.showLongBottom('验证码已失效,请从新获取')
if (res.code == 'OK') {
vm.captchaKey = res.captchaKey
vm.phoneCodeTimeOut = false
setTimeout(function () {
vm.captchaKey = ''
vm.phoneCodeTimeOut = true
}, 300000)
hlsPopup.showLongBottom('验证码发送成功!')
} else {
vm.verifiedCodeFlag = true;
hlsPopup.showLongBottom(res.message)
}
}
},
user_password(value) {
if (value.length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
}
},
confirm(value) {
if (value.length > 12) {
hlsPopup.showLongBottom('密码长度6~12位之间')
}
}
) */
},
created() {
let vm = this;
let url = process.env.loginPath + 'appadmin';
let param = {};
//vm.hlsPopup.showLoading('请稍等');
vm.$post(url, param).then(function (res) {
window.localStorage.setItem('access_token', res.access_token);
})
}
}
},
}
</script>
<style scoped lang="less">
.t-regiester {
.content {
background-color: #f7f7f8;
padding: 0;
.phone_number {
margin-top: 30px;
padding: 2% 30px;
width: 100%;
background-color: #FFFFFF;
display: flex;
display: -webkit-flex;
align-items: center;
//justify-content: space-between;
.number {
color: #000000;
letter-spacing: -0.83px;
font-size: 26px;
margin-right: 3%;
padding: 0 3%;
border-right: 1px solid #EFEFEF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
}
.phone-icon {
img {
margin-top: 5px;
width: 26px;
height: 46px;
}
}
.input-box {
width: 50%;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
input {
height: 100%;
width: 100%;
font-size: 26px;
line-height: 32px;
color: #000000;
letter-spacing: -0.83px;
border:none;
}
input::-webkit-input-placeholder {
font-size: 26px;
line-height: 32px;
color: #C6C6CC;
letter-spacing: -0.83px;
}
}
.delete {
img {
margin-top: 10px;
width: 24px;
height: 24px;
}
}
.getVerify {
border-radius: 6px;
background-color: @headerColor;
font-size: 22px;
padding: 15px 0;
width: 25%;
height: 100%;
color: #FFFFFF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
text-align: center;
}
.disable {
background-color: #DADADF;
}
@import "../styles/mixin";
.header {
background-color: #00469c;
color: #fff;
.h-header-btn {
img {
width: 16px;
height: 16px;
margin-left: 4px;
}
.user_name {
margin-top: 2%;
padding: 3% 30px;
width: 100%;
background-color: #FFFFFF;
display: flex;
display: -webkit-flex;
.user-icon {
img {
width: 32px;
height: 34px;
}
}
.user-name {
color: #000000;
letter-spacing: -0.83px;
font-size: 26px;
margin-right: 3%;
padding-right: 3%;
padding-left: 2.5%;
border-right: 1px solid #EFEFEF;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
}
.user-input {
width: 75%;
height: 3%;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
input {
width: 100%;
height: 100%;
font-size: 26px;
color: #000000;
letter-spacing: -0.83px;
line-height: 34px;
float: left;
}
input::-webkit-input-placeholder {
font-size: 26px;
color: #C6C6CC;
letter-spacing: -0.83px;
line-height: 34px;
}
img {
float: right;
}
}
}
.submit {
background-color: #DADADF;
border-radius: 6px;
width: 88.3%;
height: 90px;
font-size: 32px;
color: #FFFFFF;
letter-spacing: 6px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
margin: 12% 40px 8% 40px;
}
.selected {
background-color: @headerColor;
border-radius: 6px;
width: 88.3%;
height: 90px;
font-size: 32px;
color: #FFFFFF;
letter-spacing: 6px;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
margin: 12% 40px 8% 40px;
}
.potocol {
display: flex;
display: -webkit-flex;
.img-box {
margin-left: 40px;
margin-right: 10px;
img {
width: 28px;
height: 28px;
}
}
.agreed {
font-size: 22px;
color: #090909;
line-height: 32px;
}
.clause {
font-size: 22px;
color: @headerColor;
letter-spacing: 0.2px;
margin-left: 10px;
line-height: 32px;
}
span {
color: #fff;
font-family: PingFangSC-Semibold;
margin-left: 16px;
font-size: 17px;
letter-spacing: 0.6px;
line-height: 24px;
}
}
}
.description{
.wh(100%,50px);
.fja();
background-color: #00469c;
.sc(14px,#fff);
}
.verified-code{
.wh(60%,100%);
text-align: right;
.verified-code-box{
margin-left: 14px;
.border-left;
color:#0057C3;
line-height: 30px;
}
.verified-code-des{
font-size: 10px;
color:#0057C3;
}
}
.tab-content{
background-color: #00469c;
margin: 0 2%;
color: #fff;
}
</style>
......@@ -43,7 +43,8 @@ export default new Router({
{
path: '/',
redirect: to => {
if (!window.localStorage.needGuid || window.localStorage.needGuid === 'true') {
return {name: 'Login'}
/* if (!window.localStorage.needGuid || window.localStorage.needGuid === 'true') {
return {name: 'Guide'}
} else {
if (window.localStorage.isOpenFingerLogin) {
......@@ -52,7 +53,7 @@ export default new Router({
// if none of the above states are matched, use this as the fallback
return {name: 'Login'}
}
}
} */
},
},
{
......@@ -104,7 +105,7 @@ export default new Router({
{path: '/refund', component: Refund, name: 'Refund', meta: {keepAlive: false}},
{path: '/intoList', component: IntoList, name: 'IntoList', meta: {keepAlive: false}},
// 经销商签约
{path: '/contract-list', component: ContractList, name: 'ContractList', meta: {keepAlive: true}},
{path: '/contract-list', component: ContractList, name: 'ContractList', meta: {keepAlive: false}},
{path: '/contract-details', component: ContractDetails, name: 'ContractDetails', meta: {keepAlive: true}},
{path: '/financ-details', component: FinancDetails, name: 'FinancDetails', meta: {keepAlive: true}},
],
......
......@@ -24,10 +24,6 @@
font-size: @size;
color: @color;
}
//字体大小、行高、字体
.font(@size, @line-height, @family: 'Microsoft YaHei') {
font: #{@size}/#{@line-height} @family;
}
//字体大小,颜色
.sc(@size, @color){
font-size: @size;
......@@ -43,6 +39,9 @@
.border-right{
border-right: 1px solid rgba(1, 17, 27, 0.1);
}
.border-left{
border-left: 1px solid rgba(1, 17, 27, 0.1);
}
.border{
border: 1px solid rgba(1, 17, 27, 0.1);
}
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