Initial commit: DSH Web Manager

This commit is contained in:
2026-10-13 09:34:47 +08:00
commit 85332bbc56
135 changed files with 19712 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
import { api } from './api';
import { Panel, ResourceState, useAction, useResource } from './ui';
export function Orphans() {
const list=useResource(()=>api.request<string[]>('/orphans')), action=useAction();
return <Panel title="孤儿容器回收" action={<button onClick={list.refresh}>核验并刷新</button>}>
<p>仅列出已停止、归属和挂载核验通过且无实例或升级引用的容器。回收保留所有挂载数据,不删除网络。运行中及来源不明的容器不会列入。</p>
{action.feedback}<ResourceState resource={list}/>
{list.data?.length===0 && <p>没有可安全回收的容器。</p>}
{list.data?.map(id=><div key={id}><code>{id}</code><button disabled={action.busy} onClick={()=>action.run(async()=>{if(window.prompt('请输入完整容器 ID 确认回收(数据保留)')!==id)throw new Error('确认不匹配,未执行');await api.request('/orphans?id='+id+'&confirm='+id,'DELETE');await list.refresh();},'容器已回收,数据已保留','确认回收此停止的孤儿容器?')}>回收</button></div>)}
</Panel>;
}