feat: paragraph movePosition
This commit is contained in:
parent
77af823879
commit
117f882521
@ -159,6 +159,11 @@ export default {
|
|||||||
optimization: 'Model optimization',
|
optimization: 'Model optimization',
|
||||||
directly_return: 'Respond directly',
|
directly_return: 'Respond directly',
|
||||||
},
|
},
|
||||||
|
movePosition: {
|
||||||
|
title: 'Move position',
|
||||||
|
moveUp: 'Move up',
|
||||||
|
moveDown: 'Move down'
|
||||||
|
},
|
||||||
generateQuestion: {
|
generateQuestion: {
|
||||||
title: 'Generate Questions',
|
title: 'Generate Questions',
|
||||||
successMessage: 'Successful',
|
successMessage: 'Successful',
|
||||||
|
|||||||
@ -156,6 +156,11 @@ export default {
|
|||||||
optimization: '模型优化',
|
optimization: '模型优化',
|
||||||
directly_return: '直接回答',
|
directly_return: '直接回答',
|
||||||
},
|
},
|
||||||
|
movePosition: {
|
||||||
|
title: '移动位置',
|
||||||
|
moveUp: '上移',
|
||||||
|
moveDown: '下移',
|
||||||
|
},
|
||||||
generateQuestion: {
|
generateQuestion: {
|
||||||
title: '生成问题',
|
title: '生成问题',
|
||||||
successMessage: '生成问题成功',
|
successMessage: '生成问题成功',
|
||||||
|
|||||||
@ -156,6 +156,11 @@ export default {
|
|||||||
optimization: '模型優化',
|
optimization: '模型優化',
|
||||||
directly_return: '直接回答',
|
directly_return: '直接回答',
|
||||||
},
|
},
|
||||||
|
movePosition: {
|
||||||
|
title: '移動位置',
|
||||||
|
moveUp: '上移',
|
||||||
|
moveDown: '下移'
|
||||||
|
},
|
||||||
generateQuestion: {
|
generateQuestion: {
|
||||||
title: '生成問題',
|
title: '生成問題',
|
||||||
successMessage: '生成問題成功',
|
successMessage: '生成問題成功',
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
<el-icon><MoreFilled /></el-icon>
|
<el-icon><MoreFilled /></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu style="min-width: 140px;">
|
||||||
<el-dropdown-item @click.stop="openGenerateDialog(data)">
|
<el-dropdown-item @click.stop="openGenerateDialog(data)">
|
||||||
<el-icon><Connection /></el-icon>
|
<el-icon><Connection /></el-icon>
|
||||||
{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
|
{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
|
||||||
@ -51,6 +51,34 @@
|
|||||||
<AppIcon iconName="app-migrate"></AppIcon>
|
<AppIcon iconName="app-migrate"></AppIcon>
|
||||||
{{ $t('views.document.setting.migration') }}</el-dropdown-item
|
{{ $t('views.document.setting.migration') }}</el-dropdown-item
|
||||||
>
|
>
|
||||||
|
<el-dropdown-item>
|
||||||
|
<el-dropdown class="w-full" trigger="hover" :show-arrow="false" placement="right-start" popper-class="move-position-popper">
|
||||||
|
<div class="w-full flex-between" style="line-height: 22px;">
|
||||||
|
<div class="flex align-center">
|
||||||
|
<!-- TODO 更换icon -->
|
||||||
|
<AppIcon iconName="app-migrate"></AppIcon>
|
||||||
|
{{ $t('views.document.movePosition.title') }}
|
||||||
|
</div>
|
||||||
|
<el-icon class="color-input-placeholder" :size="16" style="margin-right: 0;"><ArrowRight /></el-icon>
|
||||||
|
</div>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item
|
||||||
|
v-if="props.showMoveUp"
|
||||||
|
@click.stop="emit('move', 'up')"
|
||||||
|
>
|
||||||
|
{{ $t('views.document.movePosition.moveUp') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
v-if="props.showMoveDown"
|
||||||
|
@click.stop="emit('move', 'down')"
|
||||||
|
>
|
||||||
|
{{ $t('views.document.movePosition.moveDown') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-dropdown-item>
|
||||||
<el-dropdown-item icon="Delete" @click.stop="deleteParagraph(data)">{{
|
<el-dropdown-item icon="Delete" @click.stop="deleteParagraph(data)">{{
|
||||||
$t('common.delete')
|
$t('common.delete')
|
||||||
}}</el-dropdown-item>
|
}}</el-dropdown-item>
|
||||||
@ -94,6 +122,8 @@ import { t } from '@/locales'
|
|||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
data: any
|
data: any
|
||||||
disabled?: boolean
|
disabled?: boolean
|
||||||
|
showMoveUp?: boolean
|
||||||
|
showMoveDown?: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@ -106,7 +136,7 @@ const apiType = computed(() => {
|
|||||||
return type as 'systemShare' | 'workspace' | 'systemManage'
|
return type as 'systemShare' | 'workspace' | 'systemManage'
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph'])
|
const emit = defineEmits(['changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph','move'])
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const changeStateloading = ref(false)
|
const changeStateloading = ref(false)
|
||||||
const show = ref(false)
|
const show = ref(false)
|
||||||
@ -229,3 +259,11 @@ function refreshMigrateParagraph() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.move-position-popper {
|
||||||
|
.el-popper__arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -109,9 +109,12 @@
|
|||||||
|
|
||||||
<ParagraphCard
|
<ParagraphCard
|
||||||
:data="item"
|
:data="item"
|
||||||
|
:showMoveUp="index !== 0"
|
||||||
|
:showMoveDown="index < paragraphDetail.length-1"
|
||||||
class="mb-8 w-full"
|
class="mb-8 w-full"
|
||||||
@changeState="changeState"
|
@changeState="changeState"
|
||||||
@deleteParagraph="deleteParagraph"
|
@deleteParagraph="deleteParagraph"
|
||||||
|
@move="(val: string)=>onEnd(null, {paragraph_id: item.id,new_position: val==='up'?index-1:index+1}, index)"
|
||||||
@refresh="refresh"
|
@refresh="refresh"
|
||||||
@refreshMigrateParagraph="refreshMigrateParagraph"
|
@refreshMigrateParagraph="refreshMigrateParagraph"
|
||||||
:disabled="shareDisabled"
|
:disabled="shareDisabled"
|
||||||
@ -328,8 +331,8 @@ function openGenerateDialog(row?: any) {
|
|||||||
GenerateRelatedDialogRef.value.open(arr, 'paragraph')
|
GenerateRelatedDialogRef.value.open(arr, 'paragraph')
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEnd(event?: any) {
|
function onEnd(event?: any, params?: any, index?: number) {
|
||||||
const obj = {
|
const obj =params ?? {
|
||||||
paragraph_id: paragraphDetail.value[event.newIndex].id, // 当前拖动的段落ID
|
paragraph_id: paragraphDetail.value[event.newIndex].id, // 当前拖动的段落ID
|
||||||
new_position: paragraphDetail.value[event.newIndex + 1].position, // 新位置的段落位置
|
new_position: paragraphDetail.value[event.newIndex + 1].position, // 新位置的段落位置
|
||||||
}
|
}
|
||||||
@ -339,6 +342,10 @@ function onEnd(event?: any) {
|
|||||||
obj,
|
obj,
|
||||||
loading,
|
loading,
|
||||||
)
|
)
|
||||||
|
if(params) {
|
||||||
|
const movedItem = paragraphDetail.value.splice(index as number, 1)[0]
|
||||||
|
paragraphDetail.value.splice(params.new_position, 0, movedItem)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user