Skip to content

How can the El date picker of element plus realize the function of picker options #2369

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
baixiaomei opened this issue Jun 28, 2021 · 17 comments

Comments

@baixiaomei
Copy link

No description provided.

@element-bot element-bot changed the title element-plus的el-date-picker怎么实现picker-options的功能 How can the El date picker of element plus realize the function of picker options Jun 28, 2021
@element-bot
Copy link
Member

Translation of this issue:

@baixiaomei
Copy link
Author

为什么要把element-plus el-date-picker的picker-options去掉,能给加一下吗?或者给个方法能拿到我第一次选择的时间

@msidolphin
Copy link
Collaborator

msidolphin commented Jun 29, 2021

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以自己实现吗

@baixiaomei
Copy link
Author

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以实现自己吗

现在选项不满足我的需求,我想在我选择第一个时间后组件能直接把我选中的这个时间的30天之前和30天之后变为不可点击样式

@iamkun
Copy link
Contributor

iamkun commented Jun 29, 2021

what api are you looking for in previous picker-options?

@msidolphin
Copy link
Collaborator

msidolphin commented Jun 29, 2021

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以实现自己吗

现在选项不满足我的需求,我想在我选择第一个时间后组件能直接把我选中的这个时间的30天之前和30天之后变为不可点击样式

<template>
  <el-date-picker v-model="value" :disabledDate="isDisabled" @change="onChange" />
</template>

<script>
import { ref } from 'vue'
import dayjs from 'dayjs'
export default {
  setup() {
    const value = ref('')
    const firstSelectedDayRef = ref(null)
    const isDisabled = date => {
      const firstSelectedDay = firstSelectedDayRef.value
      if (firstSelectedDay) {
        const diff = dayjs(date).diff(firstSelectedDay, 'day')
        return diff > 30 || diff < -30
      }
      return false
    }
    const onChange = date => {
      if (!firstSelectedDayRef.value) firstSelectedDayRef.value = date
    }
    return {
      value,
      isDisabled,
      onChange,
    }
  },
}
</script>

@geminiyu233
Copy link

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以实现自己吗

现在选项不满足我的需求,我想在我选择第一个时间后组件能直接把我选中的这个时间的30天之前和30天之后变为不可点击样式

<template>
  <el-date-picker v-model="value" :disabledDate="isDisabled" @change="onChange" />
</template>

<script>
import { ref } from 'vue'
import dayjs from 'dayjs'
export default {
  setup() {
    const value = ref('')
    const firstSelectedDayRef = ref(null)
    const isDisabled = date => {
      const firstSelectedDay = firstSelectedDayRef.value
      if (firstSelectedDay) {
        const diff = dayjs(date).diff(firstSelectedDay, 'day')
        return diff > 30 || diff < -30
      }
      return false
    }
    const onChange = date => {
      if (!firstSelectedDayRef.value) firstSelectedDayRef.value = date
    }
    return {
      value,
      isDisabled,
      onChange,
    }
  },
}
</script>

disabledDate,如果是type="datetime"时,可以具体禁用到小时吗?现在disabledDate函数返回的值全是0点,不支持具体某个小时呢

@natee
Copy link

natee commented Aug 5, 2021

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以自己实现吗

当type为daterange时,需要pickerOptions中的on-pick方法,从而达到动态设置disabledDate的目的

@yinshipeng
Copy link

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以自己实现吗

当type为daterange时,需要pickerOptions中的on-pick方法,从而达到动态设置disabledDate的目的

解决了吗?我也遇见同样的问题

@Vinzelles
Copy link

Vinzelles commented Jan 26, 2022

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以自己实现吗

type="week"的时候,原本可以通过pickerOptions的firstDayOfWeek设置自然周从周一到周日,现在去掉了怎么设置?
*编辑:通过解构本地化文件zhCN设置成功了

@yangxisui
Copy link

我本地已经设置成中文了,但是el-date-picker还是从周日到周一呀
企业微信截图_16445641329271

@Vinzelles
Copy link

在element-plus.js中加入 import 'dayjs/locale/zh-cn'; ,無需其他操作就可以設置自然周從周一到周日。
如果不行,就 import zhCn from 'element-plus/es/locale/lang/zh-cn'; ,然後解構zhCn.weeks對象

@yanbowe
Copy link

yanbowe commented Mar 28, 2022

在element-plus.js中加入 import 'dayjs/locale/zh-cn'; ,無需其他操作就可以設置自然周從周一到周日。 如果不行,就 import zhCn from 'element-plus/es/locale/lang/zh-cn'; ,然後解構zhCn.weeks對象

如何解构zhCn.weeks并使用呢

@yangxisui
Copy link

在element-plus.js中加入 import 'dayjs/locale/zh-cn'; ,無需其他操作就可以設置自然周從周一到周日。 如果不行,就 import zhCn from 'element-plus/es/locale/lang/zh-cn'; ,然後解構zhCn.weeks對象

如何解构zhCn.weeks并使用呢

image

@chenxwei
Copy link

chenxwei commented Apr 7, 2022

请查看文档,picker-options 的属性已经仔细查看,还是说这些选项不能满足你的需求?至于第一次选择的时间不是自己实现的

当type为daterange时,需要pickerOptions中的on-pick方法,立即达到动态设置disabledDate的目的

怎么解决?

@chenxwei
Copy link

chenxwei commented Apr 7, 2022

请仔细查看文档,picker-options的属性已经平铺开了,还是说这些选项不满足你的需求?至于第一次选择的时间不是可以自己实现吗

当type为daterange时,需要pickerOptions中的on-pick方法,从而达到动态设置disabledDate的目的

可以通过 @calendar-change代替on-pick,已实现动态设置可选日期区间。
<el-date-picker
v-model="date"
:disabledDate="isDisabled"
:shortcuts="shortcuts"
range-separator="至"
@calendar-change="calendar"
type="daterange"
unlink-panels
popper-class="myDatePicker"
start-placeholder="开始时间"
end-placeholder="结束时间"
/>
const firstSelectedDayRef = ref(null);
const isDisabled = (time) => {
const firstSelectedDay = firstSelectedDayRef.value;
if (firstSelectedDay) {
return (
time.getTime() < firstSelectedDay.getTime() - 1000 * 60 * 60 * 24 * 5 ||
time.getTime() > firstSelectedDay.getTime() + 1000 * 60 * 60 * 24 * 5
);
}
return false;
};

    const calendar = (date) => {
        firstSelectedDayRef.value = date[0];
    };

@loonghe
Copy link

loonghe commented Aug 29, 2022

新版本平铺picker-options后,想用之前选项中的selectableRange功能,怎么使用呀?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests