Commit 59c04d86 by LJM

add

parent b038ec19
...@@ -97,12 +97,7 @@ ...@@ -97,12 +97,7 @@
<view class="input-wrap column" style="margin-top: 20rpx;"> <view class="input-wrap column" style="margin-top: 20rpx;">
<view class="label-title"><text style="color: red;">*</text>到货时间:</view> <view class="label-title"><text style="color: red;">*</text>到货时间:</view>
<view class="select-box row"> <view class="select-box row">
<picker mode="date" :value="formParams.register_time" @change="bindDateChange($event,1)" style="width: 100%;"> <uni-datetime-picker v-model="formParams.register_time" type="datetime" :clear-icon="false" />
<view class="row verCenter bothSide wrap">
<view class="uni-input">{{ formParams.register_time }}</view>
<view class="uni-arrow"></view>
</view>
</picker>
</view> </view>
</view> </view>
<view class="input-wrap column" style="margin-top: 20rpx;"> <view class="input-wrap column" style="margin-top: 20rpx;">
...@@ -217,7 +212,7 @@ ...@@ -217,7 +212,7 @@
curr: 0, curr: 0,
formParams: { formParams: {
warehouse_id: '', warehouse_id: '',
register_time: this.getCurrentDate(), register_time: this.getCurrentDateTime(),
register_type: 1, register_type: 1,
logistics_company: '', logistics_company: '',
logistics_sn: '', logistics_sn: '',
...@@ -256,14 +251,18 @@ ...@@ -256,14 +251,18 @@
}, },
methods: { methods: {
/** /**
* 获取日期 * 获取日期 时分秒
*/ */
getCurrentDate() { getCurrentDateTime() {
const today = new Date(); const now = new Date();
const year = today.getFullYear(); const year = now.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(today.getDate()).padStart(2, '0'); const day = String(now.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`; const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}, },
bindDateChange(e, type) { bindDateChange(e, type) {
if (type == 1) { if (type == 1) {
...@@ -665,4 +664,17 @@ ...@@ -665,4 +664,17 @@
<style scoped lang="scss"> <style scoped lang="scss">
@import '@/assets/css/arrivalRegister/splitGoods.scss'; @import '@/assets/css/arrivalRegister/splitGoods.scss';
::v-deep {
.uni-date-x .icon-calendar {
display: none !important;
}
.uni-date__x-input {
padding-left: 15rpx;
font-size: 17rpx;
height: 40rpx;
line-height: 40rpx;
}
}
</style> </style>
\ No newline at end of file
## 2.2.34(2024-04-24)
- 新增 日期点击事件,在点击日期时会触发该事件。
## 2.2.33(2024-04-15)
- 修复 抖音小程序事件传递失效bug
## 2.2.32(2024-02-20)
- 修复 日历的close事件触发异常的bug [详情](https://github.com/dcloudio/uni-ui/issues/844)
## 2.2.31(2024-02-20)
- 修复 h5平台 右边日历的月份默认+1的bug [详情](https://github.com/dcloudio/uni-ui/issues/841)
## 2.2.30(2024-01-31)
- 修复 隐藏“秒”时,在IOS15及以下版本时出现 结束时间在开始时间之前 的bug [详情](https://github.com/dcloudio/uni-ui/issues/788)
## 2.2.29(2024-01-20)
- 新增 show事件,弹窗弹出时触发该事件 [详情](https://github.com/dcloudio/uni-app/issues/4694)
## 2.2.28(2024-01-18)
- 去除 noChange事件,当进行日期范围选择时,若只选了一天,则开始结束日期都为同一天 [详情](https://github.com/dcloudio/uni-ui/issues/815)
## 2.2.27(2024-01-10)
- 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815)
## 2.2.26(2024-01-08)
- 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834)
## 2.2.25(2023-10-18)
- 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
## 2.2.24(2023-06-02) ## 2.2.24(2023-06-02)
- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) - 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146)
- 优化 当前月可以选择上月、下月的日期 - 优化 当前月可以选择上月、下月的日期的Bug
## 2.2.23(2023-05-02) ## 2.2.23(2023-05-02)
- 修复 部分情况修改时间,开始时间未更新 [详情](https://github.com/dcloudio/uni-ui/issues/737) - 修复 部分情况修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
- 修复 部分平台及设备第一次点击无法显示弹框 - 修复 部分平台及设备第一次点击无法显示弹框的Bug
- 修复 ios 日期格式未补零显示及使用异常 [详情](https://ask.dcloud.net.cn/question/162979) - 修复 ios 日期格式未补零显示及使用异常的Bug [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.22(2023-03-30) ## 2.2.22(2023-03-30)
- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) - 修复 日历 picker 修改年月后,自动选中当月1日的Bug [详情](https://ask.dcloud.net.cn/question/165937)
- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) - 修复 小程序端 低版本 ios NaN的Bug [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.21(2023-02-20) ## 2.2.21(2023-02-20)
- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) - 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362)
## 2.2.20(2023-02-17) ## 2.2.20(2023-02-17)
- 优化 值为空依然选中当天问题 - 优化 值为空依然选中当天问题
- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 - 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间
- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 - 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间
- 优化 字节小程序日期时间范围选择,底部日期换行问题 - 优化 字节小程序日期时间范围选择,底部日期换行的Bug
## 2.2.19(2023-02-09) ## 2.2.19(2023-02-09)
- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) - 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686)
## 2.2.18(2023-02-08) ## 2.2.18(2023-02-08)
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<view class="uni-calendar__header-btn uni-calendar--right"></view> <view class="uni-calendar__header-btn uni-calendar--right"></view>
</view> </view>
<view v-if="!insert" class="dialog-close" @click="close"> <view v-if="!insert" class="dialog-close" @click="maskClick">
<view class="dialog-close-plus" data-id="close"></view> <view class="dialog-close-plus" data-id="close"></view>
<view class="dialog-close-plus dialog-close-rotate" data-id="close"></view> <view class="dialog-close-plus dialog-close-rotate" data-id="close"></view>
</view> </view>
...@@ -58,9 +58,8 @@ ...@@ -58,9 +58,8 @@
<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex"> <view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex"> <view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar" <calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar" :selected="selected"
:selected="selected" :checkHover="range" @change="choiceDate" :checkHover="range" @change="choiceDate" @handleMouse="handleMouse">
@handleMouse="handleMouse">
</calendar-item> </calendar-item>
</view> </view>
</view> </view>
...@@ -101,13 +100,21 @@ ...@@ -101,13 +100,21 @@
</template> </template>
<script> <script>
import { Calendar, getDate, getTime } from './util.js'; import {
Calendar,
getDate,
getTime
} from './util.js';
import calendarItem from './calendar-item.vue' import calendarItem from './calendar-item.vue'
import timePicker from './time-picker.vue' import timePicker from './time-picker.vue'
import { initVueI18n } from '@dcloudio/uni-i18n' import {
initVueI18n
} from '@dcloudio/uni-i18n'
import i18nMessages from './i18n/index.js' import i18nMessages from './i18n/index.js'
const { t } = initVueI18n(i18nMessages) const {
t
} = initVueI18n(i18nMessages)
/** /**
* Calendar 日历 * Calendar 日历
...@@ -134,6 +141,15 @@ ...@@ -134,6 +141,15 @@
calendarItem, calendarItem,
timePicker timePicker
}, },
options: {
// #ifdef MP-TOUTIAO
virtualHost: false,
// #endif
// #ifndef MP-TOUTIAO
virtualHost: true
// #endif
},
props: { props: {
date: { date: {
type: String, type: String,
...@@ -260,7 +276,7 @@ ...@@ -260,7 +276,7 @@
}, },
startDate(val) { startDate(val) {
// 字节小程序 watch 早于 created // 字节小程序 watch 早于 created
if(!this.cale){ if (!this.cale) {
return return
} }
this.cale.setStartDate(val) this.cale.setStartDate(val)
...@@ -269,7 +285,7 @@ ...@@ -269,7 +285,7 @@
}, },
endDate(val) { endDate(val) {
// 字节小程序 watch 早于 created // 字节小程序 watch 早于 created
if(!this.cale){ if (!this.cale) {
return return
} }
this.cale.setEndDate(val) this.cale.setEndDate(val)
...@@ -278,7 +294,7 @@ ...@@ -278,7 +294,7 @@
}, },
selected(newVal) { selected(newVal) {
// 字节小程序 watch 早于 created // 字节小程序 watch 早于 created
if(!this.cale){ if (!this.cale) {
return return
} }
this.cale.setSelectInfo(this.nowDate.fullDate, newVal) this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
...@@ -310,7 +326,7 @@ ...@@ -310,7 +326,7 @@
} }
} else { } else {
// 字节小程序 watch 早于 created // 字节小程序 watch 早于 created
if(!this.cale){ if (!this.cale) {
return return
} }
...@@ -318,7 +334,7 @@ ...@@ -318,7 +334,7 @@
if (which === 'left' && before) { if (which === 'left' && before) {
this.setDate(before) this.setDate(before)
this.weeks = this.cale.weeks this.weeks = this.cale.weeks
} else if(after) { } else if (after) {
this.setDate(after) this.setDate(after)
this.weeks = this.cale.weeks this.weeks = this.cale.weeks
} }
...@@ -455,22 +471,24 @@ ...@@ -455,22 +471,24 @@
*/ */
init(date) { init(date) {
// 字节小程序 watch 早于 created // 字节小程序 watch 早于 created
if(!this.cale){ if (!this.cale) {
return return
} }
this.cale.setDate(date || new Date()) this.cale.setDate(date || new Date())
this.weeks = this.cale.weeks this.weeks = this.cale.weeks
this.nowDate = this.cale.getInfo(date) this.nowDate = this.cale.getInfo(date)
this.calendar = {...this.nowDate} this.calendar = {
if(!date){ ...this.nowDate
}
if (!date) {
// 优化date为空默认不选中今天 // 优化date为空默认不选中今天
this.calendar.fullDate = '' this.calendar.fullDate = ''
if(this.defaultValue && !this.range){ if (this.defaultValue && !this.range) {
// 暂时只支持移动端非范围选择 // 暂时只支持移动端非范围选择
const defaultDate = new Date(this.defaultValue) const defaultDate = new Date(this.defaultValue)
const fullDate = getDate(defaultDate) const fullDate = getDate(defaultDate)
const year = defaultDate.getFullYear() const year = defaultDate.getFullYear()
const month = defaultDate.getMonth()+1 const month = defaultDate.getMonth() + 1
const date = defaultDate.getDate() const date = defaultDate.getDate()
const day = defaultDate.getDay() const day = defaultDate.getDay()
this.calendar = { this.calendar = {
...@@ -523,8 +541,8 @@ ...@@ -523,8 +541,8 @@
/** /**
* 变化触发 * 变化触发
*/ */
change() { change(isSingleChange) {
if (!this.insert) return if (!this.insert && !isSingleChange) return
this.setEmit('change') this.setEmit('change')
}, },
/** /**
...@@ -545,12 +563,12 @@ ...@@ -545,12 +563,12 @@
* @param {Object} name * @param {Object} name
*/ */
setEmit(name) { setEmit(name) {
if(!this.range){ if (!this.range) {
if(!this.calendar.fullDate){ if (!this.calendar.fullDate) {
this.calendar = this.cale.getInfo(new Date()) this.calendar = this.cale.getInfo(new Date())
this.tempSingleDate = this.calendar.fullDate this.tempSingleDate = this.calendar.fullDate
} }
if(this.hasTime && !this.time) { if (this.hasTime && !this.time) {
this.time = getTime(new Date(), this.hideSecond) this.time = getTime(new Date(), this.hideSecond)
} }
} }
...@@ -586,7 +604,6 @@ ...@@ -586,7 +604,6 @@
this.tempSingleDate = this.calendar.fullDate this.tempSingleDate = this.calendar.fullDate
const beforeDate = new Date(this.cale.multipleStatus.before).getTime() const beforeDate = new Date(this.cale.multipleStatus.before).getTime()
const afterDate = new Date(this.cale.multipleStatus.after).getTime() const afterDate = new Date(this.cale.multipleStatus.after).getTime()
// 如果先选择结束日期,后选择开始日期,需要交换
if (beforeDate > afterDate && afterDate) { if (beforeDate > afterDate && afterDate) {
this.tempRange.before = this.cale.multipleStatus.after this.tempRange.before = this.cale.multipleStatus.after
this.tempRange.after = this.cale.multipleStatus.before this.tempRange.after = this.cale.multipleStatus.before
...@@ -594,13 +611,13 @@ ...@@ -594,13 +611,13 @@
this.tempRange.before = this.cale.multipleStatus.before this.tempRange.before = this.cale.multipleStatus.before
this.tempRange.after = this.cale.multipleStatus.after this.tempRange.after = this.cale.multipleStatus.after
} }
this.change() this.change(true)
}, },
changeMonth(type) { changeMonth(type) {
let newDate let newDate
if(type === 'pre') { if (type === 'pre') {
newDate = this.cale.getPreMonthObj(this.nowDate.fullDate).fullDate newDate = this.cale.getPreMonthObj(this.nowDate.fullDate).fullDate
} else if(type === 'next') { } else if (type === 'next') {
newDate = this.cale.getNextMonthObj(this.nowDate.fullDate).fullDate newDate = this.cale.getNextMonthObj(this.nowDate.fullDate).fullDate
} }
...@@ -620,7 +637,7 @@ ...@@ -620,7 +637,7 @@
} }
</script> </script>
<style lang="scss" > <style lang="scss">
$uni-primary: #007aff !default; $uni-primary: #007aff !default;
.uni-calendar { .uni-calendar {
...@@ -925,5 +942,6 @@ ...@@ -925,5 +942,6 @@
.uni-datetime-picker--btn:active { .uni-datetime-picker--btn:active {
opacity: 0.7; opacity: 0.7;
} }
/* #endif */ /* #endif */
</style> </style>
...@@ -81,10 +81,16 @@ ...@@ -81,10 +81,16 @@
</template> </template>
<script> <script>
import { initVueI18n } from '@dcloudio/uni-i18n' import {
initVueI18n
} from '@dcloudio/uni-i18n'
import i18nMessages from './i18n/index.js' import i18nMessages from './i18n/index.js'
const { t } = initVueI18n(i18nMessages) const {
import { fixIosDateFormat } from './util' t
} = initVueI18n(i18nMessages)
import {
fixIosDateFormat
} from './util'
/** /**
* DatetimePicker 时间选择器 * DatetimePicker 时间选择器
...@@ -134,6 +140,14 @@ ...@@ -134,6 +140,14 @@
endSecond: 59, endSecond: 59,
} }
}, },
options: {
// #ifdef MP-TOUTIAO
virtualHost: false,
// #endif
// #ifndef MP-TOUTIAO
virtualHost: true
// #endif
},
props: { props: {
type: { type: {
type: String, type: String,
...@@ -649,14 +663,6 @@ ...@@ -649,14 +663,6 @@
return new Date(year, month, 0).getDate(); return new Date(year, month, 0).getDate();
}, },
//兼容 iOS、safari 日期格式
fixIosDateFormat(value) {
if (typeof value === 'string') {
value = value.replace(/-/g, '/')
}
return value
},
/** /**
* 生成时间戳 * 生成时间戳
* @param {Object} time * @param {Object} time
......
...@@ -49,26 +49,26 @@ class Calendar { ...@@ -49,26 +49,26 @@ class Calendar {
this.endDate = endDate this.endDate = endDate
} }
getPreMonthObj(date){ getPreMonthObj(date) {
date = fixIosDateFormat(date) date = fixIosDateFormat(date)
date = new Date(date) date = new Date(date)
const oldMonth = date.getMonth() const oldMonth = date.getMonth()
date.setMonth(oldMonth - 1) date.setMonth(oldMonth - 1)
const newMonth = date.getMonth() const newMonth = date.getMonth()
if(oldMonth !== 0 && newMonth - oldMonth === 0){ if (oldMonth !== 0 && newMonth - oldMonth === 0) {
date.setMonth(newMonth - 1) date.setMonth(newMonth - 1)
} }
return this.getDateObj(date) return this.getDateObj(date)
} }
getNextMonthObj(date){ getNextMonthObj(date) {
date = fixIosDateFormat(date) date = fixIosDateFormat(date)
date = new Date(date) date = new Date(date)
const oldMonth = date.getMonth() const oldMonth = date.getMonth()
date.setMonth(oldMonth + 1) date.setMonth(oldMonth + 1)
const newMonth = date.getMonth() const newMonth = date.getMonth()
if(newMonth - oldMonth > 1){ if (newMonth - oldMonth > 1) {
date.setMonth(newMonth - 1) date.setMonth(newMonth - 1)
} }
return this.getDateObj(date) return this.getDateObj(date)
...@@ -96,36 +96,11 @@ class Calendar { ...@@ -96,36 +96,11 @@ class Calendar {
getPreMonthDays(amount, dateObj) { getPreMonthDays(amount, dateObj) {
const result = [] const result = []
for (let i = amount - 1; i >= 0; i--) { for (let i = amount - 1; i >= 0; i--) {
const month = dateObj.month > 1 ? dateObj.month -1 : 12 const month = dateObj.month - 1
const year = month === 12 ? dateObj.year - 1 : dateObj.year
const date = new Date(year,month,-i).getDate()
const fullDate = `${year}-${addZero(month)}-${addZero(date)}`
let multiples = this.multipleStatus.data
let multiplesStatus = -1
if (this.range && multiples) {
multiplesStatus = multiples.findIndex((item) => {
return this.dateEqual(item, fullDate)
})
}
const checked = multiplesStatus !== -1
// 获取打点信息
const extraInfo = this.selected && this.selected.find((item) => {
if (this.dateEqual(fullDate, item.date)) {
return item
}
})
result.push({ result.push({
fullDate, date: new Date(dateObj.year, month, -i).getDate(),
year,
month, month,
date, disable: true
multiple: this.range ? checked : false,
beforeMultiple: this.isLogicBefore(fullDate, this.multipleStatus.before, this.multipleStatus.after),
afterMultiple: this.isLogicAfter(fullDate, this.multipleStatus.before, this.multipleStatus.after),
disable: (this.startDate && !dateCompare(this.startDate, fullDate)) || (this.endDate && !dateCompare(fullDate,this.endDate)),
isToday: fullDate === this.date.fullDate,
userChecked: false,
extraInfo
}) })
} }
return result return result
...@@ -140,7 +115,7 @@ class Calendar { ...@@ -140,7 +115,7 @@ class Calendar {
const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}`
const isToday = fullDate === currentDate const isToday = fullDate === currentDate
// 获取打点信息 // 获取打点信息
const extraInfo = this.selected && this.selected.find((item) => { const info = this.selected && this.selected.find((item) => {
if (this.dateEqual(currentDate, item.date)) { if (this.dateEqual(currentDate, item.date)) {
return item return item
} }
...@@ -169,15 +144,16 @@ class Calendar { ...@@ -169,15 +144,16 @@ class Calendar {
result.push({ result.push({
fullDate: currentDate, fullDate: currentDate,
year: dateObj.year, year: dateObj.year,
month: dateObj.month,
date: i, date: i,
multiple: this.range ? checked : false, multiple: this.range ? checked : false,
beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after),
afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after),
disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)), month: dateObj.month,
disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(
currentDate, this.endDate)),
isToday, isToday,
userChecked: false, userChecked: false,
extraInfo extraInfo: info
}) })
} }
return result return result
...@@ -189,35 +165,10 @@ class Calendar { ...@@ -189,35 +165,10 @@ class Calendar {
const result = [] const result = []
const month = dateObj.month + 1 const month = dateObj.month + 1
for (let i = 1; i <= amount; i++) { for (let i = 1; i <= amount; i++) {
const month = dateObj.month === 12 ? 1 : dateObj.month*1 + 1
const year = month === 1 ? dateObj.year + 1 : dateObj.year
const fullDate = `${year}-${addZero(month)}-${addZero(i)}`
let multiples = this.multipleStatus.data
let multiplesStatus = -1
if (this.range && multiples) {
multiplesStatus = multiples.findIndex((item) => {
return this.dateEqual(item, fullDate)
})
}
const checked = multiplesStatus !== -1
// 获取打点信息
const extraInfo = this.selected && this.selected.find((item) => {
if (this.dateEqual(fullDate, item.date)) {
return item
}
})
result.push({ result.push({
fullDate,
year,
date: i, date: i,
month, month,
multiple: this.range ? checked : false, disable: true
beforeMultiple: this.isLogicBefore(fullDate, this.multipleStatus.before, this.multipleStatus.after),
afterMultiple: this.isLogicAfter(fullDate, this.multipleStatus.before, this.multipleStatus.after),
disable: (this.startDate && !dateCompare(this.startDate, fullDate)) || (this.endDate && !dateCompare(fullDate,this.endDate)),
isToday: fullDate === this.date.fullDate,
userChecked: false,
extraInfo
}) })
} }
return result return result
...@@ -309,6 +260,7 @@ class Calendar { ...@@ -309,6 +260,7 @@ class Calendar {
} else { } else {
if (!before) { if (!before) {
this.multipleStatus.before = fullDate this.multipleStatus.before = fullDate
this.multipleStatus.after = undefined;
this.lastHover = false this.lastHover = false
} else { } else {
this.multipleStatus.after = fullDate this.multipleStatus.after = fullDate
...@@ -329,9 +281,12 @@ class Calendar { ...@@ -329,9 +281,12 @@ class Calendar {
* 鼠标 hover 更新多选状态 * 鼠标 hover 更新多选状态
*/ */
setHoverMultiple(fullDate) { setHoverMultiple(fullDate) {
//抖音小程序点击会触发hover事件,需要避免一下
// #ifndef MP-TOUTIAO
if (!this.range || this.lastHover) return if (!this.range || this.lastHover) return
const {
const { before } = this.multipleStatus before
} = this.multipleStatus
if (!before) { if (!before) {
this.multipleStatus.before = fullDate this.multipleStatus.before = fullDate
...@@ -344,6 +299,8 @@ class Calendar { ...@@ -344,6 +299,8 @@ class Calendar {
} }
} }
this.getWeeks(fullDate) this.getWeeks(fullDate)
// #endif
} }
/** /**
...@@ -387,7 +344,7 @@ class Calendar { ...@@ -387,7 +344,7 @@ class Calendar {
const weeks = new Array(6) const weeks = new Array(6)
for (let i = 0; i < calendarDays.length; i++) { for (let i = 0; i < calendarDays.length; i++) {
const index = Math.floor(i / 7) const index = Math.floor(i / 7)
if(!weeks[index]){ if (!weeks[index]) {
weeks[index] = new Array(7) weeks[index] = new Array(7)
} }
weeks[index][i % 7] = calendarDays[i] weeks[index][i % 7] = calendarDays[i]
...@@ -398,7 +355,7 @@ class Calendar { ...@@ -398,7 +355,7 @@ class Calendar {
} }
} }
function getDateTime(date, hideSecond){ function getDateTime(date, hideSecond) {
return `${getDate(date)} ${getTime(date, hideSecond)}` return `${getDate(date)} ${getTime(date, hideSecond)}`
} }
...@@ -406,12 +363,12 @@ function getDate(date) { ...@@ -406,12 +363,12 @@ function getDate(date) {
date = fixIosDateFormat(date) date = fixIosDateFormat(date)
date = new Date(date) date = new Date(date)
const year = date.getFullYear() const year = date.getFullYear()
const month = date.getMonth()+1 const month = date.getMonth() + 1
const day = date.getDate() const day = date.getDate()
return `${year}-${addZero(month)}-${addZero(day)}` return `${year}-${addZero(month)}-${addZero(day)}`
} }
function getTime(date, hideSecond){ function getTime(date, hideSecond) {
date = fixIosDateFormat(date) date = fixIosDateFormat(date)
date = new Date(date) date = new Date(date)
const hour = date.getHours() const hour = date.getHours()
...@@ -421,7 +378,7 @@ function getTime(date, hideSecond){ ...@@ -421,7 +378,7 @@ function getTime(date, hideSecond){
} }
function addZero(num) { function addZero(num) {
if(num < 10){ if (num < 10) {
num = `0${num}` num = `0${num}`
} }
return num return num
...@@ -437,12 +394,13 @@ function dateCompare(startDate, endDate) { ...@@ -437,12 +394,13 @@ function dateCompare(startDate, endDate) {
return startDate <= endDate return startDate <= endDate
} }
function checkDate(date){ function checkDate(date) {
const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g
return date.match(dateReg) return date.match(dateReg)
} }
//ios低版本15及以下,无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号
const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/;
const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])?$/
function fixIosDateFormat(value) { function fixIosDateFormat(value) {
if (typeof value === 'string' && dateTimeReg.test(value)) { if (typeof value === 'string' && dateTimeReg.test(value)) {
value = value.replace(/-/g, '/') value = value.replace(/-/g, '/')
...@@ -450,4 +408,14 @@ function fixIosDateFormat(value) { ...@@ -450,4 +408,14 @@ function fixIosDateFormat(value) {
return value return value
} }
export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat} export {
\ No newline at end of file Calendar,
getDateTime,
getDate,
getTime,
addZero,
getDefaultSecond,
dateCompare,
checkDate,
fixIosDateFormat
}
{ {
"id": "uni-datetime-picker", "id": "uni-datetime-picker",
"displayName": "uni-datetime-picker 日期选择器", "displayName": "uni-datetime-picker 日期选择器",
"version": "2.2.24", "version": "2.2.34",
"description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
"keywords": [ "keywords": [
"uni-datetime-picker", "uni-datetime-picker",
...@@ -46,7 +46,8 @@ ...@@ -46,7 +46,8 @@
"platforms": { "platforms": {
"cloud": { "cloud": {
"tcb": "y", "tcb": "y",
"aliyun": "y" "aliyun": "y",
"alipay": "n"
}, },
"client": { "client": {
"App": { "App": {
......
## 2.0.10(2024-06-07)
- 优化 uni-app x 中,size 属性的类型
## 2.0.9(2024-01-12)
fix: 修复图标大小默认值错误的问题
## 2.0.8(2023-12-14)
- 修复 项目未使用 ts 情况下,打包报错的bug
## 2.0.7(2023-12-14)
- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug
## 2.0.6(2023-12-11)
- 优化 兼容老版本icon类型,如 top ,bottom 等
## 2.0.5(2023-12-11)
- 优化 兼容老版本icon类型,如 top ,bottom 等
## 2.0.4(2023-12-06)
- 优化 uni-app x 下示例项目图标排序
## 2.0.3(2023-12-06)
- 修复 nvue下引入组件报错的bug
## 2.0.2(2023-12-05)
-优化 size 属性支持单位
## 2.0.1(2023-12-05)
- 新增 uni-app x 支持定义图标
## 1.3.5(2022-01-24) ## 1.3.5(2022-01-24)
- 优化 size 属性可以传入不带单位的字符串数值 - 优化 size 属性可以传入不带单位的字符串数值
## 1.3.4(2022-01-24) ## 1.3.4(2022-01-24)
......
<template>
<text class="uni-icons" :style="styleObj">
<slot>{{unicode}}</slot>
</text>
</template>
<script>
import { fontData, IconsDataItem } from './uniicons_file'
/**
* Icons 图标
* @description 用于展示 icon 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number,String} size 图标大小
* @property {String} type 图标图案,参考示例
* @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件
*/
export default {
name: "uni-icons",
props: {
type: {
type: String,
default: ''
},
color: {
type: String,
default: '#333333'
},
size: {
type: [Number, String],
default: 16
},
fontFamily: {
type: String,
default: ''
}
},
data() {
return {};
},
computed: {
unicode() : string {
let codes = fontData.find((item : IconsDataItem) : boolean => { return item.font_class == this.type })
if (codes !== null) {
return codes.unicode
}
return ''
},
iconSize() : string {
const size = this.size
if (typeof size == 'string') {
const reg = /^[0-9]*$/g
return reg.test(size as string) ? '' + size + 'px' : '' + size;
// return '' + this.size
}
return this.getFontSize(size as number)
},
styleObj() : UTSJSONObject {
if (this.fontFamily !== '') {
return { color: this.color, fontSize: this.iconSize, fontFamily: this.fontFamily }
}
return { color: this.color, fontSize: this.iconSize }
}
},
created() { },
methods: {
/**
* 字体大小
*/
getFontSize(size : number) : string {
return size + 'px';
},
},
}
</script>
<style scoped>
@font-face {
font-family: UniIconsFontFamily;
src: url('./uniicons.ttf');
}
.uni-icons {
font-family: UniIconsFontFamily;
font-size: 18px;
font-style: normal;
color: #333;
}
</style>
<template> <template>
<!-- #ifdef APP-NVUE --> <!-- #ifdef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text> <text :style="styleObj" class="uni-icons" @click="_onClick">{{unicode}}</text>
<!-- #endif --> <!-- #endif -->
<!-- #ifndef APP-NVUE --> <!-- #ifndef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text> <text :style="styleObj" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick">
<slot></slot>
</text>
<!-- #endif --> <!-- #endif -->
</template> </template>
<script> <script>
import icons from './icons.js'; import { fontData } from './uniicons_file_vue.js';
const getVal = (val) => { const getVal = (val) => {
const reg = /^[0-9]*$/g const reg = /^[0-9]*$/g
return (typeof val === 'number' || reg.test(val) )? val + 'px' : val; return (typeof val === 'number' || reg.test(val)) ? val + 'px' : val;
} }
// #ifdef APP-NVUE // #ifdef APP-NVUE
var domModule = weex.requireModule('dom'); var domModule = weex.requireModule('dom');
import iconUrl from './uniicons.ttf' import iconUrl from './uniicons.ttf'
domModule.addRule('fontFace', { domModule.addRule('fontFace', {
'fontFamily': "uniicons", 'fontFamily': "uniicons",
'src': "url('"+iconUrl+"')" 'src': "url('" + iconUrl + "')"
}); });
// #endif // #endif
...@@ -34,7 +38,7 @@ ...@@ -34,7 +38,7 @@
*/ */
export default { export default {
name: 'UniIcons', name: 'UniIcons',
emits:['click'], emits: ['click'],
props: { props: {
type: { type: {
type: String, type: String,
...@@ -48,26 +52,36 @@ ...@@ -48,26 +52,36 @@
type: [Number, String], type: [Number, String],
default: 16 default: 16
}, },
customPrefix:{ customPrefix: {
type: String,
default: ''
},
fontFamily: {
type: String, type: String,
default: '' default: ''
} }
}, },
data() { data() {
return { return {
icons: icons.glyphs icons: fontData
} }
}, },
computed:{ computed: {
unicode(){ unicode() {
let code = this.icons.find(v=>v.font_class === this.type) let code = this.icons.find(v => v.font_class === this.type)
if(code){ if (code) {
return unescape(`%u${code.unicode}`) return code.unicode
} }
return '' return ''
}, },
iconSize(){ iconSize() {
return getVal(this.size) return getVal(this.size)
},
styleObj() {
if (this.fontFamily !== '') {
return `color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};`
}
return `color: ${this.color}; font-size: ${this.iconSize};`
} }
}, },
methods: { methods: {
...@@ -81,9 +95,10 @@ ...@@ -81,9 +95,10 @@
<style lang="scss"> <style lang="scss">
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
@import './uniicons.css'; @import './uniicons.css';
@font-face { @font-face {
font-family: uniicons; font-family: uniicons;
src: url('./uniicons.ttf') format('truetype'); src: url('./uniicons.ttf');
} }
/* #endif */ /* #endif */
...@@ -92,5 +107,4 @@ ...@@ -92,5 +107,4 @@
text-decoration: none; text-decoration: none;
text-align: center; text-align: center;
} }
</style> </style>
.uniui-cart-filled:before {
content: "\e6d0";
}
.uniui-gift-filled:before {
content: "\e6c4";
}
.uniui-color:before { .uniui-color:before {
content: "\e6cf"; content: "\e6cf";
} }
...@@ -58,10 +67,6 @@ ...@@ -58,10 +67,6 @@
content: "\e6c3"; content: "\e6c3";
} }
.uniui-gift-filled:before {
content: "\e6c4";
}
.uniui-fire-filled:before { .uniui-fire-filled:before {
content: "\e6c5"; content: "\e6c5";
} }
...@@ -82,6 +87,18 @@ ...@@ -82,6 +87,18 @@
content: "\e698"; content: "\e698";
} }
.uniui-arrowthinleft:before {
content: "\e6d2";
}
.uniui-arrowthinup:before {
content: "\e6d3";
}
.uniui-arrowthindown:before {
content: "\e6d4";
}
.uniui-back:before { .uniui-back:before {
content: "\e6b9"; content: "\e6b9";
} }
...@@ -94,55 +111,43 @@ ...@@ -94,55 +111,43 @@
content: "\e6bb"; content: "\e6bb";
} }
.uniui-arrowthinright:before {
content: "\e6bb";
}
.uniui-arrow-left:before { .uniui-arrow-left:before {
content: "\e6bc"; content: "\e6bc";
} }
.uniui-arrowthinleft:before {
content: "\e6bc";
}
.uniui-arrow-up:before { .uniui-arrow-up:before {
content: "\e6bd"; content: "\e6bd";
} }
.uniui-arrowthinup:before {
content: "\e6bd";
}
.uniui-arrow-down:before { .uniui-arrow-down:before {
content: "\e6be"; content: "\e6be";
} }
.uniui-arrowthindown:before { .uniui-arrowthinright:before {
content: "\e6be"; content: "\e6d1";
} }
.uniui-bottom:before { .uniui-down:before {
content: "\e6b8"; content: "\e6b8";
} }
.uniui-arrowdown:before { .uniui-bottom:before {
content: "\e6b8"; content: "\e6b8";
} }
.uniui-right:before { .uniui-arrowright:before {
content: "\e6b5"; content: "\e6d5";
} }
.uniui-arrowright:before { .uniui-right:before {
content: "\e6b5"; content: "\e6b5";
} }
.uniui-top:before { .uniui-up:before {
content: "\e6b6"; content: "\e6b6";
} }
.uniui-arrowup:before { .uniui-top:before {
content: "\e6b6"; content: "\e6b6";
} }
...@@ -150,8 +155,8 @@ ...@@ -150,8 +155,8 @@
content: "\e6b7"; content: "\e6b7";
} }
.uniui-arrowleft:before { .uniui-arrowup:before {
content: "\e6b7"; content: "\e6d6";
} }
.uniui-eye:before { .uniui-eye:before {
...@@ -638,10 +643,6 @@ ...@@ -638,10 +643,6 @@
content: "\e627"; content: "\e627";
} }
.uniui-cart-filled:before {
content: "\e629";
}
.uniui-checkbox:before { .uniui-checkbox:before {
content: "\e62b"; content: "\e62b";
} }
......
{ {
"id": "uni-icons", "id": "uni-icons",
"displayName": "uni-icons 图标", "displayName": "uni-icons 图标",
"version": "1.3.5", "version": "2.0.10",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [ "keywords": [
"uni-ui", "uni-ui",
...@@ -16,11 +16,7 @@ ...@@ -16,11 +16,7 @@
"directories": { "directories": {
"example": "../../temps/example_temps" "example": "../../temps/example_temps"
}, },
"dcloudext": { "dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": { "sale": {
"regular": { "regular": {
"price": "0.00" "price": "0.00"
...@@ -37,7 +33,8 @@ ...@@ -37,7 +33,8 @@
"data": "无", "data": "无",
"permissions": "无" "permissions": "无"
}, },
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
}, },
"uni_modules": { "uni_modules": {
"dependencies": ["uni-scss"], "dependencies": ["uni-scss"],
...@@ -45,12 +42,14 @@ ...@@ -45,12 +42,14 @@
"platforms": { "platforms": {
"cloud": { "cloud": {
"tcb": "y", "tcb": "y",
"aliyun": "y" "aliyun": "y",
"alipay": "n"
}, },
"client": { "client": {
"App": { "App": {
"app-vue": "y", "app-vue": "y",
"app-nvue": "y" "app-nvue": "y",
"app-uvue": "y"
}, },
"H5-mobile": { "H5-mobile": {
"Safari": "y", "Safari": "y",
...@@ -70,11 +69,15 @@ ...@@ -70,11 +69,15 @@
"阿里": "y", "阿里": "y",
"百度": "y", "百度": "y",
"字节跳动": "y", "字节跳动": "y",
"QQ": "y" "QQ": "y",
"钉钉": "y",
"快手": "y",
"飞书": "y",
"京东": "y"
}, },
"快应用": { "快应用": {
"华为": "u", "华为": "y",
"联盟": "u" "联盟": "y"
}, },
"Vue": { "Vue": {
"vue2": "y", "vue2": "y",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment