当前位置: 首页 > news >正文

uniapp 小程序 周选择器

这里贴出来的是子组件的代码,父组件只是打开了一下popup

//  打开了一下popup
$refs.popup.open('bottom')
如果不想用子组件的话,直接打开popup就可以用
<template><uni-popup ref="popup" type="bottom" background-color="#fff"><view class="my_popup"><view class="my_selectDeta"><view class="my_button" @click="iconClose">取消</view><view class="my_button" type="primary" @click="confirm">确定</view></view><picker-view :value="selectValue" class="picker-view" @change="pickerChange"><picker-view-column><view v-for="(item, index) in years" :key="index" class="year-item">{{ item }}年</view></picker-view-column><picker-view-column><view v-for="(item, index) in weeks" :key="index" class="weeks-item">{{ `第${index + 1}周(` + item + ')' }}</view></picker-view-column></picker-view></view></uni-popup>
</template><script>
export default {props: {},data() {return {selectValue: [0, 0],years: [],year: '', // 当前年// weeks: [],week: '', // 当前周myDate: new Date(),}},// watch: {//   year: {//     handler(newValue) {//       const index = this.years.findIndex((item) => item == newValue);//       this.selectValue = [index, 0];//     },//     deep: true // 深度监听父组件传过来对象变化//   },// },computed: {weeks() {const ONE_DAY = 24 * 3600 * 1000;let firstDay =new Date(this.year + '/01/01').getDay() == 0? 7: new Date(this.year + '/01/01').getDay();let weeklist = [];let firstweekday = '';let endweekday = new Date(this.year + '/12/28').getTime();if (firstDay > 4) {firstweekday =new Date(this.year + '/01/01').getTime() +(8 - firstDay) * ONE_DAY;} else if (firstDay <= 4) {firstweekday =new Date(this.year + '/01/01').getTime() -(firstDay - 1) * ONE_DAY;}for (let i = 0; i < 54; i++) {let numWeek = i * 7 * ONE_DAY;let firstday = firstweekday + numWeek;let endday = firstday + 6 * ONE_DAY;if (firstday <= endweekday) {weeklist.push(`${uni.$u.timeFormat(firstday, 'mm/dd')}-${uni.$u.timeFormat(endday, 'mm/dd')}`);}}console.log("computed-weeklist", weeklist)return weeklist;},},mounted() {this.init();},methods: {pickerChange(e) {const currentData = e.detail.valuethis.year = this.years[currentData[0]];this.week = this.weeks[currentData[1]];console.log("pickerChange", e, this.year, this.week);},// 初始化时的默认当前周init(data = new Date()) {for (let i = this.myDate.getFullYear(); i <= this.myDate.getFullYear() + 10; i++) {this.years.push(i);}let beginTime = uni.$u.timeFormat(this.getWeek(0, data), 'mm/dd')let endTime = uni.$u.timeFormat(this.getWeek(1, data), 'mm/dd');this.year = data ? new Date(data).getFullYear() : this.myDate.getFullYear()this.week = `${beginTime}-${endTime}`this.selectValue = [this.years.indexOf(this.year), this.weeks.indexOf(this.week)]console.log('weeks-init', this.year, this.years, this.week, this.weeks, beginTime, endTime, this.selectValue);// this.$nextTick(() => {//   this.selectValue = [this.years.indexOf(this.year), this.weeks.indexOf(this.week)]// })// this.$emit('changeWeekTime', this.dateObj)},// 获取当前周getWeek(type, data = "") {let now = new Date(data)let day = now.getDay() //返回星期几的某一天;if (!type) {let dayNumber = day == 0 ? 6 : day - 1now.setDate(now.getDate() - dayNumber)} else {let dayNumber = day == 0 ? 0 : 7 - daynow.setDate(now.getDate() + dayNumber)}let date = now.getDate()let month = now.getMonth() + 1//年-月-日let s = now.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' +date :date)let datebefore = nowreturn datebefore},iconClose() {this.$refs.popup.close()},changeDateObj() {const [firstWeek, lastWeek] = this.week.split('-').map((item) => item.replace('/', '-'));return this.year + '-' + firstWeek + '至' + this.year + '-' + lastWeek},confirm() {console.log("confirm", this.year, this.week)let obj = {type: '4',date: this.changeDateObj()}uni.setStorageSync('weChatData', obj)uni.reLaunch({url: '/hxz/weChat/index'})this.iconClose();}},
}
</script>
<style scoped lang="scss">
.my_popup {height: 550rpx;border-radius: 8rpx 8rpx 0 0;position: relative;font-weight: 500;color: #1b1d21;.my_selectDeta {display: flex;justify-content: space-between;padding: 20rpx 40rpx;box-sizing: border-box;color: rgb(96, 98, 102);border-bottom: 1px solid #f5f7f8;}.my_button {display: flex;align-items: center;justify-content: center;}.picker-view {width: 100%;height: 600rpx;}}.year-item,
.weeks-item {display: flex;align-items: center;justify-content: center;
}
</style>
http://www.lryc.cn/news/480102.html

相关文章:

  • Android笔记(三十二):封装一个毫秒级别倒计时View
  • [产品管理-60]:马斯洛需求层次与产品的情感化设计
  • Python接口自动化测试自学指南(项目实战)
  • ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解
  • 如何将 EDB 文件导入 Ansys HFSS 和 Ansys Q3D
  • HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
  • 智慧流控 力行天地 | 同元软控受邀参加第十三届全国流体传动与控制学术会议
  • Python日志分析与故障定位
  • w029基于springboot的网上购物商城系统研发
  • Uniapp全局文件执行顺序详解
  • 车企死亡加速,买车看好这三条线
  • SpringClud一站式学习之Eureka服务治理(二)
  • 空间解析几何【上】
  • Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)
  • 独孤思维:曾经副业赚大钱的人,怎么不见了
  • OpenGL 异常处理-glCreateShader失败
  • 【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】
  • Uniapp的学习
  • C#-万物之父object、装箱拆箱
  • AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
  • HTB:GreenHorn[WriteUP]
  • SelfAttention在Ascend上的实现
  • C#设计模式
  • 仪表板展示|DataEase看中国:历年双十一电商销售数据分析
  • 急着骂华为?我劝你别急
  • 虚拟机linux7.9下安装mysql
  • 【Linux】一篇文章轻松搞懂基本指令
  • 深入浅出理解Spring和SpringBoot,剖析自动配置源码
  • Spring配置文件初始化加载(一)
  • 正则表达式 - 简介