瀏覽代碼

no message

yanjie 4 年之前
當前提交
98a6e1667b
共有 100 個文件被更改,包括 13400 次插入0 次删除
  1. 23 0
      App.vue
  2. 178 0
      common/authorize.js
  3. 3 0
      common/env.js
  4. 205 0
      common/md5.js
  5. 289 0
      common/request.js
  6. 137 0
      common/user.js
  7. 191 0
      common/util.js
  8. 184 0
      components/colorui/animation.css
  9. 36 0
      components/colorui/icon.css
  10. 3917 0
      components/colorui/main.css
  11. 147 0
      components/watch-button.vue
  12. 208 0
      components/watch-input.vue
  13. 29 0
      main.js
  14. 99 0
      manifest.json
  15. 86 0
      pages.json
  16. 25 0
      pages/archives/my_archives.vue
  17. 296 0
      pages/doctor_related/doctor_info.vue
  18. 81 0
      pages/doctor_related/info_write.vue
  19. 283 0
      pages/doctor_related/select_doctor.vue
  20. 92 0
      pages/index/book.vue
  21. 404 0
      pages/index/index.vue
  22. 2 0
      pages/index/mine.css
  23. 239 0
      pages/index/mine.vue
  24. 94 0
      pages/login/css/main.css
  25. 58 0
      pages/login/login.vue
  26. 二進制
      static/img/book.png
  27. 二進制
      static/img/book_select.png
  28. 二進制
      static/img/home.png
  29. 二進制
      static/img/home_select.png
  30. 二進制
      static/img/my.png
  31. 二進制
      static/img/my_select.png
  32. 80 0
      store/index.js
  33. 77 0
      uni.scss
  34. 0 0
      unpackage/dist/dev/.automator/mp-weixin/.automator.json
  35. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  36. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  37. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/watch-button.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/watch-input.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/archives/my_archives.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/doctor_info.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/info_write.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/select_doctor.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/book.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/mine.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-back-top/u-back-top.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-card/u-card.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-group/u-cell-group.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-item/u-cell-item.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-column-notice/u-column-notice.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-dropdown-item/u-dropdown-item.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-dropdown/u-dropdown.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-grid-item/u-grid-item.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-grid/u-grid.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-icon/u-icon.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-image/u-image.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-line/u-line.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loading/u-loading.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loadmore/u-loadmore.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-notice-bar/u-notice-bar.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-read-more/u-read-more.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-row-notice/u-row-notice.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-search/u-search.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-section/u-section.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-skeleton/u-skeleton.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-swiper/u-swiper.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-tag/u-tag.js.map
  70. 4 0
      unpackage/dist/dev/mp-weixin/app.js
  71. 65 0
      unpackage/dist/dev/mp-weixin/app.json
  72. 3 0
      unpackage/dist/dev/mp-weixin/app.wxss
  73. 129 0
      unpackage/dist/dev/mp-weixin/common/main.js
  74. 3763 0
      unpackage/dist/dev/mp-weixin/common/main.wxss
  75. 273 0
      unpackage/dist/dev/mp-weixin/common/runtime.js
  76. 10 0
      unpackage/dist/dev/mp-weixin/common/vendor.js
  77. 202 0
      unpackage/dist/dev/mp-weixin/components/watch-button.js
  78. 4 0
      unpackage/dist/dev/mp-weixin/components/watch-button.json
  79. 1 0
      unpackage/dist/dev/mp-weixin/components/watch-button.wxml
  80. 41 0
      unpackage/dist/dev/mp-weixin/components/watch-button.wxss
  81. 322 0
      unpackage/dist/dev/mp-weixin/components/watch-input.js
  82. 4 0
      unpackage/dist/dev/mp-weixin/components/watch-input.json
  83. 1 0
      unpackage/dist/dev/mp-weixin/components/watch-input.wxml
  84. 41 0
      unpackage/dist/dev/mp-weixin/components/watch-input.wxss
  85. 11 0
      unpackage/dist/dev/mp-weixin/pages/archives/my_archives.js
  86. 4 0
      unpackage/dist/dev/mp-weixin/pages/archives/my_archives.json
  87. 1 0
      unpackage/dist/dev/mp-weixin/pages/archives/my_archives.wxml
  88. 27 0
      unpackage/dist/dev/mp-weixin/pages/archives/my_archives.wxss
  89. 280 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.js
  90. 7 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.json
  91. 1 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.wxml
  92. 2 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.wxss
  93. 218 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.js
  94. 4 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.json
  95. 1 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.wxml
  96. 27 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.wxss
  97. 351 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.js
  98. 13 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.json
  99. 0 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.wxml
  100. 127 0
      unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.wxss

+ 23 - 0
App.vue

xqd
@@ -0,0 +1,23 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch');
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import "uview-ui/index.scss";
+	page{
+		background-color: #f8f8f8;
+		width: 100%;
+	}
+	@import "@/components/colorui/main.css";
+	@import "@/components/colorui/icon.css";
+</style>

+ 178 - 0
common/authorize.js

xqd
@@ -0,0 +1,178 @@
+var utilMd5 = require('./md5.js');
+const tx_key = 'XSWBZ-TBVWD-QJ54G-HGYZW-5AWQK-M2FYS'; // 腾讯地图key
+const tx_secret_key = ''; // key对应的签名
+
+// 登录
+function login() {
+	let promise = new Promise((resolve, reject) => {
+		wx.login({
+			success: res => {
+				console.log(res)
+				// 发送 res.code 到后台换取 openId, sessionKey, unionId
+				wx.request({
+					url: 'https://t5.9026.com/api/v1/common/wxLogin',
+					data: {
+						wechat_code: res.code
+					},
+					method: "POST",
+					header: {
+						'content-type': 'application/json'
+					},
+					success: function(res) {
+						resolve(res)
+					},
+					fail: function(e) {
+						reject(e)
+					}
+				});
+			},
+			fail: res => {
+				reject('登录失败')
+			}
+		})
+	})
+	return promise;
+}
+
+// 获取用户信息
+function getUserInfo() {
+	let promise = new Promise((resolve, reject) => {
+		getAuthSetting('scope.userInfo', false, '用户信息').then(res => {
+			if (res) {
+				// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
+				wx.getUserInfo({
+					success: res => {
+						// 可以将 res 发送给后台解码出 unionId
+						resolve('获取用户信息成功', res.userInfo)
+					}
+				})
+			} else {
+				resolve(false)
+			}
+		}).catch(res => {
+			reject(res)
+		})
+	})
+	return promise;
+}
+
+// 打开授权设置界面
+function openSetting(scope, isMust, name) { // scope是权限字段,isMust表示是否必须授权, name是授权信息名,用于模态框信息展示
+	let promise = new Promise((resolve, reject) => {
+		wx.showModal({
+			title: '授权提示',
+			content: '请先授权获取' + name,
+			success(res) {
+				if (res.confirm) {
+					wx.openSetting({
+						success(res) {
+							if (res.authSetting[scope]) { // 用户打开了授权开关
+								resolve(true)
+							} else { // 用户没有打开授权开关, 继续打开设置页面
+								if (isMust) {
+									openSetting(scope, isMust, name)
+								} else {
+									reject('获取用户授权信息失败')
+								}
+							}
+						},
+						fail(res) {}
+					})
+				} else if (res.cancel) {
+					if (isMust) {
+						openSetting(scope, isMust, name)
+					} else {
+						reject('获取用户授权信息失败')
+					}
+				}
+			}
+		})
+	})
+	return promise;
+}
+
+function getAuthSetting(scope, isMust, name) { // 获取用户授权信息,scope是授权的权限字段名, isMust表示是否必须授权才能进行下一步
+	let promise = new Promise((resolve, reject) => {
+		wx.getSetting({
+			success: res => {
+				if (res.authSetting[scope]) {
+					resolve(true) // 用户已经授权
+				} else {
+					// 用户还没有授权,向用户发起授权请求
+					wx.authorize({
+						scope: scope,
+						success() { // 用户同意授权
+							resolve(true)
+						},
+						fail() { // 用户不同意授权
+							if (isMust) { // 如果是必须授权才能进行下一步的接口,则打开设置页面
+								openSetting(scope, isMust, name).then(res => {
+									resolve(true)
+								}).catch(res => {
+									resolve(false)
+								})
+							} else { // 如果不是必须授权的接口,则直接返回未授权状态
+								resolve(false)
+							}
+						}
+					})
+				}
+			},
+			fail: res => {
+				reject('获取用户授权信息失败')
+			}
+		})
+	})
+	return promise;
+}
+
+function getLocation() { // 获取地理位置信息
+	let promise = new Promise((resolve, reject) => {
+		getAuthSetting('scope.userLocation', true, '地理位置信息').then(res => { // 获取用户信息,must必须授权
+			if (res) {
+				// 已经授权,可以直接获取地理位置
+				let _this = this
+				wx.getLocation({
+					type: 'wgs84',
+					success(res) {
+						console.log(res)
+						let locationData = { // 新建一个对象用于保存经纬度等信息
+							latitude: res.latitude, // 纬度
+							longitude: res.longitude // 经度
+						}
+						let sig = utilMd5.hexMD5("/ws/geocoder/v1?key=" + tx_key + "&location=" + res.latitude + "," + res.longitude +
+							tx_secret_key)
+						let getAddressUrl = "https://apis.map.qq.com/ws/geocoder/v1?key=" + tx_key + "&location=" + res.latitude +
+							"," + res.longitude + "&sig=" + sig;
+						wx.request({ // 请求腾讯地图接口获取地理位置
+							url: getAddressUrl,
+							success: function(res) {
+								if (res.data.status == 0) { // 获取地理位置成功
+									locationData.address = res.data.result
+									resolve(locationData)
+								} else { // 获取地理位置信息失败
+									reject('获取地理位置信息失败')
+								}
+							}
+						})
+					},
+					fail(res) {
+						reject('获取地理位置信息失败')
+					}
+				})
+			} else {
+
+			}
+		}).catch(res => {
+			reject(res)
+		})
+	})
+	return promise;
+}
+
+module.exports = {
+	login: login, // 登录 + 获取openID
+	getUserInfo: getUserInfo, // 获取用户信息
+	getAuthSetting: getAuthSetting, // 获取授权信息, 可选择是否必须授权
+	getLocation: getLocation // 获取经纬度 + 经纬度通过腾讯地图签名校验的方式换取城市位置
+}

+ 3 - 0
common/env.js

xqd
@@ -0,0 +1,3 @@
+export const envHost = 'https://t5.9026.com'; //开发环境
+// export const imgHost='https://www.juyinzhengxin.com/';
+export const imgHost = 'https://zhengda.oss-cn-chengdu.aliyuncs.com/juyin';

+ 205 - 0
common/md5.js

xqd
@@ -0,0 +1,205 @@
+/* 
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message 
+ * Digest Algorithm, as defined in RFC 1321. 
+ * Version 1.1 Copyright (C) Paul Johnston 1999 - 2002. 
+ * Code also contributed by Greg Holt 
+ * See http://pajhome.org.uk/site/legal.html for details. 
+ */
+
+/* 
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally 
+ * to work around bugs in some JS interpreters. 
+ */
+function safe_add(x, y) {
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF)
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
+  return (msw << 16) | (lsw & 0xFFFF)
+}
+
+/* 
+ * Bitwise rotate a 32-bit number to the left. 
+ */
+function rol(num, cnt) {
+  return (num << cnt) | (num >>> (32 - cnt))
+}
+
+/* 
+ * These functions implement the four basic operations the algorithm uses. 
+ */
+function cmn(q, a, b, x, s, t) {
+  return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
+}
+function ff(a, b, c, d, x, s, t) {
+  return cmn((b & c) | ((~b) & d), a, b, x, s, t)
+}
+function gg(a, b, c, d, x, s, t) {
+  return cmn((b & d) | (c & (~d)), a, b, x, s, t)
+}
+function hh(a, b, c, d, x, s, t) {
+  return cmn(b ^ c ^ d, a, b, x, s, t)
+}
+function ii(a, b, c, d, x, s, t) {
+  return cmn(c ^ (b | (~d)), a, b, x, s, t)
+}
+
+/* 
+ * Calculate the MD5 of an array of little-endian words, producing an array 
+ * of little-endian words. 
+ */
+function coreMD5(x) {
+  var a = 1732584193
+  var b = -271733879
+  var c = -1732584194
+  var d = 271733878
+
+  for (var i = 0; i < x.length; i += 16) {
+    var olda = a
+    var oldb = b
+    var oldc = c
+    var oldd = d
+
+    a = ff(a, b, c, d, x[i + 0], 7, -680876936)
+    d = ff(d, a, b, c, x[i + 1], 12, -389564586)
+    c = ff(c, d, a, b, x[i + 2], 17, 606105819)
+    b = ff(b, c, d, a, x[i + 3], 22, -1044525330)
+    a = ff(a, b, c, d, x[i + 4], 7, -176418897)
+    d = ff(d, a, b, c, x[i + 5], 12, 1200080426)
+    c = ff(c, d, a, b, x[i + 6], 17, -1473231341)
+    b = ff(b, c, d, a, x[i + 7], 22, -45705983)
+    a = ff(a, b, c, d, x[i + 8], 7, 1770035416)
+    d = ff(d, a, b, c, x[i + 9], 12, -1958414417)
+    c = ff(c, d, a, b, x[i + 10], 17, -42063)
+    b = ff(b, c, d, a, x[i + 11], 22, -1990404162)
+    a = ff(a, b, c, d, x[i + 12], 7, 1804603682)
+    d = ff(d, a, b, c, x[i + 13], 12, -40341101)
+    c = ff(c, d, a, b, x[i + 14], 17, -1502002290)
+    b = ff(b, c, d, a, x[i + 15], 22, 1236535329)
+
+    a = gg(a, b, c, d, x[i + 1], 5, -165796510)
+    d = gg(d, a, b, c, x[i + 6], 9, -1069501632)
+    c = gg(c, d, a, b, x[i + 11], 14, 643717713)
+    b = gg(b, c, d, a, x[i + 0], 20, -373897302)
+    a = gg(a, b, c, d, x[i + 5], 5, -701558691)
+    d = gg(d, a, b, c, x[i + 10], 9, 38016083)
+    c = gg(c, d, a, b, x[i + 15], 14, -660478335)
+    b = gg(b, c, d, a, x[i + 4], 20, -405537848)
+    a = gg(a, b, c, d, x[i + 9], 5, 568446438)
+    d = gg(d, a, b, c, x[i + 14], 9, -1019803690)
+    c = gg(c, d, a, b, x[i + 3], 14, -187363961)
+    b = gg(b, c, d, a, x[i + 8], 20, 1163531501)
+    a = gg(a, b, c, d, x[i + 13], 5, -1444681467)
+    d = gg(d, a, b, c, x[i + 2], 9, -51403784)
+    c = gg(c, d, a, b, x[i + 7], 14, 1735328473)
+    b = gg(b, c, d, a, x[i + 12], 20, -1926607734)
+
+    a = hh(a, b, c, d, x[i + 5], 4, -378558)
+    d = hh(d, a, b, c, x[i + 8], 11, -2022574463)
+    c = hh(c, d, a, b, x[i + 11], 16, 1839030562)
+    b = hh(b, c, d, a, x[i + 14], 23, -35309556)
+    a = hh(a, b, c, d, x[i + 1], 4, -1530992060)
+    d = hh(d, a, b, c, x[i + 4], 11, 1272893353)
+    c = hh(c, d, a, b, x[i + 7], 16, -155497632)
+    b = hh(b, c, d, a, x[i + 10], 23, -1094730640)
+    a = hh(a, b, c, d, x[i + 13], 4, 681279174)
+    d = hh(d, a, b, c, x[i + 0], 11, -358537222)
+    c = hh(c, d, a, b, x[i + 3], 16, -722521979)
+    b = hh(b, c, d, a, x[i + 6], 23, 76029189)
+    a = hh(a, b, c, d, x[i + 9], 4, -640364487)
+    d = hh(d, a, b, c, x[i + 12], 11, -421815835)
+    c = hh(c, d, a, b, x[i + 15], 16, 530742520)
+    b = hh(b, c, d, a, x[i + 2], 23, -995338651)
+
+    a = ii(a, b, c, d, x[i + 0], 6, -198630844)
+    d = ii(d, a, b, c, x[i + 7], 10, 1126891415)
+    c = ii(c, d, a, b, x[i + 14], 15, -1416354905)
+    b = ii(b, c, d, a, x[i + 5], 21, -57434055)
+    a = ii(a, b, c, d, x[i + 12], 6, 1700485571)
+    d = ii(d, a, b, c, x[i + 3], 10, -1894986606)
+    c = ii(c, d, a, b, x[i + 10], 15, -1051523)
+    b = ii(b, c, d, a, x[i + 1], 21, -2054922799)
+    a = ii(a, b, c, d, x[i + 8], 6, 1873313359)
+    d = ii(d, a, b, c, x[i + 15], 10, -30611744)
+    c = ii(c, d, a, b, x[i + 6], 15, -1560198380)
+    b = ii(b, c, d, a, x[i + 13], 21, 1309151649)
+    a = ii(a, b, c, d, x[i + 4], 6, -145523070)
+    d = ii(d, a, b, c, x[i + 11], 10, -1120210379)
+    c = ii(c, d, a, b, x[i + 2], 15, 718787259)
+    b = ii(b, c, d, a, x[i + 9], 21, -343485551)
+
+    a = safe_add(a, olda)
+    b = safe_add(b, oldb)
+    c = safe_add(c, oldc)
+    d = safe_add(d, oldd)
+  }
+  return [a, b, c, d]
+}
+
+/* 
+ * Convert an array of little-endian words to a hex string. 
+ */
+function binl2hex(binarray) {
+  var hex_tab = "0123456789abcdef"
+  var str = ""
+  for (var i = 0; i < binarray.length * 4; i++) {
+    str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) +
+      hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF)
+  }
+  return str
+}
+
+/* 
+ * Convert an array of little-endian words to a base64 encoded string. 
+ */
+function binl2b64(binarray) {
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
+  var str = ""
+  for (var i = 0; i < binarray.length * 32; i += 6) {
+    str += tab.charAt(((binarray[i >> 5] << (i % 32)) & 0x3F) |
+      ((binarray[i >> 5 + 1] >> (32 - i % 32)) & 0x3F))
+  }
+  return str
+}
+
+/* 
+ * Convert an 8-bit character string to a sequence of 16-word blocks, stored 
+ * as an array, and append appropriate padding for MD4/5 calculation. 
+ * If any of the characters are >255, the high byte is silently ignored. 
+ */
+function str2binl(str) {
+  var nblk = ((str.length + 8) >> 6) + 1 // number of 16-word blocks  
+  var blks = new Array(nblk * 16)
+  for (var i = 0; i < nblk * 16; i++) blks[i] = 0
+  for (var i = 0; i < str.length; i++)
+    blks[i >> 2] |= (str.charCodeAt(i) & 0xFF) << ((i % 4) * 8)
+  blks[i >> 2] |= 0x80 << ((i % 4) * 8)
+  blks[nblk * 16 - 2] = str.length * 8
+  return blks
+}
+
+/* 
+ * Convert a wide-character string to a sequence of 16-word blocks, stored as 
+ * an array, and append appropriate padding for MD4/5 calculation. 
+ */
+function strw2binl(str) {
+  var nblk = ((str.length + 4) >> 5) + 1 // number of 16-word blocks  
+  var blks = new Array(nblk * 16)
+  for (var i = 0; i < nblk * 16; i++) blks[i] = 0
+  for (var i = 0; i < str.length; i++)
+    blks[i >> 1] |= str.charCodeAt(i) << ((i % 2) * 16)
+  blks[i >> 1] |= 0x80 << ((i % 2) * 16)
+  blks[nblk * 16 - 2] = str.length * 16
+  return blks
+}
+
+/* 
+ * External interface 
+ */
+function hexMD5(str) { return binl2hex(coreMD5(str2binl(str))) }
+function hexMD5w(str) { return binl2hex(coreMD5(strw2binl(str))) }
+function b64MD5(str) { return binl2b64(coreMD5(str2binl(str))) }
+function b64MD5w(str) { return binl2b64(coreMD5(strw2binl(str))) }
+/* Backward compatibility */
+function calcMD5(str) { return binl2hex(coreMD5(str2binl(str))) }
+module.exports = {
+  hexMD5: hexMD5
+}  

+ 289 - 0
common/request.js

xqd
@@ -0,0 +1,289 @@
+import store from '@/store'
+
+//获取环境接口地址
+import {
+	envHost
+} from '@/common/env';
+var user = require('@/common/user.js');
+
+/**
+ *  判断传入参数的类型,以字符串的形式返回
+ *  @obj:数据
+ **/
+function dataType(obj) {
+	if (obj === null) return "Null";
+	if (obj === undefined) return "Undefined";
+	return Object.prototype.toString.call(obj).slice(8, -1);
+};
+/**
+ * 处理对象参数值,排除对象参数值为”“、null、undefined,并返回一个新对象
+ **/
+function dealObjectValue(obj) {
+	var param = {};
+	if (obj === null || obj === undefined || obj === "") return param;
+	for (var key in obj) {
+		if (dataType(obj[key]) === "Object") {
+			param[key] = dealObjectValue(obj[key]);
+		} else if (obj[key] !== null && obj[key] !== undefined && obj[key] !== "") {
+			param[key] = obj[key];
+		}
+	}
+	return param;
+};
+
+
+const post = function(url, data, showloading) {
+	if (showloading != false) {
+		uni.showLoading({
+			mask: true,
+			title: '加载中'
+		});
+	}
+	return new Promise(function(resolve, reject) {
+		data = dealObjectValue(data);
+		const jwt = store.getters['getJwt'];
+		const header = {
+			'content-type': 'application/x-www-form-urlencoded',
+			'token': jwt //自定义请求头信息
+		}
+		uni.request({
+			url: envHost + url,
+			method: 'POST',
+			data: data,
+			header: header,
+			success: function(res) {
+				console.info(res)
+				if (res.statusCode == 200) {
+					if (res.data.code == 403) {
+						store.commit('logout');
+						user.loginByWeixinCode().then(res => {
+                            console.info(res)
+						}).catch(err => {
+
+						});
+					} else {
+						resolve(res.data);
+					}
+				} else {
+					reject(res.errMsg);
+				}
+			},
+			fail: function(err) {
+				reject();
+				// let errmsg = err.response.data;
+				// switch (err.response.status) {
+				// 	case 0:
+				// 		console.log("网络连接错误")
+				// 		errmsg = "网络连接错误";
+				// 		break;
+				// 	case 401:
+				// 		console.log("请登录后操作")
+				// 		errmsg = '请登录后操作';
+				// 		store.dispatch('logout');
+				// 		uni.redirectTo({
+				// 			url: '/pages/auth/login'
+				// 		})
+				// 		break
+				// 	case 404:
+				// 		errmsg = "接口不存在";
+				// 		break
+				// }
+				// uni.showToast({
+				// 	title: errmsg,
+				// 	icon: 'none'
+				// })
+			},
+			complete: function() {
+				uni.hideLoading();
+			}
+		});
+	});
+}
+
+const get = function(url, data, showloading) {
+	if (showloading != false) {
+		uni.showLoading({
+			mask: true,
+			title: '加载中'
+		});
+	}
+	return new Promise(function(resolve, reject) {
+		data = dealObjectValue(data);
+		const jwt = store.getters['getJwt'];
+		const header = {
+			'token': jwt //自定义请求头信息
+		}
+		uni.request({
+			url: envHost + url,
+			method: 'GET',
+			data: data,
+			header: header,
+			success: function(res) {
+				//console.info(res)
+				if (res.statusCode == 200) {
+					if (res.data.code == 403) {
+						store.commit('logout');
+						user.loginByWeixinCode().then(res => {
+						    console.info(res)
+						}).catch(err => {
+						
+						});
+					} else {
+						resolve(res.data);
+					}
+				} else {
+					reject(res.errMsg);
+				}
+			},
+			fail: function(err) {
+				reject();
+				// let errmsg = err.response.data;
+				// switch (err.response.status) {
+				// 	case 0:
+				// 		console.log("网络连接错误")
+				// 		errmsg = "网络连接错误";
+				// 		break;
+				// 	case 401:
+				// 		console.log("请登录后操作")
+				// 		errmsg = '请登录后操作';
+				// 		store.dispatch('logout');
+				// 		uni.redirectTo({
+				// 			url: '/pages/auth/login'
+				// 		})
+				// 		break
+				// 	case 404:
+				// 		errmsg = "接口不存在";
+				// 		break
+				// }
+				// uni.showToast({
+				// 	title: errmsg,
+				// 	icon: 'none'
+				// })
+			},
+			complete: function() {
+				uni.hideLoading();
+			}
+		});
+	});
+}
+const upload = function(url, file, data, showloading) {
+	if (showloading != false) {
+		uni.showLoading({
+			mask: true,
+			title: '上传中...'
+		});
+	}
+	return new Promise((resolve, reject) => {
+		data = dealObjectValue(data);
+		const jwt = store.getters['getJwt'];
+		const header = {
+			'token': jwt //自定义请求头信息
+		}
+		uni.uploadFile({
+			url: envHost + url,
+			// files: files,
+			filePath: file,
+			name: 'file',
+			formData: data,
+			header: header,
+			success: (res) => {
+				console.info(res)
+				resolve(res.data);
+			},
+			fail: (err) => {
+				uni.showModal({
+					content: err.errMsg,
+					showCancel: false
+				})
+				reject(err);
+				console.log('uploadImage fail', err);
+			},
+			complete: () => {
+				uni.hideLoading();
+			}
+		})
+	});
+}
+
+const uploadAsync = function(url, file, data, success, showloading) {
+	if (showloading != false) {
+		uni.showLoading({
+			mask: true,
+			title: '上传中...'
+		});
+	}
+	data = dealObjectValue(data);
+	const jwt = store.getters['getJwt'];
+	const header = {
+		'token': jwt //自定义请求头信息
+	}
+	return uni.uploadFile({
+		url: envHost + url,
+		// files: files,
+		filePath: file,
+		name: 'file',
+		formData: data,
+		header: header,
+		success: (res) => {
+			console.info(res)
+			if (success)
+				success(JSON.parse(res.data));
+		},
+		fail: (err) => {
+			uni.showModal({
+				content: err.errMsg,
+				showCancel: false
+			})
+			console.log('uploadImage fail', err);
+		},
+		complete: () => {
+			uni.hideLoading();
+		}
+	});
+}
+
+const uploadFiles = function(url, files, data, showloading) {
+	if (showloading != false) {
+		uni.showLoading({
+			mask: true,
+			title: '上传中...'
+		});
+	}
+	console.info(files)
+	return new Promise((resolve, reject) => {
+		data = dealObjectValue(data);
+		const jwt = store.getters['getJwt'];
+		const header = {
+			'token': jwt //自定义请求头信息
+		}
+		uni.uploadFile({
+			url: envHost + url,
+			files: files,
+			formData: data,
+			header: header,
+			success: (res) => {
+				console.info(JSON.stringify(res))
+				resolve(JSON.parse(res.data));
+			},
+			fail: (err) => {
+				uni.showModal({
+					content: err.errMsg,
+					showCancel: false
+				})
+				reject(err);
+				console.log('uploadImage fail', err);
+			},
+			complete: () => {
+				uni.hideLoading();
+			}
+		})
+	});
+}
+
+export default {
+	post,
+	upload,
+	uploadAsync,
+	uploadFiles,
+	get
+}

+ 137 - 0
common/user.js

