diff --git a/config/env.ts b/config/env.ts index c92883b..44ddb26 100644 --- a/config/env.ts +++ b/config/env.ts @@ -2,7 +2,7 @@ export const ENV_CONFIG = { // 开发环境 development: { - API_BASE_URL: 'https://cms-api.websoft.top/api', + API_BASE_URL: 'http://127.0.0.1:9200/api', APP_NAME: '开发环境', DEBUG: 'true', }, diff --git a/src/admin/article/index.config.ts b/src/admin/article/index.config.ts new file mode 100644 index 0000000..d74c9f2 --- /dev/null +++ b/src/admin/article/index.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '文章详情' +}) diff --git a/src/admin/article/index.tsx b/src/admin/article/index.tsx new file mode 100644 index 0000000..f92c890 --- /dev/null +++ b/src/admin/article/index.tsx @@ -0,0 +1,53 @@ +import Taro from '@tarojs/taro' +import {useEffect, useState} from 'react' +import {useRouter} from '@tarojs/taro' +import {Loading} from '@nutui/nutui-react-taro' +import {View, RichText} from '@tarojs/components' +import {wxParse} from "@/utils/common"; +import {getCmsArticle} from "@/api/cms/cmsArticle"; +import {CmsArticle} from "@/api/cms/cmsArticle/model" +import Line from "@/components/Gap"; +import './index.scss' + +function Detail() { + const {params} = useRouter(); + const [loading, setLoading] = useState(true) + // 文章详情 + const [item, setItem] = useState() + const reload = async () => { + const item = await getCmsArticle(Number(params.id)) + + if (item) { + item.content = wxParse(item.content) + setItem(item) + Taro.setNavigationBarTitle({ + title: `${item?.categoryName}` + }) + } + } + + useEffect(() => { + reload().then(() => { + setLoading(false) + }); + }, []); + + if (loading) { + return ( + 加载中 + ) + } + + return ( +
+
{item?.title}
+
{item?.createTime}
+ + + + +
+ ) +} + +export default Detail diff --git a/src/api/shop/shopCoupon/index.ts b/src/api/shop/shopCoupon/index.ts new file mode 100644 index 0000000..afe35be --- /dev/null +++ b/src/api/shop/shopCoupon/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopCoupon, ShopCouponParam } from './model'; + +/** + * 分页查询优惠券 + */ +export async function pageShopCoupon(params: ShopCouponParam) { + const res = await request.get>>( + '/shop/shop-coupon/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询优惠券列表 + */ +export async function listShopCoupon(params?: ShopCouponParam) { + const res = await request.get>( + '/shop/shop-coupon', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加优惠券 + */ +export async function addShopCoupon(data: ShopCoupon) { + const res = await request.post>( + '/shop/shop-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改优惠券 + */ +export async function updateShopCoupon(data: ShopCoupon) { + const res = await request.put>( + '/shop/shop-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除优惠券 + */ +export async function removeShopCoupon(id?: number) { + const res = await request.del>( + '/shop/shop-coupon/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除优惠券 + */ +export async function removeBatchShopCoupon(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-coupon/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询优惠券 + */ +export async function getShopCoupon(id: number) { + const res = await request.get>( + '/shop/shop-coupon/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerApply/index.ts b/src/api/shop/shopDealerApply/index.ts new file mode 100644 index 0000000..bc7d709 --- /dev/null +++ b/src/api/shop/shopDealerApply/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerApply, ShopDealerApplyParam } from './model'; + +/** + * 分页查询分销商申请记录表 + */ +export async function pageShopDealerApply(params: ShopDealerApplyParam) { + const res = await request.get>>( + '/shop/shop-dealer-apply/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商申请记录表列表 + */ +export async function listShopDealerApply(params?: ShopDealerApplyParam) { + const res = await request.get>( + '/shop/shop-dealer-apply', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商申请记录表 + */ +export async function addShopDealerApply(data: ShopDealerApply) { + const res = await request.post>( + '/shop/shop-dealer-apply', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商申请记录表 + */ +export async function updateShopDealerApply(data: ShopDealerApply) { + const res = await request.put>( + '/shop/shop-dealer-apply', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商申请记录表 + */ +export async function removeShopDealerApply(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-apply/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商申请记录表 + */ +export async function removeBatchShopDealerApply(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-apply/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商申请记录表 + */ +export async function getShopDealerApply(id: number) { + const res = await request.get>( + '/shop/shop-dealer-apply/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerCapital/index.ts b/src/api/shop/shopDealerCapital/index.ts new file mode 100644 index 0000000..4a4d54c --- /dev/null +++ b/src/api/shop/shopDealerCapital/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerCapital, ShopDealerCapitalParam } from './model'; + +/** + * 分页查询分销商资金明细表 + */ +export async function pageShopDealerCapital(params: ShopDealerCapitalParam) { + const res = await request.get>>( + '/shop/shop-dealer-capital/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商资金明细表列表 + */ +export async function listShopDealerCapital(params?: ShopDealerCapitalParam) { + const res = await request.get>( + '/shop/shop-dealer-capital', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商资金明细表 + */ +export async function addShopDealerCapital(data: ShopDealerCapital) { + const res = await request.post>( + '/shop/shop-dealer-capital', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商资金明细表 + */ +export async function updateShopDealerCapital(data: ShopDealerCapital) { + const res = await request.put>( + '/shop/shop-dealer-capital', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商资金明细表 + */ +export async function removeShopDealerCapital(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-capital/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商资金明细表 + */ +export async function removeBatchShopDealerCapital(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-capital/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商资金明细表 + */ +export async function getShopDealerCapital(id: number) { + const res = await request.get>( + '/shop/shop-dealer-capital/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerOrder/index.ts b/src/api/shop/shopDealerOrder/index.ts new file mode 100644 index 0000000..d0673bc --- /dev/null +++ b/src/api/shop/shopDealerOrder/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerOrder, ShopDealerOrderParam } from './model'; + +/** + * 分页查询分销商订单记录表 + */ +export async function pageShopDealerOrder(params: ShopDealerOrderParam) { + const res = await request.get>>( + '/shop/shop-dealer-order/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商订单记录表列表 + */ +export async function listShopDealerOrder(params?: ShopDealerOrderParam) { + const res = await request.get>( + '/shop/shop-dealer-order', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商订单记录表 + */ +export async function addShopDealerOrder(data: ShopDealerOrder) { + const res = await request.post>( + '/shop/shop-dealer-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商订单记录表 + */ +export async function updateShopDealerOrder(data: ShopDealerOrder) { + const res = await request.put>( + '/shop/shop-dealer-order', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商订单记录表 + */ +export async function removeShopDealerOrder(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-order/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商订单记录表 + */ +export async function removeBatchShopDealerOrder(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-order/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商订单记录表 + */ +export async function getShopDealerOrder(id: number) { + const res = await request.get>( + '/shop/shop-dealer-order/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerReferee/index.ts b/src/api/shop/shopDealerReferee/index.ts new file mode 100644 index 0000000..ce69218 --- /dev/null +++ b/src/api/shop/shopDealerReferee/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerReferee, ShopDealerRefereeParam } from './model'; + +/** + * 分页查询分销商推荐关系表 + */ +export async function pageShopDealerReferee(params: ShopDealerRefereeParam) { + const res = await request.get>>( + '/shop/shop-dealer-referee/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商推荐关系表列表 + */ +export async function listShopDealerReferee(params?: ShopDealerRefereeParam) { + const res = await request.get>( + '/shop/shop-dealer-referee', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商推荐关系表 + */ +export async function addShopDealerReferee(data: ShopDealerReferee) { + const res = await request.post>( + '/shop/shop-dealer-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商推荐关系表 + */ +export async function updateShopDealerReferee(data: ShopDealerReferee) { + const res = await request.put>( + '/shop/shop-dealer-referee', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商推荐关系表 + */ +export async function removeShopDealerReferee(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-referee/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商推荐关系表 + */ +export async function removeBatchShopDealerReferee(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-referee/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商推荐关系表 + */ +export async function getShopDealerReferee(id: number) { + const res = await request.get>( + '/shop/shop-dealer-referee/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerSetting/index.ts b/src/api/shop/shopDealerSetting/index.ts new file mode 100644 index 0000000..2a7b20a --- /dev/null +++ b/src/api/shop/shopDealerSetting/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerSetting, ShopDealerSettingParam } from './model'; + +/** + * 分页查询分销商设置表 + */ +export async function pageShopDealerSetting(params: ShopDealerSettingParam) { + const res = await request.get>>( + '/shop/shop-dealer-setting/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商设置表列表 + */ +export async function listShopDealerSetting(params?: ShopDealerSettingParam) { + const res = await request.get>( + '/shop/shop-dealer-setting', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商设置表 + */ +export async function addShopDealerSetting(data: ShopDealerSetting) { + const res = await request.post>( + '/shop/shop-dealer-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商设置表 + */ +export async function updateShopDealerSetting(data: ShopDealerSetting) { + const res = await request.put>( + '/shop/shop-dealer-setting', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商设置表 + */ +export async function removeShopDealerSetting(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-setting/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商设置表 + */ +export async function removeBatchShopDealerSetting(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-setting/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商设置表 + */ +export async function getShopDealerSetting(id: number) { + const res = await request.get>( + '/shop/shop-dealer-setting/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerUser/index.ts b/src/api/shop/shopDealerUser/index.ts new file mode 100644 index 0000000..a33c078 --- /dev/null +++ b/src/api/shop/shopDealerUser/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerUser, ShopDealerUserParam } from './model'; + +/** + * 分页查询分销商用户记录表 + */ +export async function pageShopDealerUser(params: ShopDealerUserParam) { + const res = await request.get>>( + '/shop/shop-dealer-user/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商用户记录表列表 + */ +export async function listShopDealerUser(params?: ShopDealerUserParam) { + const res = await request.get>( + '/shop/shop-dealer-user', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商用户记录表 + */ +export async function addShopDealerUser(data: ShopDealerUser) { + const res = await request.post>( + '/shop/shop-dealer-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商用户记录表 + */ +export async function updateShopDealerUser(data: ShopDealerUser) { + const res = await request.put>( + '/shop/shop-dealer-user', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商用户记录表 + */ +export async function removeShopDealerUser(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-user/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商用户记录表 + */ +export async function removeBatchShopDealerUser(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-user/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商用户记录表 + */ +export async function getShopDealerUser(id: number) { + const res = await request.get>( + '/shop/shop-dealer-user/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopDealerWithdraw/index.ts b/src/api/shop/shopDealerWithdraw/index.ts new file mode 100644 index 0000000..0429d78 --- /dev/null +++ b/src/api/shop/shopDealerWithdraw/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopDealerWithdraw, ShopDealerWithdrawParam } from './model'; + +/** + * 分页查询分销商提现明细表 + */ +export async function pageShopDealerWithdraw(params: ShopDealerWithdrawParam) { + const res = await request.get>>( + '/shop/shop-dealer-withdraw/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询分销商提现明细表列表 + */ +export async function listShopDealerWithdraw(params?: ShopDealerWithdrawParam) { + const res = await request.get>( + '/shop/shop-dealer-withdraw', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加分销商提现明细表 + */ +export async function addShopDealerWithdraw(data: ShopDealerWithdraw) { + const res = await request.post>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改分销商提现明细表 + */ +export async function updateShopDealerWithdraw(data: ShopDealerWithdraw) { + const res = await request.put>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除分销商提现明细表 + */ +export async function removeShopDealerWithdraw(id?: number) { + const res = await request.del>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除分销商提现明细表 + */ +export async function removeBatchShopDealerWithdraw(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-dealer-withdraw/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询分销商提现明细表 + */ +export async function getShopDealerWithdraw(id: number) { + const res = await request.get>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/shop/shopExpressTemplate/model/index.ts b/src/api/shop/shopExpressTemplate/model/index.ts index 4b7273e..5700987 100644 --- a/src/api/shop/shopExpressTemplate/model/index.ts +++ b/src/api/shop/shopExpressTemplate/model/index.ts @@ -4,11 +4,11 @@ import type { PageParam } from '@/api/index'; * 运费模板 */ export interface ShopExpressTemplate { - // + // id?: number; - // + // type?: string; - // + // title?: string; // 收件价格 firstAmount?: string; @@ -24,7 +24,7 @@ export interface ShopExpressTemplate { createTime?: string; // 修改时间 updateTime?: string; - // + // sortNumber?: number; // 首件数量/重量 firstNum?: string; diff --git a/src/api/shop/shopExpressTemplateDetail/model/index.ts b/src/api/shop/shopExpressTemplateDetail/model/index.ts index 37cf730..84e2dc8 100644 --- a/src/api/shop/shopExpressTemplateDetail/model/index.ts +++ b/src/api/shop/shopExpressTemplateDetail/model/index.ts @@ -4,15 +4,15 @@ import type { PageParam } from '@/api/index'; * 运费模板 */ export interface ShopExpressTemplateDetail { - // + // id?: number; - // + // templateId?: number; // 0按件 type?: string; - // + // provinceId?: number; - // + // cityId?: number; // 首件数量/重量 firstNum?: string; @@ -32,7 +32,7 @@ export interface ShopExpressTemplateDetail { createTime?: string; // 修改时间 updateTime?: string; - // + // sortNumber?: number; } diff --git a/src/api/shop/shopGoodsCoupon/model/index.ts b/src/api/shop/shopGoodsCoupon/model/index.ts deleted file mode 100644 index 0caed76..0000000 --- a/src/api/shop/shopGoodsCoupon/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商品优惠券表 - */ -export interface ShopGoodsCoupon { - // - id?: number; - // 商品id - goodsId?: number; - // 优惠劵id - issueCouponId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 用户ID - userId?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 商品优惠券表搜索条件 - */ -export interface ShopGoodsCouponParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src/api/shop/shopGoodsReview/model/index.ts b/src/api/shop/shopGoodsReview/model/index.ts deleted file mode 100644 index f851dde..0000000 --- a/src/api/shop/shopGoodsReview/model/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商品评价 - */ -export interface ShopGoodsReview { - // 评价ID - reviewId?: number; - // 商品ID - goodsId?: number; - // 订单ID - orderId?: number; - // 用户ID - userId?: number; - // 用户昵称 - nickname?: string; - // 用户头像 - avatar?: string; - // 评价内容 - content?: string; - // 评分 1-5星 - rating?: number; - // 评价图片,JSON数组格式 - images?: string; - // 是否匿名评价 - isAnonymous?: boolean; - // 商家回复 - reply?: string; - // 商家回复时间 - replyTime?: string; - // 评价状态 0待审核 1已通过 2已拒绝 - status?: number; - // 是否置顶 - isTop?: boolean; - // 点赞数 - likeCount?: number; - // 创建时间 - createTime?: string; - // 更新时间 - updateTime?: string; - // 商品信息 - goodsName?: string; - goodsImage?: string; - goodsPrice?: string; - // SKU信息 - skuId?: number; - specInfo?: string; -} - -/** - * 评价统计 - */ -export interface ReviewStats { - // 总评价数 - totalCount: number; - // 好评数 - goodCount: number; - // 中评数 - mediumCount: number; - // 差评数 - badCount: number; - // 好评率 - goodRate: number; - // 平均评分 - avgRating: number; - // 各星级统计 - ratingStats: { - [key: number]: number; // 星级 -> 数量 - }; -} - -/** - * 评价查询参数 - */ -export interface ShopGoodsReviewParam extends PageParam { - // 商品ID - goodsId?: number; - // 用户ID - userId?: number; - // 订单ID - orderId?: number; - // 评分筛选 - rating?: number; - // 状态筛选 - status?: number; - // 是否有图片 - hasImages?: boolean; - // 排序方式 time:时间 rating:评分 like:点赞数 - sortBy?: string; - // 排序方向 asc:升序 desc:降序 - sortOrder?: string; -} - -/** - * 提交评价请求 - */ -export interface SubmitReviewRequest { - // 商品ID - goodsId: number; - // 订单ID - orderId: number; - // 评价内容 - content: string; - // 评分 - rating: number; - // 评价图片 - images?: string[]; - // 是否匿名 - isAnonymous?: boolean; - // SKU信息 - skuId?: number; - specInfo?: string; -} diff --git a/src/api/shop/shopUserCoupon/index.ts b/src/api/shop/shopUserCoupon/index.ts new file mode 100644 index 0000000..ada8cf7 --- /dev/null +++ b/src/api/shop/shopUserCoupon/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopUserCoupon, ShopUserCouponParam } from './model'; + +/** + * 分页查询用户优惠券 + */ +export async function pageShopUserCoupon(params: ShopUserCouponParam) { + const res = await request.get>>( + '/shop/shop-user-coupon/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询用户优惠券列表 + */ +export async function listShopUserCoupon(params?: ShopUserCouponParam) { + const res = await request.get>( + '/shop/shop-user-coupon', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加用户优惠券 + */ +export async function addShopUserCoupon(data: ShopUserCoupon) { + const res = await request.post>( + '/shop/shop-user-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改用户优惠券 + */ +export async function updateShopUserCoupon(data: ShopUserCoupon) { + const res = await request.put>( + '/shop/shop-user-coupon', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除用户优惠券 + */ +export async function removeShopUserCoupon(id?: number) { + const res = await request.del>( + '/shop/shop-user-coupon/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除用户优惠券 + */ +export async function removeBatchShopUserCoupon(data: (number | undefined)[]) { + const res = await request.del>( + '/shop/shop-user-coupon/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询用户优惠券 + */ +export async function getShopUserCoupon(id: number) { + const res = await request.get>( + '/shop/shop-user-coupon/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/app.config.ts b/src/app.config.ts index 04fe247..23b9c40 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -53,15 +53,16 @@ export default defineAppConfig({ ] }, { - "root": "shop", - "pages": [ - 'category/index', - 'orderDetail/index', - 'goodsDetail/index', - 'orderConfirm/index', - 'orderConfirmCart/index', - 'search/index' - ] + "root": "shop", + "pages": [ + 'category/index', + 'orderDetail/index', + 'goodsDetail/index', + 'orderConfirm/index', + 'orderConfirmCart/index', + 'search/index', + 'shopArticle/index' + ] } ], window: { diff --git a/src/pages/cart/cart.scss b/src/pages/cart/cart.scss new file mode 100644 index 0000000..b91afea --- /dev/null +++ b/src/pages/cart/cart.scss @@ -0,0 +1,31 @@ +// 购物车页面样式 +.cart-page { + // 当购物车为空时,设置透明背景 + &.empty { + page { + background-color: transparent !important; + } + + .cart-empty-container { + background-color: transparent !important; + } + } +} + +// 空购物车容器样式 +.cart-empty-container { + background-color: transparent !important; + + // 确保 Empty 组件及其子元素也是透明的 + .nut-empty { + background-color: transparent !important; + } + + .nut-empty__image { + background-color: transparent !important; + } + + .nut-empty__description { + background-color: transparent !important; + } +} diff --git a/src/pages/cart/cart.tsx b/src/pages/cart/cart.tsx index 0ee023d..07ba471 100644 --- a/src/pages/cart/cart.tsx +++ b/src/pages/cart/cart.tsx @@ -13,6 +13,7 @@ import { import {ArrowLeft, Del, Shopping} from '@nutui/icons-react-taro'; import {View} from '@tarojs/components'; import {CartItem, useCart} from "@/hooks/useCart"; +import './cart.scss'; function Cart() { const [statusBarHeight, setStatusBarHeight] = useState(0); @@ -69,6 +70,21 @@ function Cart() { }); }, []); + // 根据购物车状态动态设置页面背景色 + useEffect(() => { + if (cartItems.length === 0) { + // 购物车为空时设置透明背景 + Taro.setBackgroundColor({ + backgroundColor: 'transparent' + }); + } else { + // 有商品时恢复默认背景 + Taro.setBackgroundColor({ + backgroundColor: '#f5f5f5' + }); + } + }, [cartItems.length]); + // 处理单个商品选择 const handleItemSelect = (goodsId: number, checked: boolean) => { if (checked) { @@ -184,7 +200,10 @@ function Cart() { Taro.switchTab({ url: '/pages/index/index' })} /> @@ -226,13 +245,20 @@ function Cart() { {/* 购物车内容 */} - + {cartItems.length === 0 ? ( // 空购物车 - + } description="购物车空空如也" + style={{ backgroundColor: 'transparent' }} > + ); };