|
|
@@ -3,11 +3,29 @@ |
|
|
|
<view class="login-main as-gravity-center as-layout-vertical"> |
|
|
|
<image :src="`${$imgUrl}login/logo.png`" class="logo" mode="aspectFill"></image> |
|
|
|
<view class="title">九州ETC</view> |
|
|
|
<view class="form"> |
|
|
|
<view class="form-input"> |
|
|
|
<view> +86</view> |
|
|
|
<image :src="`${$imgUrl}common/arror_down_black.png`" class="arror" mode="aspectFill" /> |
|
|
|
<input class="input" v-model="state.username" focus placeholder="请输入手机号" |
|
|
|
placeholder-class="form-placeholder" type="number" maxlength="11" /> |
|
|
|
</view> |
|
|
|
<view class="form-input" v-if="state.loginType === 'pwd'"> |
|
|
|
<input class="input" v-model="state.password" type="text" placeholder="请输入密码" |
|
|
|
placeholder-class="form-placeholder" :password="state.isPwdType ? true : false" /> |
|
|
|
<image :src="`${$imgUrl}login/${ |
|
|
|
state.isPwdType ? 'icon_eye_close' : 'icon_eye_open' |
|
|
|
}.png`" class="eye" @click="state.isPwdType = !state.isPwdType" mode="aspectFill"></image> |
|
|
|
</view> |
|
|
|
<view class="form-input" v-if="state.loginType === 'code'"> |
|
|
|
<input class="input" v-model="state.code" placeholder="请输入验证码" placeholder-class="form-placeholder" |
|
|
|
maxlength="6" type="number" /> |
|
|
|
<verification-code :bg="false" :mobile="state.username"></verification-code> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="btn"> |
|
|
|
<button v-if="state.checked" size="default" type="primary" class="ui-btn" open-type="getPhoneNumber" |
|
|
|
@getphonenumber="doLogin">一键登录</button> |
|
|
|
<button v-else size="default" type="primary" class="ui-btn" @click="choiceAgreement">一键登录</button> |
|
|
|
<submit-button title="登录" @submit="doLogin"></submit-button> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="agreement"> |
|
|
@@ -20,7 +38,7 @@ |
|
|
|
<view class="txt-green" @click="toRead">《平台用户服务隐私协议》</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- <view class="btns as-layout-horizontal"> |
|
|
|
<view class="btns as-layout-horizontal"> |
|
|
|
<view class="as-layout-vertical as-gravity-center" @click="navTo('/login/register-step1')"> |
|
|
|
<view class="bg blue as-gravity-center"> |
|
|
|
<image :src="`${$imgUrl}login/icon_register.png`" class="img" mode="aspectFill" /> |
|
|
@@ -47,7 +65,7 @@ |
|
|
|
</view> |
|
|
|
<view class="label">忘记密码</view> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
@@ -55,8 +73,8 @@ |
|
|
|
import { reactive } from "vue"; |
|
|
|
import { checkStr, msg, navTo, subscribeMessages } from "@/utils/utils"; |
|
|
|
import { onLoad, onUnload } from "@dcloudio/uni-app"; |
|
|
|
import { login, loginCode, loginTime, wechatAppID, userBasicGetOpenId, userBasicGetPhoneNumber } from "@/utils/network/api.js"; |
|
|
|
import { requestNew } from "@/utils/network/request.js"; |
|
|
|
import { login, loginCode, loginTime, wechatAppID,userBasicGetOpenId,userBasicGetPhoneNumber } from "@/utils/network/api.js"; |
|
|
|
import { requestNew} from "@/utils/network/request.js"; |
|
|
|
import { stringToJson } from "@/utils/network/encryption"; |
|
|
|
import { useUserStore } from "@/stores/user"; |
|
|
|
import { setItem } from "@/utils/storage"; |
|
|
@@ -71,7 +89,7 @@ |
|
|
|
password: "", //密码 |
|
|
|
code: "", //验证码 |
|
|
|
back: 0, //从app扫码看协议过来 登录了 还需要回到手机号验证页面 0 是原本的登录 1 要回去的登录(从哪来回哪去) 2运维跳转过来得中转页 |
|
|
|
params: {} |
|
|
|
params:{} |
|
|
|
}); |
|
|
|
|
|
|
|
onLoad((option) => { |
|
|
@@ -100,20 +118,43 @@ |
|
|
|
navTo("/login/agreement") |
|
|
|
} |
|
|
|
|
|
|
|
const choiceAgreement = () => { |
|
|
|
|
|
|
|
/* 登录 */ |
|
|
|
const doLogin = () => { |
|
|
|
if (!state.username) { |
|
|
|
msg("请输入手机号!"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (state.loginType === "pwd" && !state.password) { |
|
|
|
msg("请输入密码!"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (state.loginType === "code" && !state.code) { |
|
|
|
msg("请输入验证码!"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (!checkStr(state.username, "mobile")) { |
|
|
|
msg("请输入正确的手机号!"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (!state.checked) { |
|
|
|
msg("请勾选我已阅读并同意《平台用户服务隐私协议》"); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
/* 登录 */ |
|
|
|
const doLogin = (e) => { |
|
|
|
console.log("e", e) |
|
|
|
reqLogin(userBasicGetPhoneNumber, { |
|
|
|
jsCode: e.detail.code, |
|
|
|
iv: e.detail.iv, |
|
|
|
encryptedData: e.detail.encryptedData, |
|
|
|
}); |
|
|
|
//判断是验证码登录,还是账号密码登录 |
|
|
|
if (state.loginType === "code") { |
|
|
|
reqLogin(loginCode, { |
|
|
|
mobile: state.username, |
|
|
|
code: state.code, |
|
|
|
loginTime: loginTime, |
|
|
|
}); |
|
|
|
} else { |
|
|
|
reqLogin(login, { |
|
|
|
mobile: state.username, |
|
|
|
password: state.password, |
|
|
|
loginTime: loginTime, |
|
|
|
}); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/* 执行登录 */ |
|
|
@@ -128,9 +169,10 @@ |
|
|
|
requestNew(code, options).then((res) => { |
|
|
|
const result = res; |
|
|
|
console.log(result); |
|
|
|
fetchToken(result.phoneNumber).then((data : any) => { |
|
|
|
console.log(typeof (result)); |
|
|
|
fetchToken(result.code).then((data : any) => { |
|
|
|
console.log("登录", data); |
|
|
|
setItem('mobile', result.phoneNumber) |
|
|
|
setItem('mobile', state.username) |
|
|
|
subscribeMessages(); |
|
|
|
msg("登录成功!"); |
|
|
|
uni.$emit("refreshOrder"); |
|
|
@@ -141,9 +183,9 @@ |
|
|
|
} else if (state.back == 2) { |
|
|
|
const params = encodeURIComponent(JSON.stringify(state.params)) |
|
|
|
uni.redirectTo({ |
|
|
|
url: `/subpackage/after-sale/transfer-page?params=${params}` |
|
|
|
url:`/subpackage/after-sale/transfer-page?params=${params}` |
|
|
|
}) |
|
|
|
} else { |
|
|
|
} else{ |
|
|
|
uni.switchTab({ |
|
|
|
url: '/pages/index/index' |
|
|
|
}) |
|
|
@@ -151,6 +193,9 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
}; |
|
|
|
const decryptPhoneNumber=(e)=>{ |
|
|
|
console.log("e",e) |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
@@ -161,7 +206,6 @@ |
|
|
|
.logo { |
|
|
|
width: 260rpx; |
|
|
|
height: 160rpx; |
|
|
|
margin-top: 100rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.group { |
|
|
@@ -221,7 +265,7 @@ |
|
|
|
|
|
|
|
.btn { |
|
|
|
width: 100%; |
|
|
|
margin: 580rpx 40rpx 50rpx; |
|
|
|
margin: 120rpx 40rpx 50rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.agreement { |