更新大理市民卡app
diff --git a/uview-ui/libs/mixin/mixin.js b/uview-ui/libs/mixin/mixin.js
new file mode 100644
index 0000000..43742f4
--- /dev/null
+++ b/uview-ui/libs/mixin/mixin.js
@@ -0,0 +1,50 @@
+module.exports = {
+	data() {
+		return {}
+	},
+	onLoad() {
+		// getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出
+		this.$u.getRect = this.$uGetRect
+	},
+	methods: {
+		// 查询节点信息
+		// 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)
+		// 解决办法为在组件根部再套一个没有任何作用的view元素
+		$uGetRect(selector, all) {
+			return new Promise(resolve => {
+				uni.createSelectorQuery().
+				in(this)[all ? 'selectAll' : 'select'](selector)
+					.boundingClientRect(rect => {
+						if (all && Array.isArray(rect) && rect.length) {
+							resolve(rect)
+						}
+						if (!all && rect) {
+							resolve(rect)
+						}
+					})
+					.exec()
+			})
+		},
+		getParentData(parentName = '') {
+			// 避免在created中去定义parent变量
+			if(!this.parent) this.parent = false;
+			// 这里的本质原理是,通过获取父组件实例(也即u-radio-group的this)
+			// 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性
+			// 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化
+			this.parent = this.$u.$parent.call(this, parentName);
+			if(this.parent) {
+				// 历遍parentData中的属性,将parent中的同名属性赋值给parentData
+				Object.keys(this.parentData).map(key => {
+					this.parentData[key] = this.parent[key];
+				});
+			}
+		},
+		// 阻止事件冒泡
+		preventEvent(e) {
+			e && e.stopPropagation && e.stopPropagation()
+		}
+	},
+	onReachBottom() {
+		uni.$emit('uOnReachBottom')
+	}
+}
diff --git a/uview-ui/libs/mixin/mpShare.js b/uview-ui/libs/mixin/mpShare.js
new file mode 100644
index 0000000..057d369
--- /dev/null
+++ b/uview-ui/libs/mixin/mpShare.js
@@ -0,0 +1,18 @@
+module.exports = {
+	onLoad() {
+		// 设置默认的转发参数
+		this.$u.mpShare = {
+			title: '', // 默认为小程序名称
+			path: '', // 默认为当前页面路径
+			imageUrl: '' // 默认为当前页面的截图
+		}
+	},
+	onShareAppMessage() {
+		return this.$u.mpShare
+	},
+	// #ifdef MP-WEIXIN
+	onShareTimeline() {
+		return this.$u.mpShare
+	}
+	// #endif
+}