You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
8.3 KiB
291 lines
8.3 KiB
<template> |
|
<view class="created-body flex column"> |
|
<order-item v-if="orderData" :order-data='orderData' type="card"></order-item> |
|
<view class="oneflex"> |
|
<view class="created-form"> |
|
<view class="created-form-item flex ac"> |
|
<view class="created-form-item-label"><text style="color: red;">*</text>选择车牌:</view> |
|
<view @click="showSelect('plate')" class="created-form-item-value flex oneflex flex-end"> |
|
<view :class="submitData.plateNumber?'':'selectPlaceholder'" class="oneflex textov"> |
|
{{ submitData.plateNumber ||'请选择车牌'}} |
|
</view> |
|
<uni-icons type="right" size="20" color="#999999"></uni-icons> |
|
</view> |
|
</view> |
|
<view class="created-form-item flex ac"> |
|
<view class="created-form-item-label"> |
|
<text style="color: red;">*</text> |
|
选择同城司机: |
|
</view> |
|
<view @click="showSelect('drivers')" class="created-form-item-value oneflex"> |
|
<view class="created-form-item-value flex oneflex flex-end"> |
|
<view :class="submitData.driverNames?'':'selectPlaceholder'" class="oneflex textov"> |
|
{{ submitData.driverNames ||'请选择同城司机'}} |
|
</view> |
|
<uni-icons type="right" size="20" color="#999999"></uni-icons> |
|
</view> |
|
</view> |
|
</view> |
|
<view class="created-form-item flex ac"> |
|
<view class="created-form-item-label"><text style="color: red;">*</text>运费金额:</view> |
|
<view class="created-form-item-value oneflex"> |
|
<input type="digit" v-model="submitData.freight" placeholder="请输入运费金额" /> |
|
</view> |
|
</view> |
|
<view class="created-form-item flex ac"> |
|
<view class="created-form-item-label"><text style="color: red;">*</text>货物类型:</view> |
|
<view @click="showSelect('cargoType')" class="created-form-item-value oneflex"> |
|
<view class="created-form-item-value flex oneflex flex-end"> |
|
<view :class="submitData.cargoType?'':'selectPlaceholder'" class="oneflex textov"> |
|
{{ dataMark.CARGO_TYPE[submitData.cargoType]||'请选择货物类型'}} |
|
</view> |
|
<uni-icons type="right" size="20" color="#999999"></uni-icons> |
|
</view> |
|
</view> |
|
</view> |
|
<view class="created-form-item flex ac"> |
|
<view class="created-form-item-label"><text style="color: red;">*</text>发货日期:</view> |
|
<view class="created-form-item-value oneflex"> |
|
<uni-datetime-picker v-model="submitData.departureDate"> |
|
{{submitData.departureDate||'选择发货日期'}} |
|
</uni-datetime-picker> |
|
</view> |
|
</view> |
|
<view class="created-form-item flex jc column"> |
|
<view class="created-form-item-label"> |
|
备注: |
|
</view> |
|
<view class="created-form-item-value oneflex"> |
|
<textarea v-model="submitData.remark" placeholder="请输入备注" /> |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
<view class="created-footer flex around"> |
|
<view @click="back" class="cancel flex jc ac">返回</view> |
|
<view @click="submit" class="submit flex jc ac">提交</view> |
|
</view> |
|
<!-- 选择货物类型 --> |
|
<selectPopup @settle='cargoTypeSettle' :isMultiple="false" :options='cargoTypes' v-model="isCargoType"> |
|
<template #title>请选择货物类型</template> |
|
</selectPopup> |
|
<!-- 选择车牌号 --> |
|
<selectPopup @settle='platesSettle' :isMultiple="false" label='plateNumber' selectValue='plateNumber' |
|
:options='plates' v-model="isPlateSelect"> |
|
<template #title>请选择车牌号</template> |
|
</selectPopup> |
|
<!-- 选择司机 --> |
|
<selectPopup ref='selectDrivers' @settle='settle' label='customerName' selectValue='id' :options='drivers' |
|
v-model="isDriversSelect"> |
|
<template #title>请选择司机 </template> |
|
<template #search> |
|
<uni-easyinput @confirm='searchDrivers' suffixIcon="search" v-model="customerName" |
|
placeholder="输入司机名字搜索"></uni-easyinput> |
|
</template> |
|
</selectPopup> |
|
<u-toast ref="uToast"></u-toast> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import orderApi from '@/api/order.js' |
|
import orderItem from "@/components/orderItem/orderItem.vue"; |
|
import selectPopup from '../../../components/selectPopup/selectPopup.vue'; |
|
export default { |
|
components: { |
|
orderItem, |
|
selectPopup |
|
}, |
|
options: { |
|
styleIsolation: 'shared' |
|
}, |
|
data() { |
|
return { |
|
user: uni.getStorageSync('user'), |
|
dataMark: uni.getStorageSync('dataMark') || null, |
|
cargoTypes: [], |
|
isCargoType: false, |
|
customerName: '', |
|
isDriversSelect: false, |
|
drivers: [], |
|
isPlateSelect: false, |
|
plates: [], |
|
checkPage: { |
|
plateNumber: { |
|
tacitly: '', |
|
WrongText: '车牌不能为空' |
|
}, |
|
freight: { |
|
tacitly: '', |
|
custom:/^\d+(?=\.{0,1}\d+$|$)/, |
|
WrongText: '运费金额不能为空且必须为数字' |
|
}, |
|
cargoType: { |
|
tacitly: '', |
|
WrongText: '货物类型不能为空' |
|
}, |
|
departureDate: { |
|
tacitly: '', |
|
WrongText: '发货日期不能为空' |
|
} |
|
}, |
|
submitData: { |
|
"remark": "", |
|
"freight": "", |
|
"status": "1", |
|
"cargoType": "", |
|
"drivers": "", |
|
"driverNames": "", |
|
"departureDate": "", |
|
"orderType": "2", |
|
"plateNumber": "" |
|
}, |
|
orderData: null, |
|
} |
|
}, |
|
created() { |
|
this.init(); |
|
}, |
|
onLoad() {}, |
|
methods: { |
|
back() { |
|
uni.navigateBack() |
|
}, |
|
init() { |
|
this.getDrivers(); |
|
this.getPlates(); |
|
this.getCargoTypes(); |
|
this.settle() |
|
}, |
|
getCargoTypes() { |
|
let dataMark = this.dataMark; |
|
if (dataMark && dataMark.CARGO_TYPE) { |
|
this.cargoTypes = Object.keys(dataMark.CARGO_TYPE).map(item => { |
|
return { |
|
label: dataMark.CARGO_TYPE[item], |
|
value: item |
|
} |
|
}) |
|
} else { |
|
this.cargoTypes = [] |
|
} |
|
}, |
|
cargoTypeSettle(e) { |
|
if (e) { |
|
this.submitData.cargoType = e.value; |
|
} else { |
|
this.submitData.cargoType = ""; |
|
} |
|
}, |
|
platesSettle(e) { |
|
this.submitData.plateNumber = e ? e.plateNumber : ''; |
|
}, |
|
settle(drivers = []) { |
|
drivers = [{ |
|
customerName: this.user.name, |
|
id: this.user.driverId |
|
}, |
|
...drivers |
|
] |
|
this.submitData.driverNames = drivers.map(item => item.customerName).join(','); |
|
this.submitData.drivers = drivers.map(item => item.id).join(','); |
|
}, |
|
searchDrivers() { |
|
this.getDrivers() |
|
}, |
|
getDrivers() { |
|
orderApi.getCustomersByName({ |
|
customerName: this.customerName |
|
}).then(res => { |
|
this.drivers = res.data.filter(item => item.id !== this.user.driverId); |
|
}) |
|
}, |
|
getPlates() { |
|
orderApi.findByPlateNumber({ |
|
companyId:this.user.userCompany, |
|
"plateNumber": "" |
|
}).then(res => { |
|
this.plates = res.data; |
|
}) |
|
}, |
|
showSelect(e) { |
|
switch (e) { |
|
case 'plate': |
|
this.isPlateSelect = true; |
|
break; |
|
case 'drivers': |
|
this.isDriversSelect = true; |
|
break; |
|
case 'cargoType': |
|
this.isCargoType = true; |
|
break; |
|
default: |
|
break; |
|
} |
|
}, |
|
whenChanged(e) { |
|
console.log(JSON.stringify(e)) |
|
this.options = e |
|
}, |
|
change(e) { |
|
console.log("e:", e); |
|
}, |
|
submit() { |
|
let chenkResult = this.tool.checkFn(this.submitData, [], this.checkPage); |
|
if (chenkResult.result) { |
|
orderApi.createOrder(this.submitData).then(res => { |
|
if (res.code == 20000) { |
|
uni.showToast({ |
|
icon: "success", |
|
title: "操作成功" |
|
}) |
|
setTimeout(() => { |
|
uni.navigateBack() |
|
}, 1000) |
|
} |
|
}) |
|
} else { |
|
this.$refs.uToast.show({ |
|
type: 'error', |
|
icon: false, |
|
title: 'error', |
|
message: chenkResult.WrongText, |
|
}) |
|
} |
|
}, |
|
imageRemove(uploadImages = this.submitData.proofsList, index) { |
|
this.submitData.proofsList.splice(index, 1); |
|
}, |
|
previewImage(uploadImages = this.submitData.proofsList, index = undefined) { |
|
if (index !== undefined && uploadImages[index] !== undefined) { |
|
uni.previewImage({ |
|
current: index, |
|
urls: uploadImages.map(item => item.imageUrl), |
|
longPressActions: { |
|
success: function(data) {}, |
|
fail: function(err) {} |
|
} |
|
}); |
|
} else { |
|
console.log('数据错误=>', ...arguments) |
|
} |
|
}, |
|
uploadImagesFn() { |
|
this.tool.chooseImage((imageUrl) => { |
|
this.submitData.proofsList.push({ |
|
imageUrl |
|
}); |
|
}) |
|
}, |
|
|
|
} |
|
} |
|
</script> |
|
|
|
<style scoped lang="scss"> |
|
::v-deep .uni-select { |
|
border: none !important; |
|
} |
|
|
|
@import 'index.scss'; |
|
</style> |