feat: 订单查询增加合并订单功能,选择已完成订单合并
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -42,7 +42,7 @@
|
|||||||
</scroll-view>
|
</scroll-view>
|
||||||
|
|
||||||
<!-- 已选客户的订单列表 -->
|
<!-- 已选客户的订单列表 -->
|
||||||
<view class="orders-section" v-if="selectedCustomer && orders.length > 0">
|
<view class="orders-section" v-if="selectedCustomer">
|
||||||
<view class="orders-header">
|
<view class="orders-header">
|
||||||
<text class="orders-title">{{ selectedCustomer.name }} 的订单</text>
|
<text class="orders-title">{{ selectedCustomer.name }} 的订单</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -51,8 +51,13 @@
|
|||||||
v-for="order in orders"
|
v-for="order in orders"
|
||||||
:key="order.orderId"
|
:key="order.orderId"
|
||||||
class="order-card"
|
class="order-card"
|
||||||
@click="viewDetail(order)"
|
:class="{ 'selected': merging && order.status === 1 && selectedOrders.includes(order.orderId) }"
|
||||||
|
@click="toggleOrderSelection(order)"
|
||||||
>
|
>
|
||||||
|
<view class="card-checkbox" v-if="merging && order.status === 1">
|
||||||
|
<text>{{ selectedOrders.includes(order.orderId) ? '☑' : '☐' }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="card-content" :class="{ 'with-checkbox': merging && order.status === 1 }">
|
||||||
<view class="card-header">
|
<view class="card-header">
|
||||||
<text class="order-no">{{ order.orderNo }}</text>
|
<text class="order-no">{{ order.orderNo }}</text>
|
||||||
<text class="order-status" :class="getStatusClass(order.status)">
|
<text class="order-status" :class="getStatusClass(order.status)">
|
||||||
@@ -64,8 +69,30 @@
|
|||||||
<text class="order-time">{{ formatTime(order.createdAt) }}</text>
|
<text class="order-time">{{ formatTime(order.createdAt) }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<!-- 合并订单按钮 -->
|
||||||
|
<view class="bottom-bar" v-if="selectedCustomer && orders.length > 0">
|
||||||
|
<button
|
||||||
|
class="merge-btn"
|
||||||
|
@click="startMerge"
|
||||||
|
v-if="!merging"
|
||||||
|
>
|
||||||
|
合并订单
|
||||||
|
</button>
|
||||||
|
<view class="merge-actions" v-else>
|
||||||
|
<button class="cancel-btn" @click="cancelMerge">取消</button>
|
||||||
|
<button
|
||||||
|
class="confirm-btn"
|
||||||
|
@click="confirmMerge"
|
||||||
|
:disabled="selectedOrders.length < 2"
|
||||||
|
>
|
||||||
|
确定 ({{ selectedOrders.length }})
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -80,7 +107,10 @@ export default {
|
|||||||
customers: [],
|
customers: [],
|
||||||
selectedCustomer: null,
|
selectedCustomer: null,
|
||||||
orders: [],
|
orders: [],
|
||||||
loading: false
|
loading: false,
|
||||||
|
// 合并订单相关
|
||||||
|
merging: false,
|
||||||
|
selectedOrders: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -113,6 +143,33 @@ export default {
|
|||||||
clearSelection() {
|
clearSelection() {
|
||||||
this.selectedCustomer = null
|
this.selectedCustomer = null
|
||||||
this.orders = []
|
this.orders = []
|
||||||
|
this.merging = false
|
||||||
|
this.selectedOrders = []
|
||||||
|
},
|
||||||
|
toggleOrderSelection(order) {
|
||||||
|
if (!this.merging || order.status !== 1) return
|
||||||
|
const index = this.selectedOrders.indexOf(order.orderId)
|
||||||
|
if (index > -1) {
|
||||||
|
this.selectedOrders.splice(index, 1)
|
||||||
|
} else {
|
||||||
|
this.selectedOrders.push(order.orderId)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
startMerge() {
|
||||||
|
this.merging = true
|
||||||
|
this.selectedOrders = []
|
||||||
|
},
|
||||||
|
cancelMerge() {
|
||||||
|
this.merging = false
|
||||||
|
this.selectedOrders = []
|
||||||
|
},
|
||||||
|
confirmMerge() {
|
||||||
|
if (this.selectedOrders.length < 2) {
|
||||||
|
uni.showToast({ title: '请至少选择2个订单', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
uni.showToast({ title: '选中 ' + this.selectedOrders.length + ' 个订单', icon: 'success' })
|
||||||
|
// TODO: 后端合并订单逻辑
|
||||||
},
|
},
|
||||||
async loadOrders() {
|
async loadOrders() {
|
||||||
if (!this.selectedCustomer) return
|
if (!this.selectedCustomer) return
|
||||||
@@ -286,6 +343,25 @@ export default {
|
|||||||
.order-card {
|
.order-card {
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
border-bottom: 1rpx solid #f0f0f0;
|
border-bottom: 1rpx solid #f0f0f0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card.selected {
|
||||||
|
background: #e6f7ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-checkbox {
|
||||||
|
margin-right: 16rpx;
|
||||||
|
font-size: 36rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content.with-checkbox {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
@@ -330,4 +406,49 @@ export default {
|
|||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bottom-bar {
|
||||||
|
padding: 20rpx;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.merge-btn {
|
||||||
|
width: 100%;
|
||||||
|
height: 88rpx;
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 44rpx;
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.merge-actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancel-btn, .confirm-btn {
|
||||||
|
flex: 1;
|
||||||
|
height: 88rpx;
|
||||||
|
border-radius: 44rpx;
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancel-btn {
|
||||||
|
background: #f5f5f5;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.confirm-btn {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.confirm-btn[disabled] {
|
||||||
|
background: #ccc;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user