更新外观模块

This commit is contained in:
super
2026-05-06 22:41:26 +08:00
parent c3810fdb7b
commit b746812e23
67 changed files with 13159 additions and 39501 deletions

View File

@@ -24,11 +24,6 @@
<div class="prompt-preview">{{ defaultAiPrompt }}</div>
</div>
<div class="secret-card">
<div class="section-title">密钥</div>
<input v-model="cozeApiKey" class="secret-input" type="password" autocomplete="off" spellcheck="false" />
</div>
<div class="run-row">
<button type="button" class="btn-run" :disabled="parsing || !uploadedFiles.length" @click="parseFiles">
{{ parsing ? '解析中...' : '解析并创建任务' }}
@@ -170,6 +165,7 @@ import {
import { expandBrandFolderRecursive, type BrandExpandFolderItem } from '@/shared/api/brand'
import { getPywebviewApi } from '@/shared/bridges/pywebview'
import { getTaskPollIntervalMs } from '@/shared/task-progress-config'
import { getStoredApiSecret } from '@/shared/utils/api-secret-store'
import { createCategorizedTimers } from '@/shared/utils/categorized-timers'
const selectedFileNames = ref<string[]>([])
@@ -185,7 +181,6 @@ const defaultAiPrompt = `请帮我排查以下亚马逊商品在英国及欧洲
标题维度: 排查标题中是否包含大牌商标、敏感词或版权保护词汇。
结论XX`
const aiPrompt = ref('')
const cozeApiKey = ref('')
const parsing = ref(false)
const pushing = ref(false)
const queuePayloadText = ref('')
@@ -225,7 +220,7 @@ function effectiveAiPrompt() {
}
function effectiveCozeApiKey() {
return cozeApiKey.value.trim()
return getStoredApiSecret('appearance-patent').trim()
}
function maskSecret(secret: string) {
@@ -352,7 +347,7 @@ async function parseFiles() {
return
}
if (!effectiveCozeApiKey()) {
ElMessage.warning('请先填写密钥')
ElMessage.warning('请先在左上角设置中填写外观专利密钥')
return
}
parsing.value = true
@@ -399,6 +394,10 @@ async function pushToPythonQueue() {
ElMessage.error('当前环境未启用 pywebview enqueue_json')
return
}
if (!effectiveCozeApiKey()) {
ElMessage.warning('请先在左上角设置中填写外观专利密钥')
return
}
pushing.value = true
try {
const payload = {
@@ -773,6 +772,7 @@ onUnmounted(() => {
.selected-files { margin-top: 14px; color: #999; font-size: 12px; word-break: break-all; }
.selected-files span { display: block; margin: 4px 0; }
.prompt-card, .secret-card { margin-bottom: 18px; }
.secret-card { display: none; }
.prompt-input { width: 100%; box-sizing: border-box; resize: vertical; min-height: 180px; padding: 10px 12px; border: 1px solid #333; border-radius: 8px; background: #202020; color: #d8d8d8; font-size: 12px; line-height: 1.6; outline: none; }
.secret-input { width: 100%; box-sizing: border-box; height: 38px; padding: 0 12px; border: 1px solid #333; border-radius: 8px; background: #202020; color: #d8d8d8; font-size: 12px; outline: none; }
.prompt-input:focus, .secret-input:focus { border-color: #3498db; }