refactor: 订单发货

feature/task1.0.0__0514__ch
向文可 2 years ago
parent fd37d9b31e
commit eb4051be12

@ -28,16 +28,6 @@ export default [
hidden: true, hidden: true,
}, },
}, },
{
path: 'ship',
name: 'OrderShip',
component: () => import('@/views/sales/order/ship.vue'),
meta: {
title: '批量发货',
icon: 'Van',
hidden: true,
},
},
], ],
}, },
{ {

@ -16,11 +16,11 @@ const state = () => ({
status: [ status: [
{ label: '全部', value: 0, count: 0 }, { label: '全部', value: 0, count: 0 },
{ label: '待支付', value: 1, count: 0 }, { label: '待支付', value: 1, count: 0 },
{ label: '已关闭', value: 2, count: 0 }, { label: '待发货', value: 3, count: 0 },
{ label: '已支付', value: 3, count: 0 },
{ label: '已发货', value: 4, count: 0 }, { label: '已发货', value: 4, count: 0 },
{ label: '已收货', value: 5, count: 0 }, { label: '已收货', value: 5, count: 0 },
{ label: '已完成', value: 6, count: 0 }, { label: '已完成', value: 6, count: 0 },
{ label: '已关闭', value: 2, count: 0 },
], ],
}, },
}); });
@ -55,7 +55,7 @@ const actions = {
if (res) { if (res) {
commit( commit(
'setSummary', 'setSummary',
['allCount', 'unpaidCount', 'closeCount', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount'].map( ['allCount', 'unpaidCount', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount', 'closeCount'].map(
(prop) => res[prop] (prop) => res[prop]
) )
); );

@ -38,20 +38,25 @@ const actions = {
}); });
}, },
save: async ({ rootState }, data) => { save: async ({ rootState }, data) => {
let res = await api.sendAll( let res = null;
data.map((item) => { if (data.every((item) => item.companyCode && item.trackingNo)) {
return { res = await api.sendAll(
companyCode: item.logistics.companyCode, data.map((item) => {
companyName: dict(rootState.order.opts.company, item.logistics.companyCode), return {
orderId: item.orderId, companyCode: item.logistics.companyCode,
trackingNo: item.trackingNo, companyName: dict(rootState.order.opts.company, item.logistics.companyCode),
}; orderId: item.orderId,
}) trackingNo: item.trackingNo,
); };
if (res) { })
ElMessage.success('批量发货成功'); );
if (res) {
ElMessage.success('批量发货成功');
} else {
ElMessage.error('批量发货失败');
}
} else { } else {
ElMessage.error('批量发货失败'); ElMessage.error('请补充完整发货信息');
} }
return res; return res;
}, },

