xinelu-applet-ui/pagesB/login/login.vue
2024-06-25 18:25:50 +08:00

246 lines
6.2 KiB
Vue

<template>
<view class="app">
<image :src="require('@/pagesC/images/logo.png')" mode=""></image>
<!-- <view class="text">
新医路健康服务平台
</view> -->
<button class="loginbtn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumberp"
v-if="radio==2">手机号快捷登录</button>
<button class="loginbtn" v-else @click="nologin">手机号快捷登录</button>
<view class="radio-content">
<view class="radio-right" @tap="changeRadio">
<view class="radio" :class="radio == 2 ? 'radio-default':''">
<view :class="radio == 2 ? 'radio-active':''"></view>
</view>
</view>
<view class="agreement">我已阅读并同意<text @tap='maskshow=true'
style="color: #000000;border-bottom: 1rpx solid #000000;">用户协议与隐私政策</text>
</view>
</view>
<!-- //用户协议 -->
<u-mask :show="maskshow" class='mask' @click='maskshow=false'>
<view class="Agreement">
<view class="title">
用户协议与隐私政策
</view>
<scroll-view scroll-y="true" class="scroll-Y" style="">
<contenttext v-if="maskshow"></contenttext>
</scroll-view>
<view class="cancel" @tap='maskshow=false'>
取消
</view>
<view class="determine" @tap='tapradio'>
确定并同意
</view>
</view>
</u-mask>
<u-toast ref="uToast" />
</view>
</template>
<script>
import {
appLoginpwd,
getWeChatUser,
isRegistered,
} from '../../api/pages/login/index.js'
import {
getCurrentUser,
wxSportDecrypt
} from '@/api/pages/homepage/homepage.js'
import {
createMobileToken
} from '@/api/pages/login/index.js'
import {
mapMutations
} from "vuex";
import contenttext from '../text.vue';
export default {
components: {
contenttext,
},
data() {
return {
phonecode: undefined,
timer: undefined,
cityCode: null,
SOCKETURL: '',
radio: 1,
maskshow: false,
};
},
onShow() {
if (!uni.getStorageSync('location') || !uni.getStorageSync('region')) {
this.getAddress()
}
this.sportinfo();
this.phonecode = undefined
},
methods: {
sportinfo() {
wx.getWeRunData({
success: function(res) {}
});
},
nologin() {
this.$refs.uToast.show({
title: '请先阅读并同意《用户协议与隐私政策》',
type: 'error',
duration: '1500',
})
},
tapradio() {
this.radio = 2;
this.maskshow = false;
},
changeRadio() {
if (this.radio == 1) {
this.radio = 2;
} else {
this.radio = 1;
}
},
...mapMutations(['scoket']),
//获取当前位置
getAddress() {
let that = this;
uni.getLocation({
type: 'wgs84',
success: (res) => {
let location = res.latitude + ',' + res.longitude
//调用逆解析接口
uni.request({
url: 'https://apis.map.qq.com/ws/geocoder/v1/?location=location', //腾讯官方逆解析接口,可直接复制
data: {
location: location,
'key': "7Y7BZ-PVXRA-IPYKT-C6YKF-YS3VF-LMFWJ", //自己申请的Key
},
method: "GET",
success(res) {
if (!res.data.result) {
uni.setStorageSync("region", 2)
uni.setStorageSync("location", '东营市')
} else {
var address = res.data.result.address_component.city
if (address == '德州市') {
uni.setStorageSync("region", 1)
} else if (address == '东营市') {
uni.setStorageSync("region", 2)
} else if (address == '济南市') {
uni.setStorageSync("region", 3)
}
uni.setStorageSync('location', res.data.result.address_component
.city)
}
},
fail: res => {
console.log(res.errMsg, '解析失败返回的错误信息');
}
})
},
//失败
fail: (res) => {
uni.showToast({
icon: 'none',
title: '获取地址失败,请打开定位',
})
}
})
},
getPhoneNumberp(val) {
let that = this;
if (val.detail.code) {
that.phonecode = val.detail.code
that.login();
}
},
login() {
let that = this;
wx.login({
provider: 'weixin',
success: function(loginRes) {
isRegistered(loginRes.code, that.phonecode).then(resp => {
if (!resp.data) {
that.$refs.uToast.show({
title: '登录失败',
type: 'error',
})
return
}
if (resp.data.openid && resp.data.phone) {
uni.setStorageSync("openid", resp.data.openid)
uni.setStorageSync("phone", resp.data.phone)
}
if (resp.data.code == '0') {
that.$refs.uToast.show({
title: '未注册,请先注册',
type: 'error',
duration: '1500',
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(() => {
uni.redirectTo({
url: '/pagesB/register/register',
})
}, 1500)
} else if (resp.data.code == '2') {
that.$refs.uToast.show({
title: '已被其他人注册',
type: 'error',
duration: '1500',
})
} else if (resp.data.code == '1') {
getCurrentUser(resp.data.openid).then(res => {
if (res.code == 200) {
if (res.data) {
uni.setStorageSync('patientId', res.data.id);
uni.setStorageSync('userinfo', res.data);
that.scoket();
}
that.$refs.uToast.show({
title: '登录成功',
type: 'success',
back: 1
})
} else {
that.$refs.uToast.show({
title: '登录失败',
type: 'error',
})
}
})
} else {
that.$refs.uToast.show({
title: '登录失败',
type: 'error',
})
}
})
}
});
},
}, //1.分享给朋友
onShareAppMessage(res) {
let pages = getCurrentPages();
let url = pages[pages.length - 1].$page.fullPath
return {
title: '新医路健康服务平台',
path: url,
}
},
//2.分享到朋友圈
onShareTimeline(res) {
let pages = getCurrentPages();
let url = pages[pages.length - 1].$page.fullPath
return {
title: '新医路健康服务平台',
path: url,
}
},
}
</script>
<style lang="scss">
@import "./login.scss";
</style>