| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- // components/calendarWeek/index.js
- var utils = require('../../../utils/util.js');
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- },
- /**
- * 组件的初始数据
- */
- data: {
- startTime:'',
- endTime:'',
- flag: true,
- index: 0,
- valtime: 8,
- dateList: [], // 日历数据数组
- currentIndex: 0, // 日历轮播正处在哪个索引位置
- dateCurrent: new Date(), // 正选择的当前日期
- dateCurrentStr: '', // 正选择日期的 id
- dateMonth: '1月', // 正显示的月份
- dateListArray: [ '一', '二', '三', '四', '五', '六','日'],
- // dateListArray: ['日', '一', '二', '三', '四', '五', '六'],
- },
- ready: function () {
- var that = this;
- var today = utils.formatTime2(new Date());
- this.setData({
- today,
- });
- var d = new Date();
- this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周
- },
- /**
- * 组件的方法列表
- */
- methods: {
- toLeft: function (e) {
- var index = this.data.currentIndex;
- console.log(index,'currentIndexcurrentIndex')
- if(index==0){
- index=7
- }else{
- index==index--;
- }
- this.setData({
- currentIndex: index
- })
- // if (index > 0) {
- // this.setData({
- // currentIndex: index - 1
- // })
- // } else {
- // this.setData({
- // currentIndex: 2
- // })
- // }
- },
- toRight: function (e) {
- var index = this.data.currentIndex;
- console.log(index,'currentIndexcurrentIndex')
- if(index==7){
- index=0
- }else{
- index==index++;
- }
- this.setData({
- currentIndex: index
- })
- },
- tiaotime(e) {
- let data = e.detail.value.split("-")
- var d = new Date(Number(data[0]), Number(data[1]) - 1, Number(data[2]));
- this.setData({
- dateList: []
- })
- this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周
- },
- onShow: function (e) {
- wx.getSystemInfo({
- success: (res) => {
- this.setData({
- windowHeight: res.windowHeight,
- windowWidth: res.windowWidth,
- });
- }
- });
- },
- // 日历组件部分
- // ----------------------------
- initDate(left, right, d) {
- var month = utils.addZero(d.getMonth() + 1),
- year = utils.addZero(d.getFullYear()),
- day = utils.addZero(d.getDate());
- for (var i = left; i <= right; i++) {
- this.updateDate(utils.DateAddDay(d, i * 6));//多少天之后的
- }
-
- this.setData({
- currentIndex: 5,
- dateCurrent: d,
- dateCurrentStr: d.getFullYear() + '-' + month + '-' + day,
- dateMonth: month + '月',
- dateYear: year + '年',
- dateCurrentStr: year + "-" + month + "-" + day,
- });
- },
- // 获取这周从周日到周六的日期
- calculateDate(_date) {
- var first = utils.FirstDayInThisWeek(_date);
- var d = {
- 'month': first.getMonth() + 1,
- 'days': [],
- };
- for (var i = 0; i < 7; i++) {
- var dd = utils.DateAddDay(first, i);
- var day = utils.addZero(dd.getDate()),
- year = utils.addZero(dd.getFullYear()),
- month = utils.addZero(dd.getMonth() + 1);
- d.days.push({
- 'day': day,
- 'id': dd.getFullYear() + '-' + month + '-' + day,
- 'ids': dd.getFullYear() + ',' + month + ',' + day,
- });
- }
- return d;
- },
- // 更新日期数组数据
- updateDate(_date, atBefore) {
- var week = this.calculateDate(_date);
- if (atBefore) {
- this.setData({
- dateList: [week].concat(this.data.dateList),
- });
- } else {
- this.setData({
- dateList: this.data.dateList.concat(week),
- });
- }
- },
- // 日历组件轮播切换
- dateSwiperChange(e) {
- const lastIndex = this.data.currentIndex
- , currentIndex = e.detail.current
- , dateList = this.data.dateList
- , dateListlen = this.data.dateList.length
- let flag = false
- , key = 'lastMonth' //判断是左划还是右
- // console.log(lastIndex , currentIndex)
- if (lastIndex > currentIndex) {
- console.log('左')
- lastIndex === 7 && currentIndex === 0
- ? flag = true
- : null
- } else {
- lastIndex === 0 && currentIndex === 7
- ? null
- : flag = true
- }
- if (flag) {
- key = 'nextMonth'
- }
- if (key == 'lastMonth') {
- let nowindex = currentIndex - 3;
- let uptime = currentIndex - 4;
- let a = 0;
- if (nowindex < 0) { nowindex = nowindex + 8; a = 0 }
- if (uptime < 0) { uptime = uptime + 8 }
- let seltime = dateList[nowindex].days[a].ids
- var week = this.calculateDate(utils.formatTime(utils.DateAddDay(seltime, -1)));
- dateList[uptime] = week
- this.setData({
- dateList: dateList
- })
- }
- if (key == 'nextMonth') {
- let indexne = 0
- let aa = 0
- if (currentIndex == 7) { //要更新的下标
- indexne = 0
- aa = 1
- } else {
- indexne = currentIndex + 1
- aa = currentIndex + 2
- }
- if (aa == 8) {
- aa = 0
- }
- //aa 要更新的数组下标 datanex要往后查询一周的日期
- let datanex = dateList[indexne].days[6].ids
- //获取下一周的
- var week = this.calculateDate(utils.formatTime(utils.DateAddDay(datanex, 1)));
- dateList[aa] = week
-
- this.setData({
- dateList: dateList
- })
- }
- var d = this.data.dateList[currentIndex];
- let da = new Date(d.days[0].ids)
- this.setData({
- currentIndex: currentIndex,
- dateMonth: d.month + '月',
- dateYear: da.getFullYear()+"年",
- startTime:d.days[0].id,
- endTime:d.days[6].id,
- })
- this.triggerEvent("myTime",{
- mystartTime:d.days[0].id,
- myendTime:d.days[6].id,
- },{})
-
-
- },
- // 获得日期字符串
- getDateStr: function (arg) {
- if (utils.type(arg) == 'array') {
- return arr[0] + '-' + arr[1] + '-' + arr[2] + ' 00:00:00';
- } else if (utils.type(arg) == 'date') {
- return arg.getFullYear() + '-' + (arg.getMonth() + 1) + '-' + arg.getDate() + ' 00:00:00';
- } else if (utils.type(arg) == 'object') {
- return arg.year + '-' + arg.month + '-' + arg.day + ' 00:00:00';
- }
- },
- // 点击日历某日
- chooseDate(e) {
- var str = e.currentTarget.id;
- console.log(str,'111');
- this.setData({ dateCurrentStr: str });
- this.triggerEvent('mydata', { data: str })
- },
- }
- })
|