@ -54,12 +54,14 @@
</TableList> </TableList>
<CloseOrder ref="refsCloseOrder" /> <CloseOrder ref="refsCloseOrder" />
<OrderTrack ref="refsOrderTrack" /> <OrderTrack ref="refsOrderTrack" />
<OrderShip ref="refsOrderShip" @close="handleSearch" />
</div> </div>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
import ElButton from '@/components/extra/ElButton.vue'; import ElButton from '@/components/extra/ElButton.vue';
import CloseOrder from './close.vue'; import CloseOrder from './close.vue';
import OrderShip from './ship.vue';
import OrderTrack from './track.vue'; import OrderTrack from './track.vue';
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const router = useRouter(); const router = useRouter();
@ -160,12 +162,13 @@
}; };
/* 订单发货 */ /* 订单发货 */
const refsOrderShip = ref(null);
const handleSend = (selection) => { const handleSend = (selection) => {
if (selection.length) { if (selection.length) {
store.commit('orderShip/setCondition', { store.commit('orderShip/setCondition', {
orderIs: selection.map((item) => item.orderId), orderIs: selection.map((item) => item.orderId),
}); });
router.push({ name: 'OrderShip' }); unref(refsOrderShip).show();
} else { } else {
proxy.$message.warning('请选择要发货的订单'); proxy.$message.warning('请选择要发货的订单');
} }

@ -1,5 +1,5 @@
<template> <template>
<div class="list-container"> <el-dialog v-model="visible" title="批量发货">
<TableList <TableList
v-loading="loading" v-loading="loading"
:code="code" :code="code"
@ -7,13 +7,12 @@
:data="list" :data="list"
:operation="[]" :operation="[]"
@search="handleSearch" @search="handleSearch"
> />
<template #operation> <template #footer>
<el-button type="danger" @click="handleCancel"></el-button> <el-button type="danger" @click="handleCancel"></el-button>
<el-button type="primary" @click="handleSave"></el-button> <el-button type="primary" @click="handleSave"></el-button>
</template> </template>
</TableList> </el-dialog>
</div>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@ -22,6 +21,7 @@
const router = useRouter(); const router = useRouter();
const store = useStore(); const store = useStore();
const loading = ref(false); const loading = ref(false);
const visible = ref(false);
const code = computed(() => store.state.orderShip.code); const code = computed(() => store.state.orderShip.code);
const list = ref([]); const list = ref([]);
const opts = computed(() => store.state.orderShip.opts); const opts = computed(() => store.state.orderShip.opts);
@ -35,7 +35,6 @@
list.value = await store.dispatch('orderShip/search'); list.value = await store.dispatch('orderShip/search');
loading.value = false; loading.value = false;
}; };
onActivated(handleSearch);
/* 取消 */ /* 取消 */
const handleCancel = () => { const handleCancel = () => {
router.push({ name: 'OrderManagement' }); router.push({ name: 'OrderManagement' });
@ -45,6 +44,17 @@
store.dispatch('orderShip/save', unref(list)); store.dispatch('orderShip/save', unref(list));
loading.value = false; loading.value = false;
}; };
const handleShow = () => {
visible.value = true;
handleSearch();
};
const handleClose = () => {
visible.value = false;
};
defineExpose({
show: handleShow,
close: handleClose,
});
/* 保存 */ /* 保存 */
/* 列表配置 */ /* 列表配置 */
const config = reactive({ const config = reactive({
@ -54,23 +64,23 @@
{ {
label: '订单编号', label: '订单编号',
prop: 'orderNo', prop: 'orderNo',
minWidth: 300, width: 120,
fixed: 'left', fixed: 'left',
}, },
{ {
label: '收货人', label: '收货人',
prop: 'logistics.recipientName', prop: 'logistics.recipientName',
width: 140, minWidth: 120,
}, },
{ {
label: '手机号码', label: '手机号码',
prop: 'logistics.recipientPhone', prop: 'logistics.recipientPhone',
minWidth: 120, width: 120,
}, },
{ {
label: '收货地址', label: '收货地址',
prop: 'logistics.recipientAddress', prop: 'logistics.recipientAddress',
width: 120, minWidth: 120,
}, },
{ {
label: '配送方式', label: '配送方式',
@ -87,7 +97,7 @@
}, },
{ {
label: '物流单号', label: '物流单号',
width: 120, width: 160,
prop: 'logistics.trackingNo', prop: 'logistics.trackingNo',
slots: { slots: {
default: ({ row }) => <ElInput v-model={row.logistics.trackingNo} />, default: ({ row }) => <ElInput v-model={row.logistics.trackingNo} />,

@ -11,7 +11,7 @@
expandTrigger: 'hover', expandTrigger: 'hover',
label: 'name', label: 'name',
value: 'id', value: 'id',
children: 'children', children: 'childList',
emitPath: false, emitPath: false,
}" }"
/> />

@ -133,7 +133,7 @@
}, },
{ {
label: '更新人', label: '更新人',
prop: 'updateUser', prop: 'updateUserName',
width: 180, width: 180,
}, },
{ {
@ -143,7 +143,7 @@
}, },
{ {
label: '创建人', label: '创建人',
prop: 'createUser', prop: 'createUserName',
width: 160, width: 160,
}, },
{ {

Loading…
Cancel
Save