lhl 3 years ago
parent
commit
d39962cdf4

+ 33 - 0
components/js_sdk/xb-copy/uni-copy.js

@@ -0,0 +1,33 @@
+export default function uniCopy(content) {
+	/**
+	 * 小程序端 和 app端的复制逻辑
+	 */
+	//#ifndef H5
+	uni.setClipboardData({
+		data: content,
+		success: function() {
+			console.log('success');
+			return true
+		}
+	});
+	//#endif
+	
+	/**
+	 * H5端的复制逻辑
+	 */
+	// #ifdef H5
+	if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
+		// 不支持
+		return false
+	}
+	let textarea = document.createElement("textarea")
+	textarea.value = content
+	textarea.readOnly = "readOnly"
+	document.body.appendChild(textarea)
+	textarea.select() // 选择对象
+	textarea.setSelectionRange(0, content.length) //核心
+	let result = document.execCommand("copy") // 执行浏览器复制命令
+	textarea.remove()
+	return result
+	// #endif
+}

+ 24 - 6
pages/user/buySellDetail.vue

@@ -54,7 +54,7 @@
 					开户名:
 				</view>
 				<view class="info-val">{{chooseItem.touser.bank_name}}</view>
-				<view class="fz" @click="fz()">
+				<view class="fz" @click="copy(chooseItem.touser.bank_name)">
 					复制
 				</view>
 			</view>
@@ -62,8 +62,8 @@
 				<view class="info-tit">
 					银行卡号:
 				</view>
-				<view class="info-val">45875487854</view>
-				<view class="fz" @click="fz()">
+				<view class="info-val">{{chooseItem.touser.bank_card}}</view>
+				<view class="fz" @click="copy(chooseItem.touser.bank_card)">
 					复制
 				</view>
 			</view>
@@ -72,7 +72,7 @@
 					支付宝账号:
 				</view>
 				<view class="info-val">{{chooseItem.touser.alipay_no}}</view>
-				<view class="fz" @click="fz()">
+				<view class="fz" @click="copy(chooseItem.touser.alipay_no)">
 					复制
 				</view>
 			</view>
@@ -86,8 +86,8 @@
 				<view class="info-tit">
 					卖家电话:
 				</view>
-				<view class="info-val">{{chooseItem.touser.bank_card}}</view>
-				<view class="fz" @click="fz()">
+				<view class="info-val">{{chooseItem.touser.phone}}</view>
+				<view class="fz" @click="copy(chooseItem.touser.phone)">
 					复制
 				</view>
 			</view>
@@ -118,6 +118,7 @@
 </template>
 
 <script>
+	import uniCopy from '../../components/js_sdk/xb-copy/uni-copy.js';
 	import { upload} from '@/api/order.js';
 	import { upEvaluation } from '@/api/whole.js'
 	export default {
@@ -211,6 +212,23 @@
 				this.chooseImg = src
 				this.$refs.lookimg.open()
 			},
+			copy(value) {
+				let obj = this;
+				let content = value; //需要复制的内容
+				console.log('复制的内容:', content);
+				content = typeof content === 'string' ? content : content.toString(); // 复制内容,必须字符串,数字需要转换为字符串
+				const result = uniCopy(content);
+				if (result === false) {
+					uni.showToast({
+						title: '不支持'
+					});
+				} else {
+					uni.showToast({
+						title: '复制成功',
+						icon: 'none'
+					});
+				}
+			}
 		}
 	}
 </script>

+ 310 - 281
pages/user/shareQrCode.vue

