grid.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template>
  2. <view class="flex alcenter space">
  3. <button v-if="getGridOne!=null && getGridOne.model=='share'" open-type="share" class="grid-left-box">
  4. <view class="main pd16_15">
  5. <view class="ft16 ftw600 cl-default">{{getGridOne.name}}</view>
  6. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridOne.desc}}</view>
  7. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  8. </view>
  9. <image class="left-bg" :src="statics.gridLeft"></image>
  10. <image class="left-icon" :src="getGridOne.icon"></image>
  11. </button>
  12. <view v-if="getGridOne!=null && getGridOne.model!='share'" :data-model="getGridOne.model" @click="linkTo" class="grid-left-box">
  13. <view class="main pd16_15">
  14. <view class="ft16 ftw600 cl-default">{{getGridOne.name}}</view>
  15. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridOne.desc}}</view>
  16. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  17. </view>
  18. <image class="left-bg" :src="statics.gridLeft"></image>
  19. <image class="left-icon" :src="getGridOne.icon"></image>
  20. </view>
  21. <view>
  22. <button v-if="getGridTwo!=null && getGridTwo.model=='share'" open-type="share" class="grid-right-box">
  23. <view class="main pd16_15">
  24. <view class="ft16 ftw600 cl-default">{{getGridTwo.name}}</view>
  25. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridTwo.desc}}</view>
  26. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  27. </view>
  28. <image class="right-bg" :src="statics.gridRight"></image>
  29. <image class="right-icon" :src="getGridTwo.icon"></image>
  30. </button>
  31. <view v-if="getGridTwo!=null && getGridTwo.model!='share'" :data-model="getGridTwo.model" @click="linkTo" class="grid-right-box">
  32. <view class="main pd16_15">
  33. <view class="ft16 ftw600 cl-default">{{getGridTwo.name}}</view>
  34. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridTwo.desc}}</view>
  35. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  36. </view>
  37. <image class="right-bg" :src="statics.gridRight"></image>
  38. <image class="right-icon" :src="getGridTwo.icon"></image>
  39. </view>
  40. <view class="mt15">
  41. <button v-if="getGridThree!=null && getGridThree.model=='share'" open-type="share" class="grid-right-box">
  42. <view class="main pd16_15">
  43. <view class="ft16 ftw600 cl-default">{{getGridThree.name}}</view>
  44. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridThree.desc}}</view>
  45. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  46. </view>
  47. <image class="right-bg" :src="statics.gridRight"></image>
  48. <image class="right-icon" :src="getGridThree.icon"></image>
  49. </button>
  50. <view v-if="getGridThree!=null && getGridThree.model!='share'" :data-model="getGridThree.model" @click="linkTo" class="grid-right-box">
  51. <view class="main pd16_15">
  52. <view class="ft16 ftw600 cl-default">{{getGridThree.name}}</view>
  53. <view class="mt4 ft12" :style="{color:tempColor}">{{getGridThree.desc}}</view>
  54. <view class="btn-go" :style="{background:tempColor}">GO<text class="iconfont iconicon_arrow_small ft12"></text></view>
  55. </view>
  56. <image class="right-bg" :src="statics.gridRight"></image>
  57. <image class="right-icon" :src="getGridThree.icon"></image>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. </template>
  63. <script>
  64. export default{
  65. data(){
  66. return {
  67. gridData:[
  68. {name:'VIP特惠',desc:'尊享会员折上折',model:'tuan',icon:this.$config.staticUrl +'vipcard_home_tehui@2x.png',show:1},
  69. {name:'领优惠券',desc:'领券更省钱',model:'coupon',icon:this.$config.staticUrl +'vipcard_home_coupon@2x.png',show:1},
  70. {name:'邀请好友',desc:'越邀请,越优惠',model:'share',icon:this.$config.staticUrl +'vipcard_home_invite@2x.png',show:0},
  71. {name:'积分商城',desc:'小积分兑豪礼',model:'integral',icon:this.$config.staticUrl +'vipcard_home_integralmall@2x.png',show:1},
  72. {name:'开通次卡',desc:'省钱升级必备',model:'card',icon:this.$config.staticUrl +'vipcard_home_cika@2x.png',show:0},
  73. ]
  74. }
  75. },
  76. computed:{
  77. getGridDatas(){
  78. let arr = new Array;
  79. for(var a in this.gridData){
  80. if(this.gridData[a].show == 1){
  81. arr.push(this.gridData[a]);
  82. }
  83. }
  84. return arr;
  85. },
  86. getGridOne(){
  87. return this.getGridDatas[0] ? this.getGridDatas[0] : null;
  88. },
  89. getGridTwo(){
  90. return this.getGridDatas[1] ? this.getGridDatas[1] : null;
  91. },
  92. getGridThree(){
  93. return this.getGridDatas[2] ? this.getGridDatas[2] : null;
  94. }
  95. },
  96. methods:{
  97. linkTo(e){
  98. let model = e.currentTarget.dataset.model;
  99. let url = '';
  100. switch(model){
  101. case 'coupon':
  102. url = '/pages/client/coupon/index';
  103. break;
  104. case 'integral':
  105. url = '/pages/client/integral/index';
  106. break;
  107. case 'card':
  108. url = '/pages/client/card/index';
  109. break;
  110. case 'tuan':
  111. url = '/pages/client/tuan/index';
  112. break;
  113. }
  114. if(url == '') return;
  115. uni.navigateTo({
  116. url:url
  117. })
  118. }
  119. }
  120. }
  121. </script>
  122. <style>
  123. .grid-left-box{
  124. width: 330rpx;
  125. height: 430rpx;
  126. background: #FFFFFF;
  127. box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.04);
  128. border-radius: 32rpx;
  129. position: relative;
  130. overflow: hidden;
  131. margin: 0;
  132. padding: 0;
  133. line-height: 1;
  134. text-align: left;
  135. }
  136. .grid-right-box{
  137. width: 330rpx;
  138. height: 200rpx;
  139. background: #FFFFFF;
  140. box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.04);
  141. border-radius: 32rpx;
  142. position: relative;
  143. overflow: hidden;
  144. margin: 0;
  145. padding: 0;
  146. line-height: 1;
  147. text-align: left;
  148. }
  149. .grid-left-box .main,.grid-right-box .main{
  150. width: 100%;
  151. height: 100%;
  152. position: absolute;
  153. left: 0;
  154. top: 0;
  155. z-index: 3;
  156. }
  157. .grid-left-box .left-bg{
  158. width: 100%;
  159. height: 140rpx;
  160. position: absolute;
  161. left: 0;
  162. bottom: 0;
  163. z-index: 1;
  164. }
  165. .grid-left-box .left-icon{
  166. width: 200rpx;
  167. height: 200rpx;
  168. position: absolute;
  169. right: 0;
  170. bottom: 0;
  171. z-index: 2;
  172. }
  173. .grid-right-box .right-icon{
  174. width: 120rpx;
  175. height: 120rpx;
  176. position: absolute;
  177. right: 0;
  178. bottom: 0;
  179. z-index: 2;
  180. }
  181. .grid-right-box .right-bg{
  182. width: 100%;
  183. height: 74rpx;
  184. position: absolute;
  185. left: 0;
  186. bottom: 0;
  187. z-index: 1;
  188. }
  189. .btn-go{
  190. display: block;
  191. width: 92rpx;
  192. height: 40rpx;
  193. border-radius: 20rpx;
  194. text-align: center;
  195. margin-top: 40rpx;
  196. display: flex;
  197. justify-content: center;
  198. align-items: center;
  199. font-size: 28rpx;
  200. font-weight: 600;
  201. color: #FFFFFF;
  202. font-style:italic;
  203. }
  204. .btn-go text{
  205. font-weight: 400;
  206. margin-left: 8rpx;
  207. }
  208. </style>