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 @@