android添加银行插件
diff --git a/pages/sub_basic/login.vue b/pages/sub_basic/login.vue
new file mode 100644
index 0000000..372f6c7
--- /dev/null
+++ b/pages/sub_basic/login.vue
@@ -0,0 +1,439 @@
+<template>
+ <view class="login" @touchmove.stop.prevent="moveHandle">
+ <!-- #ifndef MP-WEIXIN -->
+ <u-navbar title="登录" :border-bottom="false" :is-back="false"></u-navbar>
+ <!-- #endif -->
+ <view class="login-con">
+ <view class="login-con-logo">
+ <!-- #ifdef MP-WEIXIN -->
+ <u-image src="/pages/sub_basic/images/login/logo.png" width="300rpx" mode="widthFix"></u-image>
+ <!-- #endif -->
+ <!-- #ifndef MP-WEIXIN -->
+ <u-image src="./images/login/logo.png" width="300rpx" mode="widthFix"></u-image>
+ <!-- #endif -->
+ </view>
+ <view class="login-con-form">
+ <u-field v-model="tel" placeholder="请输入手机号" label-width="50" maxlength="11" type="number" clear-size="40">
+ <u-icon slot="icon" name="shouji" custom-prefix="custom-icon" color="#999999"></u-icon>
+ </u-field>
+ <u-field v-model="pwd" icon="lock-fill" placeholder="请输入密码" label-width="50" icon-color="#999999" maxlength="12"
+ :password="true" type="text" clear-size="40"></u-field>
+ <view class="login-con-form-forget"><text @click="toUrl('/pages/sub_basic/forgetPwd')">忘记密码?</text></view>
+ </view>
+ <u-button @click="login" :custom-style="loginConBtn">登录</u-button>
+ <u-button @click="toUrl('/pages/sub_basic/register')" :custom-style="loginConBtnr">注册</u-button>
+ <view class="login-con-youke" @click="toIndex"><text>游客登陆</text></view>
+ <view class="login-con-footer">
+ <view class="login-con-footer-title"><text style="color: #CCCCCC;margin-right: 30rpx;">————</text> 其他登陆方式 <text
+ style="color: #CCCCCC;margin-left: 30rpx;">————</text></view>
+ <view class="login-con-footer-icon">
+ <!-- #ifdef MP-WEIXIN -->
+ <u-image src="/pages/sub_basic/images/login/finge.png" width="50rpx" height="50rpx" mode="aspectFit" @click="fingerIn"></u-image>
+ <!-- <u-image src="/pages/sub_basic/images/login/face.png" width="50rpx" height="50rpx" mode="aspectFit" @click="faceIn"></u-image> -->
+ <u-image src="/pages/sub_basic/images/login/hands.png" width="50rpx" height="50rpx" mode="aspectFit" @click="handsIn"></u-image>
+ <!-- #endif -->
+ <!-- #ifndef MP-WEIXIN -->
+ <u-image src="./images/login/finge.png" width="50rpx" height="50rpx" mode="aspectFit" @click="fingerIn"></u-image>
+ <!-- <u-image src="./images/login/face.png" width="50rpx" height="50rpx" mode="aspectFit" @click="faceIn"></u-image> -->
+ <u-image src="./images/login/hands.png" width="50rpx" height="50rpx" mode="aspectFit" @click="handsIn"></u-image>
+ <!-- #endif -->
+
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ const app = getApp()
+ export default {
+ data() {
+ return {
+ pwd: "",
+ tel: "",
+ loginConBtn: {
+ backgroundColor: ' #2FA8E1',
+ padding: '50rpx 0',
+ color: '#FFFFFF',
+ width: ' 600rpx',
+ fontSize: '30rpx',
+ border: '1px solid #2FA8E1',
+ },
+ loginConBtnr: {
+ padding: '50rpx 0',
+ color: '#2FA8E1',
+ width: ' 600rpx',
+ fontSize: '30rpx',
+ border: '1px solid #2FA8E1',
+ marginTop: '30rpx'
+ }
+ }
+ },
+ onLoad() {
+ let routes = getCurrentPages();
+ let tel = uni.getStorageSync("phone")
+ if (tel) {
+ this.tel = tel
+ }
+
+ },
+ methods: {
+ moveHandle() {
+ return
+ },
+ toIndex() {
+ uni.clearStorageSync()
+ uni.switchTab({
+ url: "/pages/sub_tabbar/index"
+ })
+ },
+ login() {
+ let that = this
+ let {
+ tel,
+ pwd
+ } = that
+ // console.log(tel,pwd)
+ if (tel == "") {
+ uni.showToast({
+ title: "请填写正确手机号",
+ duration: 800,
+ mask: true,
+ icon: "none"
+ })
+ return false
+ }
+ if (pwd == "") {
+ uni.showToast({
+ title: "请填写登录密码",
+ duration: 800,
+ mask: true,
+ icon: "none"
+ })
+ return false
+ }
+
+ // #ifdef H5
+ let platform = 'H5'
+ let uuid = ''
+ // #endif
+
+ // #ifdef APP-PLUS
+ let uuid = app.globalData.clientid ? app.globalData.clientid:''
+ let platform = uni.getStorageSync('platform') ? 'App-' + uni.getStorageSync('platform') : ''
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ let platform = uni.getStorageSync('platform') ? 'Wechat-' + uni.getStorageSync('platform') : ''
+ let uuid = ''
+ // #endif
+
+ let params = {
+ username: tel,
+ password: pwd,
+ deviceid: uuid,
+ platform: platform
+ }
+ that.$u.post('/login',params).then(res => {
+ uni.setStorageSync("token", res.token)
+ uni.setStorageSync("uid", res.uid)
+ uni.setStorageSync("userid", res.userid)
+ uni.setStorageSync("tenantid", res.tenantid)
+ uni.setStorageSync("tokenexpire", res.expire)
+ uni.setStorageSync("tokentime", res.now)
+ uni.setStorageSync("signed", res.signed)
+ uni.setStorageSync("paypwdset", res.paypwdset)
+ uni.setStorageSync("name", res.name)
+ uni.setStorageSync("localpwd", res.localpwd)
+ uni.setStorageSync("phone", tel)
+ uni.setStorageSync("phoneX", res.phone)
+ uni.setStorageSync("imageurl", res.imageurl)
+ uni.setStorageSync("idno", res.idno)
+ uni.setStorageSync("cardno", res.citizenCardNo)
+ uni.setStorageSync("bankcardno", res.bankCardNo)
+ uni.setStorageSync("email", res.email)
+ let ranNum = Math.ceil(Math.random() * 25)
+ let c = String.fromCharCode(65 + ranNum)
+ // #ifndef MP-WEIXIN
+ let b = c + btoa(pwd)
+ // #endif
+ // #ifdef MP-WEIXIN
+ let b = c + pwd
+ // #endif
+ uni.setStorageSync("pwd", b)
+ if(res.needcheck){
+ uni.navigateTo({
+ url:'/pages/sub_basic/verification?data=' + JSON.stringify(params)
+ })
+ return false
+ }
+ uni.showToast({
+ title: "登录成功",
+ icon: "none",
+ mask: true,
+ duration: 800,
+ complete(res) {
+ setTimeout(() => {
+ uni.switchTab({
+ url: "/pages/sub_tabbar/index"
+ })
+ }, 1500)
+ }
+ })
+ })
+ },
+ fingerLogin() {
+ let that = this
+ let tel = uni.getStorageSync('phone')
+ let pwd = uni.getStorageSync('pwd')
+ // #ifdef APP-PLUS
+ let uuid = app.globalData.clientid ? app.globalData.clientid : ''
+ let platform = uni.getStorageSync('platform') ? 'App-' + uni.getStorageSync('platform') : ''
+ let a = atob(pwd.substr(1))
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ let a = pwd.substr(1)
+ let uuid = ''
+ let platform = uni.getStorageSync('platform') ? 'Wechat-' + uni.getStorageSync('platform') : ''
+ // #endif
+
+ // #ifdef H5
+ let platform = 'H5'
+ let uuid = ''
+ let a= atob(pwd.substr(1))
+ // #endif
+
+ let params = {
+ username: tel,
+ password: a,
+ deviceid: uuid,
+ platform: platform
+ }
+ that.$u.post('/login',params).then(res => {
+ uni.setStorageSync("token", res.token)
+ uni.setStorageSync("uid", res.uid)
+ uni.setStorageSync("userid", res.userid)
+ uni.setStorageSync("tenantid", res.tenantid)
+ uni.setStorageSync("tokenexpire", res.expire)
+ uni.setStorageSync("tokentime", res.now)
+ uni.setStorageSync("signed", res.signed)
+ uni.setStorageSync("paypwdset", res.paypwdset)
+ uni.setStorageSync("name", res.name)
+ uni.setStorageSync("localpwd", res.localpwd)
+ uni.setStorageSync("phoneX", res.phone)
+ uni.setStorageSync("imgurl", res.imgurl)
+ uni.setStorageSync("idno", res.idno)
+ uni.setStorageSync("cardno", res.citizenCardNo)
+ uni.setStorageSync("bankcardno", res.bankCardNo)
+ uni.setStorageSync("email", res.email)
+ if(res.needcheck){
+ uni.navigateTo({
+ url:'/pages/sub_basic/verification?data=' + JSON.stringify(params)
+ })
+ return false
+ }
+ uni.showToast({
+ title: "指纹识别成功",
+ icon: "none",
+ mask: true,
+ complete(res) {
+ setTimeout(() => {
+ uni.switchTab({
+ url: "/pages/sub_tabbar/index"
+ })
+ }, 1500)
+ }
+ })
+ })
+ },
+ fingerIn() {
+ let that = this
+ let fingerprint = uni.getStorageSync("fingerprint")
+ if (fingerprint) {
+ uni.checkIsSoterEnrolledInDevice({
+ checkAuthMode: 'fingerPrint',
+ success(res) {
+ if (res.isEnrolled) {
+ uni.startSoterAuthentication({
+ requestAuthModes: ['fingerPrint'],
+ authContent: '指纹解锁',
+ success(res) {
+ that.fingerLogin()
+ },
+ fail(res) {
+ console.log(res)
+ if (res.errCode == "90010") {
+ uni.showToast({
+ title: "错误次数过多,功能被冻结,请尝试其他登陆方式",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ } else {
+ uni.showToast({
+ title: res.errCode,
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ }
+ }
+ })
+ } else {
+ uni.showToast({
+ title: "没有录入指纹",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ }
+ },
+ })
+
+ } else {
+ uni.showToast({
+ title: "未开启指纹登录,请使用其他方式登录",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ }
+ },
+ faceIn() {
+ let face = uni.getStorageSync("face")
+ if (face) {
+ uni.showToast({
+ title: "暂不支持面容登录,请使用其他方式登录",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ } else {
+ uni.showToast({
+ title: "未开启面容登录,请使用其他方式登录",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ }
+ },
+ handsIn() {
+ let hands = uni.getStorageSync("hands")
+ if (hands) {
+ uni.setStorageSync("login", 1)
+ uni.navigateTo({
+ url: "/pages/sub_mine/lock"
+ })
+ } else {
+ uni.showToast({
+ title: "未开启手势登录,请使用其他方式登录",
+ duration: 1500,
+ icon: "none",
+ mask: true,
+ })
+ }
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .login {
+ width: 100vw;
+ font-family: "PingFang-SC-Medium";
+ background-color: #FFFFFF;
+ height: 100vh;
+ position: relative;
+
+ &-con {
+ padding: 30rpx;
+
+ &-title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ text {
+ font-family: "PingFang-SC-Medium";
+ font-size: 32rpx;
+ color: #333333;
+ }
+ }
+
+ &-logo {
+ display: flex;
+ justify-content: center;
+ padding: 30rpx 0;
+ text-align: center;
+ align-items: center;
+ }
+
+ &-form {
+ width: 650rpx;
+ margin: 0 auto 50rpx;
+
+ &-forget {
+ color: #999999;
+ font-size: 28rpx;
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 30rpx;
+ }
+ }
+
+ &-btn {
+ background-color: #2FA8E1;
+ padding: 50rpx 0;
+ color: #FFFFFF;
+ width: 600rpx;
+ font-size: 30rpx;
+ border: 1px solid #2FA8E1;
+ }
+
+ &-btnr {
+ border: 1px solid #2FA8E1;
+ padding: 50rpx 0;
+ color: #2FA8E1;
+ width: 600rpx;
+ font-size: 30rpx;
+ margin-top: 30rpx;
+ }
+
+ &-youke {
+ display: flex;
+ justify-content: center;
+ color: #999999;
+ font-size: 28rpx;
+ margin-top: 30rpx;
+ }
+
+ &-footer {
+ position: absolute;
+ bottom: 30rpx;
+ width: 500rpx;
+ left: 50%;
+ transform: translateX(-50%);
+ // width: 100vw;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ align-items: center;
+ &-title {
+ display: flex;
+ justify-content: center;
+ font-size: 28rpx;
+ color: #999999;
+ }
+
+ &-icon {
+ width: 50%;
+ display: flex;
+ justify-content: space-around;
+ margin-top: 30rpx;
+ }
+ }
+ }
+
+ }
+</style>