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.

112 lines
2.8 KiB

<template>
<view class="u-demo">
<view class="u-demo-wrap" style="background-color: #FFFFFF;">
<view class="u-demo-title">演示效果</view>
<view class="u-demo-area">
<u-calendar v-model="show" ref="calendar" @change="change" :mode="mode"
:start-text="startText" :end-text="endText" :range-color="rangeColor"
:range-bg-color="rangeBgColor" :active-bg-color="activeBgColor" :btn-type="btnType"
>
</u-calendar>
<view class="u-demo-result-line">
{{result}}
</view>
</view>
</view>
<view class="u-config-wrap">
<view class="u-config-title u-border-bottom">
参数配置
</view>
<view class="u-config-item">
<view class="u-item-title">状态</view>
<u-subsection :current="showBtnStatus" :list="['显示', '隐藏']" @change="showChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">模式</view>
<u-subsection current="1" :list="['单个日期', '日期范围']" @change="modeChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">自定义样式</view>
<u-subsection current="1" :list="['是', '否']" @change="styleChange"></u-subsection>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
mode: 'range',
result: "请选择日期",
startText: '开始',
endText: '结束',
rangeColor: '#2979ff',
rangeBgColor: 'rgba(41,121,255,0.13)',
activeBgColor: '#2979ff',
btnType: 'primary',
}
},
computed: {
showBtnStatus() {
return this.show ? 0 : 1;
}
},
methods: {
showChange(index) {
this.show = !index;
},
modeChange(index) {
this.mode = index == 0 ? 'date' : 'range';
this.show = true;
},
styleChange(index) {
if(index == 0) {
this.startText = '住店';
this.endText = '离店';
this.activeBgColor = '#19be6b';
this.rangeColor = '#19be6b';
this.rangeBgColor = 'rgba(25,190,107, 0.13)';
this.btnType = 'success';
} else {
this.startText = '开始';
this.endText = '结束';
this.activeBgColor = '#2979ff';
this.rangeColor = '#2979ff';
this.rangeBgColor = 'rgba(41,121,255,0.13)';
this.btnType = 'primary';
}
this.show = true;
},
customChange(index) {
if(index == 0) {
this.icon1 = 'map';
this.icon2 = 'photo';
this.arrow = true;
} else {
this.icon1 = '';
this.icon2 = '';
this.arrow = false;
}
},
textareaChange(index) {
this.type = index == 0 ? 'textarea' : 'text';
},
change(e) {
if (this.mode == 'range') {
this.result = e.startDate + " - " + e.endDate;
} else {
this.result = e.result;
}
}
}
}
</script>
<style lang="scss" scoped>
.u-demo {
}
</style>