canvasShowPage.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <div class="layout hom-layout">
  3. <div class="list-group-item"
  4. v-for="(item,index) in componentsData"
  5. :key="index">
  6. <!-- <component :is="componentMap[terminal-1].get(item.type)" :componentContent="item.componentContent" :terminal="terminal" :typeId="typeId" :shopId="shopId"></component>-->
  7. <com-banner v-if="item.type==='banner'"
  8. :componentContent="item.componentContent"
  9. :terminal="terminal"
  10. :typeId="typeId"
  11. :shopId="shopId"></com-banner>
  12. <com-text v-if="item.type==='text'"
  13. :componentContent="item.componentContent"
  14. :terminal="terminal"
  15. :typeId="typeId"
  16. :shopId="shopId"></com-text>
  17. <com-image-text v-if="item.type==='imageText'"
  18. :componentContent="item.componentContent"
  19. :terminal="terminal"
  20. :typeId="typeId"
  21. :shopId="shopId"></com-image-text>
  22. <com-brand-list v-if="item.type==='brandList'"
  23. :componentContent="item.componentContent"
  24. :terminal="terminal"
  25. :typeId="typeId"
  26. :shopId="shopId"></com-brand-list>
  27. <com-category-list v-if="item.type==='categoryList'"
  28. :componentContent="item.componentContent"
  29. :terminal="terminal"
  30. :typeId="typeId"
  31. :shopId="shopId"></com-category-list>
  32. <com-image-text-list v-if="item.type==='imageTextList'"
  33. :componentContent="item.componentContent"
  34. :terminal="terminal"
  35. :typeId="typeId"
  36. :shopId="shopId"></com-image-text-list>
  37. <com-assist-div v-if="item.type==='assistDiv'"
  38. :componentContent="item.componentContent"
  39. :terminal="terminal"
  40. :typeId="typeId"
  41. :shopId="shopId"></com-assist-div>
  42. <com-image-text-nav v-if="item.type==='imageTextNav'"
  43. :componentContent="item.componentContent"
  44. :terminal="terminal"
  45. :typeId="typeId"
  46. :shopId="shopId"></com-image-text-nav>
  47. <com-product v-if="item.type==='productList'"
  48. :componentContent="item.componentContent"
  49. :terminal="terminal"
  50. :typeId="typeId"
  51. :shopId="shopId"></com-product>
  52. <com-video-box v-if="item.type==='videoBox'"
  53. :componentContent="item.componentContent"
  54. :terminal="terminal"
  55. :typeId="typeId"
  56. :shopId="shopId"></com-video-box>
  57. <com-coupon v-if="item.type==='coupon'"
  58. :componentContent="item.componentContent"
  59. :terminal="terminal"
  60. :typeId="typeId"
  61. :shopId="shopId"></com-coupon>
  62. <com-custom v-if="item.type==='custom'"
  63. :componentContent="item.componentContent"
  64. :terminal="terminal"
  65. :typeId="typeId"
  66. :shopId="shopId"></com-custom>
  67. <com-notice v-if="item.type==='notice'"
  68. :componentContent="item.componentContent"
  69. :terminal="terminal"
  70. :typeId="typeId"
  71. :shopId="shopId"></com-notice>
  72. <com-vip v-if="item.type==='vip'"
  73. :componentContent="item.componentContent"
  74. :terminal="terminal"
  75. :typeId="typeId"
  76. :shopId="shopId"></com-vip>
  77. <com-group v-if="item.type==='groupList'"
  78. :componentContent="item.componentContent"
  79. :terminal="terminal"
  80. :typeId="typeId"
  81. :shopId="shopId"></com-group>
  82. <com-discount v-if="item.type==='discountList'"
  83. :componentContent="item.componentContent"
  84. :terminal="terminal"
  85. :typeId="typeId"
  86. :shopId="shopId"></com-discount>
  87. <com-spike v-if="item.type==='spikeList'"
  88. :componentContent="item.componentContent"
  89. :terminal="terminal"
  90. :typeId="typeId"
  91. :shopId="shopId"></com-spike>
  92. <com-price v-if="item.type==='priceList'"
  93. :componentContent="item.componentContent"
  94. :terminal="terminal"
  95. :typeId="typeId"
  96. :shopId="shopId"></com-price>
  97. <com-new-product v-if="item.type==='newProduct'"
  98. :componentContent="item.componentContent"
  99. :terminal="terminal"
  100. :typeId="typeId"
  101. :shopId="shopId"></com-new-product>
  102. <com-shop v-if="item.type==='shop'"
  103. :componentContent="item.componentContent"
  104. :terminal="terminal"
  105. :typeId="typeId"
  106. :shopId="shopId"></com-shop>
  107. <com-live v-if="item.type==='live'"
  108. :componentContent="item.componentContent"
  109. :terminal="terminal"
  110. :typeId="typeId"
  111. :shopId="shopId"></com-live>
  112. </div>
  113. </div>
  114. </template>
  115. <script>
  116. // import comComponentMap from './componentMap'
  117. import comBanner from '@/components/canvasShow/basics/banner'
  118. import comText from '@/components/canvasShow/basics/text'
  119. import comImageText from '@/components/canvasShow/basics/imageText'
  120. import comBrandList from '@/components/canvasShow/basics/brandList'
  121. import comCategoryList from '@/components/canvasShow/basics/categoryList'
  122. import comImageTextList from '@/components/canvasShow/basics/imageTextList'
  123. import comAssistDiv from '@/components/canvasShow/basics/assistDiv'
  124. import comImageTextNav from '@/components/canvasShow/basics/imageTextNav'
  125. import comProduct from '@/components/canvasShow/basics/product/app/index'
  126. import comVideoBox from '@/components/canvasShow/basics/video'
  127. import comCoupon from '@/components/canvasShow/basics/coupon/app'
  128. import comCustom from '@/components/canvasShow/basics/custom'
  129. import comNotice from '@/components/canvasShow/basics/notice'
  130. import comVip from '@/components/canvasShow/basics/vip/app'
  131. import comGroup from '@/components/canvasShow/basics/group/app/index'
  132. import comDiscount from '@/components/canvasShow/basics/discount/app'
  133. import comSpike from '@/components/canvasShow/basics/spike/app'
  134. import comPrice from '@/components/canvasShow/basics/price/app'
  135. import comNewProduct from '@/components/canvasShow/basics/newProduct/app'
  136. import comShop from '@/components/canvasShow/basics/shop'
  137. import comLive from '@/components/canvasShow/basics/live/app'
  138. import api from './config/api'
  139. import {sendReqMixin} from './config/mixin'
  140. export default {
  141. name: 'canvasPage',
  142. mixins: [sendReqMixin],
  143. data() {
  144. return {
  145. // terminal: 4, // 画布设备 1 小程序,2 H5,3 App 4 电脑
  146. // typeId: 3, // 画布类型 1 平台画布,2 自定义页面,3 商家店铺装修
  147. // shopId: 0, // 店铺id
  148. componentsData: [],
  149. activeComponent: -1,
  150. // componentMap: componentMap
  151. }
  152. },
  153. components: {
  154. comBanner,
  155. comText,
  156. comImageText,
  157. comBrandList,
  158. comCategoryList,
  159. comImageTextList,
  160. comAssistDiv,
  161. comImageTextNav,
  162. comProduct,
  163. comVideoBox,
  164. comCoupon,
  165. comCustom,
  166. comGroup,
  167. comDiscount,
  168. comSpike,
  169. comPrice,
  170. comNotice,
  171. comVip,
  172. comNewProduct,
  173. comShop,
  174. comLive
  175. },
  176. props: {
  177. terminal: {
  178. type: Number,
  179. default: 4
  180. },
  181. typeId: {
  182. type: Number,
  183. default: 1
  184. },
  185. shopId: {
  186. type: Number,
  187. default: 0
  188. }
  189. },
  190. mounted() {
  191. // this.shopId = Cookies.get('cereShopId')
  192. this.canvasGet()
  193. },
  194. methods: {
  195. // 读取画布
  196. canvasGet() {
  197. var _this = this
  198. var apiUrl = api.getCanvas + '?terminal=' + this.terminal + '&type=' + this.typeId
  199. if (this.shopId) {
  200. apiUrl += '&shopId=' + this.shopId
  201. }
  202. let params = {
  203. url: apiUrl,
  204. method: 'GET'
  205. }
  206. this.sendReq(params, (res) => {
  207. if (JSON.stringify(res.data) !== '{}') {
  208. _this.canvasId = res.data.canvasId
  209. var componentsData = JSON.parse(res.data.json)
  210. _this.componentsData = componentsData
  211. } else {
  212. _this.canvasId = ''
  213. }
  214. // console.log(JSON.parse(res.data.json))
  215. })
  216. }
  217. }
  218. }
  219. </script>
  220. <style lang="scss"
  221. scoped>
  222. .hom-layout {
  223. background-color: #ffffff;
  224. width: 100%;
  225. overflow: hidden;
  226. }
  227. </style>
  228. <style lang="scss">
  229. .warp {
  230. width: 710upx;
  231. margin: 0 auto;
  232. max-width: 100%;
  233. &.terminal4 {
  234. width: 1200px;
  235. max-width: 100%;
  236. }
  237. }
  238. .flex-box {
  239. display: flex;
  240. }
  241. </style>