From 4473f159e5174ae032ea56d281d68eda54b52e34 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Wed, 2 Sep 2026 10:51:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E8=AF=A6=E6=83=85tab=E8=B0=83=E6=95=B4=EF=BC=9A=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E8=AE=BE=E5=AE=9A=E5=86=85=E8=81=94=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E9=A1=B5=EF=BC=8C=E8=A7=86=E9=A2=91=E5=88=97=E8=A1=A8=E7=A7=BB?= =?UTF-8?q?=E5=85=A5persona=20tab=E5=B9=B6=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - info tab:移除视频列表表格,内联展示账号设定(空态/文字版/卡片+文字切换),小节标题「账号设定」 - persona tab:改为视频列表表格+分页/批量,tab 标签改名「视频列表」 - persona 加载改为 info tab 首屏并行加载(dvP/await 拆分),tab 点击处理器去冗余 --- .workbuddy/memory/2026-09-02.md | 10 +++ .../V1.0/mcn-work-shop/public/data-pages.js | 66 ++++++++++--------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/.workbuddy/memory/2026-09-02.md b/.workbuddy/memory/2026-09-02.md index 3e109d3..0caa130 100644 --- a/.workbuddy/memory/2026-09-02.md +++ b/.workbuddy/memory/2026-09-02.md @@ -40,3 +40,13 @@ - 边界:mcn-dou-analysis 内部 `subskills/nuwa-skill-main` 为正常结构不动;dsh 副本 `~/.dsh/skills/mcn-dou-analysis/` 单向只读未动 - 残留检查:project/ 下全类型 grep `subskill/`(排除 subskills/)零命中;memory 历史日志为 append-only 不改写 - git:commit 11fe8d4(520 文件),push a255abd..11fe8d4 成功 + +## 账号详情页 tab 结构调整(16:25,用户要求) +- **需求原话**:「账号详情 下面的视频列表 改为账号设定内容,视频列表放到现在账号设定tab下,改名为视频列表」 +- **修改**(data-pages.js renderAccountDetail): + - tab 定义:`persona` 标签「账号设定」→「视频列表」 + - info tab(账号信息):移除视频列表表格,内联展示账号设定内容(空态/文字版/卡片+文字切换),小节标题「账号设定」 + - persona tab:改为视频列表表格 + list-footer(批量/分页) + - 加载逻辑:persona 数据从「点击 persona tab 时才加载」改为「info tab 首屏即加载」(`if (tab==='info' && persona===null) await loadPersona()`,与视频数据并行 dvP/await 拆分);tab 点击处理器去掉冗余 persona 加载 +- **验证**:bindPager/bindBatchBar 均用 querySelectorAll/空值守卫,容器缺元素不报错;data-rewrite(AI创作)点击时仍 `if (!persona) await loadPersona()` 兜底;data-extract 绑定全局查找在 info tab 同样生效 +- 服务未重启(纯静态资源),重开页面 `?v=20260902#/account/1629`(旧梦留声机)验证 diff --git a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js index b1c198b..17bf537 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/public/data-pages.js @@ -389,7 +389,9 @@ async function renderAccountDetail(view, id) { } async function load() { - const dv = await api('/api/dsh/account-videos?accountId=' + accountId + '&page=' + page + '&pageSize=20'); + const dvP = api('/api/dsh/account-videos?accountId=' + accountId + '&page=' + page + '&pageSize=20'); + if (tab === 'info' && persona === null) await loadPersona(); // 账号设定内联在信息页,首屏即加载(与视频数据并行) + const dv = await dvP; const infoGrid = (label, val, wide, raw) => `
${label}
${raw ? val : esc(fmt(val))}
`; const rows = (dv.items || []).map((v) => ` ${bstate.batch ? `` : ''} @@ -402,7 +404,34 @@ async function renderAccountDetail(view, id) { ${fmtDuration(v.duration)} `).join(''); - const tabBtns = [['info', '账号信息'], ['persona', '账号设定'], ['analysis', '数据分析']].map(([k, label]) => ``).join(''); + const tabBtns = [['info', '账号信息'], ['persona', '视频列表'], ['analysis', '数据分析']].map(([k, label]) => ``).join(''); + // 账号设定内容渲染(info tab 内联展示;无设定=空态引导 / 无卡片=文字版 / 有卡片=卡片+文字切换) + const personaPanel = () => { + if (!persona) { + return `
+
${svgIcon('users', 40)}
+
该账号暂无账号设定信息
+
为达人提炼账号设定后,可基于设定生成脚本
+ +
`; + } + if (!personaCard) { + // 无卡片:直接文字版(无切换控件) + return `
${renderMarkdown(persona)}
`; + } + // 有卡片:右上角图标切换(卡片版 / 文字版),默认卡片版 + return ` +
+
+ + +
+
+ ${esc(acc.account_name)}账号设定卡 +
+
${renderMarkdown(persona)}
+
`; + }; let panel = ''; if (tab === 'info') { const contentText = String(acc.content || ''); @@ -414,37 +443,15 @@ async function renderAccountDetail(view, id) {
${infoGrid('简介', acc.bio, true)}
${infoGrid('账号定位', contentHtml, true, true)}
-

视频列表

+

账号设定

+ ${personaPanel()}`; + } else if (tab === 'persona') { + panel = `

视频列表

${bstate.batch ? '' : ''}${rows || ``}
发布时间视频标题点赞评论分享收藏时长操作
暂无视频数据
`; - } else if (tab === 'persona') { - if (!persona) { - panel = `
-
${svgIcon('users', 40)}
-
该账号暂无账号设定信息
-
为达人提炼账号设定后,可基于设定生成脚本
- -
`; - } else if (!personaCard) { - // 无卡片:直接文字版(无切换控件) - panel = `
${renderMarkdown(persona)}
`; - } else { - // 有卡片:右上角图标切换(卡片版 / 文字版),默认卡片版 - panel = ` -
-
- - -
-
- ${esc(acc.account_name)}账号设定卡 -
-
${renderMarkdown(persona)}
-
`; - } } else { panel = analysis ? `
${renderMarkdown(analysis)}
` : `
该账号暂无数据分析
`; } @@ -457,9 +464,8 @@ async function renderAccountDetail(view, id) { bindBack(view); view.querySelectorAll('[data-tab]').forEach((b) => b.addEventListener('click', async () => { tab = b.dataset.tab; - if (tab === 'persona' && persona === null) await loadPersona(); if (tab === 'analysis' && analysis === null) await loadAnalysis(); - load(); + load(); // info tab 的账号设定加载已在 load() 内处理 })); bindPager(view, (p) => { page = p; load(); }); bindBatchBar(view, {