Browse Source

酒店预约添加立即支付

DaMowang 2 years ago
parent
commit
198646fd3d

+ 1 - 1
src/pages.json

@@ -132,7 +132,7 @@
 		{
 			"path": "pages/accountDetails/integral",
 			"style": {
-				"navigationBarTitleText": "积分明细"
+				"navigationBarTitleText": "批发券明细"
 			}
 		},
 		{

+ 6 - 24
src/pages/account/wealth.vue

@@ -2,17 +2,17 @@
   <view class="container">
     <!-- 财富列表 -->
     <view class="con flex_r flex_ac flex_jb mar_t16">
-      <view class="list flex_c flex_ac" @click="goAccMoney">
+      <view class="list flex_c flex_ac" @click="goto('/pages/accountDetails/running')">
         <view class="list_name">余额</view>
         <view class="list_text dinB">{{ userinfo.user_money }}</view>
       </view>
-      <view class="list flex_c flex_ac" @click="goIntegral">
+      <view class="list flex_c flex_ac" @click="goto('/pages/accountDetails/integral')">
         <view class="list_name">批发券</view>
         <view class="list_text dinB">{{ userinfo.integral }}</view>
       </view>
     </view>
     <view class="con flex_r flex_ac mar_t16">
-      <view class="list flex_c flex_ac" @click="goDetail">
+      <view class="list flex_c flex_ac" @click="goto('/pages/accountDetails/teaBaby')">
         <view class="list_name">茶宝</view>
         <view class="list_text dinB">{{ userinfo.cha_bao }}</view>
       </view>
@@ -28,29 +28,11 @@ export default {
   data() {
     return {
       details: {},
-      userinfo: undefined, // 获取用户信息
+      userinfo: uni.getStorageSync("userinfo"),
     };
   },
-  onLoad: function() {
-    this.userinfo = uni.getStorageSync("userinfo");
-  },
-  methods: {
-    goDetail: function(integralType, pageName) {
-      uni.navigateTo({
-        url: "/pages/accountDetails/teaBaby",
-      });
-    },
-    goAccMoney: function() {
-      uni.navigateTo({
-        url: "/pages/accountDetails/running",
-      });
-    },
-    goIntegral() {
-      uni.navigateTo({
-        url: "/pages/accountDetails/integral",
-      });
-    },
-  },
+  onLoad() {},
+  methods: {},
 };
 </script>
 <style lang="scss">

+ 8 - 8
src/pages/my/index.vue

@@ -42,11 +42,11 @@
             </view> -->
             <!-- 账户信息 -->
             <view class="acc_info flex_r flex_jse">
-                <div class="i_num">
+                <div class="i_num" @click="goto('/pages/accountDetails/teaBaby')">
                     <p>茶宝</p>
                     <p class="dinB">{{userinfo.cha_bao}}</p>
                 </div>
-                <div class="i_num">
+                <div class="i_num" @click="goto('/pagesB/accountDetails/TeaC')">
                     <p>TeaC</p>
                     <p class="dinB">{{userinfo.teac}}</p>
                 </div>
@@ -157,12 +157,16 @@
                         <image class="fun_img" src="/static/my/assistantHistory.png"></image>
                         <view class="fun_text">开票历史</view>
                     </navigator>
+                    <navigator class="fun_list flex_c flex_ac" @click="goto('/pages/my/userinfo')" hover-class="none">
+                        <image class="fun_img" src="/static/my/h_n.png"></image>
+                        <view class="fun_text">头像昵称</view>
+                    </navigator>
+                </view>
+                <view class="fun_con mar_t50 flex_r flex_ac">
                     <navigator class="fun_list flex_c flex_ac" @click="goto('/pages/agreement/index',{tit:'新手教程',type:1})" hover-class="none">
                         <image class="fun_img" src="/static/my/green.png"></image>
                         <view class="fun_text">新手教程</view>
                     </navigator>
-                </view>
-                <view class="fun_con mar_t50 flex_r flex_ac">
                     <navigator class="fun_list flex_c flex_ac" @click="goto('/pages/agreement/index',{tit:'关于我们',type:7})" hover-class="none">
                         <image class="fun_img" src="/static/my/about.png"></image>
                         <view class="fun_text">关于我们</view>
@@ -171,10 +175,6 @@
                         <image class="fun_img" src="/static/my/feedback.png"></image>
                         <view class="fun_text">用户须知</view>
                     </navigator>
-                    <navigator class="fun_list flex_c flex_ac" @click="goto('/pages/my/userinfo')" hover-class="none">
-                        <image class="fun_img" src="/static/my/h_n.png"></image>
-                        <view class="fun_text">头像昵称</view>
-                    </navigator>
                     <view class="fun_list flex_c flex_ac">
                         <button open-type="contact" style="background: #fff; border: 0; line-height: 1; padding: 0">
                             <image class="fun_img" src="/static/my/service.png"></image>

+ 4 - 6
src/pagesB/address/list.vue

@@ -6,12 +6,10 @@
         v-for="(i, s) in addressList"
         :key="s"
       >
-        <view class="addressLi clearfix" @click="onSelect(i, s)">
+        <view class="addressLi clearfix">
           <view class="addressLi_l">
             <div class="a_icon iconfont" v-if="i.status == 1">&#xe62a;</div>
             <div class="a_icon" v-else>{{ i.name.slice(0,1) }}</div>
-            <!-- <text v-if="i.id != presentId" class="iconfont">&#xe623;</text>
-            <text v-else class="iconfont pitchOn">&#xe624;</text> -->
           </view>
           <view class="addressLi_r">
             <view class="user">
@@ -104,8 +102,8 @@ export default {
       .a_icon{
         width: 60rpx;
         height: 60rpx;
-        color: #f50;
-        background: rgba($color: #f50, $alpha: 0.15);
+        color: #f00;
+        background: rgba($color: #f00, $alpha: 0.2);
         text-align: center;
         line-height: 60rpx;
         border-radius: 50%;
@@ -113,7 +111,7 @@ export default {
       }
 
       .iconfont {
-        background: rgba($color: #f50, $alpha: 0.2);
+        background: rgba($color: #f00, $alpha: 0.5);
         color: #fff;
       }
     }

+ 15 - 9
src/pagesB/hotel/hotel.vue

@@ -4,15 +4,15 @@
             <image :src="detail.mainImage" mode="aspectFill" class="bg_img" />
         </div>
         <div class="head_info">
-            <div class="head_name flex_r flex_jb flex_ac">
-                <div class="name">{{ detail.hotelName }}</div>
-                <div class="h_tags">
-                    <span>{{ detail.avgScore }}分</span>
-                    <span>{{ hotelStarF(detail.hotelStar) }}</span>
+            <div class="head_name">{{ detail.hotelName }}</div>
+            <div class="h_address flex_r flex_jb flex_ac">
+                <div class="hil">
+                    <div class="h_tags">
+                        <span>{{ detail.avgScore }}分</span>
+                        <span>{{ hotelStarF(detail.hotelStar) }}</span>
+                    </div>
+                    <div class="address">{{ detail.address }}</div>
                 </div>
-            </div>
-            <div class="h_address flex_r flex_jb flex_as">
-                <div class="address">{{ detail.address }}</div>
                 <div class="iconfont ico" @click="openm">&#xe6b3;</div>
             </div>
             <div class="RatePlan">
@@ -166,6 +166,7 @@ export default {
     .h_tags {
         font-size: 25rpx;
         font-weight: 400;
+        margin-bottom: 6rpx;
 
         span {
             margin-right: 18rpx;
@@ -181,10 +182,13 @@ export default {
         margin-bottom: 30rpx;
 
         .address {
-            width: calc(100% - 100rpx);
             font-size: 24rpx;
         }
 
+        .hil{
+            width: calc(100% - 100rpx);
+        }
+
         .ico {
             width: 60rpx;
             height: 50rpx;
@@ -196,6 +200,7 @@ export default {
 }
 
 .RatePlan {
+    padding-bottom: 60rpx;
     .Room {
         background-color: #fff;
         padding: 15rpx 18rpx;
@@ -352,6 +357,7 @@ export default {
                         background: #00B76C;
                         color: #fff;
                         font-size: 24rpx;
+                        border-radius: 10rpx 10rpx 0 0;
                     }
                 }
             }

+ 9 - 5
src/pagesB/hotel/hotelDetail.vue

@@ -128,7 +128,7 @@ export default {
             this.Integral = this.$h.Mul(i1, 100);
             this.deduction = this.$h.Mul(this.cartTotal, i1);
             this.actuallypaid = this.$h.Sub(this.cartTotal, this.deduction);
-            this.chabao = this.$h.Mul(this.actuallypaid, i2);
+            this.chabao = this.$h.Mul(this.actuallypaid, i2).toFixed(2);
         },
         arriveTimearr(){
             let tim = this.$day(this.roomInfo.checkInDate + " 18:00:00"), arr = [];
@@ -163,15 +163,19 @@ export default {
             this.qda.arriveTime = va
         },
         onpay() {
+            let RI = Object.assign({},this.roomInfo)
             let da = {
                 ...this.qda,
-                hotelID: this.roomInfo.hotelID,
-                ratePlanID: this.roomInfo.ratePlanId,
-                checkInDate: this.roomInfo.checkInDate,
-                checkOutDate: this.roomInfo.checkOutDate,
+                hotelID: RI.hotelID,
+                ratePlanID: RI.ratePlanId,
+                checkInDate: RI.checkInDate,
+                checkOutDate: RI.checkOutDate,
                 guestNames: this.guestNames,
                 // orderAmount: this.actuallypaid
             }
+            delete RI.ratePlans;
+            delete RI.ratePlanId;
+            da.attachment = JSON.stringify(RI);
             post("local/hotel/addOrder", da).then(res => {
                 if (res.code == 0 && res.data.prepayid) {
                     toPayOpre.toPay(res.data, (rea) => {

+ 5 - 6
src/pagesB/hotel/index.vue

@@ -63,7 +63,7 @@
         </dev>
         <div class="footimg">
             <image @click="search" class="btn" src="http://teaclub.oss-cn-chengdu.aliyuncs.com/CloudShop/head_pic/7603bae2564783682b68b025003cae9012f917dcpng" mode="widthFix">
-                <image class="img" src="http://teaclub.oss-cn-chengdu.aliyuncs.com/CloudShop/head_pic/2fd3f66be733feca588418d4a9537b3b1560431cpng" mode="widthFix">
+            <image class="img" src="http://teaclub.oss-cn-chengdu.aliyuncs.com/CloudShop/head_pic/2fd3f66be733feca588418d4a9537b3b1560431cpng" mode="widthFix">
         </div>
     </div>
 </template>
@@ -71,8 +71,8 @@
 import DatePicker from "@/pagesB/components/date-picker/date-picker.vue";
 import HAddress from "@/pagesB/components/h-address/address.vue";
 import nniSlider from "@/pagesB/components/nni-slider/slider.vue";
-const showmap = new QQMapWX({ key: 'NWSBZ-ZUME4-LLTU6-XSQGB-YBKAT-U4FCZ' });
 import QQMapWX from '@/utils/qqmap-wx-jssdk.min.js';
+const showmap = new QQMapWX({ key: 'K7LBZ-RE23Q-JEN5D-4ZNEI-MS54Q-BHF6D' });
 import { post } from "@/request/api.js";
 import { setCache } from "@/utils/storage.js"
 export default {
@@ -168,7 +168,6 @@ export default {
                     that.addrStr = district + street_number
                     let { lat, lng } = da.location
                     that.qda = { ...that.qda, longitude: lng, latitude: lat }
-                    console.log('逆地址解析:', result.result);
                 }
             });
         },
@@ -461,10 +460,10 @@ export default {
     left: 0;
 
     .btn {
-        width: 250rpx;
+        width: 272rpx;
         position: absolute;
-        left: calc(50% - 125rpx);
-        top: -8rpx;
+        left: calc(50% - 136rpx);
+        top: -3rpx;
     }
 
     .img {

+ 133 - 54
src/pagesB/hotel/orderDetail.vue

@@ -1,48 +1,50 @@
 <template>
     <div class="orderDetail">
-        <template v-if="detail">
-            <div class="card">
-                <div class="hotelName">{{ hotel.hotelName }}</div>
-                <div class="address">{{ hotel.address }}</div>
-                <div class="btnico flex_r flex_jb">
-                    <div class="btn_i" @click="openm">
-                        <span class="iconfont">&#xe8ae;</span>
-                        <div class="t">查看地图</div>
-                    </div>
-                    <div class="btn_i" @click="PhoneCall(hotel.phone)">
-                        <span class="iconfont">&#xe8ad;</span>
-                        <div class="t">联系酒店</div>
-                    </div>
+        <div class="card">
+            <div class="hotelName">{{ hotel.hotelName }}</div>
+            <div class="address">{{ hotel.address }}</div>
+            <div class="btnico flex_r flex_jb">
+                <div class="btn_i" @click="openm">
+                    <span class="iconfont">&#xe8ae;</span>
+                    <div class="t">查看地图</div>
                 </div>
-                <div class="roominfo">
-                    <div class="name">{{ detail.roomTypeName }}</div>
-                    <div class="days">
-                        <span>{{ daydate(detail.checkInDate) }} - {{ daydate(detail.checkOutDate) }}</span>
-                        <span class="dn">共{{ detail.numberOfNights }}晚</span>
-                    </div>
-                    <div class="tegs">
-                        <span>{{ detail.bedTypeName }}</span>
-                        <span>{{ detail.breakfastDesc }}</span>
-                        <span>{{ detail.cancelDesc }}</span>
-                    </div>
-                    <div class="pli">
-                        <div class="label">入住人</div>
-                        <span>{{ detail.guestNames }}</span>
-                    </div>
-                    <div class="pli">
-                        <div class="label">联系手机</div>
-                        <span>{{ detail.contactMobile }}</span>
-                    </div>
-                    <div class="pli" v-if="detail.arriveTime">
-                        <div class="label">预计到店</div>
-                        <span>{{ detail.arriveTime }}</span>
-                    </div>
-                    <div class="pli" v-else>
-                        <div class="label">入住时间</div>
-                        <span>{{ daydate2(detail.checkInDate) + " 12:00" }}后</span>
-                    </div>
+                <div class="btn_i" @click="PhoneCall(hotel.phone)">
+                    <span class="iconfont">&#xe8ad;</span>
+                    <div class="t">联系酒店</div>
                 </div>
             </div>
+            <div class="roominfo">
+                <div class="name">{{ roomInfo.roomName }}</div>
+                <div class="days">
+                    <span>{{ daydate(roomInfo.checkInDate) }} - {{ daydate(roomInfo.checkOutDate) }}</span>
+                    <span class="dn">共{{ getDaysBetween(roomInfo.checkInDate,roomInfo.checkOutDate) }}晚</span>
+                </div>
+                <div class="tegs">
+                    <span>{{ roomInfo.windowType }}</span>
+                    <span>{{ roomInfo.breakfast }}</span>
+                    <span>{{ roomInfo.useableArea }}</span>
+                    <span>{{ roomInfo.bedType }}</span>
+                </div>
+                <div class="pli">
+                    <div class="label">入住人</div>
+                    <span>{{ qda.guestNames }}</span>
+                </div>
+                <div class="pli">
+                    <div class="label">联系手机</div>
+                    <span>{{ qda.contactMobile }}</span>
+                </div>
+                <div class="pli" v-if="detail.arriveTime">
+                    <div class="label">预计到店</div>
+                    <span>{{ qda.arriveTime }}</span>
+                </div>
+                <div class="pli" v-else>
+                    <div class="label">入住时间</div>
+                    <span>{{ qda.checkInDate + " 12:00" }}后</span>
+                </div>
+            </div>
+        </div>
+        
+        <template v-if="detail">
             <div class="card">
                 <div class="tit">订单信息</div>
                 <div class="pli">
@@ -60,26 +62,37 @@
 
             </div>
         </template>
+
         <template v-else>
-            <div class="card">
-                <div class="hotelName">{{ hotel.hotelName }}</div>
-                <div class="address">{{ hotel.address }}</div>
-                <div class="btnico flex_r flex_jb">
-                    <div class="btn_i" @click="openm">
-                        <span class="iconfont">&#xe8ae;</span>
-                        <div class="t">查看地图</div>
-                    </div>
-                    <div class="btn_i" @click="PhoneCall(hotel.phone)">
-                        <span class="iconfont">&#xe8ad;</span>
-                        <div class="t">联系酒店</div>
-                    </div>
+            <div class="money card">
+                <div class="li flex_r flex_jb">
+                    <span>消费金额</span>
+                    <span>¥{{ order.order_amount || 0 }}</span>
+                </div>
+                <div class="li flex_r flex_jb">
+                    <span>消费金抵扣<span class="corg">{{Integral}}%</span></span>
+                    <span class="corg">-¥{{ deduction || 0 }}</span>
+                </div>
+                <div class="li flex_r flex_jb">
+                    <span>实付金额</span>
+                    <span>¥{{ actuallypaid || 0 }}</span>
+                </div>
+            </div>
+            <div class="money card">
+                <div class="li flex_r flex_jb">
+                    <span>赠送茶宝</span>
+                    <span>{{ chabao || 0 }}</span>
                 </div>
             </div>
+            <div class="footbtn" @click="pay" v-if="$day().unix() < $day(order.create_time).add(30, 'm').unix()">立即支付</div>
         </template>
     </div>
 </template>
 
 <script>
+import { ToPayOpre } from "@/utils/reqTools.js";
+let toPayOpre = new ToPayOpre();
+import { getDaysBetween } from "@/utils/myfun.js"
 import { post } from "@/request/api.js";
 export default {
     name: "orderDetail",
@@ -91,10 +104,17 @@ export default {
             hotel: {},
             detail: {},
             order: {},
-            ratePlan: {}
+            roomInfo: {},
+            qda: {},
+
+            Integral: 0,
+            deduction: 0,
+            actuallypaid: 0,
+            chabao: 0,
         };
     },
     methods: {
+        getDaysBetween,
         daydate(va) {
             return this.$day(va).format("M月DD日")
         },
@@ -106,9 +126,12 @@ export default {
                 if (res.code == 0) {
                     this.detail = res.data.detail.data
                     this.order = res.data.order
+                    this.roomInfo = JSON.parse(res.data.order.orderGoods[0].attachment);
                     let de = JSON.parse(res.data.order.product_detail)
                     let { hotelID,checkInDate,checkOutDate } = de
                     this.gethotel({ hotelID,checkInDate,checkOutDate })
+                    this.qda = de
+                    this.getIntegral()
                 }
             })
         },
@@ -134,6 +157,31 @@ export default {
         PhoneCall(va){
             uni.makePhoneCall({ phoneNumber: va });
         },
+        getIntegral() {
+            post("local/getIntegral", { type: 4 }).then(res => {
+                if (res.code == 0) {
+                    let i1 = res.data.integral, i2 = res.data.chabao;
+                    this.Integral = this.$h.Mul(i1, 100);
+                    this.deduction = this.$h.Mul(this.order.order_amount, i1);
+                    this.actuallypaid = this.$h.Sub(this.order.order_amount, this.deduction);
+                    this.chabao = this.$h.Mul(this.actuallypaid, i2).toFixed(2);
+                }
+            })
+        },
+        pay() {
+            post("local/goOrderPay", { trade_no: this.order.trade_no }).then(res => {
+                if (res.code == 0 && res.data.data.prepayid) {
+                    toPayOpre.toPay(res.data.data, (rea) => {
+                        if (!rea) {
+                            // 支付成功
+                            this.getTicket(this.pda);
+                        } else {
+                            // 支付失败
+                        }
+                    });
+                }
+            })
+        },
     },
     onLoad(da) {
         this.tradeNo = da.trade_no;
@@ -186,7 +234,7 @@ export default {
         }
         .tegs{
             font-size: 26rpx;
-            margin: 12rpx 0;
+            margin: 12rpx 0 36rpx;
             span{
                 margin-right: 12rpx;
                 &:last-child{
@@ -213,6 +261,37 @@ export default {
         margin-bottom: 16rpx;
     }
 }
+.money {
+    .li {
+        margin-bottom: 16rpx;
+
+        &:last-child {
+            margin-bottom: 0;
+        }
+
+        span {
+            font-size: 30rpx;
+        }
+    }
+
+    .corg {
+        color: #18bb88;
+        margin-left: 12rpx;
+    }
+}
+.footbtn {
+    width: calc(100% - 60rpx);
+    height: 80rpx;
+    background: #17bb87;
+    border-radius: 45rpx;
+    position: fixed;
+    bottom: 50rpx;
+    left: 30rpx;
+    color: #fff;
+    font-size: 36rpx;
+    text-align: center;
+    line-height: 80rpx;
+}
 .card {
     background-color: #fff;
     border-radius: 20rpx;

+ 2 - 1
src/pagesB/orderingfood/orderlist.vue

@@ -82,7 +82,8 @@ export default {
             if (i.type == 0) this.goto('/pagesB/orderingfood/detail', { trade_no: i.trade_no, brand_id: i.brand_id })
             else if (i.type == 1) this.goto('/pagesB/cinema/cinemaTicket', { tradeNo: i.trade_no })
             else if ([2,3].includes(i.type)) this.goto('/pagesB/directCharge/orderDetail', { trade_no: i.trade_no })
-            else if (i.type == 4 && [1,2].includes(i.status)) this.goto('/pagesB/hotel/orderDetail', { trade_no: i.trade_no })
+            else if (i.type == 4) this.goto('/pagesB/hotel/orderDetail', { trade_no: i.trade_no })
+            //  && [1,2].includes(i.status)
         },
         seatInfos(va,type){
             if(va&&type==1){

+ 1 - 1
src/utils/run_now.js

@@ -93,7 +93,7 @@ Array.prototype.remove = function (val) {
 
 // 逆地址解析reverseGeocoder
 // import QQMapWX from '@/utils/qqmap-wx-jssdk.min.js'
-// const showmap = new QQMapWX({ key: 'NWSBZ-ZUME4-LLTU6-XSQGB-YBKAT-U4FCZ' });
+// const showmap = new QQMapWX({ key: 'K7LBZ-RE23Q-JEN5D-4ZNEI-MS54Q-BHF6D' });
 // showmap.reverseGeocoder({
 //     success(result) {
 //         console.log('逆地址解析:', result);