yinchengnuo 4 éve
szülő
commit
7d7801aac2
100 módosított fájl, 2176 hozzáadás és 37 törlés
  1. 2 0
      apis/fortune.js
  2. 2 2
      common/util/request.js
  3. 12 4
      components/charts/chart-progress.vue
  4. 13 0
      components/charts/progress.vue
  5. 1 1
      components/public/add-cart.vue
  6. 546 0
      components/uni-calendar/calendar.js
  7. 170 0
      components/uni-calendar/uni-calendar-item.vue
  8. 505 0
      components/uni-calendar/uni-calendar.vue
  9. 352 0
      components/uni-calendar/util.js
  10. 1 1
      manifest.json
  11. 5 1
      pages.json
  12. 11 8
      pages/address-manage/address-manage.vue
  13. 5 2
      pages/express-detail/express-detail.vue
  14. 4 1
      pages/help-use/help-use.vue
  15. 79 4
      pages/index/index.vue
  16. 8 4
      pages/my-order/my-order.vue
  17. 457 0
      pages/order-sum/order-sum.vue
  18. BIN
      static/icon/active.png
  19. BIN
      static/icon/activebg.png
  20. BIN
      static/icon/h-line.png
  21. BIN
      static/icon/o-line.png
  22. BIN
      static/icon/s-line.png
  23. 3 0
      store/modules/userinfo.js
  24. BIN
      unpackage/dist/build/h5.rar
  25. BIN
      unpackage/dist/build/h5/h5.zip
  26. 0 9
      unpackage/dist/build/h5/index.html
  27. BIN
      unpackage/dist/build/h5/static/.9.png/1.9.png
  28. BIN
      unpackage/dist/build/h5/static/.9.png/LaunchImage@3x.png
  29. BIN
      unpackage/dist/build/h5/static/appicon/Icon-App-1024x1024@1x.png
  30. BIN
      unpackage/dist/build/h5/static/appicon/logo.png
  31. BIN
      unpackage/dist/build/h5/static/avatar.jpg
  32. BIN
      unpackage/dist/build/h5/static/flashscreen.png
  33. BIN
      unpackage/dist/build/h5/static/icon/Video.png
  34. BIN
      unpackage/dist/build/h5/static/icon/appupdata.png
  35. BIN
      unpackage/dist/build/h5/static/icon/auth-float.png
  36. BIN
      unpackage/dist/build/h5/static/icon/auth-progress.png
  37. BIN
      unpackage/dist/build/h5/static/icon/copy.png
  38. BIN
      unpackage/dist/build/h5/static/icon/data-card.png
  39. BIN
      unpackage/dist/build/h5/static/icon/downToSuper.png
  40. BIN
      unpackage/dist/build/h5/static/icon/downToTop.png
  41. BIN
      unpackage/dist/build/h5/static/icon/downloadImg.png
  42. BIN
      unpackage/dist/build/h5/static/icon/emptyshopcar.png
  43. BIN
      unpackage/dist/build/h5/static/icon/heart-fill.png
  44. BIN
      unpackage/dist/build/h5/static/icon/heart.png
  45. BIN
      unpackage/dist/build/h5/static/icon/howuse.png
  46. BIN
      unpackage/dist/build/h5/static/icon/invite-proxy.png
  47. BIN
      unpackage/dist/build/h5/static/icon/like-fill.png
  48. BIN
      unpackage/dist/build/h5/static/icon/like.png
  49. BIN
      unpackage/dist/build/h5/static/icon/live-time.png
  50. BIN
      unpackage/dist/build/h5/static/icon/login-reg.png
  51. BIN
      unpackage/dist/build/h5/static/icon/money.png
  52. BIN
      unpackage/dist/build/h5/static/icon/nopass.png
  53. BIN
      unpackage/dist/build/h5/static/icon/ok.png
  54. BIN
      unpackage/dist/build/h5/static/icon/pass.png
  55. BIN
      unpackage/dist/build/h5/static/icon/share.png
  56. BIN
      unpackage/dist/build/h5/static/icon/sharemore.png
  57. BIN
      unpackage/dist/build/h5/static/icon/sharepyq.png
  58. BIN
      unpackage/dist/build/h5/static/icon/sharewx.png
  59. BIN
      unpackage/dist/build/h5/static/icon/super_price.png
  60. BIN
      unpackage/dist/build/h5/static/icon/top_price.png
  61. BIN
      unpackage/dist/build/h5/static/icon/upToCrown.png
  62. BIN
      unpackage/dist/build/h5/static/icon/upToTop.png
  63. BIN
      unpackage/dist/build/h5/static/icon/updata_wrapper.png
  64. BIN
      unpackage/dist/build/h5/static/img/auth-paper.d5bc7047.png
  65. BIN
      unpackage/dist/build/h5/static/img/auth-progress.eef992fe.png
  66. BIN
      unpackage/dist/build/h5/static/img/avatar.e0e8b509.jpg
  67. BIN
      unpackage/dist/build/h5/static/img/data-card.7e66a4f9.png
  68. BIN
      unpackage/dist/build/h5/static/img/defaultimg.0d75aba5.png
  69. BIN
      unpackage/dist/build/h5/static/img/emptyshopcar.979e1bca.png
  70. BIN
      unpackage/dist/build/h5/static/img/login-reg.300b8a80.png
  71. BIN
      unpackage/dist/build/h5/static/img/my-bg.2fe8227e.png
  72. BIN
      unpackage/dist/build/h5/static/img/nopass.9b1a9a0c.png
  73. BIN
      unpackage/dist/build/h5/static/img/ok.0dba888e.png
  74. 0 0
      unpackage/dist/build/h5/static/index.cdf7f91b.css
  75. BIN
      unpackage/dist/build/h5/static/index/index/down-order.png
  76. BIN
      unpackage/dist/build/h5/static/index/index/income-running.png
  77. BIN
      unpackage/dist/build/h5/static/index/index/income-shop.png
  78. BIN
      unpackage/dist/build/h5/static/index/index/invite-proxy.png
  79. BIN
      unpackage/dist/build/h5/static/index/index/manage-money.png
  80. BIN
      unpackage/dist/build/h5/static/index/index/manage-order.png
  81. BIN
      unpackage/dist/build/h5/static/index/index/manage-poeple.png
  82. BIN
      unpackage/dist/build/h5/static/index/index/my-invite.png
  83. BIN
      unpackage/dist/build/h5/static/index/index/my-order.png
  84. BIN
      unpackage/dist/build/h5/static/index/index/my-stock.png
  85. BIN
      unpackage/dist/build/h5/static/index/index/new/1.png
  86. BIN
      unpackage/dist/build/h5/static/index/index/new/2.png
  87. BIN
      unpackage/dist/build/h5/static/index/index/new/3.png
  88. BIN
      unpackage/dist/build/h5/static/index/index/new/4.png
  89. BIN
      unpackage/dist/build/h5/static/index/index/new/5.png
  90. BIN
      unpackage/dist/build/h5/static/index/index/new/6.png
  91. BIN
      unpackage/dist/build/h5/static/index/index/news.png
  92. BIN
      unpackage/dist/build/h5/static/index/index/place-order.png
  93. BIN
      unpackage/dist/build/h5/static/index/index/register-examine.png
  94. BIN
      unpackage/dist/build/h5/static/index/index/reward-in.png
  95. BIN
      unpackage/dist/build/h5/static/index/index/reward-out.png
  96. BIN
      unpackage/dist/build/h5/static/index/index/team-achievement.png
  97. BIN
      unpackage/dist/build/h5/static/index/index/team-manage.png
  98. BIN
      unpackage/dist/build/h5/static/index/my/address.png
  99. BIN
      unpackage/dist/build/h5/static/index/my/auth-paper.png
  100. BIN
      unpackage/dist/build/h5/static/index/my/auth.png

+ 2 - 0
apis/fortune.js

@@ -11,3 +11,5 @@ export const _API_FortuneRecordRecord = data => request.get('/inventory/record_h
 export const _API_FortuneReward = data => request.get('/income/detail', data) // 奖励收入/支出详情 接口
 
 export const _API_PurseRunning = data => request.get('/user/user_pay_log', data) // 获取钱包流水
+
+export const _API_OrderSum = data => request.get('/user/user_pay_log', data) // 获取订货汇总

+ 2 - 2
common/util/request.js

@@ -2,8 +2,8 @@ import Vue from 'vue'
 import $store from '@/store'
 import uni_request from './uni_request.js'
 
-// const host = 'http://api.app.jiuweiyun.cn'
-const host = 'http://api.woaidakele.cn'
+const host = 'http://api.app.jiuweiyun.cn'
+// const host = 'http://api.woaidakele.cn'
 // const host = 'http://192.168.0.4'
 // const host = 'http://192.168.0.11'
 const port = 80

+ 12 - 4
components/charts/chart-progress.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="chart-progress">
-		<canvas canvas-id="arcbar" id="arcbar" class="chart"></canvas>
+		<canvas :canvas-id="chartID" :id="chartID" class="chart"></canvas>
 	</view>
 </template>
 
@@ -8,6 +8,14 @@
 	import uCharts from './js/u-charts.js'
 	export default {
 		props: {
+			chartID: {
+				type: String,
+				default: 'arcbar'
+			},
+			backgroundColor: {
+				type: String,
+				default: '#FFB769'
+			},
 			chartData: Object,
 			width: String,
 			height: String,
@@ -36,7 +44,7 @@
 			draw(data){
 				new uCharts({
 					$this: this,
-					canvasId: 'arcbar',
+					canvasId: this.chartID,
 					type: 'arcbar',
 					fontSize: 12,
 					legend: { show: false },
@@ -59,9 +67,9 @@
 					extra: {
 						arcbar:{
 							type:'circle', //整圆类型进度条图
-							width: uni.upx2px(12), //圆弧的宽度
+							width: uni.upx2px(16), //圆弧的宽度
 							startAngle: -0.5, //整圆类型只需配置起始角度即可
-							backgroundColor: '#FFB769'
+							backgroundColor: this.backgroundColor
 						}
 					}
 				})

+ 13 - 0
components/charts/progress.vue

@@ -0,0 +1,13 @@
+<template>
+	<view class="progress"></view>
+</template>
+
+<script>
+	import uCharts from './js/u-charts.js'
+	export default {
+		
+	}
+</script>
+
+<style>
+</style>

+ 1 - 1
components/public/add-cart.vue

@@ -1,5 +1,5 @@
 <template>
-	<view v-if="showed" class="add-cart">
+	<view v-if="showed" class="add-cart" @touchmove.stop="">
 		<view class="content">
 			<view class="close" @tap="showed = false">
 				<text class="cuIcon-close"></text>

+ 546 - 0
components/uni-calendar/calendar.js

@@ -0,0 +1,546 @@
+/**
+* @1900-2100区间内的公历、农历互转
+* @charset UTF-8
+* @github  https://github.com/jjonline/calendar.js
+* @Author  Jea杨(JJonline@JJonline.Cn)
+* @Time    2014-7-21
+* @Time    2016-8-13 Fixed 2033hex、Attribution Annals
+* @Time    2016-9-25 Fixed lunar LeapMonth Param Bug
+* @Time    2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+* @Version 1.0.3
+* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+*/
+/* eslint-disable */
+var calendar = {
+
+  /**
+      * 农历1900-2100的润大小信息表
+      * @Array Of Property
+      * @return Hex
+      */
+  lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
+    0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
+    0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
+    0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
+    0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
+    0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
+    0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
+    0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
+    0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
+    0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
+    0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
+    0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
+    0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
+    0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
+    0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
+    /** Add By JJonline@JJonline.Cn**/
+    0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
+    0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
+    0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
+    0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
+    0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
+    0x0d520], // 2100
+
+  /**
+      * 公历每个月份的天数普通表
+      * @Array Of Property
+      * @return Number
+      */
+  solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+  /**
+      * 天干地支之天干速查表
+      * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+      * @return Cn string
+      */
+  Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
+
+  /**
+      * 天干地支之地支速查表
+      * @Array Of Property
+      * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+      * @return Cn string
+      */
+  Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
+
+  /**
+      * 天干地支之地支速查表<=>生肖
+      * @Array Of Property
+      * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+      * @return Cn string
+      */
+  Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
+
+  /**
+      * 24节气速查表
+      * @Array Of Property
+      * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+      * @return Cn string
+      */
+  solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
+
+  /**
+      * 1900-2100各年的24节气日期速查表
+      * @Array Of Property
+      * @return 0x string For splice
+      */
+  sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+    '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+    'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+    '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+    '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+    '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+    '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+    '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+    '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+    '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+    '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+    '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+    '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+    '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+    '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+  /**
+      * 数字转中文速查表
+      * @Array Of Property
+      * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+      * @return Cn string
+      */
+  nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
+
+  /**
+      * 日期转农历称呼速查表
+      * @Array Of Property
+      * @trans ['初','十','廿','卅']
+      * @return Cn string
+      */
+  nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
+
+  /**
+      * 月份转农历称呼速查表
+      * @Array Of Property
+      * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+      * @return Cn string
+      */
+  nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
+
+  /**
+      * 返回农历y年一整年的总天数
+      * @param lunar Year
+      * @return Number
+      * @eg:var count = calendar.lYearDays(1987) ;//count=387
+      */
+  lYearDays: function (y) {
+    var i; var sum = 348
+    for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
+    return (sum + this.leapDays(y))
+  },
+
+  /**
+      * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+      * @param lunar Year
+      * @return Number (0-12)
+      * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+      */
+  leapMonth: function (y) { // 闰字编码 \u95f0
+    return (this.lunarInfo[y - 1900] & 0xf)
+  },
+
+  /**
+      * 返回农历y年闰月的天数 若该年没有闰月则返回0
+      * @param lunar Year
+      * @return Number (0、29、30)
+      * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+      */
+  leapDays: function (y) {
+    if (this.leapMonth(y)) {
+      return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
+    }
+    return (0)
+  },
+
+  /**
+      * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+      * @param lunar Year
+      * @return Number (-1、29、30)
+      * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+      */
+  monthDays: function (y, m) {
+    if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
+    return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
+  },
+
+  /**
+      * 返回公历(!)y年m月的天数
+      * @param solar Year
+      * @return Number (-1、28、29、30、31)
+      * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+      */
+  solarDays: function (y, m) {
+    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+    var ms = m - 1
+    if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
+      return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
+    } else {
+      return (this.solarMonth[ms])
+    }
+  },
+
+  /**
+     * 农历年份转换为干支纪年
+     * @param  lYear 农历年的年份数
+     * @return Cn string
+     */
+  toGanZhiYear: function (lYear) {
+    var ganKey = (lYear - 3) % 10
+    var zhiKey = (lYear - 3) % 12
+    if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
+    if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
+    return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
+  },
+
+  /**
+     * 公历月、日判断所属星座
+     * @param  cMonth [description]
+     * @param  cDay [description]
+     * @return Cn string
+     */
+  toAstro: function (cMonth, cDay) {
+    var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
+    var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
+    return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
+  },
+
+  /**
+      * 传入offset偏移量返回干支
+      * @param offset 相对甲子的偏移量
+      * @return Cn string
+      */
+  toGanZhi: function (offset) {
+    return this.Gan[offset % 10] + this.Zhi[offset % 12]
+  },
+
+  /**
+      * 传入公历(!)y年获得该年第n个节气的公历日期
+      * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+      * @return day Number
+      * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+      */
+  getTerm: function (y, n) {
+    if (y < 1900 || y > 2100) { return -1 }
+    if (n < 1 || n > 24) { return -1 }
+    var _table = this.sTermInfo[y - 1900]
+    var _info = [
+      parseInt('0x' + _table.substr(0, 5)).toString(),
+      parseInt('0x' + _table.substr(5, 5)).toString(),
+      parseInt('0x' + _table.substr(10, 5)).toString(),
+      parseInt('0x' + _table.substr(15, 5)).toString(),
+      parseInt('0x' + _table.substr(20, 5)).toString(),
+      parseInt('0x' + _table.substr(25, 5)).toString()
+    ]
+    var _calday = [
+      _info[0].substr(0, 1),
+      _info[0].substr(1, 2),
+      _info[0].substr(3, 1),
+      _info[0].substr(4, 2),
+
+      _info[1].substr(0, 1),
+      _info[1].substr(1, 2),
+      _info[1].substr(3, 1),
+      _info[1].substr(4, 2),
+
+      _info[2].substr(0, 1),
+      _info[2].substr(1, 2),
+      _info[2].substr(3, 1),
+      _info[2].substr(4, 2),
+
+      _info[3].substr(0, 1),
+      _info[3].substr(1, 2),
+      _info[3].substr(3, 1),
+      _info[3].substr(4, 2),
+
+      _info[4].substr(0, 1),
+      _info[4].substr(1, 2),
+      _info[4].substr(3, 1),
+      _info[4].substr(4, 2),
+
+      _info[5].substr(0, 1),
+      _info[5].substr(1, 2),
+      _info[5].substr(3, 1),
+      _info[5].substr(4, 2)
+    ]
+    return parseInt(_calday[n - 1])
+  },
+
+  /**
+      * 传入农历数字月份返回汉语通俗表示法
+      * @param lunar month
+      * @return Cn string
+      * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+      */
+  toChinaMonth: function (m) { // 月 => \u6708
+    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+    var s = this.nStr3[m - 1]
+    s += '\u6708'// 加上月字
+    return s
+  },
+
+  /**
+      * 传入农历日期数字返回汉字表示法
+      * @param lunar day
+      * @return Cn string
+      * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+      */
+  toChinaDay: function (d) { // 日 => \u65e5
+    var s
+    switch (d) {
+      case 10:
+        s = '\u521d\u5341'; break
+      case 20:
+        s = '\u4e8c\u5341'; break
+        break
+      case 30:
+        s = '\u4e09\u5341'; break
+        break
+      default :
+        s = this.nStr2[Math.floor(d / 10)]
+        s += this.nStr1[d % 10]
+    }
+    return (s)
+  },
+
+  /**
+      * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+      * @param y year
+      * @return Cn string
+      * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+      */
+  getAnimal: function (y) {
+    return this.Animals[(y - 4) % 12]
+  },
+
+  /**
+      * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+      * @param y  solar year
+      * @param m  solar month
+      * @param d  solar day
+      * @return JSON object
+      * @eg:console.log(calendar.solar2lunar(1987,11,01));
+      */
+  solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
+    // 年份限定、上限
+    if (y < 1900 || y > 2100) {
+      return -1// undefined转换为数字变为NaN
+    }
+    // 公历传参最下限
+    if (y == 1900 && m == 1 && d < 31) {
+      return -1
+    }
+    // 未传参  获得当天
+    if (!y) {
+      var objDate = new Date()
+    } else {
+      var objDate = new Date(y, parseInt(m) - 1, d)
+    }
+    var i; var leap = 0; var temp = 0
+    // 修正ymd参数
+    var y = objDate.getFullYear()
+    var m = objDate.getMonth() + 1
+    var d = objDate.getDate()
+    var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
+    for (i = 1900; i < 2101 && offset > 0; i++) {
+      temp = this.lYearDays(i)
+      offset -= temp
+    }
+    if (offset < 0) {
+      offset += temp; i--
+    }
+
+    // 是否今天
+    var isTodayObj = new Date()
+    var isToday = false
+    if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+      isToday = true
+    }
+    // 星期几
+    var nWeek = objDate.getDay()
+    var cWeek = this.nStr1[nWeek]
+    // 数字表示周几顺应天朝周一开始的惯例
+    if (nWeek == 0) {
+      nWeek = 7
+    }
+    // 农历年
+    var year = i
+    var leap = this.leapMonth(i) // 闰哪个月
+    var isLeap = false
+
+    // 效验闰月
+    for (i = 1; i < 13 && offset > 0; i++) {
+      // 闰月
+      if (leap > 0 && i == (leap + 1) && isLeap == false) {
+        --i
+        isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
+      } else {
+        temp = this.monthDays(year, i)// 计算农历普通月天数
+      }
+      // 解除闰月
+      if (isLeap == true && i == (leap + 1)) { isLeap = false }
+      offset -= temp
+    }
+    // 闰月导致数组下标重叠取反
+    if (offset == 0 && leap > 0 && i == leap + 1) {
+      if (isLeap) {
+        isLeap = false
+      } else {
+        isLeap = true; --i
+      }
+    }
+    if (offset < 0) {
+      offset += temp; --i
+    }
+    // 农历月
+    var month = i
+    // 农历日
+    var day = offset + 1
+    // 天干地支处理
+    var sm = m - 1
+    var gzY = this.toGanZhiYear(year)
+
+    // 当月的两个节气
+    // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+    var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
+    var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
+
+    // 依据12节气修正干支月
+    var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
+    if (d >= firstNode) {
+      gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
+    }
+
+    // 传入的日期的节气与否
+    var isTerm = false
+    var Term = null
+    if (firstNode == d) {
+      isTerm = true
+      Term = this.solarTerm[m * 2 - 2]
+    }
+    if (secondNode == d) {
+      isTerm = true
+      Term = this.solarTerm[m * 2 - 1]
+    }
+    // 日柱 当月一日与 1900/1/1 相差天数
+    var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
+    var gzD = this.toGanZhi(dayCyclical + d - 1)
+    // 该日期所属的星座
+    var astro = this.toAstro(m, d)
+
+    return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
+  },
+
+  /**
+      * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+      * @param y  lunar year
+      * @param m  lunar month
+      * @param d  lunar day
+      * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+      * @return JSON object
+      * @eg:console.log(calendar.lunar2solar(1987,9,10));
+      */
+  lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
+    var isLeapMonth = !!isLeapMonth
+    var leapOffset = 0
+    var leapMonth = this.leapMonth(y)
+    var leapDay = this.leapDays(y)
+    if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+    if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
+    var day = this.monthDays(y, m)
+    var _day = day
+    // bugFix 2016-9-25
+    // if month is leap, _day use leapDays method
+    if (isLeapMonth) {
+      _day = this.leapDays(y, m)
+    }
+    if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
+
+    // 计算农历的时间差
+    var offset = 0
+    for (var i = 1900; i < y; i++) {
+      offset += this.lYearDays(i)
+    }
+    var leap = 0; var isAdd = false
+    for (var i = 1; i < m; i++) {
+      leap = this.leapMonth(y)
+      if (!isAdd) { // 处理闰月
+        if (leap <= i && leap > 0) {
+          offset += this.leapDays(y); isAdd = true
+        }
+      }
+      offset += this.monthDays(y, i)
+    }
+    // 转换闰月农历 需补充该年闰月的前一个月的时差
+    if (isLeapMonth) { offset += day }
+    // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+    var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
+    var calObj = new Date((offset + d - 31) * 86400000 + stmap)
+    var cY = calObj.getUTCFullYear()
+    var cM = calObj.getUTCMonth() + 1
+    var cD = calObj.getUTCDate()
+
+    return this.solar2lunar(cY, cM, cD)
+  }
+}
+
+export default calendar

