From 37e8ef67675bb2c4fdd6b35723b47c450e043787 Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Fri, 26 Dec 2025 15:40:14 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8imageUR?= =?UTF-8?q?L=E5=AD=97=E6=AE=B5,=E7=A7=BB=E9=99=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=88=97=E8=A1=A8URL=E5=89=8D=E7=BC=80=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9B=B8=E5=AF=B9=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/asset/component/editAsset.vue | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/views/assets/asset/component/editAsset.vue b/src/views/assets/asset/component/editAsset.vue index edf7cc4..1a8487f 100644 --- a/src/views/assets/asset/component/editAsset.vue +++ b/src/views/assets/asset/component/editAsset.vue @@ -665,7 +665,7 @@ const rules: FormRules = { type: [{ required: true, message: '请选择资产类型', trigger: 'change' }], categoryId: [{ required: true, message: '请选择资产分类', trigger: 'change' }], offlineTime: [{ validator: validateOfflineTime, trigger: 'change' }], - mainImage: [{ required: false, message: '请上传主图', trigger: 'change' }], + mainImage: [{ required: true, message: '请上传主图', trigger: 'change' }], 'serviceAssetConfig.serviceAssetArrivalConfig.booking.minAdvance': [{ required: true, message: '请输入最小提前时间', trigger: 'blur' }], 'serviceAssetConfig.serviceAssetArrivalConfig.booking.minDuration': [{ required: true, message: '请输入最小时长', trigger: 'blur' }], 'serviceAssetConfig.serviceAssetArrivalConfig.booking.cancelWindow': [{ required: true, message: '请输入取消提前时间', trigger: 'blur' }], @@ -1091,23 +1091,25 @@ const buildRequestBody = async (): Promise => { // 主图 (已在上传时直接赋值给 ruleForm.mainImage) if (ruleForm.mainImage) { - body.fileURL = ruleForm.mainImage; + body.imageURL = ruleForm.mainImage; } // 图片列表 const imageUrls: string[] = []; for (const file of imageFileList.value) { - if (file.response) { - // 新上传的图片使用原始 URL - imageUrls.push(file.response as string); - } else if (file.url && !file.url.startsWith('blob:')) { - // 已有图片保留原 URL - imageUrls.push(file.url); + let url = (file.response as string) || ''; + if (!url && file.url && !file.url.startsWith('blob:')) { + url = file.url; + } + if (url) { + // 移除前缀,确保提交相对路径 + if (fileAddressPrefix.value && url.startsWith(fileAddressPrefix.value)) { + url = url.substring(fileAddressPrefix.value.length); + } + imageUrls.push(url); } } - if (imageUrls.length > 0) { - body.images = imageUrls; - } + body.images = imageUrls; // 根据类型添加配置 if (ruleForm.type === 'physical') { 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 2/4] =?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); }; // 分页大小改变 From 15fd9bda3ebc35c18a13181369cffd11b8649721 Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Fri, 26 Dec 2025 17:24:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B0=83=E6=95=B4SKU=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/assets/asset/component/skuDialog.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/assets/asset/component/skuDialog.vue b/src/views/assets/asset/component/skuDialog.vue index 8d1c1e1..0039e20 100644 --- a/src/views/assets/asset/component/skuDialog.vue +++ b/src/views/assets/asset/component/skuDialog.vue @@ -1,5 +1,5 @@