Skip to content

Commit e2728ce

Browse files
committed
feat: Support sorting feat for knowledge base documents
--story=1017634 --user=刘瑞斌 知识库文档列表排序功能,可以根据各列属性排序 https://www.tapd.cn/57709429/s/1654419
1 parent 9c67f6b commit e2728ce

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

apps/dataset/serializers/document_serializers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ class Query(ApiMixin, serializers.Serializer):
411411
is_active = serializers.BooleanField(required=False, error_messages=ErrMessage.boolean(_('document is active')))
412412
task_type = serializers.IntegerField(required=False, error_messages=ErrMessage.integer(_('task type')))
413413
status = serializers.CharField(required=False, error_messages=ErrMessage.char(_('status')))
414+
order_by = serializers.CharField(required=False, error_messages=ErrMessage.char(_('order by')))
414415

415416
def get_query_set(self):
416417
query_set = QuerySet(model=Document)
@@ -437,7 +438,11 @@ def get_query_set(self):
437438
query_set = query_set.filter(status__icontains=status)
438439
else:
439440
query_set = query_set.filter(status__iregex='^[2n]*$')
440-
query_set = query_set.order_by('-create_time', 'id')
441+
order_by = self.data.get('order_by', '')
442+
if order_by:
443+
query_set = query_set.order_by(order_by)
444+
else:
445+
query_set = query_set.order_by('-create_time', 'id')
441446
return query_set
442447

443448
def list(self, with_valid=False):

ui/src/views/document/index.vue

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,18 @@
5858
@creatQuick="creatQuickHandle"
5959
@row-click="rowClickHandle"
6060
@selection-change="handleSelectionChange"
61+
@sort-change="handleSortChange"
6162
v-loading="loading"
6263
:row-key="(row: any) => row.id"
6364
:storeKey="storeKey"
6465
>
6566
<el-table-column type="selection" width="55" :reserve-selection="true" />
66-
<el-table-column prop="name" :label="$t('views.document.table.name')" min-width="280">
67+
<el-table-column
68+
prop="name"
69+
:label="$t('views.document.table.name')"
70+
min-width="280"
71+
sortable
72+
>
6773
<template #default="{ row }">
6874
<ReadWrite
6975
@change="editName($event, row.id)"
@@ -77,6 +83,7 @@
7783
:label="$t('views.document.table.char_length')"
7884
align="right"
7985
min-width="90"
86+
sortable
8087
>
8188
<template #default="{ row }">
8289
{{ numberFormat(row.char_length) }}
@@ -87,6 +94,7 @@
8794
:label="$t('views.document.table.paragraph')"
8895
align="right"
8996
min-width="90"
97+
sortable
9098
/>
9199
<el-table-column prop="status" :label="$t('views.document.fileStatus.label')" width="130">
92100
<template #header>
@@ -242,7 +250,12 @@
242250
{{ $t(hitHandlingMethod[row.hit_handling_method as keyof typeof hitHandlingMethod]) }}
243251
</template>
244252
</el-table-column>
245-
<el-table-column prop="create_time" :label="$t('common.createTime')" width="175">
253+
<el-table-column
254+
prop="create_time"
255+
:label="$t('common.createTime')"
256+
width="175"
257+
sortable
258+
>
246259
<template #default="{ row }">
247260
{{ datetimeFormat(row.create_time) }}
248261
</template>
@@ -251,6 +264,7 @@
251264
prop="update_time"
252265
:label="$t('views.document.table.updateTime')"
253266
width="175"
267+
sortable
254268
>
255269
<template #default="{ row }">
256270
{{ datetimeFormat(row.update_time) }}
@@ -509,6 +523,7 @@ const loading = ref(false)
509523
let interval: any
510524
const filterText = ref('')
511525
const filterMethod = ref<any>({})
526+
const orderBy = ref<string>('')
512527
const documentData = ref<any[]>([])
513528
const currentMouseId = ref(null)
514529
const datasetDetail = ref<any>({})
@@ -805,10 +820,16 @@ function handleSizeChange() {
805820
getList()
806821
}
807822
823+
function handleSortChange({ prop, order }: { prop: string; order: string }) {
824+
orderBy.value = order === 'ascending' ? prop : `-${prop}`
825+
getList()
826+
}
827+
808828
function getList(bool?: boolean) {
809829
const param = {
810830
...(filterText.value && { name: filterText.value }),
811-
...filterMethod.value
831+
...filterMethod.value,
832+
order_by: orderBy.value,
812833
}
813834
documentApi
814835
.getDocument(id as string, paginationConfig.value, param, bool ? undefined : loading)

0 commit comments

Comments
 (0)