<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="handleShowKnowledge">
|
<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 class="relative transition-[opacity 0.3s]">
|
<div class="flex flex-wrap gap-[12px] mt-4 box-border">
|
<div
|
v-for="(item, index) in displayTableData"
|
class="set_slice"
|
:key="index"
|
@mouseover="mouseOver(index)"
|
@mouseleave="mouseLeave()"
|
>
|
<!-- <div class="flex justify-between">
|
<div class="items-center font-[500] flex">{{ item.title }}</div>
|
<el-switch v-model="state.isSliceValueTime" class="ml-2" size="small" />
|
</div> -->
|
<div class="set_content" :class="state.selectSliceID == index ? 'h-[48px]' : 'h-[88px]'">{{ item }}</div>
|
<div :class="{ viewFileClassHover: state.selectSliceID == index }">
|
<el-button type="primary" link style="color: #0062be" @click="viewSliceFile(item)">{{
|
state.selectSliceID == index ? '查看详情' : ''
|
}}</el-button>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<el-dialog v-model="state.isShowSliceDetail" title="切片内容" width="50%" :before-close="handleClose">
|
<el-form v-model="state.knowLedgeDetailForm" label-position="right">
|
<el-form-item>
|
<el-input v-model="state.knowLedgeDetailForm" readonly type="textarea" :rows="10"></el-input>
|
</el-form-item>
|
</el-form>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { onMounted, reactive, ref } from 'vue';
|
import { useRoute, useRouter } from 'vue-router';
|
import { list_knowledge_file_vector } from '/@/api/knowledge/group';
|
import { useQueryTable } from '/@/hooks/useQueryTable';
|
const router = useRouter();
|
const route = useRoute();
|
// 定义变量内容
|
const state = reactive({
|
knowledgeInfo: {
|
knowledge_title: '查看文件',
|
knowledge_id: '',
|
} as any,
|
knowLedgeDetailForm: '',
|
showKnowledgeForm: false,
|
knowledgeFile: {},
|
isSliceValueTime: true,
|
selectSliceID: null,
|
isShowSliceDetail: false,
|
});
|
//返回到知识库查看页面
|
const handleShowKnowledge = () => {
|
router.back();
|
};
|
const handleClose = () => {
|
state.isShowSliceDetail = false;
|
};
|
//#region ====================== 获取切换的数据 ======================
|
const mouseOver = (index) => {
|
state.selectSliceID = index;
|
};
|
const mouseLeave = () => {
|
state.selectSliceID = null;
|
};
|
const getSliceFile = async () => {
|
const res = await list_knowledge_file_vector({
|
file_id: state.knowledgeInfo.knowledge_id,
|
});
|
if (res.json_ok) {
|
sliceFileData.value = res.values;
|
}
|
};
|
const viewSliceFile = (row) => {
|
state.isShowSliceDetail = true;
|
state.knowLedgeDetailForm = row;
|
};
|
//#endregion
|
//#region ====================== 搜索表格,对表格排序 ======================
|
const sliceFileData = ref([]);
|
const knowledgeFileForm = ref({
|
title: '',
|
});
|
const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(sliceFileData, knowledgeFileForm, () => {
|
displayTableData.value = sliceFileData.value;
|
});
|
//#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_slice {
|
border: 1px solid rgba(135, 138, 171, 0.15);
|
border-radius: 16px;
|
padding: 12px 20px;
|
width: calc(33.33333% - 8px);
|
&:hover {
|
border-color: #0062be;
|
}
|
.viewFileClassHover {
|
border-top: 1px solid hsla(0, 0%, 94%, 0.5);
|
display: flex;
|
justify-content: space-between;
|
margin-top: 6px;
|
height: 44px;
|
padding-top: 4px;
|
background-color: #fff;
|
-webkit-line-clamp: 2;
|
}
|
}
|
.set_content {
|
color: rgba(38, 36, 76, 0.8);
|
font-size: 12px;
|
line-height: 22px;
|
margin: 6px 0 0;
|
-webkit-line-clamp: 4;
|
display: -webkit-box;
|
overflow: hidden;
|
-webkit-box-orient: vertical;
|
}
|
}
|
.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>
|