Commit 074484ef authored by tyyin lan's avatar tyyin lan

feat: 个人空间知识库新增过滤

parent 2edde7ad
...@@ -8,8 +8,13 @@ import qs from 'qs' ...@@ -8,8 +8,13 @@ import qs from 'qs'
* @query search 搜索值 * @query search 搜索值
* @returns 获取知识库列表 * @returns 获取知识库列表
*/ */
export function fetchGetKnowledgeList<T>(trainStatus: string, search: string, payload: object) { export function fetchGetKnowledgeList<T>(
return request.post<T>(`/knowledgeRest/getKnowledgeList.json?trainStatus=${trainStatus}&search=${search}`, payload) params: { trainStatus: string; search: string; knowledgeOwner?: string },
payload: object,
) {
return request.post<T>('/knowledgeRest/getKnowledgeList.json', payload, {
params,
})
} }
/** /**
......
...@@ -100,9 +100,15 @@ async function handleGetKnowledgeList() { ...@@ -100,9 +100,15 @@ async function handleGetKnowledgeList() {
paginationData.pageSize = 999999 paginationData.pageSize = 999999
knowledgeListLoading.value = true knowledgeListLoading.value = true
const res = await fetchGetKnowledgeList<KnowledgeItem[]>(TrainStatus.COMPLETE, searchKnowledgeInputValue.value, { const res = await fetchGetKnowledgeList<KnowledgeItem[]>(
{
trainStatus: TrainStatus.COMPLETE,
search: searchKnowledgeInputValue.value,
},
{
pagingInfo: paginationData, pagingInfo: paginationData,
}) },
)
if (res.code === 0) { if (res.code === 0) {
knowledgeList.value = res.data knowledgeList.value = res.data
......
...@@ -8,6 +8,7 @@ const t = i18n.global.t ...@@ -8,6 +8,7 @@ const t = i18n.global.t
export function createKnowledgeColumn( export function createKnowledgeColumn(
handleKnowledgeTableAction: (actionType: string, knowledgeId: number, KnowledgeItem?: KnowledgeItem) => void, handleKnowledgeTableAction: (actionType: string, knowledgeId: number, KnowledgeItem?: KnowledgeItem) => void,
currentUserMemberId?: string | number | null,
) { ) {
return [ return [
{ {
...@@ -81,10 +82,12 @@ export function createKnowledgeColumn( ...@@ -81,10 +82,12 @@ export function createKnowledgeColumn(
}, },
width: 150, width: 150,
render(row: KnowledgeItem) { render(row: KnowledgeItem) {
const isOwner = String(currentUserMemberId || '') === String(row.memberId || '')
return ( return (
<NSwitch <NSwitch
value={row.isOpen === 'Y'} value={row.isOpen === 'Y'}
onUpdateValue={() => handleKnowledgeTableAction('updateOpen', row.id, row)} disabled={!isOwner}
onUpdateValue={isOwner ? () => handleKnowledgeTableAction('updateOpen', row.id, row) : undefined}
/> />
) )
}, },
...@@ -99,6 +102,10 @@ export function createKnowledgeColumn( ...@@ -99,6 +102,10 @@ export function createKnowledgeColumn(
width: 190, width: 190,
fixed: 'right', fixed: 'right',
render(row: KnowledgeItem) { render(row: KnowledgeItem) {
const isOwner = String(currentUserMemberId || '') === String(row.memberId || '')
const deleteClassName = isOwner
? 'text-error-font-color mr-5 cursor-pointer hover:opacity-80'
: 'text-gray-font-color pointer-events-none mr-5 cursor-not-allowed'
return ( return (
<div> <div>
<span <span
...@@ -108,8 +115,8 @@ export function createKnowledgeColumn( ...@@ -108,8 +115,8 @@ export function createKnowledgeColumn(
{t('common_module.data_table_module.view')} {t('common_module.data_table_module.view')}
</span> </span>
<span <span
className='text-error-font-color mr-5 cursor-pointer hover:opacity-80' className={deleteClassName}
onClick={() => handleKnowledgeTableAction('delete', row.id)} onClick={isOwner ? () => handleKnowledgeTableAction('delete', row.id) : undefined}
> >
{t('common_module.data_table_module.delete')} {t('common_module.data_table_module.delete')}
</span> </span>
......
...@@ -10,6 +10,7 @@ import CustomPagination from '@/components/custom-pagination/custom-pagination.v ...@@ -10,6 +10,7 @@ import CustomPagination from '@/components/custom-pagination/custom-pagination.v
import useTableScrollY from '@/composables/useTableScrollY.ts' import useTableScrollY from '@/composables/useTableScrollY.ts'
import { usePagination } from '@/composables/usePagination.ts' import { usePagination } from '@/composables/usePagination.ts'
import { fetchDelKnowledgeById, fetchEnableKnowledgeInfo, fetchGetKnowledgeList } from '@/apis/knowledge.ts' import { fetchDelKnowledgeById, fetchEnableKnowledgeInfo, fetchGetKnowledgeList } from '@/apis/knowledge.ts'
import { useUserStore } from '@/store/modules/user'
const { t } = useI18n() const { t } = useI18n()
...@@ -20,13 +21,15 @@ const knowledgeListTableRef = useTemplateRef<DataTableInst>('knowledgeListTableR ...@@ -20,13 +21,15 @@ const knowledgeListTableRef = useTemplateRef<DataTableInst>('knowledgeListTableR
const { pageContentWrapRef, tableContentY } = useTableScrollY(48 + 32 + 16 + 16 + 28) const { pageContentWrapRef, tableContentY } = useTableScrollY(48 + 32 + 16 + 16 + 28)
const { paginationData, handlePageNoChange, handlePageSizeChange } = usePagination() const { paginationData, handlePageNoChange, handlePageSizeChange } = usePagination()
const knowledgeColumns = createKnowledgeColumn(handleClickKnowledgeTableAction) const userStore = useUserStore()
const knowledgeColumns = createKnowledgeColumn(handleClickKnowledgeTableAction, userStore.userInfo.memberId)
const knowledgeListTableLoading = ref(false) const knowledgeListTableLoading = ref(false)
const knowledgeList = ref<KnowledgeItem[]>([]) const knowledgeList = ref<KnowledgeItem[]>([])
const searchKnowledgeInputValue = ref('') const searchKnowledgeInputValue = ref('')
const isSearchEmptyList = ref(false) const isSearchEmptyList = ref(false)
const knowledgeOwnerValue = ref<'全部' | '集团' | '部门' | '个人'>('全部')
const isLoadingPagination = computed(() => { const isLoadingPagination = computed(() => {
return tableContentY.value > 0 return tableContentY.value > 0
...@@ -41,6 +44,12 @@ watch([() => paginationData.pageNo, () => paginationData.pageSize], () => { ...@@ -41,6 +44,12 @@ watch([() => paginationData.pageNo, () => paginationData.pageSize], () => {
knowledgeListTableRef.value?.scrollTo({ top: 0, behavior: 'smooth' }) knowledgeListTableRef.value?.scrollTo({ top: 0, behavior: 'smooth' })
}) })
watch(knowledgeOwnerValue, () => {
paginationData.pageNo = 1
handleGetKnowledgeList()
knowledgeListTableRef.value?.scrollTo({ top: 0, behavior: 'smooth' })
})
onMounted(async () => { onMounted(async () => {
await handleGetKnowledgeList() await handleGetKnowledgeList()
}) })
...@@ -48,9 +57,16 @@ onMounted(async () => { ...@@ -48,9 +57,16 @@ onMounted(async () => {
async function handleGetKnowledgeList() { async function handleGetKnowledgeList() {
knowledgeListTableLoading.value = true knowledgeListTableLoading.value = true
const res = await fetchGetKnowledgeList<KnowledgeItem[]>('', searchKnowledgeInputValue.value, { const res = await fetchGetKnowledgeList<KnowledgeItem[]>(
{
trainStatus: '',
search: searchKnowledgeInputValue.value,
knowledgeOwner: knowledgeOwnerValue.value === '全部' ? '' : knowledgeOwnerValue.value,
},
{
pagingInfo: paginationData, pagingInfo: paginationData,
}) },
)
if (res.code === 0) { if (res.code === 0) {
knowledgeList.value = res.data knowledgeList.value = res.data
...@@ -112,7 +128,13 @@ function handleSearchKnowledge() { ...@@ -112,7 +128,13 @@ function handleSearchKnowledge() {
<template> <template>
<div ref="pageContentWrapRef" class="h-full"> <div ref="pageContentWrapRef" class="h-full">
<div class="mb-4 flex justify-end"> <div class="mb-4 flex items-center justify-between">
<NRadioGroup v-model:value="knowledgeOwnerValue" size="small">
<NRadioButton value="全部">全部</NRadioButton>
<NRadioButton value="集团">集团</NRadioButton>
<NRadioButton value="部门">部门</NRadioButton>
<NRadioButton value="个人">个人</NRadioButton>
</NRadioGroup>
<NInput <NInput
v-model:value="searchKnowledgeInputValue" v-model:value="searchKnowledgeInputValue"
:placeholder="t('personal_space_module.knowledge_module.search_knowledge_placeholder')" :placeholder="t('personal_space_module.knowledge_module.search_knowledge_placeholder')"
......
...@@ -15,6 +15,7 @@ export interface KnowledgeItem { ...@@ -15,6 +15,7 @@ export interface KnowledgeItem {
isOpen: 'Y' | 'N' isOpen: 'Y' | 'N'
createdTime: Date createdTime: Date
documentInfos: KnowledgeDocumentItem[] documentInfos: KnowledgeDocumentItem[]
memberId: string
} }
export interface SegmentationConfigInterface { export interface SegmentationConfigInterface {
......
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