diff --git a/admin.php b/admin.php
index 5b1da40..ba3f7f6 100644
--- a/admin.php
+++ b/admin.php
@@ -2886,19 +2886,29 @@ async function showGroupMembers(groupName) {
html += ``;
// 添加成员
- html += `
+ 到期留0则按用户组设置的duration_minutes自动计算
`;
// 成员列表
if (members.length === 0) {
html += '暂无成员
';
} else {
- html += '| 玩家名 | 添加者 | 操作 |
';
+ html += '| 玩家名 | 到期时间 | 添加者 | 操作 |
';
for (const m of members) {
+ const expiry = m.expiry_time ? parseInt(m.expiry_time) : 0;
+ let expiryStr = '-';
+ if (expiry > 0) {
+ expiryStr = new Date(expiry * 1000).toLocaleString('zh-CN');
+ } else {
+ expiryStr = '按组期限';
+ }
html += `
| ${escAdmHtml(m.player_name)} |
+ ${expiryStr} |
${escAdmHtml(m.added_by || '-')} |
|
`;
@@ -2915,12 +2925,15 @@ async function showGroupMembers(groupName) {
async function doAddGroupMember(groupName) {
const inputEl = document.getElementById('ugNewMember');
+ const expiryEl = document.getElementById('ugNewMemberExpiry');
const player = inputEl ? inputEl.value.trim() : '';
if (!player) { glassAlert('请输入玩家名'); return; }
if (!/^[a-zA-Z0-9_]{3,16}$/.test(player)) { glassAlert('玩家名格式不正确,仅支持英文字母、数字和下划线(3-16位)'); return; }
+ const expiryTime = expiryEl ? (parseInt(expiryEl.value) || 0) : 0;
+
try {
- const res = await apiCall('add_group_member', {group: groupName, player}, 'POST');
+ const res = await apiCall('add_group_member', {group: groupName, player, expiry_time: expiryTime}, 'POST');
if (res.success) {
// pending=true 是异步验证响应,需要特殊处理
if (res.pending) {