<template><!-- 打卡日历页面 --><view class='all'><view class="bar"><!-- 上一个月 --><view class="previous" @click="handleCalendar(0)"><button class="barbtn">上一月</button></view><!-- 显示年月 --><view class="date">{{cur_year || "--"}} 年 {{cur_month || "--"}} 月</view><!-- 下一个月 --><view class="next" @click="handleCalendar(1)"><button class="barbtn">下一月</button></view></view><!-- 显示星期 --><view class="week"><view class="week_ri" v-for="(item,index) in weeks_ch" :key="index">{{item}}</view></view><view  class="myDateTable"><view v-for="(item,j) in days" :key="j" class='dateCell'><view v-if="item.date==undefined || item.date == null" class='cell'><text :decode="true">&nbsp;&nbsp;</text></view><view v-else @click="clickSignUp(item.date)"><!-- 已订餐到日期 --><view v-if="item.isSign == 5" class='cell yellow' style="background: #0000a8;color: #ffffff;"><text>{{item.date}}</text></view><view class="cell white bg-red" style="background: #0000e7;color: #ffffff;" v-else-if="item.isSign == 2"><text>{{item.date}}</text></view><!-- 点击的日期 --><view class="cell white bg-red" style="background: #ffaa7f;color: #ffffff;" v-else-if="item.isSign == 3"><text>{{item.date}}</text></view><!-- 当前日期之后 --><view class="whiteColor cell" v-else><text>{{item.date}}</text></view></view></view></view></view>
</template><script>export default {data() {return {days: [],//日历SignUp: [{'type':1,t:1},{'type':2,t:10}],//已经订餐cur_year: 0, //当前选的年cur_month: 0, //当前选的月today: parseInt(new Date().getDate()), //今天toMonth: parseInt(new Date().getMonth() + 1), //本月toYear: parseInt(new Date().getFullYear()), //本年weeks_ch: ['日', '一', '二', '三', '四', '五', '六'],};},props: {//年sendYear: {type: Number,default: new Date().getFullYear()},//月sendMonth: {type: Number,default: new Date().getMonth() + 1},},created() {this.cur_year = this.sendYear;//年this.cur_month = this.sendMonth;//月this.calculateEmptyGrids(this.cur_year, this.cur_month);this.calculateDays(this.cur_year, this.cur_month);//网络请求this.onJudgeSign(this.SignUp);},methods: {// 获取当月共多少天getThisMonthDays(year, month) {return new Date(year, month, 0).getDate()},// 获取当月第一天星期几getFirstDayOfWeek(year, month) {return new Date(Date.UTC(year, month - 1, 1)).getDay();},// 计算当月1号前空了几个格子,把它填充在days数组的前面calculateEmptyGrids(year, month) {//计算每个月时要清零this.days = [];const firstDayOfWeek = this.getFirstDayOfWeek(year, month);if (firstDayOfWeek > 0) {for (let i = 0; i < firstDayOfWeek; i++) {var obj = {date: null,isSign: false}this.days.push(obj);}}},// 绘制当月天数占的格子,并把它放到days数组中calculateDays(year, month) {const thisMonthDays = this.getThisMonthDays(year, month);for (let i = 1; i <= thisMonthDays; i++) {var obj = {date: i,isSign: false}this.days.push(obj);}//console.log(this.days);},//匹配判断当月与当月哪些日子订餐onJudgeSign(date) {var signs = date;var daysArr = this.days;//日期相同,订过餐for(var i=0;i<signs.length;i++){for (var j=0; j<daysArr.length;j++) {if (daysArr[j].date == signs[i]['t']) {if(signs[i]['type'] == 1){daysArr[j].isSign = 2;//订一餐}else{daysArr[j].isSign = 5;//订两餐}}}}this.days = daysArr;},// 切换控制年月,上一个月,下一个月handleCalendar(type) {const cur_year = parseInt(this.cur_year);const cur_month = parseInt(this.cur_month);var newMonth;var newYear = cur_year;if (type === 0) { //上个月newMonth = cur_month - 1;if (newMonth < 1) {newYear = cur_year - 1;newMonth = 12;}} else {newMonth = cur_month + 1;if (newMonth > 12) {newYear = cur_year + 1;newMonth = 1;}}this.calculateEmptyGrids(newYear, newMonth);this.calculateDays(newYear, newMonth);//网络请求this.SignUp =[{'type':1,t:3},{'type':2,t:11}],//已经订餐this.onJudgeSign(this.SignUp);this.cur_year = newYear;this.cur_month = newMonth;// this.SignUp = []; //清空this.$emit('dateChange',this.cur_year+"-"+this.cur_month); //传给调用模板页面去拿新数据              },//点击日期clickSignUp(t){// console.log(this.cur_year)//年// console.log(this.cur_month)//月var t = t;//点击的天var signs = this.SignUp;var daysArr = this.days;//日期相同,订过餐,点击的日期for(var i=0;i<signs.length;i++){for (var j=0; j<daysArr.length;j++) {if (daysArr[j].date == signs[i]['t']) {if(signs[i]['type'] == 1){daysArr[j].isSign = 2;//订一餐}else{daysArr[j].isSign = 5;//订两餐}}if(t == daysArr[j].date){daysArr[j].isSign = 3}if(daysArr[j].isSign != 2 && t != daysArr[j].date && daysArr[j].isSign != 5){daysArr[j].isSign = 1;}}}this.days = daysArr;}}}
</script><style>.all .bar {display: flex;flex-direction: row;justify-content: space-between;padding: 10rpx;}.bar .barbtn {height: 30px;line-height: 30px;font-size: 12px;}/* 星期 */.all .week {display: flex;/* flex-direction: row; *//* justify-content: space-between; */padding: 20rpx;border-radius: 10px;background-color: #fff;width: 90%;margin-left: 2%;}.week_ri{margin-left: 19rpx;padding: 0 48rpx 0 0;}.myDateTable {margin: 2.5vw;border-radius: 10px;background: #fff;}.myDateTable .dateCell {width: 11vw;padding: 1vw;display: inline-block;text-align: center;font-size: 16px;}.dateCell .cell {display: flex;border-radius: 50%;height: 9vw;justify-content: center;align-items: center;}.greenColor {color: #01b90b;font-weight: bold;}.bgWhite {background-color: #fff;}.bgGray {background-color: rgba(255, 255, 255, 0.42);}.bgBlue {font-size: 14px;background-color: #4b95e6;}.redColor {color: #ff0000;}.TipArea{word-break:break-all;word-wrap:break-word;font-size: 14px;padding: 10px;}.impTip{display: inline-block;color: #ff0000;}
</style>

uniapp日历原生插件相关推荐

  1. Android uni-app 封装原生插件

    前言 据广大用户的需求,需要把我们anyRTC的SDK,封装到uni-app来使用,并且实现音视频通话.这边文章图文讲解一下怎么封装原生插件,并且在下一章uni-app实现音视频通话. anyRTC开 ...

  2. uniapp 常用原生插件大全(2023年最新)

    文章目录 前言 1.扫码 2.文件选择 3.图片选择 4.图片编辑(涂鸦.贴图.滤镜.裁剪.美颜.文字等) 5.图片压缩 6.图片水印 7.视频压缩.剪辑 8.应用消息通知 6.应用未读角标 7.保活 ...

  3. uniapp ios原生插件开发之component

    文章目录 一.前言 二.扩展component 2.1 组件的生命周期 2.2 插件打包配置 2.3 在 uni-app 中使用组件 2.4 自定义component事件 2.5 自定义compone ...

  4. uniapp ios原生插件引入图片等资源文件方式

    文章目录 一.前言 二.资源文件.bundle的存放位置 三.package.json 配置文件简单说明 resources 四.参考 一.前言 在uniapp官方文档上,对于依赖资源文件处理的提示是 ...

  5. uniapp ios原生插件开发之插件包格式(package.json)

    文章目录 一.前言 二.插件包格式介绍 2.1 package.json 2.2 iOS 插件包配置 plugins integrateType 依赖资源文件 resources embedSwift ...

  6. 【java笔记-006】【uni-app】当前运行的基座不包含原生插件[xxx],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座

    uni-app引入原生插件的步骤如下:https://nativesupport.dcloud.net.cn/NativePlugin/course/android 将制作好的原生安卓插件包 复制到 ...

  7. 六、UniApp 调试自定义原生插件的两种方式

    文章目录 一.前言 二.原生插件的导入 步骤1:指定存放位置 步骤2:插件导入配置 三.自定义基座调试 3.1 制作自定义基座 3.2 编写调试插件的vue页面 3.3 运行到手机 四.生成原生打包资 ...

  8. Uniapp——使用安卓原生插件

    Uniapp--使用安卓原生插件 1. 开发环境 2. 解压SDK压缩包 3. 导入UniPlugin-Hello-AS项目.并切换为project显示 4. 可删除提供的demo文件 5. 新建mo ...

  9. uniapp 调用安卓原生插件 安卓原生又调用了第三方sdk(第三方原生开发的aar怎么转成uni可以使用的aar)

    最近在做一个关于uniapp的项目,遇到一个需求.有一个原生开发的aar的原生插件,不是插件市场的,开发说明原生开发的插件不可以直接提供给uniapp使用,需要按照uniapp原生插件开发文档重新制作 ...

最新文章

  1. 用类模拟C风格的赋值+返回值
  2. 不要对对象进行粗暴的等号赋值
  3. C# SqlBulkCopy数据批量入库
  4. metamask中的import account的代码实现
  5. android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
  6. Codeforces Round #149 (Div. 2)【AK】
  7. Android Activity和Fragment的生命周期图
  8. php实现无限级分类(递归方法)
  9. shell 查看空行与删除空行
  10. HFSS阵列天线仿真
  11. SG函数(hdu1847)
  12. 【POCKET 51】用 pocket 51学51单片机 :使用pocket 51播放音乐
  13. 计算机四级网络工程师知识点(非常全面!)
  14. 51单片机8位数码管显示学号变化
  15. 供应链管理-降低产品复杂度
  16. viso 画背景框_officevisio怎么设置背景图和图纸...
  17. 阿里云服务器ECS和VPS主机的区别在哪里
  18. 奥威软件大数据bi_2018中国大数据BI领域影响力企业 奥威实至名归
  19. vuetify calendar实现日历考勤
  20. 微软 Surface Laptop 系统恢复

热门文章

  1. sqlite多行插入_sqlite3-批量insert插入多条信息-提高效率的办法 | 学步园
  2. 从零开始把echarts接入到unity中使用
  3. 【四足机器人--关节初始化时足端位置(速度、加速度)轨迹规划】(4.2)JPosInitializer(B样条曲线计算脚的摆动轨迹)代码解析
  4. 网站设计流程是什么?这三方面要了解
  5. 你还不知道中国有多少人口?
  6. Python实现K折交叉验证
  7. Android 开发制作系统签名
  8. 《Java核心技术卷1》
  9. 基于scapy uds协议包实践
  10. 统信UOS牵手深信服 共建云生态新格局