This commit is contained in:
@@ -53,6 +53,20 @@ export default {
|
||||
return api.request(`/orders/${id}/refund`, 'PUT')
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新订单状态
|
||||
*/
|
||||
updateOrderStatus(id, status) {
|
||||
return api.request(`/orders/${id}/status`, 'PUT', { status })
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新订单(编辑)
|
||||
*/
|
||||
updateOrder(id, data) {
|
||||
return api.request(`/orders/${id}`, 'PUT', data)
|
||||
},
|
||||
|
||||
/**
|
||||
* 订单统计
|
||||
*/
|
||||
|
||||
@@ -164,13 +164,49 @@ export default {
|
||||
|
||||
// 其他
|
||||
paymentMethod: 'cash',
|
||||
remark: ''
|
||||
remark: '',
|
||||
|
||||
// 编辑模式
|
||||
editingOrderId: null
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
onLoad(options) {
|
||||
this.loadCustomers()
|
||||
this.loadProducts()
|
||||
if (options.orderId) {
|
||||
this.editingOrderId = options.orderId
|
||||
this.loadOrder(options.orderId)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadOrder(orderId) {
|
||||
try {
|
||||
const detail = await orderApi.getOrderDetail(orderId)
|
||||
const order = detail.order
|
||||
|
||||
// 设置订单信息
|
||||
if (order.customerId) {
|
||||
this.selectedCustomer = this.customers.find(c => c.customerId === order.customerId)
|
||||
}
|
||||
|
||||
this.orderItems = (detail.items || []).map(item => ({
|
||||
productId: item.productId,
|
||||
productName: item.productName,
|
||||
spec: item.productSpec,
|
||||
unit: item.unit,
|
||||
price: item.price,
|
||||
quantity: item.quantity
|
||||
}))
|
||||
|
||||
this.discountRate = order.discountRate
|
||||
this.remark = order.remark || ''
|
||||
this.paymentMethod = order.paymentMethod || 'cash'
|
||||
|
||||
this.calcAmount()
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadCustomers() {
|
||||
try {
|
||||
@@ -248,19 +284,25 @@ export default {
|
||||
}
|
||||
|
||||
try {
|
||||
const order = await orderApi.createOrder(data)
|
||||
let order
|
||||
if (this.editingOrderId) {
|
||||
order = await orderApi.updateOrder(this.editingOrderId, data)
|
||||
uni.showToast({ title: '订单更新成功', icon: 'success' })
|
||||
} else {
|
||||
order = await orderApi.createOrder(data)
|
||||
uni.showToast({ title: '订单创建成功', icon: 'success' })
|
||||
}
|
||||
|
||||
uni.showToast({ title: '订单创建成功', icon: 'success' })
|
||||
|
||||
// 跳转到订单详情或列表
|
||||
// 跳转到订单列表(未完成)
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/order/list`
|
||||
uni.switchTab({
|
||||
url: '/pages/order/list?status=0'
|
||||
})
|
||||
}, 1500)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,13 @@
|
||||
>
|
||||
全部
|
||||
</view>
|
||||
<view
|
||||
class="filter-item"
|
||||
:class="{ active: status === 0 }"
|
||||
@click="filterStatus(0)"
|
||||
>
|
||||
未完成
|
||||
</view>
|
||||
<view
|
||||
class="filter-item"
|
||||
:class="{ active: status === 1 }"
|
||||
@@ -67,7 +74,12 @@
|
||||
|
||||
<view class="order-footer">
|
||||
<text class="order-time">{{ formatTime(order.createdAt) }}</text>
|
||||
<text class="operator">{{ order.operatorName }}</text>
|
||||
<view class="order-actions" v-if="order.status === 0">
|
||||
<text class="action-btn confirm" @click.stop="confirmOrder(order)">确认</text>
|
||||
<text class="action-btn cancel" @click.stop="cancelOrder(order)">取消</text>
|
||||
<text class="action-btn edit" @click.stop="editOrder(order)">编辑</text>
|
||||
</view>
|
||||
<text class="operator" v-else>{{ order.operatorName }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -99,7 +111,10 @@ export default {
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
onLoad(options) {
|
||||
if (options.status) {
|
||||
this.status = parseInt(options.status)
|
||||
}
|
||||
this.loadOrders()
|
||||
},
|
||||
onReachBottom() {
|
||||
@@ -178,6 +193,7 @@ export default {
|
||||
},
|
||||
getStatusText(status) {
|
||||
const map = {
|
||||
0: '未完成',
|
||||
1: '已完成',
|
||||
2: '已取消',
|
||||
3: '退款中',
|
||||
@@ -188,6 +204,45 @@ export default {
|
||||
formatTime(time) {
|
||||
if (!time) return '-'
|
||||
return time.substring(0, 16).replace('T', ' ')
|
||||
},
|
||||
async confirmOrder(order) {
|
||||
uni.showModal({
|
||||
title: '确认订单',
|
||||
content: '确认完成后订单将变为已完成状态',
|
||||
success: async (res) => {
|
||||
if (res.confirm) {
|
||||
try {
|
||||
await orderApi.updateOrderStatus(order.orderId, 1)
|
||||
uni.showToast({ title: '已确认', icon: 'success' })
|
||||
this.loadOrders()
|
||||
} catch (e) {
|
||||
uni.showToast({ title: '操作失败', icon: 'none' })
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
async cancelOrder(order) {
|
||||
uni.showModal({
|
||||
title: '取消订单',
|
||||
content: '确定要取消该订单吗?',
|
||||
success: async (res) => {
|
||||
if (res.confirm) {
|
||||
try {
|
||||
await orderApi.cancelOrder(order.orderId)
|
||||
uni.showToast({ title: '已取消', icon: 'success' })
|
||||
this.loadOrders()
|
||||
} catch (e) {
|
||||
uni.showToast({ title: '操作失败', icon: 'none' })
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
editOrder(order) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/order/create?orderId=${order.orderId}`
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -357,6 +412,32 @@ export default {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.order-actions {
|
||||
display: flex;
|
||||
gap: 16rpx;
|
||||
}
|
||||
|
||||
.action-btn {
|
||||
font-size: 24rpx;
|
||||
padding: 8rpx 16rpx;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.action-btn.confirm {
|
||||
background: #3cc51f;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.action-btn.cancel {
|
||||
background: #fff1f0;
|
||||
color: #ff4d4f;
|
||||
}
|
||||
|
||||
.action-btn.edit {
|
||||
background: #e6f7ff;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.empty {
|
||||
padding: 100rpx;
|
||||
text-align: center;
|
||||
|
||||
Reference in New Issue
Block a user