<template>
<view class="flex-col justify-start relative page">
  <view class="flex-col group_1">
		<!-- 地址信息 -->
    <view class="flex-col section_2">
      <view class="flex-row justify-between">
        <view class="flex-col">
          <text class="self-center font text">{{ addressRealInfo.region }}</text>
          <view class="flex-row items-center self-stretch">
            <image
              class="shrink-0 image"
              src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FXZHjzkRH-dingwei.png"
            />
            <text class="font_2 text_2 ml-8">{{ addressRealInfo.detailAddress }}</text>
          </view>
        </view>
        <view class="flex-row self-start group" @click="loadPop">
          <text class="font_3 text_3">更换地址</text>
          <image
            class="shrink-0 image_2"
            src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FfhDZdkOK-rightpink.png"
          />
        </view>
      </view>
      <view class="flex-row items-center group_2 mt-4">
        <text class="font_2 text_4">{{ addressRealInfo.name }}</text>
        <text class="font_2 text_5">手机:{{ addressRealInfo.phone }}</text>
      </view>
    </view>
		<!-- 商品信息 -->
    <view class="flex-col section_3">
      <view class="flex-col self-stretch">
        <view class="flex-row items-end group_18" v-for="(item, index) in productArr" :key="index">
          <view class="flex-row items-end flex-1 group_19">
            <image
              class="shrink-0 image_3 image_4"
              :src="item.cartGoodVO.goodImg.split(';')[0]"
            />
            <view class="flex-col flex-1 ml-17">
              <view class="flex-row">
                <text class="font">{{ item.cartGoodVO.name }}</text>
                <text class="font text_1">【{{ item.cartGoodVO.type }}】</text>
              </view>
              <view class="flex-row items-center mt-52">
                <image
                  class="image_7"
                  src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FjIVFaWXA-rmb.png"
                />
                <text class="font_4 ml-2">{{ item.cartGoodVO.price }}</text>
                <!-- <text class="font_6 text_27 ml-2">00</text> -->
              </view>
            </view>
          </view>
          <view class="flex-row shrink-0 ml-21">
            <image
              class="image_5"
              src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FJYaNIhRB-short.png"
							@click="shortNum(index)"
            />
            <view class="flex-col justify-start items-center text-wrapper ml-2"><text class="font_5">{{ item.quantity }}</text></view>
            <image
              class="image_6 ml-2"
              src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FXbkFIxCw-add.png"
							@click="addNum(index)"
            />
          </view>
        </view>
      </view>
      <view class="flex-row items-center self-center mt-48" style="margin-top: 56rpx;">
        <view class="group_9">
          <text class="font_2 text_12">注：购买商品均视为同意</text>
          <text class="font_2 text_13">用户须知</text>
        </view>
        <image
          class="shrink-0 image_8 ml-2"
          src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FXjPffNQe-question.png"
        />
      </view>
    </view>
    <view class="flex-col section_5">
      <view class="flex-row justify-between items-center group_14">
        <view class="flex-row">
          <text class="font_7 text_14">商品总价</text>
          <text class="font_8 ml-7">共{{ productArr.length }}件商品</text>
        </view>
        <view class="flex-row items-center">
          <image
            class="shrink-0 image_9"
            src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FjIVFaWXA-rmb.png"
          />
          <text class="font_9">{{ sumprice.toFixed(2) }}</text>
        </view>
      </view>
      <view class="flex-col mt-25">
        <view class="flex-row justify-between group_10">
          <text class="font_7">优惠券</text>
          <view class="flex-row">
            <text class="font_8">0张优惠券可用</text>
            <image
              class="shrink-0 image_7 ml-3"
              src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FTrywtERT-right.png"
            />
          </view>
        </view>
        <view class="flex-col mt-9">
          <view class="flex-row justify-between items-center group_11">
            <text class="font_7 text_15">满120减0优惠</text>
            <view class="flex-row items-center">
              <image
                class="shrink-0 image_9 image_10"
                src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FJmxvlQvD-rmbpink.png"
              />
              <text class="font_3 text_16">减</text>
              <text class="font_9 text_17">0.00</text>
            </view>
          </view>
          <view class="flex-row justify-between items-center group_12">
            <text class="font_7 text_18">合计</text>
            <view class="flex-row items-center">
              <image
                class="shrink-0 image_9"
                src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FjIVFaWXA-rmb.png"
              />
              <text class="font_9">{{ sumprice.toFixed(2) }}</text>
            </view>
          </view>
        </view>
      </view>
    </view>
    <view class="flex-col section_6">
      <text class="self-start font_7 text_19">订单备注</text>
      <view class="flex-col justify-start items-start self-stretch text-wrapper_2 mt-11">
        <!-- <text class="font_2 text_20">备注建议提前协商（250字以内）</text> -->
    		<textarea @input="textAssign" auto-height style="width: 360px;"></textarea>
      </view>
    </view>
  </view>
  <view class="flex-row justify-between items-center section_7 pos_8">
    <view class="flex-row items-center">
      <image
        class="shrink-0 image_9 image_11"
        src="https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FJmxvlQvD-rmbpink.png"
      />
      <text class="text_21">应付：</text>
      <text class="text_22">{{ sumprice.toFixed(2) }}</text>
      <!-- <text class="text_24">00</text> -->
    </view>
    <view class="flex-col justify-start items-center text-wrapper_3" @click="wxPayFd()"><text class="font_7 text_23">微信支付</text></view>
  </view>
