cmy 3 years ago
parent
commit
aedb8dbf1c
42 changed files with 0 additions and 13807 deletions
  1. 0 57
      components/Loading/index.vue
  2. 0 120
      components/countDown/index.vue
  3. 0 18
      components/empty.vue
  4. 0 36
      components/emptyPage.vue
  5. 0 118
      components/home/index.vue
  6. 0 630
      components/jyf-parser/jyf-parser.vue
  7. 0 97
      components/jyf-parser/libs/CssHandler.js
  8. 0 535
      components/jyf-parser/libs/MpHtmlParser.js
  9. 0 80
      components/jyf-parser/libs/config.js
  10. 0 22
      components/jyf-parser/libs/handler.wxs
  11. 0 501
      components/jyf-parser/libs/trees.vue
  12. 0 421
      components/newlist/nowList.vue
  13. 0 68
      components/returnButton.vue
  14. 0 246
      components/seckill/seckill.vue
  15. 0 196
      components/share.vue
  16. 0 218
      components/ss-calendar/ss-calendar.vue
  17. 0 1201
      components/tki-qrcode/qrcode.js
  18. 0 210
      components/tki-qrcode/tki-qrcode.vue
  19. 0 122
      components/uni-badge/uni-badge.vue
  20. 0 181
      components/uni-countdown/uni-countdown.vue
  21. 0 188
      components/uni-countdown/uni-countdowns.vue
  22. 0 124
      components/uni-fav/uni-fav.vue
  23. 0 96
      components/uni-icons/icons.js
  24. 0 10
      components/uni-icons/uni-icons.vue
  25. 0 230
      components/uni-list-item/uni-list-item.vue
  26. 0 68
      components/uni-list/uni-list.vue
  27. 0 65
      components/uni-list/uni-refresh.vue
  28. 0 87
      components/uni-list/uni-refresh.wxs
  29. 0 194
      components/uni-load-more/uni-load-more.vue
  30. 0 396
      components/uni-notice-bar/uni-notice-bar.vue
  31. 0 198
      components/uni-number-box.vue
  32. 0 243
      components/uni-popup/uni-popup-dialog.vue
  33. 0 116
      components/uni-popup/uni-popup-message.vue
  34. 0 263
      components/uni-popup/uni-popup-ori.vue
  35. 0 282
      components/uni-popup/uni-popup-share.vue
  36. 0 263
      components/uni-popup/uni-popup.vue
  37. 0 141
      components/uni-rate/uni-rate.vue
  38. 0 244
      components/uni-steps/uni-steps.vue
  39. 0 279
      components/uni-transition/uni-transition.vue
  40. 0 226
      components/upload-images.vue
  41. 0 4914
      components/wangding-pickerAddress/data.js
  42. 0 103
      components/wangding-pickerAddress/wangding-pickerAddress.vue

+ 0 - 57
components/Loading/index.vue

@@ -1,57 +0,0 @@
-<template>
-	<view>
-		<view class="Loads acea-row row-center-wrapper" v-if="loading && !loaded" style="margin-top: .2rem;">
-			<view v-if="loading">
-				<view class="iconfont icon-jiazai loading acea-row row-center-wrapper"></view>
-				正在加载中
-			</view>
-			<view v-else>
-				上拉加载更多
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "Loading",
-		props: {
-			loaded: {
-				type: Boolean,
-				default: false
-			},
-			loading: {
-				type: Boolean,
-				default: false
-			}
-		}
-	};
-</script>
-<style>
-	.Loads {
-	  height: 80upx;
-	  font-size: 25upx;
-	  color: #000;
-	}
-	.Loads .iconfont {
-	  font-size: 30upx;
-	  margin-right: 10upx;
-	  height: 32upx;
-	  line-height: 32upx;
-	}
-	/*加载动画*/
-	@keyframes load {
-	  from {
-	    transform: rotate(0deg);
-	  }
-	  to {
-	    transform: rotate(360deg);
-	  }
-	}
-	.loadingpic {
-	  animation: load 3s linear 1s infinite;
-	}
-	.loading {
-	  animation: load linear 1s infinite;
-	}
-</style>

+ 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>

File diff suppressed because it is too large
+ 0 - 18
components/empty.vue


+ 0 - 36
components/emptyPage.vue

@@ -1,36 +0,0 @@
-<template>
-	<view class="empty-box">
-		<image src="/static/images/empty-box.png"></image>
-		<view class="txt">{{title}}</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		props: {
-			title: {
-				type: String,
-				default: '暂无记录',
-			},
-		},
-	}
-	
-</script>
-
-<style lang="scss">
-	.empty-box{
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		margin-top: 200rpx;
-		image{
-			width: 414rpx;
-			height: 240rpx;
-		}
-		.txt{
-			font-size: 26rpx;
-			color: #999;
-		}
-	}
-</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 - 68
components/returnButton.vue

