2025-03-22 03:18:54 +00:00
|
|
|
|
<template>
|
2025-03-24 03:33:28 +00:00
|
|
|
|
<view class="flex-col justify-start relative page" :style="{ backgroundImage: 'url(' + bkgPubilcPath + ')'}">
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<view class="flex-row justify-between items-center section_2 pos" @click="openPopup">
|
2025-03-22 03:18:54 +00:00
|
|
|
|
<view class="flex-row items-center">
|
|
|
|
|
<image
|
|
|
|
|
class="shrink-0 image"
|
2025-03-23 10:31:11 +00:00
|
|
|
|
:src="clothesRentUrl + '/clothesRentSubmitOrder/lxr.png'"
|
2025-03-22 03:18:54 +00:00
|
|
|
|
/>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<text class="ml-10 font text">{{ contactInfo.name }} {{ contactInfo.phone }}</text>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-row">
|
|
|
|
|
<text class="font_2 text_2">更换联系人</text>
|
|
|
|
|
<image
|
|
|
|
|
class="ml-2 shrink-0 image_2"
|
2025-03-23 10:31:11 +00:00
|
|
|
|
:src="clothesRentUrl + '/clothesRentSubmitOrder/yjt.png'"
|
2025-03-22 03:18:54 +00:00
|
|
|
|
/>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-col section_3 pos_2">
|
|
|
|
|
<view class="flex-row justify-between">
|
|
|
|
|
<view class="flex-row">
|
|
|
|
|
<image
|
|
|
|
|
class="image_3"
|
2025-03-23 10:31:11 +00:00
|
|
|
|
:src="publicPath + clothesInfo.image"
|
2025-03-22 03:18:54 +00:00
|
|
|
|
/>
|
|
|
|
|
<view class="flex-col items-start group_2 ml-15">
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<text class="font text_3">{{ clothesInfo.name }}</text>
|
|
|
|
|
<text class="mt-64 font_3">¥{{ clothesInfo.price.toFixed(2) }}</text>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<view class="flex-col items-center self-start group" @click="nav">
|
2025-03-22 03:18:54 +00:00
|
|
|
|
<image
|
|
|
|
|
class="image_4"
|
2025-03-23 10:31:11 +00:00
|
|
|
|
:src="clothesRentUrl + '/clothesRentSubmitOrder/nav.png'"
|
2025-03-22 03:18:54 +00:00
|
|
|
|
/>
|
|
|
|
|
<text class="font_2 text_4 mt-11">提货地址</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-row justify-between items-baseline group_3">
|
|
|
|
|
<text class="font">租赁天数</text>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<text class="font_3 text_5">X{{ period }}</text>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-row justify-between items-baseline group_4">
|
|
|
|
|
<text class="font text_6">总计</text>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<text class="text_7">¥{{ totalAmount.toFixed(2) }}</text>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="flex-row justify-between items-center section_4 pos_3">
|
|
|
|
|
<view class="flex-row items-baseline">
|
|
|
|
|
<text class="font_4 text_8">定金:</text>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<text class="font_4 text_9">¥{{ totalAmount.toFixed(2) }}</text>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
<view class="flex-col justify-start items-center text-wrapper" @click="wxPayFd">
|
|
|
|
|
<text class="font text_10">确定</text>
|
|
|
|
|
</view>
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
|
|
|
|
|
<uni-popup ref="popup" background-color="#fff">
|
|
|
|
|
<view class="popup-content">
|
|
|
|
|
<contactsComponentVue></contactsComponentVue>
|
|
|
|
|
</view>
|
|
|
|
|
</uni-popup>
|
|
|
|
|
|
|
|
|
|
<!-- 遮罩层 -->
|
|
|
|
|
<view v-if="isShow" class="overlay"></view>
|
|
|
|
|
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2025-03-23 10:31:11 +00:00
|
|
|
|
import {nextTick, onMounted, onUnmounted, ref} from 'vue'
|
2025-03-22 03:18:54 +00:00
|
|
|
|
import { clothesRentUrl } from '../../../common/globalImagesUrl';
|
2025-03-23 10:31:11 +00:00
|
|
|
|
import { onLoad } from "@dcloudio/uni-app";
|
|
|
|
|
import { baseUrl } from '../../../api/request';
|
2025-03-24 03:33:28 +00:00
|
|
|
|
import { publicPath,bkgPubilcPath } from '../../../common/globalImagesUrl';
|
2025-03-23 10:31:11 +00:00
|
|
|
|
import emitter from '../../../utils/emitter';
|
|
|
|
|
import { JudgeIsNullity, dealResult } from '../../../common/globalFunction';
|
|
|
|
|
import contactsComponentVue from '../../order/component/contactsComponent.vue';
|
2025-03-24 03:33:28 +00:00
|
|
|
|
import { getFonts } from '../../../common/globalFont';
|
2025-03-23 10:31:11 +00:00
|
|
|
|
const period = ref(0)
|
|
|
|
|
let id = 0
|
|
|
|
|
const clothesInfo = ref({})
|
|
|
|
|
const contactInfo = ref({})
|
|
|
|
|
const totalAmount = ref(0)
|
|
|
|
|
const cookie = wx.getStorageSync('cookie')
|
|
|
|
|
const popup = ref(null)
|
|
|
|
|
|
|
|
|
|
//防抖相关变量
|
|
|
|
|
let wxPayTimer = null;
|
|
|
|
|
let loading = false;
|
|
|
|
|
let isLoading = ref(false)
|
|
|
|
|
let isShow = ref(false)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const openPopup = () => {
|
|
|
|
|
popup.value.open('bottom')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const closeHandler = () => {
|
|
|
|
|
nextTick(() => {
|
|
|
|
|
if (popup.value) {
|
|
|
|
|
popup.value.close()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const contactsNowInfoHandler = (val) => {
|
|
|
|
|
contactInfo.value = val
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const delContactByIdHandler = (val) => {
|
|
|
|
|
if (contactInfo.value.id === val) {
|
|
|
|
|
contactInfo.value = {}
|
|
|
|
|
contactInfo.value.name = '请选择联系人'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const updateContactObjHandler = (val) => {
|
|
|
|
|
if (contactInfo.value.id === val.id) {
|
|
|
|
|
contactInfo.value = val
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onLoad((options) => {
|
|
|
|
|
id = JSON.parse(options.id)
|
|
|
|
|
period.value = JSON.parse(options.period)
|
2025-03-24 03:33:28 +00:00
|
|
|
|
getFonts()
|
2025-03-23 10:31:11 +00:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
getClothesInfoById()
|
|
|
|
|
getDefaultContact()
|
|
|
|
|
|
|
|
|
|
emitter.on('close', closeHandler)
|
|
|
|
|
|
|
|
|
|
emitter.on('contactsNowInfo', contactsNowInfoHandler)
|
|
|
|
|
|
|
|
|
|
emitter.on('delContactById', delContactByIdHandler)
|
|
|
|
|
|
|
|
|
|
emitter.on('updateContactObj', updateContactObjHandler)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
onUnmounted(() => {
|
|
|
|
|
|
|
|
|
|
emitter.off('close', closeHandler)
|
|
|
|
|
|
|
|
|
|
emitter.off('contactsNowInfo', contactsNowInfoHandler)
|
|
|
|
|
|
|
|
|
|
emitter.off('delContactById', delContactByIdHandler)
|
|
|
|
|
|
|
|
|
|
emitter.off('updateContactObj', updateContactObjHandler)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const getClothesInfoById = async () => {
|
|
|
|
|
const res = await uni.request({
|
|
|
|
|
url: baseUrl + '/clothes/get/label/id',
|
|
|
|
|
method: 'POST',
|
|
|
|
|
header: {
|
|
|
|
|
cookie
|
|
|
|
|
},
|
|
|
|
|
data: {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
clothesInfo.value = res.data.data
|
|
|
|
|
let singlePrice = clothesInfo.value.price
|
|
|
|
|
totalAmount.value = singlePrice * period.value
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const nav = () => {
|
|
|
|
|
wx.openLocation({
|
|
|
|
|
latitude: 45.867741,
|
|
|
|
|
longitude: 126.560037,
|
|
|
|
|
name: '哈尔滨师范大学(松北校区)',
|
|
|
|
|
address: '黑龙江省哈尔滨市呼兰区利民经济开发区师大路1号',
|
|
|
|
|
success: (res) => {
|
|
|
|
|
console.log(res)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取用户默认联系人
|
|
|
|
|
const getDefaultContact = async () =>{
|
|
|
|
|
const res = await uni.request({
|
|
|
|
|
url: baseUrl + '/contacts/list',
|
|
|
|
|
method: 'POST',
|
|
|
|
|
header: {
|
|
|
|
|
cookie: wx.getStorageSync('cookie')
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if(res.data.code === 1) {
|
|
|
|
|
console.log('联系人数组---->',res.data.data);
|
|
|
|
|
}
|
|
|
|
|
let contactArr = res.data.data
|
|
|
|
|
for(let key in contactArr) {
|
|
|
|
|
if(contactArr[key].isDefault === 1) {
|
|
|
|
|
contactInfo.value = contactArr[key]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (JudgeIsNullity(contactInfo.value.name)) {
|
|
|
|
|
contactInfo.value.name = '请选择联系人'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const wxPayFd = () => { //微信支付按钮防抖
|
|
|
|
|
if (JudgeIsNullity(contactInfo.value.phone) || JudgeIsNullity(contactInfo.value.id)) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '请选择联系人',
|
|
|
|
|
icon: 'error'
|
|
|
|
|
})
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
clearTimeout(wxPayTimer)
|
|
|
|
|
showLoading()
|
|
|
|
|
isShow.value = true
|
|
|
|
|
wxPayTimer = setTimeout(async () => {
|
|
|
|
|
await createOrder()
|
|
|
|
|
}, 1000)
|
|
|
|
|
}
|
|
|
|
|
function showLoading() { //加载弹窗
|
|
|
|
|
if (!loading) {
|
|
|
|
|
wx.showLoading({
|
|
|
|
|
title: '加载中...',
|
|
|
|
|
});
|
|
|
|
|
loading = true;
|
|
|
|
|
isLoading.value = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function hideLoading() { //关闭弹窗
|
|
|
|
|
if (loading) {
|
|
|
|
|
wx.hideLoading();
|
|
|
|
|
loading = false;
|
|
|
|
|
isLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const createOrder = async () => {
|
|
|
|
|
const res = await uni.request({
|
|
|
|
|
url: baseUrl + '/clothesRent/add',
|
|
|
|
|
method: 'POST',
|
|
|
|
|
header: {
|
|
|
|
|
cookie: wx.getStorageSync('cookie')
|
|
|
|
|
},
|
|
|
|
|
data: {
|
|
|
|
|
clothesId: id,
|
|
|
|
|
contactsId: contactInfo.value.id,
|
|
|
|
|
rentDays: period.value
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (!dealResult(res)) {
|
|
|
|
|
hideLoading()
|
|
|
|
|
isShow.value = false
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
wxPay(res.data.data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const wxPay = async ( oid )=> { //传入订单id
|
|
|
|
|
try {
|
|
|
|
|
const res = await uni.request({
|
|
|
|
|
url: baseUrl + '/wechat/payment/clothesRent/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/clothesRent/clotherRentOrderList/clotherRentOrderList'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}catch(error) {
|
|
|
|
|
console.error('支付请求失败',error);
|
|
|
|
|
uni.showModal({
|
|
|
|
|
content: '支付请求失败,请重试',
|
|
|
|
|
showCancel: false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-22 03:18:54 +00:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
2025-03-23 10:31:11 +00:00
|
|
|
|
.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: 800rpx;
|
|
|
|
|
}
|
2025-03-22 03:18:54 +00:00
|
|
|
|
.ml-15 {
|
|
|
|
|
margin-left: 28.13rpx;
|
|
|
|
|
}
|
|
|
|
|
.mt-11 {
|
|
|
|
|
margin-top: 20.63rpx;
|
|
|
|
|
}
|
|
|
|
|
.page {
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
overflow-x: hidden;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
.section_2 {
|
|
|
|
|
padding: 30rpx 15rpx 30rpx 24.38rpx;
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
border-radius: 18.75rpx;
|
|
|
|
|
}
|
|
|
|
|
.pos {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 22.5rpx;
|
|
|
|
|
right: 24.38rpx;
|
|
|
|
|
top: 37.5rpx;
|
|
|
|
|
}
|
|
|
|
|
.image {
|
|
|
|
|
width: 50.63rpx;
|
|
|
|
|
height: 50.63rpx;
|
|
|
|
|
}
|
|
|
|
|
.font {
|
|
|
|
|
font-size: 30rpx;
|
2025-03-24 03:33:28 +00:00
|
|
|
|
font-family: FangZhengFonts;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
line-height: 28.84rpx;
|
|
|
|
|
color: #323232;
|
|
|
|
|
}
|
|
|
|
|
.text {
|
|
|
|
|
color: #818181;
|
|
|
|
|
line-height: 25.89rpx;
|
|
|
|
|
}
|
|
|
|
|
.font_2 {
|
|
|
|
|
font-size: 26.25rpx;
|
2025-03-24 03:33:28 +00:00
|
|
|
|
font-family: FangZhengFonts;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
line-height: 25.54rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_2 {
|
|
|
|
|
margin: 3.75rpx 0;
|
|
|
|
|
color: #e79ea1;
|
|
|
|
|
}
|
|
|
|
|
.image_2 {
|
|
|
|
|
width: 30rpx;
|
|
|
|
|
height: 30rpx;
|
|
|
|
|
}
|
|
|
|
|
.section_3 {
|
2025-03-23 10:31:11 +00:00
|
|
|
|
padding: 25.75rpx 18.75rpx;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
border-radius: 18.75rpx;
|
|
|
|
|
}
|
|
|
|
|
.pos_2 {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 22.5rpx;
|
|
|
|
|
right: 24.38rpx;
|
|
|
|
|
top: 168.75rpx;
|
|
|
|
|
}
|
|
|
|
|
.image_3 {
|
|
|
|
|
border-radius: 9.38rpx;
|
|
|
|
|
width: 161.25rpx;
|
|
|
|
|
height: 176.25rpx;
|
|
|
|
|
}
|
|
|
|
|
.group_2 {
|
|
|
|
|
margin-top: 3.75rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_3 {
|
|
|
|
|
line-height: 29.18rpx;
|
|
|
|
|
}
|
|
|
|
|
.font_3 {
|
|
|
|
|
font-size: 30rpx;
|
2025-03-24 03:33:28 +00:00
|
|
|
|
font-family: FangZhengFonts;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
line-height: 20.04rpx;
|
|
|
|
|
color: #323232;
|
|
|
|
|
}
|
|
|
|
|
.group {
|
|
|
|
|
// margin-right: 22.5rpx;
|
|
|
|
|
}
|
|
|
|
|
.image_4 {
|
|
|
|
|
width: 46.88rpx;
|
|
|
|
|
height: 46.88rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_4 {
|
|
|
|
|
color: #323232;
|
|
|
|
|
line-height: 25.22rpx;
|
|
|
|
|
}
|
|
|
|
|
.group_3 {
|
|
|
|
|
margin-top: 37.5rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_5 {
|
|
|
|
|
margin-right: 18.75rpx;
|
|
|
|
|
}
|
|
|
|
|
.group_4 {
|
|
|
|
|
margin-top: 22.5rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_6 {
|
|
|
|
|
line-height: 28.13rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_7 {
|
|
|
|
|
color: #c35c5d;
|
|
|
|
|
font-size: 33.75rpx;
|
2025-03-24 03:33:28 +00:00
|
|
|
|
font-family: FangZhengFonts;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
line-height: 22.54rpx;
|
|
|
|
|
}
|
|
|
|
|
.section_4 {
|
|
|
|
|
padding: 26.25rpx;
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
}
|
|
|
|
|
.pos_3 {
|
|
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
}
|
|
|
|
|
.font_4 {
|
|
|
|
|
font-size: 37.5rpx;
|
2025-03-24 03:33:28 +00:00
|
|
|
|
font-family: FangZhengFonts;
|
2025-03-22 03:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
.text_8 {
|
|
|
|
|
color: #323232;
|
|
|
|
|
line-height: 34.42rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_9 {
|
|
|
|
|
margin-left: -7.5rpx;
|
|
|
|
|
color: #c35c5d;
|
|
|
|
|
line-height: 25.05rpx;
|
|
|
|
|
}
|
|
|
|
|
.text-wrapper {
|
|
|
|
|
margin-right: 3.75rpx;
|
|
|
|
|
padding: 22.5rpx 0;
|
|
|
|
|
background-color: #e79ea1;
|
|
|
|
|
border-radius: 187.5rpx;
|
|
|
|
|
width: 241.88rpx;
|
|
|
|
|
height: 76.88rpx;
|
|
|
|
|
}
|
|
|
|
|
.text_10 {
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
line-height: 28.01rpx;
|
|
|
|
|
}
|
|
|
|
|
@import url(../../../common/css/global.css);
|
|
|
|
|
</style>
|