xqd
@@ -0,0 +1,137 @@
+/**
+ * 用户相关服务
+ */
+import store from '@/store'
+import request from '@/common/request'
+
+
+/**
+ * Promise封装wx.checkSession
+ */
+function checkSession() {
+	return new Promise(function(resolve, reject) {
+		wx.checkSession({
+			success: function() {
+				resolve(true);
+			},
+			fail: function() {
+				reject(false);
+			}
+		})
+	});
+}
+
+/**
+ * Promise封装wx.login
+ */
+function login() {
+	return new Promise(function(resolve, reject) {
+		wx.login({
+			success: function(res) {
+				if (res.code) {
+					resolve(res);
+				} else {
+					reject(res);
+				}
+			},
+			fail: function(err) {
+				reject(err);
+			}
+		});
+	});
+}
+/**
+ * 调用微信登录
+ */
+function loginByWeixinCode() {
+	return new Promise(function(resolve, reject) {
+		return login().then((res) => {
+			var code = res.code;
+			//登录远程服务器
+			request.post('/api/v1/common/wxLogin', {
+				wechat_code: code
+			}).then(res => {
+				if (res.code == 200) {
+					if (res.data.token) {
+						store.commit('setJwt', res.data.token);
+						store.commit('setUser', res.data);
+						store.commit('login');
+						resolve(res);
+					} else {
+						uni.showToast({
+							title: '登录失败',
+							icon: "none"
+						})
+						reject(res);
+					}
+				} else {
+					reject(res);
+				}
+			}).catch((err) => {
+				reject(err);
+			});
+		}).catch((err) => {
+			reject(err);
+		})
+	});
+}
+/**
+ * 调用微信登录
+ */
+function loginByWeixin(userInfo) {
+	return new Promise(function(resolve, reject) {
+		return login().then((res) => {
+			var code = res.code;
+			//登录远程服务器
+			request.post('/api/v1/common/wxLogin', {
+				// up_id: uni.getStorageSync("up_id"),
+				wechat_code: code,
+				nickname: userInfo.nickName,
+				avatar: userInfo.avatarUrl,
+			}).then(res => {
+				if (res.status == 0) {
+					if (res.data.token) {
+						store.commit('setJwt', res.data.token);
+						store.commit('setUser', res.data);
+						store.commit('login');
+						resolve(res);
+					} else {
+						reject(res);
+					}
+				} else {
+					reject(res);
+				}
+			}).catch((err) => {
+				reject(err);
+			});
+		}).catch((err) => {
+			reject(err);
+		})
+	});
+}
+
+/**
+ * 判断用户是否登录
+ */
+function checkLogin() {
+	return new Promise(function(resolve, reject) {
+		if (store.getters['verifyJwt']) {
+			checkSession().then(() => {
+				resolve(true);
+			}).catch(() => {
+				reject(false);
+			});
+		} else {
+			reject(false);
+		}
+	});
+}
+
+
+
+
+module.exports = {
+	loginByWeixin,
+	loginByWeixinCode,
+	checkLogin,
+};

+ 191 - 0
common/util.js

xqd
@@ -0,0 +1,191 @@
+
+function ViewImage(imgList, e) {
+	uni.previewImage({
+		urls: imgList,
+		current: e.currentTarget.dataset.url
+	});
+}
+
+function formatTime(time) {
+	if (typeof time !== 'number' || time < 0) {
+		return time
+	}
+
+	var hour = parseInt(time / 3600)
+	time = time % 3600
+	var minute = parseInt(time / 60)
+	time = time % 60
+	var second = time
+
+	return ([hour, minute, second]).map(function(n) {
+		n = n.toString()
+		return n[1] ? n : '0' + n
+	}).join(':')
+}
+// 判断是否为手机号
+function isPhoneNumber(pone) {
+	var myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
+	if (!myreg.test(pone)) {
+		return false;
+	} else {
+		return true;
+	}
+}
+//密码判断
+function isPassword(p) {
+	var myreg = /^[a-zA-Z0-9]{6,12}$/;
+	if (!myreg.test(p)) {
+		return false;
+	} else {
+		return true;
+	}
+}
+//判断验证码
+function isCaptcha(p) {
+	var myreg = /^[0-9A-Za-z]{4,12}$/;
+	if (!myreg.test(p)) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+
+
+//判断用户名
+function isUserName(p) {
+	var myreg = /^[a-zA-Z0-9]{1,20}$/;
+	if (!myreg.test(p)) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+//判断身份证
+function isIdCard(value) {
+	let myReg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
+	if (!myReg.test(value)) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+
+const isEmpty = function(a) {
+	return typeof(a) == 'undefined' || a == null || a == '' || a == 'undefined';
+}
+
+
+
+function formatLocation(longitude, latitude) {
+	if (typeof longitude === 'string' && typeof latitude === 'string') {
+		longitude = parseFloat(longitude)
+		latitude = parseFloat(latitude)
+	}
+
+	longitude = longitude.toFixed(2)
+	latitude = latitude.toFixed(2)
+
+	return {
+		longitude: longitude.toString().split('.'),
+		latitude: latitude.toString().split('.')
+	}
+}
+
+var dateUtils = {
+	UNITS: {
+		'年': 31557600000,
+		'月': 2629800000,
+		'天': 86400000,
+		'小时': 3600000,
+		'分钟': 60000,
+		'秒': 1000
+	},
+	humanize: function(milliseconds, date) {
+		var humanize = '';
+		var _format = function(number) {
+			return (number < 10 ? ('0' + number) : number);
+		};
+		for (var key in this.UNITS) {
+			if (milliseconds >= this.UNITS[key]) {
+				switch (key) {
+					case '小时':
+						humanize = _format(date.getHours()) + ':' + _format(date.getMinutes());
+						break;
+					default:
+						humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
+						break;
+				}
+				break;
+			}
+		}
+		return humanize || '刚刚';
+	},
+	format: function(dateStr) {
+		var date = this.parse(dateStr)
+		var diff = Date.now() - date.getTime();
+		if (diff < this.UNITS['天']) {
+			return this.humanize(diff, date);
+		}
+		var _format = function(number) {
+			return (number < 10 ? ('0' + number) : number);
+		};
+		return date.getFullYear() + '-' + _format(date.getMonth() + 1) + '-' + _format(date.getDate()) + '-' +
+			_format(date.getHours()) + ':' + _format(date.getMinutes());
+	},
+	formatHms: function(dateStr) {
+		var date = this.parse(dateStr)
+		var _format = function(number) {
+			return (number < 10 ? ('0' + number) : number);
+		};
+		return _format(date.getHours()) + ':' + _format(date.getMinutes());
+	},
+	formatYMD: function(dateStr) {
+		var date = this.parse(dateStr)
+		var _format = function(number) {
+			return (number < 10 ? ('0' + number) : number);
+		};
+		return date.getFullYear() + '-' + _format(date.getMonth() + 1) + '-' + _format(date.getDate());
+	},
+	parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象
+		if (!str) {
+			return new Date();
+		}
+		var a = str.split(/[^0-9]/);
+		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
+	},
+	/**************************************时间格式化处理************************************/
+	dateFtt(fmt, date) { //author: meizz   
+		var o = {
+			"M+": date.getMonth() + 1, //月份   
+			"d+": date.getDate(), //日   
+			"H+": date.getHours(), //小时   
+			"m+": date.getMinutes(), //分   
+			"s+": date.getSeconds(), //秒   
+			"q+": Math.floor((date.getMonth() + 3) / 3), //季度   
+			"S": date.getMilliseconds() //毫秒   
+		};
+		if (/(y+)/.test(fmt))
+			fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
+		for (var k in o)
+			if (new RegExp("(" + k + ")").test(fmt))
+				fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+		return fmt;
+	},
+
+};
+
+module.exports = {
+	formatTime: formatTime,
+	isPhoneNumber: isPhoneNumber,
+	isUserName: isUserName,
+	isPassword: isPassword,
+	isCaptcha: isCaptcha,
+	formatLocation: formatLocation,
+	dateUtils: dateUtils,
+	isEmpty: isEmpty,
+	isIdCard: isIdCard,
+	ViewImage: ViewImage,
+}

+ 184 - 0
components/colorui/animation.css

xqd
@@ -0,0 +1,184 @@
+/* 
+  Animation 微动画  
+  基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28
+ */
+
+/* css 滤镜 控制黑白底色gif的 */
+.gif-black{  
+  mix-blend-mode: screen;  
+}
+.gif-white{  
+  mix-blend-mode: multiply; 
+}
+
+
+/* Animation css */
+[class*=animation-] {
+    animation-duration: .5s;
+    animation-timing-function: ease-out;
+    animation-fill-mode: both
+}
+
+.animation-fade {
+    animation-name: fade;
+    animation-duration: .8s;
+    animation-timing-function: linear
+}
+
+.animation-scale-up {
+    animation-name: scale-up
+}
+
+.animation-scale-down {
+    animation-name: scale-down
+}
+
+.animation-slide-top {
+    animation-name: slide-top
+}
+
+.animation-slide-bottom {
+    animation-name: slide-bottom
+}
+
+.animation-slide-left {
+    animation-name: slide-left
+}
+
+.animation-slide-right {
+    animation-name: slide-right
+}
+
+.animation-shake {
+    animation-name: shake
+}
+
+.animation-reverse {
+    animation-direction: reverse
+}
+
+@keyframes fade {
+    0% {
+        opacity: 0
+    }
+
+    100% {
+        opacity: 1
+    }
+}
+
+@keyframes scale-up {
+    0% {
+        opacity: 0;
+        transform: scale(.2)
+    }
+
+    100% {
+        opacity: 1;
+        transform: scale(1)
+    }
+}
+
+@keyframes scale-down {
+    0% {
+        opacity: 0;
+        transform: scale(1.8)
+    }
+
+    100% {
+        opacity: 1;
+        transform: scale(1)
+    }
+}
+
+@keyframes slide-top {
+    0% {
+        opacity: 0;
+        transform: translateY(-100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateY(0)
+    }
+}
+
+@keyframes slide-bottom {
+    0% {
+        opacity: 0;
+        transform: translateY(100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateY(0)
+    }
+}
+
+@keyframes shake {
+
+    0%,
+    100% {
+        transform: translateX(0)
+    }
+
+    10% {
+        transform: translateX(-9px)
+    }
+
+    20% {
+        transform: translateX(8px)
+    }
+
+    30% {
+        transform: translateX(-7px)
+    }
+
+    40% {
+        transform: translateX(6px)
+    }
+
+    50% {
+        transform: translateX(-5px)
+    }
+
+    60% {
+        transform: translateX(4px)
+    }
+
+    70% {
+        transform: translateX(-3px)
+    }
+
+    80% {
+        transform: translateX(2px)
+    }
+
+    90% {
+        transform: translateX(-1px)
+    }
+}
+
+@keyframes slide-left {
+    0% {
+        opacity: 0;
+        transform: translateX(-100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateX(0)
+    }
+}
+
+@keyframes slide-right {
+    0% {
+        opacity: 0;
+        transform: translateX(100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateX(0)
+    }
+}

文件差異過大導致無法顯示
+ 36 - 0
components/colorui/icon.css


+ 3917 - 0
components/colorui/main.css

xqd
@@ -0,0 +1,3917 @@
+/*
+  ColorUi for uniApp  v2.1.6 | by 文晓港 2019-05-31 10:44:24
+  仅供学习交流,如作它用所承受的法律责任一概与作者无关  
+  
+  *使用ColorUi开发扩展与插件时,请注明基于ColorUi开发 
+  
+  (QQ交流群:240787041)
+*/
+
+/* ==================
+        初始化
+ ==================== */
+body {
+	font-size: 28upx;
+	color: #333333;
+	font-family: Helvetica Neue, Helvetica, sans-serif;
+}
+
+view,
+scroll-view,
+swiper,
+button,
+input,
+textarea,
+label,
+navigator,
+image {
+	box-sizing: border-box;
+}
+
+.round {
+	border-radius: 5000upx;
+}
+
+.radius {
+	border-radius: 6upx;
+}
+
+/* ==================
+          图片
+ ==================== */
+
+image {
+	max-width: 100%;
+	display: inline-block;
+	position: relative;
+	z-index: 0;
+}
+
+image.loading::before {
+	content: "";
+	background-color: #f5f5f5;
+	display: block;
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: -2;
+}
+
+image.loading::after {
+	content: "\e7f1";
+	font-family: "cuIcon";
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 32upx;
+	height: 32upx;
+	line-height: 32upx;
+	right: 0;
+	bottom: 0;
+	z-index: -1;
+	font-size: 32upx;
+	margin: auto;
+	color: #ccc;
+	-webkit-animation: cuIcon-spin 2s infinite linear;
+	animation: cuIcon-spin 2s infinite linear;
+	display: block;
+}
+
+.response {
+	width: 100%;
+}
+
+/* ==================
+         开关
+ ==================== */
+
+switch,
+checkbox,
+radio {
+	position: relative;
+}
+
+switch::after,
+switch::before {
+	font-family: "cuIcon";
+	content: "\e645";
+	position: absolute;
+	color: #ffffff !important;
+	top: 0%;
+	left: 0upx;
+	font-size: 26upx;
+	line-height: 26px;
+	width: 50%;
+	text-align: center;
+	pointer-events: none;
+	transform: scale(0, 0);
+	transition: all 0.3s ease-in-out 0s;
+	z-index: 9;
+	bottom: 0;
+	height: 26px;
+	margin: auto;
+}
+
+switch::before {
+	content: "\e646";
+	right: 0;
+	transform: scale(1, 1);
+	left: auto;
+}
+
+switch[checked]::after,
+switch.checked::after {
+	transform: scale(1, 1);
+}
+
+switch[checked]::before,
+switch.checked::before {
+	transform: scale(0, 0);
+}
+
+/* #ifndef MP-ALIPAY */
+radio::before,
+checkbox::before {
+	font-family: "cuIcon";
+	content: "\e645";
+	position: absolute;
+	color: #ffffff !important;
+	top: 50%;
+	margin-top: -8px;
+	right: 5px;
+	font-size: 32upx;
+	line-height: 16px;
+	pointer-events: none;
+	transform: scale(1, 1);
+	transition: all 0.3s ease-in-out 0s;
+	z-index: 9;
+}
+
+radio .wx-radio-input,
+checkbox .wx-checkbox-input,
+radio .uni-radio-input,
+checkbox .uni-checkbox-input {
+	margin: 0;
+	width: 24px;
+	height: 24px;
+}
+
+checkbox.round .wx-checkbox-input,
+checkbox.round .uni-checkbox-input {
+	border-radius: 100upx;
+}
+
+/* #endif */
+
+switch[checked]::before {
+	transform: scale(0, 0);
+}
+
+switch .wx-switch-input,
+switch .uni-switch-input {
+	border: none;
+	padding: 0 24px;
+	width: 48px;
+	height: 26px;
+	margin: 0;
+	border-radius: 100upx;
+}
+
+switch .wx-switch-input:not([class*="bg-"]),
+switch .uni-switch-input:not([class*="bg-"]) {
+	background: #8799a3 !important;
+}
+
+switch .wx-switch-input::after,
+switch .uni-switch-input::after {
+	margin: auto;
+	width: 26px;
+	height: 26px;
+	border-radius: 100upx;
+	left: 0upx;
+	top: 0upx;
+	bottom: 0upx;
+	position: absolute;
+	transform: scale(0.9, 0.9);
+	transition: all 0.1s ease-in-out 0s;
+}
+
+switch .wx-switch-input.wx-switch-input-checked::after,
+switch .uni-switch-input.uni-switch-input-checked::after {
+	margin: auto;
+	left: 22px;
+	box-shadow: none;
+	transform: scale(0.9, 0.9);
+}
+
+radio-group {
+	display: inline-block;
+}
+
+
+
+switch.radius .wx-switch-input::after,
+switch.radius .wx-switch-input,
+switch.radius .wx-switch-input::before,
+switch.radius .uni-switch-input::after,
+switch.radius .uni-switch-input,
+switch.radius .uni-switch-input::before {
+	border-radius: 10upx;
+}
+
+switch .wx-switch-input::before,
+radio.radio::before,
+checkbox .wx-checkbox-input::before,
+radio .wx-radio-input::before,
+switch .uni-switch-input::before,
+radio.radio::before,
+checkbox .uni-checkbox-input::before,
+radio .uni-radio-input::before {
+	display: none;
+}
+
+radio.radio[checked]::after,
+radio.radio .uni-radio-input-checked::after {
+	content: "";
+	background-color: transparent;
+	display: block;
+	position: absolute;
+	width: 8px;
+	height: 8px;
+	z-index: 999;
+	top: 0upx;
+	left: 0upx;
+	right: 0;
+	bottom: 0;
+	margin: auto;
+	border-radius: 200upx;
+	/* #ifndef MP */
+	border: 7px solid #ffffff !important;
+	/* #endif */
+
+	/* #ifdef MP */
+	border: 8px solid #ffffff !important;
+	/* #endif */
+}
+
+.switch-sex::after {
+	content: "\e71c";
+}
+
+.switch-sex::before {
+	content: "\e71a";
+}
+
+.switch-sex .wx-switch-input,
+.switch-sex .uni-switch-input {
+	background: #e54d42 !important;
+	border-color: #e54d42 !important;
+}
+
+.switch-sex[checked] .wx-switch-input,
+.switch-sex.checked .uni-switch-input {
+	background: #0081ff !important;
+	border-color: #0081ff !important;
+}
+
+switch.red[checked] .wx-switch-input.wx-switch-input-checked,
+checkbox.red[checked] .wx-checkbox-input,
+radio.red[checked] .wx-radio-input,
+switch.red.checked .uni-switch-input.uni-switch-input-checked,
+checkbox.red.checked .uni-checkbox-input,
+radio.red.checked .uni-radio-input {
+	background-color: #e54d42 !important;
+	border-color: #e54d42 !important;
+	color: #ffffff !important;
+}
+
+switch.orange[checked] .wx-switch-input,
+checkbox.orange[checked] .wx-checkbox-input,
+radio.orange[checked] .wx-radio-input,
+switch.orange.checked .uni-switch-input,
+checkbox.orange.checked .uni-checkbox-input,
+radio.orange.checked .uni-radio-input {
+	background-color: #f37b1d !important;
+	border-color: #f37b1d !important;
+	color: #ffffff !important;
+}
+
+switch.yellow[checked] .wx-switch-input,
+checkbox.yellow[checked] .wx-checkbox-input,
+radio.yellow[checked] .wx-radio-input,
+switch.yellow.checked .uni-switch-input,
+checkbox.yellow.checked .uni-checkbox-input,
+radio.yellow.checked .uni-radio-input {
+	background-color: #fbbd08 !important;
+	border-color: #fbbd08 !important;
+	color: #333333 !important;
+}
+
+switch.olive[checked] .wx-switch-input,
+checkbox.olive[checked] .wx-checkbox-input,
+radio.olive[checked] .wx-radio-input,
+switch.olive.checked .uni-switch-input,
+checkbox.olive.checked .uni-checkbox-input,
+radio.olive.checked .uni-radio-input {
+	background-color: #8dc63f !important;
+	border-color: #8dc63f !important;
+	color: #ffffff !important;
+}
+
+switch.green[checked] .wx-switch-input,
+switch[checked] .wx-switch-input,
+checkbox.green[checked] .wx-checkbox-input,
+checkbox[checked] .wx-checkbox-input,
+radio.green[checked] .wx-radio-input,
+radio[checked] .wx-radio-input,
+switch.green.checked .uni-switch-input,
+switch.checked .uni-switch-input,
+checkbox.green.checked .uni-checkbox-input,
+checkbox.checked .uni-checkbox-input,
+radio.green.checked .uni-radio-input,
+radio.checked .uni-radio-input {
+	background-color: #39b54a !important;
+	border-color: #39b54a !important;
+	color: #ffffff !important;
+	border-color: #39B54A !important;
+}
+
+switch.cyan[checked] .wx-switch-input,
+checkbox.cyan[checked] .wx-checkbox-input,
+radio.cyan[checked] .wx-radio-input,
+switch.cyan.checked .uni-switch-input,
+checkbox.cyan.checked .uni-checkbox-input,
+radio.cyan.checked .uni-radio-input {
+	background-color: #1cbbb4 !important;
+	border-color: #1cbbb4 !important;
+	color: #ffffff !important;
+}
+
+switch.blue[checked] .wx-switch-input,
+checkbox.blue[checked] .wx-checkbox-input,
+radio.blue[checked] .wx-radio-input,
+switch.blue.checked .uni-switch-input,
+checkbox.blue.checked .uni-checkbox-input,
+radio.blue.checked .uni-radio-input {
+	background-color: #0081ff !important;
+	border-color: #0081ff !important;
+	color: #ffffff !important;
+}
+
+switch.purple[checked] .wx-switch-input,
+checkbox.purple[checked] .wx-checkbox-input,
+radio.purple[checked] .wx-radio-input,
+switch.purple.checked .uni-switch-input,
+checkbox.purple.checked .uni-checkbox-input,
+radio.purple.checked .uni-radio-input {
+	background-color: #6739b6 !important;
+	border-color: #6739b6 !important;
+	color: #ffffff !important;
+}
+
+switch.mauve[checked] .wx-switch-input,
+checkbox.mauve[checked] .wx-checkbox-input,
+radio.mauve[checked] .wx-radio-input,
+switch.mauve.checked .uni-switch-input,
+checkbox.mauve.checked .uni-checkbox-input,
+radio.mauve.checked .uni-radio-input {
+	background-color: #9c26b0 !important;
+	border-color: #9c26b0 !important;
+	color: #ffffff !important;
+}
+
+switch.pink[checked] .wx-switch-input,
+checkbox.pink[checked] .wx-checkbox-input,
+radio.pink[checked] .wx-radio-input,
+switch.pink.checked .uni-switch-input,
+checkbox.pink.checked .uni-checkbox-input,
+radio.pink.checked .uni-radio-input {
+	background-color: #e03997 !important;
+	border-color: #e03997 !important;
+	color: #ffffff !important;
+}
+
+switch.brown[checked] .wx-switch-input,
+checkbox.brown[checked] .wx-checkbox-input,
+radio.brown[checked] .wx-radio-input,
+switch.brown.checked .uni-switch-input,
+checkbox.brown.checked .uni-checkbox-input,
+radio.brown.checked .uni-radio-input {
+	background-color: #a5673f !important;
+	border-color: #a5673f !important;
+	color: #ffffff !important;
+}
+
+switch.grey[checked] .wx-switch-input,
+checkbox.grey[checked] .wx-checkbox-input,
+radio.grey[checked] .wx-radio-input,
+switch.grey.checked .uni-switch-input,
+checkbox.grey.checked .uni-checkbox-input,
+radio.grey.checked .uni-radio-input {
+	background-color: #8799a3 !important;
+	border-color: #8799a3 !important;
+	color: #ffffff !important;
+}
+
+switch.gray[checked] .wx-switch-input,
+checkbox.gray[checked] .wx-checkbox-input,
+radio.gray[checked] .wx-radio-input,
+switch.gray.checked .uni-switch-input,
+checkbox.gray.checked .uni-checkbox-input,
+radio.gray.checked .uni-radio-input {
+	background-color: #f0f0f0 !important;
+	border-color: #f0f0f0 !important;
+	color: #333333 !important;
+}
+
+switch.black[checked] .wx-switch-input,
+checkbox.black[checked] .wx-checkbox-input,
+radio.black[checked] .wx-radio-input,
+switch.black.checked .uni-switch-input,
+checkbox.black.checked .uni-checkbox-input,
+radio.black.checked .uni-radio-input {
+	background-color: #333333 !important;
+	border-color: #333333 !important;
+	color: #ffffff !important;
+}
+
+switch.white[checked] .wx-switch-input,
+checkbox.white[checked] .wx-checkbox-input,
+radio.white[checked] .wx-radio-input,
+switch.white.checked .uni-switch-input,
+checkbox.white.checked .uni-checkbox-input,
+radio.white.checked .uni-radio-input {
+	background-color: #ffffff !important;
+	border-color: #ffffff !important;
+	color: #333333 !important;
+}
+
+/* ==================
+          边框
+ ==================== */
+
+/* -- 实线 -- */
+
+.solid,
+.solid-top,
+.solid-right,
+.solid-bottom,
+.solid-left,
+.solids,
+.solids-top,
+.solids-right,
+.solids-bottom,
+.solids-left,
+.dashed,
+.dashed-top,
+.dashed-right,
+.dashed-bottom,
+.dashed-left {
+	position: relative;
+}
+
+.solid::after,
+.solid-top::after,
+.solid-right::after,
+.solid-bottom::after,
+.solid-left::after,
+.solids::after,
+.solids-top::after,
+.solids-right::after,
+.solids-bottom::after,
+.solids-left::after,
+.dashed::after,
+.dashed-top::after,
+.dashed-right::after,
+.dashed-bottom::after,
+.dashed-left::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border-radius: inherit;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+}
+
+.solid::after {
+	border: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-top::after {
+	border-top: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-right::after {
+	border-right: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-bottom::after {
+	border-bottom: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-left::after {
+	border-left: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solids::after {
+	border: 8upx solid #eee;
+}
+
+.solids-top::after {
+	border-top: 8upx solid #eee;
+}
+
+.solids-right::after {
+	border-right: 8upx solid #eee;
+}
+
+.solids-bottom::after {
+	border-bottom: 8upx solid #eee;
+}
+
+.solids-left::after {
+	border-left: 8upx solid #eee;
+}
+
+/* -- 虚线 -- */
+
+.dashed::after {
+	border: 1upx dashed #ddd;
+}
+
+.dashed-top::after {
+	border-top: 1upx dashed #ddd;
+}
+
+.dashed-right::after {
+	border-right: 1upx dashed #ddd;
+}
+
+.dashed-bottom::after {
+	border-bottom: 1upx dashed #ddd;
+}
+
+.dashed-left::after {
+	border-left: 1upx dashed #ddd;
+}
+
+/* -- 阴影 -- */
+
+.shadow[class*='white'] {
+	--ShadowSize: 0 1upx 6upx;
+}
+
+.shadow-lg {
+	--ShadowSize: 0upx 40upx 100upx 0upx;
+}
+
+.shadow-warp {
+	position: relative;
+	box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1);
+}
+
+.shadow-warp:before,
+.shadow-warp:after {
+	position: absolute;
+	content: "";
+	top: 20upx;
+	bottom: 30upx;
+	left: 20upx;
+	width: 50%;
+	box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2);
+	transform: rotate(-3deg);
+	z-index: -1;
+}
+
+.shadow-warp:after {
+	right: 20upx;
+	left: auto;
+	transform: rotate(3deg);
+}
+
+.shadow-blur {
+	position: relative;
+}
+
+.shadow-blur::before {
+	content: "";
+	display: block;
+	background: inherit;
+	filter: blur(10upx);
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 10upx;
+	left: 10upx;
+	z-index: -1;
+	opacity: 0.4;
+	transform-origin: 0 0;
+	border-radius: inherit;
+	transform: scale(1, 1);
+}
+
+/* ==================
+          按钮
+ ==================== */
+
+.cu-btn {
+	position: relative;
+	border: 0upx;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	box-sizing: border-box;
+	padding: 0 30upx;
+	font-size: 28upx;
+	height: 64upx;
+	line-height: 1;
+	text-align: center;
+	text-decoration: none;
+	overflow: visible;
+	margin-left: initial;
+	transform: translate(0upx, 0upx);
+	margin-right: initial;
+}
+
+.cu-btn::after {
+	display: none;
+}
+
+.cu-btn:not([class*="bg-"]) {
+	background-color: #f0f0f0;
+}
+
+.cu-btn[class*="line"] {
+	background-color: transparent;
+}
+
+.cu-btn[class*="line"]::after {
+	content: " ";
+	display: block;
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: 1upx solid currentColor;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	box-sizing: border-box;
+	border-radius: 12upx;
+	z-index: 1;
+	pointer-events: none;
+}
+
+.cu-btn.round[class*="line"]::after {
+	border-radius: 1000upx;
+}
+
+.cu-btn[class*="lines"]::after {
+	border: 6upx solid currentColor;
+}
+
+.cu-btn[class*="bg-"]::after {
+	display: none;
+}
+
+.cu-btn.sm {
+	padding: 0 20upx;
+	font-size: 20upx;
+	height: 48upx;
+}
+
+.cu-btn.lg {
+	padding: 0 40upx;
+	font-size: 32upx;
+	height: 80upx;
+}
+
+.cu-btn.cuIcon.sm {
+	width: 48upx;
+	height: 48upx;
+}
+
+.cu-btn.cuIcon {
+	width: 64upx;
+	height: 64upx;
+	border-radius: 500upx;
+	padding: 0;
+}
+
+button.cuIcon.lg {
+	width: 80upx;
+	height: 80upx;
+}
+
+.cu-btn.shadow-blur::before {
+	top: 4upx;
+	left: 4upx;
+	filter: blur(6upx);
+	opacity: 0.6;
+}
+
+.cu-btn.button-hover {
+	transform: translate(1upx, 1upx);
+}
+
+.block {
+	display: block;
+}
+
+.cu-btn.block {
+	display: flex;
+}
+
+.cu-btn[disabled] {
+	opacity: 0.6;
+	color: #ffffff;
+}
+
+/* ==================
+          徽章
+ ==================== */
+
+.cu-tag {
+	font-size: 24upx;
+	vertical-align: middle;
+	position: relative;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	box-sizing: border-box;
+	padding: 0upx 16upx;
+	height: 48upx;
+	font-family: Helvetica Neue, Helvetica, sans-serif;
+	white-space: nowrap;
+}
+
+.cu-tag:not([class*="bg"]):not([class*="line"]) {
+	background-color: #f1f1f1;
+}
+
+.cu-tag[class*="line-"]::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: 1upx solid currentColor;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	box-sizing: border-box;
+	border-radius: inherit;
+	z-index: 1;
+	pointer-events: none;
+}
+
+.cu-tag.radius[class*="line"]::after {
+	border-radius: 12upx;
+}
+
+.cu-tag.round[class*="line"]::after {
+	border-radius: 1000upx;
+}
+
+.cu-tag[class*="line-"]::after {
+	border-radius: 0;
+}
+
+.cu-tag+.cu-tag {
+	margin-left: 10upx;
+}
+
+.cu-tag.sm {
+	font-size: 20upx;
+	padding: 0upx 12upx;
+	height: 32upx;
+}
+
+.cu-capsule {
+	display: inline-flex;
+	vertical-align: middle;
+}
+
+.cu-capsule+.cu-capsule {
+	margin-left: 10upx;
+}
+
+.cu-capsule .cu-tag {
+	margin: 0;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:last-child::after {
+	border-left: 0upx solid transparent;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:first-child::after {
+	border-right: 0upx solid transparent;
+}
+
+.cu-capsule.radius .cu-tag:first-child {
+	border-top-left-radius: 6upx;
+	border-bottom-left-radius: 6upx;
+}
+
+.cu-capsule.radius .cu-tag:last-child::after,
+.cu-capsule.radius .cu-tag[class*="line-"] {
+	border-top-right-radius: 12upx;
+	border-bottom-right-radius: 12upx;
+}
+
+.cu-capsule.round .cu-tag:first-child {
+	border-top-left-radius: 200upx;
+	border-bottom-left-radius: 200upx;
+	text-indent: 4upx;
+}
+
+.cu-capsule.round .cu-tag:last-child::after,
+.cu-capsule.round .cu-tag:last-child {
+	border-top-right-radius: 200upx;
+	border-bottom-right-radius: 200upx;
+	text-indent: -4upx;
+}
+
+.cu-tag.badge {
+	border-radius: 200upx;
+	position: absolute;
+	top: -10upx;
+	right: -10upx;
+	font-size: 20upx;
+	padding: 0upx 10upx;
+	height: 28upx;
+	color: #ffffff;
+}
+
+.cu-tag.badge:not([class*="bg-"]) {
+	background-color: #dd514c;
+}
+
+.cu-tag:empty:not([class*="cuIcon-"]) {
+	padding: 0upx;
+	width: 16upx;
+	height: 16upx;
+	top: -4upx;
+	right: -4upx;
+}
+
+.cu-tag[class*="cuIcon-"] {
+	width: 32upx;
+	height: 32upx;
+	top: -4upx;
+	right: -4upx;
+}
+
+/* ==================
+          头像
+ ==================== */
+
+.cu-avatar {
+	font-variant: small-caps;
+	margin: 0;
+	padding: 0;
+	display: inline-flex;
+	text-align: center;
+	justify-content: center;
+	align-items: center;
+	background-color: #ccc;
+	color: #ffffff;
+	white-space: nowrap;
+	position: relative;
+	width: 64upx;
+	height: 64upx;
+	background-size: cover;
+	background-position: center;
+	vertical-align: middle;
+	font-size: 1.5em;
+}
+
+.cu-avatar.sm {
+	width: 48upx;
+	height: 48upx;
+	font-size: 1em;
+}
+
+.cu-avatar.lg {
+	width: 96upx;
+	height: 96upx;
+	font-size: 2em;
+}
+
+.cu-avatar.xl {
+	width: 128upx;
+	height: 128upx;
+	font-size: 2.5em;
+}
+
+.cu-avatar .avatar-text {
+	font-size: 0.4em;
+}
+
+.cu-avatar-group {
+	direction: rtl;
+	unicode-bidi: bidi-override;
+	padding: 0 10upx 0 40upx;
+	display: inline-block;
+}
+
+.cu-avatar-group .cu-avatar {
+	margin-left: -30upx;
+	border: 4upx solid #f1f1f1;
+	vertical-align: middle;
+}
+
+.cu-avatar-group .cu-avatar.sm {
+	margin-left: -20upx;
+	border: 1upx solid #f1f1f1;
+}
+
+/* ==================
+         进度条
+ ==================== */
+
+.cu-progress {
+	overflow: hidden;
+	height: 28upx;
+	background-color: #ebeef5;
+	display: inline-flex;
+	align-items: center;
+	width: 100%;
+}
+
+.cu-progress+view,
+.cu-progress+text {
+	line-height: 1;
+}
+
+.cu-progress.xs {
+	height: 10upx;
+}
+
+.cu-progress.sm {
+	height: 20upx;
+}
+
+.cu-progress view {
+	width: 0;
+	height: 100%;
+	align-items: center;
+	display: flex;
+	justify-items: flex-end;
+	justify-content: space-around;
+	font-size: 20upx;
+	color: #ffffff;
+	transition: width 0.6s ease;
+}
+
+.cu-progress text {
+	align-items: center;
+	display: flex;
+	font-size: 20upx;
+	color: #333333;
+	text-indent: 10upx;
+}
+
+.cu-progress.text-progress {
+	padding-right: 60upx;
+}
+
+.cu-progress.striped view {
+	background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+	background-size: 72upx 72upx;
+}
+
+.cu-progress.active view {
+	animation: progress-stripes 2s linear infinite;
+}
+
+@keyframes progress-stripes {
+	from {
+		background-position: 72upx 0;
+	}
+
+	to {
+		background-position: 0 0;
+	}
+}
+
+/* ==================
+          加载
+ ==================== */
+
+.cu-load {
+	display: block;
+	line-height: 3em;
+	text-align: center;
+}
+
+.cu-load::before {
+	font-family: "cuIcon";
+	display: inline-block;
+	margin-right: 6upx;
+}
+
+.cu-load.loading::before {
+	content: "\e67a";
+	animation: cuIcon-spin 2s infinite linear;
+}
+
+.cu-load.loading::after {
+	content: "加载中...";
+}
+
+.cu-load.over::before {
+	content: "\e64a";
+}
+
+.cu-load.over::after {
+	content: "没有更多了";
+}
+
+.cu-load.erro::before {
+	content: "\e658";
+}
+
+.cu-load.erro::after {
+	content: "加载失败";
+}
+
+.cu-load.load-cuIcon::before {
+	font-size: 32upx;
+}
+
+.cu-load.load-cuIcon::after {
+	display: none;
+}
+
+.cu-load.load-cuIcon.over {
+	display: none;
+}
+
+.cu-load.load-modal {
+	position: fixed;
+	top: 0;
+	right: 0;
+	bottom: 140upx;
+	left: 0;
+	margin: auto;
+	width: 260upx;
+	height: 260upx;
+	background-color: #ffffff;
+	border-radius: 10upx;
+	box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5);
+	display: flex;
+	align-items: center;
+	flex-direction: column;
+	justify-content: center;
+	font-size: 28upx;
+	z-index: 9999;
+	line-height: 2.4em;
+}
+
+.cu-load.load-modal [class*="cuIcon-"] {
+	font-size: 60upx;
+}
+
+.cu-load.load-modal image {
+	width: 70upx;
+	height: 70upx;
+}
+
+.cu-load.load-modal::after {
+	content: "";
+	position: absolute;
+	background-color: #ffffff;
+	border-radius: 50%;
+	width: 200upx;
+	height: 200upx;
+	font-size: 10px;
+	border-top: 6upx solid rgba(0, 0, 0, 0.05);
+	border-right: 6upx solid rgba(0, 0, 0, 0.05);
+	border-bottom: 6upx solid rgba(0, 0, 0, 0.05);
+	border-left: 6upx solid #f37b1d;
+	animation: cuIcon-spin 1s infinite linear;
+	z-index: -1;
+}
+
+.load-progress {
+	pointer-events: none;
+	top: 0;
+	position: fixed;
+	width: 100%;
+	left: 0;
+	z-index: 2000;
+}
+
+.load-progress.hide {
+	display: none;
+}
+
+.load-progress .load-progress-bar {
+	position: relative;
+	width: 100%;
+	height: 4upx;
+	overflow: hidden;
+	transition: all 200ms ease 0s;
+}
+
+.load-progress .load-progress-spinner {
+	position: absolute;
+	top: 10upx;
+	right: 10upx;
+	z-index: 2000;
+	display: block;
+}
+
+.load-progress .load-progress-spinner::after {
+	content: "";
+	display: block;
+	width: 24upx;
+	height: 24upx;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+	border: solid 4upx transparent;
+	border-top-color: inherit;
+	border-left-color: inherit;
+	border-radius: 50%;
+	-webkit-animation: load-progress-spinner 0.4s linear infinite;
+	animation: load-progress-spinner 0.4s linear infinite;
+}
+
+@-webkit-keyframes load-progress-spinner {
+	0% {
+		-webkit-transform: rotate(0);
+		transform: rotate(0);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@keyframes load-progress-spinner {
+	0% {
+		-webkit-transform: rotate(0);
+		transform: rotate(0);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+/* ==================
+          列表
+ ==================== */
+.grayscale {
+	filter: grayscale(1);
+}
+
+.cu-list+.cu-list {
+	margin-top: 30upx
+}
+
+.cu-list>.cu-item {
+	transition: all .6s ease-in-out 0s;
+	transform: translateX(0upx)
+}
+
+.cu-list>.cu-item.move-cur {
+	transform: translateX(-260upx)
+}
+
+.cu-list>.cu-item .move {
+	position: absolute;
+	right: 0;
+	display: flex;
+	width: 260upx;
+	height: 100%;
+	transform: translateX(100%)
+}
+
+.cu-list>.cu-item .move view {
+	display: flex;
+	flex: 1;
+	justify-content: center;
+	align-items: center
+}
+
+.cu-list.menu-avatar {
+	overflow: hidden;
+}
+
+.cu-list.menu-avatar>.cu-item {
+	position: relative;
+	display: flex;
+	padding-right: 10upx;
+	height: 140upx;
+	background-color: #ffffff;
+	justify-content: flex-end;
+	align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item>.cu-avatar {
+	position: absolute;
+	left: 30upx
+}
+
+.cu-list.menu-avatar>.cu-item .flex .text-cut {
+	max-width: 510upx
+}
+
+.cu-list.menu-avatar>.cu-item .content {
+	position: absolute;
+	left: 146upx;
+	width: calc(100% - 96upx - 60upx - 120upx - 20upx);
+	line-height: 1.6em;
+}
+
+.cu-list.menu-avatar>.cu-item .content.flex-sub {
+	width: calc(100% - 96upx - 60upx - 20upx);
+}
+
+.cu-list.menu-avatar>.cu-item .content>view:first-child {
+	font-size: 30upx;
+	display: flex;
+	align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item .content .cu-tag.sm {
+	display: inline-block;
+	margin-left: 10upx;
+	height: 28upx;
+	font-size: 16upx;
+	line-height: 32upx
+}
+
+.cu-list.menu-avatar>.cu-item .action {
+	width: 100upx;
+	text-align: center
+}
+
+.cu-list.menu-avatar>.cu-item .action view+view {
+	margin-top: 10upx
+}
+
+.cu-list.menu-avatar.comment>.cu-item .content {
+	position: relative;
+	left: 0;
+	width: auto;
+	flex: 1;
+}
+
+.cu-list.menu-avatar.comment>.cu-item {
+	padding: 30upx 30upx 30upx 120upx;
+	height: auto
+}
+
+.cu-list.menu-avatar.comment .cu-avatar {
+	align-self: flex-start
+}
+
+.cu-list.menu>.cu-item {
+	position: relative;
+	display: flex;
+	padding: 0 30upx;
+	min-height: 100upx;
+	background-color: #fff;
+	justify-content: space-between;
+	align-items: center
+}
+
+.cu-list.menu>.cu-item:last-child:after {
+	border: none
+}
+
+.cu-list.menu-avatar>.cu-item:after,
+.cu-list.menu>.cu-item:after {
+	position: absolute;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	width: 200%;
+	height: 200%;
+	/* border-bottom: 1upx solid #ddd; */
+	border-radius: inherit;
+	content: " ";
+	transform: scale(.5);
+	transform-origin: 0 0;
+	pointer-events: none
+}
+
+.cu-list.menu>.cu-item.grayscale {
+	background-color: #f5f5f5
+}
+
+.cu-list.menu>.cu-item.cur {
+	background-color: #fcf7e9
+}
+
+.cu-list.menu>.cu-item.arrow {
+	padding-right: 90upx
+}
+
+.cu-list.menu>.cu-item.arrow:before {
+	position: absolute;
+	top: 0;
+	right: 30upx;
+	bottom: 0;
+	display: block;
+	margin: auto;
+	width: 30upx;
+	height: 30upx;
+	color: #8799a3;
+	content: "\e6a3";
+	text-align: center;
+	font-size: 34upx;
+	font-family: cuIcon;
+	line-height: 30upx
+}
+
+.cu-list.menu>.cu-item button.content {
+	padding: 0;
+	background-color: transparent;
+	justify-content: flex-start
+}
+
+.cu-list.menu>.cu-item button.content:after {
+	display: none
+}
+
+.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar {
+	border-color: #ffffff
+}
+
+.cu-list.menu>.cu-item .content>view:first-child {
+	display: flex;
+	align-items: center
+}
+
+.cu-list.menu>.cu-item .content>text[class*=cuIcon] {
+	display: inline-block;
+	margin-right: 10upx;
+	width: 1.6em;
+	text-align: center
+}
+
+.cu-list.menu>.cu-item .content>image {
+	display: inline-block;
+	margin-right: 10upx;
+	width: 1.6em;
+	height: 1.6em;
+	vertical-align: middle
+}
+
+.cu-list.menu>.cu-item .content {
+	font-size: 30upx;
+	line-height: 1.6em;
+	flex: 1
+}
+
+.cu-list.menu>.cu-item .content .cu-tag.sm {
+	display: inline-block;
+	margin-left: 10upx;
+	height: 28upx;
+	font-size: 16upx;
+	line-height: 32upx
+}
+
+.cu-list.menu>.cu-item .action .cu-tag:empty {
+	right: 10upx
+}
+
+.cu-list.menu {
+	display: block;
+	overflow: hidden
+}
+
+.cu-list.menu.sm-border>.cu-item:after {
+	left: 30upx;
+	width: calc(200% - 120upx)
+}
+
+.cu-list.grid>.cu-item {
+	position: relative;
+	display: flex;
+	padding: 20upx 0 30upx;
+	transition-duration: 0s;
+	flex-direction: column
+}
+
+.cu-list.grid>.cu-item:after {
+	position: absolute;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	width: 200%;
+	height: 200%;
+	border-right: 1px solid rgba(0, 0, 0, .1);
+	border-bottom: 1px solid rgba(0, 0, 0, .1);
+	border-radius: inherit;
+	content: " ";
+	transform: scale(.5);
+	transform-origin: 0 0;
+	pointer-events: none
+}
+
+.cu-list.grid>.cu-item text {
+	display: block;
+	margin-top: 10upx;
+	color: #888;
+	font-size: 26upx;
+	line-height: 40upx
+}
+
+.cu-list.grid>.cu-item [class*=cuIcon] {
+	position: relative;
+	display: block;
+	margin-top: 20upx;
+	width: 100%;
+	font-size: 48upx
+}
+
+.cu-list.grid>.cu-item .cu-tag {
+	right: auto;
+	left: 50%;
+	margin-left: 20upx
+}
+
+.cu-list.grid {
+	background-color: #ffffff;
+	text-align: center
+}
+
+.cu-list.grid.no-border>.cu-item {
+	padding-top: 10upx;
+	padding-bottom: 20upx
+}
+
+.cu-list.grid.no-border>.cu-item:after {
+	border: none
+}
+
+.cu-list.grid.no-border {
+	padding: 20upx 10upx
+}
+
+.cu-list.grid.col-3>.cu-item:nth-child(3n):after,
+.cu-list.grid.col-4>.cu-item:nth-child(4n):after,
+.cu-list.grid.col-5>.cu-item:nth-child(5n):after {
+	border-right-width: 0
+}
+
+.cu-list.card-menu {
+	overflow: hidden;
+	margin-right: 30upx;
+	margin-left: 30upx;
+	border-radius: 20upx
+}
+
+
+/* ==================
+          操作条
+ ==================== */
+
+.cu-bar {
+	display: flex;
+	position: relative;
+	align-items: center;
+	min-height: 100upx;
+	justify-content: space-between;
+}
+
+.cu-bar .action {
+	display: flex;
+	align-items: center;
+	height: 100%;
+	justify-content: center;
+	max-width: 100%;
+}
+
+.cu-bar .action.border-title {
+	position: relative;
+	top: -10upx;
+}
+
+.cu-bar .action.border-title text[class*="bg-"]:last-child {
+	position: absolute;
+	bottom: -0.5rem;
+	min-width: 2rem;
+	height: 6upx;
+	left: 0;
+}
+
+.cu-bar .action.sub-title {
+	position: relative;
+	top: -0.2rem;
+}
+
+.cu-bar .action.sub-title text {
+	position: relative;
+	z-index: 1;
+}
+
+.cu-bar .action.sub-title text[class*="bg-"]:last-child {
+	position: absolute;
+	display: inline-block;
+	bottom: -0.2rem;
+	border-radius: 6upx;
+	width: 100%;
+	height: 0.6rem;
+	left: 0.6rem;
+	opacity: 0.3;
+	z-index: 0;
+}
+
+.cu-bar .action.sub-title text[class*="text-"]:last-child {
+	position: absolute;
+	display: inline-block;
+	bottom: -0.7rem;
+	left: 0.5rem;
+	opacity: 0.2;
+	z-index: 0;
+	text-align: right;
+	font-weight: 900;
+	font-size: 36upx;
+}
+
+.cu-bar.justify-center .action.border-title text:last-child,
+.cu-bar.justify-center .action.sub-title text:last-child {
+	left: 0;
+	right: 0;
+	margin: auto;
+	text-align: center;
+}
+
+.cu-bar .action:first-child {
+	margin-left: 30upx;
+	font-size: 30upx;
+}
+
+.cu-bar .action text.text-cut {
+	text-align: left;
+	width: 100%;
+}
+
+.cu-bar .cu-avatar:first-child {
+	margin-left: 20upx;
+}
+
+.cu-bar .action:first-child>text[class*="cuIcon-"] {
+	margin-left: -0.3em;
+	margin-right: 0.3em;
+}
+
+.cu-bar .action:last-child {
+	margin-right: 30upx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"],
+.cu-bar .action>view[class*="cuIcon-"] {
+	font-size: 36upx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] {
+	margin-left: 0.5em;
+}
+
+.cu-bar .content {
+	position: absolute;
+	text-align: center;
+	width: calc(100% - 340upx);
+	left: 0;
+	right: 0;
+	bottom: 0;
+	top: 0;
+	margin: auto;
+	height: 60upx;
+	font-size: 32upx;
+	line-height: 60upx;
+	cursor: none;
+	pointer-events: none;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+}
+
+.cu-bar.ios .content {
+	bottom: 7px;
+	height: 30px;
+	font-size: 32upx;
+	line-height: 30px;
+}
+
+.cu-bar.btn-group {
+	justify-content: space-around;
+}
+
+.cu-bar.btn-group button {
+	padding: 20upx 32upx;
+}
+
+.cu-bar.btn-group button {
+	flex: 1;
+	margin: 0 20upx;
+	max-width: 50%;
+}
+
+.cu-bar .search-form {
+	background-color: #f5f5f5;
+	line-height: 64upx;
+	height: 64upx;
+	font-size: 24upx;
+	color: #333333;
+	flex: 1;
+	display: flex;
+	align-items: center;
+	margin: 0 30upx;
+}
+
+.cu-bar .search-form+.action {
+	margin-right: 30upx;
+}
+
+.cu-bar .search-form input {
+	flex: 1;
+	padding-right: 30upx;
+	height: 64upx;
+	line-height: 64upx;
+	font-size: 26upx;
+	background-color: transparent;
+}
+
+.cu-bar .search-form [class*="cuIcon-"] {
+	margin: 0 0.5em 0 0.8em;
+}
+
+.cu-bar .search-form [class*="cuIcon-"]::before {
+	top: 0upx;
+}
+
+.cu-bar.fixed,
+.nav.fixed {
+	position: fixed;
+	width: 100%;
+	top: 0;
+	z-index: 1024;
+	box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.foot {
+	position: fixed;
+	width: 100%;
+	bottom: 0;
+	z-index: 1024;
+	box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar {
+	padding: 0;
+	height: calc(100upx + env(safe-area-inset-bottom) / 2);
+	padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+}
+
+.cu-tabbar-height {
+	min-height: 100upx;
+	height: calc(100upx + env(safe-area-inset-bottom) / 2);
+}
+
+.cu-bar.tabbar.shadow {
+	box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar .action {
+	font-size: 22upx;
+	position: relative;
+	flex: 1;
+	text-align: center;
+	padding: 0;
+	display: block;
+	height: auto;
+	line-height: 1;
+	margin: 0;
+	background-color: inherit;
+	overflow: initial;
+}
+
+.cu-bar.tabbar.shop .action {
+	width: 140upx;
+	flex: initial;
+}
+
+.cu-bar.tabbar .action.add-action {
+	position: relative;
+	z-index: 2;
+	padding-top: 50upx;
+}
+
+.cu-bar.tabbar .action.add-action [class*="cuIcon-"] {
+	position: absolute;
+	width: 70upx;
+	z-index: 2;
+	height: 70upx;
+	border-radius: 50%;
+	line-height: 70upx;
+	font-size: 50upx;
+	top: -35upx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	padding: 0;
+}
+
+.cu-bar.tabbar .action.add-action::after {
+	content: "";
+	position: absolute;
+	width: 100upx;
+	height: 100upx;
+	top: -50upx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08);
+	border-radius: 50upx;
+	background-color: inherit;
+	z-index: 0;
+}
+
+.cu-bar.tabbar .action.add-action::before {
+	content: "";
+	position: absolute;
+	width: 100upx;
+	height: 30upx;
+	bottom: 30upx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	background-color: inherit;
+	z-index: 1;
+}
+
+.cu-bar.tabbar .btn-group {
+	flex: 1;
+	display: flex;
+	justify-content: space-around;
+	align-items: center;
+	padding: 0 10upx;
+}
+
+.cu-bar.tabbar button.action::after {
+	border: 0;
+}
+
+.cu-bar.tabbar .action [class*="cuIcon-"] {
+	width: 100upx;
+	position: relative;
+	display: block;
+	height: auto;
+	margin: 0 auto 10upx;
+	text-align: center;
+	font-size: 40upx;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image {
+	margin: 0 auto;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image image {
+	width: 50upx;
+	height: 50upx;
+	display: inline-block;
+}
+
+.cu-bar.tabbar .submit {
+	align-items: center;
+	display: flex;
+	justify-content: center;
+	text-align: center;
+	position: relative;
+	flex: 2;
+	align-self: stretch;
+}
+
+.cu-bar.tabbar .submit:last-child {
+	flex: 2.6;
+}
+
+.cu-bar.tabbar .submit+.submit {
+	flex: 2;
+}
+
+.cu-bar.tabbar.border .action::before {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	border-right: 1upx solid rgba(0, 0, 0, 0.1);
+	z-index: 3;
+}
+
+.cu-bar.tabbar.border .action:last-child:before {
+	display: none;
+}
+
+.cu-bar.input {
+	padding-right: 20upx;
+	background-color: #ffffff;
+}
+
+.cu-bar.input input {
+	overflow: initial;
+	line-height: 64upx;
+	height: 64upx;
+	min-height: 64upx;
+	flex: 1;
+	font-size: 30upx;
+	margin: 0 20upx;
+}
+
+.cu-bar.input .action {
+	margin-left: 20upx;
+}
+
+.cu-bar.input .action [class*="cuIcon-"] {
+	font-size: 48upx;
+}
+
+.cu-bar.input input+.action {
+	margin-right: 20upx;
+	margin-left: 0upx;
+}
+
+.cu-bar.input .action:first-child [class*="cuIcon-"] {
+	margin-left: 0upx;
+}
+
+.cu-custom {
+	display: block;
+	position: relative;
+}
+
+.cu-custom .cu-bar .content {
+	width: calc(100% - 440upx);
+}
+
+/* #ifdef MP-ALIPAY */
+.cu-custom .cu-bar .action .cuIcon-back {
+	opacity: 0;
+}
+
+/* #endif */
+
+.cu-custom .cu-bar .content image {
+	height: 60upx;
+	width: 240upx;
+}
+
+.cu-custom .cu-bar {
+	min-height: 0px;
+	/* #ifdef MP-WEIXIN */
+	padding-right: 220upx;
+	/* #endif */
+	/* #ifdef MP-ALIPAY */
+	padding-right: 150upx;
+	/* #endif */
+	box-shadow: 0upx 0upx 0upx;
+	z-index: 9999;
+}
+
+.cu-custom .cu-bar .border-custom {
+	position: relative;
+	background: rgba(0, 0, 0, 0.15);
+	border-radius: 1000upx;
+	height: 30px;
+}
+
+.cu-custom .cu-bar .border-custom::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border-radius: inherit;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+	border: 1upx solid #ffffff;
+	opacity: 0.5;
+}
+
+.cu-custom .cu-bar .border-custom::before {
+	content: " ";
+	width: 1upx;
+	height: 110%;
+	position: absolute;
+	top: 22.5%;
+	left: 0;
+	right: 0;
+	margin: auto;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+	opacity: 0.6;
+	background-color: #ffffff;
+}
+
+.cu-custom .cu-bar .border-custom text {
+	display: block;
+	flex: 1;
+	margin: auto !important;
+	text-align: center;
+	font-size: 34upx;
+}
+
+/* ==================
+         导航栏
+ ==================== */
+
+.nav {
+	white-space: nowrap;
+}
+
+::-webkit-scrollbar {
+	display: none;
+}
+
+.nav .cu-item {
+	height: 90upx;
+	display: inline-block;
+	line-height: 90upx;
+	margin: 0 10upx;
+	padding: 0 20upx;
+}
+
+.nav .cu-item.cur {
+	border-bottom: 4upx solid;
+}
+
+/* ==================
+         时间轴
+ ==================== */
+
+.cu-timeline {
+	display: block;
+	background-color: #ffffff;
+}
+
+.cu-timeline .cu-time {
+	width: 120upx;
+	text-align: center;
+	padding: 20upx 0;
+	font-size: 26upx;
+	color: #888;
+	display: block;
+}
+
+.cu-timeline>.cu-item {
+	padding: 30upx 30upx 30upx 120upx;
+	position: relative;
+	display: block;
+	z-index: 0;
+}
+
+.cu-timeline>.cu-item:not([class*="text-"]) {
+	color: #ccc;
+}
+
+.cu-timeline>.cu-item::after {
+	content: "";
+	display: block;
+	position: absolute;
+	width: 1upx;
+	background-color: #ddd;
+	left: 60upx;
+	height: 100%;
+	top: 0;
+	z-index: 8;
+}
+
+.cu-timeline>.cu-item::before {
+	font-family: "cuIcon";
+	display: block;
+	position: absolute;
+	top: 36upx;
+	z-index: 9;
+	background-color: #ffffff;
+	width: 50upx;
+	height: 50upx;
+	text-align: center;
+	border: none;
+	line-height: 50upx;
+	left: 36upx;
+}
+
+.cu-timeline>.cu-item:not([class*="cuIcon-"])::before {
+	content: "\e763";
+}
+
+.cu-timeline>.cu-item[class*="cuIcon-"]::before {
+	background-color: #ffffff;
+	width: 50upx;
+	height: 50upx;
+	text-align: center;
+	border: none;
+	line-height: 50upx;
+	left: 36upx;
+}
+
+.cu-timeline>.cu-item>.content {
+	padding: 30upx;
+	border-radius: 6upx;
+	display: block;
+	line-height: 1.6;
+}
+
+.cu-timeline>.cu-item>.content:not([class*="bg-"]) {
+	background-color: #f1f1f1;
+	color: #333333;
+}
+
+.cu-timeline>.cu-item>.content+.content {
+	margin-top: 20upx;
+}
+
+/* ==================
+         聊天
+ ==================== */
+
+.cu-chat {
+	display: flex;
+	flex-direction: column;
+}
+
+.cu-chat .cu-item {
+	display: flex;
+	padding: 30upx 30upx 70upx;
+	position: relative;
+}
+
+.cu-chat .cu-item>.cu-avatar {
+	width: 80upx;
+	height: 80upx;
+}
+
+.cu-chat .cu-item>.main {
+	max-width: calc(100% - 260upx);
+	margin: 0 40upx;
+	display: flex;
+	align-items: center;
+}
+
+.cu-chat .cu-item>image {
+	height: 320upx;
+}
+
+.cu-chat .cu-item>.main .content {
+	padding: 20upx;
+	border-radius: 6upx;
+	display: inline-flex;
+	max-width: 100%;
+	align-items: center;
+	font-size: 30upx;
+	position: relative;
+	min-height: 80upx;
+	line-height: 40upx;
+	text-align: left;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"]) {
+	background-color: #ffffff;
+	color: #333333;
+}
+
+.cu-chat .cu-item .date {
+	position: absolute;
+	font-size: 24upx;
+	color: #8799a3;
+	width: calc(100% - 320upx);
+	bottom: 20upx;
+	left: 160upx;
+}
+
+.cu-chat .cu-item .action {
+	padding: 0 30upx;
+	display: flex;
+	align-items: center;
+}
+
+.cu-chat .cu-item>.main .content::after {
+	content: "";
+	top: 27upx;
+	transform: rotate(45deg);
+	position: absolute;
+	z-index: 100;
+	display: inline-block;
+	overflow: hidden;
+	width: 24upx;
+	height: 24upx;
+	left: -12upx;
+	right: initial;
+	background-color: inherit;
+}
+
+.cu-chat .cu-item.self>.main .content::after {
+	left: auto;
+	right: -12upx;
+}
+
+.cu-chat .cu-item>.main .content::before {
+	content: "";
+	top: 30upx;
+	transform: rotate(45deg);
+	position: absolute;
+	z-index: -1;
+	display: inline-block;
+	overflow: hidden;
+	width: 24upx;
+	height: 24upx;
+	left: -12upx;
+	right: initial;
+	background-color: inherit;
+	filter: blur(5upx);
+	opacity: 0.3;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"])::before {
+	background-color: #333333;
+	opacity: 0.1;
+}
+
+.cu-chat .cu-item.self>.main .content::before {
+	left: auto;
+	right: -12upx;
+}
+
+.cu-chat .cu-item.self {
+	justify-content: flex-end;
+	text-align: right;
+}
+
+.cu-chat .cu-info {
+	display: inline-block;
+	margin: 20upx auto;
+	font-size: 24upx;
+	padding: 8upx 12upx;
+	background-color: rgba(0, 0, 0, 0.2);
+	border-radius: 6upx;
+	color: #ffffff;
+	max-width: 400upx;
+	line-height: 1.4;
+}
+
+/* ==================
+         卡片
+ ==================== */
+
+.cu-card {
+	display: block;
+	overflow: hidden;
+}
+
+.cu-card>.cu-item {
+	display: block;
+	background-color: #ffffff;
+	overflow: hidden;
+	border-radius: 10upx;
+	margin: 30upx;
+}
+
+.cu-card>.cu-item.shadow-blur {
+	overflow: initial;
+}
+
+.cu-card.no-card>.cu-item {
+	margin: 0upx;
+	border-radius: 0upx;
+}
+
+.cu-card .grid.grid-square {
+	margin-bottom: -20upx;
+}
+
+.cu-card.case .image {
+	position: relative;
+}
+
+.cu-card.case .image image {
+	width: 100%;
+}
+
+.cu-card.case .image .cu-tag {
+	position: absolute;
+	right: 0;
+	top: 0;
+}
+
+.cu-card.case .image .cu-bar {
+	position: absolute;
+	bottom: 0;
+	width: 100%;
+	background-color: transparent;
+	padding: 0upx 30upx;
+}
+
+.cu-card.case.no-card .image {
+	margin: 30upx 30upx 0;
+	overflow: hidden;
+	border-radius: 10upx;
+}
+
+.cu-card.dynamic {
+	display: block;
+}
+
+.cu-card.dynamic>.cu-item {
+	display: block;
+	background-color: #ffffff;
+	overflow: hidden;
+}
+
+.cu-card.dynamic>.cu-item>.text-content {
+	padding: 0 30upx 0;
+	max-height: 6.4em;
+	overflow: hidden;
+	font-size: 30upx;
+	margin-bottom: 20upx;
+}
+
+.cu-card.dynamic>.cu-item .square-img {
+	width: 100%;
+	height: 200upx;
+	border-radius: 6upx;
+}
+
+.cu-card.dynamic>.cu-item .only-img {
+	width: 100%;
+	height: 320upx;
+	border-radius: 6upx;
+}
+
+/* card.dynamic>.cu-item .comment {
+  padding: 20upx;
+  background-color: #f1f1f1;
+  margin: 0 30upx 30upx;
+  border-radius: 6upx;
+} */
+
+.cu-card.article {
+	display: block;
+}
+
+.cu-card.article>.cu-item {
+	padding-bottom: 30upx;
+}
+
+.cu-card.article>.cu-item .title {
+	font-size: 30upx;
+	font-weight: 900;
+	color: #333333;
+	line-height: 100upx;
+	padding: 0 30upx;
+}
+
+.cu-card.article>.cu-item .content {
+	display: flex;
+	padding: 0 30upx;
+}
+
+.cu-card.article>.cu-item .content>image {
+	width: 240upx;
+	height: 6.4em;
+	margin-right: 20upx;
+	border-radius: 6upx;
+}
+
+.cu-card.article>.cu-item .content .desc {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+}
+
+.cu-card.article>.cu-item .content .text-content {
+	font-size: 28upx;
+	color: #888;
+	height: 4.8em;
+	overflow: hidden;
+}
+
+/* ==================
+         表单
+ ==================== */
+
+.cu-form-group {
+	background-color: #ffffff;
+	padding: 1upx 30upx;
+	display: flex;
+	align-items: center;
+	min-height: 100upx;
+	justify-content: space-between;
+}
+
+.cu-form-group+.cu-form-group {
+	border-top: 1upx solid #eee;
+}
+
+.cu-form-group .title {
+	text-align: justify;
+	padding-right: 30upx;
+	font-size: 30upx;
+	position: relative;
+	height: 60upx;
+	line-height: 60upx;
+}
+
+.cu-form-group input {
+	flex: 1;
+	font-size: 30upx;
+	color: #555;
+	padding-right: 20upx;
+}
+
+.cu-form-group>text[class*="cuIcon-"] {
+	font-size: 36upx;
+	padding: 0;
+	box-sizing: border-box;
+}
+
+.cu-form-group textarea {
+	margin: 32upx 0 30upx;
+	height: 4.6em;
+	width: 100%;
+	line-height: 1.2em;
+	flex: 1;
+	font-size: 28upx;
+	padding: 0;
+}
+
+.cu-form-group.align-start .title {
+	height: 1em;
+	margin-top: 32upx;
+	line-height: 1em;
+}
+
+.cu-form-group picker {
+	flex: 1;
+	padding-right: 40upx;
+	overflow: hidden;
+	position: relative;
+}
+
+.cu-form-group picker .picker {
+	line-height: 100upx;
+	font-size: 28upx;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+	width: 100%;
+	text-align: right;
+}
+
+.cu-form-group picker::after {
+	font-family: cuIcon;
+	display: block;
+	content: "\e6a3";
+	position: absolute;
+	font-size: 34upx;
+	color: #8799a3;
+	line-height: 100upx;
+	width: 60upx;
+	text-align: center;
+	top: 0;
+	bottom: 0;
+	right: -20upx;
+	margin: auto;
+}
+
+.cu-form-group textarea[disabled],
+.cu-form-group textarea[disabled] .placeholder {
+	color: transparent;
+}
+
+/* ==================
+         模态窗口
+ ==================== */
+
+.cu-modal {
+	position: fixed;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	z-index: 1110;
+	opacity: 0;
+	outline: 0;
+	text-align: center;
+	-ms-transform: scale(1.185);
+	transform: scale(1.185);
+	backface-visibility: hidden;
+	perspective: 2000upx;
+	background: rgba(0, 0, 0, 0.6);
+	transition: all 0.3s ease-in-out 0s;
+	pointer-events: none;
+}
+
+.cu-modal::before {
+	content: "\200B";
+	display: inline-block;
+	height: 100%;
+	vertical-align: middle;
+}
+
+.cu-modal.show {
+	opacity: 1;
+	transition-duration: 0.3s;
+	-ms-transform: scale(1);
+	transform: scale(1);
+	overflow-x: hidden;
+	overflow-y: auto;
+	pointer-events: auto;
+}
+
+.cu-dialog {
+	position: relative;
+	display: inline-block;
+	vertical-align: middle;
+	margin-left: auto;
+	margin-right: auto;
+	width: 680upx;
+	max-width: 100%;
+	background-color: #f8f8f8;
+	border-radius: 10upx;
+	overflow: hidden;
+}
+
+.cu-modal.bottom-modal::before {
+	vertical-align: bottom;
+}
+
+.cu-modal.bottom-modal .cu-dialog {
+	width: 100%;
+	border-radius: 0;
+}
+
+.cu-modal.bottom-modal {
+	margin-bottom: -1000upx;
+}
+
+.cu-modal.bottom-modal.show {
+	margin-bottom: 0;
+}
+
+.cu-modal.drawer-modal {
+	transform: scale(1);
+	display: flex;
+}
+
+.cu-modal.drawer-modal .cu-dialog {
+	height: 100%;
+	min-width: 200upx;
+	border-radius: 0;
+	margin: initial;
+	transition-duration: 0.3s;
+}
+
+.cu-modal.drawer-modal.justify-start .cu-dialog {
+	transform: translateX(-100%);
+}
+
+.cu-modal.drawer-modal.justify-end .cu-dialog {
+	transform: translateX(100%);
+}
+
+.cu-modal.drawer-modal.show .cu-dialog {
+	transform: translateX(0%);
+}
+.cu-modal .cu-dialog>.cu-bar:first-child .action{
+  min-width: 100rpx;
+  margin-right: 0;
+  min-height: 100rpx;
+}
+/* ==================
+         轮播
+ ==================== */
+swiper .a-swiper-dot {
+	display: inline-block;
+	width: 16upx;
+	height: 16upx;
+	background: rgba(0, 0, 0, .3);
+	border-radius: 50%;
+	vertical-align: middle;
+}
+
+swiper[class*="-dot"] .wx-swiper-dots,
+swiper[class*="-dot"] .a-swiper-dots,
+swiper[class*="-dot"] .uni-swiper-dots {
+	display: flex;
+	align-items: center;
+	width: 100%;
+	justify-content: center;
+}
+
+swiper.square-dot .wx-swiper-dot,
+swiper.square-dot .a-swiper-dot,
+swiper.square-dot .uni-swiper-dot {
+	background-color: #ffffff;
+	opacity: 0.4;
+	width: 10upx;
+	height: 10upx;
+	border-radius: 20upx;
+	margin: 0 8upx !important;
+}
+
+swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.square-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active {
+	opacity: 1;
+	width: 30upx;
+}
+
+swiper.round-dot .wx-swiper-dot,
+swiper.round-dot .a-swiper-dot,
+swiper.round-dot .uni-swiper-dot {
+	width: 10upx;
+	height: 10upx;
+	position: relative;
+	margin: 4upx 8upx !important;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after {
+	content: "";
+	position: absolute;
+	width: 10upx;
+	height: 10upx;
+	top: 0upx;
+	left: 0upx;
+	right: 0;
+	bottom: 0;
+	margin: auto;
+	background-color: #ffffff;
+	border-radius: 20upx;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active {
+	width: 18upx;
+	height: 18upx;
+}
+
+.screen-swiper {
+	min-height: 375upx;
+}
+
+.screen-swiper image,
+.screen-swiper video,
+.swiper-item image,
+.swiper-item video {
+	width: 100%;
+	display: block;
+	height: 100%;
+	margin: 0;
+	pointer-events: none;
+}
+
+.card-swiper {
+	height: 420upx !important;
+}
+
+.card-swiper swiper-item {
+	width: 610upx !important;
+	left: 70upx;
+	box-sizing: border-box;
+	padding: 40upx 0upx 70upx;
+	overflow: initial;
+}
+
+.card-swiper swiper-item .swiper-item {
+	width: 100%;
+	display: block;
+	height: 100%;
+	border-radius: 10upx;
+	transform: scale(0.9);
+	transition: all 0.2s ease-in 0s;
+	overflow: hidden;
+}
+
+.card-swiper swiper-item.cur .swiper-item {
+	transform: none;
+	transition: all 0.2s ease-in 0s;
+}
+
+
+.tower-swiper {
+	height: 420upx;
+	position: relative;
+	max-width: 750upx;
+	overflow: hidden;
+}
+
+.tower-swiper .tower-item {
+	position: absolute;
+	width: 300upx;
+	height: 380upx;
+	top: 0;
+	bottom: 0;
+	left: 50%;
+	margin: auto;
+	transition: all 0.2s ease-in 0s;
+	opacity: 1;
+}
+
+.tower-swiper .tower-item.none {
+	opacity: 0;
+}
+
+.tower-swiper .tower-item .swiper-item {
+	width: 100%;
+	height: 100%;
+	border-radius: 6upx;
+	overflow: hidden;
+}
+
+/* ==================
+          步骤条
+ ==================== */
+
+.cu-steps {
+	display: flex;
+}
+
+scroll-view.cu-steps {
+	display: block;
+	white-space: nowrap;
+}
+
+scroll-view.cu-steps .cu-item {
+	display: inline-block;
+}
+
+.cu-steps .cu-item {
+	flex: 1;
+	text-align: center;
+	position: relative;
+	min-width: 100upx;
+}
+
+.cu-steps .cu-item:not([class*="text-"]) {
+	color: #8799a3;
+}
+
+.cu-steps .cu-item [class*="cuIcon-"],
+.cu-steps .cu-item .num {
+	display: block;
+	font-size: 40upx;
+	line-height: 80upx;
+}
+
+.cu-steps .cu-item::before,
+.cu-steps .cu-item::after,
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+	content: "";
+	display: block;
+	position: absolute;
+	height: 0px;
+	width: calc(100% - 80upx);
+	border-bottom: 1px solid #ccc;
+	left: calc(0px - (100% - 80upx) / 2);
+	top: 40upx;
+	z-index: 0;
+}
+
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+	content: "\e6a3";
+	font-family: 'cuIcon';
+	height: 30upx;
+	border-bottom-width: 0px;
+	line-height: 30upx;
+	top: 0;
+	bottom: 0;
+	margin: auto;
+	color: #ccc;
+}
+
+.cu-steps.steps-bottom .cu-item::before,
+.cu-steps.steps-bottom .cu-item::after {
+	bottom: 40upx;
+	top: initial;
+}
+
+.cu-steps .cu-item::after {
+	border-bottom: 1px solid currentColor;
+	width: 0px;
+	transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"]::after {
+	width: calc(100% - 80upx);
+	color: currentColor;
+}
+
+.cu-steps .cu-item:first-child::before,
+.cu-steps .cu-item:first-child::after {
+	display: none;
+}
+
+.cu-steps .cu-item .num {
+	width: 40upx;
+	height: 40upx;
+	border-radius: 50%;
+	line-height: 40upx;
+	margin: 20upx auto;
+	font-size: 24upx;
+	border: 1px solid currentColor;
+	position: relative;
+	overflow: hidden;
+}
+
+.cu-steps .cu-item[class*="text-"] .num {
+	background-color: currentColor;
+}
+
+.cu-steps .cu-item .num::before,
+.cu-steps .cu-item .num::after {
+	content: attr(data-index);
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	margin: auto;
+	transition: all 0.3s ease-in-out 0s;
+	transform: translateY(0upx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num::before {
+	transform: translateY(-40upx);
+	color: #ffffff;
+}
+
+.cu-steps .cu-item .num::after {
+	transform: translateY(40upx);
+	color: #ffffff;
+	transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"] .num::after {
+	content: "\e645";
+	font-family: 'cuIcon';
+	color: #ffffff;
+	transform: translateY(0upx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num.err::after {
+	content: "\e646";
+}
+
+/* ==================
+          布局
+ ==================== */
+
+/*  -- flex弹性布局 -- */
+
+.flex {
+	display: flex;
+}
+
+.basis-xs {
+	flex-basis: 20%;
+}
+
+.basis-sm {
+	flex-basis: 40%;
+}
+
+.basis-df {
+	flex-basis: 50%;
+}
+
+.basis-lg {
+	flex-basis: 60%;
+}
+
+.basis-xl {
+	flex-basis: 80%;
+}
+
+.flex-sub {
+	flex: 1;
+}
+
+.flex-twice {
+	flex: 2;
+}
+
+.flex-treble {
+	flex: 3;
+}
+
+.flex-direction {
+	flex-direction: column;
+}
+
+.flex-wrap {
+	flex-wrap: wrap;
+}
+
+.align-start {
+	align-items: flex-start;
+}
+
+.align-end {
+	align-items: flex-end;
+}
+
+.align-center {
+	align-items: center;
+}
+
+.align-stretch {
+	align-items: stretch;
+}
+
+.self-start {
+	align-self: flex-start;
+}
+
+.self-center {
+	align-self: flex-center;
+}
+
+.self-end {
+	align-self: flex-end;
+}
+
+.self-stretch {
+	align-self: stretch;
+}
+
+.align-stretch {
+	align-items: stretch;
+}
+
+.justify-start {
+	justify-content: flex-start;
+}
+
+.justify-end {
+	justify-content: flex-end;
+}
+
+.justify-center {
+	justify-content: center;
+}
+
+.justify-between {
+	justify-content: space-between;
+}
+
+.justify-around {
+	justify-content: space-around;
+}
+
+/* grid布局 */
+
+.grid {
+	display: flex;
+	flex-wrap: wrap;
+}
+
+.grid.grid-square {
+	overflow: hidden;
+}
+
+.grid.grid-square .cu-tag {
+	position: absolute;
+	right: 0;
+	top: 0;
+	border-bottom-left-radius: 6upx;
+	padding: 6upx 12upx;
+	height: auto;
+	background-color: rgba(0, 0, 0, 0.5);
+}
+
+.grid.grid-square>view>text[class*="cuIcon-"] {
+	font-size: 52upx;
+	position: absolute;
+	color: #8799a3;
+	margin: auto;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+}
+
+.grid.grid-square>view {
+	margin-right: 20upx;
+	margin-bottom: 20upx;
+	border-radius: 6upx;
+	position: relative;
+	overflow: hidden;
+}
+.grid.grid-square>view.bg-img image {
+	width: 100%;
+	height: 100%;
+	position: absolute;
+}
+.grid.col-1.grid-square>view {
+	padding-bottom: 100%;
+	height: 0;
+	margin-right: 0;
+}
+
+.grid.col-2.grid-square>view {
+	padding-bottom: calc((100% - 20upx)/2);
+	height: 0;
+	width: calc((100% - 20upx)/2);
+}
+
+.grid.col-3.grid-square>view {
+	padding-bottom: calc((100% - 40upx)/3);
+	height: 0;
+	width: calc((100% - 40upx)/3);
+}
+
+.grid.col-4.grid-square>view {
+	padding-bottom: calc((100% - 60upx)/4);
+	height: 0;
+	width: calc((100% - 60upx)/4);
+}
+
+.grid.col-5.grid-square>view {
+	padding-bottom: calc((100% - 80upx)/5);
+	height: 0;
+	width: calc((100% - 80upx)/5);
+}
+
+.grid.col-2.grid-square>view:nth-child(2n),
+.grid.col-3.grid-square>view:nth-child(3n),
+.grid.col-4.grid-square>view:nth-child(4n),
+.grid.col-5.grid-square>view:nth-child(5n) {
+	margin-right: 0;
+}
+
+.grid.col-1>view {
+	width: 100%;
+}
+
+.grid.col-2>view {
+	width: 50%;
+}
+
+.grid.col-3>view {
+	width: 33.33%;
+}
+
+.grid.col-4>view {
+	width: 25%;
+}
+
+.grid.col-5>view {
+	width: 20%;
+}
+
+/*  -- 内外边距 -- */
+
+.margin-0 {
+	margin: 0;
+}
+
+.margin-xs {
+	margin: 10upx;
+}
+
+.margin-sm {
+	margin: 20upx;
+}
+
+.margin {
+	margin: 30upx;
+}
+
+.margin-lg {
+	margin: 40upx;
+}
+
+.margin-xl {
+	margin: 50upx;
+}
+
+.margin-top-xs {
+	margin-top: 10upx;
+}
+
+.margin-top-sm {
+	margin-top: 20upx;
+}
+
+.margin-top {
+	margin-top: 30upx;
+}
+
+.margin-top-lg {
+	margin-top: 40upx;
+}
+
+.margin-top-xl {
+	margin-top: 50upx;
+}
+
+.margin-right-xs {
+	margin-right: 10upx;
+}
+
+.margin-right-sm {
+	margin-right: 20upx;
+}
+
+.margin-right {
+	margin-right: 30upx;
+}
+
+.margin-right-lg {
+	margin-right: 40upx;
+}
+
+.margin-right-xl {
+	margin-right: 50upx;
+}
+.margin-right-xxl {
+	margin-right: 150upx;
+}
+.margin-right-xxxl {
+	margin-right: 90upx;
+}
+
+.margin-bottom-xs {
+	margin-bottom: 10upx;
+}
+
+.margin-bottom-sm {
+	margin-bottom: 20upx;
+}
+
+.margin-bottom {
+	margin-bottom: 30upx;
+}
+
+.margin-bottom-lg {
+	margin-bottom: 40upx;
+}
+
+.margin-bottom-xl {
+	margin-bottom: 50upx;
+}
+
+.margin-left-xs {
+	margin-left: 10upx;
+}
+
+.margin-left-sm {
+	margin-left: 20upx;
+}
+
+.margin-left {
+	margin-left: 30upx;
+}
+
+.margin-left-lg {
+	margin-left: 40upx;
+}
+
+.margin-left-xl {
+	margin-left: 50upx;
+}
+
+.margin-lr-xs {
+	margin-left: 10upx;
+	margin-right: 10upx;
+}
+
+.margin-lr-sm {
+	margin-left: 20upx;
+	margin-right: 20upx;
+}
+
+.margin-lr {
+	margin-left: 30upx;
+	margin-right: 30upx;
+}
+
+.margin-lr-lg {
+	margin-left: 40upx;
+	margin-right: 40upx;
+}
+
+.margin-lr-xl {
+	margin-left: 50upx;
+	margin-right: 50upx;
+}
+
+.margin-tb-xs {
+	margin-top: 10upx;
+	margin-bottom: 10upx;
+}
+
+.margin-tb-sm {
+	margin-top: 20upx;
+	margin-bottom: 20upx;
+}
+
+.margin-tb {
+	margin-top: 30upx;
+	margin-bottom: 30upx;
+}
+
+.margin-tb-lg {
+	margin-top: 40upx;
+	margin-bottom: 40upx;
+}
+
+.margin-tb-xl {
+	margin-top: 50upx;
+	margin-bottom: 50upx;
+}
+
+.padding-0 {
+	padding: 0;
+}
+
+.padding-xs {
+	padding: 10upx;
+}
+
+.padding-sm {
+	padding: 20upx;
+}
+
+.padding {
+	padding: 30upx;
+}
+
+.padding-lg {
+	padding: 40upx;
+}
+
+.padding-xl {
+	padding: 50upx;
+}
+
+.padding-top-xs {
+	padding-top: 10upx;
+}
+
+.padding-top-sm {
+	padding-top: 20upx;
+}
+
+.padding-top {
+	padding-top: 30upx;
+}
+
+.padding-top-lg {
+	padding-top: 40upx;
+}
+
+.padding-top-xl {
+	padding-top: 50upx;
+}
+
+.padding-right-xs {
+	padding-right: 10upx;
+}
+
+.padding-right-sm {
+	padding-right: 20upx;
+}
+
+.padding-right {
+	padding-right: 30upx;
+}
+
+.padding-right-lg {
+	padding-right: 40upx;
+}
+
+.padding-right-xl {
+	padding-right: 50upx;
+}
+
+.padding-bottom-xs {
+	padding-bottom: 10upx;
+}
+
+.padding-bottom-sm {
+	padding-bottom: 20upx;
+}
+
+.padding-bottom {
+	padding-bottom: 30upx;
+}
+
+.padding-bottom-lg {
+	padding-bottom: 40upx;
+}
+
+.padding-bottom-xl {
+	padding-bottom: 50upx;
+}
+
+.padding-left-xs {
+	padding-left: 10upx;
+}
+
+.padding-left-sm {
+	padding-left: 20upx;
+}
+
+.padding-left {
+	padding-left: 30upx;
+}
+
+.padding-left-lg {
+	padding-left: 40upx;
+}
+
+.padding-left-xl {
+	padding-left: 50upx;
+}
+
+.padding-lr-xs {
+	padding-left: 10upx;
+	padding-right: 10upx;
+}
+
+.padding-lr-sm {
+	padding-left: 20upx;
+	padding-right: 20upx;
+}
+
+.padding-lr {
+	padding-left: 30upx;
+	padding-right: 30upx;
+}
+
+.padding-lr-lg {
+	padding-left: 40upx;
+	padding-right: 40upx;
+}
+
+.padding-lr-xl {
+	padding-left: 50upx;
+	padding-right: 50upx;
+}
+
+.padding-tb-xs {
+	padding-top: 10upx;
+	padding-bottom: 10upx;
+}
+
+.padding-tb-sm {
+	padding-top: 20upx;
+	padding-bottom: 20upx;
+}
+
+.padding-tb {
+	padding-top: 30upx;
+	padding-bottom: 30upx;
+}
+
+.padding-tb-lg {
+	padding-top: 40upx;
+	padding-bottom: 40upx;
+}
+
+.padding-tb-xl {
+	padding-top: 50upx;
+	padding-bottom: 50upx;
+}
+
+/* -- 浮动 --  */
+
+.cf::after,
+.cf::before {
+	content: " ";
+	display: table;
+}
+
+.cf::after {
+	clear: both;
+}
+
+.fl {
+	float: left;
+}
+
+.fr {
+	float: right;
+}
+
+/* ==================
+          背景
+ ==================== */
+
+.line-red::after,
+.lines-red::after {
+	border-color: #e54d42;
+}
+
+.line-orange::after,
+.lines-orange::after {
+	border-color: #f37b1d;
+}
+
+.line-yellow::after,
+.lines-yellow::after {
+	border-color: #fbbd08;
+}
+
+.line-olive::after,
+.lines-olive::after {
+	border-color: #8dc63f;
+}
+
+.line-green::after,
+.lines-green::after {
+	border-color: #39b54a;
+}
+
+.line-cyan::after,
+.lines-cyan::after {
+	border-color: #1cbbb4;
+}
+
+.line-blue::after,
+.lines-blue::after {
+	border-color: #0081ff;
+}
+
+.line-purple::after,
+.lines-purple::after {
+	border-color: #6739b6;
+}
+
+.line-mauve::after,
+.lines-mauve::after {
+	border-color: #9c26b0;
+}
+
+.line-pink::after,
+.lines-pink::after {
+	border-color: #e03997;
+}
+
+.line-brown::after,
+.lines-brown::after {
+	border-color: #a5673f;
+}
+
+.line-grey::after,
+.lines-grey::after {
+	border-color: #8799a3;
+}
+
+.line-gray::after,
+.lines-gray::after {
+	border-color: #aaaaaa;
+}
+
+.line-black::after,
+.lines-black::after {
+	border-color: #333333;
+}
+
+.line-white::after,
+.lines-white::after {
+	border-color: #ffffff;
+}
+
+.bg-red {
+	background-color: #e54d42;
+	color: #ffffff;
+}
+
+.bg-orange {
+	background-color: #f37b1d;
+	color: #ffffff;
+}
+
+.bg-yellow {
+	background-color: #fbbd08;
+	color: #333333;
+}
+
+.bg-olive {
+	background-color: #8dc63f;
+	color: #ffffff;
+}
+
+.bg-green {
+	background-color: #39b54a;
+	color: #ffffff;
+}
+
+.bg-cyan {
+	background-color: #1cbbb4;
+	color: #ffffff;
+}
+
+.bg-blue {
+	background-color: #0081ff;
+	color: #ffffff;
+}
+
+.bg-purple {
+	background-color: #6739b6;
+	color: #ffffff;
+}
+
+.bg-mauve {
+	background-color: #9c26b0;
+	color: #ffffff;
+}
+
+.bg-pink {
+	background-color: #e03997;
+	color: #ffffff;
+}
+
+.bg-brown {
+	background-color: #a5673f;
+	color: #ffffff;
+}
+
+.bg-grey {
+	background-color: #8799a3;
+	color: #ffffff;
+}
+
+.bg-gray {
+	background-color: #f0f0f0;
+	color: #333333;
+}
+
+.bg-black {
+	background-color: #333333;
+	color: #ffffff;
+}
+
+.bg-white {
+	background-color: #ffffff;
+	color: #666666;
+}
+
+.bg-shadeTop {
+	background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01));
+	color: #ffffff;
+}
+
+.bg-shadeBottom {
+	background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1));
+	color: #ffffff;
+}
+
+.bg-red.light {
+	color: #e54d42;
+	background-color: #fadbd9;
+}
+
+.bg-orange.light {
+	color: #f37b1d;
+	background-color: #fde6d2;
+}
+
+.bg-yellow.light {
+	color: #fbbd08;
+	background-color: #fef2ced2;
+}
+
+.bg-olive.light {
+	color: #8dc63f;
+	background-color: #e8f4d9;
+}
+
+.bg-green.light {
+	color: #39b54a;
+	background-color: #d7f0dbff;
+}
+
+.bg-cyan.light {
+	color: #1cbbb4;
+	background-color: #d2f1f0;
+}
+
+.bg-blue.light {
+	color: #0081ff;
+	background-color: #cce6ff;
+}
+
+.bg-purple.light {
+	color: #6739b6;
+	background-color: #e1d7f0;
+}
+
+.bg-mauve.light {
+	color: #9c26b0;
+	background-color: #ebd4ef;
+}
+
+.bg-pink.light {
+	color: #e03997;
+	background-color: #f9d7ea;
+}
+
+.bg-brown.light {
+	color: #a5673f;
+	background-color: #ede1d9;
+}
+
+.bg-grey.light {
+	color: #8799a3;
+	background-color: #e7ebed;
+}
+
+.bg-gradual-red {
+	background-image: linear-gradient(45deg, #f43f3b, #ec008c);
+	color: #ffffff;
+}
+
+.bg-gradual-orange {
+	background-image: linear-gradient(45deg, #ff9700, #ed1c24);
+	color: #ffffff;
+}
+
+.bg-gradual-green {
+	background-image: linear-gradient(45deg, #39b54a, #8dc63f);
+	color: #ffffff;
+}
+
+.bg-gradual-purple {
+	background-image: linear-gradient(45deg, #9000ff, #5e00ff);
+	color: #ffffff;
+}
+
+.bg-gradual-pink {
+	background-image: linear-gradient(45deg, #ec008c, #6739b6);
+	color: #ffffff;
+}
+
+.bg-gradual-blue {
+	background-image: linear-gradient(45deg, #0081ff, #1cbbb4);
+	color: #ffffff;
+}
+
+.shadow[class*="-red"] {
+	box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2);
+}
+
+.shadow[class*="-orange"] {
+	box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2);
+}
+
+.shadow[class*="-yellow"] {
+	box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2);
+}
+
+.shadow[class*="-olive"] {
+	box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2);
+}
+
+.shadow[class*="-green"] {
+	box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2);
+}
+
+.shadow[class*="-cyan"] {
+	box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2);
+}
+
+.shadow[class*="-blue"] {
+	box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2);
+}
+
+.shadow[class*="-purple"] {
+	box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2);
+}
+
+.shadow[class*="-mauve"] {
+	box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2);
+}
+
+.shadow[class*="-pink"] {
+	box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2);
+}
+
+.shadow[class*="-brown"] {
+	box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2);
+}
+
+.shadow[class*="-grey"] {
+	box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-gray"] {
+	box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-black"] {
+	box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.shadow[class*="-white"] {
+	box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.text-shadow[class*="-red"] {
+	text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2);
+}
+
+.text-shadow[class*="-orange"] {
+	text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2);
+}
+
+.text-shadow[class*="-yellow"] {
+	text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2);
+}
+
+.text-shadow[class*="-olive"] {
+	text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2);
+}
+
+.text-shadow[class*="-green"] {
+	text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2);
+}
+
+.text-shadow[class*="-cyan"] {
+	text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2);
+}
+
+.text-shadow[class*="-blue"] {
+	text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2);
+}
+
+.text-shadow[class*="-purple"] {
+	text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2);
+}
+
+.text-shadow[class*="-mauve"] {
+	text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2);
+}
+
+.text-shadow[class*="-pink"] {
+	text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2);
+}
+
+.text-shadow[class*="-brown"] {
+	text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2);
+}
+
+.text-shadow[class*="-grey"] {
+	text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-gray"] {
+	text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-black"] {
+	text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.bg-img {
+	background-size: cover;
+	background-position: center;
+	background-repeat: no-repeat;
+}
+
+.bg-mask {
+	background-color: #333333;
+	position: relative;
+}
+
+.bg-mask::after {
+	content: "";
+	border-radius: inherit;
+	width: 100%;
+	height: 100%;
+	display: block;
+	background-color: rgba(0, 0, 0, 0.4);
+	position: absolute;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	top: 0;
+}
+
+.bg-mask view,
+.bg-mask cover-view {
+	z-index: 5;
+	position: relative;
+}
+
+.bg-video {
+	position: relative;
+}
+
+.bg-video video {
+	display: block;
+	height: 100%;
+	width: 100%;
+	-o-object-fit: cover;
+	object-fit: cover;
+	position: absolute;
+	top: 0;
+	z-index: 0;
+	pointer-events: none;
+}
+
+/* ==================
+          文本
+ ==================== */
+
+.text-xs {
+	font-size: 20upx;
+}
+
+.text-sm {
+	font-size: 24upx;
+}
+
+.text-df {
+	font-size: 28upx;
+}
+
+.text-lg {
+	font-size: 32upx;
+}
+
+.text-xl {
+	font-size: 36upx;
+}
+
+.text-xxl {
+	font-size: 44upx;
+}
+
+.text-sl {
+	font-size: 80upx;
+}
+
+.text-xsl {
+	font-size: 120upx;
+}
+
+.text-Abc {
+	text-transform: Capitalize;
+}
+
+.text-ABC {
+	text-transform: Uppercase;
+}
+
+.text-abc {
+	text-transform: Lowercase;
+}
+
+.text-price::before {
+	content: "¥";
+	font-size: 80%;
+	margin-right: 4upx;
+}
+
+.text-cut {
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+}
+
+.text-bold {
+	font-weight: bold;
+}
+
+.text-center {
+	text-align: center;
+}
+
+.text-content {
+	line-height: 1.6;
+}
+
+.text-left {
+	text-align: left;
+}
+
+.text-right {
+	text-align: right;
+}
+
+.text-red,
+.line-red,
+.lines-red {
+	color: #e54d42;
+}
+
+.text-orange,
+.line-orange,
+.lines-orange {
+	color: #f37b1d;
+}
+
+.text-yellow,
+.line-yellow,
+.lines-yellow {
+	color: #fbbd08;
+}
+
+.text-olive,
+.line-olive,
+.lines-olive {
+	color: #8dc63f;
+}
+
+.text-green,
+.line-green,
+.lines-green {
+	color: #39b54a;
+}
+
+.text-cyan,
+.line-cyan,
+.lines-cyan {
+	color: #1cbbb4;
+}
+
+.text-blue,
+.line-blue,
+.lines-blue {
+	color: #0081ff;
+}
+
+.text-purple,
+.line-purple,
+.lines-purple {
+	color: #6739b6;
+}
+
+.text-mauve,
+.line-mauve,
+.lines-mauve {
+	color: #9c26b0;
+}
+
+.text-pink,
+.line-pink,
+.lines-pink {
+	color: #e03997;
+}
+
+.text-brown,
+.line-brown,
+.lines-brown {
+	color: #a5673f;
+}
+
+.text-grey,
+.line-grey,
+.lines-grey {
+	color: #8799a3;
+}
+
+.text-gray,
+.line-gray,
+.lines-gray {
+	color: #aaaaaa;
+}
+
+.text-black,
+.line-black,
+.lines-black {
+	color: #333333;
+}
+
+.text-white,
+.line-white,
+.lines-white {
+	color: #ffffff;
+}

+ 147 - 0
components/watch-button.vue

xqd
@@ -0,0 +1,147 @@
+<template>
+	<view>
+		<!-- 按钮 -->
+		<button :class="['buttonBorder',!_rotate?'dlbutton':'dlbutton_loading']" :style="{'background':bgColor, 'color': fontColor}"
+		 @click="$emit('click', $event)" @contact="$emit('contact', $event)" @error="$emit('error', $event)" @getphonenumber="$emit('getphonenumber', $event)"
+		 @getuserinfo="$emit('getuserinfo', $event)" @launchapp="$emit('launchapp', $event)" @longtap="$emit('longtap', $event)"
+		 @opensetting="$emit('opensetting', $event)" @touchcancel="$emit('touchcancel', $event)" @touchend="$emit('touchend', $event)"
+		 @touchmove="$emit('touchmove', $event)" @touchstart="$emit('touchstart', $event)">
+			<view :class="_rotate?'rotate_loop':''">
+				<text v-if="_rotate" class="cuIcon cuIcon-loading1 "></text>
+				<view v-if="!_rotate">
+					<slot name="text">{{ text }}</slot>
+				</view>
+			</view>
+		</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			text: String, //显示文本
+			rotate: {
+				//是否启动加载
+				type: [Boolean, String],
+				default: false,
+			},
+			bgColor: {
+				//按钮背景颜色
+				type: String,
+				default: "linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6))",
+			},
+			fontColor: {
+				//按钮字体颜色
+				type: String,
+				default: "#FFFFFF",
+			},
+		},
+		computed: {
+			_rotate() {
+				//处理值
+				return String(this.rotate) !== 'false'
+			},
+		}
+	}
+</script>
+
+<style>
+	@import url("./colorui/icon.css");
+	.dlbutton {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		white-space: nowrap;
+		overflow: hidden;
+		width: 601rpx;
+		height: 100rpx;
+		background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.6));
+		box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(164, 217, 228, 0.4);
+		border-radius: 2.5rem;
+		margin-top: 0rpx;
+	}
+
+	.dlbutton_loading {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		width: 100rpx;
+		height: 100rpx;
+		background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.6));
+		box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(164, 217, 228, 0.4);
+		border-radius: 2.5rem;
+		margin-top: 0rpx;
+	}
+
+	.buttonBorder {
+		border: none;
+		border-radius: 2.5rem;
+		-webkit-box-shadow: 0 0 60rpx 0 rgba(0, 0, 0, .2);
+		box-shadow: 0 0 60rpx 0 rgba(0, 0, 0, .2);
+		-webkit-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
+		-moz-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
+		-ms-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
+		-o-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
+		transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
+	}
+
+	/* 旋转动画 */
+	.rotate_loop {
+		-webkit-transition-property: -webkit-transform;
+		-webkit-transition-duration: 1s;
+		-moz-transition-property: -moz-transform;
+		-moz-transition-duration: 1s;
+		-webkit-animation: rotate 1s linear infinite;
+		-moz-animation: rotate 1s linear infinite;
+		-o-animation: rotate 1s linear infinite;
+		animation: rotate 1s linear infinite;
+	}
+
+	@-webkit-keyframes rotate {
+		from {
+			-webkit-transform: rotate(0deg)
+		}
+
+		to {
+			-webkit-transform: rotate(360deg)
+		}
+	}
+
+	@-moz-keyframes rotate {
+		from {
+			-moz-transform: rotate(0deg)
+		}
+
+		to {
+			-moz-transform: rotate(359deg)
+		}
+	}
+
+	@-o-keyframes rotate {
+		from {
+			-o-transform: rotate(0deg)
+		}
+
+		to {
+			-o-transform: rotate(359deg)
+		}
+	}
+
+	@keyframes rotate {
+		from {
+			transform: rotate(0deg)
+		}
+
+		to {
+			transform: rotate(359deg)
+		}
+	}
+	
+	button::after {
+		border: none;
+	}
+</style>