@@ -1,68 +0,0 @@
-<template>
-	<view class="content">
-		<view class="retun-Box" @click="navTo('/pages/order/order?state=0')">
-			<image class="return-img" src=".././static/tabBar/dingdan.png"></image>
-			<view class="return-text">订单</view>
-		</view>
-		<view class="retun-Box" @click="GoHome">
-			<image class="return-img" src=".././static/tabBar/home.png" ></image>
-			<view class="return-text">首页</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	props: {
-		
-	},
-	data() {
-		return {
-			
-		}
-	},
-	methods: {
-		navTo(url) {
-			uni.navigateTo({
-				url: url
-			})
-		},
-		GoHome() {
-			// uni.navigateTo({
-			// 	url: '/pages/groupBooking/index'
-			// })
-			uni.switchTab({
-				url: '/pages/index/index'
-			})
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-.content {
-	position: fixed;
-	right: 0;
-	bottom: 330rpx;
-	.retun-Box {
-		border-radius: 50%;
-		background: #FFFFFF;
-		width: 100rpx;
-		height: 100rpx;
-		margin-top: 30rpx;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		box-shadow: 0 6rpx 20rpx #888888;
-		.return-img {
-			width: 40rpx;
-			height: 40rpx;
-		}
-		.return-text {
-			font-size: $font-sm;
-			margin-top: 8rpx;
-		}
-	}
-}
-</style>

+ 0 - 246
components/seckill/seckill.vue

@@ -1,246 +0,0 @@
-<template>
-	<view class="seckill-section m-t" v-if="show">
-		<view class="s-header">
-			<view class="f-left-icon"></view>
-			<view class="tit-box"><text class="tit">限时秒杀</text></view>
-			<view class="tip-box">
-				<text class="tip" v-if="status == 1">{{ showTime }}点场结束</text>
-				<text class="tip" v-if="status == 2">距离下场开始</text>
-				<text class="tip" v-if="status == 0">当天活动已结束</text>
-				<uni-countdown v-if="status == 1 || status == 2" :show-day="false" :hour="stopTimeH" :minute="stopTimeM" :second="stopTimeS"></uni-countdown>
-			</view>
-			<view class="textNav iconfont iconenter" @click="navTo('/pages/product/seckill')">更多</view>
-		</view>
-		<scroll-view class="floor-list" scroll-x>
-			<view class="scoll-wrapper position-relative" @click="navTo('/pages/product/seckill')">
-				<view v-for="(item, index) in list" :key="index" class="floor-item">
-					<image class="list-image" :src="item.image" mode="aspectFill"></image>
-					<text class="title clamp">{{ item.title }}</text>
-					<text class="price">¥{{ item.price }}</text>
-				</view>
-				<view v-if="list.length == 0" class="floor-item ">
-					<image class="list-image" mode="aspectFill"></image>
-					<text class="title clamp"></text>
-					<text class="price"></text>
-				</view>
-				<view v-if="list.length == 0" class="noGoodsBg"><view>敬请期待</view></view>
-			</view>
-		</scroll-view>
-	</view>
-</template>
-
-<script>
-import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
-import { getSeckillList, getSeckillClass } from '@/api/product.js';
-import { timeComputed } from '@/utils/rocessor.js';
-export default {
-	components: {
-		uniCountdown
-	},
-	data() {
-		return {
-			list: [],
-			page: 1,
-			limit: 10,
-			showTime: '', //显示的时间
-			showTImeId: '', //显示时间id用于查询数据
-			stopTimeH: 0,
-			stopTimeM: 0,
-			stopTimeS: 0,
-			// 判断是否所有活动已经结束
-			stop: false, //活动是否已经结束
-			show: false, //是否显示活动
-			status: 0 //获取状态值1为有活动开始中 2为活动未开始 0为活动已经结束
-		};
-	},
-	created: function(e) {
-		// 载入分类
-		this.getClass();
-	},
-	methods: {
-		navTo(url) {
-			uni.navigateTo({
-				url
-			});
-		},
-		getList() {
-			getSeckillList(
-				{
-					page: this.page,
-					limit: this.limit
-				},
-				this.showTImeId
-			)
-				.then(e => {
-					this.list = e.data;
-				})
-				.catch(e => {
-					console.log(e);
-				});
-		},
-		getClass() {
-			let obj = this;
-			getSeckillClass({})
-				.then(({ data }) => {
-					let arr = data.seckillTime;
-					// 用于判断是否有数据
-					let showDate = false;
-					for (var i = 0; i < arr.length; i++) {
-						let ar = arr[i];
-						if (ar.status === 1 || ar.status === 2) {
-							obj.status = ar.status;
-							// 保存要显示的场次时间
-							obj.showTime = ar.time;
-							// 保存要显示活动商品的id
-							obj.showTImeId = ar.id;
-							// 保存当前状态值
-							// 计算倒计时时间
-							if (ar.status === 1) {
-								obj.timeComputed(ar.stop * 1000);
-							} else {
-								// 获取需要开始
-								let arTime = ar.time.split(':');
-								let h = arTime[0];
-								let m = arTime[1];
-								let time = new Date();
-								// 设置时间
-								time.setHours(h, m, 0);
-								obj.timeComputed(time.getTime());
-							}
-							// 获取商品列表
-							obj.getList();
-							// 保存当前有活动在举行
-							showDate = true;
-							// 任务查询结束跳出循环
-							break;
-						}
-					}
-					// 判断是否有活动
-					if (arr.length > 0) {
-						obj.show = true;
-					}
-					// 判断今天活动是否已经全部结束
-					if (!showDate) {
-						// 保存活动结束最后一个小时的活动商品
-						obj.showTImeId = arr[arr.length - 1].id;
-						// 活动已经结束
-						obj.status = 0;
-						// 获取结束时的商品
-						obj.getList();
-						console.log(obj.status);
-					}
-					// 如果所有场次均已经结束
-				})
-				.catch(e => {
-					uni.showModal({
-						title: JSON.stringify(e)
-					});
-				});
-		},
-		// 计算倒计时时间
-		timeComputed(da) {
-			let obj = this;
-			let stopTime = timeComputed(da)
-			obj.stopTimeH =stopTime.hours;
-			obj.stopTimeM = stopTime.minutes;
-			obj.stopTimeS =stopTime.seconds;
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-/* 秒杀专区 */
-.seckill-section {
-	padding: 4rpx 30rpx 24rpx;
-	.s-header {
-		display: flex;
-		align-items: center;
-		height: 92rpx;
-		line-height: 1;
-		.tit-box {
-			flex-shrink: 0;
-		}
-		.tit {
-			@extend %font-title;
-		}
-		.f-left-icon {
-			@extend %f-left-icon;
-		}
-		.textNav {
-			line-height: 1;
-			padding: 15rpx 0;
-			flex-shrink: 0;
-			flex-grow: 1;
-			min-width: 100rpx;
-		}
-		.tip-box {
-			flex-grow: 1;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-		}
-		.tip {
-			font-size: $font-sm;
-			color: $font-color-light;
-			padding-left: 10rpx;
-			padding-right: 10rpx;
-		}
-		.timer {
-			display: inline-block;
-			width: 40rpx;
-			height: 36rpx;
-			text-align: center;
-			line-height: 36rpx;
-			margin-right: 14rpx;
-			font-size: $font-sm + 2rpx;
-			color: #fff;
-			border-radius: 2px;
-			background: rgba(0, 0, 0, 0.8);
-		}
-		.iconenter {
-			font-size: $font-sm;
-			color: $font-color-light;
-			flex: 1;
-			text-align: right;
-		}
-	}
-	.floor-list {
-		white-space: nowrap;
-		background-color: white;
-		padding: 20rpx;
-		border-radius: 5rpx;
-		box-shadow: $box-shadow;
-	}
-	.scoll-wrapper {
-		display: flex;
-		align-items: flex-start;
-		.noGoodsBg {
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			height: 100%;
-			position: absolute;
-			top: 0;
-			left: 0;
-			width: 100%;
-			color: $font-color-light;
-		}
-		.floor-item {
-			width: 150rpx;
-			margin-right: 20rpx;
-			font-size: $font-sm + 2rpx;
-			color: $font-color-dark;
-			line-height: 1.8;
-			.list-image {
-				width: 150rpx;
-				height: 150rpx;
-				border-radius: 6rpx;
-			}
-			.price {
-				color: $color-red;
-			}
-		}
-	}
-}
-</style>

+ 0 - 196
components/share.vue

@@ -1,196 +0,0 @@
-<template>
-	<view v-if="show" class="mask" @click="toggleMask" @touchmove.stop.prevent="stopPrevent" :style="{ backgroundColor: backgroundColor }">
-		<view
-			class="mask-content"
-			@click.stop.prevent="stopPrevent"
-			:style="[
-				{
-					height: config.height,
-					transform: transform
-				}
-			]"
-		>
-			<scroll-view class="view-content" scroll-y>
-				<view class="share-header">分享到</view>
-				<view class="share-list">
-					<view v-for="(item, index) in shareList" :key="index" class="share-item" @click="shareToFriend(item.text)">
-						<image class="itemImage" :src="item.icon" mode=""></image>
-						<text class="itemText">{{ item.text }}</text>
-					</view>
-				</view>
-			</scroll-view>
-			<view class="bottomButtom b-t" @click="toggleMask">取消</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			transform: 'translateY(50vh)',
-			timer: 0,
-			backgroundColor: 'rgba(0,0,0,0)',
-			show: false,
-			config: {}
-		};
-	},
-	props: {
-		contentHeight: {
-			type: Number,
-			default: 0
-		},
-		//是否是tabbar页面
-		hasTabbar: {
-			type: Boolean,
-			default: false
-		},
-		shareList: {
-			type: Array,
-			default: function() {
-				return [];
-			}
-		}
-	},
-	created() {
-		const height = uni.upx2px(this.contentHeight) + 'px';
-		this.config = {
-			height: height,
-			transform: `translateY(${height})`,
-			backgroundColor: 'rgba(0,0,0,.4)'
-		};
-		this.transform = this.config.transform;
-	},
-	methods: {
-		toggleMask() {
-			//防止高频点击
-			if (this.timer == 1) {
-				return;
-			}
-			this.timer = 1;
-			setTimeout(() => {
-				this.timer = 0;
-			}, 500);
-
-			if (this.show) {
-				this.transform = this.config.transform;
-				this.backgroundColor = 'rgba(0,0,0,0)';
-				setTimeout(() => {
-					this.show = false;
-					this.hasTabbar && uni.showTabBar();
-				}, 200);
-				return;
-			}
-
-			this.show = true;
-			//等待mask重绘完成执行
-			if (this.hasTabbar) {
-				uni.hideTabBar({
-					success: () => {
-						setTimeout(() => {
-							this.backgroundColor = this.config.backgroundColor;
-							this.transform = 'translateY(0px)';
-						}, 10);
-					}
-				});
-			} else {
-				setTimeout(() => {
-					this.backgroundColor = this.config.backgroundColor;
-					this.transform = 'translateY(0px)';
-				}, 10);
-			}
-		},
-		//防止冒泡和滚动穿透
-		stopPrevent() {},
-		//分享操作
-		shareToFriend(type) {
-			this.$api.msg(`分享给${type}`);
-			this.toggleMask();
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.mask {
-	position: fixed;
-	left: 0;
-	top: 0;
-	right: 0;
-	bottom: 0;
-	display: flex;
-	justify-content: center;
-	align-items: flex-end;
-	z-index: 998;
-	transition: 0.3s;
-	.bottomButtom {
-		position: absolute;
-		left: 0;
-		bottom: 0;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		width: 100%;
-		height: 90rpx;
-		background: #fff;
-		z-index: 9;
-		font-size: $font-base + 2rpx;
-		color: $font-color-dark;
-	}
-}
-.mask-content {
-	width: 100%;
-	height: 580rpx;
-	transition: 0.3s;
-	background: #fff;
-	&.has-bottom {
-		padding-bottom: 90rpx;
-	}
-	.view-content {
-		height: 100%;
-	}
-}
-.share-header {
-	height: 110rpx;
-	font-size: $font-base + 2rpx;
-	color: font-color-dark;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	padding-top: 10rpx;
-	&:before,
-	&:after {
-		content: '';
-		width: 240rpx;
-		heighg: 0;
-		border-top: 1px solid $border-color-base;
-		transform: scaleY(0.5);
-		margin-right: 30rpx;
-	}
-	&:after {
-		margin-left: 30rpx;
-		margin-right: 0;
-	}
-}
-.share-list {
-	display: flex;
-	flex-wrap: wrap;
-}
-.share-item {
-	min-width: 33.33%;
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	align-items: center;
-	height: 180rpx;
-	.itemImage {
-		width: 80rpx;
-		height: 80rpx;
-		margin-bottom: 16rpx;
-	}
-	.itemText {
-		font-size: $font-base;
-		color: $font-color-base;
-	}
-}
-</style>

+ 0 - 218
components/ss-calendar/ss-calendar.vue

@@ -1,218 +0,0 @@
-<template>
-	<view class="calendar__wrap">
-		<view class="header">
-			<view class="current-date">{{ currentDate }}</view>
-		</view>
-		<view class="body">
-			<view class="weeks">
-				<view class="week__item" v-for="week in weeks" :key="week">{{ week }}</view>
-			</view>
-			<view class="day__list">
-				<view class="day__item" v-for="(item, index) in dateData" :key="index">
-					<view class="checked-box" :class="[checksClass]" v-if="item === 'checked'">
-						<text class="checked iconfont iconfavor" v-if="!checksIcon"></text>
-						<image v-else :src="checksIcon" mode="aspectFit"></image>
-						<view class="check_text" v-if="checkTextShow">{{ dayLoad(index) }}</view>
-					</view>
-					<text class="current-box" :class="[item === day ? (actionClass ? actionClass : 'current') : '']" v-else>{{ item }}</text>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	props: {
-		//选中的日期数据
-		checks: {
-			type: Array,
-			default() {
-				// 例子[1,2,3,4],表示本月1,2,3,4号4天被选中
-				return [];
-			}
-		},
-		// 选中物品的样式类
-		checksClass: {
-			type: String,
-			default: ''
-		},
-		// 选中时图标
-		checksIcon: {
-			type: String
-		},
-		// 选中时是否显示文字
-		checkTextShow: {
-			type: Boolean, 
-			default: false
-		},
-		// 表示当前日期的样式
-		actionClass: {
-			type: String,
-			default: ''
-		}
-	},
-	data() {
-		const { year, month, day } = this.getDate();
-		const dateData = this.getDateData(year, month);
-		const noDay = ( new Date(year,month-1,1)).getDay();
-		return {
-			year,
-			month,
-			day,
-			dateData,
-			noDay,//本月1号是星期几
-			weeks: ['日', '一', '二', '三', '四', '五', '六'],
-		};
-	},
-	computed: {
-		// 获取当前日期
-		currentDate() {
-			return `${this.year}-${this.format(this.month)}`;
-		}
-	},
-	watch: {
-		checks(val) {
-			const { year, month } = this.getDate();
-			const dateData = this.getDateData(year, month);
-			// 保存当前月份信息
-			this.dateData = dateData;
-		},
-	},
-	methods: {
-		// 重新计算时间
-		dayLoad: function(value) {
-			return value + 1 - this.noDay;
-		},
-		// 获取当前日期
-		getDate(current) {
-			const date = current ? new Date(current) : new Date();
-			const year = date.getFullYear();
-			// 月份值默认从0开始
-			const month = date.getMonth() + 1;
-			const day = date.getDate();
-			return {
-				year,
-				month,
-				day
-			};
-		},
-		// 日期处理
-		getDateData(year, month) {
-			// 新增月份时需要减少1个月
-			const date = new Date(year,month-1,1);
-			const firstDayWeek = date.getDay();
-			const data = [...this.getEmptys(firstDayWeek), ...this.getDays(firstDayWeek)];
-			return data;
-		},
-		// 查询日期列表有几个空格
-		getEmptys(count) {
-			let arr = [];
-			if (count) {
-				for (let i = 0; i < count; i++) {
-					arr.push('');
-				}
-			}
-			return arr;
-		},
-		getLastDay() {
-			let { year, month } = this.getDate();
-			month += 1;
-			if (month > 11) {
-				year += 1;
-				month = 1;
-			}
-			let firstDayTimeStamp = new Date(`${year}/${month}/1`).getTime();
-			let oneDayTimeStamp = 24 * 60 * 60 * 1000;
-			let lastDay = new Date(firstDayTimeStamp - oneDayTimeStamp).getDate();
-			return lastDay;
-		},
-		getDays() {
-			const lastDay = this.getLastDay();
-			const days = [];
-			for (let i = 1; i <= lastDay; i++) {
-				days.push(this.checks.includes(i) ? 'checked' : i);
-			}
-			return days;
-		},
-		format(num) {
-			return num < 10 ? `0${num}` : num;
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.calendar__wrap {
-	background-color: #fff;
-	color: $uni-text-color;
-	.header {
-		padding: 0 24rpx;
-		.current-date {
-			text-align: center;
-			font-size: $font-lg + 2rpx;
-			// border-bottom: 2rpx solid #eee;
-			padding: 32rpx 0;
-		}
-	}
-	.body {
-		.weeks {
-			display: flex;
-			font-size: $font-lg;
-			padding: 10rpx 0;
-			background-color: #f4f7ff;
-			.week__item {
-				flex: 1;
-				text-align: center;
-			}
-		}
-		.day__list {
-			display: flex;
-			flex-wrap: wrap;
-			.day__item {
-				display: flex;
-				justify-content: center;
-				width: 14.285%;
-				text-align: center;
-				padding: 30rpx 0;
-				font-size: 34rpx;
-				color: $font-color-light;
-				.checked-box,
-				.current-box {
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					border-radius: 100%;
-					box-sizing: border-box;
-					position: relative;
-				}
-				image,
-				.checked-box,
-				.current-box,
-				.check_text {
-					width: 56rpx;
-					height: 56rpx;
-					line-height: 56rpx;
-				}
-				image,
-				.check_text {
-					position: absolute;
-					top: 0;
-					left: 0;
-				}
-				.checked {
-					font-size: 40rpx;
-					background-color: #3f9dff;
-					color: #fff;
-				}
-				.current {
-					padding: 12rpx;
-					background-color: $background-color;
-					color: #fff;
-					font-size: 28rpx;
-				}
-			}
-		}
-	}
-}
-</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 - 122
components/uni-badge/uni-badge.vue

@@ -1,122 +0,0 @@
-<template>
-	<text v-if="text" :class="inverted ? 'uni-badge--' + type + ' uni-badge--' + size + ' uni-badge--' + type + '-inverted' : 'uni-badge--' + type + ' uni-badge--' + size"
-	 class="uni-badge" :style="width" @click="onClick()">{{ text }}</text>
-</template>
-
-<script>
-	export default {
-		name: 'UniBadge',
-		props: {
-			type: {
-				type: String,
-				default: 'default'
-			},
-			inverted: {
-				type: Boolean,
-				default: false
-			},
-			text: {
-				type: [String,Number],
-				default: ''
-			},
-			size: {
-				// small.normal
-				type: String,
-				default: 'normal'
-			}
-		},
-		data() {
-			return {
-				width: `display: inline-block;width: ${String(this.text).length * 15 + 25}rpx`
-			};
-		},
-		methods: {
-			onClick() {
-				this.$emit('click');
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	$bage-size: 12px;
-	$bage-small: scale(0.8);
-	$bage-height: 40rpx;
-
-	.uni-badge {
-		/* #ifndef APP-PLUS */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		height: $bage-height;
-		line-height: $bage-height;
-		color: $uni-text-color;
-		border-radius: 100px;
-		background-color: $uni-bg-color-hover;
-		background-color: transparent;
-		text-align: center;
-		font-family: 'Helvetica Neue', Helvetica, sans-serif;
-		font-size: $bage-size;
-		padding: 0;
-	}
-
-	.uni-badge--inverted {
-		padding: 0 5px 0 0;
-		color: $uni-bg-color-hover;
-	}
-
-	.uni-badge--default {
-		color: $uni-text-color;
-		background-color: $uni-bg-color-hover;
-	}
-
-	.uni-badge--default-inverted {
-		color: $uni-text-color-grey;
-		background-color: transparent;
-	}
-
-	.uni-badge--primary {
-		color: $uni-text-color-inverse;
-		background-color: $uni-color-primary;
-	}
-
-	.uni-badge--primary-inverted {
-		color: $uni-color-primary;
-		background-color: transparent;
-	}
-
-	.uni-badge--success {
-		color: $uni-text-color-inverse;
-		background-color: $uni-color-success;
-	}
-
-	.uni-badge--success-inverted {
-		color: $uni-color-success;
-		background-color: transparent;
-	}
-
-	.uni-badge--warning {
-		color: $uni-text-color-inverse;
-		background-color: $uni-color-warning;
-	}
-
-	.uni-badge--warning-inverted {
-		color: $uni-color-warning;
-		background-color: transparent;
-	}
-
-	.uni-badge--error {
-		color: $uni-text-color-inverse;
-		background-color: $uni-color-error;
-	}
-
-	.uni-badge--error-inverted {
-		color: $uni-color-error;
-		background-color: transparent;
-	}
-
-	.uni-badge--small {
-		transform: $bage-small;
-		transform-origin: center center;
-	}
-</style>

+ 0 - 181
components/uni-countdown/uni-countdown.vue

@@ -1,181 +0,0 @@
-<template>
-	<view class="uni-countdown">
-		<text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text>
-		<text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">天</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text>
-		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '时' }}</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text>
-		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '分' }}</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text>
-		<text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">秒</text>
-	</view>
-</template>
-<script>
-	export default {
-		name: 'UniCountdown',
-		props: {
-			showDay: {
-				type: Boolean,
-				default: true
-			},
-			showColon: {
-				type: Boolean,
-				default: true
-			},
-			backgroundColor: {
-				type: String,
-				default: '#FFFFFF'
-			},
-			borderColor: {
-				type: String,
-				default: '#000000'
-			},
-			color: {
-				type: String,
-				default: '#000000'
-			},
-			splitorColor: {
-				type: String,
-				default: '#000000'
-			},
-			day:0,
-			hour:0,
-			minute:0,
-			second:0
-		},
-		data() {
-			return {
-				timer: null,
-				syncFlag: false,
-				d: '00',
-				h: '00',
-				i: '00',
-				s: '00',
-				leftTime: 0,
-				seconds: 0
-			}
-		},
-		watch: {
-			day(val) {
-				this.changeFlag()
-			},
-			hour(val) {
-				this.changeFlag()
-			},
-			minute(val) {
-				this.changeFlag()
-			},
-			second(val) {
-				this.changeFlag()
-			}
-		},
-		created: function(e) {
-			this.startData();
-		},
-		beforeDestroy() {
-			clearInterval(this.timer)
-		},
-		methods: {
-			toSeconds(day, hours, minutes, seconds) {
-				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
-			},
-			timeUp() {
-				clearInterval(this.timer)
-				this.$emit('timeup')
-			},
-			countDown() {
-				let seconds = this.seconds
-				let [day, hour, minute, second] = [0, 0, 0, 0]
-				if (seconds > 0) {
-					day = Math.floor(seconds / (60 * 60 * 24))
-					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
-					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
-					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
-				} else {
-					this.timeUp()
-				}
-				hour = hour + (day*24)
-				if (day < 10) {
-					day = '0' + day
-				}
-				if (hour < 10) {
-					hour = '0' + hour
-				}
-				if (minute < 10) {
-					minute = '0' + minute
-				}
-				if (second < 10) {
-					second = '0' + second
-				}
-				this.d = day
-				this.h = hour
-				this.i = minute
-				this.s = second
-			},
-			startData() {
-				this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
-				if (this.seconds <= 0) {
-					return
-				}
-				this.countDown()
-				this.timer = setInterval(() => {
-					this.seconds--
-					if (this.seconds < 0) {
-						this.timeUp()
-						return
-					}
-					this.countDown()
-				}, 1000)
-			},
-			changeFlag() {
-				if (!this.syncFlag) {
-					this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
-					console.log(this.seconds)
-					this.startData();
-					this.syncFlag = true;
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	@import '~@/uni.scss';
-	$countdown-height: 40rpx;
-	$countdown-width: 40rpx;
-
-	.uni-countdown {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: flex-start;
-		position: relative;
-		top: 5rpx;
-		left: 15rpx;
-	}
-
-	.uni-countdown__splitor {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		line-height: $countdown-height;
-		padding: 5rpx;
-		font-size: $uni-font-size-sm;
-	}
-
-	.uni-countdown__number {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		width: $countdown-width;
-		height: $countdown-height;
-		line-height: $countdown-height;
-		// margin: 5rpx;
-		text-align: center;
-		font-size: $uni-font-size-sm;
-		border-radius: 8rpx;
-	}
-</style>

+ 0 - 188
components/uni-countdown/uni-countdowns.vue

@@ -1,188 +0,0 @@
-<template>
-	<view class="uni-countdown">
-		<text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text>
-		<text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">天</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text>
-		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '时' }}</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text>
-		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '分' }}</text>
-		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text>
-		<text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">秒</text>
-	</view>
-</template>
-<script>
-	export default {
-		name: 'UniCountdown',
-		props: {
-			showDay: {
-				type: Boolean,
-				default: true
-			},
-			showColon: {
-				type: Boolean,
-				default: true
-			},
-			backgroundColor: {
-				type: String,
-				default: '#FFFFFF'
-			},
-			borderColor: {
-				type: String,
-				default: '#000000'
-			},
-			color: {
-				type: String,
-				default: '#000000'
-			},
-			splitorColor: {
-				type: String,
-				default: '#000000'
-			},
-			day: {
-				type: Number,
-				default: 0
-			},
-			hour: {
-				type: Number,
-				default: 0
-			},
-			minute: {
-				type: Number,
-				default: 0
-			},
-			second: {
-				type: Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				timer: null,
-				syncFlag: false,
-				d: '00',
-				h: '00',
-				i: '00',
-				s: '00',
-				leftTime: 0,
-				seconds: 0
-			}
-		},
-		watch: {
-			day(val) {
-				this.changeFlag()
-			},
-			hour(val) {
-				this.changeFlag()
-			},
-			minute(val) {
-				this.changeFlag()
-			},
-			second(val) {
-				this.changeFlag()
-			}
-		},
-		created: function(e) {
-			this.startData();
-		},
-		beforeDestroy() {
-			clearInterval(this.timer)
-		},
-		methods: {
-			toSeconds(day, hours, minutes, seconds) {
-				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
-			},
-			timeUp() {
-				clearInterval(this.timer)
-				this.$emit('timeup')
-			},
-			countDown() {
-				let seconds = this.seconds
-				let [day, hour, minute, second] = [0, 0, 0, 0]
-				if (seconds > 0) {
-					day = Math.floor(seconds / (60 * 60 * 24))
-					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
-					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
-					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
-				} else {
-					this.timeUp()
-				}
-				if (day < 10) {
-					day = '0' + day
-				}
-				if (hour < 10) {
-					hour = '0' + hour
-				}
-				if (minute < 10) {
-					minute = '0' + minute
-				}
-				if (second < 10) {
-					second = '0' + second
-				}
-				this.d = day
-				this.h = hour
-				this.i = minute
-				this.s = second
-			},
-			startData() {
-				this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
-				if (this.seconds <= 0) {
-					return
-				}
-				this.countDown()
-				this.timer = setInterval(() => {
-					this.seconds--
-					if (this.seconds < 0) {
-						this.timeUp()
-						return
-					}
-					this.countDown()
-				}, 1000)
-			},
-			changeFlag() {
-				if (!this.syncFlag) {
-					this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
-					this.startData();
-					this.syncFlag = true;
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	@import '~@/uni.scss';
-	$countdown-height: 48rpx;
-	$countdown-width: 52rpx;
-
-	.uni-countdown {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: flex-start;
-		padding: 2rpx 0;
-	}
-
-	.uni-countdown__splitor {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		line-height: $countdown-height;
-		padding: 5rpx;
-		font-size: $uni-font-size-sm;
-	}
-
-	.uni-countdown__number {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		width: $countdown-width;
-		height: $countdown-height;
-		line-height: $countdown-height;
-		margin: 5rpx;
-		text-align: center;
-		font-size: $uni-font-size-sm;
-	}
-</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>

+ 0 - 96
components/uni-icons/icons.js

@@ -1,96 +0,0 @@
-export default {
-	'contact': '\ue100',
-	'person': '\ue101',
-	'personadd': '\ue102',
-	'contact-filled': '\ue130',
-	'person-filled': '\ue131',
-	'personadd-filled': '\ue132',
-	'phone': '\ue200',
-	'email': '\ue201',
-	'chatbubble': '\ue202',
-	'chatboxes': '\ue203',
-	'phone-filled': '\ue230',
-	'email-filled': '\ue231',
-	'chatbubble-filled': '\ue232',
-	'chatboxes-filled': '\ue233',
-	'weibo': '\ue260',
-	'weixin': '\ue261',
-	'pengyouquan': '\ue262',
-	'chat': '\ue263',
-	'qq': '\ue264',
-	'videocam': '\ue300',
-	'camera': '\ue301',
-	'mic': '\ue302',
-	'location': '\ue303',
-	'mic-filled': '\ue332',
-	'speech': '\ue332',
-	'location-filled': '\ue333',
-	'micoff': '\ue360',
-	'image': '\ue363',
-	'map': '\ue364',
-	'compose': '\ue400',
-	'trash': '\ue401',
-	'upload': '\ue402',
-	'download': '\ue403',
-	'close': '\ue404',
-	'redo': '\ue405',
-	'undo': '\ue406',
-	'refresh': '\ue407',
-	'star': '\ue408',
-	'plus': '\ue409',
-	'minus': '\ue410',
-	'circle': '\ue411',
-	'checkbox': '\ue411',
-	'close-filled': '\ue434',
-	'clear': '\ue434',
-	'refresh-filled': '\ue437',
-	'star-filled': '\ue438',
-	'plus-filled': '\ue439',
-	'minus-filled': '\ue440',
-	'circle-filled': '\ue441',
-	'checkbox-filled': '\ue442',
-	'closeempty': '\ue460',
-	'refreshempty': '\ue461',
-	'reload': '\ue462',
-	'starhalf': '\ue463',
-	'spinner': '\ue464',
-	'spinner-cycle': '\ue465',
-	'search': '\ue466',
-	'plusempty': '\ue468',
-	'forward': '\ue470',
-	'back': '\ue471',
-	'left-nav': '\ue471',
-	'checkmarkempty': '\ue472',
-	'home': '\ue500',
-	'navigate': '\ue501',
-	'gear': '\ue502',
-	'paperplane': '\ue503',
-	'info': '\ue504',
-	'help': '\ue505',
-	'locked': '\ue506',
-	'more': '\ue507',
-	'flag': '\ue508',
-	'home-filled': '\ue530',
-	'gear-filled': '\ue532',
-	'info-filled': '\ue534',
-	'help-filled': '\ue535',
-	'more-filled': '\ue537',
-	'settings': '\ue560',
-	'list': '\ue562',
-	'bars': '\ue563',
-	'loop': '\ue565',
-	'paperclip': '\ue567',
-	'eye': '\ue568',
-	'arrowup': '\ue580',
-	'arrowdown': '\ue581',
-	'arrowleft': '\ue582',
-	'arrowright': '\ue583',
-	'arrowthinup': '\ue584',
-	'arrowthindown': '\ue585',
-	'arrowthinleft': '\ue586',
-	'arrowthinright': '\ue587',
-	'pulldown': '\ue588',
-	'closefill': '\ue589',
-	'sound': '\ue590',
-	'scan': '\ue612'
-}

File diff suppressed because it is too large
+ 0 - 10
components/uni-icons/uni-icons.vue


+ 0 - 230
components/uni-list-item/uni-list-item.vue

@@ -1,230 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<cell>
-	<!-- #endif -->
-	<view :class="disabled ? 'uni-list-item--disabled' : ''" :hover-class="disabled || showSwitch ? '' : 'uni-list-item--hover'"
-	 class="uni-list-item" @click="onClick">
-		<view class="uni-list-item__container" :class="{'uni-list-item--first':isFirstChild}">
-			<view v-if="thumb" class="uni-list-item__icon">
-				<image :src="thumb" mode="aspectFit" class="uni-list-item__icon-img" />
-			</view>
-			<view v-else-if="showExtraIcon" class="uni-list-item__icon">
-				<uni-icons :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type" class="uni-icon-wrapper" />
-			</view>
-			<view class="uni-list-item__content">
-				<slot></slot>
-				<text class="uni-list-item__content-title">{{ title }}</text>
-				<text v-if="note" class="uni-list-item__content-note">{{ note }}</text>
-			</view>
-			<view class="uni-list-item__slot">
-				<slot name="right" ></slot>
-			</view>
-			<view v-if="showBadge || showArrow || showSwitch" class="uni-list-item__extra">
-				<uni-badge v-if="showBadge" :type="badgeType" :text="badgeText" />
-				<switch class="itemSwitch" v-if="showSwitch" :color="switchColor" :disabled="disabled" :checked="switchChecked" @change="onSwitchChange" />
-				<uni-icons v-if="showArrow" :size="20" class="uni-icon-wrapper" color="#bbb" type="arrowright" />
-			</view>
-		</view>
-	</view>
-	<!-- #ifdef APP-NVUE -->
-	</cell>
-	<!-- #endif -->
-</template>
-
-<script>
-	import uniIcons from '../uni-icons/uni-icons.vue'
-	import uniBadge from '../uni-badge/uni-badge.vue'
-	export default {
-		name: 'UniListItem',
-		components: {
-			uniIcons,
-			uniBadge
-		},
-		props: {
-			title: {
-				type: String,
-				default: ''
-			}, // 列表标题
-			note: {
-				type: String,
-				default: ''
-			}, // 列表描述
-			disabled: {
-				// 是否禁用
-				type: [Boolean, String],
-				default: false
-			},
-			showArrow: {
-				// 是否显示箭头
-				type: [Boolean, String],
-				default: true
-			},
-			showBadge: {
-				// 是否显示数字角标
-				type: [Boolean, String],
-				default: false
-			},
-			showSwitch: {
-				// 是否显示Switch
-				type: [Boolean, String],
-				default: false
-			},
-			switchChecked: {
-				// Switch是否被选中
-				type: [Boolean, String],
-				default: false
-			},
-			switchColor:{
-				type:String,
-				default:''
-			},
-			badgeText: {
-				// badge内容
-				type: String,
-				default: ''
-			},
-			badgeType: {
-				// badge类型
-				type: String,
-				default: 'success'
-			},
-			thumb: {
-				// 缩略图
-				type: String,
-				default: ''
-			},
-			showExtraIcon: {
-				// 是否显示扩展图标
-				type: [Boolean, String],
-				default: false
-			},
-			extraIcon: {
-				type: Object,
-				default () {
-					return {
-						type: 'contact',
-						color: '#000000',
-						size: 20
-					}
-				}
-			}
-		},
-		inject: ['list'],
-		data() {
-			return {
-				isFirstChild: false
-			}
-		},
-		mounted() {
-			if (!this.list.firstChildAppend) {
-				this.list.firstChildAppend = true
-				this.isFirstChild = true
-			}
-		},
-		methods: {
-			onClick() {
-				this.$emit('click')
-			},
-			onSwitchChange(e) {
-				this.$emit('switchChange', e.detail)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import '~@/uni.scss';
-
-	$list-item-pd: $uni-spacing-col-lg $uni-spacing-row-lg;
-
-	.uni-list-item {
-		font-size: $uni-font-size-lg;
-		position: relative;
-		flex-direction: column;
-		justify-content: space-between;
-		padding-left: $uni-spacing-row-lg;
-	}
-
-	.uni-list-item--disabled {
-		opacity: 0.3;
-	}
-
-	.uni-list-item--hover {
-		background-color: $uni-bg-color-hover;
-	}
-
-	.uni-list-item__container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		padding: $list-item-pd;
-		padding-left: 0;
-		flex: 1;
-		position: relative;
-		justify-content: space-between;
-		align-items: center;
-		border-top-color: $uni-border-color;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-list-item--first {
-		border-top-width: 0px;
-	}
-
-	.uni-list-item__content {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		overflow: hidden;
-		flex-direction: column;
-		color: #3b4144;
-
-	}
-
-	.uni-list-item__content-title {
-		font-size: $uni-font-size-base;
-		color: #3b4144;
-		overflow: hidden;
-	}
-
-	.uni-list-item__content-note {
-		margin-top: 6rpx;
-		color: $uni-text-color-grey;
-		font-size: $uni-font-size-sm;
-		overflow: hidden;
-	}
-
-	.uni-list-item__extra {
-		// width: 25%;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: flex-end;
-		align-items: center;
-	}
-
-	.uni-list-item__icon {
-		margin-right: 18rpx;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		display: flex;
-	}
-
-	.uni-list-item__icon-img {
-		height: $uni-img-size-base;
-		width: $uni-img-size-base;
-	}
-	// 修改switch默认大小
-	.itemSwitch{
-		transform: translateX(16rpx) scale(.84);
-	}
-	.uni-list-item__slot{
-		color: #909399;
-		font-size: 28rpx;
-	}
-</style>

+ 0 - 68
components/uni-list/uni-list.vue

@@ -1,68 +0,0 @@
-<template>
-	<!-- #ifndef APP-NVUE -->
-	<view class="uni-list">
-		<slot />
-	</view>
-	<!-- #endif -->
-	<!-- #ifdef APP-NVUE -->
-	<list class="uni-list" :enableBackToTop="enableBackToTop" loadmoreoffset="15" :scroll-y="scrollY" @loadmore="loadMore">
-		<slot />
-	</list>
-	<!-- #endif -->
-</template>
-
-<script>
-	export default {
-		name: 'UniList',
-		'mp-weixin': {
-			options: {
-				multipleSlots: false
-			}
-		},
-		props: {
-			enableBackToTop: {
-				type: [Boolean, String],
-				default: false
-			},
-			scrollY: {
-				type: [Boolean, String],
-				default: false
-			}
-		},
-		provide() {
-			return {
-				list: this
-			}
-		},
-		created() {
-			this.firstChildAppend = false
-		},
-		methods: {
-			loadMore(e) {
-				this.$emit("scrolltolower");
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-list {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		background-color: $uni-bg-color;
-		position: relative;
-		flex-direction: column;
-		// border-bottom-color: $uni-border-color;
-		// border-bottom-style: solid;
-		// border-bottom-width: 1px;
-	}
-	/* #ifndef APP-NVUE */
-	.uni-list:before {
-		height: 0;
-	}
-	.uni-list:after {
-		height: 0;
-	}
-	/* #endif */
-
-</style>

+ 0 - 65
components/uni-list/uni-refresh.vue

@@ -1,65 +0,0 @@
-<template>
-    <!-- #ifdef APP-NVUE -->
-    <refresh :display="display" @refresh="onrefresh" @pullingdown="onpullingdown">
-        <slot />
-    </refresh>
-    <!-- #endif -->
-    <!-- #ifndef APP-NVUE -->
-    <view ref="uni-refresh" class="uni-refresh" v-show="isShow">
-        <slot />
-    </view>
-    <!-- #endif -->
-</template>
-
-<script>
-    export default {
-        name: 'UniRefresh',
-        props: {
-            display: {
-                type: [String],
-                default: "hide"
-            }
-        },
-        data() {
-            return {
-                pulling: false
-            }
-        },
-        computed: {
-            isShow() {
-                if (this.display === "show" || this.pulling === true) {
-                    return true;
-                }
-                return false;
-            }
-        },
-        created() {},
-        methods: {
-            onchange(value) {
-                this.pulling = value;
-            },
-            onrefresh(e) {
-                this.$emit("refresh", e);
-            },
-            onpullingdown(e) {
-                // #ifdef APP-NVUE
-                this.$emit("pullingdown", e);
-                // #endif
-                // #ifndef APP-NVUE
-                var detail = {
-                    viewHeight: 90,
-                    pullingDistance: e.height
-                }
-                this.$emit("pullingdown", detail);
-                // #endif
-            }
-        }
-    }
-</script>
-
-<style>
-    .uni-refresh {
-        height: 0;
-        overflow: hidden;
-    }
-</style>

+ 0 - 87
components/uni-list/uni-refresh.wxs

@@ -1,87 +0,0 @@
-var pullDown = {
-    threshold: 95,
-    maxHeight: 200,
-    callRefresh: 'onrefresh',
-    callPullingDown: 'onpullingdown',
-    refreshSelector: '.uni-refresh'
-};
-
-function ready(newValue, oldValue, ownerInstance, instance) {
-    var state = instance.getState()
-    state.canPullDown = newValue;
-    console.log(newValue);
-}
-
-function touchStart(e, instance) {
-    var state = instance.getState();
-    state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
-    state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
-    if (!state.canPullDown) {
-        return
-    }
-
-    console.log("touchStart");
-
-    state.height = 0;
-    state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
-    state.refreshInstance.setStyle({
-        'height': 0
-    });
-    state.refreshInstance.callMethod("onchange", true);
-}
-
-function touchMove(e, ownerInstance) {
-    var instance = e.instance;
-    var state = instance.getState();
-    if (!state.canPullDown) {
-        return
-    }
-
-    var oldHeight = state.height;
-    var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
-    var height = endY - state.touchStartY;
-    if (height > pullDown.maxHeight) {
-        return;
-    }
-
-    var refreshInstance = state.refreshInstance;
-    refreshInstance.setStyle({
-        'height': height + 'px'
-    });
-
-    height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
-    state.height = height;
-    refreshInstance.callMethod(pullDown.callPullingDown, {
-        height: height
-    });
-}
-
-function touchEnd(e, ownerInstance) {
-    var state = e.instance.getState();
-    if (!state.canPullDown) {
-        return
-    }
-
-    state.refreshInstance.callMethod("onchange", false);
-
-    var refreshInstance = state.refreshInstance;
-    if (state.height > pullDown.threshold) {
-        refreshInstance.callMethod(pullDown.callRefresh);
-        return;
-    }
-
-    refreshInstance.setStyle({
-        'height': 0
-    });
-}
-
-function propObserver(newValue, oldValue, instance) {
-    pullDown = newValue;
-}
-
-module.exports = {
-    touchmove: touchMove,
-    touchstart: touchStart,
-    touchend: touchEnd,
-    propObserver: propObserver
-}

+ 0 - 194
components/uni-load-more/uni-load-more.vue

@@ -1,194 +0,0 @@
-<template>
-	<view class="uni-load-more">
-		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">
-			<view class="load1 load">
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-			</view>
-			<view class="load2 load">
-				<view class="item" :style="{background:color}"></view>
-				<view class="item"  :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-			</view>
-			<view class="load3 load">
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-				<view class="item" :style="{background:color}"></view>
-			</view>
-		</view>
-		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "uni-load-more",
-		props: {
-			status: {
-				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
-				type: String,
-				default: 'more'
-			},
-			showIcon: {
-				type: Boolean,
-				default: true
-			},
-			color: {
-				type: String,
-				default: "#777777"
-			},
-			contentText: {
-				type: Object,
-				default () {
-					return {
-						contentdown: "上拉显示更多",
-						contentrefresh: "正在加载...",
-						contentnomore: "没有更多数据了"
-					};
-				}
-			}
-		},
-		data() {
-			return {}
-		}
-	}
-</script>
-
-<style>
-	@charset "UTF-8";
-
-	.uni-load-more {
-		display: flex;
-		flex-direction: row;
-		height: 80upx;
-		align-items: center;
-		justify-content: center
-	}
-
-	.uni-load-more__text {
-		font-size: 28upx;
-		color: #999
-	}
-
-	.uni-load-more__img {
-		height: 24px;
-		width: 24px;
-		margin-right: 10px
-	}
-
-	.uni-load-more__img>.load {
-		position: absolute
-	}
-
-	.uni-load-more__img>.load .item {
-		width: 6px;
-		height: 2px;
-		border-top-left-radius: 1px;
-		border-bottom-left-radius: 1px;
-		background: #999;
-		position: absolute;
-		opacity: .2;
-		transform-origin: 50%;
-		animation: load 1.56s ease infinite
-	}
-
-	.uni-load-more__img>.load .item:nth-child(1) {
-		transform: rotate(90deg);
-		top: 2px;
-		left: 9px
-	}
-
-	.uni-load-more__img>.load .item:nth-child(2) {
-		transform: rotate(180deg);
-		top: 11px;
-		right: 0
-	}
-
-	.uni-load-more__img>.load .item:nth-child(3) {
-		transform: rotate(270deg);
-		bottom: 2px;
-		left: 9px
-	}
-
-	.uni-load-more__img>.load .item:nth-child(4) {
-		top: 11px;
-		left: 0
-	}
-
-	.load1,
-	.load2,
-	.load3 {
-		height: 24px;
-		width: 24px
-	}
-
-	.load2 {
-		transform: rotate(30deg)
-	}
-
-	.load3 {
-		transform: rotate(60deg)
-	}
-
-	.load1 .item:nth-child(1) {
-		animation-delay: 0s
-	}
-
-	.load2 .item:nth-child(1) {
-		animation-delay: .13s
-	}
-
-	.load3 .item:nth-child(1) {
-		animation-delay: .26s
-	}
-
-	.load1 .item:nth-child(2) {
-		animation-delay: .39s
-	}
-
-	.load2 .item:nth-child(2) {
-		animation-delay: .52s
-	}
-
-	.load3 .item:nth-child(2) {
-		animation-delay: .65s
-	}
-
-	.load1 .item:nth-child(3) {
-		animation-delay: .78s
-	}
-
-	.load2 .item:nth-child(3) {
-		animation-delay: .91s
-	}
-
-	.load3 .item:nth-child(3) {
-		animation-delay: 1.04s
-	}
-
-	.load1 .item:nth-child(4) {
-		animation-delay: 1.17s
-	}
-
-	.load2 .item:nth-child(4) {
-		animation-delay: 1.3s
-	}
-
-	.load3 .item:nth-child(4) {
-		animation-delay: 1.43s
-	}
-
-	@-webkit-keyframes load {
-		0% {
-			opacity: 1
-		}
-
-		100% {
-			opacity: .2
-		}
-	}
-</style>

+ 0 - 396
components/uni-notice-bar/uni-notice-bar.vue

@@ -1,396 +0,0 @@
-<template>
-	<view v-if="show" class="uni-noticebar" :style="{ backgroundColor: backgroundColor }" @click="onClick">
-		<!-- #ifdef MP-ALIPAY -->
-		<view v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" @click="close">
-			<uni-icons type="closefill" :color="color" size="12" />
-		</view>
-		<view v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon">
-			<uni-icons type="sound" :color="color" size="14" />
-		</view>
-		<!-- #endif -->
-		<!-- #ifndef MP-ALIPAY -->
-		<uni-icons v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" type="closefill" :color="color"
-		 size="12" @click="close" />
-		<uni-icons v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon" type="sound" :color="color"
-		 size="14" />
-		<!-- #endif -->
-		<view ref="textBox" class="uni-noticebar__content-wrapper" :class="{'uni-noticebar__content-wrapper--scrollable':scrollable, 'uni-noticebar__content-wrapper--single':!scrollable && (single || moreText)}">
-			<view :id="elIdBox" class="uni-noticebar__content" :class="{'uni-noticebar__content--scrollable':scrollable, 'uni-noticebar__content--single':!scrollable && (single || moreText)}">
-				<text :id="elId" ref="animationEle" class="uni-noticebar__content-text" :class="{'uni-noticebar__content-text--scrollable':scrollable,'uni-noticebar__content-text--single':!scrollable && (single || moreText)}"
-				 :style="{color:color, width:wrapWidth+'px', 'animationDuration': animationDuration, '-webkit-animationDuration': animationDuration ,animationPlayState: webviewHide?'paused':animationPlayState,'-webkit-animationPlayState':webviewHide?'paused':animationPlayState, animationDelay: animationDelay, '-webkit-animationDelay':animationDelay}">{{text}}</text>
-			</view>
-		</view>
-		<view v-if="showGetMore === true || showGetMore === 'true'" class="uni-noticebar__more" @click="clickMore">
-			<text v-if="moreText" :style="{ color: moreColor }" class="uni-noticebar__more-text">{{ moreText }}</text>
-			<uni-icons type="arrowright" :color="moreColor" size="14" />
-		</view>
-	</view>
-</template>
-
-<script>
-	import uniIcons from '../uni-icons/uni-icons.vue'
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom');
-	const animation = weex.requireModule('animation');
-	// #endif
-
-	/**
-	 * NoticeBar 自定义导航栏
-	 * @description 通告栏组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=30
-	 * @property {Number} speed 文字滚动的速度,默认100px/秒
-	 * @property {String} text 显示文字
-	 * @property {String} backgroundColor 背景颜色
-	 * @property {String} color 文字颜色
-	 * @property {String} moreColor 查看更多文字的颜色
-	 * @property {String} moreText 设置“查看更多”的文本
-	 * @property {Boolean} single = [true|false] 是否单行
-	 * @property {Boolean} scrollable = [true|false] 是否滚动,为true时,NoticeBar为单行
-	 * @property {Boolean} showIcon = [true|false] 是否显示左侧喇叭图标
-	 * @property {Boolean} showClose = [true|false] 是否显示左侧关闭按钮
-	 * @property {Boolean} showGetMore = [true|false] 是否显示右侧查看更多图标,为true时,NoticeBar为单行
-	 * @event {Function} click 点击 NoticeBar 触发事件
-	 * @event {Function} close 关闭 NoticeBar 触发事件
-	 * @event {Function} getmore 点击”查看更多“时触发事件
-	 */
-
-	export default {
-		name: 'UniNoticeBar',
-		components: {
-			uniIcons
-		},
-		props: {
-			text: {
-				type: String,
-				default: ''
-			},
-			moreText: {
-				type: String,
-				default: ''
-			},
-			backgroundColor: {
-				type: String,
-				default: '#fffbe8'
-			},
-			speed: {
-				// 默认1s滚动100px
-				type: Number,
-				default: 100
-			},
-			color: {
-				type: String,
-				default: '#de8c17'
-			},
-			moreColor: {
-				type: String,
-				default: '#999999'
-			},
-			single: {
-				// 是否单行
-				type: [Boolean, String],
-				default: false
-			},
-			scrollable: {
-				// 是否滚动,添加后控制单行效果取消
-				type: [Boolean, String],
-				default: false
-			},
-			showIcon: {
-				// 是否显示左侧icon
-				type: [Boolean, String],
-				default: false
-			},
-			showGetMore: {
-				// 是否显示右侧查看更多
-				type: [Boolean, String],
-				default: false
-			},
-			showClose: {
-				// 是否显示左侧关闭按钮
-				type: [Boolean, String],
-				default: false
-			}
-		},
-		data() {
-			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			const elIdBox = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			return {
-				textWidth: 0,
-				boxWidth: 0,
-				wrapWidth: '',
-				webviewHide: false,
-				// #ifdef APP-NVUE
-				stopAnimation: false,
-				// #endif
-				elId: elId,
-				elIdBox: elIdBox,
-				show: true,
-				animationDuration: 'none',
-				animationPlayState: 'paused',
-				animationDelay: '0s'
-			}
-		},
-		mounted() {
-			// #ifdef APP-PLUS
-			var pages = getCurrentPages();
-			var page = pages[pages.length - 1];
-			var currentWebview = page.$getAppWebview();
-			currentWebview.addEventListener('hide',()=>{
-				this.webviewHide = true
-			})
-			currentWebview.addEventListener('show',()=>{
-				this.webviewHide = false
-			})
-			// #endif
-			this.$nextTick(() => {
-				this.initSize()
-			})
-		},
-		// #ifdef APP-NVUE
-		beforeDestroy() {
-			this.stopAnimation = true
-		},
-		// #endif
-		methods: {
-			initSize() {
-				if (this.scrollable) {
-					// #ifndef APP-NVUE
-					let query = [],
-						boxWidth = 0,
-						textWidth = 0;
-					let textQuery = new Promise((resolve, reject) => {
-						uni.createSelectorQuery()
-							// #ifndef MP-ALIPAY
-							.in(this)
-							// #endif
-							.select(`#${this.elId}`)
-							.boundingClientRect()
-							.exec(ret => {
-								this.textWidth = ret[0].width
-								resolve()
-							})
-					})
-					let boxQuery = new Promise((resolve, reject) => {
-						uni.createSelectorQuery()
-							// #ifndef MP-ALIPAY
-							.in(this)
-							// #endif
-							.select(`#${this.elIdBox}`)
-							.boundingClientRect()
-							.exec(ret => {
-								this.boxWidth = ret[0].width
-								resolve()
-							})
-					})
-					query.push(textQuery)
-					query.push(boxQuery)
-					Promise.all(query).then(() => {
-						this.animationDuration = `${this.textWidth / this.speed}s`
-						this.animationDelay = `-${this.boxWidth / this.speed}s`
-						setTimeout(() => {
-							this.animationPlayState = 'running'
-						}, 1000)
-					})
-					// #endif
-					// #ifdef APP-NVUE
-					dom.getComponentRect(this.$refs['animationEle'], (res) => {
-						let winWidth = uni.getSystemInfoSync().windowWidth
-						this.textWidth = res.size.width
-						animation.transition(this.$refs['animationEle'], {
-							styles: {
-								transform: `translateX(-${winWidth}px)`
-							},
-							duration: 0,
-							timingFunction: 'linear',
-							delay: 0
-						}, () => {
-							if (!this.stopAnimation) {
-								animation.transition(this.$refs['animationEle'], {
-									styles: {
-										transform: `translateX(-${this.textWidth}px)`
-									},
-									timingFunction: 'linear',
-									duration: (this.textWidth - winWidth) / this.speed * 1000,
-									delay: 1000
-								}, () => {
-									if (!this.stopAnimation) {
-										this.loopAnimation()
-									}
-								});
-							}
-						});
-					})
-					// #endif
-				}
-				// #ifdef APP-NVUE
-				if (!this.scrollable && (this.single || this.moreText)) {
-					dom.getComponentRect(this.$refs['textBox'], (res) => {
-						this.wrapWidth = res.size.width
-					})
-				}
-				// #endif
-			},
-			loopAnimation() {
-				// #ifdef APP-NVUE
-				animation.transition(this.$refs['animationEle'], {
-					styles: {
-						transform: `translateX(0px)`
-					},
-					duration: 0
-				}, () => {
-					if (!this.stopAnimation) {
-						animation.transition(this.$refs['animationEle'], {
-							styles: {
-								transform: `translateX(-${this.textWidth}px)`
-							},
-							duration: this.textWidth / this.speed * 1000,
-							timingFunction: 'linear',
-							delay: 0
-						}, () => {
-							if (!this.stopAnimation) {
-								this.loopAnimation()
-							}
-						});
-					}
-				});
-				// #endif
-			},
-			clickMore() {
-				this.$emit('getmore')
-			},
-			close() {
-				this.show = false;
-				this.$emit('close')
-			},
-			onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import '@/uni.scss';
-
-	.uni-noticebar {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		box-sizing: border-box;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		padding: 6px 12px;
-		margin-bottom: 10px;
-	}
-
-	.uni-noticebar-close {
-		margin-right: 5px;
-	}
-
-	.uni-noticebar-icon {
-		margin-right: 5px;
-	}
-
-	.uni-noticebar__content-wrapper {
-		flex: 1;
-		flex-direction: column;
-		overflow: hidden;
-	}
-
-	.uni-noticebar__content-wrapper--single {
-		/* #ifndef APP-NVUE */
-		line-height: 18px;
-		/* #endif */
-	}
-
-	.uni-noticebar__content-wrapper--single,
-	.uni-noticebar__content-wrapper--scrollable {
-		flex-direction: row;
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-noticebar__content-wrapper--scrollable {
-		position: relative;
-		height: 18px;
-	}
-	/* #endif */
-
-	.uni-noticebar__content--scrollable {
-		/* #ifdef APP-NVUE */
-		flex: 0;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		flex: 1;
-		display: block;
-		overflow: hidden;
-		/* #endif */
-	}
-
-	.uni-noticebar__content--single {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex: none;
-		width: 100%;
-		justify-content: center;
-		/* #endif */
-	}
-
-	.uni-noticebar__content-text {
-		font-size: 14px;
-		line-height: 18px;
-		/* #ifndef APP-NVUE */
-		word-break: break-all;
-		/* #endif */
-	}
-
-	.uni-noticebar__content-text--single {
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		display: block;
-		width: 100%;
-		white-space: nowrap;
-		/* #endif */
-		overflow: hidden;
-		text-overflow: ellipsis;
-	}
-
-	.uni-noticebar__content-text--scrollable {
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		padding-left: 750rpx;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		position: absolute;
-		display: block;
-		height: 18px;
-		line-height: 18px;
-		white-space: nowrap;
-		padding-left: 100%;
-		animation: notice 10s 0s linear infinite both;
-		animation-play-state: paused;
-		/* #endif */
-	}
-
-	.uni-noticebar__more {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		align-items: center;
-		padding-left: 5px;
-	}
-
-	.uni-noticebar__more-text {
-		font-size: 14px;
-	}
-
-	@keyframes notice {
-		100% {
-			transform: translate3d(-100%, 0, 0);
-		}
-	}
-</style>

+ 0 - 198
components/uni-number-box.vue

@@ -1,198 +0,0 @@
-<template>
-	<view class="uni-numbox">
-		<view class="uni-numbox-minus" 
-			@click="_calcValue('subtract')"
-		>
-			<text class="iconfont iconmove" :class="minDisabled?'uni-numbox-disabled': ''" ></text>
-		</view>
-		<input 
-			class="uni-numbox-value" 
-			type="number"  
-			:disabled="disabled"
-			:value="inputValue" 
-			@blur="_onBlur"
-		>
-		<view 
-			class="uni-numbox-plus" 
-			@click="_calcValue('add')"
-		>
-			<text class="iconfont iconadd" :class="maxDisabled?'uni-numbox-disabled': ''" ></text>
-		</view>
-	</view>
-</template>
-<script>
-	export default {
-		name: 'uni-number-box',
-		props: {
-			isMax: {
-				type: Boolean,
-				default: false
-			},
-			isMin: {
-				type: Boolean,
-				default: false
-			},
-			index: {
-				type: Number,
-				default: 0
-			},
-			value: {
-				type: Number,
-				default: 0
-			},
-			min: {
-				type: Number,
-				default: -Infinity
-			},
-			max: {
-				type: Number,
-				default: Infinity
-			},
-			step: {
-				type: Number,
-				default: 1
-			},
-			disabled: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				inputValue: this.value,
-				minDisabled: false,
-				maxDisabled: false
-			}
-		},
-		created(){
-			this.maxDisabled = this.isMax;
-			this.minDisabled = this.isMin;
-		},
-		computed: {
-
-		},
-		watch: {
-			inputValue(number) {
-				const data = {
-					number: number,
-					index: this.index
-				}
-				this.$emit('eventChange', data);
-			}
-		},
-		methods: {
-			_calcValue(type) {
-				const scale = this._getDecimalScale();
-				let value = this.inputValue * scale;
-				let newValue = 0;
-				let step = this.step * scale;
-				
-				if(type === 'subtract'){
-					newValue = value - step;
-					if (newValue <= this.min){
-						this.minDisabled = true;
-					}
-					if(newValue < this.min){
-						newValue = this.min
-					}
-					if(newValue < this.max && this.maxDisabled === true){
-						this.maxDisabled = false;
-					}
-				}else if(type === 'add'){
-					newValue = value + step;
-					if (newValue >= this.max){
-						this.maxDisabled = true;
-					}
-					if(newValue > this.max){
-						newValue = this.max
-					}
-					if(newValue > this.min && this.minDisabled === true){
-						this.minDisabled = false;
-					}
-				}
-				if(newValue === value){
-					return;
-				}
-				this.inputValue = newValue / scale;
-			},
-			_getDecimalScale() {
-				let scale = 1;
-				// 浮点型
-				if (~~this.step !== this.step) {
-					scale = Math.pow(10, (this.step + '').split('.')[1].length);
-				}
-				return scale;
-			},
-			_onBlur(event) {
-				let value = event.detail.value;
-				if (!value) {
-					this.inputValue = 0;
-					return
-				}
-				value = +value;
-				if (value > this.max) {
-					value = this.max;
-				} else if (value < this.min) {
-					value = this.min
-				}
-
-				this.inputValue = value
-			}
-		}
-	}
-</script>
-<style>
-	.uni-numbox {
-		/* position:absolute; */
-		/* left: 30rpx; */
-		/* bottom: 0; */
-		display: flex;
-		justify-content: flex-start;
-		align-items: center;
-		width:230rpx;
-		height: 70rpx;
-		background:#f5f5f5;
-	}
-
-	.uni-numbox-minus,
-	.uni-numbox-plus {
-		margin: 0;
-		background-color: #f5f5f5;
-		width: 70rpx;
-		height: 100%;
-		line-height: 70rpx;
-		text-align: center;
-		position: relative;
-	}
-	.uni-numbox-minus .yticon,
-	.uni-numbox-plus .yticon{
-		font-size: 36rpx;
-		color: #555;
-	}
-
-	.uni-numbox-minus {
-		border-right: none;
-		border-top-left-radius: 6rpx;
-		border-bottom-left-radius: 6rpx;
-	}
-
-	.uni-numbox-plus {
-		border-left: none;
-		border-top-right-radius: 6rpx;
-		border-bottom-right-radius: 6rpx;
-	}
-
-	.uni-numbox-value {
-		position: relative;
-		background-color: #f5f5f5;
-		width: 90rpx;
-		height: 50rpx;
-		text-align: center;
-		padding: 0;
-		font-size: 30rpx;
-	}
-
-	.uni-numbox-disabled.iconfont {
-		color: #d6d6d6;
-	}
-</style>

+ 0 - 243
components/uni-popup/uni-popup-dialog.vue

@@ -1,243 +0,0 @@
-<template>
-	<view class="uni-popup-dialog">
-		<view class="uni-dialog-title">
-			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
-		</view>
-		<view class="uni-dialog-content">
-			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
-			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
-		</view>
-		<view class="uni-dialog-button-group">
-			<view class="uni-dialog-button" @click="close">
-				<text class="uni-dialog-button-text">取消</text>
-			</view>
-			<view class="uni-dialog-button uni-border-left" @click="onOk">
-				<text class="uni-dialog-button-text uni-button-color">确定</text>
-			</view>
-		</view>
-
-	</view>
-</template>
-
-<script>
-	/**
-	 * PopUp 弹出层-对话框样式
-	 * @description 弹出层-对话框样式
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} value input 模式下的默认值
-	 * @property {String} placeholder input 模式下输入提示
-	 * @property {String} type = [success|warning|info|error] 主题样式
-	 *  @value success 成功
-	 * 	@value warning 提示
-	 * 	@value info 消息
-	 * 	@value error 错误
-	 * @property {String} mode = [base|input] 模式、
-	 * 	@value base 基础对话框
-	 * 	@value input 可输入对话框
-	 * @property {String} content 对话框内容
-	 * @property {Boolean} beforeClose 是否拦截取消事件
-	 * @event {Function} confirm 点击确认按钮触发
-	 * @event {Function} close 点击取消按钮触发
-	 */
-
-	export default {
-		name: "uniPopupDialog",
-		props: {
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			placeholder: {
-				type: [String, Number],
-				default: '请输入内容'
-			},
-			/**
-			 * 对话框主题 success/warning/info/error	  默认 success
-			 */
-			type: {
-				type: String,
-				default: 'error'
-			},
-			/**
-			 * 对话框模式 base/input
-			 */
-			mode: {
-				type: String,
-				default: 'base'
-			},
-			/**
-			 * 对话框标题
-			 */
-			title: {
-				type: String,
-				default: '提示'
-			},
-			/**
-			 * 对话框内容
-			 */
-			content: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
-			 */
-			beforeClose: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				dialogType: 'error',
-				focus: false,
-				val: ""
-			}
-		},
-		inject: ['popup'],
-		watch: {
-			type(val) {
-				this.dialogType = val
-			},
-			mode(val) {
-				if (val === 'input') {
-					this.dialogType = 'info'
-				}
-			},
-			value(val) {
-				this.val = val
-			}
-		},
-		created() {
-			// 对话框遮罩不可点击
-			this.popup.mkclick = false
-			if (this.mode === 'input') {
-				this.dialogType = 'info'
-				this.val = this.value
-			} else {
-				this.dialogType = this.type
-			}
-		},
-		mounted() {
-			this.focus = true
-		},
-		methods: {
-			/**
-			 * 点击确认按钮
-			 */
-			onOk() {
-				this.$emit('confirm', () => {
-					this.popup.close()
-					if (this.mode === 'input') this.val = this.value
-				}, this.mode === 'input' ? this.val : '')
-			},
-			/**
-			 * 点击取消按钮
-			 */
-			close() {
-				if (this.beforeClose) {
-					this.$emit('close', () => {
-						this.popup.close()
-					})
-					return
-				}
-				this.popup.close()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.uni-popup-dialog {
-		width: 300px;
-		border-radius: 15px;
-		background-color: #fff;
-	}
-
-	.uni-dialog-title {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		padding-top: 15px;
-		padding-bottom: 5px;
-	}
-
-	.uni-dialog-title-text {
-		font-size: 16px;
-		font-weight: 500;
-	}
-
-	.uni-dialog-content {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		padding: 5px 15px 15px 15px;
-	}
-
-	.uni-dialog-content-text {
-		font-size: 14px;
-		color: #6e6e6e;
-	}
-
-	.uni-dialog-button-group {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		border-top-color: #f5f5f5;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-dialog-button {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 45px;
-	}
-
-	.uni-border-left {
-		border-left-color: #f0f0f0;
-		border-left-style: solid;
-		border-left-width: 1px;
-	}
-
-	.uni-dialog-button-text {
-		font-size: 14px;
-	}
-
-	.uni-button-color {
-		color: $uni-color-primary;
-	}
-
-	.uni-dialog-input {
-		flex: 1;
-		font-size: 14px;
-	}
-
-	.uni-popup__success {
-		color: $uni-color-success;
-	}
-
-	.uni-popup__warn {
-		color: $uni-color-warning;
-	}
-
-	.uni-popup__error {
-		color: $uni-color-error;
-	}
-
-	.uni-popup__info {
-		color: #909399;
-	}
-</style>

+ 0 - 116
components/uni-popup/uni-popup-message.vue

@@ -1,116 +0,0 @@
-<template>
-	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
-		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
-	</view>
-</template>
-
-<script>
-	
-	/**
-	 * PopUp 弹出层-消息提示
-	 * @description 弹出层-消息提示
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} type = [success|warning|info|error] 主题样式
-	 *  @value success 成功
-	 * 	@value warning 提示
-	 * 	@value info 消息
-	 * 	@value error 错误
-	 * @property {String} message 消息提示文字
-	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
-	 */
-	
-	export default {
-		name: 'UniPopupMessage',
-		props: {
-			/**
-			 * 主题 success/warning/info/error	  默认 success
-			 */
-			type: {
-				type: String,
-				default: 'success'
-			},
-			/**
-			 * 消息文字
-			 */
-			message: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 显示时间,设置为 0 则不会自动关闭
-			 */
-			duration: {
-				type: Number,
-				default: 3000
-			}
-		},
-		inject: ['popup'],
-		data() {
-			return {}
-		},
-		created() {
-			this.popup.childrenMsg = this
-		},
-		methods: {
-			open() {
-				if (this.duration === 0) return
-				clearTimeout(this.popuptimer)
-				this.popuptimer = setTimeout(() => {
-					this.popup.close()
-				}, this.duration)
-			},
-			close() {
-				clearTimeout(this.popuptimer)
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-popup-message {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		background-color: #e1f3d8;
-		padding: 10px 15px;
-		border-color: #eee;
-		border-style: solid;
-		border-width: 1px;
-	}
-	.uni-popup-message-text {
-		font-size: 14px;
-		padding: 0;
-	}
-
-	.uni-popup__success {
-		background-color: #e1f3d8;
-	}
-
-	.uni-popup__success-text {
-		color: #67C23A;
-	}
-
-	.uni-popup__warn {
-		background-color: #faecd8;
-	}
-
-	.uni-popup__warn-text {
-		color: #E6A23C;
-	}
-
-	.uni-popup__error {
-		background-color: #fde2e2;
-	}
-
-	.uni-popup__error-text {
-		color: #F56C6C;
-	}
-
-	.uni-popup__info {
-		background-color: #F2F6FC;
-	}
-
-	.uni-popup__info-text {
-		color: #909399;
-	}
-</style>

+ 0 - 263
components/uni-popup/uni-popup-ori.vue

@@ -1,263 +0,0 @@
-<template>
-	<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
-		<uni-transition :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans" @click="onTap" />
-		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
-			<view class="uni-popup__wrapper-box" @click.stop="clear">
-				<slot />
-			</view>
-		</uni-transition>
-	</view>
-</template>
-
-<script>
-	import uniTransition from '../uni-transition/uni-transition.vue'
-
-	/**
-	 * PopUp 弹出层
-	 * @description 弹出层组件,为了解决遮罩弹层的问题
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} type = [top|center|bottom] 弹出方式
-	 * 	@value top 顶部弹出
-	 * 	@value center 中间弹出
-	 * 	@value bottom 底部弹出
-	 * @property {Boolean} animation = [ture|false] 是否开启动画
-	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
-	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
-	 */
-
-	export default {
-		name: 'UniPopup',
-		components: {
-			uniTransition
-		},
-		props: {
-			// 开启动画
-			animation: {
-				type: Boolean,
-				default: true
-			},
-			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
-			type: {
-				type: String,
-				default: 'center'
-			},
-			// maskClick
-			maskClick: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				duration: 300,
-				ani: [],
-				showPopup: false,
-				showTrans: false,
-				maskClass: {
-					'position': 'fixed',
-					'bottom': 0,
-					'top': 0,
-					'left': 0,
-					'right': 0,
-					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
-				},
-				transClass: {
-					'position': 'fixed',
-					'left': 0,
-					'right': 0,
-				}
-			}
-		},
-		watch: {
-			type: {
-				handler: function(newVal) {
-					switch (this.type) {
-						case 'top':
-							this.ani = ['slide-top']
-							this.transClass = {
-								'position': 'fixed',
-								'left': 0,
-								'right': 0,
-							}
-							break
-						case 'bottom':
-							this.ani = ['slide-bottom']
-							this.transClass = {
-								'position': 'fixed',
-								'left': 0,
-								'right': 0,
-								'bottom': 0
-							}
-							break
-						case 'center':
-							this.ani = ['zoom-out', 'fade']
-							this.transClass = {
-								'position': 'fixed',
-								/* #ifndef APP-NVUE */
-								'display': 'flex',
-								'flexDirection': 'column',
-								/* #endif */
-								'bottom': 0,
-								'left': 0,
-								'right': 0,
-								'top': 0,
-								'justifyContent': 'center',
-								'alignItems': 'center'
-							}
-
-							break
-					}
-				},
-				immediate: true
-			}
-		},
-		created() {
-			if (this.animation) {
-				this.duration = 300
-			} else {
-				this.duration = 0
-			}
-		},
-		methods: {
-			clear(e) {
-				// TODO nvue 取消冒泡
-				e.stopPropagation()
-			},
-			open() {
-				this.showPopup = true
-				this.$nextTick(() => {
-					clearTimeout(this.timer)
-					this.timer = setTimeout(() => {
-						this.showTrans = true
-					}, 50);
-				})
-				this.$emit('change', {
-					show: true
-				})
-			},
-			close(type) {
-				this.showTrans = false
-				this.$nextTick(() => {
-					clearTimeout(this.timer)
-					this.timer = setTimeout(() => {
-						this.$emit('change', {
-							show: false
-						})
-						this.showPopup = false
-					}, 300)
-				})
-			},
-			onTap() {
-				if (!this.maskClick) return
-				this.close()
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-popup {
-		position: fixed;
-		/* #ifdef H5 */
-		top: var(--window-top);
-		/* #endif */
-		/* #ifndef H5 */
-		top: 0;
-		/* #endif */
-		bottom: 0;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-popup__mask {
-		position: absolute;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		background-color: $uni-bg-color-mask;
-		opacity: 0;
-	}
-
-	.mask-ani {
-		transition-property: opacity;
-		transition-duration: 0.2s;
-	}
-
-	.uni-top-mask {
-		opacity: 1;
-	}
-
-	.uni-bottom-mask {
-		opacity: 1;
-	}
-
-	.uni-center-mask {
-		opacity: 1;
-	}
-
-	.uni-popup__wrapper {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: absolute;
-	}
-
-	.top {
-		top: 0;
-		left: 0;
-		right: 0;
-		transform: translateY(-500px);
-	}
-
-	.bottom {
-		bottom: 0;
-		left: 0;
-		right: 0;
-		transform: translateY(500px);
-	}
-
-	.center {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		bottom: 0;
-		left: 0;
-		right: 0;
-		top: 0;
-		justify-content: center;
-		align-items: center;
-		transform: scale(1.2);
-		opacity: 0;
-	}
-
-	.uni-popup__wrapper-box {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: relative;
-	}
-
-	.content-ani {
-		// transition: transform 0.3s;
-		transition-property: transform, opacity;
-		transition-duration: 0.2s;
-	}
-
-
-	.uni-top-content {
-		transform: translateY(0);
-	}
-
-	.uni-bottom-content {
-		transform: translateY(0);
-	}
-
-	.uni-center-content {
-		transform: scale(1);
-		opacity: 1;
-	}
-</style>

+ 0 - 282
components/uni-popup/uni-popup-share.vue

@@ -1,282 +0,0 @@
-<template>
-	<view>
-		<uni-popup-ori ref="showshare" type="bottom">
-			<view class="uni-share">
-				<text class="uni-share-title">分享到</text>
-				<view class="uni-share-content">
-					<view v-for="(item, index) in bottomData" :key="index" class="uni-share-content-box" @click="shareTo(item.name)">
-						<view class="uni-share-content-image"><image :src="item.icon" class="content-image" mode="widthFix" /></view>
-						<text class="uni-share-content-text">{{ item.text }}</text>
-					</view>
-				</view>
-				<text class="uni-share-btn" @click="cancel()">取消分享</text>
-			</view>
-		</uni-popup-ori>
-		<uni-popup-ori ref="showPast" type="center" class="popupPast">
-			<view class="backPop">
-				<view class="popPast">
-					<view class="popTitle">口令已复制</view>
-					<view class="popContent">
-						<view>{{ describe }}</view>
-					</view>
-					<view class="popBtn" @click="goWhere(1)" v-if="popType == 'wx'">
-						<!-- <image src="../../static/spend/wxin.png" mode="widthFix"></image> -->
-						<view>去微信粘贴给好友</view>
-					</view>
-					<view class="popBtn" @click="goWhere(2)" v-if="popType == 'timeline'">
-						<!-- <image src="../../static/spend/wechat.png" mode="widthFix"></image> -->
-						<view>粘贴到朋友圈</view>
-					</view>
-				</view>
-				<icon type="cancel" size="26" color="white" style="margin-top: 40rpx;" @click="cancelPo" />
-			</view>
-		</uni-popup-ori>
-	</view>
-</template>
-
-<script>
-import uniPopupOri from '@/components/uni-popup/uni-popup-ori.vue';
-import { mapState, mapMutations } from 'vuex';
-import { getActionPage } from '@/utils/loginUtils.js';
-export default {
-	name: 'SharePopup',
-	components: {
-		uniPopupOri
-	},
-	props: ['opt', 'type','option'],
-	data() {
-		return {
-			describe: '',
-			shareoption: '',
-			bottomData: [
-				{
-					text: '微信',
-					icon: '../../static/spend/wxin.png',
-					name: 'wx'
-				},
-				{
-					text: '朋友圈',
-					icon: '../../static/spend/wechat.png',
-					name: 'timeline'
-				}
-			],
-			popType: '',
-			uid: ''
-		};
-	},
-	computed: {
-		...mapState(['userInfo', 'baseURL'])
-	},
-	mounted() {},
-	methods: {
-		loadData() {
-			try {
-				let prePage = getActionPage();
-				var path = prePage.route;
-				this.uid = this.userInfo.uid;
-				//获取object转化成
-				var parm = '';
-				var i = 0;
-				var option = this.option; //其他页面传值
-				console.log(option,'option')
-				if(this.type == 4){
-					parm = parm + '?' + 'promo_code=' + option;
-				}else{
-					for (let item in option) {
-						//拼接参数
-						if (i == 0) {
-							parm = '?' + item + '=' + option[item];
-						} else {
-							parm = parm + '&' + item + '=' + option[item];
-						}
-						i++;
-					}
-				}
-				if(this.type == 4){
-					var url = 'pages/index/index' + parm;
-				}else{
-					var url = path + parm;
-				}
-				console.log(path,'path')
-				console.log(parm,'parm')
-				//用后台加密
-				//第一个参数是判断是不是我们的链接
-				//第二个参数是访问地址
-				//第三个参数是,类型,type:0商品,type=1拼团,type=2邀请注册,type=3邀请好友参团,type=4邀请好友助力
-				//第四个参数是share的id
-				console.log(option,'option')
-				if(this.type == 4){
-					this.describe = this.baseURL + '@' + url + '@' + this.type + '@' + this.uid + '@复制这段话进入美美赚,自动打开页面';
-				}else{
-					this.describe = this.baseURL + '@' + url + '@' + this.type + '@' + this.uid + '@复制这段话进入美美赚,自动打开页面';
-				}
-				console.log(this.describe);
-				let obj = this;
-				// #ifndef H5
-				uni.setClipboardData({
-					data: this.describe,
-					  success: function () {
-					        uni.hideToast();
-					    }
-				});
-				// #endif
-			} catch (e) {
-				console.log(e);
-				//TODO handle the exception
-			}
-		},
-		goWhere(type) {
-			this.$api.msg('复制成功');
-		},
-		cancelPo() {
-			this.$nextTick(() => {
-				this.$refs['showPast'].close();
-			});
-		},
-		shareTo(name) {
-			this.popType = name;
-			this.$nextTick(() => {
-				this.$refs.showPast.open();
-				this.$refs['showshare'].close();
-			});
-		},
-		cancel() {
-			this.$nextTick(() => {
-				this.$refs['showshare'].close();
-			});
-		},
-		open() {
-			this.$nextTick(() => {
-				this.$refs['showshare'].open();
-			});
-		}
-	}
-};
-</script>
-<style lang="scss" scoped>
-.backPop {
-	padding: 0rpx 25rpx;
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	align-items: center;
-}
-.popupPast {
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	align-items: center;
-	text-align: center;
-}
-.popPast {
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	padding: 40rpx 30rpx;
-	width: 90%;
-	background-color: white;
-	border-radius: 18rpx;
-	align-items: center;
-	.popTitle {
-		color: #2f2f2f;
-		font-size: 32rpx;
-		font-weight: bold;
-		margin-bottom: 40rpx;
-	}
-	.popContent {
-		background-color: #f4f4f4;
-		padding: 30rpx 24rpx;
-		border-radius: 16rpx;
-		view {
-			font-size: 24rpx;
-			color: #939393;
-		}
-		margin-bottom: 40rpx;
-	}
-	.popBtn {
-		display: flex;
-		align-items: center;
-		padding: 20rpx 40rpx;
-		background-color: #04be02;
-		border-radius: 60rpx;
-		image {
-			width: 36rpx;
-		}
-		view {
-			color: white;
-			font-size: 36rpx;
-			margin-left: 10rpx;
-		}
-	}
-}
-/* 底部分享 */
-.uni-share {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	flex-direction: column;
-	/* #endif */
-	background-color: #fff;
-}
-
-.uni-share-title {
-	line-height: 60rpx;
-	font-size: 24rpx;
-	padding: 15rpx 0;
-	text-align: center;
-}
-
-.uni-share-content {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-	flex-wrap: wrap;
-	justify-content: center;
-	padding: 15px;
-}
-
-.uni-share-content-box {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: column;
-	align-items: center;
-	width: 200rpx;
-}
-
-.uni-share-content-image {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-	justify-content: center;
-	align-items: center;
-	width: 60rpx;
-	height: 60rpx;
-	overflow: hidden;
-	border-radius: 10rpx;
-}
-
-.content-image {
-	width: 60rpx;
-	height: 60rpx;
-}
-
-.uni-share-content-text {
-	font-size: 26rpx;
-	color: #333;
-	padding-top: 5px;
-	padding-bottom: 10px;
-}
-
-.uni-share-btn {
-	height: 90rpx;
-	line-height: 90rpx;
-	font-size: 14px;
-	border-top-color: #f5f5f5;
-	border-top-width: 1px;
-	border-top-style: solid;
-	text-align: center;
-	color: #666;
-}
-</style>

+ 0 - 263
components/uni-popup/uni-popup.vue

@@ -1,263 +0,0 @@
-<template>
-	<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
-		<uni-transition :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans" @click="onTap" />
-		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
-			<view class="uni-popup__wrapper-box" @click.stop="clear">
-				<slot />
-			</view>
-		</uni-transition>
-	</view>
-</template>
-
-<script>
-	import uniTransition from '../uni-transition/uni-transition.vue'
-
-	/**
-	 * PopUp 弹出层
-	 * @description 弹出层组件,为了解决遮罩弹层的问题
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} type = [top|center|bottom] 弹出方式
-	 * 	@value top 顶部弹出
-	 * 	@value center 中间弹出
-	 * 	@value bottom 底部弹出
-	 * @property {Boolean} animation = [ture|false] 是否开启动画
-	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
-	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
-	 */
-
-	export default {
-		name: 'UniPopup',
-		components: {
-			uniTransition
-		},
-		props: {
-			// 开启动画
-			animation: {
-				type: Boolean,
-				default: true
-			},
-			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
-			type: {
-				type: String,
-				default: 'center'
-			},
-			// maskClick
-			maskClick: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				duration: 300,
-				ani: [],
-				showPopup: false,
-				showTrans: false,
-				maskClass: {
-					'position': 'fixed',
-					'bottom': 0,
-					'top': 0,
-					'left': 0,
-					'right': 0,
-					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
-				},
-				transClass: {
-					'position': 'fixed',
-					'left': 0,
-					'right': 0,
-				}
-			}
-		},
-		watch: {
-			type: {
-				handler: function(newVal) {
-					switch (this.type) {
-						case 'top':
-							this.ani = ['slide-top']
-							this.transClass = {
-								'position': 'fixed',
-								'left': 0,
-								'right': 0,
-							}
-							break
-						case 'bottom':
-							this.ani = ['slide-bottom']
-							this.transClass = {
-								'position': 'fixed',
-								'left': 0,
-								'right': 0,
-								'bottom': 0
-							}
-							break
-						case 'center':
-							this.ani = ['zoom-out', 'fade']
-							this.transClass = {
-								'position': 'fixed',
-								/* #ifndef APP-NVUE */
-								'display': 'flex',
-								'flexDirection': 'column',
-								/* #endif */
-								'bottom': 0,
-								'left': 0,
-								'right': 0,
-								'top': 0,
-								'justifyContent': 'center',
-								'alignItems': 'center'
-							}
-
-							break
-					}
-				},
-				immediate: true
-			}
-		},
-		created() {
-			if (this.animation) {
-				this.duration = 300
-			} else {
-				this.duration = 0
-			}
-		},
-		methods: {
-			clear(e) {
-				// TODO nvue 取消冒泡
-				e.stopPropagation()
-			},
-			open() {
-				this.showPopup = true
-				this.$nextTick(() => {
-					clearTimeout(this.timer)
-					this.timer = setTimeout(() => {
-						this.showTrans = true
-					}, 50);
-				})
-				this.$emit('change', {
-					show: true
-				})
-			},
-			close(type) {
-				this.showTrans = false
-				this.$nextTick(() => {
-					clearTimeout(this.timer)
-					this.timer = setTimeout(() => {
-						this.$emit('change', {
-							show: false
-						})
-						this.showPopup = false
-					}, 300)
-				})
-			},
-			onTap() {
-				if (!this.maskClick) return
-				this.close()
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-popup {
-		position: fixed;
-		/* #ifdef H5 */
-		top: var(--window-top);
-		/* #endif */
-		/* #ifndef H5 */
-		top: 0;
-		/* #endif */
-		bottom: 0;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-popup__mask {
-		position: absolute;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		background-color: $uni-bg-color-mask;
-		opacity: 0;
-	}
-
-	.mask-ani {
-		transition-property: opacity;
-		transition-duration: 0.2s;
-	}
-
-	.uni-top-mask {
-		opacity: 1;
-	}
-
-	.uni-bottom-mask {
-		opacity: 1;
-	}
-
-	.uni-center-mask {
-		opacity: 1;
-	}
-
-	.uni-popup__wrapper {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: absolute;
-	}
-
-	.top {
-		top: 0;
-		left: 0;
-		right: 0;
-		transform: translateY(-500px);
-	}
-
-	.bottom {
-		bottom: 0;
-		left: 0;
-		right: 0;
-		transform: translateY(500px);
-	}
-
-	.center {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		bottom: 0;
-		left: 0;
-		right: 0;
-		top: 0;
-		justify-content: center;
-		align-items: center;
-		transform: scale(1.2);
-		opacity: 0;
-	}
-
-	.uni-popup__wrapper-box {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: relative;
-	}
-
-	.content-ani {
-		// transition: transform 0.3s;
-		transition-property: transform, opacity;
-		transition-duration: 0.2s;
-	}
-
-
-	.uni-top-content {
-		transform: translateY(0);
-	}
-
-	.uni-bottom-content {
-		transform: translateY(0);
-	}
-
-	.uni-center-content {
-		transform: scale(1);
-		opacity: 1;
-	}
-</style>

+ 0 - 141
components/uni-rate/uni-rate.vue

@@ -1,141 +0,0 @@
-<template>
-	<view class="uni-rate">
-		<view :key="index" :style="{ marginLeft: margin + 'px' }" @click="_onClick(index)" class="uni-rate__icon" v-for="(star, index) in stars">
-			<uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
-			<!-- #ifdef APP-NVUE -->
-			<view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
-				<uni-icons style="text-align: left;" :color="activeColor" :size="size" type="star-filled" />
-			</view>
-			<!-- #endif -->
-			<!-- #ifndef APP-NVUE -->
-			<view :style="{ width: star.activeWitch,top:-size/2+'px' }" class="uni-rate__icon-on">
-				<uni-icons :color="activeColor" :size="size" type="star-filled" />
-			</view>
-			<!-- #endif -->
-		</view>
-	</view>
-</template>
-
-<script>
-	import uniIcons from "../uni-icons/uni-icons.vue";
-	export default {
-		name: "UniRate",
-		components: {
-			uniIcons
-		},
-		props: {
-			isFill: {
-				// 星星的类型,是否镂空
-				type: [Boolean, String],
-				default: true
-			},
-			color: {
-				// 星星的颜色
-				type: String,
-				default: "#ececec"
-			},
-			activeColor: {
-				// 星星选中状态颜色
-				type: String,
-				default: "#ffca3e"
-			},
-			size: {
-				// 星星的大小
-				type: [Number, String],
-				default: 24
-			},
-			value: {
-				// 当前评分
-				type: [Number, String],
-				default: 0
-			},
-			max: {
-				// 最大评分
-				type: [Number, String],
-				default: 5
-			},
-			margin: {
-				// 星星的间距
-				type: [Number, String],
-				default: 0
-			},
-			disabled: {
-				// 是否可点击
-				type: [Boolean, String],
-				default: false
-			}
-		},
-		data() {
-			return {
-				valueSync: ""
-			};
-		},
-		computed: {
-			stars() {
-				const value = this.valueSync ? this.valueSync : 0;
-				const starList = [];
-				const floorValue = Math.floor(value);
-				const ceilValue = Math.ceil(value);
-				// console.log("ceilValue: " + ceilValue);
-				// console.log("floorValue: " + floorValue);
-				for (let i = 0; i < this.max; i++) {
-					if (floorValue > i) {
-						starList.push({
-							activeWitch: "100%"
-						});
-					} else if (ceilValue - 1 === i) {
-						starList.push({
-							activeWitch: (value - floorValue) * 100 + "%"
-						});
-					} else {
-						starList.push({
-							activeWitch: "0"
-						});
-					}
-				}
-				console.log("starList[4]: " + starList[4].activeWitch);
-				return starList;
-			}
-		},
-		created() {
-			this.valueSync = Number(this.value);
-		},
-		methods: {
-			_onClick(index) {
-				if (this.disabled) {
-					return;
-				}
-				this.valueSync = index + 1;
-				this.$emit("change", {
-					value: this.valueSync
-				});
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	.uni-rate {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		line-height: 0;
-		font-size: 0;
-		flex-direction: row;
-	}
-
-	.uni-rate__icon {
-		position: relative;
-		line-height: 0;
-		font-size: 0;
-	}
-
-	.uni-rate__icon-on {
-		overflow: hidden;
-		position: absolute;
-		top: 0;
-		left: 0;
-		line-height: 1;
-		text-align: left;
-	}
-</style>

+ 0 - 244
components/uni-steps/uni-steps.vue

@@ -1,244 +0,0 @@
-<template>
-	<view class="uni-steps">
-		<view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
-			<view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
-				<view v-for="(item,index) in options" :key="index" :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
-					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.status}}</text>
-					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.context}}</text>
-					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.time}}</text>
-				</view>
-			</view>
-			<view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
-				<view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" v-for="(item,index) in options"
-				 :key="index">
-					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']"
-					 :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"></view>
-					<view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" v-if="index === active">
-						<uni-icons :color="activeColor" type="checkbox-filled" size="14"></uni-icons>
-					</view>
-					<view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" v-else :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
-					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
-					 :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"></view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import uniIcons from '../uni-icons/uni-icons.vue'
-	export default {
-		name: 'UniSteps',
-		components: {
-			uniIcons
-		},
-		props: {
-			direction: {
-				// 排列方向 row column
-				type: String,
-				default: 'row'
-			},
-			activeColor: {
-				// 激活状态颜色
-				type: String,
-				default: '#1aad19'
-			},
-			deactiveColor: {
-				// 未激活状态颜色
-				type: String,
-				default: '#999999'
-			},
-			active: {
-				// 当前步骤
-				type: Number,
-				default: 0
-			},
-			options: {
-				type: Array,
-				default () {
-					return []
-				}
-			} // 数据
-		},
-		data() {
-			return {}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.uni-steps {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		flex: 1;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-steps__row {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-steps__column {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row-reverse;
-	}
-
-	.uni-steps__row-text-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-steps__column-text-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		flex: 1;
-	}
-
-	.uni-steps__row-text {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: column;
-	}
-
-	.uni-steps__column-text {
-		padding: 6px 0px;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-		border-bottom-color: $uni-border-color;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-steps__row-title {
-		font-size: $uni-font-size-base;
-		line-height: 16px;
-		text-align: center;
-	}
-
-	.uni-steps__column-title {
-		font-size: $uni-font-size-base;
-		text-align: left;
-		line-height: 18px;
-	}
-
-	.uni-steps__row-desc {
-		font-size: 12px;
-		line-height: 14px;
-		text-align: center;
-	}
-
-	.uni-steps__column-desc {
-		font-size: $uni-font-size-sm;
-		text-align: left;
-		line-height: 18px;
-	}
-
-	.uni-steps__row-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-steps__column-container {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		width: 30px;
-		flex-direction: column;
-	}
-
-	.uni-steps__row-line-item {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		flex-direction: row;
-		flex: 1;
-		height: 14px;
-		line-height: 14px;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-steps__column-line-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		flex: 1;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-steps__row-line {
-		flex: 1;
-		height: 1px;
-		background-color: $uni-text-color-grey;
-	}
-
-	.uni-steps__column-line {
-		width: 1px;
-		background-color: $uni-text-color-grey;
-	}
-
-	.uni-steps__row-line--after {
-		transform: translateX(1px);
-	}
-
-	.uni-steps__column-line--after {
-		flex: 1;
-		transform: translate(0px, 1px);
-	}
-
-	.uni-steps__row-line--before {
-		transform: translateX(-1px);
-	}
-
-	.uni-steps__column-line--before {
-		height: 6px;
-		transform: translate(0px, -1px);
-	}
-
-	.uni-steps__row-circle {
-		width: 5px;
-		height: 5px;
-		border-radius: 100px;
-		background-color: $uni-text-color-grey;
-		margin: 0px 3px;
-	}
-
-	.uni-steps__column-circle {
-		width: 5px;
-		height: 5px;
-		border-radius: 100px;
-		background-color: $uni-text-color-grey;
-		margin: 4px 0px 5px 0px;
-	}
-
-	.uni-steps__row-check {
-		margin: 0px 6px;
-	}
-
-	.uni-steps__column-check {
-		height: 14px;
-		line-height: 14px;
-		margin: 2px 0px;
-	}
-</style>

+ 0 - 279
components/uni-transition/uni-transition.vue

@@ -1,279 +0,0 @@
-<template>
-	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
-	 @click="change">
-		 <slot></slot>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const animation = uni.requireNativePlugin('animation');
-	// #endif
-	/**
-	 * Transition 过渡动画
-	 * @description 简单过渡动画组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
-	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
-     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
-     *  @value fade 渐隐渐出过渡
-     *  @value slide-top 由上至下过渡
-     *  @value slide-right 由右至左过渡
-     *  @value slide-bottom 由下至上过渡
-     *  @value slide-left 由左至右过渡
-     *  @value zoom-in 由小到大过渡
-     *  @value zoom-out 由大到小过渡
-	 * @property {Number} duration 过渡动画持续时间
-	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
-	 */
-	export default {
-		name: 'uniTransition',
-		props: {
-			show: {
-				type: Boolean,
-				default: false
-			},
-			modeClass: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			duration: {
-				type: Number,
-				default: 300
-			},
-			styles: {
-				type: Object,
-				default () {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {
-				isShow: false,
-				transform: '',
-				ani: { in: '',
-					active: ''
-				}
-			};
-		},
-		watch: {
-			show: {
-				handler(newVal) {
-					if (newVal) {
-						this.open()
-					} else {
-						this.close()
-					}
-				},
-				immediate: true
-			}
-		},
-		computed: {
-			stylesObject() {
-				let styles = {
-					...this.styles,
-					'transition-duration': this.duration / 1000 + 's'
-				}
-				let transfrom = ''
-				for (let i in styles) {
-					let line = this.toLine(i)
-					transfrom += line + ':' + styles[i] + ';'
-				}
-				return transfrom
-			}
-		},
-		created() {
-			// this.timer = null
-			// this.nextTick = (time = 50) => new Promise(resolve => {
-			// 	clearTimeout(this.timer)
-			// 	this.timer = setTimeout(resolve, time)
-			// 	return this.timer
-			// });
-		},
-		methods: {
-			change() {
-				this.$emit('click', {
-					detail: this.isShow
-				})
-			},
-			open() {
-				clearTimeout(this.timer)
-				this.isShow = true
-				this.transform = ''
-				this.ani.in = ''
-				for (let i in this.getTranfrom(false)) {
-					if (i === 'opacity') {
-						this.ani.in = 'fade-in'
-					} else {
-						this.transform += `${this.getTranfrom(false)[i]} `
-					}
-				}
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this._animation(true)
-					}, 50)
-				})
-
-			},
-			close(type) {
-				clearTimeout(this.timer)
-				this._animation(false)
-			},
-			_animation(type) {
-				let styles = this.getTranfrom(type)
-				// #ifdef APP-NVUE
-				if(!this.$refs['ani']) return
-				animation.transition(this.$refs['ani'].ref, {
-					styles,
-					duration: this.duration, //ms
-					timingFunction: 'ease',
-					needLayout: false,
-					delay: 0 //ms
-				}, () => {
-					if (!type) {
-						this.isShow = false
-					}
-					this.$emit('change', {
-						detail: this.isShow
-					})
-				})
-				// #endif
-				// #ifndef APP-NVUE
-				this.transform = ''
-				for (let i in styles) {
-					if (i === 'opacity') {
-						this.ani.in = `fade-${type?'out':'in'}`
-					} else {
-						this.transform += `${styles[i]} `
-					}
-				}
-				this.timer = setTimeout(() => {
-					if (!type) {
-						this.isShow = false
-					}
-					this.$emit('change', {
-						detail: this.isShow
-					})
-
-				}, this.duration)
-				// #endif
-
-			},
-			getTranfrom(type) {
-				let styles = {
-					transform: ''
-				}
-				this.modeClass.forEach((mode) => {
-					switch (mode) {
-						case 'fade':
-							styles.opacity = type ? 1 : 0
-							break;
-						case 'slide-top':
-							styles.transform += `translateY(${type?'0':'-100%'}) `
-							break;
-						case 'slide-right':
-							styles.transform += `translateX(${type?'0':'100%'}) `
-							break;
-						case 'slide-bottom':
-							styles.transform += `translateY(${type?'0':'100%'}) `
-							break;
-						case 'slide-left':
-							styles.transform += `translateX(${type?'0':'-100%'}) `
-							break;
-						case 'zoom-in':
-							styles.transform += `scale(${type?1:0.8}) `
-							break;
-						case 'zoom-out':
-							styles.transform += `scale(${type?1:1.2}) `
-							break;
-					}
-				})
-				return styles
-			},
-			_modeClassArr(type) {
-				let mode = this.modeClass
-				if (typeof(mode) !== "string") {
-					let modestr = ''
-					mode.forEach((item) => {
-						modestr += (item + '-' + type + ',')
-					})
-					return modestr.substr(0, modestr.length - 1)
-				} else {
-					return mode + '-' + type
-				}
-			},
-			// getEl(el) {
-			// 	console.log(el || el.ref || null);
-			// 	return el || el.ref || null
-			// },
-			toLine(name) {
-				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
-			}
-		}
-	}
-</script>
-
-<style>
-	.uni-transition {
-		transition-timing-function: ease;
-		transition-duration: 0.3s;
-		transition-property: transform, opacity;
-	}
-
-	.fade-in {
-		opacity: 0;
-	}
-
-	.fade-active {
-		opacity: 1;
-	}
-
-	.slide-top-in {
-		/* transition-property: transform, opacity; */
-		transform: translateY(-100%);
-	}
-
-	.slide-top-active {
-		transform: translateY(0);
-		/* opacity: 1; */
-	}
-
-	.slide-right-in {
-		transform: translateX(100%);
-	}
-
-	.slide-right-active {
-		transform: translateX(0);
-	}
-
-	.slide-bottom-in {
-		transform: translateY(100%);
-	}
-
-	.slide-bottom-active {
-		transform: translateY(0);
-	}
-
-	.slide-left-in {
-		transform: translateX(-100%);
-	}
-
-	.slide-left-active {
-		transform: translateX(0);
-		opacity: 1;
-	}
-
-	.zoom-in-in {
-		transform: scale(0.8);
-	}
-
-	.zoom-out-active {
-		transform: scale(1);
-	}
-
-	.zoom-out-in {
-		transform: scale(1.2);
-	}
-</style>

+ 0 - 226
components/upload-images.vue

@@ -1,226 +0,0 @@
-<template>
-	<view class="upload-content">
-		<block v-for="(item, index) in imageList" :key="index">
-			<view class="upload-item">
-				<image class="upload-img" :src="item.filePath" mode="aspectFill" @click="previewImage(index)"></image>
-				<image class="upload-del-btn" 
-					@click="delImage(index)" 
-					src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNBODgzQjUwNDM5MTFFOUJDMjlGN0UwRTJGMjVCNjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNBODgzQjYwNDM5MTFFOUJDMjlGN0UwRTJGMjVCNjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGM0E4ODNCMzA0MzkxMUU5QkMyOUY3RTBFMkYyNUI2NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGM0E4ODNCNDA0MzkxMUU5QkMyOUY3RTBFMkYyNUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuYQTIAAAAHNSURBVHjazJgxasMwFIbjnsD4BDmCLxDQDZrNQ5bcILlBvXvpDRLIWmiHFkyH2t0LyVbwEkPpbE/eYlUCGYQax096UuIffkIgij7ryU/vyZuYy2e+Z56K70R8lsJcOfPn5AriMCvmZ2YKdMW8EQ/hRA9iEorwXlpZtObMRySQ6kysvrFWloHUEIcmUBuHUDLccmxQskErt7wyVLdy00tQ4Q2g5De2V9kNwWjffiNDA33f/42i6E13Qj5uNptlwJD+SyODuaqqqi/KVBTFOxSKA7VtW/NxSZI8AcbE2nuraZpvKgSBk6G4drsdBOwogz1CwAghH/JEl+BUKJ1VltPHHjoIAoeE4l53YFqb+RKcBSgqyqXhtxEKZwkKB3YOThYCqjPuCDoHZwGK3mGLtdPp5LmqTI1Dqe4p26EkNqA4iE6eg2z+iQ0okyQMATvYgLIIt9Y6knTyFBIudHqIq3BpmkL60VJ9O0sXZY8MBwSLtdNGEAQ/i8XiVXcz83EcEPDbuq/fzMdYWt+6GTmMsX2rh9q3TtsxNrzXhKt1rwg6rR1Dhdjqo7QMlWOvoWTF4imxQMRF7eaL8L5ohmwrLgDB8pCQc8DlcG7y538CDABJNGPqfaJgfgAAAABJRU5ErkJggg==" 
-					mode="scaleToFill">
-				</image>
-				<view class="upload-progress" v-if="item.progress < 100">{{item.progress}}%</view>
-			</view>
-		</block>
-		<view class="upload-add-btn" v-if="rduLength > 0" @click="chooseImage"></view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			imageList: []
-		};
-	},
-	props: {
-		url: {
-			type: String,
-			value: '' //上传接口地址
-		},
-		count: {
-			type: Number,
-			value: 4 //单次可选择的图片数量
-		},
-		length: {
-			type: Number,
-			value: 50 //可上传总数量
-		}
-	},
-	computed: {
-		rduLength(){
-			return this.length - this.imageList.length;
-		}
-	},
-	methods: {
-		//选择图片
-		chooseImage: function(){
-			uni.chooseImage({
-				count: this.rduLength < this.count ? this.rduLength : this.count, //最多可以选择的图片张数,默认9
-				sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
-				sourceType: ['album'], //album 从相册选图,camera 使用相机,默认二者都有
-				success: (res)=> {
-					const images = res.tempFilePaths;
-					this.uploadFiles(images);
-				}
-			});
-		},
-		//上传图片
-		async uploadFiles(images){
-			this.imageList.push({
-				filePath: images[0],
-				progress: 0
-			});
-			uni.showLoading({
-				title: '请稍后..',
-				mask: true,
-			})
-			try{
-				const uploadUrl = await this.uploadImage(images[0]);
-			}catch(err){
-				console.log(err);
-				return;
-			}
-			
-			if(uploadUrl !== false){
-				images.splice(0, 1);
-				this.imageList[this.imageList.length - 1].src = uploadUrl;
-
-				//判断是否需要继续上传
-				if(images.length > 0 && this.rduLength > 0){
-					this.uploadFiles(images);
-				}else{
-					uni.hideLoading();
-				}
-			}else{
-				//上传失败处理
-				this.imageList.pop();
-				uni.hideLoading();
-				uni.showToast({
-					title: '上传中出现问题,已终止上传',
-					icon: 'none',
-					mask: true,
-					duration: 2000
-				});
-			}
-		},
-		uploadImage: function(file){
-			return new Promise((resolve, reject)=> {
-				//发送给后端的附加参数
-				const formData = {
-					thumb_mode: 1,  
-				};
-				this.uploadTask = uni.uploadFile({
-					url: this.url, 
-					filePath: file,
-					name: 'file',
-					formData: formData,
-					success(uploadFileResult){
-						const uploadFileRes = JSON.parse(uploadFileResult.data) || {};
-						if(uploadFileRes.status === 1 && uploadFileRes.data){
-							resolve(uploadFileRes.data);
-						}else{
-							reject('接口返回错误');
-						}
-					}, 
-					fail(){
-						reject('网络链接错误');
-					}
-				});
-				//上传进度
-				this.uploadTask.onProgressUpdate((progressRes)=> {
-					this.imageList[this.imageList.length - 1].progress = progressRes.progress;
-				});
-			});
-		},
-		//删除图片
-		delImage: function(index){
-			uni.showModal({
-				content: '确定要放弃这张图片么?',
-				success: (confirmRes)=> {
-					if (confirmRes.confirm) {
-						this.imageList.splice(index, 1);
-					} 
-				}
-			});
-		},
-		//预览图片
-		previewImage: function(index){
-			const urls = [];
-			this.imageList.forEach((item)=> {
-				urls.push(item.filePath);
-			})
-			uni.previewImage({
-				current: urls[index],
-				urls: urls,
-				indicator: "number"
-			})
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-	.upload-content{
-		padding:24upx 0 0 28upx;
-		background-color: #fff;
-		overflow:hidden;
-	}
-	.upload-item{
-		position: relative;
-		float:left;
-		width:150upx;
-		height:150upx;
-		margin-right:30upx;
-		margin-bottom:30upx;
-		&:nth-child(4n){
-			margin-right:0;
-		}
-		.upload-img{
-			width:100%;
-			height:100%;
-			border-radius:8upx;
-		}
-		.upload-del-btn{
-			position: absolute;
-			right:-16upx;
-			top:-14upx;
-			width:36upx;
-			height:36upx;
-			border: 4upx solid #fff;
-			border-radius: 100px;
-		}
-		.upload-progress{
-			position: absolute;
-			left:0;
-			top:0;
-			display:flex;
-			align-items:center;
-			justify-content: center;
-			width:100%;
-			height:100%;
-			background-color: rgba(0,0,0,.4);
-			color:#fff;
-			font-size:24upx;
-			border-radius:8upx;
-		}
-	}
-	.upload-add-btn {
-		position: relative;
-		float:left;
-		width: 150upx;
-		height: 150upx;
-		z-index: 99;
-		border-radius:8upx;
-		background:#f9f9f9;
-		&:before,
-		&:after {
-			content: " ";
-			position: absolute;
-			top: 50%;
-			left: 50%;
-			-webkit-transform: translate(-50%, -50%);
-			transform: translate(-50%, -50%);
-			width: 4upx;
-			height: 60upx;
-			background-color: #d6d6d6;
-		}
-		&:after {
-			width: 60upx;
-			height: 4upx;
-		}
-		&:active {
-			background-color: #f7f7f7;
-		}
-	}
-
-</style>

+ 0 - 4914
components/wangding-pickerAddress/data.js

@@ -1,4914 +0,0 @@
-export default [
-  {
-    "name": "北京市",
-    "city": [
-      {
-        "name": "北京市",
-        "area": [
-          "东城区",
-          "西城区",
-          "崇文区",
-          "宣武区",
-          "朝阳区",
-          "丰台区",
-          "石景山区",
-          "海淀区",
-          "门头沟区",
-          "房山区",
-          "通州区",
-          "顺义区",
-          "昌平区",
-          "大兴区",
-          "平谷区",
-          "怀柔区",
-          "密云县",
-          "延庆县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "天津市",
-    "city": [
-      {
-        "name": "天津市",
-        "area": [
-          "和平区",
-          "河东区",
-          "河西区",
-          "南开区",
-          "河北区",
-          "红桥区",
-          "塘沽区",
-          "汉沽区",
-          "大港区",
-          "东丽区",
-          "西青区",
-          "津南区",
-          "北辰区",
-          "武清区",
-          "宝坻区",
-          "宁河县",
-          "静海县",
-          "蓟  县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "河北省",
-    "city": [
-      {
-        "name": "石家庄市",
-        "area": [
-          "长安区",
-          "桥东区",
-          "桥西区",
-          "新华区",
-          "郊  区",
-          "井陉矿区",
-          "井陉县",
-          "正定县",
-          "栾城县",
-          "行唐县",
-          "灵寿县",
-          "高邑县",
-          "深泽县",
-          "赞皇县",
-          "无极县",
-          "平山县",
-          "元氏县",
-          "赵  县",
-          "辛集市",
-          "藁",
-          "晋州市",
-          "新乐市",
-          "鹿泉市"
-        ]
-      },
-      {
-        "name": "唐山市",
-        "area": [
-          "路南区",
-          "路北区",
-          "古冶区",
-          "开平区",
-          "新  区",
-          "丰润县",
-          "滦  县",
-          "滦南县",
-          "乐亭县",
-          "迁西县",
-          "玉田县",
-          "唐海县",
-          "遵化市",
-          "丰南市",
-          "迁安市"
-        ]
-      },
-      {
-        "name": "秦皇岛市",
-        "area": [
-          "海港区",
-          "山海关区",
-          "北戴河区",
-          "青龙满族自治县",
-          "昌黎县",
-          "抚宁县",
-          "卢龙县"
-        ]
-      },
-      {
-        "name": "邯郸市",
-        "area": [
-          "邯山区",
-          "丛台区",
-          "复兴区",
-          "峰峰矿区",
-          "邯郸县",
-          "临漳县",
-          "成安县",
-          "大名县",
-          "涉  县",
-          "磁  县",
-          "肥乡县",
-          "永年县",
-          "邱  县",
-          "鸡泽县",
-          "广平县",
-          "馆陶县",
-          "魏  县",
-          "曲周县",
-          "武安市"
-        ]
-      },
-      {
-        "name": "邢台市",
-        "area": [
-          "桥东区",
-          "桥西区",
-          "邢台县",
-          "临城县",
-          "内丘县",
-          "柏乡县",
-          "隆尧县",
-          "任  县",
-          "南和县",
-          "宁晋县",
-          "巨鹿县",
-          "新河县",
-          "广宗县",
-          "平乡县",
-          "威  县",
-          "清河县",
-          "临西县",
-          "南宫市",
-          "沙河市"
-        ]
-      },
-      {
-        "name": "保定市",
-        "area": [
-          "新市区",
-          "北市区",
-          "南市区",
-          "满城县",
-          "清苑县",
-          "涞水县",
-          "阜平县",
-          "徐水县",
-          "定兴县",
-          "唐  县",
-          "高阳县",
-          "容城县",
-          "涞源县",
-          "望都县",
-          "安新县",
-          "易  县",
-          "曲阳县",
-          "蠡  县",
-          "顺平县",
-          "博野",
-          "雄县",
-          "涿州市",
-          "定州市",
-          "安国市",
-          "高碑店市"
-        ]
-      },
-      {
-        "name": "张家口",
-        "area": [
-          "桥东区",
-          "桥西区",
-          "宣化区",
-          "下花园区",
-          "宣化县",
-          "张北县",
-          "康保县",
-          "沽源县",
-          "尚义县",
-          "蔚  县",
-          "阳原县",
-          "怀安县",
-          "万全县",
-          "怀来县",
-          "涿鹿县",
-          "赤城县",
-          "崇礼县"
-        ]
-      },
-      {
-        "name": "承德市",
-        "area": [
-          "双桥区",
-          "双滦区",
-          "鹰手营子矿区",
-          "承德县",
-          "兴隆县",
-          "平泉县",
-          "滦平县",
-          "隆化县",
-          "丰宁满族自治县",
-          "宽城满族自治县",
-          "围场满族蒙古族自治县"
-        ]
-      },
-      {
-        "name": "沧州市",
-        "area": [
-          "新华区",
-          "运河区",
-          "沧  县",
-          "青  县",
-          "东光县",
-          "海兴县",
-          "盐山县",
-          "肃宁县",
-          "南皮县",
-          "吴桥县",
-          "献  县",
-          "孟村回族自治县",
-          "泊头市",
-          "任丘市",
-          "黄骅市",
-          "河间市"
-        ]
-      },
-      {
-        "name": "廊坊市",
-        "area": [
-          "安次区",
-          "固安县",
-          "永清县",
-          "香河县",
-          "大城县",
-          "文安县",
-          "大厂回族自治县",
-          "霸州市",
-          "三河市"
-        ]
-      },
-      {
-        "name": "衡水市",
-        "area": [
-          "桃城区",
-          "枣强县",
-          "武邑县",
-          "武强县",
-          "饶阳县",
-          "安平县",
-          "故城县",
-          "景  县",
-          "阜城县",
-          "冀州市",
-          "深州市"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "山西省",
-    "city": [
-      {
-        "name": "太原市",
-        "area": [
-          "小店区",
-          "迎泽区",
-          "杏花岭区",
-          "尖草坪区",
-          "万柏林区",
-          "晋源区",
-          "清徐县",
-          "阳曲县",
-          "娄烦县",
-          "古交市"
-        ]
-      },
-      {
-        "name": "大同市",
-        "area": [
-          "城  区",
-          "矿  区",
-          "南郊区",
-          "新荣区",
-          "阳高县",
-          "天镇县",
-          "广灵县",
-          "灵丘县",
-          "浑源县",
-          "左云县",
-          "大同县"
-        ]
-      },
-      {
-        "name": "阳泉市",
-        "area": [
-          "城  区",
-          "矿  区",
-          "郊  区",
-          "平定县",
-          "盂  县"
-        ]
-      },
-      {
-        "name": "长治市",
-        "area": [
-          "城  区",
-          "郊  区",
-          "长治县",
-          "襄垣县",
-          "屯留县",
-          "平顺县",
-          "黎城县",
-          "壶关县",
-          "长子县",
-          "武乡县",
-          "沁  县",
-          "沁源县",
-          "潞城市"
-        ]
-      },
-      {
-        "name": "晋城市",
-        "area": [
-          "城  区",
-          "沁水县",
-          "阳城县",
-          "陵川县",
-          "泽州县",
-          "高平市"
-        ]
-      },
-      {
-        "name": "朔州市",
-        "area": [
-          "朔城区",
-          "平鲁区",
-          "山阴县",
-          "应  县",
-          "右玉县",
-          "怀仁县"
-        ]
-      },
-      {
-        "name": "忻州市",
-        "area": [
-          "忻府区",
-          "原平市",
-          "定襄县",
-          "五台县",
-          "代  县",
-          "繁峙县",
-          "宁武县",
-          "静乐县",
-          "神池县",
-          "五寨县",
-          "岢岚县",
-          "河曲县",
-          "保德县",
-          "偏关县"
-        ]
-      },
-      {
-        "name": "吕梁市",
-        "area": [
-          "离石区",
-          "孝义市",
-          "汾阳市",
-          "文水县",
-          "交城县",
-          "兴  县",
-          "临  县",
-          "柳林县",
-          "石楼县",
-          "岚  县",
-          "方山县",
-          "中阳县",
-          "交口县"
-        ]
-      },
-      {
-        "name": "晋中市",
-        "area": [
-          "榆次市",
-          "介休市",
-          "榆社县",
-          "左权县",
-          "和顺县",
-          "昔阳县",
-          "寿阳县",
-          "太谷县",
-          "祁  县",
-          "平遥县",
-          "灵石县"
-        ]
-      },
-      {
-        "name": "临汾市",
-        "area": [
-          "临汾市",
-          "侯马市",
-          "霍州市",
-          "曲沃县",
-          "翼城县",
-          "襄汾县",
-          "洪洞县",
-          "古  县",
-          "安泽县",
-          "浮山县",
-          "吉  县",
-          "乡宁县",
-          "蒲  县",
-          "大宁县",
-          "永和县",
-          "隰  县",
-          "汾西县"
-        ]
-      },
-      {
-        "name": "运城市",
-        "area": [
-          "运城市",
-          "永济市",
-          "河津市",
-          "芮城县",
-          "临猗县",
-          "万荣县",
-          "新绛县",
-          "稷山县",
-          "闻喜县",
-          "夏  县",
-          "绛  县",
-          "平陆县",
-          "垣曲县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "内蒙古",
-    "city": [
-      {
-        "name": "呼和浩特市",
-        "area": [
-          "新城区",
-          "回民区",
-          "玉泉区",
-          "郊  区",
-          "土默特左旗",
-          "托克托县",
-          "和林格尔县",
-          "清水河县",
-          "武川县"
-        ]
-      },
-      {
-        "name": "包头市",
-        "area": [
-          "东河区",
-          "昆都伦区",
-          "青山区",
-          "石拐矿区",
-          "白云矿区",
-          "郊  区",
-          "土默特右旗",
-          "固阳县",
-          "达尔罕茂明安联合旗"
-        ]
-      },
-      {
-        "name": "乌海市",
-        "area": [
-          "海勃湾区",
-          "海南区",
-          "乌达区"
-        ]
-      },
-      {
-        "name": "赤峰市",
-        "area": [
-          "红山区",
-          "元宝山区",
-          "松山区",
-          "阿鲁科尔沁旗",
-          "巴林左旗",
-          "巴林右旗",
-          "林西县",
-          "克什克腾旗",
-          "翁牛特旗",
-          "喀喇沁旗",
-          "宁城县",
-          "敖汉旗"
-        ]
-      },
-      {
-        "name": "呼伦贝尔市",
-        "area": [
-          "海拉尔市",
-          "满洲里市",
-          "扎兰屯市",
-          "牙克石市",
-          "根河市",
-          "额尔古纳市",
-          "阿荣旗",
-          "莫力达瓦达斡尔族自治旗",
-          "鄂伦春自治旗",
-          "鄂温克族自治旗",
-          "新巴尔虎右旗",
-          "新巴尔虎左旗",
-          "陈巴尔虎旗"
-        ]
-      },
-      {
-        "name": "兴安盟",
-        "area": [
-          "乌兰浩特市",
-          "阿尔山市",
-          "科尔沁右翼前旗",
-          "科尔沁右翼中旗",
-          "扎赉特旗",
-          "突泉县"
-        ]
-      },
-      {
-        "name": "通辽市",
-        "area": [
-          "科尔沁区",
-          "霍林郭勒市",
-          "科尔沁左翼中旗",
-          "科尔沁左翼后旗",
-          "开鲁县",
-          "库伦旗",
-          "奈曼旗",
-          "扎鲁特旗"
-        ]
-      },
-      {
-        "name": "锡林郭勒盟",
-        "area": [
-          "二连浩特市",
-          "锡林浩特市",
-          "阿巴嘎旗",
-          "苏尼特左旗",
-          "苏尼特右旗",
-          "东乌珠穆沁旗",
-          "西乌珠穆沁旗",
-          "太仆寺旗",
-          "镶黄旗",
-          "正镶白旗",
-          "正蓝旗",
-          "多伦县"
-        ]
-      },
-      {
-        "name": "乌兰察布盟",
-        "area": [
-          "集宁市",
-          "丰镇市",
-          "卓资县",
-          "化德县",
-          "商都县",
-          "兴和县",
-          "凉城县",
-          "察哈尔右翼前旗",
-          "察哈尔右翼中旗",
-          "察哈尔右翼后旗",
-          "四子王旗"
-        ]
-      },
-      {
-        "name": "伊克昭盟",
-        "area": [
-          "东胜市",
-          "达拉特旗",
-          "准格尔旗",
-          "鄂托克前旗",
-          "鄂托克旗",
-          "杭锦旗",
-          "乌审旗",
-          "伊金霍洛旗"
-        ]
-      },
-      {
-        "name": "巴彦淖尔盟",
-        "area": [
-          "临河市",
-          "五原县",
-          "磴口县",
-          "乌拉特前旗",
-          "乌拉特中旗",
-          "乌拉特后旗",
-          "杭锦后旗"
-        ]
-      },
-      {
-        "name": "阿拉善盟",
-        "area": [
-          "阿拉善左旗",
-          "阿拉善右旗",
-          "额济纳旗"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "辽宁省",
-    "city": [
-      {
-        "name": "沈阳市",
-        "area": [
-          "沈河区",
-          "皇姑区",
-          "和平区",
-          "大东区",
-          "铁西区",
-          "苏家屯区",
-          "东陵区",
-          "于洪区",
-          "新民市",
-          "法库县",
-          "辽中县",
-          "康平县",
-          "新城子区"
-        ]
-      },
-      {
-        "name": "大连市",
-        "area": [
-          "西岗区",
-          "中山区",
-          "沙河口区",
-          "甘井子区",
-          "旅顺口区",
-          "金州区",
-          "瓦房店市",
-          "普兰店市",
-          "庄河市",
-          "长海县"
-        ]
-      },
-      {
-        "name": "鞍山市",
-        "area": [
-          "铁东区",
-          "铁西区",
-          "立山区",
-          "千山区",
-          "海城市",
-          "台安县",
-          "岫岩满族自治县"
-        ]
-      },
-      {
-        "name": "抚顺市",
-        "area": [
-          "顺城区",
-          "新抚区",
-          "东洲区",
-          "望花区",
-          "抚顺县",
-          "清原满族自治县",
-          "新宾满族自治县"
-        ]
-      },
-      {
-        "name": "本溪市",
-        "area": [
-          "平山区",
-          "明山区",
-          "溪湖区",
-          "南芬区",
-          "本溪满族自治县",
-          "桓仁满族自治县"
-        ]
-      },
-      {
-        "name": "丹东市",
-        "area": [
-          "振兴区",
-          "元宝区",
-          "振安区",
-          "东港市",
-          "凤城市",
-          "宽甸满族自治县"
-        ]
-      },
-      {
-        "name": "锦州市",
-        "area": [
-          "太和区",
-          "古塔区",
-          "凌河区",
-          "凌海市",
-          "黑山县",
-          "义县",
-          "北宁市"
-        ]
-      },
-      {
-        "name": "营口市",
-        "area": [
-          "站前区",
-          "西市区",
-          "鲅鱼圈区",
-          "老边区",
-          "大石桥市",
-          "盖州市"
-        ]
-      },
-      {
-        "name": "阜新市",
-        "area": [
-          "海州区",
-          "新邱区",
-          "太平区",
-          "清河门区",
-          "细河区",
-          "彰武县",
-          "阜新蒙古族自治县"
-        ]
-      },
-      {
-        "name": "辽阳市",
-        "area": [
-          "白塔区",
-          "文圣区",
-          "宏伟区",
-          "太子河区",
-          "弓长岭区",
-          "灯塔市",
-          "辽阳县"
-        ]
-      },
-      {
-        "name": "盘锦",
-        "area": [
-          "双台子区",
-          "兴隆台区",
-          "盘山县",
-          "大洼县"
-        ]
-      },
-      {
-        "name": "铁岭市",
-        "area": [
-          "银州区",
-          "清河区",
-          "调兵山市",
-          "开原市",
-          "铁岭县",
-          "昌图县",
-          "西丰县"
-        ]
-      },
-      {
-        "name": "朝阳市",
-        "area": [
-          "双塔区",
-          "龙城区",
-          "凌源市",
-          "北票市",
-          "朝阳县",
-          "建平县",
-          "喀喇沁左翼蒙古族自治县"
-        ]
-      },
-      {
-        "name": "葫芦岛市",
-        "area": [
-          "龙港区",
-          "南票区",
-          "连山区",
-          "兴城市",
-          "绥中县",
-          "建昌县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "吉林省",
-    "city": [
-      {
-        "name": "长春市",
-        "area": [
-          "朝阳区",
-          "宽城区",
-          "二道区",
-          "南关区",
-          "绿园区",
-          "双阳区",
-          "九台市",
-          "榆树市",
-          "德惠市",
-          "农安县"
-        ]
-      },
-      {
-        "name": "吉林市",
-        "area": [
-          "船营区",
-          "昌邑区",
-          "龙潭区",
-          "丰满区",
-          "舒兰市",
-          "桦甸市",
-          "蛟河市",
-          "磐石市",
-          "永吉县"
-        ]
-      },
-      {
-        "name": "四平",
-        "area": [
-          "铁西区",
-          "铁东区",
-          "公主岭市",
-          "双辽市",
-          "梨树县",
-          "伊通满族自治县"
-        ]
-      },
-      {
-        "name": "辽源市",
-        "area": [
-          "龙山区",
-          "西安区",
-          "东辽县",
-          "东丰县"
-        ]
-      },
-      {
-        "name": "通化市",
-        "area": [
-          "东昌区",
-          "二道江区",
-          "梅河口市",
-          "集安市",
-          "通化县",
-          "辉南县",
-          "柳河县"
-        ]
-      },
-      {
-        "name": "白山市",
-        "area": [
-          "八道江区",
-          "江源区",
-          "临江市",
-          "靖宇县",
-          "抚松县",
-          "长白朝鲜族自治县"
-        ]
-      },
-      {
-        "name": "松原市",
-        "area": [
-          "宁江区",
-          "乾安县",
-          "长岭县",
-          "扶余县",
-          "前郭尔罗斯蒙古族自治县"
-        ]
-      },
-      {
-        "name": "白城市",
-        "area": [
-          "洮北区",
-          "大安市",
-          "洮南市",
-          "镇赉县",
-          "通榆县"
-        ]
-      },
-      {
-        "name": "延边朝鲜族自治州",
-        "area": [
-          "延吉市",
-          "图们市",
-          "敦化市",
-          "龙井市",
-          "珲春市",
-          "和龙市",
-          "安图县",
-          "汪清县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "黑龙江省",
-    "city": [
-      {
-        "name": "哈尔滨市",
-        "area": [
-          "松北区",
-          "道里区",
-          "南岗区",
-          "平房区",
-          "香坊区",
-          "道外区",
-          "呼兰区",
-          "阿城区",
-          "双城市",
-          "尚志市",
-          "五常市",
-          "宾县",
-          "方正县",
-          "通河县",
-          "巴彦县",
-          "延寿县",
-          "木兰县",
-          "依兰县"
-        ]
-      },
-      {
-        "name": "齐齐哈尔市",
-        "area": [
-          "龙沙区",
-          "昂昂溪区",
-          "铁锋区",
-          "建华区",
-          "富拉尔基区",
-          "碾子山区",
-          "梅里斯达斡尔族区",
-          "讷河市",
-          "富裕县",
-          "拜泉县",
-          "甘南县",
-          "依安县",
-          "克山县",
-          "泰来县",
-          "克东县",
-          "龙江县"
-        ]
-      },
-      {
-        "name": "鹤岗市",
-        "area": [
-          "兴山区",
-          "工农区",
-          "南山区",
-          "兴安区",
-          "向阳区",
-          "东山区",
-          "萝北县",
-          "绥滨县"
-        ]
-      },
-      {
-        "name": "双鸭山",
-        "area": [
-          "尖山区",
-          "岭东区",
-          "四方台区",
-          "宝山区",
-          "集贤县",
-          "宝清县",
-          "友谊县",
-          "饶河县"
-        ]
-      },
-      {
-        "name": "鸡西市",
-        "area": [
-          "鸡冠区",
-          "恒山区",
-          "城子河区",
-          "滴道区",
-          "梨树区",
-          "麻山区",
-          "密山市",
-          "虎林市",
-          "鸡东县"
-        ]
-      },
-      {
-        "name": "大庆市",
-        "area": [
-          "萨尔图区",
-          "红岗区",
-          "龙凤区",
-          "让胡路区",
-          "大同区",
-          "林甸县",
-          "肇州县",
-          "肇源县",
-          "杜尔伯特蒙古族自治县"
-        ]
-      },
-      {
-        "name": "伊春市",
-        "area": [
-          "伊春区",
-          "带岭区",
-          "南岔区",
-          "金山屯区",
-          "西林区",
-          "美溪区",
-          "乌马河区",
-          "翠峦区",
-          "友好区",
-          "上甘岭区",
-          "五营区",
-          "红星区",
-          "新青区",
-          "汤旺河区",
-          "乌伊岭区",
-          "铁力市",
-          "嘉荫县"
-        ]
-      },
-      {
-        "name": "牡丹江市",
-        "area": [
-          "爱民区",
-          "东安区",
-          "阳明区",
-          "西安区",
-          "绥芬河市",
-          "宁安市",
-          "海林市",
-          "穆棱市",
-          "林口县",
-          "东宁县"
-        ]
-      },
-      {
-        "name": "佳木斯市",
-        "area": [
-          "向阳区",
-          "前进区",
-          "东风区",
-          "郊区",
-          "同江市",
-          "富锦市",
-          "桦川县",
-          "抚远县",
-          "桦南县",
-          "汤原县"
-        ]
-      },
-      {
-        "name": "七台河市",
-        "area": [
-          "桃山区",
-          "新兴区",
-          "茄子河区",
-          "勃利县"
-        ]
-      },
-      {
-        "name": "黑河市",
-        "area": [
-          "爱辉区",
-          "北安市",
-          "五大连池市",
-          "逊克县",
-          "嫩江县",
-          "孙吴县"
-        ]
-      },
-      {
-        "name": "绥化市",
-        "area": [
-          "北林区",
-          "安达市",
-          "肇东市",
-          "海伦市",
-          "绥棱县",
-          "兰西县",
-          "明水县",
-          "青冈县",
-          "庆安县",
-          "望奎县"
-        ]
-      },
-      {
-        "name": "大兴安岭地区",
-        "area": [
-          "呼玛县",
-          "塔河县",
-          "漠河县",
-          "大兴安岭辖区"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "上海市",
-    "city": [
-      {
-        "name": "上海市",
-        "area": [
-          "黄浦区",
-          "卢湾区",
-          "徐汇区",
-          "长宁区",
-          "静安区",
-          "普陀区",
-          "闸北区",
-          "虹口区",
-          "杨浦区",
-          "宝山区",
-          "闵行区",
-          "嘉定区",
-          "松江区",
-          "金山区",
-          "青浦区",
-          "南汇区",
-          "奉贤区",
-          "浦东新区",
-          "崇明县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "江苏省",
-    "city": [
-      {
-        "name": "南京市",
-        "area": [
-          "玄武区",
-          "白下区",
-          "秦淮区",
-          "建邺区",
-          "鼓楼区",
-          "下关区",
-          "栖霞区",
-          "雨花台区",
-          "浦口区",
-          "江宁区",
-          "六合区",
-          "溧水县",
-          "高淳县"
-        ]
-      },
-      {
-        "name": "苏州市",
-        "area": [
-          "金阊区",
-          "平江区",
-          "沧浪区",
-          "虎丘区",
-          "吴中区",
-          "相城区",
-          "常熟市",
-          "张家港市",
-          "昆山市",
-          "吴江市",
-          "太仓市"
-        ]
-      },
-      {
-        "name": "无锡市",
-        "area": [
-          "崇安区",
-          "南长区",
-          "北塘区",
-          "滨湖区",
-          "锡山区",
-          "惠山区",
-          "江阴市",
-          "宜兴市"
-        ]
-      },
-      {
-        "name": "常州市",
-        "area": [
-          "钟楼区",
-          "天宁区",
-          "戚墅堰区",
-          "新北区",
-          "武进区",
-          "金坛市",
-          "溧阳市"
-        ]
-      },
-      {
-        "name": "镇江市",
-        "area": [
-          "京口区",
-          "润州区",
-          "丹徒区",
-          "丹阳市",
-          "扬中市",
-          "句容市"
-        ]
-      },
-      {
-        "name": "南通市",
-        "area": [
-          "崇川区",
-          "港闸区",
-          "通州市",
-          "如皋市",
-          "海门市",
-          "启东市",
-          "海安县",
-          "如东县"
-        ]
-      },
-      {
-        "name": "泰州市",
-        "area": [
-          "海陵区",
-          "高港区",
-          "姜堰市",
-          "泰兴市",
-          "靖江市",
-          "兴化市"
-        ]
-      },
-      {
-        "name": "扬州市",
-        "area": [
-          "广陵区",
-          "维扬区",
-          "邗江区",
-          "江都市",
-          "仪征市",
-          "高邮市",
-          "宝应县"
-        ]
-      },
-      {
-        "name": "盐城市",
-        "area": [
-          "亭湖区",
-          "盐都区",
-          "大丰市",
-          "东台市",
-          "建湖县",
-          "射阳县",
-          "阜宁县",
-          "滨海县",
-          "响水县"
-        ]
-      },
-      {
-        "name": "连云港市",
-        "area": [
-          "新浦区",
-          "海州区",
-          "连云区",
-          "东海县",
-          "灌云县",
-          "赣榆县",
-          "灌南县"
-        ]
-      },
-      {
-        "name": "徐州市",
-        "area": [
-          "云龙区",
-          "鼓楼区",
-          "九里区",
-          "泉山区",
-          "贾汪区",
-          "邳州市",
-          "新沂市",
-          "铜山县",
-          "睢宁县",
-          "沛县",
-          "丰县"
-        ]
-      },
-      {
-        "name": "淮安市",
-        "area": [
-          "清河区",
-          "清浦区",
-          "楚州区",
-          "淮阴区",
-          "涟水县",
-          "洪泽县",
-          "金湖县",
-          "盱眙县"
-        ]
-      },
-      {
-        "name": "宿迁市",
-        "area": [
-          "宿城区",
-          "宿豫区",
-          "沭阳县",
-          "泗阳县",
-          "泗洪县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "浙江省",
-    "city": [
-      {
-        "name": "杭州市",
-        "area": [
-          "拱墅区",
-          "西湖区",
-          "上城区",
-          "下城区",
-          "江干区",
-          "滨江区",
-          "余杭区",
-          "萧山区",
-          "建德市",
-          "富阳市",
-          "临安市",
-          "桐庐县",
-          "淳安县"
-        ]
-      },
-      {
-        "name": "宁波市",
-        "area": [
-          "海曙区",
-          "江东区",
-          "江北区",
-          "镇海区",
-          "北仑区",
-          "鄞州区",
-          "余姚市",
-          "慈溪市",
-          "奉化市",
-          "宁海县",
-          "象山县"
-        ]
-      },
-      {
-        "name": "温州市",
-        "area": [
-          "鹿城区",
-          "龙湾区",
-          "瓯海区",
-          "瑞安市",
-          "乐清市",
-          "永嘉县",
-          "洞头县",
-          "平阳县",
-          "苍南县",
-          "文成县",
-          "泰顺县"
-        ]
-      },
-      {
-        "name": "嘉兴市",
-        "area": [
-          "秀城区",
-          "秀洲区",
-          "海宁市",
-          "平湖市",
-          "桐乡市",
-          "嘉善县",
-          "海盐县"
-        ]
-      },
-      {
-        "name": "湖州市",
-        "area": [
-          "吴兴区",
-          "南浔区",
-          "长兴县",
-          "德清县",
-          "安吉县"
-        ]
-      },
-      {
-        "name": "绍兴市",
-        "area": [
-          "越城区",
-          "诸暨市",
-          "上虞市",
-          "嵊州市",
-          "绍兴县",
-          "新昌县"
-        ]
-      },
-      {
-        "name": "金华市",
-        "area": [
-          "婺城区",
-          "金东区",
-          "兰溪市",
-          "义乌市",
-          "东阳市",
-          "永康市",
-          "武义县",
-          "浦江县",
-          "磐安县"
-        ]
-      },
-      {
-        "name": "衢州市",
-        "area": [
-          "柯城区",
-          "衢江区",
-          "江山市",
-          "龙游县",
-          "常山县",
-          "开化县"
-        ]
-      },
-      {
-        "name": "舟山市",
-        "area": [
-          "定海区",
-          "普陀区",
-          "岱山县",
-          "嵊泗县"
-        ]
-      },
-      {
-        "name": "台州市",
-        "area": [
-          "椒江区",
-          "黄岩区",
-          "路桥区",
-          "临海市",
-          "温岭市",
-          "玉环县",
-          "天台县",
-          "仙居县",
-          "三门县"
-        ]
-      },
-      {
-        "name": "丽水市",
-        "area": [
-          "莲都区",
-          "龙泉市",
-          "缙云县",
-          "青田县",
-          "云和县",
-          "遂昌县",
-          "松阳县",
-          "庆元县",
-          "景宁畲族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "安徽省",
-    "city": [
-      {
-        "name": "合肥市",
-        "area": [
-          "庐阳区",
-          "瑶海区",
-          "蜀山区",
-          "包河区",
-          "长丰县",
-          "肥东县",
-          "肥西县"
-        ]
-      },
-      {
-        "name": "芜湖市",
-        "area": [
-          "镜湖区",
-          "弋江区",
-          "鸠江区",
-          "三山区",
-          "芜湖县",
-          "南陵县",
-          "繁昌县"
-        ]
-      },
-      {
-        "name": "蚌埠市",
-        "area": [
-          "蚌山区",
-          "龙子湖区",
-          "禹会区",
-          "淮上区",
-          "怀远县",
-          "固镇县",
-          "五河县"
-        ]
-      },
-      {
-        "name": "淮南市",
-        "area": [
-          "田家庵区",
-          "大通区",
-          "谢家集区",
-          "八公山区",
-          "潘集区",
-          "凤台县"
-        ]
-      },
-      {
-        "name": "马鞍山市",
-        "area": [
-          "雨山区",
-          "花山区",
-          "金家庄区",
-          "当涂县"
-        ]
-      },
-      {
-        "name": "淮北市",
-        "area": [
-          "相山区",
-          "杜集区",
-          "烈山区",
-          "濉溪县"
-        ]
-      },
-      {
-        "name": "铜陵市",
-        "area": [
-          "铜官山区",
-          "狮子山区",
-          "郊区",
-          "铜陵县"
-        ]
-      },
-      {
-        "name": "安庆市",
-        "area": [
-          "迎江区",
-          "大观区",
-          "宜秀区",
-          "桐城市",
-          "宿松县",
-          "枞阳县",
-          "太湖县",
-          "怀宁县",
-          "岳西县",
-          "望江县",
-          "潜山县"
-        ]
-      },
-      {
-        "name": "黄山市",
-        "area": [
-          "屯溪区",
-          "黄山区",
-          "徽州区",
-          "休宁县",
-          "歙县",
-          "祁门县",
-          "黟县"
-        ]
-      },
-      {
-        "name": "滁州市",
-        "area": [
-          "琅琊区",
-          "南谯区",
-          "天长市",
-          "明光市",
-          "全椒县",
-          "来安县",
-          "定远县",
-          "凤阳县"
-        ]
-      },
-      {
-        "name": "阜阳市",
-        "area": [
-          "颍州区",
-          "颍东区",
-          "颍泉区",
-          "界首市",
-          "临泉县",
-          "颍上县",
-          "阜南县",
-          "太和县"
-        ]
-      },
-      {
-        "name": "宿州市",
-        "area": [
-          "埇桥区",
-          "萧县",
-          "泗县",
-          "砀山县",
-          "灵璧县"
-        ]
-      },
-      {
-        "name": "巢湖市",
-        "area": [
-          "居巢区",
-          "含山县",
-          "无为县",
-          "庐江县",
-          "和县"
-        ]
-      },
-      {
-        "name": "六安市",
-        "area": [
-          "金安区",
-          "裕安区",
-          "寿县",
-          "霍山县",
-          "霍邱县",
-          "舒城县",
-          "金寨县"
-        ]
-      },
-      {
-        "name": "亳州市",
-        "area": [
-          "谯城区",
-          "利辛县",
-          "涡阳县",
-          "蒙城县"
-        ]
-      },
-      {
-        "name": "池州市",
-        "area": [
-          "贵池区",
-          "东至县",
-          "石台县",
-          "青阳县"
-        ]
-      },
-      {
-        "name": "宣城市",
-        "area": [
-          "宣州区",
-          "宁国市",
-          "广德县",
-          "郎溪县",
-          "泾县",
-          "旌德县",
-          "绩溪县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "福建省",
-    "city": [
-      {
-        "name": "福州市",
-        "area": [
-          "鼓楼区",
-          "台江区",
-          "仓山区",
-          "马尾区",
-          "晋安区",
-          "福清市",
-          "长乐市",
-          "闽侯县",
-          "闽清县",
-          "永泰县",
-          "连江县",
-          "罗源县",
-          "平潭县"
-        ]
-      },
-      {
-        "name": "厦门市",
-        "area": [
-          "思明区",
-          "海沧区",
-          "湖里区",
-          "集美区",
-          "同安区",
-          "翔安区"
-        ]
-      },
-      {
-        "name": "莆田市",
-        "area": [
-          "城厢区",
-          "涵江区",
-          "荔城区",
-          "秀屿区",
-          "仙游县"
-        ]
-      },
-      {
-        "name": "三明市",
-        "area": [
-          "梅列区",
-          "三元区",
-          "永安市",
-          "明溪县",
-          "将乐县",
-          "大田县",
-          "宁化县",
-          "建宁县",
-          "沙县",
-          "尤溪县",
-          "清流县",
-          "泰宁县"
-        ]
-      },
-      {
-        "name": "泉州市",
-        "area": [
-          "鲤城区",
-          "丰泽区",
-          "洛江区",
-          "泉港区",
-          "石狮市",
-          "晋江市",
-          "南安市",
-          "惠安县",
-          "永春县",
-          "安溪县",
-          "德化县",
-          "金门县"
-        ]
-      },
-      {
-        "name": "漳州市",
-        "area": [
-          "芗城区",
-          "龙文区",
-          "龙海市",
-          "平和县",
-          "南靖县",
-          "诏安县",
-          "漳浦县",
-          "华安县",
-          "东山县",
-          "长泰县",
-          "云霄县"
-        ]
-      },
-      {
-        "name": "南平市",
-        "area": [
-          "延平区",
-          "建瓯市",
-          "邵武市",
-          "武夷山市",
-          "建阳市",
-          "松溪县",
-          "光泽县",
-          "顺昌县",
-          "浦城县",
-          "政和县"
-        ]
-      },
-      {
-        "name": "龙岩市",
-        "area": [
-          "新罗区",
-          "漳平市",
-          "长汀县",
-          "武平县",
-          "上杭县",
-          "永定县",
-          "连城县"
-        ]
-      },
-      {
-        "name": "宁德市",
-        "area": [
-          "蕉城区",
-          "福安市",
-          "福鼎市",
-          "寿宁县",
-          "霞浦县",
-          "柘荣县",
-          "屏南县",
-          "古田县",
-          "周宁县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "江西省",
-    "city": [
-      {
-        "name": "南昌市",
-        "area": [
-          "东湖区",
-          "西湖区",
-          "青云谱区",
-          "湾里区",
-          "青山湖区",
-          "新建县",
-          "南昌县",
-          "进贤县",
-          "安义县"
-        ]
-      },
-      {
-        "name": "景德镇市",
-        "area": [
-          "珠山区",
-          "昌江区",
-          "乐平市",
-          "浮梁县"
-        ]
-      },
-      {
-        "name": "萍乡市",
-        "area": [
-          "安源区",
-          "湘东区",
-          "莲花县",
-          "上栗县",
-          "芦溪县"
-        ]
-      },
-      {
-        "name": "九江市",
-        "area": [
-          "浔阳区",
-          "庐山区",
-          "瑞昌市",
-          "九江县",
-          "星子县",
-          "武宁县",
-          "彭泽县",
-          "永修县",
-          "修水县",
-          "湖口县",
-          "德安县",
-          "都昌县"
-        ]
-      },
-      {
-        "name": "新余市",
-        "area": [
-          "渝水区",
-          "分宜县"
-        ]
-      },
-      {
-        "name": "鹰潭市",
-        "area": [
-          "月湖区",
-          "贵溪市",
-          "余江县"
-        ]
-      },
-      {
-        "name": "赣州市",
-        "area": [
-          "章贡区",
-          "瑞金市",
-          "南康市",
-          "石城县",
-          "安远县",
-          "赣县",
-          "宁都县",
-          "寻乌县",
-          "兴国县",
-          "定南县",
-          "上犹县",
-          "于都县",
-          "龙南县",
-          "崇义县",
-          "信丰县",
-          "全南县",
-          "大余县",
-          "会昌县"
-        ]
-      },
-      {
-        "name": "吉安市",
-        "area": [
-          "吉州区",
-          "青原区",
-          "井冈山市",
-          "吉安县",
-          "永丰县",
-          "永新县",
-          "新干县",
-          "泰和县",
-          "峡江县",
-          "遂川县",
-          "安福县",
-          "吉水县",
-          "万安县"
-        ]
-      },
-      {
-        "name": "宜春市",
-        "area": [
-          "袁州区",
-          "丰城市",
-          "樟树市",
-          "高安市",
-          "铜鼓县",
-          "靖安县",
-          "宜丰县",
-          "奉新县",
-          "万载县",
-          "上高县"
-        ]
-      },
-      {
-        "name": "抚州市",
-        "area": [
-          "临川区",
-          "南丰县",
-          "乐安县",
-          "金溪县",
-          "南城县",
-          "东乡县",
-          "资溪县",
-          "宜黄县",
-          "广昌县",
-          "黎川县",
-          "崇仁县"
-        ]
-      },
-      {
-        "name": "上饶市",
-        "area": [
-          "信州区",
-          "德兴市",
-          "上饶县",
-          "广丰县",
-          "鄱阳县",
-          "婺源县",
-          "铅山县",
-          "余干县",
-          "横峰县",
-          "弋阳县",
-          "玉山县",
-          "万年县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "山东省",
-    "city": [
-      {
-        "name": "济南市",
-        "area": [
-          "市中区",
-          "历下区",
-          "天桥区",
-          "槐荫区",
-          "历城区",
-          "长清区",
-          "章丘市",
-          "平阴县",
-          "济阳县",
-          "商河县"
-        ]
-      },
-      {
-        "name": "青岛市",
-        "area": [
-          "市南区",
-          "市北区",
-          "城阳区",
-          "四方区",
-          "李沧区",
-          "黄岛区",
-          "崂山区",
-          "胶南市",
-          "胶州市",
-          "平度市",
-          "莱西市",
-          "即墨市"
-        ]
-      },
-      {
-        "name": "淄博市",
-        "area": [
-          "张店区",
-          "临淄区",
-          "淄川区",
-          "博山区",
-          "周村区",
-          "桓台县",
-          "高青县",
-          "沂源县"
-        ]
-      },
-      {
-        "name": "枣庄市",
-        "area": [
-          "市中区",
-          "山亭区",
-          "峄城区",
-          "台儿庄区",
-          "薛城区",
-          "滕州市"
-        ]
-      },
-      {
-        "name": "东营市",
-        "area": [
-          "东营区",
-          "河口区",
-          "垦利县",
-          "广饶县",
-          "利津县"
-        ]
-      },
-      {
-        "name": "烟台市",
-        "area": [
-          "芝罘区",
-          "福山区",
-          "牟平区",
-          "莱山区",
-          "龙口市",
-          "莱阳市",
-          "莱州市",
-          "招远市",
-          "蓬莱市",
-          "栖霞市",
-          "海阳市",
-          "长岛县"
-        ]
-      },
-      {
-        "name": "潍坊市",
-        "area": [
-          "潍城区",
-          "寒亭区",
-          "坊子区",
-          "奎文区",
-          "青州市",
-          "诸城市",
-          "寿光市",
-          "安丘市",
-          "高密市",
-          "昌邑市",
-          "昌乐县",
-          "临朐县"
-        ]
-      },
-      {
-        "name": "济宁市",
-        "area": [
-          "市中区",
-          "任城区",
-          "曲阜市",
-          "兖州市",
-          "邹城市",
-          "鱼台县",
-          "金乡县",
-          "嘉祥县",
-          "微山县",
-          "汶上县",
-          "泗水县",
-          "梁山县"
-        ]
-      },
-      {
-        "name": "泰安市",
-        "area": [
-          "泰山区",
-          "岱岳区",
-          "新泰市",
-          "肥城市",
-          "宁阳县",
-          "东平县"
-        ]
-      },
-      {
-        "name": "威海市",
-        "area": [
-          "环翠区",
-          "乳山市",
-          "文登市",
-          "荣成市"
-        ]
-      },
-      {
-        "name": "日照市",
-        "area": [
-          "东港区",
-          "岚山区",
-          "五莲县",
-          "莒县"
-        ]
-      },
-      {
-        "name": "莱芜市",
-        "area": [
-          "莱城区",
-          "钢城区"
-        ]
-      },
-      {
-        "name": "临沂市",
-        "area": [
-          "兰山区",
-          "罗庄区",
-          "河东区",
-          "沂南县",
-          "郯城县",
-          "沂水县",
-          "苍山县",
-          "费县",
-          "平邑县",
-          "莒南县",
-          "蒙阴县",
-          "临沭县"
-        ]
-      },
-      {
-        "name": "德州市",
-        "area": [
-          "德城区",
-          "乐陵市",
-          "禹城市",
-          "陵县",
-          "宁津县",
-          "齐河县",
-          "武城县",
-          "庆云县",
-          "平原县",
-          "夏津县",
-          "临邑县"
-        ]
-      },
-      {
-        "name": "聊城市",
-        "area": [
-          "东昌府区",
-          "临清市",
-          "高唐县",
-          "阳谷县",
-          "茌平县",
-          "莘县",
-          "东阿县",
-          "冠县"
-        ]
-      },
-      {
-        "name": "滨州市",
-        "area": [
-          "滨城区",
-          "邹平县",
-          "沾化县",
-          "惠民县",
-          "博兴县",
-          "阳信县",
-          "无棣县"
-        ]
-      },
-      {
-        "name": "菏泽市",
-        "area": [
-          "牡丹区",
-          "鄄城县",
-          "单县",
-          "郓城县",
-          "曹县",
-          "定陶县",
-          "巨野县",
-          "东明县",
-          "成武县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "河南省",
-    "city": [
-      {
-        "name": "郑州市",
-        "area": [
-          "中原区",
-          "金水区",
-          "二七区",
-          "管城回族区",
-          "上街区",
-          "惠济区",
-          "巩义市",
-          "新郑市",
-          "新密市",
-          "登封市",
-          "荥阳市",
-          "中牟县"
-        ]
-      },
-      {
-        "name": "开封市",
-        "area": [
-          "鼓楼区",
-          "龙亭区",
-          "顺河回族区",
-          "禹王台区",
-          "金明区",
-          "开封县",
-          "尉氏县",
-          "兰考县",
-          "杞县",
-          "通许县"
-        ]
-      },
-      {
-        "name": "洛阳市",
-        "area": [
-          "西工区",
-          "老城区",
-          "涧西区",
-          "瀍河回族区",
-          "洛龙区",
-          "吉利区",
-          "偃师市",
-          "孟津县",
-          "汝阳县",
-          "伊川县",
-          "洛宁县",
-          "嵩县",
-          "宜阳县",
-          "新安县",
-          "栾川县"
-        ]
-      },
-      {
-        "name": "平顶山市",
-        "area": [
-          "新华区",
-          "卫东区",
-          "湛河区",
-          "石龙区",
-          "汝州市",
-          "舞钢市",
-          "宝丰县",
-          "叶县",
-          "郏县",
-          "鲁山县"
-        ]
-      },
-      {
-        "name": "安阳市",
-        "area": [
-          "北关区",
-          "文峰区",
-          "殷都区",
-          "龙安区",
-          "林州市",
-          "安阳县",
-          "滑县",
-          "内黄县",
-          "汤阴县"
-        ]
-      },
-      {
-        "name": "鹤壁市",
-        "area": [
-          "淇滨区",
-          "山城区",
-          "鹤山区",
-          "浚县",
-          "淇县"
-        ]
-      },
-      {
-        "name": "新乡市",
-        "area": [
-          "卫滨区",
-          "红旗区",
-          "凤泉区",
-          "牧野区",
-          "卫辉市",
-          "辉县市",
-          "新乡县",
-          "获嘉县",
-          "原阳县",
-          "长垣县",
-          "封丘县",
-          "延津县"
-        ]
-      },
-      {
-        "name": "焦作市",
-        "area": [
-          "解放区",
-          "中站区",
-          "马村区",
-          "山阳区",
-          "沁阳市",
-          "孟州市",
-          "修武县",
-          "温县",
-          "武陟县",
-          "博爱县"
-        ]
-      },
-      {
-        "name": "濮阳市",
-        "area": [
-          "华龙区",
-          "濮阳县",
-          "南乐县",
-          "台前县",
-          "清丰县",
-          "范县"
-        ]
-      },
-      {
-        "name": "许昌市",
-        "area": [
-          "魏都区",
-          "禹州市",
-          "长葛市",
-          "许昌县",
-          "鄢陵县",
-          "襄城县"
-        ]
-      },
-      {
-        "name": "漯河市",
-        "area": [
-          "源汇区",
-          "郾城区",
-          "召陵区",
-          "临颍县",
-          "舞阳县"
-        ]
-      },
-      {
-        "name": "三门峡市",
-        "area": [
-          "湖滨区",
-          "义马市",
-          "灵宝市",
-          "渑池县",
-          "卢氏县",
-          "陕县"
-        ]
-      },
-      {
-        "name": "南阳市",
-        "area": [
-          "卧龙区",
-          "宛城区",
-          "邓州市",
-          "桐柏县",
-          "方城县",
-          "淅川县",
-          "镇平县",
-          "唐河县",
-          "南召县",
-          "内乡县",
-          "新野县",
-          "社旗县",
-          "西峡县"
-        ]
-      },
-      {
-        "name": "商丘市",
-        "area": [
-          "梁园区",
-          "睢阳区",
-          "永城市",
-          "宁陵县",
-          "虞城县",
-          "民权县",
-          "夏邑县",
-          "柘城县",
-          "睢县"
-        ]
-      },
-      {
-        "name": "信阳市",
-        "area": [
-          "浉河区",
-          "平桥区",
-          "潢川县",
-          "淮滨县",
-          "息县",
-          "新县",
-          "商城县",
-          "固始县",
-          "罗山县",
-          "光山县"
-        ]
-      },
-      {
-        "name": "周口市",
-        "area": [
-          "川汇区",
-          "项城市",
-          "商水县",
-          "淮阳县",
-          "太康县",
-          "鹿邑县",
-          "西华县",
-          "扶沟县",
-          "沈丘县",
-          "郸城县"
-        ]
-      },
-      {
-        "name": "驻马店市",
-        "area": [
-          "驿城区",
-          "确山县",
-          "新蔡县",
-          "上蔡县",
-          "西平县",
-          "泌阳县",
-          "平舆县",
-          "汝南县",
-          "遂平县",
-          "正阳县"
-        ]
-      },
-      {
-        "name": "焦作市",
-        "area": [
-          "济源市"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "湖北省",
-    "city": [
-      {
-        "name": "武汉市",
-        "area": [
-          "江岸区",
-          "武昌区",
-          "江汉区",
-          "硚口区",
-          "汉阳区",
-          "青山区",
-          "洪山区",
-          "东西湖区",
-          "汉南区",
-          "蔡甸区",
-          "江夏区",
-          "黄陂区",
-          "新洲区"
-        ]
-      },
-      {
-        "name": "黄石市",
-        "area": [
-          "黄石港区",
-          "西塞山区",
-          "下陆区",
-          "铁山区",
-          "大冶市",
-          "阳新县"
-        ]
-      },
-      {
-        "name": "十堰市",
-        "area": [
-          "张湾区",
-          "茅箭区",
-          "丹江口市",
-          "郧县",
-          "竹山县",
-          "房县",
-          "郧西县",
-          "竹溪县"
-        ]
-      },
-      {
-        "name": "荆州市",
-        "area": [
-          "沙市区",
-          "荆州区",
-          "洪湖市",
-          "石首市",
-          "松滋市",
-          "监利县",
-          "公安县",
-          "江陵县"
-        ]
-      },
-      {
-        "name": "宜昌市",
-        "area": [
-          "西陵区",
-          "伍家岗区",
-          "点军区",
-          "猇亭区",
-          "夷陵区",
-          "宜都市",
-          "当阳市",
-          "枝江市",
-          "秭归县",
-          "远安县",
-          "兴山县",
-          "五峰土家族自治县",
-          "长阳土家族自治县"
-        ]
-      },
-      {
-        "name": "襄樊市",
-        "area": [
-          "襄城区",
-          "樊城区",
-          "襄阳区",
-          "老河口市",
-          "枣阳市",
-          "宜城市",
-          "南漳县",
-          "谷城县",
-          "保康县"
-        ]
-      },
-      {
-        "name": "鄂州市",
-        "area": [
-          "鄂城区",
-          "华容区",
-          "梁子湖区"
-        ]
-      },
-      {
-        "name": "荆门市",
-        "area": [
-          "东宝区",
-          "掇刀区",
-          "钟祥市",
-          "京山县",
-          "沙洋县"
-        ]
-      },
-      {
-        "name": "孝感市",
-        "area": [
-          "孝南区",
-          "应城市",
-          "安陆市",
-          "汉川市",
-          "云梦县",
-          "大悟县",
-          "孝昌县"
-        ]
-      },
-      {
-        "name": "黄冈市",
-        "area": [
-          "黄州区",
-          "麻城市",
-          "武穴市",
-          "红安县",
-          "罗田县",
-          "浠水县",
-          "蕲春县",
-          "黄梅县",
-          "英山县",
-          "团风县"
-        ]
-      },
-      {
-        "name": "咸宁市",
-        "area": [
-          "咸安区",
-          "赤壁市",
-          "嘉鱼县",
-          "通山县",
-          "崇阳县",
-          "通城县"
-        ]
-      },
-      {
-        "name": "随州市",
-        "area": [
-          "曾都区",
-          "广水市"
-        ]
-      },
-      {
-        "name": "恩施土家族苗族自治州",
-        "area": [
-          "恩施市",
-          "利川市",
-          "建始县",
-          "来凤县",
-          "巴东县",
-          "鹤峰县",
-          "宣恩县",
-          "咸丰县"
-        ]
-      },
-      {
-        "name": "仙桃市",
-        "area": [
-          "仙桃"
-        ]
-      },
-      {
-        "name": "天门市",
-        "area": [
-          "天门"
-        ]
-      },
-      {
-        "name": "潜江市",
-        "area": [
-          "潜江"
-        ]
-      },
-      {
-        "name": "神农架林区",
-        "area": [
-          "神农架林区"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "湖南省",
-    "city": [
-      {
-        "name": "长沙市",
-        "area": [
-          "岳麓区",
-          "芙蓉区",
-          "天心区",
-          "开福区",
-          "雨花区",
-          "浏阳市",
-          "长沙县",
-          "望城县",
-          "宁乡县"
-        ]
-      },
-      {
-        "name": "株洲市",
-        "area": [
-          "天元区",
-          "荷塘区",
-          "芦淞区",
-          "石峰区",
-          "醴陵市",
-          "株洲县",
-          "炎陵县",
-          "茶陵县",
-          "攸县"
-        ]
-      },
-      {
-        "name": "湘潭市",
-        "area": [
-          "岳塘区",
-          "雨湖区",
-          "湘乡市",
-          "韶山市",
-          "湘潭县"
-        ]
-      },
-      {
-        "name": "衡阳市",
-        "area": [
-          "雁峰区",
-          "珠晖区",
-          "石鼓区",
-          "蒸湘区",
-          "南岳区",
-          "耒阳市",
-          "常宁市",
-          "衡阳县",
-          "衡东县",
-          "衡山县",
-          "衡南县",
-          "祁东县"
-        ]
-      },
-      {
-        "name": "邵阳市",
-        "area": [
-          "双清区",
-          "大祥区",
-          "北塔区",
-          "武冈市",
-          "邵东县",
-          "洞口县",
-          "新邵县",
-          "绥宁县",
-          "新宁县",
-          "邵阳县",
-          "隆回县",
-          "城步苗族自治县"
-        ]
-      },
-      {
-        "name": "岳阳市",
-        "area": [
-          "岳阳楼区",
-          "云溪区",
-          "君山区",
-          "临湘市",
-          "汨罗市",
-          "岳阳县",
-          "湘阴县",
-          "平江县",
-          "华容县"
-        ]
-      },
-      {
-        "name": "常德市",
-        "area": [
-          "武陵区",
-          "鼎城区",
-          "津市市",
-          "澧县",
-          "临澧县",
-          "桃源县",
-          "汉寿县",
-          "安乡县",
-          "石门县"
-        ]
-      },
-      {
-        "name": "张家界市",
-        "area": [
-          "永定区",
-          "武陵源区",
-          "慈利县",
-          "桑植县"
-        ]
-      },
-      {
-        "name": "益阳市",
-        "area": [
-          "赫山区",
-          "资阳区",
-          "沅江市",
-          "桃江县",
-          "南县",
-          "安化县"
-        ]
-      },
-      {
-        "name": "郴州市",
-        "area": [
-          "北湖区",
-          "苏仙区",
-          "资兴市",
-          "宜章县",
-          "汝城县",
-          "安仁县",
-          "嘉禾县",
-          "临武县",
-          "桂东县",
-          "永兴县",
-          "桂阳县"
-        ]
-      },
-      {
-        "name": "永州市",
-        "area": [
-          "冷水滩区",
-          "零陵区",
-          "祁阳县",
-          "蓝山县",
-          "宁远县",
-          "新田县",
-          "东安县",
-          "江永县",
-          "道县",
-          "双牌县",
-          "江华瑶族自治县"
-        ]
-      },
-      {
-        "name": "怀化市",
-        "area": [
-          "鹤城区",
-          "洪江市",
-          "会同县",
-          "沅陵县",
-          "辰溪县",
-          "溆浦县",
-          "中方县",
-          "新晃侗族自治县",
-          "芷江侗族自治县",
-          "通道侗族自治县",
-          "靖州苗族侗族自治县",
-          "麻阳苗族自治县"
-        ]
-      },
-      {
-        "name": "娄底市",
-        "area": [
-          "娄星区",
-          "冷水江市",
-          "涟源市",
-          "新化县",
-          "双峰县"
-        ]
-      },
-      {
-        "name": "湘西土家族苗族自治州",
-        "area": [
-          "吉首市",
-          "古丈县",
-          "龙山县",
-          "永顺县",
-          "凤凰县",
-          "泸溪县",
-          "保靖县",
-          "花垣县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "广东省",
-    "city": [
-      {
-        "name": "广州市",
-        "area": [
-          "越秀区",
-          "荔湾区",
-          "海珠区",
-          "天河区",
-          "白云区",
-          "黄埔区",
-          "番禺区",
-          "花都区",
-          "南沙区",
-          "萝岗区",
-          "增城市",
-          "从化市"
-        ]
-      },
-      {
-        "name": "深圳市",
-        "area": [
-          "福田区",
-          "罗湖区",
-          "南山区",
-          "宝安区",
-          "龙岗区",
-          "盐田区"
-        ]
-      },
-      {
-        "name": "东莞市",
-        "area": [
-          "莞城",
-          "常平",
-          "塘厦",
-          "塘厦",
-          "塘厦"
-        ]
-      },
-      {
-        "name": "中山市",
-        "area": [
-          "中山"
-        ]
-      },
-      {
-        "name": "潮州市",
-        "area": [
-          "湘桥区",
-          "潮安县",
-          "饶平县"
-        ]
-      },
-      {
-        "name": "揭阳市",
-        "area": [
-          "榕城区",
-          "揭东县",
-          "揭西县",
-          "惠来县",
-          "普宁市"
-        ]
-      },
-      {
-        "name": "云浮市",
-        "area": [
-          "云城区",
-          "新兴县",
-          "郁南县",
-          "云安县",
-          "罗定市"
-        ]
-      },
-      {
-        "name": "珠海市",
-        "area": [
-          "香洲区",
-          "斗门区",
-          "金湾区"
-        ]
-      },
-      {
-        "name": "汕头市",
-        "area": [
-          "金平区",
-          "濠江区",
-          "龙湖区",
-          "潮阳区",
-          "潮南区",
-          "澄海区",
-          "南澳县"
-        ]
-      },
-      {
-        "name": "韶关市",
-        "area": [
-          "浈江区",
-          "武江区",
-          "曲江区",
-          "乐昌市",
-          "南雄市",
-          "始兴县",
-          "仁化县",
-          "翁源县",
-          "新丰县",
-          "乳源瑶族自治县"
-        ]
-      },
-      {
-        "name": "佛山市",
-        "area": [
-          "禅城区",
-          "南海区",
-          "顺德区",
-          "三水区",
-          "高明区"
-        ]
-      },
-      {
-        "name": "江门市",
-        "area": [
-          "蓬江区",
-          "江海区",
-          "新会区",
-          "恩平市",
-          "台山市",
-          "开平市",
-          "鹤山市"
-        ]
-      },
-      {
-        "name": "湛江市",
-        "area": [
-          "赤坎区",
-          "霞山区",
-          "坡头区",
-          "麻章区",
-          "吴川市",
-          "廉江市",
-          "雷州市",
-          "遂溪县",
-          "徐闻县"
-        ]
-      },
-      {
-        "name": "茂名市",
-        "area": [
-          "茂南区",
-          "茂港区",
-          "化州市",
-          "信宜市",
-          "高州市",
-          "电白县"
-        ]
-      },
-      {
-        "name": "肇庆市",
-        "area": [
-          "端州区",
-          "鼎湖区",
-          "高要市",
-          "四会市",
-          "广宁县",
-          "怀集县",
-          "封开县",
-          "德庆县"
-        ]
-      },
-      {
-        "name": "惠州市",
-        "area": [
-          "惠城区",
-          "惠阳区",
-          "博罗县",
-          "惠东县",
-          "龙门县"
-        ]
-      },
-      {
-        "name": "梅州市",
-        "area": [
-          "梅江区",
-          "兴宁市",
-          "梅县",
-          "大埔县",
-          "丰顺县",
-          "五华县",
-          "平远县",
-          "蕉岭县"
-        ]
-      },
-      {
-        "name": "汕尾市",
-        "area": [
-          "城区",
-          "陆丰市",
-          "海丰县",
-          "陆河县"
-        ]
-      },
-      {
-        "name": "河源市",
-        "area": [
-          "源城区",
-          "紫金县",
-          "龙川县",
-          "连平县",
-          "和平县",
-          "东源县"
-        ]
-      },
-      {
-        "name": "阳江市",
-        "area": [
-          "江城区",
-          "阳春市",
-          "阳西县",
-          "阳东县"
-        ]
-      },
-      {
-        "name": "清远市",
-        "area": [
-          "清城区",
-          "英德市",
-          "连州市",
-          "佛冈县",
-          "阳山县",
-          "清新县",
-          "连山壮族瑶族自治县",
-          "连南瑶族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "广西",
-    "city": [
-      {
-        "name": "南宁市",
-        "area": [
-          "青秀区",
-          "兴宁区",
-          "西乡塘区",
-          "良庆区",
-          "江南区",
-          "邕宁区",
-          "武鸣县",
-          "隆安县",
-          "马山县",
-          "上林县",
-          "宾阳县",
-          "横县"
-        ]
-      },
-      {
-        "name": "柳州市",
-        "area": [
-          "城中区",
-          "鱼峰区",
-          "柳北区",
-          "柳南区",
-          "柳江县",
-          "柳城县",
-          "鹿寨县",
-          "融安县",
-          "融水苗族自治县",
-          "三江侗族自治县"
-        ]
-      },
-      {
-        "name": "桂林市",
-        "area": [
-          "象山区",
-          "秀峰区",
-          "叠彩区",
-          "七星区",
-          "雁山区",
-          "阳朔县",
-          "临桂县",
-          "灵川县",
-          "全州县",
-          "平乐县",
-          "兴安县",
-          "灌阳县",
-          "荔浦县",
-          "资源县",
-          "永福县",
-          "龙胜各族自治县",
-          "恭城瑶族自治县"
-        ]
-      },
-      {
-        "name": "梧州市",
-        "area": [
-          "万秀区",
-          "蝶山区",
-          "长洲区",
-          "岑溪市",
-          "苍梧县",
-          "藤县",
-          "蒙山县"
-        ]
-      },
-      {
-        "name": "北海市",
-        "area": [
-          "海城区",
-          "银海区",
-          "铁山港区",
-          "合浦县"
-        ]
-      },
-      {
-        "name": "防城港市",
-        "area": [
-          "港口区",
-          "防城区",
-          "东兴市",
-          "上思县"
-        ]
-      },
-      {
-        "name": "钦州市",
-        "area": [
-          "钦南区",
-          "钦北区",
-          "灵山县",
-          "浦北县"
-        ]
-      },
-      {
-        "name": "贵港市",
-        "area": [
-          "港北区",
-          "港南区",
-          "覃塘区",
-          "桂平市",
-          "平南县"
-        ]
-      },
-      {
-        "name": "玉林市",
-        "area": [
-          "玉州区",
-          "北流市",
-          "容县",
-          "陆川县",
-          "博白县",
-          "兴业县"
-        ]
-      },
-      {
-        "name": "百色市",
-        "area": [
-          "右江区",
-          "凌云县",
-          "平果县",
-          "西林县",
-          "乐业县",
-          "德保县",
-          "田林县",
-          "田阳县",
-          "靖西县",
-          "田东县",
-          "那坡县",
-          "隆林各族自治县"
-        ]
-      },
-      {
-        "name": "贺州市",
-        "area": [
-          "八步区",
-          "钟山县",
-          "昭平县",
-          "富川瑶族自治县"
-        ]
-      },
-      {
-        "name": "河池市",
-        "area": [
-          "金城江区",
-          "宜州市",
-          "天峨县",
-          "凤山县",
-          "南丹县",
-          "东兰县",
-          "都安瑶族自治县",
-          "罗城仫佬族自治县",
-          "巴马瑶族自治县",
-          "环江毛南族自治县",
-          "大化瑶族自治县"
-        ]
-      },
-      {
-        "name": "来宾市",
-        "area": [
-          "兴宾区",
-          "合山市",
-          "象州县",
-          "武宣县",
-          "忻城县",
-          "金秀瑶族自治县"
-        ]
-      },
-      {
-        "name": "崇左市",
-        "area": [
-          "江州区",
-          "凭祥市",
-          "宁明县",
-          "扶绥县",
-          "龙州县",
-          "大新县",
-          "天等县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "海南省",
-    "city": [
-      {
-        "name": "海口市",
-        "area": [
-          "龙华区",
-          "秀英区",
-          "琼山区",
-          "美兰区"
-        ]
-      },
-      {
-        "name": "三亚市",
-        "area": [
-          "三亚市"
-        ]
-      },
-      {
-        "name": "五指山市",
-        "area": [
-          "五指山"
-        ]
-      },
-      {
-        "name": "琼海市",
-        "area": [
-          "琼海"
-        ]
-      },
-      {
-        "name": "儋州市",
-        "area": [
-          "儋州"
-        ]
-      },
-      {
-        "name": "文昌市",
-        "area": [
-          "文昌"
-        ]
-      },
-      {
-        "name": "万宁市",
-        "area": [
-          "万宁"
-        ]
-      },
-      {
-        "name": "东方市",
-        "area": [
-          "东方"
-        ]
-      },
-      {
-        "name": "澄迈县",
-        "area": [
-          "澄迈县"
-        ]
-      },
-      {
-        "name": "定安县",
-        "area": [
-          "定安县"
-        ]
-      },
-      {
-        "name": "屯昌县",
-        "area": [
-          "屯昌县"
-        ]
-      },
-      {
-        "name": "临高县",
-        "area": [
-          "临高县"
-        ]
-      },
-      {
-        "name": "白沙黎族自治县",
-        "area": [
-          "白沙黎族自治县"
-        ]
-      },
-      {
-        "name": "昌江黎族自治县",
-        "area": [
-          "昌江黎族自治县"
-        ]
-      },
-      {
-        "name": "乐东黎族自治县",
-        "area": [
-          "乐东黎族自治县"
-        ]
-      },
-      {
-        "name": "陵水黎族自治县",
-        "area": [
-          "陵水黎族自治县"
-        ]
-      },
-      {
-        "name": "保亭黎族苗族自治县",
-        "area": [
-          "保亭黎族苗族自治县"
-        ]
-      },
-      {
-        "name": "琼中黎族苗族自治县",
-        "area": [
-          "琼中黎族苗族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "重庆市",
-    "city": [
-      {
-        "name": "重庆市",
-        "area": [
-          "渝中区",
-          "大渡口区",
-          "江北区",
-          "南岸区",
-          "北碚区",
-          "渝北区",
-          "巴南区",
-          "长寿区",
-          "双桥区",
-          "沙坪坝区",
-          "万盛区",
-          "万州区",
-          "涪陵区",
-          "黔江区",
-          "永川区",
-          "合川区",
-          "江津区",
-          "九龙坡区",
-          "南川区",
-          "綦江县",
-          "潼南县",
-          "荣昌县",
-          "璧山县",
-          "大足县",
-          "铜梁县",
-          "梁平县",
-          "开县",
-          "忠县",
-          "城口县",
-          "垫江县",
-          "武隆县",
-          "丰都县",
-          "奉节县",
-          "云阳县",
-          "巫溪县",
-          "巫山县",
-          "石柱土家族自治县",
-          "秀山土家族苗族自治县",
-          "酉阳土家族苗族自治县",
-          "彭水苗族土家族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "四川省",
-    "city": [
-      {
-        "name": "成都市",
-        "area": [
-          "青羊区",
-          "锦江区",
-          "金牛区",
-          "武侯区",
-          "成华区",
-          "龙泉驿区",
-          "青白江区",
-          "新都区",
-          "温江区",
-          "都江堰市",
-          "彭州市",
-          "邛崃市",
-          "崇州市",
-          "金堂县",
-          "郫县",
-          "新津县",
-          "双流县",
-          "蒲江县",
-          "大邑县"
-        ]
-      },
-      {
-        "name": "自贡市",
-        "area": [
-          "大安区",
-          "自流井区",
-          "贡井区",
-          "沿滩区",
-          "荣县",
-          "富顺县"
-        ]
-      },
-      {
-        "name": "攀枝花市",
-        "area": [
-          "仁和区",
-          "米易县",
-          "盐边县",
-          "东区",
-          "西区"
-        ]
-      },
-      {
-        "name": "泸州市",
-        "area": [
-          "江阳区",
-          "纳溪区",
-          "龙马潭区",
-          "泸县",
-          "合江县",
-          "叙永县",
-          "古蔺县"
-        ]
-      },
-      {
-        "name": "德阳市",
-        "area": [
-          "旌阳区",
-          "广汉市",
-          "什邡市",
-          "绵竹市",
-          "罗江县",
-          "中江县"
-        ]
-      },
-      {
-        "name": "绵阳市",
-        "area": [
-          "涪城区",
-          "游仙区",
-          "江油市",
-          "盐亭县",
-          "三台县",
-          "平武县",
-          "安县",
-          "梓潼县",
-          "北川羌族自治县"
-        ]
-      },
-      {
-        "name": "广元市",
-        "area": [
-          "元坝区",
-          "朝天区",
-          "青川县",
-          "旺苍县",
-          "剑阁县",
-          "苍溪县",
-          "市中区"
-        ]
-      },
-      {
-        "name": "遂宁市",
-        "area": [
-          "船山区",
-          "安居区",
-          "射洪县",
-          "蓬溪县",
-          "大英县"
-        ]
-      },
-      {
-        "name": "内江市",
-        "area": [
-          "市中区",
-          "东兴区",
-          "资中县",
-          "隆昌县",
-          "威远县"
-        ]
-      },
-      {
-        "name": "乐山市",
-        "area": [
-          "市中区",
-          "五通桥区",
-          "沙湾区",
-          "金口河区",
-          "峨眉山市",
-          "夹江县",
-          "井研县",
-          "犍为县",
-          "沐川县",
-          "马边彝族自治县",
-          "峨边彝族自治县"
-        ]
-      },
-      {
-        "name": "南充",
-        "area": [
-          "顺庆区",
-          "高坪区",
-          "嘉陵区",
-          "阆中市",
-          "营山县",
-          "蓬安县",
-          "仪陇县",
-          "南部县",
-          "西充县"
-        ]
-      },
-      {
-        "name": "眉山市",
-        "area": [
-          "东坡区",
-          "仁寿县",
-          "彭山县",
-          "洪雅县",
-          "丹棱县",
-          "青神县"
-        ]
-      },
-      {
-        "name": "宜宾市",
-        "area": [
-          "翠屏区",
-          "宜宾县",
-          "兴文县",
-          "南溪县",
-          "珙县",
-          "长宁县",
-          "高县",
-          "江安县",
-          "筠连县",
-          "屏山县"
-        ]
-      },
-      {
-        "name": "广安市",
-        "area": [
-          "广安区",
-          "华蓥市",
-          "岳池县",
-          "邻水县",
-          "武胜县"
-        ]
-      },
-      {
-        "name": "达州市",
-        "area": [
-          "通川区",
-          "万源市",
-          "达县",
-          "渠县",
-          "宣汉县",
-          "开江县",
-          "大竹县"
-        ]
-      },
-      {
-        "name": "雅安市",
-        "area": [
-          "雨城区",
-          "芦山县",
-          "石棉县",
-          "名山县",
-          "天全县",
-          "荥经县",
-          "宝兴县",
-          "汉源县"
-        ]
-      },
-      {
-        "name": "巴中市",
-        "area": [
-          "巴州区",
-          "南江县",
-          "平昌县",
-          "通江县"
-        ]
-      },
-      {
-        "name": "资阳市",
-        "area": [
-          "雁江区",
-          "简阳市",
-          "安岳县",
-          "乐至县"
-        ]
-      },
-      {
-        "name": "阿坝藏族羌族自治州",
-        "area": [
-          "马尔康县",
-          "九寨沟县",
-          "红原县",
-          "汶川县",
-          "阿坝县",
-          "理县",
-          "若尔盖县",
-          "小金县",
-          "黑水县",
-          "金川县",
-          "松潘县",
-          "壤塘县",
-          "茂县"
-        ]
-      },
-      {
-        "name": "甘孜藏族自治州",
-        "area": [
-          "康定县",
-          "丹巴县",
-          "炉霍县",
-          "九龙县",
-          "甘孜县",
-          "雅江县",
-          "新龙县",
-          "道孚县",
-          "白玉县",
-          "理塘县",
-          "德格县",
-          "乡城县",
-          "石渠县",
-          "稻城县",
-          "色达县",
-          "巴塘县",
-          "泸定县",
-          "得荣县"
-        ]
-      },
-      {
-        "name": "凉山彝族自治州",
-        "area": [
-          "西昌市",
-          "美姑县",
-          "昭觉县",
-          "金阳县",
-          "甘洛县",
-          "布拖县",
-          "雷波县",
-          "普格县",
-          "宁南县",
-          "喜德县",
-          "会东县",
-          "越西县",
-          "会理县",
-          "盐源县",
-          "德昌县",
-          "冕宁县",
-          "木里藏族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "贵州省",
-    "city": [
-      {
-        "name": "贵阳市",
-        "area": [
-          "南明区",
-          "云岩区",
-          "花溪区",
-          "乌当区",
-          "白云区",
-          "小河区",
-          "清镇市",
-          "开阳县",
-          "修文县",
-          "息烽县"
-        ]
-      },
-      {
-        "name": "六盘水市",
-        "area": [
-          "钟山区",
-          "水城县",
-          "盘县",
-          "六枝特区"
-        ]
-      },
-      {
-        "name": "遵义市",
-        "area": [
-          "红花岗区",
-          "汇川区",
-          "赤水市",
-          "仁怀市",
-          "遵义县",
-          "绥阳县",
-          "桐梓县",
-          "习水县",
-          "凤冈县",
-          "正安县",
-          "余庆县",
-          "湄潭县",
-          "道真仡佬族苗族自治县",
-          "务川仡佬族苗族自治县"
-        ]
-      },
-      {
-        "name": "安顺市",
-        "area": [
-          "西秀区",
-          "普定县",
-          "平坝县",
-          "镇宁布依族苗族自治县",
-          "紫云苗族布依族自治县",
-          "关岭布依族苗族自治县"
-        ]
-      },
-      {
-        "name": "铜仁地区",
-        "area": [
-          "铜仁市",
-          "德江县",
-          "江口县",
-          "思南县",
-          "石阡县",
-          "玉屏侗族自治县",
-          "松桃苗族自治县",
-          "印江土家族苗族自治县",
-          "沿河土家族自治县",
-          "万山特区"
-        ]
-      },
-      {
-        "name": "毕节地区",
-        "area": [
-          "毕节市",
-          "黔西县",
-          "大方县",
-          "织金县",
-          "金沙县",
-          "赫章县",
-          "纳雍县",
-          "威宁彝族回族苗族自治县"
-        ]
-      },
-      {
-        "name": "黔西南布依族苗族自治州",
-        "area": [
-          "兴义市",
-          "望谟县",
-          "兴仁县",
-          "普安县",
-          "册亨县",
-          "晴隆县",
-          "贞丰县",
-          "安龙县"
-        ]
-      },
-      {
-        "name": "黔东南苗族侗族自治州",
-        "area": [
-          "凯里市",
-          "施秉县",
-          "从江县",
-          "锦屏县",
-          "镇远县",
-          "麻江县",
-          "台江县",
-          "天柱县",
-          "黄平县",
-          "榕江县",
-          "剑河县",
-          "三穗县",
-          "雷山县",
-          "黎平县",
-          "岑巩县",
-          "丹寨县"
-        ]
-      },
-      {
-        "name": "黔南布依族苗族自治州",
-        "area": [
-          "都匀市",
-          "福泉市",
-          "贵定县",
-          "惠水县",
-          "罗甸县",
-          "瓮安县",
-          "荔波县",
-          "龙里县",
-          "平塘县",
-          "长顺县",
-          "独山县",
-          "三都水族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "云南省",
-    "city": [
-      {
-        "name": "昆明市",
-        "area": [
-          "盘龙区",
-          "五华区",
-          "官渡区",
-          "西山区",
-          "东川区",
-          "安宁市",
-          "呈贡县",
-          "晋宁县",
-          "富民县",
-          "宜良县",
-          "嵩明县",
-          "石林彝族自治县",
-          "禄劝彝族苗族自治县",
-          "寻甸回族彝族自治县"
-        ]
-      },
-      {
-        "name": "曲靖市",
-        "area": [
-          "麒麟区",
-          "宣威市",
-          "马龙县",
-          "沾益县",
-          "富源县",
-          "罗平县",
-          "师宗县",
-          "陆良县",
-          "会泽县"
-        ]
-      },
-      {
-        "name": "玉溪市",
-        "area": [
-          "红塔区",
-          "江川县",
-          "澄江县",
-          "通海县",
-          "华宁县",
-          "易门县",
-          "峨山彝族自治县",
-          "新平彝族傣族自治县",
-          "元江哈尼族彝族傣族自治县"
-        ]
-      },
-      {
-        "name": "保山市",
-        "area": [
-          "隆阳区",
-          "施甸县",
-          "腾冲县",
-          "龙陵县",
-          "昌宁县"
-        ]
-      },
-      {
-        "name": "昭通市",
-        "area": [
-          "昭阳区",
-          "鲁甸县",
-          "巧家县",
-          "盐津县",
-          "大关县",
-          "永善县",
-          "绥江县",
-          "镇雄县",
-          "彝良县",
-          "威信县",
-          "水富县"
-        ]
-      },
-      {
-        "name": "丽江市",
-        "area": [
-          "古城区",
-          "永胜县",
-          "华坪县",
-          "玉龙纳西族自治县",
-          "宁蒗彝族自治县"
-        ]
-      },
-      {
-        "name": "普洱市",
-        "area": [
-          "思茅区",
-          "普洱哈尼族彝族自治县",
-          "墨江哈尼族自治县",
-          "景东彝族自治县",
-          "景谷傣族彝族自治县",
-          "镇沅彝族哈尼族拉祜族自治县",
-          "江城哈尼族彝族自治县",
-          "孟连傣族拉祜族佤族自治县",
-          "澜沧拉祜族自治县",
-          "西盟佤族自治县"
-        ]
-      },
-      {
-        "name": "临沧市",
-        "area": [
-          "临翔区",
-          "凤庆县",
-          "云县",
-          "永德县",
-          "镇康县",
-          "双江拉祜族佤族布朗族傣族自治县",
-          "耿马傣族佤族自治县",
-          "沧源佤族自治县"
-        ]
-      },
-      {
-        "name": "德宏傣族景颇族自治州",
-        "area": [
-          "潞西市",
-          "瑞丽市",
-          "梁河县",
-          "盈江县",
-          "陇川县"
-        ]
-      },
-      {
-        "name": "怒江傈僳族自治州",
-        "area": [
-          "泸水县",
-          "福贡县",
-          "贡山独龙族怒族自治县",
-          "兰坪白族普米族自治县"
-        ]
-      },
-      {
-        "name": "迪庆藏族自治州",
-        "area": [
-          "香格里拉县",
-          "德钦县",
-          "维西傈僳族自治县"
-        ]
-      },
-      {
-        "name": "大理白族自治州",
-        "area": [
-          "大理市",
-          "祥云县",
-          "宾川县",
-          "弥渡县",
-          "永平县",
-          "云龙县",
-          "洱源县",
-          "剑川县",
-          "鹤庆县",
-          "漾濞彝族自治县",
-          "南涧彝族自治县",
-          "巍山彝族回族自治县"
-        ]
-      },
-      {
-        "name": "楚雄彝族自治州",
-        "area": [
-          "楚雄市",
-          "双柏县",
-          "牟定县",
-          "南华县",
-          "姚安县",
-          "大姚县",
-          "永仁县",
-          "元谋县",
-          "武定县",
-          "禄丰县"
-        ]
-      },
-      {
-        "name": "红河哈尼族彝族自治州",
-        "area": [
-          "蒙自县",
-          "个旧市",
-          "开远市",
-          "绿春县",
-          "建水县",
-          "石屏县",
-          "弥勒县",
-          "泸西县",
-          "元阳县",
-          "红河县",
-          "金平苗族瑶族傣族自治县",
-          "河口瑶族自治县",
-          "屏边苗族自治县"
-        ]
-      },
-      {
-        "name": "文山壮族苗族自治州",
-        "area": [
-          "文山县",
-          "砚山县",
-          "西畴县",
-          "麻栗坡县",
-          "马关县",
-          "丘北县",
-          "广南县",
-          "富宁县"
-        ]
-      },
-      {
-        "name": "西双版纳傣族自治州",
-        "area": [
-          "景洪市",
-          "勐海县",
-          "勐腊县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "西藏",
-    "city": [
-      {
-        "name": "拉萨市",
-        "area": [
-          "城关区",
-          "林周县",
-          "当雄县",
-          "尼木县",
-          "曲水县",
-          "堆龙德庆县",
-          "达孜县",
-          "墨竹工卡县"
-        ]
-      },
-      {
-        "name": "那曲地区",
-        "area": [
-          "那曲县",
-          "嘉黎县",
-          "比如县",
-          "聂荣县",
-          "安多县",
-          "申扎县",
-          "索县",
-          "班戈县",
-          "巴青县",
-          "尼玛县"
-        ]
-      },
-      {
-        "name": "昌都地区",
-        "area": [
-          "昌都县",
-          "江达县",
-          "贡觉县",
-          "类乌齐县",
-          "丁青县",
-          "察雅县",
-          "八宿县",
-          "左贡县",
-          "芒康县",
-          "洛隆县",
-          "边坝县"
-        ]
-      },
-      {
-        "name": "林芝地区",
-        "area": [
-          "林芝县",
-          "工布江达县",
-          "米林县",
-          "墨脱县",
-          "波密县",
-          "察隅县",
-          "朗县"
-        ]
-      },
-      {
-        "name": "山南地区",
-        "area": [
-          "乃东县",
-          "扎囊县",
-          "贡嘎县",
-          "桑日县",
-          "琼结县",
-          "曲松县",
-          "措美县",
-          "洛扎县",
-          "加查县",
-          "隆子县",
-          "错那县",
-          "浪卡子县"
-        ]
-      },
-      {
-        "name": "日喀则地区",
-        "area": [
-          "日喀则市",
-          "南木林县",
-          "江孜县",
-          "定日县",
-          "萨迦县",
-          "拉孜县",
-          "昂仁县",
-          "谢通门县",
-          "白朗县",
-          "仁布县",
-          "康马县",
-          "定结县",
-          "仲巴县",
-          "亚东县",
-          "吉隆县",
-          "聂拉木县",
-          "萨嘎县",
-          "岗巴县"
-        ]
-      },
-      {
-        "name": "阿里地区",
-        "area": [
-          "噶尔县",
-          "普兰县",
-          "札达县",
-          "日土县",
-          "革吉县",
-          "改则县",
-          "措勤县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "陕西省",
-    "city": [
-      {
-        "name": "西安市",
-        "area": [
-          "莲湖区",
-          "新城区",
-          "碑林区",
-          "雁塔区",
-          "灞桥区",
-          "未央区",
-          "阎良区",
-          "临潼区",
-          "长安区",
-          "高陵县",
-          "蓝田县",
-          "户县",
-          "周至县"
-        ]
-      },
-      {
-        "name": "铜川市",
-        "area": [
-          "耀州区",
-          "王益区",
-          "印台区",
-          "宜君县"
-        ]
-      },
-      {
-        "name": "宝鸡市",
-        "area": [
-          "渭滨区",
-          "金台区",
-          "陈仓区",
-          "岐山县",
-          "凤翔县",
-          "陇县",
-          "太白县",
-          "麟游县",
-          "扶风县",
-          "千阳县",
-          "眉县",
-          "凤县"
-        ]
-      },
-      {
-        "name": "咸阳市",
-        "area": [
-          "秦都区",
-          "渭城区",
-          "杨陵区",
-          "兴平市",
-          "礼泉县",
-          "泾阳县",
-          "永寿县",
-          "三原县",
-          "彬县",
-          "旬邑县",
-          "长武县",
-          "乾县",
-          "武功县",
-          "淳化县"
-        ]
-      },
-      {
-        "name": "渭南市",
-        "area": [
-          "临渭区",
-          "韩城市",
-          "华阴市",
-          "蒲城县",
-          "潼关县",
-          "白水县",
-          "澄城县",
-          "华县",
-          "合阳县",
-          "富平县",
-          "大荔县"
-        ]
-      },
-      {
-        "name": "延安市",
-        "area": [
-          "宝塔区",
-          "安塞县",
-          "洛川县",
-          "子长县",
-          "黄陵县",
-          "延川县",
-          "富县",
-          "延长县",
-          "甘泉县",
-          "宜川县",
-          "志丹县",
-          "黄龙县",
-          "吴起县"
-        ]
-      },
-      {
-        "name": "汉中市",
-        "area": [
-          "汉台区",
-          "留坝县",
-          "镇巴县",
-          "城固县",
-          "南郑县",
-          "洋县",
-          "宁强县",
-          "佛坪县",
-          "勉县",
-          "西乡县",
-          "略阳县"
-        ]
-      },
-      {
-        "name": "榆林市",
-        "area": [
-          "榆阳区",
-          "清涧县",
-          "绥德县",
-          "神木县",
-          "佳县",
-          "府谷县",
-          "子洲县",
-          "靖边县",
-          "横山县",
-          "米脂县",
-          "吴堡县",
-          "定边县"
-        ]
-      },
-      {
-        "name": "安康市",
-        "area": [
-          "汉滨区",
-          "紫阳县",
-          "岚皋县",
-          "旬阳县",
-          "镇坪县",
-          "平利县",
-          "石泉县",
-          "宁陕县",
-          "白河县",
-          "汉阴县"
-        ]
-      },
-      {
-        "name": "商洛市",
-        "area": [
-          "商州区",
-          "镇安县",
-          "山阳县",
-          "洛南县",
-          "商南县",
-          "丹凤县",
-          "柞水县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "甘肃省",
-    "city": [
-      {
-        "name": "兰州市",
-        "area": [
-          "城关区",
-          "七里河区",
-          "西固区",
-          "安宁区",
-          "红古区",
-          "永登县",
-          "皋兰县",
-          "榆中县"
-        ]
-      },
-      {
-        "name": "嘉峪关市",
-        "area": [
-          "嘉峪关市"
-        ]
-      },
-      {
-        "name": "金昌市",
-        "area": [
-          "金川区",
-          "永昌县"
-        ]
-      },
-      {
-        "name": "白银市",
-        "area": [
-          "白银区",
-          "平川区",
-          "靖远县",
-          "会宁县",
-          "景泰县"
-        ]
-      },
-      {
-        "name": "天水市",
-        "area": [
-          "清水县",
-          "秦安县",
-          "甘谷县",
-          "武山县",
-          "张家川回族自治县",
-          "北道区",
-          "秦城区"
-        ]
-      },
-      {
-        "name": "武威市",
-        "area": [
-          "凉州区",
-          "民勤县",
-          "古浪县",
-          "天祝藏族自治县"
-        ]
-      },
-      {
-        "name": "酒泉市",
-        "area": [
-          "肃州区",
-          "玉门市",
-          "敦煌市",
-          "金塔县",
-          "肃北蒙古族自治县",
-          "阿克塞哈萨克族自治县",
-          "安西县"
-        ]
-      },
-      {
-        "name": "张掖市",
-        "area": [
-          "甘州区",
-          "民乐县",
-          "临泽县",
-          "高台县",
-          "山丹县",
-          "肃南裕固族自治县"
-        ]
-      },
-      {
-        "name": "庆阳市",
-        "area": [
-          "西峰区",
-          "庆城县",
-          "环县",
-          "华池县",
-          "合水县",
-          "正宁县",
-          "宁县",
-          "镇原县"
-        ]
-      },
-      {
-        "name": "平凉市",
-        "area": [
-          "崆峒区",
-          "泾川县",
-          "灵台县",
-          "崇信县",
-          "华亭县",
-          "庄浪县",
-          "静宁县"
-        ]
-      },
-      {
-        "name": "定西市",
-        "area": [
-          "安定区",
-          "通渭县",
-          "临洮县",
-          "漳县",
-          "岷县",
-          "渭源县",
-          "陇西县"
-        ]
-      },
-      {
-        "name": "陇南市",
-        "area": [
-          "武都区",
-          "成县",
-          "宕昌县",
-          "康县",
-          "文县",
-          "西和县",
-          "礼县",
-          "两当县",
-          "徽县"
-        ]
-      },
-      {
-        "name": "临夏回族自治州",
-        "area": [
-          "临夏市",
-          "临夏县",
-          "康乐县",
-          "永靖县",
-          "广河县",
-          "和政县",
-          "东乡族自治县",
-          "积石山保安族东乡族撒拉族自治县"
-        ]
-      },
-      {
-        "name": "甘南藏族自治州",
-        "area": [
-          "合作市",
-          "临潭县",
-          "卓尼县",
-          "舟曲县",
-          "迭部县",
-          "玛曲县",
-          "碌曲县",
-          "夏河县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "青海省",
-    "city": [
-      {
-        "name": "西宁市",
-        "area": [
-          "城中区",
-          "城东区",
-          "城西区",
-          "城北区",
-          "湟源县",
-          "湟中县",
-          "大通回族土族自治县"
-        ]
-      },
-      {
-        "name": "海东地区",
-        "area": [
-          "平安县",
-          "乐都县",
-          "民和回族土族自治县",
-          "互助土族自治县",
-          "化隆回族自治县",
-          "循化撒拉族自治县"
-        ]
-      },
-      {
-        "name": "海北藏族自治州",
-        "area": [
-          "海晏县",
-          "祁连县",
-          "刚察县",
-          "门源回族自治县"
-        ]
-      },
-      {
-        "name": "海南藏族自治州",
-        "area": [
-          "共和县",
-          "同德县",
-          "贵德县",
-          "兴海县",
-          "贵南县"
-        ]
-      },
-      {
-        "name": "黄南藏族自治州",
-        "area": [
-          "同仁县",
-          "尖扎县",
-          "泽库县",
-          "河南蒙古族自治县"
-        ]
-      },
-      {
-        "name": "果洛藏族自治州",
-        "area": [
-          "玛沁县",
-          "班玛县",
-          "甘德县",
-          "达日县",
-          "久治县",
-          "玛多县"
-        ]
-      },
-      {
-        "name": "玉树藏族自治州",
-        "area": [
-          "玉树县",
-          "杂多县",
-          "称多县",
-          "治多县",
-          "囊谦县",
-          "曲麻莱县"
-        ]
-      },
-      {
-        "name": "海西蒙古族藏族自治州",
-        "area": [
-          "德令哈市",
-          "格尔木市",
-          "乌兰县",
-          "都兰县",
-          "天峻县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "宁夏",
-    "city": [
-      {
-        "name": "银川市",
-        "area": [
-          "兴庆区",
-          "西夏区",
-          "金凤区",
-          "灵武市",
-          "永宁县",
-          "贺兰县"
-        ]
-      },
-      {
-        "name": "石嘴山市",
-        "area": [
-          "大武口区",
-          "惠农区",
-          "平罗县"
-        ]
-      },
-      {
-        "name": "吴忠市",
-        "area": [
-          "利通区",
-          "青铜峡市",
-          "盐池县",
-          "同心县"
-        ]
-      },
-      {
-        "name": "固原市",
-        "area": [
-          "原州区",
-          "西吉县",
-          "隆德县",
-          "泾源县",
-          "彭阳县"
-        ]
-      },
-      {
-        "name": "中卫市",
-        "area": [
-          "沙坡头区",
-          "中宁县",
-          "海原县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "新疆",
-    "city": [
-      {
-        "name": "乌鲁木齐市",
-        "area": [
-          "天山区",
-          "沙依巴克区",
-          "新市区",
-          "水磨沟区",
-          "头屯河区",
-          "达坂城区",
-          "东山区",
-          "乌鲁木齐县"
-        ]
-      },
-      {
-        "name": "克拉玛依市",
-        "area": [
-          "克拉玛依区",
-          "独山子区",
-          "白碱滩区",
-          "乌尔禾区"
-        ]
-      },
-      {
-        "name": "吐鲁番地区",
-        "area": [
-          "吐鲁番市",
-          "托克逊县",
-          "鄯善县"
-        ]
-      },
-      {
-        "name": "哈密地区",
-        "area": [
-          "哈密市",
-          "伊吾县",
-          "巴里坤哈萨克自治县"
-        ]
-      },
-      {
-        "name": "和田地区",
-        "area": [
-          "和田市",
-          "和田县",
-          "洛浦县",
-          "民丰县",
-          "皮山县",
-          "策勒县",
-          "于田县",
-          "墨玉县"
-        ]
-      },
-      {
-        "name": "阿克苏地区",
-        "area": [
-          "阿克苏市",
-          "温宿县",
-          "沙雅县",
-          "拜城县",
-          "阿瓦提县",
-          "库车县",
-          "柯坪县",
-          "新和县",
-          "乌什县"
-        ]
-      },
-      {
-        "name": "喀什地区",
-        "area": [
-          "喀什市",
-          "巴楚县",
-          "泽普县",
-          "伽师县",
-          "叶城县",
-          "岳普湖县",
-          "疏勒县",
-          "麦盖提县",
-          "英吉沙县",
-          "莎车县",
-          "疏附县",
-          "塔什库尔干塔吉克自治县"
-        ]
-      },
-      {
-        "name": "克孜勒苏柯尔克孜自治州",
-        "area": [
-          "阿图什市",
-          "阿合奇县",
-          "乌恰县",
-          "阿克陶县"
-        ]
-      },
-      {
-        "name": "巴音郭楞蒙古自治州",
-        "area": [
-          "库尔勒市",
-          "和静县",
-          "尉犁县",
-          "和硕县",
-          "且末县",
-          "博湖县",
-          "轮台县",
-          "若羌县",
-          "焉耆回族自治县"
-        ]
-      },
-      {
-        "name": "昌吉回族自治州",
-        "area": [
-          "昌吉市",
-          "阜康市",
-          "奇台县",
-          "玛纳斯县",
-          "吉木萨尔县",
-          "呼图壁县",
-          "木垒哈萨克自治县",
-          "米泉市"
-        ]
-      },
-      {
-        "name": "博尔塔拉蒙古自治州",
-        "area": [
-          "博乐市",
-          "精河县",
-          "温泉县"
-        ]
-      },
-      {
-        "name": "石河子",
-        "area": [
-          "石河子"
-        ]
-      },
-      {
-        "name": "阿拉尔",
-        "area": [
-          "阿拉尔"
-        ]
-      },
-      {
-        "name": "图木舒克",
-        "area": [
-          "图木舒克"
-        ]
-      },
-      {
-        "name": "五家渠",
-        "area": [
-          "五家渠"
-        ]
-      },
-      {
-        "name": "伊犁哈萨克自治州",
-        "area": [
-          "伊宁市",
-          "奎屯市",
-          "伊宁县",
-          "特克斯县",
-          "尼勒克县",
-          "昭苏县",
-          "新源县",
-          "霍城县",
-          "巩留县",
-          "察布查尔锡伯自治县",
-          "塔城地区",
-          "阿勒泰地区"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "台湾省",
-    "city": [
-      {
-        "name": "台北市",
-        "area": [
-          "内湖区",
-          "南港区",
-          "中正区",
-          "万华区",
-          "大同区",
-          "中山区",
-          "松山区",
-          "大安区",
-          "信义区",
-          "文山区",
-          "士林区",
-          "北投区"
-        ]
-      },
-      {
-        "name": "新北市",
-        "area": [
-          "板桥区",
-          "汐止区",
-          "新店区"
-        ]
-      },
-      {
-        "name": "桃园市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
-        "name": "台中市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
-        "name": "台南市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
-        "name": "高雄市",
-        "area": [
-          "其他"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "澳门",
-    "city": [
-      {
-        "name": "澳门",
-        "area": [
-          "花地玛堂区",
-          "圣安多尼堂区",
-          "大堂区",
-          "望德堂区",
-          "风顺堂区",
-          "嘉模堂区",
-          "圣方济各堂区",
-          "路凼"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "香港",
-    "city": [
-      {
-        "name": "香港",
-        "area": [
-          "深水埗区",
-          "油尖旺区",
-          "九龙城区",
-          "黄大仙区",
-          "观塘区",
-          "北区",
-          "大埔区",
-          "沙田区",
-          "西贡区",
-          "元朗区",
-          "屯门区",
-          "荃湾区",
-          "葵青区",
-          "离岛区",
-          "中西区",
-          "湾仔区",
-          "东区",
-          "南区"
-        ]
-      }
-    ]
-  }
-]

+ 0 - 103
components/wangding-pickerAddress/wangding-pickerAddress.vue

@@ -1,103 +0,0 @@
-<template>
-	<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector">
-		<slot></slot>
-	</picker>
-</template>
-
-<script>
-	import AllAddress from './data.js'
-	let selectVal = ['','',''];
-	
-	export default {
-		data() {
-			return{
-				value: [0,0,0],
-				array: [],
-				index: 0
-			}
-		},
-		created() {
-			this.initSelect()
-		},
-		methods:{
-			// 初始化地址选项
-			initSelect() {
-				this.updateSourceDate() // 更新源数据
-				.updateAddressDate() // 更新结果数据
-				.$forceUpdate()  // 触发双向绑定
-			},
-			// 地址控件改变控件
-			columnchange(d) {
-				this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引
-				.updateSourceDate() // 更新源数据
-				.updateAddressDate() // 更新结果数据
-				.$forceUpdate()  // 触发双向绑定
-			},
-			
-			/**
-			 * 更新源数据
-			 * */
-			updateSourceDate() {
-				this.array = []
-				this.array[0] = AllAddress.map(obj => {
-					return {
-						name: obj.name
-					}
-				})
-				this.array[1] = AllAddress[this.value[0]].city.map(obj => {
-					return {
-						name: obj.name
-					}
-				})
-				this.array[2] = AllAddress[this.value[0]].city[this.value[1]].area.map(obj => { 
-					return {
-						name: obj
-					}
-				})
-				return this
-			},
-			
-			/**
-			 * 更新索引
-			 * */
-			updateSelectIndex(column, value){
-				let arr = JSON.parse(JSON.stringify(this.value)) 
-				arr[column] = value
-				if(column === 0 ) {
-					arr[1] = 0
-					arr[2] = 0
-				}
-				if(column === 1 ) {
-					arr[2] = 0
-				}
-				this.value = arr
-				return this
-			},
-			
-			/**
-			 * 更新结果数据 
-			 * */
-			updateAddressDate() {
-				selectVal[0] = this.array[0][this.value[0]].name
-				selectVal[1] = this.array[1][this.value[1]].name 
-				selectVal[2] = this.array[2][this.value[2]].name 
-				return this
-			},
-			
-			/**
-			 * 点击确定
-			 * */
-			bindPickerChange(e) {
-				this.$emit('change', {
-					index: this.value,
-					data: selectVal
-				})
-				return this
-			}
-			
-		}
-	}
-</script>
-
-<style>
-</style>

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