activity.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
  1. <template>
  2. <app-layout>
  3. <view style="height:100%;padding-bottom:0;position: absolute;width: 100%">
  4. <view class="page">
  5. <view class='dialog-bg' v-if="dialog">
  6. <view class='in-bargain'>
  7. <image v-if="kanjia" class='bargain-gif-bg' src='./../image/light.png'></image>
  8. <image v-if="kanjia" class='bargain-gif' :src='bargainImg.app_image.activity_header'></image>
  9. <image class='dialog-header' v-if="!kanjia" :src='bargainImg.app_image.header'></image>
  10. <image class='dialog-header-gif-sec' :animation="animationData" v-if="!kanjia"
  11. :src='bargainImg.app_image.top1'></image>
  12. <view @click="dialog=false" v-if="!kanjia">
  13. <image class='dialog-close' src='./../image/close.png'></image>
  14. </view>
  15. <view class='dialog' v-if="!kanjia">
  16. <view class="self-dialog">
  17. <view v-if="bargain.user_id == info.user_id">你一出手就帮自己砍掉了
  18. <text class='price'>{{info.price}}元</text>
  19. </view>
  20. <view v-if="bargain.user_id != info.user_id">你一出手就帮{{bargain.nickname}}</view>
  21. <view v-if="bargain.user_id != info.user_id">砍了
  22. <text class='price'>{{info.price}}元</text>
  23. </view>
  24. </view>
  25. <view v-if="bargain.user_id == info.user_id">快邀请好友帮你一起砍价吧!</view>
  26. <view class="button-margin">
  27. <!-- #ifdef H5 -->
  28. <button @click="hShareAppMessage" open-type="share" v-if="bargain.user_id == info.user_id">
  29. <image style="margin-top: 0" :src='bargainImg.app_image.find'></image>
  30. </button>
  31. <!-- #endif -->
  32. <!-- #ifdef MP -->
  33. <button open-type="share" v-if="bargain.user_id == info.user_id">
  34. <image style="margin-top: 0" :src='bargainImg.app_image.find'></image>
  35. </button>
  36. <!-- #endif -->
  37. </view>
  38. <view v-if="bargain.user_id != info.user_id" @click="toJoin">
  39. <image :src='bargainImg.app_image.join_small'></image>
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. <view v-if="tip" class='dialog-bg'>
  45. <view class="dialog-item">
  46. <view class='dialog-tip-title'>提示</view>
  47. <view>{{tip}}</view>
  48. <view @click="tip=''" class='close-button'>确认</view>
  49. </view>
  50. </view>
  51. <view>
  52. <view @click="toIndex" class='rules left-rules'>返回首页</view>
  53. </view>
  54. <view>
  55. <view @click="toRules" class='rules right-rules'>活动规则</view>
  56. </view>
  57. <view class='top-banner' :style="{'background-image': 'url(' + bargainImg.app_image.bg_pic + ')'}"></view>
  58. <view class='info'>
  59. <image class='avatar' :src='detail.initiator_avatar'></image>
  60. <view class='username'>{{detail.initiator_nickname}}</view>
  61. <view>我发现一件好货,来一起砍价优惠购!</view>
  62. <view class='goods'>
  63. <image :src='detail.cover_pic'></image>
  64. <view class='t-omit-two goods-name'>{{detail.goods_name}}</view>
  65. <view class='t-omit goods-attr'>
  66. <text v-for="attr in detail.select_attr_group" :key="attr.id">
  67. {{attr.attr_group_name}}:{{attr.attr_name}}
  68. </text>
  69. </view>
  70. <view class='end_time' v-if="detail.reset_time > 0">
  71. <text class="date-text" v-if="dd > 0">{{dd}}</text>
  72. <text v-if="dd > 0">天</text>
  73. <text class="date-text">{{hh}}</text>
  74. <text>:</text>
  75. <text class="date-text">{{mm}}</text>
  76. <text>:</text>
  77. <text class="date-text">{{ss}}</text>
  78. <text>后结束</text>
  79. </view>
  80. <view class='end_time' v-else>已结束</view>
  81. <view class='price'>当前价 ¥{{detail.now_price ?detail.now_price : 0}}</view>
  82. </view>
  83. </view>
  84. <view class='progress'>
  85. <view class='border' v-if="detail.bargain_price_per < 5" :style="{'left':`${detail.bargain_price_per}%`}"></view>
  86. <text class='begin' v-if="detail.bargain_price_per < 5">已砍{{detail.bargain_price ? detail.bargain_price : 0}}</text>
  87. <text class='progress-info progressing' v-else-if="detail.bargain_price_per < 100" :style="{'left':`${detail.bargain_price_per ? detail.bargain_price_per : 0}%`}">已砍{{detail.bargain_price ? detail.bargain_price : 0}}</text>
  88. <text class='progress-info over' v-else>已完成</text>
  89. <view class='progress-bg'>
  90. <image src='./../image/progress.png'></image>
  91. <view class='line' :class="[`${detail.bargain_price < 4 ? 'small-line':''}`]" :style="{'width':`${detail.bargain_price_per ? detail.bargain_price_per : 0}%`}"></view>
  92. </view>
  93. <text class='before-price'>原价¥{{detail.price ? detail.price : 0}}</text>
  94. <text class='after-price'>底价¥{{detail.min_price ? detail.min_price : 0}}</text>
  95. </view>
  96. <!-- 不是自己的砍价 -->
  97. <view class='join main-center' v-if="status == 2">
  98. <view @click="toJoin">
  99. <image class="join-img" :animation="sizeAnimation" :src='bargainImg.app_image.join_big'></image>
  100. </view>
  101. </view>
  102. <!-- 砍价未完成 -->
  103. <view class='button-view main-between' v-if="detail.now_price != detail.min_price && status != 2">
  104. <view @click="toBuy">
  105. <image :src='bargainImg.app_image.buy_small'></image>
  106. </view>
  107. <!-- #ifdef H5 -->
  108. <button @click="hShareAppMessage" open-type="share">
  109. <image :src='bargainImg.app_image.go_on'></image>
  110. </button>
  111. <!-- #endif -->
  112. <!-- #ifdef MP -->
  113. <button open-type="share">
  114. <image :src='bargainImg.app_image.go_on'></image>
  115. </button>
  116. <!-- #endif -->
  117. </view>
  118. <!-- 砍价完成 -->
  119. <view class='join main-center' v-if="detail.now_price == detail.min_price && status != 2">
  120. <view @click="toBuy">
  121. <image class="join-img" :animation="sizeAnimation" :src='bargainImg.app_image.buy_now'></image>
  122. </view>
  123. </view>
  124. <view class="log-box"
  125. :style="{background: 'linear-gradient(' + bargainImg.config.bg_color +', '+ ( bargainImg.config.bg_color_type === 'gradient' ? bargainImg.config.bg_gradient_color: bargainImg.config.bg_color) + ')'}">
  126. <view class='log'>
  127. <view class='main-center'>
  128. <text class='log-line'></text>
  129. <text class='log-title'>砍价记录</text>
  130. <text class='log-line'></text>
  131. </view>
  132. <view class='log-item' v-for="item in list" :key="item.id">
  133. <view class='log-user'>
  134. <image :src='item.avatar'></image>
  135. <text class="nickname">{{item.nickname}}</text>
  136. </view>
  137. <view class='log-info'>
  138. <image src='./../image/down.png'></image>
  139. <text>砍掉{{item.price}}元</text>
  140. </view>
  141. </view>
  142. <view @click="lookMore" v-if="toMore">
  143. <view class='look-more' v-if="more">
  144. <image src='./../image/to-down.png'></image>
  145. <text>查看更多</text>
  146. </view>
  147. <view catchtap='closeList' class='up' v-else>
  148. <image src='./../image/to-up.png'></image>
  149. <text>收起</text>
  150. </view>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </app-layout>
  157. </template>
  158. <script>
  159. import { mapState } from "vuex";
  160. export default {
  161. name: "activity",
  162. data() {
  163. return {
  164. detail: {
  165. bargain_price_per: 0
  166. },
  167. list: [],
  168. distance: 0,
  169. more: false,
  170. sizeAnimation: {},
  171. status: 1,
  172. animationData: '',
  173. kanjia: false,
  174. dialog: false,
  175. info: {},
  176. bargain: {},
  177. toMore: false,
  178. page: 1,
  179. dd: 0,
  180. hh:23,
  181. mm:59,
  182. ss:59,
  183. changeTimer: null,
  184. timer: null,
  185. tip: '',
  186. title: '',
  187. order_id: '',
  188. // rules: ''
  189. }
  190. },
  191. computed: {
  192. ...mapState({
  193. userInfo: state => state.user.info,
  194. bargainImg: state => state.mallConfig.plugin.bargain,
  195. mall: state => state.mallConfig.mall
  196. }),
  197. },
  198. // #ifdef MP
  199. onShareAppMessage() {
  200. return this.hShareAppMessage();
  201. },
  202. // #endif
  203. onUnload() {
  204. clearInterval(this.timer);
  205. clearInterval(this.changeTimer);
  206. },
  207. onLoad(options) { this.$commonLoad.onload(options);
  208. var that = this;
  209. that.$store.dispatch('user/info');
  210. that.$showLoading({
  211. type: 'global',
  212. text: '加载中...'
  213. });
  214. that.getSetting();
  215. let getInfo = setInterval(function () {
  216. if(that.userInfo) {
  217. clearInterval(getInfo);
  218. if (options.order_id) {
  219. that.join(options.order_id);
  220. that.order_id = options.order_id;
  221. } else if (options.id) {
  222. that.getDetail(options.id,1)
  223. that.order_id = options.id;
  224. } else if (options.bargain_order_id) {
  225. that.order_id = options.bargain_order_id;
  226. if (options.user_id == that.userInfo.options.user_id) {
  227. that.getDetail(options.bargain_order_id, 1)
  228. } else {
  229. that.status = 2;
  230. that.join(options.bargain_order_id)
  231. }
  232. }
  233. that.changeTimer = setInterval(() => {
  234. that.changeSize();
  235. }, 300)
  236. }
  237. }, 300)
  238. },
  239. methods: {
  240. hShareAppMessage(s = false){
  241. let that = this;
  242. return this.$shareAppMessage({
  243. title: that.title,
  244. path: "/plugins/bargain/activity/activity",
  245. imageUrl: that.detail.app_share_pic ? that.detail.app_share_pic : '',
  246. params: {
  247. user_id: that.userInfo.options.user_id,
  248. bargain_order_id: that.order_id,
  249. }
  250. },s);
  251. },
  252. toRules() {
  253. // uni.navigateTo({
  254. // url: '/plugins/bargain/rule/rule?rules=' + this.rules
  255. // })
  256. uni.navigateTo({
  257. url: `/pages/rules/index?url=${encodeURIComponent(this.$api.bargain.setting)}&key=rule`,
  258. });
  259. },
  260. getSetting() {
  261. let that = this;
  262. that.$request({
  263. url: that.$api.bargain.setting,
  264. }).then(response=>{
  265. if(response.code === 0) {
  266. that.title = response.data.title.toString();
  267. // that.rules = response.data.rule;
  268. if(response.data.title.indexOf("\n") > -1) {
  269. let title = response.data.title.split("\n");
  270. let index = Math.floor(Math.random() * title.length);
  271. that.title = title[index]
  272. }
  273. }else {
  274. uni.showToast({
  275. title: response.msg,
  276. icon: 'none',
  277. duration: 1000
  278. });
  279. }
  280. }).catch(response => {
  281. that.$hideLoading();
  282. });
  283. },
  284. join(bargain_order_id) {
  285. let that = this;
  286. that.$request({
  287. url: that.$api.bargain.user_join_bargain,
  288. data: {
  289. bargain_order_id: bargain_order_id
  290. },
  291. }).then(response=>{
  292. if(response.code == 0) {
  293. let queueId = response.data.queueId;
  294. let token = response.data.token;
  295. that.result(queueId, token, bargain_order_id)
  296. }else {
  297. uni.showToast({
  298. title: response.msg,
  299. icon: 'none',
  300. duration: 1000
  301. });
  302. if (response.msg == "用户已参与本次砍价") {
  303. that.getDetail(bargain_order_id, 1)
  304. }
  305. }
  306. }).catch(response => {
  307. that.$hideLoading();
  308. });
  309. },
  310. result(queueId, token, bargain_order_id) {
  311. let that = this;
  312. that.$request({
  313. url: that.$api.bargain.user_join_bargain_result,
  314. data: {
  315. queueId: queueId,
  316. token: token
  317. },
  318. }).then(response=>{
  319. if(response.code == 0) {
  320. if (response.data.retry == 1) {
  321. setTimeout(() => {
  322. that.result(queueId, token, bargain_order_id)
  323. }, 1000)
  324. } else {
  325. that.$hideLoading();
  326. that.info = response.data.info;
  327. that.bargain = response.data.bargain;
  328. that.bargainAnimation();
  329. that.getDetail(bargain_order_id, 1)
  330. }
  331. }else {
  332. if (response.msg == "已砍至最低价") {
  333. that.tip = response.msg;
  334. that.getDetail(bargain_order_id, 1)
  335. }else {
  336. uni.showToast({
  337. title: response.msg,
  338. icon: 'none',
  339. duration: 1000
  340. });
  341. }
  342. }
  343. }).catch(response => {
  344. that.$hideLoading();
  345. });
  346. },
  347. getDetail(bargain_order_id,page) {
  348. let that = this;
  349. that.$request({
  350. url: that.$api.bargain.activity,
  351. data: {
  352. bargain_order_id: bargain_order_id,
  353. page: page
  354. },
  355. }).then(response=>{
  356. setTimeout(function(){
  357. that.$hideLoading();
  358. },500)
  359. if(response.code == 0) {
  360. if (response.data.list.length > 0) {
  361. that.detail = response.data;
  362. if (response.data.total_people > 3) {
  363. that.toMore = true;
  364. if (response.data.list.length == 3) {
  365. that.more = true;
  366. }else {
  367. that.more = false;
  368. }
  369. }
  370. that.list = that.list.concat(response.data.list);
  371. if(page == 1) {
  372. let reset_time = that.detail.reset_time;
  373. that.timer = setInterval(() => {
  374. reset_time--;
  375. that.getTime(reset_time);
  376. if(that.reset_time == 0) {
  377. clearInterval(that.timer)
  378. }
  379. }, 1000)
  380. }
  381. } else {
  382. that.tip = '暂无更多用户'
  383. that.toMore = false
  384. }
  385. }else {
  386. uni.showModal({
  387. title: '提示',
  388. content: response.data.msg,
  389. showCancel: false,
  390. success: function (res) {
  391. if (res.confirm) {
  392. uni.redirectTo({
  393. url: '/pages/index/index'
  394. });
  395. }
  396. }
  397. });
  398. }
  399. }).catch(response => {
  400. that.$hideLoading();
  401. });
  402. },
  403. getTime(time) {
  404. if(time > 86399) {
  405. this.dd = Math.floor(time / 86400)
  406. time = time - (86400*this.dd)
  407. }else {
  408. this.dd = 0
  409. }
  410. if(time > 3599) {
  411. this.hh = Math.floor(time / 3600)
  412. if(this.hh < 10) {
  413. this.hh = '0' + this.hh
  414. }
  415. time = time - (3600*this.hh)
  416. }else {
  417. this.hh = '00'
  418. }
  419. if(time > 59) {
  420. this.mm = Math.floor(time / 60)
  421. if(this.mm < 10) {
  422. this.mm = '0' + this.mm
  423. }
  424. time = time - (60*this.mm)
  425. }else {
  426. this.mm = '00';
  427. }
  428. if(time < 60) {
  429. this.ss = time;
  430. if(this.ss < 10) {
  431. this.ss = '0' + this.ss
  432. }
  433. }
  434. },
  435. // 砍价动画
  436. bargainAnimation() {
  437. let that = this;
  438. that.kanjia = true;
  439. that.dialog = true;
  440. setTimeout(function() {
  441. that.kanjia = false;
  442. that.success();
  443. },1200)
  444. that.$forceUpdate();
  445. },
  446. // 查看更多
  447. lookMore() {
  448. this.page++;
  449. this.getDetail(this.order_id,this.page)
  450. },
  451. // 收起
  452. closeList() {
  453. this.list = this.list.slice(0,3);
  454. this.page = 1;
  455. this.more = true;
  456. },
  457. // 砍价成功
  458. success() {
  459. let that = this;
  460. this.dialog = true;
  461. var animation = uni.createAnimation({
  462. duration: 500,
  463. timingFunction: 'linear'
  464. })
  465. this.animation = animation;
  466. animation.scale(1).step().rotate(2).step().rotate(-2).step().rotate(0).step();
  467. this.animationData = animation.export();
  468. },
  469. // 按钮动画
  470. changeSize() {
  471. var size = uni.createAnimation({
  472. duration: 1000,
  473. timingFunction: 'linear'
  474. })
  475. this.size = size;
  476. size.scale(0.8).step().scale(1).step();
  477. this.sizeAnimation = size.export();
  478. },
  479. toIndex() {
  480. uni.reLaunch({
  481. url:'/pages/index/index'
  482. })
  483. },
  484. toBuy() {
  485. const bargain = this.detail;
  486. const mchList = [{
  487. "mch_id": 0,
  488. "bargain_order_id": bargain.bargain_order_id,
  489. "goods_list": [{
  490. "id": bargain.goods_id,
  491. "attr": [],
  492. "num": 1,
  493. "cart_id": 0,
  494. "goods_attr_id": bargain.goods_attr_id
  495. }]
  496. }];
  497. uni.navigateTo({
  498. url: '/pages/order-submit/order-submit?mch_list=' +
  499. JSON.stringify(mchList) +
  500. '&preview_url=' + encodeURIComponent(this.$api.bargain.order_preview) +
  501. '&submit_url=' + encodeURIComponent(this.$api.bargain.order_submit)
  502. });
  503. },
  504. toJoin() {
  505. if (this.detail.goods_id) {
  506. uni.navigateTo({
  507. url: '/plugins/bargain/goods/goods?goods_id=' + this.detail.goods_id,
  508. })
  509. } else {
  510. uni.showModal({
  511. title: '提示',
  512. content: '活动已结束',
  513. showCancel: false,
  514. success: function(res) {
  515. if (res.confirm) {
  516. uni.redirectTo({
  517. url: '/pages/index/index'
  518. });
  519. }
  520. }
  521. });
  522. }
  523. },
  524. }
  525. }
  526. </script>
  527. <style scoped lang="scss">
  528. .goods-attr {
  529. margin-top: #{6rpx};
  530. margin-bottom: #{16rpx};
  531. color: #999999;
  532. font-size: #{26rpx};
  533. width: 60%;
  534. text {
  535. margin-right: #{18rpx};
  536. }
  537. }
  538. .page {
  539. //padding-bottom: #{100rpx};
  540. min-height: 100%;
  541. padding-top: #{95rpx};
  542. }
  543. .self-dialog {
  544. margin-bottom: #{14rpx};
  545. }
  546. .top-banner {
  547. width: 100%;
  548. position: absolute;
  549. height: #{870rpx};
  550. z-index: 1;
  551. top: 0;
  552. background-repeat: no-repeat;
  553. background-size: 100% 100%;
  554. }
  555. .rules {
  556. position: absolute;
  557. top: #{32rpx};
  558. height: #{40rpx};
  559. line-height: #{40rpx};
  560. width: #{136rpx};
  561. text-align: center;
  562. background-color: rgba(0, 0, 0, 0.2);
  563. border-radius: #{20rpx};
  564. font-size: 12px;
  565. color: #fff;
  566. z-index: 2;
  567. }
  568. .left-rules {
  569. left: #{20rpx};
  570. }
  571. .right-rules {
  572. right: #{20rpx};
  573. }
  574. .log-box {
  575. position: absolute;
  576. z-index: 2;
  577. min-height: calc(100vh - #{870rpx});
  578. top: #{870rpx};
  579. padding-top: #{20rpx};
  580. width: 100%;
  581. padding-bottom: #{100rpx};
  582. }
  583. .info {
  584. background-color: #fff;
  585. margin: 0 #{20rpx};
  586. position: relative;
  587. z-index: 2;
  588. border-radius: #{16rpx};
  589. text-align: center;
  590. font-size: 16px;
  591. color: #353535;
  592. padding-top: #{65rpx};
  593. padding-bottom: #{10rpx};
  594. }
  595. .info .avatar {
  596. position: absolute;
  597. top: #{-70rpx};
  598. left: 0;
  599. right: 0;
  600. width: #{118rpx};
  601. height: #{118rpx};
  602. border-radius: 50%;
  603. margin: 0 auto;
  604. border: #{1rpx} solid #fff;
  605. }
  606. .info .username {
  607. font-size: 14px;
  608. color: #999;
  609. margin-bottom: #{20rpx};
  610. }
  611. .goods {
  612. margin: #{20rpx} #{24rpx} 0;
  613. padding: #{24rpx} 0;
  614. height: #{264rpx};
  615. border-top: #{1rpx} solid #e2e2e2;
  616. text-align: left;
  617. font-size: 14px;
  618. color: #353535;
  619. }
  620. .goods image {
  621. height: #{216rpx};
  622. width: #{216rpx};
  623. float: left;
  624. display: block;
  625. margin-right: #{20rpx};
  626. }
  627. .goods .end_time {
  628. font-size: 14px;
  629. color: #666;
  630. margin-top: #{10rpx};
  631. }
  632. .end_time text {
  633. margin: 0 #{10rpx};
  634. }
  635. .end_time text:last-of-type {
  636. margin: 0 0 0 #{10rpx};
  637. }
  638. .goods .end_time .date-text {
  639. display: inline-block;
  640. color: #fff;
  641. height: #{46rpx};
  642. line-height: #{46rpx};
  643. text-align: center;
  644. width: #{46rpx};
  645. margin: 0;
  646. background-color: #666;
  647. border-radius: #{4rpx};
  648. }
  649. .goods .price {
  650. font-size: 16px;
  651. color: #ff5c5c;
  652. margin-top: #{10rpx};
  653. }
  654. .progress {
  655. padding-top: #{56rpx};
  656. height: #{180rpx};
  657. width: #{680rpx};
  658. margin: #{32rpx} auto 0;
  659. position: relative;
  660. z-index: 2;
  661. }
  662. .progress-info,.begin {
  663. font-size: 12px;
  664. color: #ff5c5c;
  665. padding: 0 #{20rpx};
  666. display: inline-block;
  667. border-radius: #{20rpx};
  668. height: #{40rpx};
  669. line-height: #{40rpx};
  670. background-color: #fff;
  671. position: absolute;
  672. z-index: 5;
  673. top: 0;
  674. left:5%;
  675. margin-left: #{-68rpx};
  676. white-space:nowrap;
  677. }
  678. .progress-info.progressing {
  679. margin-left: #{-68rpx};
  680. min-width: #{82rpx};
  681. white-space: nowrap;
  682. }
  683. .progress-info::after {
  684. content: '';
  685. position: absolute;
  686. top: #{40rpx};
  687. left: 50%;
  688. margin-left: #{-8rpx};
  689. border: #{8rpx} solid transparent;
  690. border-top-color: #fff;
  691. }
  692. .progress .border {
  693. position: absolute;
  694. top: #{40rpx};
  695. margin-left: #{-8rpx};
  696. border: #{8rpx} solid transparent;
  697. border-top-color: #fff;
  698. }
  699. .progress-info.over::after {
  700. left: 75%;
  701. }
  702. .progress-info.over {
  703. left:97%;
  704. margin-left: #{-68rpx};
  705. white-space:nowrap;
  706. }
  707. .progress .progress-bg {
  708. width: #{680rpx};
  709. height: #{28rpx};
  710. position: relative;
  711. z-index: 2;
  712. }
  713. .progress .progress-bg image {
  714. width: #{680rpx};
  715. height: #{28rpx};
  716. position: absolute;
  717. }
  718. .progress .line {
  719. position: absolute;
  720. top: #{2rpx};
  721. left: #{2rpx};
  722. height: #{24rpx};
  723. background-color: #ff9f9f;
  724. border-radius: #{12rpx};
  725. z-index: 5;
  726. max-width: #{676rpx};
  727. }
  728. .progress .line.small-line {
  729. border-top-right-radius: 0;
  730. border-bottom-right-radius: 0;
  731. }
  732. .before-price, .after-price {
  733. font-size: 12px;
  734. color: #fff;
  735. position: absolute;
  736. bottom: #{40rpx};
  737. }
  738. .before-price {
  739. left: 0;
  740. }
  741. .after-price {
  742. right: 0;
  743. }
  744. .button-view {
  745. position: relative;
  746. z-index: 2;
  747. margin: 0 #{20rpx};
  748. }
  749. .button-view button {
  750. height: #{82rpx};
  751. width: #{328rpx};
  752. padding: 0;
  753. margin: 0;
  754. border-radius: #{41rpx};
  755. }
  756. .button-view image {
  757. height: #{82rpx};
  758. width: #{328rpx};
  759. }
  760. .log {
  761. background-color: rgba(255, 255, 255, .3);
  762. margin: 0 #{20rpx};
  763. padding: #{40rpx};
  764. border-radius: #{16rpx};
  765. position: relative;
  766. z-index: 2;
  767. }
  768. .log-line {
  769. position: absolute;
  770. top: #{60rpx};
  771. left: 50%;
  772. height: #{1rpx};
  773. width: #{160rpx};
  774. background-color: #fff;
  775. }
  776. .log .log-line:first-of-type {
  777. margin-left: #{-254rpx};
  778. }
  779. .log .log-line:last-of-type {
  780. margin-left: #{94rpx};
  781. }
  782. .log-title {
  783. color: #fff;
  784. font-size: 14px;
  785. margin: 0 #{34rpx};
  786. }
  787. .log-item {
  788. margin-top: #{40rpx};
  789. height: #{80rpx};
  790. line-height: #{80rpx};
  791. color: #fff;
  792. }
  793. .log-item .log-user {
  794. float: left;
  795. width: 50%;
  796. }
  797. .log-item .log-user image {
  798. height: #{80rpx};
  799. width: #{80rpx};
  800. border-radius: 50%;
  801. margin-right: #{24rpx};
  802. float: left;
  803. }
  804. .log-item .log-info {
  805. float: right;
  806. width: 50%;
  807. text-align: right;
  808. }
  809. .log-item .log-info text {
  810. float: right;
  811. }
  812. .log-item .log-info image {
  813. margin-top: #{15rpx};
  814. height: #{50rpx};
  815. width: #{72rpx};
  816. margin-right: #{16rpx};
  817. }
  818. .look-more,.up {
  819. margin-top: #{48rpx};
  820. width: 100%;
  821. font-size: 12px;
  822. color: #fff;
  823. text-align: center;
  824. }
  825. .look-more image,.up image {
  826. height: #{18rpx};
  827. width: #{18rpx};
  828. margin-right: #{16rpx};
  829. }
  830. .join {
  831. height: #{152rpx};
  832. }
  833. .dialog-bg {
  834. height: 100%;
  835. width: 100%;
  836. position: fixed;
  837. left: 0;
  838. top: 0;
  839. z-index: 10;
  840. background-color: rgba(0, 0, 0, 0.3);
  841. }
  842. .dialog-header {
  843. position: absolute;
  844. left: 0;
  845. right: 0;
  846. top: 0;
  847. margin: 0 auto;
  848. height: #{200rpx};
  849. width: #{638rpx};
  850. z-index: 15;
  851. }
  852. .dialog-header-gif {
  853. position: absolute;
  854. left: 0;
  855. right: 0;
  856. top: #{34rpx};
  857. margin: 0 auto;
  858. height: #{69rpx};
  859. width: #{132rpx};
  860. z-index: 20;
  861. }
  862. .dialog-header-gif-sec {
  863. position: absolute;
  864. left: 0;
  865. right: 0;
  866. top: #{-70rpx};
  867. margin: 0 auto;
  868. height: #{276rpx};
  869. width: #{525rpx};
  870. z-index: 20;
  871. transform: scale(0.25);
  872. }
  873. .dialog {
  874. padding: #{60rpx} 0 #{48rpx};
  875. background-color: #fff;
  876. position: fixed;
  877. top: #{504rpx};
  878. left: 0;
  879. right: 0;
  880. margin: 0 auto;
  881. width: #{638rpx};
  882. text-align: center;
  883. border-bottom-left-radius: #{16rpx};
  884. border-bottom-right-radius: #{16rpx};
  885. }
  886. .dialog image {
  887. margin-top: #{45rpx};
  888. height: #{88rpx};
  889. width: #{480rpx};
  890. }
  891. .button-margin {
  892. margin-top: #{45rpx};
  893. }
  894. .button-margin button {
  895. border: 0;
  896. }
  897. .dialog button {
  898. background-color: #fff;
  899. }
  900. .dialog .price {
  901. color: #ff5c5c;
  902. font-size: 16px;
  903. font-weight: blod;
  904. }
  905. .dialog-close {
  906. height: #{50rpx};
  907. width: #{50rpx};
  908. position: fixed;
  909. top: #{320rpx};
  910. right: #{62rpx};
  911. z-index: 20;
  912. }
  913. .in-bargain {
  914. position: fixed;
  915. top: #{300rpx};
  916. left: 0;
  917. right: 0;
  918. margin: 0 auto;
  919. width: #{638rpx};
  920. height: #{535rpx};
  921. border-radius: #{16rpx};
  922. background-color: #fff;
  923. }
  924. .bargain-gif {
  925. display: block;
  926. position: absolute;
  927. top: #{147.5rpx};
  928. left: 0;
  929. right: 0;
  930. height: #{240rpx};
  931. width: #{310rpx};
  932. margin: 0 auto;
  933. }
  934. .bargain-gif-bg {
  935. display: block;
  936. position: absolute;
  937. top: 0;
  938. left: 0;
  939. right: 0;
  940. height: #{500rpx};
  941. width: #{500rpx};
  942. margin: 0 auto;
  943. }
  944. page {
  945. height: 100%;
  946. }
  947. .nickname {
  948. white-space: nowrap;
  949. overflow: hidden;
  950. text-overflow: ellipsis;
  951. display: inline-block;
  952. width: 65%;
  953. }
  954. .dialog-item {
  955. position: fixed;
  956. top: #{400rpx};
  957. left: 0;
  958. right: 0;
  959. height: #{300rpx};
  960. width: #{640rpx};
  961. margin: 0 auto;
  962. z-index: 21;
  963. background-color: #fff;
  964. border-radius: #{20rpx};
  965. text-align: center;
  966. font-size: #{30rpx};
  967. }
  968. .close-button {
  969. height: #{88rpx};
  970. width: #{640rpx};
  971. border-top: #{1rpx} solid #e2e2e2;
  972. line-height: #{88rpx};
  973. color: #ff4544;
  974. position: absolute;
  975. bottom: 0;
  976. left: 0;
  977. }
  978. .dialog-tip-title {
  979. margin: #{40rpx} auto #{35rpx};
  980. }
  981. .join-img {
  982. width: #{680rpx};
  983. height: #{110rpx};
  984. }
  985. .goods-name {
  986. margin-top: #{6rpx};
  987. }
  988. </style>