From ca860d551ee871f69e3fb6aac77249f789f0c0ef Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 25 May 2022 22:13:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E8=AF=9D=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=9A=E5=91=98=E6=9C=80=E5=90=8E=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/User.php | 2 +- resources/assets/js/components/UserAvatar.vue | 28 +++++++++++++++++++ .../pages/manage/components/DialogWrapper.vue | 7 ++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 4164cd603..ee351dda2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -419,7 +419,7 @@ class User extends AbstractModel if (isset($_A["__static_userid2basic_" . $userid])) { return $_A["__static_userid2basic_" . $userid]; } - $fields = ['userid', 'email', 'nickname', 'profession', 'userimg']; + $fields = ['userid', 'email', 'nickname', 'profession', 'userimg', 'line_at']; $userInfo = self::whereUserid($userid)->select($fields)->first(); if ($userInfo) { $userInfo->online = $userInfo->getOnlineStatus(); diff --git a/resources/assets/js/components/UserAvatar.vue b/resources/assets/js/components/UserAvatar.vue index 958879fce..a808859ee 100755 --- a/resources/assets/js/components/UserAvatar.vue +++ b/resources/assets/js/components/UserAvatar.vue @@ -191,6 +191,34 @@ if (this.user && typeof data[this.user.userid] !== "undefined") { this.$set(this.user, 'online', data[this.user.userid]); } + }, + + 'user.online'(val) { + if (val) { + this.$emit('update:online', true) + } else { + const now = $A.Time() + const line = $A.Time(this.user.line_at) + const seconds = now - line + let stats = '最后在线于很久以前'; + if (seconds < 3600) { + stats = `最后在线于 ${Math.floor(seconds / 60)} 分钟前` + } else if (seconds < 3600 * 6) { + stats = `最后在线于 ${Math.floor(seconds / 3600)} 小时前` + } else { + const nowYmd = $A.formatDate('Y-m-d', now) + const lineYmd = $A.formatDate('Y-m-d', line) + const lineHi = $A.formatDate('H:i', line) + if (nowYmd === lineYmd) { + stats = `最后在线于今天 ${lineHi}` + } else if ($A.formatDate('Y-m-d', now - 86400) === lineYmd) { + stats = `最后在线于昨天 ${lineHi}` + } else if (seconds < 3600 * 24 * 365) { + stats = `最后在线于 ${lineYmd}` + } + } + this.$emit('update:online', this.$L(stats)) + } } }, methods: { diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 7bc41ddeb..e277ec3a1 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -19,7 +19,9 @@ -
+
+ +
@@ -39,6 +41,9 @@ {{$L('任务聊天室')}} {{$L('查看任务详情')}}
+
+ {{$L(dialogData.online_state === true ? '在线' : dialogData.online_state)}} +