vant4无法使用vant-datetime-picker组件可选方法

2,314 阅读1分钟
  • 由于vant4没有了vant-datetime-picke组件,只能使用vant-datetime-picker>:组件,这样接收时间组件的常量必须定义为如"expireTime": []形式否则picker组件无法弹出。

  • 但这样选择时间后expireTime是如["2023","07","03"]的形式,无法被后端解析为java.util.Date的形式。

  • 前端可参考如下配置:

<van-date-picker
  v-model="addTeamData.expireTime"
  @confirm="onConfirm"
  @cancel="showPicker = false"
  type="datetime" 
  title="请选择过期时间"
  :min-date="minDate"
        />
const onConfirm = ({selectedValues}) =>{
initFormData.expireTime = selectedValues.join("-");
showPicker.value = false;
};

添加前端格式化工具

npm i moment

提交方法里记得使用moment工具:

//提交
const onSubmit = async () => {
  const postData = {
    ...addTeamData.value,
    status: Number(addTeamData.value.status),
    expireTime: moment(initFormData.expireTime).format("YYYY-MM-DD"),
  }

后端配置: 在application.yml的spring项进行如下配置:

spring:
  application:
    jackson:
      date-format: yyyy-MM-dd
      time-zone: Asia/Shanghai

在需要转换的属性中添加如下注解:

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expireTime;
 @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date expireTime;
  • 这样前端传来的时间就不是数组形式而是后端可以转化为java.util.Date的形式了。

  • 不过还有有待完善的点,这样时间只能精确到天,主要是因为vant4的现有的picker组件只能精确到天,这个问题卡住了好久,不想在这一个小问题上花费太多时间,后来有机会再完善。