|
@@ -1,86 +1,170 @@
|
|
|
<template>
|
|
|
<div class="order-layout">
|
|
|
- <div class="order-item">
|
|
|
- <div class="o-top">订单号:2018066262629894984984984</div>
|
|
|
+ <div class="order-item" v-for="(item,i) in myorder.list" :key='i'>
|
|
|
+ <div class="o-top">订单号:{{item.orderSn}}</div>
|
|
|
<div class="o-title">
|
|
|
<span>商品</span>
|
|
|
<span>数量</span>
|
|
|
<span>小计(CNY)</span>
|
|
|
</div>
|
|
|
- <div class="o-detail">
|
|
|
+ <div class="o-detail" v-for="(sub,index) in item.orderItems" :key="index">
|
|
|
<div class="od-name">
|
|
|
- <img class="thumbnail" src="@/assets/images/banner_pro.png" alt>
|
|
|
+ <img class="thumbnail" :src="sub.pic" alt>
|
|
|
<div>
|
|
|
- <p>四维看看 Pro</p>
|
|
|
- <p>标准套餐</p>
|
|
|
+ <p>{{sub.goodsName}}</p>
|
|
|
+ <p>{{sub.description}}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="count">2</div>
|
|
|
- <div class="sum">6,798</div>
|
|
|
- </div>
|
|
|
- <div class="o-detail">
|
|
|
- <div class="od-name">
|
|
|
- <img class="thumbnail" src="@/assets/images/banner_pro.png" alt>
|
|
|
- <div>
|
|
|
- <p>四维看看 Pro</p>
|
|
|
- <p>标准套餐</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="count">2</div>
|
|
|
- <div class="sum">6,798</div>
|
|
|
+ <div class="count">{{sub.goodsCount}}</div>
|
|
|
+ <div class="sum">{{sub.goodsPrice*sub.goodsCount}}</div>
|
|
|
</div>
|
|
|
<div class="sum-price">
|
|
|
<div></div>
|
|
|
- <div>总价:¥6,798</div>
|
|
|
+ <div>总价:{{item.goodsAmount}}</div>
|
|
|
</div>
|
|
|
<div class="to-pay">
|
|
|
- <span class="cancel">取消订单</span>
|
|
|
- <span class="pay btns">立即付款</span>
|
|
|
+ <template v-if="getStatus(item) === 'unpaid'">
|
|
|
+ <span class="cancel" @click="cancal(item)">取消订单</span>
|
|
|
+ <span class="pay btns" @click="toPay(item)">立即付款</span>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="getStatus(item) === 'shipped'">
|
|
|
+ <span class="expreeNum">物流单号:77110342778758</span>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="getStatus(item) === 'unshipped'">
|
|
|
+ <span class="expreeNum">等待商家发货</span>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="getStatus(item) === 'finish'">
|
|
|
+ <span class="expreeNum">已完成</span>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <span class="expreeNum">已取消</span>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="order-item">
|
|
|
- <div class="o-top">订单号:2018066262629894984984984</div>
|
|
|
- <div class="o-title">
|
|
|
- <span>商品</span>
|
|
|
- <span>数量</span>
|
|
|
- <span>小计(CNY)</span>
|
|
|
- </div>
|
|
|
- <div class="o-detail">
|
|
|
- <div class="od-name">
|
|
|
- <img class="thumbnail" src="@/assets/images/banner_pro.png" alt>
|
|
|
- <div>
|
|
|
- <p>四维看看 Pro</p>
|
|
|
- <p>标准套餐</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="count">2</div>
|
|
|
- <div class="sum">6,798</div>
|
|
|
- </div>
|
|
|
- <div class="sum-price">
|
|
|
- <div></div>
|
|
|
- <div>总价:¥6,798</div>
|
|
|
- </div>
|
|
|
- <div class="to-pay">
|
|
|
- <span class="cancel">取消订单</span>
|
|
|
- <span class="pay btns">立即付款</span>
|
|
|
- </div>
|
|
|
+ <div class="paging">
|
|
|
+ <Paging @clickHandle="pageChange" :current="currentPage" :total="total" :equable="pageSize" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapState } from 'vuex'
|
|
|
+import Paging from '@/components/Paging'
|
|
|
+
|
|
|
export default {
|
|
|
+ components: {Paging},
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ pageSize: 2,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ currentPage () {
|
|
|
+ this.getList()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState({
|
|
|
+ token: state => state.user.token,
|
|
|
+ myorder: state => {
|
|
|
+ if (Object.prototype.toString.call(state.user.myorder) === '[object Object]') {
|
|
|
+ return state.user.myorder
|
|
|
+ }
|
|
|
+ return (state.user.myorder ? JSON.parse(state.user.myorder) : {})
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
mounted () {
|
|
|
this.getList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ pageChange (data) {
|
|
|
+ this.currentPage = data
|
|
|
+ },
|
|
|
getList () {
|
|
|
let params = {
|
|
|
type: '',
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10
|
|
|
+ pageNum: this.currentPage,
|
|
|
+ pageSize: this.pageSize
|
|
|
}
|
|
|
this.$store.dispatch('getUserOrder', params)
|
|
|
+ this.pageSize = this.myorder.pageSize
|
|
|
+ this.total = this.myorder.total || 0
|
|
|
+ },
|
|
|
+ getStatus (item) {
|
|
|
+ console.log(item)
|
|
|
+ let temp = ''
|
|
|
+ let sPay = function () {
|
|
|
+ switch (item.shippingStatus) {
|
|
|
+ case 'unshipped':
|
|
|
+ temp = 'unshipped'
|
|
|
+ break
|
|
|
+ case 'shipped':
|
|
|
+ temp = 'shipped'
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let pPay = function () {
|
|
|
+ switch (item.paymentStatus) {
|
|
|
+ case 'unpaid':
|
|
|
+ temp = 'unpaid'
|
|
|
+ break
|
|
|
+ case 'paid':
|
|
|
+ sPay()
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (item.orderStatus) {
|
|
|
+ case 'unprocessed':
|
|
|
+ pPay()
|
|
|
+ break
|
|
|
+ case 'completed':
|
|
|
+ temp = 'finish'
|
|
|
+ break
|
|
|
+ case 'processed':
|
|
|
+ sPay()
|
|
|
+ break
|
|
|
+
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ return temp
|
|
|
+ },
|
|
|
+ toPay (item) {
|
|
|
+ this.$router.push({name: 'pay',
|
|
|
+ params: {
|
|
|
+ orderId: item.id,
|
|
|
+ orderType: 0
|
|
|
+ }})
|
|
|
+ },
|
|
|
+ async cancal (item) {
|
|
|
+ this.$toast.showConfirm('warn', '确定要删除当前订单吗?', async () => {
|
|
|
+ let params = {
|
|
|
+ orderId: item.id
|
|
|
+ }
|
|
|
+ let res = await this.$http({
|
|
|
+ method: 'post',
|
|
|
+ data: params,
|
|
|
+ headers: {
|
|
|
+ token: this.token
|
|
|
+ },
|
|
|
+ url: '/user/order/cancel'
|
|
|
+ })
|
|
|
+ let data = res.data
|
|
|
+ if (data.code === 0) {
|
|
|
+ return this.$toast.show('warn', '删除成功', () => {
|
|
|
+ this.getList()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return this.$toast.show('error', '删除失败')
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -194,6 +278,71 @@ $border-color: #e7e7e7;
|
|
|
text-align: center;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+ .expreeNum{
|
|
|
+ margin-right: 60px;
|
|
|
+ color: #2d2d2d;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .paging {
|
|
|
+ // border-left: #e5e5e5 1px solid;
|
|
|
+ height: 100%;
|
|
|
+ margin-bottom: 40px;
|
|
|
+ & /deep/ .layout {
|
|
|
+ text-align: left;
|
|
|
+ margin-top: 40px;
|
|
|
+ margin-left: 15px;
|
|
|
+ }
|
|
|
+ & /deep/ .layout a:not(:last-child) {
|
|
|
+ margin: 10px 8px;
|
|
|
+ font-size: 16px;
|
|
|
+ display: inline-block;
|
|
|
+ font-weight: 500;
|
|
|
+ cursor: pointer;
|
|
|
+ user-select: none;
|
|
|
+ color: #999;
|
|
|
+ position: relative;
|
|
|
+ transition: color 0.3s;
|
|
|
+ }
|
|
|
+ & /deep/ .layout a:last-child {
|
|
|
+ position: relative;
|
|
|
+ top: -5px;
|
|
|
+ display: -ms-inline-flexbox;
|
|
|
+ display: inline-flex;
|
|
|
+ -ms-flex-align: center;
|
|
|
+ align-items: center;
|
|
|
+ height: 22px;
|
|
|
+ padding: 0 9.6px;
|
|
|
+ padding: 0 0.6rem;
|
|
|
+ }
|
|
|
+ & /deep/ .layout a:last-child::before,
|
|
|
+ & /deep/ .layout a:last-child::after {
|
|
|
+ content: "";
|
|
|
+ display: inline-block;
|
|
|
+ will-change: transform;
|
|
|
+ transition: transform 0.3s;
|
|
|
+ }
|
|
|
+
|
|
|
+ & /deep/ .layout a:not(:last-child).active::after,
|
|
|
+ & /deep/ .layout a:not(:last-child).active,
|
|
|
+ & /deep/ .layout a:not(:last-child):hover,
|
|
|
+ & /deep/ .layout a:not(:last-child):hover::after {
|
|
|
+ color: #111111;
|
|
|
+ transform: scaleX(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ & /deep/ .layout a:not(:last-child)::after {
|
|
|
+ content: "";
|
|
|
+ height: 3px;
|
|
|
+ width: 140%;
|
|
|
+ background-color: #111;
|
|
|
+ display: block;
|
|
|
+ margin-left: -20%;
|
|
|
+ margin-top: 3px;
|
|
|
+ transform-origin: 50% 50%;
|
|
|
+ transform: scaleX(0);
|
|
|
+ will-change: transform;
|
|
|
+ transition: transform 0.3s;
|
|
|
}
|
|
|
}
|
|
|
}
|