Authored by 陈峰

commit

... ... @@ -11,7 +11,7 @@
<div class="modal-footer">
<slot name="footer">
<Button class="btn" type="button" @click="onCancel">{{cancelText}}</Button>
<Button class="btn" type="button" @click="onSure">{{sureText}}</Button>
<Button class="btn" :class="{active: loading}" type="button" @click="onSure">{{sureText}}</Button>
</slot>
</div>
</div>
... ... @@ -28,6 +28,7 @@ export default {
transfer: [Boolean],
title: String,
value: Boolean,
loading: Boolean,
sureText: {
type: String,
default: '确认'
... ... @@ -44,7 +45,9 @@ export default {
this.$emit('input', false);
},
onSure() {
this.$emit('on-sure');
if (!this.loading) {
this.$emit('on-sure');
}
}
},
components: {Button}
... ...
... ... @@ -4,6 +4,7 @@
v-model="visiable"
sure-text="调整价格"
cancel-text="取消"
:loading="fetchingChangePrice"
:transfer="true"
@on-sure="onSure">
<div class="change-price-modal">
... ... @@ -28,7 +29,7 @@ import InputUfo from '../../components/input-ufo';
import Modal from '../../components/modal.vue';
import {createNamespacedHelpers} from 'vuex';
const {mapActions} = createNamespacedHelpers('ufo/order');
const {mapState, mapActions} = createNamespacedHelpers('ufo/order');
export default {
name: 'ModalPrice',
... ... @@ -49,6 +50,9 @@ export default {
this.inputChange(newVal);
}
},
computed: {
...mapState(['fetchingChangePrice'])
},
methods: {
...mapActions(['postCalcPrice']),
show({skc, product}) {
... ...
... ... @@ -2,6 +2,7 @@
<Modal
class="ufo-font"
v-model="visiable"
:loading="fetchingNoSale"
:transfer="true"
@on-sure="onSure">
<div class="change-price-modal">
... ... @@ -23,7 +24,9 @@
<script>
import InputUfo from '../../components/input-ufo';
import Modal from '../../components/modal.vue';
import {createNamespacedHelpers} from 'vuex';
const {mapState} = createNamespacedHelpers('ufo/order');
export default {
name: 'ModalPrice',
... ... @@ -35,6 +38,9 @@ export default {
storageNum: 1,
};
},
computed: {
...mapState(['fetchingNoSale'])
},
methods: {
show({skc}) {
this.skc = skc;
... ...
... ... @@ -44,14 +44,9 @@ import ImgSize from 'components/img-size';
import {Button} from 'cube-ui';
import ScrollView from 'components/scroll-view';
import ProductList from './components/product-list';
import Vue from 'vue';
import {Toast} from 'cube-ui';
import {createNamespacedHelpers} from 'vuex';
Vue.use(Toast);
const {mapState, mapActions} = createNamespacedHelpers('ufo/order');
const {mapState, mapActions, mapMutations} = createNamespacedHelpers('ufo/order');
export default {
name: 'OrderPage',
... ... @@ -73,6 +68,7 @@ export default {
return store.dispatch('ufo/order/fetchProduct', {productId: router.params.orderId});
},
methods: {
...mapMutations(['MERGE_CHANGEPRICE_DATA']),
...mapActions(['fetchProduct', 'postChangePrice', 'postNoSale']),
async onPullingUp() {
const beginCount = this.skcs.length;
... ... @@ -95,21 +91,10 @@ export default {
onNoSale(skc) {
this.$refs.modalUnstock.show({skc});
},
refreshProduct(storageId) {
const findInx = this.skcs.findIndex(skc => skc.goodsInfo.storageId === storageId);
const findPage = parseInt(findInx / this.pageSize, 10) + ((findInx % this.pageSize) ? 1 : 0);
console.log(findInx, findPage)
this.fetchProduct({
productId: this.$route.params.orderId,
page: findPage,
refresh: false,
storageId
});
refreshProduct(skc, mergeData) {
this.MERGE_CHANGEPRICE_DATA({skc, mergeData}); //eslint-disable-line
},
async onChangePriceSure({skc, price}) {
this.refreshProduct(skc.storageId);
return;
const result = await this.postChangePrice({
product_id: this.productInfo.productId,
storage_id: skc.storageId,
... ... @@ -124,7 +109,9 @@ console.log(findInx, findPage)
txt: '调价成功',
type: 'success',
}).show();
this.refreshProduct(skc.storageId);
this.refreshProduct(skc, {
price
});
} else {
this.$createToast({
txt: result.message || '调价失败',
... ... @@ -147,7 +134,9 @@ console.log(findInx, findPage)
txt: '下架成功',
type: 'correct'
}).show();
this.refreshProduct(skc.storageId);
this.refreshProduct(skc, {
storageNum: skc.storageNum - num
});
} else {
this.$createToast({
txt: result.message || '下架失败',
... ...
import * as Types from './types';
export default {
async fetchProduct({commit}, {productId, page = 1, refresh = false, storageId}) {
async fetchProduct({commit}, {productId, page = 1, refresh = false}) {
commit(Types.FETCH_ORDER_PRODUCT_REQUEST);
const result = await this.$api.get('/api/ufo/seller/entryGoodsSizeList', {
... ... @@ -13,7 +13,6 @@ export default {
commit(Types.FETCH_ORDER_PRODUCT_SUCCESS, {
order: result.data,
refresh,
storageId
});
} else {
commit(Types.FETCH_ORDER_PRODUCT_FAILD);
... ...
... ... @@ -8,25 +8,20 @@ export default {
[Types.FETCH_ORDER_PRODUCT_FAILD](state) {
state.fetchingPro = false;
},
[Types.FETCH_ORDER_PRODUCT_SUCCESS](state, {order, refresh, storageId}) {
[Types.FETCH_ORDER_PRODUCT_SUCCESS](state, {order, refresh}) {
state.fetchingPro = false;
if (order.productInfo && state.productInfo.productId !== order.productInfo.productId) {
state.productInfo = order.productInfo;
}
if (refresh) {
state.skcs = order.data;
} else if (order.data && storageId) {
const findData = order.data.find(skc => skc.goodsInfo.storageId === storageId);
const findInx = state.skcs.findIndex(skc => skc.goodsInfo.storageId === storageId);
if (findData) {
state.skcs[findInx] = findData;
state.skcs = state.skcs.map(skc => skc);
}
} else if (order.data) {
state.skcs = state.skcs.concat(order.data);
}
},
[Types.MERGE_CHANGEPRICE_DATA](state, {skc, mergeData}) {
Object.assign(skc, mergeData);
},
[Types.POST_NOSALE_REQUEST](state) {
state.fetchingNoSale = true;
},
... ...
... ... @@ -9,6 +9,7 @@ export const POST_NOSALE_SUCCESS = 'POST_NOSALE_SUCCESS';
export const POST_CHANGEPRICE_REQUEST = 'POST_CHANGEPRICE_REQUEST';
export const POST_CHANGEPRICE_FAILD = 'POST_CHANGEPRICE_FAILD';
export const POST_CHANGEPRICE_SUCCESS = 'POST_CHANGEPRICE_SUCCESS';
export const MERGE_CHANGEPRICE_DATA = 'MERGE_CHANGEPRICE_DATA';
export const POST_CALCPRICE_REQUEST = 'POST_CALCPRICE_REQUEST';
export const POST_CALCPRICE_FAILD = 'POST_CALCPRICE_FAILD';
... ...