year_Scheduling.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <!-- 年视图 -->
  2. <template style="background-color:#FFF ;">
  3. <view style="width: 100%;height: 100%;background-color:#FFF ;">
  4. <view style="height: 40rpx;"></view>
  5. <view style="margin: 0 40rpx ;">
  6. <view style="font-size: 50rpx;font-weight: 500;margin-bottom: 30rpx;display: flex;justify-content: space-around;">
  7. <u-icon name="arrow-left" @click="reduce"></u-icon>
  8. <text>{{year}}年</text>
  9. <u-icon name="arrow-right" @click="plus"></u-icon>
  10. </view>
  11. <!-- 月 -->
  12. <view v-if="load" class="flex justify-center align-center" style="height: 80vh;">
  13. <u-loading mode="circle" size="50"></u-loading>
  14. </view>
  15. <view v-else>
  16. <u-grid :col="3" :border="false" align="center">
  17. <u-grid-item v-for="item,index in time" :key="index" @click="jumpMonth(index)">
  18. <view style="font-size: 40rpx;width: 100%;">{{item.title}}</view>
  19. <view style="height: 280rpx;">
  20. <u-grid :col="7" style="font-size: 20rpx;" :border="false">
  21. <u-grid-item>日</u-grid-item>
  22. <u-grid-item>一</u-grid-item>
  23. <u-grid-item>二</u-grid-item>
  24. <u-grid-item>三</u-grid-item>
  25. <u-grid-item>四</u-grid-item>
  26. <u-grid-item>五</u-grid-item>
  27. <u-grid-item>六</u-grid-item>
  28. <u-grid-item v-for="mitem,mindex in item.month" :key="mindex">{{mitem.text}}</u-grid-item>
  29. </u-grid>
  30. </view>
  31. </u-grid-item>
  32. </u-grid>
  33. </view>
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. export default {
  39. onLoad() {
  40. this.load = true
  41. this.getNowTime()
  42. this.setWeek()
  43. this.$nextTick(function() {
  44. this.getweek()
  45. this.load = false
  46. })
  47. },
  48. data() {
  49. return {
  50. load: true, //加载列表展示
  51. year: 0,
  52. nowYear:0,
  53. month: 0,
  54. time: [{
  55. title: '',
  56. month: []
  57. },
  58. {
  59. title: '',
  60. month: []
  61. },
  62. {
  63. title: '',
  64. month: []
  65. },
  66. {
  67. title: '',
  68. month: []
  69. },
  70. {
  71. title: '',
  72. month: []
  73. },
  74. {
  75. title: '',
  76. month: []
  77. },
  78. {
  79. title: '',
  80. month: []
  81. },
  82. {
  83. title: '',
  84. month: []
  85. },
  86. {
  87. title: '',
  88. month: []
  89. },
  90. {
  91. title: '',
  92. month: []
  93. },
  94. {
  95. title: '',
  96. month: []
  97. },
  98. {
  99. title: '',
  100. month: []
  101. },
  102. ],
  103. }
  104. },
  105. methods: {
  106. /**
  107. * 拿到当前年
  108. * */
  109. getNowTime() {
  110. var d = new Date();
  111. this.year = d.getFullYear()
  112. this.nowYear = d.getFullYear()
  113. this.month = d.getMonth() //实际上1月值为0,配合下面下标判断,不加1
  114. },
  115. /**
  116. * 给所有数据加月
  117. * */
  118. setWeek() {
  119. for (let w = 0; w < 12; w++) {
  120. this.time[w].title = (w + 1) + '月'
  121. }
  122. console.log(this.time)
  123. },
  124. /**
  125. * 拿到这年到一月一号的数据
  126. * */
  127. getweek() {
  128. let startYear = this.year; //开始年
  129. let startMonth = 1; //开始月
  130. let startDay = 1; //开始的日
  131. let oneDayTime = 24 * 60 * 60 * 1000; //固定数据 一天的时长
  132. for (let a = 0; a < 12; a++) {
  133. var date = new Date()
  134. date.setFullYear(this.year, a, 1); //今年每个月的一号
  135. for (let b = 0; b < date.getDay(); b++) {
  136. this.time[a].month.push({
  137. text: ""
  138. })
  139. }
  140. date.setFullYear(this.year, a + 1, 0); //查看这个月有几天
  141. // console.log(date.getDate())
  142. for (let c = 0; c < date.getDate(); c++) {
  143. this.time[a].month.push({
  144. text: c + 1
  145. })
  146. }
  147. }
  148. },
  149. /**
  150. * 加年数
  151. * */
  152. plus() {
  153. this.time.map(val => {
  154. val.month.splice(0, val.month.length)
  155. })
  156. this.year++
  157. this.setWeek()
  158. this.getweek()
  159. },
  160. /**
  161. * 减年数
  162. * */
  163. reduce() {
  164. if(this.year==2020){
  165. uni.showToast({
  166. icon:'none',
  167. title:'无法跳转'
  168. })
  169. }else{
  170. this.time.map(val => {
  171. val.month.splice(0, val.month.length)
  172. })
  173. this.year--
  174. this.setWeek()
  175. this.getweek()
  176. }
  177. },
  178. /**
  179. * 跳转
  180. * */
  181. jumpMonth(index) {
  182. console.log(this.year,index)
  183. if (!(index < this.month)) {
  184. let pages = getCurrentPages();
  185. let prevPage = pages[pages.length - 2];
  186. console.log(pages)
  187. console.log(prevPage)
  188. console.log(prevPage.$vm.year)
  189. console.log(prevPage.$vm.month)
  190. prevPage.$vm.year = this.year;
  191. prevPage.$vm.month = index ;
  192. prevPage.$vm.load = true;
  193. uni.navigateBack({
  194. delta: 1
  195. })
  196. } else {
  197. if(this.year>this.nowYear){
  198. let pages = getCurrentPages();
  199. let prevPage = pages[pages.length - 2];
  200. prevPage.$vm.year = this.year;
  201. prevPage.$vm.month = index ;
  202. prevPage.$vm.load = true;
  203. uni.navigateBack({
  204. delta: 1
  205. })
  206. }else{
  207. uni.showToast({
  208. icon:'none',
  209. title:'只能选择'+(this.month+1)+'月以后的日期'+this.year+this.nowYear
  210. })
  211. }
  212. }
  213. }
  214. }
  215. }
  216. </script>
  217. <style>
  218. </style>