You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.3 KiB
155 lines
3.3 KiB
2 years ago
|
<!--
|
||
|
* @Author: weisheng
|
||
|
* @Date: 2021-12-22 16:52:06
|
||
|
* @LastEditTime: 2023-03-22 11:03:01
|
||
|
* @LastEditors: weisheng
|
||
|
* @Description:
|
||
|
* @FilePath: \fant-mini-plus\src\uni_modules\fant-mini\components\hd-calendar\header.vue
|
||
|
* 记得注释
|
||
|
-->
|
||
|
<template>
|
||
|
<view class="header">
|
||
|
<hd-icon :custom-style="iconCustomStyle" size="44rpx" color="#666666" name="ic_close_line" @click="doClose"></hd-icon>
|
||
|
<view class="header-title" v-if="showTitle">
|
||
|
{{ title }}
|
||
|
</view>
|
||
|
<text class="header-subtitle" v-if="showSubtitle">
|
||
|
{{ subtitle }}
|
||
|
</text>
|
||
|
<view class="header-weekdays">
|
||
|
<view class="header-weekdays-weekday" v-for="(weekday, index) in weekdays" :key="index">{{ weekday }}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script lang="ts" setup>
|
||
|
import { computed, onBeforeMount, ref } from 'vue'
|
||
|
import { CommonUtil } from '../../libs/utils/CommonUtil'
|
||
|
|
||
|
interface Props {
|
||
|
// 标题
|
||
|
title?: string
|
||
|
// 副标题
|
||
|
subtitle?: string
|
||
|
// 是否显示标题
|
||
|
showTitle?: boolean
|
||
|
// 是否显示副标题
|
||
|
showSubtitle?: boolean
|
||
|
}
|
||
|
|
||
|
const props = withDefaults(defineProps<Props>(), {
|
||
|
// 标题
|
||
|
title: '',
|
||
|
// 副标题
|
||
|
subtitle: '',
|
||
|
// 是否显示标题
|
||
|
showTitle: true,
|
||
|
// 是否显示副标题
|
||
|
showSubtitle: true
|
||
|
})
|
||
|
|
||
|
const weekdays = ref<Array<string>>([])
|
||
|
|
||
|
onBeforeMount(() => {
|
||
|
weekdays.value = ['日', '一', '二', '三', '四', '五', '六']
|
||
|
})
|
||
|
|
||
|
const emit = defineEmits(['close'])
|
||
|
|
||
|
/**
|
||
|
* icon 样式
|
||
|
*/
|
||
|
const iconCustomStyle = computed(() => {
|
||
|
let style: Record<string, string | number> = {
|
||
|
position: 'absolute',
|
||
|
'z-index': 3,
|
||
|
right: CommonUtil.addUnit(uni.upx2px(24), 'px'),
|
||
|
top: CommonUtil.addUnit(uni.upx2px(50), 'px'),
|
||
|
transform: 'translateY(-50%)'
|
||
|
}
|
||
|
return CommonUtil.style(style)
|
||
|
})
|
||
|
|
||
|
/**
|
||
|
* 关闭
|
||
|
*/
|
||
|
function doClose() {
|
||
|
emit('close')
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
@import '../../libs/css/index.scss';
|
||
|
/* #ifndef APP-NVUE */
|
||
|
// 在非nvue中,需要对元素进行重置为flex-direction: column; 否则可能会表现异常
|
||
|
view,
|
||
|
scroll-view,
|
||
|
swiper-item {
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
flex-shrink: 0;
|
||
|
flex-grow: 0;
|
||
|
flex-basis: auto;
|
||
|
align-items: stretch;
|
||
|
align-content: flex-start;
|
||
|
}
|
||
|
/* #endif */
|
||
|
|
||
|
.header {
|
||
|
position: relative;
|
||
|
padding-bottom: 16rpx;
|
||
|
flex: 0 0 auto;
|
||
|
&::after {
|
||
|
content: ' ';
|
||
|
position: absolute;
|
||
|
z-index: 1;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
width: 750rpx;
|
||
|
height: 2rpx;
|
||
|
background: #e5e5e5;
|
||
|
transform: translateY(-100%) scaleY(0.5);
|
||
|
}
|
||
|
|
||
|
&-title {
|
||
|
position: relative;
|
||
|
@include flex;
|
||
|
justify-content: center;
|
||
|
align-items: center;
|
||
|
height: 100rpx;
|
||
|
font-size: 36rpx;
|
||
|
font-family: PingFangSC-Medium, PingFang SC;
|
||
|
font-weight: 500;
|
||
|
color: $color-text-secondary;
|
||
|
margin-bottom: 20rpx;
|
||
|
}
|
||
|
|
||
|
&-subtitle {
|
||
|
font-size: 36rpx;
|
||
|
font-family: PingFangSC-Medium, PingFang SC;
|
||
|
font-weight: 500;
|
||
|
color: $color-text-secondary;
|
||
|
line-height: 44rpx;
|
||
|
text-align: center;
|
||
|
margin-bottom: 34rpx;
|
||
|
}
|
||
|
|
||
|
&-weekdays {
|
||
|
@include flex;
|
||
|
justify-content: space-between;
|
||
|
|
||
|
&-weekday {
|
||
|
flex: 1;
|
||
|
height: 48rpx;
|
||
|
font-size: 24rpx;
|
||
|
font-family: PingFangSC-Regular, PingFang SC;
|
||
|
font-weight: 400;
|
||
|
color: $color-text-thirdly;
|
||
|
@include flex;
|
||
|
justify-content: center;
|
||
|
align-items: center;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</style>
|