!78 项目全局使用formatDate方法移除parseTime方法

Merge pull request !78 from puhui999/dev
This commit is contained in:
芋道源码 2023-04-04 14:57:37 +00:00 committed by Gitee
commit b79a187534
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
17 changed files with 60 additions and 134 deletions

View File

@ -6,11 +6,13 @@ import progress from 'vite-plugin-progress'
import EslintPlugin from 'vite-plugin-eslint' import EslintPlugin from 'vite-plugin-eslint'
import PurgeIcons from 'vite-plugin-purge-icons' import PurgeIcons from 'vite-plugin-purge-icons'
import { ViteEjsPlugin } from 'vite-plugin-ejs' import { ViteEjsPlugin } from 'vite-plugin-ejs'
// @ts-ignore
import ElementPlus from 'unplugin-element-plus/vite' import ElementPlus from 'unplugin-element-plus/vite'
import AutoImport from 'unplugin-auto-import/vite' import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite' import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import viteCompression from 'vite-plugin-compression' import viteCompression from 'vite-plugin-compression'
import topLevelAwait from 'vite-plugin-top-level-await'
import vueSetupExtend from 'vite-plugin-vue-setup-extend' import vueSetupExtend from 'vite-plugin-vue-setup-extend'
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
@ -95,6 +97,12 @@ export function createVitePlugins() {
ext: '.gz', // 生成的压缩包后缀 ext: '.gz', // 生成的压缩包后缀
deleteOriginFile: false //压缩后是否删除源文件 deleteOriginFile: false //压缩后是否删除源文件
}), }),
ViteEjsPlugin() ViteEjsPlugin(),
topLevelAwait({
// The export name of top-level await promise for each chunk module
promiseExportName: '__tla',
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`
})
] ]
} }

View File

@ -122,6 +122,7 @@
"vite-plugin-progress": "^0.0.6", "vite-plugin-progress": "^0.0.6",
"vite-plugin-purge-icons": "^0.9.2", "vite-plugin-purge-icons": "^0.9.2",
"vite-plugin-svg-icons": "^2.0.1", "vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-top-level-await": "^1.3.0",
"vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-vue-setup-extend": "^0.4.0",
"vite-plugin-windicss": "^1.8.10", "vite-plugin-windicss": "^1.8.10",
"vue-tsc": "^1.2.0", "vue-tsc": "^1.2.0",

View File

@ -280,7 +280,7 @@ const elementHover = (element) => {
if (element.value.type === 'bpmn:StartEvent' && processInstance.value) { if (element.value.type === 'bpmn:StartEvent' && processInstance.value) {
html = `<p>发起人:${processInstance.value.startUser.nickname}</p> html = `<p>发起人:${processInstance.value.startUser.nickname}</p>
<p>部门${processInstance.value.startUser.deptName}</p> <p>部门${processInstance.value.startUser.deptName}</p>
<p>创建时间${parseTime(processInstance.value.createTime)}` <p>创建时间${formatDate(processInstance.value.createTime)}`
} else if (element.value.type === 'bpmn:UserTask') { } else if (element.value.type === 'bpmn:UserTask') {
// debugger // debugger
let task = taskList.value.find((m) => m.id === activity.taskId) // taskId let task = taskList.value.find((m) => m.id === activity.taskId) // taskId
@ -297,26 +297,26 @@ const elementHover = (element) => {
html = `<p>审批人:${task.assigneeUser.nickname}</p> html = `<p>审批人:${task.assigneeUser.nickname}</p>
<p>部门${task.assigneeUser.deptName}</p> <p>部门${task.assigneeUser.deptName}</p>
<p>结果${dataResult}</p> <p>结果${dataResult}</p>
<p>创建时间${parseTime(task.createTime)}</p>` <p>创建时间${formatDate(task.createTime)}</p>`
// html = `<p>${task.assigneeUser.nickname}</p> // html = `<p>${task.assigneeUser.nickname}</p>
// <p>${task.assigneeUser.deptName}</p> // <p>${task.assigneeUser.deptName}</p>
// <p>${getIntDictOptions( // <p>${getIntDictOptions(
// DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, // DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT,
// task.result // task.result
// )}</p> // )}</p>
// <p>${parseTime(task.createTime)}</p>` // <p>${formatDate(task.createTime)}</p>`
if (task.endTime) { if (task.endTime) {
html += `<p>结束时间:${parseTime(task.endTime)}</p>` html += `<p>结束时间:${formatDate(task.endTime)}</p>`
} }
if (task.reason) { if (task.reason) {
html += `<p>审批建议:${task.reason}</p>` html += `<p>审批建议:${task.reason}</p>`
} }
} else if (element.value.type === 'bpmn:ServiceTask' && processInstance.value) { } else if (element.value.type === 'bpmn:ServiceTask' && processInstance.value) {
if (activity.startTime > 0) { if (activity.startTime > 0) {
html = `<p>创建时间:${parseTime(activity.startTime)}</p>` html = `<p>创建时间:${formatDate(activity.startTime)}</p>`
} }
if (activity.endTime > 0) { if (activity.endTime > 0) {
html += `<p>结束时间:${parseTime(activity.endTime)}</p>` html += `<p>结束时间:${formatDate(activity.endTime)}</p>`
} }
console.log(html) console.log(html)
} else if (element.value.type === 'bpmn:EndEvent' && processInstance.value) { } else if (element.value.type === 'bpmn:EndEvent' && processInstance.value) {
@ -333,7 +333,7 @@ const elementHover = (element) => {
// processInstance.value.result // processInstance.value.result
// )}</p>` // )}</p>`
if (processInstance.value.endTime) { if (processInstance.value.endTime) {
html += `<p>结束时间:${parseTime(processInstance.value.endTime)}</p>` html += `<p>结束时间:${formatDate(processInstance.value.endTime)}</p>`
} }
} }
console.log(html, 'html111111111111111') console.log(html, 'html111111111111111')
@ -348,50 +348,6 @@ const elementOut = (element) => {
toRaw(overlays.value).remove({ element }) toRaw(overlays.value).remove({ element })
elementOverlayIds.value[element.id] = null elementOverlayIds.value[element.id] = null
} }
const parseTime = (time) => {
if (!time) {
return null
}
const format = '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time
.replace(new RegExp(/-/gm), '/')
.replace('T', ' ')
.replace(new RegExp(/\.[\d]{3}/gm), '')
}
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
onMounted(() => { onMounted(() => {
xml.value = props.value xml.value = props.value

View File

@ -219,21 +219,19 @@ const handleAuthorized = () => {
if (!isRelogin.show) { if (!isRelogin.show) {
isRelogin.show = true isRelogin.show = true
ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {
showCancelButton: false,
closeOnClickModal: false,
showClose: false,
confirmButtonText: t('login.relogin'), confirmButtonText: t('login.relogin'),
cancelButtonText: t('common.cancel'),
type: 'warning' type: 'warning'
}).then(() => {
const { wsCache } = useCache()
resetRouter() // 重置静态路由表
wsCache.clear()
removeToken()
isRelogin.show = false
window.location.href = '/'
}) })
.then(() => {
const { wsCache } = useCache()
resetRouter() // 重置静态路由表
wsCache.clear()
removeToken()
isRelogin.show = false
window.location.href = '/'
})
.catch(() => {
isRelogin.show = false
})
} }
return Promise.reject(t('sys.api.timeoutMessage')) return Promise.reject(t('sys.api.timeoutMessage'))
} }

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { parseTime } from '@/utils/formatTime' import { formatDate } from '@/utils/formatTime'
import * as NotifyMessageApi from '@/api/system/notify/message' import * as NotifyMessageApi from '@/api/system/notify/message'
const { push } = useRouter() const { push } = useRouter()
@ -57,7 +57,7 @@ onMounted(() => {
{{ item.templateNickname }}{{ item.templateContent }} {{ item.templateNickname }}{{ item.templateContent }}
</span> </span>
<span class="message-date"> <span class="message-date">
{{ parseTime(item.createTime) }} {{ formatDate(item.createTime) }}
</span> </span>
</div> </div>
</div> </div>

View File

@ -25,6 +25,7 @@ VXETable.renderer.add('XPreview', {
) )
} else { } else {
return ( return (
// @ts-ignore
<ElLink href={row[column.field]} target="_blank"> <ElLink href={row[column.field]} target="_blank">
{row[column.field]} {row[column.field]}
</ElLink> </ElLink>

View File

@ -1,5 +1,6 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { store } from '../index' import { store } from '../index'
// @ts-ignore
import { DictDataVO } from '@/api/system/dict/types' import { DictDataVO } from '@/api/system/dict/types'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
const { wsCache } = useCache('sessionStorage') const { wsCache } = useCache('sessionStorage')

View File

@ -24,6 +24,7 @@ declare module '@vue/runtime-core' {
Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer'] ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBadge: typeof import('element-plus/es')['ElBadge'] ElBadge: typeof import('element-plus/es')['ElBadge']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
@ -68,6 +69,7 @@ declare module '@vue/runtime-core' {
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
@ -78,7 +80,6 @@ declare module '@vue/runtime-core' {
ElTimeline: typeof import('element-plus/es')['ElTimeline'] ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree'] ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload'] ElUpload: typeof import('element-plus/es')['ElUpload']

View File

@ -23,53 +23,6 @@ export function formatDate(date: Date, format?: string): string {
return dayjs(date).format(format) return dayjs(date).format(format)
} }
// TODO 芋艿:稍后去掉
// 日期格式化
export function parseTime(time: any, pattern?: string) {
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time
.replace(new RegExp(/-/gm), '/')
.replace('T', ' ')
.replace(new RegExp(/\.\d{3}/gm), '')
}
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
/** /**
* *
* @param dateTime * @param dateTime
@ -87,8 +40,7 @@ export function getWeek(dateTime: Date): number {
if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1 if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1
firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay) firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay)
const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000) const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000)
const result = Math.ceil(d / 7) return Math.ceil(d / 7)
return result
} }
/** /**

View File

@ -265,6 +265,7 @@ export const handleTree = (data: any[], id?: string, parentId?: string, children
} }
return tree return tree
} }
/** /**
* *
* @param {*} data * @param {*} data
@ -273,6 +274,7 @@ export const handleTree = (data: any[], id?: string, parentId?: string, children
* @param {*} children 'children' * @param {*} children 'children'
* @param {*} rootId Id 0 * @param {*} rootId Id 0
*/ */
// @ts-ignore
export const handleTree2 = (data, id, parentId, children, rootId) => { export const handleTree2 = (data, id, parentId, children, rootId) => {
id = id || 'id' id = id || 'id'
parentId = parentId || 'parentId' parentId = parentId || 'parentId'

View File

@ -34,13 +34,13 @@
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<Icon icon="ep:calendar" class="mr-5px" />{{ t('profile.user.createTime') }} <Icon icon="ep:calendar" class="mr-5px" />{{ t('profile.user.createTime') }}
<div class="pull-right">{{ parseTime(userInfo?.createTime) }}</div> <div class="pull-right">{{ formatDate(userInfo?.createTime) }}</div>
</li> </li>
</ul> </ul>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { parseTime } from '@/utils/formatTime' import { formatDate } from '@/utils/formatTime'
import UserAvatar from './UserAvatar.vue' import UserAvatar from './UserAvatar.vue'
import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile' import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'

View File

@ -20,13 +20,13 @@
</label> </label>
<label style="font-weight: normal" v-if="item.createTime">创建时间</label> <label style="font-weight: normal" v-if="item.createTime">创建时间</label>
<label style="color: #8a909c; font-weight: normal"> <label style="color: #8a909c; font-weight: normal">
{{ parseTime(item?.createTime) }} {{ formatDate(item?.createTime) }}
</label> </label>
<label v-if="item.endTime" style="margin-left: 30px; font-weight: normal"> <label v-if="item.endTime" style="margin-left: 30px; font-weight: normal">
审批时间 审批时间
</label> </label>
<label v-if="item.endTime" style="color: #8a909c; font-weight: normal"> <label v-if="item.endTime" style="color: #8a909c; font-weight: normal">
{{ parseTime(item?.endTime) }} {{ formatDate(item?.endTime) }}
</label> </label>
<label v-if="item.durationInMillis" style="margin-left: 30px; font-weight: normal"> <label v-if="item.durationInMillis" style="margin-left: 30px; font-weight: normal">
耗时 耗时
@ -45,7 +45,7 @@
</el-card> </el-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { parseTime, formatPast2 } from '@/utils/formatTime' import { formatDate, formatPast2 } from '@/utils/formatTime'
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
defineProps({ defineProps({

View File

@ -44,7 +44,7 @@
<li v-for="item in getList" class="mt-2" :key="item.time"> <li v-for="item in getList" class="mt-2" :key="item.time">
<div class="flex items-center"> <div class="flex items-center">
<span class="mr-2 text-primary font-medium">收到消息:</span> <span class="mr-2 text-primary font-medium">收到消息:</span>
<span>{{ parseTime(item.time) }}</span> <span>{{ formatDate(item.time) }}</span>
</div> </div>
<div> <div>
{{ item.res }} {{ item.res }}
@ -56,7 +56,7 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { parseTime } from '@/utils/formatTime' import { formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import { useWebSocket } from '@vueuse/core' import { useWebSocket } from '@vueuse/core'

View File

@ -41,7 +41,7 @@
</el-table-column> </el-table-column>
<el-table-column label="上传时间" align="center" prop="createTime" width="180"> <el-table-column label="上传时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ formatDate(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -80,7 +80,7 @@
</el-table-column> </el-table-column>
<el-table-column label="上传时间" align="center" prop="createTime" width="180"> <el-table-column label="上传时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ formatDate(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -136,7 +136,7 @@ import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue'
import { getMaterialPage } from '@/api/mp/material' import { getMaterialPage } from '@/api/mp/material'
import { getFreePublishPage } from '@/api/mp/freePublish' import { getFreePublishPage } from '@/api/mp/freePublish'
import { getDraftPage } from '@/api/mp/draft' import { getDraftPage } from '@/api/mp/draft'
import { dateFormatter, parseTime } from '@/utils/formatTime' import { dateFormatter, formatDate } from '@/utils/formatTime'
import { defineComponent, PropType } from 'vue' import { defineComponent, PropType } from 'vue'
export default defineComponent({ export default defineComponent({
@ -238,7 +238,7 @@ export default defineComponent({
selectMaterialFun, selectMaterialFun,
getMaterialPageFun, getMaterialPageFun,
getPage, getPage,
parseTime, formatDate,
newsTypeRef, newsTypeRef,
queryParams, queryParams,
objDataRef, objDataRef,

View File

@ -32,7 +32,7 @@
</div> </div>
<div class="avue-comment__main"> <div class="avue-comment__main">
<div class="avue-comment__header"> <div class="avue-comment__header">
<div class="avue-comment__create_time">{{ parseTime(item.createTime) }}</div> <div class="avue-comment__create_time">{{ formatDate(item.createTime) }}</div>
</div> </div>
<div <div
class="avue-comment__body" class="avue-comment__body"
@ -145,7 +145,7 @@ import { defineComponent } from 'vue'
const message = useMessage() // const message = useMessage() //
import profile from '@/assets/imgs/profile.jpg' import profile from '@/assets/imgs/profile.jpg'
import wechat from '@/assets/imgs/wechat.png' import wechat from '@/assets/imgs/wechat.png'
import { parseTime } from '@/utils/formatTime' import { formatDate } from '@/utils/formatTime'
export default defineComponent({ export default defineComponent({
components: { components: {
@ -286,7 +286,7 @@ export default defineComponent({
return { return {
sendMsg, sendMsg,
loadingMore, loadingMore,
parseTime, formatDate,
scrollToBottom, scrollToBottom,
objData, objData,
mp, mp,

View File

@ -1,5 +1,11 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible" :scroll="true" :width="800" :max-height="500"> <Dialog
:title="dialogTitle"
v-model="dialogVisible"
:scroll="true"
:width="800"
:max-height="500"
>
<Form ref="formRef" :schema="allSchemas.formSchema" :rules="rules" v-loading="formLoading" /> <Form ref="formRef" :schema="allSchemas.formSchema" :rules="rules" v-loading="formLoading" />
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -9,7 +15,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import * as MailTemplateApi from '@/api/system/mail/template' import * as MailTemplateApi from '@/api/system/mail/template'
import { rules, allSchemas } from './template.data' import { allSchemas, rules } from './template.data'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //

View File

@ -5,7 +5,7 @@
{{ detailData.templateNickname }} {{ detailData.templateNickname }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="发送时间"> <el-descriptions-item label="发送时间">
{{ formatDate(detailData.createTime, 'YYYY-MM-DD HH:mm:ss') }} {{ formatDate(detailData.createTime) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="消息类型"> <el-descriptions-item label="消息类型">
<dict-tag :type="DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE" :value="detailData.templateType" /> <dict-tag :type="DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE" :value="detailData.templateType" />
@ -14,7 +14,7 @@
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="detailData.readStatus" /> <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="detailData.readStatus" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="阅读时间" v-if="detailData.readStatus"> <el-descriptions-item label="阅读时间" v-if="detailData.readStatus">
{{ formatDate(detailData.readTime, 'YYYY-MM-DD HH:mm:ss') }} {{ formatDate(detailData.readTime) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="内容"> <el-descriptions-item label="内容">
{{ detailData.templateContent }} {{ detailData.templateContent }}