diff --git a/Front/vue-unilife/src/routers/routers.ts b/Front/vue-unilife/src/routers/routers.ts index 89cdd60..76c1b57 100644 --- a/Front/vue-unilife/src/routers/routers.ts +++ b/Front/vue-unilife/src/routers/routers.ts @@ -1,13 +1,14 @@ -import type { RouteRecordRaw } from 'vue-router'; -import { createRouter,createWebHistory } from 'vue-router'; +import type { RouteRecordRaw } from 'vue-router'; +import { createRouter, createWebHistory } from 'vue-router'; import LogPage from '../views/LogPage.vue'; import Personal from '@/components/Personal.vue'; import Manager from '@/views/AcountManager.vue'; import PersonalHome from '@/views/Home.vue'; import ForumHome from '@/views/ForumHome.vue'; import Curriculum from '@/views/Curriculum.vue'; +import DirectMessage from '@/views/DirectMessage.vue'; -const routes:Array = [ +const routes: Array = [ { path: '/', redirect: '/log', @@ -18,44 +19,49 @@ const routes:Array = [ component: () => import('@/views/404.vue'), }, { - path:'/log', + path: '/log', name: 'LogPage', component: LogPage }, { - path:'/personal', + path: '/personal', name: 'Personal', component: Personal, children: [ { - path:'', - name:'Home', - component:PersonalHome, + path: '', + name: 'Home', + component: PersonalHome, }, { - path:'manager', + path: 'manager', name: 'Manager', - component:Manager, + component: Manager, }, { - path:'ai', + path: 'ai', redirect: '/personal', }, { - path:'curriculum', - name:'Curriculum', - component:Curriculum, - }, + path: 'curriculum', + name: 'Curriculum', + component: Curriculum, + } ] }, { - path:'/uniLifeHome', + path: '/message', + name: 'DirectMessage', + component: DirectMessage, + }, + { + path: '/uniLifeHome', name: 'ForumHome', component: ForumHome, }, { - path:'/post/:id', - name:'PostDetail', + path: '/post/:id', + name: 'PostDetail', component: () => import('@/views/PostDetailPage.vue'), }, ]; diff --git a/Front/vue-unilife/src/utils/time.ts b/Front/vue-unilife/src/utils/time.ts new file mode 100644 index 0000000..af4e1db --- /dev/null +++ b/Front/vue-unilife/src/utils/time.ts @@ -0,0 +1,41 @@ +export function formatTime(timestamp: number): string { + const date = new Date(timestamp); + const now = new Date(); + const diff = now.getTime() - timestamp; + + // 不到1分钟 + if (diff < 60 * 1000) { + return '刚刚'; + } + + // 不到1小时 + if (diff < 60 * 60 * 1000) { + const minutes = Math.floor(diff / (60 * 1000)); + return `${minutes}分钟前`; + } + + // 不到24小时 + if (diff < 24 * 60 * 60 * 1000) { + const hours = Math.floor(diff / (60 * 60 * 1000)); + return `${hours}小时前`; + } + + // 不到7天 + if (diff < 7 * 24 * 60 * 60 * 1000) { + const days = Math.floor(diff / (24 * 60 * 60 * 1000)); + return `${days}天前`; + } + + // 同一年 + if (date.getFullYear() === now.getFullYear()) { + return `${date.getMonth() + 1}月${date.getDate()}日 ${padZero(date.getHours())}:${padZero(date.getMinutes())}`; + } + + // 其他情况显示完整日期 + return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 ${padZero(date.getHours())}:${padZero(date.getMinutes())}`; +} + +// 补零函数 +function padZero(num: number): string { + return num < 10 ? `0${num}` : num.toString(); +} \ No newline at end of file diff --git a/Front/vue-unilife/src/views/DirectMessage.vue b/Front/vue-unilife/src/views/DirectMessage.vue new file mode 100644 index 0000000..5395732 --- /dev/null +++ b/Front/vue-unilife/src/views/DirectMessage.vue @@ -0,0 +1,387 @@ + + + + + \ No newline at end of file