Files
yshop-pro-uniapp/components/Share/Distribution.vue

138 lines
2.5 KiB
Vue
Raw Normal View History

<!--
@name: index
@author: kahu4
@date: 2024-01-16 17:20
@description经销商邀请
@update: 2024-01-16 17:20
-->
<script setup>
import { ref } from "vue";
import Popup from "@/components/Popup.vue";
import { photoShare, wechatShare } from "@/utils/images";
import { cloneDeep } from "loadsh";
const emits = defineEmits(['share'])
const popupRef = ref(null);
const title = ref('邀请下级')
function open(titleStr) {
titleStr && (title.value = titleStr)
popupRef.value.show()
}
function close() {
}
function cancel() {
popupRef.value.close()
}
function doShare(shareItem) {
emits('share', cloneDeep(shareItem))
cancel()
}
defineExpose({open})
const shareList = [
{
label: '微信好友',
value: 'wechat',
icon: wechatShare
},
{
label: '生成海报',
value: 'photo',
icon: photoShare
}
]
</script>
<template>
<Popup
ref="popupRef"
:title="title">
<template #rightOption><span></span></template>
<view class="share-box flex flex-ai__center flex-jc__sa">
<template
v-for="item in shareList"
:key="item.value">
<template v-if="item.value === 'wechat'">
<button
open-type="share"
@click="doShare(item)"
class="item flex flex-column flex-jc__center flex-ai__center">
<image :src="item.icon" />
<text> {{ item.label }}</text>
</button>
</template>
<template v-else>
<view
@click="doShare(item)"
class="item flex flex-column flex-jc__center flex-ai__center">
<image :src="item.icon" />
<text> {{ item.label }}</text>
</view>
</template>
</template>
</view>
<view
class="cancel"
@click="cancel">
取消
</view>
</Popup>
</template>
<style
lang="scss"
scoped>
.share-box {
width: 100%;
@include usePadding(0, 45);
.item {
image {
width: 96rpx;
height: 96rpx;
border-radius: 50%;
}
transition: all .3s;
&:active {
scale: 0.9;
}
}
}
.cancel {
width: 100%;
text-align: center;
@include usePadding(0, 25);
border-top: 1rpx solid $page-bg-color;
transition: all .3s;
&:active {
scale: 0.9;
}
}
button {
margin: 0;
padding: 0;
border: 0;
background: transparent;
box-shadow: none;
font-size: 26rpx;
align-items: center !important;
line-height: normal;
&:after {
box-shadow: none;
border: none;
}
}
</style>