@@ -1,282 +1,311 @@
-<template>
-	<view class="content">
-		<!-- <view class="qrimg">
-			<tki-qrcode
-				:cid="cid"
-				ref="qrcode"
-				:val="val"
-				:size="size"
-				:unit="unit"
-				:background="background"
-				:foreground="foreground"
-				:pdground="pdground"
-				:icon="icon"
-				:iconSize="iconSize"
-				:lv="lv"
-				:onval="onval"
-				:loadMake="loadMake"
-				:usingComponents="usingComponents"
-				@result="qrR"
-			/>
-		</view> -->
-		<!-- #ifndef MP-ALIPAY -->
-		<canvas :class="{ qrimg: !loading }" @longtap="alertCanv" id="qrShareBox" canvas-id="qrShareBox" class="tki-qrcode-canvas" />
-		<!-- #endif -->
-		<!-- #ifdef MP-ALIPAY -->
-		<canvas :class="{ qrimg: !loading }" @longtap="alertCanv" id="qrShareBox" class="tki-qrcode-canvas" />
-		<!-- #endif -->
-		<view :style="{ display: loading ? 'none' : 'block' }" class="tki-qrcode-canvas"><image :src="ctxSrc" mode="scaleToFill" class="tki-qrcode-canvas"></image></view>
-		<view class="share-bottom flex" :class="{ 'action-share-bottom': !loading }" @click="loading ? showImg() : ''">
-			<text>{{ loading ? '点击生成图片' : '长按二维码下载' }}</text>
-		</view>
-	</view>
-</template>
-
-<script>
-// import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue';
-import { spreadBanner } from '@/api/user.js';
-export default {
-	// components: { tkiQrcode },
-	data() {
-		return {
-			cid: 'tki-qrcode-canvas', //canvasId,页面存在多个二维码组件时需设置不同的ID
-			size: 180, //生成的二维码大小
-			unit: 'upx', //大小单位尺寸
-			// show: true,//默认使用组件中的image标签显示二维码
-			val: '', //要生成的内容
-			background: '#ffffff', //二维码背景色
-			foreground: '#333333', //二维码前景色
-			pdground: '#333333', //二维码角标色
-			icon: '', //二维码图标URL(必须是本地图片,网络图需要先下载至本地)
-			iconSize: 40, //二维码图标大小
-			lv: 3, //容错级别
-			onval: false, //监听val值变化自动重新生成二维码
-			loadMake: false, //组件初始化完成后自动生成二维码,val需要有值
-			usingComponents: false, //是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题)
-			showLoading: false, //是否显示loading
-			loadingText: '二维码生成中', //loading文字
-			src: '', // 二维码生成后的图片地址或base64
-			ratio: 1, //页面比例用于计算
-			ctxSrc: '', //要显示的图片
-			loading: true,//是否载入图片中
-			canHeight: '',//画布高度
-			canWeidth: ''//画布宽度
-		};
-	},
-	onLoad() {
-		this.loadCodeList()
-	},
-	onReady() {
-		let obj = this;
-		let query = uni.createSelectorQuery();
-		// 获取页面比例
-		query
-			.select('.content')
-			.fields(
-				{
-					size: true
-				},
-				e => {
-					// 保存比例
-					this.ratio = e.width / 750;
-				}
-			)
-			.exec();
-		// 获取画布宽高信息
-		query
-			.select('#qrShareBox')
-			.fields(
-				{
-					size: true
-				},
-				e => {
-					// 保存画布宽高信息
-					obj.canHeight = e.height;
-					obj.canWeidth = e.width;
-				}
-			)
-			.exec();
-	},
-	methods: {
-		loadCodeList() {
-			// 加载二维码信息
-			spreadBanner({
-				// #ifdef H5
-				type: 2,
-				// #endif
-				// #ifdef MP
-				type: 1
-				// #endif
-			}).then(e => {
-				// #ifdef MP
-				// 保存二维码图片
-				uni.downloadFile({
-					url: e.data[0].wap_posterQr,
-					success(res) {
-						if (res.errMsg == 'downloadFile:ok') {
-							obj.src = res.tempFilePath;
-							// 生成画布
-							obj.loadImg(obj.src);
-							uni.hideLoading();
-						}
-						console.log(res);
-					},
-					fail(e) {
-						console.log(e);
-					}
-				})
-				// #endif
-				// #ifdef H5
-					// 保存二维码图片
-					this.src =  e.data[0].wap_posterQr;
-					// 生成画布
-					this.loadImg(e.data[0].wap_posterQr);
-				// #endif
-				
-			}).catch((e) => {
-					uni.showModal({
-						title: '生成失败请刷新页面',
-						showCancel: false
-					});
-					uni.hideLoading();
-				});;
-		},
-		// 长按画布事件
-		alertCanv() {
-			uni.showModal({
-				title: '请先点击生成图片再下载',
-				showCancel: false
-			});
-		},
-		// 生成图片
-		showImg() {
-			uni.showLoading({
-				title: '图片生成中',
-				mask: true
-			});
-			let obj = this;
-			//因为和uni.showLoading载入效果冲突需要延迟执行生成图片方法
-			setTimeout(function() {
-				uni.canvasToTempFilePath({
-					x: 0,
-					y: 0,
-					width: obj.canWeidth,
-					height: obj.canHeight,
-					destWidth: obj.canWeidth,
-					destHeight: obj.canHeight,
-					fileType: 'jpg',
-					quality: 1,
-					canvasId: 'qrShareBox',
-					success: res => {
-						uni.hideLoading();
-						uni.showModal({
-							title: '创建成功,长按二维码下载图片',
-							showCancel: false
-						});
-						// 显示生成的图片
-						obj.loading = false;
-						// 保存图片base64
-						obj.ctxSrc = res.tempFilePath;
-					},
-					fail(e) {
-						console.log(e);
-					}
-				});
-			}, 50);
-		},
-		// 开始渲染画布
-		loadImg(src) {
-			const obj = this;
-			const cavWidth=523;//画布宽度
-			const cavHeight=700;//画布高度
-			const ratio = obj.ratio;//获取页面比例
-			const ctxBg = '/static/img/img14.jpg'; //画布背景
-			let context = uni.createCanvasContext('qrShareBox');
-			const codeSize = obj.size * ratio; //计算二维码大小
-			const codeX = ((cavWidth - obj.size) * ratio) / 2; //二维码所在x轴位置
-			const codeY = cavHeight * ratio; //二维码所在y轴位置
-			const codeBoxColor = '#FFFFFF'; //包裹框颜色
-			const codeBoxWidht = 0; //包裹边框宽度
-			const codeBoxSize = (codeBoxWidht / 2) * ratio; //计算二维码白色包裹框大小
-			const codeBoxX = codeX - codeBoxSize; //包裹框初始X轴
-			const codeBoxY = codeY - codeBoxSize; //包裹框初始Y轴
-			const codeBoxEnd = codeSize + codeBoxWidht * ratio; //计算包裹框大小
-			const fontTop = codeY + codeBoxEnd + (codeBoxWidht + 20) * this.ratio; //文字距离上边距高度
-			const fontSize = 24 * ratio; //文字大小
-			const fontText = ''; //文字内容
-			const fontLeft = (codeSize - fontSize * fontText.length) / 2 + codeX; //文字左侧距离
-			// 插入背景图片
-			context.drawImage(ctxBg, 0, 0, obj.canWeidth, obj.canHeight);
-			// // 插入文字
-			context.setFontSize(fontSize);
-			context.fillText(fontText, fontLeft, fontTop);
-			// 插入边框
-			context.beginPath();//开始画线
-			context.setLineJoin('round'); //边框类型
-			context.setLineWidth(codeBoxWidht * ratio);
-			context.setStrokeStyle(codeBoxColor); //设置包裹框颜色
-			context.strokeRect(codeBoxX, codeBoxY, codeBoxEnd, codeBoxEnd);
-			context.stroke();//渲染线条
-			// 插入二维码
-			context.drawImage(src, codeX, codeY, codeSize, codeSize);
-			// 开始渲染
-			context.draw();
-		},
-		// 創建二维码
-		creatQrcode() {
-			this.$refs.qrcode._makeCode();
-		},
-		// 保存二维码到图库
-		saveQrcode() {
-			this.$refs.qrcode._saveCode();
-		},
-		// 生成二维码后返回base64
-		qrR(res) {
-			this.src = res;
-		},
-		//清空二维码(清空二维码会触发result回调 返回值为空)
-		clearQrcode(e) {
-			this.$refs.qrcode._clearCode();
-			this.val = '';
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.content {
-	padding-top: 30rpx;
-}
-// #qrShareBox {
-// 	position: absolute;
-// 	left: -9999rpx;
-// 	top: -9999rpx;
-// }
-
-.qrimg {
-	position: absolute;
-	left: -9999rpx;
-	top: -9999rpx;
-}
-.tki-qrcode-canvas {
-	// width: 700rpx;
-	// height: 1245rpx;
-	width: 532rpx;
-	height: 945rpx;
-	margin: 0 auto;
-}
-.share-bottom {
-	width: 560rpx;
-	height: 80rpx;
-	color: #ffffff;
-	background-color: $base-color;
-	margin: 0 auto;
-	font-size: $font-lg - 2rpx;
-	margin-top: 30rpx;
-	border-radius: 99rpx;
-	justify-content: center;
-	&.action-share-bottom {
-		background-color: $color-gray;
-	}
-}
+<template>
+	<view class="andr-shQ-padL30 andr-shQ-padR30 andr-shQ-Flex andr-shQ-FlexDirC">
+		<view class="andr-shQ-w100B andr-shQ-Flex andr-shQ-JusCC">
+			<swiper class="imgw750h375 matop"  :indicator-dots="false" :current="current" @change="currentChange" >
+				<swiper-item v-for="(item, index) in rwmListArr" :key="index"><image :src="item.wap_poster" mode="aspectFit" class="imgw750h375" /></swiper-item>
+			</swiper>
+		</view>
+		<!-- <view class="baocun" @click="comfirm(userInfo.uid+'')">复制邀请码</view> -->
+		<!-- #ifdef H5 -->
+		<!-- <view class="baocun">长按二维码保存图片</view> -->
+		
+		<!-- #endif -->
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="baocun" @click="seav">保存图片并转发</view>
+		<!-- <button open-type="share" class="baocun btn" v-if="scLoading == 2">分享到微信</button> -->
+		<!-- #endif -->
+	</view>
+</template>
+<script>
+import weixinObj from "@/plugin/jweixin-module/index.js";
+import { mapState } from 'vuex';
+import { spreadBanner } from '@/api/user.js';
+import { interceptor, saveUrl } from '@/utils/loginUtils';
+// #ifdef H5
+import { weixindata, weixinlocation,shareLoad } from '@/utils/wxAuthorized';
+// #endif
+export default {
+	data() {
+		return {
+			rwmListArr: [],
+			current: 0,
+			imgSrc: ''
+		};
+	},
+	async onLoad(option) {
+		uni.showLoading({
+			title: '邀请图生成中',
+			mask: true
+		});
+		// 判断是否强制登录
+		weixinObj.hideAllNonBaseMenuItem();
+		await this.loadCodeList();
+		// #ifdef MP-WEIXIN
+		uni.authorize({
+			scope: 'scope.writePhotosAlbum',
+			complete() {}
+		});
+		// #endif
+		// #ifdef H5
+		weixinObj.showAllNonBaseMenuItem()
+		// weixinObj.showAllNonBaseMenuItem();
+		this.IndexShare()
+		// wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
+		// let path = '/#/pages/index/index' + '?';
+		// console.log(obj.Path)
+		// // 保存邀请人
+		// path += 'spread=' + this.userInfo.uid;
+		//   wx.updateAppMessageShareData({ 
+		//     title: this.userInfo.nickname + '邀请您进入Xingwang鑫旺', // 分享标题
+		//     desc: '欢迎加入Xingwang鑫旺', // 分享描述
+		//     link: this.baseURL + path, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
+		//     imgUrl: '../../static/img/logo.png', // 分享图标
+		//     success: function () {
+		//       // 设置成功
+		//     }
+		//   })
+		// });
+		// #endif
+	},
+	onShow() {
+		if (this.loginInterceptor && !this.hasLogin) {
+			saveUrl();
+			// 登录拦截
+			interceptor();
+		}
+	},
+    //下拉刷新
+    onPullDownRefresh() {
+    	let obj = this;
+    	//监听下拉刷新动作的执行方法,每次手动下拉刷新都会执行一次
+    	setTimeout(function() {
+    		obj.loadCodeList();
+    		uni.stopPullDownRefresh(); //停止下拉刷新动画
+    	}, 1000);
+    },
+	computed: {
+		...mapState(['weichatObj', 'baseURL', 'urlFile']),
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	methods: {
+		comfirm(text) {
+			// let text = this.userInfo.uid
+			console.log(text);
+			const result = this.uniCopy(text);
+			if (result === false) {
+				uni.showToast({
+					title: '不支持'
+				});
+			} else {
+				uni.showToast({
+					title: '复制成功',
+					icon: 'none'
+				});
+			}
+			// this.$refs.popup.close();
+		},
+		uniCopy(content) {
+			/**
+			 * 小程序端 和 app端的复制逻辑
+			 */
+			//#ifndef H5
+			uni.setClipboardData({
+				data: content,
+				success: function() {
+					console.log('success');
+					return true;
+				}
+			});
+			//#endif
+		
+			/**
+			 * H5端的复制逻辑
+			 */
+			// #ifdef H5
+			if (!document.queryCommandSupported('copy')) {
+				//为了兼容有些浏览器 queryCommandSupported 的判断
+				// 不支持
+				return false;
+			}
+			let textarea = document.createElement('textarea');
+			textarea.value = content;
+			textarea.readOnly = 'readOnly';
+			document.body.appendChild(textarea);
+			textarea.select(); // 选择对象
+			textarea.setSelectionRange(0, content.length); //核心
+			let result = document.execCommand('copy'); // 执行浏览器复制命令
+			textarea.remove();
+			return result;
+			// #endif
+		},
+		loadCodeList() {
+			let self = this;
+			// 加载二维码信息
+			// let andrUid = uni.getStorageSync('andrUid')||'';
+			spreadBanner({
+				// #ifdef H5
+				type: 2,
+				// #endif
+				// #ifdef MP
+				type: 1,
+				// #endif
+			}).then(e => {
+				if (e.status == 200) {
+					console.log(e.data)
+					self.rwmListArr = e.data;
+					// #ifdef H5
+					self.imgSrc = self.rwmListArr[0].wap_poster;
+					// #endif
+					// #ifdef MP-WEIXIN
+					self.imgSrc = self.rwmListArr[0].poster;
+					// #endif
+				}
+				uni.hideLoading();
+			});
+		},
+		currentChange(e) {
+			this.current = e.detail.current;
+		},
+		// #ifdef H5
+		IndexShare() {
+			let obj = this;
+			let pages = getCurrentPages();
+			// 获取当前页面
+			let page = pages[pages.length - 1];
+			let path = '/#/pages/index/index' + '?';
+			// 保存传值
+			for (let i in page.options) {
+				path += i + '=' + page.options[i] + '&';
+			}
+			console.log(obj.Path)
+			// 保存邀请人
+			path += 'spread=' + this.userInfo.uid;
+			let data = {
+				link: this.baseURL + path,
+				title: this.userInfo.nickname + '邀请您进入Xingwang鑫旺',
+				desc:'欢迎加入Xingwang鑫旺',
+				imgUrl: 'http://xw.liuniu946.com/static/img/logo.png'
+			};
+			console.log(data,'分享数据');
+			shareLoad(data);
+		},
+		// #endif
+		// #ifdef MP-WEIXIN
+		seav() {
+			uni.getImageInfo({
+				src: this.imgSrc,
+				complete: function (result) {
+					let path = result.path;
+					uni.getSetting({
+						success(res) {
+							console.log(res)
+							if (!res.authSetting['scope.writePhotosAlbum']) {
+								uni.authorize({
+									scope:'scope.writePhotosAlbum',
+									success(res) {
+										uni.saveImageToPhotosAlbum({
+											filePath:path,
+											complete(result) {
+											}
+										});
+									},
+									complete(result) {
+									    uni.showToast({
+									         title: '请先授权保存图片',
+									         duration: 2000,
+											 icon:'none'
+									    });
+										obj.seav();
+									}
+								})
+							}else{
+								uni.saveImageToPhotosAlbum({
+									filePath:path,
+									complete(result) {
+									     uni.showToast({
+									         title: '保存图片成功!',
+									         duration: 2000,
+											 icon:'none'
+									     });
+									}
+								});
+							}
+						}
+					});
+				}
+			});
+		}
+		// #endif
+	}
+};
+</script>
+
+<style lang="scss">
+.imgw750h375 {
+	width: 700rpx;
+	height: 958rpx;
+}
+.matop{
+	margin-top: 40rpx;
+}
+.andr-shQ-padL30 {
+	padding-left: 30rpx;
+}
+.andr-shQ-padR30 {
+	padding-right: 30rpx;
+}
+.andr-shQ-Flex {
+	display: flex;
+}
+.andr-shQ-FlexDirC {
+	flex-direction: column;
+}
+.andr-shQ-w100B {
+	width: 100%;
+}
+.andr-shQ-JusCC {
+	justify-content: center;
+}
+.andr-shQ-marginT30 {
+	margin-top: 30rpx;
+}
+.andr-shQ-bgc06B163 {
+	background-color: $base-color;
+}
+.andr-shQ-cFFF {
+	color: #ffffff;
+}
+.andr-shQ-bdR50 {
+	border-radius: 50rpx;
+}
+.andr-shQ-h86 {
+	height: 86rpx;
+}
+.andr-shQ-AIC {
+	align-items: center;
+}
+.baocun {
+	color: #ffffff;
+	background: $base-color;
+	text-align: center;
+	width: 80%;
+	margin: 50rpx auto;
+	font-size: 28rpx;
+	padding: 25rpx 0rpx;
+	border-radius: 50rpx;
+}
+.btn{
+	padding: 0rpx 0rpx !important;
+	margin: 0rpx auto;
+	margin-bottom: 100rpx;
+}
+/* #ifdef H5 */
+.cbnagan {
+	width: 80%;
+	background: $base-color;
+	margin: 50rpx auto;
+	font-size: 28rpx;
+	text-align: center;
+}
+/* #endif */
 </style>

BIN
unpackage/dist/build/h5/tl-1-4-5.rar → unpackage/dist/build/h5/1-4-9.rar


+ 1 - 1
unpackage/dist/build/h5/index.html

@@ -1,2 +1,2 @@
 <!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>商城</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.a5c69d49.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.6808189b.js></script><script src=/index/static/js/index.4ef260ca.js></script></body></html>
+            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.a5c69d49.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.6808189b.js></script><script src=/index/static/js/index.b5a57242.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/index.b5a57242.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-user-buySellDetail.ae67189c.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-user-buySellDetail.bd28f3c3.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-user-shareQrCode.3229456e.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-user-shareQrCode.e26e22c1.js


Some files were not shown because too many files changed in this diff