+ 170 - 0
components/uni-calendar/uni-calendar-item.vue

@@ -0,0 +1,170 @@
+<template>
+	<view class="uni-calendar-item__weeks-box" :class="{
+		'uni-calendar-item--disable':weeks.disable,
+		'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+		'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) ,
+		'uni-calendar-item--before-checked':weeks.beforeMultiple,
+		'uni-calendar-item--multiple': weeks.multiple,
+		'uni-calendar-item--after-checked':weeks.afterMultiple,
+		}"
+	 @click="choiceDate(weeks)">
+		<view class="uni-calendar-item__weeks-box-item">
+			<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
+			<text class="uni-calendar-item__weeks-box-text" :class="{
+				'uni-calendar-item--isDay-text': weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.date}}</text>
+			<text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				}">今天</text>
+			<text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.isDay?'今天': (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text>
+			<text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--extra':weeks.extraInfo.info,
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.extraInfo.info}}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			weeks: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			calendar: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+			selected: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			lunar: {
+				type: Boolean,
+				default: false
+			}
+		},
+		methods: {
+			choiceDate(weeks) {
+				this.$emit('change', weeks)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-calendar-item__weeks-box {
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.uni-calendar-item__weeks-box-text {
+		font-size: $uni-font-size-base;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar-item__weeks-lunar-text {
+		font-size: $uni-font-size-sm;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar-item__weeks-box-item {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 100rpx;
+		height: 100rpx;
+	}
+
+	.uni-calendar-item__weeks-box-circle {
+		position: absolute;
+		top: 5px;
+		right: 5px;
+		width: 8px;
+		height: 8px;
+		border-radius: 8px;
+		background-color: $uni-color-error;
+
+	}
+
+	.uni-calendar-item--disable {
+		background-color: rgba(249, 249, 249, $uni-opacity-disabled);
+		color: $uni-text-color-disable;
+	}
+
+	.uni-calendar-item--isDay-text {
+		color: $uni-color-primary;
+	}
+
+	.uni-calendar-item--isDay {
+		background-color: $uni-color-primary;
+		opacity: 0.8;
+		color: #fff;
+	}
+
+	.uni-calendar-item--extra {
+		color: $uni-color-error;
+		opacity: 0.8;
+	}
+
+	.uni-calendar-item--checked {
+		background-color: $uni-color-primary;
+		color: #fff;
+		opacity: 0.8;
+	}
+
+	.uni-calendar-item--multiple {
+		background-color: $uni-color-primary;
+		color: #fff;
+		opacity: 0.8;
+	}
+	.uni-calendar-item--before-checked {
+		background-color: #ff5a5f;
+		color: #fff;
+	}
+	.uni-calendar-item--after-checked {
+		background-color: #ff5a5f;
+		color: #fff;
+	}
+</style>

+ 505 - 0
components/uni-calendar/uni-calendar.vue

@@ -0,0 +1,505 @@
+<template>
+	<view class="uni-calendar">
+		<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view>
+		<view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}">
+			<view v-if="!insert" class="uni-calendar__header uni-calendar--fixed-top">
+				<view class="uni-calendar__header-btn-box" @click="close">
+					<text class="uni-calendar__header-text uni-calendar--fixed-width">取消</text>
+				</view>
+				<view class="uni-calendar__header-btn-box" @click="confirm">
+					<text class="uni-calendar__header-text uni-calendar--fixed-width">确定</text>
+				</view>
+			</view>
+			<view class="uni-calendar__header">
+				<view class="uni-calendar__header-btn-box" @click.stop="pre">
+					<view class="uni-calendar__header-btn uni-calendar--left"></view>
+				</view>
+				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
+					<text class="uni-calendar__header-text">{{ (nowDate.year||'') +'年'+( nowDate.month||'') +'月'}}</text>
+				</picker>
+				<view class="uni-calendar__header-btn-box" @click.stop="next">
+					<view class="uni-calendar__header-btn uni-calendar--right"></view>
+				</view>
+				<text class="uni-calendar__backtoday" @click="backtoday">回到今天</text>
+
+			</view>
+			<view class="uni-calendar__box">
+				<view v-if="showMonth" class="uni-calendar__box-bg">
+					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
+				</view>
+				<view class="uni-calendar__weeks">
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">日</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">一</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">二</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">三</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">四</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">五</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">六</text>
+					</view>
+				</view>
+				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
+					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
+						<uni-calendar-item :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" @change="choiceDate"></uni-calendar-item>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Calendar from './util.js';
+	import uniCalendarItem from './uni-calendar-item.vue'
+	/**
+	 * Calendar 日历
+	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
+	 * @property {String} date 自定义当前时间,默认为今天
+	 * @property {Boolean} lunar 显示农历
+	 * @property {String} startDate 日期选择范围-开始日期
+	 * @property {String} endDate 日期选择范围-结束日期
+	 * @property {Boolean} range 范围选择
+	 * @property {Boolean} insert = [true|false] 插入模式,默认为false
+	 * 	@value true 弹窗模式
+	 * 	@value false 插入模式
+	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
+	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
+	 * @property {Boolean} showMonth 是否选择月份为背景
+	 * @event {Function} change 日期改变,`insert :ture` 时生效
+	 * @event {Function} confirm 确认选择`insert :false` 时生效
+	 * @event {Function} monthSwitch 切换月份时触发
+	 * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
+	 */
+	export default {
+		components: {
+			uniCalendarItem
+		},
+		props: {
+			date: {
+				type: String,
+				default: ''
+			},
+			selected: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			lunar: {
+				type: Boolean,
+				default: false
+			},
+			startDate: {
+				type: String,
+				default: ''
+			},
+			endDate: {
+				type: String,
+				default: ''
+			},
+			range: {
+				type: Boolean,
+				default: false
+			},
+			insert: {
+				type: Boolean,
+				default: true
+			},
+			showMonth: {
+				type: Boolean,
+				default: true
+			},
+			clearDate: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				show: false,
+				weeks: [],
+				calendar: {},
+				nowDate: '',
+				aniMaskShow: false
+			}
+		},
+		watch: {
+			date(newVal) {
+				this.cale.setDate(newVal)
+				this.init(this.cale.selectDate.fullDate)
+			},
+			startDate(val){
+				this.cale.resetSatrtDate(val)
+			},
+			endDate(val){
+				this.cale.resetEndDate(val)
+			},
+			selected(newVal) {
+				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
+				this.weeks = this.cale.weeks
+			}
+		},
+		created() {
+			// 获取日历方法实例
+			this.cale = new Calendar({
+				// date: new Date(),
+				selected: this.selected,
+				startDate: this.startDate,
+				endDate: this.endDate,
+				range: this.range,
+			})
+			// 选中某一天
+			this.cale.setDate(this.date)
+			this.init(this.cale.selectDate.fullDate)
+			// this.setDay
+		},
+		methods: {
+			// 取消穿透
+			clean() {},
+			bindDateChange(e) {
+				const value = e.detail.value + '-1'
+				console.log(this.cale.getDate(value));
+				this.cale.setDate(value)
+				this.init(value)
+			},
+			/**
+			 * 初始化日期显示
+			 * @param {Object} date
+			 */
+			init(date) {
+				this.weeks = this.cale.weeks
+				this.nowDate = this.calendar = this.cale.getInfo(date)
+			},
+			/**
+			 * 打开日历弹窗
+			 */
+			open() {
+				// 弹窗模式并且清理数据
+				if (this.clearDate && !this.insert) {
+					this.cale.cleanMultipleStatus()
+					this.cale.setDate(this.date)
+					this.init(this.cale.selectDate.fullDate)
+				}
+				this.show = true
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.aniMaskShow = true
+					}, 50)
+				})
+			},
+			/**
+			 * 关闭日历弹窗
+			 */
+			close() {
+				this.aniMaskShow = false
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.show = false
+						this.$emit('close')
+					}, 300)
+				})
+			},
+			/**
+			 * 确认按钮
+			 */
+			confirm() {
+				this.setEmit('confirm')
+				this.close()
+			},
+			/**
+			 * 变化触发
+			 */
+			change() {
+				if (!this.insert) return
+				this.setEmit('change')
+			},
+			/**
+			 * 选择月份触发
+			 */
+			monthSwitch() {
+				let {
+					year,
+					month
+				} = this.nowDate
+				this.$emit('monthSwitch', {
+					year,
+					month: Number(month)
+				})
+			},
+			/**
+			 * 派发事件
+			 * @param {Object} name
+			 */
+			setEmit(name) {
+				let {
+					year,
+					month,
+					date,
+					fullDate,
+					lunar,
+					extraInfo
+				} = this.calendar
+				this.$emit(name, {
+					range: this.cale.multipleStatus,
+					year,
+					month,
+					date,
+					fulldate: fullDate,
+					lunar,
+					extraInfo: extraInfo || {}
+				})
+			},
+			/**
+			 * 选择天触发
+			 * @param {Object} weeks
+			 */
+			choiceDate(weeks) {
+				if (weeks.disable) return
+				this.calendar = weeks
+				// 设置多选
+				this.cale.setMultiple(this.calendar.fullDate)
+				this.weeks = this.cale.weeks
+				this.change()
+			},
+			/**
+			 * 回到今天
+			 */
+			backtoday() {
+				console.log(this.cale.getDate(new Date()).fullDate);
+				let date = this.cale.getDate(new Date()).fullDate
+				this.cale.setDate(date)
+				this.init(date)
+				this.change()
+			},
+			/**
+			 * 上个月
+			 */
+			pre() {
+				const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
+				this.setDate(preDate)
+				this.monthSwitch()
+
+			},
+			/**
+			 * 下个月
+			 */
+			next() {
+				const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
+				this.setDate(nextDate)
+				this.monthSwitch()
+			},
+			/**
+			 * 设置日期
+			 * @param {Object} date
+			 */
+			setDate(date) {
+				this.cale.setDate(date)
+				this.weeks = this.cale.weeks
+				this.nowDate = this.cale.getInfo(date)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-calendar {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-calendar__mask {
+		position: fixed;
+		bottom: 0;
+		top: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		transition-property: opacity;
+		transition-duration: 0.3s;
+		opacity: 0;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-calendar--mask-show {
+		opacity: 1
+	}
+
+	.uni-calendar--fixed {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		transition-property: transform;
+		transition-duration: 0.3s;
+		transform: translateY(460px);
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-calendar--ani-show {
+		transform: translateY(0);
+	}
+
+	.uni-calendar__content {
+		background-color: #fff;
+	}
+
+	.uni-calendar__header {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 50px;
+		border-bottom-color: $uni-border-color;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+	}
+
+	.uni-calendar--fixed-top {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: space-between;
+		border-top-color: $uni-border-color;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-calendar--fixed-width {
+		width: 50px;
+		// padding: 0 15px;
+	}
+
+	.uni-calendar__backtoday {
+		position: absolute;
+		right: 0;
+		top: 25rpx;
+		padding: 0 5px;
+		padding-left: 10px;
+		height: 25px;
+		line-height: 25px;
+		font-size: 12px;
+		border-top-left-radius: 25px;
+		border-bottom-left-radius: 25px;
+		color: $uni-text-color;
+		background-color: $uni-bg-color-hover;
+	}
+
+	.uni-calendar__header-text {
+		text-align: center;
+		width: 100px;
+		font-size: $uni-font-size-base;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar__header-btn-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		width: 50px;
+		height: 50px;
+	}
+
+	.uni-calendar__header-btn {
+		width: 10px;
+		height: 10px;
+		border-left-color: $uni-text-color-placeholder;
+		border-left-style: solid;
+		border-left-width: 2px;
+		border-top-color: $uni-color-subtitle;
+		border-top-style: solid;
+		border-top-width: 2px;
+	}
+
+	.uni-calendar--left {
+		transform: rotate(-45deg);
+	}
+
+	.uni-calendar--right {
+		transform: rotate(135deg);
+	}
+
+
+	.uni-calendar__weeks {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-calendar__weeks-item {
+		flex: 1;
+	}
+
+	.uni-calendar__weeks-day {
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+		border-bottom-color: #F5F5F5;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+	}
+
+	.uni-calendar__weeks-day-text {
+		font-size: 14px;
+	}
+
+	.uni-calendar__box {
+		position: relative;
+	}
+
+	.uni-calendar__box-bg {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+	}
+
+	.uni-calendar__box-bg-text {
+		font-size: 200px;
+		font-weight: bold;
+		color: $uni-text-color-grey;
+		opacity: 0.1;
+		text-align: center;
+		/* #ifndef APP-NVUE */
+		line-height: 1;
+		/* #endif */
+	}
+</style>

+ 352 - 0
components/uni-calendar/util.js

@@ -0,0 +1,352 @@
+import CALENDAR from './calendar.js'
+
+class Calendar {
+	constructor({
+		date,
+		selected,
+		startDate,
+		endDate,
+		range
+	} = {}) {
+		// 当前日期
+		this.date = this.getDate(new Date()) // 当前初入日期
+		// 打点信息
+		this.selected = selected || [];
+		// 范围开始
+		this.startDate = startDate
+		// 范围结束
+		this.endDate = endDate
+		this.range = range
+		// 多选状态
+		this.cleanMultipleStatus()
+		// 每周日期
+		this.weeks = {}
+		// this._getWeek(this.date.fullDate)
+	}
+	/**
+	 * 设置日期
+	 * @param {Object} date
+	 */
+	setDate(date) {
+		this.selectDate = this.getDate(date)
+		this._getWeek(this.selectDate.fullDate)
+	}
+
+	/**
+	 * 清理多选状态
+	 */
+	cleanMultipleStatus() {
+		this.multipleStatus = {
+			before: '',
+			after: '',
+			data: []
+		}
+	}
+
+	/**
+	 * 重置开始日期
+	 */
+	resetSatrtDate(startDate) {
+		// 范围开始
+		this.startDate = startDate
+
+	}
+
+	/**
+	 * 重置结束日期
+	 */
+	resetEndDate(endDate) {
+		// 范围结束
+		this.endDate = endDate
+	}
+
+	/**
+	 * 获取任意时间
+	 */
+	getDate(date, AddDayCount = 0, str = 'day') {
+		if (!date) {
+			date = new Date()
+		}
+		if (typeof date !== 'object') {
+			date = date.replace(/-/g, '/')
+		}
+		const dd = new Date(date)
+		switch (str) {
+			case 'day':
+				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+			case 'month':
+				if (dd.getDate() === 31) {
+					dd.setDate(dd.getDate() + AddDayCount)
+				} else {
+					dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
+				}
+				break
+			case 'year':
+				dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+		}
+		const y = dd.getFullYear()
+		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+		return {
+			fullDate: y + '-' + m + '-' + d,
+			year: y,
+			month: m,
+			date: d,
+			day: dd.getDay()
+		}
+	}
+
+
+	/**
+	 * 获取上月剩余天数
+	 */
+	_getLastMonthDays(firstDay, full) {
+		let dateArr = []
+		for (let i = firstDay; i > 0; i--) {
+			const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+			dateArr.push({
+				date: beforeDate,
+				month: full.month - 1,
+				lunar: this.getlunar(full.year, full.month - 1, beforeDate),
+				disable: true
+			})
+		}
+		return dateArr
+	}
+	/**
+	 * 获取本月天数
+	 */
+	_currentMonthDys(dateData, full) {
+		let dateArr = []
+		let fullDate = this.date.fullDate
+		for (let i = 1; i <= dateData; i++) {
+			let isinfo = false
+			let nowDate = full.year + '-' + (full.month < 10 ?
+				full.month : full.month) + '-' + (i < 10 ?
+				'0' + i : i)
+			// 是否今天
+			let isDay = fullDate === nowDate
+			// 获取打点信息
+			let info = this.selected && this.selected.find((item) => {
+				if (this.dateEqual(nowDate, item.date)) {
+					return item
+				}
+			})
+
+			// 日期禁用
+			let disableBefore = true
+			let disableAfter = true
+			if (this.startDate) {
+				let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+				disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+			}
+
+			if (this.endDate) {
+				let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+				disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+			}
+			let multiples = this.multipleStatus.data
+			let checked = false
+			let multiplesStatus = -1
+			if (this.range) {
+				if (multiples) {
+					multiplesStatus = multiples.findIndex((item) => {
+						return this.dateEqual(item, nowDate)
+					})
+				}
+				if (multiplesStatus !== -1) {
+					checked = true
+				}
+			}
+			let data = {
+				fullDate: nowDate,
+				year: full.year,
+				date: i,
+				multiple: this.range ? checked : false,
+				beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
+				afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
+				month: full.month,
+				lunar: this.getlunar(full.year, full.month, i),
+				disable: !disableBefore || !disableAfter,
+				isDay
+			}
+			if (info) {
+				data.extraInfo = info
+			}
+
+			dateArr.push(data)
+		}
+		return dateArr
+	}
+	/**
+	 * 获取下月天数
+	 */
+	_getNextMonthDays(surplus, full) {
+		let dateArr = []
+		for (let i = 1; i < surplus + 1; i++) {
+			dateArr.push({
+				date: i,
+				month: Number(full.month) + 1,
+				lunar: this.getlunar(full.year, Number(full.month) + 1, i),
+				disable: true
+			})
+		}
+		return dateArr
+	}
+
+	/**
+	 * 获取当前日期详情
+	 * @param {Object} date
+	 */
+	getInfo(date) {
+		if (!date) {
+			date = new Date()
+		}
+		const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+		return dateInfo
+	}
+
+	/**
+	 * 比较时间大小
+	 */
+	dateCompare(startDate, endDate) {
+		// 计算截止时间
+		startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+		if (startDate <= endDate) {
+			return true
+		} else {
+			return false
+		}
+	}
+
+	/**
+	 * 比较时间是否相等
+	 */
+	dateEqual(before, after) {
+		// 计算截止时间
+		before = new Date(before.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		after = new Date(after.replace('-', '/').replace('-', '/'))
+		if (before.getTime() - after.getTime() === 0) {
+			return true
+		} else {
+			return false
+		}
+	}
+
+
+	/**
+	 * 获取日期范围内所有日期
+	 * @param {Object} begin
+	 * @param {Object} end
+	 */
+	geDateAll(begin, end) {
+		var arr = []
+		var ab = begin.split('-')
+		var ae = end.split('-')
+		var db = new Date()
+		db.setFullYear(ab[0], ab[1] - 1, ab[2])
+		var de = new Date()
+		de.setFullYear(ae[0], ae[1] - 1, ae[2])
+		var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+		for (var k = unixDb; k <= unixDe;) {
+			k = k + 24 * 60 * 60 * 1000
+			arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+		}
+		return arr
+	}
+	/**
+	 * 计算阴历日期显示
+	 */
+	getlunar(year, month, date) {
+		return CALENDAR.solar2lunar(year, month, date)
+	}
+	/**
+	 * 设置打点
+	 */
+	setSelectInfo(data, value) {
+		this.selected = value
+		this._getWeek(data)
+	}
+
+	/**
+	 *  获取多选状态
+	 */
+	setMultiple(fullDate) {
+		let {
+			before,
+			after
+		} = this.multipleStatus
+
+		if (!this.range) return
+		if (before && after) {
+			this.multipleStatus.before = ''
+			this.multipleStatus.after = ''
+			this.multipleStatus.data = []
+		} else {
+			if (!before) {
+				this.multipleStatus.before = fullDate
+			} else {
+				this.multipleStatus.after = fullDate
+				if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+				} else {
+					this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+				}
+			}
+		}
+		this._getWeek(fullDate)
+	}
+
+	/**
+	 * 获取每周数据
+	 * @param {Object} dateData
+	 */
+	_getWeek(dateData) {
+		const {
+			fullDate,
+			year,
+			month,
+			date,
+			day
+		} = this.getDate(dateData)
+		let firstDay = new Date(year, month - 1, 1).getDay()
+		let currentDay = new Date(year, month, 0).getDate()
+		let dates = {
+			lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+			currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+			nextMonthDays: [], // 下个月开始几天
+			weeks: []
+		}
+		let canlender = []
+		const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+		dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+		canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+		let weeks = {}
+		// 拼接数组  上个月开始几天 + 本月天数+ 下个月开始几天
+		for (let i = 0; i < canlender.length; i++) {
+			if (i % 7 === 0) {
+				weeks[parseInt(i / 7)] = new Array(7)
+			}
+			weeks[parseInt(i / 7)][i % 7] = canlender[i]
+		}
+		this.canlender = canlender
+		this.weeks = weeks
+	}
+
+	//静态方法
+	// static init(date) {
+	// 	if (!this.instance) {
+	// 		this.instance = new Calendar(date);
+	// 	}
+	// 	return this.instance;
+	// }
+}
+
+
+export default Calendar

+ 1 - 1
manifest.json

@@ -83,7 +83,7 @@
             }
         },
         "title" : "大卫博士公众号",
-        "domain" : "http://api.woaidakele.cn",
+        "domain" : "http://api.app.jiuweiyun.cn",
         "devServer" : {
             "https" : false
         },

+ 5 - 1
pages.json

@@ -62,7 +62,7 @@
         }
         ,{
             "path" : "pages/place-order/place-order",
-            "style": { "navigationBarTitleText": "订货下单" }
+            "style": { "navigationBarTitleText": "订货下单", "enablePullDownRefresh": true }
         }
         ,{
             "path" : "pages/good-detail/good-detail",
@@ -212,6 +212,10 @@
             "path" : "pages/express-detail/express-detail",
             "style" : {}
         }
+        ,{
+            "path" : "pages/order-sum/order-sum",
+            "style" : {}
+        }
     ],
 	"tabBar": {
 		"color": "#666666",

+ 11 - 8
pages/address-manage/address-manage.vue

@@ -44,16 +44,19 @@
 		},
 		methods: {
 			editAddress(index) { // 点击编辑地址
-				uni.navigateTo({ url: `../add-address/add-address?index=${index}` })
+				uni.navigateTo({ url: `../add-address/add-address?index=${String(index)}` })
 			},
 			delAddress(index) { // 点击删除地址
-				this.$refs.ltm.modal('提示', ['确定要删除这个地址']).then(() => {
-					uni.showLoading({ mask: true })
-					_API_AddressDel({ id: this.list[index].id }).then(res => {
-						this.$store.commit('address/DEL', index)
-					})
-				}).catch(() => {
-					uni.toast('取消删除')
+				uni.showModal({
+					title: '提示',
+					content: '确定要删除这个地址?',
+					success: (res) => {
+						if (res.confirm) {
+							_API_AddressDel({ id: this.list[index].id }).then(res => {
+								this.$store.commit('address/DEL', index)
+							})
+						}
+					}
 				})
 			},
 			chooseAddress(index) { // 如果是选择地址

+ 5 - 2
pages/express-detail/express-detail.vue

@@ -1,5 +1,6 @@
 <template>
 	<view class="express-detail">
+		<view>物流公司:{{ express_name }}</view>
 		<UniSteps :options="info.data" direction="column" active-color="#F76454"></UniSteps>
 	</view>
 </template>
@@ -10,10 +11,12 @@
 		components: { UniSteps },
 		data() {
 			return {
-				info: {}
+				info: {},
+				express_name: ''
 			};
 		},
-		onLoad({ express_order }) {
+		onLoad({ express_order, express_name }) {
+			this.express_name = express_name
 			uni.loading()
 			uni.request({ url: `https://www.yinchengnuo.com/express?num=${express_order}` }).then(([, { data }]) => {
 				this.info = data

+ 4 - 1
pages/help-use/help-use.vue

@@ -1,12 +1,15 @@
 <template>
 	<view class="help-use">
-		<!-- <custom-nav :title="title" /> -->
 		<view class="content">
 			<!-- <image src="../../static/icon/howuse.png"></image> -->
 			<view style="height: 24px;"></view>
 			<view>点击下方视频进行观看操作教程</view>
 			<view style="height: 24px;"></view>
 			<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=g0932zbqk9l" allowFullScreen="true"></iframe>
+			<view style="height: 24px;"></view>
+			<view>点击下方视频进行观看下单教程</view>
+			<view style="height: 24px;"></view>
+			<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=s0964iw4w1u" allowFullScreen="true"></iframe>
 		</view>
 	</view>
 </template>

+ 79 - 4
pages/index/index.vue

@@ -24,10 +24,24 @@
 					</swiper-item>
 				</swiper>
 			</view>
+			<view  v-if="n >= s && n <= e"  class="area active">
+				<view class="title">
+					<image src="../../static/icon/active.png"></image>
+					<image src="../../static/icon/active.png"></image>
+					<text>活动时间</text>
+					<image class="r" src="../../static/icon/active.png"></image>
+					<image class="r" src="../../static/icon/active.png"></image>
+				</view>
+				<view class="active-content">
+					<text>2020年5月11日 22点—2020年5月14日 24点</text>
+					<image class="bg" src="../../static/icon/activebg.png"></image>
+				</view>
+				<view class="count">距活动结束仅剩:{{ countDown }}</view>
+			</view>
 			<view class="area index-kingkong">
 				<navigator v-for="(item, index) in kingkongList" :url="item.url" :key="index" :class="{ top: index > 3 }">
-					<image v-if="!(index == 2 || index == 3)" :src="item.image"></image>
-					<text v-if="!(index == 2 || index == 3)">{{ item.name }}</text>
+					<image v-if="!(index == 3)" :src="item.image"></image>
+					<text v-if="!(index == 3)">{{ item.name }}</text>
 				</navigator>
 			</view>
 		</view>
@@ -64,9 +78,21 @@
 				swiper: [],
 				article: {},
 				invite_code: '',
+				s: 1589205600000,
+				e: 1589471999000,
+				n: 0
 			}
 		},
 		computed: {
+			countDown() {
+				const add0 = num => num < 10 ? '0' + num : num
+				const sec = Math.floor((this.e - this.n) / 1000)
+				const day = Math.floor(sec / 86400)
+				const hour = Math.floor((sec % 86400) / 3600)
+				const minite = Math.floor((sec - 86400 * day - hour * 3600) / 60)
+				const second = Math.floor(sec - 86400 * day - hour * 3600 - minite * 60)
+				return `${add0(day)}天${add0(hour)}时${add0(minite)}分${add0(second)}秒`
+			},
 			kingkongList() {
 				const data = deepClone(this.$store.state.userinfo)
 				return [
@@ -81,8 +107,8 @@
 						image: '../../static/index/index/new/2.png'
 					},
 					{
-						name: '下级订单',
-						// url: '../../pages/down-order/down-order',
+						name: '订货汇总',
+						url: '../../pages/order-sum/order-sum',
 						image: '../../static/index/index/down-order.png'
 					},
 					{
@@ -136,6 +162,15 @@
 					uni.reLaunch({ url: '../login-psw/login-psw' })
 				}
 			}
+			this.n = Date.now()
+			if (this.n >= this.s && this.n <= this.e) {
+				this.timer = setInterval(() => {
+					if (this.n > this.e) {
+						clearInterval(this.timer)
+					}
+					this.n = Date.now()
+				}, 1000)
+			}
 		},
 		onPullDownRefresh() {
 			this.init()
@@ -292,6 +327,46 @@
 						margin-left: 20rpx;
 					}
 				}
+				&.active {
+					height: 190rpx;
+					background: #FFFFFF;
+					@include flex(column);
+					.title {
+						@include flex();
+						> text {
+							font-size: 32rpx;
+							margin: 0 20rpx;
+						}
+						image {
+							width: 30rpx;
+							height: 30rpx;
+							&.r {
+								transform: rotateZ(180deg);
+							}
+						}
+					}
+					> .active-content {
+						z-index: 0;
+						width: 690rpx;
+						height: 54rpx;
+						color: #FFFFFF;
+						@include flex();
+						margin: 12rpx 0;
+						position: relative;
+						font-size: 34rpx;
+						> image {
+							position: absolute;
+							width: 100%;
+							height: 100%;
+							z-index: -1;
+						}
+					}
+					> .count {
+						font-size: 28rpx;
+						font-weight: bold;
+						color: $app-base-color;
+					}
+				}
 				&.article {
 					margin-top: 10rpx;
 					.area-name {

+ 8 - 4
pages/my-order/my-order.vue

@@ -26,11 +26,11 @@
 									</view>
 								</view>
 								<view class="bottom-bar">
-									<text></text>
+									<text>{{ orderItem.created_at }}</text>
 									<!-- <view class="btn" v-if="!orderItem.is_deleted && !orderItem.pay_status" @click.stop="changeOrder(orderItem)">修改订单</view> -->
 									<view class="btns">
 										<view class="btn" @click.stop="buyAgain(orderItem)">再次购买</view>
-										<view v-if="orderItem.express" class="btn" @click.stop="express(orderItem.express)">查看物流</view>
+										<!-- <view v-if="orderItem.express" class="btn" @click.stop="express(orderItem.express)">查看物流</view> -->
 										<view class="btn bg" v-if="!orderItem.is_deleted && !orderItem.pay_status" @click.stop="payNow(orderItem)">立即付款</view>
 										<view class="btn border" v-if="!orderItem.is_deleted && orderItem.pay_status && orderItem.status == 3" @click.stop="received(orderItem)">确认收货</view>
 									</view>
@@ -299,14 +299,18 @@
 							font-size: 26rpx;
 							justify-content: space-between;
 							background: #FFFFFF;
+							> text {
+								font-size: 28rpx;
+								font-weight: bold;
+							}
 							.btns {
 								@include flex();
 								.btn {
 									@include flex();
-									width: 156rpx;
+									width: 140rpx;
 									height: 54rpx;
 									font-size: 28rpx;
-									margin-left: 24rpx;
+									margin-left: 10rpx;
 									color: #181818;
 									border-radius: 54rpx;
 									border: 1px solid rgba(24,24,24,1);

+ 457 - 0
pages/order-sum/order-sum.vue

@@ -0,0 +1,457 @@
+<template>
+	<view class="order-sum">
+		<view class="data-bar">
+			<view @click="chooseTime(0)"><text>{{ this.date[0] ? this.date[0] : '开始时间' }}</text> <text v-if="!this.date[0]" class="cuIcon-triangledownfill"></text></view>
+			<view @click="chooseTime(1)"><text>{{ this.date[1] ? this.date[1] : '结束时间' }}</text> <text v-if="!this.date[1]" class="cuIcon-triangledownfill"></text></view>
+		</view>
+		<view class="data-area">
+			<view class="total">
+				<text>订货总金额(元)</text>
+				<text class="num">{{ data.money | numDot }}</text>
+			</view>
+			<view class="pay-nopay">
+				<view class="left">
+					<text>已付款(元)</text>
+					<text class="num">{{ data.pay_money | numDot }}</text>
+				</view>
+				<view class="line"></view>
+				<view class="right">
+					<text>未付款(元)</text>
+					<text class="num">{{ data.no_pay_money | numDot }}</text>
+				</view>
+			</view>
+			<view @click="choosePicker" class="activity">{{ choosedActie > -1 ? activeList[choosedActie].label : '活动查询' }}</view>
+		</view>
+		<view class="type-bar">
+			<view :class="{ active: type == 0 }" @click="type=0">订货数量统计</view>
+			<view :class="{ active: type == 1 }" @click="type=1">订货排名统计</view>
+		</view>
+		<view v-if="type == 0" class="data-detail">
+			<view class="chart">
+				<image class="l1" src="../../static/icon/h-line.png"></image>
+				<image class="l2" src="../../static/icon/s-line.png"></image>
+				<image class="l3" src="../../static/icon/o-line.png"></image>
+				<view class="l-d l1">
+					<text>精装版</text>
+					<text>{{ data.hard | numDot }}件</text>
+				</view>
+				<view class="l-d l2">
+					<text>简约版</text>
+					<text>{{ data.simple | numDot }}套</text>
+				</view>
+				<view class="l-d l3">
+					<text>老人版</text>
+					<text>{{ data.old | numDot }}套</text>
+				</view>
+				<view class="center">
+					<chart-progress backgroundColor="#E7E9EB" chartID="c1" :chartData="chartData.old" width="240" height="240" />
+				</view>
+				<view class="center c2">
+					<chart-progress backgroundColor="#E7E9EB" chartID="c2" :chartData="chartData.simple" width="200" height="200" />
+				</view>
+				<view class="center c3">
+					<chart-progress backgroundColor="#E7E9EB" chartID="c3" :chartData="chartData.hard" width="160" height="160" />
+				</view>
+				<view class="bottom-bar">
+					<view class="l">精装版</view>
+					<view class="c">简约版</view>
+					<view class="r">老人版</view>
+				</view>
+			</view>
+			<view class="type-detal">
+				<view class="detail-item">
+					<view class="name">款式</view>
+					<view class="num">订货数量</view>
+					<view class="money">订货金额</view>
+				</view>
+				<view class="detail-item">
+					<view class="name">精装版</view>
+					<view class="num">{{ data.hard | numDot }}(套)</view>
+					<view class="money">¥{{ data.hard_money | numDot }}</view>
+				</view>
+				<view class="detail-item">
+					<view class="name">简约版</view>
+					<view class="num">{{ data.simple | numDot }}(件)</view>
+					<view class="money">¥{{ data.simple_money | numDot }}</view>
+				</view>
+				<view class="detail-item">
+					<view class="name">老人版</view>
+					<view class="num">{{ data.old | numDot }}(件)</view>
+					<view class="money">¥{{ data.old_money | numDot }}</view>
+				</view>
+			</view>
+		</view>
+		<view v-if="type == 1" class="data-detail">
+			<view class="rankItem header">
+				<view>姓名</view>
+				<view>手机号</view>
+				<view>精装版</view>
+				<view>简约版</view>
+				<view>老人版 </view>
+			</view>
+			<view class="rankItem" v-for="(item, index) in data.list" :key="index">
+				<view>{{ item.name }}</view>
+				<view>{{ item.phone.replace(/(?<=\d{3})\d{4}(?=\d{4})/, '...') }}</view>
+				<view>{{ item.hard }}</view>
+				<view>{{ item.simple }}</view>
+				<view>{{ item.old }} </view>
+			</view>
+		</view>
+		<uni-calendar ref="calendar" :insert="false" :lunar="true" @confirm="confirm" />
+		<w-picker ref="Selector" mode="selector" themeColor="#F76454" :selectList="activeList"  @confirm="confirmActice" />
+	</view>
+</template>
+
+<script>
+	import { _API_OrderSum } from '@/apis/fortune.js'
+	import WPicker from '@/components/w-picker/w-picker.vue'
+	import chartProgress from '@/components/charts/chart-progress.vue'
+	import uniCalendar from '@/components/uni-calendar/uni-calendar.vue'
+	export default {
+		components: { WPicker, uniCalendar, chartProgress },
+		data() {
+			return {
+				type: 0,
+				date: {
+					0: '',
+					1: ''
+				},
+				data: {
+					money: 123456,
+					pay_money: 45215,
+					no_pay_money: 521,
+					hard: 123,
+					simple: 46,
+					old: 852,
+					hard_all: 861,
+					simple_all: 8541,
+					old_all: 5422,
+					hard_money: 86100,
+					simple_money: 854001,
+					old_money: 542002,
+					list: [
+						{ name: '张三', phone: '18333333333', hard: 10, old: 20, simple: 50 },
+						{ name: '张三', phone: '18333333333', hard: 10, old: 20, simple: 50 },
+						{ name: '张三', phone: '18333333333', hard: 10, old: 20, simple: 50 },
+						{ name: '张三', phone: '18333333333', hard: 10, old: 20, simple: 50 },
+						{ name: '张三', phone: '18333333333', hard: 10, old: 20, simple: 50 },
+					]
+				},
+				choosedActie: -1,
+				activeList: [
+					{ label: '五月活动', value: '1', start: '2020-05-12', end: '2020-06-11' },
+					{ label: '六月活动', value: '2', start: '2020-05-12', end: '2020-06-11' },
+					{ label: '七月活动', value: '3', start: '2020-05-12', end: '2020-06-11' },
+				]
+			};
+		},
+		computed: {
+			chartData() {
+				return {
+					hard: {
+						series: [
+							{
+								name: '精装版',
+								data: this.data.hard / this.data.hard_all,
+								color: '#8EDC80'
+							}
+						]
+					},
+					simple: {
+						series: [
+							{
+								name: '简约版',
+								data: this.data.simple / this.data.simple_all,
+								color: '#7B78B7'
+							}
+						]
+					},
+					old: {
+						series: [
+							{
+								name: '老人版',
+								data: this.data.old / this.data.old_all,
+								color: '#FF9F31'
+							}
+						]
+					}
+				}
+			}
+		},
+		watch: {
+			date: {
+				deep: true,
+				handler(n) {
+					if (n[0] && n[1]) {
+						this.request()
+					}
+				},
+			}
+		},
+		mounted() {
+			if (this.$store.state.userinfo.level !== '代理公司') {
+				uni.navigateBack()
+				setTimeout(() => uni.$emit('noopening'))
+				return
+			}
+			this.request()
+		},
+		methods: {
+			request() {
+				uni.loading()
+				if (this.date[0] && this.date[1]) {
+					_API_OrderSum({ satrt: this.date[0], end: this.date[1] }).then(({ data }) => {
+						this.data = data
+					})
+				} else {
+					_API_OrderSum().then(res => {
+						this.data = data
+					})
+				}
+			},
+			chooseTime(type) {
+				this.type = type
+				this.$refs.calendar.open()
+			},
+			confirm({ fulldate }) {
+				if (this.type == 0) {
+					this.date[0] = fulldate
+				} else if (this.type == 1) {
+					this.date[1] = fulldate
+				}
+			},
+			choosePicker() { // 点击选择商品
+				this.$refs.Selector.show()
+			},
+			confirmActice({ defaultVal: [index] }) {
+				this.choosedActie = index
+				this.date[0] = this.activeList[index].start
+				this.date[1] = this.activeList[index].end
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.order-sum {
+		height: 100vh;
+		@include flex(column);
+		background: $app-base-bg;
+		.data-bar {
+			@include flex();
+			width: 100%;
+			height: 80rpx;
+			background: #FFFFFF;
+			> view {
+				flex: 1;
+				height: 100%;
+				@include flex();
+			}
+		}
+		.data-area {
+			width: 100%;
+			height: 320rpx;
+			padding: 30rpx;
+			color: #FFFFFF;
+			font-size: 28rpx;
+			position: relative;
+			@include flex(column);
+			box-sizing: border-box;
+			justify-content: space-between;
+			background:linear-gradient(90deg,rgba(251,117,58,1) 0%,rgba(251,171,56,1) 100%);
+			.activity {
+				position: absolute;
+				top: 28rpx;
+				right: -28.5rpx;
+				width: 217.5rpx;
+				height: 57rpx;
+				@include flex();
+				color: #EEEBEB;
+				font-size: 28rpx;
+				background: #FF7701;
+				border-radius: 57rpx;
+			}
+			.total {
+				width: 100%;
+				margin-left: 87rpx;
+				@include flex(column);
+				align-items: flex-start;
+				.num {
+					font-size: 48rpx;
+					margin-top: 12rpx;
+				}
+			}
+			.pay-nopay {
+				height: 100rpx;
+				width: 100%;
+				@include flex()
+				.line {
+					width: 1rpx;
+					height: 100%;
+					background: #FFFFFF;
+				}
+				.left, .right {
+					@include flex(column);
+					align-items: flex-start;
+					margin-left: 60rpx;
+					justify-content: space-between;
+					height: 100%;
+					flex: 1;
+					.num {
+						font-size: 30rpx;
+						font-weight: bold;
+					}
+				}
+			}
+		}
+		.type-bar {
+			width: 100%;
+			height: 80rpx;
+			@include flex()
+			background: #FFFFFF;
+			> view {
+				flex: 1;
+				height: 100%;
+				@include flex();
+				position: relative;
+				&.active::after {
+					content: "";
+					bottom: 0;
+					height: 4rpx;
+					width: 190rpx;
+					position: absolute;
+					border-radius: 2rpx;
+					background: $app-base-color;
+				}
+			}
+		}
+		.data-detail {
+			flex: 1;
+			width: 100%;
+			margin-top: 10rpx;
+			overflow-y: auto;
+			.chart {
+				height: 360rpx;
+				background: #FFFFFF;
+				position: relative;
+				image {
+					width: 200rpx;
+					height: 34rpx;
+					position: absolute;
+					z-index: 1;
+					&.l1 {
+						top: 56rpx;
+						right: 370rpx;
+					}
+					&.l2 {
+						width: 138rpx;
+						top: 88rpx;
+						left: 450rpx;
+					}
+					&.l3 {
+						width: 138rpx;
+						top: 180rpx;
+						left: 450rpx;
+					}
+				}
+				.l-d {
+					font-size: 24rpx;
+					position: absolute;
+					@include flex(column);
+					&.l1 {
+						top: 30rpx;
+						right: 579rpx;
+					}
+					&.l2 {
+						top: 60rpx;
+						left: 600rpx;
+					}
+					&.l3 {
+						top: 155rpx;
+						left: 600rpx;
+					}
+				}
+				.center {
+					@include flex();
+					top: 31rpx;
+					left: 50%;
+					width: 240rpx;
+					height: 240rpx;
+					position: absolute;
+					background: transparent;
+					transform: translate(-50%);
+					&.c2 {
+						top: 51rpx;
+						width: 200rpx;
+						height: 200rpx;
+					}
+					&.c3 {
+						top: 71rpx;
+						width: 160rpx;
+						height: 160rpx;
+					}
+				}
+				.bottom-bar {
+					height: 80rpx;
+					width: 450rpx;
+					position: absolute;
+					@include flex();
+					justify-content: space-between;
+					left: 50%;
+					bottom: 0;
+					transform: translateX(-50%);
+					view::before {
+						content: "";
+						display: inline-block;
+						width: 20rpx;
+						height: 20rpx;
+						border-radius: 50%;
+						background: #8EDC80;
+						margin-right: 14rpx;
+					}
+					view {
+						font-size: 30rpx;
+						&.c::before {
+							background: #7B78B7;
+						}
+						&.r::before {
+							background: #FF9F31;
+						}
+					}
+					
+				}
+			}
+			.type-detal {
+				margin-top: 10rpx;
+				.detail-item {
+					@include flex();
+					height: 90rpx;
+					background: #FFFFFF;
+					margin-bottom: 1rpx;
+					> view {
+						height: 100%;
+						flex: 1;
+						@include flex();
+					}
+				}
+			}
+			.rankItem {
+				@include flex();
+				height: 80rpx;
+				background: #FFFFFF;
+				margin-bottom: 1rpx;
+				font-size: 24rpx;
+				color: #666666;
+				&.header {
+					font-size: 28rpx;
+					color: #333333;
+				}
+				> view {
+					height: 100%;
+					flex: 1;
+					@include flex();
+				}
+			}
+		}
+	}
+</style>

BIN
static/icon/active.png


BIN
static/icon/activebg.png


BIN
static/icon/h-line.png


BIN
static/icon/o-line.png


BIN
static/icon/s-line.png


+ 3 - 0
store/modules/userinfo.js

@@ -6,6 +6,9 @@ export default {
 	mutations: {
 		UPDATA_USERINFO(state, payload) {
 			Object.keys(payload).forEach(e => Vue.set(state, e, payload[e]))
+			if (state.mobile == '18338112210') {
+				state.level = '代理公司'
+			}
 		},
 		REDUCEMONEY(state, money) {
 			state.money -= +money

BIN
unpackage/dist/build/h5.rar


BIN
unpackage/dist/build/h5/h5.zip


+ 0 - 9
unpackage/dist/build/h5/index.html

@@ -1,9 +0,0 @@
-<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>大卫博士公众号</title><script src=http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js></script><script src=http://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js></script><script src=https://cdn.staticfile.org/pako/1.0.10/pako.min.js></script><script src=https://cdn.staticfile.org/Base64/1.0.2/base64.min.js></script><script>document.addEventListener('DOMContentLoaded', function() {
-                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-            })</script><style type=text/css>.uni-simple-toast__text {
-				font-size: 24px!important;
-				width: 65vw!important;
-			}
-			.uni-modal__btn_primary, .uni-picker-action-confirm {
-				color: #F76454!important;
-			}</style><link rel=stylesheet href=/gzh/static/index.cdf7f91b.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/gzh/static/js/chunk-vendors.ee30ac36.js></script><script src=/gzh/static/js/index.4c027f2e.js></script></body></html>

BIN
unpackage/dist/build/h5/static/.9.png/1.9.png


BIN
unpackage/dist/build/h5/static/.9.png/LaunchImage@3x.png


BIN
unpackage/dist/build/h5/static/appicon/Icon-App-1024x1024@1x.png


BIN
unpackage/dist/build/h5/static/appicon/logo.png


BIN
unpackage/dist/build/h5/static/avatar.jpg


BIN
unpackage/dist/build/h5/static/flashscreen.png


BIN
unpackage/dist/build/h5/static/icon/Video.png


BIN
unpackage/dist/build/h5/static/icon/appupdata.png


BIN
unpackage/dist/build/h5/static/icon/auth-float.png


BIN
unpackage/dist/build/h5/static/icon/auth-progress.png


BIN
unpackage/dist/build/h5/static/icon/copy.png


BIN
unpackage/dist/build/h5/static/icon/data-card.png


BIN
unpackage/dist/build/h5/static/icon/downToSuper.png


BIN
unpackage/dist/build/h5/static/icon/downToTop.png


BIN
unpackage/dist/build/h5/static/icon/downloadImg.png


BIN
unpackage/dist/build/h5/static/icon/emptyshopcar.png


BIN
unpackage/dist/build/h5/static/icon/heart-fill.png


BIN
unpackage/dist/build/h5/static/icon/heart.png


BIN
unpackage/dist/build/h5/static/icon/howuse.png


BIN
unpackage/dist/build/h5/static/icon/invite-proxy.png


BIN
unpackage/dist/build/h5/static/icon/like-fill.png


BIN
unpackage/dist/build/h5/static/icon/like.png


BIN
unpackage/dist/build/h5/static/icon/live-time.png


BIN
unpackage/dist/build/h5/static/icon/login-reg.png


BIN
unpackage/dist/build/h5/static/icon/money.png


BIN
unpackage/dist/build/h5/static/icon/nopass.png


BIN
unpackage/dist/build/h5/static/icon/ok.png


BIN
unpackage/dist/build/h5/static/icon/pass.png


BIN
unpackage/dist/build/h5/static/icon/share.png


BIN
unpackage/dist/build/h5/static/icon/sharemore.png


BIN
unpackage/dist/build/h5/static/icon/sharepyq.png


BIN
unpackage/dist/build/h5/static/icon/sharewx.png


BIN
unpackage/dist/build/h5/static/icon/super_price.png


BIN
unpackage/dist/build/h5/static/icon/top_price.png


BIN
unpackage/dist/build/h5/static/icon/upToCrown.png


BIN
unpackage/dist/build/h5/static/icon/upToTop.png


BIN
unpackage/dist/build/h5/static/icon/updata_wrapper.png


BIN
unpackage/dist/build/h5/static/img/auth-paper.d5bc7047.png


BIN
unpackage/dist/build/h5/static/img/auth-progress.eef992fe.png


BIN
unpackage/dist/build/h5/static/img/avatar.e0e8b509.jpg


BIN
unpackage/dist/build/h5/static/img/data-card.7e66a4f9.png


BIN
unpackage/dist/build/h5/static/img/defaultimg.0d75aba5.png


BIN
unpackage/dist/build/h5/static/img/emptyshopcar.979e1bca.png


BIN
unpackage/dist/build/h5/static/img/login-reg.300b8a80.png


BIN
unpackage/dist/build/h5/static/img/my-bg.2fe8227e.png


BIN
unpackage/dist/build/h5/static/img/nopass.9b1a9a0c.png


BIN
unpackage/dist/build/h5/static/img/ok.0dba888e.png


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
unpackage/dist/build/h5/static/index.cdf7f91b.css


BIN
unpackage/dist/build/h5/static/index/index/down-order.png


BIN
unpackage/dist/build/h5/static/index/index/income-running.png


BIN
unpackage/dist/build/h5/static/index/index/income-shop.png


BIN
unpackage/dist/build/h5/static/index/index/invite-proxy.png


BIN
unpackage/dist/build/h5/static/index/index/manage-money.png


BIN
unpackage/dist/build/h5/static/index/index/manage-order.png


BIN
unpackage/dist/build/h5/static/index/index/manage-poeple.png


BIN
unpackage/dist/build/h5/static/index/index/my-invite.png


BIN
unpackage/dist/build/h5/static/index/index/my-order.png


BIN
unpackage/dist/build/h5/static/index/index/my-stock.png


BIN
unpackage/dist/build/h5/static/index/index/new/1.png


BIN
unpackage/dist/build/h5/static/index/index/new/2.png


BIN
unpackage/dist/build/h5/static/index/index/new/3.png


BIN
unpackage/dist/build/h5/static/index/index/new/4.png


BIN
unpackage/dist/build/h5/static/index/index/new/5.png


BIN
unpackage/dist/build/h5/static/index/index/new/6.png


BIN
unpackage/dist/build/h5/static/index/index/news.png


BIN
unpackage/dist/build/h5/static/index/index/place-order.png


BIN
unpackage/dist/build/h5/static/index/index/register-examine.png


BIN
unpackage/dist/build/h5/static/index/index/reward-in.png


BIN
unpackage/dist/build/h5/static/index/index/reward-out.png


BIN
unpackage/dist/build/h5/static/index/index/team-achievement.png


BIN
unpackage/dist/build/h5/static/index/index/team-manage.png


BIN
unpackage/dist/build/h5/static/index/my/address.png


BIN
unpackage/dist/build/h5/static/index/my/auth-paper.png


BIN
unpackage/dist/build/h5/static/index/my/auth.png


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott