5 changed files with 797 additions and 3 deletions
-
62common/styles/iconfont.css
-
386components/lf-swiper/lf-swiper.vue
-
14pages.json
-
171pages/user/member/explain.vue
-
167pages/user/member/quanyi.vue
@ -0,0 +1,386 @@ |
|||||
|
<template> |
||||
|
<view class="u-swiper-wrap" :style="{borderRadius: `${borderRadius}rpx`}"> |
||||
|
<swiper :current="elCurrent" @change="change" |
||||
|
@animationfinish="animationfinish" |
||||
|
:interval="interval" :circular="circular" |
||||
|
:duration="duration" :autoplay="autoplay" |
||||
|
:previous-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'" |
||||
|
:next-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'" |
||||
|
:style="{height: height + 'rpx',backgroundColor: bgColor}"> |
||||
|
<swiper-item class="u-swiper-item" v-for="(item, index) in list" :key="index"> |
||||
|
<view class="u-list-image-wrap" |
||||
|
@tap.stop.prevent="listClick(index)" |
||||
|
:class="[uCurrent != index ? 'u-list-scale' : '']" |
||||
|
:style="{borderRadius: `${borderRadius}rpx`, |
||||
|
transform: effect3d && uCurrent != index ? 'scaleY(0.9)' : 'scaleY(1)', |
||||
|
margin: effect3d && uCurrent != index ? '0 20rpx' : 0 |
||||
|
}"> |
||||
|
<!-- 图片 --> |
||||
|
<image class="u-swiper-image" :src="item[name] || item" :mode="imgMode"></image> |
||||
|
<!-- 自己加的内容 --> |
||||
|
<view class="swiper-diy-left" @click.stop.prevent="$emit('clickDiy', {'index': index, 'type': 'btn1'})"> |
||||
|
<text>查看会员权益和细则</text> |
||||
|
</view> |
||||
|
<view class="swiper-diy-right" @click.stop.prevent="$emit('clickDiy', {'index': index, 'type': 'btn2'})"> |
||||
|
<text class="lf-iconfont icon-erweima lf-font-30"></text> |
||||
|
</view> |
||||
|
|
||||
|
<view v-if="title && item.title" class="u-swiper-title u-line-1" |
||||
|
:style="[{'padding-bottom': titlePaddingBottom}, titleStyle]"> |
||||
|
{{ item.title }} |
||||
|
</view> |
||||
|
</view> |
||||
|
</swiper-item> |
||||
|
</swiper> |
||||
|
|
||||
|
<view class="u-swiper-indicator" :style="{ |
||||
|
top: indicatorPos == 'topLeft' || indicatorPos == 'topCenter' || indicatorPos == 'topRight' ? '12rpx' : 'auto', |
||||
|
bottom: indicatorPos == 'bottomLeft' || indicatorPos == 'bottomCenter' || indicatorPos == 'bottomRight' ? '12rpx' : 'auto', |
||||
|
justifyContent: justifyContent, |
||||
|
padding: `0 ${effect3d ? '74rpx' : '24rpx'}` |
||||
|
}"> |
||||
|
<block v-if="mode == 'rect'"> |
||||
|
<view class="u-indicator-item-rect" |
||||
|
:class="{ 'u-indicator-item-rect-active': index == uCurrent }" |
||||
|
v-for="(item, index) in list" :key="index"> |
||||
|
</view> |
||||
|
</block> |
||||
|
<block v-if="mode == 'dot'"> |
||||
|
<view class="u-indicator-item-dot" |
||||
|
:class="{ 'u-indicator-item-dot-active': index == uCurrent }" |
||||
|
v-for="(item, index) in list" :key="index"> |
||||
|
</view> |
||||
|
</block> |
||||
|
<block v-if="mode == 'round'"> |
||||
|
<view class="u-indicator-item-round" |
||||
|
:class="{ 'u-indicator-item-round-active': index == uCurrent }" |
||||
|
v-for="(item, index) in list" :key="index"> |
||||
|
</view> |
||||
|
</block> |
||||
|
<block v-if="mode == 'number'"> |
||||
|
<view class="u-indicator-item-number">{{ uCurrent + 1 }}/{{ list.length }}</view> |
||||
|
</block> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
/** |
||||
|
* swiper 轮播图 |
||||
|
* @description 该组件一般用于导航轮播,广告展示等场景,可开箱即用 |
||||
|
* @tutorial https://www.uviewui.com/components/swiper.html |
||||
|
* @property {Array} list 轮播图数据,见官网"基本使用"说明 |
||||
|
* @property {Boolean} title 是否显示标题文字,需要配合list参数,见官网说明(默认false) |
||||
|
* @property {String} mode 指示器模式,见官网说明(默认round) |
||||
|
* @property {String Number} height 轮播图组件高度,单位rpx(默认250) |
||||
|
* @property {String} indicator-pos 指示器的位置(默认bottomCenter) |
||||
|
* @property {Boolean} effect3d 是否开启3D效果(默认false) |
||||
|
* @property {Boolean} autoplay 是否自动播放(默认true) |
||||
|
* @property {String Number} interval 自动轮播时间间隔,单位ms(默认2500) |
||||
|
* @property {Boolean} circular 是否衔接播放,见官网说明(默认true) |
||||
|
* @property {String} bg-color 背景颜色(默认#f3f4f6) |
||||
|
* @property {String Number} border-radius 轮播图圆角值,单位rpx(默认8) |
||||
|
* @property {Object} title-style 自定义标题样式 |
||||
|
* @property {String Number} effect3d-previous-margin mode = true模式的情况下,激活项与前后项之间的距离,单位rpx(默认50) |
||||
|
* @property {String} img-mode 图片的裁剪模式,详见image组件裁剪模式(默认aspectFill) |
||||
|
* @event {Function} click 点击轮播图时触发 |
||||
|
* @example <u-swiper :list="list" mode="dot" indicator-pos="bottomRight"></u-swiper> |
||||
|
*/ |
||||
|
export default { |
||||
|
name: "u-swiper", |
||||
|
props: { |
||||
|
// 轮播图的数据,格式如:[{image: 'xxxx', title: 'xxxx'},{image: 'yyyy', title: 'yyyy'}],其中title字段可选 |
||||
|
list: { |
||||
|
type: Array, |
||||
|
default () { |
||||
|
return []; |
||||
|
} |
||||
|
}, |
||||
|
// 是否显示title标题 |
||||
|
title: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
// 用户自定义的指示器的样式 |
||||
|
indicator: { |
||||
|
type: Object, |
||||
|
default () { |
||||
|
return {}; |
||||
|
} |
||||
|
}, |
||||
|
// 圆角值 |
||||
|
borderRadius: { |
||||
|
type: [Number, String], |
||||
|
default: 8 |
||||
|
}, |
||||
|
// 隔多久自动切换 |
||||
|
interval: { |
||||
|
type: [String, Number], |
||||
|
default: 3000 |
||||
|
}, |
||||
|
// 指示器的模式,rect|dot|number|round |
||||
|
mode: { |
||||
|
type: String, |
||||
|
default: 'round' |
||||
|
}, |
||||
|
// list的高度,单位rpx |
||||
|
height: { |
||||
|
type: [Number, String], |
||||
|
default: 250 |
||||
|
}, |
||||
|
// 指示器的位置,topLeft|topCenter|topRight|bottomLeft|bottomCenter|bottomRight |
||||
|
indicatorPos: { |
||||
|
type: String, |
||||
|
default: 'bottomCenter' |
||||
|
}, |
||||
|
// 是否开启缩放效果 |
||||
|
effect3d: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
// 3D模式的情况下,激活item与前后item之间的距离,单位rpx |
||||
|
effect3dPreviousMargin: { |
||||
|
type: [Number, String], |
||||
|
default: 50 |
||||
|
}, |
||||
|
// 是否自动播放 |
||||
|
autoplay: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
// 自动轮播时间间隔,单位ms |
||||
|
duration: { |
||||
|
type: [Number, String], |
||||
|
default: 500 |
||||
|
}, |
||||
|
// 是否衔接滑动,即到最后一张时接着滑动,是否自动切换到第一张 |
||||
|
circular: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
// 图片的裁剪模式 |
||||
|
imgMode: { |
||||
|
type: String, |
||||
|
default: 'aspectFill' |
||||
|
}, |
||||
|
// 从list数组中读取的图片的属性名 |
||||
|
name: { |
||||
|
type: String, |
||||
|
default: 'image' |
||||
|
}, |
||||
|
// 背景颜色 |
||||
|
bgColor: { |
||||
|
type: String, |
||||
|
default: '#f3f4f6' |
||||
|
}, |
||||
|
// 初始化时,默认显示第几项 |
||||
|
current: { |
||||
|
type: [Number, String], |
||||
|
default: 0 |
||||
|
}, |
||||
|
// 标题的样式,对象形式 |
||||
|
titleStyle: { |
||||
|
type: Object, |
||||
|
default() { |
||||
|
return {} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
// 如果外部的list发生变化,判断长度是否被修改,如果前后长度不一致,重置uCurrent值,避免溢出 |
||||
|
list(nVal, oVal) { |
||||
|
if(nVal.length !== oVal.length) this.uCurrent = 0; |
||||
|
}, |
||||
|
// 监听外部current的变化,实时修改内部依赖于此测uCurrent值,如果更新了current,而不是更新uCurrent, |
||||
|
// 就会错乱,因为指示器是依赖于uCurrent的 |
||||
|
current(n) { |
||||
|
this.uCurrent = n; |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
uCurrent: this.current // 当前活跃的swiper-item的index |
||||
|
}; |
||||
|
}, |
||||
|
computed: { |
||||
|
justifyContent() { |
||||
|
if (this.indicatorPos == 'topLeft' || this.indicatorPos == 'bottomLeft') return 'flex-start'; |
||||
|
if (this.indicatorPos == 'topCenter' || this.indicatorPos == 'bottomCenter') return 'center'; |
||||
|
if (this.indicatorPos == 'topRight' || this.indicatorPos == 'bottomRight') return 'flex-end'; |
||||
|
}, |
||||
|
titlePaddingBottom() { |
||||
|
let tmp = 0; |
||||
|
if (this.mode == 'none') return '12rpx'; |
||||
|
if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode == 'number') { |
||||
|
tmp = '60rpx'; |
||||
|
} else if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode != 'number') { |
||||
|
tmp = '40rpx'; |
||||
|
} else { |
||||
|
tmp = '12rpx'; |
||||
|
} |
||||
|
return tmp; |
||||
|
}, |
||||
|
// 因为uni的swiper组件的current参数只接受Number类型,这里做一个转换 |
||||
|
elCurrent() { |
||||
|
return Number(this.current); |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
listClick(index) { |
||||
|
this.$emit('click', index); |
||||
|
}, |
||||
|
change(e) { |
||||
|
let current = e.detail.current; |
||||
|
this.uCurrent = current; |
||||
|
// 发出change事件,表示当前自动切换的index,从0开始 |
||||
|
this.$emit('change', current); |
||||
|
}, |
||||
|
// 头条小程序不支持animationfinish事件,改由change事件 |
||||
|
// 暂不监听此事件,因为不再给swiper绑定uCurrent属性 |
||||
|
animationfinish(e) { |
||||
|
// #ifndef MP-TOUTIAO |
||||
|
// this.uCurrent = e.detail.current; |
||||
|
// #endif |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
// @import "../../libs/css/style.components.scss"; |
||||
|
|
||||
|
.u-swiper-wrap { |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
transform: translateY(0); |
||||
|
} |
||||
|
|
||||
|
.u-swiper-image { |
||||
|
width: 100%; |
||||
|
will-change: transform; |
||||
|
height: 100%; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: block; |
||||
|
/* #endif */ |
||||
|
/* #ifdef H5 */ |
||||
|
pointer-events: none; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.u-swiper-indicator { |
||||
|
padding: 0 24rpx; |
||||
|
position: absolute; |
||||
|
// @include vue-flex; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
|
||||
|
width: 100%; |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-rect { |
||||
|
width: 26rpx; |
||||
|
height: 8rpx; |
||||
|
margin: 0 6rpx; |
||||
|
transition: all 0.5s; |
||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-rect-active { |
||||
|
background-color: rgba(255, 255, 255, 0.8); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-dot { |
||||
|
width: 14rpx; |
||||
|
height: 14rpx; |
||||
|
margin: 0 6rpx; |
||||
|
border-radius: 20rpx; |
||||
|
transition: all 0.5s; |
||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-dot-active { |
||||
|
background-color: rgba(255, 255, 255, 0.8); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-round { |
||||
|
width: 14rpx; |
||||
|
height: 14rpx; |
||||
|
margin: 0 6rpx; |
||||
|
border-radius: 20rpx; |
||||
|
transition: all 0.5s; |
||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-round-active { |
||||
|
width: 34rpx; |
||||
|
background-color: rgba(255, 255, 255, 0.8); |
||||
|
} |
||||
|
|
||||
|
.u-indicator-item-number { |
||||
|
padding: 6rpx 16rpx; |
||||
|
line-height: 1; |
||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||
|
border-radius: 100rpx; |
||||
|
font-size: 26rpx; |
||||
|
color: rgba(255, 255, 255, 0.8); |
||||
|
} |
||||
|
|
||||
|
.u-list-scale { |
||||
|
transform-origin: center center; |
||||
|
} |
||||
|
|
||||
|
.u-list-image-wrap { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
flex: 1; |
||||
|
transition: all 0.5s; |
||||
|
overflow: hidden; |
||||
|
box-sizing: content-box; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.u-swiper-title { |
||||
|
position: absolute; |
||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
width: 100%; |
||||
|
font-size: 28rpx; |
||||
|
padding: 12rpx 24rpx; |
||||
|
color: rgba(255, 255, 255, 0.9); |
||||
|
} |
||||
|
|
||||
|
.u-swiper-item { |
||||
|
// @include vue-flex; |
||||
|
overflow: hidden; |
||||
|
align-items: center; |
||||
|
|
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
} |
||||
|
|
||||
|
.swiper-diy-left, .swiper-diy-right{ |
||||
|
position: absolute; |
||||
|
bottom: 40rpx; |
||||
|
color: #FFFFFF; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.swiper-diy-left{ |
||||
|
left: 40rpx; |
||||
|
width: 246rpx; |
||||
|
height: 49rpx; |
||||
|
border-radius: 24rpx; |
||||
|
border: 1rpx solid #FFFFFF; |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
.swiper-diy-right{ |
||||
|
right: 40rpx; |
||||
|
width: 60rpx; |
||||
|
height: 60rpx; |
||||
|
border-radius: 50%; |
||||
|
background-color: rgba(0,0,0,0.5); |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,171 @@ |
|||||
|
<template> |
||||
|
<view> |
||||
|
<lf-nav title="会员权益" :showIcon="true" :spreadOut="false" bgColor="transparent" titleColor="#fff"></lf-nav> |
||||
|
<view class="head"> |
||||
|
<view class="bg-left"></view> |
||||
|
<view class="bg-right"></view> |
||||
|
<scroll-view class="scroll-view" :scroll-x="true" :scroll-into-view="oView"> |
||||
|
<view class="head-content"> |
||||
|
<view class="item" :id="'view-'+ index" |
||||
|
:style="{width: 100 / 4 +'%'}" |
||||
|
v-for="(item, index) in 5" :key="index" |
||||
|
@click="current = index"> |
||||
|
<view class="icon"> |
||||
|
<text class="lf-iconfont icon-huiyuan2 lf-color-primary lf-font-60"></text> |
||||
|
</view> |
||||
|
<view class="name">免费雨伞租赁</view> |
||||
|
<view class="active" v-if="current == index"></view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="content"> |
||||
|
<view class="primary-title">平时2倍积分</view> |
||||
|
<view class="secondary-title">适用人群</view> |
||||
|
<view class="text">金卡</view> |
||||
|
<view class="secondary-title">特权内容</view> |
||||
|
<view class="text"> |
||||
|
<view>1、平日购物,结账时出示“会员码”,尊享2倍积分;</view> |
||||
|
<view>2、平日购物,结账时出示“会员码”,尊享2倍积分;</view> |
||||
|
<view>3、平日购物,结账时出示“会员码”,尊享2倍积分;平日购物,结账时出示“会员码”,尊享2倍积分</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
data(){ |
||||
|
return { |
||||
|
current: null, // 当前选中的下标 |
||||
|
oView: '' // scroll跳转到哪个view下 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options){ |
||||
|
// TODO 待对接传入current |
||||
|
// setTimeout(() => { |
||||
|
// this.current = options.current; |
||||
|
// this.oView = `view-${options.current}`; |
||||
|
// }, 500); |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
page{ |
||||
|
overflow-x: hidden; |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="scss" scoped="scoped"> |
||||
|
.head{ |
||||
|
width: 750rpx; |
||||
|
height: 443rpx; |
||||
|
background: linear-gradient(90deg, #22A2A0 0%, #187B7A 100%); |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
display: flex; |
||||
|
align-items: flex-end; |
||||
|
box-sizing: border-box; |
||||
|
color: #FFFFFF; |
||||
|
.bg-left{ |
||||
|
position: absolute; |
||||
|
width: 196rpx; |
||||
|
height: 196rpx; |
||||
|
border-radius: 50%; |
||||
|
background-color: rgba(255,255,255,0.04); |
||||
|
left: -92rpx; |
||||
|
bottom: 60rpx; |
||||
|
} |
||||
|
.bg-right{ |
||||
|
position: absolute; |
||||
|
width: 520rpx; |
||||
|
height: 520rpx; |
||||
|
border-radius: 50%; |
||||
|
background-color: rgba(255,255,255,0.04); |
||||
|
right: -168rpx; |
||||
|
top: -122rpx; |
||||
|
} |
||||
|
.scroll-view{ |
||||
|
height: 236rpx; |
||||
|
width: 750rpx; |
||||
|
.head-content{ |
||||
|
width: max-content; |
||||
|
height: 236rpx; |
||||
|
display: flex; |
||||
|
.item{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
box-sizing: border-box; |
||||
|
padding: 0 20rpx; |
||||
|
position: relative; |
||||
|
.icon{ |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
background: #FFFFFF; |
||||
|
border-radius: 50%; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
color: #FFFFFF; |
||||
|
} |
||||
|
.name{ |
||||
|
width: 148rpx; |
||||
|
margin-top: 10rpx; |
||||
|
font-size: 24rpx; |
||||
|
color: #FFFFFF; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.active{ |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
left: calc(50% - 25rpx); |
||||
|
width: 0rpx; |
||||
|
height: 0rpx; |
||||
|
border-left: 25rpx solid transparent; |
||||
|
border-right: 25rpx solid transparent; |
||||
|
border-bottom: 28rpx solid #FFFFFF; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.content{ |
||||
|
padding: 30rpx 32rpx; |
||||
|
.primary-title{ |
||||
|
font-size: 32rpx; |
||||
|
color: #222222; |
||||
|
font-weight: bold; |
||||
|
position: relative; |
||||
|
width: max-content; |
||||
|
z-index: 2; |
||||
|
margin-bottom: 60rpx; |
||||
|
&::before{ |
||||
|
position: absolute; |
||||
|
content: ''; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
width: 100%; |
||||
|
height: 16rpx; |
||||
|
border-radius: 8rpx; |
||||
|
background-color: #8AB8B7; |
||||
|
z-index: -1; |
||||
|
} |
||||
|
} |
||||
|
.secondary-title{ |
||||
|
font-size: 28rpx; |
||||
|
color: #777777; |
||||
|
margin-bottom: 10rpx; |
||||
|
} |
||||
|
.text{ |
||||
|
font-size: 28rpx; |
||||
|
color: #222222; |
||||
|
margin-bottom: 40rpx; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,167 @@ |
|||||
|
<template> |
||||
|
<view> |
||||
|
<lf-nav title="会员权益" :showIcon="true" titleColor="#fff" bgColor="#15716E"></lf-nav> |
||||
|
<view class="head"> |
||||
|
<image class="img"></image> |
||||
|
<view class="phone">182****5380</view> |
||||
|
</view> |
||||
|
<view> |
||||
|
<lf-swiper :list="card_list" |
||||
|
:height="350" :effect3d="true" |
||||
|
bg-color="#15716E" mode="none" |
||||
|
@clickDiy="swiperClickDiy"> |
||||
|
</lf-swiper> |
||||
|
</view> |
||||
|
<view class="content"> |
||||
|
<view class="item" :style="{width: 100 / 4 +'%'}" |
||||
|
v-for="(item, index) in quanyi_list" :key="index" |
||||
|
@click="$url('/pages/user/member/explain')"> |
||||
|
<view class="icon"> |
||||
|
<text class="lf-iconfont lf-color-primary lf-font-60" :class="item.icon"></text> |
||||
|
</view> |
||||
|
<view class="name">{{ item.name }}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import lfSwiper from '@/components/lf-swiper/lf-swiper.vue'; |
||||
|
export default { |
||||
|
components: { |
||||
|
lfSwiper |
||||
|
}, |
||||
|
data(){ |
||||
|
return { |
||||
|
card_list: [{ |
||||
|
image: 'https://cdn.uviewui.com/uview/swiper/1.jpg', |
||||
|
title: '昨夜星辰昨夜风,画楼西畔桂堂东' |
||||
|
}, |
||||
|
{ |
||||
|
image: 'https://cdn.uviewui.com/uview/swiper/2.jpg', |
||||
|
title: '身无彩凤双飞翼,心有灵犀一点通' |
||||
|
}, |
||||
|
{ |
||||
|
image: 'https://cdn.uviewui.com/uview/swiper/3.jpg', |
||||
|
title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳' |
||||
|
} |
||||
|
], |
||||
|
quanyi_list: [{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '平日2倍积分' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '生日5倍积分' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '免费停车6小时/天' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '最低8.5折' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '专属沙龙' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '会员日' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '免费包装' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '书籍租借' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '免费雨伞租赁' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '免费童车租赁' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '免费轮椅租赁' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '通惠卡' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '多重生日礼遇' |
||||
|
},{ |
||||
|
icon: 'icon-huiyuan2', |
||||
|
name: '每日尊享饮品' |
||||
|
}] |
||||
|
} |
||||
|
}, |
||||
|
onLoad(){ |
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
swiperClickDiy(event){ |
||||
|
let item = this.card_list[event.index]; |
||||
|
|
||||
|
if(event.type == 'btn1'){ |
||||
|
this.$msg('敬请期待'); |
||||
|
}else if(event.type == 'btn2'){ |
||||
|
this.$url('/pages/user/member/code'); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
page{ |
||||
|
background-color: #15716E; |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="scss" scoped="scoped"> |
||||
|
.head{ |
||||
|
padding: 30rpx 32rpx; |
||||
|
width: 750rpx; |
||||
|
height: max-content; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
.img{ |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
border: 2rpx solid #FFFFFF; |
||||
|
border-radius: 50%; |
||||
|
background-color: #000000; |
||||
|
} |
||||
|
.phone{ |
||||
|
font-size: 36rpx; |
||||
|
color: #FFFFFF; |
||||
|
margin-left: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
.content{ |
||||
|
padding: 60rpx 32rpx 30rpx; |
||||
|
width: 750rpx; |
||||
|
height: max-content; |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
.item{ |
||||
|
height: max-content; |
||||
|
padding: 0 12rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
margin-bottom: 40rpx; |
||||
|
.icon{ |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
background: #FFFFFF; |
||||
|
border-radius: 50%; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
color: #FFFFFF; |
||||
|
} |
||||
|
.name{ |
||||
|
margin-top: 10rpx; |
||||
|
font-size: 24rpx; |
||||
|
color: #FFFFFF; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue