web前端之uniApp实现选择时间功能

MENU

  • 1、孙子组件
    • 1.1、html部分
    • 1.2、JavaScript部分
    • 1.3、css部分
  • 2、子组件
    • 2.1、html部分
    • 2.2、JavaScript部分
    • 2.3、css部分
  • 3、父组件
    • 3.1、html部分
    • 3.2、JavaScript部分
  • 4、效果图


1、孙子组件

1.1、html部分

<template>
	<view>
		<checkbox-group @change="checkboxChange">
			<view class="check_number_box">
				<view class="check_number_item" v-for="(item, i) in checkNumberData" :key="i">
					<view>
						<!-- toString() 的作用是把数字转为字符串,否则报错 -->
						<checkbox :value="item.toString()" :checked="item == defaultValue[0]" />
					</view>
					<text>{{ item }}</text>
				</view>
			</view>
		</checkbox-group>
	</view>
</template>

1.2、JavaScript部分

export default {
	props: {
		checkNumberData: {
			type: Number,
			default: () => {
				return 7
			},
		}
	},

	data() {
		return {
			defaultValue: [1]
		}
	},

	methods: {
		checkboxChange(event) {
			this.defaultValue = event.detail.value;
		}
	}
}

1.3、css部分

* {
	margin: 0;
	padding: 0;
}

.check_number_box {
	box-sizing: border-box;
	padding: 10rpx 50rpx;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	grid-gap: 10rpx 10rpx;
}

.check_number_item {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	font-size: 30rpx;
}

.check_number_item>text {
	margin-left: 6rpx;
}

2、子组件

2.1、html部分

<template>
	<view>
		<view class="set_cycle_box">
			<radio-group @change="radioChange">
				<view class="cycle_box">
					<!-- 每日 -->
					<view class="cycle_item">
						<view>每日</view>
						<view>
							<radio value="1" checked="true" />
						</view>
					</view>

					<!-- 每周 -->
					<view class="cycle_item">
						<view>每周</view>
						<view>
							<radio value="2" />
						</view>
					</view>
					<checkNumber :checkNumberData="weekCycle" v-show="current == 2" ref="weekData"></checkNumber>

					<!-- 每月 -->
					<view class="cycle_item">
						<view>每月</view>
						<view>
							<radio value="3" />
						</view>
					</view>
					<checkNumber :checkNumberData="dayCycle" v-show="current == 3" ref="dayData"></checkNumber>

					<!-- 自定义 -->
					<view class="cycle_item">
						<view>自定义</view>
						<view>
							<radio value="4" />
						</view>
					</view>
					<view class="set_cycle_title" v-show="current == 4">
						请选择月份
					</view>
					<checkNumber :checkNumberData="monthCycle" v-show="current == 4" ref="monthCustomaData"></checkNumber>
					<view class="set_cycle_title" v-show="current == 4">
						请选择日期
					</view>
					<checkNumber :checkNumberData="dayCycle" v-show="current == 4" ref="dayCustomaData"></checkNumber>
				</view>
			</radio-group>

			<view class="submit" @click="submitBtn">
				确认
			</view>
		</view>
	</view>
</template>

2.2、JavaScript部分

import checkNumber from '@/components/checkNumber/checkNumber.vue'

export default {
	components: {
		checkNumber
	},
	
	data() {
		return {
			current: 1,
			// 给孙子组件传递参数(start)
			weekCycle: 7,
			dayCycle: 31,
			monthCycle: 12,
			// 给孙子组件传递参数(end)
		}
	},

	methods: {
		// 单选状态
		radioChange(event) {
			let i = event.detail.value;
			this.current = i;
		},

		// 确认
		submitBtn() {
			let i = this.current;
			i = Number(i);

			let submitData = {};

			switch (i) {
				case 2:
					submitData.type = i;
					submitData.submitWeek = this.$refs.weekData.defaultValue;
					break;
				case 3:
					submitData.type = i;
					submitData.submitDay = this.$refs.dayData.defaultValue;
					break;
				case 4:
					submitData.type = i;
					submitData.submitCustomaMonth = this.$refs.monthCustomaData.defaultValue;
					submitData.submitCustomaDay = this.$refs.dayCustomaData.defaultValue;
					break;
				default:
					submitData.type = i;
					submitData.submitDay = [1];
			}

			this.$emit('clickSetCycle', submitData)
		}
	}
}

