xuhaolan vor 2 Jahren
Ursprung
Commit
abdda0e5f5
100 geänderte Dateien mit 1714 neuen und 5230 gelöschten Zeilen
  1. 16 0
      api/index.js
  2. 9 0
      api/user.js
  3. 0 120
      components/countDown/index.vue
  4. 0 118
      components/home/index.vue
  5. 0 630
      components/jyf-parser/jyf-parser.vue
  6. 0 97
      components/jyf-parser/libs/CssHandler.js
  7. 0 535
      components/jyf-parser/libs/MpHtmlParser.js
  8. 0 80
      components/jyf-parser/libs/config.js
  9. 0 22
      components/jyf-parser/libs/handler.wxs
  10. 0 501
      components/jyf-parser/libs/trees.vue
  11. 0 421
      components/newlist/nowList.vue
  12. 0 1201
      components/tki-qrcode/qrcode.js
  13. 0 210
      components/tki-qrcode/tki-qrcode.vue
  14. 0 124
      components/uni-fav/uni-fav.vue
  15. 8 4
      manifest.json
  16. 20 6
      pages.json
  17. 2 2
      pages/contract/agreement.vue
  18. 19 19
      pages/contract/privacy.vue
  19. 51 30
      pages/game/game.vue
  20. 72 50
      pages/game/gameDetail.vue
  21. 669 618
      pages/index/index.vue
  22. 420 365
      pages/money/pay.vue
  23. 29 1
      pages/money/withdmoenys.vue
  24. 1 1
      pages/order/evaluate.vue
  25. 5 2
      pages/order/order.vue
  26. 4 4
      pages/order/orderDetail.vue
  27. 7 7
      pages/product/product.vue
  28. 11 6
      pages/public/login.vue
  29. 2 2
      pages/public/register.vue
  30. 1 1
      pages/set/addressManage.vue
  31. 1 1
      pages/set/password.vue
  32. 3 2
      pages/user/jlDetil.vue
  33. 228 0
      pages/user/newVip.vue
  34. 10 3
      pages/user/purpleJf.vue
  35. 6 12
      pages/user/shareQrCode.vue
  36. 1 1
      pages/user/shopJf.vue
  37. 96 27
      pages/user/team.vue
  38. 17 4
      pages/user/user.vue
  39. BIN
      static/game/game02.png
  40. BIN
      static/game/game03.png
  41. BIN
      static/game/game04.png
  42. BIN
      static/game/game05.png
  43. BIN
      static/game/game06.png
  44. BIN
      static/game/game07.png
  45. BIN
      static/game/game08.png
  46. BIN
      static/game/game1.png
  47. BIN
      static/game/game11.png
  48. BIN
      static/game/game2.png
  49. BIN
      static/game/game21.png
  50. BIN
      static/game/game22.png
  51. BIN
      static/game/game23.png
  52. BIN
      static/game/game24.png
  53. BIN
      static/game/game3.png
  54. BIN
      static/game/game4.png
  55. BIN
      static/game/game6.png
  56. BIN
      static/game/game7.png
  57. BIN
      static/game/game8.png
  58. BIN
      static/game/reb01.png
  59. BIN
      static/game/reb02.png
  60. BIN
      static/game/reb03.png
  61. BIN
      static/game/reb04.png
  62. BIN
      static/game/reb05.png
  63. BIN
      static/img/bottom.png
  64. BIN
      static/img/game01.png
  65. BIN
      static/img/game02.png
  66. BIN
      static/img/game03.png
  67. BIN
      static/img/game04.png
  68. BIN
      static/img/game05.png
  69. BIN
      static/img/index-fanl.png
  70. BIN
      static/img/index01.png
  71. BIN
      static/img/index02.png
  72. BIN
      static/img/index03.png
  73. BIN
      static/img/index04.png
  74. BIN
      static/img/indexqg.png
  75. BIN
      static/img/logo.jpg
  76. BIN
      static/img/share.png
  77. BIN
      static/img/top.png
  78. BIN
      static/img/user-top-bg.png
  79. BIN
      static/img/vip-card-bg.png
  80. BIN
      static/index/index01.png
  81. BIN
      static/index/vip01.png
  82. BIN
      static/index/vip02.png
  83. BIN
      static/index/vip04.png
  84. 4 1
      store/index.js
  85. BIN
      unpackage/cache/apk/__UNI__F0D4DD1_cm.apk
  86. 1 1
      unpackage/cache/apk/apkurl
  87. 0 0
      unpackage/cache/apk/cmManifestCache.json
  88. 1 1
      unpackage/cache/appleConfig.ini
  89. 0 0
      unpackage/cache/wgt/__UNI__F0D4DD1/app-config-service.js
  90. 0 0
      unpackage/cache/wgt/__UNI__F0D4DD1/app-service.js
  91. 0 0
      unpackage/cache/wgt/__UNI__F0D4DD1/app-view.js
  92. 0 0
      unpackage/cache/wgt/__UNI__F0D4DD1/manifest.json
  93. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game02.png
  94. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game03.png
  95. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game04.png
  96. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game05.png
  97. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game06.png
  98. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game07.png
  99. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game08.png
  100. BIN
      unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game1.png

+ 16 - 0
api/index.js

@@ -15,6 +15,22 @@ export function jfShop(data) {
 		data
 	});
 }
+//抽奖参数
+export function cJiang(data){
+	return request({
+		url:'/api/luck_draw',
+		method:'get',
+		data
+		
+	})
+}
+export function cJbuy(data){
+	return request({
+		url:'/api/luck',
+		method:'post',
+		data
+	})
+}
 
 // 消息通知
 export function getMessage(data) {

+ 9 - 0
api/user.js

@@ -184,6 +184,15 @@ export function yueXhg(data) {
 		data
 	})
 }
+//喜嗨购
+export function yueYg(data) {
+	return request({
+		url: '/api/turn',
+		method: 'post',
+		data
+	})
+}
+
 
 //现金转账
 export function cashtransfer(data) {

+ 0 - 120
components/countDown/index.vue

@@ -1,120 +0,0 @@
-<template>
-	<view class="time" :style="justifyLeft">
-		<text class="red" v-if="tipText">{{ tipText }}</text>
-		<text class="styleAll" v-if="isDay === true">{{ day }}</text>
-		<text class="timeTxt red" v-if="dayText">{{ dayText }}</text>
-		<text class="styleAll">{{ hour }}</text>
-		<text class="timeTxt red" v-if="hourText">{{ hourText }}</text>
-		<text class="styleAll">{{ minute }}</text>
-		<text class="timeTxt red" v-if="minuteText">{{ minuteText }}</text>
-		<text class="styleAll">{{ second }}</text>
-		<text class="timeTxt red" v-if="secondText">{{ secondText }}</text>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "countDown",
-		props: {
-			justifyLeft: {
-				type: String,
-				default: ""
-			},
-			//距离开始提示文字
-			tipText: {
-				type: String,
-				default: "倒计时"
-			},
-			dayText: {
-				type: String,
-				default: "天"
-			},
-			hourText: {
-				type: String,
-				default: "时"
-			},
-			minuteText: {
-				type: String,
-				default: "分"
-			},
-			secondText: {
-				type: String,
-				default: "秒"
-			},
-			datatime: {
-				type: Number,
-				default: 0
-			},
-			isDay: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data: function() {
-			return {
-				day: "00",
-				hour: "00",
-				minute: "00",
-				second: "00"
-			};
-		},
-		created: function() {
-			this.show_time();
-		},
-		mounted: function() {},
-		methods: {
-			show_time: function() {
-				let that = this;
-
-				function runTime() {
-					//时间函数
-					let intDiff = that.datatime - Date.parse(new Date()) / 1000; //获取数据中的时间戳的时间差;
-					let day = 0,
-						hour = 0,
-						minute = 0,
-						second = 0;
-					if (intDiff > 0) {
-						//转换时间
-						if (that.isDay === true) {
-							day = Math.floor(intDiff / (60 * 60 * 24));
-						} else {
-							day = 0;
-						}
-						hour = Math.floor(intDiff / (60 * 60)) - day * 24;
-						minute = Math.floor(intDiff / 60) - day * 24 * 60 - hour * 60;
-						second =
-							Math.floor(intDiff) -
-							day * 24 * 60 * 60 -
-							hour * 60 * 60 -
-							minute * 60;
-						if (hour <= 9) hour = "0" + hour;
-						if (minute <= 9) minute = "0" + minute;
-						if (second <= 9) second = "0" + second;
-						that.day = day;
-						that.hour = hour;
-						that.minute = minute;
-						that.second = second;
-					} else {
-						that.day = "00";
-						that.hour = "00";
-						that.minute = "00";
-						that.second = "00";
-					}
-				}
-				runTime();
-				setInterval(runTime, 1000);
-			}
-		}
-	};
-</script>
-
-<style>
-	.time{
-		display: flex;
-		justify-content: center;
-	} 
-	.red{
-		color: #fc4141;
-		margin: 0 4rpx;
-	}
-</style>

+ 0 - 118
components/home/index.vue

@@ -1,118 +0,0 @@
-<template>
-	<view style="touch-action: none;">
-		<view class="home" style="position:fixed;" :style="{ top: top + 'px', bottom: bottom }" id="right-nav" @touchmove.stop.prevent="setTouchMove">
-			<view class="homeCon bg-color-red" :class="homeActive === true ? 'on' : ''" v-if="homeActive">
-				<navigator hover-class='none' url='/pages/index/index' open-type='switchTab' class='iconfont icon-shouye-xianxing'></navigator>
-				<navigator hover-class='none' url='/pages/order_addcart/order_addcart' open-type='switchTab' class='iconfont icon-caigou-xianxing'></navigator>
-				<navigator hover-class='none' url='/pages/user/index' open-type='switchTab' class='iconfont icon-yonghu1'></navigator>
-			</view>
-			<view @click="open" class="pictrueBox">
-				<view class="pictrue">
-					<image :src="
-              homeActive === true
-                ? '/static/images/close.gif'
-                : '/static/images/open.gif'
-            "
-					 class="image" />
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-	import {
-		mapGetters
-	} from "vuex";
-	export default {
-		name: "Home",
-		props: {},
-		data: function() {
-			return {
-				top: "",
-				bottom: ""
-			};
-		},
-		computed: mapGetters(["homeActive"]),
-		methods: {
-			setTouchMove(e) {
-				var that = this;
-				if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
-					that.top = e.touches[0].clientY
-					// that.setData({
-					// 	top: e.touches[0].clientY
-					// })
-				}
-			},
-			open: function() {
-				this.homeActive ?
-					this.$store.commit("CLOSE_HOME") :
-					this.$store.commit("OPEN_HOME");
-			}
-		},
-		created() {
-			this.bottom = "50px";
-		}
-	};
-</script>
-
-<style scoped>
-	.pictrueBox {
-		width: 130rpx;
-		height: 120rpx;
-	}
-
-	/*返回主页按钮*/
-	.home {
-		position: fixed;
-		color: white;
-		text-align: center;
-		z-index: 9999;
-		right: 15rpx;
-		display: flex;
-	}
-
-	.home .homeCon {
-		border-radius: 50rpx;
-		opacity: 0;
-		height: 0;
-		color: #e93323;
-		width: 0;
-	}
-
-	.home .homeCon.on {
-		opacity: 1;
-		animation: bounceInRight 0.5s cubic-bezier(0.215, 0.610, 0.355, 1.000);
-		width: 300rpx;
-		height: 86rpx;
-		margin-bottom: 20rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		background: #f44939 !important;
-	}
-
-	.home .homeCon .iconfont {
-		font-size: 48rpx;
-		color: #fff;
-		display: inline-block;
-		margin: 0 auto;
-	}
-
-	.home .pictrue {
-		width: 86rpx;
-		height: 86rpx;
-		border-radius: 50%;
-		margin: 0 auto;
-	}
-
-	.home .pictrue .image {
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-		transform: rotate(90deg);
-		ms-transform: rotate(90deg);
-		moz-transform: rotate(90deg);
-		webkit-transform: rotate(90deg);
-		o-transform: rotate(90deg);
-	}
-</style>

+ 0 - 630
components/jyf-parser/jyf-parser.vue

@@ -1,630 +0,0 @@
-<template>
-	<view>
-		<slot v-if="!nodes.length" />
-		<!--#ifdef APP-PLUS-NVUE-->
-		<web-view id="_top" ref="web" :style="'margin-top:-2px;height:'+height+'px'" @onPostMessage="_message" />
-		<!--#endif-->
-		<!--#ifndef APP-PLUS-NVUE-->
-		<view id="_top" :style="showAm+(selectable?';user-select:text;-webkit-user-select:text':'')">
-			<!--#ifdef H5 || MP-360-->
-			<div :id="'rtf'+uid"></div>
-			<!--#endif-->
-			<!--#ifndef H5 || MP-360-->
-			<trees :nodes="nodes" :lazyLoad="lazyLoad" :loading="loadingImg" />
-			<!--#endif-->
-		</view>
-		<!--#endif-->
-	</view>
-</template>
-
-<script>
-	// #ifndef H5 || APP-PLUS-NVUE || MP-360
-	import trees from './libs/trees';
-	var cache = {},
-		// #ifdef MP-WEIXIN || MP-TOUTIAO
-		fs = uni.getFileSystemManager ? uni.getFileSystemManager() : null,
-		// #endif
-		Parser = require('./libs/MpHtmlParser.js');
-	var dom;
-	// 计算 cache 的 key
-	function hash(str) {
-		for (var i = str.length, val = 5381; i--;)
-			val += (val << 5) + str.charCodeAt(i);
-		return val;
-	}
-	// #endif
-	// #ifdef H5 || APP-PLUS-NVUE || MP-360
-	var windowWidth = uni.getSystemInfoSync().windowWidth,
-		cfg = require('./libs/config.js');
-	// #endif
-	// #ifdef APP-PLUS-NVUE
-	var weexDom = weex.requireModule('dom');
-	// #endif
-	/**
-	 * Parser 富文本组件
-	 * @tutorial https://github.com/jin-yufeng/Parser
-	 * @property {String} html 富文本数据
-	 * @property {Boolean} autopause 是否在播放一个视频时自动暂停其他视频
-	 * @property {Boolean} autoscroll 是否自动给所有表格添加一个滚动层
-	 * @property {Boolean} autosetTitle 是否自动将 title 标签中的内容设置到页面标题
-	 * @property {Number} compress 压缩等级
-	 * @property {String} domain 图片、视频等链接的主域名
-	 * @property {Boolean} lazyLoad 是否开启图片懒加载
-	 * @property {String} loadingImg 图片加载完成前的占位图
-	 * @property {Boolean} selectable 是否开启长按复制
-	 * @property {Object} tagStyle 标签的默认样式
-	 * @property {Boolean} showWithAnimation 是否使用渐显动画
-	 * @property {Boolean} useAnchor 是否使用锚点
-	 * @property {Boolean} useCache 是否缓存解析结果
-	 * @event {Function} parse 解析完成事件
-	 * @event {Function} load dom 加载完成事件
-	 * @event {Function} ready 所有图片加载完毕事件
-	 * @event {Function} error 错误事件
-	 * @event {Function} imgtap 图片点击事件
-	 * @event {Function} linkpress 链接点击事件
-	 * @author JinYufeng
-	 * @version 20200728
-	 * @listens MIT
-	 */
-	export default {
-		name: 'parser',
-		data() {
-			return {
-				// #ifdef H5 || MP-360
-				uid: this._uid,
-				// #endif
-				// #ifdef APP-PLUS-NVUE
-				height: 1,
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				showAm: '',
-				// #endif
-				nodes: []
-			}
-		},
-		// #ifndef H5 || APP-PLUS-NVUE || MP-360
-		components: {
-			trees
-		},
-		// #endif
-		props: {
-			html: String,
-			autopause: {
-				type: Boolean,
-				default: true
-			},
-			autoscroll: Boolean,
-			autosetTitle: {
-				type: Boolean,
-				default: true
-			},
-			// #ifndef H5 || APP-PLUS-NVUE || MP-360
-			compress: Number,
-			loadingImg: String,
-			useCache: Boolean,
-			// #endif
-			domain: String,
-			lazyLoad: Boolean,
-			selectable: Boolean,
-			tagStyle: Object,
-			showWithAnimation: Boolean,
-			useAnchor: Boolean
-		},
-		watch: {
-			html(html) {
-				this.setContent(html);
-			}
-		},
-		created() {
-			// 图片数组
-			this.imgList = [];
-			this.imgList.each = function(f) {
-				for (var i = 0, len = this.length; i < len; i++)
-					this.setItem(i, f(this[i], i, this));
-			}
-			this.imgList.setItem = function(i, src) {
-				if (i == void 0 || !src) return;
-				// #ifndef MP-ALIPAY || APP-PLUS
-				// 去重
-				if (src.indexOf('http') == 0 && this.includes(src)) {
-					var newSrc = src.split('://')[0];
-					for (var j = newSrc.length, c; c = src[j]; j++) {
-						if (c == '/' && src[j - 1] != '/' && src[j + 1] != '/') break;
-						newSrc += Math.random() > 0.5 ? c.toUpperCase() : c;
-					}
-					newSrc += src.substr(j);
-					return this[i] = newSrc;
-				}
-				// #endif
-				this[i] = src;
-				// 暂存 data src
-				if (src.includes('data:image')) {
-					var filePath, info = src.match(/data:image\/(\S+?);(\S+?),(.+)/);
-					if (!info) return;
-					// #ifdef MP-WEIXIN || MP-TOUTIAO
-					filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}`;
-					fs && fs.writeFile({
-						filePath,
-						data: info[3],
-						encoding: info[2],
-						success: () => this[i] = filePath
-					})
-					// #endif
-					// #ifdef APP-PLUS
-					filePath = `_doc/parser_tmp/${Date.now()}.${info[1]}`;
-					var bitmap = new plus.nativeObj.Bitmap();
-					bitmap.loadBase64Data(src, () => {
-						bitmap.save(filePath, {}, () => {
-							bitmap.clear()
-							this[i] = filePath;
-						})
-					})
-					// #endif
-				}
-			}
-		},
-		mounted() {
-			// #ifdef H5 || MP-360
-			this.document = document.getElementById('rtf' + this._uid);
-			// #endif
-			// #ifndef H5 || APP-PLUS-NVUE || MP-360
-			if (dom) this.document = new dom(this);
-			// #endif
-			// #ifdef APP-PLUS-NVUE
-			this.document = this.$refs.web;
-			setTimeout(() => {
-				// #endif
-				if (this.html) this.setContent(this.html);
-				// #ifdef APP-PLUS-NVUE
-			}, 30)
-			// #endif
-		},
-		beforeDestroy() {
-			// #ifdef H5 || MP-360
-			if (this._observer) this._observer.disconnect();
-			// #endif
-			this.imgList.each(src => {
-				// #ifdef APP-PLUS
-				if (src && src.includes('_doc')) {
-					plus.io.resolveLocalFileSystemURL(src, entry => {
-						entry.remove();
-					});
-				}
-				// #endif
-				// #ifdef MP-WEIXIN || MP-TOUTIAO
-				if (src && src.includes(uni.env.USER_DATA_PATH))
-					fs && fs.unlink({
-						filePath: src
-					})
-				// #endif
-			})
-			clearInterval(this._timer);
-		},
-		methods: {
-			// 设置富文本内容
-			setContent(html, append) {
-				// #ifdef APP-PLUS-NVUE
-				if (!html)
-					return this.height = 1;
-				if (append)
-					this.$refs.web.evalJs("var b=document.createElement('div');b.innerHTML='" + html.replace(/'/g, "\\'") +
-						"';document.getElementById('parser').appendChild(b)");
-				else {
-					html =
-						'<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><style>html,body{width:100%;height:100%;overflow:hidden}body{margin:0}</style><base href="' +
-						this.domain + '"><div id="parser"' + (this.selectable ? '>' : ' style="user-select:none">') + this._handleHtml(html).replace(/\n/g, '\\n') +
-						'</div><script>"use strict";function e(e){if(window.__dcloud_weex_postMessage||window.__dcloud_weex_){var t={data:[e]};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(t):window.__dcloud_weex_.postMessage(JSON.stringify(t))}}document.body.onclick=function(){e({action:"click"})},' +
-						(this.showWithAnimation ? 'document.body.style.animation="_show .5s",' : '') +
-						'setTimeout(function(){e({action:"load",text:document.body.innerText,height:document.getElementById("parser").scrollHeight})},50);\x3c/script>';
-					this.$refs.web.evalJs("document.write('" + html.replace(/'/g, "\\'") + "');document.close()");
-				}
-				this.$refs.web.evalJs(
-					'var t=document.getElementsByTagName("title");t.length&&e({action:"getTitle",title:t[0].innerText});for(var o,n=document.getElementsByTagName("style"),r=1;o=n[r++];)o.innerHTML=o.innerHTML.replace(/body/g,"#parser");for(var a,c=document.getElementsByTagName("img"),s=[],i=0==c.length,d=0,l=0,g=0;a=c[l];l++)parseInt(a.style.width||a.getAttribute("width"))>' +
-					windowWidth + '&&(a.style.height="auto"),a.onload=function(){++d==c.length&&(i=!0)},a.onerror=function(){++d==c.length&&(i=!0),' + (cfg.errorImg ? 'this.src="' + cfg.errorImg + '",' : '') +
-					'e({action:"error",source:"img",target:this})},a.hasAttribute("ignore")||"A"==a.parentElement.nodeName||(a.i=g++,s.push(a.src),a.onclick=function(){e({action:"preview",img:{i:this.i,src:this.src}})});e({action:"getImgList",imgList:s});for(var u,m=document.getElementsByTagName("a"),f=0;u=m[f];f++)u.onclick=function(){var t,o=this.getAttribute("href");if("#"==o[0]){var n=document.getElementById(o.substr(1));n&&(t=n.offsetTop)}return e({action:"linkpress",href:o,offset:t}),!1};for(var h,y=document.getElementsByTagName("video"),v=0;h=y[v];v++)h.style.maxWidth="100%",h.onerror=function(){e({action:"error",source:"video",target:this})}' +
-					(this.autopause ? ',h.onplay=function(){for(var e,t=0;e=y[t];t++)e!=this&&e.pause()}' : '') +
-					';for(var _,p=document.getElementsByTagName("audio"),w=0;_=p[w];w++)_.onerror=function(){e({action:"error",source:"audio",target:this})};' +
-					(this.autoscroll ? 'for(var T,E=document.getElementsByTagName("table"),B=0;T=E[B];B++){var N=document.createElement("div");N.style.overflow="scroll",T.parentNode.replaceChild(N,T),N.appendChild(T)}' : '') +
-					'var x=document.getElementById("parser");clearInterval(window.timer),window.timer=setInterval(function(){i&&clearInterval(window.timer),e({action:"ready",ready:i,height:x.scrollHeight})},350)'
-				)
-				this.nodes = [1];
-				// #endif
-				// #ifdef H5 || MP-360
-				if (!html) {
-					if (this.rtf && !append) this.rtf.parentNode.removeChild(this.rtf);
-					return;
-				}
-				var div = document.createElement('div');
-				if (!append) {
-					if (this.rtf) this.rtf.parentNode.removeChild(this.rtf);
-					this.rtf = div;
-				} else {
-					if (!this.rtf) this.rtf = div;
-					else this.rtf.appendChild(div);
-				}
-				div.innerHTML = this._handleHtml(html, append);
-				for (var styles = this.rtf.getElementsByTagName('style'), i = 0, style; style = styles[i++];) {
-					style.innerHTML = style.innerHTML.replace(/body/g, '#rtf' + this._uid);
-					style.setAttribute('scoped', 'true');
-				}
-				// 懒加载
-				if (!this._observer && this.lazyLoad && IntersectionObserver) {
-					this._observer = new IntersectionObserver(changes => {
-						for (let item, i = 0; item = changes[i++];) {
-							if (item.isIntersecting) {
-								item.target.src = item.target.getAttribute('data-src');
-								item.target.removeAttribute('data-src');
-								this._observer.unobserve(item.target);
-							}
-						}
-					}, {
-						rootMargin: '500px 0px 500px 0px'
-					})
-				}
-				var _ts = this;
-				// 获取标题
-				var title = this.rtf.getElementsByTagName('title');
-				if (title.length && this.autosetTitle)
-					uni.setNavigationBarTitle({
-						title: title[0].innerText
-					})
-				// 图片处理
-				this.imgList.length = 0;
-				var imgs = this.rtf.getElementsByTagName('img');
-				for (let i = 0, j = 0, img; img = imgs[i]; i++) {
-					if (parseInt(img.style.width || img.getAttribute('width')) > windowWidth)
-						img.style.height = 'auto';
-					var src = img.getAttribute('src');
-					if (this.domain && src) {
-						if (src[0] == '/') {
-							if (src[1] == '/')
-								img.src = (this.domain.includes('://') ? this.domain.split('://')[0] : '') + ':' + src;
-							else img.src = this.domain + src;
-						} else if (!src.includes('://')) img.src = this.domain + '/' + src;
-					}
-					if (!img.hasAttribute('ignore') && img.parentElement.nodeName != 'A') {
-						img.i = j++;
-						_ts.imgList.push(img.src || img.getAttribute('data-src'));
-						img.onclick = function() {
-							var preview = true;
-							this.ignore = () => preview = false;
-							_ts.$emit('imgtap', this);
-							if (preview) {
-								uni.previewImage({
-									current: this.i,
-									urls: _ts.imgList
-								});
-							}
-						}
-					}
-					img.onerror = function() {
-						if (cfg.errorImg)
-							_ts.imgList[this.i] = this.src = cfg.errorImg;
-						_ts.$emit('error', {
-							source: 'img',
-							target: this
-						});
-					}
-					if (_ts.lazyLoad && this._observer && img.src && img.i != 0) {
-						img.setAttribute('data-src', img.src);
-						img.removeAttribute('src');
-						this._observer.observe(img);
-					}
-				}
-				// 链接处理
-				var links = this.rtf.getElementsByTagName('a');
-				for (var link of links) {
-					link.onclick = function() {
-						var jump = true,
-							href = this.getAttribute('href');
-						_ts.$emit('linkpress', {
-							href,
-							ignore: () => jump = false
-						});
-						if (jump && href) {
-							if (href[0] == '#') {
-								if (_ts.useAnchor) {
-									_ts.navigateTo({
-										id: href.substr(1)
-									})
-								}
-							} else if (href.indexOf('http') == 0 || href.indexOf('//') == 0)
-								return true;
-							else
-								uni.navigateTo({
-									url: href
-								})
-						}
-						return false;
-					}
-				}
-				// 视频处理
-				var videos = this.rtf.getElementsByTagName('video');
-				_ts.videoContexts = videos;
-				for (let video, i = 0; video = videos[i++];) {
-					video.style.maxWidth = '100%';
-					video.onerror = function() {
-						_ts.$emit('error', {
-							source: 'video',
-							target: this
-						});
-					}
-					video.onplay = function() {
-						if (_ts.autopause)
-							for (let item, i = 0; item = _ts.videoContexts[i++];)
-								if (item != this) item.pause();
-					}
-				}
-				// 音频处理
-				var audios = this.rtf.getElementsByTagName('audio');
-				for (var audio of audios)
-					audio.onerror = function() {
-						_ts.$emit('error', {
-							source: 'audio',
-							target: this
-						});
-					}
-				// 表格处理
-				if (this.autoscroll) {
-					var tables = this.rtf.getElementsByTagName('table');
-					for (var table of tables) {
-						let div = document.createElement('div');
-						div.style.overflow = 'scroll';
-						table.parentNode.replaceChild(div, table);
-						div.appendChild(table);
-					}
-				}
-				if (!append) this.document.appendChild(this.rtf);
-				this.$nextTick(() => {
-					this.nodes = [1];
-					this.$emit('load');
-				});
-				setTimeout(() => this.showAm = '', 500);
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				// #ifndef H5 || MP-360
-				var nodes;
-				if (!html) return this.nodes = [];
-				var parser = new Parser(html, this);
-				// 缓存读取
-				if (this.useCache) {
-					var hashVal = hash(html);
-					if (cache[hashVal])
-						nodes = cache[hashVal];
-					else {
-						nodes = parser.parse();
-						cache[hashVal] = nodes;
-					}
-				} else nodes = parser.parse();
-				this.$emit('parse', nodes);
-				if (append) this.nodes = this.nodes.concat(nodes);
-				else this.nodes = nodes;
-				if (nodes.length && nodes.title && this.autosetTitle)
-					uni.setNavigationBarTitle({
-						title: nodes.title
-					})
-				if (this.imgList) this.imgList.length = 0;
-				this.videoContexts = [];
-				this.$nextTick(() => {
-					(function f(cs) {
-						for (var i = cs.length; i--;) {
-							if (cs[i].top) {
-								cs[i].controls = [];
-								cs[i].init();
-								f(cs[i].$children);
-							}
-						}
-					})(this.$children)
-					this.$emit('load');
-				})
-				// #endif
-				var height;
-				clearInterval(this._timer);
-				this._timer = setInterval(() => {
-					// #ifdef H5 || MP-360
-					this.rect = this.rtf.getBoundingClientRect();
-					// #endif
-					// #ifndef H5 || MP-360
-					uni.createSelectorQuery().in(this)
-						.select('#_top').boundingClientRect().exec(res => {
-							if (!res) return;
-							this.rect = res[0];
-							// #endif
-							if (this.rect.height == height) {
-								this.$emit('ready', this.rect)
-								clearInterval(this._timer);
-							}
-							height = this.rect.height;
-							// #ifndef H5 || MP-360
-						});
-					// #endif
-				}, 350);
-				if (this.showWithAnimation && !append) this.showAm = 'animation:_show .5s';
-				// #endif
-			},
-			// 获取文本内容
-			getText(ns = this.nodes) {
-				var txt = '';
-				// #ifdef APP-PLUS-NVUE
-				txt = this._text;
-				// #endif
-				// #ifdef H5 || MP-360
-				txt = this.rtf.innerText;
-				// #endif
-				// #ifndef H5 || APP-PLUS-NVUE || MP-360
-				for (var i = 0, n; n = ns[i++];) {
-					if (n.type == 'text') txt += n.text.replace(/&nbsp;/g, '\u00A0').replace(/&lt;/g, '<').replace(/&gt;/g, '>')
-						.replace(/&amp;/g, '&');
-					else if (n.type == 'br') txt += '\n';
-					else {
-						// 块级标签前后加换行
-						var block = n.name == 'p' || n.name == 'div' || n.name == 'tr' || n.name == 'li' || (n.name[0] == 'h' && n.name[1] >
-							'0' && n.name[1] < '7');
-						if (block && txt && txt[txt.length - 1] != '\n') txt += '\n';
-						if (n.children) txt += this.getText(n.children);
-						if (block && txt[txt.length - 1] != '\n') txt += '\n';
-						else if (n.name == 'td' || n.name == 'th') txt += '\t';
-					}
-				}
-				// #endif
-				return txt;
-			},
-			// 锚点跳转
-			in (obj) {
-				if (obj.page && obj.selector && obj.scrollTop) this._in = obj;
-			},
-			navigateTo(obj) {
-				if (!this.useAnchor) return obj.fail && obj.fail('Anchor is disabled');
-				// #ifdef APP-PLUS-NVUE
-				if (!obj.id)
-					weexDom.scrollToElement(this.$refs.web);
-				else
-					this.$refs.web.evalJs('var pos=document.getElementById("' + obj.id +
-						'");if(pos)post({action:"linkpress",href:"#",offset:pos.offsetTop+' + (obj.offset || 0) + '})');
-				obj.success && obj.success();
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				var d = ' ';
-				// #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO
-				d = '>>>';
-				// #endif
-				var selector = uni.createSelectorQuery().in(this._in ? this._in.page : this).select((this._in ? this._in.selector :
-					'#_top') + (obj.id ? `${d}#${obj.id},${this._in?this._in.selector:'#_top'}${d}.${obj.id}` : '')).boundingClientRect();
-				if (this._in) selector.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect();
-				else selector.selectViewport().scrollOffset();
-				selector.exec(res => {
-					if (!res[0]) return obj.fail && obj.fail('Label not found')
-					var scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + (obj.offset || 0);
-					if (this._in) this._in.page[this._in.scrollTop] = scrollTop;
-					else uni.pageScrollTo({
-						scrollTop,
-						duration: 300
-					})
-					obj.success && obj.success();
-				})
-				// #endif
-			},
-			// 获取视频对象
-			getVideoContext(id) {
-				// #ifndef APP-PLUS-NVUE
-				if (!id) return this.videoContexts;
-				else
-					for (var i = this.videoContexts.length; i--;)
-						if (this.videoContexts[i].id == id) return this.videoContexts[i];
-				// #endif
-			},
-			// #ifdef H5 || APP-PLUS-NVUE || MP-360
-			_handleHtml(html, append) {
-				if (!append) {
-					// 处理 tag-style 和 userAgentStyles
-					var style = '<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}img{max-width:100%}';
-					for (var item in cfg.userAgentStyles)
-						style += `${item}{${cfg.userAgentStyles[item]}}`;
-					for (item in this.tagStyle)
-						style += `${item}{${this.tagStyle[item]}}`;
-					style += '</style>';
-					html = style + html;
-				}
-				// 处理 rpx
-				if (html.includes('rpx'))
-					html = html.replace(/[0-9.]+\s*rpx/g, $ => (parseFloat($) * windowWidth / 750) + 'px');
-				return html;
-			},
-			// #endif
-			// #ifdef APP-PLUS-NVUE
-			_message(e) {
-				// 接收 web-view 消息
-				var d = e.detail.data[0];
-				switch (d.action) {
-					case 'load':
-						this.$emit('load');
-						this.height = d.height;
-						this._text = d.text;
-						break;
-					case 'getTitle':
-						if (this.autosetTitle)
-							uni.setNavigationBarTitle({
-								title: d.title
-							})
-						break;
-					case 'getImgList':
-						this.imgList.length = 0;
-						for (var i = d.imgList.length; i--;)
-							this.imgList.setItem(i, d.imgList[i]);
-						break;
-					case 'preview':
-						var preview = true;
-						d.img.ignore = () => preview = false;
-						this.$emit('imgtap', d.img);
-						if (preview)
-							uni.previewImage({
-								current: d.img.i,
-								urls: this.imgList
-							})
-						break;
-					case 'linkpress':
-						var jump = true,
-							href = d.href;
-						this.$emit('linkpress', {
-							href,
-							ignore: () => jump = false
-						})
-						if (jump && href) {
-							if (href[0] == '#') {
-								if (this.useAnchor)
-									weexDom.scrollToElement(this.$refs.web, {
-										offset: d.offset
-									})
-							} else if (href.includes('://'))
-								plus.runtime.openWeb(href);
-							else
-								uni.navigateTo({
-									url: href
-								})
-						}
-						break;
-					case 'error':
-						if (d.source == 'img' && cfg.errorImg)
-							this.imgList.setItem(d.target.i, cfg.errorImg);
-						this.$emit('error', {
-							source: d.source,
-							target: d.target
-						})
-						break;
-					case 'ready':
-						this.height = d.height;
-						if (d.ready) uni.createSelectorQuery().in(this).select('#_top').boundingClientRect().exec(res => {
-							this.rect = res[0];
-							this.$emit('ready', res[0]);
-						})
-						break;
-					case 'click':
-						this.$emit('click');
-						this.$emit('tap');
-				}
-			},
-			// #endif
-		}
-	}
-</script>
-
-<style>
-	@keyframes _show {
-		0% {
-			opacity: 0;
-		}
-
-		100% {
-			opacity: 1;
-		}
-	}
-
-	/* #ifdef MP-WEIXIN */
-	:host {
-		display: block;
-		overflow: scroll;
-		-webkit-overflow-scrolling: touch;
-	}
-
-	/* #endif */
-</style>

