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/shopDealerCapital/model/index.ts b/src/api/shop/shopDealerCapital/model/index.ts index b62e6e5..bc9bd11 100644 --- a/src/api/shop/shopDealerCapital/model/index.ts +++ b/src/api/shop/shopDealerCapital/model/index.ts @@ -8,6 +8,8 @@ export interface ShopDealerCapital { id?: number; // 分销商用户ID userId?: number; + // 分销商昵称 + nickName?: string; // 订单ID orderId?: number; // 订单编号 diff --git a/src/api/shop/shopDealerOrder/model/index.ts b/src/api/shop/shopDealerOrder/model/index.ts index e76f732..31130c0 100644 --- a/src/api/shop/shopDealerOrder/model/index.ts +++ b/src/api/shop/shopDealerOrder/model/index.ts @@ -12,6 +12,8 @@ export interface ShopDealerOrder { title?: string; // 买家用户昵称 nickname?: string; + // 真实姓名 + realName?: string; // 订单编号 orderNo?: string; // 订单总金额(不含运费) @@ -52,6 +54,10 @@ export interface ShopDealerOrder { isSettled?: number; // 结算时间 settleTime?: number; + // 是否解冻(0否 1是) + isUnfreeze?: number; + // 解冻时间 + unfreezeTime?: number; // 订单备注 comments?: string; // 商城ID diff --git a/src/api/shop/shopDealerUser/model/index.ts b/src/api/shop/shopDealerUser/model/index.ts index d443ef2..2a788e7 100644 --- a/src/api/shop/shopDealerUser/model/index.ts +++ b/src/api/shop/shopDealerUser/model/index.ts @@ -6,8 +6,16 @@ import type { PageParam } from '@/api'; export interface ShopDealerUser { // 主键ID id?: number; + // 类型 0经销商 1企业 2集团 + type?: number; // 自增ID userId?: number; + // 头像 + avatar?: string; + // 店铺名称 + dealerName?: string; + // 小区名称 + community?: string; // 姓名 realName?: string; // 手机号 @@ -34,6 +42,8 @@ export interface ShopDealerUser { thirdNum?: number; // 专属二维码 qrcode?: string; + // 配送员所属门店 + shopName?: string; // 是否删除 isDelete?: number; // 租户id @@ -56,5 +66,7 @@ export interface ShopDealerUser { */ export interface ShopDealerUserParam extends PageParam { id?: number; + realName?: string; + mobile?: string; keywords?: string; } diff --git a/src/api/shop/shopGoods/model/index.ts b/src/api/shop/shopGoods/model/index.ts index 493295d..2fc4c27 100644 --- a/src/api/shop/shopGoods/model/index.ts +++ b/src/api/shop/shopGoods/model/index.ts @@ -94,7 +94,7 @@ export interface ShopGoods { supplierMerchantId?: number; supplierName?: string; // 状态(0:未上架,1:上架) - isShow?: number; + isShow?: boolean; // 状态, 0上架 1待上架 2待审核 3审核不通过 status?: number; // 备注 @@ -124,6 +124,21 @@ export interface ShopGoods { canUseDate?: string; ensureTag?: string; expiredDay?: number; + + // --- 分销/佣金(新字段,后端保持 snake_case)--- + // 是否开启分销佣金:0关闭 1开启 + isOpenCommission?: number; + // 分佣类型:10固定金额 20百分比 + commissionType?: number; + // 一级/二级/三级分销佣金(单位以服务端为准) + firstMoney?: number; + secondMoney?: number; + thirdMoney?: number; + // 一级/二级分红(单位以服务端为准) + firstDividend?: number; + secondDividend?: number; + // 配送奖金 + deliveryMoney?: number; } export interface BathSet { diff --git a/src/api/shop/shopOrder/index.ts b/src/api/shop/shopOrder/index.ts index d0107ac..3dddf75 100644 --- a/src/api/shop/shopOrder/index.ts +++ b/src/api/shop/shopOrder/index.ts @@ -135,3 +135,18 @@ export async function shopOrderTotal(params?: ShopOrderParam) { } return Promise.reject(new Error(res.data.message)); } + + +/** + * 申请|同意退款 + */ +export async function refundShopOrder(data: ShopOrder) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-order/refund', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopOrder/model/index.ts b/src/api/shop/shopOrder/model/index.ts index 7b9ac00..a24e73d 100644 --- a/src/api/shop/shopOrder/model/index.ts +++ b/src/api/shop/shopOrder/model/index.ts @@ -37,6 +37,10 @@ export interface ShopOrder { icCard?: string; // 头像 avatar?: string; + // 昵称(部分接口会返回) + nickname?: string; + // 兼容字段:部分接口可能返回 name + name?: string; // 真实姓名 realName?: string; // 手机号码 @@ -99,6 +103,8 @@ export interface ShopOrder { expressId?: number; // 快递公司名称 expressName?: string; + // 物流单号 + expressNo?: string; // 发货人 sendName?: 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..34a7cd6 --- /dev/null +++ b/src/api/shop/shopStore/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 门店 + */ +export interface ShopStore { + // 自增ID + id?: number; + // 店铺名称 + name?: string; + // 门店地址 + address?: string; + // 手机号码 + phone?: string; + // 邮箱 + email?: string; + // 门店经理 + managerName?: string; + // 门店banner + shopBanner?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度和纬度 + lngAndLat?: string; + // 位置 + location?:string; + // 区域 + district?: string; + // 轮廓 + points?: string; + // 用户ID + userId?: number; + // 状态 + status?: 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/shopStoreFence/index.ts b/src/api/shop/shopStoreFence/index.ts new file mode 100644 index 0000000..d61414f --- /dev/null +++ b/src/api/shop/shopStoreFence/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreFence, ShopStoreFenceParam } from './model'; + +/** + * 分页查询黄家明_电子围栏 + */ +export async function pageShopStoreFence(params: ShopStoreFenceParam) { + const res = await request.get>>( + '/shop/shop-store-fence/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询黄家明_电子围栏列表 + */ +export async function listShopStoreFence(params?: ShopStoreFenceParam) { + const res = await request.get>( + '/shop/shop-store-fence', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加黄家明_电子围栏 + */ +export async function addShopStoreFence(data: ShopStoreFence) { + const res = await request.post>( + '/shop/shop-store-fence', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改黄家明_电子围栏 + */ +export async function updateShopStoreFence(data: ShopStoreFence) { + const res = await request.put>( + '/shop/shop-store-fence', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除黄家明_电子围栏 + */ +export async function removeShopStoreFence(id?: number) { + const res = await request.delete>( + '/shop/shop-store-fence/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除黄家明_电子围栏 + */ +export async function removeBatchShopStoreFence(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-store-fence/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询黄家明_电子围栏 + */ +export async function getShopStoreFence(id: number) { + const res = await request.get>( + '/shop/shop-store-fence/' + 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/shopStoreFence/model/index.ts b/src/api/shop/shopStoreFence/model/index.ts new file mode 100644 index 0000000..633164d --- /dev/null +++ b/src/api/shop/shopStoreFence/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 黄家明_电子围栏 + */ +export interface ShopStoreFence { + // 自增ID + id?: number; + // 围栏名称 + name?: string; + // 类型 0圆形 1方形 + type?: number; + // 定位 + location?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 区域 + district?: string; + // 电子围栏轮廓 + points?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_电子围栏搜索条件 + */ +export interface ShopStoreFenceParam 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..577b32d --- /dev/null +++ b/src/api/shop/shopStoreRider/model/index.ts @@ -0,0 +1,65 @@ +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; + // 骑手编号(可选) + 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 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/api/shop/shopStoreWarehouse/index.ts b/src/api/shop/shopStoreWarehouse/index.ts new file mode 100644 index 0000000..7c0aeef --- /dev/null +++ b/src/api/shop/shopStoreWarehouse/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopStoreWarehouse, ShopStoreWarehouseParam } from './model'; + +/** + * 分页查询仓库 + */ +export async function pageShopStoreWarehouse(params: ShopStoreWarehouseParam) { + const res = await request.get>>( + '/shop/shop-store-warehouse/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listShopStoreWarehouse(params?: ShopStoreWarehouseParam) { + const res = await request.get>( + '/shop/shop-store-warehouse', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addShopStoreWarehouse(data: ShopStoreWarehouse) { + const res = await request.post>( + '/shop/shop-store-warehouse', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateShopStoreWarehouse(data: ShopStoreWarehouse) { + const res = await request.put>( + '/shop/shop-store-warehouse', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeShopStoreWarehouse(id?: number) { + const res = await request.delete>( + '/shop/shop-store-warehouse/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchShopStoreWarehouse(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-store-warehouse/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询仓库 + */ +export async function getShopStoreWarehouse(id: number) { + const res = await request.get>( + '/shop/shop-store-warehouse/' + 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/shopStoreWarehouse/model/index.ts b/src/api/shop/shopStoreWarehouse/model/index.ts new file mode 100644 index 0000000..33be13d --- /dev/null +++ b/src/api/shop/shopStoreWarehouse/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 仓库 + */ +export interface ShopStoreWarehouse { + // 自增ID + id?: number; + // 仓库名称 + name?: string; + // 唯一标识 + code?: string; + // 类型 中心仓,区域仓,门店仓 + type?: string; + // 仓库地址 + address?: string; + // 真实姓名 + realName?: string; + // 联系电话 + phone?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经纬度 + lngAndLat?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 仓库搜索条件 + */ +export interface ShopStoreWarehouseParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/views/credit/creditBreachOfTrust/index.vue b/src/views/credit/creditBreachOfTrust/index.vue index 3fea6ce..a5c0589 100644 --- a/src/views/credit/creditBreachOfTrust/index.vue +++ b/src/views/credit/creditBreachOfTrust/index.vue @@ -168,8 +168,8 @@ }, { title: '发生时间', - dataIndex: 'occurrenceTime', - key: 'occurrenceTime', + dataIndex: 'releaseDate', + key: 'releaseDate', width: 120 }, { diff --git a/src/views/credit/creditCompany/components/creditCompanyInfo.vue b/src/views/credit/creditCompany/components/creditCompanyInfo.vue index 4b86731..147e1ff 100644 --- a/src/views/credit/creditCompany/components/creditCompanyInfo.vue +++ b/src/views/credit/creditCompany/components/creditCompanyInfo.vue @@ -989,7 +989,7 @@ title: '其他当事人/第三人', key: 'otherPartiesThirdParty' }, - { dataIndex: 'occurrenceTime', title: '发生时间' }, + { dataIndex: 'finalDate', title: '发生时间' }, { dataIndex: 'caseNumber', title: '案号' }, { dataIndex: 'involvedAmount', title: '涉案金额' }, { dataIndex: 'courtName', title: '法院' }, @@ -1051,7 +1051,7 @@ }, { dataIndex: 'plaintiffAppellant', title: '被告/被上诉人', key: 'plaintiffAppellant' }, { dataIndex: 'otherPartiesThirdParty', title: '其他当事人/第三人' }, - { dataIndex: 'occurrenceTime', title: '发生时间' }, + { dataIndex: 'releaseDate', title: '发生时间' }, { dataIndex: 'caseNumber', title: '案号' }, { dataIndex: 'involvedAmount', title: '涉案金额' }, { dataIndex: 'courtName', title: '法院' }, diff --git a/src/views/credit/creditFinalVersion/index.vue b/src/views/credit/creditFinalVersion/index.vue index 11b6058..6683ff0 100644 --- a/src/views/credit/creditFinalVersion/index.vue +++ b/src/views/credit/creditFinalVersion/index.vue @@ -160,8 +160,8 @@ }, { title: '发生时间', - dataIndex: 'occurrenceTime', - key: 'occurrenceTime', + dataIndex: 'finalDate', + key: 'finalDate', width: 120 }, { diff --git a/src/views/credit/creditGqdj/index.vue b/src/views/credit/creditGqdj/index.vue index 747c7b8..e4e0c87 100644 --- a/src/views/credit/creditGqdj/index.vue +++ b/src/views/credit/creditGqdj/index.vue @@ -183,8 +183,8 @@ }, { title: '冻结结束日期', - dataIndex: 'freezeDateStart', - key: 'freezeDateStart' + dataIndex: 'freezeDateEnd', + key: 'freezeDateEnd' }, { title: '状态', diff --git a/src/views/shop/dashboard/index.vue b/src/views/shop/dashboard/index.vue index 57c7718..4a7cc55 100644 --- a/src/views/shop/dashboard/index.vue +++ b/src/views/shop/dashboard/index.vue @@ -143,8 +143,7 @@ 网宿软件麦芽知电子商务 @@ -214,7 +213,6 @@ MoneyCollectOutlined } from '@ant-design/icons-vue'; import { message } from 'ant-design-vue/es'; - import { openNew } from '@/utils/common'; import { useSiteStore } from '@/store/modules/site'; import { useStatisticsStore } from '@/store/modules/statistics'; import { storeToRefs } from 'pinia'; diff --git a/src/views/shop/shopAdmin/components/invitation-modal.vue b/src/views/shop/shopAdmin/components/invitation-modal.vue index c87889a..86d1bd7 100644 --- a/src/views/shop/shopAdmin/components/invitation-modal.vue +++ b/src/views/shop/shopAdmin/components/invitation-modal.vue @@ -169,10 +169,21 @@ return props.inviterId || Number(localStorage.getItem('UserId')); }); + // 邀请链接需要带上 tenantId,避免未登录用户打开链接时后端无法识别租户,导致角色/权限初始化失败 + const tenantId = computed(() => { + const tid = localStorage.getItem('TenantId'); + return tid ? Number(tid) : undefined; + }); + // 生成邀请链接 const invitationLink = computed(() => { const baseUrl = window.location.origin; - return `${baseUrl}/dealer/register?inviter=${inviterId.value}`; + const params = new URLSearchParams(); + params.set('inviter', String(inviterId.value)); + if (tenantId.value) { + params.set('tenantId', String(tenantId.value)); + } + return `${baseUrl}/dealer/register?${params.toString()}`; }); // 复制链接 diff --git a/src/views/shop/shopAdmin/index.vue b/src/views/shop/shopAdmin/index.vue index 9154de6..d9adc6e 100644 --- a/src/views/shop/shopAdmin/index.vue +++ b/src/views/shop/shopAdmin/index.vue @@ -232,12 +232,12 @@ align: 'center', showSorterTooltip: false }, - { - title: '所属部门', - dataIndex: 'organizationName', - key: 'organizationName', - align: 'center' - }, + // { + // title: '所属部门', + // dataIndex: 'organizationName', + // key: 'organizationName', + // align: 'center' + // }, { title: '角色', dataIndex: 'roles', 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..bcb1b79 --- /dev/null +++ b/src/views/shop/shopCommunity/components/shopCommunityEdit.vue @@ -0,0 +1,209 @@ + + + + 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/shopDealerApplyRs/components/search.vue b/src/views/shop/shopDealerApplyRs/components/search.vue new file mode 100644 index 0000000..5adc9bb --- /dev/null +++ b/src/views/shop/shopDealerApplyRs/components/search.vue @@ -0,0 +1,221 @@ + + + + + + diff --git a/src/views/shop/shopDealerApplyRs/components/shop-dealer-apply-import.vue b/src/views/shop/shopDealerApplyRs/components/shop-dealer-apply-import.vue new file mode 100644 index 0000000..32c2917 --- /dev/null +++ b/src/views/shop/shopDealerApplyRs/components/shop-dealer-apply-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/shop/shopDealerApplyRs/components/shopDealerApplyEdit.vue b/src/views/shop/shopDealerApplyRs/components/shopDealerApplyEdit.vue new file mode 100644 index 0000000..33ce93a --- /dev/null +++ b/src/views/shop/shopDealerApplyRs/components/shopDealerApplyEdit.vue @@ -0,0 +1,298 @@ + + + + + + diff --git a/src/views/shop/shopDealerApplyRs/index.vue b/src/views/shop/shopDealerApplyRs/index.vue new file mode 100644 index 0000000..43ef48e --- /dev/null +++ b/src/views/shop/shopDealerApplyRs/index.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/src/views/shop/shopDealerCapital/components/search.vue b/src/views/shop/shopDealerCapital/components/search.vue index 82fea9d..218dfcd 100644 --- a/src/views/shop/shopDealerCapital/components/search.vue +++ b/src/views/shop/shopDealerCapital/components/search.vue @@ -1,19 +1,28 @@ diff --git a/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue b/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue index 46b49bf..5267361 100644 --- a/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue +++ b/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue @@ -24,66 +24,36 @@ - - - {{ form.title }} - - {{ form.orderNo }} - - {{ parseFloat(form.orderPrice || 0).toFixed(2) }} - - - - - {{ parseFloat(form.degreePrice || 0).toFixed(2) }} - - - - - {{ form.rate }} - - - - - {{ form.price }} - - - - - {{ parseFloat(form.settledPrice || 0).toFixed(2) }} - - - - + {{ parseFloat(form.payPrice || 0).toFixed(2) }} -
开发调试
-
-
业务员({{ form.userId }}):{{ form.nickname }}
-
一级分销商({{ form.firstUserId }}):{{ - form.firstNickname - }},一级佣金30%:{{ form.firstMoney }}
-
二级分销商({{ form.secondUserId }}):{{ - form.secondNickname - }},二级佣金10%:{{ form.secondMoney }}
-
三级分销商({{ form.thirdUserId }}):{{ - form.thirdNickname - }},三级佣金60%:{{ form.thirdMoney }}
-
+ + + + + + + + + + + + + + + + + + + 收益计算 @@ -92,7 +62,7 @@

- 一级佣金30% + 一级佣金10%

@@ -105,7 +75,7 @@ - {{ '30%' }} + {{ '10%' }} {{ form.firstMoney }} @@ -179,7 +149,7 @@ import { assignObject } from 'ele-admin-pro'; import { ShopDealerOrder } from '@/api/shop/shopDealerOrder/model'; import { FormInstance } from 'ant-design-vue/es/form'; - import { updateSdyDealerOrder } from '@/api/sdy/sdyDealerOrder'; + import { updateShopDealerOrder } from '@/api/shop/shopDealerOrder'; // 是否是修改 const isUpdate = ref(false); @@ -275,7 +245,7 @@ ...form, isSettled: 1 }; - updateSdyDealerOrder(formData) + updateShopDealerOrder(formData) .then((msg) => { loading.value = false; message.success(msg); diff --git a/src/views/shop/shopDealerOrder/index.vue b/src/views/shop/shopDealerOrder/index.vue index 481e06e..45ef7cd 100644 --- a/src/views/shop/shopDealerOrder/index.vue +++ b/src/views/shop/shopDealerOrder/index.vue @@ -7,28 +7,24 @@ :columns="columns" :datasource="datasource" :customRow="customRow" - v-model:selection="selection" tool-class="ele-toolbar-form" class="sys-org-table" >