From 055e53e06e50b3df4320136f49a2f33a95e53b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 30 Jan 2026 15:04:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(shop):=20=E6=B7=BB=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E5=8C=BA=E3=80=81=E9=85=8D=E9=80=81=E5=91=98=E3=80=81=E9=97=A8?= =?UTF-8?q?=E5=BA=97=E7=AD=89=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ShopCommunity 相关 API 接口和模型定义 - 新增 ShopRider 配送员管理模块及相应接口实现 - 新增 ShopStore 门店管理模块及数据模型 - 新增 ShopStoreRider 门店配送员关联关系管理 - 新增 ShopStoreUser 店员管理功能模块 - 在配送员用户界面添加所属门店字段显示 - 重构配送员相关组件和页面实现 - 添加小区选择组件及相应的交互功能 - 实现完整的 CRUD 操作接口包括分页、新增、修改、删除等 - 添加批量操作功能支持 - 优化数据表格展示和搜索功能 --- src/api/shop/shopCommunity/index.ts | 105 ++++++ src/api/shop/shopCommunity/model/index.ts | 35 ++ src/api/shop/shopDealerUser/model/index.ts | 2 + src/api/shop/shopRider/index.ts | 105 ++++++ src/api/shop/shopRider/model/index.ts | 61 ++++ src/api/shop/shopStore/index.ts | 105 ++++++ src/api/shop/shopStore/model/index.ts | 51 +++ src/api/shop/shopStoreRider/index.ts | 105 ++++++ src/api/shop/shopStoreRider/model/index.ts | 35 ++ src/api/shop/shopStoreUser/index.ts | 105 ++++++ src/api/shop/shopStoreUser/model/index.ts | 33 ++ .../components/select-data.vue | 126 +++++++ src/components/SelectCommunity/index.vue | 71 ++++ .../shop/shopCommunity/components/search.vue | 62 ++++ .../components/shopCommunityEdit.vue | 212 +++++++++++ src/views/shop/shopCommunity/index.vue | 252 +++++++++++++ .../components/shopDealerUserEdit.vue | 30 +- .../shop/shopDealerUserDelivery/index.vue | 34 +- .../components/shopDealerUserEdit.vue | 51 ++- .../shop/shopRider/components/search.vue | 42 +++ .../shopRider/components/shopRiderEdit.vue | 324 +++++++++++++++++ src/views/shop/shopRider/index.vue | 338 ++++++++++++++++++ .../shop/shopStore/components/search.vue | 42 +++ .../shopStore/components/shopStoreEdit.vue | 285 +++++++++++++++ src/views/shop/shopStore/index.vue | 308 ++++++++++++++++ .../shop/shopStoreRider/components/search.vue | 42 +++ .../components/shopStoreRiderEdit.vue | 221 ++++++++++++ src/views/shop/shopStoreRider/index.vue | 260 ++++++++++++++ .../shop/shopStoreUser/components/search.vue | 42 +++ .../components/shopStoreUserEdit.vue | 213 +++++++++++ src/views/shop/shopStoreUser/index.vue | 254 +++++++++++++ 31 files changed, 3894 insertions(+), 57 deletions(-) create mode 100644 src/api/shop/shopCommunity/index.ts create mode 100644 src/api/shop/shopCommunity/model/index.ts create mode 100644 src/api/shop/shopRider/index.ts create mode 100644 src/api/shop/shopRider/model/index.ts create mode 100644 src/api/shop/shopStore/index.ts create mode 100644 src/api/shop/shopStore/model/index.ts create mode 100644 src/api/shop/shopStoreRider/index.ts create mode 100644 src/api/shop/shopStoreRider/model/index.ts create mode 100644 src/api/shop/shopStoreUser/index.ts create mode 100644 src/api/shop/shopStoreUser/model/index.ts create mode 100644 src/components/SelectCommunity/components/select-data.vue create mode 100644 src/components/SelectCommunity/index.vue create mode 100644 src/views/shop/shopCommunity/components/search.vue create mode 100644 src/views/shop/shopCommunity/components/shopCommunityEdit.vue create mode 100644 src/views/shop/shopCommunity/index.vue create mode 100644 src/views/shop/shopRider/components/search.vue create mode 100644 src/views/shop/shopRider/components/shopRiderEdit.vue create mode 100644 src/views/shop/shopRider/index.vue create mode 100644 src/views/shop/shopStore/components/search.vue create mode 100644 src/views/shop/shopStore/components/shopStoreEdit.vue create mode 100644 src/views/shop/shopStore/index.vue create mode 100644 src/views/shop/shopStoreRider/components/search.vue create mode 100644 src/views/shop/shopStoreRider/components/shopStoreRiderEdit.vue create mode 100644 src/views/shop/shopStoreRider/index.vue create mode 100644 src/views/shop/shopStoreUser/components/search.vue create mode 100644 src/views/shop/shopStoreUser/components/shopStoreUserEdit.vue create mode 100644 src/views/shop/shopStoreUser/index.vue diff --git a/src/api/shop/shopCommunity/index.ts b/src/api/shop/shopCommunity/index.ts new file mode 100644 index 0000000..e88f2e4 --- /dev/null +++ b/src/api/shop/shopCommunity/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopCommunity, ShopCommunityParam } from './model'; + +/** + * 分页查询小区 + */ +export async function pageShopCommunity(params: ShopCommunityParam) { + const res = await request.get>>( + '/shop/shop-community/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小区列表 + */ +export async function listShopCommunity(params?: ShopCommunityParam) { + const res = await request.get>( + '/shop/shop-community', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小区 + */ +export async function addShopCommunity(data: ShopCommunity) { + const res = await request.post>( + '/shop/shop-community', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小区 + */ +export async function updateShopCommunity(data: ShopCommunity) { + const res = await request.put>( + '/shop/shop-community', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小区 + */ +export async function removeShopCommunity(id?: number) { + const res = await request.delete>( + '/shop/shop-community/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小区 + */ +export async function removeBatchShopCommunity(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-community/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小区 + */ +export async function getShopCommunity(id: number) { + const res = await request.get>( + '/shop/shop-community/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopCommunity/model/index.ts b/src/api/shop/shopCommunity/model/index.ts new file mode 100644 index 0000000..44b00e3 --- /dev/null +++ b/src/api/shop/shopCommunity/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 小区 + */ +export interface ShopCommunity { + // ID + id?: number; + // 小区名称 + name?: string; + // 小区编号 + code?: string; + // 详细地址 + address?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小区搜索条件 + */ +export interface ShopCommunityParam extends PageParam { + id?: number; + name?: string; + code?: string; + keywords?: string; +} diff --git a/src/api/shop/shopDealerUser/model/index.ts b/src/api/shop/shopDealerUser/model/index.ts index 51234dd..2a788e7 100644 --- a/src/api/shop/shopDealerUser/model/index.ts +++ b/src/api/shop/shopDealerUser/model/index.ts @@ -42,6 +42,8 @@ export interface ShopDealerUser { thirdNum?: number; // 专属二维码 qrcode?: string; + // 配送员所属门店 + shopName?: string; // 是否删除 isDelete?: number; // 租户id diff --git a/src/api/shop/shopRider/index.ts b/src/api/shop/shopRider/index.ts new file mode 100644 index 0000000..542140f --- /dev/null +++ b/src/api/shop/shopRider/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopRider, ShopRiderParam } from './model'; + +/** + * 分页查询配送员 + */ +export async function pageShopRider(params: ShopRiderParam) { + const res = await request.get>>( + '/shop/shop-rider/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询配送员列表 + */ +export async function listShopRider(params?: ShopRiderParam) { + const res = await request.get>( + '/shop/shop-rider', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加配送员 + */ +export async function addShopRider(data: ShopRider) { + const res = await request.post>( + '/shop/shop-rider', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改配送员 + */ +export async function updateShopRider(data: ShopRider) { + const res = await request.put>( + '/shop/shop-rider', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除配送员 + */ +export async function removeShopRider(id?: number) { + const res = await request.delete>( + '/shop/shop-rider/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除配送员 + */ +export async function removeBatchShopRider(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-rider/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询配送员 + */ +export async function getShopRider(id: number) { + const res = await request.get>( + '/shop/shop-rider/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopRider/model/index.ts b/src/api/shop/shopRider/model/index.ts new file mode 100644 index 0000000..75945e6 --- /dev/null +++ b/src/api/shop/shopRider/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 配送员 + */ +export interface ShopRider { + // 主键ID + id?: string; + // 配送点ID(shop_dealer.id) + dealerId?: number; + // 骑手编号(可选) + riderNo?: string; + // 姓名 + realName?: string; + // 手机号 + mobile?: string; + // 头像 + avatar?: string; + // 身份证号(可选) + idCardNo?: string; + // 状态:1启用;0禁用 + status?: number; + // 接单状态:0休息/下线;1在线;2忙碌 + workStatus?: number; + // 是否开启自动派单:1是;0否 + autoDispatchEnabled?: number; + // 派单优先级(同小区多骑手时可用,值越大越优先) + dispatchPriority?: number; + // 最大同时配送单数(0表示不限制) + maxOnhandOrders?: number; + // 是否计算工资(提成):1计算;0不计算(如三方配送点可设0) + commissionCalcEnabled?: number; + // 水每桶提成金额(元/桶) + waterBucketUnitFee?: string; + // 其他商品提成方式:1按订单固定金额;2按订单金额比例;3按商品规则(另表) + otherGoodsCommissionType?: number; + // 其他商品提成值:固定金额(元)或比例(%) + otherGoodsCommissionValue?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 配送员搜索条件 + */ +export interface ShopRiderParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopStore/index.ts b/src/api/shop/shopStore/index.ts new file mode 100644 index 0000000..c7360a3 --- /dev/null +++ b/src/api/shop/shopStore/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStore, ShopStoreParam } from './model'; + +/** + * 分页查询门店 + */ +export async function pageShopStore(params: ShopStoreParam) { + const res = await request.get>>( + '/shop/shop-store/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询门店列表 + */ +export async function listShopStore(params?: ShopStoreParam) { + const res = await request.get>( + '/shop/shop-store', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加门店 + */ +export async function addShopStore(data: ShopStore) { + const res = await request.post>( + '/shop/shop-store', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改门店 + */ +export async function updateShopStore(data: ShopStore) { + const res = await request.put>( + '/shop/shop-store', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除门店 + */ +export async function removeShopStore(id?: number) { + const res = await request.delete>( + '/shop/shop-store/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除门店 + */ +export async function removeBatchShopStore(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-store/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询门店 + */ +export async function getShopStore(id: number) { + const res = await request.get>( + '/shop/shop-store/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopStore/model/index.ts b/src/api/shop/shopStore/model/index.ts new file mode 100644 index 0000000..e79784b --- /dev/null +++ b/src/api/shop/shopStore/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 门店 + */ +export interface ShopStore { + // 自增ID + id?: number; + // 店铺名称 + shopName?: string; + // 门店地址 + shopAddress?: string; + // 手机号码 + phone?: string; + // 邮箱 + email?: string; + // 门店经理 + managerName?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + lng?: string; + // 纬度 + lat?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 门店搜索条件 + */ +export interface ShopStoreParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopStoreRider/index.ts b/src/api/shop/shopStoreRider/index.ts new file mode 100644 index 0000000..d09c712 --- /dev/null +++ b/src/api/shop/shopStoreRider/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreRider, ShopStoreRiderParam } from './model'; + +/** + * 分页查询配送员 + */ +export async function pageShopStoreRider(params: ShopStoreRiderParam) { + const res = await request.get>>( + '/shop/shop-store-rider/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询配送员列表 + */ +export async function listShopStoreRider(params?: ShopStoreRiderParam) { + const res = await request.get>( + '/shop/shop-store-rider', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加配送员 + */ +export async function addShopStoreRider(data: ShopStoreRider) { + const res = await request.post>( + '/shop/shop-store-rider', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改配送员 + */ +export async function updateShopStoreRider(data: ShopStoreRider) { + const res = await request.put>( + '/shop/shop-store-rider', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除配送员 + */ +export async function removeShopStoreRider(id?: number) { + const res = await request.delete>( + '/shop/shop-store-rider/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除配送员 + */ +export async function removeBatchShopStoreRider(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-store-rider/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询配送员 + */ +export async function getShopStoreRider(id: number) { + const res = await request.get>( + '/shop/shop-store-rider/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopStoreRider/model/index.ts b/src/api/shop/shopStoreRider/model/index.ts new file mode 100644 index 0000000..3ba0b80 --- /dev/null +++ b/src/api/shop/shopStoreRider/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 配送员 + */ +export interface ShopStoreRider { + // 主键ID + id?: string; + // 门店ID + storeId?: number; + // 配送员ID + riderId?: number; + // 操作员ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 配送员搜索条件 + */ +export interface ShopStoreRiderParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopStoreUser/index.ts b/src/api/shop/shopStoreUser/index.ts new file mode 100644 index 0000000..7647e65 --- /dev/null +++ b/src/api/shop/shopStoreUser/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreUser, ShopStoreUserParam } from './model'; + +/** + * 分页查询店员 + */ +export async function pageShopStoreUser(params: ShopStoreUserParam) { + const res = await request.get>>( + '/shop/shop-store-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询店员列表 + */ +export async function listShopStoreUser(params?: ShopStoreUserParam) { + const res = await request.get>( + '/shop/shop-store-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加店员 + */ +export async function addShopStoreUser(data: ShopStoreUser) { + const res = await request.post>( + '/shop/shop-store-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改店员 + */ +export async function updateShopStoreUser(data: ShopStoreUser) { + const res = await request.put>( + '/shop/shop-store-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除店员 + */ +export async function removeShopStoreUser(id?: number) { + const res = await request.delete>( + '/shop/shop-store-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除店员 + */ +export async function removeBatchShopStoreUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-store-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询店员 + */ +export async function getShopStoreUser(id: number) { + const res = await request.get>( + '/shop/shop-store-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopStoreUser/model/index.ts b/src/api/shop/shopStoreUser/model/index.ts new file mode 100644 index 0000000..8ebac6d --- /dev/null +++ b/src/api/shop/shopStoreUser/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 店员 + */ +export interface ShopStoreUser { + // 主键ID + id?: number; + // 配送点ID(shop_dealer.id) + storeId?: number; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 店员搜索条件 + */ +export interface ShopStoreUserParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/components/SelectCommunity/components/select-data.vue b/src/components/SelectCommunity/components/select-data.vue new file mode 100644 index 0000000..cbb840d --- /dev/null +++ b/src/components/SelectCommunity/components/select-data.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/components/SelectCommunity/index.vue b/src/components/SelectCommunity/index.vue new file mode 100644 index 0000000..6377f0d --- /dev/null +++ b/src/components/SelectCommunity/index.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/views/shop/shopCommunity/components/search.vue b/src/views/shop/shopCommunity/components/search.vue new file mode 100644 index 0000000..0613722 --- /dev/null +++ b/src/views/shop/shopCommunity/components/search.vue @@ -0,0 +1,62 @@ + + + + diff --git a/src/views/shop/shopCommunity/components/shopCommunityEdit.vue b/src/views/shop/shopCommunity/components/shopCommunityEdit.vue new file mode 100644 index 0000000..f796905 --- /dev/null +++ b/src/views/shop/shopCommunity/components/shopCommunityEdit.vue @@ -0,0 +1,212 @@ + + + + diff --git a/src/views/shop/shopCommunity/index.vue b/src/views/shop/shopCommunity/index.vue new file mode 100644 index 0000000..c7abfa0 --- /dev/null +++ b/src/views/shop/shopCommunity/index.vue @@ -0,0 +1,252 @@ + + + + + + + diff --git a/src/views/shop/shopDealerUserDelivery/components/shopDealerUserEdit.vue b/src/views/shop/shopDealerUserDelivery/components/shopDealerUserEdit.vue index 48bf7c5..60abbbc 100644 --- a/src/views/shop/shopDealerUserDelivery/components/shopDealerUserEdit.vue +++ b/src/views/shop/shopDealerUserDelivery/components/shopDealerUserEdit.vue @@ -1,7 +1,7 @@