diff --git a/app/static/workspace.js b/app/static/workspace.js
index 9db1395..3b47813 100644
--- a/app/static/workspace.js
+++ b/app/static/workspace.js
@@ -135,7 +135,8 @@ function design(){if(!currentSite())return noSite();const s=state.site;const car
return htmlHeading('外观与设计','先选一套网站风格,再打开可视化编辑器修改图文、导航和手机端布局。')+
`
${cards}
`+
`第二步 · 导航菜单
自定义网站的顶部导航:添加、删除、排序菜单项,支持三级下拉。
☰ 网站导航菜单
直接编辑菜单文字和链接,改完保存并重新构建即可生效。
点击按钮直接修改导航。
`+
- `第三步 · 设计网页
挑选要修改的页面;可在设计器中编辑导航、页眉、页脚及各设备布局。
选择要设计的页面
修改先保存为草稿,正式发布设计后才会参与下一次静态构建。
提示:网站设置用于公司信息和域名;可视化编辑器用于调整页面外观。两者不会混在同一表单里。
`;
+ `第三步 · 品牌标识
上传 Logo 和设置顶部联系按钮。
🏷 Logo 与联系按钮
Logo 显示在网站顶部左侧;联系按钮显示在导航右侧。
${s.logo?`
})
`:'
暂无 Logo
'}
${s.logo?' ':''}
`+
+ `第四步 · 设计网页
挑选要修改的页面;可在设计器中编辑导航、页眉、页脚及各设备布局。
选择要设计的页面
修改先保存为草稿,正式发布设计后才会参与下一次静态构建。
提示:网站设置用于公司信息和域名;可视化编辑器用于调整页面外观。两者不会混在同一表单里。
`;
}
function imports(){if(!currentSite())return noSite();return htmlHeading('导入与迁移','根据您已有的资料选择操作方式:Excel 产品、WordPress 网站,或者外部 API / 数据库。')+
``+
@@ -375,4 +376,27 @@ function addNavItem(){navItems.push({title:'新菜单',route:'/'});drawNavEditor
function removeNav(i){navItems.splice(i,1);drawNavEditor()}
function moveNav(i,dir){const t=navItems[i];navItems[i]=navItems[i+dir];navItems[i+dir]=t;drawNavEditor()}
window.W={addNavItem,removeNav,moveNav,saveNavDraft,publishNav};
+// Logo 上传与 CTA 设置
+async function uploadLogo(file){if(!file||!state.site)return;try{
+ const form=new FormData();form.append('file',file);
+ const r=await api(`/api/sites/${state.site.id}/media`,{method:'POST',body:form});
+ await api(`/api/sites/${state.site.id}`,{method:'PATCH',body:JSON.stringify({logo:r.url})});
+ await refreshSiteKeepView();rerender();toast('Logo 已上传并生效');
+}catch(e){toast('Logo 上传失败:'+e.message,true)}}
+async function removeLogo(){if(!state.site)return;try{
+ await api(`/api/sites/${state.site.id}`,{method:'PATCH',body:JSON.stringify({logo:''})});
+ await refreshSiteKeepView();rerender();toast('Logo 已移除');
+}catch(e){toast(e.message,true)}}
+async function saveCta(){if(!state.site)return;try{
+ const text=$('#ctaTextInput')?.value?.trim()||'Contact Us';
+ const href=$('#ctaHrefInput')?.value?.trim()||'/contact-us/';
+ const show=$('#ctaShowInput')?.checked!==false;
+ const d=await api(`/api/sites/${state.site.id}/site-design`);
+ const config=d.config||{};config.header=config.header||{};
+ config.header.cta_text=text;config.header.cta_href=href;config.header.show_cta=show;
+ await api(`/api/sites/${state.site.id}/site-design`,{method:'PUT',body:JSON.stringify({config,expected_revision:d.revision})});
+ const r2=await api(`/api/sites/${state.site.id}/site-design/publish`,{method:'POST',body:JSON.stringify({expected_revision:(d.revision||0)+1})});
+ toast('联系按钮已保存,重新构建后生效');
+}catch(e){toast('保存失败:'+e.message,true)}}
+window.W.uploadLogo=uploadLogo;window.W.removeLogo=removeLogo;window.W.saveCta=saveCta;
document.addEventListener('DOMContentLoaded',init);