+ 0 - 97
components/jyf-parser/libs/CssHandler.js

@@ -1,97 +0,0 @@
-const cfg = require('./config.js'),
-	isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
-
-function CssHandler(tagStyle) {
-	var styles = Object.assign(Object.create(null), cfg.userAgentStyles);
-	for (var item in tagStyle)
-		styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item];
-	this.styles = styles;
-}
-CssHandler.prototype.getStyle = function(data) {
-	this.styles = new parser(data, this.styles).parse();
-}
-CssHandler.prototype.match = function(name, attrs) {
-	var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : '';
-	if (attrs.class) {
-		var items = attrs.class.split(' ');
-		for (var i = 0, item; item = items[i]; i++)
-			if (tmp = this.styles['.' + item])
-				matched += tmp + ';';
-	}
-	if (tmp = this.styles['#' + attrs.id])
-		matched += tmp + ';';
-	return matched;
-}
-module.exports = CssHandler;
-
-function parser(data, init) {
-	this.data = data;
-	this.floor = 0;
-	this.i = 0;
-	this.list = [];
-	this.res = init;
-	this.state = this.Space;
-}
-parser.prototype.parse = function() {
-	for (var c; c = this.data[this.i]; this.i++)
-		this.state(c);
-	return this.res;
-}
-parser.prototype.section = function() {
-	return this.data.substring(this.start, this.i);
-}
-// 状态机
-parser.prototype.Space = function(c) {
-	if (c == '.' || c == '#' || isLetter(c)) {
-		this.start = this.i;
-		this.state = this.Name;
-	} else if (c == '/' && this.data[this.i + 1] == '*')
-		this.Comment();
-	else if (!cfg.blankChar[c] && c != ';')
-		this.state = this.Ignore;
-}
-parser.prototype.Comment = function() {
-	this.i = this.data.indexOf('*/', this.i) + 1;
-	if (!this.i) this.i = this.data.length;
-	this.state = this.Space;
-}
-parser.prototype.Ignore = function(c) {
-	if (c == '{') this.floor++;
-	else if (c == '}' && !--this.floor) this.state = this.Space;
-}
-parser.prototype.Name = function(c) {
-	if (cfg.blankChar[c]) {
-		this.list.push(this.section());
-		this.state = this.NameSpace;
-	} else if (c == '{') {
-		this.list.push(this.section());
-		this.Content();
-	} else if (c == ',') {
-		this.list.push(this.section());
-		this.Comma();
-	} else if (!isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_')
-		this.state = this.Ignore;
-}
-parser.prototype.NameSpace = function(c) {
-	if (c == '{') this.Content();
-	else if (c == ',') this.Comma();
-	else if (!cfg.blankChar[c]) this.state = this.Ignore;
-}
-parser.prototype.Comma = function() {
-	while (cfg.blankChar[this.data[++this.i]]);
-	if (this.data[this.i] == '{') this.Content();
-	else {
-		this.start = this.i--;
-		this.state = this.Name;
-	}
-}
-parser.prototype.Content = function() {
-	this.start = ++this.i;
-	if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length;
-	var content = this.section();
-	for (var i = 0, item; item = this.list[i++];)
-		if (this.res[item]) this.res[item] += ';' + content;
-		else this.res[item] = content;
-	this.list = [];
-	this.state = this.Space;
-}

+ 0 - 535
components/jyf-parser/libs/MpHtmlParser.js

@@ -1,535 +0,0 @@
-/**
- * html 解析器
- * @tutorial https://github.com/jin-yufeng/Parser
- * @version 20200728
- * @author JinYufeng
- * @listens MIT
- */
-const cfg = require('./config.js'),
-	blankChar = cfg.blankChar,
-	CssHandler = require('./CssHandler.js'),
-	windowWidth = uni.getSystemInfoSync().windowWidth;
-var emoji;
-
-function MpHtmlParser(data, options = {}) {
-	this.attrs = {};
-	this.CssHandler = new CssHandler(options.tagStyle, windowWidth);
-	this.data = data;
-	this.domain = options.domain;
-	this.DOM = [];
-	this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0;
-	options.prot = (this.domain || '').includes('://') ? this.domain.split('://')[0] : 'http';
-	this.options = options;
-	this.state = this.Text;
-	this.STACK = [];
-	// 工具函数
-	this.bubble = () => {
-		for (var i = this.STACK.length, item; item = this.STACK[--i];) {
-			if (cfg.richOnlyTags[item.name]) {
-				if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1;
-				return false;
-			}
-			item.c = 1;
-		}
-		return true;
-	}
-	this.decode = (val, amp) => {
-		var i = -1,
-			j, en;
-		while (1) {
-			if ((i = val.indexOf('&', i + 1)) == -1) break;
-			if ((j = val.indexOf(';', i + 2)) == -1) break;
-			if (val[i + 1] == '#') {
-				en = parseInt((val[i + 2] == 'x' ? '0' : '') + val.substring(i + 2, j));
-				if (!isNaN(en)) val = val.substr(0, i) + String.fromCharCode(en) + val.substr(j + 1);
-			} else {
-				en = val.substring(i + 1, j);
-				if (cfg.entities[en] || en == amp)
-					val = val.substr(0, i) + (cfg.entities[en] || '&') + val.substr(j + 1);
-			}
-		}
-		return val;
-	}
-	this.getUrl = url => {
-		if (url[0] == '/') {
-			if (url[1] == '/') url = this.options.prot + ':' + url;
-			else if (this.domain) url = this.domain + url;
-		} else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://'))
-			url = this.domain + '/' + url;
-		return url;
-	}
-	this.isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>');
-	this.section = () => this.data.substring(this.start, this.i);
-	this.parent = () => this.STACK[this.STACK.length - 1];
-	this.siblings = () => this.STACK.length ? this.parent().children : this.DOM;
-}
-MpHtmlParser.prototype.parse = function() {
-	if (emoji) this.data = emoji.parseEmoji(this.data);
-	for (var c; c = this.data[this.i]; this.i++)
-		this.state(c);
-	if (this.state == this.Text) this.setText();
-	while (this.STACK.length) this.popNode(this.STACK.pop());
-	return this.DOM;
-}
-// 设置属性
-MpHtmlParser.prototype.setAttr = function() {
-	var name = this.attrName.toLowerCase(),
-		val = this.attrVal;
-	if (cfg.boolAttrs[name]) this.attrs[name] = 'T';
-	else if (val) {
-		if (name == 'src' || (name == 'data-src' && !this.attrs.src)) this.attrs.src = this.getUrl(this.decode(val, 'amp'));
-		else if (name == 'href' || name == 'style') this.attrs[name] = this.decode(val, 'amp');
-		else if (name.substr(0, 5) != 'data-') this.attrs[name] = val;
-	}
-	this.attrVal = '';
-	while (blankChar[this.data[this.i]]) this.i++;
-	if (this.isClose()) this.setNode();
-	else {
-		this.start = this.i;
-		this.state = this.AttrName;
-	}
-}
-// 设置文本节点
-MpHtmlParser.prototype.setText = function() {
-	var back, text = this.section();
-	if (!text) return;
-	text = (cfg.onText && cfg.onText(text, () => back = true)) || text;
-	if (back) {
-		this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i);
-		let j = this.start + text.length;
-		for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]);
-		return;
-	}
-	if (!this.pre) {
-		// 合并空白符
-		var flag, tmp = [];
-		for (let i = text.length, c; c = text[--i];)
-			if (!blankChar[c]) {
-				tmp.unshift(c);
-				if (!flag) flag = 1;
-			} else {
-				if (tmp[0] != ' ') tmp.unshift(' ');
-				if (c == '\n' && flag == void 0) flag = 0;
-			}
-		if (flag == 0) return;
-		text = tmp.join('');
-	}
-	this.siblings().push({
-		type: 'text',
-		text: this.decode(text)
-	});
-}
-// 设置元素节点
-MpHtmlParser.prototype.setNode = function() {
-	var node = {
-			name: this.tagName.toLowerCase(),
-			attrs: this.attrs
-		},
-		close = cfg.selfClosingTags[node.name];
-	if (this.options.nodes.length) node.type = 'node';
-	this.attrs = {};
-	if (!cfg.ignoreTags[node.name]) {
-		// 处理属性
-		var attrs = node.attrs,
-			style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''),
-			styleObj = {};
-		if (attrs.id) {
-			if (this.options.compress & 1) attrs.id = void 0;
-			else if (this.options.useAnchor) this.bubble();
-		}
-		if ((this.options.compress & 2) && attrs.class) attrs.class = void 0;
-		switch (node.name) {
-			case 'a':
-			case 'ad': // #ifdef APP-PLUS
-			case 'iframe':
-				// #endif
-				this.bubble();
-				break;
-			case 'font':
-				if (attrs.color) {
-					styleObj['color'] = attrs.color;
-					attrs.color = void 0;
-				}
-				if (attrs.face) {
-					styleObj['font-family'] = attrs.face;
-					attrs.face = void 0;
-				}
-				if (attrs.size) {
-					var size = parseInt(attrs.size);
-					if (size < 1) size = 1;
-					else if (size > 7) size = 7;
-					var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];
-					styleObj['font-size'] = map[size - 1];
-					attrs.size = void 0;
-				}
-				break;
-			case 'embed':
-				// #ifndef APP-PLUS
-				var src = node.attrs.src || '',
-					type = node.attrs.type || '';
-				if (type.includes('video') || src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8'))
-					node.name = 'video';
-				else if (type.includes('audio') || src.includes('.m4a') || src.includes('.wav') || src.includes('.mp3') || src.includes(
-						'.aac'))
-					node.name = 'audio';
-				else break;
-				if (node.attrs.autostart)
-					node.attrs.autoplay = 'T';
-				node.attrs.controls = 'T';
-				// #endif
-				// #ifdef APP-PLUS
-				this.bubble();
-				break;
-				// #endif
-			case 'video':
-			case 'audio':
-				if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]);
-				else this[`${node.name}Num`]++;
-				if (node.name == 'video') {
-					if (this.videoNum > 3)
-						node.lazyLoad = 1;
-					if (attrs.width) {
-						styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px');
-						attrs.width = void 0;
-					}
-					if (attrs.height) {
-						styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px');
-						attrs.height = void 0;
-					}
-				}
-				if (!attrs.controls && !attrs.autoplay) attrs.controls = 'T';
-				attrs.source = [];
-				if (attrs.src) {
-					attrs.source.push(attrs.src);
-					attrs.src = void 0;
-				}
-				this.bubble();
-				break;
-			case 'td':
-			case 'th':
-				if (attrs.colspan || attrs.rowspan)
-					for (var k = this.STACK.length, item; item = this.STACK[--k];)
-						if (item.name == 'table') {
-							item.c = void 0;
-							break;
-						}
-		}
-		if (attrs.align) {
-			styleObj['text-align'] = attrs.align;
-			attrs.align = void 0;
-		}
-		// 压缩 style
-		var styles = style.split(';');
-		style = '';
-		for (var i = 0, len = styles.length; i < len; i++) {
-			var info = styles[i].split(':');
-			if (info.length < 2) continue;
-			let key = info[0].trim().toLowerCase(),
-				value = info.slice(1).join(':').trim();
-			if (value[0] == '-' || value.includes('safe'))
-				style += `;${key}:${value}`;
-			else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import'))
-				styleObj[key] = value;
-		}
-		if (node.name == 'img') {
-			if (attrs.src && !attrs.ignore) {
-				if (this.bubble())
-					attrs.i = (this.imgNum++).toString();
-				else attrs.ignore = 'T';
-			}
-			if (attrs.ignore) {
-				style += ';-webkit-touch-callout:none';
-				styleObj['max-width'] = '100%';
-			}
-			var width;
-			if (styleObj.width) width = styleObj.width;
-			else if (attrs.width) width = attrs.width.includes('%') ? attrs.width : attrs.width + 'px';
-			if (width) {
-				styleObj.width = width;
-				attrs.width = '100%';
-				if (parseInt(width) > windowWidth) {
-					styleObj.height = '';
-					if (attrs.height) attrs.height = void 0;
-				}
-			}
-			if (styleObj.height) {
-				attrs.height = styleObj.height;
-				styleObj.height = '';
-			} else if (attrs.height && !attrs.height.includes('%'))
-				attrs.height += 'px';
-		}
-		for (var key in styleObj) {
-			var value = styleObj[key];
-			if (!value) continue;
-			if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1;
-			// 填充链接
-			if (value.includes('url')) {
-				var j = value.indexOf('(');
-				if (j++ != -1) {
-					while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++;
-					value = value.substr(0, j) + this.getUrl(value.substr(j));
-				}
-			}
-			// 转换 rpx
-			else if (value.includes('rpx'))
-				value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px');
-			else if (key == 'white-space' && value.includes('pre') && !close)
-				this.pre = node.pre = true;
-			style += `;${key}:${value}`;
-		}
-		style = style.substr(1);
-		if (style) attrs.style = style;
-		if (!close) {
-			node.children = [];
-			if (node.name == 'pre' && cfg.highlight) {
-				this.remove(node);
-				this.pre = node.pre = true;
-			}
-			this.siblings().push(node);
-			this.STACK.push(node);
-		} else if (!cfg.filter || cfg.filter(node, this) != false)
-			this.siblings().push(node);
-	} else {
-		if (!close) this.remove(node);
-		else if (node.name == 'source') {
-			var parent = this.parent();
-			if (parent && (parent.name == 'video' || parent.name == 'audio') && node.attrs.src)
-				parent.attrs.source.push(node.attrs.src);
-		} else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href;
-	}
-	if (this.data[this.i] == '/') this.i++;
-	this.start = this.i + 1;
-	this.state = this.Text;
-}
-// 移除标签
-MpHtmlParser.prototype.remove = function(node) {
-	var name = node.name,
-		j = this.i;
-	// 处理 svg
-	var handleSvg = () => {
-		var src = this.data.substring(j, this.i + 1);
-		if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src;
-		var i = j;
-		while (this.data[j] != '<') j--;
-		src = this.data.substring(j, i).replace("viewbox", "viewBox") + src;
-		var parent = this.parent();
-		if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline'))
-			parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style;
-		this.siblings().push({
-			name: 'img',
-			attrs: {
-				src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'),
-				style: (/vertical[^;]+/.exec(node.attrs.style) || []).shift(),
-				ignore: 'T'
-			}
-		})
-	}
-	if (node.name == 'svg' && this.data[j] == '/') return handleSvg(this.i++);
-	while (1) {
-		if ((this.i = this.data.indexOf('</', this.i + 1)) == -1) {
-			if (name == 'pre' || name == 'svg') this.i = j;
-			else this.i = this.data.length;
-			return;
-		}
-		this.start = (this.i += 2);
-		while (!blankChar[this.data[this.i]] && !this.isClose()) this.i++;
-		if (this.section().toLowerCase() == name) {
-			// 代码块高亮
-			if (name == 'pre') {
-				this.data = this.data.substr(0, j + 1) + cfg.highlight(this.data.substring(j + 1, this.i - 5), node.attrs) + this.data
-					.substr(this.i - 5);
-				return this.i = j;
-			} else if (name == 'style')
-				this.CssHandler.getStyle(this.data.substring(j + 1, this.i - 7));
-			else if (name == 'title')
-				this.DOM.title = this.data.substring(j + 1, this.i - 7);
-			if ((this.i = this.data.indexOf('>', this.i)) == -1) this.i = this.data.length;
-			if (name == 'svg') handleSvg();
-			return;
-		}
-	}
-}
-// 节点出栈处理
-MpHtmlParser.prototype.popNode = function(node) {
-	// 空白符处理
-	if (node.pre) {
-		node.pre = this.pre = void 0;
-		for (let i = this.STACK.length; i--;)
-			if (this.STACK[i].pre)
-				this.pre = true;
-	}
-	var siblings = this.siblings(),
-		len = siblings.length,
-		childs = node.children;
-	if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false))
-		return siblings.pop();
-	var attrs = node.attrs;
-	// 替换一些标签名
-	if (cfg.blockTags[node.name]) node.name = 'div';
-	else if (!cfg.trustTags[node.name]) node.name = 'span';
-	// 处理列表
-	if (node.c && (node.name == 'ul' || node.name == 'ol')) {
-		if ((node.attrs.style || '').includes('list-style:none')) {
-			for (let i = 0, child; child = childs[i++];)
-				if (child.name == 'li')
-					child.name = 'div';
-		} else if (node.name == 'ul') {
-			var floor = 1;
-			for (let i = this.STACK.length; i--;)
-				if (this.STACK[i].name == 'ul') floor++;
-			if (floor != 1)
-				for (let i = childs.length; i--;)
-					childs[i].floor = floor;
-		} else {
-			for (let i = 0, num = 1, child; child = childs[i++];)
-				if (child.name == 'li') {
-					child.type = 'ol';
-					child.num = ((num, type) => {
-						if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26);
-						if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26);
-						if (type == 'i' || type == 'I') {
-							num = (num - 1) % 99 + 1;
-							var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
-								ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
-								res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || '');
-							if (type == 'i') return res.toLowerCase();
-							return res;
-						}
-						return num;
-					})(num++, attrs.type) + '.';
-				}
-		}
-	}
-	// 处理表格的边框
-	if (node.name == 'table') {
-		var padding = attrs.cellpadding,
-			spacing = attrs.cellspacing,
-			border = attrs.border;
-		if (node.c) {
-			this.bubble();
-			attrs.style = (attrs.style || '') + ';display:table';
-			if (!padding) padding = 2;
-			if (!spacing) spacing = 2;
-		}
-		if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`;
-		if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`;
-		if (border || padding || node.c)
-			(function f(ns) {
-				for (var i = 0, n; n = ns[i]; i++) {
-					if (n.type == 'text') continue;
-					var style = n.attrs.style || '';
-					if (node.c && n.name[0] == 't') {
-						n.c = 1;
-						style += ';display:table-' + (n.name == 'th' || n.name == 'td' ? 'cell' : (n.name == 'tr' ? 'row' : 'row-group'));
-					}
-					if (n.name == 'th' || n.name == 'td') {
-						if (border) style = `border:${border}px solid gray;${style}`;
-						if (padding) style = `padding:${padding}px;${style}`;
-					} else f(n.children || []);
-					if (style) n.attrs.style = style;
-				}
-			})(childs)
-		if (this.options.autoscroll) {
-			var table = Object.assign({}, node);
-			node.name = 'div';
-			node.attrs = {
-				style: 'overflow:scroll'
-			}
-			node.children = [table];
-		}
-	}
-	this.CssHandler.pop && this.CssHandler.pop(node);
-	// 自动压缩
-	if (node.name == 'div' && !Object.keys(attrs).length && childs.length == 1 && childs[0].name == 'div')
-		siblings[len - 1] = childs[0];
-}
-// 状态机
-MpHtmlParser.prototype.Text = function(c) {
-	if (c == '<') {
-		var next = this.data[this.i + 1],
-			isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
-		if (isLetter(next)) {
-			this.setText();
-			this.start = this.i + 1;
-			this.state = this.TagName;
-		} else if (next == '/') {
-			this.setText();
-			if (isLetter(this.data[++this.i + 1])) {
-				this.start = this.i + 1;
-				this.state = this.EndTag;
-			} else this.Comment();
-		} else if (next == '!' || next == '?') {
-			this.setText();
-			this.Comment();
-		}
-	}
-}
-MpHtmlParser.prototype.Comment = function() {
-	var key;
-	if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->';
-	else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>';
-	else key = '>';
-	if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length;
-	else this.i += key.length - 1;
-	this.start = this.i + 1;
-	this.state = this.Text;
-}
-MpHtmlParser.prototype.TagName = function(c) {
-	if (blankChar[c]) {
-		this.tagName = this.section();
-		while (blankChar[this.data[this.i]]) this.i++;
-		if (this.isClose()) this.setNode();
-		else {
-			this.start = this.i;
-			this.state = this.AttrName;
-		}
-	} else if (this.isClose()) {
-		this.tagName = this.section();
-		this.setNode();
-	}
-}
-MpHtmlParser.prototype.AttrName = function(c) {
-	if (c == '=' || blankChar[c] || this.isClose()) {
-		this.attrName = this.section();
-		if (blankChar[c])
-			while (blankChar[this.data[++this.i]]);
-		if (this.data[this.i] == '=') {
-			while (blankChar[this.data[++this.i]]);
-			this.start = this.i--;
-			this.state = this.AttrValue;
-		} else this.setAttr();
-	}
-}
-MpHtmlParser.prototype.AttrValue = function(c) {
-	if (c == '"' || c == "'") {
-		this.start++;
-		if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length;
-		this.attrVal = this.section();
-		this.i++;
-	} else {
-		for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++);
-		this.attrVal = this.section();
-	}
-	this.setAttr();
-}
-MpHtmlParser.prototype.EndTag = function(c) {
-	if (blankChar[c] || c == '>' || c == '/') {
-		var name = this.section().toLowerCase();
-		for (var i = this.STACK.length; i--;)
-			if (this.STACK[i].name == name) break;
-		if (i != -1) {
-			var node;
-			while ((node = this.STACK.pop()).name != name) this.popNode(node);
-			this.popNode(node);
-		} else if (name == 'p' || name == 'br')
-			this.siblings().push({
-				name,
-				attrs: {}
-			});
-		this.i = this.data.indexOf('>', this.i);
-		this.start = this.i + 1;
-		if (this.i == -1) this.i = this.data.length;
-		else this.state = this.Text;
-	}
-}
-module.exports = MpHtmlParser;

+ 0 - 80
components/jyf-parser/libs/config.js

