gcz vor 1 Jahr
Ursprung
Commit
03a282e73d
9 geänderte Dateien mit 916 neuen und 8 gelöschten Zeilen
  1. 1 0
      App.vue
  2. 1 0
      js_sdk/jweixin-1.4.0.js
  3. 6 0
      main.js
  4. 1 0
      manifest.json
  5. 15 8
      pages.json
  6. 550 0
      pages/login/loginh5.vue
  7. 40 0
      pay.js
  8. 118 0
      utils/axios.js
  9. 184 0
      wxapi.js

+ 1 - 0
App.vue

@@ -25,6 +25,7 @@
 			// #endif
 		 
 			// console.log('this.globalData==========',this.globalData)
+			this.$wxApi.config()
 		},
 		onShow: function() {
 			// console.log('App Show')

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
js_sdk/jweixin-1.4.0.js


+ 6 - 0
main.js

@@ -1,5 +1,11 @@
 import App from './App'
 
+import $wxApi from "./wxapi.js";
+Vue.prototype.$wxApi = $wxApi;
+//微信支付封装
+// import $pay from "./pay.js";
+// Vue.prototype.$pay = $pay
+
 // #ifndef VUE3
 import Vue from 'vue'
 Vue.config.productionTip = false

+ 1 - 0
manifest.json

@@ -84,6 +84,7 @@
         "devServer" : {
             "proxy" : {
                 "/api" : {
+					"disableHostCheck" : true,
                     "target" : "https://xusfoodapi.hw.hongweisoft.com/appapi/app", //请求的目标域名
                     "changeOrigin" : true,
                     "secure" : false,

+ 15 - 8
pages.json

@@ -1,14 +1,21 @@
 {
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		// {
+		// 	"path": "pages/index/index",
+		// 	"style": {
+		// 		"navigationBarTitleText": "首页",
+		// 		"navigationStyle": "custom"
+		// 	}
+		// },
+		// {
+		// 	"path": "pages/login/login",
+		// 	"style": {
+		// 		"navigationBarTitleText": "登录",
+		// 		"navigationStyle": "custom"
+		// 	}
+		// },
 		{
-			"path": "pages/index/index",
-			"style": {
-				"navigationBarTitleText": "首页",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/login/login",
+			"path": "pages/login/loginh5",
 			"style": {
 				"navigationBarTitleText": "登录",
 				"navigationStyle": "custom"

+ 550 - 0
pages/login/loginh5.vue

@@ -0,0 +1,550 @@
+<template>
+	<view class="body" :style="{height:screenHeight}">
+		<image class="login-bg" :src="staticUrl+'/img/login-bg.png'" mode="widthFix"></image>
+		<u-toast ref="uToast"></u-toast>
+		<view style="height: 40%;position: relative;z-index: 10;">
+			<view class="logo-wrap">
+				<img :src="logoSrc" class="logo" alt="">
+				<!-- <img :src="sitename" class="sitename" alt=""> -->
+<!-- 				<u--image :src="logoSrc" width="200rpx" height="200rpx"></u--image>
+				<u--image :src="sitename" width="460rpx" height="142rpx"></u--image> -->
+			</view>
+			<!-- <u-button text="getUserProfile" type="success" :hairline="false" throttleTime="2000" shape="circle" open-type="getUserProfile"
+				@click="getUserProfile"></u-button> -->
+			<!-- <u-button v-if="loginBtn" text="手机号快捷登录" type="success" :hairline="false" throttleTime="2000" shape="circle" 
+				@click="openAuth"></u-button> -->
+			<view class="btn-wrap" style="margin:94rpx">
+				<!-- <u-button
+					v-if="loginBtn&&checked.length>0" 
+					:hair-line='false' 
+					type="error" 
+					color="#ED0000"
+					throttleTime="2000" 
+					shape="circle" 
+					open-type="getPhoneNumber" 
+					@getphonenumber="authPhone">登录
+				</u-button> -->
+				<u-button
+					v-if="loginBtn&&checked.length>0" 
+					:hair-line='false' 
+					type="error" 
+					color="#ED0000"
+					throttleTime="2000" 
+					shape="circle" 
+					open-type="getUserInfo" 
+					@getphonenumber="wxLogin">登录
+				</u-button>
+				<u-button
+					v-else
+					:hair-line='false' 
+					type="error" 
+					color="#ED0000"
+					@click="disabledClick"
+					shape="circle">登录
+				</u-button>
+			</view>
+			<view class="rule-wrap u-flex u-flex-wrap u-row-center">
+				<u-checkbox-group v-model="checked" @change="checkboxChange" placement="row">
+					<u-checkbox activeColor="#1677FF" name="同意" labelSize="24rpx" shape="circle" label="我已阅读并同意"></u-checkbox>
+				</u-checkbox-group>
+				<text class="link" @click="$u.route('/pages/login/regulation',{regulationName:'用户服务协议',type:1})">《用户服务协议》</text>
+				和<text class="link" @click="$u.route('/pages/login/regulation',{regulationName:'用户隐私政策',type:2})">《用户隐私政策》</text>
+			</view>
+		</view>
+		
+		<!-- 微信获取手机号弹窗 -->
+	  <!-- <u-modal :show="showAuthorizePhone" :show-title="false"
+				 :show-confirm-button="false">
+			<view class="slot-content">
+				<div class="auth-card">
+					<div class="img">
+						<img class="avatar-img" :src="logoSrc" mode="widthFix">
+					</div>
+					<div class="title">{{bname}}</div>
+					<div class="content">申请获得您的手机号</div>
+				</div>
+				<div class="auth-btncard u-flex u-row-between">
+					<div class="btn-unok"><u-button :hair-line='false' :custom-style="customStyleUnOk" @click="showAuthorizePhone=false">拒绝</u-button></div>
+					<div class="btn-ok"><u-button :hair-line='false' :custom-style="customStyleOk" open-type="getPhoneNumber" @getphonenumber="authPhone"> 允许</u-button></div>
+				</div>
+			</view>
+		</u-modal> -->
+		<!-- 微信获取用户头像昵称弹窗 -->
+		<!-- <u-modal :show="showAuthorizeUser" :show-title="false"
+		                 :show-confirm-button="false">
+		    <view class="slot-content">
+		        <div class="auth-card">
+		            <div class="img">
+		                <img class="avatar-img"
+		                     :src="logoSrc"
+		                     mode="widthFix">
+		            </div>
+		            <div class="title">{{bname}}</div>
+		            <div class="content">邀请您补全个人信息<br></br>(昵称、头像)</div>
+		        <div style="margin-left: 100rpx;margin-right: 100rpx">
+		            <u-form :model="user" ref="uForm">
+		                <u-form-item label="头像">
+		                    <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar" slot="right">
+		                        <image class="avatar" :src="user.avatar"></image>
+		                    </button>
+		                </u-form-item>
+		                <u-form-item label="昵称">
+		                    <input type="nickname" class="weui-input u-border-bottom" @blur="nickNameInput" placeholder="请输入昵称"/>
+		                </u-form-item>
+		            </u-form>
+		        </div>
+		        </div>
+		    <div class="auth-btncard">
+		        <div class="btn-unok"><u-button :hair-line='false' :custom-style="customStyleUnOk" @click="showAuthorizeUser=false"> 拒绝</u-button></div>
+		        <div class="btn-ok"><u-button :hair-line='false' :custom-style="customStyleOk" @click="authUser"> 允许</u-button></div>
+		    </div>
+		    </view>
+		</u-modal> -->
+
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				staticUrl:this.$commonConfig.staticUrl,
+				checked:false,
+				checkboxVal:null,
+				loginBtn:true,
+				bname:'旭烁集团',
+				//屏幕高度
+				screenHeight: "",
+				logoSrc: "/static/logo.png",
+				// sitename:"/static/sitename.png",
+				miniappLoginInfo:null,
+				hasUserInfo:false,
+				userInfo: null,
+				user:{   
+					avatar:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
+					name:'',
+					mobile:'',
+				},
+				code: '',
+				showAuthorizeUser: false,
+				showAuthorizePhone: false,
+				customStyleUnOk:{},
+				customStyleOk:{'margin-left': '30px',color:'#00A447'},
+				backUrl:null,
+				scene:'',
+			};
+		},
+		onLoad() {
+			let that = this;
+			//获取屏幕高度,我的项目再store里已经取到了
+			uni.getSystemInfo({
+				success: (res) => {
+					this.screenHeight = res.windowHeight + "px"
+				}
+			});
+			uni.getStorage({
+				key: 'backUrl',
+				success: function (res) {
+					that.backUrl = '/'+res.data;
+				}
+			});
+		},
+		onShow() {
+			// uni.showLoading({
+			// 	mask:true
+			// });
+			this.getChatCode();
+			// setTimeout(() => {
+			// 	this.openAuth();
+			// 	// this.showAuthorizeUser = true //弹出头像用户名
+			// }, 100);
+			let userInfo = uni.getStorageSync('userInfo');
+			this.user.name = userInfo.name;
+		},
+		methods: {
+			openAuth(){
+				this.showAuthorizePhone = true;
+				// let userInfo = uni.getStorageSync('userInfo')
+				// console.log('userInfo>>>>>>>>>>>>>>>>>>>>>',userInfo)
+				// if(userInfo){
+				// 	this.showAuthorizeUser = true;
+				// }else{
+				// 	this.showAuthorizePhone = true;
+				// }
+				// uni.hideLoading()
+			},
+			getChatCode() {
+				//因为作用域先提前赋值
+				var that = this
+				//使用uni封装的一键登录方法
+				uni.login({
+					provider: 'weixin',
+					success(res) {
+						//成功后带着微信登录返回的code去请求我们的后端
+						that.code = res.code;
+						// console.log('code',that.code);
+					}
+				})
+			},
+			getUserProfile() {
+				var that = this
+				uni.getUserProfile({
+					desc: "获取你的昵称、头像",
+					success(res) {
+						console.log('getUserProfile success',res);
+						if (res.errMsg == "getUserProfile:ok" && res.userInfo != undefined) {
+							//我用store来存储一些数据,你可以放到你要放的地方
+							console.log(' res.userInfo', res.userInfo);
+							// that.$u.vuex('wx_user_info.nickName', res.userInfo.nickName);
+							// that.$u.vuex('wx_user_info.avatarUrl', res.userInfo.avatarUrl);
+							// that.getChatCode()
+						}
+					},
+					complete(res) {
+						// console.log('complete',res);
+					}
+				})
+			},
+			//获取昵称输入内容
+			// userNameInput(e){
+			//     this.user.nickName = e.detail.value
+			// },
+			onChooseAvatar(e) {
+				console.log('头像信息》')
+				console.log(e)
+				this.user.avatar = e.detail.avatarUrl;
+			},
+			async authPhone(e){
+				console.log('checked',this.checked);
+				console.log('detail',e.detail);
+				let errMsg = e.detail?.errMsg;
+				if(errMsg!='getPhoneNumber:ok'){
+					uni.showToast({
+						title:'您已拒绝使用!',
+						icon:'error'
+					})
+					return					
+				}
+				this.showAuthorizePhone=false;
+				this.loginBtn = false;
+				let _this = this;
+				
+				await uni.getStorage({
+					key: 'scene',
+					success: function (res) {
+						// console.log('scene====',res.data);
+						if(res.data){
+							_this.scene = res.data
+						}
+					}
+				});
+				
+				// this.getMobile()
+				let mobileData = await this.$u.api.getMobile({code:e.detail.code});
+				// console.log('mobileData',mobileData);
+				let mobile = mobileData.data?.mobile;
+				if(mobile){
+					this.mobile = mobile
+				}else{
+					// uni.showToast({
+					// 	title: '没有获取手机号',
+					// 	icon:'error',
+					// 	duration: 2000
+					// });
+				}
+				this.login(e);
+				this.loginBtn = true;
+			},
+			async login(e){
+				// console.log('e',e);
+				let _this = this;
+				let wxinfo = await this.$u.api.wxinfo({code:this.code});
+				let {openid,sessionKey,unionid} = wxinfo.data;
+				
+				_this.$u.vuex('vuex_wechatOpenid', openid);
+				const { errMsg, iv, encryptedData } = e.detail;
+				if (errMsg !== 'getPhoneNumber:ok') return;
+				let data = {
+					code: this.code,
+					encryptedData: encryptedData,
+					ivStr: iv,
+					openId:openid,
+					sessionKey,
+					sourceType:1,
+					mobile:this.mobile
+				}
+				if(this.scene&&this.scene!='undefined'){
+					await this.$u.api.uncompress({scene:this.scene}).then(res=>{
+						data.agentId = res.data.agentId;
+						data.agentShopId = res.data.agentShopId;
+						data.sourceType = 2;
+						// console.log('uncompress',res.data);
+					}).catch(err=>{
+						console.log('uncompress',err);
+					})
+				}
+				// console.log('----------登陆中',data)
+				this.$u.api.login(data).then(res=>{
+					// console.log('微信登录返回结果========',res.data)
+					_this.$u.vuex('vuex_user_info', res.data);
+					// _this.$u.vuex('vuex_member_info',res.data);
+					// uni.setStorageSync('userInfo', res.data)
+					this.showAuthorizePhone = false;
+					uni.removeStorage({
+						key:'scene'
+					});
+					// console.log('res.data.userid',res.data.userid);
+					this.getMemberInfo(res.data.userId);
+					
+				}).catch(err=>{
+					console.log('err',err);
+					this.showAuthorizePhone = false
+				})
+			},
+			getMemberInfo(userid){
+				// console.log('userid',userid);
+				let _this = this;
+				this.$u.api.memberInfo({id:userid}).then(res=> {
+					if(res.code ===200) {
+						_this.userInfo = res.data;
+						this.$u.vuex('vuex_member_info', res.data);
+						// this.$u.vuex('vuex_member_info.avatar', 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0');
+						if(!res.data.name){
+							this.$u.vuex('vuex_member_info.name', '微信用户');
+							this.updateMemberInfo();
+						}else{
+							this.goBack();
+						}
+						// 下面需要获取微信头像和昵称
+						// if(res.data.name){
+						// 	_this.hasUserInfo = true;
+						// 	_this.userInfo = res.data;
+						// 	uni.navigateTo({
+						// 		url: '/pages/index/index'
+						// 	})
+						// }else{
+						// 	_this.showAuthorizeUser = true
+						// 	// uni.hideLoading()
+						// }
+						// console.log('---------登陆成功')
+						
+					}
+				})
+			},
+			goBack(){
+				let url = this.backUrl&&this.backUrl.length>0?this.backUrl:'/pages/index/index';
+				// console.log('url',url);
+				uni.removeStorage({
+					key: 'backUrl',
+					success: function (res) {
+						// console.log('success');
+						uni.reLaunch({url: decodeURIComponent(url)});
+					}
+				});
+			},
+			updateMemberInfo(){
+				let params ={
+					id:this.userInfo.id,
+					// avatar:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
+					name:'微信用户'
+				};
+				this.$u.api.updateMemberInfo(params).then(res=>{
+					this.goBack();
+				}).catch(err=>{
+					console.log('err',err);
+				})
+			},
+			authUser(){
+				let userInfo = this.vuex_user_info || {};
+				// console.log('this===',this);
+				// console.log('vuex_user_info===',this.vuex_user_info);
+				// console.log('userInfo',userInfo);
+				// console.log('this.user',this.user);
+				if(!this.user.name){
+					uni.showToast({
+						title: '请输入您的昵称!',
+						icon:'error',
+						duration: 2000
+					});
+					return;
+				}
+				userInfo.avatar = this.user.avatar;
+				userInfo.name =  this.user.name;
+				this.userInfo = userInfo;
+				uni.setStorageSync('userInfo', userInfo)
+				this.user.id = userInfo.userid;
+				let param = {
+					id:this.user.id,
+					name:this.user.name,
+					avatar:this.user.avatar
+				}
+				this.$u.api.updateMemberInfo(param).then(res=>{
+					this.hasUserInfo = true;
+					this.showAuthorizeUser = false;
+					uni.navigateTo({
+						url: '/pages/index/index'
+					})
+				}).catch(err=>{
+					console.log('err',err);
+				})
+			},
+			nickNameInput(e){
+				this.user.name = e.detail.value
+			},
+			checkboxChange(e){
+				this.checkboxVal = e[0];
+			},
+			disabledClick(){
+				// console.log('checked',this.checked?.length);
+				// console.log('loginBtn',this.loginBtn);
+				if(!this.checked||this.checked?.length<=0){
+					uni.showToast({
+						title:'请先同意使用条款!',
+						icon:'none'
+					})
+				}else if(this.loginBtn==false){
+					uni.showToast({
+						title:'登录中!',
+						icon:'none'
+					})
+				}
+			},
+			wxLogin(e){
+				let serf = this
+				let userinfo = e.detail.userInfo
+				uni.login({
+					provider:'weixin',
+					success(res){
+						let code = res.code
+						let params = {
+							code:code,
+							sex:userinfo.gender,
+							headImgUrl:userinfo.avatarUrl,
+							nickname:userinfo.nickName
+						}
+						serf.$u.api.login(params).then(res=>{
+							serf.setLogin(res.retBody)
+							if(serf.backUrl == '' || !serf.backUrl){
+								uni.switchTab({
+									url: '/pages/userCenter/userCenter'
+								})
+							}else{
+								uni.navigateTo({
+									url:serf.backUrl
+								})
+							}
+						}).catch(err=>{
+							console.log('login',err);
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.login-bg{
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	width: 100%;
+}
+.body {
+	background-color: #fff;
+	box-sizing: border-box;
+	text-align: center;
+	.logo-wrap {
+		padding-top: 248rpx;
+		img{
+			display: block;
+			margin: 0 auto;
+		}
+		.logo{
+			width: 306rpx;
+			height: 258rpx;
+		}
+		.sitename{
+			width: 460rpx;
+			height: 142rpx;
+		}
+	}
+}
+
+// 
+
+.auth-btncard{
+	margin-top: 20px;
+    .btn-unok{
+        width: 45%;
+        float: left;
+    }
+    .btn-ok{
+        width: 45%;
+        float: left;
+        margin: 0;
+        padding: 0;
+        border: 0px solid transparent;  //自定义边框
+        outline: none;    //消除默认点击蓝色边框效果
+        u-button{
+			font-size: 16px;
+            margin: 0;
+            padding: 0;
+            // border: 0px solid transparent;  //自定义边框
+            outline: none;    //消除默认点击蓝色边框效果
+        }
+    }
+}
+.auth-card{
+    text-align: center;
+    .avatar-img{
+        width: 150rpx;
+        height: 150rpx;
+        overflow: hidden;
+        border-radius: 100%;
+        margin-top: 30rpx;
+    }
+    .title{
+        font-size: 30rpx;
+    }
+    .content{
+        margin-top: 10rpx;
+		margin-bottom: 20rpx;
+    }
+}
+.avatar-wrapper{
+	width: 150rpx;
+	height: 100rpx;
+	color: #333 !important;
+	text-align: center !important;
+	border: none !important;
+	border-radius:0 !important;
+	background-color:transparent !important;
+}
+.avatar-wrapper::after {
+	border: none !important;
+}
+.avatar{
+	width: 100rpx;
+	height: 100rpx;
+	overflow: hidden;
+	border-radius: 100%;
+}
+
+.rule-wrap{
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 20px;
+	margin: 40rpx auto;
+	font-size: 24rpx;
+	line-height: 1.5;
+	.link{
+		white-space: nowrap;
+		color: #1677FF;
+	}
+}
+</style>
+

+ 40 - 0
pay.js

@@ -0,0 +1,40 @@
+/**
+ * 订单支付
+ */
+import Vue from "vue";
+//#ifdef H5
+import $wxApi from "./wxapi.js";
+//#endif
+import $http from "./utils/axios.js"
+
+export default {
+	//微信支付
+	wxPay(obj = {}) {
+		uni.showLoading({
+			title: '支付中'
+		});
+		return new Promise(r => {
+			$http.post("/wechat/h5/pay",obj)
+				.then(res=>{
+					//#ifdef H5
+					$wxApi.JSAPI(res.retBody).then(r);
+					//#endif
+					this.payError(res);
+				})
+		});
+	},
+	//支付错误处理
+	payError(res){
+		uni.hideLoading();
+		if(res.code == 623){
+			setTimeout(i=>{
+				new Vue().$api.goto("/pages/userCenter/myOrder/myOrder");
+			},2000);
+			uni.showToast({
+				title:res.msg + "    即将跳转到订单页",
+				icon:"none",
+				duration:2000
+			});
+		}
+	}
+}

+ 118 - 0
utils/axios.js

@@ -0,0 +1,118 @@
+import { commonConfig } from '../common/config'
+
+export default { 
+	async post(url, param,yanci=true) {
+		// if(yanci){ 
+		// 	uni.showLoading({
+		// 		title:'加载中'
+		// 	})
+		// 	setTimeout(()=>{
+		// 		uni.hideLoading()
+		// 	},3000)			
+		// }
+		const res = await this.uni_request(url,param,'post')  
+		// if(yanci){
+		// 	setTimeout(()=>{
+		// 		uni.hideLoading()
+		// 	},200)	
+		// }
+		return res;
+	},
+	async get(url, param,yanci=true) {
+		// if(yanci){ 
+		// 	uni.showLoading({
+		// 		title:'加载中'
+		// 	})
+		// 	setTimeout(()=>{
+		// 		uni.hideLoading()
+		// 	},3000)			
+		// }
+		const res = await this.uni_request(url,param,'get') 
+		// if(yanci){
+		// 	setTimeout(()=>{
+		// 		uni.hideLoading()
+		// 	},200)
+		// }
+		return res;
+	}, 
+	async put(url, param) {
+		const res = await this.uni_request(url,param,'put') 
+		return res;
+	}, 
+	async delete(url, param) {
+		const res = await this.uni_request(url,param,'delete') 
+		return res;
+	}, 
+	uni_request(url,param,method,again_quest=true) {
+		const that = this
+	    return new Promise((cback, reject) => {
+	    	uni.request({
+	    		url: commonConfig.baseUrl + url,
+	    		data: param,
+	    		method:method,
+	    		header: {
+					accessToken:uni.getStorageSync("token")  	    		 	    			
+	    		},
+	    	}).then(data => { //data为一个数组,数组第一项为错误信息,第二项为返回数据				
+				var [error, res] = data;
+				cback(res.data); 
+	    		var res_code = res.statusCode.toString(); 
+				let errCode = res.data?.retHead?.errCode;
+	    		if (res_code.charAt(0) == 2) {
+	    			if(res_code==200){
+	    				// console.log('200',url)
+	    				cback(res.data); 
+					}else{
+						console.log('201',url)
+						uni.showToast({
+							title:res.data.retHead.errMsg,
+							icon:'none'
+						})
+					}
+				};
+				if(errCode==401||errCode==405){
+					uni.showToast({
+						title:res.data.retHead.errMsg,
+						icon:'none',
+						duration: 12000,
+						complete:function(){
+							window.location.replace(config.loginUrl)
+						}
+					})
+					
+				};
+				// else{
+				// 	if(res_code==401){
+				// 		//登录失效
+				// 		console.log('401',url) 
+				// 		if(again_quest){
+				// 			// token.getTokenFromServer(()=>{
+				// 			// 	const again_res=that.uni_request(url,param,method,false)	
+				// 			// 	//注意这里需要cback,因为是上一个promis的cback
+				// 			// 	cback(again_res); 
+				// 			// });				
+				// 		}else{
+				// 			console.log('再次登陆仍然失败',url)
+				// 		} 
+				// 	}else{
+				// 		console.log('400/500',url,error,res)
+				// 		uni.showToast({
+				// 			title:res.data.msg?res.data.msg:'请求异常',
+				// 			icon:'none'
+				// 		})
+				// 	}
+				// };
+				// console.log('uni_requestdata',data[1].data.retHead);
+				if(data[1].data.retHead.errCode&&data[1].data.retHead.errCode!='0'&&data[1].data.retHead.errMsg){
+					uni.showToast({
+						title:data[1].data.retHead.errMsg,
+						icon:'none'
+					});
+				};
+			}).catch(err => { 
+				console.log('catch:',err);					 
+			})
+		})	
+	}, 
+
+}

+ 184 - 0
wxapi.js

@@ -0,0 +1,184 @@
+//引入微信jssdk
+const wx = require('@/js_sdk/jweixin-1.4.0.js')
+
+//配置注册url
+const url = '/wechat/h5/getJsapiTicket';
+
+//http方法
+import $http from './utils/axios.js'
+
+//系统域名url
+const href = location.href.split('#')[0];
+// const href = location.href.split("?")[0]
+
+import { commonConfig } from './common/config'
+
+//系统域名url
+export default {
+	...wx,
+	isOk: false,
+	async config() {
+		wx.config({
+			debug: false,
+			jsApiList: [
+				"updateAppMessageShareData",
+				"updateTimelineShareData",
+				"onMenuShareTimeline",
+				"onMenuShareAppMessage",
+				"onMenuShareQQ",
+				"onMenuShareWeibo",
+				"onMenuShareQZone",
+				"startRecord",
+				"stopRecord",
+				"onVoiceRecordEnd",
+				"playVoice",
+				"pauseVoice",
+				"stopVoice",
+				"onVoicePlayEnd",
+				"uploadVoice",
+				"downloadVoice",
+				"chooseImage",
+				"previewImage",
+				"uploadImage",
+				"downloadImage",
+				"translateVoice",
+				"getNetworkType",
+				"openLocation",
+				"getLocation",
+				"hideOptionMenu",
+				"showOptionMenu",
+				"hideMenuItems",
+				"showMenuItems",
+				"hideAllNonBaseMenuItem",
+				"showAllNonBaseMenuItem",
+				"closeWindow",
+				"scanQRCode",
+				"chooseWXPay",
+				"openProductSpecificView",
+				"addCard",
+				"chooseCard",
+				"openCard"
+			],
+			...(await $http.get(url,{url:href})).retBody,
+		});
+		wx.ready(e => {
+			/**
+			 * 默认分享内容
+			 */
+			let shareParams = {
+				nickname:null,
+				desc:null,
+				togetherId:null,
+				routeUrl:null
+			}
+			this.share(shareParams)
+			
+			this.isOk = true;
+			// this.hideMenu();
+		});
+		wx.error(e => {
+			console.log("失败")
+			this.isOk = false;
+		});
+	},
+	hideMenu() {
+		wx.hideAllNonBaseMenuItem();
+		wx.hideMenuItems({		
+		    menuList: [
+				"menuItem:share:appMessage",
+				"menuItem:profile",
+				"menuItem:addContact",
+				"menuItem:dayMode",
+				"menuItem:nightMode",
+				"menuItem:share:timeline",
+				"menuItem:favorite"				
+			] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3		
+		});
+	},
+	showMenu() {
+		wx.showMenuItems({
+			menuList: [
+				"menuItem:share:appMessage",
+				"menuItem:profile",
+				"menuItem:addContact",
+				"menuItem:dayMode",
+				"menuItem:nightMode",
+				"menuItem:share:timeline",
+				"menuItem:favorite"
+			] // 要显示的菜单项,所有menu项见附录3
+		});
+	},
+	/**
+	 * 分享配置
+	 * @param {Object} info
+	 */
+	share(data = {}, info = {}) {
+		//添加链接时间戳
+		// data.v = new Date().getTime();
+		// console.log("shareData",data)
+		// let search = [];
+		// for (const [key, value] of Object.entries(data)) {
+		// 	// search.push(`${key}=${encodeURIComponent(value)}`);
+		// 	search.push(`${key}=${value}`);
+		// }
+		// search = "?" + search.join("&");
+		
+		let afterEndUrl = commonConfig.afterEndUrl;
+		// let afterEndUrl = 'http://tanhui.hongweisoft.com/api/wechat/h5/authorize?returnUrl='
+		// let afterEndUrl = 'http://gzhjt.gzsdzth.com/api/wechat/h5/authorize?returnUrl='
+		
+		let fullUrl= '';
+		if(data.togetherId&&data.routeUrl){
+			fullUrl = afterEndUrl + location.href.split('?')[0] + '?togetherId=' + data.togetherId + '/#/' + data.routeUrl
+		}else{
+			fullUrl = afterEndUrl + location.href.split('?')[0]
+		};
+		let shareInfo = {
+			title: data.nickname?data.nickname + '邀请你参与贵州省单株碳汇平台':'贵州省单株碳汇平台',
+			link: fullUrl,
+			desc: data.desc||"购买碳汇,你我同行",
+			imgUrl: href + "/static/logo.png",
+			trigger(res) {},
+			success(res) {},
+			cancel(res) {},
+			fail(res) {},
+			...info
+		};
+		console.log('shareInfo',shareInfo,'fullUrl',fullUrl)
+		//自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
+		wx.updateAppMessageShareData(shareInfo);
+		//自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
+		wx.updateTimelineShareData(shareInfo);
+	},
+	//拉起微信浏览器端支付
+	JSAPI(res) {
+		return new Promise(r => {
+			wx.chooseWXPay({
+				"timestamp": res.timeStamp, //时间戳,自1970年以来的秒数     
+				"nonceStr": res.nonceStr, //随机串     
+				"package": res.packageValue,
+				"signType": res.signType, //微信签名方式:     
+				"paySign": res.paySign, //微信签名 
+				success() {
+					r({
+						code: 0,
+						msg: "成功"
+					});
+				},
+				cancel() {
+					r({
+						code: 1,
+						msg: "取消"
+					});
+				},
+				fail(err) {
+					console.log('支付失败',err.errMsg.split(':')[1]);
+					r({
+						code: 2,
+						msg: err.errMsg.split(':')[1]
+					});
+				}
+			});
+		});
+	},
+}