Authored by lea guo

Merge branch 'develop' of git.yoho.cn:fe/xianyu-ufo-app-web into develop

// 调价首页路由
// PriceChangeEntry 入驻商家调价
// PriceChangeNoEntry 非注入商家调价
export default [{
path: '/xianyu/order/priceChange/:orderId(\\d+).html',
name: 'PriceChange',
component: () => import(/* webpackChunkName: "priceChange" */ './list')
path: '/xianyu/order/priceChangeEntry/:orderId(\\d+).html',
name: 'PriceChangeEntry',
component: () => import(/* webpackChunkName: "priceChange" */ './entry-detail')
},{
path: '/xianyu/order/priceChangeNoEntry/:orderCode(\\d+).html',
name: 'PriceChangeNoEntry',
component: () => import(/* webpackChunkName: "priceChangeNoEntry" */ './no-entry-detail')
}];
... ...
<template>
<LayoutApp :title="title">
<div class="order-page">
<div class="title">出售</div>
<div class="product">
<ImgSize class="pro-img" :src="noEntryOrderInfo.goodsInfo.goodImg || ''" :width="200" :height="200"></ImgSize>
<div class="pro-info">
<p class="pro-name">{{noEntryOrderInfo.goodsInfo.colorName}}, {{noEntryOrderInfo.goodsInfo.sizeName}}码</p>
<p class="stock-info ufo-font">最低售价: ¥{{noEntryOrderInfo.goodsInfo.leastPrice}}</p>
</div>
</div>
<div class="input-container">
<InputUfo type="number" placeholder="定价需以9结尾.例如1999"
:maxlength="8" class="ipt-number" v-model="chgPrice">
<span class="prepend" slot="prepend">¥</span>
</InputUfo>
</div>
<div class="earnest-container">
<p>需支付保证金:</p><p class="earnest-money">{{earnestMoney}}</p>
<p class="desc">所有商品必须为国内现货,且承诺36小时内发货,交易成功后将自动退还保证金</p>
</div>
<div class="fee-container">
<div class="fee-line">
<p class="fee-title">平台费用:</p>
<p class="fee-price">{{platformFee}}</p>
</div>
<div class="fee-line">
<p class="fee-title">银行转账费(1%):</p>
<p class="fee-price">{{bankTransferFee}}</p>
</div>
<div class="fee-line total">
<p class="fee-title">实际收入:</p>
<p class="fee-price">{{income}}</p>
</div>
</div>
<div class="address-container">
<div class="icon-container">
<i class="iconfont iconaddress"></i>
</div>
<div class="address-info">
<p class="user-name">{{noEntryOrderInfo.userAddress.consignee}}</p>
<p class="user-address">
{{noEntryOrderInfo.userAddress.area}} {{noEntryOrderInfo.userAddress.address}}
</p>
<p class="user-phone">
{{noEntryOrderInfo.userAddress.mobile}}
</p>
</div>
</div>
</div>
</LayoutApp>
</template>
<script>
import LayoutApp from '../../../components/layout/layout-app';
import ScrollView from '../../../components/layout/scroll-view';
import ImgSize from '../../../components/img-size';
import {createNamespacedHelpers} from 'vuex';
import InputUfo from './components/input-ufo';
const {mapState, mapActions, mapMutations} = createNamespacedHelpers('order/priceChange');
export default {
name: 'noEntryDetail',
components: {InputUfo, ScrollView, LayoutApp, ImgSize},
data() {
return {
title: '',
platformFee: '-¥0',
bankTransferFee: '-¥0',
income: '¥0',
errorTip: '',
chgPrice: '',
calced: false,
earnestMoney: '¥0',
};
},
asyncData({store, router}) {
return store.dispatch('order/priceChange/fetchOrder', {orderCode: router.params.orderCode});
},
mounted() {
// this.fetchOrder({orderCode: this.$route.params.orderCode});
},
computed: {
...mapState(['noEntryOrderInfo']),
},
methods: {
...mapActions(['fetchOrder'])
}
};
</script>
<style lang="scss" scoped>
.order-page {
-webkit-font-smoothing: antialiased;
.title {
line-height: 82px;
font-size: 68px;
font-weight: bold;
padding: 2px 40px 0 40px;
}
.product {
margin: 20px auto;
padding: 0 30px;
height: 200px;
display: flex;
.pro-img {
width: 200px;
height: 200px;
overflow: hidden;
display: flex;
align-items: center;
img {
width: 100%;
height: auto;
}
}
.pro-info {
padding: 64px 40px 0 40px;
line-height: 32px;
overflow: hidden;
.pro-name {
font-size: 24px;
color: #444;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.stock-info {
position: relative;
color: #000;
margin-top: 24px;
font-size: 28px;
}
.stock-text {
text-indent: 128px;
font-size: 28px;
font-weight: 600;
line-height: 44px;
}
}
}
.input-container {
position: relative;
display: block;
width: 690px;
margin: 0 auto;
overflow: hidden;
}
.ipt-number {
/deep/ .prepend {
width: 40px;
margin-left: 20px;
text-align: left;
}
}
.earnest-container {
width: 690px;
margin: 10px auto;
border-bottom: 1px solid #f0f0f0;
p {
display: inline-block;
font-size: 28px;
line-height: 60px;
}
.earnest-money {
color: #c94353;
}
.desc {
font-size: 24px;
color: #999;
line-height: 32px;
padding-bottom: 30px;
}
}
.fee-container {
width: 690px;
margin: 40px auto 20px auto;
overflow: hidden;
border-bottom: 1px solid #f0f0f0;
.fee-line {
margin-bottom: 20px;
color: #999;
font-size: 28px;
display: flex;
.fee-title {
width: 50%;
}
.fee-price {
width: 50%;
text-align: right;
}
&.total {
margin-bottom: 40px;
.fee-title {
color: #000;
}
.fee-price {
color: #c94353;
}
}
}
}
.address-container {
position: relative;
width: 690px;
margin: 40px auto 20px auto;
overflow: hidden;
border-bottom: 1px solid #f0f0f0;
.icon-container {
position: absolute;
width: 100px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.iconfont {
position: absolute;
font-size: 40px;
font-weight: 500;
color: #000;
}
}
.address-info {
overflow: hidden;
padding: 0 0 20px 100px;
}
}
}
</style>
... ...
... ... @@ -48,6 +48,96 @@ export default {
},
/**
* 获取未入驻商家出售的商品详情
* @param commit
* @param orderCode
* @returns {Promise<void>}
*/
async fetchOrder({commit}, {orderCode}) {
commit(Types.FETCH_NOENTRY_ORDER_PRODUCT_REQUEST);
let result;
result = await this.$api.get('/api/order/detail', {
orderCode,
tabType: 'sell'
});
console.log('fetchOrder= ', result);
if (result && result.code === 200) {
commit(Types.FETCH_NOENTRY_ORDER_PRODUCT_SUCCESS, {
order: result
});
} else {
result = { alg: 'SALT_MD5',
code: 200,
data:
{ attributes: 1,
bankTransferFee: '-¥0.09',
bidType: 0,
buttons: [ [Object], [Object] ],
createTime: '2019-09-29 10:54:00',
earnestMoney: 0.36,
earnestMoneyStr: '¥0.36',
goodsInfo:
{ batchNo: 1226211663688,
bidType: 0,
colorName: '黑色',
entryFlag: false,
goodImg:
'http://img11.static.yhbimg.com/goodsimg/2019/02/25/10/018b0d26a7e4bc0b39a93c329dd8c13d8e.jpg?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
goodPrice: '9.00',
leastPrice: 9,
leastPriceOfSkuTips: '最低现货价¥9',
price: 9,
productId: 10001266,
productName: 'Air Jordan 1 复刻黑绿脚趾 范闲',
sizeName: '37',
skup: 19168,
storageId: 10090816 },
income: '¥8.47',
isAdvance: 'N',
isPaid: 1,
orderCode: 1226211663688,
payment: 2,
paymentStr: '支付宝',
platformFee:
{ amount: '-¥0.44',
appraiseFee: '¥0.01',
goodsPaymentRatePercent: '4.70%',
packageFee: '¥0.01',
payChannelPercentage: '1.00%',
serviceFee: '¥0.42' },
secendLevelCreateTime: 1569725640,
statusDetail:
{ detailDesc: '商品出售中,待买家购买',
expressShow: false,
paymentTips: '交易成功后自动退还',
statuStr: '出售中',
status: 1 },
submitOrderTimeStr: '2019-09-29 10:54:00',
uid: 349709,
userAddress:
{ address: '嘉陵江东街18号南京国家广告产****17楼',
address_id: 2396242,
area: '江苏省 南京市 建邺区 建邺区新城科技园',
areaCode: '320105400',
consignee: '*骏',
isUpdate: 'N',
mobile: '138****0257',
phone: '',
zipCode: '' } },
md5: 'aa8b0d59cf55a6266304ac1edf6dbd43',
message: '订单详情' };
commit(Types.FETCH_NOENTRY_ORDER_PRODUCT_SUCCESS, {
order: result
});
// commit(Types.FETCH_NOENTRY_ORDER_PRODUCT_FAILED);
}
},
/**
* 不卖了
* @param commit
* @param payload
... ...
... ... @@ -9,8 +9,12 @@ export default function() {
fetchingNoSale: false,
fetchingChangePrice: false,
fetchingCalcPrice: false,
fetchingOrder: false,
productInfo: {}, // 商品详情
skcs: [] // 商品下包含的出售尺码相关信息
skcs: [], // 商品下包含的出售尺码相关信息
noEntryOrderInfo: {
goodsInfo: {}
},
},
actions,
mutations
... ...
... ... @@ -2,7 +2,7 @@ import * as Types from './types';
export default {
[Types.FETCH_ORDER_PRODUCT_REQUEST](state) {
state.orderInfo = {};
state.productInfo = {};
state.fetchingPro = true;
},
[Types.FETCH_ORDER_PRODUCT_FAILED](state) {
... ... @@ -29,6 +29,26 @@ export default {
}
},
[Types.FETCH_NOENTRY_ORDER_PRODUCT_REQUEST](state) {
state.noEntryOrderInfo = {};
state.fetchingOrder = true;
},
[Types.FETCH_NOENTRY_ORDER_PRODUCT_FAILED](state) {
state.fetchingOrder = false;
},
/**
* 获取未入驻商家调价时的商品详情
* @param state
* @param order
*/
[Types.FETCH_NOENTRY_ORDER_PRODUCT_SUCCESS](state, {order}) {
state.fetchingOrder = false;
if (order && order.data) {
state.noEntryOrderInfo = order.data || {};
}
},
[Types.MERGE_CHANGEPRICE_DATA](state, {skc, mergeData}) {
Object.assign(skc, mergeData);
},
... ...
... ... @@ -14,3 +14,15 @@ export const MERGE_CHANGEPRICE_DATA = 'MERGE_CHANGEPRICE_DATA';
export const POST_CALCPRICE_REQUEST = 'POST_CALCPRICE_REQUEST';
export const POST_CALCPRICE_FAILED = 'POST_CALCPRICE_FAILED';
export const POST_CALCPRICE_SUCCESS = 'POST_CALCPRICE_SUCCESS';
export const FETCH_NOENTRY_ORDER_PRODUCT_REQUEST = 'FETCH_NOENTRY_ORDER_PRODUCT_REQUEST';
export const FETCH_NOENTRY_ORDER_PRODUCT_FAILED = 'FETCH_NOENTRY_ORDER_PRODUCT_FAILED';
export const FETCH_NOENTRY_ORDER_PRODUCT_SUCCESS = 'FETCH_NOENTRY_ORDER_PRODUCT_SUCCESS';
export const POST_NOENTRY_CHANGE_PRICE_REQUEST = 'POST_NOENTRY_CHANGE_PRICE_REQUEST';
export const POST_NOENTRY_CHANGE_PRICE_FAILED = 'POST_NOENTRY_CHANGE_PRICE_FAILED';
export const POST_NOENTRY_CHANGE_PRICE_SUCCESS = 'POST_NOENTRY_CHANGE_PRICE_SUCCESS';
export const POST_NOENTRY_CALCPRICE_REQUEST = 'POST_NOENTRY_CALCPRICE_REQUEST';
export const POST_NOENTRY_CALCPRICE_FAILED = 'POST_NOENTRY_CALCPRICE_FAILED';
export const POST_NOENTRY_CALCPRICE_SUCCESS = 'POST_NOENTRY_CALCPRICE_SUCCESS';
... ...