我是靠谱客的博主 苹果钻石,最近开发中收集的这篇文章主要介绍mintui 自定义选择时间段(picker),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//自定义数据可以自己设定(暂时只提供年月选择和年月日选择)

 

 

图例:

mockjs:

const nowmonth=()=>{

  let date = new Date()

  let month = date.getMonth()

  return month

}

const nowday=()=>{

  let date = new Date()

  let day = date.getDate()

  return day-1

}

 

const yearList=()=>{

  let date = new Date()

  let year = date.getFullYear()

  let resarr = []

  for(let i=year;i>year-20;i--){

    resarr.push(i+"年")

  }

  return resarr

}

const method={

 

slotsday:

 

[

 

{

 

flex: 1,

 

values: yearList(),

 

className: 'year',

 

textAlign: 'left'

 

}, {

 

flex: 1,

 

defaultIndex:nowmonth(),

 

values: ['1月', '2月', '3月', '4月', '5月','6月','7月','8月','9月','10月','11月','12月'],

 

className: 'mouth',

 

textAlign: 'mid'

 

}, {

 

flex: 1,

 

defaultIndex:nowday(),

 

values: ["1日", "2日", "3日", "4日", "5日", "6日", "7日", "8日", "9日", "10日", "11日", "12日", "13日", "14日", "15日", "16日", "17日", "18日", "19日", "20日", "21日", "22日", "23日", "24日", "25日", "26日", "27日", "28日", "29日", "30日"],

 

className: 'day',

 

textAlign: 'right'

 

}

 

],

 

slotsmouth:

 

[

 

{

 

flex: 1,

 

values: ['2009年', '2010年', '2011年', '2012年', '2013年','2014年','2015年','2016年','2017年','2018年','2019年','2020年','2021年','2022年','2023年','2024年','2025年','2026年','2027年','2028年','2029年'],

 

className: 'year',

 

textAlign: 'left'

 

}, {

 

flex: 1,

 

values: ['1月', '2月', '3月', '4月', '5月','6月','7月','8月','9月','10月','11月','12月'],

 

className: 'mouth',

 

textAlign: 'mid'

 

}

 

]

 

}

 

export default method

 

//封装的模块

picker:

<template>

<div id="pickerTime">

<div v-show="showtime">

<div class="shadow" @click="hide"></div>

<div class="datatime" >

<div class="sure">

<div @click="unsure">取消</div>

<div @click="sure">确认</div>

</div>

<mt-picker class="onepick" @change="onValuesChange1" :slots="slots" :visible-item-count="3"></mt-picker>

<mt-picker class="twopick" @change="onValuesChange2" :slots="slots" :visible-item-count="3"></mt-picker>

</div>

</div>

</div>

</template>

<script>

import { Toast } from 'mint-ui'

import demo from "@/utils/demo.js"

const slotsday = demo.slotsday

const slotsmouth = demo.slotsmouth

console.log(slotsday)

console.log(slotsmouth)

export default {

name:'pickerTime',

props:["status","mouthorday"],

data(){

return{

slotsday:slotsday,

showtime:false,

changeDate:{

startTime:["2009年","1月","1日"],

finishTime:["2009年","1月","1日"]

},

slots:[]

}

},

mounted(){

if(this.mouthorday == "mouth"){

this.slots = slotsmouth

}else{

this.slots = slotsday

}

},

watch:{

status(){

this.showtime = !this.showtime

}

},

methods:{

hide(){

this.showtime = false

},

unsure(){

this.showtime = false

},

sure(){

if(this.mouthorday == "mouth"){

//判断时间段选择是否正确

let myyear1 = this.changeDate.startTime[0].slice(0,4)

let myyear2 = this.changeDate.finishTime[0].slice(0,4)

let mymouth1 = this.changeDate.startTime[1].slice(0,this.changeDate.startTime[1].length-1)

let mymouth2 = this.changeDate.finishTime[1].slice(0,this.changeDate.finishTime[1].length-1)

if(myyear1>myyear2){

toast("请选择正确的时间段")

return

}

if(myyear1 == myyear2 && mymouth1>mymouth2){

Toast("请选择正确的时间段")

return

}

}else{

//判断时间段选择是否正确

console.log(this.changeDate)

let myyear1 = this.changeDate.startTime[0].slice(0,4)

let myyear2 = this.changeDate.finishTime[0].slice(0,4)

let mymouth1 = this.changeDate.startTime[1].slice(0,this.changeDate.startTime[1].length-1)

let mymouth2 = this.changeDate.finishTime[1].slice(0,this.changeDate.finishTime[1].length-1)

let myday1 = this.changeDate.startTime[2].slice(0,this.changeDate.startTime[2].length-1)

let myday2 = this.changeDate.finishTime[2].slice(0,this.changeDate.finishTime[2].length-1)

if(myyear1>myyear2){

Toast("请选择正确的时间段")

return

}

if(myyear1 == myyear2 && mymouth1>mymouth2){

Toast("请选择正确的时间段")

return

}

if(myyear1 == myyear2 && mymouth1 == mymouth2 && myday1>myday2){

Toast("请选择正确的时间段")

return

}

}

 

this.showtime = false

this.$emit('childArr', this.changeDate)

},

onValuesChange1(picker,values){

if(values.length){

this.changeDate.startTime = values

}

},

onValuesChange2(picker,values){

if(values.length){

this.changeDate.finishTime = values

}

},

}

}

</script>

<style>

#pickerTime .onepick{

position: absolute;

top: 0.7rem;

width: 100%;

background: #fff;

}

#pickerTime .twopick{

position: absolute;

top: 2.7rem;

width: 100%;

background: #fff;

}

#pickerTime .picker-item{

text-align:center;

opacity: 0.3;

transform: rotateX(50deg)

}

#pickerTime .picker-item.picker-selected{

opacity: 1;

transform: rotateX(0deg)

}

#pickerTime .datatime{

height:4.7rem;

position: fixed;;

bottom:0;

width:100%;

left:0;

z-index:667;

}

#pickerTime .sure{

height:0.7rem;

width:100%;

padding:0 0.32rem;

display:flex;

justify-content: space-between;

align-items: center;

font-size:0.26rem;

background:#fff;

box-sizing: border-box;

color:rgba(76,84,93,1);

text-align:left;

line-height:0.5rem;

}

#pickerTime .sure>div{

height:100%;

width:30%;

line-height:0.7rem;

}

#pickerTime .sure>div:nth-of-type(2){

color:rgba(0,175,213,1);

text-align:right;

}

#pickerTime .shadow{

height:100vh;

width:100%;

background:rgba(0,0,0,0.2);

position:fixed;

top:0;

left:0;

z-index:666;

}

</style>

 

 

引入和使用

status代表是否显示  主页面的默认值是false  点击某个按钮触发  this.status = !this.status

changeDate代表这个组件返回过来值的接受参数

changeDate(val){

    console.log(val)//val是选择完后传过来的值  分为开始时间和结束时间   需要自己处理

}

如果changeDate这个方法重复可能会报错  自行换名字

 

这次更新新加了默认时间和当前日期一样(限制   现在年份固定到今年)

 

效果图:

 

最后

以上就是苹果钻石为你收集整理的mintui 自定义选择时间段(picker)的全部内容,希望文章能够帮你解决mintui 自定义选择时间段(picker)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部