refactor: 订单发货

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

@ -28,16 +28,6 @@ export default [
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: [
{ label: '全部', value: 0, 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: 5, count: 0 },
{ label: '已完成', value: 6, count: 0 },
{ label: '已关闭', value: 2, count: 0 },
],
},
});
@ -55,7 +55,7 @@ const actions = {
if (res) {
commit(
'setSummary',
['allCount', 'unpaidCount', 'closeCount', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount'].map(
['allCount', 'unpaidCount', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount', 'closeCount'].map(
(prop) => res[prop]
)
);

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

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

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

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

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

Loading…
Cancel
Save