pagetype通用详情页实现ctrl+s快捷保存功能

This commit is contained in:
jingrow 2025-10-16 23:43:49 +08:00
parent cdad09373a
commit 14ed65e067

View File

@ -147,7 +147,7 @@
</template>
<script setup lang="ts">
import { onMounted, ref, shallowRef, markRaw, computed, watch } from 'vue'
import { onMounted, onUnmounted, ref, shallowRef, markRaw, computed, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { NButton, NSpace, NIcon, NProgress, NInput, NSelect, NInputNumber, NCheckbox, NDatePicker, NTimePicker, NRate, NColorPicker, NAutoComplete, NTag, useMessage } from 'naive-ui'
import FieldRenderer from '@/core/components/form/FieldRenderer.vue'
@ -742,6 +742,18 @@ async function handleSave() {
}
}
// Ctrl/Cmd + S
function handleKeydownSave(e: KeyboardEvent) {
// Ctrl/Cmd + S
if ((e.ctrlKey || e.metaKey) && (e.key === 's' || e.key === 'S')) {
e.preventDefault()
if (canEdit.value && !loading.value) {
//
handleSave()
}
}
}
//
function goBack() {
// URL
@ -749,6 +761,8 @@ function goBack() {
}
onMounted(async () => {
//
window.addEventListener('keydown', handleKeydownSave, { capture: true })
// apps 使 URL slug - _
const comp = await resolvePagetypeDetailOverride(originalSlug.value)
overrideComponent.value = comp ? markRaw(comp) : null
@ -761,6 +775,10 @@ onMounted(async () => {
await loadDetail()
})
onUnmounted(() => {
window.removeEventListener('keydown', handleKeydownSave)
})
//
watch(() => route.params.id, async (newId, oldId) => {
if (newId && newId !== oldId) {