瀏覽代碼

修改一键登录

master
yangteng 3 週之前
父節點
當前提交
d5f54406fb
共有 6 個檔案被更改,包括 56 行新增195 行删除
  1. 26
    105
      login/login.vue
  2. 1
    1
      pages/user/user.vue
  3. 23
    84
      stores/user.js
  4. 2
    2
      subpackage/orders/order_payment.vue
  5. 2
    1
      utils/network/api.js
  6. 2
    2
      utils/network/request.js

+ 26
- 105
login/login.vue 查看文件

@@ -3,31 +3,11 @@
<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">
<submit-button title="登录" @submit="doLogin"></submit-button>
<button size="default" type="primary" class="ui-btn" open-type="getPhoneNumber" @getphonenumber="doLogin"
>一键登录</button>
<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>
</view>

<view class="agreement">
@@ -40,7 +20,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" />
@@ -67,7 +47,7 @@
</view>
<view class="label">忘记密码</view>
</view>
</view>
</view> -->
</view>
</template>

@@ -75,8 +55,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";
@@ -91,7 +71,7 @@
password: "", //密码
code: "", //验证码
back: 0, //从app扫码看协议过来 登录了 还需要回到手机号验证页面 0 是原本的登录 1 要回去的登录(从哪来回哪去) 2运维跳转过来得中转页
params:{}
params: {}
});

onLoad((option) => {
@@ -120,49 +100,20 @@
navTo("/login/agreement")
}


const choiceAgreement = () => {
if (!state.checked) {
msg("请勾选我已阅读并同意《平台用户服务隐私协议》");
return;
}
}
/* 登录 */
const doLogin = (e) => {
// 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;
// }
//判断是验证码登录,还是账号密码登录
// 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,
// });
// }
console.log("e",e)
reqLogin(userBasicGetPhoneNumber, {
jsCode: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
});
console.log("e", e)
reqLogin(userBasicGetPhoneNumber, {
jsCode: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
});
};

/* 执行登录 */
@@ -177,10 +128,9 @@
requestNew(code, options).then((res) => {
const result = res;
console.log(result);
console.log(typeof (result));
fetchToken(result.code).then((data : any) => {
fetchToken(result.phoneNumber).then((data : any) => {
console.log("登录", data);
setItem('mobile', state.username)
setItem('mobile', result.phoneNumber)
subscribeMessages();
msg("登录成功!");
uni.$emit("refreshOrder");
@@ -191,9 +141,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'
})
@@ -201,36 +151,6 @@
});
});
};
// const silentLogin = () => {
// if (state.userType == "1") {
// var data = {
// userType: state.userType,
// account: state.mobile,
// loginSource: getItem("loginSource"),
// };
// } else {
// var data = {
// userType: state.userType,
// account: state.userIdNum,
// loginSource: getItem("loginSource"),
// };
// }
// const options = {
// type: 2,
// data: data,
// method: "POST",
// showLoading: true,
// };
// return new Promise(async (resolve, reject) => {
// const res = await requestNew(silentLoginApi, options);
// const data = res;
// setItem("openId", data.openId);
// setItem("token", data.accessToken);
// resolve(data);
// }).catch((error) => {
// reject(error);
// });
// }
</script>

<style lang="scss" scoped>
@@ -241,6 +161,7 @@
.logo {
width: 260rpx;
height: 160rpx;
margin-top: 100rpx;
}

.group {
@@ -300,7 +221,7 @@

.btn {
width: 100%;
margin: 120rpx 40rpx 50rpx;
margin: 580rpx 40rpx 50rpx;
}

.agreement {

+ 1
- 1
pages/user/user.vue 查看文件

@@ -158,7 +158,7 @@
<image :src="`${$imgUrl}myImage/wdexiayi.png`" class="arrow"></image>
</view>
</view>
<view class="car-item" v-for="(item,index) in state.list">
<view class="car-item" v-for="(item,index) in state.list" :key="index">
<image @click="carDetails(item)" :src="`${$imgUrl}myImage/car.png`" class="car-pic" mode="widthFix">
</image>
<view class="car-info" @click="carDetails(item)">

+ 23
- 84
stores/user.js 查看文件

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

/*根据登录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
}
/*根据登录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);
});
},

/*退出登录*/

+ 2
- 2
subpackage/orders/order_payment.vue 查看文件

@@ -411,7 +411,7 @@
appId: state.qdSignAppId,
path: state.qdSignUrl,
extraData: {},
envVersion:'trial',
envVersion:'release',
success(res) {
state.payOK=true
console.log(res);
@@ -532,7 +532,7 @@
appId: state.qdSignAppId,
path: state.qdSignUrl,
extraData: {},
envVersion:'trial',
envVersion:'release',
success(res) {
state.payOK=true
console.log(res);

+ 2
- 1
utils/network/api.js 查看文件

@@ -473,4 +473,5 @@ export const selfServiceUserAdd = "/iaw/selfService/userAdd" //用户提交 -

export const errorLogAdd = "/iaw/api/active/errorLog/add" //新增错误信息
export const userBasicGetOpenId = "/iaw/issue/userBasic/getOpenId" //一键登录
export const userBasicGetPhoneNumber = "/iaw/issue/userBasic/getPhoneNumber" //code换手机号的接口
export const userBasicGetPhoneNumber = "/iaw/issue/userBasic/getPhoneNumber" //code换手机号的接口
export const loginByNoPassword = "/iaw/portal/loginByNoPassword" //一键登录那块得无感登录

+ 2
- 2
utils/network/request.js 查看文件

@@ -343,8 +343,8 @@ export function requestNew(code, options = {}, start = false,clie=()=>{}) {
// #ifdef MP-WEIXIN
Common['orderSource'] = "WECHAT"
// #endif
// options.url = envs[process.env.NODE_ENV].baseUrl+'/prod' + code
options.url = envs[process.env.NODE_ENV].baseUrl+'/ndev' + code
options.url = envs[process.env.NODE_ENV].baseUrl+'/prod' + code
// options.url = envs[process.env.NODE_ENV].baseUrl+'/ndev' + code
//默认json数据格式提交`
let contentType = 'application/json'


Loading…
取消
儲存