+ 208 - 0
components/watch-input.vue

xqd
@@ -0,0 +1,208 @@
+<template>
+	<view class="main-list oBorder">
+		<!-- 文本框 -->
+		<input 
+			class="main-input" 
+			:value="value" 
+			:type="_type" 
+			:maxlength="maxlength" 
+			:placeholder="placeholder" 
+			:password="type==='password'&&!showPassword" 
+			
+			@input="$emit('input', $event.target.value)"
+			@blur="$emit('blur', $event)"
+			@focus="$emit('focus', $event)"
+			@longpress="$emit('longpress', $event)"
+			@confirm="$emit('confirm', $event)"
+			@click="$emit('click', $event)"
+			@longtap="$emit('longtap', $event)"
+			@touchcancel="$emit('touchcancel', $event)"
+			@touchend="$emit('touchend', $event)"
+			@touchmove="$emit('touchmove', $event)"
+			@touchstart="$emit('touchstart', $event)"
+		/>
+		<!-- 是否可见密码 -->
+		<image 
+			v-if="_isShowPass&&type==='password'&&!_isShowCode"
+			class="img cuIcon" 
+			:class="showPassword?'cuIcon-attention':'cuIcon-attentionforbid'" 
+			@tap="showPass"
+		></image>
+		<!-- 倒计时 -->
+		<view 
+			v-if="_isShowCode&&!_isShowPass"
+			:class="['vercode',{'vercode-run': second>0}]" 
+			@click="setCode"
+		>{{ getVerCodeSecond }}</view>
+		
+	</view>
+</template>
+
+<script>
+	var _this, countDown;
+	export default{
+		data(){
+			return{
+				showPassword: false, //是否显示明文
+				second: 0, //倒计时
+				isRunCode: false, //是否开始倒计时
+			}
+		},
+		props:{
+			type: String, //类型
+			value: String, //值
+			placeholder: String, //框内提示
+			maxlength: {
+				//最大长度
+				type: [Number,String],
+				default: 20,
+			},
+			isShowPass:{
+				//是否显示密码图标(二选一)
+				type: [Boolean,String],
+				default: false,
+			},
+			isShowCode:{
+				//是否显示获取验证码(二选一)
+				type: [Boolean,String],
+				default: false,
+			},
+			codeText:{
+				type: String,
+				default: "获取验证码",
+			},
+			setTime:{
+				//倒计时时间设置
+				type: [Number,String],
+				default: 60,
+			}
+		},
+		model: {
+			prop: 'value',
+			event: 'input'
+		},
+		mounted() {
+			_this=this
+			//准备触发
+			this.$on('runCode',(val)=>{
+                this.runCode(val);
+            });
+			clearInterval(countDown);//先清理一次循环,避免缓存
+		},
+		methods:{
+			showPass(){
+				//是否显示密码
+				this.showPassword = !this.showPassword
+			},
+			setCode(){
+				//设置获取验证码的事件
+				if(this.isRunCode){
+					//判断是否开始倒计时,避免重复点击
+					return false;
+				}
+				this.$emit('setCode')
+			},
+			runCode(val){
+				//开始倒计时
+				if(String(val)=="0"){
+					
+					//判断是否需要终止循环
+					this.second = 0; //初始倒计时
+					clearInterval(countDown);//清理循环
+					this.isRunCode= false; //关闭循环状态
+					return false;
+				}
+				if(this.isRunCode){
+					//判断是否开始倒计时,避免重复点击
+					return false;
+				}
+				this.isRunCode= true
+				this.second = this._setTime //倒数秒数
+				
+				let _this=this;
+				countDown = setInterval(function(){
+					_this.second--
+					if(_this.second==0){
+						_this.isRunCode= false
+						clearInterval(countDown)
+					}
+				},1000)
+			}
+		},
+		computed:{
+			_type(){
+				//处理值
+				const type = this.type
+				return type == 'password' ? 'text' : type
+			},
+			_isShowPass() {
+				//处理值
+				return String(this.isShowPass) !== 'false'
+			},
+			_isShowCode() {
+				//处理值
+				return String(this.isShowCode) !== 'false'
+			},
+			_setTime() {
+				//处理值
+				const setTime = Number(this.setTime)
+				return setTime>0 ? setTime : 60
+			},
+			getVerCodeSecond(){
+				//验证码倒计时计算
+				if(this.second<=0){
+					return this.codeText;
+				}else{
+					if(this.second<10){
+						return '0'+this.second;
+					}else{
+						return this.second;
+					}
+				}
+				
+			}
+		}
+	}
+</script>
+
+<style>
+	@import url("./colorui/icon.css");
+	
+	.main-list{
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		align-items: center;
+		/* height: 36rpx; */   /* Input 高度 */
+		color: #333333;
+		padding: 30rpx 32rpx;
+		margin:32rpx 0;
+	}
+	.img{
+		width: 32rpx;
+		height: 32rpx;
+		font-size: 32rpx;
+	}
+	.main-input{
+		flex: 1;
+		text-align: left;
+		font-size: 28rpx;
+		/* line-height: 100rpx; */
+		padding-right: 10rpx;
+		margin-left: 20rpx;
+	}
+	.vercode {
+		color: rgba(0,0,0,0.7);
+		font-size: 24rpx;
+		/* line-height: 100rpx; */
+	}
+	.vercode-run {
+		color: rgba(0,0,0,0.4) !important;
+	}
+	.oBorder{
+	    border: none;
+	    border-radius: 2.5rem ;
+	    -webkit-box-shadow: 0 0 60rpx 0 rgba(43,86,112,.1) ;
+	    box-shadow: 0 0 60rpx 0 rgba(43,86,112,.1) ;
+	}
+</style>

