Compare commits

...

3 Commits

@ -1,9 +1,10 @@
import { getPackageList } from '@/api/work/work' import { getPackageList } from '@/api/work/work'
import { store } from '@/store' import { store } from '@/store'
import { useMessage } from 'naive-ui'
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { createDiscreteApi } from 'naive-ui'
import type { OrderState, PackageListItem } from '/#/workorder' import type { OrderState, PackageListItem } from '/#/workorder'
const { message } = createDiscreteApi(['message'])
export const useWorkOrderStore = defineStore({ export const useWorkOrderStore = defineStore({
id: 'work-order', id: 'work-order',
state: (): OrderState => ({ state: (): OrderState => ({
@ -32,18 +33,14 @@ export const useWorkOrderStore = defineStore({
}, },
forward() { forward() {
const len = this.packageList.length const len = this.packageList.length
const message = useMessage()
if (this.currentIndex === len - 1) if (this.currentIndex === len - 1)
message.error('已经到达最后一个') return message.error('已经到达最后一个')
this.setActive(++this.currentIndex) this.setActive(++this.currentIndex)
}, },
back() { back() {
const message = useMessage()
if (this.currentIndex === 0) if (this.currentIndex === 0)
message.error('已经到达第一个') return message.error('已经到达第一个')
this.setActive(--this.currentIndex) this.setActive(--this.currentIndex)
}, },

@ -1,6 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { onMounted, onUnmounted, reactive, ref, watch } from 'vue' import { reactive, ref, watch } from 'vue'
import { throttle } from 'lodash-es'
import { useInfiniteScroll } from '@vueuse/core' import { useInfiniteScroll } from '@vueuse/core'
import { useMessage } from 'naive-ui' import { useMessage } from 'naive-ui'
import ApprovalModal from '../modal/ApprovalModal.vue' import ApprovalModal from '../modal/ApprovalModal.vue'
@ -162,43 +161,7 @@ defineExpose({
search, search,
}) })
const onKeydown = throttle((event) => {
const eles = ['INPUT', 'TEXTAREA']
if (eles.includes(event.target.tagName))
return
if (event.defaultPrevented)
return //
const handled = false
if (event.key !== undefined) {
// 使 KeyboardEvent.key handled true
}
else if (event.keyCode !== undefined) {
// 使 KeyboardEvent.keyCode handled true
}
if (handled) {
//
event.preventDefault()
}
if (event.key === 'ArrowLeft') {
const prev = data.value[workStore.currentIndex - 1]?.id
if (prev)
selectHandler(prev, workStore.currentIndex - 1)
}
if (event.key === 'ArrowRight') {
const next = data.value[workStore.currentIndex + 1]?.id
if (next)
selectHandler(next, workStore.currentIndex + 1)
}
}, 500)
onMounted(() => {
document.addEventListener('keydown', onKeydown, true)
})
onUnmounted(() => {
document.removeEventListener('keydown', onKeydown)
})
</script> </script>
<template> <template>

@ -342,6 +342,8 @@ function onEsc(event: KeyboardEvent) {
useKeydown('k k', () => { useKeydown('k k', () => {
isFullScreen.value = true isFullScreen.value = true
}) })
useKeydown('right', forwardHandler)
useKeydown('left', backHandler)
onUnmounted(() => { onUnmounted(() => {
workStore.reset() workStore.reset()
document.removeEventListener('keydown', onEsc) document.removeEventListener('keydown', onEsc)

Loading…
Cancel
Save