index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!-- 店铺首页,支持店铺装修 -->
  2. <template>
  3. <view v-if="template">
  4. <s-layout title="xxx店" navbar="normal" tabbar="/pages/index/index" :bgStyle="template.page"
  5. :navbarStyle="template.style?.navbar" onShareAppMessage >
  6. <s-block v-for="(item, index) in template.components" :key="index" :styles="item.property.style">
  7. <s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
  8. </s-block>
  9. </s-layout>
  10. </view>
  11. </template>
  12. <script setup>
  13. import {
  14. computed
  15. } from 'vue';
  16. import {
  17. onLoad,
  18. onPageScroll,
  19. onPullDownRefresh
  20. } from '@dcloudio/uni-app';
  21. import sheep from '@/sheep';
  22. import $share from '@/sheep/platform/share';
  23. // 隐藏原生tabBar
  24. uni.hideTabBar();
  25. const template = {
  26. "page": {
  27. "description": "",
  28. "backgroundColor": "#f5f5f5",
  29. "backgroundImage": ""
  30. },
  31. "navigationBar": {
  32. "title": "页面标题",
  33. "description": "",
  34. "navBarHeight": 35,
  35. "backgroundColor": "#fff",
  36. "backgroundImage": "",
  37. "styleType": "default",
  38. "alwaysShow": true,
  39. "showGoBack": true
  40. },
  41. "components": [{
  42. "id": "SearchBar",
  43. "property": {
  44. "height": 28,
  45. "showScan": false,
  46. "borderRadius": 0,
  47. "placeholder": "搜索商品",
  48. "placeholderPosition": "left",
  49. "backgroundColor": "rgb(238, 238, 238)",
  50. "textColor": "rgb(150, 151, 153)",
  51. "hotKeywords": [],
  52. "style": {
  53. "bgType": "color",
  54. "bgColor": "#fff",
  55. "marginBottom": 8,
  56. "paddingTop": 8,
  57. "paddingRight": 8,
  58. "paddingBottom": 8,
  59. "paddingLeft": 8
  60. }
  61. }
  62. }, {
  63. "id": "UserCard",
  64. "property": {
  65. "style": {
  66. "bgType": "color",
  67. "bgColor": "",
  68. "marginBottom": 8
  69. }
  70. }
  71. }]
  72. }
  73. // 在此处拦截改变一下首页轮播图 此处先写死后期复活 放到启动函数里
  74. // (async function() {
  75. // console.log('原代码首页定制化数据',template)
  76. // let {
  77. // data
  78. // } = await index2Api.decorate();
  79. // console.log('首页导航配置化过高无法兼容',JSON.parse(data[1].value))
  80. // 改变首页底部数据 但是没有通过数组id获取商品数据接口
  81. // let {
  82. // data: datas
  83. // } = await index2Api.spids();
  84. // template.value.data[9].data.goodsIds = datas.list.map(item => item.id);
  85. // template.value.data[0].data.list = JSON.parse(data[0].value).map(item => {
  86. // return {
  87. // src: item.picUrl,
  88. // url: item.url,
  89. // title: item.name,
  90. // type: "image"
  91. // }
  92. // })
  93. // }())
  94. onLoad((options) => {
  95. // #ifdef MP
  96. // 小程序识别二维码
  97. if (options.scene) {
  98. const sceneParams = decodeURIComponent(options.scene).split('=');
  99. options[sceneParams[0]] = sceneParams[1];
  100. }
  101. // #endif
  102. // 预览模板
  103. if (options.templateId) {
  104. sheep.$store('app').init(options.templateId);
  105. }
  106. // 解析分享信息
  107. if (options.spm) {
  108. $share.decryptSpm(options.spm);
  109. }
  110. // 进入指定页面(完整页面路径)
  111. if (options.page) {
  112. sheep.$router.go(decodeURIComponent(options.page));
  113. }
  114. });
  115. onPageScroll(() => {});
  116. </script>
  117. <style></style>