feat: 全面打磨平台交互
- 名单导入容错:rowsToStudents 加去重/跳过统计、表头正则扩充、.0 尾巴清理;importFile 返回精确 count
- 看板:修复 .repeat(0) 空状态坏代码;新增实时点 stale 指示(手动/自动刷新失败变红 + 提示刷新中断);
手动刷新按钮加刷新中…反馈;记住自动刷新开关与间隔(localStorage + ?interval= 深链)
- 主统计页:后台静默刷新连续失败时连接指示转实时刷新中断告警;记住用户手动调整的刷新间隔
- 设置页:新增 config_test 端点 + 独立测试连接按钮(用弹窗内未保存凭据测连接,不落盘);
保存按钮加保存中…防重提交;登录失败不清旧 token
- 抽取页:重置结果加二次确认;新增复制名单按钮(两列制表符分隔,可粘到微信/Excel)
- 修复看板预先存在 JS 语法错误(少一个右括号导致整页 JS 失效)
This commit is contained in:
@@ -710,6 +710,9 @@
|
||||
|
||||
// 重置结果:清空本次结果 + 累计已抽取(历史记录保留)
|
||||
$('#btnReset').addEventListener('click', () => {
|
||||
if (state.picked.length || state.history.size) {
|
||||
if (!confirm('确定重置?将清空本次结果与累计已抽取的 ' + state.history.size + ' 人(历史记录仍保留)。')) return;
|
||||
}
|
||||
state.picked = [];
|
||||
state.history = new Set();
|
||||
renderResult();
|
||||
@@ -721,6 +724,37 @@
|
||||
showAlert('已重置结果与累计已抽取(历史记录仍保留)', 'info');
|
||||
});
|
||||
|
||||
// 复制名单:两列「姓名 / 登陆账号」,制表符分隔,便于直接粘贴到 Excel / 微信
|
||||
$('#btnCopy').addEventListener('click', async () => {
|
||||
if (!state.picked.length) {
|
||||
showAlert('请先点击「🎲 开始抽取」再复制');
|
||||
return;
|
||||
}
|
||||
const lines = state.picked.map(m =>
|
||||
(m.name || '') + '\t' + (m.login || m.sid || ''));
|
||||
const text = lines.join('\n');
|
||||
let ok = false;
|
||||
try {
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
await navigator.clipboard.writeText(text);
|
||||
ok = true;
|
||||
}
|
||||
} catch (e) { /* 降级到 textarea */ }
|
||||
if (!ok) {
|
||||
try {
|
||||
const ta = document.createElement('textarea');
|
||||
ta.value = text;
|
||||
ta.style.position = 'fixed';
|
||||
ta.style.opacity = '0';
|
||||
document.body.appendChild(ta);
|
||||
ta.select();
|
||||
ok = document.execCommand('copy');
|
||||
ta.remove();
|
||||
} catch (e) { ok = false; }
|
||||
}
|
||||
showAlert(ok ? ('已复制 ' + state.picked.length + ' 人的姓名 / 登陆账号到剪贴板') : '复制失败,请手动选择结果复制', ok ? 'info' : '');
|
||||
});
|
||||
|
||||
// 清空历史(顶栏)
|
||||
$('#btnClearLog').addEventListener('click', () => {
|
||||
if (!state.log.length) return showAlert('暂无历史记录');
|
||||
|
||||
Reference in New Issue
Block a user