+ 29 - 0
main.js

xqd
@@ -0,0 +1,29 @@
+import Vue from 'vue'
+import App from './App'
+import store from '@/store/index'
+import request from '@/common/request'
+import util from '@/common/util.js';
+import {
+	imgHost
+} from '@/common/env';
+import uView from "uview-ui";
+Vue.use(uView);
+
+Vue.config.productionTip = false;
+
+//挂载全局对象
+//Vue.prototype.$store = store
+Vue.prototype.$request = request
+Vue.prototype.$util = util
+Vue.prototype.$imgHost = imgHost
+// 引入colorUI
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+
+const app = new Vue({
+	store,
+	request,
+	...App
+})
+app.$mount()

+ 99 - 0
manifest.json

xqd
@@ -0,0 +1,99 @@
+{
+    "name" : "mabao",
+    "appid" : "__UNI__03DDBC6",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "plugins" : {
+            "chooseLocation" : {
+                "version" : "1.0.5",
+                "provider" : "wx76a9a06e5b4e693e"
+            },
+            "tucao" : {
+                "provider" : "wx8abaf00ee8c3202e",
+                "version" : "1.1.5"
+            }
+        },
+        "appid" : "wx92066f7587c34617",
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : true,
+            "postcss" : false,
+            "minified" : true
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "你的位置信息将用于小程序定位"
+            }
+        },
+        "uniStatistics" : {
+            "enable" : false
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    }
+}

+ 86 - 0
pages.json

