¶Ô±ÈÐÂÎļþ |
| | |
| | | import { defineComponent, onMounted, reactive, ref, watch } from 'vue' |
| | | import styles from './DateTimePickRange.module.scss' |
| | | import dayjs from 'dayjs' |
| | | import { ElMessage } from 'element-plus' |
| | | export default defineComponent({ |
| | | name: 'æ¥æèå´', |
| | | props: { |
| | | label: { |
| | | type: String, |
| | | default: 'æ¶é´èå´', |
| | | }, |
| | | From: { |
| | | type: String, |
| | | default: '', |
| | | requred: true, |
| | | }, |
| | | To: { |
| | | type: String, |
| | | default: '', |
| | | requred: true, |
| | | }, |
| | | valueFormat: { |
| | | type: String, |
| | | default: 'YYYY-MM-DD HH:mm:ss', |
| | | }, |
| | | clearable: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | emits: ['change'], |
| | | setup(props, { attrs, slots, emit }) { |
| | | // todo æ¯æé
ç½®é»è®¤æ¶é´ |
| | | const times = reactive({ |
| | | From: '', |
| | | To: '', |
| | | }) |
| | | |
| | | onMounted(() => { |
| | | if (props.From) { |
| | | times.From = props.From |
| | | } |
| | | if (props.To) { |
| | | times.To = props.To |
| | | } |
| | | }) |
| | | |
| | | const onChangeFrom = (val: Date) => { |
| | | console.log(val) |
| | | if (times.To && dayjs(val).isAfter(times.To)) { |
| | | ElMessage.warning('å¼å§æ¶é´å¿
é¡»æ¯ç»ææ¶é´å°') |
| | | return |
| | | } |
| | | emit('change', times) |
| | | } |
| | | |
| | | const onChangeTo = (val: Date) => { |
| | | console.log(val); |
| | | if (times.To && dayjs(val).isBefore(times.From)) { |
| | | ElMessage.warning('å¼å§æ¶é´å¿
é¡»æ¯ç»ææ¶é´å°') |
| | | return |
| | | } |
| | | emit('change', times) |
| | | } |
| | | |
| | | return () => { |
| | | return ( |
| | | <div class={styles.DateTimePickRange}> |
| | | <span class={styles.label}>{props.label}</span> |
| | | <el-date-picker |
| | | v-model={times.From} |
| | | type="datetime" |
| | | placeholder="è¯·éæ©å¼å§æ¶é´" |
| | | onChange={onChangeFrom} |
| | | valueFormat={props.valueFormat} |
| | | clearable={props.clearable} |
| | | /> |
| | | <span class={styles.line}>-</span> |
| | | <el-date-picker |
| | | v-model={times.To} |
| | | type="datetime" |
| | | placeholder="è¯·éæ©ç»ææ¶é´" |
| | | onChange={onChangeTo} |
| | | valueFormat={props.valueFormat} |
| | | clearable={props.clearable} |
| | | /> |
| | | </div> |
| | | ) |
| | | } |
| | | }, |
| | | }) |