vant 组件中事件选择器的一些小用法

news2024/12/23 16:59:37

获取当前所在的月份的月初和当天的日期

computed: {
    // 默然展示月初的第一天
    formattedFirstDayOfMonth() {
      const now = new Date();
      const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
      const year = firstDayOfMonth.getFullYear();
      const month = (firstDayOfMonth.getMonth() + 1)
        .toString()
        .padStart(2, "0"); // 月份是从0开始的,所以加1
      const day = firstDayOfMonth.getDate().toString().padStart(2, "0");
      return `${year}年${month}月${day}日`;
    },
    //默认展示今天
    formattedToday() {
      const today = new Date();
      const year = today.getFullYear();
      const month = (today.getMonth() + 1).toString().padStart(2, "0"); // 月份是从0开始的,所以加1
      const day = today.getDate().toString().padStart(2, "0");
      return `${year}年${month}月${day}日`;
    },
  },

我们在写页面的时候 经常会遇到事件的选择器  象我做H5 的时候,我经常用的组件库 就是vant 组件库

 举个简单的小例子

 就是 下面的日期变化时 上面框里面的日期也要跟着改变 然后点击的时候 选择一个区间的范围

<template>
<van-popup
      v-model="dateShow"
      position="bottom"
      round
      :style="{ height: '52%' }"
    >
      <div class="day_box">
        <div class="customize_text">自定义</div>
        <img
          src="../../assets/information/close.png"
          alt=""
          class="close-icon"
          @click="onClose"
        />
      </div>
      <div class="date_Range">
        <div
          class="date_Range_left"
          @click="onClickday(0)"
          :class="{ date_Range_right: currentday == 0 }"
        >
          <div v-if="firstFormatValue == null">
            {{ formattedFirstDayOfMonth }}
          </div>
          <div v-else>{{ firstFormatValue }}</div>
        </div>
        <div class="date_Range_line"></div>
        <div
          class="date_Range_left"
          @click="onClickday(1)"
          :class="{ date_Range_right: currentday == 1 }"
        >
          <div v-if="currentFormatValue == null">{{ formattedToday }}</div>
          <div v-else>{{ currentFormatValue }}</div>
        </div>
      </div>
      <div class="date-currentDate-box">
        <van-datetime-picker
          ref="datetimePicker"
          v-model="currentDate"
          type="date"
          title="选择年月日"
          :min-date="minDate"
          :max-date="maxDate"
          :visible-item-count="3"
          @change="handleChange"
        />
        <div class="btn" @click.stop="onConfirm">确认</div>
      </div>
    </van-popup>


</template>
<script>
export default {
  data() {
    return {
  
      dateShow: false,
      minDate: new Date(2020, 0, 1),
      maxDate: new Date(),
      currentDate: new Date(),
      formattedDate: "", //日期
      currentday: 1,
      firstFormatValue: null,
      currentFormatValue: null,
      addFormatValue: "",
    };
  },
  computed: {
    // 默然展示月初的第一天
    formattedFirstDayOfMonth() {
      const now = new Date();
      const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
      const year = firstDayOfMonth.getFullYear();
      const month = (firstDayOfMonth.getMonth() + 1)
        .toString()
        .padStart(2, "0"); // 月份是从0开始的,所以加1
      const day = firstDayOfMonth.getDate().toString().padStart(2, "0");
      return `${year}年${month}月${day}日`;
    },
    //默认展示今天
    formattedToday() {
      const today = new Date();
      const year = today.getFullYear();
      const month = (today.getMonth() + 1).toString().padStart(2, "0"); // 月份是从0开始的,所以加1
      const day = today.getDate().toString().padStart(2, "0");
      return `${year}年${month}月${day}日`;
    },
  },
  methods: {
    handleChange(pickerInstance) {
      if (this.currentday == 0) {
        this.firstFormatValue =
          pickerInstance.getValues()[0] +
          "年" +
          pickerInstance.getValues()[1] +
          "月" +
          pickerInstance.getValues()[2] +
          "日";
      } else if (this.currentday == 1) {
        this.currentFormatValue =
          pickerInstance.getValues()[0] +
          "年" +
          pickerInstance.getValues()[1] +
          "月" +
          pickerInstance.getValues()[2] +
          "日";
      }
    },
    onConfirm() {
      // const selectedDate = this.$refs.datetimePicker.value;
      // this.formattedDate = `${this.firstFormatValue}-${this.currentFormatValue}`;
      // this.addFormatValue = this.formatDate(selectedDate);
      // console.log(this.addFormatValue);
      // this.dateShow = false;
      const selectedDate = this.$refs.datetimePicker.value;
      // 新增判断
      if (this.firstFormatValue === null || this.currentFormatValue === null) {
        this.addFormatValue = `${this.formattedFirstDayOfMonth}-${this.formattedToday}`;
        console.log(this.addFormatValue);
      } else {
        this.formattedDate = `${this.firstFormatValue}-${this.currentFormatValue}`;
      }

      this.dateShow = false;
    },
    formatDate(date) {
      const year = date.getFullYear();
      const month = (date.getMonth() + 1).toString().padStart(2, "0"); // 月份是从0开始的,所以加1
      const day = date.getDate().toString().padStart(2, "0");
      return `${year}年${month}月${day}日`;
    },
    onCustomShow() {
      this.dateShow = true;
    },
   
  },
};
</script>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚星文社原版本绘唐科技AI推文工具