xqd
@@ -0,0 +1,86 @@
+{
+	"easycom": {
+		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "首页"
+			}
+		},
+		{
+			"path": "pages/index/book",
+			"style": {
+				"navigationBarTitleText": "健康小课堂"
+			}
+		},
+		{
+			"path": "pages/index/mine",
+			"style": {
+				"navigationBarTitleText": "我的"
+			}
+		},
+		{
+			"path": "pages/doctor_related/select_doctor",
+			"style": {
+				"navigationBarTitleText": "找医生"
+			}
+		},
+		{
+			"path": "pages/doctor_related/doctor_info",
+			"style": {
+				"navigationBarTitleText": "医生详情"
+			}
+		},
+		{
+			"path": "pages/doctor_related/info_write",
+			"style": {
+				"navigationBarTitleText": "信息填写"
+			}
+		},
+		{
+			"path": "pages/archives/my_archives",
+			"style": {
+				"navigationBarTitleText": "档案编辑"
+			}
+		},
+		{
+			"path": "pages/login/login",
+			"style": {
+				"navigationBarTitleText": "登录/注册"
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"tabBar": {
+		"color": "#C0C4CC", //未选中的菜单文字颜色
+		"selectedColor": "#fab6b6", //选中时的菜单文字颜色
+		"borderStyle": "black",
+		"backgroundColor": "#ffffff", //背景
+		"list": [{
+				"pagePath": "pages/index/index", //页面地址
+				"iconPath": "./static/img/home.png", //未选中时的图片
+				"selectedIconPath": "./static/img/home_select.png", //选中时的图片
+				"text": "首页" //菜单文字
+			},
+			{
+				"pagePath": "pages/index/book",
+				"iconPath": "./static/img/book.png",
+				"selectedIconPath": "./static/img/book_select.png",
+				"text": "小课堂"
+			},
+			{
+				"pagePath": "pages/index/mine",
+				"iconPath": "./static/img/my.png",
+				"selectedIconPath": "./static/img/my_select.png",
+				"text": "我的"
+			}
+		]
+	}
+}

+ 25 - 0
pages/archives/my_archives.vue

xqd
@@ -0,0 +1,25 @@
+<template>
+	<view class="main">
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		onLoad(options) {
+
+		},
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+			
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.main {}
+</style>

+ 296 - 0
pages/doctor_related/doctor_info.vue

xqd
@@ -0,0 +1,296 @@
+<template>
+	<view class="main">
+		<view>
+			<view class="pr det-body">
+				<image class="det-bg-img" mode="scaleToFill" src="http://file.supermm.me/miniProgram/images/det/det_bg_01.png"></image>
+				<view class="det-head pr plr15 bdr8 m-bg-white mlr15 pt25">
+					<view class="m-xstart pr m-bottom-line pb25 margin-bottom-sm">
+						<view class="m-flex overflow mr10">
+							<view class="m-xend">
+								<text class="dpb fb f16">唐艳</text>
+								<text class="dpb f14 m-gray-small ml5">华西牙科医生</text>
+								<text class="dpb m-flex"></text>
+							</view>
+							<view class="m-xend mt25">
+								<view class="f14 m-gray-big">评分:<text class="m-theme">5.0</text>
+									<text class="f11">分</text>
+								</view>
+								<view class="f14 ml15 m-gray-big">服务:<text class="m-theme">350</text>
+									<text class="f11">人</text>
+								</view>
+								<view class="m-flex"></view>
+							</view>
+						</view>
+						<view class="pr pt5">
+							<view bindtap="_goSubscribe" class="tc m-white bdr30 f12 det-attention" v-if="true">+关注</view>
+							<view bindtap="_goUnSubscribe" class="tc m-white bdr30 f12 det-attention active" wx:else>
+								<icon color="#fff" size="12" type="success_no_circle"></icon>已关注
+							</view>
+							<u-image shape="circle" width="120rpx" height="120rpx" src="http://file.supermm.me/app/2020-03-26/e5b70e95-0fcf-41a5-9b82-8f421b338e38.jpg"></u-image>
+						</view>
+					</view>
+					<u-read-more :toggle="true" show-height="200" close-text=" " open-text=" ">
+						<rich-text :nodes="content"></rich-text>
+					</u-read-more>
+				</view>
+				<!-- <view class="pr mt30 pr15 m-dpflex m-justify-start m-align-center">
+					<view bindtap="_selectServer" class="m-ycenter overflow pt8 pb8 overflow bdr4 ml15 plr5 det-item {{serverSelect===index?'active':''}} {{item.is_open===1?'':'disabled'}}"
+					 data-cantap="{{item.is_open}}" data-index="{{index}}" style="box-size: border-content;" wx:for="{{docMsg.server}}"
+					 wx:key="index">
+						<lazy-img class="dpb" size="{{54}}" url="{{item.open_icon}}" wx:if="{{item.is_open===1}}"></lazy-img>
+						<lazy-img class="dpb" size="{{54}}" url="{{item.close_icon}}" wx:else></lazy-img>
+						<view class="f14 mt6 text">{{item.realname}}</view>
+					</view>
+				</view> -->
+				<!-- <view class="pr mt30 pb8">
+					<view class="pr m-xstart mlr15 pb10 m-bottom-line" hidden="{{serverSelect!=index}}" wx:for="{{docMsg.server}}"
+					 wx:key="index">
+						<image class="dpb mt2" mode="scaleToFill" src="http://file.supermm.me/miniProgram/images/det/det_img_01.png"
+						 style="width: 28rpx; height: 32rpx;"></image>
+						<view class="m-flex overflow ml15 m-gray-small plineHeight20">
+							<rich-text nodes="{{item.descInfo}}" type="node"></rich-text>
+						</view>
+					</view>
+				</view> -->
+			</view>
+			<!-- <block wx:if="{{docMsg.leaguesCode!='cyek'}}">
+				<view class="pr m-bg-gray-ll pt10 pb10" wx:if="{{consultingList.length>0}}">
+					<view class="pr m-bg-white pt15 pb15">
+						<view class="f18 fb plr15 pb10">咨询服务包</view>
+						<view class="package-list plr15">
+							<view class="warp">
+								<view bindtap="goServiceDetails" class="list" data-item="{{item}}" wx:for="{{consultingList}}">
+									<view class="name">{{item.goodsName}}</view>
+									<view class="desc">{{item.goodsSubTitle}}</view>
+									<view class="price">{{item.goodsPrice}}元/{{item.serviceLimit}}次</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</block> -->
+			<!-- <view bindtap="goAdrPostion" class="pr m-bg-gray-ll pt10 pb10">
+				<view class="pr m-bg-white pt15 pb15">
+					<view class="f18 fb plr15">机构地址</view>
+					<view class="pr m-xcenter plr15 mt15">
+						<image class="dpb" mode="scaleToFill" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAABx0lEQVQoU2WSP2gTcRTHv+/dH4IdmkVcFAvSgihNLi1SRKE4uNhek4I6iNLY5AQnB93dpHNBMEltIbgUc5pUF0F0cDBIk2twKiJBBAWHVgOl5u5+TxrINeCbvnz5Pnh8vo8wMBPOE8NXx6YIcpKJfu74Ox/aa9n9foT6IrFYtVjjMkHOHO7TV6Ww6JVm3x94vXBy4fkombGPUMEwEW+oMPRY44QAs0TcDfzwUms1Xe+FrXztJURsIdz0inPPkgsv4t5aZjd5u3qDGGUiqjeK9nmauLo+rOLmDyJuNQr2VMrZWBJR90DacrMwc9/K1+qAmvQDjNB4rnJcg/aN2Kg2ClcyqTuvP0nYnWQ2vM3CjGU5tQpE5gPfP03T0+/036OdLwBinT19bCjmn2JCPoBa6SreHtJpWwTdzvf2WO/mRM7NaqQ/BeFN92949/Oe3z57xBgxTe0xgMuhCm9trWTKfXSUcmquKJUGUQBgF0AcIroQvfKKtg2QRJyt7PpRMmKbosITEWfW2vD3zzVXr/2KOEfFOO4FFu0tRJnE+h8odbFRmmv912DfSObcB8zGI5HgerOYqQy+Q3TGofmQE7nx9FZp3h0MHuh/o0mz0Kcr4U0AAAAASUVORK5CYII="
+						 style="width: 10px; height: 12px;"></image>
+						<view class="m-flex tl ml5">{{docMsg.outpatient_station_info.stationName}}</view>
+					</view>
+					<view class="pr m-xcenter plr15 mt10">
+						<view class="m-flex tl m-gray-small f12 pl15 mr5">地址:{{docMsg.outpatient_station_info.address}}</view>
+						<view class="pt2 pb2 plr10 f12 m-gray-small br-gray-letter bdr30" wx:if="{{isPosition}}">
+							{{docMsg.outpatient_station_info.distance}}km
+						</view>
+						<view class="pt2 pb2 plr10 f12 m-gray-small br-gray-letter bdr30" wx:else>暂无距离</view>
+						<text class="dpb iconfont icon-arrow-right m-gray-letter f20"></text>
+					</view>
+				</view>
+			</view> -->
+			<!-- <view class="pr plr15 mt30">
+				<view class="pr f18 fb">患者评价 <text class="f12 m-gray-letter">({{totalSize}})</text>
+				</view>
+				<view class="pr pt15 pb15 m-bottom-line" wx:for="{{evaList}}" wx:key="index">
+					<view class="m-xcenter m-gray-small">
+						<text class="dpb f12">{{item.user_name}}</text>
+						<text class="dpb f12 ml10">{{showFormat.getPartStr(item.type,0,2)}}</text>
+						<star class="dpb ml20" color="star-orange" num="{{item.star}}" size="26"></star>
+						<text class="dpb m-flex tr f12 m-gray-letter">{{item.created_at}}</text>
+					</view>
+					<view class="f14 m-gray-big plineHeight20 mt10">{{item.content}}</view>
+					<view class="pr m-dpflex m-justify-start m-align-center m-wrap" wx:if="{{item.tag.length>0}}">
+						<tag-span class="dpb mt15 mr10" wx:for="{{item.tag}}" wx:for-index="i" wx:for-item="tag" wx:key="i">{{tag}}</tag-span>
+					</view>
+				</view>
+			</view> -->
+		</view>
+		<!-- <view class="m-foot-container">
+			<view class="pr m-xcenter m-bg-white">
+				<button class="m-gray-small plr20 m-xcenter dpb button-reset" openType="share">
+					<text class="iconfont icon-fenxiang dpb f22"></text>
+					<text class="f14 dpb ml5 f14">分享</text>
+				</button>
+				<view class="m-flex overflow">
+					<block wx:for="{{docMsg.server}}" wx:key="index">
+						<block wx:if="{{serverSelect===1}}">
+							<block wx:if="{{item.is_open===1}}">
+								<view bindtap="_goNext" class="plr20 pt15 pb15 tc m-white f16 {{item.is_open===1?'m-bg-theme':'m-bg-ccc'}}"
+								 data-item="{{item}}" data-msg="{{docMsg}}" hidden="{{serverSelect!=index}}" wx:if="{{schlistLen>0}}">{{item.realname}}</view>
+								<view class="plr20 pt15 pb15 tc m-white f16 m-bg-ccc" data-item="{{item}}" data-msg="{{docMsg}}" hidden="{{serverSelect!=index}}"
+								 wx:else>暂无排班</view>
+							</block>
+							<view class="plr20 pt15 pb15 tc m-white f16 m-bg-ccc" data-item="{{item}}" data-msg="{{docMsg}}" hidden="{{serverSelect!=index}}"
+							 wx:else>{{item.realname}}</view>
+						</block>
+						<view bindtap="_goNext" class="plr20 pt15 pb15 tc m-white f16 {{item.is_open===1?'m-bg-theme':'m-bg-ccc'}}"
+						 data-item="{{item}}" data-msg="{{docMsg}}" hidden="{{serverSelect!=index}}" wx:else>{{item.realname}}</view>
+					</block>
+				</view>
+			</view>
+		</view> -->
+		<!-- <wxs module="showFormat" src="../../utils/base-data-set.wxs" /> -->
+	</view>
+</template>
+
+<script>
+	export default {
+		onLoad(options) {
+
+		},
+		data() {
+			return {
+				content: `浔阳江头夜送客,枫叶荻花秋瑟瑟。主人下马客在船,举酒欲饮无管弦。醉不成欢惨将别,别时茫茫江浸月。
+				忽闻水上琵琶声,主人忘归客不发。寻声暗问弹者谁,琵琶声停欲语迟。移船相近邀相见,添酒回灯重开宴。千呼万唤始出来,犹抱琵琶半遮面。转轴拨弦三两声,未成曲调先有情。弦弦掩抑声声思,似诉平生不得志。低眉信手续续弹,说尽心中无限事。轻拢慢捻抹复挑,初为《霓裳》后《六幺》。大弦嘈嘈如急雨,小弦切切如私语。嘈嘈切切错杂弹,大珠小珠落玉盘。间关莺语花底滑,幽咽泉流冰下难。冰泉冷涩弦凝绝,凝绝不通声暂歇。别有幽愁暗恨生,此时无声胜有声。银瓶乍破水浆迸,铁骑突出刀枪鸣。曲终收拨当心画,四弦一声如裂帛。东船西舫悄无言,唯见江心秋月白。
+				沉吟放拨插弦中,整顿衣裳起敛容。自言本是京城女,家在虾蟆陵下住。十三学得琵琶成,名属教坊第一部。曲罢曾教善才服,妆成每被秋娘妒。五陵年少争缠头,一曲红绡不知数。钿头银篦击节碎,血色罗裙翻酒污。今年欢笑复明年,秋月春风等闲度。弟走从军阿姨死,暮去朝来颜色故。门前冷落鞍马稀,老大嫁作商人妇。商人重利轻别离,前月浮梁买茶去。去来江口守空船,绕船月明江水寒。夜深忽梦少年事,梦啼妆泪红阑干。
+				我闻琵琶已叹息,又闻此语重唧唧。同是天涯沦落人,相逢何必曾相识!我从去年辞帝京,谪居卧病浔阳城。浔阳地僻无音乐,终岁不闻丝竹声。住近湓江地低湿,黄芦苦竹绕宅生。其间旦暮闻何物?杜鹃啼血猿哀鸣。春江花朝秋月夜,往往取酒还独倾。岂无山歌与村笛?呕哑嘲哳难为听。今夜闻君琵琶语,如听仙乐耳暂明。莫辞更坐弹一曲,为君翻作《琵琶行》。感我此言良久立,却坐促弦弦转急。凄凄不似向前声,满座重闻皆掩泣。座中泣下谁最多?江州司马青衫湿。`
+			}
+		},
+		methods: {
+
+		}
+	};
+</script>
+
+<style scoped>
+	@import url("../index/mine.css");
+
+	.det-body {
+		z-index: 1;
+		padding-top: 80rpx;
+	}
+
+	.det-bg-img {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		z-index: 1;
+		display: block;
+		width: 100%;
+		height: 400rpx;
+	}
+
+	.det-head {
+		z-index: 2;
+		box-shadow: 0 0 50rpx 0 rgba(248, 151, 164, 0.13);
+	}
+
+	.det-attention {
+		position: absolute;
+		display: block;
+		bottom: -22rpx;
+		right: 50%;
+		z-index: 1;
+		width: 128rpx;
+		height: auto;
+		margin-right: -64rpx;
+		padding: 4rpx 0;
+		background-color: #F897A1;
+		box-sizing: border-box;
+	}
+
+	.det-attention.active {
+		background-color: #E6E6E6;
+	}
+
+	.det-item {
+		width: calc((100% - 120rpx) / 4);
+	}
+
+	.det-item.active {
+		background-color: rgba(255, 123, 114, 0.24);
+	}
+
+	.det-item .text {
+		color: rgba(0, 0, 0, 0.54);
+	}
+
+	.det-item .price {
+		color: rgba(0, 0, 0, 0.40);
+	}
+
+	.det-item.active .text,
+	.det-item.active .price {
+		color: #FF979C;
+	}
+
+	.det-item.disabled .text,
+	.det-item.disabled .price {
+		color: rgba(0, 0, 0, 0.3);
+	}
+
+	.button-reset {
+		height: 102rpx;
+		background: none !important;
+		color: rgba(0, 0, 0, 0.54) !important;
+	}
+
+	button::after {
+		border: none;
+	}
+
+	.button-reset::after {
+		border: none;
+	}
+
+	.package-list {
+		width: 100%;
+		height: 178rpx;
+		overflow: hidden;
+	}
+
+	.package-list .warp {
+		white-space: nowrap;
+		overflow: scroll;
+	}
+
+	.package-list .warp .list {
+		background: red;
+		display: inline-block;
+		font-size: 14px;
+		width: 266rpx;
+		height: 178rpx;
+		background: linear-gradient(270deg, rgba(255, 100, 101, 1) 0%, rgba(255, 148, 133, 1) 100%);
+		box-shadow: 0px 3px 5px 0px rgba(255, 110, 110, 0.5);
+		border-radius: 8rpx;
+		margin-right: 18rpx;
+		padding: 30rpx 20rpx 24rpx 20rpx;
+		overflow: hidden;
+	}
+
+	.package-list .warp .list:nth-child(3) {
+		margin-right: 0;
+	}
+
+	.package-list .warp .list .name {
+		font-size: 30rpx;
+		font-weight: 500;
+		color: rgba(255, 255, 255, 1);
+		line-height: 30rpx;
+	}
+
+	.package-list .warp .list .desc {
+		font-size: 24rpx;
+		font-weight: 400;
+		color: rgba(255, 255, 255, .87);
+		margin-top: 16rpx;
+		line-height: 24rpx;
+	}
+
+	.package-list .warp .list .price {
+		font-size: 24rpx;
+		font-weight: 500;
+		color: rgba(255, 255, 255, 1);
+		margin-top: 30rpx;
+		line-height: 24rpx;
+	}
+
+	.det-desc {
+		height: 40px;
+		overflow: hidden;
+	}
+
+	.det-desc.active {
+		height: auto;
+	}
+</style>

+ 81 - 0
pages/doctor_related/info_write.vue

xqd
@@ -0,0 +1,81 @@
+<template>
+	<view class="main">
+		<view class="cu-list menu-avatar">
+			<view class="cu-item">
+				<view class="cu-avatar round lg" style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg);"></view>
+				<view class="content">
+					<view class="text-grey">医生姓名</view>
+					<view class="text-gray text-sm flex">
+						<text class="text-cut">
+							科室名称 医生资质
+						</text>
+					</view>
+				</view>
+				<view class="action">
+
+				</view>
+			</view>
+		</view>
+		<view class="cu-list menu">
+			<view class="cu-item arrow" @click="openhuanzhe">
+				<view class="content">
+					<text class="text-grey">咨询患者</text>
+				</view>
+				<view class="action">
+					<text class="text-grey text-sm">测试二</text>
+				</view>
+			</view>
+			<view class="cu-item arrow">
+				<view class="content">
+					<text class="text-grey">接听号码</text>
+				</view>
+				<view class="action">
+					<text class="text-grey text-sm">13756797847</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text class="text-grey">咨询时间</text>
+				</view>
+				<view class="action">
+					<text class="text-grey text-sm">10分钟</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text class="text-grey">咨询费用</text>
+				</view>
+				<view class="action">
+					<text class="text-grey text-sm">19.9元</text>
+				</view>
+			</view>
+		</view>
+		<view class="cu-bar bg-white tabbar" style="position: fixed;bottom: 0;width: 100%;">
+			<view class="bg-green submit" @click="">
+				立即咨询
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		onLoad(options) {
+
+		},
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+			openhuanzhe(){
+				
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.main {}
+</style>

+ 283 - 0
pages/doctor_related/select_doctor.vue

xqd
@@ -0,0 +1,283 @@
+<template>
+	<view class="main">
+		<view class="margin-bottom-sm bg-white">
+			<u-dropdown>
+				<u-dropdown-item @change="allserive" v-model="value1" :title="options1[value1].label" :options="options1"></u-dropdown-item>
+				<u-dropdown-item @change="city" v-model="value2" :title="options2[value2].label" :options="options2"></u-dropdown-item>
+				<u-dropdown-item @change="recommend" v-model="value3" :title="options3[value3].label" :options="options3"></u-dropdown-item>
+			</u-dropdown>
+			<u-search :clearabled="true" shape="round" :show-action="false" @blur="searchg" placeholder="搜索医生姓名、医院名" v-model="keyword"></u-search>
+			<view style="width: 100%;background-color: #FFFFFF;">
+				<view @click="goinfo" class="recommendstyle margin-top-xs" v-for="(item,index) in test" :key="index" style="position: relative;overflow: hidden;height: 485rpx;">
+					<view class="base_item">
+						<view class="base_item_zi">
+							<view class="base_item_zi_items">
+								<view class="base_item_zi_content">
+									<u-image :fade="true" duration="450" width="120rpx" height="120rpx" src="https://file.supermm.me/UEditor/uploadFile/2020-09-21/D229A665CBFB4817A518A5C47726AB18.jpg"
+									 shape="circle"></u-image>
+									<view class="content_right">
+										<view class="" style="display: flex;align-items: center;">
+											<text style="font-size: 32rpx; font-weight: bold;">张三</text>
+											<text class="text_style">全科医学科</text>
+											<text class="text_style">医生</text>
+										</view>
+										<view class="m_gray_small">
+											昆明市西山区永昌西区社区卫生服务中心昆明市西山区永昌西区社区卫生服务中心
+										</view>
+										<view class="flex justify-start align-center flex-wrap" style="position: relative;">
+											<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="图文" shape="circle" mode="dark" type="primary" />
+											<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="电话" shape="circle" mode="dark" type="warning" />
+											<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="门诊" shape="circle" mode="dark" type="error" />
+										</view>
+									</view>
+								</view>
+								<view class="foot_juli padding-sm">
+									<u-line color="#f6f6f6" />
+									<view class="flex justify-center margin-top-sm" style="color: rgba(0,0,0,0.54);">
+										<view class="text-sm" style="flex: 1; text-align: left;">
+											评分:
+											<text style="color: #FF7B72;">5.0分</text>
+										</view>
+										<view class="text-sm" style="flex: 1; text-align: center;">
+											服务:
+											<text style="color: #FF7B72;">7人</text>
+										</view>
+										<view class="text-sm" style="flex: 1; text-align: right;">
+											距离:
+											<text style="color: #FF7B72;">650km</text>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="padding-sm doctor_style">
+							<view class="doctor_style_item">
+								2010年毕业于红河卫校,2010年8月工作至今,从事预防接种工作7年,对预防接种工作排苗等其他流程熟练,对接种疫苗后出现的一些不良反应有一定经验。
+							</view>
+							<view class="text-black flex justify-between align-center margin-top-xs" style="font-size: 30rpx;">
+								<view>急速响应</view>
+								<view class="">
+									服务
+									<text class="text-red">¥19.90</text>
+									起
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="margin-tb padding-tb-xs">
+			<u-loadmore :status="nomore" :icon-type="flower" />
+		</view>
+		<u-back-top :scroll-top="scrollTop" bottom="80" top="400"></u-back-top>
+	</view>
+</template>
+
+<script>
+	var user = require('../../common/user.js');
+	import {
+		mapState,
+		mapMutations,
+		mapGetters,
+		mapActions
+	} from 'vuex';
+	export default {
+		onLoad(options) {
+
+
+		},
+		mounted() {
+			console.log(this.value1)
+			this.getDoctorList()
+		},
+		data() {
+			return {
+				scrollTop: 0,
+				keyword: "",
+				test: [1, 2, 3, 4, 5],
+				value1: 0,
+				value2: 0,
+				value3: 0,
+				options1: [{
+						label: '全部服务',
+						value: 0,
+					}, {
+						label: '电话咨询',
+						value: 1,
+					},
+					{
+						label: '图文咨询',
+						value: 2,
+					},
+					{
+						label: '门诊预约',
+						value: 3,
+					}
+				],
+				options2: [{
+						label: '成都市',
+						value: 0,
+					}, {
+						label: 'xx市',
+						value: 1,
+					},
+					{
+						label: 'xx市',
+						value: 2,
+					},
+				],
+				options3: [{
+						label: '推荐排序',
+						value: 0,
+					}, {
+						label: '距离最近',
+						value: 1,
+					},
+					{
+						label: '好评最多',
+						value: 2,
+					},
+					{
+						label: '服务最多',
+						value: 3,
+					},
+				],
+			}
+		},
+		methods: {
+			//监听滚动
+			onPageScroll(e) {
+				this.scrollTop = e.scrollTop;
+			},
+			allserive(value) {
+				this.value1 = value
+				this.getDoctorList()
+			},
+			city(value) {
+				this.value2 = value
+			},
+			recommend(value) {
+				this.value3 = value
+				this.getDoctorList()
+			},
+			goinfo() {
+				uni.navigateTo({
+					url: "./doctor_info"
+				})
+			},
+			getDoctorList: async function() {
+				let res = await this.$request.post("/api/v1/docter/docterList", {
+					page: 1,
+					list_type: this.value1,
+					name: this.keyword,
+					sort_type: this.value3
+				}, )
+				console.log(res)
+			},
+			searchg(value) {
+				console.log(this.value1, this.value3)
+				this.getDoctorList()
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.main {
+		padding-top: 10rpx;
+		padding-left: 20rpx;
+		padding-right: 20rpx;
+	}
+
+	.base_item {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		z-index: 1;
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+	}
+
+	.doctor_style {
+		color: rgba(0, 0, 0, 0.54);
+	}
+
+	.doctor_style_item {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.base_item_zi {
+		padding-top: 20rpx;
+		margin: 0 20rpx;
+		position: relative;
+		box-sizing: border-box;
+	}
+
+	.base_item_zi_items {
+		box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);
+		background-color: #fff;
+		position: relative;
+		border-radius: 8rpx;
+		box-sizing: border-box;
+	}
+
+	.base_item_zi_content {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding: 30rpx 30rpx;
+		overflow: hidden;
+		position: relative;
+		width: 100%;
+		box-sizing: border-box;
+	}
+
+	.text_style {
+		font-size: 24rpx;
+		color: rgba(0, 0, 0, .54);
+		display: block;
+		margin-left: 10rpx;
+	}
+
+	.m_gray_small {
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		color: rgba(0, 0, 0, 0.54);
+		margin-top: 20rpx;
+		font-size: 28rpx;
+	}
+
+	.content_right {
+		flex: 1;
+		margin-left: 20rpx;
+		overflow: hidden;
+		position: relative;
+		box-sizing: border-box;
+	}
+
+	.foot_item {
+		background-color: #F7F7F7;
+		box-sizing: border-box;
+	}
+
+	.grid-text {
+		font-size: 28rpx;
+		margin-top: 4rpx;
+		color: $u-type-info;
+	}
+
+	.tltleStyle {
+		padding: 30rpx 30rpx 15rpx 15rpx;
+		font-weight: bold;
+		font-size: 40rpx;
+		background-color: #fff;
+	}
+</style>

+ 92 - 0
pages/index/book.vue

xqd
@@ -0,0 +1,92 @@
+<template>
+	<view class="main">
+		<view class="indexswiper" style="margin-top: 10rpx;">
+			<u-swiper :list="list" mode="none"></u-swiper>
+		</view>
+		<view class="tltleStyle">
+			推荐文章
+		</view>
+		<u-card :show-head="false" :show-foot="false" :border="false">
+			<view class="" slot="body">
+				<view class="u-border-bottom padding-bottom-sm">
+					<view class="u-body-item u-flex u-col-between u-p-t-0">
+						<view class="u-body-item-title u-line-2">瓶身描绘的牡丹一如你初妆,冉冉檀香透过窗心事我了然,宣纸上走笔至此搁一半</view>
+						<image src="https://img11.360buyimg.com/n7/jfs/t1/94448/29/2734/524808/5dd4cc16E990dfb6b/59c256f85a8c3757.jpg"
+						 mode="aspectFill"></image>
+					</view>
+					<u-tag text="情感咨询" size="mini" shape="circle" mode="dark" type="info" />
+				</view>
+				<view class="padding-bottom-sm margin-top-sm">
+					<view class="u-body-item u-flex u-col-between u-p-t-0">
+						<view class="u-body-item-title u-line-2">瓶身描绘的牡丹一如你初妆,冉冉檀香透过窗心事我了然,宣纸上走笔至此搁一半</view>
+						<image src="https://img11.360buyimg.com/n7/jfs/t1/94448/29/2734/524808/5dd4cc16E990dfb6b/59c256f85a8c3757.jpg"
+						 mode="aspectFill"></image>
+					</view>
+					<u-tag text="情感咨询" size="mini" shape="circle" mode="dark" type="info" />
+				</view>
+			</view>
+		</u-card>
+		<view class="margin-tb padding-tb-xs">
+			<u-loadmore :status="nomore" :icon-type="flower" />
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		onLoad(options) {
+
+		},
+		data() {
+			return {
+				list: [{
+						image: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
+					},
+					{
+						image: 'https://cdn.uviewui.com/uview/swiper/2.jpg',
+					},
+					{
+						image: 'https://cdn.uviewui.com/uview/swiper/3.jpg',
+					}
+				],
+			}
+		},
+		methods: {
+
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.main {
+		padding-top: 10rpx;
+		padding-left: 20rpx;
+		padding-right: 20rpx;
+	}
+
+	.tltleStyle {
+		padding: 30rpx 30rpx 15rpx 15rpx;
+		font-weight: bold;
+		font-size: 40rpx;
+		background-color: #fff;
+	}
+
+	.u-card-wrap {
+		background-color: $u-bg-color;
+		padding: 1px;
+	}
+
+	.u-body-item {
+		font-size: 32rpx;
+		color: #333;
+		padding: 20rpx 10rpx;
+	}
+
+	.u-body-item image {
+		width: 120rpx;
+		flex: 0 0 120rpx;
+		height: 120rpx;
+		border-radius: 8rpx;
+		margin-left: 12rpx;
+	}
+</style>

+ 404 - 0
pages/index/index.vue

xqd
@@ -0,0 +1,404 @@
+<template>
+	<view class="main">
+		<view class="">
+			<u-search :clearabled="true" shape="round" :show-action="true" placeholder="搜索医生姓名、医院名" v-model="keyword"></u-search>
+		</view>
+		<view class="indexswiper" style="margin-top: 10rpx;">
+			<u-swiper :list="list" mode="dot"></u-swiper>
+		</view>
+		<view class="tltleStyle">
+			<u-section title="精选服务" font-size="40" line-color="#0B73BA" :bold="true" :right="false"></u-section>
+		</view>
+		<view class="gridstyle">
+			<u-grid :col="3" :border="false">
+				<u-grid-item @click="tests">
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">电话咨询</view>
+				</u-grid-item>
+				<u-grid-item>
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">图文咨询</view>
+				</u-grid-item>
+				<u-grid-item>
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">门诊预约</view>
+				</u-grid-item>
+				<u-grid-item>
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">疫苗接种</view>
+				</u-grid-item>
+				<u-grid-item>
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">儿保预约</view>
+				</u-grid-item>
+				<u-grid-item>
+					<u-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/example/fade.jpg" shape="circle"></u-image>
+					<view class="grid-text">服务包</view>
+				</u-grid-item>
+			</u-grid>
+		</view>
+		<view class="margin-top-sm">
+			<u-notice-bar type="error" bg-color="white" color="black" border-radius="15" :list="listtext" mode="vertical"></u-notice-bar>
+		</view>
+		<view class="tltleStyle">
+			<u-section title="热门推荐" font-size="40" line-color="#0B73BA" :bold="true" :right="false"></u-section>
+		</view>
+		<view class="cu-card case" style="margin-top: 20rpx;box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);">
+			<view class="cu-item" style="margin: 0;">
+				<view class="flex justify-between">
+					<swiper :current="currentindex" style="width: 430rpx;height: 430rpx;" :indicator-dots="false" :autoplay="true"
+					 :circular="true" :interval="3000" :duration="1000">
+						<swiper-item>
+							<view class="image">
+								<image src="https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg" mode=""></image>
+								<!-- <view class="cu-bar bg-shadeBottom">
+									<text class="text-cut">我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。</text>
+								</view> -->
+							</view>
+						</swiper-item>
+						<swiper-item>
+							<view class="image">
+								<image src="https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg" mode=""></image>
+								<!-- <view class="cu-bar bg-shadeBottom">
+									<text class="text-cut">我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。</text>
+								</view> -->
+							</view>
+						</swiper-item>
+						<swiper-item>
+							<view class="image">
+								<image src="https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg" mode=""></image>
+								<!-- <view class="cu-bar bg-shadeBottom">
+									<text class="text-cut">我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。我已天理为凭,踏入这片荒芜,不再受凡人的枷锁遏制。</text>
+								</view> -->
+							</view>
+						</swiper-item>
+					</swiper>
+					<view class="margin-left-xs" style="width: 360rpx;">
+						<image style="width: 100%;height: 50%;" src="https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg"
+						 mode=""></image>
+						<image style="width: 100%;height: 50%;" src="https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg"
+						 mode=""></image>
+					</view>
+				</view>
+				<swiper :current="currentindex" style="height: 100rpx;" :indicator-dots="false" :vertical="true" :autoplay="true"
+				 :circular="true" :interval="3000" :duration="1000">
+					<swiper-item>
+						<view class="cu-list menu">
+							<view class="cu-item">
+								<!-- <view class="cu-avatar round lg" style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg);"></view> -->
+								<view class="content flex-sub">
+									<view class="text-grey">主标题主标题</view>
+									<view class="text-gray text-sm flex justify-between">
+										第一副标题副标题副标题副标题副标题副标题副标题
+									</view>
+								</view>
+							</view>
+						</view>
+					</swiper-item>
+					<swiper-item>
+						<view class="cu-list menu">
+							<view class="cu-item">
+								<!-- <view class="cu-avatar round lg" style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg);"></view> -->
+								<view class="content flex-sub">
+									<view class="text-grey">主标题主标题</view>
+									<view class="text-gray text-sm flex justify-between">
+										第二副标题副标题副标题副标题副标题副标题副标题
+									</view>
+								</view>
+							</view>
+						</view>
+					</swiper-item>
+					<swiper-item>
+						<view class="cu-list menu">
+							<view class="cu-item">
+								<!-- <view class="cu-avatar round lg" style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big10006.jpg);"></view> -->
+								<view class="content flex-sub">
+									<view class="text-grey">主标题主标题</view>
+									<view class="text-gray text-sm flex justify-between">
+										第三副标题副标题副标题副标题副标题副标题副标题
+									</view>
+								</view>
+							</view>
+						</view>
+					</swiper-item>
+				</swiper>
+			</view>
+		</view>
+		<view class="tltleStyle" @click="gototest">
+			<u-section title="推荐医生" font-size="40" line-color="#0B73BA" :bold="true" :right="false"></u-section>
+		</view>
+		<view style="width: 100%;">
+			<view class="recommendstyle margin-top-sm" v-for="(item,index) in test" :key="index">
+				<view class="base_item">
+					<view class="base_item_zi">
+						<view class="base_item_zi_items">
+							<view class="base_item_zi_content">
+								<u-image :fade="true" duration="450" width="120rpx" height="120rpx" src="https://file.supermm.me/UEditor/uploadFile/2020-09-21/D229A665CBFB4817A518A5C47726AB18.jpg"
+								 shape="circle">
+								</u-image>
+								<view class="follow_style" v-if="true">
+									关注
+								</view>
+								<view class="follow_style" style="background-color: #fff;color: rgb(208, 105, 150);border:2rpx solid rgb(208, 105, 150);"
+								 v-else>
+									已关注
+								</view>
+								<view class="content_right">
+									<view class="" style="display: flex;align-items: center;">
+										<text style="font-size: 32rpx; font-weight: bold;">张三</text>
+										<text class="text_style">全科医学科</text>
+										<text class="text_style">医生</text>
+									</view>
+									<view class="m_gray_small">
+										昆明市西山区永昌西区社区卫生服务中心昆明市西山区永昌西区社区卫生服务中心
+									</view>
+									<view class="flex justify-start align-center flex-wrap" style="position: relative;">
+										<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="图文" shape="circle" mode="dark" type="info" />
+										<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="电话" shape="circle" mode="dark" type="info" />
+										<u-tag style="margin-top:20rpx ; margin-right: 20rpx;" text="门诊" shape="circle" mode="dark" type="info" />
+									</view>
+								</view>
+							</view>
+							<view class="foot_juli padding-sm">
+								<u-line color="#f6f6f6" />
+								<view class="flex justify-center margin-top-sm" style="color: rgba(0,0,0,0.54);">
+									<view class="text-sm" style="flex: 1; text-align: left;">
+										评分:
+										<text style="color: #FF7B72;">5.0分</text>
+									</view>
+									<view class="text-sm" style="flex: 1; text-align: center;">
+										服务:
+										<text style="color: #FF7B72;">7人</text>
+									</view>
+									<view class="text-sm" style="flex: 1; text-align: right;">
+										距离:
+										<text style="color: #FF7B72;">650km</text>
+									</view>
+								</view>
+								<view class="doctor_style margin-top-sm">
+									<view class="doctor_style_item">
+										2010年毕业于红河卫校,2010年8月工作至今,从事预防接种工作7年,对预防接种工作排苗等其他流程熟练,对接种疫苗后出现的一些不良反应有一定经验。
+									</view>
+									<view class="text-black flex justify-between align-center margin-top-sm" style="font-size: 30rpx;">
+										<view class="jisu">急速响应</view>
+										<view class="">
+											服务
+											<text class="text-red text-bold text-xl">¥19.90</text>
+											起
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+		<view class="margin-tb padding-tb-xs">
+			<u-loadmore :status="nomore" :load-text="loadText" :icon-type="flower" />
+		</view>
+		<u-back-top :scroll-top="scrollTop" bottom="80" top="400"></u-back-top>
+	</view>
+</template>
+
+<script>
+	var user = require('../../common/user.js');
+	import {
+		mapState,
+		mapMutations,
+		mapGetters,
+		mapActions
+	} from 'vuex';
+	export default {
+		computed: {
+			...mapGetters({
+				hasLogin: 'verifyJwt'
+			}),
+			...mapState(['user'])
+		},
+		onLoad(options) {
+			this.getDoctorList()
+		},
+
+		data() {
+			return {
+				scrollTop: 0,
+				keyword: "",
+				loadText: {
+					nomore: '暂无更多医生推荐'
+				},
+				list: [{
+						image: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
+					},
+					{
+						image: 'https://cdn.uviewui.com/uview/swiper/2.jpg',
+					},
+					{
+						image: 'https://cdn.uviewui.com/uview/swiper/3.jpg',
+					}
+				],
+				test: [1, 2, 3, 4, 5],
+				currentindex: 0,
+				listtext: [
+					"xxxxxxxxxxx",
+					"yyyyyyyyyyy",
+					"zzzzzzzzzzz"
+				]
+			}
+		},
+		methods: {
+			//监听滚动
+			onPageScroll(e) {
+				this.scrollTop = e.scrollTop;
+			},
+			tests() {
+				uni.navigateTo({
+					url: '../doctor_related/select_doctor'
+				})
+			},
+			gototest() {
+				uni.navigateTo({
+					url: "../login/login"
+				})
+			},
+			getDoctorList: async function() {
+				let res = await this.$request.post("/api/v1/docter/docterList", {
+					page: 1,
+				})
+				console.log(res)
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.main {
+		padding-top: 10rpx;
+		padding-left: 20rpx;
+		padding-right: 20rpx;
+
+	}
+
+	.gridstyle {
+		height: 450rpx;
+		background-color: #fff;
+		border-radius: 15rpx;
+		display: flex;
+		align-items: center;
+		box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);
+		margin-top: 20rpx;
+	}
+
+	.doctor_style {
+		color: rgba(0, 0, 0, 0.54);
+	}
+
+	.doctor_style_item {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.jisu {
+		color: rgb(238, 170, 63);
+	}
+
+	.follow_style {
+		position: absolute;
+		bottom: 52rpx;
+		left: 35rpx;
+		z-index: 1;
+		width: 106rpx;
+		height: 40rpx;
+		padding: 4rpx 0;
+		background-color: rgb(208, 105, 150);
+		box-sizing: border-box;
+		color: #fff;
+		text-align: center;
+		border-radius: 60rpx;
+		font-size: 24rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.base_item {
+		// position: absolute;
+		// top: 0;
+		// left: 0;
+		// right: 0;
+		// z-index: 1;
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+	}
+
+	.base_item_zi {
+		// padding-top: 20rpx;
+		// margin: 20rpx 20rpx;
+		position: relative;
+		box-sizing: border-box;
+	}
+
+	.base_item_zi_items {
+		box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);
+		background-color: #fff;
+		position: relative;
+		border-radius: 8rpx;
+		box-sizing: border-box;
+	}
+
+	.base_item_zi_content {
+		display: flex;
+		justify-content: center;
+		padding: 30rpx 30rpx;
+		overflow: hidden;
+		position: relative;
+		width: 100%;
+		box-sizing: border-box;
+	}
+
+	.text_style {
+		font-size: 24rpx;
+		color: rgba(0, 0, 0, .54);
+		display: block;
+		margin-left: 10rpx;
+	}
+
+	.m_gray_small {
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		color: rgba(0, 0, 0, 0.54);
+		margin-top: 20rpx;
+		font-size: 28rpx;
+	}
+
+	.content_right {
+		flex: 1;
+		margin-left: 20rpx;
+		overflow: hidden;
+		position: relative;
+		box-sizing: border-box;
+	}
+
+	.foot_item {
+		background-color: #F7F7F7;
+		box-sizing: border-box;
+	}
+
+	.grid-text {
+		font-size: 28rpx;
+		margin-top: 4rpx;
+		color: $u-type-info;
+	}
+
+	.tltleStyle {
+		padding: 30rpx 30rpx 15rpx 15rpx;
+		// font-weight: bold;
+		// font-size: 40rpx;
+	}
+</style>

文件差異過大導致無法顯示
+ 2 - 0
pages/index/mine.css


+ 239 - 0
pages/index/mine.vue

xqd
@@ -0,0 +1,239 @@
+<template>
+	<view class="main">
+		<view class="pr">
+			<view class="header-content">
+				<image src="http://file.supermm.me/miniProgram/images/personal/bg.png" style="width:100%;height:260rpx;"></image>
+			</view>
+			<view class="pr pt20" style="z-index:2">
+				<view class="plr15">
+					<view class="m-bg-white bdr4 pb20 header-box">
+						<view class="plr20 pt20 m-dpflex m-justify-start m-align-center">
+							<image binderror="_binderror" mode="scaleToFill" src="https://ossweb-img.qq.com/images/lol/web201310/skin/big84000.jpg"
+							 style="width: 60px;height: 60px;border-radius: 50%;"></image>
+							<text class="line1 f20 fb plr15">落雨桐</text>
+							<navigator hoverClass="none">
+								<image class="header-img" src="http://file.supermm.me/miniProgram/images/personal/edit.png"></image>
+							</navigator>
+							<view class="pr tr m-flex">
+								<view class="tip msg" v-if="true"></view>
+								<navigator hoverClass="none">
+									<image class="header-img" src="http://file.supermm.me/miniProgram/images/personal/info.png"></image>
+								</navigator>
+							</view>
+						</view>
+						<view class="pr m-bottom-line mt15 mb10"></view>
+						<view class="pr m-xcenter mt30 plr20">
+							<navigator class="m-flex tl f14 m-ycenter dpb" hoverClass="none">
+								<view class="m-gray-big f20 fb pr10">0</view>
+								<view class="m-gray-letter mt5 f12">代币(个)</view>
+							</navigator>
+							<view bindtap="" class="m-flex tl f14 m-ycenter">
+								<view class="m-gray-big f20 fb">0</view>
+								<view class="m-gray-letter mt5 f12">优惠券(张)</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="fb f18 plr20 pt40">我的订单</view>
+			<view class="plr10 m-dpflex m-justify-start m-align-center overflow pt40">
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 76rpx;height: 76rpx;" src="http://file.supermm.me/miniProgram/images/personal/menu_1.png"
+					 mode=""></image>
+					<view class="tip"></view>
+					<view class="f14 m-gray-small mt10 line1">我的咨询</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 76rpx;height: 76rpx;" src="http://file.supermm.me/miniProgram/images/personal/menu_2.png"
+					 mode=""></image>
+					<view class="tip"></view>
+					<view class="f14 m-gray-small mt10 line1">我的预约</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 76rpx;height: 76rpx;" src="http://file.supermm.me/miniProgram/images/personal/menu_3.png"
+					 mode=""></image>
+					<view class="tip"></view>
+					<view class="f14 m-gray-small mt10 line1">我的意见单</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 76rpx;height: 76rpx;" src="http://file.supermm.me/miniProgram/images/personal/menu_4.png"
+					 mode=""></image>
+					<view class="tip"></view>
+					<view class="f14 m-gray-small mt10 line1">服务包订单</view>
+				</navigator>
+			</view>
+			<navigator class="pr m-xcenter plr20 pt40" hoverClass="none">
+				<view class="fb f18 pr m-flex tl">健康档案</view>
+				<view class="pr m-gray-small">档案列表</view>
+				<label class="m-gray-letter iconfont icon-arrow-right f18 dpb"></label>
+			</navigator>
+			<!-- <view class="mt20 pr pb40">
+				<swiper bindchange="swiperChange" :current="{{swiperCurrent}}" duration="500" :indicatorDots="{{indicatorDots}}"
+				 interval="5000" nextMargin="20rpx" previousMargin="20rpx">
+					<swiper-item class="swiper-wrapper" wx:for="{{childList}}" wx:key="{{item.childId}}">
+						<view class="swiper-item br-gray bdr4">
+							<navigator class="m-ycenter pt40" hoverClass="none" url="/pages/add-child/add-child" wx:if="{{item.add}}">
+								<view class="bdr30 m-theme br-theme tc plr20 pt8 pb8 f14 width40">新增健康档案</view>
+								<view class="pt20 f12 m-gray-letter">点击添加新的健康档案</view>
+							</navigator>
+							<navigator class="m-ycenter pt40" hoverClass="none" url="/pages/personal/childList/childList" wx:if="{{item.more}}">
+								<view class="bdr30 m-theme br-theme tc plr20 pt8 pb8 f14 width40">更多</view>
+								<view class="pt20 f12 m-gray-letter">点击查看更多健康档案</view>
+							</navigator>
+							<view bindtap="_goInfo" data-item="{{item}}" wx:if="{{!item.add&&!item.more}}">
+								<view class="tc fb f18 pt20">{{item.childName}}</view>
+								<view class="tc f14 m-gray-letter pt5">{{item.childAgeStr}}</view>
+								<view class="plr10 m-dpflex m-justify-start m-align-center overflow pb30 pt15">
+									<view class="width33 m-ycenter overflow pr">
+										<view class="fb f18">{{item.childMedicalRecordNumber}}</view>
+										<view class="f12 m-gray-small mt6 line1">专属病历</view>
+									</view>
+									<view class="width33 m-ycenter overflow pr">
+										<view class="fb f18">{{item.childFamilyDoctorTeamIdList.length}}</view>
+										<view class="f12 m-gray-small mt6 line1">家庭医生</view>
+									</view>
+									<view class="width33 m-ycenter overflow pr">
+										<view class="fb f18">{{item.childPersonalDataInformation}}</view>
+										<view class="f12 m-gray-small mt6 line1">个人资料</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</swiper-item>
+				</swiper>
+				<view class="dots">
+					<view class="dot{{index==swiperCurrent?' active':''}}" wx:for="{{childList}}" wx:key="unique"></view>
+				</view>
+			</view> -->
+			<view class="fb f18 plr20 pt40">常用工具</view>
+			<view class="plr10 m-dpflex m-justify-start m-align-center overflow pt30 pb30">
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 42rpx;height: 42rpx;" src="http://file.supermm.me/miniProgram/images/personal/tool_1.png"></image>
+					<view class="f14 m-gray-small mt10 line1">家庭医生</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 42rpx;height: 42rpx;" src="http://file.supermm.me/miniProgram/images/personal/tool_2.png"></image>
+					<view class="f14 m-gray-small mt10 line1">我的关注</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 42rpx;height: 42rpx;" src="http://file.supermm.me/miniProgram/personal/my-class/my_class.png"></image>
+					<view class="f14 m-gray-small mt10 line1">我的课程</view>
+				</navigator>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 42rpx;height: 42rpx;" src="http://file.supermm.me/miniProgram/personal/my-class/my_class.png"></image>
+					<view class="tip"></view>
+					<view class="f14 m-gray-small mt10 line1">我的保单</view>
+				</navigator>
+			</view>
+			<view class="plr10 m-dpflex m-justify-start m-align-center overflow pb30">
+				<view bindtap="" class="width25 m-ycenter overflow pr">
+					<image style="width: 42rpx;height: 42rpx;" src="https://file.supermm.me/h5/wechat-h5/personal/kf.png"></image>
+					<view class="f14 m-gray-small mt10 line1">我的客服</view>
+				</view>
+				<navigator class="width25 m-ycenter overflow pr" hoverClass="none">
+					<image style="width: 42rpx;height: 42rpx;" src="http://file.supermm.me/miniProgram/images/personal/tool_5.png"></image>
+					<view class="f14 m-gray-small mt10 line1">帮助反馈</view>
+				</navigator>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+</script>
+
+<style scoped>
+	@import url("./mine.css");
+
+	.header-content {
+		position: absolute;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		z-index: -1;
+		overflow: hidden;
+		box-sizing: border-box;
+	}
+
+	.header-box {
+		box-shadow: 0px 8rpx 34rpx -6rpx rgba(248, 151, 164, 0.13);
+	}
+
+	.header-img {
+		width: 36rpx;
+		height: 36rpx;
+	}
+
+	.tip {
+		position: absolute;
+		top: 0;
+		right: 20%;
+		bottom: 0;
+		background-color: red;
+		width: 12rpx;
+		height: 12rpx;
+		border-radius: 50%;
+	}
+
+	.msg {
+		top: -3rpx;
+		right: -9rpx;
+	}
+
+	swiper {
+		height: 320rpx;
+	}
+
+	.swiper-wrapper {
+		padding: 0 10rpx;
+		box-sizing: border-box;
+	}
+
+	.swiper-item {
+		width: 100%;
+		height: 300rpx;
+		box-shadow: 0 26rpx 40rpx 0 rgba(255, 255, 255, 0.31);
+		background: url("http://file.supermm.me/miniProgram/images/personal/bg_doc.png") no-repeat bottom center;
+	}
+
+	.dots {
+		position: absolute;
+		left: 0;
+		right: 0;
+		bottom: -40rpx;
+		display: flex;
+		justify-content: center;
+	}
+
+	.dots .dot {
+		margin: 0 8rpx;
+		width: 14rpx;
+		height: 14rpx;
+		background: #E4E4E4;
+		border-radius: 8rpx;
+		transition: all .6s;
+	}
+
+	.dots .dot.active {
+		width: 24rpx;
+		background: #FF7B72;
+	}
+
+	.game-wrap {
+		position: relative;
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		box-sizing: border-box;
+	}
+
+	.game-item {
+		height: 100%;
+		background: url("https://file.supermm.me/h5/wechat-h5/integral/personeBg001.jpg") no-repeat;
+		background-size: 100% 100%;
+		background-position: center center;
+		border-radius: 100rpx;
+	}
+</style>

+ 94 - 0
pages/login/css/main.css

xqd
@@ -0,0 +1,94 @@
+.content {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	/* margin-top: 128rpx; */
+}
+
+/* 头部 logo */
+.header {
+	width: 161rpx;
+	height: 161rpx;
+	box-shadow: 0rpx 0rpx 60rpx 0rpx rgba(0, 0, 0, 0.1);
+	border-radius: 50%;
+	background-color: #000000;
+	margin-top: 128rpx;
+	margin-bottom: 72rpx;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.header image {
+	width: 161rpx;
+	height: 161rpx;
+	border-radius: 50%;
+}
+
+/* 主体 */
+.main {
+	display: flex;
+	flex-direction: column;
+	padding-left: 70rpx;
+	padding-right: 70rpx;
+}
+
+.tips {
+	color: #999999;
+	font-size: 28rpx;
+	margin-top: 64rpx;
+	margin-left: 48rpx;
+}
+
+/* 登录按钮 */
+.wbutton {
+	margin-top: 20rpx;
+}
+
+/* 其他登录方式 */
+.other_login {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	margin-top: 256rpx;
+	text-align: center;
+}
+
+.login_icon {
+	border: none;
+	font-size: 64rpx;
+	margin: 0 64rpx 0 64rpx;
+	color: rgba(0, 0, 0, 0.7)
+}
+
+.wechat_color {
+	color: #83DC42;
+}
+
+.weibo_color {
+	color: #F9221D;
+}
+
+.github_color {
+	color: #24292E;
+}
+
+/* 底部 */
+.footer {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	font-size: 28rpx;
+	margin-top: 64rpx;
+	color: rgba(0, 0, 0, 0.7);
+	text-align: center;
+	height: 40rpx;
+	line-height: 40rpx;
+}
+
+.footer text {
+	font-size: 24rpx;
+	margin-left: 15rpx;
+	margin-right: 15rpx;
+}

文件差異過大導致無法顯示
+ 58 - 0
pages/login/login.vue


二進制
static/img/book.png


二進制
static/img/book_select.png


二進制
static/img/home.png


二進制
static/img/home_select.png


二進制
static/img/my.png


二進制
static/img/my_select.png


+ 80 - 0
store/index.js

xqd
@@ -0,0 +1,80 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+import request from '@/common/request'
+
+Vue.use(Vuex)
+const store = new Vuex.Store({
+	state: {
+		hasLogin: false,
+		jwt: uni.getStorageSync('jwt'),
+		user: {}
+	},
+	// getters
+	getters: {
+		// »ñÈ¡tokenÖµ
+		getJwt: state => {
+			return state.jwt;
+		},
+		// ÑéÖ¤ÊÇ·ñÓÐtoken
+		verifyJwt: state => {
+			if (state.jwt) {
+				state.hasLogin = true;
+				return true
+			}
+			return false;
+		}
+	},
+	mutations: {
+		setJwt(state, jwt) {
+			state.jwt = jwt;
+			uni.setStorageSync('jwt', state.jwt);
+		},
+		login(state) {
+			state.hasLogin = true;
+			try {
+				uni.setStorageSync('jwt', state.jwt);
+			} catch (e) {
+				// error
+			}
+		},
+		logout(state) {
+			state.hasLogin = false
+			state.user = {};
+			state.jwt = '';
+			uni.removeStorage({
+				key: 'jwt',
+				success: function(res) {}
+			});
+		},
+		setUser(state, user) {
+			state.user = user
+		}
+	},
+	actions: {
+		// lazy loading openid
+		getUser: async function({
+			commit,
+			state
+		}, refresh) {
+			return await new Promise((resolve, reject) => {
+				if (refresh != true && state.user && Object.keys(state.user).length > 0) {
+					resolve(state.user)
+				} else {
+					request.get("/api/user/userInfo", {}, false).then(data => {
+						if (data.code == 200) {
+							commit('setUser', data.data)
+							resolve(data.data)
+						} else {
+							resolve(null)
+						}
+					}).catch((err) => {
+						console.info(err)
+						reject(err);
+					});
+				}
+			})
+		}
+	}
+})
+
+export default store

+ 77 - 0
uni.scss

xqd
@@ -0,0 +1,77 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+@import 'uview-ui/theme.scss';
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24rpx;
+$uni-font-size-base:28rpx;
+$uni-font-size-lg:32rpx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40rpx;
+$uni-img-size-base:52rpx;
+$uni-img-size-lg:80rpx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4rpx;
+$uni-border-radius-base: 6rpx;
+$uni-border-radius-lg: 12rpx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20rpx;
+$uni-spacing-row-lg: 30rpx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8rpx;
+$uni-spacing-col-base: 16rpx;
+$uni-spacing-col-lg: 24rpx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40rpx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36rpx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30rpx;

+ 0 - 0
unpackage/dist/dev/.automator/mp-weixin/.automator.json


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/watch-button.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/watch-input.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/archives/my_archives.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/doctor_info.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/info_write.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/doctor_related/select_doctor.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/book.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/mine.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-back-top/u-back-top.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-card/u-card.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-group/u-cell-group.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-cell-item/u-cell-item.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-column-notice/u-column-notice.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-dropdown-item/u-dropdown-item.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-dropdown/u-dropdown.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-grid-item/u-grid-item.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-grid/u-grid.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-icon/u-icon.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-image/u-image.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-line/u-line.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loading/u-loading.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-loadmore/u-loadmore.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-notice-bar/u-notice-bar.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-read-more/u-read-more.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-row-notice/u-row-notice.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-search/u-search.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-section/u-section.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-skeleton/u-skeleton.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-swiper/u-swiper.js.map


文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uview-ui/components/u-tag/u-tag.js.map


+ 4 - 0
unpackage/dist/dev/mp-weixin/app.js

xqd
@@ -0,0 +1,4 @@
+
+require('./common/runtime.js')
+require('./common/vendor.js')
+require('./common/main.js')

+ 65 - 0
unpackage/dist/dev/mp-weixin/app.json

xqd
@@ -0,0 +1,65 @@
+{
+  "pages": [
+    "pages/index/index",
+    "pages/index/book",
+    "pages/index/mine",
+    "pages/doctor_related/select_doctor",
+    "pages/doctor_related/doctor_info",
+    "pages/doctor_related/info_write",
+    "pages/archives/my_archives",
+    "pages/login/login"
+  ],
+  "subPackages": [],
+  "window": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "uni-app",
+    "navigationBarBackgroundColor": "#F8F8F8",
+    "backgroundColor": "#F8F8F8"
+  },
+  "tabBar": {
+    "color": "#C0C4CC",
+    "selectedColor": "#fab6b6",
+    "borderStyle": "black",
+    "backgroundColor": "#ffffff",
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "iconPath": "./static/img/home.png",
+        "selectedIconPath": "./static/img/home_select.png",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/index/book",
+        "iconPath": "./static/img/book.png",
+        "selectedIconPath": "./static/img/book_select.png",
+        "text": "小课堂"
+      },
+      {
+        "pagePath": "pages/index/mine",
+        "iconPath": "./static/img/my.png",
+        "selectedIconPath": "./static/img/my_select.png",
+        "text": "我的"
+      }
+    ]
+  },
+  "plugins": {
+    "chooseLocation": {
+      "version": "1.0.5",
+      "provider": "wx76a9a06e5b4e693e"
+    },
+    "tucao": {
+      "provider": "wx8abaf00ee8c3202e",
+      "version": "1.1.5"
+    }
+  },
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于小程序定位"
+    }
+  },
+  "uniStatistics": {
+    "enable": false
+  },
+  "usingComponents": {},
+  "sitemapLocation": "sitemap35.json"
+}

+ 3 - 0
unpackage/dist/dev/mp-weixin/app.wxss

xqd
@@ -0,0 +1,3 @@
+@import './common/main.wxss';
+
+[data-custom-hidden="true"],[bind-data-custom-hidden="true"]{display: none !important;}

文件差異過大導致無法顯示
+ 129 - 0
unpackage/dist/dev/mp-weixin/common/main.js


文件差異過大導致無法顯示
+ 3763 - 0
unpackage/dist/dev/mp-weixin/common/main.wxss


+ 273 - 0
unpackage/dist/dev/mp-weixin/common/runtime.js

xqd
@@ -0,0 +1,273 @@
+
+  !function(){try{var a=Function("return this")();a&&!a.Math&&(Object.assign(a,{isFinite:isFinite,Array:Array,Date:Date,Error:Error,Function:Function,Math:Math,Object:Object,RegExp:RegExp,String:String,TypeError:TypeError,setTimeout:setTimeout,clearTimeout:clearTimeout,setInterval:setInterval,clearInterval:clearInterval}),"undefined"!=typeof Reflect&&(a.Reflect=Reflect))}catch(a){}}();
+  /******/ (function(modules) { // webpackBootstrap
+/******/ 	// install a JSONP callback for chunk loading
+/******/ 	function webpackJsonpCallback(data) {
+/******/ 		var chunkIds = data[0];
+/******/ 		var moreModules = data[1];
+/******/ 		var executeModules = data[2];
+/******/
+/******/ 		// add "moreModules" to the modules object,
+/******/ 		// then flag all "chunkIds" as loaded and fire callback
+/******/ 		var moduleId, chunkId, i = 0, resolves = [];
+/******/ 		for(;i < chunkIds.length; i++) {
+/******/ 			chunkId = chunkIds[i];
+/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 				resolves.push(installedChunks[chunkId][0]);
+/******/ 			}
+/******/ 			installedChunks[chunkId] = 0;
+/******/ 		}
+/******/ 		for(moduleId in moreModules) {
+/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ 				modules[moduleId] = moreModules[moduleId];
+/******/ 			}
+/******/ 		}
+/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ 		while(resolves.length) {
+/******/ 			resolves.shift()();
+/******/ 		}
+/******/
+/******/ 		// add entry modules from loaded chunk to deferred list
+/******/ 		deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ 		// run deferred modules when all chunks ready
+/******/ 		return checkDeferredModules();
+/******/ 	};
+/******/ 	function checkDeferredModules() {
+/******/ 		var result;
+/******/ 		for(var i = 0; i < deferredModules.length; i++) {
+/******/ 			var deferredModule = deferredModules[i];
+/******/ 			var fulfilled = true;
+/******/ 			for(var j = 1; j < deferredModule.length; j++) {
+/******/ 				var depId = deferredModule[j];
+/******/ 				if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ 			}
+/******/ 			if(fulfilled) {
+/******/ 				deferredModules.splice(i--, 1);
+/******/ 				result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ 			}
+/******/ 		}
+/******/
+/******/ 		return result;
+/******/ 	}
+/******/
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// object to store loaded CSS chunks
+/******/ 	var installedCssChunks = {
+/******/ 		"common/runtime": 0
+/******/ 	}
+/******/
+/******/ 	// object to store loaded and loading chunks
+/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 	// Promise = chunk loading, 0 = chunk loaded
+/******/ 	var installedChunks = {
+/******/ 		"common/runtime": 0
+/******/ 	};
+/******/
+/******/ 	var deferredModules = [];
+/******/
+/******/ 	// script path function
+/******/ 	function jsonpScriptSrc(chunkId) {
+/******/ 		return __webpack_require__.p + "" + chunkId + ".js"
+/******/ 	}
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/ 	// This file contains only the entry chunk.
+/******/ 	// The chunk loading function for additional chunks
+/******/ 	__webpack_require__.e = function requireEnsure(chunkId) {
+/******/ 		var promises = [];
+/******/
+/******/
+/******/ 		// mini-css-extract-plugin CSS loading
+/******/ 		var cssChunks = {"uview-ui/components/u-back-top/u-back-top":1,"uview-ui/components/u-grid-item/u-grid-item":1,"uview-ui/components/u-grid/u-grid":1,"uview-ui/components/u-image/u-image":1,"uview-ui/components/u-line/u-line":1,"uview-ui/components/u-loadmore/u-loadmore":1,"uview-ui/components/u-notice-bar/u-notice-bar":1,"uview-ui/components/u-search/u-search":1,"uview-ui/components/u-section/u-section":1,"uview-ui/components/u-swiper/u-swiper":1,"uview-ui/components/u-tag/u-tag":1,"uview-ui/components/u-card/u-card":1,"uview-ui/components/u-dropdown-item/u-dropdown-item":1,"uview-ui/components/u-dropdown/u-dropdown":1,"uview-ui/components/u-read-more/u-read-more":1,"components/watch-button":1,"components/watch-input":1,"uview-ui/components/u-icon/u-icon":1,"uview-ui/components/u-loading/u-loading":1,"uview-ui/components/u-column-notice/u-column-notice":1,"uview-ui/components/u-row-notice/u-row-notice":1,"uview-ui/components/u-cell-group/u-cell-group":1,"uview-ui/components/u-cell-item/u-cell-item":1};
+/******/ 		if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
+/******/ 		else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
+/******/ 			promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
+/******/ 				var href = "" + ({"uview-ui/components/u-back-top/u-back-top":"uview-ui/components/u-back-top/u-back-top","uview-ui/components/u-grid-item/u-grid-item":"uview-ui/components/u-grid-item/u-grid-item","uview-ui/components/u-grid/u-grid":"uview-ui/components/u-grid/u-grid","uview-ui/components/u-image/u-image":"uview-ui/components/u-image/u-image","uview-ui/components/u-line/u-line":"uview-ui/components/u-line/u-line","uview-ui/components/u-loadmore/u-loadmore":"uview-ui/components/u-loadmore/u-loadmore","uview-ui/components/u-notice-bar/u-notice-bar":"uview-ui/components/u-notice-bar/u-notice-bar","uview-ui/components/u-search/u-search":"uview-ui/components/u-search/u-search","uview-ui/components/u-section/u-section":"uview-ui/components/u-section/u-section","uview-ui/components/u-swiper/u-swiper":"uview-ui/components/u-swiper/u-swiper","uview-ui/components/u-tag/u-tag":"uview-ui/components/u-tag/u-tag","uview-ui/components/u-card/u-card":"uview-ui/components/u-card/u-card","uview-ui/components/u-dropdown-item/u-dropdown-item":"uview-ui/components/u-dropdown-item/u-dropdown-item","uview-ui/components/u-dropdown/u-dropdown":"uview-ui/components/u-dropdown/u-dropdown","uview-ui/components/u-read-more/u-read-more":"uview-ui/components/u-read-more/u-read-more","components/watch-button":"components/watch-button","components/watch-input":"components/watch-input","uview-ui/components/u-icon/u-icon":"uview-ui/components/u-icon/u-icon","uview-ui/components/u-loading/u-loading":"uview-ui/components/u-loading/u-loading","uview-ui/components/u-column-notice/u-column-notice":"uview-ui/components/u-column-notice/u-column-notice","uview-ui/components/u-row-notice/u-row-notice":"uview-ui/components/u-row-notice/u-row-notice","uview-ui/components/u-cell-group/u-cell-group":"uview-ui/components/u-cell-group/u-cell-group","uview-ui/components/u-cell-item/u-cell-item":"uview-ui/components/u-cell-item/u-cell-item"}[chunkId]||chunkId) + ".wxss";
+/******/ 				var fullhref = __webpack_require__.p + href;
+/******/ 				var existingLinkTags = document.getElementsByTagName("link");
+/******/ 				for(var i = 0; i < existingLinkTags.length; i++) {
+/******/ 					var tag = existingLinkTags[i];
+/******/ 					var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href");
+/******/ 					if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return resolve();
+/******/ 				}
+/******/ 				var existingStyleTags = document.getElementsByTagName("style");
+/******/ 				for(var i = 0; i < existingStyleTags.length; i++) {
+/******/ 					var tag = existingStyleTags[i];
+/******/ 					var dataHref = tag.getAttribute("data-href");
+/******/ 					if(dataHref === href || dataHref === fullhref) return resolve();
+/******/ 				}
+/******/ 				var linkTag = document.createElement("link");
+/******/ 				linkTag.rel = "stylesheet";
+/******/ 				linkTag.type = "text/css";
+/******/ 				linkTag.onload = resolve;
+/******/ 				linkTag.onerror = function(event) {
+/******/ 					var request = event && event.target && event.target.src || fullhref;
+/******/ 					var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + request + ")");
+/******/ 					err.code = "CSS_CHUNK_LOAD_FAILED";
+/******/ 					err.request = request;
+/******/ 					delete installedCssChunks[chunkId]
+/******/ 					linkTag.parentNode.removeChild(linkTag)
+/******/ 					reject(err);
+/******/ 				};
+/******/ 				linkTag.href = fullhref;
+/******/
+/******/ 				var head = document.getElementsByTagName("head")[0];
+/******/ 				head.appendChild(linkTag);
+/******/ 			}).then(function() {
+/******/ 				installedCssChunks[chunkId] = 0;
+/******/ 			}));
+/******/ 		}
+/******/
+/******/ 		// JSONP chunk loading for javascript
+/******/
+/******/ 		var installedChunkData = installedChunks[chunkId];
+/******/ 		if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ 			// a Promise means "currently loading".
+/******/ 			if(installedChunkData) {
+/******/ 				promises.push(installedChunkData[2]);
+/******/ 			} else {
+/******/ 				// setup Promise in chunk cache
+/******/ 				var promise = new Promise(function(resolve, reject) {
+/******/ 					installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ 				});
+/******/ 				promises.push(installedChunkData[2] = promise);
+/******/
+/******/ 				// start chunk loading
+/******/ 				var script = document.createElement('script');
+/******/ 				var onScriptComplete;
+/******/
+/******/ 				script.charset = 'utf-8';
+/******/ 				script.timeout = 120;
+/******/ 				if (__webpack_require__.nc) {
+/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
+/******/ 				}
+/******/ 				script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ 				// create error before stack unwound to get useful stacktrace later
+/******/ 				var error = new Error();
+/******/ 				onScriptComplete = function (event) {
+/******/ 					// avoid mem leaks in IE.
+/******/ 					script.onerror = script.onload = null;
+/******/ 					clearTimeout(timeout);
+/******/ 					var chunk = installedChunks[chunkId];
+/******/ 					if(chunk !== 0) {
+/******/ 						if(chunk) {
+/******/ 							var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ 							var realSrc = event && event.target && event.target.src;
+/******/ 							error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ 							error.name = 'ChunkLoadError';
+/******/ 							error.type = errorType;
+/******/ 							error.request = realSrc;
+/******/ 							chunk[1](error);
+/******/ 						}
+/******/ 						installedChunks[chunkId] = undefined;
+/******/ 					}
+/******/ 				};
+/******/ 				var timeout = setTimeout(function(){
+/******/ 					onScriptComplete({ type: 'timeout', target: script });
+/******/ 				}, 120000);
+/******/ 				script.onerror = script.onload = onScriptComplete;
+/******/ 				document.head.appendChild(script);
+/******/ 			}
+/******/ 		}
+/******/ 		return Promise.all(promises);
+/******/ 	};
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/ 	// on error function for async loading
+/******/ 	__webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ 	var jsonpArray = global["webpackJsonp"] = global["webpackJsonp"] || [];
+/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ 	jsonpArray.push = webpackJsonpCallback;
+/******/ 	jsonpArray = jsonpArray.slice();
+/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ 	var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ 	// run deferred modules from other chunks
+/******/ 	checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);
+//# sourceMappingURL=../../.sourcemap/mp-weixin/common/runtime.js.map
+  

文件差異過大導致無法顯示
+ 10 - 0
unpackage/dist/dev/mp-weixin/common/vendor.js


+ 202 - 0
unpackage/dist/dev/mp-weixin/components/watch-button.js

xqd
@@ -0,0 +1,202 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["components/watch-button"],{
+
+/***/ 222:
+/*!***************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-button.vue ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./watch-button.vue?vue&type=template&id=39db88ab& */ 223);
+/* harmony import */ var _watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./watch-button.vue?vue&type=script&lang=js& */ 225);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./watch-button.vue?vue&type=style&index=0&lang=css& */ 227);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 10);
+
+var renderjs
+
+
+
+
+
+/* normalize component */
+
+var component = Object(_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
+  _watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+  _watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["render"],
+  _watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+  false,
+  null,
+  null,
+  null,
+  false,
+  _watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["components"],
+  renderjs
+)
+
+component.options.__file = "components/watch-button.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 223:
+/*!**********************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=template&id=39db88ab& ***!
+  \**********************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-button.vue?vue&type=template&id=39db88ab& */ 224);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_template_id_39db88ab___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 224:
+/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=template&id=39db88ab& ***!
+  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+var render = function() {
+  var _vm = this
+  var _h = _vm.$createElement
+  var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 225:
+/*!****************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=script&lang=js& ***!
+  \****************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-button.vue?vue&type=script&lang=js& */ 226);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 226:
+/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=script&lang=js& ***!
+  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+var _default =
+{
+  props: {
+    text: String, //显示文本
+    rotate: {
+      //是否启动加载
+      type: [Boolean, String],
+      default: false },
+
+    bgColor: {
+      //按钮背景颜色
+      type: String,
+      default: "linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6))" },
+
+    fontColor: {
+      //按钮字体颜色
+      type: String,
+      default: "#FFFFFF" } },
+
+
+  computed: {
+    _rotate: function _rotate() {
+      //处理值
+      return String(this.rotate) !== 'false';
+    } } };exports.default = _default;
+
+/***/ }),
+
+/***/ 227:
+/*!************************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=style&index=0&lang=css& ***!
+  \************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-button.vue?vue&type=style&index=0&lang=css& */ 228);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_button_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 228:
+/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-button.vue?vue&type=style&index=0&lang=css& ***!
+  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+    if(false) { var cssReload; }
+  
+
+/***/ })
+
+}]);
+//# sourceMappingURL=../../.sourcemap/mp-weixin/components/watch-button.js.map
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'components/watch-button-create-component',
+    {
+        'components/watch-button-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('1')['createComponent'](__webpack_require__(222))
+        })
+    },
+    [['components/watch-button-create-component']]
+]);

