点击下拉出几个选项,根据日期不同来过滤数据。看图--(忽略小梨子,这是日常练手页面)

(element ui)

点击today-当天日期

点击last three days

点击custom,并且实现右侧结束日期必须大于左侧(左边先选,右边无法选择比左边小的)

首先呢--先弄它个按钮下拉玩玩,,下拉数据v-for遍历,

@click.native="filterTime(menu)" 
根据interval不同来判断不同时间段(在data--menus中)
<el-dropdown size="small" trigger="click">
<el-button type="primary">
paid Time<i class="el-icon-arrow-down el-icon--right" />
</el-button>
<el-dropdown-menu>
<el-dropdown-item v-for="menu in menus" @click.native="filterTime(menu)">
{{ menu.title }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

获取到的日期渲染到页面上--

   <span v-if="timeData">
<el-tag
color="white"
style="font-size: 15px;"
>
{{ timeData }}
</el-tag>
</span>

日期选择是点击弹出个弹窗,在弹窗中选择。,

:picker-options="pickerOptionsStart"   
:picker-options="pickerOptionsEnd"  
在data中判定起止时间大于的问题
<el-dialog title="Choice Time" :visible.sync="dialogVisible" width="40%">
<div style="padding-top: 10px;" :data="timePo">
<el-date-picker
v-model="start"
type="date"
value-format="yyyy-MM-dd"
placeholder="Choose the date and time"
:picker-options="pickerOptionsStart"
style="margin-right: 10px;"
@change="startTimeStatus"
/>
to
<el-date-picker
v-model="end"
type="date"
value-format="yyyy-MM-dd"
placeholder="Choose the date and time"
:picker-options="pickerOptionsEnd"
style="margin-left: 10px;"
@change="endTimeStatus"
/>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">cancel</el-button>
<el-button type="primary" @click="saveTime">submit</el-button>
</div>
</el-dialog>

下面是一些数据,start是开始日期,end是结束日期。menus为下拉框中数据。

data() {
return {
start: '',
end: '',
dialogVisible: false,
timeData: '',
menus: [
{ title: 'today', interval: 0 },
{ title: 'yesterday', interval: 1 },
{ title: 'Last Three Days', interval: 2 },
{ title: 'one Week', interval: 6 },
{ title: 'custom', interval: -1 }
],
pickerOptionsStart: {
disabledDate: time => {
const endDateVal = this.end
if (endDateVal) {
return time.getTime() > new Date(endDateVal).getTime()
}
}
},
pickerOptionsEnd: {
disabledDate: time => {
const beginDateVal = this.start
if (beginDateVal) {
return time.getTime() < new Date(beginDateVal).getTime()
}
}
}
}
},

在methods中 ,,年+月+日,简单的获取和赋值,调用:时间戳转换成  xxxx-xx-xx格式。

            timeFormat(date) {
const year = date.getFullYear()
let month = (date.getMonth() + 1) + ''
month = month.length === 1 ? '0' + month : month
let day = date.getDate() + ''
day = day.length === 1 ? '0' + day : day
return year + '-' + month + '-' + day
},

根据前面说的来判定。timePo是后台提供的字段,获取到的start,end日期通过props传值,后台来进行过滤。

if对比不等于 -1 ,不等于的话  获取当天时间定义为end,减去选择的天数是start。endStr和startStr是转换格式后的日期。

filterTime(menu) {
const interval = menu.interval
if (interval !== -1) {
const end = new Date()
const time = end.getTime() - interval * 24 * 60 * 60 * 1000
const start = new Date(time)
const endStr = this.timeFormat(end)
const startStr = this.timeFormat(start)
this.timePo = Object.assign(this.timePo,
{
field: 'updated_at',
start: startStr + this.split + '00:00:00',
end: endStr + this.split + '23:59:59'
这里为啥这样呢,是因为在过滤的时候没加这些,有部分订单是不显示的(俺也不知道具体为啥)
}
)
this.timeData = startStr + ' => ' + endStr
this.fatherInit()
} else {
this.start = ''
this.end = ''
this.dialogVisible = true
}
},

下面是弹窗中日期的赋值,。

 // 弹窗赋值
saveTime() {
this.timeData = this.start + ' => ' + this.end
this.dialogVisible = false
this.timePo = Object.assign(this.timePo,
{
field: 'updated_at',
start: this.start + this.split + '00:00:00',
end: this.end + this.split + '23:59:59'
}
)
this.fatherInit()
},
cancel() {
this.dialogVisible = false
},
// 时间开始选择器
startTimeStatus: function(value) {
this.start = value
},
// 时间结束选择器
endTimeStatus: function(value) {
this.end = value
}
}

over。

vue框架中实现今天昨天前天最近时间的更多相关文章

  1. 如何在vue框架中兼容IE

    IE目前已经放弃了自己的独特化,正一步步迎入互联网的主流怀抱.但迫于有用户存在,还是要兼容到IE8,9, 以上. 下面聊一下如何在vue框架中兼容IE 1.首先在index.html <meta ...

  2. vue框架中props的typescript用法

    vue框架中props的typescript用法 在vue中使用typescript时,需要引入vue-property-decorator库来兼容格式. javascript写法 Vue.compo ...

  3. vue框架中的日期组件转换为yyy-mm-dd格式

    最近在用vue框架写一个app,这个是用到的日期格式转换,把下面的标准格式转换为字符串连接格式

  4. yarn 在Vue框架中的常用命令

    初始化项目 yarn add init 安装vue yarn add vue 安装webpack,webpack-dev-server(是一个小型的Node.js Express服务器) yarn a ...

  5. 在Vue框架中使用百度地图

    1.首先在index.html中引入百度地图 <script type="text/javascript" src="http://api.map.baidu.co ...

  6. Vue 框架中遇到的诀窍

    问题一. 我需要渲染数组A,并根据 B数组中是否存在A中,给A添加 选中状态sel. 经过很焦虑的研究后,寻求帮助得到答案. 1.初始化数据时 A添加属性flag(bool)标识,如果B中存在A中某个 ...

  7. vue框架中什么是MVVM

    前端页面中使用MVVM的思想,即MVVM是整个视图层view的概念,属于视图层的概念. MVVM是前端视图层的分层开发思想,将页面分成了Model, View,和VM:其中VM是核心,因为VM是V和M ...

  8. vue框架中的Axios封装

      function axios(options) {     let promise = new Promise((resolve, reject) => {         var xhr ...

  9. js获得昨天前天明天时间以及setDate()

    <script type="text/javascript"> function GetDateStr(AddDayCount) { var dd = new Date ...

随机推荐

  1. HTTP教程

    适合人群 本教程已为计算机学科毕业生和Web开发人员准备,帮助他们了解与超文本传输​​协议(HTTP)相关的基本到高级概念. 预备知识 在继续本教程之前,最好对Web概念,Web浏览器,Web服务器, ...

  2. Linux学习-samba服务

    一.Samba介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. SMB (Server Messages Block,信息服务块) 是一种在局域网 ...

  3. 舞蹈课(dancingLessons)

    有n个人参加一个舞蹈课.每个人的舞蹈技术由整数ai来决定.在舞蹈课的开始,他们从左到右站成一排.当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞.如果相差最小的不止一对,那么 ...

  4. HDU-6704 K-th occurrence

    Description You are given a string S consisting of only lowercase english letters and some queries. ...

  5. signup图片上传预览经常总结

    html <html> <head> <meta charset="utf-8" /> <meta http-equiv="X- ...

  6. js判断浏览器的类型

    我们很多时候都需要判断浏览器,下面就是一些常用的判断 var ua = navigator.userAgent.toLowerCase(); //用来判断移动端类型 var isWeixin = /M ...

  7. 微信小程序 checkbox 组件

    checkbox 组件 是一个多选框组件,还可以使用 checkbox-group 组件 来进行绑定事件和实现,真正意义上的多选 checkbox的属性: value: 属性值 字符串 当在 chec ...

  8. ListView 九宫格布局实现

    1.效果图 2.数据 SettingData.json { "data": [{ "icon":"setting", "title ...

  9. Linux内核调试方法总结之ddebug

    [用途] Linux内核动态调试特性,适用于驱动和内核各子系统调试.动态调试的主要功能就是允许你动态的打开或者关闭内核代码中的各种提示信息.适用于驱动和内核线程功能调试. [使用方法] 依赖于CONF ...

  10. 监听整个页面上的DOM树变化

    在线预览 方法 使用<Web API 接口>的<MutationObserver> MutationObserver 网上查到的很多都是使用Mutation events的,但 ...