Authored by lea guo

Merge branch 'promotion/order-list' into develop

... ... @@ -35,7 +35,6 @@ export default {
params: {
owner: ownType.SELL,
status,
isRefetch: true
}
});
}
... ...
... ... @@ -3,7 +3,13 @@
<div
class="video-wrapper"
v-if="appraiseVideoUrl && pageName === 'list'"
@click="() => onVideoHandler({videoUrl:appraiseVideoUrl, orderCode: order.orderCode})"
@click="
() =>
onVideoHandler({
videoUrl: appraiseVideoUrl,
orderCode: order.orderCode
})
"
>
<div class="play-btn"></div>
<div class="play-txt">鉴定视频</div>
... ... @@ -14,7 +20,8 @@
v-for="action in actionList"
:key="action.code"
@click="() => onActionHandler(action)"
>{{ action.text }}</Button>
>{{ action.text }}</Button
>
</div>
</div>
</template>
... ... @@ -23,9 +30,6 @@
import { orderActionsMap, ownType } from "constants/order-constants";
import { createNamespacedHelpers } from "vuex";
const { mapActions } = createNamespacedHelpers("order/orderList");
const { mapMutations } = createNamespacedHelpers("address/address");
export default {
props: {
order: {
... ... @@ -46,104 +50,8 @@ export default {
}
},
methods: {
...mapActions([
"deleteOrder",
"cancelTradeConfirmInfo",
"cancelTrade",
"confirmReceipt"
]),
...mapMutations(["STORE_UPDATE_ADDRESS_INFO"]),
onActionHandler(action) {
const { owner = ownType.SELL } = this.$route.params;
const {
orderCode,
priceInfo = {},
goodsInfo = {},
// 订单类表和订单详情地址信息返回地段不一致
addressInfo,
userAddress
} = this.order;
const { productId, storageId, skup } = goodsInfo;
switch (action.name) {
// 再次购买
case orderActionsMap.BUY_AGAIN.name:
this.$router.push({
name: "ProductDetail",
params: { productId }
});
break;
// 查看详情
case orderActionsMap.SHOW_DETAIL.name:
const name =
owner === ownType.SELL ? "sellOrderDetail" : "buyOrderDetail";
this.$router.push({
name,
params: { owner, code: orderCode }
});
break;
// 再次出售
case orderActionsMap.SOLD_AGAIN.name:
this.$router.push({
name: "OrderSellConfirm",
query: { productId, storageId }
});
break;
// 查看物流
case orderActionsMap.SHOW_EXPRESS.name:
this.$router.push({
name: "orderLogisticsInfo",
params: { owner, code: orderCode }
});
break;
// 调价
// 非入住商家
case orderActionsMap.NOT_ENTRY_CHANGE_PRICE.name:
this.$router.push({
name: "PriceChangeNoEntry",
params: { orderCode }
});
break;
// 入住商家
case orderActionsMap.STORAGE_MANAGE.name:
this.$router.push({
name: "PriceChangeEntry",
params: { orderId: productId }
});
break;
// 我要发货
case orderActionsMap.DELIVER_GOODS.name:
this.$router.push({
name: "order.deliver",
params: { skup, code: orderCode }
});
break;
// 修改地址
case orderActionsMap.MODIFY_ADDRESS.name: {
// 保存地址到store
let info = JSON.stringify(addressInfo || userAddress || {});
let updateInfo = JSON.parse(info || "{}");
Object.assign(updateInfo, { isUpdate: true, orderCode: orderCode });
this.STORE_UPDATE_ADDRESS_INFO(updateInfo);
this.$router.push({
name: 'addressEdit',
query: {
fromPage: 'OrderList'
}
});
break;
}
default:
this.$emit("on-action", action);
}
this.$emit("on-action", action);
},
onVideoHandler(params) {
this.$emit("on-video", params);
... ...
/* eslint-disable new-cap */
/* eslint-disable indent */
/* eslint-disable lines-around-comment */
/* eslint-disable operator-linebreak */
/* eslint-disable space-before-function-paren */
import { orderActionsMap, ownType } from 'constants/order-constants';
import { createNamespacedHelpers } from 'vuex';
import DialogConfirmInfo from '../components/dialog-confirm-info';
import refreshMixin from './refresh';
const { mapActions, mapMutations } = createNamespacedHelpers('order/orderList');
const { mapMutations: addressMutations } = createNamespacedHelpers(
'address/address',
);
export default {
data() {
return {
hasAction: false,
};
},
mixins: [refreshMixin],
methods: {
...mapActions([
'cancelTradeConfirmInfo',
... ... @@ -19,20 +22,112 @@ export default {
'deleteOrder',
'computeChangePrice',
'confirmChangePrice',
'confirmReceipt',
]),
...mapMutations(['filterOrderList', 'resetData', 'resetOrderListItem']),
...addressMutations(['STORE_UPDATE_ADDRESS_INFO']),
async onAction({ action, order, isDetail = false } = {}) {
const { owner = ownType.SELL, type, status } = this.$route.params;
const { owner = ownType.SELL, status } = this.$route.params;
const {
orderCode,
realPrice = '',
bidDepositInfo = {},
goodsInfo = {},
priceInfo = {},
// 订单类表和订单详情地址信息返回地段不一致
addressInfo,
userAddress,
} = order;
const { productId, storageId, skup } = goodsInfo;
if (isDetail) {
this.setIsRefresh(true);
}
switch (action.name) {
// 再次购买
case orderActionsMap.BUY_AGAIN.name: {
this.$router.push({
name: 'ProductDetail',
params: { productId },
});
break;
}
// 查看详情
case orderActionsMap.SHOW_DETAIL.name: {
this.setIsRefresh(false);
const name =
owner === ownType.SELL ? 'sellOrderDetail' : 'buyOrderDetail';
this.$router.push({
name,
params: { owner, code: orderCode },
});
break;
}
// 再次出售
case orderActionsMap.SOLD_AGAIN.name:
this.$router.push({
name: 'OrderSellConfirm',
query: { productId, storageId },
});
break;
// 查看物流
case orderActionsMap.SHOW_EXPRESS.name:
this.setIsRefresh(false);
this.$router.push({
name: 'orderLogisticsInfo',
params: { owner, code: orderCode },
});
break;
// 调价
// 非入住商家
case orderActionsMap.NOT_ENTRY_CHANGE_PRICE.name:
this.$router.push({
name: 'PriceChangeNoEntry',
params: { orderCode },
});
break;
// 入住商家
case orderActionsMap.STORAGE_MANAGE.name:
this.$router.push({
name: 'PriceChangeEntry',
params: { orderId: productId },
});
break;
// 我要发货
case orderActionsMap.DELIVER_GOODS.name:
this.$router.push({
name: 'order.deliver',
params: { skup, code: orderCode },
});
break;
// 修改地址
case orderActionsMap.MODIFY_ADDRESS.name: {
// 保存地址到store
let info = JSON.stringify(addressInfo || userAddress || {});
let updateInfo = JSON.parse(info || '{}');
Object.assign(updateInfo, { isUpdate: true, orderCode: orderCode });
this.STORE_UPDATE_ADDRESS_INFO(updateInfo);
this.$router.push({
name: 'addressEdit',
query: {
fromPage: 'OrderList',
},
});
break;
}
case orderActionsMap.DEL_ORDER.name: {
this.$createConfirmDialog({
content: '确认删除订单?',
... ... @@ -45,19 +140,13 @@ export default {
});
if (isOk) {
this.filterOrderList({
orderCode,
owner,
status,
});
if (isDetail) {
this.filterOrderList({
orderCode,
owner,
status,
});
this.$router.back();
} else {
this.filterOrderList({
orderCode,
owner,
status,
});
}
}
const txt = isOk ? '删除成功' : '删除失败';
... ... @@ -95,7 +184,6 @@ export default {
if (isOk) {
if (isDetail) {
this.fetchOrderDetail(this.$route.params);
this.hasAction = true;
} else {
this.resetData(this.$route.params);
this.fetchData(this.$route.params);
... ... @@ -123,7 +211,6 @@ export default {
pageBackName = 'OrderList';
if (isDetail) {
this.hasAction = true;
price = priceInfo.realPayPrice;
pageBackName = 'buyOrderDetail';
}
... ... @@ -149,7 +236,6 @@ export default {
// 是否是求购
const isAskForBuy = status === 7;
this.hasAction = true;
this.$createOrderPayType({
orderCode,
price: parseFloat(bidDepositInfo.depositAmount).toFixed(2),
... ... @@ -180,7 +266,6 @@ export default {
if (isOk) {
if (isDetail) {
this.hasAction = true;
this.fetchOrderDetail(this.$route.params);
} else {
this.resetData(this.$route.params);
... ... @@ -243,7 +328,7 @@ export default {
params: isDetail
? {
owner: this.$route.params.owner,
code: bidData.orderCode, //改为新订单号
code: bidData.orderCode, // 改为新订单号
}
: this.$route.params,
},
... ...
... ... @@ -10,11 +10,6 @@ const { mapMutations: inSaleMapMutations } = createNamespacedHelpers(
);
export default {
data() {
return {
hasAction: false,
};
},
methods: {
...mapActions(['cancelTradeConfirmInfo', 'cancelTrade']),
...inSaleMapMutations(['filterInSaleOrderList']),
... ... @@ -49,7 +44,6 @@ export default {
});
if (isOk) {
this.hasAction = true;
if (isDetail) {
this.fetchOrderDetail(this.$route.params);
} else {
... ... @@ -80,7 +74,6 @@ export default {
case orderActionsMap.PAY_EARNESTMONEY.name: {
const pageBackName = isDetail ? 'sellOrderDetail' : 'InSaleOrderList';
this.hasAction = true;
this.$createOrderPayType({
orderCode,
price: parseFloat(`${earnestMoney}`).toFixed(2),
... ...
import { createNamespacedHelpers } from 'vuex';
const { mapMutations } = createNamespacedHelpers('order/orderList');
export default {
methods: {
...mapMutations(['setIsRefresh']),
},
};
... ...
const STORE_PATH = 'order/orderDetail';
export default {
beforeRouteEnter(to, from, next) {
next(vm => {
vm.$store.commit(`${STORE_PATH}/setFrom`, from);
});
},
};
... ... @@ -133,7 +133,6 @@ import OrderActions from "../components/order-actions";
import VideoPlayer from "../order-list/components/video-player";
import orderActionMixin from "../mixin/order-action";
import routeActionMinxin from "../mixin/route";
const STORE_PATH = "order/orderDetail";
... ... @@ -142,7 +141,7 @@ const { mapActions, mapState, mapGetters } = createNamespacedHelpers(
);
export default {
mixins: [orderActionMixin, routeActionMinxin],
mixins: [orderActionMixin],
components: {
AddressInfo,
OrderItemInfo,
... ... @@ -168,17 +167,8 @@ export default {
asyncData({ store, router }) {
return store.dispatch(`${STORE_PATH}/fetchOrderDetail`, router.params);
},
beforeRouteLeave(to, from, next) {
if (this.from.name === "OrderPay" || this.hasAction) {
to.params.isRefetch = true;
}
if (to.name === "OrderList" || to.name === "InSaleOrderList") {
this.hasAction = false;
}
next();
},
computed: {
...mapState(["orderDetail", "from"]),
...mapState(["orderDetail"]),
...mapGetters([
"lastExpressInfo",
"priceInfo",
... ...
<template>
<div>
<layout-app
:title="'\u200E'"
class="seller-order-detail-wrapper"
>
<layout-app :title="'\u200E'" class="seller-order-detail-wrapper">
<div class="order-detail-wrapper">
<div class="content">
<!-- 状态信息 -->
... ... @@ -114,7 +111,6 @@ import OrderActions from "../components/order-actions";
import orderActionMixin from "../mixin/order-action";
import orderInSaleActionMixin from "../mixin/order-in-sale-action";
import routeMixin from "../mixin/route";
import PlatformFeeInfo from "../components/platform-fee-info";
... ... @@ -125,7 +121,7 @@ const { mapActions, mapState, mapGetters } = createNamespacedHelpers(
);
export default {
mixins: [orderActionMixin, orderInSaleActionMixin, routeMixin],
mixins: [orderActionMixin, orderInSaleActionMixin],
components: {
AddressInfo,
OrderItemInfo,
... ... @@ -153,7 +149,7 @@ export default {
});
},
computed: {
...mapState(["orderDetail", "from"]),
...mapState(["orderDetail"]),
...mapGetters([
"lastExpressInfo",
"priceInfo",
... ... @@ -163,10 +159,6 @@ export default {
])
},
beforeRouteLeave(to, from, next) {
if (this.from.name === "OrderPay" || this.hasAction) {
to.params.isRefetch = true;
}
this.hasAction = false;
next();
},
methods: {
... ...
<template>
<router-link :to="toLinkParam">
<router-link :to="toLinkParam" @click.native="onClickHandler">
<div class="order-item-wrapper">
<div class="item-img">
<image-format
... ... @@ -33,8 +33,10 @@
<script>
import { ownType, orderActionsMap } from "constants/order-constants";
import { routeNames as detailRouteNames } from "../../order-detail";
import refreshMixin from "../../mixin/refresh";
export default {
mixins: [refreshMixin],
props: {
order: {
type: Object,
... ... @@ -78,6 +80,11 @@ export default {
}
return linkParam;
}
},
methods: {
onClickHandler() {
this.setIsRefresh(false);
}
}
};
</script>
... ...
<template>
<router-link :to="toLinkParam">
<router-link :to="toLinkParam" @click.native="onClickHandler">
<div class="order-item-wrapper">
<div class="item-img">
<image-format
... ... @@ -38,8 +38,10 @@
<script>
import { ownType } from "constants/order-constants";
import { routeNames as detailRouteNames } from "../../order-detail";
import refreshMixin from "../../mixin/refresh";
export default {
mixins: [refreshMixin],
props: {
order: {
type: Object,
... ... @@ -70,6 +72,11 @@ export default {
);
}
}
},
methods: {
onClickHandler() {
this.setIsRefresh(false);
}
}
};
</script>
... ...
... ... @@ -107,11 +107,8 @@ export default {
// 获取订单数据
beforeRouteEnter(to, from, next) {
next(vm => {
const { isRefetch = false } = to.params;
if (isRefetch || !from.name) {
vm.$store.commit(`${IN_SALE_STORE_PATH}/resetData`);
vm.$store.dispatch(`${IN_SALE_STORE_PATH}/fetchEntryOrderList`);
}
vm.$store.commit(`${IN_SALE_STORE_PATH}/resetData`);
vm.$store.dispatch(`${IN_SALE_STORE_PATH}/fetchEntryOrderList`);
});
},
activated() {
... ...
... ... @@ -77,10 +77,11 @@ import { orderStatusKey, getOrderStatus } from "constants/order-constants";
const STORE_PATH = "order/orderList";
const detailRouterNames = ["buyOrderDetail", "sellOrderDetail"];
const listRouterNames = ["OrderList", "InSaleOrderList"];
const refetchBackList = ["OrderList"];
const clearScrollBlackList = [
"buyOrderDetail",
"sellOrderDetail",
"orderLogisticsInfo"
];
const { mapActions, mapState, mapMutations } = createNamespacedHelpers(
STORE_PATH
... ... @@ -109,7 +110,7 @@ export default {
status: Number
},
computed: {
...mapState(["orderListByType"]),
...mapState(["orderListByType", "isRefresh"]),
orderStatus() {
return this.orderListByType[orderStatusKey(this.owner, this.status)];
},
... ... @@ -133,44 +134,46 @@ export default {
// 只有列表进入详情返回时不刷新列表
beforeRouteEnter(to, from, next) {
next(vm => {
let { owner, status, isRefetch = false } = to.params;
status = getOrderStatus(owner, status);
// if (detailRouterNames.includes(from.name)) {
// const { from: detailFrom } = vm.$store.state.order.orderDetail;
// if (listRouterNames.includes(detailFrom.name)) {
// isRefetch = false;
// }
// }
if (isRefetch || !from.name) {
console.log("------order----list-----isRefresh---", vm.isRefresh);
if (vm.isRefresh) {
let { owner, status } = to.params;
status = getOrderStatus(owner, status);
vm.$store.commit(`${STORE_PATH}/resetData`, { owner, status });
vm.$store.dispatch(`${STORE_PATH}/fetchOrderList`, { owner, status });
} else {
vm.setIsRefresh(true);
}
});
},
beforeRouteLeave(to, from, next) {
if (!detailRouterNames.includes(to.name)) {
if (!clearScrollBlackList.includes(to.name)) {
this.scrollY = 0;
}
next();
},
beforeRouteUpdate(to, from, next) {
// 重置滚动位置
this.reinitScroll();
// 获取数据
let { owner, status } = to.params;
status = getOrderStatus(owner, status);
this.scrollY = 0;
this.$refs.scroll.scrollTo(this.scrollY);
this.resetData({ owner, status });
this.fetchOrderList({ owner, status });
next();
},
methods: {
...mapActions(["fetchOrderList", "confirmReceipt"]),
...mapMutations(["resetData"]),
...mapMutations(["resetData", "setIsRefresh"]),
scrollHandler({ y }) {
this.scrollY = -y;
},
// 滚动位置清零
reinitScroll() {
this.scrollY = 0;
this.$refs.scroll.scrollTo(this.scrollY);
},
fetchData() {
if (this.isScrollFetch) {
this.fetchOrderList({
... ...
... ... @@ -157,7 +157,6 @@ export default {
case UserType.sell: {
this.$router.replace({
name: 'InSaleOrderList',
isRefetch: true
});
break;
}
... ... @@ -166,7 +165,6 @@ export default {
name: 'OrderList',
params: {
owner: UserType.buy,
isRefetch: true
}
});
break;
... ... @@ -176,7 +174,6 @@ export default {
name: 'OrderList',
params: {
owner: UserType.buy,
isRefetch: true
}
});
break;
... ...
... ... @@ -583,7 +583,6 @@ export default {
params: {
owner: this.selectSizeConfig.type,
status: 2, // 待付款
isRefetch: true
},
});
},
... ...
... ... @@ -95,7 +95,6 @@ export default function() {
title: '出售中',
num: state.sellerNum,
page: 'InSaleOrderList',
params: { isRefetch: true },
},
order: { name: 'order' },
resource1: { name: 'resource1', data: state.resource1 },
... ... @@ -110,14 +109,14 @@ export default function() {
title: '我的购买订单',
num: state.buyNum,
page: 'OrderList',
params: { owner: ownType.BUY, status: 1, isRefetch: true },
params: { owner: ownType.BUY, status: 1 },
},
buy: {
name: 'buy',
title: '我的求购',
num: state.askBuyNum,
page: 'OrderList',
params: { owner: ownType.BUY, status: 7, isRefetch: true },
params: { owner: ownType.BUY, status: 7 },
},
collect: {
name: 'collect',
... ...
... ... @@ -3,15 +3,11 @@ export default function() {
namespaced: true,
state: {
orderDetail: {},
from: {},
},
mutations: {
initData(state, data) {
state.orderDetail = data;
},
setFrom(state, from) {
state.from = from;
},
},
getters: {
userAddress: state => state.orderDetail.userAddress || {}, // 用户使用地址
... ...
... ... @@ -14,7 +14,7 @@ function initialOrderState() {
// scroll 组件参数,是否触发上拉事件
pullUpLoad: true,
isShowEmpty: false,
hasAction: false
hasAction: false,
};
}
... ... @@ -34,6 +34,7 @@ const initialState = () => {
return {
orderListByType,
isRefresh: true,
};
};
... ... @@ -42,6 +43,9 @@ export default function() {
namespaced: true,
state: initialState,
mutations: {
setIsRefresh(state, isRefresh) {
state.isRefresh = isRefresh;
},
setOrderList(state, { res, owner, status }) {
let { page, pagetotal, data = [] } = res;
const orderState = state.orderListByType[orderStatusKey(owner, status)];
... ...