123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- <template>
- <app-layout>
- <view class="no-content" v-if="!list.length">
- <view>你还没有进行中的砍价</view>
- <view>去会场逛逛!</view>
- </view>
- <view class="order-list">
- <block v-for="(v,k) in list" :key="k">
- <view @click="navGoods(v)" class="bargain-list dir-left-nowrap">
- <view class="box-grow-0">
- <image :src="v.cover_pic"></image>
- </view>
- <view class="box-grow-1 dir-top-nowrap bargain-right">
- <view class="box-grow-0 bargain-name t-omit-two">{{v.goods_name}}</view>
- <view class="attr t-omit">{{v.select_attr_group_text}}</view>
- <block v-if="v.reset_time">
- <view class="box-grow-1 bargain-time dir-left-nowrap cross-center">
- <block v-if="v.times.day > 0">
- <view class='info'>{{v.times.day}}</view>
- <view class="mark">天</view>
- </block>
- <view class="info">{{v.times.hour}}</view>
- <view class="mark">:</view>
- <view class="info">{{v.times.minute}}</view>
- <view class="mark">:</view>
- <view class="info">{{v.times.second}}</view>
- <view class="mark">后结束</view>
- </view>
- <view class="box-grow-0 dir-left-nowrap cross-center">
- <view class="box-grow-1 dir-top-nowrap">
- <view class='min-price'>
- <block v-if="v.now_price == v.min_price">已砍至最低</block>
- <block v-else>离最低¥{{v.min_price}}</block>
- </view>
- <view class='price'>
- <block v-if="v.now_price == v.min_price">¥{{v.min_price}}</block>
- <block v-else>还差¥{{v.reset_price}}</block>
- </view>
- </view>
- <view class="box-grow-0">
- <app-button v-if="v.now_price == v.min_price" @click.native.stop="submit(v)" height="64"
- width="176" color="#FFFFFF" background="#ff6700" font-size="28"
- round>立即购买
- </app-button>
- <app-button v-else @click.native.stop="goto(v)" height="64" width="176" color="#FFFFFF"
- :theme="getTheme" font-size="28" round>继续砍价
- </app-button>
- </view>
- </view>
- </block>
- <block v-else>
- <view class="box-grow-1"></view>
- <view class="box-grow-0">
- <view class="box-grow-1 bargain-content">{{v.content}}</view>
- <view class="box-grow-0 price">{{v.status_content}}</view>
- </view>
- </block>
- </view>
- </view>
- </block>
- </view>
- <common-buttom :theme="getTheme" status="prize"></common-buttom>
- </app-layout>
- </template>
- <script>
- import commonButtom from "../common-buttom.vue";
- import {mapGetters} from "vuex";
- export default {
- name: "order-list",
- components: {commonButtom},
- data() {
- let integral;
- return {
- integral,
- list: null,
- args: false,
- page: 1,
- load: false,
- }
- },
- computed: {
- ...mapGetters('mallConfig',{
- getTheme: 'getTheme',
- }),
- },
- onReachBottom: function () {
- const self = this;
- if (self.args || self.load)
- return;
- self.load = true;
- let page = self.page + 1;
- self.$request({
- url: self.$api.bargain.list,
- data: {
- page: page,
- }
- }).then(info => {
- if (info.code === 0) {
- [self.page, self.args] = [page, info.data.list.length === 0];
- self.getIntegral(self.list.concat(info.data.list));
- }
- self.load = false;
- });
- },
- onShow: function () {
- const self = this;
- self.$showLoading();
- self.$request({
- url: self.$api.bargain.list,
- }).then(info => {
- self.$hideLoading();
- if (info.code === 0) {
- self.getIntegral(info.data.list);
- }
- self.args = false;
- self.page = 1;
- }).catch(e => {
- self.$hideLoading();
- })
- },
- onUnload() {
- clearInterval(this.integral);
- },
- methods: {
- navGoods(v) {
- console.log(v.goods_id)
- uni.navigateTo({url: '/plugins/bargain/goods/goods?goods_id=' + v.goods_id});
- },
- goto(v) {
- uni.navigateTo({url: "/plugins/bargain/activity/activity?id=" + v.bargain_order_id});
- },
- getIntegral: function (list) {
- const self = this;
- clearInterval(self.integral);
- let func = function () {
- list.forEach((value, key, array) => {
- if (value.status) return;
- let time = value.finish_at.replace(/-/g, '/');
- let diff_time = parseInt((new Date(time).getTime() - new Date().getTime()) / 1000)
- let day = 0, hour = 0, minute = 0, second = 0;
- if (diff_time > 0) {
- day = Math.floor(diff_time / (60 * 60 * 24));
- hour = Math.floor(diff_time / (60 * 60)) - (day * 24);
- minute = Math.floor(diff_time / 60) - (day * 24 * 60) - (hour * 60);
- second = Math.floor(diff_time) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);
- value.times = {day, hour, minute, second};
- } else {
- value.times = second;
- }
- });
- self.list = list;
- }
- func(list);
- self.integral = setInterval(() => {
- func(list);
- }, 1000);
- },
- submit: function (bargain) {
- const mchList = [{
- "mch_id": 0,
- "bargain_order_id": bargain.bargain_order_id,
- "goods_list": [{
- "id": bargain.goods_id,
- "attr": [],
- "num": 1,
- "cart_id": 0,
- "goods_attr_id": bargain.goods_attr_id
- }]
- }];
- uni.navigateTo({
- url: '/pages/order-submit/order-submit?mch_list=' +
- JSON.stringify(mchList) +
- '&preview_url=' + encodeURIComponent(this.$api.bargain.order_preview) +
- '&submit_url=' + encodeURIComponent(this.$api.bargain.order_submit)
- });
- },
- }
- }
- </script>
- <style scoped lang="scss">
- .no-content {
- padding: #{150rpx} 0;
- text-align: center;
- color: #888;
- }
- .order-list {
- }
- .bargain-list {
- padding: #{24rpx};
- margin-bottom: #{8rpx};
- background: #ffffff;
- image {
- height: #{216rpx};
- width: #{215rpx};
- display: block;
- }
- .bargain-right {
- margin-left: #{20rpx};
- min-height: #{216rpx};
- }
- .bargain-time {
- margin: #{8rpx} 0;
- font-size: #{26rpx};
- .info {
- width: #{45rpx};
- height: #{38rpx};
- background: #666666;
- color: #FFFFFF;
- text-align: center;
- border-radius: #{4rpx};
- line-height: #{38rpx};
- }
- .mark {
- color: #666666;
- margin: 0 #{10rpx};
- }
- }
- .self {
- }
- .min-price {
- color: #999999;
- font-size: #{24rpx};
- }
- .price {
- margin-top: #{8rpx};
- color: #ff4544;
- font-size: #{28rpx};
- }
- .bargain-content {
- margin-bottom: #{64rpx};
- color: #666666;
- font-size: #{24rpx};
- }
- .bargain-name {
- font-size: #{28rpx};
- color: #353535;
- }
- .attr {
- color: #999999;
- margin: #{12rpx 0 16rpx 0};
- font-size: $uni-font-size-weak-one;
- }
- }
- </style>
|