From 37710631dfcf6320a4fb1cea1f021e7d7afabd02 Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Fri, 26 Dec 2025 17:14:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B5=84=E4=BA=A7SKU?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD,=E6=B7=BB=E5=8A=A0SKU?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/assets/asset/index.ts | 70 +++ .../assets/asset/component/skuDialog.vue | 554 ++++++++++++++++++ src/views/assets/asset/index.vue | 8 +- 3 files changed, 629 insertions(+), 3 deletions(-) create mode 100644 src/views/assets/asset/component/skuDialog.vue diff --git a/src/api/assets/asset/index.ts b/src/api/assets/asset/index.ts index f0ef671..8932121 100644 --- a/src/api/assets/asset/index.ts +++ b/src/api/assets/asset/index.ts @@ -84,3 +84,73 @@ export function uploadAssetImage(file: File) { }, }); } + +// SKU 列表查询参数 +export interface SkuQueryParams { + assetId: string; + status?: number; + keyword?: string; + minPrice?: number; + maxPrice?: number; + page?: number; + pageSize?: number; +} + +// SKU 创建参数 +export interface CreateSkuParams { + assetId: string; + assetName: string; + skuName: string; + imageUrl?: string; + specValues?: Record; + price: number; + unlimitedStock: boolean; + stock: number; + sort?: number; + status?: number; +} + +// 获取 SKU 列表 +export function listAssetSkus(params: SkuQueryParams) { + return newService({ + url: '/assets/asset/sku/listAssetSkus', + method: 'get', + params, + }); +} + +// 创建 SKU +export function createAssetSku(data: CreateSkuParams) { + return newService({ + url: '/assets/asset/sku/createAssetSku', + method: 'post', + data, + }); +} + +// 获取 SKU 详情 +export function getAssetSku(id: string) { + return newService({ + url: '/assets/asset/sku/getAssetSku', + method: 'get', + params: { id }, + }); +} + +// 修改 SKU +export function updateAssetSku(data: CreateSkuParams & { id: string }) { + return newService({ + url: '/assets/asset/sku/updateAssetSku', + method: 'put', + data, + }); +} + +// 删除 SKU +export function deleteAssetSku(id: string) { + return newService({ + url: '/assets/asset/sku/deleteAssetSku', + method: 'delete', + params: { id }, + }); +} diff --git a/src/views/assets/asset/component/skuDialog.vue b/src/views/assets/asset/component/skuDialog.vue new file mode 100644 index 0000000..8d1c1e1 --- /dev/null +++ b/src/views/assets/asset/component/skuDialog.vue @@ -0,0 +1,554 @@ + + + + + diff --git a/src/views/assets/asset/index.vue b/src/views/assets/asset/index.vue index 22e2aaa..55e1bf9 100644 --- a/src/views/assets/asset/index.vue +++ b/src/views/assets/asset/index.vue @@ -84,6 +84,7 @@ + @@ -98,6 +99,7 @@ import { ref, reactive, onMounted } from 'vue'; import { ElMessageBox, ElMessage } from 'element-plus'; import { listAssets, updateAssetStatus, deleteAsset } from '/@/api/assets/asset'; import EditAsset from './component/editAsset.vue'; +import SkuDialog from './component/skuDialog.vue'; interface AssetRow { id: string; @@ -115,6 +117,7 @@ interface AssetRow { } const editAssetRef = ref(); +const skuDialogRef = ref(); const tableData = reactive({ data: [] as AssetRow[], @@ -217,10 +220,9 @@ const onEdit = (row: AssetRow) => { editAssetRef.value.openDialog(row, true); }; -// 添加SKU(待定) +// 管理SKU const onAddSku = (row: AssetRow) => { - ElMessage.info('添加SKU功能待开发'); - console.log('添加SKU:', row); + skuDialogRef.value.openDialog(row); }; // 分页大小改变