const SourcesPage = {
async render() { return '
'; },
async mount() {
document.getElementById('page-title').textContent = '来源管理';
document.getElementById('page-actions').innerHTML = '';
await this.load();
},
async load() {
const ct = document.getElementById('page-content');
try {
// 管理视图: 含停用项
const rows = await API.get('/sources');
ct.innerHTML = rows.length === 0
? ''
: `| code | 名称 | 排序 | 状态 | 操作 |
${rows.map(s => `
${U.esc(s.code)} |
${U.esc(s.label)} |
${s.sort_order} |
${s.enabled ? '启用' : '停用'} |
|
`).join('')}
来源用于标识玩家身份归属(如: 网易端/皮肤站/正版/离线)。已被身份数据使用的来源不能删除, 只能停用。
`;
} catch (e) { ct.innerHTML = `${e.message}
`; }
},
showAdd() {
U.modal('添加来源', `
`);
document.getElementById('src-form').onsubmit = async e => {
e.preventDefault();
try {
await API.post('/sources', {
code: document.getElementById('src-code').value,
label: document.getElementById('src-label').value,
sort_order: document.getElementById('src-sort').value,
});
App.closeModal(); this.load();
} catch(ex){alert(ex.message);}
};
},
showEdit(code, label, enabled, sortOrder) {
U.modal('编辑来源', `
`);
document.getElementById('src-edit-form').onsubmit = async e => {
e.preventDefault();
try {
await API.put(`/sources/${code}`, {
label: document.getElementById('se-label').value,
enabled: document.getElementById('se-enabled').value === '1',
sort_order: document.getElementById('se-sort').value,
});
App.closeModal(); this.load();
} catch(ex){alert(ex.message);}
};
},
async del(code) {
if (!await U.confirm(`确认删除来源 ${code}?`)) return;
try { await API.delete(`/sources/${code}`); this.load(); } catch(ex){alert(ex.message);}
}
};