From 2f3606e9672b886a921f32858ecb5ae9843e21bc Mon Sep 17 00:00:00 2001 From: qiube <18969599531@163.com> Date: Mon, 22 Dec 2025 18:14:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(product):=20=E5=AE=9E=E7=8E=B0=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=AE=A1=E7=90=86=E4=B8=8E=E8=AF=A6=E6=83=85=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增商品相关API接口封装,包括创建、查询、上传图片等功能 - 实现商品详情页面,支持多货币SKU选择与图片预览 - 实现商品管理页面,展示商品列表与链接复制功能 - 添加商品状态标签与销售地区展示 - 实现购买确认弹窗与订单跳转逻辑 - 添加响应式布局适配移动端展示 - 集成Element Plus组件库实现UI交互效果 --- src/api/product.js | 67 +++ src/views/ProductDetail.vue | 1058 +++++++++++++++++++++++++++++++++++ src/views/ProductManage.vue | 360 ++++++++++++ 3 files changed, 1485 insertions(+) create mode 100644 src/api/product.js create mode 100644 src/views/ProductDetail.vue create mode 100644 src/views/ProductManage.vue diff --git a/src/api/product.js b/src/api/product.js new file mode 100644 index 0000000..9578421 --- /dev/null +++ b/src/api/product.js @@ -0,0 +1,67 @@ +import request from './request' + +/** + * 创建商品 + */ +export function createProduct(data) { + return request({ + url: '/product', + method: 'post', + data + }) +} + +/** + * 获取商品详情(通过商品ID或链接码) + */ +export function getProduct(id) { + return request({ + url: `/product/${id}`, + method: 'get' + }) +} + +/** + * 根据链接码获取商品详情 + */ +export function getProductByLinkCode(linkCode) { + return request({ + url: `/product/link/${linkCode}`, + method: 'get' + }) +} + +/** + * 获取商品列表 + */ +export function getProductList() { + return request({ + url: '/product/list', + method: 'get' + }) +} + +/** + * 获取商品URL + */ +export function getProductUrl(id) { + return request({ + url: `/product/${id}/url`, + method: 'get' + }) +} + +/** + * 上传商品图片 + */ +export function uploadProductImage(file) { + const formData = new FormData() + formData.append('file', file) + + return request({ + url: '/product/upload/image', + method: 'post', + data: formData + // 注意:不设置 Content-Type,让浏览器自动设置(包含 boundary) + }) +} diff --git a/src/views/ProductDetail.vue b/src/views/ProductDetail.vue new file mode 100644 index 0000000..0e1aa99 --- /dev/null +++ b/src/views/ProductDetail.vue @@ -0,0 +1,1058 @@ + + + + + diff --git a/src/views/ProductManage.vue b/src/views/ProductManage.vue new file mode 100644 index 0000000..c7a8cd4 --- /dev/null +++ b/src/views/ProductManage.vue @@ -0,0 +1,360 @@ + + + + + +