|
|
- <template>
- <view class="order">
- <view class="order-nav">
- <u-navbar :title="$t('page.order.myOrder')" @leftClick="leftClick()"></u-navbar>
- </view>
- <u-sticky>
- <view class="order-tabs">
- <u-tabs lineWidth="40" lineColor="#ED762F" @change="tabChange" :current="currentIndex"
- :list="classifyList"></u-tabs>
- </view>
- </u-sticky>
- <view v-if="!noOrder" class="order-list">
- <view v-for="(item,index) in productList" :key="index" class="order-item" v-if="item.state == currentIndex">
- <view class="order-item-top">
- <!-- <view class="order-time">
- {{ item.createTime }}
-
- </view> -->
- <text class="order-status">{{ classifyList[item.state].name }}</text>
- </view>
- <orderProductListVue :product="item"></orderProductListVue>
- <!-- <view class="order-bottom">TôngcÃng:¥<text class="total-price">5280.0</text>(baogòmcàvànchuyên¥0.0) -->
- <view class="order-bottom">{{ $t('page.order.total') }}:<text
- class="total-price">{{ item.sumPrice }}</text></view>
- <view class="btns">
- <view @click="toPayOrder(item)" v-if="currentIndex == 0" class="btn">
- {{ $t('page.order.immediatePayment') }}
- </view>
- <view @click="cancelOrder(item)" v-if="currentIndex == 0" class="btn">
- {{ $t('page.order.cancelOrder') }}
- </view>
- <view @click="confirmReceiptGoods(item)" v-if="currentIndex == 2" class="btn golden">
- {{ $t('page.order.confirm-receipt-goods') }}
- </view>
- <!-- <view v-if="currentIndex == 3" class="btn">{{ $t('page.order.repurchase') }}</view> -->
- <!-- <view v-if="currentIndex == 3" class="btn">{{ $t('page.order.deleteOrder') }}</view> -->
- <view @click="toOrderDetail(item.id)" class="btn">{{ $t('page.order.viewNow') }}</view>
- </view>
- </view>
- </view>
-
- <view v-else class="no-order">
- <view class="box">
- <view class="no-product-title">{{ $t('page.order.no-Order') }}</view>
- <view @click="toHome()" class="to-home">{{ $t('page.order.take-stroll')}}</view>
- </view>
- </view>
-
- <orderPanel :open.sync="orderPanenOpen" @definiteExecution="definiteExecution" @closePanel="closePanel"
- :title="panelTitle" :desc="panelDesc" :num="panelNum" :url="imageUrl"></orderPanel>
- </view>
- </template>
-
- <script>
- import orderProductListVue from '../../components/order-product/orderProductList.vue'
- import orderPanel from '../../components/order-panel/orderPanel.vue';
- import UniDateformat from '@/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js'
- export default {
- components: {
- orderProductListVue,
- orderPanel,
- UniDateformat
- },
- data() {
- return {
- classifyList: [{
- name: this.$t('page.order.pendingPayment')
- },
- {
- name: this.$t('page.order.pendingShipment')
- },
- {
- name: this.$t('page.order.pendingReceipt')
- },
- {
- name: this.$t('page.order.completed')
- },
- ],
-
- productList: [],
- currentIndex: 0, //当前选择的标签index
- orderPanenOpen: false,
- panelTitle: '',
- panelDesc: '',
- panelNum: '',
- queryParams: {},
- typeGoods: '',
- noOrder: false,
- imageUrl : '',
- }
- },
- onShow() {
- this.getOrderList();
- this.currentIndex = localStorage.getItem('orderIndex') ?
- parseInt(localStorage.getItem('orderIndex')) : 0
- localStorage.removeItem('orderIndex')
- },
- methods: {
- getOrderList() { //获取订单列表
- this.request('getOrderPage', {}, this.queryParams).then(res => {
- this.productList = parseList(res.result.records);
- this.tabChange();
- })
- },
- tabChange(item) {
- if (item) {
- this.currentIndex = item.index
- }
-
- for (let i = 0; i < this.productList.length; i++) {
- if (parseInt(this.productList[i].state) === this.currentIndex) {
- return this.noOrder = false;
- }
- this.noOrder = true;
- }
- },
- toOrderDetail(id) {
- uni.navigateTo({
- url: '/pages/orderDetail/orderDetail?id=' + id
- })
- },
- toPayOrder(item) {
- uni.navigateTo({
- url: '/pages/payOrder/payOrder?id=' + item.id + '&quantity=' + item.num
- })
- },
- cancelOrder(item) { //取消订单
- this.panelTitle = this.$t('page.order.cancel-order-title')
- this.panelDesc = this.$t('page.order.cancel-order-desc')
- this.panelNum = this.$t('page.order.cancel-product-num')
- this.typeGoods = 'del'
- this.orderId = item.id
- this.imageUrl = item.image
- this.orderPanenOpen = true;
- },
- delOrder() {
-
- },
- confirmReceiptGoods(id) { //确认收货
- this.panelTitle = this.$t('page.order.confirm-receipt-goods-title')
- this.panelDesc = this.$t('page.order.confirm-receipt-goods-desc')
- this.panelNum = this.$t('page.order.confirm-product-num')
- this.typeGoods = 'confirm'
- this.orderId = item.id
- this.imageUrl = item.image
- this.orderPanenOpen = true;
- },
- leftClick() {
- uni.switchTab({
- url: '/pages/home/home'
- })
- },
- closePanel() {
- this.orderPanenOpen = false;
- },
- definiteExecution() {
- if (this.typeGoods == 'confirm') {
- this.request('confirm', {
- id: this.orderId
- }).then(res => {
- if (res.code == 200) {
- this.getOrderList();
- this.$MyToast(this.$t('page.order.success-operation'), {
- title: this.$t('myToactTitle'),
- icon: true //是否开启icon
- })
- this.orderPanenOpen = false;
- }
- })
- } else if (this.typeGoods == 'del') {
- this.request('delOrder', {
- id: this.orderId
- }).then(res => {
- if (res.code == 200) {
- this.getOrderList();
- this.$MyToast(this.$t('page.order.success-operation'), {
- title: this.$t('myToactTitle'),
- icon: true //是否开启icon
- })
- this.orderPanenOpen = false;
- }
- })
- }
- },
- toHome(){ //去首页
- uni.switchTab({
- url: '/pages/home/home'
- })
- }
- }
- }
- </script>
-
- <style lang="scss" scoped>
- .order {
- padding-bottom: 10px;
-
- &::v-deep .order-tabs {
- background: white;
-
- .u-tabs__wrapper__nav__item {
- flex: 1;
- }
- }
-
- .order-list {
- box-sizing: border-box;
- margin-top: 50px;
-
- .order-item {
- margin-top: 10px;
- background: white;
- padding: 10px;
- border-radius: 5px;
-
- .order-item-top {
- height: 70rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- font-size: 26rpx;
-
- .order-time {
- color: #333333;
- }
-
- .order-status {
- color: #ED762F;
- }
- }
-
- .order-bottom {
- font-size: 26rpx;
- text-align: right;
- padding: 15rpx;
- }
-
- .btns {
- display: flex;
- justify-content: flex-end;
-
- .btn {
- display: flex;
- justify-content: center;
- align-items: center;
- box-sizing: border-box;
- padding: 10rpx 13rpx;
- border: 1px solid #ccc;
- border-radius: 100rpx;
- margin: 0px 5px;
- color: #333333;
- font-size: 22rpx;
- }
-
- .golden {
- color: #ED762F;
- border: 1px solid #ED762F;
- }
- }
- }
- }
-
- .no-order {
- height: calc(100vh - 138px);
- display: flex;
- align-items: center;
- justify-content: center;
-
- .box {
- font-size: 26rpx;
- text-align: center;
-
- .to-home {
- padding: 20rpx 140rpx;
- border: 1px solid #ccc;
- border-radius: 5px;
- text-align: center;
- margin: 20rpx 0px;
- }
- }
- }
- }
- </style>
|