Skip to content

Commit 117f882

Browse files
committed
feat: paragraph movePosition
1 parent 77af823 commit 117f882

File tree

5 files changed

+64
-4
lines changed

5 files changed

+64
-4
lines changed

ui/src/locales/lang/en-US/views/document.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,11 @@ export default {
159159
optimization: 'Model optimization',
160160
directly_return: 'Respond directly',
161161
},
162+
movePosition: {
163+
title: 'Move position',
164+
moveUp: 'Move up',
165+
moveDown: 'Move down'
166+
},
162167
generateQuestion: {
163168
title: 'Generate Questions',
164169
successMessage: 'Successful',

ui/src/locales/lang/zh-CN/views/document.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ export default {
156156
optimization: '模型优化',
157157
directly_return: '直接回答',
158158
},
159+
movePosition: {
160+
title: '移动位置',
161+
moveUp: '上移',
162+
moveDown: '下移',
163+
},
159164
generateQuestion: {
160165
title: '生成问题',
161166
successMessage: '生成问题成功',

ui/src/locales/lang/zh-Hant/views/document.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ export default {
156156
optimization: '模型優化',
157157
directly_return: '直接回答',
158158
},
159+
movePosition: {
160+
title: '移動位置',
161+
moveUp: '上移',
162+
moveDown: '下移'
163+
},
159164
generateQuestion: {
160165
title: '生成問題',
161166
successMessage: '生成問題成功',

ui/src/views/paragraph/component/ParagraphCard.vue

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<el-icon><MoreFilled /></el-icon>
4343
</el-button>
4444
<template #dropdown>
45-
<el-dropdown-menu>
45+
<el-dropdown-menu style="min-width: 140px;">
4646
<el-dropdown-item @click.stop="openGenerateDialog(data)">
4747
<el-icon><Connection /></el-icon>
4848
{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
@@ -51,6 +51,34 @@
5151
<AppIcon iconName="app-migrate"></AppIcon>
5252
{{ $t('views.document.setting.migration') }}</el-dropdown-item
5353
>
54+
<el-dropdown-item>
55+
<el-dropdown class="w-full" trigger="hover" :show-arrow="false" placement="right-start" popper-class="move-position-popper">
56+
<div class="w-full flex-between" style="line-height: 22px;">
57+
<div class="flex align-center">
58+
<!-- TODO 更换icon -->
59+
<AppIcon iconName="app-migrate"></AppIcon>
60+
{{ $t('views.document.movePosition.title') }}
61+
</div>
62+
<el-icon class="color-input-placeholder" :size="16" style="margin-right: 0;"><ArrowRight /></el-icon>
63+
</div>
64+
<template #dropdown>
65+
<el-dropdown-menu>
66+
<el-dropdown-item
67+
v-if="props.showMoveUp"
68+
@click.stop="emit('move', 'up')"
69+
>
70+
{{ $t('views.document.movePosition.moveUp') }}
71+
</el-dropdown-item>
72+
<el-dropdown-item
73+
v-if="props.showMoveDown"
74+
@click.stop="emit('move', 'down')"
75+
>
76+
{{ $t('views.document.movePosition.moveDown') }}
77+
</el-dropdown-item>
78+
</el-dropdown-menu>
79+
</template>
80+
</el-dropdown>
81+
</el-dropdown-item>
5482
<el-dropdown-item icon="Delete" @click.stop="deleteParagraph(data)">{{
5583
$t('common.delete')
5684
}}</el-dropdown-item>
@@ -94,6 +122,8 @@ import { t } from '@/locales'
94122
const props = defineProps<{
95123
data: any
96124
disabled?: boolean
125+
showMoveUp?: boolean
126+
showMoveDown?: boolean
97127
}>()
98128
99129
const route = useRoute()
@@ -106,7 +136,7 @@ const apiType = computed(() => {
106136
return type as 'systemShare' | 'workspace' | 'systemManage'
107137
})
108138
109-
const emit = defineEmits(['changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph'])
139+
const emit = defineEmits(['changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph','move'])
110140
const loading = ref(false)
111141
const changeStateloading = ref(false)
112142
const show = ref(false)
@@ -229,3 +259,11 @@ function refreshMigrateParagraph() {
229259
}
230260
}
231261
</style>
262+
263+
<style lang="scss">
264+
.move-position-popper {
265+
.el-popper__arrow {
266+
display: none;
267+
}
268+
}
269+
</style>

ui/src/views/paragraph/index.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,12 @@
109109

110110
<ParagraphCard
111111
:data="item"
112+
:showMoveUp="index !== 0"
113+
:showMoveDown="index < paragraphDetail.length-1"
112114
class="mb-8 w-full"
113115
@changeState="changeState"
114116
@deleteParagraph="deleteParagraph"
117+
@move="(val: string)=>onEnd(null, {paragraph_id: item.id,new_position: val==='up'?index-1:index+1}, index)"
115118
@refresh="refresh"
116119
@refreshMigrateParagraph="refreshMigrateParagraph"
117120
:disabled="shareDisabled"
@@ -328,8 +331,8 @@ function openGenerateDialog(row?: any) {
328331
GenerateRelatedDialogRef.value.open(arr, 'paragraph')
329332
}
330333
331-
function onEnd(event?: any) {
332-
const obj = {
334+
function onEnd(event?: any, params?: any, index?: number) {
335+
const obj =params ?? {
333336
paragraph_id: paragraphDetail.value[event.newIndex].id, // 当前拖动的段落ID
334337
new_position: paragraphDetail.value[event.newIndex + 1].position, // 新位置的段落位置
335338
}
@@ -339,6 +342,10 @@ function onEnd(event?: any) {
339342
obj,
340343
loading,
341344
)
345+
if(params) {
346+
const movedItem = paragraphDetail.value.splice(index as number, 1)[0]
347+
paragraphDetail.value.splice(params.new_position, 0, movedItem)
348+
}
342349
}
343350
344351
onMounted(() => {

0 commit comments

Comments
 (0)