|
@@ -63,7 +63,7 @@
|
|
|
</div>
|
|
|
<el-scrollbar class="management-content-middle">
|
|
|
<el-table :data="knowledgeBase.filesList" ref="KBTableRef">
|
|
|
- <el-table-column type="selection" width="30" />
|
|
|
+ <el-table-column :selectable="handleSelectable" type="selection" width="30" />
|
|
|
<el-table-column label="#" prop="index" width="50" />
|
|
|
<el-table-column prop="file_name" min-width="150" label="标题">
|
|
|
<template #default="{ row }">
|
|
@@ -85,20 +85,21 @@
|
|
|
<el-table-column prop="created_at" label="上传时间" width="150" />
|
|
|
<el-table-column prop="" label="状态" width="80">
|
|
|
<template #default="{ row }">
|
|
|
- <span v-if="row.isValid">
|
|
|
+ <span v-if="row.status">
|
|
|
<i class="circle" type="success"></i>
|
|
|
<el-text type="success">可用</el-text>
|
|
|
</span>
|
|
|
<span v-else>
|
|
|
- <i class="circle" type="warning"></i>
|
|
|
- <el-text type="warning">异常</el-text>
|
|
|
+ <i class="circle" type="danger"></i>
|
|
|
+ <el-text type="danger">禁用</el-text>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column fixed="right" label="操作" min-width="55">
|
|
|
<template #default="{ row }">
|
|
|
<div class="operation">
|
|
|
- <el-button link type="primary" @click="handleImportFiles([toRaw(row)])">导入</el-button>
|
|
|
+ <el-button link type="primary" :disabled="!row.status"
|
|
|
+ @click="handleImportFiles([toRaw(row)])">导入</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -233,7 +234,7 @@ const props = defineProps({
|
|
|
job_creator: { type: String, required: false, default: 'admin' },
|
|
|
status: { type: Number, required: false, default: 0 },
|
|
|
})
|
|
|
-const emit = defineEmits(['update:modelValue', 'success', 'cancel','closed'])
|
|
|
+const emit = defineEmits(['update:modelValue', 'success', 'cancel', 'closed'])
|
|
|
const showDialog = (visible: boolean = true) => {
|
|
|
// console.log("OCRDialog showDialog")
|
|
|
if (upload.value) {
|
|
@@ -244,11 +245,11 @@ const showDialog = (visible: boolean = true) => {
|
|
|
|
|
|
// 清除上传文件列表
|
|
|
const clearFileList = () => {
|
|
|
- fileList.value = []
|
|
|
- if (upload.value) {
|
|
|
- upload.value.clearFiles()
|
|
|
- }
|
|
|
- importedFileHashes.value = [] // 清空已导入文件的哈希值记录
|
|
|
+ fileList.value = []
|
|
|
+ if (upload.value) {
|
|
|
+ upload.value.clearFiles()
|
|
|
+ }
|
|
|
+ importedFileHashes.value = [] // 清空已导入文件的哈希值记录
|
|
|
}
|
|
|
function handleGetKnowledgeBase() {
|
|
|
getKnowledgeBase().then((response: any) => {
|
|
@@ -304,6 +305,10 @@ function fetchFile(fileName: string, fileUrl: string) {
|
|
|
console.log(error);
|
|
|
});
|
|
|
}
|
|
|
+function handleSelectable(row: any, index: number) {
|
|
|
+ // console.log(row, index)
|
|
|
+ return row.status
|
|
|
+}
|
|
|
function handleSelectedImport() {
|
|
|
const SelectionRows = KBTableRef.value.getSelectionRows()
|
|
|
handleImportFiles(toRaw(SelectionRows))
|
|
@@ -423,7 +428,7 @@ async function calculateFileHash(file: File) {
|
|
|
// const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
|
// const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
|
|
|
// return hashHex;
|
|
|
- // 使用 crypto-js 计算哈希值
|
|
|
+ // 使用 crypto-js 计算哈希值
|
|
|
return new Promise((resolve, reject) => {
|
|
|
const reader = new FileReader();
|
|
|
reader.readAsArrayBuffer(file);
|
|
@@ -447,7 +452,7 @@ function handleImportFiles(filesList: any[]) {
|
|
|
const rawFile = new File([response.data], file_name, { type: response.data.type });
|
|
|
const fileHash = await calculateFileHash(rawFile);
|
|
|
|
|
|
- if (importedFileHashes.value.includes(fileHash)) {
|
|
|
+ if (importedFileHashes.value.includes(fileHash as string)) {
|
|
|
ElMessage({
|
|
|
message: `文件“${file_name}”已导入过,不能重复导入`,
|
|
|
type: 'info',
|
|
@@ -459,7 +464,7 @@ function handleImportFiles(filesList: any[]) {
|
|
|
const file = rawFile as UploadRawFile;
|
|
|
file.uid = genFileId();
|
|
|
upload.value!.handleStart(file);
|
|
|
- importedFileHashes.value.push(fileHash);
|
|
|
+ importedFileHashes.value.push(fileHash as string);
|
|
|
ElMessage({
|
|
|
message: `文件“${file_name}”导入成功`,
|
|
|
type: 'success',
|
|
@@ -508,18 +513,18 @@ const handleConfirm = () => {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
-defineExpose({ showDialog,clearFileList })
|
|
|
+defineExpose({ showDialog, clearFileList })
|
|
|
|
|
|
function handleClosed() {
|
|
|
knowledgeBase.value.visible = false
|
|
|
- clearFileList ()
|
|
|
+ clearFileList()
|
|
|
}
|
|
|
|
|
|
watch(() => knowledgeBase.value.activeId, (newValue) => {
|
|
|
debounceGetKBfileList()
|
|
|
// console.log('activeId', newValue)
|
|
|
})
|
|
|
-watch(() =>knowledgeBase.value.visible, (newValue) => {
|
|
|
+watch(() => knowledgeBase.value.visible, (newValue) => {
|
|
|
if (!newValue) {
|
|
|
KBTableRef.value.clearSelection() // 清除选择
|
|
|
}
|
|
@@ -748,6 +753,10 @@ onMounted(() => {
|
|
|
&:is([type='warning']) {
|
|
|
background-color: #E6A23C;
|
|
|
}
|
|
|
+
|
|
|
+ &:is([type='danger']) {
|
|
|
+ background-color: #F56C6C;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.operation {
|
|
@@ -797,6 +806,8 @@ onMounted(() => {
|
|
|
// background-color: @bgColor;
|
|
|
display: flex;
|
|
|
padding: 0px 5px;
|
|
|
+ justify-content: end;
|
|
|
+ margin-top: 10px;
|
|
|
|
|
|
::v-deep.el-pagination {
|
|
|
background-color: #fff;
|