首页 > 其他分享 >vue-element-ui 日期选择器 前后端联调

vue-element-ui 日期选择器 前后端联调

时间:2023-12-18 10:33:24浏览次数:31  
标签:vue format 交接 联调 var time date import 选择器

前端:

<el-col :span="8">
          <div class="block">
            <el-col :span="4">交接日期</el-col>
            <el-col :span="1"></el-col>
            <el-col :span="16">
              <el-date-picker
                style="width:100% ;hight:100%"
                v-model="joinDateValue"
                size="mini"
                type="daterange"
                @change="changeDate"
                range-separator="-"
                start-placeholder="开始月份"
                end-placeholder="结束月份">
              </el-date-picker>
            </el-col>
            <el-col :span="1"></el-col>
          </div>
        </el-col>
export default {
  data: function () {
    return {
         joinDateValue: [],
     
    }
  },
 methods: {
     changeDate: function () {
      if (this.joinDateValue.length > 0) {
        const joinDateAny = [];
        this.joinDateValue.forEach(item => {
          joinDateAny.push(parseTime(item, '{y}-{m}-{d}'));
        })
        this.joinDateValue = joinDateAny;
      }
    }
  },

data.js

export const calcDate = (date1, date2) => {
  var date3 = date2 - date1

  var days = Math.floor(date3 / (24 * 3600 * 1000))

  var leave1 = date3 % (24 * 3600 * 1000) // 计算天数后剩余的毫秒数
  var hours = Math.floor(leave1 / (3600 * 1000))

  var leave2 = leave1 % (3600 * 1000) // 计算小时数后剩余的毫秒数
  var minutes = Math.floor(leave2 / (60 * 1000))

  var leave3 = leave2 % (60 * 1000) // 计算分钟数后剩余的毫秒数
  var seconds = Math.round(date3 / 1000)
  return {
    leave1,
    leave2,
    leave3,
    days: days,
    hours: hours,
    minutes: minutes,
    seconds: seconds
  }
}

/**
 * 日期格式化
 */
export function dateFormat(date) {
  let format = 'yyyy-MM-dd hh:mm:ss';
  if (date != 'Invalid Date') {
    var o = {
      "M+": date.getMonth() + 1, //month
      "d+": date.getDate(), //day
      "h+": date.getHours(), //hour
      "m+": date.getMinutes(), //minute
      "s+": date.getSeconds(), //second
      "q+": Math.floor((date.getMonth() + 3) / 3), //quarter
      "S": date.getMilliseconds() //millisecond
    }
    if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
      if (new RegExp("(" + k + ")").test(format))
        format = format.replace(RegExp.$1,
          RegExp.$1.length == 1 ? o[k] :
            ("00" + o[k]).substr(("" + o[k]).length));
    return format;
  }
  return '';

}

/**
 * 日期格式化
 */
export function parseTime(time, pattern) {
  if (arguments.length === 0 || !time) {
    return null
  }
  const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    } else if (typeof time === 'string') {
      time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

后端:、

package com.yintn.cbms.basicinfo.api.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 交接单管理
 * </p>
 *
 * @author clt
 * @since 2023-11-21 09:50:49
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "TJoin请求对象", description = "交接单管理")
public class TJoinVo implements Serializable {


    @ApiModelProperty("交接日期")
    private List<Date> joinDate;

    @ApiModelProperty("交接类型(1:实胆交接单,2:空胆交接单,3:实款包交接单,4:空款包交接单)")
    private String joinType;


    @ApiModelProperty("分公司名称")
    private String companyName;


    @ApiModelProperty("票胆间/充值点名称")
    private String roomName;

    @ApiModelProperty("交接状态(0:交接完成1:交接中)")
    private String sts;


    @ApiModelProperty("当前页码")
    private Integer current;

    @ApiModelProperty("当前显示条数")
    private Integer size;

    public void setJoinDate(List<String> joinDateList) {
        if (joinDateList == null || joinDateList.isEmpty()) {
            this.joinDate = null;
        } else {
            List<Date> list = new ArrayList<>();
            joinDateList.forEach(joinDate -> {
                try {
                    joinDate = joinDate.substring(0, 10);
                    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
                    list.add(sf.parse(joinDate));
                } catch (ParseException e) {
                    throw new RuntimeException(e);
                }
            });
            if (list.isEmpty()) {
                this.joinDate = null;
            } else {
                this.joinDate = list;
            }

        }
    }
}

 

标签:vue,format,交接,联调,var,time,date,import,选择器
From: https://www.cnblogs.com/chenTo/p/17910484.html

相关文章

  • vue3中的样式为什么加上scoped不生效
    <style>标签添加scoped属性时,Vue会自动为该组件内的所有元素添加一个独特的数据属性,例如data-v-f3f3eg9。同时,它也会修改你的CSS选择器,使得它们只匹配带有这个独特数据属性的元素。这样做的目的是为了确保样式只应用于当前组件内的元素,避免影响到其他组件。然而,当你尝试覆盖子组......
  • Mac Vue-cli脚手架搭建
    安装node环境官网地址:http://nodejs.cn/download/我选择版本:v16.16.0修改npm镜像地址#查看镜像地址npmconfiggetregistry#设置镜像地址npmconfigsetregistryhttps://registry.npmmirror.com安装vuecnpminstallvue安装vue-clicnpminstall-g@vue/cli......
  • Vue知识系列(1)每天10个小知识点
    @TOC......
  • vue3构建全流程
    1.创建工程:npminitvue@latest  删除components下的所有自动生成文件:新建目录api、utils、views  将request.js放在utils下,request.js内容://定制请求的实例//导入axiosnpminstallaxiosimportaxiosfrom'axios';//定义一个变量,记录公共的前缀,bas......
  • 立志在线学习系统,基于java、vue开发的在线教育平台
    立志在线学习系统,是基于java、vue开发的在线教育平台,将开发PC、小程序、手机端,集成RABC权限+在线考试+文档预览+视频播放+代码生成器等功能。目标是基于此项目可以巩固学习springboot、vue、Mybatis等技术,欢迎star哟~~一、技术架构版本控制:git依赖管理:maven接口文档:Swagger权限验......
  • [前端][Vue] 利用webstorage API存储数据
    关于webstorageAPI官方文档https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API省流说明1️⃣两种--localStorage&sessionStorage2️⃣存多久--local一直存到除非用户主动删,session等浏览器关掉就删3️⃣API--一样的,存setItem,读getItem,删一个remove,删全部......
  • VUE框架指令语法与v-bind实现标签属性内部动态------VUE框架
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • Vue学习计划-Vue2--VueCLi(二)vuecli脚手架创建的项目内部主要文件分析
    1.文件分析1.补充:什么叫单文件组件?一个文件中只有一个组件vue-cli创建的项目中,.vue的文件都是单文件组件,例如App.vue2.进入分析1.package.json:项目依赖配置文件:如图,我们说主要的属性:name:项目的名称version:项目版本scripts:脚本入口serve:启动项目命......
  • 基于vue脚手架练习3
    <template><div><first-page-3:person="person"></first-page-3></div></template><script>importFirstPage3from'./FirstPage3.vue'exportdefault{components:{Firs......
  • ​Vue虚拟DOM:如何提高前端开发效率
    前言随着前端技术的不断发展,越来越多的框架和库涌现出来,其中Vue.js成为了最受欢迎的前端框架之一。Vue.js采用了响应式数据绑定和组件化的思想,让开发者可以更加高效地构建交互式的用户界面。而Vue.js的底层原理涉及到许多概念和技术,其中虚拟DOM是Vue.js的核心概念之一。本篇文章将......