优化样式
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import { isArray, isString } from 'lodash-es'
|
||||
import type { PropType, VNode } from 'vue'
|
||||
import { computed, createVNode, defineComponent, reactive, resolveComponent } from 'vue'
|
||||
import { dayjs } from 'element-plus'
|
||||
import { getArea } from '/@/api/common'
|
||||
import type { InputAttr, InputData, ModelValueTypes } from '/@/components/baInput'
|
||||
import { inputTypes } from '/@/components/baInput'
|
||||
@@ -40,6 +41,29 @@ export default defineComponent({
|
||||
},
|
||||
emits: ['update:modelValue'],
|
||||
setup(props, { emit, slots }) {
|
||||
const normalizeDateTimeValue = (value: unknown, format: string) => {
|
||||
if (value === null || value === undefined || value === '') {
|
||||
return value
|
||||
}
|
||||
if (typeof value === 'number' && Number.isFinite(value)) {
|
||||
const ms = value > 9999999999 ? value : value * 1000
|
||||
const d = dayjs(ms)
|
||||
return d.isValid() ? d.format(format) : value
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const trimmed = value.trim()
|
||||
if (/^\d{10,13}$/.test(trimmed)) {
|
||||
const num = Number(trimmed)
|
||||
if (Number.isFinite(num)) {
|
||||
const ms = trimmed.length === 13 ? num : num * 1000
|
||||
const d = dayjs(ms)
|
||||
return d.isValid() ? d.format(format) : value
|
||||
}
|
||||
}
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// 合并 props.attr 和 props.data
|
||||
const attrs = computed(() => {
|
||||
return { ...props.attr, ...props.data }
|
||||
@@ -186,6 +210,7 @@ export default defineComponent({
|
||||
valueFormat = 'YYYY'
|
||||
break
|
||||
}
|
||||
const valueComputed = computed(() => normalizeDateTimeValue(props.modelValue, valueFormat))
|
||||
return () =>
|
||||
createVNode(
|
||||
resolveComponent('el-date-picker'),
|
||||
@@ -194,7 +219,7 @@ export default defineComponent({
|
||||
type: props.type,
|
||||
'value-format': valueFormat,
|
||||
...attrs.value,
|
||||
modelValue: props.modelValue,
|
||||
modelValue: valueComputed.value,
|
||||
'onUpdate:modelValue': onValueUpdate,
|
||||
},
|
||||
slots
|
||||
@@ -300,7 +325,7 @@ export default defineComponent({
|
||||
'year',
|
||||
() => {
|
||||
return () => {
|
||||
const valueComputed = computed(() => (!props.modelValue ? null : '' + props.modelValue))
|
||||
const valueComputed = computed(() => normalizeDateTimeValue(props.modelValue, 'YYYY'))
|
||||
return createVNode(
|
||||
resolveComponent('el-date-picker'),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user