当前位置: 代码网 > it编程>编程语言>Javascript > uniApp实现选择时间功能

uniApp实现选择时间功能

2024年05月19日 Javascript 我要评论
1、孙子组件1.1、html部分<template><view><checkbox-group @change="checkboxchange"><view

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、效果图

到此这篇关于uniapp实现选择时间功能的文章就介绍到这了,更多相关uniapp选择时间内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com