Files
shrimp-admin/src/components/fields/FieldRelativeTime.vue
T
wc24 de18412010 fix(v0.3.0): 框架内 peer 引用回退静态 import + 修 FieldRelativeTime 路径
- 覆盖颗粒度只在 3 个入口: router targets / module routes / field registry
- 框架内 .vue 之间互相引用全部硬编码静态 import,resolveVue/defineAsyncComponent 退出 .vue 文件
- 修 components/fields/FieldRelativeTime.vue 的 ../VueAdmin → ../../VueAdmin (移动后未跟改)
2026-05-25 17:33:44 +08:00

43 lines
1.3 KiB
Vue

<template>
<template v-if="mode === 'display'">
<el-tooltip :content="fullTime" placement="top">
<span>{{ relativeTime }}</span>
</el-tooltip>
</template>
<el-date-picker v-else :model-value="modelValue" @update:model-value="$emit('update:modelValue', $event)" :disabled="disabled" type="datetime" style="width: 100%" />
</template>
<script lang="ts" setup>
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { vueAdmin } from '../../VueAdmin'
const { t } = useI18n()
const props = defineProps<{
field: any
modelValue: any
mode: 'display' | 'edit'
disabled?: boolean
}>()
defineEmits<{
'update:modelValue': [value: any]
}>()
const fullTime = computed(() => {
if (!props.modelValue) return '-'
return new Date(props.modelValue).toLocaleString(vueAdmin.locale === 'en' ? 'en-US' : 'zh-CN')
})
const relativeTime = computed(() => {
if (!props.modelValue) return '-'
const diff = Date.now() - props.modelValue
if (diff < 60000) return t('table.justNow')
if (diff < 3600000) return t('table.minutesAgo', { n: Math.floor(diff / 60000) })
if (diff < 86400000) return t('table.hoursAgo', { n: Math.floor(diff / 3600000) })
if (diff < 2592000000) return t('table.daysAgo', { n: Math.floor(diff / 86400000) })
return fullTime.value
})
</script>