index.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. // components/calendarWeek/index.js
  2. var utils = require('../../../utils/util.js');
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. properties: {
  8. },
  9. /**
  10. * 组件的初始数据
  11. */
  12. data: {
  13. startTime:'',
  14. endTime:'',
  15. flag: true,
  16. index: 0,
  17. valtime: 8,
  18. dateList: [], // 日历数据数组
  19. currentIndex: 0, // 日历轮播正处在哪个索引位置
  20. dateCurrent: new Date(), // 正选择的当前日期
  21. dateCurrentStr: '', // 正选择日期的 id
  22. dateMonth: '1月', // 正显示的月份
  23. dateListArray: [ '一', '二', '三', '四', '五', '六','日'],
  24. // dateListArray: ['日', '一', '二', '三', '四', '五', '六'],
  25. },
  26. ready: function () {
  27. var that = this;
  28. var today = utils.formatTime2(new Date());
  29. this.setData({
  30. today,
  31. });
  32. var d = new Date();
  33. this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周
  34. },
  35. /**
  36. * 组件的方法列表
  37. */
  38. methods: {
  39. toLeft: function (e) {
  40. var index = this.data.currentIndex;
  41. console.log(index,'currentIndexcurrentIndex')
  42. if(index==0){
  43. index=7
  44. }else{
  45. index==index--;
  46. }
  47. this.setData({
  48. currentIndex: index
  49. })
  50. // if (index > 0) {
  51. // this.setData({
  52. // currentIndex: index - 1
  53. // })
  54. // } else {
  55. // this.setData({
  56. // currentIndex: 2
  57. // })
  58. // }
  59. },
  60. toRight: function (e) {
  61. var index = this.data.currentIndex;
  62. console.log(index,'currentIndexcurrentIndex')
  63. if(index==7){
  64. index=0
  65. }else{
  66. index==index++;
  67. }
  68. this.setData({
  69. currentIndex: index
  70. })
  71. },
  72. tiaotime(e) {
  73. let data = e.detail.value.split("-")
  74. var d = new Date(Number(data[0]), Number(data[1]) - 1, Number(data[2]));
  75. this.setData({
  76. dateList: []
  77. })
  78. this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周
  79. },
  80. onShow: function (e) {
  81. wx.getSystemInfo({
  82. success: (res) => {
  83. this.setData({
  84. windowHeight: res.windowHeight,
  85. windowWidth: res.windowWidth,
  86. });
  87. }
  88. });
  89. },
  90. // 日历组件部分
  91. // ----------------------------
  92. initDate(left, right, d) {
  93. var month = utils.addZero(d.getMonth() + 1),
  94. year = utils.addZero(d.getFullYear()),
  95. day = utils.addZero(d.getDate());
  96. for (var i = left; i <= right; i++) {
  97. this.updateDate(utils.DateAddDay(d, i * 6));//多少天之后的
  98. }
  99. this.setData({
  100. currentIndex: 5,
  101. dateCurrent: d,
  102. dateCurrentStr: d.getFullYear() + '-' + month + '-' + day,
  103. dateMonth: month + '月',
  104. dateYear: year + '年',
  105. dateCurrentStr: year + "-" + month + "-" + day,
  106. });
  107. },
  108. // 获取这周从周日到周六的日期
  109. calculateDate(_date) {
  110. var first = utils.FirstDayInThisWeek(_date);
  111. var d = {
  112. 'month': first.getMonth() + 1,
  113. 'days': [],
  114. };
  115. for (var i = 0; i < 7; i++) {
  116. var dd = utils.DateAddDay(first, i);
  117. var day = utils.addZero(dd.getDate()),
  118. year = utils.addZero(dd.getFullYear()),
  119. month = utils.addZero(dd.getMonth() + 1);
  120. d.days.push({
  121. 'day': day,
  122. 'id': dd.getFullYear() + '-' + month + '-' + day,
  123. 'ids': dd.getFullYear() + ',' + month + ',' + day,
  124. });
  125. }
  126. return d;
  127. },
  128. // 更新日期数组数据
  129. updateDate(_date, atBefore) {
  130. var week = this.calculateDate(_date);
  131. if (atBefore) {
  132. this.setData({
  133. dateList: [week].concat(this.data.dateList),
  134. });
  135. } else {
  136. this.setData({
  137. dateList: this.data.dateList.concat(week),
  138. });
  139. }
  140. },
  141. // 日历组件轮播切换
  142. dateSwiperChange(e) {
  143. const lastIndex = this.data.currentIndex
  144. , currentIndex = e.detail.current
  145. , dateList = this.data.dateList
  146. , dateListlen = this.data.dateList.length
  147. let flag = false
  148. , key = 'lastMonth' //判断是左划还是右
  149. // console.log(lastIndex , currentIndex)
  150. if (lastIndex > currentIndex) {
  151. console.log('左')
  152. lastIndex === 7 && currentIndex === 0
  153. ? flag = true
  154. : null
  155. } else {
  156. lastIndex === 0 && currentIndex === 7
  157. ? null
  158. : flag = true
  159. }
  160. if (flag) {
  161. key = 'nextMonth'
  162. }
  163. if (key == 'lastMonth') {
  164. let nowindex = currentIndex - 3;
  165. let uptime = currentIndex - 4;
  166. let a = 0;
  167. if (nowindex < 0) { nowindex = nowindex + 8; a = 0 }
  168. if (uptime < 0) { uptime = uptime + 8 }
  169. let seltime = dateList[nowindex].days[a].ids
  170. var week = this.calculateDate(utils.formatTime(utils.DateAddDay(seltime, -1)));
  171. dateList[uptime] = week
  172. this.setData({
  173. dateList: dateList
  174. })
  175. }
  176. if (key == 'nextMonth') {
  177. let indexne = 0
  178. let aa = 0
  179. if (currentIndex == 7) { //要更新的下标
  180. indexne = 0
  181. aa = 1
  182. } else {
  183. indexne = currentIndex + 1
  184. aa = currentIndex + 2
  185. }
  186. if (aa == 8) {
  187. aa = 0
  188. }
  189. //aa 要更新的数组下标 datanex要往后查询一周的日期
  190. let datanex = dateList[indexne].days[6].ids
  191. //获取下一周的
  192. var week = this.calculateDate(utils.formatTime(utils.DateAddDay(datanex, 1)));
  193. dateList[aa] = week
  194. this.setData({
  195. dateList: dateList
  196. })
  197. }
  198. var d = this.data.dateList[currentIndex];
  199. let da = new Date(d.days[0].ids)
  200. this.setData({
  201. currentIndex: currentIndex,
  202. dateMonth: d.month + '月',
  203. dateYear: da.getFullYear()+"年",
  204. startTime:d.days[0].id,
  205. endTime:d.days[6].id,
  206. })
  207. this.triggerEvent("myTime",{
  208. mystartTime:d.days[0].id,
  209. myendTime:d.days[6].id,
  210. },{})
  211. },
  212. // 获得日期字符串
  213. getDateStr: function (arg) {
  214. if (utils.type(arg) == 'array') {
  215. return arr[0] + '-' + arr[1] + '-' + arr[2] + ' 00:00:00';
  216. } else if (utils.type(arg) == 'date') {
  217. return arg.getFullYear() + '-' + (arg.getMonth() + 1) + '-' + arg.getDate() + ' 00:00:00';
  218. } else if (utils.type(arg) == 'object') {
  219. return arg.year + '-' + arg.month + '-' + arg.day + ' 00:00:00';
  220. }
  221. },
  222. // 点击日历某日
  223. chooseDate(e) {
  224. var str = e.currentTarget.id;
  225. console.log(str,'111');
  226. this.setData({ dateCurrentStr: str });
  227. this.triggerEvent('mydata', { data: str })
  228. },
  229. }
  230. })