1、文档新增批量删除
2、文档新增点击文件名预览
This commit is contained in:
@@ -24,12 +24,14 @@
|
||||
:tabBarStyle="{ margin: 0 }"
|
||||
@change="handleSourceChange"
|
||||
>
|
||||
<a-tab-pane key="company" tab="公司文档" />
|
||||
<a-tab-pane key="company" tab="项目文档" />
|
||||
<a-tab-pane key="public" tab="公共库" />
|
||||
</a-tabs>
|
||||
</div>
|
||||
<div class="dir-header">
|
||||
<span>{{ activeSource === 'company' ? '公司文档目录' : '公共库目录' }}</span>
|
||||
<span>{{
|
||||
activeSource === 'company' ? '项目文档目录' : '公共库目录'
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="tree-container">
|
||||
<a-tree
|
||||
@@ -62,7 +64,10 @@
|
||||
<span class="doc-tips"
|
||||
>当前已选择 {{ checkedDirKeys.length }} 个目录,
|
||||
{{ selectedFileList.length }} 个文件;合计
|
||||
{{ mergedDirKeys.length }} 个目录,{{ mergedFileKeys.length }} 个文件</span
|
||||
{{ mergedDirKeys.length }} 个目录,{{
|
||||
mergedFileKeys.length
|
||||
}}
|
||||
个文件</span
|
||||
>
|
||||
<a-space>
|
||||
<a-button @click="clearSelection">清空当前</a-button>
|
||||
@@ -79,9 +84,7 @@
|
||||
:loading="docLoading"
|
||||
rowKey="id"
|
||||
:scroll="
|
||||
activeSource === 'public'
|
||||
? { x: 2300, y: 400 }
|
||||
: { y: 400 }
|
||||
activeSource === 'public' ? { x: 2300, y: 400 } : { y: 400 }
|
||||
"
|
||||
:pagination="pagination"
|
||||
@change="handleTableChange"
|
||||
@@ -307,7 +310,8 @@
|
||||
width: 160,
|
||||
ellipsis: true,
|
||||
customRender: ({ record, text }: { record: AiCloudFile; text: any }) =>
|
||||
text || renderDocText(record, ['version', 'versionNumber', 'versionName'])
|
||||
text ||
|
||||
renderDocText(record, ['version', 'versionNumber', 'versionName'])
|
||||
},
|
||||
{
|
||||
title: '成文日期',
|
||||
@@ -352,7 +356,12 @@
|
||||
width: 220,
|
||||
ellipsis: true,
|
||||
customRender: ({ record, text }: { record: AiCloudFile; text: any }) =>
|
||||
text || renderDocText(record, ['relatedDocuments', 'relatedDoc', 'relatedFiles'])
|
||||
text ||
|
||||
renderDocText(record, [
|
||||
'relatedDocuments',
|
||||
'relatedDoc',
|
||||
'relatedFiles'
|
||||
])
|
||||
},
|
||||
{
|
||||
title: '适用区域',
|
||||
@@ -382,7 +391,9 @@
|
||||
];
|
||||
|
||||
const currentDocColumns = computed(() => {
|
||||
return activeSource.value === 'public' ? publicDocColumns : companyDocColumns;
|
||||
return activeSource.value === 'public'
|
||||
? publicDocColumns
|
||||
: companyDocColumns;
|
||||
});
|
||||
|
||||
// 计算树形数据
|
||||
@@ -406,12 +417,7 @@
|
||||
return buildTree(0);
|
||||
});
|
||||
|
||||
const selectionStateMap = ref<
|
||||
Record<
|
||||
string,
|
||||
FileSelectionStatePayload
|
||||
>
|
||||
>({});
|
||||
const selectionStateMap = ref<Record<string, FileSelectionStatePayload>>({});
|
||||
const selectedDocList = ref<string[]>([]);
|
||||
const selectedFileList = ref<string[]>([]);
|
||||
const selectedFileKeys = ref<SelectionKey[]>([]);
|
||||
@@ -491,7 +497,8 @@
|
||||
sourceState.fileKeys = [...getAllSelectedFileKeys(sourceState)];
|
||||
sourceState.currentDirKey =
|
||||
selectedKeys.value[0] !== undefined ? selectedKeys.value[0] : undefined;
|
||||
selectionStateMap.value[getSelectionStorageKey()] = getMergedSelectionPayload();
|
||||
selectionStateMap.value[getSelectionStorageKey()] =
|
||||
getMergedSelectionPayload();
|
||||
};
|
||||
|
||||
const restoreSelectionState = () => {
|
||||
@@ -528,9 +535,13 @@
|
||||
|
||||
const loadAllCloudDocs = async () => {
|
||||
try {
|
||||
const params = activeSource.value === 'public'
|
||||
const params =
|
||||
activeSource.value === 'public'
|
||||
? { companyId: 0 }
|
||||
: { companyId: props.currentCompanyId, projectId: props.currentProjectId };
|
||||
: {
|
||||
companyId: props.currentCompanyId,
|
||||
projectId: props.currentProjectId
|
||||
};
|
||||
const result = await listAiCloudDoc(params);
|
||||
allDirs.value = result || [];
|
||||
|
||||
@@ -541,10 +552,14 @@
|
||||
sourceState.dirFileSelections || {}
|
||||
).find((key) => {
|
||||
const dirId = Number(key);
|
||||
return sourceState.dirFileSelections[key]?.length > 0 && availableIds.has(dirId);
|
||||
return (
|
||||
sourceState.dirFileSelections[key]?.length > 0 &&
|
||||
availableIds.has(dirId)
|
||||
);
|
||||
});
|
||||
const preferredSelectedKey =
|
||||
(selectedKeys.value[0] && availableIds.has(selectedKeys.value[0] as number)
|
||||
(selectedKeys.value[0] &&
|
||||
availableIds.has(selectedKeys.value[0] as number)
|
||||
? selectedKeys.value[0]
|
||||
: undefined) ||
|
||||
(sourceState.currentDirKey !== undefined &&
|
||||
@@ -640,7 +655,9 @@
|
||||
addedKeys.map((key) => getDirFileKeys(key))
|
||||
);
|
||||
addedKeys.forEach((key, index) => {
|
||||
sourceState.dirFileSelections[String(key)] = [...addedFileGroups[index]];
|
||||
sourceState.dirFileSelections[String(key)] = [
|
||||
...addedFileGroups[index]
|
||||
];
|
||||
});
|
||||
removedKeys.forEach((key) => {
|
||||
delete sourceState.dirFileSelections[String(key)];
|
||||
@@ -679,9 +696,7 @@
|
||||
};
|
||||
|
||||
// 文件选择变化
|
||||
const onFileSelectionChange = (
|
||||
selectedRowKeys: SelectionKey[]
|
||||
) => {
|
||||
const onFileSelectionChange = (selectedRowKeys: SelectionKey[]) => {
|
||||
const currentDirKey = getCurrentDirKey();
|
||||
if (!currentDirKey) return;
|
||||
|
||||
@@ -689,9 +704,7 @@
|
||||
sourceState.dirFileSelections[currentDirKey] = [...selectedRowKeys];
|
||||
sourceState.fileKeys = getAllSelectedFileKeys(sourceState);
|
||||
selectedFileKeys.value = selectedRowKeys;
|
||||
selectedFileList.value = sourceState.fileKeys.map((key) =>
|
||||
key.toString()
|
||||
);
|
||||
selectedFileList.value = sourceState.fileKeys.map((key) => key.toString());
|
||||
saveSelectionState();
|
||||
};
|
||||
|
||||
@@ -766,5 +779,4 @@
|
||||
};
|
||||
|
||||
defineExpose({ open });
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user