detail.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <template>
  2. <view>
  3. <view class="coupon-list" v-if="orderData">
  4. <view class="coupon-item" v-for="(item,index) in orderData" :key="index">
  5. <view class="header">{{item.certificate_id}}</view>
  6. <view class="body">
  7. <view class="info">
  8. <view class="name">{{item.product_name}}</view>
  9. <view class="desc">x {{item.count}}张</view>
  10. <view class="desc">有效期至{{item.expire_at}}</view>
  11. </view>
  12. <view class="right">
  13. <button class="btn" type="primary" @click="toDetail(item.certificate_id)" v-if="item.status==1">去使用</button>
  14. <button class="btn" type="default" @click="toView(item.order.order_sn)" v-if="item.status==2 && item.order">查看预约</button>
  15. </view>
  16. </view>
  17. <view class="state-img" v-if="item.status==1"><image src="/static/image/order-dot.png" mode="widthFix"></image></view>
  18. <view class="state-img" v-if="item.status==2"><image src="/static/image/fwz.png" mode="widthFix"></image></view>
  19. <view class="state-img" v-if="item.status==3"><image src="/static/image/end.png" mode="widthFix"></image></view>
  20. <view class="state-img" v-if="item.status==4"><image src="/static/image/ex.png" mode="widthFix"></image></view>
  21. </view>
  22. <navigator hover-class="none" url="/pages/user/license" class="tips">小程序资质亮照</navigator>
  23. </view>
  24. <view class="" v-else>
  25. <u-skeleton
  26. rows="3"
  27. title
  28. loading
  29. ></u-skeleton>
  30. </view>
  31. <view class="dialog-msg" v-if="msgDialog">
  32. <view class="mark"></view>
  33. <view class="msg-body">
  34. <view class="title">第三方服务声明<image src="/static/image/round_close.png" @click="msgDialog=false"></image></view>
  35. <view class="desc">本商品信息、交易以及售后服务由第三方提供,如由问题请联系在线客服或电话客服</view>
  36. </view>
  37. </view>
  38. <view class="kf-service" @click="toService"><image src="/static/image/kefu.png"></image></view>
  39. </view>
  40. </template>
  41. <script>
  42. var app;
  43. import * as Api from "@/static/api/home.js";
  44. export default {
  45. data() {
  46. return {
  47. order:"",
  48. msgDialog:false,
  49. orderData:null,
  50. option:{}
  51. }
  52. },
  53. onShow() {
  54. const pages = getCurrentPages();
  55. const currentPage = pages[pages.length - 1];
  56. const options = currentPage.options;
  57. this.option = options;
  58. this.getData();
  59. console.log('页面参数:', options);
  60. },
  61. onLoad(option) {
  62. app = this;
  63. // app.option = option;
  64. // app.getData();
  65. },
  66. methods: {
  67. toView(orderSn){
  68. if (!orderSn) return ;
  69. uni.navigateTo({
  70. url:"/pages/order/info?order="+orderSn
  71. })
  72. },
  73. toService(){
  74. if (!app.orderData[0].store.service_mobile) return false;
  75. uni.makePhoneCall({
  76. phoneNumber:app.orderData[0].store.service_mobile,
  77. fail() {
  78. app.$dialog.showSuccess("联系失败")
  79. }
  80. })
  81. },
  82. toDetail(order){
  83. uni.navigateTo({
  84. url:"/pages/order/store?type=1&order="+order
  85. })
  86. },
  87. getData(){
  88. uni.login({
  89. success(lres){
  90. app.option.auth = lres.code
  91. Api.detail(app.option).then((res)=>{
  92. uni.hideLoading();
  93. if (res.code == 0) {
  94. return app.$dialog.showSuccess(res.msg);
  95. }
  96. uni.setStorageSync("user_data", res.data.user)
  97. uni.setStorageSync("user_token", res.data.user.access_token)
  98. app.orderData = res.data.order;
  99. app.msgDialog = true;
  100. setTimeout(function(){
  101. app.msgDialog = false;
  102. },3000)
  103. })
  104. },fail(res){
  105. app.$dialog.showSuccess("登录失败,请重启小程序")
  106. }
  107. })
  108. }
  109. }
  110. }
  111. </script>
  112. <style>
  113. page{background-color: #f8f8f8;}
  114. .kf-service{
  115. position: fixed;
  116. right: 20upx;
  117. bottom: 20%;
  118. background-color: #fff;
  119. width: 80upx;
  120. height: 80upx;
  121. border-radius: 80upx;
  122. display: flex;
  123. align-items: center;
  124. justify-content: center;
  125. }
  126. .kf-service image{
  127. width: 60upx;
  128. height: 60upx;
  129. vertical-align: middle;
  130. }
  131. .dialog-msg .mark{position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 90;background-color: rgba(0, 0,0, 0.3);}
  132. .dialog-msg .msg-body{position: fixed;background-color: #fff;z-index: 99;left: 5%;right: 5%;top: 50%;transform: translateY(-50%);border-radius: 10upx;padding: 40upx;}
  133. .dialog-msg .msg-body .title{text-align: center;line-height: 48upx;color: #333;font-weight: bold;margin-bottom: 20upx;position: relative;padding: 20upx 0;}
  134. .dialog-msg .msg-body .title image{width: 60upx;height: 60upx;position: absolute;top: 0;right: 0;}
  135. .dialog-msg .msg-body .desc{line-height: 48upx;color: #666;font-weight: bold;font-size: 26upx;}
  136. .coupon-item{background-color: #fff;border-radius: 10upx;width: calc(100% - 40upx);margin: 20upx auto;border: 2upx solid #fff;border-radius: 10upx;position: relative;}
  137. .coupon-item .state-img{position: absolute;right: 0;top: 0;}
  138. .coupon-item .state-img image{width: 100upx;height: 100upx;}
  139. .coupon-item .header{padding: 20upx;font-size: 28upx;color: #333;line-height: 48upx;border-bottom: 2upx solid #f8f8f8;}
  140. .coupon-item .footer{padding: 20upx;border-top: 2upx solid #f8f8f8;display: flex;justify-content: space-between;}
  141. .coupon-item .footer .state{flex: 1;}
  142. .coupon-item .footer .btn{width: 50%;font-size: 28upx;}
  143. .coupon-item .body{display: flex;align-items: center;margin: 20upx 0;justify-content: space-between;}
  144. .coupon-item .img image{width: 160upx;height: 160upx;}
  145. .coupon-item .info{padding: 0 20upx;}
  146. .coupon-item .btn{font-size: 28upx;margin-right: 20upx;}
  147. .coupon-item .name{font-size: 32upx;color: #333;line-height: 46upx;}
  148. .coupon-item .desc{color: #666;font-size: 28upx;line-height: 48upx;}
  149. .tips{text-align: center;line-height: 80upx;color: #666;font-size: 28upx;}
  150. </style>