From 3ff67f01f5502e37bdc368dac7b3de5d190060b3 Mon Sep 17 00:00:00 2001 From: Wx-2025 <351320169@qq.com> Date: Sun, 19 Oct 2025 01:37:56 +0800 Subject: [PATCH] Update prese_dragdrop.js --- PresetSettings/prese_dragdrop.js | 38 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/PresetSettings/prese_dragdrop.js b/PresetSettings/prese_dragdrop.js index 350f045..935f62e 100644 --- a/PresetSettings/prese_dragdrop.js +++ b/PresetSettings/prese_dragdrop.js @@ -41,8 +41,8 @@ function onDragStart(e, item) { draggedSection = draggedItem.data('section'); draggedOrderIndex = draggedItem.data('order-index'); - const popup = draggedItem.closest('.popup'); - scrollContainer = popup.length ? popup.find('.popup-body') : null; + // 修复:直接查找固定的滚动容器 + scrollContainer = $('#amily2-preset-settings-popup').find('#prompt-editor-container'); const pos = getEventPosition(e); startX = pos.x; @@ -103,23 +103,31 @@ function onDragEnd(e) { function completeDrag() { if (!draggedItem || !dragPlaceholder) return; - const placeholderIndex = dragPlaceholder.index(); const sectionContainer = dragPlaceholder.closest('.mixed-list'); - - const order = state.getCurrentMixedOrder()[draggedSection]; - const draggedElement = order[draggedOrderIndex]; - - order.splice(draggedOrderIndex, 1); - - const newIndex = placeholderIndex > draggedOrderIndex ? placeholderIndex - 1 : placeholderIndex; - - order.splice(newIndex, 0, draggedElement); - dragPlaceholder.before(draggedItem); - + + const newOrder = []; sectionContainer.find('.mixed-item').each(function(index) { - $(this).attr('data-order-index', index); + const $item = $(this); + $item.attr('data-order-index', index); // 更新UI索引属性 + + const type = $item.data('type'); + if (type === 'prompt') { + newOrder.push({ + type: 'prompt', + index: parseInt($item.data('prompt-index'), 10) + }); + } else if (type === 'conditional') { + newOrder.push({ + type: 'conditional', + id: $item.data('conditional-id') + }); + } }); + + const allOrders = state.getCurrentMixedOrder(); + allOrders[draggedSection] = newOrder; + state.setCurrentMixedOrder(allOrders); toastr.info('顺序已调整,请点击保存按钮以生效。', '', { timeOut: 3000 }); }