feat(resume): clear-all option in initialize dialog (structure kept, content emptied)

This commit is contained in:
root
2026-10-17 14:44:03 +08:00
parent a0dc671006
commit e5269a23ac
16 changed files with 83 additions and 64 deletions
+23 -4
View File
@@ -165,6 +165,23 @@ export function ResumePage() {
.then(() => { setInitOpen(false); toast('success', '简历已初始化为默认模板'); })
.catch(e => toast('error', e.message));
};
// 彻底清空:板块结构保留,内容全部置空(不填充示例)
const clearResume = () => {
const fresh = defaultResumeConfig();
fresh.sections = fresh.sections.map(x => ({
...x,
text: x.kind === 'text' ? '' : x.text,
items: x.kind === 'list' ? [] : x.items,
overrides: {}, excluded: [], itemOrder: [], hiddenFields: [],
}));
setConfig(fresh);
setOpenEditors(new Set());
void profileUpsert({ info: { ...profile, selfIntro }, resume: fresh })
.then(() => profileQ.refetch())
.then(() => { setInitOpen(false); toast('success', '简历数据已彻底清空'); })
.catch(e => toast('error', e.message));
};
// 重新载入:从服务器拉最新记录与配置,丢弃本地未保存状态
const reloadAll = async () => {
try {
@@ -496,13 +513,15 @@ export function ResumePage() {
title="初始化简历"
footer={<>
<Button variant="ghost" onClick={() => setInitOpen(false)}>取消</Button>
<Button variant="primary" className="!bg-danger !text-white" disabled={false} onClick={resetResume}>
<RotateCcw size={13} /> 确认初始化
<Button variant="secondary" onClick={clearResume}>彻底清空</Button>
<Button variant="primary" onClick={resetResume}>
<RotateCcw size={13} /> 恢复默认模板
</Button>
</>}>
<div className="text-[12.5px] leading-relaxed text-ink-2">
将清除全部个性化修改(板块调整、自定义条目、文字覆盖、样式设置),
恢复为默认模板与示例内容。
<b>恢复默认模板</b>:清除个性化修改,恢复默认板块与示例内容。
<div className="mt-1"><b>彻底清空</b>:保留板块结构,内容全部置空,从零开始。</div>
<div className="mt-2 text-ink-3">两种操作都不影响记录数据与个人信息。</div>
<div className="mt-2 text-ink-3">记录数据与个人信息不受影响,随时可重新修改。</div>
</div>
</Dialog>