188 lines
4.4 KiB
Vue
Raw Permalink Normal View History

2025-05-08 09:16:37 +08:00
<template>
<view class="payBox">
<view class="buy" v-if="show">
<up-icon name="checkmark-circle-fill" size="60" :color="Color" />
<view class="title"><text>{{levelLink.customer_message}}</text></view>
<view class="box">
<image v-if="levelLink.add_customer == 1" :src="levelLink.crop_qr_code" show-menu-by-longpress @longtap="levelRecord('scan_qr_code')" mode="widthFix" class="img"></image>
<image v-else :src="levelLink.jump_link_image" mode="widthFix" class="img" @click="toWeb"></image>
<view v-if="levelLink.add_customer == 1" class="desc">长按识别二维码添加客服</view>
</view>
</view>
</view>
</template>
<script>
import { ref, reactive, toRefs } from 'vue'
import { get, post } from '@/api/request.js'
export default {
setup() {
const data = reactive({
show: false,
id: '',
type: '',
pay_id: '',
link_id: '',
from: 0,
Color: uni.getStorageSync('theme_color'),
levelLink: {},
goods: {},
imageUrl: '',
shareUrl: ''
})
async function getLevelLink() {
await get(`/api/v1/goods/levelLink/${data.link_id}`).then((res) => {
data.levelLink = res.data
data.show = true
if(res.data.add_customer == 1) {
levelRecord('view_qr_code')
}
})
}
async function levelRecord(type) {
let params = {
level_link_id: data.link_id,
type: type
}
await post(`/api/v1/levelLink/record`, params).then((res) => {
})
}
async function getInfo() {
let res = ''
if (data.type == 1) {
res = await get(`/api/v1/orderMain/${data.id}`)
} else {
res = await get(`/api/v1/order/${data.id}`)
}
let price = 0
if (data.type == 1) {
let oeder = res.data.orders
oeder.forEach((i) => {
i.items.forEach((j) => {
if (j.price * 1 > price) {
price = j.price
data.goods = j
}
})
})
} else {
let list = res.data.items
list.forEach((j) => {
if (j.price > price) {
price = j.price
data.goods = j
}
})
}
}
async function getShareTemplate() {
await get(`/api/v1/goods/share/${data.goods.shop_goods_id}`, { type: 6 }).then((res) => {
data.imageUrl = res.data.image
})
}
async function getShareUrl() {
let query = `id=${data.goods.shop_goods_id}&pay_id=${data.pay_id}&link_id=${data.link_id}`
await post('/api/v1/user/share', {
page: 'pages/smallshop/classTwo',
query: query
}).then((res) => {
data.shareUrl = res.data.path
})
}
async function toWeb() {
await levelRecord('click_link')
if(data.levelLink.h5_link) {
if(data.levelLink.link_type == 'customer') {
uni.openCustomerServiceChat({
extInfo: {url: data.levelLink.h5_link},
corpId: 'ww5ea85f3dd28bd492',
success(res) { console.log(res) }
})
} else if(data.levelLink.link_type == 'web') {
uni.navigateTo({ url: '/pages/index/link?advUrl=' + encodeURIComponent(data.levelLink.h5_link) })
} else if(data.levelLink.link_type == 'mini_program') {
uni.reLaunch({url: data.levelLink.h5_link})
}
}
}
return {
...toRefs(data),
getShareTemplate,
getShareUrl,
getInfo,
getLevelLink,
levelRecord,
toWeb
}
},
async onLoad(options) {
// await this.$onLaunched
this.id = options.id
this.type = options.type
this.pay_id = options.pay_id || ''
this.from = Number(options.from) || 0
this.link_id = options.link_id || 0
this.show = true
await this.getLevelLink()
await this.getInfo()
this.getShareTemplate()
this.getShareUrl()
},
onShareAppMessage() {
return {
title: '老板,跟团成功了,期待早日收到货~',
imageUrl: this.imageUrl,
path: this.shareUrl
}
}
}
</script>
<style lang="scss" scoped>
.payBox{
display: flex;
justify-content: center;
width: 100%;
height: 100vh;
box-sizing: border-box;
padding-top: 140rpx;
}
.buy {
text-align: center;
padding: 60rpx 0;
background-color: #fff;
width: 90%;
border-radius: 14rpx;
height: fit-content;
.title {
font-size: 36rpx;
color: v-bind('Color');
margin: 30rpx 0;
line-height: 48rpx;
text{
// font-weight: 600;
}
}
.box{
.img{
width: 440rpx;
height: 440rpx;
}
.desc{
color: #444;
font-size: 30rpx;
margin-top: 16rpx;
}
}
}
</style>