添加订单卡片
This commit is contained in:
parent
756c105399
commit
5fc98a2007
|
|
@ -1,216 +0,0 @@
|
||||||
# 订单API使用说明
|
|
||||||
|
|
||||||
## 概述
|
|
||||||
|
|
||||||
订单API提供了完整的订单管理功能,包括设备续费、订单创建、查询、取消和支付等功能。
|
|
||||||
|
|
||||||
## API接口列表
|
|
||||||
|
|
||||||
### 1. 设备续费 (renewDevice)
|
|
||||||
|
|
||||||
**接口地址:** `POST /app/order/renew`
|
|
||||||
|
|
||||||
**功能描述:** 为指定设备进行续费操作
|
|
||||||
|
|
||||||
**请求参数:**
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"suitId": "3", // 套餐ID
|
|
||||||
"appId": "1", // 应用ID
|
|
||||||
"payAmount": "365", // 支付金额
|
|
||||||
"channelId": "2", // 渠道ID
|
|
||||||
"devId": "1" // 设备ID
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**使用示例:**
|
|
||||||
```javascript
|
|
||||||
import { renewDevice } from '@/api/order/order.js'
|
|
||||||
|
|
||||||
// 设备续费
|
|
||||||
const renewData = {
|
|
||||||
suitId: '3',
|
|
||||||
appId: '1',
|
|
||||||
payAmount: '365',
|
|
||||||
channelId: '2',
|
|
||||||
devId: '1'
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await renewDevice(renewData)
|
|
||||||
console.log('续费成功:', response)
|
|
||||||
} catch (error) {
|
|
||||||
console.error('续费失败:', error)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 创建订单 (createOrder)
|
|
||||||
|
|
||||||
**接口地址:** `POST /app/order/create`
|
|
||||||
|
|
||||||
**功能描述:** 创建新的订单
|
|
||||||
|
|
||||||
**请求参数:**
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"deviceType": "设备类型",
|
|
||||||
"period": "租赁周期",
|
|
||||||
"amount": "订单金额",
|
|
||||||
// 其他订单相关参数...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 获取订单列表 (getOrderList)
|
|
||||||
|
|
||||||
**接口地址:** `GET /app/order/list`
|
|
||||||
|
|
||||||
**功能描述:** 获取订单列表,支持分页和状态筛选
|
|
||||||
|
|
||||||
**请求参数:**
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"page": 1, // 页码
|
|
||||||
"size": 10, // 每页数量
|
|
||||||
"status": "" // 订单状态(可选)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. 获取订单详情 (getOrderDetail)
|
|
||||||
|
|
||||||
**接口地址:** `GET /app/order/detail/{orderId}`
|
|
||||||
|
|
||||||
**功能描述:** 获取指定订单的详细信息
|
|
||||||
|
|
||||||
**路径参数:**
|
|
||||||
- `orderId`: 订单ID
|
|
||||||
|
|
||||||
### 5. 取消订单 (cancelOrder)
|
|
||||||
|
|
||||||
**接口地址:** `POST /app/order/cancel/{orderId}`
|
|
||||||
|
|
||||||
**功能描述:** 取消指定订单
|
|
||||||
|
|
||||||
**路径参数:**
|
|
||||||
- `orderId`: 订单ID
|
|
||||||
|
|
||||||
### 6. 支付订单 (payOrder)
|
|
||||||
|
|
||||||
**接口地址:** `POST /app/order/pay`
|
|
||||||
|
|
||||||
**功能描述:** 为指定订单进行支付
|
|
||||||
|
|
||||||
**请求参数:**
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"orderId": "订单ID",
|
|
||||||
"payMethod": "支付方式"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 完整使用示例
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
import {
|
|
||||||
renewDevice,
|
|
||||||
createOrder,
|
|
||||||
getOrderList,
|
|
||||||
getOrderDetail,
|
|
||||||
cancelOrder,
|
|
||||||
payOrder
|
|
||||||
} from '@/api/order/order.js'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
methods: {
|
|
||||||
// 设备续费
|
|
||||||
async handleRenew() {
|
|
||||||
try {
|
|
||||||
const renewData = {
|
|
||||||
suitId: '3',
|
|
||||||
appId: '1',
|
|
||||||
payAmount: '365',
|
|
||||||
channelId: '2',
|
|
||||||
devId: '1'
|
|
||||||
}
|
|
||||||
|
|
||||||
const response = await renewDevice(renewData)
|
|
||||||
console.log('续费成功:', response)
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '续费成功',
|
|
||||||
icon: 'success'
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.error('续费失败:', error)
|
|
||||||
uni.showToast({
|
|
||||||
title: error.message || '续费失败',
|
|
||||||
icon: 'error'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 创建订单
|
|
||||||
async handleCreateOrder() {
|
|
||||||
try {
|
|
||||||
const orderData = {
|
|
||||||
deviceType: '设备类型',
|
|
||||||
period: '租赁周期',
|
|
||||||
amount: '订单金额'
|
|
||||||
}
|
|
||||||
|
|
||||||
const response = await createOrder(orderData)
|
|
||||||
console.log('创建订单成功:', response)
|
|
||||||
} catch (error) {
|
|
||||||
console.error('创建订单失败:', error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取订单列表
|
|
||||||
async handleGetOrderList() {
|
|
||||||
try {
|
|
||||||
const params = {
|
|
||||||
page: 1,
|
|
||||||
size: 10,
|
|
||||||
status: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
const response = await getOrderList(params)
|
|
||||||
console.log('订单列表:', response)
|
|
||||||
} catch (error) {
|
|
||||||
console.error('获取订单列表失败:', error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 错误处理
|
|
||||||
|
|
||||||
所有API接口都使用统一的错误处理机制:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
try {
|
|
||||||
const response = await apiFunction(params)
|
|
||||||
// 处理成功响应
|
|
||||||
} catch (error) {
|
|
||||||
// 处理错误
|
|
||||||
console.error('API调用失败:', error)
|
|
||||||
uni.showToast({
|
|
||||||
title: error.message || '操作失败',
|
|
||||||
icon: 'error'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 注意事项
|
|
||||||
|
|
||||||
1. 所有API调用都需要确保网络连接正常
|
|
||||||
2. 请求参数需要按照接口文档要求进行传递
|
|
||||||
3. 建议在调用API前进行参数验证
|
|
||||||
4. 错误处理应该包含用户友好的提示信息
|
|
||||||
5. 敏感操作(如支付)建议增加二次确认
|
|
||||||
|
|
||||||
## 更新日志
|
|
||||||
|
|
||||||
- **v1.0.0** - 初始版本,包含基础的订单管理功能
|
|
||||||
- 设备续费接口
|
|
||||||
- 订单创建、查询、取消、支付功能
|
|
||||||
27
api/order/myOrder.js
Normal file
27
api/order/myOrder.js
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取我的订单列表
|
||||||
|
* @returns {Promise} 返回订单列表数据
|
||||||
|
*/
|
||||||
|
export function getMyOrder(data) {
|
||||||
|
return request({
|
||||||
|
url: '/app/order/list',
|
||||||
|
method: 'GET',
|
||||||
|
loadingText: '加载用户订单中...',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单详情
|
||||||
|
* @param {string} id - 订单ID
|
||||||
|
* @returns {Promise} 返回订单详情数据
|
||||||
|
*/
|
||||||
|
export function getOrderDetail(id) {
|
||||||
|
return request({
|
||||||
|
url: `/app/order/${id}`,
|
||||||
|
method: 'GET',
|
||||||
|
loadingText: '加载订单详情中...',
|
||||||
|
})
|
||||||
|
}
|
||||||
12
pages.json
12
pages.json
|
|
@ -98,6 +98,18 @@
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "图片上传"
|
"navigationBarTitleText": "图片上传"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/myOrder/myOrder",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "我的订单"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/myOrder/orderDetail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "订单详细"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
|
|
|
||||||
5
pages/myOrder/OrderDetail.vue
Normal file
5
pages/myOrder/OrderDetail.vue
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<script setup></script>
|
||||||
|
|
||||||
|
<template></template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
76
pages/myOrder/myOrder.vue
Normal file
76
pages/myOrder/myOrder.vue
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<view v-for="item in list" :key="item.id" class="item">
|
||||||
|
<uni-card :extra="item.createTime" :title="item.typeName" @click="detail(item)"></uni-card>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { getMyOrder } from '@/api/order/myOrder.js'
|
||||||
|
|
||||||
|
import { onUnload, onReachBottom } from '@dcloudio/uni-app'
|
||||||
|
|
||||||
|
const list = ref([])
|
||||||
|
const noData = ref(false)
|
||||||
|
|
||||||
|
//定义data参数
|
||||||
|
const queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 12,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 页面加载时获取数据
|
||||||
|
onMounted(() => {
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
|
||||||
|
onReachBottom(() => {
|
||||||
|
if (noData.value) return
|
||||||
|
queryParams.pageNum++
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
const getList = async () => {
|
||||||
|
try {
|
||||||
|
let res = await getMyOrder(queryParams)
|
||||||
|
|
||||||
|
// 确保 res.data 存在且是数组
|
||||||
|
const newData = res?.rows || []
|
||||||
|
list.value = [...list.value, ...newData]
|
||||||
|
|
||||||
|
if (queryParams.pageSize > newData.length) noData.value = true
|
||||||
|
uni.setStorageSync('storyList', list.value)
|
||||||
|
console.log(list.value)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取订单列表失败:', error)
|
||||||
|
uni.showToast({
|
||||||
|
title: '获取订单列表失败',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onUnload(() => {
|
||||||
|
uni.removeStorageSync('storyList')
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-body {
|
||||||
|
font-size: 28rpx;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue
Block a user