全栈小学生 3fe60374bc up
2025-04-19 10:41:41 +08:00

93 lines
2.0 KiB
Vue

<template>
<view :style="themeColor()">
<loading-page :loading="diy.getLoading()"></loading-page>
<view v-show="!diy.getLoading()">
<!-- 自定义模板渲染 -->
<view class="diy-template-wrap bg-index" :style="diy.pageStyle()">
<diy-group ref="diyGroupRef" :data="diy.data" />
</view>
</view>
<!-- #ifdef MP-WEIXIN -->
<!-- 小程序隐私协议 -->
<wx-privacy-popup ref="wxPrivacyPopupRef"></wx-privacy-popup>
<!-- #endif -->
</view>
</template>
<script setup lang="ts">
import { ref, nextTick } from 'vue';
import { useDiy } from '@/hooks/useDiy'
import { redirect } from '@/utils/common';
import { useShare } from '@/hooks/useShare'
import diyGroup from '@/addon/components/diy/group/index.vue'
const { setShare } = useShare()
uni.hideTabBar() // 隐藏tabbar
const diy = useDiy({
name: 'DIY_INDEX'
})
const diyGroupRef = ref(null)
const wxPrivacyPopupRef: any = ref(null)
// 监听页面加载
diy.onLoad();
// 监听页面显示
diy.onShow((data: any) => {
if (data.value) {
// uni.setNavigationBarTitle({
// title: diyData.title
// })
} else if (data.page) {
// 跳转到设置的启动页
redirect({ url: data.page, mode: 'reLaunch' })
}
let share = data.share ? JSON.parse(data.share) : null;
setShare(share);
diyGroupRef.value?.refresh();
// #ifdef MP
nextTick(() => {
if (wxPrivacyPopupRef.value) wxPrivacyPopupRef.value.proactive();
})
// #endif
});
// 监听页面隐藏
diy.onHide();
// 监听页面卸载
diy.onUnload();
// 监听滚动事件
diy.onPageScroll()
</script>
<style lang="scss" scoped>
@import '@/styles/diy.scss';
</style>
<style lang="scss">
.diy-template-wrap {
/* #ifdef MP */
.child-diy-template-wrap {
::v-deep .diy-group {
> .draggable-element.top-fixed-diy {
display: block !important;
}
}
}
/* #endif */
}
</style>