Skip to content

Commit a553912

Browse files
fix: question
1 parent 662cfe2 commit a553912

5 files changed

Lines changed: 43 additions & 53 deletions

File tree

‎ui/src/views/knowledge-detail/context.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ export function provideKnowledgeDetailContext(state: KnowledgeDetailState) {
239239
return context
240240
}
241241

242-
/** 根据消费方声明的范围,从现有完整 API 对象推导类型,不补造方法。 */
242+
/** 根据声明的范围,从现有完整 API 对象推导类型,不补造方法。 */
243243
type ScopedResourceApi<Scope extends ResourceScope> = {
244244
readonly [Module in keyof KnowledgeResourceApi]: Scope extends ResourceScope
245245
? Module extends keyof (typeof resourceConfigs)[Scope]['resourceApi']

‎ui/src/views/knowledge-detail/library/document/import-document/WorkflowImportDocumentDrawer.vue‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ const userInputTitle = computed(() => knowledgeBaseNode.value?.properties?.user_
6060
const showNext = computed(() => hasKnowledgeBaseInput.value && active.value === 'data_source')
6161
const showPrev = computed(() => hasKnowledgeBaseInput.value && active.value === 'knowledge_base')
6262
const showImport = computed(() => (hasKnowledgeBaseInput.value ? active.value === 'knowledge_base' : active.value === 'data_source'))
63-
const busy = computed(() => loading.value || uploadingCount.value > 0)
6463
function open(workflow?: LogicFlow.GraphConfigData) {
6564
currentWorkflow.value = workflow ?? null
6665
visible.value = true
@@ -80,7 +79,7 @@ function getActionData() {
8079
return data
8180
}
8281
function handleNext() {
83-
if (busy.value) return
82+
if (loading.value || uploadingCount.value > 0) return
8483
return actionRef.value
8584
?.validate()
8685
.then(() => {
@@ -94,12 +93,12 @@ function handleNext() {
9493
})
9594
}
9695
function handlePrevious() {
97-
if (busy.value) return
96+
if (loading.value || uploadingCount.value > 0) return
9897
formPayload.value.knowledge_base = actionRef.value?.getData() ?? {}
9998
active.value = 'data_source'
10099
}
101100
function handleSubmit() {
102-
if (busy.value || active.value === 'result' || !actionRef.value) return
101+
if (loading.value || uploadingCount.value > 0 || active.value === 'result' || !actionRef.value) return
103102
const step = active.value
104103
loading.value = true
105104
return actionRef.value
@@ -122,7 +121,7 @@ function handleSubmit() {
122121
})
123122
}
124123
function handleContinueImport() {
125-
if (busy.value) return
124+
if (loading.value || uploadingCount.value > 0) return
126125
formPayload.value = { data_source: {}, knowledge_base: {} }
127126
actionId.value = undefined
128127
actionKey.value += 1
@@ -160,13 +159,13 @@ defineExpose({ open })
160159
</div>
161160
<template #footer>
162161
<!-- 取消导入 -->
163-
<el-button v-if="active !== 'result'" plain :disabled="busy" @click="visible = false">取消</el-button>
162+
<el-button v-if="active !== 'result'" plain :disabled="loading || uploadingCount > 0" @click="visible = false">取消</el-button>
164163
<!-- 继续导入 -->
165164
<el-button v-if="active === 'result'" plain @click="handleContinueImport">继续导入</el-button>
166165
<!-- 返回数据源 -->
167-
<el-button v-if="showPrev" plain :disabled="busy" @click="handlePrevious">上一步</el-button>
166+
<el-button v-if="showPrev" plain :disabled="loading || uploadingCount > 0" @click="handlePrevious">上一步</el-button>
168167
<!-- 进入用户输入 -->
169-
<el-button v-if="showNext" type="primary" :disabled="busy" @click="handleNext">下一步</el-button>
168+
<el-button v-if="showNext" type="primary" :disabled="loading || uploadingCount > 0" @click="handleNext">下一步</el-button>
170169
<!-- 执行工作流导入 -->
171170
<el-button v-if="showImport" type="primary" :loading="loading" :disabled="uploadingCount > 0" @click="handleSubmit">开始导入</el-button>
172171
<!-- 完成导入 -->

‎ui/src/views/knowledge-detail/question/components/ProblemDetailDrawer.vue‎

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<script setup lang="ts">
2-
import { computed, nextTick, ref, watch } from 'vue'
2+
import { nextTick, ref, watch } from 'vue'
33
import type { ProblemItem, ProblemParagraph } from '@/api/types'
44
import MkEditName from '@/components/mk-edit-name/index.vue'
55
import { MsgSuccess } from '@/utils/message'
66
import { useKnowledgeDetailContext } from '@/views/knowledge-detail/context'
77
import { useDocumentDetailContext } from '@/views/document-detail/context'
88
import ParagraphDialog from '@/views/document-detail/paragraph-dialog/ParagraphDialog.vue'
9-
import ProblemParagraphCard from './ProblemParagraphCard.vue'
9+
import { getFileIconUrl } from '@/utils/icon'
1010
1111
defineOptions({ name: 'ProblemDetailDrawer' })
1212
const problem = defineModel<ProblemItem>({ required: true })
13-
const props = defineProps<{ hasPrevious: boolean; hasNext: boolean; listLoading: boolean }>()
13+
defineProps<{ hasPrevious: boolean; hasNext: boolean }>()
1414
const emit = defineEmits<{ previous: []; next: []; refresh: []; closed: [] }>()
1515
const { knowledgeId, resourceApi } = useKnowledgeDetailContext()
1616
const { resourceApi: documentResourceApi } = useDocumentDetailContext()
@@ -20,7 +20,6 @@ const loadFailed = ref(false)
2020
const paragraphs = ref<ProblemParagraph[]>([])
2121
const selectedParagraph = ref<ProblemParagraph>()
2222
const paragraphDialogRef = ref<InstanceType<typeof ParagraphDialog>>()
23-
const busy = computed(() => loading.value || props.listLoading)
2423
2524
function loadParagraphs() {
2625
loadFailed.value = false
@@ -55,7 +54,7 @@ function handleSaveProblem(content: string): Promise<string> {
5554
}
5655
5756
function handleUnlinkParagraph(paragraph: ProblemParagraph) {
58-
if (busy.value) return
57+
if (loading.value) return
5958
loading.value = true
6059
return (
6160
documentResourceApi.paragraph
@@ -75,7 +74,7 @@ function handleUnlinkParagraph(paragraph: ProblemParagraph) {
7574
}
7675
7776
async function handleOpenParagraph(paragraph: ProblemParagraph) {
78-
if (busy.value) return
77+
if (loading.value) return
7978
selectedParagraph.value = paragraph
8079
// 先挂载带有当前文档 ID 的详情弹窗,再调用其已有打开方法。
8180
await nextTick()
@@ -90,7 +89,7 @@ function handleParagraphClosed() {
9089
}
9190
9291
function handleBeforeClose(done: () => void) {
93-
if (!busy.value) done()
92+
if (!loading.value) done()
9493
}
9594
9695
watch(
@@ -113,7 +112,28 @@ watch(
113112
<div class="mb-2">关联分段数({{ problem.paragraph_count }})</div>
114113
<div v-if="paragraphs.length" class="flex-column gap-3">
115114
<template v-for="paragraph in paragraphs" :key="paragraph.id">
116-
<ProblemParagraphCard :paragraph="paragraph" :disabled="busy" @open="handleOpenParagraph" @unlink="handleUnlinkParagraph" />
115+
<!-- 查看关联分段详情 -->
116+
<el-card class="mk-paragraph-card group relative cursor-pointer" shadow="never" @click="handleOpenParagraph(paragraph)">
117+
<h4 class="mb-2 truncate pr-8" :title="paragraph.title || '-'">{{ paragraph.title || '-' }}</h4>
118+
<p class="mb-3 line-clamp-2 break-words" :title="paragraph.content">{{ paragraph.content }}</p>
119+
<div class="flex-align-center gap-2 text-sm text-N500">
120+
<span class="shrink-0">{{ paragraph.content.length }} 字符</span>
121+
<el-divider direction="vertical" />
122+
<img :src="getFileIconUrl(paragraph.document_name)" class="size-4 shrink-0" alt="" />
123+
<span class="truncate" :title="paragraph.document_name">{{ paragraph.document_name }}</span>
124+
</div>
125+
<!-- 取消当前问题与分段的关联,不删除分段 -->
126+
<MkTooltip content="取消关联" placement="top">
127+
<el-button
128+
circle
129+
class="group-hover-visible absolute top-3 right-3 shadow-md"
130+
:disabled="loading"
131+
@click.stop="handleUnlinkParagraph(paragraph)"
132+
>
133+
<MkIcon name="icon_unlink_outlined" />
134+
</el-button>
135+
</MkTooltip>
136+
</el-card>
117137
</template>
118138
</div>
119139
<MkEmpty v-else-if="!loading" description="暂无关联分段" />
@@ -122,9 +142,9 @@ watch(
122142
<!-- 关联分段:TODO -->
123143
<el-button plain>关联分段</el-button>
124144
<!-- 查看上一个问题 -->
125-
<el-button plain :disabled="busy || !hasPrevious" @click="emit('previous')">上一个</el-button>
145+
<el-button plain :disabled="loading || !hasPrevious" @click="emit('previous')">上一个</el-button>
126146
<!-- 查看下一个问题 -->
127-
<el-button plain :disabled="busy || !hasNext" @click="emit('next')">下一个</el-button>
147+
<el-button plain :disabled="loading || !hasNext" @click="emit('next')">下一个</el-button>
128148
</template>
129149
</MkDrawer>
130150
<ParagraphDialog

‎ui/src/views/knowledge-detail/question/components/ProblemParagraphCard.vue‎

Lines changed: 0 additions & 28 deletions
This file was deleted.

‎ui/src/views/knowledge-detail/question/index.vue‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,17 +150,17 @@ function handleOpenProblem(problem: ProblemItem, column: TableColumnCtx<ProblemI
150150
detailProblem.value = { ...problem }
151151
}
152152
153-
async function handleNavigateProblem(offset: -1 | 1) {
153+
async function handleNavigateProblem(direction: -1 | 1) {
154154
if (loading.value || currentIndex.value < 0) return
155-
const nextProblem = problems.value[currentIndex.value + offset]
155+
const nextProblem = problems.value[currentIndex.value + direction]
156156
if (nextProblem) {
157157
detailProblem.value = { ...nextProblem }
158158
return
159159
}
160-
if (!(offset === -1 ? hasPrevious.value : hasNext.value)) return
160+
if (!(direction === -1 ? hasPrevious.value : hasNext.value)) return
161161
clearSelection()
162-
const records = await loadProblems(paginationConfig.value.currentPage + offset)
163-
const adjacentProblem = offset === 1 ? records?.[0] : records?.at(-1)
162+
const records = await loadProblems(paginationConfig.value.currentPage + direction)
163+
const adjacentProblem = direction === 1 ? records?.[0] : records?.at(-1)
164164
if (detailProblem.value && adjacentProblem) detailProblem.value = { ...adjacentProblem }
165165
}
166166
@@ -249,7 +249,6 @@ onMounted(() => loadProblems())
249249
<ProblemDetailDrawer
250250
v-if="detailProblem"
251251
v-model="detailProblem"
252-
:list-loading="loading"
253252
:has-previous="hasPrevious"
254253
:has-next="hasNext"
255254
@previous="handleNavigateProblem(-1)"

0 commit comments

Comments
 (0)