Commit 01e68560 authored by nick zheng's avatar nick zheng

feat(知识库): 知识库详情页增加分页

parent 3026da85
...@@ -91,8 +91,11 @@ export function fetchGetKnowledgeListByKdIds<T>(kdIds: number[]) { ...@@ -91,8 +91,11 @@ export function fetchGetKnowledgeListByKdIds<T>(kdIds: number[]) {
* @query search 搜索值 * @query search 搜索值
* @returns 获取知识库文档列表 * @returns 获取知识库文档列表
*/ */
export function fetchGetKnowledgeDocumentList<T>(knowledgeInfoId: number, search: string) { export function fetchGetKnowledgeDocumentList<T>(knowledgeInfoId: number, search: string, payload: object) {
return request.post<T>(`/knowledgeRest/searchDocuments.json?knowledgeInfoId=${knowledgeInfoId}&search=${search}`) return request.post<T>(
`/knowledgeRest/searchDocuments.json?knowledgeInfoId=${knowledgeInfoId}&search=${search}`,
payload,
)
} }
/** /**
......
...@@ -15,8 +15,10 @@ import { ...@@ -15,8 +15,10 @@ import {
fetchUpdateKnowledgeInfo, fetchUpdateKnowledgeInfo,
} from '@/apis/knowledge' } from '@/apis/knowledge'
import useTableScrollY from '@/composables/useTableScrollY' import useTableScrollY from '@/composables/useTableScrollY'
import CustomPagination from '@/components/custom-pagination/custom-pagination.vue'
import EditKnowledgeModal, { KnowledgeFormDataInterface } from './components/edit-knowledge-modal.vue' import EditKnowledgeModal, { KnowledgeFormDataInterface } from './components/edit-knowledge-modal.vue'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import { usePagination } from '@/composables/usePagination'
const { t } = useI18n() const { t } = useI18n()
...@@ -24,10 +26,12 @@ const router = useRouter() ...@@ -24,10 +26,12 @@ const router = useRouter()
const userStore = useUserStore() const userStore = useUserStore()
const { pageContentWrapRef, tableContentY } = useTableScrollY(48 + 48) const { pageContentWrapRef, tableContentY } = useTableScrollY(48 + 48 + 24 + 28)
const knowledgeDocumentColumn = createKnowledgeDocumentColumn(handleClickKnowledgeDocumentTableAction) const knowledgeDocumentColumn = createKnowledgeDocumentColumn(handleClickKnowledgeDocumentTableAction)
const { paginationData, handlePageNoChange, handlePageSizeChange } = usePagination()
const knowledgeDocumentTableLoading = ref(false) const knowledgeDocumentTableLoading = ref(false)
const knowledgeDocumentList = ref<KnowledgeDocumentItem[]>([]) const knowledgeDocumentList = ref<KnowledgeDocumentItem[]>([])
const checkedKdIdList = ref<number[]>([]) const checkedKdIdList = ref<number[]>([])
...@@ -74,10 +78,13 @@ const { pause: pauseIntervalFn, resume: resumeIntervalFn } = useIntervalFn( ...@@ -74,10 +78,13 @@ const { pause: pauseIntervalFn, resume: resumeIntervalFn } = useIntervalFn(
const res = await fetchGetKnowledgeDocumentList<KnowledgeDocumentItem[]>( const res = await fetchGetKnowledgeDocumentList<KnowledgeDocumentItem[]>(
currentKnowledgeId.value, currentKnowledgeId.value,
searchDocumentInputValue.value, searchDocumentInputValue.value,
{ pagingInfo: paginationData },
) )
if (res.code === 0) { if (res.code === 0) {
knowledgeDocumentList.value = res.data knowledgeDocumentList.value = res.data
paginationData.totalRows = res.pagingInfo?.totalRows || 0
paginationData.totalPages = res.pagingInfo?.totalPages || 0
isSearchEmptyList.value = !!searchDocumentInputValue.value && res.data.length === 0 isSearchEmptyList.value = !!searchDocumentInputValue.value && res.data.length === 0
} }
}, },
...@@ -85,6 +92,10 @@ const { pause: pauseIntervalFn, resume: resumeIntervalFn } = useIntervalFn( ...@@ -85,6 +92,10 @@ const { pause: pauseIntervalFn, resume: resumeIntervalFn } = useIntervalFn(
{ immediateCallback: false, immediate: false }, { immediateCallback: false, immediate: false },
) )
watch([() => paginationData.pageNo, () => paginationData.pageSize], () => {
handleGetKnowledgeDocumentList()
})
onMounted(async () => { onMounted(async () => {
if (!router.currentRoute.value.params.id) { if (!router.currentRoute.value.params.id) {
window.$message.warning(t('personal_space_module.knowledge_module.not_find_knowledge_message')) window.$message.warning(t('personal_space_module.knowledge_module.not_find_knowledge_message'))
...@@ -112,16 +123,24 @@ async function handleGetKnowledgeDocumentList() { ...@@ -112,16 +123,24 @@ async function handleGetKnowledgeDocumentList() {
const res = await fetchGetKnowledgeDocumentList<KnowledgeDocumentItem[]>( const res = await fetchGetKnowledgeDocumentList<KnowledgeDocumentItem[]>(
currentKnowledgeId.value, currentKnowledgeId.value,
searchDocumentInputValue.value, searchDocumentInputValue.value,
{ pagingInfo: paginationData },
) )
if (res.code === 0) { if (res.code === 0) {
knowledgeDocumentList.value = res.data knowledgeDocumentList.value = res.data
knowledgeDocumentTableLoading.value = false knowledgeDocumentTableLoading.value = false
checkedKdIdList.value = [] checkedKdIdList.value = []
paginationData.totalRows = res.pagingInfo?.totalRows || 0
paginationData.totalPages = res.pagingInfo?.totalPages || 0
isSearchEmptyList.value = !!searchDocumentInputValue.value && res.data.length === 0 isSearchEmptyList.value = !!searchDocumentInputValue.value && res.data.length === 0
} }
} }
async function handleSearchKnowledgeDocumentList() {
paginationData.pageNo = 1
await handleGetKnowledgeDocumentList()
}
function handleClickKnowledgeDocumentTableAction(actionType: string, knowledgeDocumentItem: KnowledgeDocumentItem) { function handleClickKnowledgeDocumentTableAction(actionType: string, knowledgeDocumentItem: KnowledgeDocumentItem) {
switch (actionType) { switch (actionType) {
case 'view': case 'view':
...@@ -150,6 +169,9 @@ async function handleDeleteKnowledgeDocument(kdId: number) { ...@@ -150,6 +169,9 @@ async function handleDeleteKnowledgeDocument(kdId: number) {
if (res.code === 0) { if (res.code === 0) {
window.$message.success(t('common_module.delete_success_message')) window.$message.success(t('common_module.delete_success_message'))
if (knowledgeDocumentList.value.length <= 1 && paginationData.pageNo === paginationData.totalPages) {
paginationData.pageNo = paginationData.pageNo - 1 || 1
}
await userStore.fetchUpdateEquityInfo() await userStore.fetchUpdateEquityInfo()
await handleGetKnowledgeDocumentList() await handleGetKnowledgeDocumentList()
} }
...@@ -197,6 +219,12 @@ async function handleBatchDelDocument() { ...@@ -197,6 +219,12 @@ async function handleBatchDelDocument() {
if (res.code === 0) { if (res.code === 0) {
window.$message.success(t('common_module.delete_success_message')) window.$message.success(t('common_module.delete_success_message'))
if (
knowledgeDocumentList.value.length <= checkedKdIdList.value.length &&
paginationData.pageNo === paginationData.totalPages
) {
paginationData.pageNo = paginationData.pageNo - 1 || 1
}
await userStore.fetchUpdateEquityInfo() await userStore.fetchUpdateEquityInfo()
await handleGetKnowledgeDocumentList() await handleGetKnowledgeDocumentList()
} }
...@@ -238,7 +266,7 @@ function handleBackKnowledgeList() { ...@@ -238,7 +266,7 @@ function handleBackKnowledgeList() {
v-model:value="searchDocumentInputValue" v-model:value="searchDocumentInputValue"
:placeholder="t('personal_space_module.knowledge_module.search_knowledge_document_placeholder')" :placeholder="t('personal_space_module.knowledge_module.search_knowledge_document_placeholder')"
class="w-[214px]!" class="w-[214px]!"
@keyup.enter="handleGetKnowledgeDocumentList" @keyup.enter="handleSearchKnowledgeDocumentList"
> >
<template #suffix> <template #suffix>
<Search <Search
...@@ -246,7 +274,7 @@ function handleBackKnowledgeList() { ...@@ -246,7 +274,7 @@ function handleBackKnowledgeList() {
size="16" size="16"
fill="#999" fill="#999"
class="cursor-pointer" class="cursor-pointer"
@click="handleGetKnowledgeDocumentList" @click="handleSearchKnowledgeDocumentList"
/> />
</template> </template>
</NInput> </NInput>
...@@ -287,6 +315,14 @@ function handleBackKnowledgeList() { ...@@ -287,6 +315,14 @@ function handleBackKnowledgeList() {
</template> </template>
</NDataTable> </NDataTable>
</div> </div>
<div class="mt-6 flex justify-end">
<CustomPagination
:paging-info="paginationData"
@update-page-no="handlePageNoChange"
@update-page-size="handlePageSizeChange"
/>
</div>
</div> </div>
<EditKnowledgeModal <EditKnowledgeModal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment