jiuyiUniapp/jiuyi2/pages/shop/commodity/components/jy-commodity-foot/index.vue

195 lines
3.8 KiB
Vue
Raw Normal View History

2024-12-18 15:46:27 +08:00
<script setup>
// 店铺 客服 收藏 支付
import {
ref,
reactive,
2025-01-15 23:47:08 +08:00
getCurrentInstance,
computed,
2025-01-19 13:55:21 +08:00
defineEmits,
onMounted
2024-12-18 15:46:27 +08:00
} from 'vue'
//
import util from '@/common/js/util.js'
2025-01-15 23:47:08 +08:00
//
import api from '@/api/index.js'
//
2024-12-18 15:46:27 +08:00
import {
useStore
} from 'vuex'
2025-01-23 00:57:47 +08:00
// 生成订单
import makeOrder from '@/components/shop/detail/makeOrder.vue'
2025-01-15 23:47:08 +08:00
2024-12-18 15:46:27 +08:00
const {
proxy
} = getCurrentInstance()
2025-01-15 23:47:08 +08:00
//
const store = useStore()
2024-12-18 15:46:27 +08:00
//
const props = defineProps({
// 商品信息
detail: {
type: Object,
default: () => ({})
},
})
2025-01-15 23:47:08 +08:00
//
const emit = defineEmits(['update'])
2024-12-18 15:46:27 +08:00
// 已选择的规格下标
2025-01-19 13:55:21 +08:00
const spaceIndex = ref(0)
// 数量
const payNum = ref(1)
// 当前选择的规格
const currentSpec = computed(() => {
let spec = props.detail.specs || []
return spec[spaceIndex.value] || {}
})
// 用户信息
const userinfo = computed(() => store.state.userinfo)
// 应付总价
const total = computed(() => {
let price = parseFloat(props.detail.price) * 100
let result = parseInt(price * payNum.value) / 100
return result
})
2024-12-18 15:46:27 +08:00
//
const menuFn = {
// 店铺
store() {
2025-01-19 13:55:21 +08:00
link('/pages/shop/store/index')
2024-12-18 15:46:27 +08:00
},
// 客服
customerService() {
2025-01-19 13:55:21 +08:00
link('/pages/news/question-answer/index')
2024-12-18 15:46:27 +08:00
},
// 收藏
heibianStar() {
//
}
}
/**
* 跳转
* @param {Object} url 跳转路径
*/
function link(url) {
uni.navigateTo({
url,
})
}
2025-01-15 23:47:08 +08:00
// 切换收藏
function handleCollect() {
//
api.shop.addProductCollect({
query: {
productId: props.detail.id,
type: {
0: 1,
1: 0,
} [props.detail.isCollect]
},
}).then(res => {
if (res.code === 200) {
emit('update', {
...props.detail,
isCollect: {
0: 1,
1: 0,
} [props.detail.isCollect]
})
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
2025-01-19 13:55:21 +08:00
2025-01-23 00:57:47 +08:00
/**
* 立即下单
*/
function handlePay(event) {
2025-01-19 13:55:21 +08:00
// 产生待付款订单
api.shop.addOrder({
data: [{
// 地址id
2025-01-23 21:29:16 +08:00
addressId: event.address.id,
2025-01-19 13:55:21 +08:00
// 产品id
productId: props.detail.id,
// 规格id
2025-01-23 00:57:47 +08:00
attrValueId: event.spec.id,
2025-01-19 13:55:21 +08:00
// 数量
2025-01-23 00:57:47 +08:00
payNum: event.payNum,
2025-01-19 13:55:21 +08:00
// 0-普通订单1-视频号订单
orderType: 0,
// 分享人id
// shareId: userinfo.id,
}],
}).then(rs => {
if (rs.code === 200) {
2025-01-23 00:57:47 +08:00
// 跳转
if (rs.data && rs.data[0]) uni.navigateTo({
url: util.setUrl('/pages/shop/commodity/payment', {
orderId: rs.data[0].orderId,
2025-01-19 13:55:21 +08:00
})
2025-01-23 00:57:47 +08:00
})
2025-01-19 13:55:21 +08:00
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
2024-12-18 15:46:27 +08:00
</script>
<template>
<!-- 填充 -->
<view class="fill" style="height: 180rpx;"></view>
<!-- 底部 -->
<view class="footer footerMneu rows plr20 shadow bfff">
<view class="menu df fdr aic">
2025-01-15 23:47:08 +08:00
<view class="option ver">
2024-12-18 15:46:27 +08:00
<image class="wh30" src="/static/store.png" mode="widthFix" />
<view class="f24 c999 mt10">店铺</view>
</view>
2025-01-15 23:47:08 +08:00
<view class="option ver " @click="handleCollect">
2024-12-18 15:46:27 +08:00
<view class="wh30 fmid">
2025-01-15 23:47:08 +08:00
<uni-icons type="star-filled" size="45rpx" color="#FF9B27" v-if="detail.isCollect == 1" />
2024-12-18 15:46:27 +08:00
<uni-icons type="star" size="45rpx" color="#666" v-else />
</view>
2025-01-15 23:47:08 +08:00
<view class="f24 c999 mt10">
<text v-if="detail.isCollect == 1"></text>
<text>收藏</text>
</view>
2024-12-18 15:46:27 +08:00
</view>
2025-01-15 23:47:08 +08:00
2025-02-07 11:24:41 +08:00
<!-- <view class="option ver ">
2024-12-18 15:46:27 +08:00
<image class="wh30" src="/static/customer-service.png" mode="widthFix" />
<view class="f24 c999 mt10">客服</view>
2025-02-07 11:24:41 +08:00
</view> -->
2024-12-18 15:46:27 +08:00
</view>
<!-- 下单 -->
2025-01-23 00:57:47 +08:00
<view class="btn lg primary f1 ml30" @click="$refs.makeOrderRef.open()">
2024-12-18 15:46:27 +08:00
<text>立即购买</text>
</view>
2025-01-23 00:57:47 +08:00
<!-- 立即支付 -->
<makeOrder ref="makeOrderRef" :detail="detail" @confirm="handlePay" />
</view>
2024-12-18 15:46:27 +08:00
</template>
<style scoped lang="scss">
2025-01-15 23:47:08 +08:00
// 底部菜单
.menu {
// 选项
.option {
width: 80rpx;
}
}
2024-12-18 15:46:27 +08:00
</style>