中品云站
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

377 lines
9.8 KiB

<template>
<view class="page-content my-bg">
<cu-custom class="main-topbar bg-main-oil" bgColor="bg-main-oil">
<block slot="content">星油云站</block>
</cu-custom>
<view class="bg-img margin flex padding-lg radius align-center text-center" :style="'background-image: url('+mainURL+'login-bg.png)'">
<view class="padding-lg margin text-center text-lg text-white w100">
<text class="">
油站工作人员绑定油站
</text>
</view>
</view>
<view class="pannel">
<view class="bg-white margin padding radius ">
<view class="cu-form-group radius " @tap="routerTo('/pages/login/posLogin/posLogin')">
<view class="title mini-label text-black">已有账号登录</view>
<view class="cuIcon-right">
</view>
</view>
<!-- <view class="cu-form-group padding-top" @tap="routerTo('/pages/login/login')">
<view class="title mini-label text-black">首次认证登录</view>
<view class="cuIcon-right">
</view>
</view> -->
</view>
</view>
<view class="margin text-center">
<button class="cu-btn round bg-main-oil lg text-lg" open-type="getPhoneNumber"
@getphonenumber="decryptPhoneNumber">
<text class="cuIcon-weixin padding-right-xs"> </text>
<text>
微信用户一键登录
</text>
</button>
<!-- <button class="cu-btn round btnSize" open-type="getPhoneNumber"
@getphonenumber="decryptPhoneNumber">
<text class="cuIcon-weixin text-green lg"></text>
</button> -->
</view>
<view class="bottom-part">
<service-hotline />
</view>
</view>
</template>
<script>
import cloudSiteApi from '@/api/cloud-site.js'
import loginApi from '@/api/login.js'
import oilIdentityApi from '@/api/oil-identity.js'
import oliUserApi from '@/api/oli-user.js'
export default {
data() {
return {
count: 0,
baseURL: this.global.baseURL,
mainURL: this.global.mainURL,
forcedLogin: true,
oilSiteNo: '',
sessionKey:'',
outType:'0'
};
},
created() {
uni.showShareMenu()
// this.loginWeixin()
},
onLoad(option) {
if(option.type == '1'){
this.outType = option.type
uni.clearStorageSync()//清除缓存
}
// this.refreshLocation()
uni.login({ //微信登陆
provider: 'weixin',
success: (loginRes) => {
const code = loginRes.code
let _that = this
this.onceCode = code
oilIdentityApi.sendCode(this.onceCode).then(res => { //根据微信登陆返回的code获取unionid openid
if (res.code === 20000) {
this.sessionKey = res.data.sessionKey
uni.setStorageSync('openid', res.data.openId)
uni.setStorageSync('unionid', res.data.unionId)
if(_that.outType !== '1'){
this.autoLogin()
return
}
} else if (res.code == 1002) {
uni.showModal({
title: '微信登录失败提醒',
content: `${res.msg}如有疑问,请联系客服处理`
})
} else {
// console.log('res', res.code)
}
}).catch(err => {
uni.reLaunch({
url: '/BagAuth/pages/login/boforeLogin/boforeLogin',
fail: (err) => {
// console.log(err)
}
})
})
},
fail: err => {},
})
},
methods: {
decryptPhoneNumber(e) { // 通过用户授权获取到用户的手机号信息
if (e.detail.errMsg === 'getPhoneNumber:ok') {
const data1 = {
...e.detail,
sessionKey: this.sessionKey,
unionId: uni.getStorageSync('unionid'),
openId: uni.getStorageSync('openid'),
appId: 'wxaf56b8bae925ba19'
}
let url1 = 0 == this.TabCur ? 'bindLoginByPhonePersonal' : 'bindLoginByPhoneCompany'
this.bindLoginByPhone(data1, url1)
} else {
uni.showModal({
title: '您已拒绝授权手机号'
})
}
},
bindLoginByPhone(data, url) { //绑定用户手机号
if (this.count < 1) {
oilIdentityApi.bindLoginByPhonePersonal(data, url).then(res => {
if (res.code == 20000) {
this.loginSuccess(res)
}
})
}
},
loginSuccess(res) {//这里是绑定登录
if (res.data.authTokenDTO.loginFlag) {
this.setStored(res)
}
},
refreshLocation() {
uni.getLocation({
type: 'wgs84',
success: function(res) {
uni.setStorageSync('location', res)
}
});
},
routerTo(url) {
uni.navigateTo({
url: url
})
},
autoLogin() { //根据登录时获取到的 unionid openid 自动登录
let data={
unionId:uni.getStorageSync('unionid'),
openId:uni.getStorageSync('openid')
}
console.log(data,'这里是自动登录data')
oilIdentityApi.loginPersonal(data).then(res => { //微信自动登录
console.log(res,'这里是自动登录res')
if (res.data.authTokenDTO.loginFlag == true) {
this.setStored(res)
}else {
uni.showToast({
icon: 'none',
title: res.data.msg
})
}
})
},
// 存值本地 根据手机号获取其下的油站并且存储本地
setStored(res){
let user = res.data.authTokenDTO.loginUser,
unionId = uni.getStorageSync('unionid'),
openId = uni.getStorageSync('openid'),
phone = res.data.sysCustomerInfo.phone //获取该用户手机号
setTimeout(() => {
uni.showToast({
title: res.msg,
icon: 'none',
complete: (err) => {
// console.log(err)
}
})
}, 1000);
uni.setStorageSync('user', user)
uni.setStorage({
key: 'Authorization',
data: res.data.authTokenDTO.accessToken,
success: () => {
console.log('Authorization成功', res.data.authTokenDTO.accessToken)
}
})
uni.setStorage({
key: 'device',
data: openId,
success: () => {
console.log('deviceopenid', openId)
}
})
uni.setStorage({
key: 'unionId',
data:unionId,
success: () => {
console.log('deviceunionId', unionId)
}
})
uni.setStorageSync('userMenu', res.data.authTokenDTO.loginUser.roleMenus) //获取权限菜单列表
uni.setStorageSync('loginUser', { //存储用户基本信息 id,name,userphone
id: res.data.authTokenDTO.loginUser.id,
name: res.data.authTokenDTO.loginUser.name,
userPhone: res.data.authTokenDTO.loginUser.userPhone
})
//根据获取手机号 获取其号下的油站信息
console.log('这里是获取手机号登录')
oliUserApi.getByPhone(phone).then((res)=>{
console.log('这里是获取手机号登录',res)
if(res.code == 20000){
uni.setStorageSync('oliList',res.data)//本地存储当前用户其下有多少油站,用于用户登录进入时选择进入油站
// 获取信息存储本地
uni.setStorageSync('checkFirst',true) //进入前重置进入状态,判断用户是否是登录进入,用来做区分
uni.showToast({
title: res.msg,
icon: 'success',
duration: 3000
})
uni.reLaunch({
url: '/pages/index/index',
fail: (err) => {
console.log(err)
}
})
} else {
uni.showToast({
title: '未绑定油站请联系客服',
icon: 'none',
duration: 1500
})
}
})
},
nextStep() {
if (this.oilSiteNo) {
cloudSiteApi.verifyOilSite({
oilSiteCode: this.oilSiteNo
}).then(res => {
if (res.code === 20000) {
//历史遗留代码---------------------------------
// address: "安徽省合肥市庐阳区大杨镇"
// fuelLogo: null
// linkMan: "符红敏"
// oilSiteCode: "1591260293"
// oilSiteName: "杭州首鸿金融信息服务有限公司"
// phone: "15617055136"
//--------------------------------------------
uni.setStorage({
key: 'oilSiteCode',
data: this.oilSiteNo,
success: () => {
console.log('缓存成功')
}
})
uni.setStorage({
key: 'oilSite',
data: res.data,
success: () => {
console.log('缓存成功')
}
})
uni.navigateTo({
url: '/pages/Auth/Auth'
})
}
})
//历史遗留代码 不知道干嘛的 保不齐之后要用--------------
// uni.setStorage({
// key: 'oilSiteCode',
// data: this.oilSiteNo,
// success: () => {
// console.log('缓存成功')
// }
// })
// uni.navigateTo({
// url: '/pages/Auth/Auth'
// })
//--------------------------------------------------
} else {
uni.showToast({
title: '请输入云站号',
duration: 3000,
icon: 'none'
})
}
},
getMsg() {
uni.requestSubscribeMessage({
tmplIds: ['W5XD3NQVa6knC5jXHeWT8GS7q5CHrDUMY_sF79kLkKk'],
success: (res) => {
console.log(res)
}
})
},
getUserInfo({
detail
}) {
console.log('三方登录只演示登录api能力,暂未关联云端数据');
console.log('detail', detail)
if (detail.userInfo) {
this.loginLocal(detail.userInfo.nickName);
} else {
uni.showToast({
icon: 'none',
title: '登陆失败'
});
}
},
loginLocal(nickName) {
uni.setStorageSync('login_type', 'local')
uni.setStorageSync('username', nickName)
this.toMain(nickName);
},
toMain(userName) {
// this.login(userName)
/**
* 强制登录时使用reLaunch方式跳转过来
* 返回首页也使用reLaunch方式
*/
if (this.forcedLogin) {
uni.reLaunch({
url: '/pages/index/index',
success: () => {
console.log('success')
},
fail: err => {
console.log(err)
}
});
} else {
uni.navigateBack();
}
}
}
};
</script>
<style scoped>
.btnSize{
font-size:60rpx;
}
.page-content {
position: relative;
}
.logo {
min-width: 100%;
text-align: center;
}
.logo img {
width: 200upx;
height: 200rpx;
background-size: contain;
margin: auto;
}
.bottom-bg {
position: sticky;
bottom: 50upx;
}
</style>