canvasShowPage.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <div class="layout hom-layout">
  3. <div v-for="(item, index) in componentsData" :key="index" class="list-group-item">
  4. <!-- {{ item.type }} -->
  5. <!-- <component :is="componentMap[terminal-1].get(item.type)" :componentContent="item.componentContent" :terminal="terminal" :typeId="typeId" :shopId="shopId"></component> -->
  6. <ComBanner
  7. v-if="item.type === 'banner'" :component-content="item.componentContent" :terminal="terminal"
  8. :type-id="typeId" :shop-id="shopId"
  9. ></ComBanner>
  10. <ComText
  11. v-if="item.type === 'text'" :component-content="item.componentContent" :terminal="terminal"
  12. :type-id="typeId" :shop-id="shopId"
  13. ></ComText>
  14. <ComImageText
  15. v-if="item.type === 'imageText'" :component-content="item.componentContent" :terminal="terminal"
  16. :type-id="typeId" :shop-id="shopId"
  17. ></ComImageText>
  18. <ComBrandList
  19. v-if="item.type === 'brandList'" :component-content="item.componentContent" :terminal="terminal"
  20. :type-id="typeId" :shop-id="shopId"
  21. ></ComBrandList>
  22. <ComCategoryList
  23. v-if="item.type === 'categoryList'" :component-content="item.componentContent" :terminal="terminal"
  24. :type-id="typeId" :shop-id="shopId"
  25. ></ComCategoryList>
  26. <ComImageTextList
  27. v-if="item.type === 'imageTextList'" :component-content="item.componentContent"
  28. :terminal="terminal" :type-id="typeId" :shop-id="shopId"
  29. ></ComImageTextList>
  30. <ComAssistDiv
  31. v-if="item.type === 'assistDiv'" :component-content="item.componentContent" :terminal="terminal"
  32. :type-id="typeId" :shop-id="shopId"
  33. ></ComAssistDiv>
  34. <ComImageTextNav
  35. v-if="item.type === 'imageTextNav'" :component-content="item.componentContent" :terminal="terminal"
  36. :type-id="typeId" :shop-id="shopId"
  37. ></ComImageTextNav>
  38. <ComProduct
  39. v-if="item.type === 'productList'" ref="productPage" :component-content="item.componentContent"
  40. :terminal="terminal" :type-id="typeId" :shop-id="shopId"
  41. ></ComProduct>
  42. <ComVideoBox
  43. v-if="item.type === 'videoBox'" :component-content="item.componentContent" :terminal="terminal"
  44. :type-id="typeId" :shop-id="shopId"
  45. ></ComVideoBox>
  46. <ComCoupon
  47. v-if="item.type === 'coupon'" :component-content="item.componentContent" :terminal="terminal"
  48. :type-id="typeId" :shop-id="shopId"
  49. ></ComCoupon>
  50. <ComCustom
  51. v-if="item.type === 'custom'" :component-content="item.componentContent" :terminal="terminal"
  52. :type-id="typeId" :shop-id="shopId"
  53. ></ComCustom>
  54. <ComNotice
  55. v-if="item.type === 'notice'" :component-content="item.componentContent" :terminal="terminal"
  56. :type-id="typeId" :shop-id="shopId"
  57. ></ComNotice>
  58. <ComVip
  59. v-if="item.type === 'vip'" :component-content="item.componentContent" :terminal="terminal" :type-id="typeId"
  60. :shop-id="shopId"
  61. ></ComVip>
  62. <ComGroup
  63. v-if="item.type === 'groupList'" :component-content="item.componentContent" :terminal="terminal"
  64. :type-id="typeId" :shop-id="shopId"
  65. ></ComGroup>
  66. <ComDiscount
  67. v-if="item.type === 'discountList'" :component-content="item.componentContent" :terminal="terminal"
  68. :type-id="typeId" :shop-id="shopId"
  69. ></ComDiscount>
  70. <ComSpike
  71. v-if="item.type === 'spikeList'" :component-content="item.componentContent" :terminal="terminal"
  72. :type-id="typeId" :shop-id="shopId"
  73. ></ComSpike>
  74. <ComPrice
  75. v-if="item.type === 'priceList'" :component-content="item.componentContent" :terminal="terminal"
  76. :type-id="typeId" :shop-id="shopId"
  77. ></ComPrice>
  78. <ComNewProduct
  79. v-if="item.type === 'newProduct'" :component-content="item.componentContent" :terminal="terminal"
  80. :type-id="typeId" :shop-id="shopId"
  81. ></ComNewProduct>
  82. <ComShop
  83. v-if="item.type === 'shop'" :component-content="item.componentContent" :terminal="terminal"
  84. :type-id="typeId" :shop-id="shopId"
  85. ></ComShop>
  86. <ComLive
  87. v-if="item.type === 'live'" :component-content="item.componentContent" :terminal="terminal"
  88. :type-id="typeId" :shop-id="shopId"
  89. ></ComLive>
  90. </div>
  91. </div>
  92. </template>
  93. <script>
  94. // import comComponentMap from './componentMap'
  95. import comBanner from '@/components/canvasShow/basics/banner'
  96. import comText from '@/components/canvasShow/basics/text'
  97. import comImageText from '@/components/canvasShow/basics/imageText'
  98. import comBrandList from '@/components/canvasShow/basics/brandList'
  99. import comCategoryList from '@/components/canvasShow/basics/categoryList'
  100. import comImageTextList from '@/components/canvasShow/basics/imageTextList'
  101. import comAssistDiv from '@/components/canvasShow/basics/assistDiv'
  102. import comImageTextNav from '@/components/canvasShow/basics/imageTextNav'
  103. import comProduct from '@/components/canvasShow/basics/product/app/index'
  104. import comVideoBox from '@/components/canvasShow/basics/video'
  105. import comCoupon from '@/components/canvasShow/basics/coupon/app'
  106. import comCustom from '@/components/canvasShow/basics/custom'
  107. import comNotice from '@/components/canvasShow/basics/notice'
  108. import comVip from '@/components/canvasShow/basics/vip/app'
  109. import comGroup from '@/components/canvasShow/basics/group/app/index'
  110. import comDiscount from '@/components/canvasShow/basics/discount/app'
  111. import comSpike from '@/components/canvasShow/basics/spike/app'
  112. import comPrice from '@/components/canvasShow/basics/price/app'
  113. import comNewProduct from '@/components/canvasShow/basics/newProduct/app'
  114. import comShop from '@/components/canvasShow/basics/shop'
  115. import comLive from '@/components/canvasShow/basics/live/app'
  116. import { sendReqMixin } from './config/mixin'
  117. export default {
  118. name: 'CanvasPage',
  119. components: {
  120. ComBanner: comBanner,
  121. ComText: comText,
  122. ComImageText: comImageText,
  123. ComBrandList: comBrandList,
  124. ComCategoryList: comCategoryList,
  125. ComImageTextList: comImageTextList,
  126. ComAssistDiv: comAssistDiv,
  127. ComImageTextNav: comImageTextNav,
  128. ComProduct: comProduct,
  129. ComVideoBox: comVideoBox,
  130. ComCoupon: comCoupon,
  131. ComCustom: comCustom,
  132. ComGroup: comGroup,
  133. ComDiscount: comDiscount,
  134. ComSpike: comSpike,
  135. ComPrice: comPrice,
  136. ComNotice: comNotice,
  137. ComVip: comVip,
  138. ComNewProduct: comNewProduct,
  139. ComShop: comShop,
  140. ComLive: comLive
  141. },
  142. mixins: [ sendReqMixin ],
  143. props: {
  144. terminal: {
  145. type: Number,
  146. default: 4
  147. },
  148. typeId: {
  149. type: Number,
  150. default: 1
  151. },
  152. shopId: {
  153. type: Number,
  154. default: 0
  155. },
  156. componentsData: {
  157. type: Array,
  158. default: () => []
  159. }
  160. },
  161. data() {
  162. return {
  163. // terminal: 4, // 画布设备 1 小程序,2 H5,3 App 4 电脑
  164. // typeId: 3, // 画布类型 1 平台画布,2 自定义页面,3 商家店铺装修
  165. // shopId: 0, // 店铺id
  166. // componentsData: [],
  167. // componentMap: componentMap
  168. }
  169. },
  170. methods: {
  171. }
  172. }
  173. </script>
  174. <style lang="scss"
  175. scoped
  176. >
  177. .hom-layout {
  178. background-color: #ffffff;
  179. width: 100%;
  180. overflow: hidden;
  181. }
  182. </style>
  183. <style lang="scss">
  184. .warp {
  185. width: 710upx;
  186. margin: 0 auto;
  187. max-width: 100%;
  188. &.terminal4 {
  189. width: 1200px;
  190. max-width: 100%;
  191. }
  192. }
  193. .flex-box {
  194. display: flex;
  195. }
  196. </style>