| | |
| | | <script> |
| | | export default { |
| | | |
| | | data() { |
| | | return { |
| | | type: 'customer', |
| | | query: { |
| | | status: '', |
| | | }, |
| | | timer: undefined, |
| | | status: [{ |
| | | name: '全部', |
| | | value: '' |
| | |
| | | ] |
| | | }; |
| | | }, |
| | | onLoad(options) { |
| | | onUnload() { |
| | | this.timer && clearTimeout(this.timer) |
| | | }, |
| | | async onLoad(options) { |
| | | this.query.status = options.status || '' |
| | | this.listApi = `/api/customer/order/list` |
| | | this.getList() |
| | | await this.getList() |
| | | this.timer = setInterval(() => { |
| | | //倒计时 |
| | | var nowdate = new Date().getTime() - 1000 * 60 * 5 |
| | | var change = false |
| | | for (var item of this.list) { |
| | | if (item.statusBackend === 'PENDING') { |
| | | //计算倒计时 |
| | | var diff = new Date(item.createTime).getTime() - nowdate |
| | | // console.log('diff', diff, item) |
| | | if (diff <= 2000 && true) { |
| | | //超过了5分钟 |
| | | item.statusBackend = 'CANCEL' |
| | | item.statusBackend = '已取消' |
| | | item.status = 'CANCEL' |
| | | item.statusStr = '已取消' |
| | | |
| | | item.bctime = '' |
| | | change = true |
| | | |
| | | } else { |
| | | //相差 |
| | | var alltime = parseInt(diff / 1000) |
| | | var tt = 0 |
| | | if (alltime > 60) { |
| | | tt = alltime - parseInt(alltime / 60) * 60 |
| | | } else { |
| | | tt = alltime |
| | | } |
| | | item.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}` |
| | | change = true |
| | | |
| | | } |
| | | } |
| | | } |
| | | if (change) |
| | | this.$forceUpdate() |
| | | }, 1000) |
| | | }, |
| | | onReachBottom() { |
| | | this.getMore() |
| | |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('post', '/api/customer/order/refund', { |
| | | data: { |
| | | } = await this.$http.request('get', '/api/customer/order/refund', { |
| | | params: { |
| | | id: item.id, |
| | | evaluate: res.content |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$store.dispatch('sign_add','order') |
| | | this.$store.dispatch('sign_add', 'order') |
| | | this.refreshList() |
| | | } |
| | | } |
| | |
| | | console.log('pay success', res) |
| | | that.$message.showToast('支付成功') |
| | | setTimeout(() => { |
| | | that.$store.dispatch('sign_add','order') |
| | | that.$store.dispatch('sign_add', 'order') |
| | | that.refreshList() |
| | | }, 200) |
| | | }, |
| | |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$store.dispatch('sign_add','order') |
| | | if (code === 0) { |
| | | this.$store.dispatch('sign_add', 'order') |
| | | this.refreshList() |
| | | } |
| | | } |
| | | break |
| | | case 'delOrder': { |
| | | await this.$message.confirm('是否删除此订单') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/delete', { |
| | | params: { |
| | | id: item.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | // this.$store.dispatch('sign_add', 'order') |
| | | this.refreshList() |
| | | } |
| | | } |
| | |
| | | </script> |
| | | <template> |
| | | <view class="order-container"> |
| | | <view class="order-top"> |
| | | <view class="order-top" v-if="false"> |
| | | <view class="title">订单信息</view> |
| | | <view class="flex"> |
| | | <image class="image img100" |
| | |
| | | </view> |
| | | <view class="status t-red m-l-a m-r-0">¥{{ dto.paymentAmount || dto.totalAmount || '0'}}</view> |
| | | </view> |
| | | <view class="desc flex" v-if="!query.status"> |
| | | <view class=" desc flex" v-if="!query.status"> |
| | | <view class="label"> |
| | | 订单状态: |
| | | </view> |
| | | <view class="value">{{ dto.statusBackendStr }}</view> |
| | | <view class="value" style="color: #000">{{ dto.statusBackendStr || '-' }}</view> |
| | | </view> |
| | | <view class="desc flex"> |
| | | <view class="desc flex" v-if="dto.deliveryNo" @click="copyTxt(dto.deliveryNo)"> |
| | | <view class="label"> |
| | | 收货人: |
| | | 快递单号: |
| | | </view> |
| | | <view class="value">{{ dto.customer }}</view> |
| | | <view class="value">{{ dto.deliveryNo }}</view> |
| | | </view> |
| | | <view class="desc flex"> |
| | | <view class="label"> |
| | | 收货人手机号码: |
| | | |
| | | <view class="flex"> |
| | | <view class="desc flex flex1"> |
| | | <view class="label"> |
| | | 收货人: |
| | | </view> |
| | | <view class="value">{{ dto.customer || '-' }}</view> |
| | | </view> |
| | | <view class="value">{{ dto.customerTel }}</view> |
| | | </view> |
| | | <view class="desc flex"> |
| | | <view class="label"> |
| | | 收货地址: |
| | | <view class="desc flex flex1"> |
| | | <view class="label"> |
| | | 收货人手机号码: |
| | | </view> |
| | | <view class="value">{{ dto.customerTel || '-' }}</view> |
| | | </view> |
| | | <view class="value">{{ dto.customerAddress }}</view> |
| | | </view> |
| | | <view class="desc flex" v-if="dto.statusBackend!=='PENDING'"> |
| | | <view class="flex"> |
| | | <view class="desc flex flex1"> |
| | | <view class="label"> |
| | | 收货地址: |
| | | </view> |
| | | <view class="value">{{ dto.customerAddress }}</view> |
| | | </view> |
| | | <view class="desc flex flex1" v-if="dto.deliveryName"> |
| | | <view class="label"> |
| | | 快递名称: |
| | | </view> |
| | | <view class="value">{{ dto.deliveryName }}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="desc flex" v-if="dto.statusBackend!=='PENDING'&&dto.statusBackend!=='CANCEL'"> |
| | | <view class="label"> |
| | | 支付时间: |
| | | </view> |
| | | <view class="value">{{ dto.paymentTime }}</view> |
| | | <view class="value">{{ dto.paymentTime || '-' }}</view> |
| | | </view> |
| | | <view class="flower-info m-b-5 m-t-12 br-4" v-for="(item,index) of dto.items" :key="index"> |
| | | <view class="flower-info m-b-5 m-t-8 br-4" v-for="(item,index) of dto.items" :key="index"> |
| | | <view class="line-gray"></view> |
| | | |
| | | |
| | | <view class="supplier-name "> |
| | | <image class="icon-dp br-4" src="/static/common/icon-dp.png"></image> |
| | | {{ item.supplierName }} |
| | | </view> |
| | | <view class="flex m-t-12 flex-wrap-normal"> |
| | | <image class="flower-img img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)"> |
| | | <image class="flower-img img100 m-r-6" :src="item.flowerCover" |
| | | @click="previewImg(item.flowerCover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | |
| | | <view class="each-item"> |
| | | <view class="label">颜色</view> |
| | | <view class="value">{{ item.flowerColor || '-' }}</view> |
| | | |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">规格</view> |
| | | <view class="value">{{ item.flowerUnit || '-' }}</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">售价</view> |
| | | <view class="value">¥{{ item.price || 0 }}</view> |
| | | |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">商品总金额</view> |
| | | <view class="value">¥{{ item.total || 0 }}</view> |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | <view class="line-gray"></view> |
| | | |
| | | |
| | | <view class="flex buttons"> |
| | | <view class="button button-0 m-l-a m-r-15" v-if="dto.statusBackend==='CANCEL'" |
| | | @click="buttonClick(dto,'delOrder')">删除订单</view> |
| | | <view class="button button-0 m-l-a m-r-15" v-if="dto.statusBackend==='PENDING'" |
| | | @click="buttonClick(dto,'cancelOrder')">取消订单</view> |
| | | <view class="button button-1 m-l-15 m-r-15" v-if="dto.statusBackend==='PENDING'" |
| | | @click="buttonClick(dto,'payAgain')">重新支付</view> |
| | | @click="buttonClick(dto,'payAgain')">重新支付<span v-if="dto.bctime">({{dto.bctime}})</span></view> |
| | | |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'refund')" v-if="dto.couldRefund"> |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'refund')" |
| | | v-if="dto.couldRefund"> |
| | | 申请退款 |
| | | </view> |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'confirm')" |
| | | v-if="dto.statusBackend ==='RECEIVE'"> 确认收货 |
| | | </view> |
| | | |
| | | <!-- ||item.statusBackend=='COMPLETED' --> |
| | | <view class="button button-1 m-l-a m-r-15" @click="toDetailSale(dto)" |
| | | v-if="dto.statusBackend === 'EVALUATE'||item.statusBackend=='COMPLETED'"> 申请售后 |
| | | v-if="dto.statusBackend === 'RECEIVE'"> 申请售后 |
| | | </view> |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'evaluate')" |
| | | v-if="dto.statusBackend === 'EVALUATE'"> 评价 |
| | |
| | | border: 2rpx solid #20613D; |
| | | } |
| | | } |
| | | |
| | | .flower-info { |
| | | padding: 0rpx; |
| | | |
| | | |
| | | background: #FFFFFF; |
| | | border-radius: 8rpx; |
| | | |
| | | |
| | | .supplier-name { |
| | | border-bottom: 2rpx solid #EEEEEE; |
| | | font-weight: 600; |
| | |
| | | color: #000000; |
| | | padding-bottom: 10rpx; |
| | | line-height: 40rpx; |
| | | |
| | | |
| | | .icon-dp { |
| | | width: 27rpx; |
| | | height: 27rpx; |
| | |
| | | vertical-align: middle; |
| | | } |
| | | } |
| | | |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | |
| | | |
| | | .level { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | |
| | | margin-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | |
| | | .flower-img { |
| | | width: 128rpx; |
| | | height: 118rpx; |
| | | min-width: 128rpx; |
| | | min-height: 118rpx; |
| | | } |
| | | |
| | | |
| | | .each-list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 6rpx; |
| | | |
| | | |
| | | .each-item { |
| | | min-width: 40%; |
| | | max-width: 50%; |
| | |
| | | margin-left: 0rpx; |
| | | margin-right: auto; |
| | | display: flex; |
| | | |
| | | |
| | | .label { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | |
| | | text-align: left; |
| | | padding-right: 10rpx; |
| | | } |
| | | |
| | | |
| | | .label::after { |
| | | content: ": " |
| | | } |
| | | |
| | | |
| | | .value { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |