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:
@@ -6,11 +6,25 @@
|
||||
<text class="section-icon">👤</text>
|
||||
<text class="section-title">客户信息</text>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<text class="label">客户种类</text>
|
||||
<picker
|
||||
mode="selector"
|
||||
:range="typeOptions"
|
||||
range-key="label"
|
||||
@change="selectType"
|
||||
>
|
||||
<view class="picker-value">
|
||||
{{ selectedTypeLabel || '请选择客户种类' }}
|
||||
<text class="arrow">›</text>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<text class="label">客户</text>
|
||||
<picker
|
||||
mode="selector"
|
||||
:range="customers"
|
||||
:range="filteredCustomers"
|
||||
range-key="name"
|
||||
@change="selectCustomer"
|
||||
>
|
||||
@@ -166,6 +180,15 @@ import customerApi from '@/api/customer'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
// 客户种类
|
||||
typeOptions: [
|
||||
{ label: '顾客', value: 'customer' },
|
||||
{ label: '木匠', value: 'carpenter' },
|
||||
{ label: '装修公司', value: 'company' }
|
||||
],
|
||||
selectedType: 'customer',
|
||||
selectedTypeLabel: '顾客',
|
||||
|
||||
// 客户相关
|
||||
customers: [],
|
||||
selectedCustomer: null,
|
||||
@@ -188,7 +211,8 @@ export default {
|
||||
|
||||
// 编辑模式
|
||||
editingOrderId: null,
|
||||
tempCustomerId: null // 临时保存编辑时的客户ID
|
||||
tempCustomerId: null, // 临时保存编辑时的客户ID
|
||||
tempCustomerType: null // 临时保存编辑时的客户种类
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
@@ -204,14 +228,20 @@ export default {
|
||||
}, 500)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
filteredCustomers() {
|
||||
return this.customers.filter(c => c.type === this.selectedType)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadOrder(orderId) {
|
||||
try {
|
||||
const detail = await orderApi.getOrderDetail(orderId)
|
||||
const order = detail.order
|
||||
|
||||
// 先保存 customerId,等 customers 加载完成后匹配
|
||||
// 先保存 customerId,等客户列表加载完成后再匹配
|
||||
this.tempCustomerId = order.customerId
|
||||
this.tempCustomerType = order.customerType
|
||||
|
||||
this.orderItems = (detail.items || []).map(item => ({
|
||||
productId: item.productId,
|
||||
@@ -238,6 +268,13 @@ export default {
|
||||
matchCustomer() {
|
||||
if (this.tempCustomerId && this.customers.length > 0) {
|
||||
this.selectedCustomer = this.customers.find(c => c.customerId === this.tempCustomerId)
|
||||
if (this.tempCustomerType) {
|
||||
this.selectedType = this.tempCustomerType
|
||||
const typeOption = this.typeOptions.find(t => t.value === this.tempCustomerType)
|
||||
if (typeOption) {
|
||||
this.selectedTypeLabel = typeOption.label
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async loadCustomers() {
|
||||
@@ -259,7 +296,14 @@ export default {
|
||||
}
|
||||
},
|
||||
selectCustomer(e) {
|
||||
this.selectedCustomer = this.customers[e.detail.value]
|
||||
this.selectedCustomer = this.filteredCustomers[e.detail.value]
|
||||
},
|
||||
selectType(e) {
|
||||
const idx = e.detail.value
|
||||
this.selectedType = this.typeOptions[idx].value
|
||||
this.selectedTypeLabel = this.typeOptions[idx].label
|
||||
// 切换种类后清除已选客户
|
||||
this.selectedCustomer = null
|
||||
},
|
||||
goToSelectProduct() {
|
||||
uni.navigateTo({ url: '/pages/product/select' })
|
||||
|
||||
Reference in New Issue
Block a user