|
@@ -1,37 +1,155 @@
|
|
|
<template>
|
|
|
- <view class="content">
|
|
|
- <view class="link-demo">
|
|
|
- <u-link :color="$u.color['primary']" :under-line="true" href="http://www.uviewui.com">Link超链接组件演示</u-link>
|
|
|
+ <view>
|
|
|
+ <u-navbar :is-back="false" title=" " :border-bottom="false">
|
|
|
+ <view class="u-flex u-row-right" style="width: 100%;">
|
|
|
+ <view class="camera u-flex u-row-center">
|
|
|
+ <u-icon name="camera-fill" color="#000000" size="48"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </u-navbar>
|
|
|
+ <view class="u-flex user-box u-p-l-30 u-p-r-20 u-p-b-30">
|
|
|
+ <view class="u-m-r-10" @click="login($store.state.vuex_hasLogin)">
|
|
|
+ <u-avatar :src="userInfo.headImgUrl || userInfo.avatar||pic" size="140"></u-avatar>
|
|
|
+ </view>
|
|
|
+ <view class="u-flex-1" @click="login($store.state.vuex_hasLogin)">
|
|
|
+ <view class="u-font-18 u-p-b-20">{{ userInfo.nickname || userInfo.userName || '请登录' }}</view>
|
|
|
+ <view class="u-font-14 u-tips-color">手机号:{{ userInfo.mobile || '暂无' }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="u-m-l-10 u-p-10">
|
|
|
+ <u-icon name="arrow-right" color="#969799" size="28"></u-icon>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
+
|
|
|
+ <view class="u-m-t-20">
|
|
|
+ <u-cell-group>
|
|
|
+ <u-cell-item icon="star" title="收藏"></u-cell-item>
|
|
|
+ <u-cell-item icon="photo" title="相册"></u-cell-item>
|
|
|
+ <u-cell-item icon="coupon" title="卡券"></u-cell-item>
|
|
|
+ <u-cell-item icon="heart" title="关注"></u-cell-item>
|
|
|
+ </u-cell-group>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="u-m-t-20">
|
|
|
+ <u-cell-group>
|
|
|
+ <u-cell-item icon="star" title="手机号登录" @click="openPage('/pages/center/phoneLogin/phoneLogin')"></u-cell-item>
|
|
|
+ <u-cell-item icon="star" title="微信支付" @click="handlewxpay"></u-cell-item>
|
|
|
+ </u-cell-group>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <u-toast ref="uToast" />
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+ import getUrlParams from "../../utils/getUrlParams.js";
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
- title: 'Hello'
|
|
|
+ pic:'https://uviewui.com/common/logo.png',
|
|
|
+ userInfo:[],
|
|
|
+ code:null,
|
|
|
+
|
|
|
}
|
|
|
},
|
|
|
onLoad() {
|
|
|
+ if(this.$store.state.vuex_hasLogin){
|
|
|
+ this.userInfo = this.$store.state.vuex_user;
|
|
|
+ if(this.$store.state.vuex_wxinfo){
|
|
|
+ this.userInfo = Object.assign(this.userInfo,this.$store.state.vuex_wxinfo);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ this.userInfo = [];
|
|
|
+ };
|
|
|
+ let locationLocaturl = window.location.search;
|
|
|
+ this.code = getUrlParams(locationLocaturl,"code");
|
|
|
+ if(this.code&&!this.$store.state.vuex_wxinfo.openId){this.handleGetWXInfo(this.code)};
|
|
|
+
|
|
|
|
|
|
},
|
|
|
methods: {
|
|
|
+ openPage(path) {
|
|
|
+ console.log('path',path);
|
|
|
+ this.$u.route({
|
|
|
+ url: path
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //登录判断
|
|
|
+ login(status){
|
|
|
+ if(!status){
|
|
|
+ console.log('config',this.config);
|
|
|
+ window.location.replace(this.config.loginUrl)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getCode () {
|
|
|
+ var local = window.location.href // 获取页面url
|
|
|
+ let locationLocaturl = window.location.search;
|
|
|
+ this.code = getUrlParams(locationLocaturl,"code"); // 截取code
|
|
|
+ if (this.code == null || this.code === '') { // 如果没有code,则去请求
|
|
|
+ window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`
|
|
|
+ } else {
|
|
|
+ // this.handleGetWXInfo(this.code) //把code传给后台获取用户信息
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleGetWXInfo (code) { // 通过code获取 openId等用户信息,/api/user/wechat/login 为后台接口
|
|
|
+ let _this = this
|
|
|
+ this.$u.api.getWXInfo(code).then((res) => {
|
|
|
+ if (res.code === 200 ) {
|
|
|
+ this.$u.vuex('vuex_wxinfo',res.data);
|
|
|
+ // 继续支付
|
|
|
+ }
|
|
|
+ }).catch((err) => {
|
|
|
+ this.$refs.uToast.show({
|
|
|
+ title: err.msg,
|
|
|
+ type: 'error',
|
|
|
+ });
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handlewxpay(){
|
|
|
+ if(!this.$store.state.vuex_wxinfo.openId){ // 如果微信openId,则需用code去后台获取
|
|
|
+ this.$refs.uToast.show({
|
|
|
+ title: '请登录后重试!',
|
|
|
+ type: 'info',
|
|
|
+ // url: '/pages/user/index'
|
|
|
+ });
|
|
|
+ this.getCode();
|
|
|
+ } else {
|
|
|
+ // 别的业务逻辑
|
|
|
+ this.getWXPay();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getWXPay(id){
|
|
|
+ let params = {
|
|
|
+ orderId:id||new Date().getTime(),
|
|
|
+ openid:this.$store.state.vuex_wxinfo.openId,
|
|
|
+ tradeType:"test"
|
|
|
+ };
|
|
|
+ await this.$wxApi.config();
|
|
|
+ this.$pay.wxPay(params).then(res =>{
|
|
|
+ console.log('wxPay',res.code);
|
|
|
+ if(res.code == 0){
|
|
|
+ // 成功
|
|
|
+ // uni.reLaunch({
|
|
|
+ // url: '/pages/buySuccess/buySuccess?orderId=' + params.orderId
|
|
|
+ // })
|
|
|
+ }else if(res.code == 1){
|
|
|
+ // 取消
|
|
|
+ // uni.redirectTo({
|
|
|
+ // url: '/pages/userCenter/myOrder/myOrder'
|
|
|
+ // })
|
|
|
+ }else if(res.code == 2){
|
|
|
+ this.$refs.uToast.show({
|
|
|
+ title: '支付失败,请检查!',
|
|
|
+ type: 'error',
|
|
|
+ // url: '/pages/user/index'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
- .content {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- padding: 40rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .link-demo {
|
|
|
- margin-top: 80rpx;
|
|
|
- }
|
|
|
+
|
|
|
</style>
|