2.3、css部分

.set_cycle_box {
	margin-top: 60rpx;
}

.cycle_box {
	padding: 0 50rpx;
	font-size: 30rpx;
	font-weight: 600;
}

.cycle_item {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin: 16rpx 0;
}

.submit {
	background-color: #007AFF;
	color: #FFFFFF;
	font-size: 32rpx;
	font-weight: 600;
	width: 30%;
	line-height: 50rpx;
	text-align: center;
	border-radius: 10rpx;
	position: relative;
	left: 50%;
	transform: translate(-50%);
	margin: 60rpx 0;
}

.set_cycle_title {
	margin: 16rpx 0;
	font-size: 26rpx;
	color: #888888;
	padding-left: 50rpx;
}

3、父组件

3.1、html部分

<template>
	<view>
		<setCycle @clickSetCycle="cycleControl"></setCycle>
	</view>
</template>

3.2、JavaScript部分

import setCycle from '../../components/setCycle/setCycle.vue'

export default {
	comments: {
		setCycle
	},

	data() {
		return {
			
		}
	},

	methods: {
		cycleControl(data) {
			console.log(data);
			// 
		},
	}
}

4、效果图

效果图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 ArcGIS Pro 统计四川省各市道路长度

在某些时候&#xff0c;我们需要进行分区统计&#xff0c;如果挨个裁剪数据再统计&#xff0c;不仅步骤繁琐、耗时&#xff0c;还会产生一些多余的数据&#xff0c;这里教大家如何在不裁剪数据的情况下统计四川各市的道路长度&#xff0c;希望能对你有所帮助。 数据来源 教程…

【目标检测】1. 目标检测概述

目标检测(Object Detection)实质上上多目标的定位,即在一个图片中定位多个目标物体&#xff0c;包括分类和定位&#xff0c;也就是多个目标分别在哪里?分别属于那个类别? 图像分类常用算法: VGG GoogleNet ResNet 目标检测常用算法&#xff1a; …

It is also possible that a host key has just been changed

问题&#xff1a;ssh失败&#xff0c;提示如上图 分析: ssh的key存在上图里的路径里。 解决&#xff1a;win10删这个文件C:\Users\admin\.ssh\known_hosts , linux删这个文件.ssh\known_hosts ,或者删除这个文件里的制定ip的那一行&#xff0c;例如“106.1.1.22 ecdsa-sha2-…

2.13计算机工作过程

2.三个级别的语言 1)机器语言。又称二进制代码语言&#xff0c;需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。 2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码&#xff0c;更容易为人们记忆和理解。使用汇编语言编辑的…

Redis集群(哨兵集群)

一.Sentinel作用和原理: 1.作用 监控:Sentinel会不断监控master和slave是否按预期工作. 自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也会以新的master为主。 通知&#xff1a;Sentinel充当redis客户端的服务发现来源,当集群发生故障…

uniapp模仿下拉框实现文字联想功能 - uniapp输入联想(官方样式-附源码)

一、效果 废话不多说&#xff0c;上效果图&#xff1a; 在下方的&#xff1a; 在上方的&#xff1a; 二、源码 一般是个输入框&#xff0c;输入关键词&#xff0c;下拉一个搜索列表。 ElementUI有提供<el-autocomplete>&#xff0c;但uniapp官网没提供这么细&#x…

python基于django的药品进销存管理系统elsb2

本系统是通过面向对象的python语言搭建系统框架&#xff0c;通过关系型数据库MySQL存储数据。使用django框架进行药店药品的信息管理&#xff0c;用户只需要通过浏览器访问系统即可获取药店药品信息&#xff0c;并可以在线管理&#xff0c;实现了信息的科学管理与查询统计。本文…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互&#xff0c;用户前台选择相应的商品与数目&#xff0c;后台计算出结果&#xff0c;回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口&#xff0c;实现了一个前台选择商品和数目&#xff0c;后台…

推荐一本书籍,澳福读后发现投资真谛

