From 56429b19a410c39ebc73c801240896cecee70053 Mon Sep 17 00:00:00 2001 From: expdsn <18111002318@163.com> Date: Wed, 23 Oct 2024 14:57:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=A7=86=E9=A2=91=E5=B0=8F?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icons/game_video.png | Bin 0 -> 13145 bytes src/layout/adder/WidgetAdder.tsx | 16 ++++- src/layout/grid/BlockWrapper.tsx | 52 +++++++------- src/layout/useLayoutStore.ts | 11 ++- src/utils/tool.ts | 9 +++ src/widgets/gameVideo/Large.tsx | 103 ++++++++++++++++++++++++++++ src/widgets/gameVideo/index.ts | 18 +++++ src/widgets/index.ts | 3 +- src/widgets/video/Large.tsx | 9 --- src/widgets/video/Middle.tsx | 10 --- src/widgets/video/Modal.tsx | 12 ---- src/widgets/video/Small.tsx | 14 ---- src/widgets/video/index.ts | 30 -------- src/widgets/video/useVideoStore.tsx | 34 --------- 14 files changed, 181 insertions(+), 140 deletions(-) create mode 100644 public/icons/game_video.png create mode 100644 src/utils/tool.ts create mode 100644 src/widgets/gameVideo/Large.tsx create mode 100644 src/widgets/gameVideo/index.ts delete mode 100644 src/widgets/video/Large.tsx delete mode 100644 src/widgets/video/Middle.tsx delete mode 100644 src/widgets/video/Modal.tsx delete mode 100644 src/widgets/video/Small.tsx delete mode 100644 src/widgets/video/index.ts delete mode 100644 src/widgets/video/useVideoStore.tsx diff --git a/public/icons/game_video.png b/public/icons/game_video.png new file mode 100644 index 0000000000000000000000000000000000000000..78ac72c14312dbb7a14482d98f497163882db2de GIT binary patch literal 13145 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 Zzz!$I>Dak&{>RM$GM^PBs>BQe{ttuI;fDYK literal 0 HcmV?d00001 diff --git a/src/layout/adder/WidgetAdder.tsx b/src/layout/adder/WidgetAdder.tsx index 10d3ec0..d1bb661 100644 --- a/src/layout/adder/WidgetAdder.tsx +++ b/src/layout/adder/WidgetAdder.tsx @@ -34,7 +34,13 @@ export const WidgetItem = defineComponent({ 'text-black/80': !isGame.value })} > - {props.content.label} + {props.content.name === 'gameVideo' + ? useLayoutStore().state.current === 0 + ? '游戏视频' + : useLayoutStore().state.current === 1 + ? '学习视频' + : '娱乐视频' + : props.content.label}
- {props.content.description} + {props.content.description === 'gameVideoDesc' + ? useLayoutStore().state.current === 0 + ? '热门游戏视频' + : useLayoutStore().state.current === 1 + ? '热门学习视频' + : '热门娱乐视频' + : props.content.description}
diff --git a/src/layout/grid/BlockWrapper.tsx b/src/layout/grid/BlockWrapper.tsx index ba1fe5d..2183e1a 100644 --- a/src/layout/grid/BlockWrapper.tsx +++ b/src/layout/grid/BlockWrapper.tsx @@ -26,7 +26,7 @@ export default defineComponent({ const hover = ref(false) return () => (
-
-
- {props.block.link ? ( - props.block.link.startsWith('id:') ? ( - // 文件夹 - - ) : ( - // 链接 - - ) +
+ {props.block.link ? ( + props.block.link.startsWith('id:') ? ( + // 文件夹 + ) : ( - // 小组件 - - )} -
- {settings.state.showBlockLabel && ( -
- {layout.getLabel(props.block)} -
+ // 链接 + + ) + ) : ( + // 小组件 + )}
+ {settings.state.showBlockLabel && ( +
+ {layout.getLabel(props.block)} +
+ )}
) } diff --git a/src/layout/useLayoutStore.ts b/src/layout/useLayoutStore.ts index 2e3198e..0000802 100644 --- a/src/layout/useLayoutStore.ts +++ b/src/layout/useLayoutStore.ts @@ -22,6 +22,7 @@ const defaultLayout: Layout = { export default defineStore('layout', () => { const state = reactive(defaultLayout) const ready = ref(false) + db.getItem('layout').then((res) => { if (res) { Object.assign(state, res) @@ -96,10 +97,18 @@ export default defineStore('layout', () => { const dir = state.dir[block.link.slice(3)] if (dir) return dir.label } + // 处理不同的组件的名称 + if (block.name === 'gameVideo') { + console.log(state.currentPage); + console.log(block); + + return state.current === 0 ? '游戏视频' : state.current === 1 ? '学习视频' : '娱乐视频' + } return block.label || '' } + const changeBackground = (url: string) => { - state.content[state.current].background = url + state.content[state.current].background = url } return { state, diff --git a/src/utils/tool.ts b/src/utils/tool.ts new file mode 100644 index 0000000..97ab530 --- /dev/null +++ b/src/utils/tool.ts @@ -0,0 +1,9 @@ +/** + * 生成随机数 + * @param min 最小值 + * @param max 最大值 + * @returns 随机数 + */ +export function randomNum(min: number, max: number) { + return Math.floor(Math.random() * (max - min + 1)) + min; +} \ No newline at end of file diff --git a/src/widgets/gameVideo/Large.tsx b/src/widgets/gameVideo/Large.tsx new file mode 100644 index 0000000..cccbd51 --- /dev/null +++ b/src/widgets/gameVideo/Large.tsx @@ -0,0 +1,103 @@ +import useLayoutStore from '@/layout/useLayoutStore' +import request from '@/utils/request' +import { addIcons, OhVueIcon } from 'oh-vue-icons' +import { computed, defineComponent, onMounted, ref, watch, type CSSProperties } from 'vue' +import { FaChevronLeft } from 'oh-vue-icons/icons' +import type { CarouselRef } from 'ant-design-vue/es/carousel' +import { randomNum } from '@/utils/tool' +addIcons(FaChevronLeft) +interface Owner { + face: string + mid: number + name: string +} + +interface GameData { + _id: string + aid: number + ctime: number + duration: number + owner: Owner + pic: string + rid: string + time: string + title: string + type: string +} +export default defineComponent(() => { + const list = ref([]) + const currentIndex = ref(-1) + + const current = computed(() => { + if (currentIndex.value === -1) { + return null + } else { + return list.value[currentIndex.value] + } + }) + watch( + () => useLayoutStore().state.current, + (val) => { + const type = val === 0 ? 'game' : val === 1 ? 'study' : 'entertainment' + request('GET', `/api/hotVideo?type=${type}`).then((res) => { + list.value = res + currentIndex.value = randomNum(0, list.value.length) + }) + }, + { + immediate: true + } + ) + onMounted(() => { + setInterval(() => { + currentIndex.value = currentIndex.value === list.value.length - 1 ? 0 : currentIndex.value + 1 + }, 5000) + }) + return () => ( +
+ { +
+
+ + {current.value?.title} + + {current.value?.owner.name} +
+
{ + e.stopPropagation() + + currentIndex.value = + currentIndex.value === 0 ? list.value.length - 1 : currentIndex.value - 1 + }} + class="absolute hidden bottom-[20px] group-hover:flex items-center justify-center left-[0px] w-[22px] h-[22px] bg-white/30 rounded" + > + +
+
{ + e.stopPropagation() + currentIndex.value = + currentIndex.value === list.value.length - 1 ? 0 : currentIndex.value + 1 + }} + class="absolute hidden bottom-[20px] group-hover:flex items-center justify-center right-[0px] rotate-180 w-[22px] h-[22px] bg-white/30 rounded" + > + +
+
+ } +
+ ) +}) diff --git a/src/widgets/gameVideo/index.ts b/src/widgets/gameVideo/index.ts new file mode 100644 index 0000000..93d74e8 --- /dev/null +++ b/src/widgets/gameVideo/index.ts @@ -0,0 +1,18 @@ +import asyncLoader from '@/utils/asyncLoader' +import type { Widget } from '..' + +export default { + name: 'gameVideo', + label: 'gameVideo', + description: 'gameVideoDesc', + icon: '/icons/game_video.png', + modal: null, + list: [ + { + w: 4, + h: 2, + label: '大', + component: asyncLoader(() => import('./Large')) + } + ] +} as Widget diff --git a/src/widgets/index.ts b/src/widgets/index.ts index 3afb210..1b6e83f 100644 --- a/src/widgets/index.ts +++ b/src/widgets/index.ts @@ -7,6 +7,7 @@ import eat from './eat' import discount from './discount' import hotspot from './hotspot' import constellation from './constellation' +import gameVideo from './gameVideo' export interface Widget { name: string // 小组件类型唯一标识 label: string // 小组件名称 @@ -21,4 +22,4 @@ export interface Widget { }[] // 不同尺寸小组件块 } -export default [calendar, weather, weApply, gameNews, eat, discount, hotspot, constellation] as Widget[] +export default [calendar, weather, weApply, gameNews, eat, discount, hotspot, constellation, gameVideo] as Widget[] diff --git a/src/widgets/video/Large.tsx b/src/widgets/video/Large.tsx deleted file mode 100644 index b83de91..0000000 --- a/src/widgets/video/Large.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { defineComponent } from 'vue' - -export default defineComponent(() => { - return () => ( -
- large -
- ) -}) diff --git a/src/widgets/video/Middle.tsx b/src/widgets/video/Middle.tsx deleted file mode 100644 index 53edc23..0000000 --- a/src/widgets/video/Middle.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent } from 'vue' - -export default defineComponent(() => { - - return () => ( -
- middle -
- ) -}) diff --git a/src/widgets/video/Modal.tsx b/src/widgets/video/Modal.tsx deleted file mode 100644 index 9890740..0000000 --- a/src/widgets/video/Modal.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { defineComponent } from 'vue' - -export default defineComponent(() => { - return () => ( -
- ) -}) diff --git a/src/widgets/video/Small.tsx b/src/widgets/video/Small.tsx deleted file mode 100644 index bf0a763..0000000 --- a/src/widgets/video/Small.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { defineComponent } from 'vue' - -export default defineComponent(() => { - return () => ( -
- -
- ) -}) diff --git a/src/widgets/video/index.ts b/src/widgets/video/index.ts deleted file mode 100644 index 46a5db7..0000000 --- a/src/widgets/video/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import asyncLoader from '@/utils/asyncLoader' -import type { Widget } from '..' - -export default { - name: 'gameNews', - label: '游戏资讯', - description: '游戏资讯', - icon: '/icons/game_news_icon.png', - modal: asyncLoader(() => import('./Modal')), - list: [ - { - w: 2, - h: 1, - label: '小', - component: asyncLoader(() => import('./Small')) - }, - { - w: 2, - h: 2, - label: '中', - component: asyncLoader(() => import('./Middle')) - }, - { - w: 4, - h: 2, - label: '大', - component: asyncLoader(() => import('./Large')) - } - ] -} as Widget diff --git a/src/widgets/video/useVideoStore.tsx b/src/widgets/video/useVideoStore.tsx deleted file mode 100644 index fc596da..0000000 --- a/src/widgets/video/useVideoStore.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import useLayoutStore from '@/layout/useLayoutStore' -import request from '@/utils/request' -import { defineStore } from 'pinia' -import { computed, ref, watch } from 'vue' - -type HotType = { - desc: string - hotScore: string - index: number - picurl: string - title: string - url: string -} -export const PlatformList = new Map([ - ['baidu', '百度'], - ['weibo', '微博'], - ['bilibili', 'B站'] -] as const) - -export default defineStore('video', () => { - const videoList = ref([]) - const layout = useLayoutStore() - const type = ref('baidu') - const getNews = async (type: string) => { - const res = request('GET', `/api/hotList?type=${type}`) - } - watch( - () => layout.state.current, - (val) => { - console.log('videoList', val) - } - ) - return {} -})