index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <!-- 日期组件 -->
  3. <view>
  4. <view class="list">
  5. <view class="times">
  6. <view class="item" :class="time == 'all' ? 'on' : ''" @click="setTime('all')">全部</view>
  7. <view class="item" :class="time == 'today' ? 'on' : ''" @click="setTime('today')">今天</view>
  8. <view class="item" :class="time == 'yesterday' ? 'on' : ''" @click="setTime('yesterday')">昨天</view>
  9. <view class="item" :class="time == 'seven' ? 'on' : ''" @click="setTime('seven')">近7天</view>
  10. </view>
  11. <view class="item" :class="time == 'date' ? 'on' : ''" @click="dateTitle">自定义时间 <text
  12. class="iconfont icon-xiangxia aaa"></text></view>
  13. </view>
  14. <!-- #ifdef H5 || APP-PLUS -->
  15. <uni-calendar ref="calendar" :date="info.date" :insert="info.insert" :lunar="info.lunar"
  16. :startDate="info.startDate" :endDate="info.endDate" :range="info.range" @confirm="confirm"
  17. :showMonth="info.showMonth" />
  18. <view class="mask" @touchmove.prevent v-show="current === true" @click="close"></view>
  19. <!-- #endif -->
  20. <Loading :loaded="loaded" :loading="loading"></Loading>
  21. </view>
  22. </template>
  23. <script>
  24. import Loading from '@/components/Loading/index.vue'
  25. import uniCalendar from '@/components/uni-calendar/uni-calendar.vue'
  26. const year = new Date().getFullYear();
  27. const month = new Date().getMonth() + 1;
  28. const day = new Date().getDate();
  29. export default {
  30. components: {
  31. uniCalendar,
  32. Loading
  33. },
  34. data() {
  35. return {
  36. time:'all',
  37. current: false,
  38. loaded: false,
  39. loading: false,
  40. info: {
  41. startDate: '',
  42. endDate: '',
  43. lunar: false,
  44. range: true,
  45. insert: false,
  46. selected: [],
  47. showMonth: false
  48. },
  49. where: {
  50. start: "",
  51. stop: "",
  52. },
  53. }
  54. },
  55. methods: {
  56. close() {
  57. this.current = false;
  58. },
  59. // 日历确定
  60. confirm(e) {
  61. console.log(e)
  62. let self = this
  63. let star, stop;
  64. if (e.range.after && e.range.before) {
  65. if (e.range.before > e.range.after) {
  66. star = new Date(e.range.after + ' 00:00:00').getTime() / 1000
  67. stop = new Date(e.range.before + ' 23:59:59').getTime() / 1000
  68. } else {
  69. star = new Date(e.range.before + ' 00:00:00').getTime() / 1000
  70. stop = new Date(e.range.after + ' 23:59:59').getTime() / 1000
  71. }
  72. self.where.start = star
  73. self.where.stop = stop
  74. self.loaded = false;
  75. self.loading = false;
  76. // Promise.all();
  77. this.$emit('changeTime', this.where)
  78. }
  79. },
  80. dateTitle() {
  81. this.$refs.calendar.open()
  82. this.time = 'date'
  83. },
  84. setTime(time) {
  85. let self = this
  86. this.time = time;
  87. var year = new Date().getFullYear(),
  88. month = new Date().getMonth() + 1,
  89. day = new Date().getDate();
  90. this.tip = 1
  91. this.loaded = false;
  92. this.loading = false;
  93. switch (time) {
  94. case "all":
  95. this.where.start = 0
  96. this.where.stop = 0
  97. this.title = "全部";
  98. this.$emit('changeTime', this.where)
  99. break;
  100. case "today":
  101. this.where.start =
  102. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  103. 1000;
  104. this.where.stop =
  105. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  106. 1000 +
  107. 24 * 60 * 60 -
  108. 1;
  109. this.title = "今日";
  110. this.$emit('changeTime', this.where)
  111. break;
  112. case "yesterday":
  113. this.where.start =
  114. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  115. 1000 -
  116. 24 * 60 * 60;
  117. this.where.stop =
  118. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  119. 1000 -
  120. 1;
  121. this.title = "昨日";
  122. this.$emit('changeTime', this.where)
  123. break;
  124. case "month":
  125. this.where.start =
  126. new Date(year, new Date().getMonth(), 1).getTime() / 1000;
  127. this.where.stop = new Date(year, month, 1).getTime() / 1000 - 1;
  128. this.title = "本月";
  129. this.$emit('changeTime', this.where)
  130. break;
  131. case "seven":
  132. this.where.start =
  133. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  134. 1000 +
  135. 24 * 60 * 60 -
  136. 7 * 3600 * 24;
  137. this.where.stop =
  138. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  139. 1000 +
  140. 24 * 60 * 60 -
  141. 1;
  142. this.title = "七日";
  143. this.$emit('changeTime', this.where)
  144. break;
  145. // #ifdef MP
  146. case "date":
  147. let star = new Date(self.before).getTime() / 1000
  148. let stop = new Date(self.after).getTime() / 1000
  149. self.where.start = star
  150. self.where.stop = stop
  151. Promise.all([self.getList()]);
  152. this.$emit('changeTime', this.where)
  153. break;
  154. // #endif
  155. }
  156. },
  157. }
  158. }
  159. </script>
  160. <style lang="scss" scoped>
  161. .list {
  162. display: flex;
  163. justify-content: space-between;
  164. padding: 24rpx 30rpx;
  165. background-color: #fff;
  166. color: #666666;
  167. font-size: 26rpx;
  168. .times {
  169. display: flex;
  170. .item {
  171. margin-right: 20rpx;
  172. background: #F5F5F5;
  173. padding: 10rpx 20rpx;
  174. border-radius: 30rpx;
  175. }
  176. .item.on {
  177. color: var(--view-theme);
  178. background-color: var(--view-minorColorT);
  179. }
  180. }
  181. .item{
  182. padding: 10rpx 0rpx;
  183. }
  184. }
  185. .aaa {
  186. padding-left: 10rpx;
  187. font-size: 20rpx !important;
  188. }
  189. </style>