+ 4 - 0
unpackage/dist/dev/mp-weixin/components/watch-button.json

xqd
@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/components/watch-button.wxml

xqd
@@ -0,0 +1 @@
+<view><button data-event-opts="{{[['tap',[['$emit',['click','$event']]]],['contact',[['$emit',['contact','$event']]]],['error',[['$emit',['error','$event']]]],['getphonenumber',[['$emit',['getphonenumber','$event']]]],['getuserinfo',[['$emit',['getuserinfo','$event']]]],['launchapp',[['$emit',['launchapp','$event']]]],['longtap',[['$emit',['longtap','$event']]]],['opensetting',[['$emit',['opensetting','$event']]]],['touchcancel',[['$emit',['touchcancel','$event']]]],['touchend',[['$emit',['touchend','$event']]]],['touchmove',[['$emit',['touchmove','$event']]]],['touchstart',[['$emit',['touchstart','$event']]]]]}}" class="{{['buttonBorder',!_rotate?'dlbutton':'dlbutton_loading']}}" style="{{'background:'+(bgColor)+';'+('color:'+(fontColor)+';')}}" bindtap="__e" bindcontact="__e" binderror="__e" bindgetphonenumber="__e" bindgetuserinfo="__e" bindlaunchapp="__e" bindlongtap="__e" bindopensetting="__e" bindtouchcancel="__e" bindtouchend="__e" bindtouchmove="__e" bindtouchstart="__e"><view class="{{[_rotate?'rotate_loop':'']}}"><block wx:if="{{_rotate}}"><text class="cuIcon cuIcon-loading1 "></text></block><block wx:if="{{!_rotate}}"><view><block wx:if="{{$slots.text}}"><slot name="text"></slot></block><block wx:else>{{text}}</block></view></block></view></button></view>

文件差異過大導致無法顯示
+ 41 - 0
unpackage/dist/dev/mp-weixin/components/watch-button.wxss


+ 322 - 0
unpackage/dist/dev/mp-weixin/components/watch-input.js

xqd
@@ -0,0 +1,322 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["components/watch-input"],{
+
+/***/ 215:
+/*!**************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-input.vue ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./watch-input.vue?vue&type=template&id=2d0c7d61& */ 216);
+/* harmony import */ var _watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./watch-input.vue?vue&type=script&lang=js& */ 218);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./watch-input.vue?vue&type=style&index=0&lang=css& */ 220);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 10);
+
+var renderjs
+
+
+
+
+
+/* normalize component */
+
+var component = Object(_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
+  _watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+  _watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["render"],
+  _watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+  false,
+  null,
+  null,
+  null,
+  false,
+  _watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["components"],
+  renderjs
+)
+
+component.options.__file = "components/watch-input.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 216:
+/*!*********************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=template&id=2d0c7d61& ***!
+  \*********************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-input.vue?vue&type=template&id=2d0c7d61& */ 217);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_template_id_2d0c7d61___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 217:
+/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=template&id=2d0c7d61& ***!
+  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+var render = function() {
+  var _vm = this
+  var _h = _vm.$createElement
+  var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 218:
+/*!***************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=script&lang=js& ***!
+  \***************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-input.vue?vue&type=script&lang=js& */ 219);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 219:
+/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=script&lang=js& ***!
+  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+var _this, countDown;var _default =
+{
+  data: function data() {
+    return {
+      showPassword: false, //是否显示明文
+      second: 0, //倒计时
+      isRunCode: false //是否开始倒计时
+    };
+  },
+  props: {
+    type: String, //类型
+    value: String, //值
+    placeholder: String, //框内提示
+    maxlength: {
+      //最大长度
+      type: [Number, String],
+      default: 20 },
+
+    isShowPass: {
+      //是否显示密码图标(二选一)
+      type: [Boolean, String],
+      default: false },
+
+    isShowCode: {
+      //是否显示获取验证码(二选一)
+      type: [Boolean, String],
+      default: false },
+
+    codeText: {
+      type: String,
+      default: "获取验证码" },
+
+    setTime: {
+      //倒计时时间设置
+      type: [Number, String],
+      default: 60 } },
+
+
+  model: {
+    prop: 'value',
+    event: 'input' },
+
+  mounted: function mounted() {var _this2 = this;
+    _this = this;
+    //准备触发
+    this.$on('runCode', function (val) {
+      _this2.runCode(val);
+    });
+    clearInterval(countDown); //先清理一次循环,避免缓存
+  },
+  methods: {
+    showPass: function showPass() {
+      //是否显示密码
+      this.showPassword = !this.showPassword;
+    },
+    setCode: function setCode() {
+      //设置获取验证码的事件
+      if (this.isRunCode) {
+        //判断是否开始倒计时,避免重复点击
+        return false;
+      }
+      this.$emit('setCode');
+    },
+    runCode: function runCode(val) {
+      //开始倒计时
+      if (String(val) == "0") {
+
+        //判断是否需要终止循环
+        this.second = 0; //初始倒计时
+        clearInterval(countDown); //清理循环
+        this.isRunCode = false; //关闭循环状态
+        return false;
+      }
+      if (this.isRunCode) {
+        //判断是否开始倒计时,避免重复点击
+        return false;
+      }
+      this.isRunCode = true;
+      this.second = this._setTime; //倒数秒数
+
+      var _this = this;
+      countDown = setInterval(function () {
+        _this.second--;
+        if (_this.second == 0) {
+          _this.isRunCode = false;
+          clearInterval(countDown);
+        }
+      }, 1000);
+    } },
+
+  computed: {
+    _type: function _type() {
+      //处理值
+      var type = this.type;
+      return type == 'password' ? 'text' : type;
+    },
+    _isShowPass: function _isShowPass() {
+      //处理值
+      return String(this.isShowPass) !== 'false';
+    },
+    _isShowCode: function _isShowCode() {
+      //处理值
+      return String(this.isShowCode) !== 'false';
+    },
+    _setTime: function _setTime() {
+      //处理值
+      var setTime = Number(this.setTime);
+      return setTime > 0 ? setTime : 60;
+    },
+    getVerCodeSecond: function getVerCodeSecond() {
+      //验证码倒计时计算
+      if (this.second <= 0) {
+        return this.codeText;
+      } else {
+        if (this.second < 10) {
+          return '0' + this.second;
+        } else {
+          return this.second;
+        }
+      }
+
+    } } };exports.default = _default;
+
+/***/ }),
+
+/***/ 220:
+/*!***********************************************************************************************!*\
+  !*** D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=style&index=0&lang=css& ***!
+  \***********************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./watch-input.vue?vue&type=style&index=0&lang=css& */ 221);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_watch_input_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 221:
+/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/allTask/VueProject/mabao/components/watch-input.vue?vue&type=style&index=0&lang=css& ***!
+  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+    if(false) { var cssReload; }
+  
+
+/***/ })
+
+}]);
+//# sourceMappingURL=../../.sourcemap/mp-weixin/components/watch-input.js.map
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'components/watch-input-create-component',
+    {
+        'components/watch-input-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('1')['createComponent'](__webpack_require__(215))
+        })
+    },
+    [['components/watch-input-create-component']]
+]);

+ 4 - 0
unpackage/dist/dev/mp-weixin/components/watch-input.json

xqd
@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/components/watch-input.wxml

xqd
@@ -0,0 +1 @@
+<view class="main-list oBorder"><input class="main-input" type="{{_type}}" maxlength="{{maxlength}}" placeholder="{{placeholder}}" password="{{type==='password'&&!showPassword}}" data-event-opts="{{[['input',[['$emit',['input','$0'],['$event.target.value']]]],['blur',[['$emit',['blur','$event']]]],['focus',[['$emit',['focus','$event']]]],['longpress',[['$emit',['longpress','$event']]]],['confirm',[['$emit',['confirm','$event']]]],['tap',[['$emit',['click','$event']]]],['longtap',[['$emit',['longtap','$event']]]],['touchcancel',[['$emit',['touchcancel','$event']]]],['touchend',[['$emit',['touchend','$event']]]],['touchmove',[['$emit',['touchmove','$event']]]],['touchstart',[['$emit',['touchstart','$event']]]]]}}" value="{{value}}" bindinput="__e" bindblur="__e" bindfocus="__e" bindlongpress="__e" bindconfirm="__e" bindtap="__e" bindlongtap="__e" bindtouchcancel="__e" bindtouchend="__e" bindtouchmove="__e" bindtouchstart="__e"/><block wx:if="{{_isShowPass&&type==='password'&&!_isShowCode}}"><image data-event-opts="{{[['tap',[['showPass',['$event']]]]]}}" class="{{['img cuIcon',showPassword?'cuIcon-attention':'cuIcon-attentionforbid']}}" bindtap="__e"></image></block><block wx:if="{{_isShowCode&&!_isShowPass}}"><view data-event-opts="{{[['tap',[['setCode',['$event']]]]]}}" class="{{['vercode',[(second>0)?'vercode-run':'']]}}" bindtap="__e">{{getVerCodeSecond}}</view></block></view>

文件差異過大導致無法顯示
+ 41 - 0
unpackage/dist/dev/mp-weixin/components/watch-input.wxss


文件差異過大導致無法顯示
+ 11 - 0
unpackage/dist/dev/mp-weixin/pages/archives/my_archives.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/archives/my_archives.json

xqd
@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "档案编辑",
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/archives/my_archives.wxml

xqd
@@ -0,0 +1 @@
+<view class="main data-v-2e87e0ff"></view>

+ 27 - 0
unpackage/dist/dev/mp-weixin/pages/archives/my_archives.wxss

xqd
@@ -0,0 +1,27 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+

文件差異過大導致無法顯示
+ 280 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.js


+ 7 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.json

xqd
@@ -0,0 +1,7 @@
+{
+  "navigationBarTitleText": "医生详情",
+  "usingComponents": {
+    "u-image": "/uview-ui/components/u-image/u-image",
+    "u-read-more": "/uview-ui/components/u-read-more/u-read-more"
+  }
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.wxml

xqd
@@ -0,0 +1 @@
+<view class="main data-v-137999fa"><view class="data-v-137999fa"><view class="pr det-body data-v-137999fa"><image class="det-bg-img data-v-137999fa" mode="scaleToFill" src="http://file.supermm.me/miniProgram/images/det/det_bg_01.png"></image><view class="det-head pr plr15 bdr8 m-bg-white mlr15 pt25 data-v-137999fa"><view class="m-xstart pr m-bottom-line pb25 margin-bottom-sm data-v-137999fa"><view class="m-flex overflow mr10 data-v-137999fa"><view class="m-xend data-v-137999fa"><text class="dpb fb f16 data-v-137999fa">唐艳</text><text class="dpb f14 m-gray-small ml5 data-v-137999fa">华西牙科医生</text><text class="dpb m-flex data-v-137999fa"></text></view><view class="m-xend mt25 data-v-137999fa"><view class="f14 m-gray-big data-v-137999fa">评分:<text class="m-theme data-v-137999fa">5.0</text><text class="f11 data-v-137999fa">分</text></view><view class="f14 ml15 m-gray-big data-v-137999fa">服务:<text class="m-theme data-v-137999fa">350</text><text class="f11 data-v-137999fa">人</text></view><view class="m-flex data-v-137999fa"></view></view></view><view class="pr pt5 data-v-137999fa"><block wx:if="{{true}}"><view class="tc m-white bdr30 f12 det-attention data-v-137999fa" bindtap="_goSubscribe">+关注</view></block><view class="tc m-white bdr30 f12 det-attention active data-v-137999fa" bindtap="_goUnSubscribe" wx:else><icon color="#fff" size="12" type="success_no_circle" class="data-v-137999fa"></icon>已关注</view><u-image vue-id="5bb8a33a-1" shape="circle" width="120rpx" height="120rpx" src="http://file.supermm.me/app/2020-03-26/e5b70e95-0fcf-41a5-9b82-8f421b338e38.jpg" class="data-v-137999fa" bind:__l="__l"></u-image></view></view><u-read-more vue-id="5bb8a33a-2" toggle="{{true}}" show-height="200" close-text=" " open-text=" " class="data-v-137999fa" bind:__l="__l" vue-slots="{{['default']}}"><rich-text nodes="{{content}}" class="data-v-137999fa"></rich-text></u-read-more></view></view></view></view>

文件差異過大導致無法顯示
+ 2 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/doctor_info.wxss


文件差異過大導致無法顯示
+ 218 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.json

xqd
@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "信息填写",
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.wxml

xqd
@@ -0,0 +1 @@
+<view class="main data-v-81576d2e"><view class="cu-list menu-avatar data-v-81576d2e"><view class="cu-item data-v-81576d2e"><view class="cu-avatar round lg data-v-81576d2e" style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg);"></view><view class="content data-v-81576d2e"><view class="text-grey data-v-81576d2e">医生姓名</view><view class="text-gray text-sm flex data-v-81576d2e"><text class="text-cut data-v-81576d2e">科室名称 医生资质</text></view></view><view class="action data-v-81576d2e"></view></view></view><view class="cu-list menu data-v-81576d2e"><view data-event-opts="{{[['tap',[['openhuanzhe',['$event']]]]]}}" class="cu-item arrow data-v-81576d2e" bindtap="__e"><view class="content data-v-81576d2e"><text class="text-grey data-v-81576d2e">咨询患者</text></view><view class="action data-v-81576d2e"><text class="text-grey text-sm data-v-81576d2e">测试二</text></view></view><view class="cu-item arrow data-v-81576d2e"><view class="content data-v-81576d2e"><text class="text-grey data-v-81576d2e">接听号码</text></view><view class="action data-v-81576d2e"><text class="text-grey text-sm data-v-81576d2e">13756797847</text></view></view><view class="cu-item data-v-81576d2e"><view class="content data-v-81576d2e"><text class="text-grey data-v-81576d2e">咨询时间</text></view><view class="action data-v-81576d2e"><text class="text-grey text-sm data-v-81576d2e">10分钟</text></view></view><view class="cu-item data-v-81576d2e"><view class="content data-v-81576d2e"><text class="text-grey data-v-81576d2e">咨询费用</text></view><view class="action data-v-81576d2e"><text class="text-grey text-sm data-v-81576d2e">19.9元</text></view></view></view><view class="cu-bar bg-white tabbar data-v-81576d2e" style="position:fixed;bottom:0;width:100%;"><view data-event-opts="{{[['tap',[['',['$event']]]]]}}" class="bg-green submit data-v-81576d2e" bindtap="__e">立即咨询</view></view></view>

+ 27 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/info_write.wxss

xqd
@@ -0,0 +1,27 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+

文件差異過大導致無法顯示
+ 351 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.js


+ 13 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.json

xqd
@@ -0,0 +1,13 @@
+{
+  "navigationBarTitleText": "找医生",
+  "usingComponents": {
+    "u-dropdown": "/uview-ui/components/u-dropdown/u-dropdown",
+    "u-dropdown-item": "/uview-ui/components/u-dropdown-item/u-dropdown-item",
+    "u-search": "/uview-ui/components/u-search/u-search",
+    "u-image": "/uview-ui/components/u-image/u-image",
+    "u-tag": "/uview-ui/components/u-tag/u-tag",
+    "u-line": "/uview-ui/components/u-line/u-line",
+    "u-loadmore": "/uview-ui/components/u-loadmore/u-loadmore",
+    "u-back-top": "/uview-ui/components/u-back-top/u-back-top"
+  }
+}

文件差異過大導致無法顯示
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.wxml


+ 127 - 0
unpackage/dist/dev/mp-weixin/pages/doctor_related/select_doctor.wxss

xqd
@@ -0,0 +1,127 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+.main.data-v-38be43b7 {
+  padding-top: 10rpx;
+  padding-left: 20rpx;
+  padding-right: 20rpx;
+}
+.base_item.data-v-38be43b7 {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 1;
+  width: 100%;
+  height: auto;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.doctor_style.data-v-38be43b7 {
+  color: rgba(0, 0, 0, 0.54);
+}
+.doctor_style_item.data-v-38be43b7 {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+}
+.base_item_zi.data-v-38be43b7 {
+  padding-top: 20rpx;
+  margin: 0 20rpx;
+  position: relative;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.base_item_zi_items.data-v-38be43b7 {
+  -webkit-box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);
+          box-shadow: 0 0 50rpx 0 rgba(0, 0, 0, 0.1);
+  background-color: #fff;
+  position: relative;
+  -webkit-border-radius: 8rpx;
+          border-radius: 8rpx;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.base_item_zi_content.data-v-38be43b7 {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+          justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+          align-items: center;
+  padding: 30rpx 30rpx;
+  overflow: hidden;
+  position: relative;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.text_style.data-v-38be43b7 {
+  font-size: 24rpx;
+  color: rgba(0, 0, 0, 0.54);
+  display: block;
+  margin-left: 10rpx;
+}
+.m_gray_small.data-v-38be43b7 {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  color: rgba(0, 0, 0, 0.54);
+  margin-top: 20rpx;
+  font-size: 28rpx;
+}
+.content_right.data-v-38be43b7 {
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+          flex: 1;
+  margin-left: 20rpx;
+  overflow: hidden;
+  position: relative;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.foot_item.data-v-38be43b7 {
+  background-color: #F7F7F7;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.grid-text.data-v-38be43b7 {
+  font-size: 28rpx;
+  margin-top: 4rpx;
+  color: #909399;
+}
+.tltleStyle.data-v-38be43b7 {
+  padding: 30rpx 30rpx 15rpx 15rpx;
+  font-weight: bold;
+  font-size: 40rpx;
+  background-color: #fff;
+}
+

部分文件因文件數量過多而無法顯示