@@ -1,80 +0,0 @@
-/* 配置文件 */
-var cfg = {
-	// 出错占位图
-	errorImg: null,
-	// 过滤器函数
-	filter: null,
-	// 代码高亮函数
-	highlight: null,
-	// 文本处理函数
-	onText: null,
-	// 实体编码列表
-	entities: {
-		quot: '"',
-		apos: "'",
-		semi: ';',
-		nbsp: '\xA0',
-		ensp: '\u2002',
-		emsp: '\u2003',
-		ndash: '–',
-		mdash: '—',
-		middot: '·',
-		lsquo: '‘',
-		rsquo: '’',
-		ldquo: '“',
-		rdquo: '”',
-		bull: '•',
-		hellip: '…'
-	},
-	blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'),
-	boolAttrs: makeMap('allowfullscreen,autoplay,autostart,controls,ignore,loop,muted'),
-	// 块级标签,将被转为 div
-	blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section'),
-	// 将被移除的标签
-	ignoreTags: makeMap('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr'),
-	// 只能被 rich-text 显示的标签
-	richOnlyTags: makeMap('a,colgroup,fieldset,legend,table'),
-	// 自闭合的标签
-	selfClosingTags: makeMap('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
-	// 信任的标签
-	trustTags: makeMap('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'),
-	// 默认的标签样式
-	userAgentStyles: {
-		address: 'font-style:italic',
-		big: 'display:inline;font-size:1.2em',
-		blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px',
-		caption: 'display:table-caption;text-align:center',
-		center: 'text-align:center',
-		cite: 'font-style:italic',
-		dd: 'margin-left:40px',
-		mark: 'background-color:yellow',
-		pre: 'font-family:monospace;white-space:pre;overflow:scroll',
-		s: 'text-decoration:line-through',
-		small: 'display:inline;font-size:0.8em',
-		u: 'text-decoration:underline'
-	}
-}
-
-function makeMap(str) {
-	var map = Object.create(null),
-		list = str.split(',');
-	for (var i = list.length; i--;)
-		map[list[i]] = true;
-	return map;
-}
-
-// #ifdef MP-WEIXIN
-if (wx.canIUse('editor')) {
-	cfg.blockTags.pre = void 0;
-	cfg.ignoreTags.rp = true;
-	Object.assign(cfg.richOnlyTags, makeMap('bdi,bdo,caption,rt,ruby'));
-	Object.assign(cfg.trustTags, makeMap('bdi,bdo,caption,pre,rt,ruby'));
-}
-// #endif
-
-// #ifdef APP-PLUS
-cfg.ignoreTags.iframe = void 0;
-Object.assign(cfg.trustTags, makeMap('embed,iframe'));
-// #endif
-
-module.exports = cfg;

+ 0 - 22
components/jyf-parser/libs/handler.wxs

@@ -1,22 +0,0 @@
-var inline = {
-	abbr: 1,
-	b: 1,
-	big: 1,
-	code: 1,
-	del: 1,
-	em: 1,
-	i: 1,
-	ins: 1,
-	label: 1,
-	q: 1,
-	small: 1,
-	span: 1,
-	strong: 1,
-	sub: 1,
-	sup: 1
-}
-module.exports = {
-	use: function(item) {
-		return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1
-	}
-}

+ 0 - 501
components/jyf-parser/libs/trees.vue

@@ -1,501 +0,0 @@
-<template>
-	<view :class="'interlayer '+(c||'')" :style="s">
-		<block v-for="(n, i) in nodes" v-bind:key="i">
-			<!--图片-->
-			<view v-if="n.name=='img'" :class="'_img '+n.attrs.class" :style="n.attrs.style" :data-attrs="n.attrs" @tap="imgtap">
-				<rich-text v-if="ctrl[i]!=0" :nodes="[{attrs:{src:loading&&(ctrl[i]||0)<2?loading:(lazyLoad&&!ctrl[i]?placeholder:(ctrl[i]==3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]" />
-				<image class="_image" :src="lazyLoad&&!ctrl[i]?placeholder:n.attrs.src" :lazy-load="lazyLoad"
-				 :show-menu-by-longpress="!n.attrs.ignore" :data-i="i" :data-index="n.attrs.i" data-source="img" @load="loadImg"
-				 @error="error" />
-			</view>
-			<!--文本-->
-			<text v-else-if="n.type=='text'" decode>{{n.text}}</text>
-			<!--#ifndef MP-BAIDU-->
-			<text v-else-if="n.name=='br'">\n</text>
-			<!--#endif-->
-			<!--视频-->
-			<view v-else-if="((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&ctrl[i]==undefined" :id="n.attrs.id" :class="'_video '+(n.attrs.class||'')"
-			 :style="n.attrs.style" :data-i="i" @tap="_loadVideo" />
-			<video v-else-if="n.name=='video'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :autoplay="n.attrs.autoplay||ctrl[i]==0"
-			 :controls="n.attrs.controls" :loop="n.attrs.loop" :muted="n.attrs.muted" :poster="n.attrs.poster" :src="n.attrs.source[ctrl[i]||0]"
-			 :unit-id="n.attrs['unit-id']" :data-id="n.attrs.id" :data-i="i" data-source="video" @error="error" @play="play" />
-			<!--音频-->
-			<audio v-else-if="n.name=='audio'" :ref="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :author="n.attrs.author"
-			 :autoplay="n.attrs.autoplay" :controls="n.attrs.controls" :loop="n.attrs.loop" :name="n.attrs.name" :poster="n.attrs.poster"
-			 :src="n.attrs.source[ctrl[i]||0]" :data-i="i" :data-id="n.attrs.id" data-source="audio"
-			 @error.native="error" @play.native="play" />
-			<!--链接-->
-			<view v-else-if="n.name=='a'" :id="n.attrs.id" :class="'_a '+(n.attrs.class||'')" hover-class="_hover" :style="n.attrs.style"
-			 :data-attrs="n.attrs" @tap="linkpress">
-				<trees class="_span" c="_span" :nodes="n.children" />
-			</view>
-			<!--广告-->
-			<!--<ad v-else-if="n.name=='ad'" :class="n.attrs.class" :style="n.attrs.style" :unit-id="n.attrs['unit-id']" :appid="n.attrs.appid" :apid="n.attrs.apid" :type="n.attrs.type" :adpid="n.attrs.adpid" data-source="ad" @error="error" />-->
-			<!--列表-->
-			<view v-else-if="n.name=='li'" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:flex;flex-direction:row'">
-				<view v-if="n.type=='ol'" class="_ol-bef">{{n.num}}</view>
-				<view v-else class="_ul-bef">
-					<view v-if="n.floor%3==0" class="_ul-p1">█</view>
-					<view v-else-if="n.floor%3==2" class="_ul-p2" />
-					<view v-else class="_ul-p1" style="border-radius:50%">█</view>
-				</view>
-				<trees class="_li" c="_li" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
-			</view>
-			<!--表格-->
-			<view v-else-if="n.name=='table'&&n.c" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:table'">
-				<view v-for="(tbody, o) in n.children" v-bind:key="o" :class="tbody.attrs.class" :style="(tbody.attrs.style||'')+(tbody.name[0]=='t'?';display:table-'+(tbody.name=='tr'?'row':'row-group'):'')">
-					<view v-for="(tr, p) in tbody.children" v-bind:key="p" :class="tr.attrs.class" :style="(tr.attrs.style||'')+(tr.name[0]=='t'?';display:table-'+(tr.name=='tr'?'row':'cell'):'')">
-						<trees v-if="tr.name=='td'" :nodes="tr.children" />
-						<trees v-else v-for="(td, q) in tr.children" v-bind:key="q" :class="td.attrs.class" :c="td.attrs.class" :style="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')"
-						 :s="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')" :nodes="td.children" />
-					</view>
-				</view>
-			</view>
-			<!--#ifdef APP-PLUS-->
-			<iframe v-else-if="n.name=='iframe'" :style="n.attrs.style" :allowfullscreen="n.attrs.allowfullscreen" :frameborder="n.attrs.frameborder"
-			 :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
-			<embed v-else-if="n.name=='embed'" :style="n.attrs.style" :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
-			<!--#endif-->
-			<!--富文本-->
-			<!--#ifdef MP-WEIXIN || MP-QQ || APP-PLUS-->
-			<rich-text v-else-if="handler.use(n)" :id="n.attrs.id" :class="'_p __'+n.name" :nodes="[n]" />
-			<!--#endif-->
-			<!--#ifndef MP-WEIXIN || MP-QQ || APP-PLUS-->
-			<rich-text v-else-if="!n.c" :id="n.attrs.id" :nodes="[n]" style="display:inline" />
-			<!--#endif-->
-			<trees v-else :class="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')" :c="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')"
-			 :style="n.attrs.style" :s="n.attrs.style" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
-		</block>
-	</view>
-</template>
-<script module="handler" lang="wxs" src="./handler.wxs"></script>
-<script>
-	global.Parser = {};
-	import trees from './trees'
-	const errorImg = require('../libs/config.js').errorImg;
-	export default {
-		components: {
-			trees
-		},
-		name: 'trees',
-		data() {
-			return {
-				ctrl: [],
-				placeholder: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>',
-				errorImg,
-				loadVideo: typeof plus == 'undefined',
-				// #ifndef MP-ALIPAY
-				c: '',
-				s: ''
-				// #endif
-			}
-		},
-		props: {
-			nodes: Array,
-			lazyLoad: Boolean,
-			loading: String,
-			// #ifdef MP-ALIPAY
-			c: String,
-			s: String
-			// #endif
-		},
-		mounted() {
-			for (this.top = this.$parent; this.top.$options.name != 'parser'; this.top = this.top.$parent);
-			this.init();
-		},
-		// #ifdef APP-PLUS
-		beforeDestroy() {
-			this.observer && this.observer.disconnect();
-		},
-		// #endif
-		methods: {
-			init() {
-				for (var i = this.nodes.length, n; n = this.nodes[--i];) {
-					if (n.name == 'img') {
-						this.top.imgList.setItem(n.attrs.i, n.attrs.src);
-						// #ifdef APP-PLUS
-						if (this.lazyLoad && !this.observer) {
-							this.observer = uni.createIntersectionObserver(this).relativeToViewport({
-								top: 500,
-								bottom: 500
-							});
-							setTimeout(() => {
-								this.observer.observe('._img', res => {
-									if (res.intersectionRatio) {
-										for (var j = this.nodes.length; j--;)
-											if (this.nodes[j].name == 'img')
-												this.$set(this.ctrl, j, 1);
-										this.observer.disconnect();
-									}
-								})
-							}, 0)
-						}
-						// #endif
-					} else if (n.name == 'video' || n.name == 'audio') {
-						var ctx;
-						if (n.name == 'video') {
-							ctx = uni.createVideoContext(n.attrs.id
-								// #ifndef MP-BAIDU
-								, this
-								// #endif
-							);
-						} else if (this.$refs[n.attrs.id])
-							ctx = this.$refs[n.attrs.id][0];
-						if (ctx) {
-							ctx.id = n.attrs.id;
-							this.top.videoContexts.push(ctx);
-						}
-					}
-				}
-				// #ifdef APP-PLUS
-				// APP 上避免 video 错位需要延时渲染
-				setTimeout(() => {
-					this.loadVideo = true;
-				}, 1000)
-				// #endif
-			},
-			play(e) {
-				var contexts = this.top.videoContexts;
-				if (contexts.length > 1 && this.top.autopause)
-					for (var i = contexts.length; i--;)
-						if (contexts[i].id != e.currentTarget.dataset.id)
-							contexts[i].pause();
-			},
-			imgtap(e) {
-				var attrs = e.currentTarget.dataset.attrs;
-				if (!attrs.ignore) {
-					var preview = true,
-						data = {
-							id: e.target.id,
-							src: attrs.src,
-							ignore: () => preview = false
-						};
-					global.Parser.onImgtap && global.Parser.onImgtap(data);
-					this.top.$emit('imgtap', data);
-					if (preview) {
-						var urls = this.top.imgList,
-							current = urls[attrs.i] ? parseInt(attrs.i) : (urls = [attrs.src], 0);
-						uni.previewImage({
-							current,
-							urls
-						})
-					}
-				}
-			},
-			loadImg(e) {
-				var i = e.currentTarget.dataset.i;
-				if (this.lazyLoad && !this.ctrl[i]) {
-					// #ifdef QUICKAPP-WEBVIEW
-					this.$set(this.ctrl, i, 0);
-					this.$nextTick(function() {
-						// #endif
-						// #ifndef APP-PLUS
-						this.$set(this.ctrl, i, 1);
-						// #endif
-						// #ifdef QUICKAPP-WEBVIEW
-					})
-					// #endif
-				} else if (this.loading && this.ctrl[i] != 2) {
-					// #ifdef QUICKAPP-WEBVIEW
-					this.$set(this.ctrl, i, 0);
-					this.$nextTick(function() {
-						// #endif
-						this.$set(this.ctrl, i, 2);
-						// #ifdef QUICKAPP-WEBVIEW
-					})
-					// #endif
-				}
-			},
-			linkpress(e) {
-				var jump = true,
-					attrs = e.currentTarget.dataset.attrs;
-				attrs.ignore = () => jump = false;
-				global.Parser.onLinkpress && global.Parser.onLinkpress(attrs);
-				this.top.$emit('linkpress', attrs);
-				if (jump) {
-					// #ifdef MP
-					if (attrs['app-id']) {
-						return uni.navigateToMiniProgram({
-							appId: attrs['app-id'],
-							path: attrs.path
-						})
-					}
-					// #endif
-					if (attrs.href) {
-						if (attrs.href[0] == '#') {
-							if (this.top.useAnchor)
-								this.top.navigateTo({
-									id: attrs.href.substring(1)
-								})
-						} else if (attrs.href.indexOf('http') == 0 || attrs.href.indexOf('//') == 0) {
-							// #ifdef APP-PLUS
-							plus.runtime.openWeb(attrs.href);
-							// #endif
-							// #ifndef APP-PLUS
-							uni.setClipboardData({
-								data: attrs.href,
-								success: () =>
-									uni.showToast({
-										title: '链接已复制'
-									})
-							})
-							// #endif
-						} else
-							uni.navigateTo({
-								url: attrs.href,
-								fail() {
-									uni.switchTab({
-										url: attrs.href,
-									})
-								}
-							})
-					}
-				}
-			},
-			error(e) {
-				var target = e.currentTarget,
-					source = target.dataset.source,
-					i = target.dataset.i;
-				if (source == 'video' || source == 'audio') {
-					// 加载其他 source
-					var index = this.ctrl[i] ? this.ctrl[i].i + 1 : 1;
-					if (index < this.nodes[i].attrs.source.length)
-						this.$set(this.ctrl, i, index);
-					if (e.detail.__args__)
-						e.detail = e.detail.__args__[0];
-				} else if (errorImg && source == 'img') {
-					this.top.imgList.setItem(target.dataset.index, errorImg);
-					this.$set(this.ctrl, i, 3);
-				}
-				this.top && this.top.$emit('error', {
-					source,
-					target,
-					errMsg: e.detail.errMsg
-				});
-			},
-			_loadVideo(e) {
-				this.$set(this.ctrl, e.target.dataset.i, 0);
-			}
-		}
-	}
-</script>
-
-<style>
-	/* 在这里引入自定义样式 */
-
-	/* 链接和图片效果 */
-	._a {
-		display: inline;
-		padding: 1.5px 0 1.5px 0;
-		color: #366092;
-		word-break: break-all;
-	}
-
-	._hover {
-		text-decoration: underline;
-		opacity: 0.7;
-	}
-
-	._img {
-		display: inline-block;
-		max-width: 100%;
-		overflow: hidden;
-	}
-
-	/* #ifdef MP-WEIXIN */
-	:host {
-		display: inline;
-	}
-
-	/* #endif */
-
-	/* #ifndef MP-ALIPAY || APP-PLUS */
-	.interlayer {
-		display: inherit;
-		flex-direction: inherit;
-		flex-wrap: inherit;
-		align-content: inherit;
-		align-items: inherit;
-		justify-content: inherit;
-		width: 100%;
-		white-space: inherit;
-	}
-
-	/* #endif */
-
-	._b,
-	._strong {
-		font-weight: bold;
-	}
-
-	/* #ifndef MP-ALIPAY */
-	._blockquote,
-	._div,
-	._p,
-	._ol,
-	._ul,
-	._li {
-		display: block;
-	}
-	
-	/* #endif */
-
-	._code {
-		font-family: monospace;
-	}
-
-	._del {
-		text-decoration: line-through;
-	}
-
-	._em,
-	._i {
-		font-style: italic;
-	}
-
-	._h1 {
-		font-size: 2em;
-	}
-
-	._h2 {
-		font-size: 1.5em;
-	}
-
-	._h3 {
-		font-size: 1.17em;
-	}
-
-	._h5 {
-		font-size: 0.83em;
-	}
-
-	._h6 {
-		font-size: 0.67em;
-	}
-
-	._h1,
-	._h2,
-	._h3,
-	._h4,
-	._h5,
-	._h6 {
-		display: block;
-		font-weight: bold;
-	}
-
-	._image {
-		display: block;
-		width: 100%;
-		height: 360px;
-		margin-top: -360px;
-		opacity: 0;
-	}
-
-	._ins {
-		text-decoration: underline;
-	}
-
-	._li {
-		flex: 1;
-		width: 0;
-	}
-
-	._ol-bef {
-		width: 36px;
-		margin-right: 5px;
-		text-align: right;
-	}
-
-	._ul-bef {
-		display: block;
-		margin: 0 12px 0 23px;
-		line-height: normal;
-	}
-
-	._ol-bef,
-	._ul-bef {
-		flex: none;
-		user-select: none;
-	}
-
-	._ul-p1 {
-		display: inline-block;
-		width: 0.3em;
-		height: 0.3em;
-		overflow: hidden;
-		line-height: 0.3em;
-	}
-
-	._ul-p2 {
-		display: inline-block;
-		width: 0.23em;
-		height: 0.23em;
-		border: 0.05em solid black;
-		border-radius: 50%;
-	}
-
-	._q::before {
-		content: '"';
-	}
-
-	._q::after {
-		content: '"';
-	}
-
-	._sub {
-		font-size: smaller;
-		vertical-align: sub;
-	}
-
-	._sup {
-		font-size: smaller;
-		vertical-align: super;
-	}
-
-	/* #ifdef MP-ALIPAY || APP-PLUS || QUICKAPP-WEBVIEW */
-	._abbr,
-	._b,
-	._code,
-	._del,
-	._em,
-	._i,
-	._ins,
-	._label,
-	._q,
-	._span,
-	._strong,
-	._sub,
-	._sup {
-		display: inline;
-	}
-
-	/* #endif */
-
-	/* #ifdef MP-WEIXIN || MP-QQ */
-	.__bdo,
-	.__bdi,
-	.__ruby,
-	.__rt {
-		display: inline-block;
-	}
-
-	/* #endif */
-	._video {
-		position: relative;
-		display: inline-block;
-		width: 300px;
-		height: 225px;
-		background-color: black;
-	}
-
-	._video::after {
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		margin: -15px 0 0 -15px;
-		content: '';
-		border-color: transparent transparent transparent white;
-		border-style: solid;
-		border-width: 15px 0 15px 30px;
-	}
-</style>

+ 0 - 421
components/newlist/nowList.vue

@@ -1,421 +0,0 @@
-<template>
-	<view class="other">
-		<view class="other-1">大家还在拼</view>
-		
-		<view class="preferred_item" v-for="item in recommendedlist" @click.stop="ToKaiTuan(item)">
-			<view class="flex_item" style="overflow: hidden;">
-				<view class="tlist-img">
-					<view class="leftImgIcon">AA团</view>
-					<!-- <view class="leftImgIcon" v-if="sid == 129">达人团</view> -->
-					<view class="img"><image :src="item.image" mode="scaleToFill"></image></view>
-				</view>
-				<view class="tlist-img " v-for="imgItem in item.images">
-					<view class="img"><image :src="imgItem" mode="scaleToFill"></image></view>
-				</view>
-			</view>
-			<view class="goods_name">
-				<view class="goods_title flex_item">
-					<view class="text">{{ item.min_people }}人团</view>
-					<view class="title">{{ item.title }}</view>
-				</view>
-				<view class="goods-height">
-					<!-- <view class="goods_num clamp">{{ item.info }}</view> -->
-					<view class="flex goods-peplo">
-						<view class="goods-tip flex_item">
-							<view class="peplo">库存剩{{ item.percent | parseIntTo }}%</view>
-							<view class="make">{{ item.mark }}</view>
-						</view>
-						<view class="right flex_item">
-							<image src="/static/icon/hot.png" mode="aspectFill"></image>
-							<text>已拼{{ item.sales }}份</text>
-						</view>
-					</view>
-				</view>
-				<view class="price flex">
-					<view class="price_list">
-						<view class="price-red">
-							<text>单人仅付:</text>
-							<text class="moneyIcon">¥</text>
-							<text class="money">{{ item.price }}</text>
-							<text class="moneyType">/{{ item.unit_name }}</text>
-							<!-- <text class="outMoney">¥{{ item.product_price }}</text> -->
-						</view>
-					</view>
-					<view class="img position-relative" @click.stop="ToKaiTuan(item)">去开团</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	props: {
-		recommendedlist: {
-			type: Array,
-			default: function() {
-				return {
-				};
-			}
-		}
-	},
-	data() {
-		return {};
-	},
-	filters: {
-		parseIntTo(percent) {
-			percent = +percent * 100;
-			if (percent % 1 === 0) {
-				return percent;
-			} else {
-				percent = percent.toFixed(1);
-				return percent;
-			}
-		}
-	},
-	methods: {
-		// 去开团
-		ToKaiTuan(item) {
-			console.log(8754847)
-			let id = item.id;
-			uni.navigateTo({
-				url: '/pages/product/productGroup?id=' + id
-			});
-		},
-	}
-};
-</script>
-
-<style lang="scss">
-.other{
-		.other-1{
-			font-size:27rpx;
-			color:#333333;
-			line-height: 55rpx;
-		}
-		
-		.preferred_item {
-			width: 100%;
-			height: 100%;
-			padding: 25rpx 25rpx;
-			position: relative;
-			background-color: #FFFFFF;
-			border-radius: 15rpx;
-			margin-bottom: 15rpx;
-			.tlist-img {
-				width: 225rpx;
-				position: relative;
-				margin-right: 15rpx;
-				.leftImgIcon {
-					position: absolute;
-					top: 0;
-					left: 0;
-					font-size: 22rpx;
-					font-family: PingFangSC;
-					color: rgba(148, 71, 34, 1);
-					background: rgba(254, 242, 111, 1);
-					z-index: 99;
-					border-radius: 5rpx;
-					padding: 5rpx 10rpx;
-				}
-				.img {
-					width: 210rpx;
-					height: 210rpx;
-					image {
-						width: 100%;
-						height: 100%;
-						border-radius: 20rpx;
-					}
-				}
-				.stock {
-					margin-top: 13rpx;
-					font-size: 26rpx;
-					background: #fff1ee;
-					width: 100%;
-					color: #fb4912;
-					padding: 6rpx 0;
-					border-radius: 5rpx;
-					justify-content: center;
-					align-items: center;
-					position: absolute;
-					left: 0;
-					bottom: 0;
-					.img {
-						width: 20rpx;
-						height: 20rpx;
-						flex-shrink: 0;
-					}
-					.stock-num {
-						padding-left: 7rpx;
-						font-size: 22rpx;
-						border-radius: 5rpx;
-						height: 32rpx;
-						line-height: 32rpx;
-					}
-				}
-			}
-			.goods_name {
-				.goods_title {
-					padding-top: 15rpx;
-					color:rgba(0,0,0,1);
-					// white-space: nowrap;
-					// overflow: hidden;
-					// text-overflow: ellipsis;
-					font-size:32rpx;
-					color: $font-color-dark;
-					// height: 70rpx;
-					align-items: baseline;
-					.text{
-						border-radius: 8rpx;
-						border: 2rpx solid #FF1A27;
-						color: #FF1A27;
-						padding:0rpx 10rpx;
-						font-size: 26rpx !important;
-						margin-right: 15rpx;
-						
-					}
-					.title {
-						width: 80%;
-						overflow : hidden;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						-webkit-line-clamp: 2;
-						-webkit-box-orient: vertical;
-					}
-				}
-				.goods-height {
-					min-height: 60rpx;
-				}
-				.goods_num {
-					font-size: 26rpx;
-					color: #8f8f97;
-					padding-bottom: 15rpx;
-				}
-				.goods-peplo {
-					height: 45rpx;
-					margin-top: 15rpx;
-					.right {
-						color:#8e8e8e;
-						font-size: 24rpx;
-						width:195rpx;
-						image {
-							width: 30rpx;
-							height: 33rpx;
-							margin-right: 15rpx;
-						}
-					}
-					.goods-tip {
-						.peplo {
-							background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
-							padding: 5rpx 10rpx;
-							color: #ffffff;
-							border-top-left-radius:8rpx;
-							border-bottom-left-radius: 8rpx;
-						}
-						.make {
-							background-color: #fef26f;
-							color: #944722;
-							border-top-right-radius: 8rpx;
-							border-bottom-right-radius: 8rpx;
-						}
-						.make,
-						.peplo {
-							font-size: $font-sm;
-							padding: 5rpx 10rpx;
-						}
-					}
-				}
-				.price {
-					font-size: 28rpx;
-					position: relative;
-					padding-top: 15rpx;
-					.price_list {
-						.price-red {
-							font-size: 30rpx !important;
-							font-family: Source Han Sans CN;
-							color: rgba(253, 27, 42, 1);
-							font-size: $font-base;
-							font-weight: bold;
-							.moneyIcon {
-								font-weight: normal !important; 
-							}
-							.money {
-								font-size: 58rpx;
-							}
-							.moneyType {
-								font-weight: 400;
-							}
-							.outMoney {
-								font-weight: 400;
-								text-decoration: line-through;
-								color: rgba(142, 142, 142, 1);
-							}
-						}
-						.price-green {
-							color: #2dbd59;
-							font-size: 26rpx !important;
-							font-weight: bold;
-							text {
-								background: linear-gradient(45deg, rgba(21, 197, 52, 1), rgba(21, 197, 52, 1));
-								color: #ffffff;
-								padding: 0rpx 10rpx;
-								border-radius: 7rpx;
-								font-size: 24rpx !important;
-								margin-left: 15rpx;
-							}
-						}
-					}
-					.img {
-						width: 265rpx;
-						height: 74rpx;
-						line-height: 74rpx;
-						// background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
-						background: linear-gradient(270deg, rgba(181,116,242, 1) 0%, rgba(139,86,254, 1) 100%);
-						border-radius: 99rpx;
-						color: #ffffff;
-						font-size: $font-lg;
-						text-align: center;
-					}
-					.img1{
-						background-color: #D3D3D3;
-						width: 265rpx;
-						height: 74rpx;
-						line-height: 74rpx;
-						border-radius: 99rpx;
-						color: #ffffff;
-						font-size: $font-lg;
-						text-align: center;
-					}
-					.tomorrow {
-						background: #29a66e;
-						color: #ffffff;
-						border-radius: 25rpx;
-						padding: 10rpx 25rpx;
-					}
-				}
-			}
-		}
-		
-		
-		.other-2{
-			width: 100%;
-			background:#ffffff;
-			padding: 10rpx 15rpx ;
-			border-radius: 20rpx;
-			.content-row{
-				padding: 10rpx 0;
-				.row-1{
-					width: 210rpx;
-					position: relative;
-					margin-right: 20rpx;
-					text-align: center;
-					.row-1-1{
-						text-align: center;
-						height:40rpx;
-						background:#fff1ee;
-						border-radius:6rpx;
-						font-size:22rpx;
-						font-weight:500;
-						color:#fb4912;
-						line-height:40rpx;
-						image{
-							width: 23rpx;
-							height: 23rpx;
-							margin-right: 5rpx;
-						}
-					}
-					.img1{
-						width:170rpx;
-						height:170rpx;
-						border-radius:10rpx;
-					}
-					.img2{
-						position: absolute;
-						top: 0;
-						left: 16rpx;
-						width:80rpx;
-						height:32rpx;
-						border-radius:5px;
-					}
-				}
-				.row-2{
-					padding: 20rpx 0 20rpx 0;
-					width:calc(100% - 210rpx);
-					position: relative;
-					
-					border-bottom: 1px solid #EAEAEA;
-					.word-1{
-						font-size:32rpx;
-						font-weight:bold;
-						color:#141821;
-						margin-left: 10rpx;
-						overflow: hidden;
-						text-overflow: ellipsis;
-						white-space: nowrap;
-					}
-					.word-2{
-						margin-top: 10rpx;
-						font-size:24rpx;
-						color:#979797;
-					}
-					.word-3{
-						margin-top: 10rpx;
-						position: relative;
-						font-size:20rpx;
-						color:#ffffff;
-						image{
-							width: 235rpx;
-							height: 50rpx;
-						}
-						.word-3-1{
-							position: absolute;
-							top:8px;
-							left:2px;
-							width: 230rpx;
-							text-align: center;
-							.word-3-1-1{
-								display: inline-block;
-								color:#FD1B2A;
-								width: 50%;
-							}
-							
-						}
-					}
-					.word-4{
-						margin-top: 15rpx;
-						font-size:23rpx;
-						color:#fd1b2a;
-						margin-left: 10rpx;
-						text{
-							font-size:23rpx;
-							font-weight:bold;
-						}
-						.word-4-1{
-							font-size:36rpx;
-						}
-					}
-					.word-5{
-						margin-top: 15rpx;
-						font-size:21rpx;
-						color:#868686;
-					}
-					.button{
-						width:145rpx;
-						height:60rpx;
-						background:linear-gradient(14deg,#ff7425,#ff1e29);
-						border-radius:30rpx;
-						font-size:27rpx;
-						font-weight:bold;
-						color:#ffffff;
-						line-height:60rpx;
-						text-align: center;
-						
-						position: absolute;
-						bottom: 20rpx;
-						right: 0;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 1201
components/tki-qrcode/qrcode.js

@@ -1,1201 +0,0 @@
-let QRCode = {};
-(function () {
-    /**
-     * 获取单个字符的utf8编码
-     * unicode BMP平面约65535个字符
-     * @param {num} code
-     * return {array}
-     */
-    function unicodeFormat8(code) {
-        // 1 byte
-        var c0, c1, c2;
-        if (code < 128) {
-            return [code];
-            // 2 bytes
-        } else if (code < 2048) {
-            c0 = 192 + (code >> 6);
-            c1 = 128 + (code & 63);
-            return [c0, c1];
-            // 3 bytes
-        } else {
-            c0 = 224 + (code >> 12);
-            c1 = 128 + (code >> 6 & 63);
-            c2 = 128 + (code & 63);
-            return [c0, c1, c2];
-        }
-    }
-    /**
-     * 获取字符串的utf8编码字节串
-     * @param {string} string
-     * @return {array}
-     */
-    function getUTF8Bytes(string) {
-        var utf8codes = [];
-        for (var i = 0; i < string.length; i++) {
-            var code = string.charCodeAt(i);
-            var utf8 = unicodeFormat8(code);
-            for (var j = 0; j < utf8.length; j++) {
-                utf8codes.push(utf8[j]);
-            }
-        }
-        return utf8codes;
-    }
-    /**
-     * 二维码算法实现
-     * @param {string} data              要编码的信息字符串
-     * @param {num} errorCorrectLevel 纠错等级
-     */
-    function QRCodeAlg(data, errorCorrectLevel) {
-        this.typeNumber = -1; //版本
-        this.errorCorrectLevel = errorCorrectLevel;
-        this.modules = null; //二维矩阵,存放最终结果
-        this.moduleCount = 0; //矩阵大小
-        this.dataCache = null; //数据缓存
-        this.rsBlocks = null; //版本数据信息
-        this.totalDataCount = -1; //可使用的数据量
-        this.data = data;
-        this.utf8bytes = getUTF8Bytes(data);
-        this.make();
-    }
-    QRCodeAlg.prototype = {
-        constructor: QRCodeAlg,
-        /**
-         * 获取二维码矩阵大小
-         * @return {num} 矩阵大小
-         */
-        getModuleCount: function () {
-            return this.moduleCount;
-        },
-        /**
-         * 编码
-         */
-        make: function () {
-            this.getRightType();
-            this.dataCache = this.createData();
-            this.createQrcode();
-        },
-        /**
-         * 设置二位矩阵功能图形
-         * @param  {bool} test 表示是否在寻找最好掩膜阶段
-         * @param  {num} maskPattern 掩膜的版本
-         */
-        makeImpl: function (maskPattern) {
-            this.moduleCount = this.typeNumber * 4 + 17;
-            this.modules = new Array(this.moduleCount);
-            for (var row = 0; row < this.moduleCount; row++) {
-                this.modules[row] = new Array(this.moduleCount);
-            }
-            this.setupPositionProbePattern(0, 0);
-            this.setupPositionProbePattern(this.moduleCount - 7, 0);
-            this.setupPositionProbePattern(0, this.moduleCount - 7);
-            this.setupPositionAdjustPattern();
-            this.setupTimingPattern();
-            this.setupTypeInfo(true, maskPattern);
-            if (this.typeNumber >= 7) {
-                this.setupTypeNumber(true);
-            }
-            this.mapData(this.dataCache, maskPattern);
-        },
-        /**
-         * 设置二维码的位置探测图形
-         * @param  {num} row 探测图形的中心横坐标
-         * @param  {num} col 探测图形的中心纵坐标
-         */
-        setupPositionProbePattern: function (row, col) {
-            for (var r = -1; r <= 7; r++) {
-                if (row + r <= -1 || this.moduleCount <= row + r) continue;
-                for (var c = -1; c <= 7; c++) {
-                    if (col + c <= -1 || this.moduleCount <= col + c) continue;
-                    if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) {
-                        this.modules[row + r][col + c] = true;
-                    } else {
-                        this.modules[row + r][col + c] = false;
-                    }
-                }
-            }
-        },
-        /**
-         * 创建二维码
-         * @return {[type]} [description]
-         */
-        createQrcode: function () {
-            var minLostPoint = 0;
-            var pattern = 0;
-            var bestModules = null;
-            for (var i = 0; i < 8; i++) {
-                this.makeImpl(i);
-                var lostPoint = QRUtil.getLostPoint(this);
-                if (i == 0 || minLostPoint > lostPoint) {
-                    minLostPoint = lostPoint;
-                    pattern = i;
-                    bestModules = this.modules;
-                }
-            }
-            this.modules = bestModules;
-            this.setupTypeInfo(false, pattern);
-            if (this.typeNumber >= 7) {
-                this.setupTypeNumber(false);
-            }
-        },
-        /**
-         * 设置定位图形
-         * @return {[type]} [description]
-         */
-        setupTimingPattern: function () {
-            for (var r = 8; r < this.moduleCount - 8; r++) {
-                if (this.modules[r][6] != null) {
-                    continue;
-                }
-                this.modules[r][6] = (r % 2 == 0);
-                if (this.modules[6][r] != null) {
-                    continue;
-                }
-                this.modules[6][r] = (r % 2 == 0);
-            }
-        },
-        /**
-         * 设置矫正图形
-         * @return {[type]} [description]
-         */
-        setupPositionAdjustPattern: function () {
-            var pos = QRUtil.getPatternPosition(this.typeNumber);
-            for (var i = 0; i < pos.length; i++) {
-                for (var j = 0; j < pos.length; j++) {
-                    var row = pos[i];
-                    var col = pos[j];
-                    if (this.modules[row][col] != null) {
-                        continue;
-                    }
-                    for (var r = -2; r <= 2; r++) {
-                        for (var c = -2; c <= 2; c++) {
-                            if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {
-                                this.modules[row + r][col + c] = true;
-                            } else {
-                                this.modules[row + r][col + c] = false;
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        /**
-         * 设置版本信息(7以上版本才有)
-         * @param  {bool} test 是否处于判断最佳掩膜阶段
-         * @return {[type]}      [description]
-         */
-        setupTypeNumber: function (test) {
-            var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
-            for (var i = 0; i < 18; i++) {
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
-                this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
-            }
-        },
-        /**
-         * 设置格式信息(纠错等级和掩膜版本)
-         * @param  {bool} test
-         * @param  {num} maskPattern 掩膜版本
-         * @return {}
-         */
-        setupTypeInfo: function (test, maskPattern) {
-            var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern;
-            var bits = QRUtil.getBCHTypeInfo(data);
-            // vertical
-            for (var i = 0; i < 15; i++) {
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                if (i < 6) {
-                    this.modules[i][8] = mod;
-                } else if (i < 8) {
-                    this.modules[i + 1][8] = mod;
-                } else {
-                    this.modules[this.moduleCount - 15 + i][8] = mod;
-                }
-                // horizontal
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                if (i < 8) {
-                    this.modules[8][this.moduleCount - i - 1] = mod;
-                } else if (i < 9) {
-                    this.modules[8][15 - i - 1 + 1] = mod;
-                } else {
-                    this.modules[8][15 - i - 1] = mod;
-                }
-            }
-            // fixed module
-            this.modules[this.moduleCount - 8][8] = (!test);
-        },
-        /**
-         * 数据编码
-         * @return {[type]} [description]
-         */
-        createData: function () {
-            var buffer = new QRBitBuffer();
-            var lengthBits = this.typeNumber > 9 ? 16 : 8;
-            buffer.put(4, 4); //添加模式
-            buffer.put(this.utf8bytes.length, lengthBits);
-            for (var i = 0, l = this.utf8bytes.length; i < l; i++) {
-                buffer.put(this.utf8bytes[i], 8);
-            }
-            if (buffer.length + 4 <= this.totalDataCount * 8) {
-                buffer.put(0, 4);
-            }
-            // padding
-            while (buffer.length % 8 != 0) {
-                buffer.putBit(false);
-            }
-            // padding
-            while (true) {
-                if (buffer.length >= this.totalDataCount * 8) {
-                    break;
-                }
-                buffer.put(QRCodeAlg.PAD0, 8);
-                if (buffer.length >= this.totalDataCount * 8) {
-                    break;
-                }
-                buffer.put(QRCodeAlg.PAD1, 8);
-            }
-            return this.createBytes(buffer);
-        },
-        /**
-         * 纠错码编码
-         * @param  {buffer} buffer 数据编码
-         * @return {[type]}
-         */
-        createBytes: function (buffer) {
-            var offset = 0;
-            var maxDcCount = 0;
-            var maxEcCount = 0;
-            var length = this.rsBlock.length / 3;
-            var rsBlocks = new Array();
-            for (var i = 0; i < length; i++) {
-                var count = this.rsBlock[i * 3 + 0];
-                var totalCount = this.rsBlock[i * 3 + 1];
-                var dataCount = this.rsBlock[i * 3 + 2];
-                for (var j = 0; j < count; j++) {
-                    rsBlocks.push([dataCount, totalCount]);
-                }
-            }
-            var dcdata = new Array(rsBlocks.length);
-            var ecdata = new Array(rsBlocks.length);
-            for (var r = 0; r < rsBlocks.length; r++) {
-                var dcCount = rsBlocks[r][0];
-                var ecCount = rsBlocks[r][1] - dcCount;
-                maxDcCount = Math.max(maxDcCount, dcCount);
-                maxEcCount = Math.max(maxEcCount, ecCount);
-                dcdata[r] = new Array(dcCount);
-                for (var i = 0; i < dcdata[r].length; i++) {
-                    dcdata[r][i] = 0xff & buffer.buffer[i + offset];
-                }
-                offset += dcCount;
-                var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
-                var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
-                var modPoly = rawPoly.mod(rsPoly);
-                ecdata[r] = new Array(rsPoly.getLength() - 1);
-                for (var i = 0; i < ecdata[r].length; i++) {
-                    var modIndex = i + modPoly.getLength() - ecdata[r].length;
-                    ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0;
-                }
-            }
-            var data = new Array(this.totalDataCount);
-            var index = 0;
-            for (var i = 0; i < maxDcCount; i++) {
-                for (var r = 0; r < rsBlocks.length; r++) {
-                    if (i < dcdata[r].length) {
-                        data[index++] = dcdata[r][i];
-                    }
-                }
-            }
-            for (var i = 0; i < maxEcCount; i++) {
-                for (var r = 0; r < rsBlocks.length; r++) {
-                    if (i < ecdata[r].length) {
-                        data[index++] = ecdata[r][i];
-                    }
-                }
-            }
-            return data;
-
-        },
-        /**
-         * 布置模块,构建最终信息
-         * @param  {} data
-         * @param  {} maskPattern
-         * @return {}
-         */
-        mapData: function (data, maskPattern) {
-            var inc = -1;
-            var row = this.moduleCount - 1;
-            var bitIndex = 7;
-            var byteIndex = 0;
-            for (var col = this.moduleCount - 1; col > 0; col -= 2) {
-                if (col == 6) col--;
-                while (true) {
-                    for (var c = 0; c < 2; c++) {
-                        if (this.modules[row][col - c] == null) {
-                            var dark = false;
-                            if (byteIndex < data.length) {
-                                dark = (((data[byteIndex] >>> bitIndex) & 1) == 1);
-                            }
-                            var mask = QRUtil.getMask(maskPattern, row, col - c);
-                            if (mask) {
-                                dark = !dark;
-                            }
-                            this.modules[row][col - c] = dark;
-                            bitIndex--;
-                            if (bitIndex == -1) {
-                                byteIndex++;
-                                bitIndex = 7;
-                            }
-                        }
-                    }
-                    row += inc;
-                    if (row < 0 || this.moduleCount <= row) {
-                        row -= inc;
-                        inc = -inc;
-                        break;
-                    }
-                }
-            }
-        }
-    };
-    /**
-     * 填充字段
-     */
-    QRCodeAlg.PAD0 = 0xEC;
-    QRCodeAlg.PAD1 = 0x11;
-    //---------------------------------------------------------------------
-    // 纠错等级对应的编码
-    //---------------------------------------------------------------------
-    var QRErrorCorrectLevel = [1, 0, 3, 2];
-    //---------------------------------------------------------------------
-    // 掩膜版本
-    //---------------------------------------------------------------------
-    var QRMaskPattern = {
-        PATTERN000: 0,
-        PATTERN001: 1,
-        PATTERN010: 2,
-        PATTERN011: 3,
-        PATTERN100: 4,
-        PATTERN101: 5,
-        PATTERN110: 6,
-        PATTERN111: 7
-    };
-    //---------------------------------------------------------------------
-    // 工具类
-    //---------------------------------------------------------------------
-    var QRUtil = {
-        /*
-        每个版本矫正图形的位置
-         */
-        PATTERN_POSITION_TABLE: [
-            [],
-            [6, 18],
-            [6, 22],
-            [6, 26],
-            [6, 30],
-            [6, 34],
-            [6, 22, 38],
-            [6, 24, 42],
-            [6, 26, 46],
-            [6, 28, 50],
-            [6, 30, 54],
-            [6, 32, 58],
-            [6, 34, 62],
-            [6, 26, 46, 66],
-            [6, 26, 48, 70],
-            [6, 26, 50, 74],
-            [6, 30, 54, 78],
-            [6, 30, 56, 82],
-            [6, 30, 58, 86],
-            [6, 34, 62, 90],
-            [6, 28, 50, 72, 94],
-            [6, 26, 50, 74, 98],
-            [6, 30, 54, 78, 102],
-            [6, 28, 54, 80, 106],
-            [6, 32, 58, 84, 110],
-            [6, 30, 58, 86, 114],
-            [6, 34, 62, 90, 118],
-            [6, 26, 50, 74, 98, 122],
-            [6, 30, 54, 78, 102, 126],
-            [6, 26, 52, 78, 104, 130],
-            [6, 30, 56, 82, 108, 134],
-            [6, 34, 60, 86, 112, 138],
-            [6, 30, 58, 86, 114, 142],
-            [6, 34, 62, 90, 118, 146],
-            [6, 30, 54, 78, 102, 126, 150],
-            [6, 24, 50, 76, 102, 128, 154],
-            [6, 28, 54, 80, 106, 132, 158],
-            [6, 32, 58, 84, 110, 136, 162],
-            [6, 26, 54, 82, 110, 138, 166],
-            [6, 30, 58, 86, 114, 142, 170]
-        ],
-        G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),
-        G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),
-        G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
-        /*
-        BCH编码格式信息
-         */
-        getBCHTypeInfo: function (data) {
-            var d = data << 10;
-            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
-                d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15)));
-            }
-            return ((data << 10) | d) ^ QRUtil.G15_MASK;
-        },
-        /*
-        BCH编码版本信息
-         */
-        getBCHTypeNumber: function (data) {
-            var d = data << 12;
-            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
-                d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18)));
-            }
-            return (data << 12) | d;
-        },
-        /*
-        获取BCH位信息
-         */
-        getBCHDigit: function (data) {
-            var digit = 0;
-            while (data != 0) {
-                digit++;
-                data >>>= 1;
-            }
-            return digit;
-        },
-        /*
-        获取版本对应的矫正图形位置
-         */
-        getPatternPosition: function (typeNumber) {
-            return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
-        },
-        /*
-        掩膜算法
-         */
-        getMask: function (maskPattern, i, j) {
-            switch (maskPattern) {
-                case QRMaskPattern.PATTERN000:
-                    return (i + j) % 2 == 0;
-                case QRMaskPattern.PATTERN001:
-                    return i % 2 == 0;
-                case QRMaskPattern.PATTERN010:
-                    return j % 3 == 0;
-                case QRMaskPattern.PATTERN011:
-                    return (i + j) % 3 == 0;
-                case QRMaskPattern.PATTERN100:
-                    return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
-                case QRMaskPattern.PATTERN101:
-                    return (i * j) % 2 + (i * j) % 3 == 0;
-                case QRMaskPattern.PATTERN110:
-                    return ((i * j) % 2 + (i * j) % 3) % 2 == 0;
-                case QRMaskPattern.PATTERN111:
-                    return ((i * j) % 3 + (i + j) % 2) % 2 == 0;
-                default:
-                    throw new Error("bad maskPattern:" + maskPattern);
-            }
-        },
-        /*
-        获取RS的纠错多项式
-         */
-        getErrorCorrectPolynomial: function (errorCorrectLength) {
-            var a = new QRPolynomial([1], 0);
-            for (var i = 0; i < errorCorrectLength; i++) {
-                a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
-            }
-            return a;
-        },
-        /*
-        获取评价
-         */
-        getLostPoint: function (qrCode) {
-            var moduleCount = qrCode.getModuleCount(),
-                lostPoint = 0,
-                darkCount = 0;
-            for (var row = 0; row < moduleCount; row++) {
-                var sameCount = 0;
-                var head = qrCode.modules[row][0];
-                for (var col = 0; col < moduleCount; col++) {
-                    var current = qrCode.modules[row][col];
-                    //level 3 评价
-                    if (col < moduleCount - 6) {
-                        if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) {
-                            if (col < moduleCount - 10) {
-                                if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) {
-                                    lostPoint += 40;
-                                }
-                            } else if (col > 3) {
-                                if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) {
-                                    lostPoint += 40;
-                                }
-                            }
-                        }
-                    }
-                    //level 2 评价
-                    if ((row < moduleCount - 1) && (col < moduleCount - 1)) {
-                        var count = 0;
-                        if (current) count++;
-                        if (qrCode.modules[row + 1][col]) count++;
-                        if (qrCode.modules[row][col + 1]) count++;
-                        if (qrCode.modules[row + 1][col + 1]) count++;
-                        if (count == 0 || count == 4) {
-                            lostPoint += 3;
-                        }
-                    }
-                    //level 1 评价
-                    if (head ^ current) {
-                        sameCount++;
-                    } else {
-                        head = current;
-                        if (sameCount >= 5) {
-                            lostPoint += (3 + sameCount - 5);
-                        }
-                        sameCount = 1;
-                    }
-                    //level 4 评价
-                    if (current) {
-                        darkCount++;
-                    }
-                }
-            }
-            for (var col = 0; col < moduleCount; col++) {
-                var sameCount = 0;
-                var head = qrCode.modules[0][col];
-                for (var row = 0; row < moduleCount; row++) {
-                    var current = qrCode.modules[row][col];
-                    //level 3 评价
-                    if (row < moduleCount - 6) {
-                        if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) {
-                            if (row < moduleCount - 10) {
-                                if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) {
-                                    lostPoint += 40;
-                                }
-                            } else if (row > 3) {
-                                if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) {
-                                    lostPoint += 40;
-                                }
-                            }
-                        }
-                    }
-                    //level 1 评价
-                    if (head ^ current) {
-                        sameCount++;
-                    } else {
-                        head = current;
-                        if (sameCount >= 5) {
-                            lostPoint += (3 + sameCount - 5);
-                        }
-                        sameCount = 1;
-                    }
-                }
-            }
-            // LEVEL4
-            var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
-            lostPoint += ratio * 10;
-            return lostPoint;
-        }
-
-    };
-    //---------------------------------------------------------------------
-    // QRMath使用的数学工具
-    //---------------------------------------------------------------------
-    var QRMath = {
-        /*
-        将n转化为a^m
-         */
-        glog: function (n) {
-            if (n < 1) {
-                throw new Error("glog(" + n + ")");
-            }
-            return QRMath.LOG_TABLE[n];
-        },
-        /*
-        将a^m转化为n
-         */
-        gexp: function (n) {
-            while (n < 0) {
-                n += 255;
-            }
-            while (n >= 256) {
-                n -= 255;
-            }
-            return QRMath.EXP_TABLE[n];
-        },
-        EXP_TABLE: new Array(256),
-        LOG_TABLE: new Array(256)
-
-    };
-    for (var i = 0; i < 8; i++) {
-        QRMath.EXP_TABLE[i] = 1 << i;
-    }
-    for (var i = 8; i < 256; i++) {
-        QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
-    }
-    for (var i = 0; i < 255; i++) {
-        QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
-    }
-    //---------------------------------------------------------------------
-    // QRPolynomial 多项式
-    //---------------------------------------------------------------------
-    /**
-     * 多项式类
-     * @param {Array} num   系数
-     * @param {num} shift a^shift
-     */
-    function QRPolynomial(num, shift) {
-        if (num.length == undefined) {
-            throw new Error(num.length + "/" + shift);
-        }
-        var offset = 0;
-        while (offset < num.length && num[offset] == 0) {
-            offset++;
-        }
-        this.num = new Array(num.length - offset + shift);
-        for (var i = 0; i < num.length - offset; i++) {
-            this.num[i] = num[i + offset];
-        }
-    }
-    QRPolynomial.prototype = {
-        get: function (index) {
-            return this.num[index];
-        },
-        getLength: function () {
-            return this.num.length;
-        },
-        /**
-         * 多项式乘法
-         * @param  {QRPolynomial} e 被乘多项式
-         * @return {[type]}   [description]
-         */
-        multiply: function (e) {
-            var num = new Array(this.getLength() + e.getLength() - 1);
-            for (var i = 0; i < this.getLength(); i++) {
-                for (var j = 0; j < e.getLength(); j++) {
-                    num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
-                }
-            }
-            return new QRPolynomial(num, 0);
-        },
-        /**
-         * 多项式模运算
-         * @param  {QRPolynomial} e 模多项式
-         * @return {}
-         */
-        mod: function (e) {
-            var tl = this.getLength(),
-                el = e.getLength();
-            if (tl - el < 0) {
-                return this;
-            }
-            var num = new Array(tl);
-            for (var i = 0; i < tl; i++) {
-                num[i] = this.get(i);
-            }
-            while (num.length >= el) {
-                var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0));
-
-                for (var i = 0; i < e.getLength(); i++) {
-                    num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
-                }
-                while (num[0] == 0) {
-                    num.shift();
-                }
-            }
-            return new QRPolynomial(num, 0);
-        }
-    };
-
-    //---------------------------------------------------------------------
-    // RS_BLOCK_TABLE
-    //---------------------------------------------------------------------
-    /*
-    二维码各个版本信息[块数, 每块中的数据块数, 每块中的信息块数]
-     */
-    var RS_BLOCK_TABLE = [
-        // L
-        // M
-        // Q
-        // H
-        // 1
-        [1, 26, 19],
-        [1, 26, 16],
-        [1, 26, 13],
-        [1, 26, 9],
-
-        // 2
-        [1, 44, 34],
-        [1, 44, 28],
-        [1, 44, 22],
-        [1, 44, 16],
-
-        // 3
-        [1, 70, 55],
-        [1, 70, 44],
-        [2, 35, 17],
-        [2, 35, 13],
-
-        // 4
-        [1, 100, 80],
-        [2, 50, 32],
-        [2, 50, 24],
-        [4, 25, 9],
-
-        // 5
-        [1, 134, 108],
-        [2, 67, 43],
-        [2, 33, 15, 2, 34, 16],
-        [2, 33, 11, 2, 34, 12],
-
-        // 6
-        [2, 86, 68],
-        [4, 43, 27],
-        [4, 43, 19],
-        [4, 43, 15],
-
-        // 7
-        [2, 98, 78],
-        [4, 49, 31],
-        [2, 32, 14, 4, 33, 15],
-        [4, 39, 13, 1, 40, 14],
-
-        // 8
-        [2, 121, 97],
-        [2, 60, 38, 2, 61, 39],
-        [4, 40, 18, 2, 41, 19],
-        [4, 40, 14, 2, 41, 15],
-
-        // 9
-        [2, 146, 116],
-        [3, 58, 36, 2, 59, 37],
-        [4, 36, 16, 4, 37, 17],
-        [4, 36, 12, 4, 37, 13],
-
-        // 10
-        [2, 86, 68, 2, 87, 69],
-        [4, 69, 43, 1, 70, 44],
-        [6, 43, 19, 2, 44, 20],
-        [6, 43, 15, 2, 44, 16],
-
-        // 11
-        [4, 101, 81],
-        [1, 80, 50, 4, 81, 51],
-        [4, 50, 22, 4, 51, 23],
-        [3, 36, 12, 8, 37, 13],
-
-        // 12
-        [2, 116, 92, 2, 117, 93],
-        [6, 58, 36, 2, 59, 37],
-        [4, 46, 20, 6, 47, 21],
-        [7, 42, 14, 4, 43, 15],
-
-        // 13
-        [4, 133, 107],
-        [8, 59, 37, 1, 60, 38],
-        [8, 44, 20, 4, 45, 21],
-        [12, 33, 11, 4, 34, 12],
-
-        // 14
-        [3, 145, 115, 1, 146, 116],
-        [4, 64, 40, 5, 65, 41],
-        [11, 36, 16, 5, 37, 17],
-        [11, 36, 12, 5, 37, 13],
-
-        // 15
-        [5, 109, 87, 1, 110, 88],
-        [5, 65, 41, 5, 66, 42],
-        [5, 54, 24, 7, 55, 25],
-        [11, 36, 12],
-
-        // 16
-        [5, 122, 98, 1, 123, 99],
-        [7, 73, 45, 3, 74, 46],
-        [15, 43, 19, 2, 44, 20],
-        [3, 45, 15, 13, 46, 16],
-
-        // 17
-        [1, 135, 107, 5, 136, 108],
-        [10, 74, 46, 1, 75, 47],
-        [1, 50, 22, 15, 51, 23],
-        [2, 42, 14, 17, 43, 15],
-
-        // 18
-        [5, 150, 120, 1, 151, 121],
-        [9, 69, 43, 4, 70, 44],
-        [17, 50, 22, 1, 51, 23],
-        [2, 42, 14, 19, 43, 15],
-
-        // 19
-        [3, 141, 113, 4, 142, 114],
-        [3, 70, 44, 11, 71, 45],
-        [17, 47, 21, 4, 48, 22],
-        [9, 39, 13, 16, 40, 14],
-
-        // 20
-        [3, 135, 107, 5, 136, 108],
-        [3, 67, 41, 13, 68, 42],
-        [15, 54, 24, 5, 55, 25],
-        [15, 43, 15, 10, 44, 16],
-
-        // 21
-        [4, 144, 116, 4, 145, 117],
-        [17, 68, 42],
-        [17, 50, 22, 6, 51, 23],
-        [19, 46, 16, 6, 47, 17],
-
-        // 22
-        [2, 139, 111, 7, 140, 112],
-        [17, 74, 46],
-        [7, 54, 24, 16, 55, 25],
-        [34, 37, 13],
-
-        // 23
-        [4, 151, 121, 5, 152, 122],
-        [4, 75, 47, 14, 76, 48],
-        [11, 54, 24, 14, 55, 25],
-        [16, 45, 15, 14, 46, 16],
-
-        // 24
-        [6, 147, 117, 4, 148, 118],
-        [6, 73, 45, 14, 74, 46],
-        [11, 54, 24, 16, 55, 25],
-        [30, 46, 16, 2, 47, 17],
-
-        // 25
-        [8, 132, 106, 4, 133, 107],
-        [8, 75, 47, 13, 76, 48],
-        [7, 54, 24, 22, 55, 25],
-        [22, 45, 15, 13, 46, 16],
-
-        // 26
-        [10, 142, 114, 2, 143, 115],
-        [19, 74, 46, 4, 75, 47],
-        [28, 50, 22, 6, 51, 23],
-        [33, 46, 16, 4, 47, 17],
-
-        // 27
-        [8, 152, 122, 4, 153, 123],
-        [22, 73, 45, 3, 74, 46],
-        [8, 53, 23, 26, 54, 24],
-        [12, 45, 15, 28, 46, 16],
-
-        // 28
-        [3, 147, 117, 10, 148, 118],
-        [3, 73, 45, 23, 74, 46],
-        [4, 54, 24, 31, 55, 25],
-        [11, 45, 15, 31, 46, 16],
-
-        // 29
-        [7, 146, 116, 7, 147, 117],
-        [21, 73, 45, 7, 74, 46],
-        [1, 53, 23, 37, 54, 24],
-        [19, 45, 15, 26, 46, 16],
-
-        // 30
-        [5, 145, 115, 10, 146, 116],
-        [19, 75, 47, 10, 76, 48],
-        [15, 54, 24, 25, 55, 25],
-        [23, 45, 15, 25, 46, 16],
-
-        // 31
-        [13, 145, 115, 3, 146, 116],
-        [2, 74, 46, 29, 75, 47],
-        [42, 54, 24, 1, 55, 25],
-        [23, 45, 15, 28, 46, 16],
-
-        // 32
-        [17, 145, 115],
-        [10, 74, 46, 23, 75, 47],
-        [10, 54, 24, 35, 55, 25],
-        [19, 45, 15, 35, 46, 16],
-
-        // 33
-        [17, 145, 115, 1, 146, 116],
-        [14, 74, 46, 21, 75, 47],
-        [29, 54, 24, 19, 55, 25],
-        [11, 45, 15, 46, 46, 16],
-
-        // 34
-        [13, 145, 115, 6, 146, 116],
-        [14, 74, 46, 23, 75, 47],
-        [44, 54, 24, 7, 55, 25],
-        [59, 46, 16, 1, 47, 17],
-
-        // 35
-        [12, 151, 121, 7, 152, 122],
-        [12, 75, 47, 26, 76, 48],
-        [39, 54, 24, 14, 55, 25],
-        [22, 45, 15, 41, 46, 16],
-
-        // 36
-        [6, 151, 121, 14, 152, 122],
-        [6, 75, 47, 34, 76, 48],
-        [46, 54, 24, 10, 55, 25],
-        [2, 45, 15, 64, 46, 16],
-
-        // 37
-        [17, 152, 122, 4, 153, 123],
-        [29, 74, 46, 14, 75, 47],
-        [49, 54, 24, 10, 55, 25],
-        [24, 45, 15, 46, 46, 16],
-
-        // 38
-        [4, 152, 122, 18, 153, 123],
-        [13, 74, 46, 32, 75, 47],
-        [48, 54, 24, 14, 55, 25],
-        [42, 45, 15, 32, 46, 16],
-
-        // 39
-        [20, 147, 117, 4, 148, 118],
-        [40, 75, 47, 7, 76, 48],
-        [43, 54, 24, 22, 55, 25],
-        [10, 45, 15, 67, 46, 16],
-
-        // 40
-        [19, 148, 118, 6, 149, 119],
-        [18, 75, 47, 31, 76, 48],
-        [34, 54, 24, 34, 55, 25],
-        [20, 45, 15, 61, 46, 16]
-    ];
-
-    /**
-     * 根据数据获取对应版本
-     * @return {[type]} [description]
-     */
-    QRCodeAlg.prototype.getRightType = function () {
-        for (var typeNumber = 1; typeNumber < 41; typeNumber++) {
-            var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel];
-            if (rsBlock == undefined) {
-                throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel);
-            }
-            var length = rsBlock.length / 3;
-            var totalDataCount = 0;
-            for (var i = 0; i < length; i++) {
-                var count = rsBlock[i * 3 + 0];
-                var dataCount = rsBlock[i * 3 + 2];
-                totalDataCount += dataCount * count;
-            }
-            var lengthBytes = typeNumber > 9 ? 2 : 1;
-            if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) {
-                this.typeNumber = typeNumber;
-                this.rsBlock = rsBlock;
-                this.totalDataCount = totalDataCount;
-                break;
-            }
-        }
-    };
-
-    //---------------------------------------------------------------------
-    // QRBitBuffer
-    //---------------------------------------------------------------------
-    function QRBitBuffer() {
-        this.buffer = new Array();
-        this.length = 0;
-    }
-    QRBitBuffer.prototype = {
-        get: function (index) {
-            var bufIndex = Math.floor(index / 8);
-            return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1);
-        },
-        put: function (num, length) {
-            for (var i = 0; i < length; i++) {
-                this.putBit(((num >>> (length - i - 1)) & 1));
-            }
-        },
-        putBit: function (bit) {
-            var bufIndex = Math.floor(this.length / 8);
-            if (this.buffer.length <= bufIndex) {
-                this.buffer.push(0);
-            }
-            if (bit) {
-                this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));
-            }
-            this.length++;
-        }
-    };
-
-
-
-    // xzedit
-    let qrcodeAlgObjCache = [];
-    /**
-     * 二维码构造函数,主要用于绘制
-     * @param  {参数列表} opt 传递参数
-     * @return {}
-     */
-    QRCode = function (opt) {
-        //设置默认参数
-        this.options = {
-            text: '',
-            size: 256,
-            correctLevel: 3,
-            background: '#ffffff',
-            foreground: '#000000',
-            pdground: '#000000',
-            image: '',
-            imageSize: 30,
-            canvasId: opt.canvasId,
-            context: opt.context,
-            usingComponents: opt.usingComponents,
-            showLoading: opt.showLoading,
-            loadingText: opt.loadingText,
-        };
-        if (typeof opt === 'string') { // 只编码ASCII字符串
-            opt = {
-                text: opt
-            };
-        }
-        if (opt) {
-            for (var i in opt) {
-                this.options[i] = opt[i];
-            }
-        }
-        //使用QRCodeAlg创建二维码结构
-        var qrCodeAlg = null;
-        for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {
-            if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) {
-                qrCodeAlg = qrcodeAlgObjCache[i].obj;
-                break;
-            }
-        }
-        if (i == l) {
-            qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel);
-            qrcodeAlgObjCache.push({
-                text: this.options.text,
-                correctLevel: this.options.correctLevel,
-                obj: qrCodeAlg
-            });
-        }
-        /**
-         * 计算矩阵点的前景色
-         * @param {Obj} config
-         * @param {Number} config.row 点x坐标
-         * @param {Number} config.col 点y坐标
-         * @param {Number} config.count 矩阵大小
-         * @param {Number} config.options 组件的options
-         * @return {String}
-         */
-        let getForeGround = function (config) {
-            var options = config.options;
-            if (options.pdground && (
-                (config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) ||
-                (config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config.col < 5) ||
-                (config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count - 2))
-            )) {
-                return options.pdground;
-            }
-            return options.foreground;
-        }
-        // 创建canvas
-        let createCanvas = function (options) {
-            if (options.showLoading) {
-                uni.showLoading({
-                    title: options.loadingText,
-                    mask: true
-                });
-            }
-            var ctx = uni.createCanvasContext(options.canvasId, options.context);
-            var count = qrCodeAlg.getModuleCount();
-            var ratioSize = options.size;
-            var ratioImgSize = options.imageSize;
-            //计算每个点的长宽
-            var tileW = (ratioSize / count).toPrecision(4);
-            var tileH = (ratioSize / count).toPrecision(4);
-            //绘制
-            for (var row = 0; row < count; row++) {
-                for (var col = 0; col < count; col++) {
-                    var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));
-                    var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW));
-                    var foreground = getForeGround({
-                        row: row,
-                        col: col,
-                        count: count,
-                        options: options
-                    });
-                    ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background);
-                    ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);
-                }
-            }
-            if (options.image) {
-                var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
-                var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
-                drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true)
-                ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize);
-                // 画圆角矩形
-                function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) {
-                    ctxi.setLineWidth(lineWidth);
-                    ctxi.setFillStyle(options.background);
-                    ctxi.setStrokeStyle(options.background);
-                    ctxi.beginPath(); // draw top and top right corner 
-                    ctxi.moveTo(x + r, y);
-                    ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner 
-                    ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner 
-                    ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner 
-                    ctxi.arcTo(x, y, x + r, y, r);
-                    ctxi.closePath();
-                    if (fill) {
-                        ctxi.fill();
-                    }
-                    if (stroke) {
-                        ctxi.stroke();
-                    }
-                }
-            }
-            setTimeout(() => {
-                ctx.draw(true, () => {
-                    // 保存到临时区域
-                    setTimeout(() => {
-                        uni.canvasToTempFilePath({
-                            width: options.width,
-                            height: options.height,
-                            destWidth: options.width,
-                            destHeight: options.height,
-                            canvasId: options.canvasId,
-                            quality: Number(1),
-                            success: function (res) {
-                                if (options.cbResult) {
-                                    options.cbResult(res.tempFilePath)
-                                }
-                            },
-                            fail: function (res) {
-                                if (options.cbResult) {
-                                    options.cbResult(res)
-                                }
-                            },
-                            complete: function () {
-                                if (options.showLoading){
-                                    uni.hideLoading();
-                                }
-                            },
-                        }, options.context);
-                    }, options.text.length + 100);
-                });
-            }, options.usingComponents ? 0 : 150);
-        }
-        createCanvas(this.options);
-        // 空判定
-        let empty = function (v) {
-            let tp = typeof v,
-                rt = false;
-            if (tp == "number" && String(v) == "") {
-                rt = true
-            } else if (tp == "undefined") {
-                rt = true
-            } else if (tp == "object") {
-                if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
-            } else if (tp == "string") {
-                if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
-            } else if (tp == "function") {
-                rt = false
-            }
-            return rt
-        }
-    };
-    QRCode.prototype.clear = function (fn) {
-        var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context)
-        ctx.clearRect(0, 0, this.options.size, this.options.size)
-        ctx.draw(false, () => {
-            if (fn) {
-                fn()
-            }
-        })
-    };
-})()
-
-export default QRCode

