会员权益
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<!-- #ifndef MP-WEIXIN || MP-QQ -->
|
||||
<view :class="['swiper-slide',slideClass]" :style="[itemStyle,customStyle]" @click.stop="onClickSlide">
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN || MP-QQ -->
|
||||
<view :class="['swiper-slide',slideClass]" :style="[itemStyle,customStyle]" @click.stop="onClickSlide"
|
||||
:swiperItemTransform="wxsItemTransform" :change:swiperItemTransform="zSwiperWxs.wxsItemTransformObserver">
|
||||
<!-- #endif -->
|
||||
<slot></slot>
|
||||
</view>
|
||||
</template>
|
||||
<!-- #ifdef MP-WEIXIN || MP-QQ -->
|
||||
<script src="../../wxs/z-swiper-wxs.wxs" module="zSwiperWxs" lang="wxs"></script>
|
||||
<!-- #endif -->
|
||||
<script>
|
||||
import {
|
||||
ChildrenMixin
|
||||
} from '../../libs/mixins/relation.js';
|
||||
import {
|
||||
getRect
|
||||
} from '../../libs/utils/utils.js';
|
||||
export default {
|
||||
name: "z-swipe-item",
|
||||
// #ifdef MP-WEIXIN
|
||||
options: {
|
||||
virtualHost: true
|
||||
},
|
||||
// #endif
|
||||
mixins: [ChildrenMixin('zSwipe')],
|
||||
props: {
|
||||
customStyle: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
swiperItemWidth: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
},
|
||||
swiperItemHeight: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
wxsItemTransform: "",
|
||||
itemStyle: {},
|
||||
offsetLeft: 0,
|
||||
offsetTop: 0,
|
||||
itemClass: [],
|
||||
width: 0,
|
||||
height: 0,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getSize();
|
||||
},
|
||||
computed: {
|
||||
slideClass() {
|
||||
return this.itemClass.join(" ");
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
swiperItemWidth: {
|
||||
handler(val) {
|
||||
if (val) {
|
||||
this.$set(this.itemStyle, 'width', this.unitFormat(val, "rpx"))
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
swiperItemHeight: {
|
||||
handler(val) {
|
||||
if (val) {
|
||||
this.$set(this.itemStyle, 'height', this.unitFormat(val, "rpx"))
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
unitFormat(val, type) {
|
||||
if (type == "rpx") {
|
||||
if (val.includes("rpx") || val.includes("px")) {
|
||||
return val;
|
||||
} else {
|
||||
return val + 'px';
|
||||
}
|
||||
}
|
||||
if (type == "number") {
|
||||
if (val.includes("rpx")) {
|
||||
return uni.upx2px(parseInt(val.replace("rpx", "")))
|
||||
} else if (!val.includes("rpx") && val.includes("px")) {
|
||||
return parseInt(val.replace("px", ""))
|
||||
} else {
|
||||
return val;
|
||||
}
|
||||
}
|
||||
},
|
||||
onClickSlide(event) {
|
||||
this.$emit("click", {
|
||||
event,
|
||||
index: this.index
|
||||
});
|
||||
this.parent.swiper.updateClickedSlide(this.index);
|
||||
this.parent.swiper.emit("slideClick", this.index);
|
||||
},
|
||||
transform(value) {
|
||||
// #ifndef MP-WEIXIN || MP-QQ
|
||||
this.$set(this.itemStyle, 'transform', value)
|
||||
// #endif
|
||||
// #ifdef MP-WEIXIN || MP-QQ
|
||||
this.wxsItemTransform = value
|
||||
// #endif
|
||||
},
|
||||
transition(value) {
|
||||
// #ifdef MP-BAIDU
|
||||
this.$set(this.itemStyle, 'transitionDuration', `${value}ms`)
|
||||
// #endif
|
||||
// #ifndef MP-BAIDU
|
||||
this.$set(this.itemStyle, 'transition-duration', `${value}ms`)
|
||||
// #endif
|
||||
},
|
||||
willChange(value) {
|
||||
this.$set(this.itemStyle, 'will-change', value)
|
||||
},
|
||||
css(value) {
|
||||
Object.keys(value).forEach((item) => {
|
||||
this.$set(this.itemStyle, item, value[item])
|
||||
})
|
||||
},
|
||||
transitionEnd(callback, duration) {
|
||||
setTimeout(callback, duration)
|
||||
},
|
||||
getSize() {
|
||||
const query = uni.createSelectorQuery().in(this);
|
||||
return new Promise((resolve, reject) => {
|
||||
query.select('.swiper-slide').boundingClientRect(data => {
|
||||
if (this.swiperItemWidth) {
|
||||
this.width = this.unitFormat(this.swiperItemWidth, "number");
|
||||
this.height = data.height;
|
||||
}
|
||||
if (this.swiperItemHeight) {
|
||||
this.width = data.width;
|
||||
this.height = this.unitFormat(this.swiperItemHeight, "number");
|
||||
}
|
||||
if (!this.swiperItemWidth && !this.swiperItemHeight) {
|
||||
this.width = data.width;
|
||||
this.height = data.height;
|
||||
}
|
||||
resolve({
|
||||
width: this.width,
|
||||
height: this.height
|
||||
})
|
||||
}).exec();
|
||||
})
|
||||
},
|
||||
addClass(value) {
|
||||
this.itemClass = Array.from(new Set([...this.itemClass, ...value.split(" ")]));
|
||||
},
|
||||
removeClass(value) {
|
||||
this.itemClass = this.itemClass.filter(item => !value.split(" ").includes(item));
|
||||
},
|
||||
hasClass(value) {
|
||||
return this.itemClass.includes(value);
|
||||
},
|
||||
nextAll() {
|
||||
return this.parent.children.filter((item) => {
|
||||
return item.index > this.index
|
||||
})
|
||||
},
|
||||
prevAll() {
|
||||
return this.parent.children.filter((item) => {
|
||||
return item.index < this.index
|
||||
}).reverse()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import '../../libs/core.scss';
|
||||
</style>
|
||||
Reference in New Issue
Block a user