Skip to content

Commit 4a965b8

Browse files
YunaiVgitee-org
authored andcommitted
!141 商品管理: 打通所有接口(第一版)
Merge pull request !141 from puhui999/dev-to-dev
2 parents f1cf125 + 0c6e3a3 commit 4a965b8

File tree

19 files changed

+1844
-64
lines changed

19 files changed

+1844
-64
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import request from '@/config/axios'
2+
import type { SpuType } from './type/spuType'
3+
4+
// 获得spu列表
5+
export const getSpuList = (params: any) => {
6+
return request.get({ url: '/product/spu/page', params })
7+
}
8+
// 获得spu列表tabsCount
9+
export const getTabsCount = () => {
10+
return request.get({ url: '/product/spu/tabsCount' })
11+
}
12+
// 创建商品spu
13+
export const createSpu = (data: SpuType) => {
14+
return request.post({ url: '/product/spu/create', data })
15+
}
16+
// 更新商品spu
17+
export const updateSpu = (data: SpuType) => {
18+
return request.put({ url: '/product/spu/update', data })
19+
}
20+
// 更新商品spu status
21+
export const updateStatus = (data: { id: number; status: number }) => {
22+
return request.put({ url: '/product/spu/updateStatus', data })
23+
}
24+
// 获得商品spu
25+
export const getSpu = (id: number) => {
26+
return request.get({ url: `/product/spu/get-detail?id=${id}` })
27+
}
28+
// 删除商品Spu
29+
export const deleteSpu = (id: number) => {
30+
return request.delete({ url: `/product/spu/delete?id=${id}` })
31+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
export interface Property {
2+
/**
3+
* 属性编号
4+
*
5+
* 关联 {@link ProductPropertyDO#getId()}
6+
*/
7+
propertyId?: number
8+
/**
9+
* 属性值编号
10+
*
11+
* 关联 {@link ProductPropertyValueDO#getId()}
12+
*/
13+
valueId?: number
14+
/**
15+
* 属性值名称
16+
*/
17+
valueName?: string
18+
}
19+
20+
export interface SkuType {
21+
/**
22+
* 商品 SKU 编号,自增
23+
*/
24+
id?: number
25+
/**
26+
* SPU 编号
27+
*/
28+
spuId?: number
29+
/**
30+
* 属性数组,JSON 格式
31+
*/
32+
properties?: Property[]
33+
/**
34+
* 商品价格,单位:分
35+
*/
36+
price?: number
37+
/**
38+
* 市场价,单位:分
39+
*/
40+
marketPrice?: number
41+
/**
42+
* 成本价,单位:分
43+
*/
44+
costPrice?: number
45+
/**
46+
* 商品条码
47+
*/
48+
barCode?: string
49+
/**
50+
* 图片地址
51+
*/
52+
picUrl?: string
53+
/**
54+
* 库存
55+
*/
56+
stock?: number
57+
/**
58+
* 商品重量,单位:kg 千克
59+
*/
60+
weight?: number
61+
/**
62+
* 商品体积,单位:m^3 平米
63+
*/
64+
volume?: number
65+
66+
/**
67+
* 一级分销的佣金,单位:分
68+
*/
69+
subCommissionFirstPrice?: number
70+
/**
71+
* 二级分销的佣金,单位:分
72+
*/
73+
subCommissionSecondPrice?: number
74+
75+
/**
76+
* 商品销量
77+
*/
78+
salesCount?: number
79+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { SkuType } from './skuType'
2+
3+
export interface SpuType {
4+
id?: number
5+
name?: string // 商品名称
6+
categoryId?: number | null // 商品分类
7+
keyword?: string // 关键字
8+
unit?: number | null // 单位
9+
picUrl?: string // 商品封面图
10+
sliderPicUrls?: string[] // 商品轮播图
11+
introduction?: string // 商品简介
12+
deliveryTemplateId?: number // 运费模版
13+
specType?: boolean // 商品规格
14+
subCommissionType?: boolean // 分销类型
15+
skus: SkuType[] // sku数组
16+
description?: string // 商品详情
17+
sort?: string // 商品排序
18+
giveIntegral?: number // 赠送积分
19+
virtualSalesCount?: number // 虚拟销量
20+
recommendHot?: boolean // 是否热卖
21+
recommendBenefit?: boolean // 是否优惠
22+
recommendBest?: boolean // 是否精品
23+
recommendNew?: boolean // 是否新品
24+
recommendGood?: boolean // 是否优品
25+
}

src/api/mall/product/property.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ export const getPropertyList = (params: any) => {
7171
}
7272

7373
// 获得属性项列表
74-
export const getPropertyListAndValue = (params: any) => {
75-
return request.get({ url: '/product/property/get-value-list', params })
74+
export const getPropertyListAndValue = (data: any) => {
75+
return request.post({ url: '/product/property/get-value-list', data })
7676
}
7777

7878
// ------------------------ 属性值 -------------------

src/router/modules/remaining.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { Layout } from '@/utils/routerHelper'
22

33
const { t } = useI18n()
44
/**
5-
* redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击
6-
* name:'router-name' 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
7-
* meta : {
5+
* redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击
6+
* name:'router-name' 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
7+
* meta : {
88
hidden: true 当设置 true 的时候该路由不会再侧边栏出现 如404,login等页面(默认 false)
99
1010
alwaysShow: true 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式,
@@ -31,7 +31,7 @@ const { t } = useI18n()
3131
3232
canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false)
3333
}
34-
**/
34+
**/
3535
const remainingRouter: AppRouteRecordRaw[] = [
3636
{
3737
path: '/redirect',
@@ -345,6 +345,29 @@ const remainingRouter: AppRouteRecordRaw[] = [
345345
meta: { title: '商品属性值', icon: '', activeMenu: '/product/property' }
346346
}
347347
]
348+
},
349+
{
350+
path: '/product',
351+
component: Layout,
352+
name: 'ProductManagementEdit',
353+
meta: {
354+
hidden: true
355+
},
356+
children: [
357+
{
358+
path: 'productManagementAdd',
359+
component: () => import('@/views/mall/product/management/addForm.vue'),
360+
name: 'ProductManagementAdd',
361+
meta: {
362+
noCache: true,
363+
hidden: true,
364+
canTo: true,
365+
icon: 'ep:edit',
366+
title: '添加商品',
367+
activeMenu: '/product/product-management'
368+
}
369+
}
370+
]
348371
}
349372
]
350373

src/utils/constants.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,20 @@ export const PayRefundStatusEnum = {
220220
name: '退款关闭'
221221
}
222222
}
223+
/**
224+
* 商品SPU枚举类
225+
*/
226+
export const ProductSpuStatusEnum = {
227+
RECYCLE: {
228+
status: -1,
229+
name: '回收站'
230+
},
231+
DISABLE: {
232+
status: 0,
233+
name: '下架'
234+
},
235+
ENABLE: {
236+
status: 1,
237+
name: '上架'
238+
}
239+
}

src/utils/dict.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,5 +144,9 @@ export enum DICT_TYPE {
144144

145145
// ========== MP 模块 ==========
146146
MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型
147-
MP_MESSAGE_TYPE = 'mp_message_type' // 消息类型
147+
MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型
148+
149+
// ========== MALL 模块 ==========
150+
PRODUCT_UNIT = 'product_unit', // 商品单位
151+
PRODUCT_SPU_STATUS = 'product_spu_status' //商品状态
148152
}

src/utils/object.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2}
3+
* @param target 目标对象
4+
* @param source 源对象
5+
*/
6+
export const copyValueToTarget = (target, source) => {
7+
const newObj = Object.assign({}, target, source)
8+
// 删除多余属性
9+
Object.keys(newObj).forEach((key) => {
10+
// 如果不是target中的属性则删除
11+
if (Object.keys(target).indexOf(key) === -1) {
12+
delete newObj[key]
13+
}
14+
})
15+
// 更新目标对象值
16+
Object.assign(target, newObj)
17+
}

0 commit comments

Comments
 (0)