<template> <view class="flex-col page"> <text class="self-center text">请确认您的预约信息</text> <text class="self-start font text_2">写真产品:{{ orderObj.name }}</text> <text class="self-start font text_3">拍摄时间:{{ orderObj.bookingDate }} {{ orderObj.bookingTime }}</text> <text class="self-start font text_4">拍摄人数:{{ orderObj.number }}人</text> <text class="self-start font text_5">拍摄场地:{{ orderObj.field }}</text> <view @click="closeConfirmBookingPopup" class="flex-col justify-start items-center self-stretch text-wrapper"> <text class="font text_6">确定</text> </view> </view> </template> <script setup lang="ts"> import { onMounted, onUnmounted, ref } from 'vue'; import emitter from '../../../utils/emitter'; import { baseUrl } from '../../../api/request'; import { dealResult } from '../../../common/globalFunction'; import { onLoad } from "@dcloudio/uni-app"; import { getFonts } from '../../../common/globalFont'; onLoad(() => { getFonts() }) const cookie = wx.getStorageSync("cookie") //请求头 const orderObj = ref({}) const isIndoors = ref(0) const isMakeup = ref(1) const isPhotography = ref(1) const getBookingOrderDataHandler = (val:any) => { orderObj.value = val console.log(val) } onMounted(() => { emitter.on('getBookingOrderData', getBookingOrderDataHandler) }) onUnmounted(() => { emitter.off('getBookingOrderData', getBookingOrderDataHandler) }) const closeConfirmBookingPopup = async () => { emitter.emit('closeConfirmBookingInfo') emitter.emit('openMask') await createOrder() } const createOrder = async () => { if (orderObj.value.field === '室内') { isIndoors.value = 1 } if (orderObj.value.type === '妆造') { isPhotography.value = 0 } else if (orderObj.value.type === '摄影') { isMakeup.value = 0 } const res = await uni.request({ url: baseUrl + '/advanceOrder/add', method: 'POST', header: { cookie }, data: { photoProductId: orderObj.value.id, contactsId: orderObj.value.contactId, bookingDateId: orderObj.value.bookingDateId, bookingTimeId: orderObj.value.bookingTimeId, isIndoors: isIndoors.value, isMakeup: isMakeup.value, isPhotography: isPhotography.value, quantity: orderObj.value.number } }) console.log('订单id==========================>', res.data.data) if (!dealResult(res)) { emitter.emit('closeMask') return } wxPay(res.data.data) } const wxPay = async ( oid )=> { //传入订单id try { const res = await uni.request({ url: baseUrl + '/wechat/payment/photo/create', method: 'POST', header: { 'cookie': wx.getStorageSync("cookie") }, data: { id: oid } }) const paymentData = res.data.data wx.requestPayment({ appid: paymentData.appId, nonceStr: paymentData.nonceStr, package: paymentData.packageVal, paySign: paymentData.paySign, timeStamp: paymentData.timeStamp, signType: paymentData.signType, success(res) { uni.showModal({ content: '支付成功', showCancel: false }) console.log('支付成功res--->',res); }, fail(e) { uni.showModal({ content: '支付失败,原因为:' + e.errMsg, showCancel: false }) console.log('e.errMsg--->',e.errMsg); }, complete() { uni.redirectTo({ url: '/pages/book/photoProductsOrderDetail/photoProductsOrderDetail' }) } }) }catch(error) { console.error('支付请求失败',error); uni.showModal({ content: '支付请求失败,请重试', showCancel: false }) } } </script> <style scoped lang="scss"> .page { padding: 56.46rpx 59.18rpx; background-color: #ffffff; border-radius: 41.2rpx; box-shadow: 0rpx 9.49rpx 9.49rpx #00000061; width: 100%; overflow-y: auto; overflow-x: hidden; height: 100%; } .text { color: #000000; font-size: 37.72rpx; font-family: FangZhengFonts; line-height: 41.72rpx; } .font { font-size: 30.97rpx; font-family: FangZhengFonts; line-height: 35.46rpx; color: #000000; } .text_2 { margin-top: 61.71rpx; line-height: 36.93rpx; } .text_3 { margin-top: 37.97rpx; } .text_4 { margin-top: 37.97rpx; line-height: 34.41rpx; } .text_5 { margin-top: 37.97rpx; line-height: 35.01rpx; } .text-wrapper { margin: 66.46rpx 37.97rpx 0; padding: 28.48rpx 0; background-color: #e79ea1; border-radius: 94.94rpx; } .text_6 { color: #ffffff; } @import url(../../../common/css/global.css); </style>