基于vue的日历组件,vue做一个日历标记节假日

  基于vue的日历组件,vue做一个日历标记节假日

  这篇文章主要介绍了如何用某视频剪辑软件设计一个日历表,帮助大家更好的理解和学习某视频剪辑软件框架,感兴趣的朋友可以了解下

  日历的功能,我们会经常用到,且逻辑比较复杂,小算法较多,花了半天时间写了个,特此详记。

  先贴图

  功能阐述:返回本月不多说,设置工作日和节假日是为了公司制度需要,后台会有假日表来记录。

  为了适应于某视频剪辑软件框架,很多框架的方法用不上,例如添加类别及removeClass所以可能某些地方做的比较繁琐。

  模板

  差异

  div class=date

  !-年份月份-

  div class=month

  I class= El-icon-arrow-left @ click= pick pre(当前年,当前月)/i

  我{{当前年份}}年{{当前月}}月/i

  I class= El-icon-arrow-right @ click=选取下一个(当前年,当前月)/i

  /div

  !-星期-

  ul class=工作日

  里一/李

  里二/李

  里三/李

  里四/李

  里五/李

  李style=color:#0A0A0A 六/李

  李style=color:#0A0A0A 日/李

  /ul

  !-日期-

  div class=bodyDiv

  ul class=days v-for=(值,索引1)以天数表示

  li @click=pick(day,index index1*7) v-for=(day,index)in value :class=[{ ban :isBan[index index 1 * 7]},{xiu:isXiu[index index1*7]}]

  !-本月-

  span v-if=day.getMonth() 1!=当前月份 class= other-month :class= { selected :is selected[index index 1 * 7]} { { day。getdate()} }/span

  span v-else:class= { selected :is selected[index index 1 * 7]}

  !-今天-

  span v-if=day.getFullYear()==新日期()。getFullYear() day.getMonth()==新日期()。getMonth() day.getDate()==新日期()。getDate() class= active { day。getDate()} }/span

  span v-else { { day。getdate()} }/span

  /span

  /李

  /ul

  /div

  HR style= height:2px;边框:无;border-top:2px dotted # 185598;/

  /div

  div class=button

  divel-button type= primary size= large @ click= return now()返回本月/El-按钮/div

   divel-button type= primary size= large @ click= setRestOrWork( R )设置为节假日/El-按钮/div

  divel-button type= primary size= large @ click= setRestOrWork( W )设置为工作日/El-按钮/div

  divel-button type= primary size= large @ click= cancel()取消/El-按钮/div

  /div

  /div

  /模板

  脚本

  从导入{ calendarMsgService } ./CalendarMsgService

  导出默认值{

  姓名:日期,

  data () {

  返回{

  当前年份:1970年,//年份

  当前月:1,//月份

  当前日期:1,//日期

  当前周:1,//星期

  第一周:1,

  天数:[],

  日苏尔:[],

  参数:{

  选择日期:,

  类型:""

  },

  isSelected:[],

  国际标准书号:[],

  isXiu:[],

  休息日:{

  年份:,

  月份:,

  日期:,

  resttype: ,

  休息日期:""

  },

  restDaysList:[],

  banList:[],

  秀才:[],

  选择索引:""

  }

  },

  已创建(){

  this.initData(空)

  },

  方法:{

  //格式化日期

  格式日期(年、月、日){

  常数y=年

  让m=月

  if (m 10) m=`0${m}

  设d=天

  if (d 10) d=`0${d}

  返回" ${y}-${m}-${d} "

  },

  initData (cur) {

  调试器;

  let date=

  如果(当前){

  日期=新日期(当前)

  }否则{

  日期=新日期()

  }

  这个。当前日期=日期。getdate()//今日日期几号

  这个。当前年份=日期。获取整年()//当前年份

  这个。当月=日期。getmonth()1//当前月份

  这个。当前周=日期。getday()//1.6,0 //今天是星期几

  //当前月的第一天是星期几

  约会。设置日期(1);

  这个。第一周=日期。getday();

  if (this.firstWeek===0) {

  这个。第一周=7;

  }

  const str=this。格式化日期(this。当前年份,this.currentMonth,1)//今日日期年-月-日

  this.days.length=0

  //今天是周日,放在第一行第七个位置,前面6个这里默认显示一周,如果需要显示一个月,则第二个循环为我=42-这是第一周

  对于(让我=这个。第一周-1;I=0;i -=1) {

  常数d=新日期(str)

  d.setDate(d.getDate() - i)

  本。天。推(四)

  }

  //处理一号是星期天为七的情况,为七天就直接放在代苏尔里

  if (this.days.length % 7===0){

  这个。天数ul。推(这个。天);

  这个。天数=[];

  }

  对于(设I=1;I=42-这个。第一周;i=1) {

  常数d=新日期(str);

  d。设置日期(d . getdate()I);

  这个。几天。推(d);//一个天就是一行七天代苏尔就是个数组,里面有六个天就是六行42天

  if (this.days.length % 7===0){

  这个。天数ul。推(这个。天);

  这个。天数=[];//清空重新存放天数

  }

  }

  //调后台接口,获取当前年,当前月的班休时间

  calendarmsgservice。getrestdays({当前年份:this。当年,当月:这个。当前月份}).然后(res={

  if (res.code===0){

  调试器;

  这个。休息日列表=休息内容;

  这个。交易结果(这个。今年,这个。当月);

  }

  })

  },

  setRestOrWork(类型){

  if (this.onlySelect()) {

  这个。参数。type=类型;

  调试器;

  calendarmsgservice。addrestdays(这个。params).然后(res={

  if (res.code===0) {

  这个消息({

  消息: 设置成功!,

  类型:"成功"

  })

  if (type==R){

  这个。是秀[这个。选择素指数]=真;

  }

  if (type==W){

  这个。isban[这个。选择素指数]=真;

  }

  }否则{

  这个消息({

  消息:res.msg,

  类型:"错误"

  })

  }

  这个。参数。selectday=

  这个。参数。type=

  })

  }

  },

  取消(){

  if (this.onlySelect()) {

  calendarmsgservice。取消预订(这。params).然后(res={

  if (res.code===0) {

  这个消息({

  消息: 取消成功!,

  类型:"成功"

  })

  这个。是秀[这个。选择素指数]=假;

  这个。isban[这个。选择素指数]=假;

  }否则{

  这个消息({

  消息:res.msg,

  类型:"错误"

  })

  }

  这个。参数。selectday=

  这个。参数。type=

  })

  }

  },

  //上一個月传入当前年份和月份

  pickPre(年,月){

  这个。天数ul=[];

  这个。被选中=[];

  常数d=新日期(this.formatDate(年,月,1))

  d。设置日期(0)

  这个。initdata(这个。formatdate(d . get full year(),d.getMonth() 1,1))

  calendarmsgservice。getrestdays({当前年份:this。当年,当月:这个。当前月份}).然后(res={

  if (res.code===0){

  调试器;

  这个。休息日列表=休息内容;

  这个。交易结果(这个。今年,这个。当月);

  }

  })

  },

  //下一個月传入当前年份和月份

  选择下一个(年,月){

  这个。天数ul=[];

  这个。被选中=[];

  常数d=新日期(this.formatDate(年,月,1))

  设置日期(42)

  这个。initdata(这个。格式日期(d . get full year()、d.getMonth() 1,1));

  //当点击下个月的时候,才会去拿该月的休息或者工作日的日期,而不是一下子都拿出来

  calendarmsgservice。getrestdays({当前年份:this。当年,当月:这个。当前月份}).然后(res={

  if (res.code===0){

  调试器;

  这个。休息日列表=休息内容;

  这个。交易结果(这个。今年,这个。当月);

  }

  })

  },

  //算法

  dealResult(currentYear,currentMonth){

  调试器;

  这个。banlist=[];//把当前月的工作日放在一起

  这个。xiu list=[];//把当前月的休息日放在一起

  这个。isban=[];//设置标识,来确定用什么样的背景图

  这个。是xiu=[];

  设周吉=新日期(this.formatDate(currentYear,currentMonth,1)).getDay();//被查找的月份一号是星期几

  如果(周吉===0){ //0就是星期天

  周吉=7;

  }

  对于(设I=0;这是。休息日列表。长度;i ){

  这个。休息日=这个。休息日列表[I];

  如果(这个。休息日。rest type=== W ){

  设ban=this.restDays.day - 1(周吉-1);//重要算法,算出班日,在几号位

  这个。banlist。推(禁);

  }

  如果(这个。休息日。rest type=== R ){

  设xiu=this.restDays.day - 1(周吉-1);//重要算法,算出休息日,在几号位

  这个。秀榜。推(修);

  }

  }

  对于(设m=0;m 42m ) { //banlist里面放置的都是在日历上处于几号位,而不是工作日的日期,

  让nothave=true//所以得把这些位置号拎出来,给它们于不同的样式

  对于(设k=0;k这个。banlist。长度;k ) {

  if (m==this.banList[k]) {

  这个。isban。推(真);

  nothave=false

  打破;

  }

  }

  如果(没有){

  这个。isban。推(假);

  }

  }

  对于(设n=0;n42n ) { //同上,来处理休息日

  让nothave=true

  对于(设k=0;k这个。秀榜。长度;k ) {

  if (n==this.xiuList[k]) {

  this.isXiu.push(真);

  nothave=false

  打破;

  }

  }

  如果(没有){

  这个。是秀。推(假);

  }

  }

  },

  returnNow(){

  这个。天数ul=[];

  这个。initdata(null);

  },

  //当前选择日期

  选择(日期,索引){

  调试器;

  这个。选择指数=指数;

  这个。被选中=[];

  这个。参数。selectday=this。格式日期(日期。get full year()、date.getMonth() 1、date。getdate());

  对于(设I=0;i 42i ) {

  if (index==i) {

  这个。被选中。推(真);

  继续;

  }

  这个。被选中。推(假);

  }

  },

  onlySelect(){

  调试器;

  如果(这个。参数。selectday=== ){

  这个消息({

  消息: 请选择日期,

  类型:"警告"

  })

  返回错误的

  }

  返回真实的

  }

  },

  }

  /脚本

  样式范围。日期{

  高度:150像素

  宽度:1000像素

  颜色:# 333;

  浮动:左;

  }。按钮{

  浮动:左;

  左边距:110像素

  边距-顶部:120像素

  }。按钮分区{

  边距-顶部:70px

  }。月份{

  字体大小:24px

  文本对齐:居中;

  边距-顶部:20px

  }。工作日{

  背景色:# 20A0FF

  不透明度:0.6;

  显示器:flex

  字体大小:28px

  边距-顶部:20px

  }。天数{

  显示器:flex

  }

  李{

  flex:1;

  字体大小:35px

  宽度:50px

  列表样式类型:无;

  文本对齐:居中;

  边距-顶部:5px

  行高:60px

  光标:指针;

  }。已选择{

  显示:内嵌-块;

  宽度:60px

  高度:60px

  颜色:# fff

  边界半径:70%;

  背景色:# 1e 90 ff

  }。班

  背景-图片:网址(图片/ban。jpg);

  }。秀{

  背景-图像:url(./图片/秀。jpg);

  背景-重复:不重复;

  }。活动{

  显示:内嵌-块;

  宽度:60px

  高度:60px

  颜色:# fff

  边界半径:50%;

  背景色:# 324057;

  }

  我{

  右边距:30px

  光标:指针

  }。其他月{

  颜色:# EEC591

  }

  /风格

  以上就是用某视频剪辑软件设计一个日历表的详细内容,更多关于某视频剪辑软件日历的资料请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: