chore(组件): 由于easycom会自动注册components和uni_modules 目录下的组件,所以去除引用部分

This commit is contained in:
2026-01-05 15:27:34 +08:00
parent be51b30fb4
commit 8ef6975ee1
18 changed files with 321 additions and 227 deletions

View File

@@ -1,14 +1,261 @@
<template>
<view data-component-name="diy-group" class="diy-group">
<view v-for="(item, index) in diyDataArray" :key="index" :style="item.pageStyle">
<!-- 动态组件加载 -->
<component
:is="getComponent(item.componentName)"
v-if="shouldShowComponent(item)"
:value="item"
v-bind="getComponentProps(item)"
></component>
<view v-if="addonIsExist.store && item.componentName == 'StoreShow'">
<!-- 门店展示 -->
<diy-store :value="item"></diy-store>
</view>
<template v-if="item.componentName == 'Kefu'">
<!-- 客服按钮 -->
<diy-kefu :value="item"></diy-kefu>
</template>
<template v-if="item.componentName == 'Form'">
<!-- 表单组件 -->
<diy-form :value="item"></diy-form>
</template>
<template v-if="addonIsExist.store && item.componentName == 'StoreLabel'">
<!-- 门店标签 -->
<diy-store-label :value="item"></diy-store-label>
</template>
<template v-if="item.componentName == 'Picture'">
<!-- 单图组组件 -->
<diy-picture :value="item"></diy-picture>
</template>
<template v-if="item.componentName == 'Listmenu'">
<!-- 列表按钮组件 -->
<diy-listmenu :value="item"></diy-listmenu>
</template>
<template v-if="item.componentName == 'Text'">
<!-- 文本 -->
<diy-text :value="item"></diy-text>
</template>
<template v-if="item.componentName == 'Notice'">
<!-- 公告 -->
<diy-notice :value="item"></diy-notice>
</template>
<template v-if="item.componentName == 'GraphicNav'">
<!-- 图文导航 -->
<diy-graphic-nav :value="item"></diy-graphic-nav>
</template>
<template v-if="item.componentName == 'ImageAds'">
<!-- 图片广告 -->
<diy-img-ads :value="item"></diy-img-ads>
</template>
<template v-if="item.componentName == 'Search'">
<!-- 搜索 -->
<diy-search :value="item" :topNavColor="topNavColor" :global="diyGlobalData.global"
:haveTopCategory="haveTopCategory" :followOfficialAccount="followOfficialAccount"></diy-search>
</template>
<template v-if="item.componentName == 'RichText'">
<!-- 富文本 -->
<diy-rich-text :value="item"></diy-rich-text>
</template>
<template v-if="item.componentName == 'HorzLine'">
<!-- 辅助线 -->
<diy-horz-line :value="item"></diy-horz-line>
</template>
<template v-if="item.componentName == 'HorzBlank'">
<!-- 辅助空白 -->
<diy-horz-blank :value="item"></diy-horz-blank>
</template>
<template v-if="item.componentName == 'Coupon' && addonIsExist.coupon">
<!-- 优惠券 -->
<diy-coupon :value="item"></diy-coupon>
</template>
<template v-if="item.componentName == 'GoodsList'">
<!-- 商品列表 -->
<diy-goods-list :value="item"></diy-goods-list>
</template>
<template v-if="item.componentName == 'ManyGoodsList'">
<!-- 多商品组 -->
<diy-many-goods-list :value="item" :global="diyGlobalData.global"
:scrollTop="scrollTop"></diy-many-goods-list>
</template>
<template v-if="item.componentName == 'RubikCube'">
<!-- 魔方橱窗 -->
<diy-rubik-cube :value="item"></diy-rubik-cube>
</template>
<template v-if="item.componentName == 'Video'">
<!-- 视频 -->
<diy-video :value="item"></diy-video>
</template>
<template v-if="item.componentName == 'Seckill' && addonIsExist.seckill">
<!-- 秒杀 -->
<diy-seckill :value="item"></diy-seckill>
</template>
<template v-if="item.componentName == 'Pintuan' && addonIsExist.pintuan">
<!-- 拼团 -->
<diy-pintuan :value="item"></diy-pintuan>
</template>
<template v-if="item.componentName == 'Groupbuy' && addonIsExist.groupbuy">
<!-- 团购 -->
<diy-groupbuy :value="item"></diy-groupbuy>
</template>
<!-- 拼团返利 -->
<template v-if="item.componentName == 'Pinfan' && addonIsExist.pinfan">
<diy-pinfan :value="item"></diy-pinfan>
</template>
<template v-if="item.componentName == 'Bargain' && addonIsExist.bargain">
<!-- 砍价 -->
<diy-bargain :value="item"></diy-bargain>
</template>
<template v-if="item.componentName == 'Presale' && addonIsExist.bargain">
<!-- 预售 -->
<diy-presale :value="item"></diy-presale>
</template>
<template v-if="item.componentName == 'Notes' && addonIsExist.notes">
<!-- 店铺笔记 -->
<diy-notes :value="item"></diy-notes>
</template>
<template v-if="item.componentName == 'FloatBtn'">
<!-- 浮动按钮 -->
<diy-float-btn :value="item"></diy-float-btn>
</template>
<template v-if="item.componentName == 'LiveInfo'">
<!-- 小程序直播 -->
<!-- #ifdef MP-WEIXIN -->
<diy-live :value="item"></diy-live>
<!-- #endif -->
</template>
<template v-if="item.componentName == 'FenxiaoGoodsList'">
<!-- 分销商品 -->
<diy-fenxiao-goods-list :value="item"></diy-fenxiao-goods-list>
</template>
<template v-if="item.componentName == 'GoodsRecommend'">
<!-- 商品推荐 -->
<diy-goods-recommend :value="item"></diy-goods-recommend>
</template>
<template v-if="item.componentName == 'GoodsBrand'">
<!-- 商品品牌 -->
<diy-goods-brand :value="item"></diy-goods-brand>
</template>
<template v-if="item.componentName == 'Article'">
<!-- 文章 -->
<diy-article :value="item"></diy-article>
</template>
<template v-if="item.componentName == 'MerchList'">
<!-- 商户列表 -->
<diy-merch-list :value="item"></diy-merch-list>
</template>
<template v-if="item.componentName == 'MemberInfo'">
<!-- 自定义会员中心会员信息 -->
<diy-member-info ref="diyMemberIndex" :value="item" :global="diyGlobalData.global"></diy-member-info>
</template>
<template v-if="item.componentName == 'MemberMyOrder'">
<!-- 自定义会员中心我的订单 -->
<diy-member-my-order ref="diyMemberMyOrder" :value="item"></diy-member-my-order>
</template>
<template v-if="item.componentName == 'QuickNav'">
<!-- 快捷导航 -->
<diy-quick-nav :value="item"></diy-quick-nav>
</template>
<template v-if="item.componentName == 'PaymentQrcode'">
<!-- 付款码 -->
<diy-payment-qrcode :value="item"></diy-payment-qrcode>
</template>
<template v-if="item.componentName == 'HotArea'">
<!-- 热区 -->
<diy-hot-area :value="item"></diy-hot-area>
</template>
<template v-if="item.componentName == 'FollowOfficialAccount'">
<!-- 关注公众号 -->
<diy-follow-official-account :value="item"></diy-follow-official-account>
</template>
<template v-if="item.componentName == 'Map'">
<!-- 地图组件 -->
<diy-map :value="item"></diy-map>
</template>
<template v-if="item.componentName == 'Audio'">
<!-- 音频 -->
<diy-audio :value="item"></diy-audio>
</template>
<template v-if="item.componentName == 'ImageNav'">
<!-- 图片导航 -->
<diy-image-nav :value="item"></diy-image-nav>
</template>
<template v-if="item.componentName == 'Digit'">
<!-- 数字 -->
<diy-digit :value="item"></diy-digit>
</template>
<template v-if="item.componentName == 'VideoList'">
<!-- 视频列表 -->
<diy-video-list :value="item"></diy-video-list>
</template>
<template v-if="item.componentName == 'BottomNav'">
<!-- 底部导航 -->
<diy-bottom-nav :value="item"></diy-bottom-nav>
</template>
<template v-if="item.componentName == 'CategoryItem'">
<!-- 分类项 -->
<diy-category-item :value="item"></diy-category-item>
</template>
<template v-if="item.componentName == 'Category'">
<!-- 分类 -->
<diy-category :value="item"></diy-category>
</template>
<template v-if="item.componentName == 'Icon'">
<!-- 图标 -->
<diy-icon :value="item"></diy-icon>
</template>
<template v-if="item.componentName == 'Group'">
<!-- 组件组 -->
<diy-group :diyData="item"></diy-group>
</template>
<!-- 自定义扩展组件 -->
<diy-comp-extend :value="item"></diy-comp-extend>
</view>
@@ -18,14 +265,9 @@
<script>
// 组件组展示
import DiyMinx from './minx.js'
import diyCompExtend from './diy-comp-extend.vue'
export default {
name: 'DiyGroup',
mixins: [DiyMinx],
components: {
diyCompExtend
},
props: {
diyData: {
type: Object,
@@ -44,61 +286,10 @@ export default {
default: () => ({})
},
},
mixins: [DiyMinx],
data() {
return {
diyGlobalData: null,
// 动态组件映射
componentMap: {
StoreShow: () => import('./diy-store.vue'),
Kefu: () => import('./diy-kefu.vue'),
Form: () => import('./diy-form.vue'),
StoreLabel: () => import('./diy-store-label.vue'),
Picture: () => import('./diy-picture.vue'),
Listmenu: () => import('./diy-listmenu.vue'),
Text: () => import('./diy-text.vue'),
Notice: () => import('./diy-notice.vue'),
GraphicNav: () => import('./diy-graphic-nav.vue'),
ImageAds: () => import('./diy-img-ads.vue'),
Search: () => import('./diy-search.vue'),
RichText: () => import('./diy-rich-text.vue'),
HorzLine: () => import('./diy-horz-line.vue'),
HorzBlank: () => import('./diy-horz-blank.vue'),
Coupon: () => import('./diy-coupon.vue'),
GoodsList: () => import('./diy-goods-list.vue'),
ManyGoodsList: () => import('./diy-many-goods-list.vue'),
RubikCube: () => import('./diy-rubik-cube.vue'),
Video: () => import('./diy-video.vue'),
Seckill: () => import('./diy-seckill.vue'),
Pintuan: () => import('./diy-pintuan.vue'),
Groupbuy: () => import('./diy-groupbuy.vue'),
Pinfan: () => import('./diy-pinfan.vue'),
Bargain: () => import('./diy-bargain.vue'),
Presale: () => import('./diy-presale.vue'),
Notes: () => import('./diy-notes.vue'),
FloatBtn: () => import('./diy-float-btn.vue'),
LiveInfo: () => import('./diy-live.vue'),
FenxiaoGoodsList: () => import('./diy-fenxiao-goods-list.vue'),
GoodsRecommend: () => import('./diy-goods-recommend.vue'),
GoodsBrand: () => import('./diy-goods-brand.vue'),
Article: () => import('./diy-article.vue'),
MerchList: () => import('./diy-merch-list.vue'),
MemberInfo: () => import('./diy-member-info.vue'),
MemberMyOrder: () => import('./diy-member-my-order.vue'),
QuickNav: () => import('./diy-quick-nav.vue'),
PaymentQrcode: () => import('./diy-payment-qrcode.vue'),
HotArea: () => import('./diy-hot-area.vue'),
FollowOfficialAccount: () => import('./diy-follow-official-account.vue'),
Map: () => import('./diy-map.vue'),
Audio: () => import('./diy-audio.vue'),
ImageNav: () => import('./diy-image-nav.vue'),
Digit: () => import('./diy-digit.vue'),
VideoList: () => import('./diy-video-list.vue'),
BottomNav: () => import('./diy-bottom-nav.vue'),
CategoryItem: () => import('./diy-category-item.vue'),
Category: () => import('./diy-category.vue'),
Icon: () => import('./diy-icon.vue'),
Group: () => import('./diy-group.vue')
}
diyGlobalData: null
};
},
created() {
@@ -180,75 +371,7 @@ export default {
return data;
}
},
methods: {
// 获取组件
getComponent(componentName) {
return this.componentMap[componentName] || null;
},
// 判断组件是否应该显示
shouldShowComponent(item) {
// 检查是否有对应的组件映射
if (!this.componentMap[item.componentName]) {
return false;
}
// 根据组件名称和附加组件状态进行判断
const addonChecks = {
StoreShow: 'store',
StoreLabel: 'store',
Coupon: 'coupon',
Seckill: 'seckill',
Pintuan: 'pintuan',
Groupbuy: 'groupbuy',
Pinfan: 'pinfan',
Bargain: 'bargain',
Presale: 'bargain',
Notes: 'notes'
};
const addonName = addonChecks[item.componentName];
if (addonName) {
return this.addonIsExist[addonName];
}
// 小程序直播组件特殊处理
if (item.componentName === 'LiveInfo') {
// #ifdef MP-WEIXIN
return true;
// #endif
// #ifndef MP-WEIXIN
return false;
// #endif
}
return true;
},
// 获取组件属性
getComponentProps(item) {
const props = {};
// 为特定组件添加额外属性
switch (item.componentName) {
case 'Search':
props.topNavColor = this.topNavColor;
props.global = this.diyGlobalData.global;
props.haveTopCategory = this.haveTopCategory;
props.followOfficialAccount = this.followOfficialAccount;
break;
case 'ManyGoodsList':
props.global = this.diyGlobalData.global;
props.scrollTop = this.scrollTop;
break;
case 'MemberInfo':
props.global = this.diyGlobalData.global;
break;
}
return props;
}
}
methods: {}
};
</script>