在现在的经济环境下&#xff0c;澳福外汇推荐各位投资读一本书籍就会发现投资者的真谛&#xff0c;那就是经济危机爆发前一年&#xff0c;黎巴嫩裔美国商人纳西姆尼古拉斯塔勒布出版的《黑天鹅:极不可能事件的影响》&#xff0c;在书中一书作者用“黑天鹅事件”这个词来指代影响…

一、项目中Camunda的使用

基本依赖请看另一篇文章 camunda学习使用 介绍 开始事件 结束事件 网关 顺序流 任务 用户任务 活动 上面是项目中使用到的一些图形&#xff0c;简单介绍一下 项目集成 依赖 <spring-boot.version>2.5.6</spring-boot.version> <spring-cloud.version>20…

智能门锁:越便宜,越难卖?

【潮汐商业评论/ 原创】 独居的Gail最近在网上种草了一款带电子猫眼的智能门锁&#xff0c;用她的话来说&#xff1a;“这小东西不仅是个电子锁&#xff0c;还是个智能监控&#xff0c;太适合独居的我了&#xff0c;天知道之前给快递员、外卖员开门都要纠结半天啊。” 但烦恼…

运维知识点-hibernate引擎-HQL

HQL有两个主要含义&#xff0c;分别是&#xff1a; HQL&#xff08;Hibernate Query Language&#xff09;是Hibernate查询语言的缩写&#xff0c;它是一种面向对象的查询语言&#xff0c;类似于SQL&#xff0c;但不是去对表和列进行操作&#xff0c;而是面向对象和它们的属性…

一台云服务器在手,天下我有!2024年3月上云采购季不可错过!

有一台云服务器可以做什么&#xff1f; 搭建微信提醒小助手、搭建个人博客、运行一个365天不休息的程序、存文件、定时发送邮件、数据爬取、加速网络请求、学习使用Linux命令&#xff08;部署&#xff09;、部署自己的小程序的服务端、青龙面包薅羊毛 这些都是常规用法&#xf…

openGauss环境搭建 | 新手指南

一、搭建准备 openGauss开发需要使用linux环境&#xff0c;先下载远程连接工具Xshell/MobaXterm 。 1. 使用工具连接远程linux服务器&#xff0c;使用root账号远程登录&#xff0c;创建个人账号。 useradd -d /home/xxx -m xxx 2. 设置密码。 passwd xxx 3. 切换到个人账…

【归并排序】AcWing. 505 / NOIP2013提高组《火柴排队》(c++)

【题目描述】 涵涵有两盒火柴&#xff0c;每盒装有 n 根火柴&#xff0c;每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列&#xff0c;同一列火柴的高度互不相同&#xff0c;两列火柴之间的距离定义为&#xff1a; 其中 ai 表示第一列火柴中第 i 个火柴的高度&a…

gitlab的安装

1、下载rpm 安装包 (1)直接命令下载 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.6.10-ce.0.el7.x86_64.rpm&#xff08;2&#xff09;直接去服务器上下载包 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source…

基于springboot+vue的政府管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Maya笔记 软选择

文章目录 1什么是软选择2注意3如何打开软选择3.1方法一3.2方法二 4调整软选择的范围5衰减模式5.1体积模式5.2表面模式 6衰减曲线 1什么是软选择 也就是渐变选择&#xff0c;从中心点向外影响力度越来越小 软选择针对的是点线面这些模型元素 下图中展示了对被软选择的区域移动…

禅道软件介绍:开源版(免费)和付费版的区别

禅道免费版是有两个版本其中一个是开源的&#xff0c;另一个是云禅道的5人以下免费版。禅道免费版和付费版的区别在于&#xff1a;禅道免费版虽然提供基础项目管理功能&#xff0c;但也只适合有技术能力自行维护和定制的团队。付费版&#xff08;如企业版、旗舰版&#xff09;则…

在nginx 服务器部署vue项目

以人人快速开发的开源项目&#xff1a;renren-fast-vue 为例 注&#xff1a;这里开始认为各位都会使用nginx 打包vue项目 npm run build 测试打包的项目是否可以运行 serve dist 可以正常运行 编译报错请移步到&#xff1a;renren-fast-vue1.2.2 项目编译报错: build g…