Bläddra i källkod

一键登录复原

master
yangteng 3 veckor sedan
förälder
incheckning
4cd8ca8a13
3 ändrade filer med 159 tillägg och 52 borttagningar
  1. 68
    24
      login/login.vue
  2. 84
    23
      stores/user.js
  3. 7
    5
      subpackage/after-sale/activation/activate.vue

+ 68
- 24
login/login.vue Visa fil

@@ -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 {

+ 84
- 23
stores/user.js Visa fil

@@ -14,8 +14,7 @@ import {
appId,
getToken,
wechatAppID,
getOpenId,
loginByNoPassword
getOpenId
} from "@/utils/network/api";
import {
stringToJson
@@ -49,27 +48,89 @@ export const useUserStore = defineStore("userStore", {
setItem(StorageKeys.OpenId, openId);
},

/*根据登录phoneNumber获取token信息 无感登录*/
fetchToken(phoneNumber) {
const options = {
type: 2,
data: {
accountNumber: phoneNumber,
loginSource: getItem("loginSource"),
},
method: "POST",
showLoading: true,
};
return new Promise(async (resolve, reject) => {
const res = await requestNew(loginByNoPassword, options);
const data = res;
console.log("data==",data)
setItem("openId", data.openId);
setItem("token", data.accessToken);
resolve(data);
}).catch((error) => {
reject(error);
});
/*根据登录code获取token信息*/
fetchToken(code) {
if(getItem("QYorder") && getItem("QYorder").openid){
const options = {
type: 2,
data: {
deviceId: "",
code: code,
loginSource: getItem("loginSource"),
wxOpenid: getItem("QYorder").openid,
zfbOpenId: getItem("zfbOpenId"),
zfbUserId: getItem("zfbUserId"),
},
method: "POST",
showLoading: false,
};
return new Promise(async (resolve, reject) => {
const res = await requestNew(getToken, options);
const data = res;
console.log("fetchToken", options)
this.saveToken(data.accessToken);
this.saveOpenId(data.openId);
console.log('输出内容', data.openId)
resolve(data);
}).catch((error) => {
reject(error);
});
}else{
var that=this
// 如果没有wxOpenid重新获取
//获取微信小程序openid
// #ifdef MP-WEIXIN
uni.login({
provider: "weixin",
success: function(e) {
console.log("jsCode",e.code)
const options = {
type: 2,
data: {
"jsCode": e.code
},
method: "POST",
};
// #ifdef MP-WEIXIN
requestNew(getOpenId, options).then((res) => {
const result =res;
console.log("getOpenId===",result)
const openidData = stringToJson(result.data);
setItem("QYorder", openidData);
const options = {
type: 2,
data: {
deviceId: "",
code: code,
loginSource: getItem("loginSource"),
wxOpenid: getItem("QYorder").openid,
zfbOpenId: getItem("zfbOpenId"),
zfbUserId: getItem("zfbUserId"),
},
method: "POST",
showLoading: false,
};
return new Promise(async (resolve, reject) => {
const res = await requestNew(getToken, options);
const data = res;
console.log("fetchToken", options)
that.saveToken(data.accessToken);
that.saveOpenId(data.openId);
console.log('输出内容', data.openId)
resolve(data);
}).catch((error) => {
reject(error);
});
});
// #endif
},
});
// #endif
}
},

/*退出登录*/

+ 7
- 5
subpackage/after-sale/activation/activate.vue Visa fil

@@ -243,15 +243,17 @@
setTimeout(() => {
state.showPopup=false
},1000)
msg("激活成功", {
'icon': 'success',
'duration': 3000
})
setTimeout(() => {
msg("激活成功", {
'icon': 'success',
'duration': 3000
})
},2000)
setTimeout(() => {
uni.navigateTo({
url: "/subpackage/after-sale/deviceInfo/deviceInfo",
});
},4000)
},5000)
} else {
console.log("datas.stepNo", datas.stepNo)
bluetoothUtil.transCmd(datas.cmd.split(','), datas.cmdType == 'CARD' ? '10' : '20', function(res) {

Laddar…
Avbryt
Spara