From 25f37f69a456fbbe0bd7b2bc8d2e829c3c76b705 Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Mon, 12 Oct 2026 10:49:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E7=BC=96=E8=BE=91=E5=99=A8):=20foreach=5Fa?= =?UTF-8?q?ccount=20=E5=BD=93=E5=AE=B9=E5=99=A8=E6=B8=B2=E6=9F=93=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E5=B0=B1=E5=9C=B0=E7=BC=96=E8=BE=91/?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BC=96=E8=BE=91=E5=99=A8=E9=83=BD=E8=83=BD?= =?UTF-8?q?=E5=B1=95=E5=BC=80=E5=BE=AA=E7=8E=AF=E9=87=8C=E7=9A=84=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户反馈"你只是打包成了一个动作,里面具体的步骤我也看不到":两个编辑器都把**容器类型写死** 成 loop/group/if_el,新的 foreach_account 被当叶子渲染 → 发布流程整段折叠成一步、改不了。 · release.js:就地编辑的嵌套渲染条件加上 foreach_account(then/else/children 都展开) · editor.js:卡片样式、子步骤渲染、参数表单三处都认 foreach_account(参数:跑哪天/指定日期/ 最多几个号/失败也再试 + 说明"数据源是计划表、不需要账号维护"),并留注释提醒加新容器要改三处 · 实测:把 _rpStepRow/_rpStepRows 抽出来在 node 里跑一遍,循环体与 then/else 全部渲染出来 ✓ --- static/admin/editor.js | 17 ++++++++++++++--- static/admin/release.js | 5 ++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/static/admin/editor.js b/static/admin/editor.js index b5235ca..5078df4 100644 --- a/static/admin/editor.js +++ b/static/admin/editor.js @@ -268,7 +268,7 @@ var _stepEditor={ var self=this; var lib=_findLib(step.type)||{icon:'?',label:step.type}; var card=document.createElement('div'); - card.className='step-card'+(step.type==='loop'?' loop-block':'')+(step.type==='group'?' group-block':'')+(step.type==='if_el'?' if-block':''); + card.className='step-card'+(step.type==='loop'?' loop-block':'')+(step.type==='group'?' group-block':'')+(step.type==='if_el'?' if-block':'')+(step.type==='foreach_account'?' loop-block':''); card.draggable=true; card.dataset.idx=idx; card.dataset.stepId=step.id||''; @@ -316,8 +316,9 @@ var _stepEditor={ card.classList.remove('drag-over'); self._handleDrop(e,parentArr,idx); }); - // loop/group 子步骤 - if(step.type==='loop'||step.type==='group'){ + // loop/group/foreach_account 子步骤(**容器不列进来就看不到里面** —— 加新容器类型时 + // 记得同时改这里、card.className 和 _renderParams 三处) + if(step.type==='loop'||step.type==='group'||step.type==='foreach_account'){ if(step.params&&step.params.children){ var childWrap=document.createElement('div'); childWrap.className='step-children'; @@ -473,6 +474,16 @@ var _stepEditor={ '
'+ '
'; h+='
将下方子步骤循环执行指定轮次/时长;一直循环无限跑直到任务被外部停止——配合调度"定时启动+停止"(如 9:00 启动 / 18:00 停止)实现全天候养号,或配合任务"运行时长上限"自动停止
'; + }else if(step.type==='foreach_account'){ + // 循环本机待发的号(发布流程的最外层容器):把"跑哪些号"讲清楚,别让人以为是普通循环 + const fds=(p.date_source==='fixed')?'fixed':'today'; + h+='
'+ + '
'; + h+='
'+ + '
'; + h+='
一轮把本机待发的号跑完:逐个把名字写进"本次要发的名字",执行下方子步骤(切号 → 读名字 → 校验 → 推送 → 发布 → 标记);试过的不回头,跑完/被停/超时/到上限就收工。数据源是计划表(谁还有待发内容谁就在里面),不需要任何账号维护。
'; }else if(step.type==='group'){ h+='
动作组:按顺序执行下方子步骤一次。把多个步骤打包成一个可复用的整体。
'; h+='
把本组步骤保存到左侧自定义动作库,方便复用
'; diff --git a/static/admin/release.js b/static/admin/release.js index bc01897..9bbc156 100644 --- a/static/admin/release.js +++ b/static/admin/release.js @@ -876,8 +876,11 @@ function _rpStepRow(s, path, total, idx) { var fields = _RP_FIELDS[s.type] || []; var body = fields.map(function (f) { return _rpField(s.type, p, f, path); }).join(''); // 条件判断:命中/未命中两个分支**照样能就地编辑**(发布流程就藏在 then 里) + // foreach_account(循环本机待发的号)也是容器 —— 不列进来的话,发布流程整段会被折叠成 + // 一个"看不见里面"的步骤(实测踩过:用户打开就地编辑发现改不了) var nested = ''; - if (s.type === 'if_el' || s.type === 'loop' || s.type === 'group') { + if (s.type === 'if_el' || s.type === 'loop' || s.type === 'group' + || s.type === 'foreach_account') { [['then', '命中时(then)'], ['else', '没命中时(else)'], ['children', '里面的步骤']].forEach(function (pair) { var k = pair[0]; if (!(p[k] instanceof Array)) return;