Pemilih rentang musiman berdasarkan Vue2 dan ElementUI
element-ui tidak memiliki pemilih rentang musim, dan perpustakaan UI open source ByteDance arco.design hanya mendukung Vue3, namun proyek lama adalah Vue2, jadi saya hanya bisa melakukannya sendiri.
Perpustakaan pihak ketiga digunakan
Vue2.js https://cn.vuejs.org/v2/guide/
elemen-ui https://element.eleme.cn/#/zh-CN/component/installation
momenjs http://momentjs.cn/
Demo daring: https://mouday.github.io/mo-quarter-picker/dist/
Gunakan contoh kode sumber: https://github.com/mouday/mo-quarter-picker/blob/master/src/App.vue
https://cdn.jsdelivr.net/npm/mo-quarter-picker/
<!-- 样式文件 -->
< link href =" https://mouday.github.io/mo-quarter-picker/lib/mo-quarter-picker.min.css " rel =" stylesheet " >
<!-- 核心文件 -->
< script src =" https://mouday.github.io/mo-quarter-picker/lib/mo-quarter-picker.min.js " > </ script >
Halo dunia
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" utf-8 " />
< title > mo-quarter-picker </ title >
<!-- element-ui样式 -->
< link
href =" https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.8/theme-chalk/index.min.css "
rel =" stylesheet "
/>
</ head >
< body >
< h1 >
季节范围选择器:mo-quarter-picker
</ h1 >
< div id =" app " >
< mo-quarter-picker
:value.sync =" value "
@on-change =" handleChange "
> </ mo-quarter-picker >
</ div >
<!-- 引入依赖 -->
< script src =" https://cdn.bootcss.com/vue/2.6.10/vue.min.js " > </ script >
< script src =" https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.8/index.min.js " > </ script >
< script src =" https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.2/moment.min.js " > </ script >
< script src =" https://mouday.github.io/mo-quarter-picker/dist/mo-quarter-picker.min.js " > </ script >
< script >
const app = new Vue ( {
el : "#app" ,
data ( ) {
return {
value : null
} ;
} ,
methods : {
handleChange ( value ) {
console . log ( value ) ;
}
}
} ) ;
</ script >
</ body >
</ html >
npm i mo-quarter-picker -S
main.js
import Vue from "vue" ;
import App from "./App.vue" ;
import ElementUI from "element-ui" ;
import "element-ui/lib/theme-chalk/index.css" ;
import MoQuarterPicker from "mo-quarter-picker" ;
Vue . use ( ElementUI ) ;
Vue . use ( MoQuarterPicker ) ;
new Vue ( {
el : "#app" ,
render : h => h ( App )
} ) ;
parameter | menjelaskan | jenis | Nilai opsional | nilai bawaan |
---|---|---|---|---|
nilai | nilai saat ini | Himpunan | null, misalnya: ['01-07-2022', '30-06-2024'] mendukung sync | batal |
nama acara | menjelaskan | parameter panggilan balik |
---|---|---|
saat berubah | Diaktifkan saat pengguna mengubah nilai yang dipilih | data |
data parameter panggilan balik saat diubah:
[
{
end_date : "2022-09-30"
label : "Q3"
quarter : 3
start_date : "2022-07-01"
value : "2022-3"
year : 2022
} ,
{
end_date : "2024-06-30"
label : "Q2"
quarter : 2
start_date : "2022-04-01"
value : "2023-2"
year : 2023
}
]
Warna khusus
:root {
--primary-color : #6833cf ;
}
// 季节选择器
// 选中季节的背景色
.quarter-picker__item--active .quarter-picker__item__label ,
.quarter-picker__item :hover .quarter-picker__item__label {
background-color : var ( --primary-color ) !important ;
}
// 当前季节下的小圆点
.quarter-picker__item__today :after {
background-color : var ( --primary-color ) !important ;
}
Menambahkan pemilih rentang minggu, bulan, kuartal, dan tahun
Tambahkan komponen baru
mo-date-range-picker
mo-week-range-picker
mo-month-range-picker
mo-year-range-picker
Ubah nama komponen
mo-quarter-picker = > mo-quarter-range-picker
Contoh:
<!-- 月份 -->
< mo-month-range-picker
:value.sync =" value "
@on-change =" handleChange "
>
</ mo-month-range-picker >
<!-- 星期 -->
< mo-week-range-picker
:value.sync =" value "
@on-change =" handleChange " >
</ mo-week-range-picker >
<!-- 年度 -->
< mo-year-range-picker
:value.sync =" value "
@on-change =" handleChange " >
</ mo-year-range-picker >
<!-- 日期范围选择器 -->
< mo-date-range-picker
:type.sync =" type "
:week-value.sync =" week_value "
:month-value.sync =" month_value "
:quarter-value.sync =" quarter_value "
:year-value.sync =" year_value "
@on-value-change =" handleValueChange "
@on-type-change =" handleTypeChange "
> </ mo-date-range-picker >