yangyin
2024-09-06 2d03a689c70e2f9c2bb10c7936335d01a378efa2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<template>
    <div class="flex flex-col h100">
        <div class="h100" v-show="!state.showKnowledgeForm">
            <div class="mb-[10px] flex flex-shrink-0 items-center">
                <el-button style="margin-left: 8px; width: 40px" link @click="handleExitFlow">
                    <el-icon style="font-size: 24px !important">
                        <ArrowLeft />
                    </el-icon>
                </el-button>
                <span class="text-[24px] text-[#26244c] font-[700]">{{ state.knowledgeInfo.knowledge_title }}</span>
            </div>
            <div class="set-table-height"></div>
        </div>
 
        <div class="set-form-footer" v-show="state.showKnowledgeForm">
            <el-button @click="importCompleted" type="primary">导入完成</el-button>
            <el-button @click="handleShowKnowledge">取消</el-button>
        </div>
    </div>
</template>
 
<script setup lang="ts">
import { ElMessage } from 'element-plus';
import { onMounted, reactive, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { add_docvector_file } from '/@/api/knowledge/docvector';
const viewKnowledgeTableRef = ref();
const router = useRouter();
const route = useRoute();
const knowledgeTableData = ref([]);
const knowledgeFileRef = ref();
// 定义变量内容
const state = reactive({
    knowledgeInfo: {
        knowledge_title: '查看文件',
        knowledge_id: '',
        knowledge_import_data: '导入数据',
    } as any,
    knowledgeForm: {
        segmentationMode: 1,
    },
    showKnowledgeForm: false,
    knowledgeFile: {},
});
//返回到知识库列表
const handleExitFlow = () => {
    //是否显示返回
    router.back();
};
//返回到知识库查看页面
const handleShowKnowledge = () => {
    state.showKnowledgeForm = false;
};
//#region ====================== 搜索表格,对表格排序 ======================
const graphQueryParams = ref({
    title: '',
});
// const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(getSliceFile, graphQueryParams, () => {
//     displayTableData.value = knowledgeTableData.value;
// });
//#endregion
//#region ====================== 获取切换的数据 ======================
const getSliceFile = async () => {
    const res = 0;
};
//#endregion
//#region ====================== 导入知识库数据 ======================
const importKnowledgeData = () => {
    state.showKnowledgeForm = true;
    getImportantFileTreeData(true);
};
//导入完成
const importCompleted = async () => {
    // 上传文件
    if (multipleSelection.value.length == 0) return ElMessage.warning('请先选择文件');
    let isCreateIndex = false;
    const file_id = multipleSelection.value.map((v) => v.id).join(',');
    knowledgeTableData.value.forEach((element) => {
        if (element.id == file_id) {
            ElMessage.warning('文件已存在,请选择其他文件');
            isCreateIndex = true;
        }
    });
    if (isCreateIndex) return;
    const res = await add_docvector_file({
        knowlg_id: state.knowledgeInfo.knowledge_id,
        file_id: file_id,
    });
    if (res.json_ok) {
        ElMessage.success('导入数据成功');
        state.showKnowledgeForm = false;
        getKnowledgeFileData();
        //清空表单
        knowledgeFileRef.value.resetFields();
    }
};
//#endregion
 
onMounted(() => {
    const { id } = route.query;
    state.knowledgeInfo.knowledge_id = id;
    getSliceFile();
});
</script>
<style scoped lang="scss">
.set-table-height {
    background: #fff;
    border-radius: 16px;
    height: calc(100% - 80px);
    margin-top: 12px;
    overflow-y: auto;
    padding: 20px 24px;
    box-sizing: border-box;
}
.set-file-height {
    height: calc(100% - 48px);
}
 
.set-form-footer {
    align-items: center;
    background: #fff;
    bottom: 0;
    box-shadow: 4px 0 5px 1px rgba(16, 9, 65, 0.06);
    display: flex;
    flex-shrink: 0;
    gap: 8px;
    height: 64px;
    padding-left: 24px;
    // position: fixed;
    width: 100%;
    left: 220px;
}
</style>