|
@@ -20,6 +20,7 @@
|
|
|
mode="inline"
|
|
|
:items="folders"
|
|
|
:editor="isFolderEditor"
|
|
|
+ :current-id="currentId"
|
|
|
@menu-click="onMenuClickHandle" >
|
|
|
</menus>
|
|
|
</div>
|
|
@@ -34,7 +35,7 @@
|
|
|
<a-button
|
|
|
type="primary"
|
|
|
:icon="h(CloudUploadOutlined)"
|
|
|
- @click="uploadFiles(state.selectedRowKeys)"
|
|
|
+ @click="uploadFiles"
|
|
|
class="top_btn"
|
|
|
>导入</a-button
|
|
|
>
|
|
@@ -47,9 +48,9 @@
|
|
|
<a-dropdown>
|
|
|
<template #overlay>
|
|
|
<a-menu @click="onChangeBusClass">
|
|
|
- <a-menu-item key="1">
|
|
|
- 是
|
|
|
- </a-menu-item>
|
|
|
+ <a-menu-item key=""> 全部</a-menu-item>
|
|
|
+ <a-menu-item key="1"> 是</a-menu-item>
|
|
|
+ <a-menu-item key="-1"> 否</a-menu-item>
|
|
|
</a-menu>
|
|
|
</template>
|
|
|
<a-button class="top_btn m-l-15">
|
|
@@ -57,18 +58,6 @@
|
|
|
<DownOutlined />
|
|
|
</a-button>
|
|
|
</a-dropdown>
|
|
|
- <a-dropdown>
|
|
|
- <template #overlay>
|
|
|
- <a-menu @click="onChangeDocType">
|
|
|
- <a-menu-item key="0">pdf</a-menu-item>
|
|
|
- <a-menu-item key="1">doc</a-menu-item>
|
|
|
- </a-menu>
|
|
|
- </template>
|
|
|
- <a-button class="top_btn m-l-15">
|
|
|
- 文档格式
|
|
|
- <DownOutlined />
|
|
|
- </a-button>
|
|
|
- </a-dropdown>
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<a-input
|
|
@@ -106,16 +95,24 @@
|
|
|
<a-input v-model:value="editableData[record.id].name" @pressEnter="updateHandle(record.id)" />
|
|
|
</div>
|
|
|
<div v-else class="editable-cell-text-wrapper">
|
|
|
- <div class="name-box" @click="showFileDetail(record)">
|
|
|
+ <div class="name-box" @click="showFileDetail(record)" :title="record.name">
|
|
|
<MyIcon icon="icon-wenjianleixing-suolvetu-PDFwendang" size="18" />
|
|
|
<span>{{ record.name }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
+ <template v-if="column.key === 'typeName'">
|
|
|
+ <div v-if="record.typeName === '未分类'" style="color: #EF740B">
|
|
|
+ {{ record.typeName }}
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ {{ record.typeName }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<template v-if="column.key === 'createTime'">
|
|
|
<div>
|
|
|
- {{ dayjs(record.createTime).format("YYYY-MM-DD HH:mm:ss") }}
|
|
|
+ {{ record.createTime && dayjs(record.createTime).format("YYYY-MM-DD HH:mm:ss") }}
|
|
|
</div>
|
|
|
</template>
|
|
|
<template v-else-if="column.key === 'action'">
|
|
@@ -165,6 +162,7 @@
|
|
|
:icon="h(FormOutlined)"
|
|
|
style="color: #000"
|
|
|
@click="editFolderName(record.id)"
|
|
|
+ v-if="false"
|
|
|
>编辑</a-button
|
|
|
>
|
|
|
</a-menu-item>
|
|
@@ -205,7 +203,7 @@
|
|
|
<MoveFileModel
|
|
|
:open="moveFileModel"
|
|
|
:ids="moveFileIds"
|
|
|
- :closeModel="closeMoveFileModel"
|
|
|
+ @closeModel="closeMoveFileModel"
|
|
|
/>
|
|
|
<FileUpload ref="userUploadFileRef" :pid="currentId" @close="closeHandle"/>
|
|
|
</div>
|
|
@@ -217,6 +215,7 @@
|
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
import { h, ref, reactive, onMounted } from "vue";
|
|
|
import http from "@/utils/http";
|
|
|
+import { findPath } from "@/utils/common";
|
|
|
import { listToTree } from '@/utils/struct'
|
|
|
import {
|
|
|
DownOutlined,
|
|
@@ -225,9 +224,9 @@ import {
|
|
|
CloudUploadOutlined,
|
|
|
SearchOutlined,
|
|
|
DownloadOutlined,
|
|
|
- FolderAddOutlined,
|
|
|
VerticalAlignTopOutlined,
|
|
|
DeliveredProcedureOutlined,
|
|
|
+ ConsoleSqlOutlined,
|
|
|
} from "@ant-design/icons-vue";
|
|
|
import HomeHeader from '@/views/home/components/HomeHeader.vue';
|
|
|
import { message } from "ant-design-vue";
|
|
@@ -239,12 +238,15 @@ import FileDetail from "./FileDetail.vue";
|
|
|
import dayjs from "dayjs";
|
|
|
|
|
|
const currentId = ref(-1);
|
|
|
-
|
|
|
-const onChangeBusClass = () => {
|
|
|
-
|
|
|
-}
|
|
|
-const onChangeDocType = () => {
|
|
|
-
|
|
|
+const isType = ref(0);
|
|
|
+const onChangeBusClass = (data) => {
|
|
|
+ const key = data['key']
|
|
|
+ if (!key) {
|
|
|
+ isType.value = 0
|
|
|
+ } else {
|
|
|
+ isType.value = parseInt(key)
|
|
|
+ }
|
|
|
+ initTableList();
|
|
|
}
|
|
|
// 表格列
|
|
|
const columns = [
|
|
@@ -252,22 +254,26 @@ const columns = [
|
|
|
title: "文档名称",
|
|
|
dataIndex: "name",
|
|
|
key: "name",
|
|
|
- width: 360
|
|
|
+ width: 480,
|
|
|
+ ellipsis: true
|
|
|
},
|
|
|
{
|
|
|
title: "文档类型",
|
|
|
dataIndex: "type",
|
|
|
key: "type",
|
|
|
+ width: 200
|
|
|
},
|
|
|
{
|
|
|
title: "业务类型",
|
|
|
dataIndex: "typeName",
|
|
|
key: "typeName",
|
|
|
+ width: 200
|
|
|
},
|
|
|
{
|
|
|
title: "文档大小",
|
|
|
dataIndex: "size",
|
|
|
key: "size",
|
|
|
+ width: 200,
|
|
|
sorter: {
|
|
|
compare: (a, b) => a.size - b.size,
|
|
|
multiple: 2,
|
|
@@ -298,31 +304,40 @@ const getTableList = () => {
|
|
|
pageNo: pageNo.value,
|
|
|
pageSize: 10,
|
|
|
name: searchValue.value,
|
|
|
+ isType: isType.value,
|
|
|
parentId: currentId.value === -1 ? '' : currentId.value
|
|
|
}
|
|
|
http.get(urlStr, sendData).then((result) => {
|
|
|
loading.value = false;
|
|
|
const resultData = result.data;
|
|
|
if (resultData['list']) {
|
|
|
- dataSource.value = resultData['list'];
|
|
|
+ dataSource.value = resultData['list'].map((item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ typeName: filterTypeFunc(item['parentId'])
|
|
|
+ }
|
|
|
+ });
|
|
|
total.value = resultData['total']
|
|
|
}
|
|
|
}).catch((err) => {
|
|
|
loading.value = false;
|
|
|
});
|
|
|
};
|
|
|
+const filterTypeFunc = (parentId) => {
|
|
|
+ if (parentId == -1) return '未分类'
|
|
|
+ return findPath(folders.value, parentId)
|
|
|
+}
|
|
|
const initTableList = () => {
|
|
|
pageNo.value = 1;
|
|
|
getTableList();
|
|
|
}
|
|
|
getTableList();
|
|
|
+
|
|
|
const onPageChange = (page) => {
|
|
|
pageNo.value = page;
|
|
|
getTableList();
|
|
|
}
|
|
|
-const state = reactive<{
|
|
|
- loading: boolean;
|
|
|
-}>({
|
|
|
+const state = reactive({
|
|
|
selectedRowKeys: [], // Check here to configure the default column
|
|
|
loading: false,
|
|
|
});
|
|
@@ -330,9 +345,6 @@ const state = reactive<{
|
|
|
const onSelectChange = (selectedRowKeys1) => {
|
|
|
state.selectedRowKeys = selectedRowKeys1;
|
|
|
};
|
|
|
-const searchHandle = () => {
|
|
|
- initTableList()
|
|
|
-}
|
|
|
const currentFileId = ref(null)
|
|
|
const deleteFileVisiabled = ref(false)
|
|
|
const deleteFiles = () => {
|
|
@@ -371,7 +383,6 @@ const getTypeList = () => {
|
|
|
"sort": null
|
|
|
}].concat(result.data)
|
|
|
folders.value = listToTree(lists)
|
|
|
- console.log(folders.value)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@@ -425,7 +436,7 @@ const deleteFolders = () => {
|
|
|
deleteVisiabled.value = false;
|
|
|
});
|
|
|
}
|
|
|
-//文件夹刪除
|
|
|
+//文件夹移动
|
|
|
const moveUpHandle = (id) => {
|
|
|
const urlStr = `/ai/knowledge/type/move-up?id=${id}`
|
|
|
http.get(urlStr).then((result) => {
|
|
@@ -452,11 +463,10 @@ const moveDownHandle = (id) => {
|
|
|
const onMenuClickHandle = (data) => {
|
|
|
const type = data['type']
|
|
|
const payload = data['payload']
|
|
|
- currentId.value = payload['id'] == -1 ? 0 : payload['id']
|
|
|
+ currentId.value = payload['id']
|
|
|
switch (type) {
|
|
|
case 'query':
|
|
|
searchValue.value = ''
|
|
|
- console.log("payload value:", payload)
|
|
|
initTableList();
|
|
|
break;
|
|
|
case 'add':
|
|
@@ -483,6 +493,7 @@ const onMenuClickHandle = (data) => {
|
|
|
*/
|
|
|
// 下载(单文件下载)
|
|
|
const downloadFile = async (data: any) => {
|
|
|
+ console.log(data)
|
|
|
const downloadUrl = `${window.AppGlobalConfig.knowledgeDocUrlProxy}${data.name}`
|
|
|
const response = await fetch(downloadUrl);
|
|
|
const blob = await response.blob();
|
|
@@ -505,12 +516,16 @@ const closeHandle = () => {
|
|
|
}
|
|
|
// 多文件打包下载
|
|
|
const downloadFiles = async (ids: any[] = []) => {
|
|
|
+ if (!ids || ids.length === 0) {
|
|
|
+ message.error("请至少选择一个文件!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
message.success("正在为你下载文件,请稍等 ...");
|
|
|
const selectedArrs = dataSource.value.filter((item) => {
|
|
|
return ids.includes(item['id']);
|
|
|
})
|
|
|
selectedArrs.forEach((item) => {
|
|
|
- downloadFile(item['name'])
|
|
|
+ downloadFile(item)
|
|
|
})
|
|
|
};
|
|
|
// 置顶
|
|
@@ -536,9 +551,11 @@ const moveFiles = (ids: any[] = []) => {
|
|
|
moveFileIds.value = ids;
|
|
|
moveFileModel.value = true;
|
|
|
};
|
|
|
-const closeMoveFileModel = () => {
|
|
|
+const closeMoveFileModel = (bool) => {
|
|
|
moveFileModel.value = false;
|
|
|
+ if (!bool) return;
|
|
|
moveFileIds.value = [];
|
|
|
+ getTableList();
|
|
|
};
|
|
|
// 跳到文件详情页面
|
|
|
const fileViewerVisabled = ref(false)
|