<template> <u-popup :show="show" mode="bottom" :closeable="true" @close="handleClose"> <view class="c-dialog"> <view class="box"><text>常用时间选择</text></view> <view class="box-btn" ><text class="active">今日</text><text>昨日</text><text>本月</text ><text>本年</text></view > <view class="box box-border" ><text>其它时间选择</text ><text class="btn" @click="showCalendar = true">自定义</text></view > <view v-if="showCalendar"> <view class="line"></view> <view class="box"> <text @click="showCalendar = false">取消</text> <text class="btn" @click="showCalendar = false">完成</text> </view> <uni-calendar :insert="true" :lunar="true" :start-date="'2014-1-1'" :end-date="'2099-1-1'" :range="true" @change="handleChangeDate" /> </view> </view> </u-popup> </template> <script setup lang="ts"> const props = defineProps<{ show: boolean, }>() const emit = defineEmits(['handleDialog']); const handleClose = () => { emit('handleDialog', false) } const showCalendar = ref(false) const handleChangeDate = (v: any) => { console.log(v); }; </script> <style lang="scss" scoped> ::v-deep .u-popup__content { box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12); border-radius: 32rpx 32rpx 0rpx 0rpx; } .c-dialog { margin: 65.38rpx 44.87rpx; font-family: Source Han Sans CN; font-weight: 500; font-size: 24rpx; color: #000000; .box-btn, .box { line-height: 80rpx; display: flex; justify-content: space-between; } .box-btn { line-height: 40rpx; margin-bottom: 30rpx; text { font-weight: 400; font-size: 24rpx; color: #999999; width: 117rpx; background: #ffffff; border-radius: 6rpx; border: 1px solid rgba(153, 153, 153, 0.64); text-align: center; cursor: pointer; } .active { border-color: $u-primary; color: $u-primary; } } .btn { font-weight: 500; font-size: 24rpx; color: $u-primary; } .box-border { border-top: 1px solid rgba(233, 233, 233, 0.76); } .line { height: 18rpx; background: #f8f8f8; } } </style>