signConfirm.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <template>
  2. <view>
  3. <view class="top">
  4. <view class="ddflex">
  5. <image :src="detail.pic" mode="aspectFill" class="act-img"></image>
  6. <view class="fflex">
  7. <view class="title tovers">{{detail.title}}</view>
  8. <view class="sta ddflex">
  9. <view class="area fflex ddflex" v-if="detail.address">
  10. <image src="../static/images/dzico1.png"></image>
  11. <view class="tover fflex">{{detail.address}}</view>
  12. </view>
  13. </view>
  14. <view class="time ddflex">
  15. <image style="width: 21rpx;height: 21rpx;margin-right: 10rpx;" src="../static/images/pic.png"></image>
  16. <text class="flex">{{ detail.enlistStartTime?formatTime(detail.enlistStartTime):'' }}-{{ detail.enlistEndTime?formatTime(detail.enlistEndTime):'' }}</text>
  17. </view>
  18. <view class="time ddflex" style="margin-top: 12rpx;">
  19. <image style="width: 19rpx;height: 24rpx;margin-right: 10rpx;" src="../static/images/pic.png"></image>
  20. <text class="flex">{{ detail.address?detail.address:'宁德市教育局' }}</text>
  21. </view>
  22. </view>
  23. </view>
  24. </view>
  25. <view class="list">
  26. <view class="li" v-for="(item,index) in personList" :key="index">
  27. <view class="ddflex">
  28. <view class="fflex">{{item.name}}</view>
  29. <view class="ddflex" style="color: #A1A1A1;font-size: 24rpx;">
  30. 展开
  31. <image style="width: 9rpx;height: 19rpx;margin-left: 10rpx;" src="/static/pages/images/more.png"></image>
  32. </view>
  33. </view>
  34. <view style="line-height: 42rpx;color: #A1A1A1;">{{item.phone}}</view>
  35. <view v-if="item.extend">
  36. <view v-for="it in item.extend" class="ddflex" style="font-size: 24rpx;margin-top: 20rpx;">
  37. <view style="color: #A1A1A1;margin-right: 24rpx;">{{it.label}}</view>
  38. <view style="color: #333333;">{{it.value}}</view>
  39. </view>
  40. </view>
  41. </view>
  42. </view>
  43. <view class="ming">
  44. <view class="tits">活动说明</view>
  45. <view class="tips">
  46. <view>1、本活动由主办方处理退款事宜</view>
  47. <view>2、如需退款,请联系客服</view>
  48. </view>
  49. </view>
  50. <view class="bot ddflex">
  51. <!-- <view class="heji">合计:<text class="yuan">¥</text><text>{{money}}</text></view> -->
  52. <view class="btn flex" @click="pay()">提交报名</view>
  53. </view>
  54. </view>
  55. </template>
  56. <script>
  57. const req = require('../../utils/request.js');
  58. const api = require('../../utils/api.js');
  59. const util = require('../../utils/util.js');
  60. const requsetmessage = require('../../utils/requestmessage.js');
  61. const app = getApp();
  62. export default {
  63. components: {
  64. },
  65. data() {
  66. return {
  67. isShow: false,
  68. options: {},
  69. detail: {},
  70. isAdd: false,
  71. personList: [],
  72. money: 0,
  73. userinfovip: {},
  74. price: 0
  75. };
  76. },
  77. onLoad(options) {
  78. this.options = options;
  79. if(req.getStorage('personList')){
  80. this.personList = req.getStorage('personList')
  81. }
  82. },
  83. onShow() {
  84. this.price = req.getStorage('actPrice');
  85. this.getuserVip();
  86. this.getData(true);
  87. this.money = this.personList.length * this.price;
  88. },
  89. methods: {
  90. getData(isShow){
  91. let that = this;
  92. return new Promise((resolve,reject)=>{
  93. req.getRequest('/api/match/detail',{id: this.options.id},res => {
  94. that.detail = res;
  95. that.isShow = true;
  96. // if(that.userinfovip.levelGrade>0&& !that.userinfovip.end){
  97. // that.money = that.personList.length * res.vipMoney;
  98. // }else{
  99. // that.money = that.personList.length * res.money;
  100. // }
  101. resolve();
  102. },isShow);
  103. })
  104. },
  105. formatTimeCommStr(dataStr) {
  106. return util.formatTimeCommStr(dataStr, 'M/D');
  107. },
  108. getuserVip() {
  109. return new Promise((resolve,reject)=>{
  110. req.getRequest('/api/user/levelDetails', {}, data => {
  111. let expireTime = Array;
  112. if (data.expireTime) {
  113. expireTime = data.expireTime.split(" ");
  114. data.expireTime = data.expireTime.replace(/-/g, '/');
  115. } // 解决苹果不兼容---日期
  116. let nowTime = new Date().getTime();
  117. let endTime = new Date(data.expireTime).getTime();
  118. let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
  119. // console.log(times, nowTime, endTime, data.expireTime);
  120. this.userinfovip = data;
  121. if (times <= 0) {
  122. this.userinfovip.end = true;
  123. } else {
  124. this.userinfovip.end = false;
  125. }
  126. resolve();
  127. });
  128. })
  129. },
  130. toActivity(item){
  131. uni.navigateTo({
  132. url: '/match/activityDetail/activityDetail?id=' + item.id
  133. })
  134. },
  135. choose: function () {
  136. let freshen = false;
  137. this.$emit('freshen', {
  138. detail: freshen
  139. });
  140. },
  141. clickCollect(){
  142. req.postRequest('/api/collect',{
  143. bindId: this.detail.id,
  144. type: 2
  145. },res=>{
  146. this.detail.isCollect = !this.detail.isCollect;
  147. })
  148. },
  149. jumpUrl(url){
  150. uni.navigateTo({
  151. url: url
  152. })
  153. },
  154. async pay(){
  155. let param = {
  156. matchId: this.detail.id,
  157. money: this.money,
  158. // matchPriceId: this.options.priceId,
  159. scene: req.getStorage('scene'),
  160. list: JSON.stringify(this.personList)
  161. }
  162. // await requsetmessage.remindActivity().then(res => {});
  163. req.getRequest('/api/myMatch/order',param,async res=>{
  164. req.removeStorage('personList');
  165. this.jumpUrl('/match/success/success?id=' + this.detail.id)
  166. // await this.payOrder(res)
  167. })
  168. },
  169. payOrder(id){
  170. req.payOrders(id,success =>{
  171. this.jumpUrl('/match/success/success?id=' + this.detail.id)
  172. })
  173. },
  174. formatTime(date){
  175. date = new Date(date.replace(/-/g, '/'))
  176. return util.formatTime(date).t3
  177. }
  178. }
  179. };
  180. </script>
  181. <style>
  182. @import "./signConfirm.css";
  183. </style>