301 lines
7.3 KiB
Vue
301 lines
7.3 KiB
Vue
<template>
|
||
<block>
|
||
<!-- #ifdef APP-PLUS || MP-TOUTIAO -->
|
||
<button v-if="type==1" :class="['sqbtn',cname]"
|
||
:style="[{width:w+'rpx',height:h+'rpx',lineHeight:h+'rpx',},sname]" @click="getUserInfo">{{t}}</button>
|
||
<!-- #endif -->
|
||
<!-- #ifdef MP-WEIXIN || MP-BAIDU || MP-ALIPAY -->
|
||
<button v-if="type==1" :class="['sqbtn',cname]"
|
||
:style="[{width:w+'rpx',height:h+'rpx',lineHeight:h+'rpx',},sname]"
|
||
:open-type="api.platform=='ali'?'getAuthorize':'getUserInfo'" @getuserinfo="mpGetUserInfo" scope='userInfo'
|
||
@getAuthorize="onGetAuthorize">{{t}}</button>
|
||
<!-- #endif -->
|
||
<!-- #ifdef MP-WEIXIN || MP-BAIDU -->
|
||
<button v-if="type==2" :class="['sqbtn',cname]"
|
||
:style="[{width:w+'rpx',height:h+'rpx',lineHeight:h+'rpx',},sname]" open-type="getPhoneNumber"
|
||
@getphonenumber="mpGetphonenumber">{{t}}</button>
|
||
<!-- #endif -->
|
||
<!-- 触发用户转发 -->
|
||
<!-- #ifndef H5 -->
|
||
<button @click="this.$emit('refresh')" hover-class='be' v-if="type==3" :class="['sqbtn',cname]"
|
||
:style="[{width:w+'rpx',height:h+'rpx',lineHeight:h+'rpx',},sname]" open-type="share">{{t}}</button>
|
||
<!-- #endif -->
|
||
<!-- #ifdef H5 -->
|
||
<button hover-class='be' v-if="type==3" :class="['sqbtn',cname]"
|
||
:style="[{width:w+'rpx',height:h+'rpx',lineHeight:h+'rpx',},sname]" @click="share">{{t}}</button>
|
||
<!-- #endif -->
|
||
<view v-if="type==4">
|
||
<mg-modal :ismr="true" v-model="show" width="600rpx" :z-index="3000">
|
||
<view class="bf bs30 sqtel t-c">
|
||
<view class="ptimg bsf ma">
|
||
<mg-img :src="system.icon"></mg-img>
|
||
</view>
|
||
<view class="f36 mt30 mb20 l-h1">{{system.name}}</view>
|
||
<view>绑定手机号后,将会获得更多权益哦!</view>
|
||
<!-- #ifdef MP-WEIXIN || MP-BAIDU|| MP-TOUTIAO -->
|
||
<button :disabled="loading" class="f30 telbtn cf" :style="{background:tColor}"
|
||
open-type="getPhoneNumber" @getphonenumber="mpGetphonenumber">立即绑定1</button>
|
||
<!-- #endif -->
|
||
<!-- #ifdef MP-ALIPAY -->
|
||
<button :disabled="loading" class="f30 telbtn cf" :style="{background:tColor}"
|
||
open-type="getAuthorize" scope='phoneNumber' @getAuthorize="getAlPhoneNumber">立即绑定</button>
|
||
<!-- #endif -->
|
||
</view>
|
||
</mg-modal>
|
||
</view>
|
||
</block>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
mapState,
|
||
mapMutations,
|
||
mapActions
|
||
} from 'vuex'
|
||
import mgModal from '@/components/common/modal.vue'
|
||
export default {
|
||
name: 'sq-btn',
|
||
components: {
|
||
mgModal,
|
||
},
|
||
props: {
|
||
cname: '',
|
||
sname: '',
|
||
w: '',
|
||
h: '',
|
||
t: '',
|
||
type: {
|
||
type: String,
|
||
default: '1',
|
||
}, //1用户信息,2手机号3瓜分红包
|
||
storeid: {
|
||
type: String,
|
||
default: '',
|
||
},
|
||
value: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
},
|
||
data() {
|
||
return {
|
||
loading: false,
|
||
}
|
||
},
|
||
computed: {
|
||
ptname() {
|
||
let t = ''
|
||
switch (this.api.platform) {
|
||
case 'mini':
|
||
t = '微信'
|
||
break;
|
||
case 'ali':
|
||
t = '支付宝'
|
||
break;
|
||
case 'baidu':
|
||
t = '百度'
|
||
break;
|
||
case 'toutiao':
|
||
t = '字节跳动'
|
||
break;
|
||
}
|
||
return t
|
||
},
|
||
show: {
|
||
get() {
|
||
return this.value;
|
||
},
|
||
set(newVal) {
|
||
this.$emit("input", newVal)
|
||
}
|
||
},
|
||
},
|
||
watch: {
|
||
// sname: {
|
||
// handler(newVal) {
|
||
// console.log('newVal', newVal)
|
||
// },
|
||
// immediate: true
|
||
// },
|
||
},
|
||
methods: {
|
||
share() {
|
||
uni.showModal({
|
||
title: '提示',
|
||
content: '点击右上角分享',
|
||
showCancel: false,
|
||
confirmText: '我知道了'
|
||
})
|
||
},
|
||
onGetAuthorize(res) {
|
||
// console.log('onGetAuthorize', res)
|
||
my.getOpenUserInfo({
|
||
fail: (res) => {},
|
||
success: (res) => {
|
||
// console.log('my.getOpenUserInfo', JSON.parse(res.response).response)
|
||
let result = JSON.parse(res.response).response
|
||
this.refreshUser({
|
||
storeId: this.storeid,
|
||
portrait: result.avatar,
|
||
userName: result.nickName,
|
||
userId: this.uId,
|
||
}).then(res => {
|
||
this.$emit('refresh')
|
||
})
|
||
}
|
||
});
|
||
},
|
||
getAlPhoneNumber() {
|
||
my.getPhoneNumber({
|
||
success: res => {
|
||
var resData = JSON.parse(res.response);
|
||
this.util.request({
|
||
url: this.api.jm,
|
||
method: 'POST',
|
||
data: {
|
||
data: resData.response
|
||
}
|
||
}).then(res => {
|
||
console.log('jm res', res)
|
||
if (res.data) {
|
||
this.show = false
|
||
if (this.type == 4) {
|
||
this.util.message('绑定成功', 1, 1000)
|
||
} else {
|
||
this.$emit('refresh', res.data)
|
||
}
|
||
this.refreshUser({
|
||
nomask: 1,
|
||
get: 1,
|
||
now: 1,
|
||
})
|
||
}
|
||
})
|
||
console.log('getAlPhoneNumber success', resData)
|
||
},
|
||
fail: res => {
|
||
console.log('getAlPhoneNumber fail', res)
|
||
}
|
||
})
|
||
},
|
||
// 获取用户信息 API 在小程序可直接使用,在 5+App 里面需要先登录才能调用
|
||
getUserInfo() {
|
||
uni.getUserInfo({
|
||
success: (result) => {
|
||
// #ifdef MP-TOUTIAO
|
||
let portrait = result.userInfo.avatarUrl,
|
||
userName = result.userInfo.nickName,
|
||
userId = this.uId
|
||
// #endif
|
||
this.refreshUser({
|
||
storeId: this.storeid,
|
||
portrait,
|
||
userName,
|
||
userId
|
||
}).then(res => {
|
||
this.$emit('refresh')
|
||
})
|
||
console.log('getUserInfo success', result);
|
||
},
|
||
fail: (error) => {
|
||
console.log('getUserInfo fail', error);
|
||
uni.showModal({
|
||
title: '温馨提示',
|
||
content: '获取头像等信息失败',
|
||
showCancel: false
|
||
});
|
||
}
|
||
});
|
||
},
|
||
mpGetUserInfo(result) {
|
||
console.log('mpGetUserInfo', result);
|
||
if (result.detail.errMsg == 'getUserInfo:ok') {
|
||
let portrait = result.detail.userInfo.avatarUrl,
|
||
userName = result.detail.userInfo.nickName,
|
||
userId = this.uId
|
||
this.refreshUser({
|
||
storeId: this.storeid,
|
||
portrait,
|
||
userName,
|
||
userId
|
||
}).then(res => {
|
||
this.$emit('refresh')
|
||
})
|
||
console.log(portrait, userName, userId)
|
||
} else {
|
||
uni.showModal({
|
||
title: '温馨提示',
|
||
content: '获取头像等信息失败',
|
||
showCancel: false
|
||
});
|
||
return;
|
||
}
|
||
},
|
||
mpGetphonenumber(result) {
|
||
this.loading = true
|
||
console.log('mpGetphonenumber', result);
|
||
if (result.detail.errMsg == 'getPhoneNumber:ok') {
|
||
let sessionKey = getApp().globalData.session_key,
|
||
data = result.detail.encryptedData,
|
||
iv = result.detail.iv,
|
||
userId = this.uId
|
||
this.util.request({
|
||
url: this.api.jm,
|
||
method: 'POST',
|
||
data: {
|
||
userId,
|
||
sessionKey,
|
||
data,
|
||
iv
|
||
}
|
||
}).then(res => {
|
||
this.loading = false
|
||
if (res.data) {
|
||
this.show = false
|
||
if (this.type == 4) {
|
||
this.util.message('绑定成功', 1, 1000)
|
||
} else {
|
||
this.$emit('refresh', res.data)
|
||
}
|
||
this.refreshUser({
|
||
nomask: 1,
|
||
get: 1,
|
||
now: 1,
|
||
})
|
||
}
|
||
console.log(res)
|
||
}).catch(() => {
|
||
this.loading = false
|
||
})
|
||
console.log(sessionKey, data, iv)
|
||
} else {
|
||
this.loading = false
|
||
uni.showModal({
|
||
title: '温馨提示',
|
||
content: '授权手机号失败',
|
||
showCancel: false
|
||
});
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style scoped lang='scss'>
|
||
.sqtel {
|
||
padding: 70rpx 40rpx;
|
||
}
|
||
|
||
.ptimg {
|
||
width: 136rpx;
|
||
height: 136rpx;
|
||
}
|
||
|
||
.telbtn {
|
||
line-height: 2.8;
|
||
margin-top: 70rpx;
|
||
}
|
||
|
||
/* #ifdef MP-ALIPAY*/
|
||
/* #endif */
|
||
</style> |