diff --git a/src/api/shop/shopStoreRider/model/index.ts b/src/api/shop/shopStoreRider/model/index.ts
index 5818a51..577b32d 100644
--- a/src/api/shop/shopStoreRider/model/index.ts
+++ b/src/api/shop/shopStoreRider/model/index.ts
@@ -6,6 +6,10 @@ import type { PageParam } from '@/api';
export interface ShopStoreRider {
// 主键ID
id?: string;
+ // 门店ID(shop_store.id)
+ storeId?: number;
+ // 门店名称(后端联表返回,提交时可不传)
+ storeName?: string;
// 配送点ID(shop_dealer.id)
dealerId?: number;
// 骑手编号(可选)
diff --git a/src/components/SelectShopStore/components/select-data.vue b/src/components/SelectShopStore/components/select-data.vue
new file mode 100644
index 0000000..a2c5de9
--- /dev/null
+++ b/src/components/SelectShopStore/components/select-data.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SelectShopStore/index.vue b/src/components/SelectShopStore/index.vue
new file mode 100644
index 0000000..ec1f3f5
--- /dev/null
+++ b/src/components/SelectShopStore/index.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
diff --git a/src/views/shop/shopStoreRider/components/shopStoreRiderEdit.vue b/src/views/shop/shopStoreRider/components/shopStoreRiderEdit.vue
index 1bc818b..600b1e8 100644
--- a/src/views/shop/shopStoreRider/components/shopStoreRiderEdit.vue
+++ b/src/views/shop/shopStoreRider/components/shopStoreRiderEdit.vue
@@ -5,6 +5,7 @@
:visible="visible"
:maskClosable="false"
:maxable="maxable"
+ :confirm-loading="loading"
:title="isUpdate ? '编辑配送员' : '添加配送员'"
:body-style="{ paddingBottom: '28px' }"
@update:visible="updateVisible"
@@ -28,6 +29,14 @@
@done="onChooseUser"
/>
+
+
+
([]);
const selectedUserText = ref('');
const selectedCommunityText = ref('');
+ const selectedStoreText = ref('');
// 用户信息
const form = reactive({
id: undefined,
+ storeId: undefined,
dealerId: undefined,
riderNo: undefined,
realName: undefined,
@@ -236,6 +252,17 @@
// 表单验证规则
const rules = reactive({
+ storeId: [
+ {
+ validator: (_rule: unknown, value: number | undefined) => {
+ if (!value) {
+ return Promise.reject(new Error('请选择门店'));
+ }
+ return Promise.resolve();
+ },
+ trigger: 'change'
+ }
+ ]
// userId: [
// {
// required: true,
@@ -317,6 +344,16 @@
selectedCommunityText.value = community.name ?? String(community.id ?? '');
};
+ const onChooseStore = (store?: ShopStore) => {
+ if (!store) {
+ selectedStoreText.value = '';
+ form.storeId = undefined;
+ return;
+ }
+ form.storeId = store.id;
+ selectedStoreText.value = store.name ?? String(store.id ?? '');
+ };
+
const { resetFields } = useForm(form, rules);
/* 保存编辑 */
@@ -356,6 +393,7 @@
images.value = [];
selectedUserText.value = '';
selectedCommunityText.value = '';
+ selectedStoreText.value = '';
if (props.data) {
assignObject(form, props.data);
if (props.data.avatar) {
@@ -382,6 +420,24 @@
selectedUserText.value = String(form.userId ?? '');
});
}
+ if (form.storeId) {
+ // 优先使用列表接口返回的 storeName 回显,避免额外请求
+ if ((props.data as any)?.storeName) {
+ selectedStoreText.value = String((props.data as any).storeName);
+ } else {
+ const sid = form.storeId;
+ getShopStore(form.storeId)
+ .then((store) => {
+ if (form.storeId !== sid) return;
+ selectedStoreText.value =
+ store.name ?? String(store.id ?? '');
+ })
+ .catch(() => {
+ if (form.storeId !== sid) return;
+ selectedStoreText.value = String(form.storeId ?? '');
+ });
+ }
+ }
if (form.dealerId) {
const dealerId = form.dealerId;
getShopCommunity(form.dealerId)