</view>
	<uni-popup ref="popup" background-color="#fff">
				<view class="popup-content">
					<addressComponentVue></addressComponentVue>
				</view>
	</uni-popup>
	<!-- 遮罩层 -->
	    <view v-if="isShow" class="overlay"></view>
</template>

<script setup>
import {nextTick, onMounted, ref, toRaw} from 'vue'
import  emitter  from '../../../utils/emitter'
import { onLoad , onShow } from  "@dcloudio/uni-app"; 
import { baseUrl } from '../../../api/request';
import addressComponentVue from '../component/addressComponent.vue'; //导入组件
import { stateMap } from '../../../common/global';
import { sum } from 'mathjs';
//一些暂时变量
const sumprice = ref(0) //总价格
//11.4开发 不应该删掉的
const popup = ref(null) //弹窗对象
const addressRealInfo = ref({
	detailAddress: '请选择/添加地址'
}) //地址页  选择地址传过来的值  进入页面首先是默认地址，若无默认地址，则为空
const productArr = ref([])  //商品对象
const labelList = ref([])  //老套路，商品标签
const userInfo = wx.getStorageSync('userInfo')  //用户信息
const orderItemList = ref({})
const totalInfo = ref([]) //购物车传过来的批量商品
const note = ref('')
const postCartArr = ref([])
onMounted(() => {
	getFonts()
	//将关闭弹窗方法传入弹窗页面，绑定弹窗按钮可关闭弹窗
	emitter.on('close', () => {
		close()
	})
	//获取地址信息
	emitter.on('addressInfo', (val) =>{
		addressRealInfo.value = val 
	})
})
onLoad((options)=>{
	totalInfo.value = JSON.parse(options.cartInfo)
	console.log('options.cartInfo-->',JSON.parse(options.cartInfo));
	console.log('totalInfo.value-->',toRaw(totalInfo.value) );
	getProduct() //获取商品列表
})
onShow(()=>{
	userInfo.value = wx.getStorageSync('userInfo') //从微信缓存中获取用户信息
	getDefaultAddress()
	// computed()
})
//关闭弹窗
const close = () => {
	nextTick(() => {
			if (popup.value) {
				popup.value.close()
			}
		})
}
//加载弹窗。默认从底部弹出
const loadPop =() =>{
	popup.value.open('bottom')
}
//获取用户默认地址
const getDefaultAddress = async () =>{
	const res = await uni.request({
		url: baseUrl + '/address/list',
		method: 'POST',
		header: {
			cookie: wx.getStorageSync('cookie')
		}
	})
	//根据for循环遍历默认地址
	for(let key in res.data.data) {
		if(res.data.data[key].isDefault === 1) {
			addressRealInfo.value = res.data.data[key]
		}
	}
}
const createOrder = async () => {  //购物车的购买方法
	console.log('地址信息-->',addressRealInfo.value);
	formatArr()
	console.log('postCartArr--->',postCartArr.value);
	const resOrder = await uni.request({   //向后端发送生成订单请求
		url: baseUrl + '/order/add/cart',
		method: 'POST',
		header: {
			cookie: wx.getStorageSync('cookie')
		},
		data: {
			orderType: productArr.value[0].cartGoodVO.type === '服务类' ? 'service' : 'product',
			userName: userInfo.userName,
			addressId: addressRealInfo.value.id, //地址信息id
			// contactsId: null, //联系人信息id
			couponId: null, //优惠卷id
			note: note.value,
			cartOrderItemAddRequestList: toRaw(postCartArr.value)
		}
	})
	console.log('后台返回订单响应==>',resOrder.data);
	if(resOrder.data.code === 1) {
		wxPay(resOrder.data.data)
	}
}
//根据商品id数组获取商品信息
const getProduct = async ()=> {
	const res = await uni.request({
		url: baseUrl + '/cart/submit/list',
		method: 'POST',
		header: {
			cookie: wx.getStorageSync('cookie')
		},
		data: {
			idList: totalInfo.value
		}
	})
	console.log('展示订单页面的商品信息-->',res.data);
	if( res.data.code === 1 ) {
		dealRes(res)
	}
}

const dealRes =(res)=> {  //处理来自后端的数据
	productArr.value = res.data.data
	console.log('productArr--->',productArr.value);
	productArr.value.forEach((item)=>{
		sumprice.value += item.cartGoodVO.price * item.quantity  //计算总金额
	})
}
//减少当前商品数量
const shortNum = (index)=>{
	if(productArr.value[index].quantity > 1) {
		productArr.value[index].quantity -= 1
		//计算商品价格
		sumprice.value -= productArr.value[index].cartGoodVO.price * 1
	}
}
//增加当前商品数量
const addNum = (index)=>{
	 if( productArr.value[index].quantity < productArr.value[index].cartGoodVO.inventory ) { //数量肯定不能大于库存
		 productArr.value[index].quantity += 1
		 sumprice.value += productArr.value[index].cartGoodVO.price * 1  //计算商品价格
	 }
}
const formatArr = () =>{
	postCartArr.value.splice(0,postCartArr.value.length)
	productArr.value.forEach((item,index)=>{
		postCartArr.value.push({
			cartRecordId: totalInfo.value[index],
			quantity: item.quantity
		})
	})
}
const wxPay = async( oid )=> {  //传入订单id
	console.log('oid--->',oid);
	try {
		const res = await uni.request({
			url: baseUrl + '/wechat/payment/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
				})
				uni.redirectTo({
					url: '/pages/order/product-paysuccess/product-paysuccess?oid=' + JSON.stringify(oid)
				})
				console.log('支付成功res--->',res);
			},
			fail(e) {
				// uni.showModal({
				// 	content: '支付失败，原因为:' + e.errMsg,
				// 	showCancel: false
				// })
				uni.redirectTo({
					url: '/pages/order/product-paysuccess/product-paysuccess?oid=' + JSON.stringify(oid)
				})
				console.log('e.errMsg--->',e.errMsg);
			}
		})
	}catch(error) {
		console.error('支付请求失败',error);
		uni.showModal({
			content: '支付请求失败,请重试。',
			showCancel: false
		})
	}
}
const textAssign = (e) => {  //文本输入框赋值方法
	note.value = e.detail.value
	// console.log('note--->',note.value);
}
//获取字体
const getFonts =()=>{
	uni.loadFontFace({
		family: 'FangZhengFonts',
		source: `url("https://carbon2.obs.cn-north-4.myhuaweicloud.com/fonts/FangZhengFonts.TTF")`,
		success:(res) =>{
			console.log('success',res);
		},
		fail:(err) => {
			console.log('err',err);
		}
	})
}
//防抖相关变量
	let debounceTimer = null;
	let wxPayTimer = null;
	let loading = false;
	let isLoading = ref(false)
	let isShow = ref(false)
	const fd = () => {  //防抖
		clearTimeout(debounceTimer)
		showLoading()
		debounceTimer = setTimeout(async () => {
			await getMyCouponList()
			hideLoading()
		}, 1000)
	}
	const wxPayFd = () => {  //微信支付按钮防抖
		clearTimeout(wxPayTimer)
		showLoading()
		isShow.value = true
		wxPayTimer = setTimeout(async () => {
			await createOrder()
			hideLoading()
		}, 1000)
	}
	function showLoading() {  //加载弹窗
	  if (!loading) {
	    wx.showLoading({
	      title: '加载中...',
	    });
	    loading = true;
		isLoading.value = true
	  }
	}
	function hideLoading() {  //关闭弹窗
	  if (loading) {
	    wx.hideLoading();
	    loading = false;
		isLoading.value = false
		isShow.value = false
	  }
	}
