fix: 新增时间选择器、日期时间选择器默认添加当前时间。优化选择器在时间格式变化时,数据数值型和字符串类型互换出现的报错

main
wu.jian2 2 years ago
parent 51df463203
commit 8fc2069fd5

@ -1,13 +1,14 @@
<template>
<el-date-picker
:key="config.customize.type"
v-model="config.customize.value"
v-model="value"
:picker-options="config.customize.pickerOptions"
:type="config.customize.type"
clearable
:class="['basic-component-date-picker', `date-picker-${config.code}`]"
:popper-class="'basic-component-date-picker date-picker-popper-' + config.code"
:value-format="config.customize.valueFormat"
:default-value="value"
size="large"
@focus="focusEvent"
@change="changeValue"
@ -16,6 +17,7 @@
</template>
<script>
import moment from 'moment'
import cloneDeep from 'lodash/cloneDeep'
import commonMixins from 'data-room-ui/js/mixins/commonMixins'
import linkageMixins from 'data-room-ui/js/mixins/linkageMixins'
@ -35,6 +37,7 @@ export default {
},
data () {
return {
value: '',
innerConfig: {}
}
},
@ -47,16 +50,30 @@ export default {
}
},
watch: {
config: {
handler: function (val) {
if (val && val.customize && val.customize.formatType === 'custom') {
//
this.$nextTick(() => {
this.config.customize.value = toString(this.config.customize.value)
})
'config.customize.formatType': {
handler (val) {
if (val === 'timestamp') {
this.value = 0
this.valueFormat = 'timestamp'
} else if (val === 'custom') {
this.value = ''
this.valueFormat = 'YYYY-MM-DD HH:mm:ss'
}
},
immediate: true
},
'config.customize.type': {
handler (val) {
if (['year', 'month', 'date', 'week', 'datetime'].includes(val)) {
this.value = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
} else {
this.value = [
moment(new Date()).subtract(7, 'days').format('YYYY-MM-DD HH:mm:ss'),
moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
]
}
},
deep: true
immediate: true
}
},
created () { },
@ -65,9 +82,11 @@ export default {
document.querySelector(`.date-picker-${this.config.code}`).style.pointerEvents = 'none'
}
this.changeStyle(this.config)
// config.customize.value
if (this.config.customize.value === '') {
this.config.customize.value = new Date()
if (this.value === '') {
this.value = [
moment(new Date()).subtract(7, 'days').format('YYYY-MM-DD HH:mm:ss'),
moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
]
}
},
beforeDestroy () {
@ -128,6 +147,7 @@ export default {
},
//
changeValue (val) {
console.log(val)
this.linkage({ [this.config.code]: val })
},
focusEvent () {
@ -171,7 +191,7 @@ export default {
})
},
mouseenter () {
if (this.config.customize.value) {
if (this.value) {
setTimeout(() => {
//
const timePickerCloseIcon = document.querySelector(`.date-picker-${this.innerConfig.code} .el-icon-circle-close`)

@ -114,7 +114,6 @@
class="bs-el-select"
popper-class="bs-el-select"
clearable
@change="selectFormatType"
>
<el-option
v-for="(type) in formatTypeOptions"
@ -163,6 +162,7 @@
</div>
</template>
<script>
import moment from 'moment'
import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
@ -210,7 +210,6 @@ export default {
{ label: '年', value: 'year' },
{ label: '月', value: 'month' },
{ label: '日', value: 'date' },
{ label: '周', value: 'week' },
{ label: '日期时间', value: 'datetime' },
{ label: '日期时间范围', value: 'datetimerange' },
{ label: '日期范围', value: 'daterange' }
@ -220,14 +219,25 @@ export default {
watch: {},
mounted () {},
methods: {
selectFormatType (type) {
if (type === 'timestamp') {
this.config.customize.value = 0
this.config.customize.valueFormat = 'timestamp'
} else if (type === 'custom') {
this.config.customize.valueFormat = 'yyyy-MM-dd HH:mm:ss'
}
}
// selectFormatType (type) {
// if (type === 'timestamp') {
// this.config.customize.value = 0
// this.config.customize.valueFormat = 'timestamp'
// } else if (type === 'custom') {
// this.config.customize.value = ''
// this.config.customize.valueFormat = 'YYYY-MM-DD HH:mm:ss'
// }
// },
// selectDisplayType (val) {
// if (['year', 'month', 'date', 'week', 'datetime'].includes(val)) {
// this.config.customize.value = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
// } else {
// this.config.customize.value = [
// moment(new Date()).subtract(7, 'days').format('YYYY-MM-DD HH:mm:ss'),
// moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
// ]
// }
// }
}
}
</script>

@ -22,15 +22,14 @@ const customConfig = {
},
// 自定义属性
customize: {
value: '',
// 选择框背景颜色
bgColor: '#35393F',
// 选择框文字颜色
fontColor: '#FFFFFF',
// 选择框文字大小
fontSize: 20,
// 显示类型 year/month/date/week/ datetime/datetimerange/daterange
type: 'datetime',
// 显示类型 year/month/date/ datetime/datetimerange/daterange
type: 'datetimerange',
// 时间格式化类型:时间戳timestamp自定义custom
formatType: 'custom',
// 绑定值的格式

@ -7,6 +7,7 @@
:class="['basic-component-time-picker', `time-picker-${config.code}`]"
:popper-class="'basic-component-time-picker time-picker-popper-' + config.code"
:value-format="config.customize.valueFormat"
:default-value="config.customize.value"
@focus="focusEvent"
@change="changeValue"
@mouseenter.native="mouseenter"
@ -47,32 +48,16 @@ export default {
return (this.$route.path === window?.BS_CONFIG?.routers?.previewUrl) || (this.$route.path === '/big-screen/preview')
}
},
watch: {
config: {
handler: function (val) {
if (val && val.customize && val.customize.formatType === 'custom') {
this.$nextTick(() => {
this.config.customize.value = toString(this.config.customize.value)
})
}
},
deep: true
}
},
watch: { },
created () { },
mounted () {
if (!this.isPreview) {
// document.querySelector(`.time-picker-${this.config.code}`).style.pointerEvents = 'none'
document.querySelector(`.time-picker-${this.config.code}`).style.pointerEvents = 'none'
}
if (this.config.customize.value === '') {
this.config.customize.value = moment(new Date()).format(this.config.customize.valueFormat)
}
this.changeStyle(this.config)
// config.customize.value HH:mm:ss
// if (this.config.customize.value === '') {
// this.config.customize.valueFormat = 'HH:mm:ss'
// this.$nextTick(() => {
// this.config.customize.value = moment(new Date()).format('HH:mm:ss')
// console.log(this.config.customize.value)
// })
// }
},
beforeDestroy () { },
methods: {
@ -130,6 +115,7 @@ export default {
},
//
changeValue (val) {
console.log('val', val)
this.linkage({ [this.config.code]: val })
},
focusEvent () {

@ -184,6 +184,7 @@ export default {
this.config.customize.valueFormat = 'timestamp'
} else if (type === 'custom') {
this.config.customize.valueFormat = 'HH:mm:ss'
this.config.customize.value = ''
}
}
}

@ -140,7 +140,7 @@
</div>
</template>
<script>
import { toJpeg, toPng } from 'html-to-image'
import { toJpeg } from 'html-to-image'
import CusBtn from 'data-room-ui/BigScreenDesign/BtnLoading'
// import MonacoEditor from 'data-room-ui/MonacoEditor'
import BizComponentPreview from './Preview'

Loading…
Cancel
Save