vr-shopxo-uniapp/components/diy/diy.vue

139 lines
6.6 KiB
Vue

<template>
<view class="ht-auto min-ht">
<componentDiyHeader></componentDiyHeader>
<view v-if="value.diy_data.length > 0" :style="diy_content_style">
<componentDiyTabs v-if="is_tabs" :value="tabs_data"></componentDiyTabs>
<view v-if="is_tabs_type">
<view v-for="(item, index) in value.diy_data" :key="index">
<!-- -->
<componentDiySearch v-if="item.key == 'search'" :value="item.com_data"></componentDiySearch>
<componentCarousel v-else-if="item.key == 'carousel'" :value="item.com_data"></componentCarousel>
<componentNavGroup v-else-if="item.key == 'nav-group'" :value="item.com_data"></componentNavGroup>
<componentDiyUserInfo v-else-if="item.key == 'user-info'" :value="item.com_data"></componentDiyUserInfo>
<componentDiyNotice v-else-if="item.key == 'notice'" :value="item.com_data"></componentDiyNotice>
<componentDiyVideo v-else-if="item.key == 'video'" :value="item.com_data"></componentDiyVideo>
<componentDiyArticleList v-else-if="item.key == 'article-list'" :value="item.com_data"></componentDiyArticleList>
<componentDiyArticleTabs v-else-if="item.key == 'article-tabs'" :value="item.com_data"></componentDiyArticleTabs>
<componentGoodsTabs v-else-if="item.key == 'goods-tabs'" :value="item.com_data"></componentGoodsTabs>
<componentGoodsList v-else-if="item.key == 'goods-list'" :value="item.com_data"></componentGoodsList>
<componentDiyImgMagic v-else-if="item.key == 'img-magic'" :value="item.com_data"></componentDiyImgMagic>
<componentDiyHotZone v-else-if="item.key == 'hot-zone'" :value="item.com_data"></componentDiyHotZone>
<!-- 插件 -->
<componentDiyCoupon v-else-if="item.key == 'coupon'" :value="item.com_data"></componentDiyCoupon>
<!-- 工具组件 -->
<componentFloatWindow v-else-if="item.key == 'float-window'" :value="item.com_data"></componentFloatWindow>
<componentTextTitle v-else-if="item.key == 'text-title'" :value="item.com_data"></componentTextTitle>
<componentDiyAuxiliaryLine v-else-if="item.key == 'row-line'" :value="item.com_data"></componentDiyAuxiliaryLine>
<componentDiyRichText v-else-if="item.key == 'rich-text'" :value="item.com_data"></componentDiyRichText>
<componentAuxiliaryBlank v-else-if="item.key == 'auxiliary-blank'" :value="item.com_data"></componentAuxiliaryBlank>
</view>
</view>
<view v-else>
<!-- goods九宫格数据 -->
</view>
</view>
<componentDiyFooter :value="value.footer.com_data" @footer-height="footer_height_computer"></componentDiyFooter>
</view>
</template>
<script>
// 基础组件
import componentDiyHeader from '@/components/diy/header';
import componentDiyFooter from '@/components/diy/footer';
import componentDiyTabs from '@/components/diy/tabs';
import componentDiySearch from '@/components/diy/search';
import componentCarousel from '@/components/diy/carousel.vue';
import componentNavGroup from '@/components/diy/nav-group.vue';
import componentDiyUserInfo from '@/components/diy/user-info';
import componentDiyNotice from '@/components/diy/notice';
import componentDiyVideo from '@/components/diy/video';
import componentDiyArticleList from '@/components/diy/article-list';
import componentDiyArticleTabs from '@/components/diy/article-tabs';
import componentGoodsTabs from '@/components/diy/goods-tabs.vue';
import componentGoodsList from '@/components/diy/goods-list.vue';
import componentDiyImgMagic from '@/components/diy/img-magic';
import componentDiyHotZone from '@/components/diy/hot-zone';
// 插件
import componentDiyCoupon from '@/components/diy/coupon';
// 工具组件
import componentFloatWindow from '@/components/diy/float-window';
import componentTextTitle from '@/components/diy/text-title';
import componentDiyAuxiliaryLine from '@/components/diy/auxiliary-line';
import componentDiyRichText from '@/components/diy/rich-text.vue';
import componentAuxiliaryBlank from '@/components/diy/auxiliary-blank.vue';
import { onMounted } from 'vue';
export default {
name: 'diy',
props: {
value: {
type: Object,
default: () => ({}),
},
},
components: {
// 基础组件
componentDiyHeader,
componentDiyFooter,
componentDiyTabs,
componentDiySearch,
componentCarousel,
componentNavGroup,
componentDiyUserInfo,
componentDiyNotice,
componentDiyVideo,
componentDiyArticleList,
componentDiyArticleTabs,
componentGoodsTabs,
componentGoodsList,
componentDiyImgMagic,
componentDiyHotZone,
// 插件
componentDiyCoupon,
// 工具组件
componentFloatWindow,
componentTextTitle,
componentDiyAuxiliaryLine,
componentDiyRichText,
componentAuxiliaryBlank,
},
data() {
return {
// 底部菜单导航高度计算
padding_footer_computer: 140,
// 是否有选项卡
is_tabs: false,
// 选项卡数据
tabs_data: {},
// 是否是模块数据或者是九宫格商品分类样式数据, 默认模块数据
is_tabs_type: true,
};
},
computed: {
diy_content_style() {
return `padding-bottom:${this.padding_footer_computer}rpx`;
},
},
mounted() {
this.init();
},
methods: {
init() {
// tabs选项卡数据过滤
const filter_tabs_list = this.value.diy_data.filter((item) => item.key == 'tabs');
if (filter_tabs_list > 0) {
this.setData({
tabs_data: filter_tabs_list[0].com_data,
is_tabs: true,
});
}
},
footer_height_computer(number) {
this.padding_footer_computer = number * 2;
},
},
};
</script>
<style></style>