element-plus目前不支持weekrange,找了一圈也没找到案例。这是antd的效果
element-plus目前不支持weekrange,找了一圈也没找到案例。这是antd的效果
可以使用week-range-date-picker
我写了一个示例
具体可以详细看那个github仓库地址
使用 npm 命令安装 date-picker-week-range
插件:
npm install date-picker-week-range
在你的 Vue 项目中,创建并注册插件:
import { createApp } from 'vue';
import ElementPlus from 'element-plus';
import 'element-plus/theme-chalk/index.css';
import weekRange from 'date-picker-week-range';
import App from './App.vue';
const app = createApp(App);
app.use(ElementPlus);
app.use(weekRange);
app.mount('#app');
在组件中使用 <week-range>
标签来创建一个周范围选择器:
<template>
<week-range v-model="value" unlink-panels format="YYYY [Week] ww" range-separator="-" start-placeholder="选择开始周" end-placeholder="选择结束周" :shortcuts="shortcuts"></week-range>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const value = ref('');
const shortcuts = [
{
text: '最近一周',
value: () => {
const end = new Date();
const start = new Date();
start.setDate(start.getDate() - 7);
return [start, end];
},
},
{
text: '最近三周',
value: () => {
const end = new Date();
const start = new Date();
start.setDate(start.getDate() - 21);
return [start, end];
},
},
];
return { value, shortcuts };
},
};
</script>
<style>
@import 'date-picker-week-range/style.css';
</style>
npm install
命令安装 date-picker-week-range
插件。weekRange
并注册到 Vue 实例中。在组件中使用:
<week-range>
标签创建周范围选择器。v-model
绑定选择的值。shortcuts
提供快速选择选项,如“最近一周”和“最近三周”。一个 <el-date-picker />
<template>
<div class="block">
<el-date-picker
v-model="value2"
type="week"
:format="value2 + ' - ' + value1"
placeholder="选择周"
@change="changeTime"
>
</el-date-picker>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const size = ref<'default' | 'large' | 'small'>('default')
const value1 = ref('')
const value2 = ref('')
const changeTime = (val: any) => {
const date = new Date(val);
const y = date.getFullYear();
const m = date.getMonth();
const d = date.getDate();
const week = date.getDay();
const start = new Date(y, m, d - week + 1);
const end = new Date(y, m, d - week + 7);
value2.value = getCurrentTime(start, 0);
value1.value = getCurrentTime(end, 0);
};
const getCurrentTime = (data: any, num: any) => {
let date = new Date(data);
const Y = date.getFullYear();
const M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
const D = date.getDate() + num < 10 ? '0' + (date.getDate() + num) : date.getDate() + num;
return Y + '-' + M + '-' + D;
};
</script>
<style scoped>
.demo-date-picker {
display: flex;
width: 100%;
padding: 0;
flex-wrap: wrap;
}
.demo-date-picker .block {
padding: 30px 0;
text-align: center;
border-right: solid 1px var(--el-border-color);
flex: 1;
}
.demo-date-picker .block:last-child {
border-right: none;
}
.demo-date-picker .demonstration {
display: block;
color: var(--el-text-color-secondary);
font-size: 14px;
margin-bottom: 20px;
}
</style>
3 回答6.3k 阅读✓ 已解决
2 回答10.8k 阅读✓ 已解决
2 回答6.4k 阅读✓ 已解决
2 回答7.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
Ele+
没有weekrange
这样的范围选择器,如果一定要用ele+
来实现的话,就只能自己用两个<el-date-picker />
来实现了。👉在线Demo