From c37290e8e3ea96379927302945e6a4006e3111f5 Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Tue, 11 Aug 2026 08:27:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=AD=A5=E9=AA=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=EF=BC=88=E5=9C=A8=E8=AE=BE=E5=A4=87=E4=B8=8A=E5=8D=95=E6=AD=A5?= =?UTF-8?q?=E8=AF=95=E6=89=A7=E8=A1=8C=E9=AA=8C=E8=AF=81=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/admin/monitor.js | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/static/admin/monitor.js b/static/admin/monitor.js index eca566a..e92ef90 100644 --- a/static/admin/monitor.js +++ b/static/admin/monitor.js @@ -920,6 +920,7 @@ var _stepEditor={ card.draggable=true; card.dataset.idx=idx; card.dataset.stepId=step.id||''; + card.dataset.stepType=step.type; if(this._selected&&this._selected.indexOf(step.id)>=0)card.classList.add('selected'); // head var head=document.createElement('div'); @@ -1145,6 +1146,50 @@ var _stepEditor={ _makeStep:function(lib){ return {id:_newStepId(),type:lib.type,label:lib.label,params:JSON.parse(JSON.stringify(lib.params))}; }, + // 测试此步骤:在选中设备上试执行当前步骤,验证选择器 + _testStep:function(btn){ + var card=btn.closest('.step-card'); + if(!card)return; + var type=card.dataset.stepType||''; + var params={}; + card.querySelectorAll('[data-key]').forEach(function(inp){ + if(inp.type==='checkbox')params[inp.dataset.key]=inp.checked; + else if(inp.type==='number')params[inp.dataset.key]=parseFloat(inp.value)||0; + else params[inp.dataset.key]=inp.value; + }); + this._pendingTest={type:type,label:'测试',params:params}; + this._showTestDevicePicker(); + }, + _showTestDevicePicker:function(){ + document.getElementById('test-modal-title').textContent='测试步骤 - 选择设备'; + document.getElementById('test-modal-body').innerHTML= + '
选择在哪个设备上试执行
加载中...
'; + document.getElementById('test-overlay').classList.add('show'); + var self=this; + apiGet('/api/uiauto/devices').then(function(r){ + var list=document.getElementById('test-device-list'); + if(!list)return; + if(!r||!r.ok){list.innerHTML='
'+esc((r&&r.error)||'获取设备失败')+'
';return;} + list.innerHTML=(r.devices||[]).map(function(d){ + return '
'+ + '
📱
'+ + '
'+esc(d.serial)+'
'+ + '
'+esc(d.model||d.product||'')+'
'; + }).join('')||'
无可用设备
'; + }); + }, + _runTestStep:async function(serial){ + var step=this._pendingTest; + var body=document.getElementById('test-modal-body'); + if(!step||!body)return; + body.innerHTML='
正在 '+esc(serial)+' 上执行(adb + u2 连接约需几秒)...
请稍候,期间不要操作该设备
'; + var r=await apiPost('/api/steps/test',{serial:serial,step:step}); + if(!r)return; + var icon=r.result==='命中'?'✅':(r.result==='未找到'?'❌':'▶'); + body.innerHTML='
'+icon+' '+esc(r.result||'已执行')+''+ + '
'+esc(r.msg||'')+'
'+ + '
'; + }, addStep:function(type){ var lib=_findLib(type); if(!lib)return;