+
+
+
+
+ {{ store.name }}
+
+
+
+
+
+
+
+
+ {{ user.name }}
+
+
+
+
+
+ 选择门店后将自动回填下方发货人信息,可手动修改
+
+
{
+ if (form.deliveryType !== 1 && !value) {
+ return Promise.reject('请选择发货门店');
+ }
+ return Promise.resolve();
+ }
+ }
+ ],
+ deliveryUserId: [
+ {
+ validator: (_: any, value: any) => {
+ if (form.deliveryType === 2 && !value) {
+ return Promise.reject('请选择配送店员');
+ }
+ return Promise.resolve();
+ }
+ }
]
};
@@ -259,6 +328,8 @@
// 状态
const loading = ref(false);
const expressList = ref([]);
+ const storeList = ref([]);
+ const userList = ref([]);
const expressModalVisible = ref(false);
// 加载快递公司列表
@@ -271,6 +342,58 @@
}
};
+ // 加载门店列表
+ const loadStoreList = async () => {
+ try {
+ const data = await listShopStore({});
+ storeList.value = data || [];
+ } catch (error) {
+ console.error('加载门店失败:', error);
+ }
+ };
+
+ // 加载指定门店下的店员
+ const loadUserList = async (storeId?: number) => {
+ if (!storeId) {
+ userList.value = [];
+ return;
+ }
+ try {
+ const data = await listShopStoreUser({ storeId });
+ userList.value = data || [];
+ } catch (error) {
+ console.error('加载店员失败:', error);
+ }
+ };
+
+ // 门店选择变化
+ const onStoreChange = (storeId: number) => {
+ const store = storeList.value.find((item) => item.id === storeId);
+ if (store) {
+ // 发货地址统一回填写门店地址
+ form.sendAddress = store.address || '';
+ if (form.deliveryType === 0) {
+ // 快递配送:门店作为发货方,直接回填发货人与联系方式
+ form.sendName = store.name || '';
+ form.sendPhone = store.phone || '';
+ }
+ if (form.deliveryType === 2) {
+ // 商家送货:切换门店后清空已选店员并重新加载
+ form.deliveryUserId = undefined;
+ loadUserList(storeId);
+ }
+ }
+ };
+
+ // 店员选择变化
+ const onUserChange = (userId: number) => {
+ const user = userList.value.find((item) => item.id === userId);
+ if (user) {
+ form.sendName = user.name || '';
+ form.sendPhone = user.phone || '';
+ }
+ };
+
// 快递公司筛选
const filterExpressOption = (input: string, option: any) => {
return option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0;
@@ -303,6 +426,9 @@
form.sendName = '';
form.sendPhone = '';
form.sendAddress = '';
+ form.sendStoreId = undefined;
+ form.deliveryUserId = undefined;
+ userList.value = [];
}
}
);
@@ -345,6 +471,8 @@
updateData.sendName = form.sendName;
updateData.sendPhone = form.sendPhone;
updateData.sendAddress = form.sendAddress;
+ updateData.sendStoreId = form.sendStoreId;
+ updateData.deliveryUserId = undefined;
updateData.expressName = form.expressName || express?.expressName;
updateData.expressNo = form.expressNo;
} else if (form.deliveryType === 2) {
@@ -352,6 +480,8 @@
updateData.sendName = form.sendName;
updateData.sendPhone = form.sendPhone;
updateData.sendAddress = form.sendAddress;
+ updateData.sendStoreId = form.sendStoreId;
+ updateData.deliveryUserId = form.deliveryUserId;
updateData.expressId = undefined;
updateData.expressName = undefined;
updateData.expressNo = undefined;
@@ -399,10 +529,14 @@
form.sendName = '';
form.sendPhone = '';
form.sendAddress = '';
+ form.sendStoreId = undefined;
+ form.deliveryUserId = undefined;
+ userList.value = [];
form.deliveryTime = dayjs();
- // 加载快递公司列表
+ // 加载快递公司列表与门店列表
loadExpressList();
+ loadStoreList();
} else {
resetFields();
}
diff --git a/src/views/shop/shopOrder/components/orderInfo.vue b/src/views/shop/shopOrder/components/orderInfo.vue
index 84acdd0..6c5da77 100644
--- a/src/views/shop/shopOrder/components/orderInfo.vue
+++ b/src/views/shop/shopOrder/components/orderInfo.vue
@@ -362,6 +362,24 @@
>
+
+ {{
+ form.sendStoreName ||
+ form.expressMerchantName ||
+ '未填写'
+ }}
+
+
+ {{ form.deliveryUserName || '未填写' }}
+