fix: 账号页闪烁/浏览类型/截图复制/时区统一
This commit is contained in:
@@ -842,7 +842,6 @@
|
||||
<select id="scheduleBrowseType" style="max-width: 200px; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px;">
|
||||
<option value="注册前未读">注册前未读</option>
|
||||
<option value="应读" selected>应读</option>
|
||||
<option value="未读">未读</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -1731,10 +1730,23 @@
|
||||
}
|
||||
|
||||
// VIP functions
|
||||
function parseBeijingDateTime(value) {
|
||||
if (!value) return null;
|
||||
const str = String(value).trim();
|
||||
if (!str) return null;
|
||||
let iso = str.includes('T') ? str : str.replace(' ', 'T');
|
||||
// 统一按北京时间解析(除非字符串本身已带时区)
|
||||
const hasTimezone = /([zZ]|[+-]\d{2}:\d{2})$/.test(iso);
|
||||
if (!hasTimezone) iso = iso + '+08:00';
|
||||
const dt = new Date(iso);
|
||||
if (Number.isNaN(dt.getTime())) return null;
|
||||
return dt;
|
||||
}
|
||||
|
||||
function isVip(user) {
|
||||
if (!user.vip_expire_time) return false;
|
||||
const expireTime = new Date(user.vip_expire_time);
|
||||
return expireTime > new Date();
|
||||
const expireTime = parseBeijingDateTime(user.vip_expire_time);
|
||||
return expireTime ? expireTime > new Date() : false;
|
||||
}
|
||||
|
||||
function getVipBadge(user) {
|
||||
@@ -1746,8 +1758,8 @@
|
||||
|
||||
function getVipExpire(user) {
|
||||
if (!isVip(user)) return '';
|
||||
const expireTime = new Date(user.vip_expire_time);
|
||||
const daysLeft = Math.ceil((expireTime - new Date()) / (1000*60*60*24));
|
||||
const expireTime = parseBeijingDateTime(user.vip_expire_time);
|
||||
const daysLeft = expireTime ? Math.ceil((expireTime - new Date()) / (1000*60*60*24)) : 0;
|
||||
if (user.vip_expire_time === '2099-12-31 23:59:59') {
|
||||
return '<div class="user-info" style="color:#667eea;">永久VIP</div>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user