mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-12 22:29:59 +08:00
75 lines
1.6 KiB
Vue
75 lines
1.6 KiB
Vue
<template>
|
|
<el-time-picker
|
|
:ref="metadata.columnName"
|
|
v-model="value"
|
|
:picker-options="{
|
|
minTime: minValue,
|
|
maxTime: maxValue
|
|
}"
|
|
:is-range="isPickerRange"
|
|
range-separator="-"
|
|
:placeholder="$t('components.timePlaceholder')"
|
|
:class="cssClassStyle"
|
|
:readonly="Boolean(metadata.readonly)"
|
|
:disabled="isDisabled"
|
|
@change="preHandleChange"
|
|
@blur="focusLost"
|
|
@focus="focusGained"
|
|
@keydown.native="keyPressed"
|
|
@keyup.native="keyReleased"
|
|
/>
|
|
</template>
|
|
|
|
<script>
|
|
import fieldMixin from '@/components/ADempiere/Field/mixin/mixinField.js'
|
|
|
|
export default {
|
|
name: 'FieldTime',
|
|
mixins: [fieldMixin],
|
|
computed: {
|
|
isPickerRange() {
|
|
if (this.metadata.isRange && !this.metadata.inTable) {
|
|
return true
|
|
}
|
|
return false
|
|
},
|
|
maxValue() {
|
|
if (!this.isEmptyValue(this.metadata.valueMax)) {
|
|
return Number(this.metadata.valueMax)
|
|
}
|
|
return Infinity
|
|
},
|
|
minValue() {
|
|
if (!this.isEmptyValue(this.metadata.valueMin)) {
|
|
return Number(this.metadata.valueMin)
|
|
}
|
|
return -Infinity
|
|
},
|
|
cssClassStyle() {
|
|
let styleClass = ' custom-field-time '
|
|
if (!this.isEmptyValue(this.metadata.cssClassName)) {
|
|
styleClass += this.metadata.cssClassName
|
|
}
|
|
return styleClass
|
|
}
|
|
},
|
|
methods: {
|
|
parseValue(value) {
|
|
if (typeof value === 'number') {
|
|
value = new Date(value).toUTCString()
|
|
}
|
|
if (this.isEmptyValue(value)) {
|
|
value = undefined
|
|
}
|
|
return value
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.custom-field-time {
|
|
width: 100% !important;
|
|
}
|
|
</style>
|