index.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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. <uni-calendar ref="calendar" :date="info.date" :insert="info.insert" :lunar="info.lunar"
  15. :startDate="info.startDate" :endDate="info.endDate" :range="info.range" @confirm="confirm"
  16. :showMonth="info.showMonth" />
  17. <view class="mask" @touchmove.prevent v-show="current === true" @click="close"></view>
  18. <Loading :loaded="loaded" :loading="loading"></Loading>
  19. </view>
  20. </template>
  21. <script>
  22. // +----------------------------------------------------------------------
  23. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  24. // +----------------------------------------------------------------------
  25. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  26. // +----------------------------------------------------------------------
  27. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  28. // +----------------------------------------------------------------------
  29. // | Author: CRMEB Team <admin@crmeb.com>
  30. // +----------------------------------------------------------------------
  31. import Loading from '@/components/Loading/index.vue'
  32. import uniCalendar from '@/components/uni-calendar/uni-calendar.vue'
  33. const year = new Date().getFullYear();
  34. const month = new Date().getMonth() + 1;
  35. const day = new Date().getDate();
  36. export default {
  37. components: {
  38. uniCalendar,
  39. Loading
  40. },
  41. data() {
  42. return {
  43. time:'all',
  44. current: false,
  45. loaded: false,
  46. loading: false,
  47. info: {
  48. startDate: '',
  49. endDate: '',
  50. lunar: false,
  51. range: true,
  52. insert: false,
  53. selected: [],
  54. showMonth: false
  55. },
  56. where: {
  57. start: "",
  58. stop: "",
  59. },
  60. }
  61. },
  62. methods: {
  63. close() {
  64. this.current = false;
  65. },
  66. // 日历确定
  67. confirm(e) {
  68. let self = this
  69. let star, stop;
  70. if ((e.range.after && e.range.before) || e.fulldate) {
  71. if(e.range.after && e.range.before){
  72. if (e.range.before > e.range.after) {
  73. star = new Date(e.range.after + ' 00:00:00').getTime() / 1000
  74. stop = new Date(e.range.before + ' 23:59:59').getTime() / 1000
  75. } else {
  76. star = new Date(e.range.before + ' 00:00:00').getTime() / 1000
  77. stop = new Date(e.range.after + ' 23:59:59').getTime() / 1000
  78. }
  79. }else{
  80. var year = new Date(e.fulldate).getFullYear(),
  81. month = new Date(e.fulldate).getMonth() + 1,
  82. day = new Date(e.fulldate).getDate();
  83. star = new Date(e.fulldate + ' 00:00:00').getTime() / 1000
  84. stop =new Date(Date.parse(year + "/" + month + "/" + day)).getTime() / 1000 +
  85. 24 * 60 * 60 -
  86. 1;
  87. }
  88. self.where.start = star
  89. self.where.stop = stop
  90. self.loaded = false;
  91. self.loading = false;
  92. this.$emit('changeTime', this.where)
  93. }
  94. },
  95. dateTitle() {
  96. this.$refs.calendar.open()
  97. this.time = 'date'
  98. },
  99. setTime(time) {
  100. let self = this
  101. this.time = time;
  102. var year = new Date().getFullYear(),
  103. month = new Date().getMonth() + 1,
  104. day = new Date().getDate();
  105. this.tip = 1
  106. this.loaded = false;
  107. this.loading = false;
  108. switch (time) {
  109. case "all":
  110. this.where.start = 0
  111. this.where.stop = 0
  112. this.title = "全部";
  113. this.$emit('changeTime', this.where)
  114. break;
  115. case "today":
  116. this.where.start =
  117. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  118. 1000;
  119. this.where.stop =
  120. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  121. 1000 +
  122. 24 * 60 * 60 -
  123. 1;
  124. this.title = "今日";
  125. this.$emit('changeTime', this.where)
  126. break;
  127. case "yesterday":
  128. this.where.start =
  129. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  130. 1000 -
  131. 24 * 60 * 60;
  132. this.where.stop =
  133. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  134. 1000 -
  135. 1;
  136. this.title = "昨日";
  137. this.$emit('changeTime', this.where)
  138. break;
  139. case "month":
  140. this.where.start =
  141. new Date(year, new Date().getMonth(), 1).getTime() / 1000;
  142. this.where.stop = new Date(year, month, 1).getTime() / 1000 - 1;
  143. this.title = "本月";
  144. this.$emit('changeTime', this.where)
  145. break;
  146. case "seven":
  147. this.where.start =
  148. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  149. 1000 +
  150. 24 * 60 * 60 -
  151. 7 * 3600 * 24;
  152. this.where.stop =
  153. new Date(Date.parse(year + "/" + month + "/" + day)).getTime() /
  154. 1000 +
  155. 24 * 60 * 60 -
  156. 1;
  157. this.title = "七日";
  158. this.$emit('changeTime', this.where)
  159. break;
  160. // #ifdef MP
  161. case "date":
  162. let star = new Date(self.before).getTime() / 1000
  163. let stop = new Date(self.after).getTime() / 1000
  164. self.where.start = star
  165. self.where.stop = stop
  166. // Promise.all([self.getList()]);
  167. this.$emit('changeTime', this.where)
  168. break;
  169. // #endif
  170. }
  171. },
  172. }
  173. }
  174. </script>
  175. <style lang="scss" scoped>
  176. .list {
  177. display: flex;
  178. justify-content: space-between;
  179. padding: 24rpx 30rpx;
  180. background-color: #fff;
  181. color: #666666;
  182. font-size: 26rpx;
  183. .times {
  184. display: flex;
  185. .item {
  186. margin-right: 20rpx;
  187. background: #F5F5F5;
  188. padding: 10rpx 20rpx;
  189. border-radius: 30rpx;
  190. }
  191. .item.on {
  192. color: var(--view-theme);
  193. background-color: var(--view-minorColor);
  194. }
  195. }
  196. .item{
  197. padding: 10rpx 0rpx;
  198. }
  199. }
  200. .aaa {
  201. padding-left: 10rpx;
  202. font-size: 20rpx !important;
  203. }
  204. </style>