signConfirm.vue 5.8 KB

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