diff --git a/src/assets/icons/promptEditProductNo.svg b/src/assets/icons/promptEditProductNo.svg new file mode 100644 index 00000000..36951dfb --- /dev/null +++ b/src/assets/icons/promptEditProductNo.svg @@ -0,0 +1,3 @@ + diff --git a/src/assets/icons/promptEditProductYes.svg b/src/assets/icons/promptEditProductYes.svg new file mode 100644 index 00000000..daf0070b --- /dev/null +++ b/src/assets/icons/promptEditProductYes.svg @@ -0,0 +1,3 @@ + diff --git a/src/assets/images/editProduct/PromptEditProduct_edited1.png b/src/assets/images/editProduct/PromptEditProduct_edited1.png new file mode 100644 index 00000000..e86b412b Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_edited1.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_edited2.png b/src/assets/images/editProduct/PromptEditProduct_edited2.png new file mode 100644 index 00000000..2f0000a5 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_edited2.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_edited3.png b/src/assets/images/editProduct/PromptEditProduct_edited3.png new file mode 100644 index 00000000..999f89c3 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_edited3.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list1.png b/src/assets/images/editProduct/PromptEditProduct_list1.png new file mode 100644 index 00000000..b938ca1a Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list1.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list10.png b/src/assets/images/editProduct/PromptEditProduct_list10.png new file mode 100644 index 00000000..54393214 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list10.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list11.png b/src/assets/images/editProduct/PromptEditProduct_list11.png new file mode 100644 index 00000000..61d658df Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list11.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list2.png b/src/assets/images/editProduct/PromptEditProduct_list2.png new file mode 100644 index 00000000..b305848e Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list2.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list3.png b/src/assets/images/editProduct/PromptEditProduct_list3.png new file mode 100644 index 00000000..62577bf1 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list3.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list4.png b/src/assets/images/editProduct/PromptEditProduct_list4.png new file mode 100644 index 00000000..dadf1858 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list4.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list5.png b/src/assets/images/editProduct/PromptEditProduct_list5.png new file mode 100644 index 00000000..913c9d49 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list5.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list6.png b/src/assets/images/editProduct/PromptEditProduct_list6.png new file mode 100644 index 00000000..35e03c4f Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list6.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list7.png b/src/assets/images/editProduct/PromptEditProduct_list7.png new file mode 100644 index 00000000..43f62618 Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list7.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list8.png b/src/assets/images/editProduct/PromptEditProduct_list8.png new file mode 100644 index 00000000..ede4506f Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list8.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_list9.png b/src/assets/images/editProduct/PromptEditProduct_list9.png new file mode 100644 index 00000000..0568333e Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_list9.png differ diff --git a/src/assets/images/editProduct/PromptEditProduct_listOriginal.png b/src/assets/images/editProduct/PromptEditProduct_listOriginal.png new file mode 100644 index 00000000..e86b412b Binary files /dev/null and b/src/assets/images/editProduct/PromptEditProduct_listOriginal.png differ diff --git a/src/component/home/tools/poseTransfer/promptInput.vue b/src/component/home/tools/poseTransfer/promptInput.vue index de0812e3..8b5529be 100644 --- a/src/component/home/tools/poseTransfer/promptInput.vue +++ b/src/component/home/tools/poseTransfer/promptInput.vue @@ -311,6 +311,20 @@ const handleInputChange = (index: number, event: Event) => { } } +// 增强中文输入事件处理 +const handleCompositionStart = (index: number, event: CompositionEvent) => { + compositionState.isComposing = true + compositionState.currentInputIndex = index + + const target = event.target as HTMLSpanElement + // 如果是placeholder状态,开始中文输入时清除placeholder + if (target.classList.contains('has-placeholder')) { + target.classList.remove('has-placeholder') + target.textContent = '' + data.content[index].value = '' + } +} + // 添加专门的粘贴事件处理 const handleInputPaste = (event: ClipboardEvent, index: number) => { const target = event.target as HTMLSpanElement @@ -341,6 +355,11 @@ const handleInputPaste = (event: ClipboardEvent, index: number) => { const handleInputKeydown = (event: KeyboardEvent, index: number) => { const target = event.target as HTMLSpanElement + // 如果是中文输入过程中,不处理普通按键 + if (compositionState.isComposing) { + return + } + if (event.key === 'Backspace') { // 如果显示placeholder,阻止删除 if (target.classList.contains('has-placeholder')) { @@ -360,7 +379,7 @@ const handleInputKeydown = (event: KeyboardEvent, index: number) => { } } } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) { - // 普通字符输入 + // 普通字符输入 - 只有在非中文输入状态下才处理 if (target.classList.contains('has-placeholder')) { event.preventDefault() target.textContent = event.key @@ -410,24 +429,13 @@ const handlePasteInInput = (index: number, element: HTMLElement) => { } } -// 添加中文输入事件处理 -const handleCompositionStart = (index: number, event: CompositionEvent) => { - compositionState.isComposing = true - compositionState.currentInputIndex = index - - const target = event.target as HTMLSpanElement - // 如果是placeholder状态,开始中文输入时清除placeholder - if (target.classList.contains('has-placeholder')) { - target.classList.remove('has-placeholder') - target.textContent = '' - data.content[index].value = '' - } -} - const handleCompositionEnd = (index: number, event: CompositionEvent) => { - compositionState.isComposing = false - compositionState.currentInputIndex = -1 - + // 延迟设置 isComposing 为 false,确保所有相关事件都处理完毕 + setTimeout(() => { + compositionState.isComposing = false + compositionState.currentInputIndex = -1 + }, 0) + const target = event.target as HTMLSpanElement const newValue = target.textContent || '' data.content[index].value = newValue @@ -435,14 +443,28 @@ const handleCompositionEnd = (index: number, event: CompositionEvent) => { // 如果中文输入后内容为空,显示placeholder const item = data.content[index] if (newValue.trim() === '' && item.placeholder) { - target.classList.add('has-placeholder') - target.textContent = item.placeholder + // 延迟显示 placeholder,确保光标位置正确 + nextTick(() => { + if (target.textContent?.trim() === '') { + target.classList.add('has-placeholder') + target.textContent = item.placeholder + } + }) } } +// 添加输入框焦点事件处理,确保中文输入状态正确重置 +const handleInputFocus = (index: number) => { + compositionState.currentInputIndex = index +} + +// 修改输入框的 blur 处理 const handleInputBlur = (index: number) => { - compositionState.isComposing = false - compositionState.currentInputIndex = -1 + // 延迟重置状态,避免与 compositionend 冲突 + setTimeout(() => { + compositionState.isComposing = false + compositionState.currentInputIndex = -1 + }, 100) updateInputDisplay(index) } @@ -544,6 +566,7 @@ defineExpose({ {{ $t('ProductImg.PromptAssit') }} +