orderDetail.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <template>
  2. <div class="orderDetail">
  3. <template v-if="detail">
  4. <div class="card">
  5. <div class="hotelName">{{ hotel.hotelName }}</div>
  6. <div class="address">{{ hotel.address }}</div>
  7. <div class="btnico flex_r flex_jb">
  8. <div class="btn_i" @click="openm">
  9. <span class="iconfont">&#xe8ae;</span>
  10. <div class="t">查看地图</div>
  11. </div>
  12. <div class="btn_i" @click="PhoneCall(hotel.phone)">
  13. <span class="iconfont">&#xe8ad;</span>
  14. <div class="t">联系酒店</div>
  15. </div>
  16. </div>
  17. <div class="roominfo">
  18. <div class="name">{{ detail.roomTypeName }}</div>
  19. <div class="days">
  20. <span>{{ daydate(detail.checkInDate) }} - {{ daydate(detail.checkOutDate) }}</span>
  21. <span class="dn">共{{ detail.numberOfNights }}晚</span>
  22. </div>
  23. <div class="tegs">
  24. <span>{{ detail.bedTypeName }}</span>
  25. <span>{{ detail.breakfastDesc }}</span>
  26. <span>{{ detail.cancelDesc }}</span>
  27. </div>
  28. <div class="pli">
  29. <div class="label">入住人</div>
  30. <span>{{ detail.guestNames }}</span>
  31. </div>
  32. <div class="pli">
  33. <div class="label">联系手机</div>
  34. <span>{{ detail.contactMobile }}</span>
  35. </div>
  36. <div class="pli" v-if="detail.arriveTime">
  37. <div class="label">预计到店</div>
  38. <span>{{ detail.arriveTime }}</span>
  39. </div>
  40. <div class="pli" v-else>
  41. <div class="label">入住时间</div>
  42. <span>{{ daydate2(detail.checkInDate) + " 12:00" }}后</span>
  43. </div>
  44. </div>
  45. </div>
  46. <div class="card">
  47. <div class="tit">订单信息</div>
  48. <div class="pli">
  49. <div class="label">订单编号</div>
  50. <span>{{ order.trade_no }}</span>
  51. </div>
  52. <div class="pli">
  53. <div class="label">磐河编号</div>
  54. <span>{{ detail.orderNo }}</span>
  55. </div>
  56. <div class="pli">
  57. <div class="label">下单时间</div>
  58. <span>{{ detail.createTime }}</span>
  59. </div>
  60. </div>
  61. </template>
  62. <template v-else>
  63. <div class="card">
  64. <div class="hotelName">{{ hotel.hotelName }}</div>
  65. <div class="address">{{ hotel.address }}</div>
  66. <div class="btnico flex_r flex_jb">
  67. <div class="btn_i" @click="openm">
  68. <span class="iconfont">&#xe8ae;</span>
  69. <div class="t">查看地图</div>
  70. </div>
  71. <div class="btn_i" @click="PhoneCall(hotel.phone)">
  72. <span class="iconfont">&#xe8ad;</span>
  73. <div class="t">联系酒店</div>
  74. </div>
  75. </div>
  76. </div>
  77. </template>
  78. </div>
  79. </template>
  80. <script>
  81. import { post } from "@/request/api.js";
  82. export default {
  83. name: "orderDetail",
  84. props: {},
  85. components: {},
  86. data() {
  87. return {
  88. tradeNo: "",
  89. hotel: {},
  90. detail: {},
  91. order: {},
  92. ratePlan: {}
  93. };
  94. },
  95. methods: {
  96. daydate(va) {
  97. return this.$day(va).format("M月DD日")
  98. },
  99. daydate2(va) {
  100. return this.$day(va).format("YYYY-MM-DD")
  101. },
  102. getorderDetail(da) {
  103. post("local/hotel/orderDetail",da).then(res => {
  104. if (res.code == 0) {
  105. this.detail = res.data.detail.data
  106. this.order = res.data.order
  107. let de = JSON.parse(res.data.order.product_detail)
  108. let { hotelID,checkInDate,checkOutDate,ratePlanID } = de
  109. this.gethotel({ hotelID,checkInDate,checkOutDate },ratePlanID)
  110. }
  111. })
  112. },
  113. gethotel(da,ratePlanID){
  114. post("/local/hotel/detail", da).then((res) => {
  115. if (res.code == 0) {
  116. this.hotel = res.data.data;
  117. }
  118. });
  119. post("/local/hotel/room", da).then((res) => {
  120. if (res.code == 0) {
  121. let da = res.data.data.rooms;
  122. for (const a of da) {
  123. for (const b of a.ratePlans) {
  124. if(b.ratePlanId == ratePlanID){
  125. this.ratePlan = Object.assign({},a,b)
  126. console.log(this.ratePlan);
  127. }
  128. }
  129. }
  130. }
  131. });
  132. },
  133. openm() {
  134. console.log(12);
  135. let latitude = this.hotel.googleLat;
  136. let longitude = this.hotel.googleLon;
  137. let name = this.hotel.hotelName;
  138. let address = this.hotel.address;
  139. uni.openLocation({
  140. latitude, longitude, scale: 18, name, address,
  141. success: function() {
  142. console.log('success');
  143. }
  144. });
  145. },
  146. PhoneCall(va){
  147. uni.makePhoneCall({ phoneNumber: va });
  148. },
  149. },
  150. onLoad(da) {
  151. this.tradeNo = da.trade_no;
  152. this.getorderDetail(da);
  153. },
  154. onShow() {},
  155. mounted() {},
  156. };
  157. </script>
  158. <style scoped lang='scss'>
  159. .orderDetail{
  160. padding: 28rpx 32rpx;
  161. .hotelName{
  162. font-size: 36rpx;
  163. font-weight: 600;
  164. }
  165. .address{
  166. font-size: 25rpx;
  167. color: #555;
  168. margin-top: 10rpx;
  169. }
  170. .btnico{
  171. padding: 26rpx 36rpx;
  172. margin-bottom: 10rpx;
  173. .iconfont{
  174. font-size: 40rpx;
  175. font-weight: bold;
  176. }
  177. .btn_i{
  178. text-align: center;
  179. .t{
  180. font-size: 22rpx;
  181. margin-top: 6rpx;
  182. }
  183. }
  184. }
  185. .roominfo{
  186. margin-top: 10rpx;
  187. .name{
  188. font-size: 32rpx;
  189. font-weight: 600;
  190. }
  191. .days{
  192. margin-top: 12rpx;
  193. font-size: 28rpx;
  194. .dn{
  195. margin-left: 16rpx;
  196. }
  197. }
  198. .tegs{
  199. font-size: 26rpx;
  200. margin: 12rpx 0;
  201. span{
  202. margin-right: 12rpx;
  203. &:last-child{
  204. margin-right: 0;
  205. }
  206. }
  207. }
  208. }
  209. .pli{
  210. margin-bottom: 10rpx;
  211. font-size: 26rpx;
  212. &:last-child{
  213. margin-bottom: 0;
  214. }
  215. .label{
  216. width: 150rpx;
  217. font-weight: 600;
  218. display: inline-block;
  219. }
  220. }
  221. .tit{
  222. font-size: 32rpx;
  223. font-weight: 600;
  224. margin-bottom: 16rpx;
  225. }
  226. }
  227. .card {
  228. background-color: #fff;
  229. border-radius: 20rpx;
  230. margin-bottom: 30rpx;
  231. padding: 28rpx 30rpx;
  232. font-size: 32rpx;
  233. box-shadow: 4rpx 4rpx 26rpx 2rpx rgba(17, 18, 29, 0.1);
  234. &:last-child {
  235. margin-bottom: 0;
  236. }
  237. }
  238. </style>