fix(staffchat): 聊天窗默认时段改全部时间+空态分语(用户报很多聊天记录空的)
defaultRange() 默认近 14 天窗,实测 78% 群(766/979)/89% 单聊(9374/10497) 的最新消息在任意 14 天窗外——这些会话打开即全空(典型:张士蓓「11台长安X5」 1016 条消息全在 7-27 前,默认窗滤成 0 条,云客后台却看得到)。云客默认直接 展示最近消息不限窗,对齐改为默认全部时间;首屏本就跳最后一页看最新+上翻 加载更旧,全量窗下首屏仍只拉一页。空态分语:有窗=「所选时间范围内无消息, 清空日期窗可查看全部」,无窗=「该会话无聊天记录」(真没聊过)。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<!-- 员工聊天窗口右列消息流(对齐云客 wechat-window 聊天区): 复制改造自
|
||||
ChatTimeline.vue 的主区(尾页落地分页/气泡/详情 drawer/导出全套),差异——
|
||||
① 默认近 14 天窗(清空=全部时间) ② 9 类类型下拉(msg_type 服务端过滤)
|
||||
① 默认全部时间(可选日期窗) ② 9 类类型下拉(msg_type 服务端过滤)
|
||||
③ ?msgid= 定位滚动+高亮 ④ 无返回按钮/无 sidebar(左侧由 StaffChatSide+
|
||||
SessionPane 承担)。
|
||||
根元素必须保持单 div——父组件 StaffChat 靠 attrs fallthrough 挂 sc-root__chat 列宽。 -->
|
||||
@@ -101,18 +101,12 @@ const conversationTitle = computed(() => {
|
||||
return isGroup.value ? `群聊记录 · ${displayName}` : `与 ${displayName} 的聊天记录`
|
||||
})
|
||||
|
||||
// ── 日期窗:云客对齐,默认近 14 天;清空 = 全部时间(null) ─────────────────────
|
||||
// ── 日期窗:默认全部时间(null);选窗后按窗过滤,清空回到全部 ──────────────────
|
||||
// route.query 合法 ms start/end 仍优先(带日期窗的跳转入口,如红包明细)。
|
||||
|
||||
/** 近 14 天窗:今天往前 13 天的 00:00:00 ~ 今天 23:59:59.999。 */
|
||||
function defaultRange(): [Date, Date] {
|
||||
const end = new Date()
|
||||
end.setHours(23, 59, 59, 999)
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() - 13)
|
||||
start.setHours(0, 0, 0, 0)
|
||||
return [start, end]
|
||||
}
|
||||
// 2026-08-27 前 defaultRange() 默认近 14 天——实测 78% 群/89% 单聊的最新消息
|
||||
// 在任意 14 天窗之外,这些会话打开即全空(用户报「很多聊天记录都是空的」);
|
||||
// 云客默认直接展示最近消息不限窗,故对齐改为默认全部。前端本就「首屏跳到
|
||||
// 最后一页看最新 + 上翻加载更旧」,全量窗下首屏仍只拉一页,性能无忧。
|
||||
|
||||
function rangeFromQuery(): [Date, Date] | null {
|
||||
const s = route.query.start,
|
||||
@@ -125,7 +119,7 @@ function rangeFromQuery(): [Date, Date] | null {
|
||||
return null
|
||||
}
|
||||
|
||||
const dateRange = ref<[Date, Date] | null>(rangeFromQuery() ?? defaultRange())
|
||||
const dateRange = ref<[Date, Date] | null>(rangeFromQuery() ?? null)
|
||||
const winStart = computed(() => dateRange.value?.[0].getTime())
|
||||
const winEnd = computed(() => dateRange.value?.[1].getTime())
|
||||
const keyword = ref('')
|
||||
@@ -442,7 +436,10 @@ const drawerTitle = computed(() => {
|
||||
</div>
|
||||
|
||||
<template v-if="messages.length === 0 && !loading">
|
||||
<div class="yk-empty">暂无聊天记录</div>
|
||||
<!-- 空态分语:有日期窗=窗滤空(提示可清窗),无窗=真没聊过 -->
|
||||
<div class="yk-empty">
|
||||
{{ dateRange ? '所选时间范围内无消息,清空日期窗可查看全部' : '该会话无聊天记录' }}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="visibleMessages.length === 0 && keyword && !loading">
|
||||
<div class="yk-empty">当前已加载消息中无匹配</div>
|
||||
|
||||
Reference in New Issue
Block a user