微信小程序 选择学期控件 自定义datePicker组件 不复杂

我的时间选择组件在common文件夹里

datePicker组件代码

html:
<view class="date_bg_view">
</view>
<view class="date_content"><view class="date_title"><image src="/image/icon_close_black.png" class="close" bindtap="onClose"></image><text class="date_title_txt">选择时间</text></view><view class="line"></view><!-- 快速选择 --><view class="date_quick_choose"><text class="date_quick_txt">快速选择</text><view class="date_quick_show"><view class="{{item.flag ? 'quick_cell_flag' : 'quick_cell'}}" wx:for="{{dateList}}" wx:key="id" bindtap="handleQuickChoose" data-index="{{index}}">{{item.name}}</view></view></view><!-- 自定义时间 --><view class="date_quick_choose"><text class="date_quick_txt">自定义时间</text><view class="date_picker"><picker mode="date" value="{{startDate}}" start="2015-09-01" end="2999-12-31" bindchange="bindDateChange" data-type="1"  mask-style=" color='#0A3E79'"><view class="picker">{{startDate?startDate:'开始时间'}}</view></picker> <text style="width: 20rpx;height: 1rpx;background-color: #999;"></text><picker mode="date" value="{{endDate}}" start="2015-09-01" end="2999-12-31" bindchange="bindDateChange"  data-type="2"><view class="picker">{{endDate?endDate:'结束时间'}}</view></picker></view></view><button class="sure_btn" bindtap="handleSure"> 确定 </button>
</view>css:
.date_bg_view{position: absolute;top: 0;left: 0;z-index: 10;width: 100%;height: 100%;background-color: #000;opacity: 0.3;  
}
.date_content{  position: fixed;bottom: 0;  left: 0;  z-index: 11;display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;width: 100%;height: 75%;background-color: #fff;      border-top-left-radius: 20rpx;border-top-right-radius: 20rpx;
}
.date_title{z-index: 11;width: 100%;display: flex;justify-content: center;height: 90rpx;line-height: 90rpx;
}
.close{  position: absolute;top: 20rpx;right: 20rpx;width: 30rpx;height: 30rpx;
}
.date_title_txt{font-size: 35rpx;font-weight: bold;
}
.line{margin: 10rpx;width: 100%;  height: 1rpx;background-color: #eee;
}
.date_quick_choose{z-index: 11;padding: 20rpx;width: 100%;  
}
.date_quick_txt{z-index: 12;margin: 20rpx;    font-size: 30rpx;color: #666;  
}
.date_quick_show{z-index: 12;  display: flex;justify-content: flex-start;flex-wrap: wrap;flex-direction: row;align-items: center;  width: 100%;  
}
.quick_cell{z-index: 12;margin: 2%;padding: 5rpx;width: 29%;  height: 60rpx;text-align: center;line-height: 60rpx;      font-size: 28rpx;background-color: #F7F7F7;color: #999;border: 1rpx solid #F7F7F7;border-radius: 10rpx;
}
.quick_cell_flag{z-index: 12;margin: 2%;padding: 5rpx;width: 29%;  height: 60rpx;line-height: 60rpx;font-size: 28rpx;text-align: center;      background-color: #fff;color: #19b2ff;border: 1rpx solid #19b2ff;border-radius: 10rpx;
}
.date_picker{  margin-top: 30rpx;margin-left: 10%;display: flex;    justify-content: space-between;align-items: center;width: 80%;
}
.picker{  padding: 10rpx 40rpx;background-color: #fff;font-size: 30rpx;color: #19b2ff;font-weight: bold;
}
.sure_btn{margin-top: 80rpx;  font-size: 28rpx;width: 90%;    height: 80rpx;text-align: center;line-height: 80rpx;background-color: #19b2ff;color: #fff;  
}js:const util = require('../../utils/util.js');
import {formatDate
} from "../../utils/date";
const app = getApp();
Component({lifetimes: {attached: function () {// 在组件实例进入页面节点树时执行var currentDate = new Date();// 获取当前年份和月份var currentYear = currentDate.getFullYear();// 计算五年内的上学期和下学期var semesters = [];for (var i = 0; i < 5; i++) {var years = currentYear - i;semesters.push({name: years + '下半学年',dates: [years + '-09-01', (years + 1) + '-01-31'],flag: false});     semesters.push({name: years + '上半学年',dates: [years + '-02-01', years + '-06-30'],flag: false});        }// 输出结果this.setData({dateList: semesters})},},properties: {},/*** 组件的初始数据*/data: {dateList: [],startDate: '',endDate: '',currentTime: formatDate(new Date()),oidx: null,},methods: {/*** 快速选择* @param {*} e */handleQuickChoose(e) {let that = this;let oidx = e.currentTarget.dataset.index;let odateList = that.data.dateList// 遍历数组,并修改flag属性为falseodateList.forEach(item => {item.flag = false;});odateList[oidx].flag = truethat.setData({startDate: odateList[oidx].dates[0],endDate: odateList[oidx].dates[1],oidx,dateList: odateList})      },bindDateChange(e) {//console.log('picker发送选择改变,携带值为', e)let that = this;let type = e.currentTarget.dataset.typeif (type == 1) {that.setData({startDate: e.detail.value})} else {that.setData({endDate: e.detail.value})}},/*** 顶部关闭按钮*/onClose() {this.triggerEvent('sync', {show: false})},/*** 确定*/handleSure() {let that = this;if (!that.data.startDate || !that.data.endDate) {util.alert('学期选择不能为空!');return false;}if (that.data.startDate <= that.data.endDate) {that.triggerEvent('sync', {show: false,startDate: that.data.startDate,endDate: that.data.endDate})} else {util.alert('结束时间不能小于开始时间');return false;}}},})json:
{"component": true,"usingComponents": {}
}

调用的页面:

json:
"usingComponents": {"datePicker":"../../common/datePicker/index"
},html:<view class="check-list"><view class="check-list-lef">学期选择</view><view class="check-list-rig"><view class="picker" bind:tap="openDatePicker">{{ startDate && endDate ? (startDate + ' - ' + endDate) : '请选择学期'}}</view><!-- 时间选择组件 bind:sync 子类回传数据的方法--><datePicker wx:if="{{show}}" bind:sync="syncGetDate"></datePicker>                    </view></view>js:
data:{startDate: '',endDate: '',show: false,//显示隐藏时间控件
}openDatePicker(e) {this.setData({hiddenChart: true,show:true})},syncGetDate(e){let that = this;let show = e.detail.show; if(!show){ // 子组件点击了关闭   关闭弹窗that.setData({show:false,startDate: e.detail.startDate,endDate: e.detail.endDate,//hiddenChart: false,})}//console.log("子组件:",e);    //this.getStatisticThemeActivitiesTrend()},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94674.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端生成图片验证码怎么做?

##题记&#xff1a;我们实现一个功能首先想一下我们需要做哪些工作&#xff0c;比如我们需要生成一个随机的图片验证码&#xff0c;我们需要一个就是点击事件获取验证码&#xff0c;通过接口我们去获取图片路径进行渲染就行&#xff0c;这里边还要牵扯一件事情就是获取一个随机…

构建现代应用:Java中的热门架构概览

文章目录 1. 三层架构2. Spring框架3. 微服务架构4. Java EE&#xff08;Enterprise Edition&#xff09;5. 响应式架构6. 大数据架构7. 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;8. 安卓开发架构结论 &#x1f389;欢迎来到Java学习路线专栏~…

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe

grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式&#xff0c;在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务、跨语言通信等领域应用很广&#xff0c;下面介绍grpc在windows10上编译&#xff0c;这里以编译grpc …

es5的实例__proto__(原型链) prototype(原型对象) {constructor:构造函数}

现在看这张图开始变得云里雾里&#xff0c;所以简单回顾一下 prototype 的基本内容&#xff0c;能够基本读懂这张图的脉络。 先介绍一个基本概念&#xff1a; function Person() {}Person.prototype.name KK;let person1 new Person();在上面的例子中&#xff0c; Person …

开发指导—利用CSS动画实现HarmonyOS动效(一)

注&#xff1a;本文内容分享转载自 HarmonyOS Developer 官网文档 一. CSS 语法参考 CSS 是描述 HML 页面结构的样式语言。所有组件均存在系统默认样式&#xff0c;也可在页面 CSS 样式文件中对组件、页面自定义不同的样式。请参考通用样式了解兼容 JS 的类 Web 开发范式支持的…

YOLOv5模型压缩:综述

YOLOv5模型压缩:综述 AbstractIntroduction剪枝基于ln-范数修剪模型Feature map activationBatch normalization scaling factor (BNSF)First-order derivativeMutual informationGranularity of Pruning非结构化剪枝结构化剪枝基于通道的修剪基于滤波器的修剪基于核的剪枝关于…

在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?

相信大家在使用selenium做网页自动化时&#xff0c;会遇到如下这样的一个场景&#xff1a; 在你使用get访问某一个网址时&#xff0c;会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而&#xff0c;很不幸&#xff0c;Alert类处理的结果就是没有结果…

2021年12月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:电话号码 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如: Emergency 911 Alice 97 625 999 Bob 91 12 54 26 在这个例子中,我们不可能拨通Bob的电话,因为Emergency的电话是它的前缀,当拨…

【Spring Boot】通过AOP拦截Spring Boot日志并将其存入数据库

文章目录 前言摘要AOP介绍AOP的实现添加依赖配置数据库连接定义日志实体类定义日志拦截器使用AOP拦截日志并保存到数据库中 代码方法介绍测试用例全文小结 前言 在软件开发中&#xff0c;常常需要记录系统运行时的日志。日志记录有助于排查系统问题、优化系统性能、监控操作行…

git 查看当前分支最近一次提交的commit SHA

获取当前分支最近一次commit SHA &#xff08;长度为40个16进制数字的字符&#xff09;命令如下&#xff1a; git rev-parse HEAD 获取简写&#xff08;短&#xff09; commit SHA git rev-parse --short HEAD

基于HarmonyOS ArkUI实现七夕壁纸轮播

七夕情人节&#xff0c;为了Ta&#xff0c;你打算用什么方式表达爱&#xff1f;是包包、鲜花、美酒、巧克力&#xff0c;还是一封充满爱意的短信&#xff1f;作为程序员&#xff0c;以代码之名&#xff0c;表达爱。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Ima…

VSCode之C++ CUDA极简环境配置

背景 想要了解CUDA并行计算原理&#xff0c;同时针对深度学习中出现一些“不支持算子”可能需要手写的需要&#xff0c;配置一个简单的CUDA编译环境&#xff0c;探索CUDA编程的范式【注&#xff1a;CUDA环境配置略】。结果展示 示例代码 #include "cuda_runtime.h" …