+ 0 - 210
components/tki-qrcode/tki-qrcode.vue

@@ -1,210 +0,0 @@
-<template xlang="wxml" minapp="mpvue">
-	<view class="tki-qrcode">
-		<!-- #ifndef MP-ALIPAY -->
-		<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
-		<!-- #endif -->
-		<!-- #ifdef MP-ALIPAY -->
-		<canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" />
-		<!-- #endif -->
-		<image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
-	</view>
-</template>
-
-<script>
-import QRCode from "./qrcode.js"
-let qrcode
-export default {
-	name: "tki-qrcode",
-	props: {
-		cid: {
-			type: String,
-			default: 'tki-qrcode-canvas'
-		},
-		size: {
-			type: Number,
-			default: 200
-		},
-		unit: {
-			type: String,
-			default: 'upx'
-		},
-		show: {
-			type: Boolean,
-			default: true
-		},
-		val: {
-			type: String,
-			default: ''
-		},
-		background: {
-			type: String,
-			default: '#ffffff'
-		},
-		foreground: {
-			type: String,
-			default: '#000000'
-		},
-		pdground: {
-			type: String,
-			default: '#000000'
-		},
-		icon: {
-			type: String,
-			default: ''
-		},
-		iconSize: {
-			type: Number,
-			default: 40
-		},
-		lv: {
-			type: Number,
-			default: 3
-		},
-		onval: {
-			type: Boolean,
-			default: false
-		},
-		loadMake: {
-			type: Boolean,
-			default: false
-		},
-		usingComponents: {
-			type: Boolean,
-			default: true
-		},
-		showLoading: {
-			type: Boolean,
-			default: true
-		},
-		loadingText: {
-			type: String,
-			default: '二维码生成中'
-		},
-	},
-	data() {
-		return {
-			result: '',
-		}
-	},
-	methods: {
-		_makeCode() {
-			let that = this
-			if (!this._empty(this.val)) {
-				qrcode = new QRCode({
-					context: that, // 上下文环境
-					canvasId:that.cid, // canvas-id
-					usingComponents: that.usingComponents, // 是否是自定义组件
-					showLoading: that.showLoading, // 是否显示loading
-					loadingText: that.loadingText, // loading文字
-					text: that.val, // 生成内容
-					size: that.cpSize, // 二维码大小
-					background: that.background, // 背景色
-					foreground: that.foreground, // 前景色
-					pdground: that.pdground, // 定位角点颜色
-					correctLevel: that.lv, // 容错级别
-					image: that.icon, // 二维码图标
-					imageSize: that.iconSize,// 二维码图标大小
-					cbResult: function (res) { // 生成二维码的回调
-						that._result(res)
-					},
-				});
-			} else {
-				uni.showToast({
-					title: '二维码内容不能为空',
-					icon: 'none',
-					duration: 2000
-				});
-			}
-		},
-		_clearCode() {
-			this._result('')
-			qrcode.clear()
-		},
-		_saveCode() {
-			let that = this;
-			if (this.result != "") {
-				uni.saveImageToPhotosAlbum({
-					filePath: that.result,
-					success: function () {
-						uni.showToast({
-							title: '二维码保存成功',
-							icon: 'success',
-							duration: 2000
-						});
-					}
-				});
-			}
-		},
-		_result(res) {
-			this.result = res;
-			this.$emit('result', res)
-		},
-		_empty(v) {
-			let tp = typeof v,
-				rt = false;
-			if (tp == "number" && String(v) == "") {
-				rt = true
-			} else if (tp == "undefined") {
-				rt = true
-			} else if (tp == "object") {
-				if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
-			} else if (tp == "string") {
-				if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
-			} else if (tp == "function") {
-				rt = false
-			}
-			return rt
-		}
-	},
-	watch: {
-		size: function (n, o) {
-			if (n != o && !this._empty(n)) {
-				this.cSize = n
-				if (!this._empty(this.val)) {
-					setTimeout(() => {
-						this._makeCode()
-					}, 100);
-				}
-			}
-		},
-		val: function (n, o) {
-			if (this.onval) {
-				if (n != o && !this._empty(n)) {
-					setTimeout(() => {
-						this._makeCode()
-					}, 0);
-				}
-			}
-		}
-	},
-	computed: {
-		cpSize() {
-			if(this.unit == "upx"){
-				return uni.upx2px(this.size)
-			}else{
-				return this.size
-			}
-		}
-	},
-	mounted: function () {
-		if (this.loadMake) {
-			if (!this._empty(this.val)) {
-				setTimeout(() => {
-					this._makeCode()
-				}, 0);
-			}
-		}
-	},
-}
-</script>
-<style>
-.tki-qrcode {
-  position: relative;
-}
-.tki-qrcode-canvas {
-  position: fixed;
-  top: -99999upx;
-  left: -99999upx;
-  z-index: -99999;
-}
-</style>

+ 0 - 124
components/uni-fav/uni-fav.vue

@@ -1,124 +0,0 @@
-<template>
-	<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
-	 @click="onClick" class="uni-fav">
-		<!-- #ifdef MP-ALIPAY -->
-		<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
-			<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
-		</view>
-		<!-- #endif -->
-		<!-- #ifndef MP-ALIPAY -->
-		<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
-		 v-if="!checked && (star === true || star === 'true')" />
-		<!-- #endif -->
-		<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentText.contentFav : contentText.contentDefault }}</text>
-	</view>
-</template>
-
-<script>
-	import uniIcons from "../uni-icons/uni-icons.vue";
-	export default {
-		name: "UniFav",
-		components: {
-			uniIcons
-		},
-		props: {
-			star: {
-				type: [Boolean, String],
-				default: true
-			},
-			bgColor: {
-				type: String,
-				default: "#eeeeee"
-			},
-			fgColor: {
-				type: String,
-				default: "#666666"
-			},
-			bgColorChecked: {
-				type: String,
-				default: "#007aff"
-			},
-			fgColorChecked: {
-				type: String,
-				default: "#FFFFFF"
-			},
-			circle: {
-				type: [Boolean, String],
-				default: false
-			},
-			checked: {
-				type: Boolean,
-				default: false
-			},
-			contentText: {
-				type: Object,
-				default () {
-					return {
-						contentDefault: "收藏",
-						contentFav: "已收藏"
-					};
-				}
-			}
-		},
-		watch: {
-			checked() {
-				if (uni.report) {
-					if (this.checked) {
-						uni.report("收藏", "收藏");
-					} else {
-						uni.report("取消收藏", "取消收藏");
-					}
-				}
-			}
-		},
-		methods: {
-			onClick() {
-				this.$emit("click");
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	$fav-height: 25px;
-
-	.uni-fav {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 60px;
-		height: $fav-height;
-		line-height: $fav-height;
-		text-align: center;
-		border-radius: 3px;
-	}
-
-	.uni-fav--circle {
-		border-radius: 30px;
-	}
-
-	.uni-fav-star {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: 24px;
-		margin-right: 3px;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-fav-text {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: $fav-height;
-		align-items: center;
-		justify-content: center;
-		font-size: $uni-font-size-base;
-	}
-</style>

+ 8 - 4
manifest.json

@@ -2,8 +2,8 @@
     "name" : "美好人参",
     "appid" : "__UNI__F0D4DD1",
     "description" : "",
-    "versionName" : "1.7.0",
-    "versionCode" : 170,
+    "versionName" : "1.7.5",
+    "versionCode" : 175,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */
@@ -59,7 +59,8 @@
                     "NSPhotoLibraryUsageDescription" : "定义个性化头像",
                     "NSPhotoLibraryAddUsageDescription" : "定义个性化头像",
                     "NSCameraUsageDescription" : "定义个性化头像"
-                }
+                },
+                "dSYMs" : false
             },
             /* ios打包配置 */
             "sdkConfigs" : {
@@ -145,7 +146,10 @@
             "proxy" : {
                 "/api" : {
                     // "target" : "http://lnpt.frp.liuniu946.com/api",
-                    "target" : "http://xhg.ledao.ink/api",
+                    // "target" : "http://xhg.frp.liuniu946.com/api",
+                    "target" : "http://xhg.zhejiangtaizhou.cn/api", //请求地址配置 
+
+                    // "target" : "http://xhg.ledao.ink/api",
                     // "changeOrigin": true,
                     "pathRewrite" : {
                         "/api" : "" // rewrite path

+ 20 - 6
pages.json

@@ -6,7 +6,7 @@
 		{
 			"path": "pages/index/start",
 			"style": {
-				"navigationBarTitleText": "喜嗨购"
+				"navigationBarTitleText": "美好人参"
 				// "app-plus": {
 				// 	"titleNView": false
 				// }
@@ -15,7 +15,7 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "喜嗨购",
+				"navigationBarTitleText": "美好人参",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -346,7 +346,10 @@
 		}, {
 			"path": "pages/cart/cart",
 			"style": {
-				"navigationBarTitleText": "购物车"
+				"navigationBarTitleText": "购物车",
+				"app-plus": {
+					"titleNView": false
+				}
 			}
 		},
 
@@ -517,8 +520,10 @@
 		{
 			"path": "pages/game/game",
 			"style": {
-				"navigationBarTitleText": "游戏"
-
+				"navigationBarTitleText": "游戏",
+				"app-plus": {
+					"titleNView": false
+				}
 			}
 		},
 		{
@@ -542,7 +547,7 @@
 		{
 			"path": "pages/game/gameDetail",
 			"style": {
-				"navigationBarTitleText": "打小怪兽"
+				"navigationBarTitleText": "种植人参"
 			}
 
 		}
@@ -609,6 +614,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/user/newVip",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "新会员福利区",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 2 - 2
pages/contract/agreement.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="box">
-		<view class="title pt20 pb30">美人参商城用户/会员注册协议</view>
-		<view class="content">欢迎您访问并使用美丽人参商城服务平台!本协议是您与美丽人参商城平台所有者就美丽人参商城平台服务的相关事宜所订立的协议。</view>
+		<view class="title pt20 pb30">美人参商城用户/会员注册协议</view>
+		<view class="content">欢迎您访问并使用美好人参商城服务平台!本协议是您与美好人参商城平台所有者就美好人参商城平台服务的相关事宜所订立的协议。</view>
 		<view class="content">
 			为维护您自身权益,请您仔细阅读本协议,您点击“同意并继续”按钮后,本协议即构成对双方具有约束力的法律文件; 阅读本协议过程中,
 			如您不同意本协议或其中任何条款的约定,您应立即停止注册程序。

+ 19 - 19
pages/contract/privacy.vue

@@ -4,14 +4,14 @@
 
 		<view class="title">提示条款</view>
 		<view class="content">
-			“美人参商城”及其关联公司(以下简称“我们”)深知个人信息对您的重要性,并会尽力保护您的个人信息安全可靠,我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则,目的明确原则,选择同意原则,最少够用原则,确保安全原则,主体参与原则,公开透明原则等等。同时我们承诺,我们将按业界成熟的安全解决方案,采取相应的安全保护措施来保护您的个人信息。鉴此,我们制定本《隐私政策》(下称“本政策/本隐私政策”)并提醒您:
+			“美人参商城”及其关联公司(以下简称“我们”)深知个人信息对您的重要性,并会尽力保护您的个人信息安全可靠,我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则,目的明确原则,选择同意原则,最少够用原则,确保安全原则,主体参与原则,公开透明原则等等。同时我们承诺,我们将按业界成熟的安全解决方案,采取相应的安全保护措施来保护您的个人信息。鉴此,我们制定本《隐私政策》(下称“本政策/本隐私政策”)并提醒您:
 		</view>
 		<view class="content">
-			本政策适用于“美丽人参商城”产品或服务。如我们关联公司的产品或服务中使用了“美丽人参商城”提供的产品或服务(例如直接使用“美丽人参商城”账户登录)但未设独立隐私政策的,则本政策同样适用于该部分产品或服务。
-			需要特别说明的是,本政策不适用于其他第三方向您提供的服务,也不适用于“美人参商城”中已另行独立设置隐私政策的产品或服务。
+			本政策适用于“美好人参商城”产品或服务。如我们关联公司的产品或服务中使用了“美好人参商城”提供的产品或服务(例如直接使用“美好人参商城”账户登录)但未设独立隐私政策的,则本政策同样适用于该部分产品或服务。
+			需要特别说明的是,本政策不适用于其他第三方向您提供的服务,也不适用于“美人参商城”中已另行独立设置隐私政策的产品或服务。
 		</view>
 		<view class="content">
-			在使用“美人参商城”各项产品或服务前,请您务必仔细阅读并透彻理解本政策,在确认充分理解并同意后使用相关产品或服务。一旦您开始使用“美人参商城”各项产品或服务,即表示您已充分理解并同意本政策。如对本政策内容有任何疑问、意见或建议,您可通过“美人参商城”提供的各种联系方式与我们联系。
+			在使用“美人参商城”各项产品或服务前,请您务必仔细阅读并透彻理解本政策,在确认充分理解并同意后使用相关产品或服务。一旦您开始使用“美人参商城”各项产品或服务,即表示您已充分理解并同意本政策。如对本政策内容有任何疑问、意见或建议,您可通过“美人参商城”提供的各种联系方式与我们联系。
 		</view>
 		<view class="title">本隐私政策部分将帮助您了解以下内容:</view>
 		<view class="content">1、我们如何收集和使用您的个人信息</view>
@@ -37,7 +37,7 @@
 		<view class="title">(三)向您提供商品或服务</view>
 		<view class="content">1、您向我们提供的信息</view>
 		<view class="content">
-			您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件、银行卡号或支付宝账号等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。向“美人参商城”提供该其他方的前述个人信息之前,您需确保您已经取得其授权同意。您在使用我们的人脸识别分类服务时明确同意开启人物相册功能后向我们提供的本地相册信息。
+			您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件、银行卡号或支付宝账号等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。向“美人参商城”提供该其他方的前述个人信息之前,您需确保您已经取得其授权同意。您在使用我们的人脸识别分类服务时明确同意开启人物相册功能后向我们提供的本地相册信息。
 		</view>
 		<view class="content">2、我们在您使用服务过程中收集的信息</view>
 		<view class="content">为向您提供更契合您需求的页面展示和搜索结果、了解产品适配性、识别账号异常状态,我们会收集关于您使用</view>
@@ -49,11 +49,11 @@
 		</view>
 		<view class="content">3、我们通过间接获得方式收集到的您的个人信息</view>
 		<view class="content">
-			您可通过“美人参商城”账号在我们提供的链接入口使用我们关联公司提供的产品或服务,为便于我们基于关联账号共同向您提供一站式服务并便于您统一进行管理,我们在“美人参商城”集中展示您的信息或推荐您感兴趣的信息。当您通过我们产品或服务使用上述服务时,您授权我们根据实际业务及合作需要从我们关联公司处接收、汇总、分析我们确认其来源合法或您授权同意其向我们提供的您的个人信息或交易信息。如您拒绝提供上述信息或拒绝授权,可能无法使用我们关联公司的相应产品或服务,或者无法展示相关信息,但不影响使用“美人参商城”的核心服务。
+			您可通过“美人参商城”账号在我们提供的链接入口使用我们关联公司提供的产品或服务,为便于我们基于关联账号共同向您提供一站式服务并便于您统一进行管理,我们在“美人参商城”集中展示您的信息或推荐您感兴趣的信息。当您通过我们产品或服务使用上述服务时,您授权我们根据实际业务及合作需要从我们关联公司处接收、汇总、分析我们确认其来源合法或您授权同意其向我们提供的您的个人信息或交易信息。如您拒绝提供上述信息或拒绝授权,可能无法使用我们关联公司的相应产品或服务,或者无法展示相关信息,但不影响使用“美人参商城”的核心服务。
 		</view>
 		<view class="title">(四)为您提供安全保障</view>
 		<view class="content">
-			为提高您使用我们及我们关联公司、合作伙伴提供服务的安全性,保护您或其他用户或公众的人身财产安全免遭侵害,更好地预防钓鱼网站、欺诈、网络漏洞、计算机病毒、网络攻击、网络侵入等安全风险,更准确地识别违反法律法规或“美人参商城”相关协议规则的情况,我们可能使用或整合您的用户信息、交易信息、设备信息、有关网络日志以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息,来综合判断您账户及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。
+			为提高您使用我们及我们关联公司、合作伙伴提供服务的安全性,保护您或其他用户或公众的人身财产安全免遭侵害,更好地预防钓鱼网站、欺诈、网络漏洞、计算机病毒、网络攻击、网络侵入等安全风险,更准确地识别违反法律法规或“美人参商城”相关协议规则的情况,我们可能使用或整合您的用户信息、交易信息、设备信息、有关网络日志以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息,来综合判断您账户及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。
 		</view>
 		<view class="title">(五)其他用途</view>
 		<view class="content">我们将信息用于本政策未载明的其他用途,或者将基于特定目的收集而来的信息用于其他目的时,会事先征求您的同意。</view>
@@ -71,7 +71,7 @@
 		<view class="content">10、学术研究机构基于公共利益开展统计或学术研究所必要,且对外提供学术研究或描述的结果时,对结果中所</view>
 		<view class="content">包含的个人信息进行去标识化处理的;</view>
 		<view class="content">11、法律法规规定的其他情形。</view>
-		<view class="content">如我们停止运营“美人参商城”产品或服务,我们将及时停止继续收集您个人信息的活动,将停止运营的通知以逐</view>
+		<view class="content">如我们停止运营“美人参商城”产品或服务,我们将及时停止继续收集您个人信息的活动,将停止运营的通知以逐</view>
 		<view class="content">一送达或公告的形式通知您,对所持有的个人信息进行删除或匿名化处理。</view>
 		<view class="title">二、我们如何使用 Cookie 和同类技术</view>
 		<view class="title">(一)Cookie</view>
@@ -87,11 +87,11 @@
 		</view>
 		<view class="title">三、我们如何共享、转让、公开披露您的个人信息</view>
 		<view class="title">(一)共享</view>
-		<view class="content">我们不会与“美人参商城”服务提供者以外的公司、组织和个人共享您的个人信息,但以下情况除外:</view>
+		<view class="content">我们不会与“美人参商城”服务提供者以外的公司、组织和个人共享您的个人信息,但以下情况除外:</view>
 		<view class="content">1、在获取明确同意的情况下共享:获得您的明确同意后,我们会与其他方共享您的个人信息。</view>
 		<view class="content">2、在法定情形下的共享:我们可能会根据法律法规规定、诉讼争议解决需要,或按行政、司法机关依法提出的要求,对外共享您的个人信息。</view>
 		<view class="content">
-			3、与关联公司间共享:为便于我们基于关联账号共同向您提供服务,推荐您可能感兴趣的信息或保护“美人参商城”关联公司或其他用户或公众的人身财产安全免遭侵害,您的个人信息可能会与我们的关联公司共享。我们只会共享必要的个人信息(如为便于您使用“美人参商城”账号使用我们关联公司产品或服务,我们会向关联公司共享您必要的账户信息),如果我们共享您的个人敏感信息或关联公司改变个人信息的使用及处理目的,将再次征求您的授权同意。
+			3、与关联公司间共享:为便于我们基于关联账号共同向您提供服务,推荐您可能感兴趣的信息或保护“美人参商城”关联公司或其他用户或公众的人身财产安全免遭侵害,您的个人信息可能会与我们的关联公司共享。我们只会共享必要的个人信息(如为便于您使用“美人参商城”账号使用我们关联公司产品或服务,我们会向关联公司共享您必要的账户信息),如果我们共享您的个人敏感信息或关联公司改变个人信息的使用及处理目的,将再次征求您的授权同意。
 		</view>
 		<view class="content">
 			4、与授权合作伙伴共享:仅为实现本隐私政策中声明的目的,我们的某些服务将由我们和授权合作伙伴共同提供。我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。例如安排合作伙伴提供服务。我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于与产品或服务无关的其他用途。
@@ -114,7 +114,7 @@
 		<view class="content">我们仅会在以下情况下,公开披露您的个人信息:</view>
 		<view class="content">1、获得您明确同意或基于您的主动选择,我们可能会公开披露您的个人信息;</view>
 		<view class="content">
-			2、如果我们确定您出现违反法律法规或严重违反“美丽人参商城”相关协议规则的情况,或为保护“美丽人参商城”及其关联公司用户或公众的人身财产安全免遭侵害,我们可能依据法律法规或“美人参商城”相关协议规则征得您同意的情况下披露关于您的个人信息,包括相关违规行为以及“美人参商城”已对您采取的措施。
+			2、如果我们确定您出现违反法律法规或严重违反“美好人参商城”相关协议规则的情况,或为保护“美好人参商城”及其关联公司用户或公众的人身财产安全免遭侵害,我们可能依据法律法规或“美人参商城”相关协议规则征得您同意的情况下披露关于您的个人信息,包括相关违规行为以及“美人参商城”已对您采取的措施。
 		</view>
 		<view class="title">(四)共享、转让、公开披露个人信息时事先征得授权同意的例外</view>
 		<view class="content">以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:</view>
@@ -140,8 +140,8 @@
 			(三)我们会采取合理可行的措施,尽力避免收集无关的个人信息。我们只会在达成本政策所述目的所需的期限内保留您的个人信息,除非需要延长保留期或受到法律的允许。
 		</view>
 		<view class="content">
-			(四)互联网并非绝对安全的环境,我们强烈建议您不要使用非“美人参商城”推荐的通信方式发送个人信息。您可以通过我们的服务建立联系和相互分享。当您通过我们的服务创建交流、交易或分享时,您可以自主选择沟通、交易或分享的对象,作为能够看到您的交易内容、联络方式、交流信息或分享内容等相关信息的第三方。
-			如您发现自己的个人信息尤其是您的账户或密码发生泄露,请您立即联络“美人参商城”用户服务的相关人员,以便我们根据您的申请采取相应措施。
+			(四)互联网并非绝对安全的环境,我们强烈建议您不要使用非“美人参商城”推荐的通信方式发送个人信息。您可以通过我们的服务建立联系和相互分享。当您通过我们的服务创建交流、交易或分享时,您可以自主选择沟通、交易或分享的对象,作为能够看到您的交易内容、联络方式、交流信息或分享内容等相关信息的第三方。
+			如您发现自己的个人信息尤其是您的账户或密码发生泄露,请您立即联络“美人参商城”用户服务的相关人员,以便我们根据您的申请采取相应措施。
 			请注意,您在使用我们服务时自愿共享甚至公开分享的信息,可能会涉及您或他人的个人信息甚至个人敏感信息,如您选择上传包含个人信息的图片。请您更加谨慎地考虑,是否在使用我们的服务时共享甚至公开分享相关信息。
 			请使用复杂密码,协助我们保证您的账号安全。我们将尽力保障您发送给我们的任何信息的安全性。 同时,我们还将按照监管部门要求,上报个人信息安全事件的处置情况。
 		</view>
@@ -151,7 +151,7 @@
 		<view class="content">
 			您有权访问您的个人信息,法律法规规定的例外情况除外。您可以通过以下方式自行访问您的个人信息:
 			个人资料—如果您希望访问或编辑您个人资料中的昵称、头像、签名、性别等,您可以通过登录账户通过-“编辑”执行此类操作。
-			如果您无法通过上述路径访问该等个人信息,您可以加入QQ群““美人参商城”用户反馈群‘与我们取得联系。
+			如果您无法通过上述路径访问该等个人信息,您可以加入QQ群““美人参商城”用户反馈群‘与我们取得联系。
 		</view>
 		<view class="content">(二)更正或补充您的个人信息</view>
 		<view class="content">
@@ -171,17 +171,17 @@
 		</view>
 		<view class="content">(四)改变您授权同意的范围</view>
 		<view class="content">
-			每个业务功能需要一些基本的个人信息才能得以完成(见本隐私政策“第一条”)。除此之外,对于额外个人信息的收集和使用,您可以在设置或与“美人参商城”客服联系给予或收回您的授权同意。
+			每个业务功能需要一些基本的个人信息才能得以完成(见本隐私政策“第一条”)。除此之外,对于额外个人信息的收集和使用,您可以在设置或与“美人参商城”客服联系给予或收回您的授权同意。
 			当您收回同意后,我们将不再处理相应的个人信息。但您收回同意的决定,不会影响此前基于您的授权而开展的个人信息处理。
 		</view>
 		<view class="content">(五)约束信息系统自动决策</view>
 		<view class="content">
-			在某些业务功能中,我们可能仅依据信息系统、算法等在内的非人工自动决策机制做出决定。如果这些决定显著影响您的合法权益,您有权要求我们做出解释,我们也将在不侵害“美人参商城”商业秘密或其他用户权益、社会公共利益的前提下提供申诉方法。
+			在某些业务功能中,我们可能仅依据信息系统、算法等在内的非人工自动决策机制做出决定。如果这些决定显著影响您的合法权益,您有权要求我们做出解释,我们也将在不侵害“美人参商城”商业秘密或其他用户权益、社会公共利益的前提下提供申诉方法。
 		</view>
 		<view class="content">(六)响应您的上述请求</view>
 		<view class="content">
 			为保障安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。
-			我们将在30天内做出答复。如您不满意,还可以通过“美人参商城”客服发起投诉。
+			我们将在30天内做出答复。如您不满意,还可以通过“美人参商城”客服发起投诉。
 			对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际的请求,我们可能会予以拒绝。
 			在以下情形中,按照法律法规要求,我们将无法响应您的请求:
 		</view>
@@ -205,7 +205,7 @@
 		<view class="title">八、本隐私政策如何更新</view>
 		<view class="content">我们的隐私政策可能变更。</view>
 		<view class="content">
-			未经您明确同意,我们不会限制您按照本隐私政策所应享有的权利。对于重大变更,我们会提供显著的通知(包括我们会通过“美人参商城”公示的方式进行通知甚至向您提供弹窗提示)。
+			未经您明确同意,我们不会限制您按照本隐私政策所应享有的权利。对于重大变更,我们会提供显著的通知(包括我们会通过“美人参商城”公示的方式进行通知甚至向您提供弹窗提示)。
 			本政策所指的重大变更包括但不限于:
 		</view>
 		<view class="content">1、我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;</view>
@@ -216,7 +216,7 @@
 		<view class="content">6、个人信息安全影响评估报告表明存在高风险时。</view>
 		<view class="content pb30">我们还会将本隐私政策的旧版本存档,供您查阅。</view>
 		<view class="title">开发者:浙江多力网络科技有限公司</view>
-		<view class="title">应用名:美人参商城</view>
+		<view class="title">应用名:美人参商城</view>
 		<view class="title">公司名称:浙江多力网络科技有限公司</view>
 		<view class="title">注册地址:浙江省台州市温岭市箬横镇横滨大道西侧</view>
 		<view class="title">办公地址:浙江省台州市温岭市箬横镇横滨大道西侧</view>

+ 51 - 30
pages/game/game.vue

@@ -1,13 +1,17 @@
 <template>
 	<view class="center">
-		<view class="box" v-for="(item,index) in gameList " >
-			
+		<view class="box" v-for="(item,index) in gameList ">
+
 			<view class="game-box" @click="goGame(item.id,index)">
-				<view class="box-title">
-					怪兽名称:{{item.name}}
+				<!-- <view class="box-title">
+					超有趣的种植人参游戏
+				</view> -->
+				<view class="box-titlee">
+					消耗积分{{item.lower_limit*1}}~{{item.upper_limit*1}}
 				</view>
-				<image :src="'../../static/img/game0'+(index%5+1)+'.png'" mode=""></image>
-				<view class="game-box-content">开打时间
+
+				<image :src="'../../static/img/index0'+(index%4+1)+'.png'" mode=""></image>
+				<view class="game-box-content">{{item.name}}
 					<view class="game-box-content1">
 						每天{{item.add_time}}
 					</view>
@@ -63,7 +67,7 @@
 	export default {
 		data() {
 			return {
-			
+
 				tabbar: tabbar,
 				current: 2,
 				add_time: '', //开始事件
@@ -75,20 +79,21 @@
 			getGame().then(res => {
 				// console.log(res, 'res');
 				this.gameList = res.data.data
-				res.data.data.forEach(e=>{
+				console.log(this.gameList, 'resssss');
+				res.data.data.forEach(e => {
 					// this.end_time = 
-				 var end = 	e.add_time.split(' ')
-				 e.add_time = end[1]
-					
+					var end = e.add_time.split(' ')
+					e.add_time = end[1]
+
 				})
-				
+
 			})
 		},
 		methods: {
-			goGame(e,index) {
+			goGame(e, index) {
 				console.log(e, '点击跳转');
 				uni.navigateTo({
-					url: './gameDetail?id=' + e+'&index='+index
+					url: './gameDetail?id=' + e + '&index=' + index
 				})
 			}
 		},
@@ -113,32 +118,48 @@
 			height: 100%;
 
 		}
-		.box-title{
-			font-family:Cursive;
-			font-weight: 500;
+
+		.box-title {
 			position: absolute;
 			z-index: 99;
-			top: 120rpx;
+			top: 40rpx;
 			left: 60rpx;
 			display: flex;
+			font-size: 43rpx;
+			font-family: zihun100hao-fangfangxianfengti;
+			font-weight: 500;
+			color: #29554E;
+		}
+
+		.box-titlee {
+			position: absolute;
+			z-index: 99;
+			top: 110rpx;
+			left: 200rpx;
+			display: flex;
 			color: #FFFFFF;
-			font-size: 40rpx;
+			border: 1rpx solid #f36062;
+			background: #f36062;
+			border-radius: 10rpx;
+			padding: 0 10rpx;
+			font-size: 32rpx;
+			font-family: zihun100hao-fangfangxianfengti;
 			font-weight: 500;
 		}
 	}
 
 
 	.game-box-content {
-		top: 200rpx;
+		top: 180rpx;
 		left: 60rpx;
-		line-height: 45rpx;
+		line-height: 55rpx;
 		position: absolute;
-		font-size: 30rpx;
+		font-size: 32rpx;
 		font-weight: 500;
-		color: #8F6AFD;
+		color: #28554E;
 		padding-left: 20rpx;
-		width: 340rpx;
-		height: 45rpx;
+		width: 380rpx;
+		height: 55rpx;
 		background: #FFFFFF;
 		border-radius: 27rpx;
 		align-items: center;
@@ -148,13 +169,13 @@
 			position: absolute;
 			right: 0;
 			top: 0;
-			line-height: 45rpx;
+			line-height: 55rpx;
 			text-align: center;
-			width: 200rpx;
-			height: 45rpx;
-			background: #754AF0;
+			width: 220rpx;
+			height: 55rpx;
+			background: #29554E;
 			border-radius: 27rpx;
-			font-size: 30rpx;
+			font-size: 32rpx;
 			font-weight: 500;
 			color: #FFFFFF;
 		}

+ 72 - 50
pages/game/gameDetail.vue

@@ -1,18 +1,18 @@
 <template>
 	<view class="content">
 		<view class="game-top-bg">
-			<image src="../../static/game/game06.png" mode=""></image>
+			<image :src="'../../static/game/game2'+(index+1)+'.png'" mode=""></image>
 			<view class="game-top-time">
-				第{{guaishouList.stage}}期
+				第{{getGuaishou ||0}}轮
 
 				<view class="yueyue" v-if="isGb">
-					&nbsp;&nbsp;距离打怪
+					&nbsp;&nbsp;距离种植
 					<span>{{state==0?'开始':'结束'}}</span>
 					仅剩
 					<span
-						v-if="state==0"><span>{{kai.day}}</span>天<span>{{kai.hours}}</span>时<span>{{kai.minutes}}</span>分<span>{{kai.seconds}}</span>秒</span>
+						v-if="state==0"><span>{{kai.day||0}}</span>天<span>{{kai.hours||0}}</span>时<span>{{kai.minutes||0}}</span>分<span>{{kai.seconds||0}}</span>秒</span>
 					<span
-						v-else><span>{{hour.day}}</span>天<span>{{hour.hours}}</span>时<span>{{hour.minutes}}</span>分<span>{{hour.seconds}}</span>秒</span>
+						v-else><span>{{hour.day||0}}</span>天<span>{{hour.hours||0}}</span>时<span>{{hour.minutes||0}}</span>分<span>{{hour.seconds ||0}}</span>秒</span>
 				</view>
 				<view class="yueyue" style="margin-left: 200rpx;" v-else>
 					已结束
@@ -20,52 +20,54 @@
 
 			</view>
 			<view class="game-top-xl">
+			<!-- 	<view class="xl">
+					 血量值:&nbsp;{{guaishouList.number}}/{{guaishouList.money*1}}
+			 </view> --> 
 				<view class="xl" v-if="guaishouList.number!=guaishouList.money*1">
-					<!-- 血量值:&nbsp;{{guaishouList.number}}/{{guaishouList.money*1}} -->
+					<!-- 祝您打怪成功! -->
+					<!-- 种植成功! -->
 				</view>
-				<!-- <view class="xl" >
-					祝您打怪成功!
-				</view> -->
-				
+
 				<view class="xl" v-else>
-					打怪成功!
+					种植成功!
 				</view>
 				<view class="xl-t">
 					<!-- 血量进度条 暂未开发! -->
 					<!-- <prog value= "80"></prog> -->
 					<!-- change进度条变化时候触发 -->
-					<bing-progress change="change" :value="getJd" width="474rpx" noActiveColor="#EB97E4"
-						infoColor="#fff" :isActiveCircular="false" barBorderRadius="20px" :disabled="true"
+					<bing-progress change="change" :value="getJd" width="474rpx" noActiveColor="#D0F8DF"
+						infoColor="#5f51b1" :isActiveCircular="false" barBorderRadius="20px" :disabled="true"
 						infoContent="value" infoEndText="%" handleWidth="0" infoFontSize="26px" strokeWidth="34rpx"
-						:continuous="true" :subContinuous="true" infoAlign="center" activeColor="#D461CD">
+						:continuous="true" :subContinuous="true" infoAlign="center" activeColor="#08D29B ">
 					</bing-progress>
 				</view>
 			</view>
-			<view class="xgs">
+			<!-- <view class="xgs">
 				<image :src="'../../static/game/reb0'+(index%5+1)+'.png'" mode=""></image>
-			</view>
+			</view> -->
 			<view class="id">
-				名称:{{guaishouList.name}}&nbsp&nbsp&nbsp期数Id:{{guaishouList.stage}}
+				种植人参:{{guaishouList.name }}&nbsp&nbsp&nbsp第{{getGuaishou ||0}}轮
 			</view>
 			<view class="gl">
-				<image src="../../static/game/game08.png" mode="" @click="dian"></image>
+				<image src="../../static/game/game8.png" mode="" style="width:120rpx; height:130rpx" @click="dian">
+				</image>
 			</view>
 			<view class="gl" style="margin-left: 590rpx;" @click="getJl">
 				<image src="../../static/game/game11.png" mode=""></image>
 			</view>
 		</view>
 		<view class="edu">
-			本次参与额度:10~{{guaishouList.upper_limit*1}}
+			本次参与额度:{{guaishouList.lower_limit*1 ||0}}~{{guaishouList.upper_limit*1 ||0}}
 		</view>
 		<view class="button">
-			<image v-if="isGoumai==false" src="../../static/game/game07.png" mode="" @click="yue"></image>
+			<image v-if="isGoumai==false" src="../../static/game/game6.png" mode="" @click="yue"></image>
 			<image v-else src="../../static/game/game10.png" mode=""></image>
 		</view>
 		<view class="u-table">
 			<view class="column">
 				<view class="table-box" @click="navTo('../user/whiteJf')">
 					<view class="table-img">
-						<image src="../../static/game/game04.png" mode=""></image>
+						<image src="../../static/game/game4.png" mode=""></image>
 					</view>
 					<view class="table-title">
 						<view class="table-top">
@@ -78,7 +80,7 @@
 				</view>
 				<view class="table-box" @click="navTo('../user/purpleJf')">
 					<view class="table-img">
-						<image src="../../static/game/game05.png" mode=""></image>
+						<image src="../../static/game/game3.png" mode=""></image>
 					</view>
 					<view class="table-title">
 						<view class="table-top">
@@ -97,7 +99,7 @@
 			<view class="column">
 				<view class="table-box" @click="navTo('../user/myGreenCard')">
 					<view class="table-img">
-						<image src="../../static/game/game03.png" mode=""></image>
+						<image src="../../static/game/game1.png" mode=""></image>
 					</view>
 					<view class="table-title">
 						<view class="table-top">
@@ -110,7 +112,7 @@
 				</view>
 				<view class="table-box" @click="navTo('../money/wallet')">
 					<view class="table-img">
-						<image src="../../static/game/game02.png" mode=""></image>
+						<image src="../../static/game/game2.png" mode=""></image>
 					</view>
 					<view class="table-title">
 						<view class="table-top">
@@ -148,7 +150,7 @@
 				<view class="yue-cont">
 
 
-					<input type="number" class="yue-content" placeholder="请输入打怪血量" v-model="goodsNumber">
+					<input type="number" class="yue-content" placeholder="请输入种植数量" v-model="goodsNumber">
 				</view>
 				<view class="comfirm-box">
 					<view class="cancel" @click="quxiao()">取消</view>
@@ -293,8 +295,17 @@
 		},
 		computed: {
 			...mapState('user', ['hasLogin', 'userInfo']),
+			getGuaishou() {
+				if (this.guaishouList.stage <= 7) {
+					return 1
+				} else if (this.guaishouList.stage > 7) {
+					let a = this.guaishouList.stage / 7
+					return Math.ceil(a)
+				}
+			},
 			getJd() {
-				return (this.guaishouList.number / this.guaishouList.money * 1) * 100
+				return ((this.guaishouList.number / this.guaishouList.money * 1) * 100)
+				// return "99.4"
 			}
 		},
 		// beforeDestroy() {
@@ -304,7 +315,8 @@
 			console.log(this.userInfo, 'userInfo');
 			// this.xiaoguaishou = this.imageList[option.id].image
 			this.uid = option.id
-			this.index = option.index
+			this.index = option.index * 1
+			console.log(this.index, 'eeeeeee');
 			this.getDTime()
 			let obj = this
 			const time = setInterval(function() {
@@ -317,7 +329,7 @@
 		},
 		onShow() {
 			this.loadingType = 'more'
-			this.getDTime()
+			// this.getDTime()
 			this.jtDg()
 			// this.getDetail()
 			if (this.timer) {
@@ -335,11 +347,11 @@
 		},
 		onHide() {
 			this.loadingType = 'loading'
-			console.log(this.loadingType,'this.loadingType------onhidee')
+			console.log(this.loadingType, 'this.loadingType------onhidee')
 		},
 		onUnload() {
 			this.loadingType = 'loading'
-			console.log(this.loadingType,'this.loadingType------onUnload')
+			console.log(this.loadingType, 'this.loadingType------onUnload')
 		},
 		methods: {
 			//监听打怪状态
@@ -383,7 +395,7 @@
 				}).then(res => {
 					this.loadingType = 'more'
 					this.guaishouList = res.data
-					// console.log(res.data, 'res.data');
+					console.log(res.data, '打怪血量');
 				}).catch(err => {
 					clearInterval(this.timer)
 				})
@@ -396,9 +408,13 @@
 				}).then(res => {
 					this.guaishouList = res.data
 					console.log(res, 'res');
-					if (this.guaishouList.number == this.guaishouList.money * 1) {
-						this.$api.msg('打怪成功!')
+					if (this.guaishouList.number == this.guaishouList.money * 1 && this.guaishouList.suc == 1) {
+						this.$api.msg('种植成功!')
+					}
+					if (this.guaishouList.suc == 2) {
+						this.$api.msg('种植失败!')
 					}
+
 					this.bianhua = 3000
 					//当前时间
 					let dqTime = Math.round(new Date().getTime() / 1000).toString();
@@ -467,7 +483,7 @@
 			//抢购数量取消
 			quxiao() {
 				this.$refs.popupYue.close()
-				this.goodsNumber = "请输入打怪血量"
+				this.goodsNumber = "请输入种植数量"
 
 
 			},
@@ -479,7 +495,7 @@
 				// this.$refs.popupButton.open()
 				//投注
 				if (this.goodsNumber < 10) {
-					this.$api.msg('打怪额度不低于10')
+					this.$api.msg('种植数量不低于10')
 					this.goodsNumber = ''
 
 				}
@@ -495,7 +511,7 @@
 						title: '投注成功',
 						duration: 2000
 					});
-					this.goodsNumber = "请输入打怪血量"
+					this.goodsNumber = "请输入种植数量"
 					this.getUerInfo()
 					this.getDetail()
 				})
@@ -552,6 +568,8 @@
 
 	.game-top-bg {
 		position: relative;
+		display: flex;
+		justify-content: center;
 		width: 750rpx;
 		height: 550rpx;
 
@@ -584,7 +602,7 @@
 		span {
 			width: 42rpx;
 			height: 42rpx;
-			background: #5655EF;
+			background: #08D29B;
 			border-radius: 10rpx;
 		}
 	}
@@ -598,19 +616,23 @@
 
 		// line-height: 75rpx;
 		.xl {
-			
+			// border: 1rpx solid  #5f51b1;
+			text-shadow: 3rpx 3rpx #999999;
 			width: 750rpx;
+			border-radius: 20rpx;
+			padding: 30rpx;
+			padding: 5rpx 10rpx;
 			text-align: center;
 			font-size: 40rpx;
 			font-weight: 500;
-			color: #FFFFFF;
+			color: #08D29B;
 		}
 
 		.xl-t {
 			position: absolute;
-			margin-top: 10rpx;
+			width: 750rpx;
 			left: 140rpx;
-			
+
 			// width: 474rpx;
 			// height: 31rpx;
 			// background: #A38CF4;
@@ -633,11 +655,11 @@
 	}
 
 	.id {
+
 		text-align: center;
 		position: absolute;
 		top: 475rpx;
-		left: 210rpx;
-		width: 340rpx;
+		padding: 0 30rpx;
 		height: 60rpx;
 		background: #000000;
 		opacity: 0.64;
@@ -649,11 +671,11 @@
 	}
 
 	.gl {
-		top: 400rpx;
-		left: 36rpx;
+		top: 360rpx;
+		left: 25rpx;
 		position: absolute;
-		width: 90rpx;
-		height: 106rpx;
+		width: 100rpx;
+		height: 110rpx;
 
 		image {
 			width: 100%;
@@ -694,7 +716,7 @@
 		width: 688rpx;
 		height: 309rpx;
 		background: #FFFFFF;
-		border: 3rpx solid #7F69D8;
+		border: 3rpx solid #08D29B;
 		box-shadow: 0px 0px 20rpx 0rpx rgba(50, 50, 52, 0.06);
 		border-radius: 20rpx;
 		position: relative;
@@ -704,13 +726,13 @@
 			top: 152rpx;
 			position: absolute;
 			height: 2rpx;
-			background: #7F69D8;
+			background: #08D29B;
 		}
 
 		.bb {
 			width: 2rpx;
 			height: 305rpx;
-			background: #7F69D8;
+			background: #08D29B;
 			margin-left: 343rpx;
 			top: 0;
 			position: absolute;

+ 669 - 618
pages/index/index.vue

@@ -2,7 +2,9 @@
 	<view class="container">
 		<view class="carousel-section">
 			<!-- 背景色区域 -->
-			<view class="bg"><image src="../../static/index/index13.png" mode=""></image></view>
+			<view class="bg">
+				<image src="../../static/index/index13.png" mode=""></image>
+			</view>
 			<!-- 标题栏和状态栏占位符 -->
 			<view class="titleNview-placing"></view>
 			<!-- 搜素栏 -->
@@ -18,7 +20,8 @@
 					</view>
 				</view>
 			</view>
-			<swiper class="carousel" autoplay="true" duration="400" interval="5000" :indicator-dots="true" indicator-active-color="#FFFFFF">
+			<swiper class="carousel" autoplay="true" duration="400" interval="5000" :indicator-dots="true"
+				indicator-active-color="#FFFFFF">
 				<!-- <swiper class="carousel" autoplay="true" duration="400" interval="5000"> -->
 				<swiper-item v-for="(item, index) in carouselList" :key="index" class="carousel-item">
 					<image :src="item.pic" mode="aspectFill" @click="bannerNavToUrl(item)"></image>
@@ -35,11 +38,11 @@
 					<image class="nitem-image" src="../../static/index/index04.png" mode=""></image>
 					<view class="nitem-font">产品介绍</view>
 				</view>
-				<view class="navbar-item"  @click="navTo('/pages/index/shopStore')">
+				<view class="navbar-item" @click="navTo('/pages/index/shopStore')">
 					<image class="nitem-image" src="../../static/index/index32.png" mode=""></image>
 					<view class="nitem-font">附近门店</view>
 				</view>
-				<view class="navbar-item"  @click="navTo('/pages/user/messageCenter')">
+				<view class="navbar-item" @click="navTo('/pages/user/messageCenter')">
 					<image class="nitem-image" src="../../static/index/index33.png" mode=""></image>
 					<view class="nitem-font">消息通知</view>
 				</view>
@@ -50,6 +53,9 @@
 				</view>
 			</view>
 		</view>
+		<view class="vipShop" @click="navTo('/pages/user/newVip')">
+			<image src="../../static/img/indexqg.png" mode=""></image>
+		</view>
 		<view class="product-box" v-if="bastList.length != 0">
 			<view class="cnxh">
 				<view class="hx"></view>
@@ -77,7 +83,9 @@
 		<!-- 客服 -->
 		<uni-popup ref="popupkf" type="center">
 			<view class="popup-box">
-				<view class="img"><image src="../../static/img/img009.png" mode=""></image></view>
+				<view class="img">
+					<image src="../../static/img/img009.png" mode=""></image>
+				</view>
 				<view class="mian">
 					<view class="delivery">
 						<view class="title">已经为您定制专属客服</view>
@@ -95,725 +103,768 @@
 </template>
 
 <script>
-import { lookSubpoints, lookOneself } from '../../api/user.js';
-import seckill from '../../components/seckill/seckill.vue';
-import { loadIndexs } from '@/api/index.js';
-import { getUserInfo, spread } from '@/api/user.js';
-import { setCoupons } from '@/api/functionalUnit.js';
-import { getBargainList, getProducts } from '@/api/product.js';
-import { interceptor } from '@/utils/loginUtils';
-import { mapState, mapMutations } from 'vuex';
-import { tabbar } from '@/utils/tabbar.js';
-// #ifdef H5
-import { weixindata, shareLoad } from '@/utils/wxAuthorized';
-// #endif
-import uniCopy from '@/js_sdk/xb-copy/uni-copy.js';
-export default {
-	components: {
-		seckill
-	},
-	data() {
-		return {
-			text: 'x18258617070',
-			tabbar: tabbar,
-			current: 0,
-			shareShow: false, //分享海报
-			pageProportion: 0, //保存页面基于750宽度的比例
-			swiperHeight: 0,
-			checkid: 0,
-			titleNViewBackground: '',
-			longitude: 0, //经度
-			latitude: 0, //纬度
-			swiperCurrent: 0,
-			swiperLength: 0,
-			carouselList: [], //轮播列表
-			bastList: [], //会员礼包
-			shoplist: [], //商店列表
-			page: 1,
-			limit: 5,
-			bargainlist: []
-		};
-	},
-	computed: {
-		...mapState(['loginInterceptor', 'baseURL']),
-		...mapState('user', ['hasLogin', 'userInfo'])
-	},
-	onLoad: function(option) {
-		// #ifdef MP
-		if (option.scene) {
-			// 存储小程序邀请人
-			uni.setStorage({
-				key: 'spread_code',
-				data: option.scene
-			});
-		}
-		// #endif
-		// #ifdef H5
-		this.IndexShare();
-		//#endif
-	},
-	onShow: function() {
-		// 判断是否强制登录
-		// if (!this.hasLogin) {
-		// 	// 登录拦截
-		// 	interceptor();
-		// }
-		this.loadData();
-		this.getProduct();
-		// this.getBargainList();
-	},
-	//下拉刷新
-	onPullDownRefresh() {
-		this.loadData();
-	},
-	// #ifndef MP
-	// 监听导航栏输入框点击事件
-	onNavigationBarSearchInputClicked(e) {
-		//跳转到搜索页面
-		this.clickSearch();
-	},
-	//点击导航栏 buttons 时触发
-	onNavigationBarButtonTap(e) {
-		const index = e.index;
-		if (index === 0) {
-			this.$api.msg('点击了扫描');
-		} else if (index === 1) {
-			// #ifdef APP-PLUS
-			const pages = getCurrentPages();
-			const page = pages[pages.length - 1];
-			const currentWebview = page.$getAppWebview();
-			currentWebview.hideTitleNViewButtonRedDot({
-				index
-			});
-			// #endif
-			uni.navigateTo({
-				url: '/pages/user/notice'
-			});
-		}
-	},
+	import {
+		lookSubpoints,
+		lookOneself
+	} from '../../api/user.js';
+	import seckill from '../../components/seckill/seckill.vue';
+	import {
+		loadIndexs
+	} from '@/api/index.js';
+	import {
+		getUserInfo,
+		spread
+	} from '@/api/user.js';
+	import {
+		setCoupons
+	} from '@/api/functionalUnit.js';
+	import {
+		getBargainList,
+		getProducts
+	} from '@/api/product.js';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils';
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import {
+		tabbar
+	} from '@/utils/tabbar.js';
+	// #ifdef H5
+	import {
+		weixindata,
+		shareLoad
+	} from '@/utils/wxAuthorized';
 	// #endif
-	methods: {
-		...mapMutations(['setLat', 'setLon']),
-		kfClose() {
-			this.$refs.popupkf.close();
+	import uniCopy from '@/js_sdk/xb-copy/uni-copy.js';
+	export default {
+		components: {
+			seckill
 		},
-		// 复制
-		comfirm(text) {
-			console.log(text);
-			const result = uniCopy(text);
-			if (result === false) {
-				uni.showToast({
-					title: '不支持'
-				});
-			} else {
-				uni.showToast({
-					title: '复制成功',
-					icon: 'none'
+		data() {
+			return {
+				text: 'x18258617070',
+				tabbar: tabbar,
+				current: 0,
+				shareShow: false, //分享海报
+				pageProportion: 0, //保存页面基于750宽度的比例
+				swiperHeight: 0,
+				checkid: 0,
+				titleNViewBackground: '',
+				longitude: 0, //经度
+				latitude: 0, //纬度
+				swiperCurrent: 0,
+				swiperLength: 0,
+				carouselList: [], //轮播列表
+				bastList: [], //会员礼包
+				shoplist: [], //商店列表
+				page: 1,
+				limit: 5,
+				bargainlist: []
+			};
+		},
+		computed: {
+			...mapState(['loginInterceptor', 'baseURL']),
+			...mapState('user', ['hasLogin', 'userInfo'])
+		},
+		onLoad: function(option) {
+			// #ifdef MP
+			if (option.scene) {
+				// 存储小程序邀请人
+				uni.setStorage({
+					key: 'spread_code',
+					data: option.scene
 				});
 			}
-			this.$refs.popupkp.close();
+			// #endif
+			// #ifdef H5
+			this.IndexShare();
+			//#endif
 		},
-		// #ifdef H5
-		IndexShare() {
-			let obj = this;
-			let pages = getCurrentPages();
-			// 获取当前页面
-			let page = pages[pages.length - 1];
-			let path = '#/' + page.route + '?';
-			// 保存传值
-			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 + '/index/' + path,
-				title: this.userInfo.nickname + '邀请您进入响亮商城',
-				desc: '欢迎加入响亮商城',
-				imgUrl: 'https://xl.liuniu946.com/index/static/img/logo.jpg'
-			};
-			console.log(data, '分享数据');
-			shareLoad(data);
+		onShow: function() {
+			// 判断是否强制登录
+			// if (!this.hasLogin) {
+			// 	// 登录拦截
+			// 	interceptor();
+			// }
+			this.loadData();
+			this.getProduct();
+			// this.getBargainList();
 		},
-		// #endif
-		//砍价商品推荐详情页
-		navToDetailPages(item) {
-			let id = item.product_id;
-			//let type = 2;
-
-			uni.navigateTo({
-				url: '/pages/product/product?id=' + id
-			});
+		//下拉刷新
+		onPullDownRefresh() {
+			this.loadData();
 		},
-		navTo(url) {
-			if (url == '') {
-				this.$api.msg('暂未开通,敬请期待');
-			} else {
+		// #ifndef MP
+		// 监听导航栏输入框点击事件
+		onNavigationBarSearchInputClicked(e) {
+			//跳转到搜索页面
+			this.clickSearch();
+		},
+		//点击导航栏 buttons 时触发
+		onNavigationBarButtonTap(e) {
+			const index = e.index;
+			if (index === 0) {
+				this.$api.msg('点击了扫描');
+			} else if (index === 1) {
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();
+				const page = pages[pages.length - 1];
+				const currentWebview = page.$getAppWebview();
+				currentWebview.hideTitleNViewButtonRedDot({
+					index
+				});
+				// #endif
 				uni.navigateTo({
-					url,
-					fail() {
-						uni.switchTab({
-							url
-						});
-					}
+					url: '/pages/user/notice'
 				});
 			}
 		},
-		openSubscribe: function(e) {
-			let page = e;
-			// #ifndef MP
-			uni.navigateTo({
-				url: page
-			});
-			// #endif
-			// #ifdef MP
-			uni.showLoading({
-				title: '正在加载'
-			});
-			openBargainSubscribe()
-				.then(res => {
-					uni.hideLoading();
-					uni.navigateTo({
-						url: page
+		// #endif
+		methods: {
+			...mapMutations(['setLat', 'setLon']),
+			kfClose() {
+				this.$refs.popupkf.close();
+			},
+			// 复制
+			comfirm(text) {
+				console.log(text);
+				const result = uniCopy(text);
+				if (result === false) {
+					uni.showToast({
+						title: '不支持'
 					});
-				})
-				.catch(err => {
-					uni.hideLoading();
-				});
+				} else {
+					uni.showToast({
+						title: '复制成功',
+						icon: 'none'
+					});
+				}
+				this.$refs.popupkp.close();
+			},
+			// #ifdef H5
+			IndexShare() {
+				let obj = this;
+				let pages = getCurrentPages();
+				// 获取当前页面
+				let page = pages[pages.length - 1];
+				let path = '#/' + page.route + '?';
+				// 保存传值
+				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 + '/index/' + path,
+					title: this.userInfo.nickname + '邀请您进入响亮商城',
+					desc: '欢迎加入响亮商城',
+					imgUrl: 'https://xl.liuniu946.com/index/static/img/logo.jpg'
+				};
+				console.log(data, '分享数据');
+				shareLoad(data);
+			},
 			// #endif
-		},
-		getBargainList() {
-			let that = this;
-
-			getBargainList({
-				page: that.page,
-				limit: that.limit
-			})
-				.then(function(res) {
-					that.$set(that, 'bargainlist', res.data.slice(0, 2));
-					console.log(that.bargainlist);
-				})
-				.catch(res => {
-					console.log(res, 'getBargainList');
-				});
-		},
-		Mask() {
-			this.MaskShow = false;
-			this.shareShow = true;
-			uni.setStorage({
-				key: 'FirstEntry',
-				data: true,
-				success: function() {
-					console.log(uni.getStorageSync('FirstEntry'), 'Mask');
+			//砍价商品推荐详情页
+			// navToDetailPages(item) {
+			// 	let id = item.product_id;
+			// 	//let type = 2;
+
+			// 	uni.navigateTo({
+			// 		url: '/pages/product/product?id=' + id
+			// 	});
+			// },
+			navTo(url) {
+				if(!this.hasLogin){
+					saveUrl();
+					interceptor();
+				}else {
+					if (url == '') {
+						this.$api.msg('暂未开通,敬请期待');
+					} else {
+						uni.navigateTo({
+							url,
+							fail() {
+								uni.switchTab({
+									url
+								});
+							}
+						});
+					}
 				}
-			});
-		},
-		Toshare() {
-			if (this.userInfo == '') {
-				getUserInfo({})
-					.then(({ data }) => {
-						this.setUserInfo(data);
-						this.userInfo = data;
+				
+				
+			},
+			openSubscribe: function(e) {
+				let page = e;
+				// #ifndef MP
+				uni.navigateTo({
+					url: page
+				});
+				// #endif
+				// #ifdef MP
+				uni.showLoading({
+					title: '正在加载'
+				});
+				openBargainSubscribe()
+					.then(res => {
+						uni.hideLoading();
+						uni.navigateTo({
+							url: page
+						});
 					})
-					.catch(e => {});
-			} else {
+					.catch(err => {
+						uni.hideLoading();
+					});
+				// #endif
+			},
+			getBargainList() {
+				let that = this;
+
+				getBargainList({
+						page: that.page,
+						limit: that.limit
+					})
+					.then(function(res) {
+						that.$set(that, 'bargainlist', res.data.slice(0, 2));
+						console.log(that.bargainlist);
+					})
+					.catch(res => {
+						console.log(res, 'getBargainList');
+					});
+			},
+			Mask() {
+				this.MaskShow = false;
+				this.shareShow = true;
+				uni.setStorage({
+					key: 'FirstEntry',
+					data: true,
+					success: function() {
+						console.log(uni.getStorageSync('FirstEntry'), 'Mask');
+					}
+				});
+			},
+			Toshare() {
+				if (this.userInfo == '') {
+					getUserInfo({})
+						.then(({
+							data
+						}) => {
+							this.setUserInfo(data);
+							this.userInfo = data;
+						})
+						.catch(e => {});
+				} else {
+					this.shareShow = false;
+					uni.navigateTo({
+						url: '/pages/user/shareQrCode?spread=' + this.userInfo.uid
+					});
+				}
+			},
+			Tocancel() {
 				this.shareShow = false;
+			},
+			// 监听切换事件
+			listChange(e) {
+				this.checkid = e.detail.current;
+			},
+			// 點擊搜索框
+			clickSearch() {
 				uni.navigateTo({
-					url: '/pages/user/shareQrCode?spread=' + this.userInfo.uid
+					url: '/pages/product/search'
 				});
-			}
-		},
-		Tocancel() {
-			this.shareShow = false;
-		},
-		// 监听切换事件
-		listChange(e) {
-			this.checkid = e.detail.current;
-		},
-		// 點擊搜索框
-		clickSearch() {
-			uni.navigateTo({
-				url: '/pages/product/search'
-			});
-		},
-		// 点击触发领取优惠券
-		setCoupons(item) {
-			// 判断是否已经领取了优惠券
-			let obj = this;
-			uni.showModal({
-				title: '领取提示',
-				content: '是否领取优惠券',
-				success(e) {
-					if (e.confirm) {
-						setCoupons({
-							couponId: item.id
-						}).then(e => {
-							item.is_use = true;
-							uni.showToast({
-								title: '领取成功',
-								type: 'top',
-								duration: 2000
+			},
+			// 点击触发领取优惠券
+			setCoupons(item) {
+				// 判断是否已经领取了优惠券
+				let obj = this;
+				uni.showModal({
+					title: '领取提示',
+					content: '是否领取优惠券',
+					success(e) {
+						if (e.confirm) {
+							setCoupons({
+								couponId: item.id
+							}).then(e => {
+								item.is_use = true;
+								uni.showToast({
+									title: '领取成功',
+									type: 'top',
+									duration: 2000
+								});
 							});
-						});
+						}
 					}
+				});
+			},
+			//商品种类切换
+			change(item) {
+				let id = item;
+				this.checkid = id;
+				if (this.checkid == 1) {
+					// console.log(1);
+					this.detail = this.selected_detail;
+				} else if (this.checkid == 2) {
+					// console.log(2);
+					this.detail = this.new_product;
+				} else {
+					this.detail = this.cheap_good;
 				}
-			});
-		},
-		//商品种类切换
-		change(item) {
-			let id = item;
-			this.checkid = id;
-			if (this.checkid == 1) {
-				// console.log(1);
-				this.detail = this.selected_detail;
-			} else if (this.checkid == 2) {
-				// console.log(2);
-				this.detail = this.new_product;
-			} else {
-				this.detail = this.cheap_good;
-			}
-		},
-		// 监听图片加载完成
-		onImageError(key, index) {
-			this[key][index].image = '/static/error/errorImage.jpg';
-		},
-		// 请求载入数据
-		async loadData() {
-			loadIndexs({})
-				.then(({ data }) => {
-					let goods = data.info;
-					this.carouselList = data.banner;
-					console.log(this.carouselList, 'this.carouselList++++++++');
-					this.swiperLength = this.carouselList.length;
-					// this.bastList = data.giftInfo; //会员礼包
-					uni.stopPullDownRefresh();
-				})
-				.catch(e => {
-					uni.stopPullDownRefresh();
+			},
+			// 监听图片加载完成
+			onImageError(key, index) {
+				this[key][index].image = '/static/error/errorImage.jpg';
+			},
+			// 请求载入数据
+			async loadData() {
+				loadIndexs({})
+					.then(({
+						data
+					}) => {
+						let goods = data.info;
+						this.carouselList = data.banner;
+						console.log(this.carouselList, 'this.carouselList++++++++');
+						this.swiperLength = this.carouselList.length;
+						// this.bastList = data.giftInfo; //会员礼包
+						uni.stopPullDownRefresh();
+					})
+					.catch(e => {
+						uni.stopPullDownRefresh();
+					});
+			},
+			//轮播图切换修改背景色
+			swiperChange(e) {
+				const index = e.detail.current;
+				this.swiperCurrent = index;
+				this.titleNViewBackground = this.carouselList[index].background;
+			},
+			//详情页
+			navToDetailPage(item) {
+				let id = item.id;
+				uni.navigateTo({
+					url: '/pages/product/product?id=' + id + '&isVip=1'
+				});
+			},
+
+			// 轮播图跳转
+			bannerNavToUrl(item) {
+				// #ifdef H5
+				console.log(item.wap_url.indexOf('http'), 'banner');
+				if (item.wap_url.indexOf('http') >= 0) {
+					window.location.href = item.wap_url;
+				}
+				// #endif
+				//测试数据没有写id,用title代替
+				uni.navigateTo({
+					url: item.wap_url
+				});
+			},
+			getProduct() {
+				getProducts().then(res => {
+					console.log(res.data);
+					this.bastList = res.data;
 				});
-		},
-		//轮播图切换修改背景色
-		swiperChange(e) {
-			const index = e.detail.current;
-			this.swiperCurrent = index;
-			this.titleNViewBackground = this.carouselList[index].background;
-		},
-		//详情页
-		navToDetailPage(item) {
-			let id = item.id;
-			uni.navigateTo({
-				url: '/pages/product/product?id=' + id + '&isVip=1'
-			});
-		},
-
-		// 轮播图跳转
-		bannerNavToUrl(item) {
-			// #ifdef H5
-			console.log(item.wap_url.indexOf('http'), 'banner');
-			if (item.wap_url.indexOf('http') >= 0) {
-				window.location.href = item.wap_url;
 			}
-			// #endif
-			//测试数据没有写id,用title代替
-			uni.navigateTo({
-				url: item.wap_url
-			});
-		},
-		getProduct() {
-			getProducts().then(res => {
-				console.log(res.data);
-				this.bastList = res.data;
-			});
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-.carousel-section {
-	position: relative;
-	padding-top: 10px;
-
-	.bg {
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 750rpx;
-		height: 378rpx;
-
-		image {
-			width: 100%;
-			height: 100%;
-		}
-	}
-
-	.titleNview-placing {
-		height: var(--status-bar-height);
-		box-sizing: content-box;
-	}
+	.carousel-section {
+		position: relative;
+		padding-top: 10px;
 
-	.search {
-		justify-content: flex-start;
-		padding: 10rpx 32rpx 20rpx;
-		align-items: center;
+		.bg {
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 750rpx;
+			height: 378rpx;
 
-		.address {
-			width: 32rpx;
-			height: 38rpx;
+			image {
+				width: 100%;
+				height: 100%;
+			}
 		}
 
-		.shop-name {
-			height: 38rpx;
-			position: relative;
-			top: -4rpx;
-			z-index: 100;
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #ffffff;
-			padding-left: 10rpx;
+		.titleNview-placing {
+			height: var(--status-bar-height);
+			box-sizing: content-box;
 		}
 
-		.shop-jt {
-			margin-left: 8rpx;
-			width: 16rpx;
-			height: 10rpx;
-		}
+		.search {
+			justify-content: flex-start;
+			padding: 10rpx 32rpx 20rpx;
+			align-items: center;
 
-		.input-box {
-			margin-left: 10rpx;
-			position: relative;
-			z-index: 99;
-			width: 700rpx;
-			height: 60rpx;
-			background: rgba(255, 255, 255, 0.4);
-			border-radius: 30rpx;
+			.address {
+				width: 32rpx;
+				height: 38rpx;
+			}
 
-			.input-content {
+			.shop-name {
+				height: 38rpx;
 				position: relative;
-				z-index: 11;
-				border-radius: 99rpx;
-				flex-grow: 1;
-				padding: 5rpx 30rpx;
-				background: rgba(255, 255, 255, 0.4);
+				top: -4rpx;
+				z-index: 100;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #ffffff;
+				padding-left: 10rpx;
+			}
 
-				.iconsearch {
-					font-size: 50rpx;
-					color: #ffffff;
-				}
+			.shop-jt {
+				margin-left: 8rpx;
+				width: 16rpx;
+				height: 10rpx;
+			}
 
-				.input {
-					margin-left: 19rpx;
+			.input-box {
+				margin-left: 10rpx;
+				position: relative;
+				z-index: 99;
+				width: 700rpx;
+				height: 60rpx;
+				background: rgba(255, 255, 255, 0.4);
+				border-radius: 30rpx;
+
+				.input-content {
+					position: relative;
+					z-index: 11;
+					border-radius: 99rpx;
 					flex-grow: 1;
-					color: #ffffff;
+					padding: 5rpx 30rpx;
+					background: rgba(255, 255, 255, 0.4);
 
-					input {
-						font-size: 28rpx;
+					.iconsearch {
+						font-size: 50rpx;
+						color: #ffffff;
+					}
 
+					.input {
+						margin-left: 19rpx;
+						flex-grow: 1;
 						color: #ffffff;
+
+						input {
+							font-size: 28rpx;
+
+							color: #ffffff;
+						}
 					}
 				}
-			}
 
-			.input-button {
-				padding-left: 20rpx;
-				font-size: $font-base;
-				height: 100%;
+				.input-button {
+					padding-left: 20rpx;
+					font-size: $font-base;
+					height: 100%;
+				}
 			}
 		}
 	}
-}
-
-.carousel {
-	position: relative;
-	z-index: 3;
-	width: 100%;
-	height: 360rpx;
-
-	.carousel-item {
-		width: 100%;
-		height: 100%;
-		padding: 0 28rpx;
-		overflow: hidden;
+	.vipShop{
+		width: 750rpx;
+		padding: 0 30rpx;
+		height: 200rpx;
+		image{
+			width: 100%;
+			height: 100%;
+		}
 	}
 
-	image {
+	.carousel {
+		position: relative;
+		z-index: 3;
 		width: 100%;
-		height: 100%;
-		border-radius: $border-radius-sm;
-	}
-}
-
-.navbar {
-	position: relative;
-	z-index: 2;
-	margin-top: -200rpx;
-	width: 750rpx;
-	height: 462rpx;
-	background: #ffffff;
-	border-radius: 40rpx;
+		height: 360rpx;
 
-	.navbar-box {
-		padding-top: 250rpx;
-
-		.navbar-item {
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			width: 25%;
-
-			.nitem-image {
-				width: 98rpx;
-				height: 98rpx;
-			}
+		.carousel-item {
+			width: 100%;
+			height: 100%;
+			padding: 0 28rpx;
+			overflow: hidden;
+		}
 
-			.nitem-font {
-				margin-top: 22rpx;
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #000000;
-			}
+		image {
+			width: 100%;
+			height: 100%;
+			border-radius: $border-radius-sm;
 		}
 	}
-}
 
-.product-box {
-	margin-top: 20rpx;
-	background: #ffffff;
-	padding: 26rpx 30rpx 20rpx;
+	.navbar {
+		position: relative;
+		z-index: 2;
+		margin-top: -200rpx;
+		width: 750rpx;
+		height: 462rpx;
+		background: #ffffff;
+		border-radius: 40rpx;
 
-	.product-title {
-		display: flex;
-		align-items: center;
+		.navbar-box {
+			padding-top: 250rpx;
 
-		.pt-image {
-			width: 36rpx;
-			height: 36rpx;
-		}
+			.navbar-item {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				width: 25%;
 
-		.pt-title {
-			margin-left: 8rpx;
-			font-size: 32rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #333333;
-		}
+				.nitem-image {
+					width: 98rpx;
+					height: 98rpx;
+				}
 
-		.pt-tip {
-			margin-left: 16rpx;
-			font-size: 20rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #95a0b1;
+				.nitem-font {
+					margin-top: 22rpx;
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #000000;
+				}
+			}
 		}
 	}
 
-	.hotgoods {
-		margin-top: 38rpx;
-		width: 100%;
-		display: flex;
-		flex-wrap: wrap;
-		padding: 0 0 30rpx;
+	.product-box {
+		// margin-top: 20rpx;
+		background: #ffffff;
+		padding: 15rpx 30rpx 20rpx;
 
-		.hotgoods-item {
-			width: 48%;
-			background-color: #ffffff;
-			border-radius: 12rpx;
+		.product-title {
+			display: flex;
+			align-items: center;
 
-			&:nth-child(2n + 1) {
-				margin-right: 24rpx;
+			.pt-image {
+				width: 36rpx;
+				height: 36rpx;
 			}
 
-			.image-wrapper {
-				width: 100%;
-				height: 330rpx;
-				border-radius: 3px;
-				overflow: hidden;
-				position: relative;
-
-				.image-bg {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					width: 100%;
-					height: 100%;
-					opacity: 1;
-					border-radius: 12rpx 12rpx 0 0;
-					z-index: 2;
-				}
-
-				.image {
-					width: 100%;
-					height: 100%;
-					opacity: 1;
-					border-radius: 12rpx 12rpx 0 0;
-				}
+			.pt-title {
+				margin-left: 8rpx;
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
 			}
 
-			.title {
-				margin-top: 24rpx;
-				font-size: 28rpx;
+			.pt-tip {
+				margin-left: 16rpx;
+				font-size: 20rpx;
 				font-family: PingFang SC;
-				font-weight: 500;
-				color: #333333;
+				font-weight: bold;
+				color: #95a0b1;
 			}
+		}
 
-			.hot-price {
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				padding: 14rpx 0 30rpx;
-
-				.hotPrice-box {
-					width: 70rpx;
-					height: 28rpx;
-					background: linear-gradient(90deg, #c79a4c, #f9df7f);
-					border-radius: 5rpx;
-					text-align: center;
-					line-height: 28rpx;
-					font-size: 20rpx;
-					font-family: Source Han Sans CN;
-					font-weight: 400;
-					color: #ffffff;
+		.hotgoods {
+			margin-top: 38rpx;
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 0 0 30rpx;
+
+			.hotgoods-item {
+				width: 48%;
+				background-color: #ffffff;
+				border-radius: 12rpx;
+
+				&:nth-child(2n + 1) {
+					margin-right: 24rpx;
 				}
 
-				.price {
-					margin-left: 10rpx;
-					font-size: 40rpx;
-					color: #ff0000;
-					font-weight: 500;
+				.image-wrapper {
+					width: 100%;
+					height: 330rpx;
+					border-radius: 3px;
+					overflow: hidden;
+					position: relative;
+
+					.image-bg {
+						position: absolute;
+						top: 0;
+						left: 0;
+						right: 0;
+						bottom: 0;
+						width: 100%;
+						height: 100%;
+						opacity: 1;
+						border-radius: 12rpx 12rpx 0 0;
+						z-index: 2;
+					}
+
+					.image {
+						width: 100%;
+						height: 100%;
+						opacity: 1;
+						border-radius: 12rpx 12rpx 0 0;
+					}
 				}
 
-				.yuanPrice {
-					margin-left: 10rpx;
-					font-size: 20rpx;
+				.title {
+					margin-top: 24rpx;
+					font-size: 28rpx;
 					font-family: PingFang SC;
 					font-weight: 500;
-					text-decoration: line-through;
-					color: #999999;
+					color: #333333;
 				}
 
-				.cart-icon {
-					image {
-						width: 44rpx;
-						height: 44rpx;
+				.hot-price {
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					padding: 14rpx 0 30rpx;
+
+					.hotPrice-box {
+						width: 70rpx;
+						height: 28rpx;
+						background: linear-gradient(90deg, #c79a4c, #f9df7f);
+						border-radius: 5rpx;
+						text-align: center;
+						line-height: 28rpx;
+						font-size: 20rpx;
+						font-family: Source Han Sans CN;
+						font-weight: 400;
+						color: #ffffff;
 					}
-				}
-			}
-		}
-	}
-}
 
-.popup-box {
-	width: 522rpx;
-	height: 605rpx;
-	background-color: #ffffff;
-	border-radius: 20rpx;
-	position: relative;
+					.price {
+						margin-left: 10rpx;
+						font-size: 40rpx;
+						color: #ff0000;
+						font-weight: 500;
+					}
 
-	.img {
-		position: relative;
-		top: -56rpx;
-		left: 0;
-		width: 522rpx;
-		height: 132rpx;
-		display: flex;
-		justify-content: center;
+					.yuanPrice {
+						margin-left: 10rpx;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						text-decoration: line-through;
+						color: #999999;
+					}
 
-		image {
-			border-radius: 20rpx 20rpx 0 0;
-			width: 450rpx;
-			height: 132rpx;
+					.cart-icon {
+						image {
+							width: 44rpx;
+							height: 44rpx;
+						}
+					}
+				}
+			}
 		}
 	}
 
-	.mian {
-		margin-top: -44rpx;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		// padding: 32rpx 32rpx;
+	.popup-box {
+		width: 522rpx;
+		height: 605rpx;
 		background-color: #ffffff;
-		border-radius: 0 0 20rpx 20rpx;
-		text-align: center;
+		border-radius: 20rpx;
+		position: relative;
 
-		.delivery {
-			font-size: 40rpx;
-			color: #333333;
+		.img {
+			position: relative;
+			top: -56rpx;
+			left: 0;
+			width: 522rpx;
+			height: 132rpx;
 			display: flex;
-			align-items: center;
-			flex-direction: column;
-
-			.title {
-			}
+			justify-content: center;
 
 			image {
-				margin-top: 48rpx;
-				width: 172rpx;
-				height: 160rpx;
+				border-radius: 20rpx 20rpx 0 0;
+				width: 450rpx;
+				height: 132rpx;
 			}
 		}
 
-		.nocancel {
-			font-size: 32rpx;
-			color: #333333;
-			margin-top: 14rpx;
-		}
-
-		.comfirm-box {
-			margin-top: 52rpx;
+		.mian {
+			margin-top: -44rpx;
 			display: flex;
-			// margin-bottom: 32rpx;
+			flex-direction: column;
+			align-items: center;
+			// padding: 32rpx 32rpx;
+			background-color: #ffffff;
+			border-radius: 0 0 20rpx 20rpx;
+			text-align: center;
 
-			// justify-content: space-around;
-			.cancel {
+			.delivery {
+				font-size: 40rpx;
+				color: #333333;
 				display: flex;
 				align-items: center;
-				justify-content: center;
-				width: 197rpx;
-				height: 74rpx;
-				border: 1px solid #dcc786;
-				border-radius: 38rpx;
+				flex-direction: column;
 
+				.title {}
+
+				image {
+					margin-top: 48rpx;
+					width: 172rpx;
+					height: 160rpx;
+				}
+			}
+
+			.nocancel {
 				font-size: 32rpx;
-				color: #605128;
+				color: #333333;
+				margin-top: 14rpx;
 			}
 
-			.comfirm {
-				margin-left: 32rpx;
+			.comfirm-box {
+				margin-top: 52rpx;
 				display: flex;
-				align-items: center;
-				justify-content: center;
-				width: 197rpx;
-				height: 74rpx;
-				background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
-				border-radius: 38px;
-				font-size: 32rpx;
-				color: #605128;
+				// margin-bottom: 32rpx;
+
+				// justify-content: space-around;
+				.cancel {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					width: 197rpx;
+					height: 74rpx;
+					border: 1px solid #dcc786;
+					border-radius: 38rpx;
+
+					font-size: 32rpx;
+					color: #605128;
+				}
+
+				.comfirm {
+					margin-left: 32rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					width: 197rpx;
+					height: 74rpx;
+					background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
+					border-radius: 38px;
+					font-size: 32rpx;
+					color: #605128;
+				}
 			}
 		}
 	}
-}
-
-.cnxh {
-	text-align: center;
-	font-size: 30rpx;
-	font-weight: 500;
-	color: #363636;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	padding: 20rpx 0;
-
-	.hx {
-		width: 120rpx;
-		height: 1rpx;
-		background: #989898;
-		margin: 0 40rpx;
+
+	.cnxh {
+		text-align: center;
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #363636;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding: 20rpx 0;
+
+		.hx {
+			width: 120rpx;
+			height: 1rpx;
+			background: #989898;
+			margin: 0 40rpx;
+		}
 	}
-}
 </style>

+ 420 - 365
pages/money/pay.vue

@@ -6,13 +6,15 @@
 		</view>
 		<view class="pay-type-list">
 			<!-- v-if="ispg == 'android'" -->
-			<view class="type-item b-b"  @click="changePayType(1)">
+			<view class="type-item b-b" @click="changePayType(1)">
 				<text class="icon iconfont iconweixin"></text>
 				<view class="con">
 					<text class="tit">微信支付</text>
 					<text>推荐使用微信支付</text>
 				</view>
-				<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 1"></radio></label>
+				<label class="radio">
+					<radio value="" color="#5dbc7c" :checked="payType == 1"></radio>
+				</label>
 			</view>
 			<!-- <view class="type-item b-b" @click="changePayType(2)">
 				<text class="icon iconfont iconzhifubao"></text>
@@ -25,7 +27,9 @@
 					<text class="tit">余额支付</text>
 					<text>可用余额 ¥{{ now_money }}</text>
 				</view>
-				<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 3"></radio></label>
+				<label class="radio">
+					<radio value="" color="#5dbc7c" :checked="payType == 3"></radio>
+				</label>
 			</view>
 		</view>
 		<text class="mix-btn" :class="{ clickbg: payLoding }" @click="!payLoding ? confirm() : ''">确认支付</text>
@@ -33,399 +37,450 @@
 </template>
 
 <script>
-import { balance } from '@/api/wallet.js';
-import { createOrderkey, computedOrderkey, orderPay } from '@/api/order.js';
-import { mapState } from 'vuex';
-import { isIOS } from '@/utils/platform.js';
-export default {
-	data() {
-		return {
-			payType: 3, //支付类型
-			payName: 'yue',
-			orderInfo: {},
-			money: 0.0, //订单金额
-			now_money: 0.0, //余额
-			orderKey: '',
-			orderId: '', //保存订单id
-			payLoding: false, //判断是否支付中
-			type: '', //判断是否从订单中进入
+	import {
+		balance
+	} from '@/api/wallet.js';
+	import {
+		createOrderkey,
+		computedOrderkey,
+		orderPay
+	} from '@/api/order.js';
+	import {
+		mapState
+	} from 'vuex';
+	// #ifdef APP-PLUS
+	import {
+		isIOS
+	} from '@/utils/platform.js';
+	// #endif
+	// #ifdef H5
+	import weixinObj from "@/plugin/jweixin-module/index.js";
+	// #endif
+	export default {
+		data() {
+			return {
+				payType: 3, //支付类型
+				payName: 'yue',
+				orderInfo: {},
+				money: 0.0, //订单金额
+				now_money: 0.0, //余额
+				orderKey: '',
+				orderId: '', //保存订单id
+				payLoding: false, //判断是否支付中
+				type: '', //判断是否从订单中进入
+				// #ifdef H5
+				froms: '', //保存h5中数据来源对象
+				// #endif
+				pinkid: '', //保存拼团商品id
+				ispg: '' //是否是苹果
+			};
+		},
+		computed: {
 			// #ifdef H5
-			froms: '', //保存h5中数据来源对象
+			...mapState(['weichatObj'])
 			// #endif
-			pinkid: '', //保存拼团商品id
-			ispg: '' //是否是苹果
-		};
-	},
-	computed: {
-		// #ifdef H5
-		...mapState(['weichatObj'])
-		// #endif
-	},
-	onLoad(options) {
-		console.log(options,'options');
-		this.ispg = uni.getSystemInfoSync().platform;
-		console.log(this.ispg);
-		if (options.type == 1) {
-			this.type = 1;
-			this.orderId = options.ordid;
-			this.money = options.money;
-		} else {
-			this.orderKey = options.key;
-			let prepage = this.$api.prePage();
-			computedOrderkey({
-				orderkey: this.orderKey,
-				couponId: prepage.couponChecked.id, //优惠券编号
-				addressId: prepage.addressData.id, //地址编号
-				useIntegral: prepage.checkedPoints ? 1 : 0
-			}).then(({ data }) => {
-				// 获取支付金额
-				console.log(data,'1231321312');
-				if(data.result.totalIntegral>0){
-					// data.result.totalIntegral
-					this.money = 0
-				}else{this.money = data.result.pay_price;}
-				
-			});
-		}
-		// 保存pinkid
-		if (options.pinkid) {
-			this.pinkid = options.pinkid;
-		}
-		// 载入余额
-		balance({}).then(({ data }) => {
-			// 获取余额
-			this.now_money = data.now_money;
-		});
-	},
-	methods: {
-		//选择支付方式
-		changePayType(type) {
-			this.payType = type;
-			if (this.payType == 1) {
-				this.payName = 'weixin';
-			}
-			if (this.payType == 2) {
-				this.payName = 'ali';
+		},
+		onLoad(options) {
+			console.log(options, 'options');
+			this.ispg = uni.getSystemInfoSync().platform;
+			console.log(this.ispg);
+			if (options.type == 1) {
+				this.type = 1;
+				this.orderId = options.ordid;
+				this.money = options.money;
+			} else {
+				this.orderKey = options.key;
+				let prepage = this.$api.prePage();
+				computedOrderkey({
+					orderkey: this.orderKey,
+					couponId: prepage.couponChecked.id, //优惠券编号
+					addressId: prepage.addressData.id, //地址编号
+					useIntegral: prepage.checkedPoints ? 1 : 0
+				}).then(({
+					data
+				}) => {
+					// 获取支付金额
+					console.log(data, '1231321312');
+					if (data.result.totalIntegral > 0) {
+						// data.result.totalIntegral
+						this.money = 0
+					} else {
+						this.money = data.result.pay_price;
+					}
+
+				});
 			}
-			if (this.payType == 3) {
-				this.payName = 'yue';
+			// 保存pinkid
+			if (options.pinkid) {
+				this.pinkid = options.pinkid;
 			}
+			// 载入余额
+			balance({}).then(({
+				data
+			}) => {
+				// 获取余额
+				this.now_money = data.now_money;
+			});
 		},
-		// 支付金额
-		orderMoneyPay() {
-			let obj = this;
-			orderPay({
-				uni: obj.orderId,
-				// #ifdef H5
-				from: obj.froms ? 'weixin' : 'H5', //来源
-				// #endif
-				// #ifdef MP-WEIXIN
-				from: 'routine', //来源
-				// #endif
-				// #ifdef APP-PLUS
-				from: 'app', //来源
-				// #endif
-				paytype: obj.payName //支付类型  weixin-微信 yue-余额
-			})
-				.then(e => {
-					// 判断是否为余额支付
-					if (obj.payName == 'yue' && e.data.status == 'SUCCESS') {
-						if (e.status == 200) {
-							obj.paySuccessTo();
+		methods: {
+			//选择支付方式
+			changePayType(type) {
+				this.payType = type;
+				if (this.payType == 1) {
+					this.payName = 'weixin';
+				}
+				if (this.payType == 2) {
+					this.payName = 'ali';
+				}
+				if (this.payType == 3) {
+					this.payName = 'yue';
+				}
+			},
+			// 支付金额
+			orderMoneyPay() {
+				let obj = this;
+				orderPay({
+						uni: obj.orderId,
+						// #ifdef H5
+						from: obj.froms ? 'weixin' : 'weixinh5', //来源
+						// #endif
+						// #ifdef MP-WEIXIN
+						from: 'routine', //来源
+						// #endif
+						// #ifdef APP-PLUS
+						from: 'app', //来源
+						// #endif
+						paytype: obj.payName //支付类型  weixin-微信 yue-余额
+					})
+					.then(e => {
+						// 判断是否为余额支付
+						if (obj.payName == 'yue' && e.data.status == 'SUCCESS') {
+							if (e.status == 200) {
+								obj.paySuccessTo();
+							} else {
+								obj.$api.msg(msg);
+							}
+						}
+
+						//#ifndef APP-PLUS
+						//判断是否是微信浏览器
+						let ua = navigator.userAgent.toLowerCase()
+						console.log(ua, 'ua');
+						if (ua.match(/MicroMessenger/i) == "micromessenger") {
+
+							console.log("当前是微信浏览器");
 						} else {
-							obj.$api.msg(msg);
+							console.log("当前不是微信浏览器");
 						}
-					}
-					//#ifndef APP-PLUS
-					if (obj.payName == 'weixin' || obj.payName == 'routine') {
-						let da = e.data.result.jsConfig;
-						console.log(da,'支付打印');
-						let data = {
+						if (obj.payName == 'weixin') {
+							window.location.href = e.data.result.jsConfig.mweb_url
+						}
+						if (obj.payName == 'routine') {
+							let da = e.data.result.jsConfig;
+							console.log(da, '支付打印');
+							// windows.location.href = da.mweb_url
+							let data = {
+								// #ifdef H5
+								timestamp: da.timestamp,
+								// #endif
+								// #ifdef MP
+								timeStamp: da.timestamp,
+								// #endif
+								nonceStr: da.nonceStr,
+								package: da.package,
+								signType: da.signType,
+								paySign: da.paySign,
+								success: function(res) {
+									console.log(res, 'eeeeeeeres');
+
+									obj.paySuccessTo();
+								},
+								fail: () => {
+									uni.navigateTo({
+										url: '/pages/order/order?state=0'
+									});
+								}
+							};
 							// #ifdef H5
-							timestamp: da.timestamp,
-							// #endif
-							// #ifdef MP
-							timeStamp: da.timestamp,
+							if (obj.payName == 'weixin') {
+								weixinObj.chooseWXPay(data);
+
+							}
 							// #endif
-							nonceStr: da.nonceStr,
-							package: da.package,
-							signType: da.signType,
-							paySign: da.paySign,
-							success: function(res) {
-								obj.paySuccessTo();
-							},
-							fail: () => {
-								uni.navigateTo({
-									url: '/pages/order/order?state=0'
-								});
+							// #ifdef MP-WEIXIN
+							if (obj.payName == 'routine') {
+								weixinObj.chooseWXPay(data);
 							}
-						};
-						// #ifdef H5
-						if (obj.payName == 'weixin') {
-							obj.weichatObj.chooseWXPay(data);
+							// #endif
 						}
 						// #endif
-						// #ifdef MP-WEIXIN
-						if (obj.payName == 'routine') {
-							wx.requestPayment(data);
+						//#ifdef APP-PLUS
+						if (obj.payName == 'weixin' || obj.payName == 'routine') {
+							let da = e.data.result.jsConfig;
+							console.log('--da--', da);
+							let data = {
+								appid: da.appid,
+								noncestr: da.noncestr,
+								package: da.package,
+								partnerid: da.partnerid,
+								prepayid: da.prepayid,
+								timestamp: da.timestamp,
+								sign: da.sign
+							};
+							console.log('--data--', data);
+							uni.requestPayment({
+								provider: 'wxpay',
+								orderInfo: data,
+								success(res) {
+									console.log(res);
+									uni.showToast({
+										title: '支付成功',
+										duration: 2000
+									});
+									obj.paySuccessTo();
+								},
+								fail(res) {
+									console.log(res, '失败');
+								}
+							});
 						}
-						// #endif
-					}
-					// #endif
-					//#ifdef APP-PLUS
-					if (obj.payName == 'weixin' || obj.payName == 'routine') {
-						let da = e.data.result.jsConfig;
-						console.log('--da--', da);
-						let data = {
-							appid: da.appid,
-							noncestr: da.noncestr,
-							package: da.package,
-							partnerid: da.partnerid,
-							prepayid: da.prepayid,
-							timestamp: da.timestamp,
-							sign: da.sign
-						};
-						console.log('--data--', data);
-						uni.requestPayment({
-							provider: 'wxpay',
-							orderInfo: data,
-							success(res) {
-								console.log(res);
-								uni.showToast({
-									title: '支付成功',
-									duration: 2000
-								});
-								obj.paySuccessTo();
-							},
-							fail(res) {
-								console.log(res, '失败');
-							}
-						});
-					}
-					if (obj.payName == 'ali') {
-						const url = e.data.result.jsConfig;
-						console.log(url, 'url');
-						uni.requestPayment({
-							provider: 'alipay',
-							orderInfo: url,
-							success: res => {
-								console.log(res);
-								uni.showToast({
-									title: '支付成功',
-									duration: 2000
-								});
-								obj.paySuccessTo();
-							},
-							fail: e => {
-								console.log(e);
-							},
-							complete: () => {}
-						});
+						if (obj.payName == 'ali') {
+							const url = e.data.result.jsConfig;
+							console.log(url, 'url');
+							uni.requestPayment({
+								provider: 'alipay',
+								orderInfo: url,
+								success: res => {
+									console.log(res);
+									uni.showToast({
+										title: '支付成功',
+										duration: 2000
+									});
+									obj.paySuccessTo();
+								},
+								fail: e => {
+									console.log(e);
+								},
+								complete: () => {}
+							});
+							obj.payLoding = false;
+						}
+						//#endif
+						uni.hideLoading();
 						obj.payLoding = false;
-					}
-					//#endif
-					uni.hideLoading();
-					obj.payLoding = false;
-				})
-				.catch(e => {
-					// 支付完成
-					uni.hideLoading();
-					obj.payLoding = false;
-					console.log(e);
-				});
-		},
-		// 支付成功跳转
-		paySuccessTo() {
-			uni.hideLoading();
-			uni.redirectTo({
-				url: '/pages/money/paySuccess?orderid=' + this.orderId
-			});
-		},
-		//确认支付
-		confirm: async function() {
-			let obj = this;
-			
-			// 判断是否余额不足
-			if (obj.payName == 'yue' && +obj.now_money < obj.money) {
-				uni.showModal({
-					title: '提示',
-					content: '账户余额不足!',
-					showCancel: false,
-					success: res => {},
-					fail: () => {},
-					complete: () => {}
+					})
+					.catch(e => {
+						// 支付完成
+						uni.hideLoading();
+						obj.payLoding = false;
+						console.log(e);
+					});
+			},
+			// 支付成功跳转
+			paySuccessTo() {
+				uni.hideLoading();
+				uni.redirectTo({
+					url: '/pages/money/paySuccess?orderid=' + this.orderId
 				});
-				return;
-			}
-			uni.showLoading({
-				title: '支付中',
-				mask: true
-			});
-			// 支付中
-			obj.payLoding = true;
-			// #ifdef H5
-			// 获取当前是否为微信浏览器
-			obj.froms = uni.getStorageSync('weichatBrowser') || '';
-			// #endif
-			// 判断是否为未支付订单中跳转进入
-			if (obj.type != 1) {
-				// 初次生成订单
-				obj.firstCreateOrder();
-			} else {
-				// 已经生成订单未支付
-				obj.orderMoneyPay();
-			}
-		},
-		// 初次订单创建
-		firstCreateOrder() {
-			let obj = this;
-			// 获取下单页面数据
-			let prepage = obj.$api.prePage();
+			},
+			//确认支付
+			confirm: async function() {
+				let obj = this;
 
-			let data = {
-				real_name: prepage.addressData.real_name, //联系人名称
-				phone: prepage.addressData.phone, //联系人号码
-				couponId: prepage.couponChecked.id, //优惠券编号
-				addressId: prepage.addressData.id, //支付地址id
-				useIntegral: prepage.checkedPoints ? 1 : 0, //是否积分抵扣1为是0为否
-				payType: obj.payName, //支付类型  weixin-微信 yue-余额
-				mark: prepage.desc, //备注
+				// 判断是否余额不足
+				if (obj.payName == 'yue' && +obj.now_money < obj.money) {
+					uni.showModal({
+						title: '提示',
+						content: '账户余额不足!',
+						showCancel: false,
+						success: res => {},
+						fail: () => {},
+						complete: () => {}
+					});
+					return;
+				}
+				uni.showLoading({
+					title: '支付中',
+					mask: true
+				});
+				// 支付中
+				obj.payLoding = true;
 				// #ifdef H5
-				from: obj.froms ? 'weixin' : 'H5', //来源
-				// #endif
-				// #ifdef MP-WEIXIN
-				from: 'routine', //来源
+				// 获取当前是否为微信浏览器
+				obj.froms = uni.getStorageSync('weichatBrowser') || '';
 				// #endif
-				// #ifdef APP-PLUS
-				from: 'app', //来源
-				// #endif
-				shipping_type: 1 //提货方式 1 快递 2自提
-			};
-			// 判断是否拼团商品
-			if (obj.pinkid) {
-				data.pinkId = obj.pinkid;
-			}
-			// 生成订单
-			createOrderkey(data, obj.orderKey)
-				.then(({ data, status, msg }) => {
-					console.log(status);
-					// 判断是否支付失败
-					if (data.status == 'ORDER_EXIST') {
-						uni.showModal({
-							title: '提示',
-							content: msg,
-							showCancel: false
-						});
-						uni.hideLoading();
-						obj.payLoding = false;
-						return;
-					}
-					// 保存订单号
-					obj.orderId = data.result.orderId;
-					// 判断是否为余额支付
-					if (obj.payName == 'yue') {
-						if (status == 200) {
-							obj.paySuccessTo();
+				// 判断是否为未支付订单中跳转进入
+				if (obj.type != 1) {
+					// 初次生成订单
+					obj.firstCreateOrder();
+				} else {
+					// 已经生成订单未支付
+					obj.orderMoneyPay();
+				}
+			},
+			// 初次订单创建
+			firstCreateOrder() {
+				let obj = this;
+				// 获取下单页面数据
+				let prepage = obj.$api.prePage();
+				console.log(prepage, 'prepageprepage');
+
+				let data = {
+					real_name: prepage.addressData.real_name, //联系人名称
+					phone: prepage.addressData.phone, //联系人号码
+					couponId: prepage.couponChecked.id, //优惠券编号
+					addressId: prepage.addressData.id, //支付地址id
+					useIntegral: prepage.checkedPoints ? 1 : 0, //是否积分抵扣1为是0为否
+					payType: obj.payName, //支付类型  weixin-微信 yue-余额
+					mark: prepage.desc, //备注
+					// #ifdef H5
+					from: obj.froms ? 'weixin' : 'weixinh5', //来源
+					// #endif
+					// #ifdef MP-WEIXIN
+					from: 'routine', //来源
+					// #endif
+					// #ifdef APP-PLUS
+					from: 'app', //来源
+					// #endif
+					shipping_type: 1 //提货方式 1 快递 2自提
+				};
+				// 判断是否拼团商品
+				if (obj.pinkid) {
+					data.pinkId = obj.pinkid;
+				}
+				// 生成订单
+				createOrderkey(data, obj.orderKey)
+					.then(({
+						data,
+						status,
+						msg
+					}) => {
+						console.log(status, '支付成功返回');
+						// 判断是否支付失败
+						if (data.status == 'ORDER_EXIST') {
+							uni.showModal({
+								title: '提示',
+								content: msg,
+								showCancel: false
+							});
+							uni.hideLoading();
+							obj.payLoding = false;
+							return;
+						}
+						// 保存订单号
+						obj.orderId = data.result.orderId;
+						// 判断是否为余额支付
+						if (obj.payName == 'yue') {
+							if (status == 200) {
+								obj.paySuccessTo();
+							} else {
+								obj.$api.msg(msg);
+							}
 						} else {
-							obj.$api.msg(msg);
+							// 立即支付
+							obj.orderMoneyPay();
 						}
-					} else {
-						// 立即支付
-						obj.orderMoneyPay();
-					}
-				})
-				.catch(e => {
-					uni.hideLoading();
-					obj.payLoding = false;
-					console.log(e, '123456789');
-				});
+					})
+					.catch(e => {
+						uni.hideLoading();
+						obj.payLoding = false;
+						console.log(e, '123456789');
+					});
+			}
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-.app {
-	width: 100%;
-}
-
-.price-box {
-	background-color: #fff;
-	height: 265upx;
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	align-items: center;
-	font-size: 28upx;
-	color: #909399;
-
-	.price {
-		font-size: 50upx;
-		color: #303133;
-		margin-top: 12upx;
-		&:before {
-			content: '¥';
-			font-size: 40upx;
-		}
+	.app {
+		width: 100%;
 	}
-}
 
-.pay-type-list {
-	margin-top: 20upx;
-	background-color: #fff;
-	padding-left: 60upx;
-	.type-item {
-		height: 120upx;
-		padding: 20upx 0;
+	.price-box {
+		background-color: #fff;
+		height: 265upx;
 		display: flex;
-		justify-content: space-between;
+		flex-direction: column;
+		justify-content: center;
 		align-items: center;
-		padding-right: 60upx;
-		font-size: 30upx;
-		position: relative;
-	}
+		font-size: 28upx;
+		color: #909399;
 
-	.icon {
-		width: 100upx;
-		font-size: 52upx;
-	}
-	.iconyue {
-		color: #fe8e2e;
-	}
-	.iconweixin {
-		color: #36cb59;
-	}
-	.iconzhifubao {
-		color: #01aaef;
+		.price {
+			font-size: 50upx;
+			color: #303133;
+			margin-top: 12upx;
+
+			&:before {
+				content: '¥';
+				font-size: 40upx;
+			}
+		}
 	}
-	.tit {
-		font-size: $font-lg;
-		color: $font-color-dark;
-		margin-bottom: 4upx;
+
+	.pay-type-list {
+		margin-top: 20upx;
+		background-color: #fff;
+		padding-left: 60upx;
+
+		.type-item {
+			height: 120upx;
+			padding: 20upx 0;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding-right: 60upx;
+			font-size: 30upx;
+			position: relative;
+		}
+
+		.icon {
+			width: 100upx;
+			font-size: 52upx;
+		}
+
+		.iconyue {
+			color: #fe8e2e;
+		}
+
+		.iconweixin {
+			color: #36cb59;
+		}
+
+		.iconzhifubao {
+			color: #01aaef;
+		}
+
+		.tit {
+			font-size: $font-lg;
+			color: $font-color-dark;
+			margin-bottom: 4upx;
+		}
+
+		.con {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			font-size: $font-sm;
+			color: $font-color-light;
+		}
 	}
-	.con {
-		flex: 1;
+
+	.mix-btn {
 		display: flex;
-		flex-direction: column;
-		font-size: $font-sm;
-		color: $font-color-light;
+		align-items: center;
+		justify-content: center;
+		width: 630upx;
+		height: 80upx;
+		margin: 80upx auto 30upx;
+		font-size: $font-lg;
+		color: #fff;
+		background-color: $base-color;
+		border-radius: 10upx;
+		/* box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4); */
 	}
-}
-.mix-btn {
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 630upx;
-	height: 80upx;
-	margin: 80upx auto 30upx;
-	font-size: $font-lg;
-	color: #fff;
-	background-color: $base-color;
-	border-radius: 10upx;
-	/* box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4); */
-}
 
-.clickbg {
-	background-color: $color-gray !important;
-}
-</style>
+	.clickbg {
+		background-color: $color-gray !important;
+	}
+</style>

+ 29 - 1
pages/money/withdmoenys.vue

@@ -7,6 +7,12 @@
 					<text class="text">可用美好积分</text>
 				</view>
 			</view>
+			<view class="flex" v-if="type == 'yg'">
+				<view class="buttom">
+					<view class="icon">{{ userInfo.purple_integral | getMoneyStyle }}</view>
+					<text class="text">可用阳光积分</text>
+				</view>
+			</view>
 			<view class="flex" v-if="type == 'yue'">
 				<view class="buttom">
 					<view class="icon">{{ userInfo.now_money | getMoneyStyle }}</view>
@@ -31,6 +37,7 @@
 				<input class="input" type="number" v-model="withdrawal" placeholder="转入金额" placeholder-class="placeholder" />
 				<view class="buttom" v-if="type == 'xl'" @click="withdrawal = userInfo.business_integral">全部转账</view>
 				<view class="buttom" v-if="type == 'yue'" @click="withdrawal = userInfo.now_money">全部转账</view>
+				<view class="buttom" v-if="type == 'yg'" @click="withdrawal = userInfo.purple_integral">全部转账</view>
 				<view class="buttom" v-if="type == 'cash'" @click="withdrawal = userInfo.cash">全部转账</view>
 			</view>
 		</view>
@@ -42,7 +49,7 @@
 
 <script>
 import { getMoneyStyle } from '@/utils/rocessor.js';
-import { getUserInfo, transfer, yuetransfer, cashtransfer,yueXhg } from '@/api/user.js';
+import { getUserInfo, transfer, yuetransfer, cashtransfer,yueXhg,yueYg } from '@/api/user.js';
 import { mapMutations, mapState } from 'vuex';
 export default {
 	filters: {
@@ -145,6 +152,27 @@ export default {
 							console.log();
 						});
 				}
+				if(obj.type == 'yg'){
+					yueYg({
+						uid: obj.card, //编号
+						price: obj.withdrawal ,//金额
+					}).then(res=>{
+					obj.loding = false;
+						// 初始化提现金额
+						obj.withdrawal = '';
+						uni.showToast({
+							title: '提交成功',
+							duration: 2000,
+							position: 'top'
+						});
+						obj.dataUp();
+					})
+					.catch(e => {
+						obj.$api.msg(e.msg);
+						obj.loding = false;
+						console.log();
+					});
+				}
 				if (obj.type == 'yue') {
 					yueXhg({
 					phone: obj.card, //编号

+ 1 - 1
pages/order/evaluate.vue

@@ -286,7 +286,7 @@ page {
 	height: 96rpx;
 	line-height: 96rpx;
 	text-align: center;
-	background-color: #1BCC26 !important;
+	background-color: #f65067 !important;
 	opacity: 1;
 	border-radius: 32rpx;
 	border-width: 8rpx;

+ 5 - 2
pages/order/order.vue

@@ -50,9 +50,12 @@
 							<text class="num">{{ item.cartInfo.length }}</text>
 							件商品 邮费
 							<text class="price">{{ moneyNum(item.pay_postage)}}</text>
-							实付款
-							<text class="price">{{ moneyNum(item.pay_price)}}</text>
+							累计金额
+							<text class="price">{{ moneyNum(item.cumulative)}}</text>
 						</view>
+						<!-- <view class="price-box">
+							累计金额: {{item.cumulative||0}}
+						</view> -->
 						<view class="action-box b-t" v-if="item.status != 5">
 							<button v-if="item._status._title == '未支付'" class="action-btn" @click.stop="cancelOrder(item)">取消订单</button>
 							<button v-if="item._status._title == '未支付'" @click.stop="orderPay(item)" class="action-btn recom">立即支付</button>

+ 4 - 4
pages/order/orderDetail.vue

@@ -4,7 +4,7 @@
 			<text class="order-status" @click="item.delivery_type == 'express'?towuliu(item):''">{{ item._status ? item._status._msg : '' }}</text>
 		</view>
 		<!-- 快递信息 -->
-		<view class="express-box" @click="expressCheck(item)" v-if="item.delivery_id != null ">
+		<!-- <view class="express-box" @click="expressCheck(item)" v-if="item.delivery_id != null ">
 			<view v-if='item.delivery_id != null' style="width: 100%;padding: 10rpx 20rpx;background: #FFFFFF;">
 				<view class="express-frame">
 					<view>
@@ -20,7 +20,7 @@
 					<text class="iconfont iconenter" style="color: #CCCCCC;"></text>
 				</view>
 			</view>
-		</view>
+		</view> -->
 		<view class="address-box position-relative">
 			<view class="address-top flex">
 				<view class="title">{{ item.real_name }}</view>
@@ -72,8 +72,8 @@
 			<view class="input">-¥{{ item.use_integral }}</view>
 		</view>
 		<view class="row b-b flex">
-			<text class="tit ">实付</text>
-			<view class="input payColor">¥{{ item.pay_price }}</view>
+			<text class="tit ">累计金额</text>
+			<view class="input payColor">¥{{ item.cumulative }}</view>
 		</view>
 
 		<view class="orderDetialBox">

+ 7 - 7
pages/product/product.vue

@@ -189,13 +189,13 @@
 		},
 		async onLoad(options) {
 			let obj = this;
-			userinfo({})
-				.then(({
-					data
-				}) => {
-					obj.userInfo = data;
-					console.log(data, "123456")
-				})
+			// userinfo({})
+			// 	.then(({
+			// 		data
+			// 	}) => {
+			// 		obj.userInfo = data;
+			// 		console.log(data, "123456")
+			// 	})
 			//保存商品id
 			this.goodsid = options.id;
 			this.goodsType = options.type;

+ 11 - 6
pages/public/login.vue

@@ -1,6 +1,9 @@
 <template>
 	<view class="container">
-		<view class="container_text"><image class="banner-img" src="/static/img/img01.png" mode="scaleToFill"></image></view>
+		<!-- <view class="container_text"><image class="banner-img" src="/static/img/img04.png" mode="scaleToFill"></image></view> -->
+		<view class="container_text">
+			
+		</view>
 		<view class="loginTitle"><text>登录</text></view>
 		<view class="login_text">
 			<view class="login_input flex">
@@ -28,8 +31,8 @@
 				<view class="fenge"></view>
 			</view> -->
 			<!-- #ifndef APP-PLUS -->
-			<view class="weixin" @click="wecahtLogin"><image src="/static/img/img05.png"></image></view>
-			<view class="weixin_text" @click="wecahtLogin">微信登录</view>
+		<!-- 	<view class="weixin" @click="wecahtLogin"><image src="/static/img/img05.png"></image></view>
+			<view class="weixin_text" @click="wecahtLogin">微信登录</view> -->
 			<!-- #endif -->
 			<!-- #ifdef APP-PLUS -->
 			<!-- <block v-if="!is_ios">
@@ -78,6 +81,7 @@ export default {
 		};
 	},
 	onLoad() {
+		// console.log(location.href,'href',location.hash);
 		let obj = this;
 		// #ifdef APP-PLUS
 		let system = uni.getStorageSync('platform');
@@ -346,6 +350,7 @@ page {
 	width: 100%;
 	height: 500rpx;
 	top: 0rpx;
+	background: $base-color;
 
 	.banner-img {
 		width: 100%;
@@ -423,16 +428,16 @@ page {
 
 	.uni-button-green {
 		color: #ffffff;
-		background-color: #5dbc7c;
+		background-color: $base-color;
 		margin: 40rpx 10rpx;
 		border-radius: 50rpx;
 	}
 
 	.uni-button-green-plain {
-		border: 1px solid #5dbc7c;
+		border: 1px solid $base-color;
 		margin: 40rpx 10rpx;
 		border-radius: 50rpx;
-		color: #5dbc7c;
+		color: $base-color;
 		background-color: #ffffff;
 	}
 

+ 2 - 2
pages/public/register.vue

@@ -192,7 +192,7 @@
 	}
 
 	.login {
-		background: #5dbc7c;
+		background: $base-color;
 		margin-top: 20rpx;
 		color: #ffffff;
 		text-align: center;
@@ -202,7 +202,7 @@
 	}
 
 	.code {
-		background: #5dbc7c;
+		background: $base-color;
 		color: #ffffff;
 		border-radius: 10rpx;
 		font-weight: 500;

+ 1 - 1
pages/set/addressManage.vue

@@ -24,7 +24,7 @@
 				:switch-checked="addressData.default"
 				:show-switch="true"
 				:show-arrow="false"
-				switch-color="#5dbc7c"
+				switch-color="#f65067"
 				@switchChange="switchChange"
 			></uni-list-item>
 		</uni-list>

+ 1 - 1
pages/set/password.vue

@@ -151,7 +151,7 @@ page {
 	background-color: $color-gray;
 }
 .code {
-	color: #5dbc7c;
+	color: $base-color;
 	font-size: 23rpx;
 	border-left: 1px solid #eeeeee;
 	width: 150rpx;

+ 3 - 2
pages/user/jlDetil.vue

@@ -17,7 +17,8 @@
 									<text>{{ item.create_time }}</text>
 								</view>
 								<view class="time">
-									<text>场次:第{{ item.stage }}期</text>
+									<text>轮次:第{{ Math.ceil(item.stage/7)}}轮</text>
+									<!-- <text>场次:第{{ item.stage }}期</text> -->
 								</view>
 							</view>
 							<view class="money">
@@ -93,7 +94,7 @@
 			};
 		},
 		computed: {
-			...mapState('user', ['userInfo'])
+			...mapState('user', ['userInfo']),
 		},
 	onReady(res) {
 		var _this = this;

+ 228 - 0
pages/user/newVip.vue

@@ -0,0 +1,228 @@
+<template>
+	<view class="content">
+		<image src="../../static/index/vip01.png" mode=""></image>
+		<view class="box">
+			<view class="tit-box">
+				<image class="img" src="../../static/index/vip02.png" mode=""></image>
+				<view class="tit-tit">
+					新人专享福利
+				</view>
+				<image class="img" src="../../static/index/vip02.png" mode=""></image>
+			</view>
+			<view class="box-con-img">
+				<image src="../../static/index/vip04.png" mode=""></image>
+			</view>
+			<view class="buy" @click="buy()">
+				新会员专享¥{{cj ||0}}
+			</view>
+		</view>
+		<!-- <view class="box" style="top: 1100rpx;">
+			<view class="tit-box">
+				<image class="img" src="../../static/index/vip02.png" mode=""></image>
+				<view class="tit-tit">
+					新人规则
+				</view>
+				<image class="img" src="../../static/index/vip02.png" mode=""></image>
+			</view>
+			<view class="box-guize">
+				<view class="content-guize">
+					<view class="left">
+						1
+					</view>
+					<view class="gz">
+						新人福利新人福利新人福利新人福利新人福
+						利新人福利。
+					</view>
+				</view>
+			</view>
+		</view> -->
+	</view>
+</template>
+
+<script>
+	import {
+		cJbuy,
+		cJiang
+	} from '@/api/index.js'
+	export default {
+		data() {
+			return {
+				list: [], //抽奖
+
+			};
+		},
+		onLoad() {
+
+		},
+		beforeDestroy() {
+			console.log('定时器销毁1');
+			if (this.timer) {
+				clearTimeout(this.timer); //关闭
+				console.log('定时器销毁');
+			}
+		},
+
+		onShow() {
+			this.loadDate()
+		},
+		computed: {
+			cj() {
+				return `${this.list.price ||0}(${this.list.count||0}次)`
+			}
+		},
+		methods: {
+			async loadDate() {
+				await cJiang({}).then(res => {
+					console.log(res, 'res');
+					this.list = res.data
+				})
+			},
+
+			buy() {
+				cJbuy().then(res => {
+					console.log(res, 'resssssss');
+					this.loadDate()
+					if (res.status == 200) {
+						this.$api.msg(res.msg)
+						
+							setTimeout(function() {
+								uni.switchTab({
+									url: '/pages/user/user',
+								})
+							}, 1000)
+						
+
+					}
+					console.log('中间执行了');
+			
+				}).catch(res=>{
+					if (res.msg == '请填写地址'&&res.status==400) {
+						console.log('执行了');
+						this.$api.msg(res.msg)
+						let time = setTimeout(function() {
+							uni.navigateTo({
+								url: '/pages/set/address'
+							}, )
+						}, 1500)
+					} 
+				}
+				
+				)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		width: 100vw;
+		height: 100vh;
+		margin: 0;
+		padding: 0;
+		z-index: 99;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.box {
+		padding: 20rpx 0;
+		width: 590rpx;
+		background: #FFFEFC;
+		border: 12rpx solid #FDDB8E;
+		border-radius: 20rpx;
+
+		position: absolute;
+		top: 600rpx;
+		z-index: 999;
+		left: 80rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+
+		.box-guize {
+			.content-guize {
+				display: flex;
+				padding: 30rpx;
+				justify-content: space-around;
+
+				.left {
+					width: 34rpx;
+					height: 34rpx;
+					background: #EE4C47;
+					border-radius: 50%;
+					font-size: 25px;
+					font-family: FZLTHJW;
+					font-weight: normal;
+					color: #FFFFFF;
+					line-height: 34px;
+					text-align: center;
+				}
+
+				.gz {
+					margin-left: 10rpx;
+					font-size: 25rpx;
+					font-family: PingFang SC;
+					font-weight: 400;
+					color: #333333;
+
+				}
+			}
+		}
+
+		.tit-box {
+			display: flex;
+			justify-content: space-around;
+			align-items: center;
+
+			.img {
+				width: 17rpx;
+				height: 15rpx;
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.tit-tit {
+				margin: 0 40rpx;
+				height: 67rpx;
+				font-size: 40rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #F94C2B;
+				line-height: 67rpx;
+			}
+		}
+
+		.box-con-img {
+			margin: 20rpx 0;
+			width: 240rpx;
+			height: 240rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.buy {
+			// width: 340rpx;
+			padding: 0 20rpx;
+			height: 58rpx;
+			background: linear-gradient(-2deg, #DB1A34, #FA5244, #EF4744);
+			box-shadow: 0rpx 7rpx 13rpx 0rpx rgba(225, 38, 55, 0.3100);
+			border-radius: 16rpx;
+			line-height: 58rpx;
+			text-align: center;
+			font-size: 30rpx;
+			font-family: FZLTCHK;
+			font-weight: normal;
+			color: #FFFFFF;
+		}
+	}
+</style>

+ 10 - 3
pages/user/purpleJf.vue

@@ -18,11 +18,11 @@
 				<view>当前余额</view>
 			</view>
 			<view class="moneybtn-box">
-				<view class="money-btn">
-					<!-- 					易货券转账 -->
+				<view class="money-btn"  @click="navto('/pages/money/withdmoenys?type=yg')">
+				转账
 				</view>
 				<view class="money-btn" @click="navto('/pages/money/withdrawal?type=purple')">
-					阳光积分提现 >
+				提现 
 				</view>
 			</view>
 		</view>
@@ -36,6 +36,11 @@
 				<view class="info-font">累计支出</view>
 				<view class="info-num">{{zc || 0}}</view>
 			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">待释放</view>
+				<view class="info-num">{{dsf || 0}}</view>
+			</view>
 		</view>
 		<view class="navbar">
 			<view v-for="(item, index) in navList" :key="index" class="nav-item"
@@ -114,6 +119,7 @@
 		},
 		data() {
 			return {
+				dsf:0,
 				zc: 0,
 				sr: 0,
 				height: '',
@@ -204,6 +210,7 @@
 						console.log(data,'2222');
 						obj.zc = data.zc
 						obj.sr = data.sr
+						obj.dsf = data.dsf
 						navItem.orderList = navItem.orderList.concat(data.list)
 						navItem.page++
 						if (navItem.limit == data.list.length) {

+ 6 - 12
pages/user/shareQrCode.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container">
-		<image @longtap="bc_code" class="backImg" :src="backImg"></image>
+			<image @longtap="bc_code" mode="aspectFit" class="backImg" :src="backImg"></image>
 		<view class="tki-qrcode"><canvas @longtap="bc_code" canvas-id="qrcode" /></view>
 	</view>
 </template>
@@ -88,11 +88,13 @@ export default {
 page {
 	width: 100%;
 	min-height: 100%;
+	background: #294bb6;
 	.container {
 		width: 100%;
 		height: 100%;
 	}
 }
+
 .backImg {
 	position: absolute;
 	width: 100%;
@@ -121,23 +123,15 @@ page {
 	width: 100%;
 	color: #ffffff;
 }
-.copy-btn {
-	color: #ffffff;
-	background-color: #4ba6ed;
-	border-radius: 50rpx;
-	width: 170rpx;
-	line-height: 70rpx;
-	margin: 0rpx auto;
-	text-align: center;
-}
+
 .tki-qrcode {
 	position: fixed;
 	bottom: 10%;
 	left: 30%;
 }
 canvas {
-	width: 150px;
-	height: 150px;
+	width: 160px;
+	height: 160px;
 	margin: auto;
 }
 </style>

+ 1 - 1
pages/user/shopJf.vue

@@ -23,7 +23,7 @@
 			
 			<view class="moneybtn-box">
 				<view class="money-btn" @click="navto('/pages/money/withdmoenys?type=xl')">
-					美好积分转账
+					<!-- 美好积分转账 -->
 				</view>
 				<view class="money-btn" @click="navto('/pages/money/withdrawal?type=shop')">
 					{{userInfo.is_merchant == 1? '提现 >': ''}}

+ 96 - 27
pages/user/team.vue

@@ -28,15 +28,23 @@
 				<view class="info-font">累计参与积分</view>
 				<view class="info-num">{{navList.user_price||0}}</view>
 			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">每周团队业绩</view>
+				<view class="info-num">{{navList.week_price||0}}</view>
+			</view>
 		</view>
-		<view class="content-box" v-for="item in navList.user_list">
+		<view class="content-box"  v-for="(item,index) in navList.user_list" :key="index"  >
+			<!-- <view class="tgTop">
+				<image src="../../static/img/top.png" mode=""></image>
+			</view> -->
 			<view class="content-box-left">
-				<view class="left-img">
+				<!-- <view class="left-img">
 					<image :src="item.avatar" mode=""></image>
-				</view>
+				</view> -->
 				<view class="right-title">
 					<view class="top">
-					{{item.nickname}}
+						{{item.nickname}}
 					</view>
 					<view class="bottom">
 						ID:{{item.uid}}
@@ -44,9 +52,21 @@
 					<view class="bottom " style="font-size: 24rpx;">
 						手机号:{{item.phone}}
 					</view>
+					<view class="bottom " style="font-size: 24rpx;">
+						返回额度:{{item.price}}
+					</view>
+					<view class="bottom " style="font-size: 24rpx;">
+						参与中金额:{{item.cy_price}}
+					</view>
+			<!-- 	<view class="bottom " style="font-size: 24rpx;">
+					待返回金额:{{item.dfh_price}}
+				</view>
+				<view class="bottom " style="font-size: 24rpx;">
+					充值金额:{{item.order_price}}
+				</view> -->
 				</view>
 			</view>
-			
+
 			<view class="content-box-right">
 				<view class="state">
 					{{item.zt==0?'间推':'直推'}}
@@ -54,13 +74,20 @@
 				<view class="box-right">
 					参与积分:<span>{{item.price}}</span>
 				</view>
+				<view class="bottom " style="font-size: 24rpx;">
+					待返回金额:{{item.dfh_price}}
+				</view>
+				<view class="bottom " style="font-size: 24rpx;">
+					充值金额:{{item.order_price}}
+				</view>
 			</view>
 		</view>
 	</view>
 </template>
 <script>
 	import {
-		myspread,tuiguang
+		myspread,
+		tuiguang
 	} from '@/api/user.js';
 	import {
 		mapState,
@@ -83,29 +110,31 @@
 		},
 		data() {
 			return {
+				nowIndex:0,//'当前选中'
 				// 头部图高度
+				
 				maxheight: '',
 				tabCurrentIndex: 0,
-				navList: [{
+				navList: {
 					state: 0,
 					text: '直接推荐',
 					loadingType: 'more',
 					orderList: [],
 					page: 1, //当前页数
-					limit: 10 //每次信息条数
-				}],
+					limit: 5 //每次信息条数
+				},
 				all: '',
 				list: '',
 			};
 		},
 		computed: {
 			...mapState('user', ['userInfo', 'orderInfo', 'hasLogin']),
-			getPhone(){
-				let reg=/(\d{3})\d{4}(\d{4})/;
-			this.navList.user_list.forEach(e=>{
-				return e.phone.replace(reg, "$1****$2")
-				console.log(e.phone.replace(reg, "$1****$2"));
-			})
+			getPhone() {
+				let reg = /(\d{3})\d{4}(\d{4})/;
+				this.navList.user_list.forEach(e => {
+					return e.phone.replace(reg, "$1****$2")
+					console.log(e.phone.replace(reg, "$1****$2"));
+				})
 			}
 		},
 		onLoad(options) {},
@@ -113,7 +142,13 @@
 			this.loadData();
 		},
 		methods: {
-			
+			//下拉
+			xiala(index) {
+				// top.style.height = "200rpx"
+				// top.style.backGround = "red"
+				this.nowIndex = index
+				console.log(this.nowIndex);
+			},
 			// 页面跳转
 			navto(e) {
 				uni.navigateTo({
@@ -122,8 +157,12 @@
 			},
 			//获取收入支出信息
 			async loadData(source) {
-				tuiguang().then(res=>{
-					console.log(res,'data');
+				let objList = this.navList
+				tuiguang({
+					page:objList.page,
+					limit:objList.limit,
+				}).then(res => {
+					console.log(res, 'data');
 					this.navList = res.data
 				})
 			},
@@ -387,24 +426,52 @@
 			background: #dddddd;
 		}
 	}
+	.bottomm{
+		padding: 20rpx;
+		position: relative;
+		background: red;
+		display: flex;
+		justify-content: space-between;
+		margin: 30rpx;
+		border-radius: 10rpx;
+	}
 
 	.content-box {
+		overflow: hidden;
+		padding: 20rpx;
+		position: relative;
+		background: #fffeff;
 		display: flex;
 		justify-content: space-between;
-		align-items: center;
-		margin:  30rpx;
+		margin: 30rpx;
+		border-radius: 10rpx;
+
+		.tgTop {
+			position: absolute;
+			right: 50rpx;
+			top: 30rpx;
+			width: 30rpx;
+			height: 30rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
 
 		.content-box-left {
 			display: flex;
-			
+
 			.left-img {
 				width: 100rpx;
 				height: 100rpx;
 				border-radius: 50%;
 				overflow: hidden;
+
 				image {
-				width: 100%;
-				height: 100%;
+					width: 100%;
+					height: 100%;
 				}
 			}
 
@@ -413,11 +480,11 @@
 				display: flex;
 				flex-direction: column;
 				justify-content: space-around;
-				
+
 				.top {
 					font-weight: 500;
 					font-size: 30rpx;
-					
+
 				}
 
 				.bottom {
@@ -432,10 +499,12 @@
 			flex-direction: column;
 			width: 230rpx;
 			color: #999999;
-			.state{
+
+			.state {
 				color: red;
 			}
-			span{
+
+			span {
 				color: red;
 				font-size: 28rpx;
 			}

+ 17 - 4
pages/user/user.vue

@@ -15,6 +15,7 @@
 					{{userInfo.nickname || '游客'}}<span style="color: #FFD700; margin-left: 15rpx;"
 						v-if="userInfo.level!=0">V{{userInfo.level}}</span>
 				</view>
+				<span style="color: #FFD700; " v-if="userInfo.level!=0">{{chooseVip}}</span>
 				<view class="user-phone" v-if="userInfo.uid">
 					邀请码:{{userInfo.uid}}
 				</view>
@@ -66,14 +67,14 @@
 						商城积分
 					</view>
 				</view>
-				<view class="info-item" @click="navTo('/pages/user/shopJf')">
+				<!-- <view class="info-item" @click="navTo('/pages/user/shopJf')">
 					<view class="item-val">
 						{{userInfo.business_integral || '0'}}
 					</view>
 					<view class="item-tit">
 						美好积分
 					</view>
-				</view>
+				</view> -->
 				<view class="info-item" @click="navTo('/pages/user/myGreenCard')">
 					<view class="item-val">
 						{{greenNum || '0'}}
@@ -174,7 +175,7 @@
 			</uni-list-item>
 
 		</uni-list>
-		<view class="btm" style="height: 44px;"></view>
+		<view class="btm" style="height: 66px;"></view>
 		<!-- 客服 -->
 		<uni-popup ref="popupkf" type="center">
 			<view class="popup-box">
@@ -260,7 +261,19 @@
 				.exec();
 		},
 		computed: {
-			...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+			...mapState('user', ['userInfo', 'orderInfo', 'hasLogin']),
+			//类型
+			chooseVip(){
+				let status = this.userInfo.identification
+				console.log(status,'status');
+				if(status!=null &&status==1){
+					return '分公司'
+				}else if(status!=null &&status==2){
+						return '运营中心'
+				}else{
+					return status!=null &&status==3?'服务中心':''
+				}
+			}
 		},
 		methods: {
 			//申请

BIN
static/game/game02.png


BIN
static/game/game03.png


BIN
static/game/game04.png


BIN
static/game/game05.png


BIN
static/game/game06.png


BIN
static/game/game07.png


BIN
static/game/game08.png


BIN
static/game/game1.png


BIN
static/game/game11.png


BIN
static/game/game2.png


BIN
static/game/game21.png


BIN
static/game/game22.png


BIN
static/game/game23.png


BIN
static/game/game24.png


BIN
static/game/game3.png


BIN
static/game/game4.png


BIN
static/game/game6.png


BIN
static/game/game7.png


BIN
static/game/game8.png


BIN
static/game/reb01.png


BIN
static/game/reb02.png


BIN
static/game/reb03.png


BIN
static/game/reb04.png


BIN
static/game/reb05.png


BIN
static/img/bottom.png


BIN
static/img/game01.png


BIN
static/img/game02.png


BIN
static/img/game03.png


BIN
static/img/game04.png


BIN
static/img/game05.png


BIN
static/img/index-fanl.png


BIN
static/img/index01.png


BIN
static/img/index02.png


BIN
static/img/index03.png


BIN
static/img/index04.png


BIN
static/img/indexqg.png


BIN
static/img/logo.jpg


BIN
static/img/share.png


BIN
static/img/top.png


BIN
static/img/user-top-bg.png


BIN
static/img/vip-card-bg.png


BIN
static/index/index01.png


BIN
static/index/vip01.png


BIN
static/index/vip02.png


BIN
static/index/vip04.png


+ 4 - 1
store/index.js

@@ -11,7 +11,10 @@ Vue.use(Vuex)
 
 const store = new Vuex.Store({
 	state: {
-		baseURL: 'http://xhg.ledao.ink', //请求地址配置 
+		// baseURL: 'http://xhg.ledao.ink', //请求地址配置 
+		baseURL: 'http://xhg.zhejiangtaizhou.cn', //请求地址配置 
+	
+		// baseURL: 'http://xhg.frp.liuniu946.com', //请求地址配置 
 		urlFile: '/index', //项目部署所在文件夹
 		userInfo: {}, //登录信息
 		loginInterceptor: false, //是否打开强制登录

BIN
unpackage/cache/apk/__UNI__F0D4DD1_cm.apk


+ 1 - 1
unpackage/cache/apk/apkurl

@@ -1 +1 @@
-https://ide.dcloud.net.cn/build/download/f2fc3bf0-02c7-11ed-9d33-4bf9480d2b6a
+https://ide.dcloud.net.cn/build/download/666b4c80-1470-11ed-b52b-5f24d8595f59

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/apk/cmManifestCache.json


+ 1 - 1
unpackage/cache/appleConfig.ini

@@ -2,7 +2,7 @@
 appleAppid=io.dcloud.xhg
 
 [appstore]
-appstore=
+appstore=6ddae6a2fdd1fe02c39f8a65e0380396
 
 [iosStyle]
 iosStyle=

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__F0D4DD1/app-config-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__F0D4DD1/app-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__F0D4DD1/app-view.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__F0D4DD1/manifest.json


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game02.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game03.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game04.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game05.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game06.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game07.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game08.png


BIN
unpackage/cache/wgt/__UNI__F0D4DD1/static/game/game1.png


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.