294 lines
7.1 KiB
Markdown
294 lines
7.1 KiB
Markdown
|
|
# 商品寄卖服务模块 - 开发说明
|
|||
|
|
|
|||
|
|
## 📁 文件结构
|
|||
|
|
|
|||
|
|
### API接口文件
|
|||
|
|
```
|
|||
|
|
src/api/consignment.js // 商品寄卖服务API接口
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 页面文件
|
|||
|
|
```
|
|||
|
|
src/views/consignment/
|
|||
|
|
├── merchandise/ # 寄售商品管理
|
|||
|
|
│ ├── index.vue # 寄售商品列表
|
|||
|
|
│ └── detail.vue # 寄售商品详情
|
|||
|
|
├── withdraw/ # 提现管理
|
|||
|
|
│ ├── index.vue # 提现列表
|
|||
|
|
│ └── detail.vue # 提现详情
|
|||
|
|
└── financial-log/ # 财务日志管理
|
|||
|
|
└── index.vue # 财务日志(包含4种类型)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔌 API接口列表
|
|||
|
|
|
|||
|
|
### 寄售商品模块
|
|||
|
|
- `merchandiseListApi()` - 获取寄售商品列表
|
|||
|
|
- `merchandiseInfoApi()` - 获取寄售商品详情
|
|||
|
|
- `merchandiseUpdateApi()` - 更新寄售商品
|
|||
|
|
- `merchandiseBatchUpdateApi()` - 批量更新寄售商品
|
|||
|
|
|
|||
|
|
### 提现管理模块
|
|||
|
|
- `withdrawListApi()` - 获取提现列表
|
|||
|
|
- `withdrawInfoApi()` - 获取提现详情
|
|||
|
|
- `withdrawAuditApi()` - 审核提现申请
|
|||
|
|
- `withdrawStatisticsApi()` - 获取提现统计数据
|
|||
|
|
|
|||
|
|
### 财务日志模块
|
|||
|
|
- `couponLogListApi()` - 获取优惠券日志列表
|
|||
|
|
- `couponLogStatisticsApi()` - 获取优惠券统计
|
|||
|
|
- `selfBonusLogListApi()` - 获取个人奖金日志列表
|
|||
|
|
- `selfBonusLogStatisticsApi()` - 获取个人奖金统计
|
|||
|
|
- `shareBonusLogListApi()` - 获取推广奖金日志列表
|
|||
|
|
- `shareBonusLogStatisticsApi()` - 获取推广奖金统计
|
|||
|
|
- `moneyLogListApi()` - 获取余额日志列表
|
|||
|
|
- `moneyLogStatisticsApi()` - 获取余额统计
|
|||
|
|
|
|||
|
|
### 寄售订单模块
|
|||
|
|
- `consignmentOrderListApi()` - 获取寄售订单列表
|
|||
|
|
- `consignmentOrderInfoApi()` - 获取寄售订单详情
|
|||
|
|
- `consignmentOrderUpdateApi()` - 更新寄售订单
|
|||
|
|
- `consignmentOrderStatisticsApi()` - 获取订单统计
|
|||
|
|
|
|||
|
|
## 🛠️ 技术栈
|
|||
|
|
|
|||
|
|
- **前端框架**: Vue.js 2.x
|
|||
|
|
- **UI组件库**: Element UI
|
|||
|
|
- **HTTP请求**: Axios (通过 @/utils/request 封装)
|
|||
|
|
- **路由**: Vue Router
|
|||
|
|
- **状态管理**: Vuex (如有使用)
|
|||
|
|
|
|||
|
|
## 📝 代码规范
|
|||
|
|
|
|||
|
|
### API接口规范
|
|||
|
|
```javascript
|
|||
|
|
/**
|
|||
|
|
* 功能描述
|
|||
|
|
* @param params
|
|||
|
|
*/
|
|||
|
|
export function apiNameApi(params) {
|
|||
|
|
return request({
|
|||
|
|
url: '/app/admin/module/action',
|
|||
|
|
method: 'get', // 或 'post'
|
|||
|
|
params, // GET请求用params
|
|||
|
|
// data, // POST请求用data
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Vue组件规范
|
|||
|
|
```vue
|
|||
|
|
<template>
|
|||
|
|
<div class="divBox relative">
|
|||
|
|
<el-card class="box-card">
|
|||
|
|
<!-- 页面内容 -->
|
|||
|
|
</el-card>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import { apiNameApi } from '@/api/consignment';
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: 'ComponentName',
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
// 数据定义
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
mounted() {
|
|||
|
|
// 初始化逻辑
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
// 方法定义
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
// 样式定义
|
|||
|
|
</style>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🚀 使用步骤
|
|||
|
|
|
|||
|
|
### 1. 导入API接口
|
|||
|
|
```javascript
|
|||
|
|
import {
|
|||
|
|
merchandiseListApi,
|
|||
|
|
merchandiseUpdateApi
|
|||
|
|
} from '@/api/consignment';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 调用API示例
|
|||
|
|
```javascript
|
|||
|
|
// 获取列表
|
|||
|
|
async getList() {
|
|||
|
|
try {
|
|||
|
|
const res = await merchandiseListApi({
|
|||
|
|
page: 1,
|
|||
|
|
limit: 10,
|
|||
|
|
status: 1
|
|||
|
|
});
|
|||
|
|
this.tableData = res.data.data;
|
|||
|
|
this.total = res.data.count;
|
|||
|
|
} catch (e) {
|
|||
|
|
this.$message.error(e.message || '获取列表失败');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新数据
|
|||
|
|
async update() {
|
|||
|
|
try {
|
|||
|
|
await merchandiseUpdateApi({
|
|||
|
|
id: this.id,
|
|||
|
|
is_show: 1
|
|||
|
|
});
|
|||
|
|
this.$message.success('更新成功');
|
|||
|
|
} catch (e) {
|
|||
|
|
this.$message.error(e.message || '更新失败');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 功能特性
|
|||
|
|
|
|||
|
|
### 寄售商品管理
|
|||
|
|
- ✅ 商品列表展示(支持分页、搜索、筛选)
|
|||
|
|
- ✅ 商品详情查看
|
|||
|
|
- ✅ 商品状态管理(上架/下架)
|
|||
|
|
- ✅ 批量操作(批量显示/隐藏)
|
|||
|
|
- ✅ 图片预览功能
|
|||
|
|
|
|||
|
|
### 提现管理
|
|||
|
|
- ✅ 提现申请列表(支持多状态Tab切换)
|
|||
|
|
- ✅ 提现详情查看
|
|||
|
|
- ✅ 提现审核(通过/驳回)
|
|||
|
|
- ✅ 统计数据展示
|
|||
|
|
- ✅ 收款账号信息展示
|
|||
|
|
|
|||
|
|
### 财务日志
|
|||
|
|
- ✅ 4种日志类型切换(优惠券、个人奖金、推广奖金、余额)
|
|||
|
|
- ✅ 日志列表展示
|
|||
|
|
- ✅ 统计数据(总收入、总支出、净额)
|
|||
|
|
- ✅ 时间范围筛选
|
|||
|
|
- ✅ 用户筛选
|
|||
|
|
|
|||
|
|
## 🔐 权限控制
|
|||
|
|
|
|||
|
|
所有页面和操作都支持权限控制,使用 `v-hasPermi` 指令:
|
|||
|
|
|
|||
|
|
```vue
|
|||
|
|
<el-button
|
|||
|
|
v-hasPermi="['admin:merchandise:update']"
|
|||
|
|
@click="handleUpdate"
|
|||
|
|
>
|
|||
|
|
更新
|
|||
|
|
</el-button>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
权限标识规范:
|
|||
|
|
- `admin:merchandise:info` - 查看寄售商品详情
|
|||
|
|
- `admin:merchandise:update` - 更新寄售商品
|
|||
|
|
- `admin:withdraw:info` - 查看提现详情
|
|||
|
|
- `admin:withdraw:audit` - 审核提现申请
|
|||
|
|
|
|||
|
|
## 📋 路由配置
|
|||
|
|
|
|||
|
|
需要在路由配置文件中添加以下路由:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
{
|
|||
|
|
path: '/consignment',
|
|||
|
|
component: Layout,
|
|||
|
|
redirect: '/consignment/merchandise',
|
|||
|
|
name: 'Consignment',
|
|||
|
|
meta: { title: '商品寄卖服务', icon: 'el-icon-goods' },
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'merchandise',
|
|||
|
|
name: 'Merchandise',
|
|||
|
|
component: () => import('@/views/consignment/merchandise/index'),
|
|||
|
|
meta: { title: '寄售商品管理', icon: 'el-icon-shopping-bag-1' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'merchandise/detail',
|
|||
|
|
name: 'MerchandiseDetail',
|
|||
|
|
component: () => import('@/views/consignment/merchandise/detail'),
|
|||
|
|
meta: { title: '寄售商品详情', activeMenu: '/consignment/merchandise' },
|
|||
|
|
hidden: true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'withdraw',
|
|||
|
|
name: 'Withdraw',
|
|||
|
|
component: () => import('@/views/consignment/withdraw/index'),
|
|||
|
|
meta: { title: '提现管理', icon: 'el-icon-wallet' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'withdraw/detail',
|
|||
|
|
name: 'WithdrawDetail',
|
|||
|
|
component: () => import('@/views/consignment/withdraw/detail'),
|
|||
|
|
meta: { title: '提现详情', activeMenu: '/consignment/withdraw' },
|
|||
|
|
hidden: true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'financial-log',
|
|||
|
|
name: 'FinancialLog',
|
|||
|
|
component: () => import('@/views/consignment/financial-log/index'),
|
|||
|
|
meta: { title: '财务日志', icon: 'el-icon-document' }
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎨 样式说明
|
|||
|
|
|
|||
|
|
### 通用样式类
|
|||
|
|
- `.divBox` - 页面容器
|
|||
|
|
- `.box-card` - 卡片容器
|
|||
|
|
- `.selWidth` - 表单项宽度100%
|
|||
|
|
- `.price` - 价格样式(红色加粗)
|
|||
|
|
- `.income` - 收入样式(绿色)
|
|||
|
|
- `.expense` - 支出样式(红色)
|
|||
|
|
|
|||
|
|
### 响应式布局
|
|||
|
|
使用 Element UI 的栅格系统:
|
|||
|
|
```javascript
|
|||
|
|
grid: {
|
|||
|
|
xl: 8, // ≥1920px
|
|||
|
|
lg: 8, // ≥1200px
|
|||
|
|
md: 12, // ≥992px
|
|||
|
|
sm: 24, // ≥768px
|
|||
|
|
xs: 24 // <768px
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🐛 常见问题
|
|||
|
|
|
|||
|
|
### 1. API请求失败
|
|||
|
|
- 检查后端接口是否正常
|
|||
|
|
- 检查请求参数格式是否正确
|
|||
|
|
- 检查token是否有效
|
|||
|
|
|
|||
|
|
### 2. 图片显示问题
|
|||
|
|
- 确认图片URL格式(JSON数组或字符串)
|
|||
|
|
- 使用 `getFirstImage()` 和 `getImageList()` 方法解析
|
|||
|
|
|
|||
|
|
### 3. 权限问题
|
|||
|
|
- 确认权限标识配置正确
|
|||
|
|
- 检查用户角色是否有对应权限
|
|||
|
|
|
|||
|
|
## 📞 技术支持
|
|||
|
|
|
|||
|
|
如有问题,请查阅:
|
|||
|
|
1. [商品寄卖服务系统管理后台API接口PRD-完整版.md](./商品寄卖服务系统管理后台API接口PRD-完整版.md)
|
|||
|
|
2. [数据库设计说明.md](./数据库设计说明.md)
|
|||
|
|
3. Element UI官方文档: https://element.eleme.cn/
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**创建日期**: 2025-11-13
|
|||
|
|
**版本**: V1.0
|
|||
|
|
**维护**: 开发团队
|
|||
|
|
|