@@ -626,10 +626,10 @@
|
||||
|
||||
<div id="slider-area" style="display: none;">
|
||||
<div class="card" style="max-width: 480px;">
|
||||
<div class="card-title" id="slider-card-title">滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)</div>
|
||||
<div class="card-title">滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)</div>
|
||||
<div id="slider-app" data-v-app="">
|
||||
<div class="params-section" style="margin-bottom: 12px;">
|
||||
<label class="form-label" id="keyLabel" for="keyInput">Key (7765 服务方):</label>
|
||||
<label class="form-label" for="keyInput">Key (7765 服务方):</label>
|
||||
<input type="text" class="form-control" id="keyInput" placeholder="408449830" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
||||
<label class="form-label" for="data62Input">Data62:</label>
|
||||
<input type="text" class="form-control" id="data62Input" placeholder="请输入data62" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
||||
@@ -638,7 +638,7 @@
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button type="button" class="btn btn-verify btn-lg" id="slider-btn-verify" disabled style="padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;">开始验证</button>
|
||||
<div class="text-muted mt-2" id="slider-hint" style="font-size:12px;color:var(--muted);margin-top:8px;">请先填写完整的参数信息</div>
|
||||
<div class="text-muted mt-2" style="font-size:12px;color:var(--muted);margin-top:8px;">请先填写完整的参数信息</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -677,41 +677,21 @@
|
||||
return params;
|
||||
}
|
||||
|
||||
function isIpadVerify() {
|
||||
var device = ($('device') && $('device').value) || '';
|
||||
return (device || '').toLowerCase() === 'ipad';
|
||||
}
|
||||
|
||||
function updateSliderUIForDevice() {
|
||||
var keyLabel = $('keyLabel');
|
||||
var keyInput = $('keyInput');
|
||||
var cardTitle = $('slider-card-title');
|
||||
var hint = $('slider-hint');
|
||||
var ipad = isIpadVerify();
|
||||
if (keyLabel) keyLabel.textContent = ipad ? 'Code (iPad 登录验证码):' : 'Key (7765 服务方):';
|
||||
if (keyInput) keyInput.placeholder = ipad ? '请输入 iPad 登录验证码' : '408449830';
|
||||
if (cardTitle) cardTitle.textContent = ipad ? '验证码验证(iPad)' : '滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)';
|
||||
if (hint) hint.textContent = ipad ? '扫码后在此输入 iPad 验证码,并填写 Data62、Original Ticket 后点开始验证' : '请先填写完整的参数信息';
|
||||
}
|
||||
|
||||
function showSliderAreaAndFill(params) {
|
||||
var qrArea = $('qr-area');
|
||||
var sliderArea = $('slider-area');
|
||||
if (!qrArea || !sliderArea) return;
|
||||
qrArea.style.display = 'none';
|
||||
sliderArea.style.display = 'block';
|
||||
updateSliderUIForDevice();
|
||||
var keyInput = $('keyInput');
|
||||
var data62Input = $('data62Input');
|
||||
var ticketInput = $('originalTicketInput');
|
||||
var btnVerify = $('slider-btn-verify');
|
||||
var ipad = isIpadVerify();
|
||||
// 仅当有有效参数时填充;iPad 时第一项为 code 由用户输入不预填,Mac 时预填 key
|
||||
// 仅当有有效参数时填充,避免用 {} 清空已有数据
|
||||
var keyVal = params && (params.key || params.Key);
|
||||
var data62Val = params && params.data62;
|
||||
var ticketVal = params && (params.ticket || params.original_ticket);
|
||||
if (!ipad && keyVal !== undefined && keyVal !== '') if (keyInput) keyInput.value = keyVal;
|
||||
if (ipad && keyInput) keyInput.value = '';
|
||||
if (keyVal !== undefined && keyVal !== '') if (keyInput) keyInput.value = keyVal;
|
||||
if (data62Val !== undefined && data62Val !== '') if (data62Input) data62Input.value = data62Val;
|
||||
if (ticketVal !== undefined && ticketVal !== '') if (ticketInput) ticketInput.value = ticketVal;
|
||||
function toggleVerifyBtn() {
|
||||
@@ -725,59 +705,9 @@
|
||||
if (keyInput) keyInput.addEventListener('input', toggleVerifyBtn);
|
||||
if (data62Input) data62Input.addEventListener('input', toggleVerifyBtn);
|
||||
if (ticketInput) ticketInput.addEventListener('input', toggleVerifyBtn);
|
||||
if (btnVerify) btnVerify.addEventListener('click', async function(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var accountKey = ($('key') && $('key').value || '').trim();
|
||||
if (!accountKey) { log('请先填写账号唯一标识(key)', 'error'); return; }
|
||||
var codeOrKey = (keyInput && keyInput.value || '').trim();
|
||||
var data62 = (data62Input && data62Input.value || '').trim();
|
||||
var ticket = (ticketInput && ticketInput.value || '').trim();
|
||||
if (!data62 || !ticket) { log('请填写 Data62 和 Original Ticket', 'error'); return; }
|
||||
if (isIpadVerify()) {
|
||||
if (!codeOrKey) { log('请填写 iPad 登录验证码(Code)', 'error'); return; }
|
||||
btnVerify.disabled = true;
|
||||
try {
|
||||
log('正在提交 iPad 验证码...');
|
||||
var res = await fetch((API_BASE || '') + '/api/verify-code?key=' + encodeURIComponent(accountKey), {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ code: codeOrKey, data62: data62, ticket: ticket })
|
||||
});
|
||||
var data = await res.json().catch(function() { return { text: await res.text() }; });
|
||||
if (res.ok) {
|
||||
log('验证码验证结果: ' + JSON.stringify(data));
|
||||
updateLoginState('验证码已提交,请检测扫码状态', 'pending');
|
||||
} else {
|
||||
var errMsg = data.detail != null ? (typeof data.detail === 'object' ? JSON.stringify(data.detail) : data.detail) : (data.text || data.error || res.status);
|
||||
log('验证码验证失败: ' + errMsg, 'error');
|
||||
}
|
||||
} catch (err) {
|
||||
log('验证码请求失败: ' + (err && err.message ? err.message : err), 'error');
|
||||
}
|
||||
btnVerify.disabled = false;
|
||||
} else {
|
||||
if (!codeOrKey) { log('请填写 Key (7765 服务方)', 'error'); return; }
|
||||
btnVerify.disabled = true;
|
||||
try {
|
||||
log('正在提交滑块验证...');
|
||||
var res = await fetch((API_BASE || '') + '/api/slider-verify', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ key: codeOrKey, data62: data62, original_ticket: ticket })
|
||||
});
|
||||
var data = await res.json().catch(function() { return {}; });
|
||||
log('滑块验证结果: ' + JSON.stringify(data));
|
||||
if (res.ok && (data.ret === 0 || data.ok)) updateLoginState('滑块已提交,请检测扫码状态', 'pending');
|
||||
} catch (err) {
|
||||
log('滑块验证请求失败: ' + (err && err.message ? err.message : err), 'error');
|
||||
}
|
||||
btnVerify.disabled = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
toggleVerifyBtn();
|
||||
if (!ipad && !state.sliderScriptLoaded) {
|
||||
if (!state.sliderScriptLoaded) {
|
||||
state.sliderScriptLoaded = true;
|
||||
var script = document.createElement('script');
|
||||
script.type = 'module';
|
||||
@@ -1324,9 +1254,6 @@
|
||||
$('btn-show-slider') && $('btn-show-slider').addEventListener('click', function() {
|
||||
if (state.sliderParams) showSliderAreaAndFill(state.sliderParams);
|
||||
});
|
||||
$('device') && $('device').addEventListener('change', function() {
|
||||
if ($('slider-area') && $('slider-area').style.display !== 'none') updateSliderUIForDevice();
|
||||
});
|
||||
$('btn-check-scan').addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
onCheckScanStatus(false);
|
||||
|
||||
Reference in New Issue
Block a user