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 {}
-})