diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index d5b468c2..116989c0 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -175,6 +175,7 @@ html, body { & > .page-content { padding: 10rem; box-sizing: border-box; + overflow: auto; } } diff --git a/src/hooks/event.ts b/src/hooks/event.ts index 25025dcf..fd340c5f 100644 --- a/src/hooks/event.ts +++ b/src/hooks/event.ts @@ -1,131 +1,132 @@ -import {onMounted, onUnmounted, watch} from "vue"; +import {onMounted, onUnmounted, watch,onDeactivated} from "vue"; import {emitter, EventKey} from "@/utils/eventBus.ts"; import {useRuntimeStore} from "@/stores/runtime.ts"; import {useSettingStore} from "@/stores/setting.ts"; export function useWindowClick(cb: (e: PointerEvent) => void) { - onMounted(() => { - emitter.on(EventKey.closeOther, cb) - window.addEventListener('click', cb) - }) - onUnmounted(() => { - window.removeEventListener('click', cb) - }) + onMounted(() => { + emitter.on(EventKey.closeOther, cb) + window.addEventListener('click', cb) + }) + onUnmounted(() => { + window.removeEventListener('click', cb) + }) } export function useEventListener(type: string, listener: EventListenerOrEventListenerObject) { - onMounted(() => window.addEventListener(type, listener)) - onUnmounted(() => window.removeEventListener(type, listener)) + onMounted(() => window.addEventListener(type, listener)) + onUnmounted(() => window.removeEventListener(type, listener)) + onDeactivated(() => window.removeEventListener(type, listener)) } export function getShortcutKey(e: KeyboardEvent) { - let shortcutKey = '' - if (e.ctrlKey) shortcutKey += 'Ctrl+' - if (e.altKey) shortcutKey += 'Alt+' - if (e.shiftKey) shortcutKey += 'Shift+' - if (e.key !== 'Control' && e.key !== 'Alt' && e.key !== 'Shift') { - if (e.keyCode >= 65 && e.keyCode <= 90) { - shortcutKey += e.key.toUpperCase() - } else { - if (e.key === 'ArrowRight') { - shortcutKey += '➡' - } else if (e.key === 'ArrowLeft') { - shortcutKey += '⬅' - } else if (e.key === 'ArrowUp') { - shortcutKey += '⬆' - } else if (e.key === 'ArrowDown') { - shortcutKey += '⬇' - } else { - shortcutKey += e.key - } - } + let shortcutKey = '' + if (e.ctrlKey) shortcutKey += 'Ctrl+' + if (e.altKey) shortcutKey += 'Alt+' + if (e.shiftKey) shortcutKey += 'Shift+' + if (e.key !== 'Control' && e.key !== 'Alt' && e.key !== 'Shift') { + if (e.keyCode >= 65 && e.keyCode <= 90) { + shortcutKey += e.key.toUpperCase() + } else { + if (e.key === 'ArrowRight') { + shortcutKey += '➡' + } else if (e.key === 'ArrowLeft') { + shortcutKey += '⬅' + } else if (e.key === 'ArrowUp') { + shortcutKey += '⬆' + } else if (e.key === 'ArrowDown') { + shortcutKey += '⬇' + } else { + shortcutKey += e.key + } } - shortcutKey = shortcutKey.trim() + } + shortcutKey = shortcutKey.trim() - // console.log('key', shortcutKey) - return shortcutKey + // console.log('key', shortcutKey) + return shortcutKey } export function useStartKeyboardEventListener() { - const runtimeStore = useRuntimeStore() - const settingStore = useSettingStore() + const runtimeStore = useRuntimeStore() + const settingStore = useSettingStore() - useEventListener('keydown', (e: KeyboardEvent) => { - // console.log('e',e.keyCode,e.code) - if (!runtimeStore.disableEventListener) { - e.preventDefault() - let shortcutKey = getShortcutKey(e) - // console.log('shortcutKey', shortcutKey) - - let list = Object.entries(settingStore.shortcutKeyMap) - let shortcutEvent = '' - for (let i = 0; i < list.length; i++) { - let [k, v] = list[i] - if (v === shortcutKey) { - console.log('快捷键', k) - shortcutEvent = k - break - } - } - if (shortcutEvent) { - emitter.emit(shortcutEvent, e) - } else { - //非英文模式下,输入区域的 keyCode 均为 229时, - if ((e.keyCode >= 65 && e.keyCode <= 90) - || (e.keyCode >= 48 && e.keyCode <= 57) - || e.code === 'Space' - || e.code === 'Slash' - || e.code === 'Quote' - || e.code === 'Comma' - || e.code === 'BracketLeft' - || e.code === 'BracketRight' - || e.code === 'Period' - || e.code === 'Minus' - || e.code === 'Equal' - || e.code === 'Semicolon' - // || e.code === 'Backquote' - || e.keyCode === 229 - ) { - emitter.emit(EventKey.onTyping, e) - } else { - emitter.emit(EventKey.keydown, e) - } - } + useEventListener('keydown', (e: KeyboardEvent) => { + // console.log('e',e.keyCode,e.code) + if (!runtimeStore.disableEventListener) { + e.preventDefault() + let shortcutKey = getShortcutKey(e) + // console.log('shortcutKey', shortcutKey) + let list = Object.entries(settingStore.shortcutKeyMap) + let shortcutEvent = '' + for (let i = 0; i < list.length; i++) { + let [k, v] = list[i] + if (v === shortcutKey) { + console.log('快捷键', k) + shortcutEvent = k + break } - }) - useEventListener('keyup', (e: KeyboardEvent) => { - if (!runtimeStore.disableEventListener) { - emitter.emit(EventKey.keyup, e) + } + if (shortcutEvent) { + emitter.emit(shortcutEvent, e) + } else { + //非英文模式下,输入区域的 keyCode 均为 229时, + if ((e.keyCode >= 65 && e.keyCode <= 90) + || (e.keyCode >= 48 && e.keyCode <= 57) + || e.code === 'Space' + || e.code === 'Slash' + || e.code === 'Quote' + || e.code === 'Comma' + || e.code === 'BracketLeft' + || e.code === 'BracketRight' + || e.code === 'Period' + || e.code === 'Minus' + || e.code === 'Equal' + || e.code === 'Semicolon' + // || e.code === 'Backquote' + || e.keyCode === 229 + ) { + emitter.emit(EventKey.onTyping, e) + } else { + emitter.emit(EventKey.keydown, e) } - }) + } + + } + }) + useEventListener('keyup', (e: KeyboardEvent) => { + if (!runtimeStore.disableEventListener) { + emitter.emit(EventKey.keyup, e) + } + }) } export function useOnKeyboardEventListener(onKeyDown: (e: KeyboardEvent) => void, onKeyUp: (e: KeyboardEvent) => void) { - onMounted(() => { - emitter.on(EventKey.keydown, onKeyDown) - emitter.on(EventKey.keyup, onKeyUp) - }) - onUnmounted(() => { - emitter.off(EventKey.keydown, onKeyDown) - emitter.off(EventKey.keyup, onKeyUp) - }) + onMounted(() => { + emitter.on(EventKey.keydown, onKeyDown) + emitter.on(EventKey.keyup, onKeyUp) + }) + onUnmounted(() => { + emitter.off(EventKey.keydown, onKeyDown) + emitter.off(EventKey.keyup, onKeyUp) + }) } export function useDisableEventListener(watchVal: any) { - const runtimeStore = useRuntimeStore() - watch(watchVal, (n: any) => { - if (n === true) runtimeStore.disableEventListener = true - if (n === false) runtimeStore.disableEventListener = false - }) - onMounted(() => { - if (watchVal() === undefined) { - runtimeStore.disableEventListener = true - } - }) - onUnmounted(() => { - if (watchVal() === undefined) { - runtimeStore.disableEventListener = false - } - }) + const runtimeStore = useRuntimeStore() + watch(watchVal, (n: any) => { + if (n === true) runtimeStore.disableEventListener = true + if (n === false) runtimeStore.disableEventListener = false + }) + onMounted(() => { + if (watchVal() === undefined) { + runtimeStore.disableEventListener = true + } + }) + onUnmounted(() => { + if (watchVal() === undefined) { + runtimeStore.disableEventListener = false + } + }) } diff --git a/src/pages/mobile/components/CollectList.vue b/src/pages/mobile/components/CollectList.vue new file mode 100644 index 00000000..f5abc8e1 --- /dev/null +++ b/src/pages/mobile/components/CollectList.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/src/pages/mobile/components/MobilePanel.vue b/src/pages/mobile/components/MobilePanel.vue index c5f694b0..7a579e4c 100644 --- a/src/pages/mobile/components/MobilePanel.vue +++ b/src/pages/mobile/components/MobilePanel.vue @@ -23,10 +23,11 @@ import ArticleList from "@/components/list/ArticleList.vue"; import Slide from "@/components/Slide.vue"; import SlideHorizontal from "@/components/slide/SlideHorizontal.vue"; import SlideItem from "@/components/slide/SlideItem.vue"; +import CollectList from "@/pages/mobile/components/CollectList.vue"; +import WrongList from "@/pages/mobile/components/WrongList.vue"; +import SimpleList from "@/pages/mobile/components/SimpleList.vue"; -const router = useRouter() const store = useBaseStore() -const runtimeStore = useRuntimeStore() const settingStore = useSettingStore() let tabIndex = $ref(0) provide('tabIndex', computed(() => tabIndex)) @@ -37,12 +38,6 @@ watch(() => settingStore.showPanel, n => { } }) -let practiceType = $ref(DictType.word) - -function changeIndex(dict: Dict) { - store.changeDict(dict, practiceType) -} - onMounted(() => { emitter.on(EventKey.changeDict, () => { tabIndex = 0 @@ -53,38 +48,6 @@ onUnmounted(() => { emitter.off(EventKey.changeDict) }) -const { - delWrongWord, - delSimpleWord, - toggleWordCollect, -} = useWordOptions() - -const { - toggleArticleCollect -} = useArticleOptions() - -function addCollect() { - runtimeStore.editDict = cloneDeep(store.collect) - router.push({path: '/dict', query: {type: 'addWordOrArticle'}}) -} - -function addSimple() { - runtimeStore.editDict = cloneDeep(store.simple) - router.push({path: '/dict', query: {type: 'addWordOrArticle'}}) -} - -const showCollectToggleButton = $computed(() => { - if (store.currentDict.type === DictType.collect) { - if (store.current.practiceType !== practiceType) { - return (practiceType === DictType.word && store.collect.words.length) || - (practiceType === DictType.article && store.collect.articles.length) - } - } else { - return (practiceType === DictType.word && store.collect.words.length) || - (practiceType === DictType.article && store.collect.articles.length) - } - return false -}) \ No newline at end of file diff --git a/src/pages/mobile/my/WrongPage.vue b/src/pages/mobile/my/WrongPage.vue new file mode 100644 index 00000000..bcec6731 --- /dev/null +++ b/src/pages/mobile/my/WrongPage.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/pages/mobile/my/setting/MusicSetting.vue b/src/pages/mobile/my/setting/MusicSetting.vue new file mode 100644 index 00000000..5d1eb939 --- /dev/null +++ b/src/pages/mobile/my/setting/MusicSetting.vue @@ -0,0 +1,242 @@ + + + + + \ No newline at end of file diff --git a/src/pages/mobile/my/setting/OtherSetting.vue b/src/pages/mobile/my/setting/OtherSetting.vue new file mode 100644 index 00000000..3f73fd7c --- /dev/null +++ b/src/pages/mobile/my/setting/OtherSetting.vue @@ -0,0 +1,202 @@ + + + + + \ No newline at end of file diff --git a/src/pages/mobile/Setting.vue b/src/pages/mobile/my/setting/Setting.vue similarity index 88% rename from src/pages/mobile/Setting.vue rename to src/pages/mobile/my/setting/Setting.vue index 8fc61b2d..ff20b836 100644 --- a/src/pages/mobile/Setting.vue +++ b/src/pages/mobile/my/setting/Setting.vue @@ -5,6 +5,7 @@ import useTheme from "@/hooks/theme.ts"; import {useSettingStore} from "@/stores/setting.ts"; import NavBar from "@/pages/mobile/components/NavBar.vue"; import {ref} from "vue"; +import router from "@/router.ts"; const {toggleTheme} = useTheme() const settingStore = useSettingStore() @@ -18,14 +19,14 @@ const gitLastCommitHash = ref(LATEST_COMMIT_HASH);
-
+
音效设置
-
+
其他设置 @@ -41,7 +42,7 @@ const gitLastCommitHash = ref(LATEST_COMMIT_HASH);