</script>

<style lang="scss" scoped>
	.overlay {
	  position: fixed;
	  top: 0;
	  left: 0;
	  width: 100%;
	  height: 100%;
	  background-color: rgba(0, 0, 0, 0.4);  /* 半透明黑色背景 */
	  z-index: 999;
	}
.popup-content { 
	height: 300px;
	align-items: center;
	justify-content: center;
	background-color: #fff;
}
.ml-17 {
  margin-left: 31.88rpx;
}
.ml-21 {
  margin-left: 39.38rpx;
}
.ml-7 {
  margin-left: 13.13rpx;
}
.mt-25 {
  margin-top: 46.88rpx;
}
.ml-3 {
  margin-left: 5.63rpx;
}
.mt-9 {
  margin-top: 16.88rpx;
}
.mt-11 {
  margin-top: 20.63rpx;
}
.page {
  background-color: #f8e8c1;
  background-image: url('https://carbon2.obs.cn-north-4.myhuaweicloud.com:443/feiyi%2Ftest%2F0%2FQfLHXSAU-feiyigongfangbeijin.png');
  background-size: 100% 100%;
  background-repeat: no-repeat;
  width: 100%;
  overflow-y: auto;
  overflow-x: hidden;
  height: 100vh;
}
.group_1 {
  padding: 18.75rpx 15rpx 247.5rpx 16.88rpx;
}
.section_2 {
  padding: 21.07rpx 18.75rpx 18.51rpx 20.63rpx;
  background-color: #ffffff;
  border-radius: 18.75rpx;
}
.font {
  font-size: 26.25rpx;
  font-family: FangZhengFonts;
  line-height: 25.54rpx;
  color: #323232;
}
.text {
	margin-left: 54rpx;
  line-height: 25.74rpx;
}
.image {
  width: 43.13rpx;
  height: 43.13rpx;
}
.font_2 {
  font-size: 22.5rpx;
  font-family: FangZhengFonts;
  line-height: 22.54rpx;
  color: #818181;
}
.text_2 {
  line-height: 22.07rpx;
}
.group {
  margin-top: 36.54rpx;
}
.font_3 {
  font-size: 26.25rpx;
  font-family: FangZhengFonts;
  line-height: 25.54rpx;
  color: #ffaaa5;
}
.text_3 {
  line-height: 24.41rpx;
}
.image_2 {
  width: 24.38rpx;
  height: 24.38rpx;
}
.group_2 {
  padding: 0 59.23rpx;
}
.text_4 {
  color: #5a5a5a;
  line-height: 19.42rpx;
}
.text_5 {
	margin-left: 24rpx;
  line-height: 15.04rpx;
}
.section_3 {
  margin-top: 16.88rpx;
  padding: 22.5rpx 0 35.63rpx;
  background-color: #ffffff;
  border-radius: 18.75rpx;
}
.group_18 {
  padding-left: 26.27rpx;
  padding-right: 24.36rpx;
	margin-bottom: 20rpx;
}
.group_19 {
  margin-bottom: 3.75rpx;
}
.image_3 {
  border-radius: 9.38rpx;
  width: 146.25rpx;
  height: 165rpx;
}
.image_4 {
  margin-bottom: 9.38rpx;
}
.text_1 {
  line-height: 25.01rpx;
}
.image_7 {
  width: 30rpx;
  height: 30rpx;
}
.font_4 {
  font-size: 33.75rpx;
  font-family: FangZhengFonts;
  line-height: 22.54rpx;
  color: #323232;
}
.font_6 {
  font-size: 26.25rpx;
  font-family: FangZhengFonts;
  line-height: 17.23rpx;
  color: #323232;
}
.text_27 {
  line-height: 17.53rpx;
}
.image_5 {
  border-radius: 9.38rpx 0rpx 0rpx 9.38rpx;
  width: 45rpx;
  height: 45rpx;
}
.text-wrapper {
  padding: 16.31rpx 0 16.46rpx;
  background-color: #ffaaa5;
  width: 58.13rpx;
  height: 45rpx;
}
.font_5 {
  font-size: 26.25rpx;
  font-family: FangZhengFonts;
  line-height: 17.23rpx;
  color: #ffffff;
}
.image_6 {
  border-radius: 0rpx 9.38rpx 9.38rpx 0rpx;
  width: 45rpx;
  height: 45rpx;
}
.group_9 {
  line-height: 21.71rpx;
  height: 21.71rpx;
}
.text_12 {
  line-height: 21.71rpx;
}
.text_13 {
  color: #ed4845;
  line-height: 21rpx;
}
.image_8 {
  width: 26.25rpx;
  height: 26.25rpx;
}
.section_5 {
  margin-top: 16.88rpx;
  padding: 31.88rpx 13.13rpx 5.63rpx;
  background-color: #ffffff;
  border-radius: 18.75rpx;
}
.group_14 {
  padding: 0 24.02rpx;
}
.font_7 {
  font-size: 30rpx;
  font-family: FangZhengFonts;
  line-height: 29.18rpx;
  color: #323232;
}
.text_14 {
  line-height: 28.13rpx;
}
.font_8 {
  font-size: 30rpx;
  font-family: FangZhengFonts;
  line-height: 29.18rpx;
  color: #818181;
}
.image_9 {
  width: 33.75rpx;
  height: 33.75rpx;
}
.font_9 {
  font-size: 30rpx;
  font-family: FangZhengFonts;
  line-height: 20.04rpx;
  color: #323232;
}
.group_10 {
  padding-left: 22.97rpx;
  padding-right: 3.75rpx;
}
.group_11 {
  padding: 26.25rpx 10.42rpx 28.13rpx 24.62rpx;
  border-bottom: solid 1.88rpx #dfdfdf;
}
.text_15 {
  line-height: 29.42rpx;
}
.image_10 {
  margin-left: 21.6rpx;
}
.text_16 {
  margin-left: -55.35rpx;
  line-height: 25.74rpx;
}
.text_17 {
  margin-left: 33.68rpx;
  color: #ffaaa5;
}
.group_12 {
  padding: 26.25rpx 11.94rpx 28.13rpx 23.44rpx;
}
.text_18 {
  line-height: 27.77rpx;
}
.section_6 {
  margin-top: 16.88rpx;
  padding: 17.81rpx 24.13rpx 22.5rpx;
  background-color: #ffffff;
  border-radius: 18.75rpx;
}
.text_19 {
  color: #000000;
  line-height: 29.53rpx;
}
.text-wrapper_2 {
  margin-left: 3.99rpx;
  margin-right: 3.99rpx;
  padding: 22.35rpx 20rpx;
  background-color: #ffefef;
  border-radius: 9.38rpx;
}
.text_20 {
  margin-left: 21.15rpx;
  line-height: 21.81rpx;
}
.section_7 {
  padding: 16.88rpx 25.31rpx 15rpx;
  background-color: #ffffff;
}
.pos_8 {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
}
.image_11 {
  margin-left: 85.31rpx;
}
.text_21 {
  margin-left: -119.06rpx;
  color: #000000;
  font-size: 30rpx;
  font-family: FangZhengFonts;
  line-height: 26.49rpx;
}
.text_22 {
  margin-left: 28.5rpx;
  color: #ffaaa5;
  font-size: 37.5rpx;
  font-family: Open Sans;
  font-weight: 700;
  line-height: 27.62rpx;
}
.text_24 {
  color: #ffaaa5;
  font-size: 30rpx;
  font-family: Open Sans;
  font-weight: 700;
  line-height: 22.05rpx;
}
.text-wrapper_3 {
  padding: 20.51rpx 0 22.97rpx;
  background-color: #ffaaa5;
  border-radius: 75rpx;
  width: 204.38rpx;
  height: 71.25rpx;
}
.text_23 {
  color: #ffffff;
  line-height: 27.77rpx;
}
@import url(../../../common/css/global.css);
</style>
