feat: chat integration, tenant admin spec, backend chat service, miniprogram updates, DEMO moved to tmp, XCX-TEST removed, migrations & docs
This commit is contained in:
86
tmp/DEMO-miniprogram/miniprogram/utils/time.wxs
Normal file
86
tmp/DEMO-miniprogram/miniprogram/utils/time.wxs
Normal file
@@ -0,0 +1,86 @@
|
||||
// WXS 时间格式化桥接 — WXML 中不能调用 TS/JS 模块,需通过 WXS 桥接
|
||||
// 规范:docs/miniprogram-dev/design-system/DATETIME-DISPLAY-STANDARD.md
|
||||
//
|
||||
// 规则:
|
||||
// < 120s -> 刚刚
|
||||
// 2~59min -> N分钟前
|
||||
// 1~23h -> N小时前
|
||||
// 1~3d -> N天前
|
||||
// >3d 同年 -> MM-DD
|
||||
// >3d 跨年 -> YYYY-MM-DD
|
||||
|
||||
function relativeTime(value) {
|
||||
if (value === undefined || value === null || value === '') return '--'
|
||||
|
||||
var ts
|
||||
if (typeof value === 'number') {
|
||||
ts = value
|
||||
} else {
|
||||
var parsed = getDate(value)
|
||||
ts = parsed.getTime()
|
||||
if (isNaN(ts)) return '--'
|
||||
}
|
||||
|
||||
var now = getDate().getTime()
|
||||
var diff = Math.floor((now - ts) / 1000)
|
||||
|
||||
if (diff < 120) return '刚刚'
|
||||
if (diff < 3600) return Math.floor(diff / 60) + '分钟前'
|
||||
if (diff < 86400) return Math.floor(diff / 3600) + '小时前'
|
||||
if (diff < 259200) return Math.floor(diff / 86400) + '天前'
|
||||
|
||||
var date = getDate(ts)
|
||||
var nowDate = getDate(now)
|
||||
var year = date.getFullYear()
|
||||
var nowYear = nowDate.getFullYear()
|
||||
var month = date.getMonth() + 1
|
||||
var day = date.getDate()
|
||||
var mm = month < 10 ? '0' + month : '' + month
|
||||
var dd = day < 10 ? '0' + day : '' + day
|
||||
|
||||
if (year === nowYear) return mm + '-' + dd
|
||||
return year + '-' + mm + '-' + dd
|
||||
}
|
||||
|
||||
// IM 气泡内时间戳格式
|
||||
// 今天内 -> HH:mm
|
||||
// 今年非今天 -> MM-DD HH:mm
|
||||
// 跨年 -> YYYY-MM-DD HH:mm
|
||||
function imTime(value) {
|
||||
if (value === undefined || value === null || value === '') return ''
|
||||
|
||||
var ts
|
||||
if (typeof value === 'number') {
|
||||
ts = value
|
||||
} else {
|
||||
var parsed = getDate(value)
|
||||
ts = parsed.getTime()
|
||||
if (isNaN(ts)) return ''
|
||||
}
|
||||
|
||||
var date = getDate(ts)
|
||||
var now = getDate()
|
||||
var hh = date.getHours()
|
||||
var mn = date.getMinutes()
|
||||
var hhStr = hh < 10 ? '0' + hh : '' + hh
|
||||
var mnStr = mn < 10 ? '0' + mn : '' + mn
|
||||
var timeStr = hhStr + ':' + mnStr
|
||||
|
||||
var isSameDay =
|
||||
date.getFullYear() === now.getFullYear() &&
|
||||
date.getMonth() === now.getMonth() &&
|
||||
date.getDate() === now.getDate()
|
||||
if (isSameDay) return timeStr
|
||||
|
||||
var month = date.getMonth() + 1
|
||||
var day = date.getDate()
|
||||
var mm = month < 10 ? '0' + month : '' + month
|
||||
var dd = day < 10 ? '0' + day : '' + day
|
||||
if (date.getFullYear() === now.getFullYear()) return mm + '-' + dd + ' ' + timeStr
|
||||
return date.getFullYear() + '-' + mm + '-' + dd + ' ' + timeStr
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
relativeTime: relativeTime,
|
||||
imTime: imTime,
|
||||
}
|
||||
Reference in New Issue
Block a user