order-action.js 4.84 KB
/* eslint-disable space-before-function-paren */
import { createNamespacedHelpers } from 'vuex';
const { mapActions } = createNamespacedHelpers('order/orderList');

import { orderActionsMap, ownType } from 'constants/order-constants';

export default {
  data() {
    return {
      isMixin: true,
    };
  },
  methods: {
    ...mapActions(['cancelTradeConfirmInfo', 'cancelTrade', 'deleteOrder']),
    async onSellerOrderAction({ action, order }) {
      const { owner = ownType.SELL } = this.$route.params;
      const { orderCode, earnestMoney } = order;

      switch (action.name) {
        case orderActionsMap.DEL_ORDER.name: {
          this.deleteOrderConfirmDialog({ orderCode, owner });
          break;
        }
        case orderActionsMap.NOT_SOLD.name: {
          const confirmInfo = await this.cancelTradeConfirmInfo({
            orderCode,
            owner,
          });

          this.$createConfirmDialog({
            content: confirmInfo.confirmDesc,
            confirmBtn: {
              text: '不卖了',
              style: { color: '#D0021B' },
            },
            cancelBtn: { text: '继续出售', active: true },
            onConfirm: async () => {
              const isOk = await this.cancelTrade({
                orderCode,
                owner,
              });

              if (isOk) {
                this.fetchOrderDetail(this.$route.params);
              }

              // const txt = isOk ? "取消成功" : "取消失败";
              // this.$createToast({ txt, type: "txt" }).show();
            },
          }).show();
          break;
        }

        case orderActionsMap.PAY_EARNESTMONEY.name: {
          this.$createOrderPayType({
            orderCode,
            price: earnestMoney,
            desc: '保证金',

            // 支付成功会跳route
            extra: JSON.stringify({
              back: {
                name: 'sellOrderDetail',
                params: { owner, orderCode },
              },
            }),
          }).show();
          break;
        }

        default:
          return;
      }
    },
    async onBuyerOrderAction({ action, order }) {
      const { owner = ownType.SELL } = this.$route.params;
      const { orderCode, priceInfo = {} } = order;

      switch (action.name) {
        case orderActionsMap.DEL_ORDER.name: {
          this.deleteOrderConfirmDialog({ orderCode, owner });
          break;
        }
        case orderActionsMap.CANCEL_ORDER.name: {
          const confirmInfo = await this.cancelTradeConfirmInfo({
            orderCode,
            owner,
          });

          this.$createConfirmDialog({
            content: confirmInfo.confirmDesc,
            confirmBtn: { text: '取消订单', style: { color: '#D0021B' } },
            cancelBtn: { text: '保留订单', active: true },
            onConfirm: async () => {
              const isOk = await this.cancelTrade({
                orderCode,
                owner,
              });

              if (isOk) {
                this.fetchOrderDetail(this.$route.params);
              }
              const txt = isOk ? '取消成功' : '取消失败';

              this.$createToast({ txt, type: 'txt' }).show();
            },
          }).show();
          break;
        }

        case orderActionsMap.NOW_BUY.name: {
          this.$createOrderPayType({
            orderCode,
            price: parseFloat(priceInfo.realPayPrice || ''),
            desc: '',
            extra: JSON.stringify({
              back: {
                name: 'buyOrderDetail',
                params: {
                  owner,
                  orderCode,
                },
              },
            }),
          }).show();
          break;
        }

        case orderActionsMap.CONFIRM_DELIVERY.name: {
          this.$createConfirmDialog({
            onConfirm: async () => {
              const isOk = await this.confirmReceipt({
                orderCode,
                owner,
              });

              if (isOk) {
                this.fetchOrderDetail(this.$route.params);
              }

              // const txt = isOk ? "收货成功" : "收货失败";
              // this.$createToast({ txt, type: "txt" }).show();
            },
          });
          break;
        }
        default:
          return;
      }
    },

    // 删除订单
    deleteOrderConfirmDialog({ orderCode, owner }) {
      this.$createConfirmDialog({
        type: 'confirm',
        content: '确认删除订单?',
        confirmBtn: { style: { color: '#D0021B' } },
        onConfirm: async () => {
          const isOk = await this.deleteOrder({
            orderCode,
            owner,
          });

          if (isOk) {
            this.$router.back();
          }

          // const txt = isOk ? "删除成功" : "删除失败";
          // this.$createToast({ txt, type: "txt" }).show();
        },
      }).show();
    },
  },
};