diff --git a/components/rattenking-dtpicker/GetDate.js b/components/rattenking-dtpicker/GetDate.js new file mode 100644 index 0000000..8933c77 --- /dev/null +++ b/components/rattenking-dtpicker/GetDate.js @@ -0,0 +1,167 @@ +const GetDate = { + withData: (num) => { + let param = parseInt(num); + return param < 10 ? '0' + param : '' + param; + }, + getTimes(str){ + return new Date(str.replace(/-/g,'/')).getTime(); + }, + getCurrentTimes(){ + const date = new Date(); + const year = date.getFullYear(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const hour = date.getHours(); + const minute = date.getMinutes(); + const second = date.getSeconds(); + return { + detail: { + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + second: second + } + } + }, + format(arr){ + let curarr = []; + let curarr0 = []; + let str = ''; + arr.forEach((cur,index) => { + let o = GetDate.withData(cur); + if(index > 2){ + curarr.push(o); + }else{ + curarr0.push(o); + } + }) + if(arr.length < 4){ + str = curarr0.join('-'); + }else{ + str = curarr0.join('-') + ' ' + curarr.join(':'); + } + return str; + }, + getCurrentStringValue(str){ + let newstr = str.split(' '); + if(newstr && newstr[1]){ + let arr = [...newstr[0].split('-'),...newstr[1].split(':')]; + return arr; + } + return newstr[0].split('-'); + }, + getCompare(curp,startp,endp,timesp){ + let cur = GetDate.getTimes(curp); + let start = GetDate.getTimes(startp); + let end = GetDate.getTimes(endp); + if(cur < start){ + return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(startp)); + }else if(cur > end){ + return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(endp)); + }else{ + return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(curp)); + } + }, + getChooseArr(times,indexs){ + let arr = []; + times.forEach((cur,index) => arr.push(cur[indexs[index]])); + return arr; + }, + getNewArray(arr){ + let newarr = []; + arr.forEach(cur => newarr.push(cur)); + return newarr; + }, + getLoopArray: (start, end) => { + var start = start || 0; + var end = end || 1; + var array = []; + for (var i = start; i <= end; i++) { + array.push(GetDate.withData(i)); + } + return array; + }, + getMonthDay: (year, month) => { + var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null; + + switch (month) { + case '01': + case '03': + case '05': + case '07': + case '08': + case '10': + case '12': + array = GetDate.getLoopArray(1, 31) + break; + case '04': + case '06': + case '09': + case '11': + array = GetDate.getLoopArray(1, 30) + break; + case '02': + array = flag ? GetDate.getLoopArray(1, 29) : GetDate.getLoopArray(1, 28) + break; + default: + array = '月份格式不正确,请重新输入!' + } + return array; + }, + getDateTimes: (opts) => { + var years = GetDate.getLoopArray(opts.start, opts.end); + var months = GetDate.getLoopArray(1, 12); + var days = GetDate.getMonthDay(opts.curyear, opts.curmonth); + var hours = GetDate.getLoopArray(0, 23); + var minutes = GetDate.getLoopArray(0, 59); + var seconds = GetDate.getLoopArray(0, 59); + var times = null; + + switch (opts.fields) { + case 'year': + times = [years] + break; + case 'month': + times = [years, months] + break; + case 'day': + times = [years, months, days] + break; + case 'hour': + times = [years, months, days, hours] + break; + case 'minute': + times = [years, months, days, hours, minutes] + break; + case 'second': + times = [years, months, days, hours, minutes, seconds] + break; + default: + times = [years, months, days, hours, minutes, seconds] + } + return times; + }, + getIndex(arr,target){ + let len = arr.length; + for(let i = 0; i < len; i++){ + if(arr[i] == target){ + return i; + } + } + }, + getTimeIndex(arrs, targets){ + let len = arrs.length; + let arr = []; + for(let i = 0; i < len; i++){ + arr.push(GetDate.getIndex(arrs[i], targets[i])) + } + return arr; + }, + error(str){ + console.error(str); + } +} + +module.exports = GetDate; \ No newline at end of file diff --git a/components/rattenking-dtpicker/rattenking-dtpicker.vue b/components/rattenking-dtpicker/rattenking-dtpicker.vue new file mode 100644 index 0000000..33a6605 --- /dev/null +++ b/components/rattenking-dtpicker/rattenking-dtpicker.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/components/rattenking-dtpicker/readme.md b/components/rattenking-dtpicker/readme.md new file mode 100644 index 0000000..86d3909 --- /dev/null +++ b/components/rattenking-dtpicker/readme.md @@ -0,0 +1,69 @@ +### DatePicker 多粒度时间选择器 + +可进行多粒度的时间选择器,组件名:``rattenking-dtpicker``,代码块: ruiDatePicker。 + +**使用方式:** + +在 ``script`` 中引用组件 + +```javascript +import ruiDatePicker from '@/components/rattenking-dtpicker/rattenking-dtpicker.vue'; +export default { + components: {ruiDatePicker} +} +``` + +在 ``template`` 中使用组件 + +```html + +``` + +实际效果参考:[https://github.com/Rattenking/rui-uni-components](https://github.com/Rattenking/rui-uni-components) + +**DatePicker 属性说明:** + +|属性名 |类型 |默认值 |说明 | +|--- |---- |--- |--- | +|start |String |'1900-00-00 00:00:00' |限制选择器选择的最小时间 | +|end |String |'2500-12-30 23:59:59' |限制选择器选择的最大时间 | +|value |String |'' |当前时间选择器显示的时间 | +|fields |String |'second' |时间选择器的粒度 | +|disabled |Boolean|false |是否为禁用状态 | + + +**fields 值说明:** + +|值 |类型 |说明 | +|--- |---- |--- | +|year |String |选择器粒度为年 | +|month |String |选择器粒度为月份 | +|day |String |选择器粒度为天 | +|hour |String |选择器粒度为小时 | +|minute |String |选择器粒度为分钟 | +|second |String |选择器粒度为秒 | + +**事件说明:** + +|事件名称 |说明 | +|---|---| +|change |时间选择器点击【确定】按钮时时触发的事件,参数为picker的当前的 value| +|cancel |时间选择器点击【取消】按钮时时触发的事件| + +**修复BUG说明:** + +1. 修复每个月都是 31 天的 bug ! +2. 修复 value 值做出改变,在外部赋值才改变的 bug ,当前版本只要 value 改变,显示值就会改变! +3. 优化了默认显示值问题,如果用户不填写,直接默认当前设备的当前时间! +4. 修复二月份能够选择 31 号的 bug! + +**感谢:** + +> 在这里特别感谢**AimerQAQ**、**icare**、**281245387@qq.com**、**椰子皮**等反馈的 bug 和给出的优化建议。有更多优化建议和需求,请联系作者。谢谢! \ No newline at end of file diff --git a/pages/add-stroke/add-stroke.vue b/pages/add-stroke/add-stroke.vue index 58a2786..055b03e 100644 --- a/pages/add-stroke/add-stroke.vue +++ b/pages/add-stroke/add-stroke.vue @@ -3,11 +3,11 @@
*出发时间 - + *抵达时间 - + *行程类型 @@ -54,11 +54,12 @@ - - diff --git a/pages/add-stroke/components/end-date-selector.vue b/pages/add-stroke/components/end-date-selector.vue new file mode 100644 index 0000000..af231e7 --- /dev/null +++ b/pages/add-stroke/components/end-date-selector.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/pages/add-stroke/components/start-date-selector.vue b/pages/add-stroke/components/start-date-selector.vue new file mode 100644 index 0000000..0099ad2 --- /dev/null +++ b/pages/add-stroke/components/start-date-selector.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/pages/my-trips/my-trips.vue b/pages/my-trips/my-trips.vue index 383826d..d08541a 100644 --- a/pages/my-trips/my-trips.vue +++ b/pages/my-trips/my-trips.vue @@ -5,7 +5,7 @@ {{ +item.startTime | formatDate }} - formatDate(data, 'MM-dd hh:mm:ss') + {{ +item.startTime | formatDate }} 至 {{ +item.endTime | formatDate }} diff --git a/pages/statistics/components/date-selector.vue b/pages/statistics/components/date-selector.vue index f9976dc..bf8d945 100644 --- a/pages/statistics/components/date-selector.vue +++ b/pages/statistics/components/date-selector.vue @@ -16,7 +16,7 @@ class="cu-btn round" v-for="(item, index) in menus" >{{ item }} - + - -