-
-
-
-
-
-

-
美食
-
-
-

-
休闲娱乐
-
-
-

-
游玩
-
-
-

-
丽人/美发
-
-
-

-
住宿
-
-
-

-
游玩
-
-
-

-
丽人/美发
-
-
-

-
住宿
-
-
-
-
- 附近吃喝玩乐
-
-
- getSlide0Data(true)"
- />
-
+
@@ -205,6 +143,7 @@ import UserPanel from "@/components/UserPanel.vue";
import Community from "@/pages/home/components/Community.vue";
import Shop from "@/pages/home/components/Shop.vue";
import Loading from "@/components/Loading.vue";
+import Slide1 from "@/pages/home/slide/Slide1.vue";
const nav = useNav()
@@ -212,6 +151,12 @@ function stop(e) {
e.stopPropagation()
}
+const p = {
+ onGoUserInfo() {
+ console.log('parent-goUserInfo')
+ }
+}
+
const store = useStore()
const friends = computed(() => store.state.friends)
const bodyHeight = computed(() => store.state.bodyHeight)
@@ -311,7 +256,6 @@ watch(
() => state.navIndex,
(newVal, oldValue) => {
if (newVal === 0 && state.slide0.list.length === 0) {
- return getSlide0Data()
}
if (newVal === 4 && state.slide4.list.length === 0) {
return getSlide4Data()
@@ -340,29 +284,6 @@ watch(
})
-function loadSlide1More() {
- if (!state.loading) {
- state.slide0.pageNo++
- getSlide0Data()
- }
-}
-
-async function getSlide0Data(refresh = false) {
- if (state.slide0.loading) return
- state.slide0.loading = true
- let res = await api.videos.recommended({pageNo: refresh ? 0 : state.slide0.pageNo, pageSize: state.slide0.pageSize})
- console.log('getSlide0Data-', 'refresh', refresh, res)
- state.slide0.loading = false
- if (res.code === 200) {
- state.slide0.totalSize = res.data.total
- if (refresh) {
- state.slide0.list = []
- }
- state.slide0.list = state.slide0.list.concat(res.data.list)
- } else {
- state.slide0.pageNo--
- }
-}
async function getSlide4Data(refresh = false) {
if (state.slide4.loading) return
@@ -388,24 +309,6 @@ function loadSlide4More() {
}
}
-function showSubType(e) {
- Utils.$stopPropagation(e)
- console.log('subTypeRef',)
- state.subTypeHeight = subTypeRef.value.getBoundingClientRect().height + 'px'
- state.subTypeVisible = true
- setTimeout(() => state.subTypeIsTop = true, 300)
- bus.emit(EVENT_KEY.OPEN_SUB_TYPE,)
-}
-
-function pageClick(e) {
- // console.log('pageClick')
- if (state.subTypeVisible) {
- state.subTypeIsTop = state.subTypeVisible = false
- bus.emit(EVENT_KEY.CLOSE_SUB_TYPE,)
- Utils.$stopPropagation(e)
- }
-}
-
function delayShowDialog(cb) {
setTimeout(() => {
cb()
@@ -423,23 +326,7 @@ function end() {
}
onMounted(() => {
- // getData()
- getSlide0Data()
- bus.on(EVENT_KEY.SINGLE_CLICK, () => {
- let itemIndex = -1
- if (state.navIndex === 4) {
- itemIndex = state.slide4.index
- }
- if (state.navIndex === 0) {
- itemIndex = state.slide0.index
- }
- bus.emit(EVENT_KEY.SINGLE_CLICK_BROADCAST, {
- baseIndex: state.baseIndex,
- navIndex: state.navIndex,
- itemIndex,
- type: EVENT_KEY.ITEM_TOGGLE
- })
- })
+
bus.on('update:item', val => {
const {baseIndex, navIndex, itemIndex} = val.position
if (navIndex === 5) {
@@ -457,7 +344,13 @@ onMounted(() => {
bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
state.commentVisible = false
})
- bus.on('nav', path => nav(path))
+ bus.on(EVENT_KEY.SHOW_SHARE, (e) => {
+ state.isSharing = true
+ })
+ bus.on(EVENT_KEY.NAV, ({path, query}) => nav(path, query))
+ bus.on(EVENT_KEY.GO_USERINFO, () => {
+ state.baseIndex = 1
+ })
})
onUnmounted(() => {
bus.offAll()
diff --git a/src/pages/home/slide/Slide1.vue b/src/pages/home/slide/Slide1.vue
new file mode 100644
index 0000000..ae5257c
--- /dev/null
+++ b/src/pages/home/slide/Slide1.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+

+
美食
+
+
+

+
休闲娱乐
+
+
+

+
游玩
+
+
+

+
丽人/美发
+
+
+

+
住宿
+
+
+

+
游玩
+
+
+

+
丽人/美发
+
+
+

+
住宿
+
+
+
+
+ 附近吃喝玩乐
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/home/slide/SlideList.vue b/src/pages/home/slide/SlideList.vue
new file mode 100644
index 0000000..c8a2a08
--- /dev/null
+++ b/src/pages/home/slide/SlideList.vue
@@ -0,0 +1,155 @@
+
+
+ getData(true)"
+ />
+
+
+
diff --git a/src/pages/slideHooks/InfiniteList.vue b/src/pages/slideHooks/InfiniteList.vue
index 8f641cd..0fe5187 100644
--- a/src/pages/slideHooks/InfiniteList.vue
+++ b/src/pages/slideHooks/InfiniteList.vue
@@ -39,7 +39,7 @@ const bodyHeight = computed(() => store.state.bodyHeight)
const bodyWidth = computed(() => store.state.bodyWidth)
const subTypeRef = ref(null)
-const state = reactive( {
+const state = reactive({
baseIndex: 0,
navIndex: 4,
itemIndex: 0,
@@ -125,38 +125,6 @@ function end() {
// this.$notice('暂时没有更多了')
}
-onMounted(() => {
- getData()
- bus.on(EVENT_KEY.SINGLE_CLICK, () => {
- let id = ''
- if (state.navIndex === 4) {
- id = state.recommendVideos[state.itemIndex].id
- }
- bus.emit(EVENT_KEY.SINGLE_CLICK_BROADCAST, {id, type: EVENT_KEY.ITEM_TOGGLE})
- })
- bus.on('update:item', val => {
- const {baseIndex, navIndex, itemIndex} = val.position
- if (navIndex === 5) {
- state.recommendVideos[itemIndex] = val.item
- }
- })
-
- bus.on(EVENT_KEY.ENTER_FULLSCREEN, (e) => state.fullScreen = true)
- bus.on(EVENT_KEY.EXIT_FULLSCREEN, (e) => state.fullScreen = false)
- bus.on(EVENT_KEY.OPEN_COMMENTS, (e) => {
- bus.emit(EVENT_KEY.ENTER_FULLSCREEN)
- state.commentVisible = true
- })
- bus.on(EVENT_KEY.CLOSE_COMMENTS, (e) => {
- bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
- state.commentVisible = false
- })
- bus.on('nav', path => nav(path))
-})
-onUnmounted(() => {
- bus.offAll()
-})
-
function closeComments() {
bus.emit(EVENT_KEY.CLOSE_COMMENTS)
}
diff --git a/src/utils/bus.js b/src/utils/bus.js
index 519d326..70bf1df 100644
--- a/src/utils/bus.js
+++ b/src/utils/bus.js
@@ -57,4 +57,7 @@ export const EVENT_KEY = {
ITEM_TOGGLE: 'ITEM_TOGGLE',
ITEM_PLAY: 'ITEM_PLAY',
ITEM_STOP: 'ITEM_STOP',
+ NAV: 'NAV',
+ GO_USERINFO: 'GO_USERINFO',
+ SHOW_SHARE: 'SHOW_SHARE',
}
diff --git a/src/utils/hooks/useSlideListItemRender.jsx b/src/utils/hooks/useSlideListItemRender.jsx
new file mode 100644
index 0000000..e20c56b
--- /dev/null
+++ b/src/utils/hooks/useSlideListItemRender.jsx
@@ -0,0 +1,32 @@
+import SlideAlbum from "@/components/slide/SlideAlbum.vue";
+import SlideUser from "@/components/slide/SlideUser.vue";
+import BVideo from "@/components/slide/BVideo.vue";
+
+export function useSlideListItemRender(props) {
+ return function render(item, itemIndex, play, position) {
+ // console.log('item', item)
+ let node
+ if (item.type === 'img') {
+ node =

+ }
+ if (item.type === 'imgs') {
+ node =
+ }
+ if (item.type === 'user') {
+ node =
+ }
+ if (item.type === 'send-video') {
+ node =
+ }
+ // onGoUserInfo={() => cb('onGoUserInfo')}
+ if (item.type === 'recommend-video') {
+ node =
+ }
+ return node
+ }
+}
\ No newline at end of file
diff --git a/src/utils/mixin.js b/src/utils/mixin.js
index 1bb2881..6c6d212 100644
--- a/src/utils/mixin.js
+++ b/src/utils/mixin.js
@@ -151,8 +151,8 @@ export default {
dbClickTimer = setTimeout(() => isDbClick = false, dbCheckCancelTime);
} else {
clickTimer = setTimeout(() => {
- console.log('单击')
- bus.emit(EVENT_KEY.SINGLE_CLICK)
+ console.log('单击', binding.value)
+ bus.emit(EVENT_KEY.SINGLE_CLICK, binding.value)
}, checkTime);
}
lastClickTime = nowTime;