index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <view class="home">
  3. <capsule @getHeight="getCapusleHeight"></capsule>
  4. <view class="bg-box"></view>
  5. <view class="header-top" :style="{ height: menuButtonHeight + 'px' }">
  6. <view class="shop-title">{{ shopInfo.shopName }}</view>
  7. <view class="shop-state">
  8. <tui-icon style="height: 36rpx;" name="circle-fill" color="rgb(70,208,88)" :size="20"></tui-icon>
  9. <text>营业中</text>
  10. </view>
  11. </view>
  12. <view class="main" :style="{ height: mainHeight + 'px' }">
  13. <view class="main-tool">
  14. <view class="tool-list">
  15. <view class="tool-item" v-for="item in toolList" :key="item.title" @click="scanCode(item.url)">
  16. <view class="item-img" :style="{ background: item.background }">
  17. <image class="" :src="item.img" />
  18. </view>
  19. <view class="item-text">{{ item.title }}</view>
  20. </view>
  21. </view>
  22. <view class="tube-list">
  23. <view class="tube-item" v-for="item in tobeList" :key="item.title">
  24. <image :src="item.img" />
  25. <text>{{ item.title }}</text>
  26. </view>
  27. </view>
  28. </view>
  29. <view class="main-container"></view>
  30. </view>
  31. <!-- <view class="header-content"></view>
  32. <view class="main-tool">
  33. <view class="tool-list">
  34. <view class="tool-item" v-for="item in toolList" :key="item.title" @click="scanCode(item.url)">
  35. <image :src="item.img" alt="" />
  36. <text>{{ item.title }}</text>
  37. </view>
  38. </view>
  39. </view> -->
  40. <view class="summarize-box">
  41. <view class="summarize-left">经营概括</view>
  42. <view class="summarize-right">
  43. <text>更多</text>
  44. <tui-icon name="arrowright" :size="24"></tui-icon>
  45. </view>
  46. </view>
  47. <view class="statistics-list">
  48. <view class="statistics-item" v-for="(item, index) in statisticsList" :key="index">
  49. <view class="statistics-trans">{{ item.title }}</view>
  50. <view class="statistics-price">
  51. <view class="price">{{ item.price }}</view>
  52. <view class="text">较昨日</view>
  53. </view>
  54. <view class="proportion" v-if="item.state !== 2">
  55. <view class="proportion-box">
  56. <text :style="{ color: item.state == 0 ? '#42D373' : '#EF530E' }">{{ item.proportion }}%</text>
  57. <image
  58. :src="item.state == 0 ? require('@/static/image/home/decline-icon.png') : require('@/static/image/home/rise-icon.png')"
  59. alt="" />
  60. <!-- <image src="@/static/image/home/decline-icon.png" alt="" /> -->
  61. </view>
  62. </view>
  63. <view class="chart-img" v-if="item.state !== 2">
  64. <template v-if="item.state == 0">
  65. <image
  66. :src="item.proportion <= 16 ? require('@/static/image/home/green.png') : require('@/static/image/home/green-more.png')"
  67. alt="" />
  68. </template>
  69. <template v-if="item.state == 1">
  70. <image src="@/static/image/home/red.png" alt="" />
  71. </template>
  72. </view>
  73. <view class="empty" v-if="item.state == 2">
  74. <view class="left"></view>
  75. <view class="bottom"></view>
  76. </view>
  77. </view>
  78. </view>
  79. </view>
  80. </template>
  81. <script>
  82. import { getShopDetail } from '@/config/index.js'
  83. import { toolList, tobeList, statisticsList } from './data'
  84. export default {
  85. created() {
  86. // 获取胶囊的高度
  87. // #ifdef MP-WEIXIN
  88. let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
  89. this.menuButtonHeight = menuButtonInfo.height
  90. // #endif
  91. // 请求获取店铺的信息
  92. this.getShop()
  93. },
  94. data() {
  95. return {
  96. // 胶囊的高度
  97. menuButtonHeight: null,
  98. toolList: toolList,
  99. tobeList: tobeList,
  100. statisticsList: statisticsList,
  101. // 店铺信息
  102. shopInfo: {},
  103. // 动态计算 main 的高度
  104. mainHeight: 0
  105. }
  106. },
  107. onLoad() {
  108. },
  109. methods: {
  110. getCapusleHeight(e) {
  111. this.mainHeight = 327 - e - this.menuButtonHeight + 16
  112. console.log(this.mainHeight);
  113. },
  114. // 获取店铺详情
  115. async getShop() {
  116. let { data } = await getShopDetail({});
  117. this.shopInfo = data
  118. // 将店铺存到本地
  119. uni.setStorageSync('shopInfo', data)
  120. },
  121. // 扫码
  122. scanCode(url) {
  123. uni.navigateTo({
  124. url: url
  125. });
  126. }
  127. }
  128. }
  129. </script>
  130. <style lang="scss" scoped>
  131. @import './index.scss';
  132. </style>