初始化万家商超用户端仓库

This commit is contained in:
wangxiaowei
2025-04-30 14:04:34 +08:00
commit 022c640d89
425 changed files with 160005 additions and 0 deletions

View File

@ -0,0 +1,243 @@
<template>
<view class="w-picker-view">
<picker-view class="d-picker-view" :indicator-style="itemHeight" :value="pickVal" @change="handlerChange">
<picker-view-column>
<view class="w-picker-item" v-for="(item, index) in range.hours" :key="index">{{ item }}时</view>
</picker-view-column>
<picker-view-column>
<view class="w-picker-item" v-for="(item, index) in range.minutes" :key="index">{{ item }}分</view>
</picker-view-column>
<picker-view-column v-if="second">
<view class="w-picker-item" v-for="(item, index) in range.seconds" :key="index">{{ item }}</view>
</picker-view-column>
</picker-view>
</view>
</template>
<script>
export default {
data() {
return {
pickVal: [],
range: {},
checkObj: {},
}
},
props: {
itemHeight: {
type: String,
default: '44px',
},
value: {
type: [String, Array, Number],
default: '',
},
current: {
//是否默认选中当前日期
type: Boolean,
default: false,
},
second: {
type: Boolean,
default: true,
},
},
watch: {
value(val) {
this.initData()
},
},
created() {
this.initData()
},
methods: {
formatNum(n) {
return Number(n) < 10 ? '0' + Number(n) : Number(n) + ''
},
checkValue(value) {
let strReg = /^\d{2}:\d{2}:\d{2}$/,
example = '18:00:05'
if (!strReg.test(value)) {
console.log(new Error('请传入与mode、fields匹配的value值例value=' + example + ''))
}
return strReg.test(value)
},
resetData(year, month, day, hour, minute) {
let curDate = this.getCurrenDate()
let curFlag = this.current
let curHour = curDate.curHour
let curMinute = curDate.curMinute
let curSecond = curDate.curSecond
for (let hour = 0; hour < 24; hour++) {
hours.push(this.formatNum(hour))
}
for (let minute = 0; minute < 60; minute++) {
minutes.push(this.formatNum(minute))
}
for (let second = 0; second < 60; second++) {
seconds.push(this.formatNum(second))
}
return {
hours,
minutes,
seconds,
}
},
getData(curDate) {
//用来处理初始化数据
let hours = [],
minutes = [],
seconds = []
let curFlag = this.current
let disabledAfter = this.disabledAfter
let fields = this.fields
let curHour = curDate.curHour
let curMinute = curDate.curMinute
let curSecond = curDate.curSecond
for (let hour = 0; hour < 24; hour++) {
hours.push(this.formatNum(hour))
}
for (let minute = 0; minute < 60; minute++) {
minutes.push(this.formatNum(minute))
}
for (let second = 0; second < 60; second++) {
seconds.push(this.formatNum(second))
}
return this.second
? {
hours,
minutes,
seconds,
}
: {
hours,
minutes,
}
},
getCurrenDate() {
let curDate = new Date()
let curHour = curDate.getHours()
let curMinute = curDate.getMinutes()
let curSecond = curDate.getSeconds()
return this.second
? {
curHour,
curMinute,
curSecond,
}
: {
curHour,
curMinute,
}
},
getDval() {
let value = this.value
let fields = this.fields
let dVal = null
let aDate = new Date()
let hour = this.formatNum(aDate.getHours())
let minute = this.formatNum(aDate.getMinutes())
let second = this.formatNum(aDate.getSeconds())
if (value) {
let flag = this.checkValue(value)
if (!flag) {
dVal = [hour, minute, second]
} else {
dVal = value ? value.split(':') : []
}
} else {
dVal = this.second ? [hour, minute, second] : [hour, minute]
}
return dVal
},
initData() {
let curDate = this.getCurrenDate()
let dateData = this.getData(curDate)
let pickVal = [],
obj = {},
full = '',
result = '',
hour = '',
minute = '',
second = ''
let dVal = this.getDval()
let curFlag = this.current
let disabledAfter = this.disabledAfter
let hours = dateData.hours
let minutes = dateData.minutes
let seconds = dateData.seconds
let defaultArr = this.second
? [
dVal[0] && hours.indexOf(dVal[0]) != -1 ? hours.indexOf(dVal[0]) : 0,
dVal[1] && minutes.indexOf(dVal[1]) != -1 ? minutes.indexOf(dVal[1]) : 0,
dVal[2] && seconds.indexOf(dVal[2]) != -1 ? seconds.indexOf(dVal[2]) : 0,
]
: [
dVal[0] && hours.indexOf(dVal[0]) != -1 ? hours.indexOf(dVal[0]) : 0,
dVal[1] && minutes.indexOf(dVal[1]) != -1 ? minutes.indexOf(dVal[1]) : 0,
]
pickVal = disabledAfter
? defaultArr
: curFlag
? this.second
? [
hours.indexOf(this.formatNum(curDate.curHour)),
minutes.indexOf(this.formatNum(curDate.curMinute)),
seconds.indexOf(this.formatNum(curDate.curSecond)),
]
: [hours.indexOf(this.formatNum(curDate.curHour)), minutes.indexOf(this.formatNum(curDate.curMinute))]
: defaultArr
this.range = dateData
this.checkObj = obj
hour = dVal[0] ? dVal[0] : hours[0]
minute = dVal[1] ? dVal[1] : minutes[0]
if (this.second) second = dVal[2] ? dVal[0] : seconds[0]
result = this.second ? `${hour + ':' + minute + ':' + second}` : `${hour + ':' + minute}`
full = this.second ? `${hour + ':' + minute + ':' + second}` : `${hour + ':' + minute + ':00'}`
this.$nextTick(() => {
this.pickVal = pickVal
})
this.$emit('change', {
result: result,
value: full,
obj: obj,
})
},
handlerChange(e) {
let arr = [...e.detail.value]
let data = this.range
let hour = '',
minute = '',
second = '',
result = '',
full = '',
obj = {}
hour = arr[0] || arr[0] == 0 ? data.hours[arr[0]] || data.hours[data.hours.length - 1] : ''
minute = arr[1] || arr[1] == 0 ? data.minutes[arr[1]] || data.minutes[data.minutes.length - 1] : ''
if (this.second) second = arr[2] || arr[2] == 0 ? data.seconds[arr[2]] || data.seconds[data.seconds.length - 1] : ''
obj = this.second
? {
hour,
minute,
second,
}
: {
hour,
minute,
}
this.checkObj = obj
result = this.second ? `${hour + ':' + minute + ':' + second}` : `${hour + ':' + minute}`
full = this.second ? `${hour + ':' + minute + ':' + second}` : `${hour + ':' + minute + ':00'}`
this.$emit('change', {
result: result,
value: full,
obj: obj,
})
},
},
}
</script>
<style lang="scss">
@import './w-picker.css';
</style>