聚星文社原版本绘唐科技AI推文工具是一种可以帮助用户生成推文内容的人工智能工具。它通过分析大量的文本和数据&#xff0c;学习了推文的写作风格和语言特点&#xff0c;并能够根据用户提供的关键词和要求&#xff0c;生成符合要求的推文内容。 这个工具可以快速生成高质量的推…

C语言一笔画迷宫

目录 开头程序程序的流程图程序游玩的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <Windows.h> void printmaze(const char strmaze[11][11]) {int ia 0;…

金蝶云星空元数据冲突SVN:replaced,tree conflict树冲突解决过程

文章目录 SVN:replaced,tree conflict树冲突解决过程问题解决方案 SVN:replaced,tree conflict树冲突解决过程 问题 解决方案

五参数防爆气象站

五参数防爆气象站是一种用于监测环境气象条件和预测潜在爆炸危险的装置。其功能包括以下五个方面&#xff1a; 温度监测&#xff1a;防爆气象站能够实时监测环境的温度变化&#xff0c;并且能够提供温度的历史记录和趋势预测。这对于防止设备过热和爆炸具有重要意义。 湿度监测…

场外个股期权优劣有哪些?场外个股期权有风险吗?

今天带你了解场外个股期权优劣有哪些&#xff1f;场外个股期权有风险吗&#xff1f;个股场外期权&#xff0c;作为非交易所交易的股票期权合约&#xff0c;为投资者提供了独特的投资渠道。 场外个股期权&#xff08;OTC个股期权&#xff09;的优势&#xff1a; 1.灵活性&…

网络间通信

1、udp通信 特点&#xff1a;&#xff08;1&#xff09;无连接 &#xff08;2&#xff09;不可靠 2、udp编程&#xff08;c/s模型&#xff09; ssize_t recvfrom(int sockfd, //socket的fd void *buf, //保存数据的一块空间的地址 …

鸿蒙弹窗实现乱象?带你玩转正确的实现姿势

最近看到很多童鞋吐槽鸿蒙自定义弹窗的实现,也有不少童鞋提供了各式各样的低耦,轻巧方向的优化方案,但多数参差不齐,甚至有基于老API(白玩,以后还得废弃掉…)给的方案,为避免如此“乱象”遂提出正确的实现姿势。 姿势一 如果您没有特别的要求,系统AlertDialog(API 6+)…

新加坡门店客流计数器,AI智能识别算法加持,精准完成统计分析

在数字化转型的大潮下&#xff0c;零售业正经历着前所未有的变革。为了更好地理解顾客行为并优化店铺运营&#xff0c;新加坡的零售门店开始采用搭载AI智能识别算法的客流计数器系统。这套系统不仅能够精准统计顾客流量&#xff0c;还能提供深入的分析报告&#xff0c;帮助商家…

tcp 和udp通信

一.recvfrom recvfrom函数是一个系统调用&#xff0c;用于从套接字接收数据。该函数通常与无连接的数据报服务&#xff08;如 UDP&#xff09;一起使用&#xff0c;但也可以与其他类型的套接字使用。与简单的 recv() 函数不同&#xff0c;recvfrom() 可以返回数据来源的地址信息…

“肯将玉钳作双戟,一舞天下定乾坤。”记唐铎《墨龙图》之中的笔墨画意

唐铎&#xff0c;1957 年生于北京&#xff0c;国家一级美术师&#xff0c;曾先后师从于刘文西、黄申发老师&#xff0c;原名唐京鸣&#xff0c;京城人士&#xff0c;取其名&#xff0c;不鸣则已&#xff0c;一鸣惊人之意&#xff0c;学画三十余年&#xff0c;专注于齐派虾蟹&am…

算法工程师第四十四天(99. 岛屿数量 深搜 99. 岛屿数量 广搜 100.岛屿的最大面积 )

参考文献 代码随想录 一、岛屿数量 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成&#xff0c;并且四周都是水域。你可以假设矩阵外均被水包…

Android 安卓Compose软键盘和Activity页面的协调处理问题

文章目录 问题展示1、输入框展示不完整&#xff0c;且布局被顶出屏幕外2、输入框被软键盘完全覆盖 解决方案最终演示 问题展示 1、输入框展示不完整&#xff0c;且布局被顶出屏幕外 这是默认处理的样式 2、输入框被软键盘完全覆盖 当在AndroidManifest.xml Activity标签上加…

天龙八部万象归一第8版单机安装教程+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设&#xff1a;天龙八部万象归一第8版。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对…

火影忍者2——漩涡鸣人(仙人模式)篇

老规矩&#xff0c;谈火影~ 火影忍者 之—— 漩涡鸣人&#xff08;仙人模式&#xff09;篇 众所周知&#xff0c;鸣仙是一个早期的A忍&#xff0c;技能破坏力贼大&#xff0c;一般遇到鸣仙&#xff08;除非我用了青水神卡&#xff09;我是直接退的 普攻 一技能 螺旋丸 普…

深信服应届生客户经理面试经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

如何使用mmdetection训练实例分割模型?

安装 anoconda 从官方网站下载并安装。 配置环境 conda create --name openmmlab python3.8 -y conda activate mmdet 安装 PyTorch 注意&#xff1a;这个步骤很关键&#xff0c;否则后面会出问题。一定要确保自己电脑当前安装和配置的cuda版本。 使用命令&#xff1a;nvcc …

3.1 I-pipe四行启动代码

Interrupt Pipeline系列文章大纲-CSDN博客 I-pipe的启动代码位于init/main.c: start_kernel函数中。可以看到代码提交是集中在patch: genirq: add generic I-pipe core (8f933b57) 提交 xenomai / ipipe-arm64 GitLab (denx.de)&#xff0c;主要是四行&#xff1a; &#x…

stm32—SPI

1. SPI SPI (Serial Peripheral Interface)&#xff1a;是由美国摩托罗拉公司(Motorala)最先推出的一种同步全双工串行传输规范&#xff0c;也是一种单片机外设芯片串行扩展接口 SPI 接口主要应用在 EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#xff0c; AD转换器&#xf…

ORM底层的原理

2.3.面试题3&#xff1a;请介绍什么是ORM思想&#xff1a; a.什么是ORM&#xff1a; 1.所谓的ORM是Dao层的一种思想&#xff0c;意思就是对象关系映射&#xff08;英语&#xff1a;Object Relational Mapping&#xff0c;简称ORM&#xff0c;或O/RM&#xff0c;或O/R mapping…

【回文数判断】输入一个5位数,判断它是不是回文数

输入一个5位数&#xff0c;判断它是不是回文数。例如12321是回文数&#xff0c;个位和万位相同&#xff0c;十位与千位相同 使用C语言实现&#xff0c;具体代码&#xff1a; #include<stdio.h>int main(){int a,b,c,d,x;printf("输入一个5位数&#xff1a;")…