diff --git a/src/views/task/aside/Aside.vue b/src/views/task/aside/Aside.vue index 80baa8d..ca5f3ef 100644 --- a/src/views/task/aside/Aside.vue +++ b/src/views/task/aside/Aside.vue @@ -129,8 +129,10 @@ async function getshowFieldList() { onMounted(() => { getshowFieldList() + window.addEventListener("keydown", handleKeydown); }) - +function handleKeydown(event) { + if (event.key === "s") setShowSearch(true)} // 滚动容器,让key对应模块处于可视区域 function scrollHandler(key: string) { const element = document.querySelector(`#${key}`) diff --git a/src/views/task/content/Content.vue b/src/views/task/content/Content.vue index f75eca3..b5ad824 100644 --- a/src/views/task/content/Content.vue +++ b/src/views/task/content/Content.vue @@ -94,6 +94,7 @@ const fullscreenStyles = computed(() => ({ onMounted(() => { window.addEventListener("keydown", handleKeydown); + if (route.query.id) { taskId.value = route.query.id; packageId.value = route.query.packageid; @@ -102,12 +103,71 @@ onMounted(() => { } }); +let lastKeyPressTime = 0; +let keyPressTimer = null; +const doubleClickInterval = 300; // 可以自定义间隔时间,单位是毫秒 // 键盘左右箭头快捷切换 function handleKeydown(event) { if (event.key === "ArrowLeft") backHandler(); // 在这里执行左箭头的逻辑 else if (event.key === "ArrowRight") forwardHandler(); // 在这里执行右箭头的逻辑 + else if (event.keyCode === 67) { + isFullScreen.value=false + + // batchModalRef.value.closeModal() + }else if (event.key === 'p' || event.key === 'P') { + // 获取当前时间 + const now = Date.now(); + + // 如果两次按键时间间隔小于我们设定的双击间隔,则认为是双击 + if (now - lastKeyPressTime < doubleClickInterval) { + // 清除已经设置的定时器(如果有的话) + clearTimeout(keyPressTimer); + + // 执行想要的操作 + approvalHandler() + + // 重置上次按键时间 + lastKeyPressTime = 0; + } else { + // 如果不是双击,则更新上次按键时间,并开始一个新的计时器 + lastKeyPressTime = now; + + // 通过定时器重置上次按键时间 + // 这可以防止如果用户只按了一次键,也会触发双击的情况 + clearTimeout(keyPressTimer); + keyPressTimer = setTimeout(function () { + lastKeyPressTime = 0; + }, doubleClickInterval); + } + }else if (event.key === 'X' || event.key === 'X') { + // 获取当前时间 + const now = Date.now(); + + // 如果两次按键时间间隔小于我们设定的双击间隔,则认为是双击 + if (now - lastKeyPressTime < doubleClickInterval) { + // 清除已经设置的定时器(如果有的话) + clearTimeout(keyPressTimer); + + // 执行想要的操作 + singleRejectHandler() + + // 重置上次按键时间 + lastKeyPressTime = 0; + } else { + // 如果不是双击,则更新上次按键时间,并开始一个新的计时器 + lastKeyPressTime = now; + + // 通过定时器重置上次按键时间 + // 这可以防止如果用户只按了一次键,也会触发双击的情况 + clearTimeout(keyPressTimer); + keyPressTimer = setTimeout(function () { + lastKeyPressTime = 0; + }, doubleClickInterval); + } + } + } function setBatch(value: boolean) { diff --git a/src/views/task/modal/BatchModal.vue b/src/views/task/modal/BatchModal.vue index 2cd727e..e1e14c7 100644 --- a/src/views/task/modal/BatchModal.vue +++ b/src/views/task/modal/BatchModal.vue @@ -254,8 +254,19 @@ function afterLeave() { onMounted(() => { show.value && addListeners() + window.addEventListener("keydown", handleKeydown); }) + +// 键盘左右箭头快捷切换 +function handleKeydown(event) { + + // 在这里执行右箭头的逻辑 + if (event.keyCode === 67) { +show.value=false + // batchModalRef.value.closeModal() + } +} function showModal(value) { taskId.value = value refreshHandler() @@ -397,7 +408,7 @@ const gridHeight = computed(() => { defineExpose({ showModal, - reload, + reload,closeModal })