混凝土运输管理微信小程序、替班
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.
 
 
 
 
 

271 lines
7.8 KiB

<template>
<view class="content">
<view class="mt20">
<view class="re-card-p32">
<view class="flex-sb">
<view class="re-from-label">写在前面</view>
</view>
<view class="re-card-context">
感谢您在替班平台发布订单如果您在订单环节中有什么疑问可以通过<span>小程序我的>联系客服</span>快捷联系/留言平台服务人员我们将7*24为您服务
</view>
</view>
<view class="re-card-p32">
<view class="re-from-line" @click="show=true">
<view class="re-from-label">施工设备</view>
<view class="b-relative">
<input v-model="form.carId" disabled="true" maxlength="8" class="re-from-input" placeholder="请选择施工设备" />
<image class="re-from-icon" src="/static/icons/icon06.png"></image>
</view>
</view>
<view class="re-from-line">
<view class="re-from-label">计划数量</view>
<view class="b-relative">
<input v-model="form.mi" type="number" maxlength="8" class="re-from-input" placeholder="请填写计划数量" />
<image class="re-from-icon" src="/static/icons/icon07.png"></image>
</view>
</view>
<view class="re-card-context" style="margin-top: -20rpx;">
<span>*注意:</span>
保障金将按照所选车辆(车段)、计划数量按照
(计算方式:<span>n*单价(泵车填写的计划数量是方量,搅拌车填写的计划数量是指趟数)向上取整,最低支付1000元</span>)
进行收取
</view>
<view class="h32"></view>
<view class="re-from-line">
<view class="re-from-label">合同属性</view>
<view class="b-relative">
<radio-group @change="changeType">
<radio class="re-radio re-width2" value="1" :checked="+form.type===1">合同单</radio>
<radio class="re-radio re-width2" value="2" :checked="+form.type===2">现金单</radio>
</radio-group>
</view>
</view>
<view class="re-from-line" @click="openSelect">
<view class="re-from-label">到场地点</view>
<view class="b-relative">
<input class="re-from-input" v-model="form.address" disabled="true"
placeholder="选择施工到场地点" />
<image class="re-from-icon" src="/static/icons/icon05.png"/>
</view>
</view>
<select-time @selected="changeInTime"></select-time>
<view class="re-from-line">
<view class="re-from-label">到场时间</view>
<view class="b-relative">
<select-time @selected="changeInTime">
<input v-model="form.inTime" disabled="true" class="re-from-input" placeholder="选择施工进场时间" />
</select-time>
<!-- <picker mode="date" start="2024-03-01" @change="changeInTime">
<input v-model="form.inTime" disabled="true" class="re-from-input" placeholder="选择施工进场时间" />
</picker> -->
<image class="re-from-icon" src="/static/icons/icon08.png"></image>
</view>
</view>
</view>
<view class="re-card-p32">
<view class="re-from-label">您可以在这里进行补充说明(选填)</view>
<textarea v-model="form.remark" class="re-card-textarea inpit" placeholder="请在此处留言或者备注其他特殊情况司机接单前可以看到订单留言">
</textarea>
</view>
<view class="re-end-pand">
<button @click="submit">提交审核</button>
</view>
</view>
<select-car :show="show" @success="addCar" @close="show=false"></select-car>
</view>
</template>
<script>
import SelectCar from '/components/select-car.vue'
import SelectTime from '/components/select-datetime.vue'
export default {
components: {
SelectCar
, SelectTime
},
data() {
return {
show: false,
form: {
type: "1",
carId: "",
mi: "",
inTime: "",
remark: "",
address: "",
addressSimple: "",
latitude: "",
longitude: "",
carNo: "",
carMi: "",
carImage: ""
},
addr: {
name:"",
address: "",
latitude: "",
longitude: ""
}
}
},
onLoad() {
},
methods: {
openSelect(){
uni.chooseLocation({
success:(res)=> {
console.log(res);
this.addr.name = res.name
this.addr.address = res.address
this.addr.latitude = res.latitude
this.addr.longitude = res.longitude
this.form.address = res.address
this.form.addressSimple = res.name
this.form.latitude = res.latitude
this.form.longitude = res.longitude
}
})
},
changeType(event){
this.form.type = event.detail.value
},
changeInTime(event){
console.log(event);
this.form.inTime = event
},
addCar(car){
console.log(car);
this.form.carId = car.id;
this.form.carImage = car.carimage;
this.form.carMi = car.mi;
this.form.carNo = car.carno || "湘A·--";
},
submit(){
if(!this.form.mi){
uni.showToast({ icon: "none", title: "请填写计划数量" })
return
}
if(!this.form.carId){
uni.showToast({ icon: "none", title: "请选择施工设备" })
return
}
if(!this.form.type){
uni.showToast({ icon: "none", title: "请勾选合同属性" })
return
}
if(!this.form.address){
uni.showToast({ icon: "none", title: "请选择施工到场地点" })
return
}
if(!this.form.inTime){
uni.showToast({ icon: "none", title: "请选择施工到场时间" })
return
}
this.doSubmit()
},
doSubmit(){
uni.showLoading({})
this.form.id = this.$utils.generateUUID()
this.form.status = -1
this.form.orderNo = "QJR" + new Date().getTime()
this.form.area = uni.getStorageSync("area")
this.form.enter_id = uni.getStorageSync("enter_id")
this.$httpPost("/api/order/push", this.form, (res) => {
console.log('[/order/push]', res);
if(res.data || res.data == 1){
setTimeout(()=>{
uni.hideLoading({})
uni.showToast({ icon: "none", title: "数据已提交" })
this.doPrice()
}, 1500)
}
})
},
doPrice(){
this.$httpGet("/api/mi/byName", {mi: this.form.carMi}, (res) => {
if(res.data && res.data.price){
let price = Math.ceil(this.form.mi*res.data.price*100)
if(price<100000) price = 100000;
console.log("计价结果", price);
this.doPay(price)
} else {
this.doPay(Math.ceil(this.form.mi*2))
}
})
},
doPay(price){
if (!uni.getStorageSync("openid")){
uni.showToast({ icon: "none", title: "拉起支付失败OPENID丢失" })
return
}
if (!this.form.orderNo){
this.form.orderNo = "qjr" + Date.now()
}
let data = {
openId: uni.getStorageSync("openid"),
outTradeNo: this.form.orderNo,
body: "bzj",
totalFee: price,
timestamp: ""
}
const ecsdoasdasdasdasdasdasdasdid = this.form.id
this.$httpGet("/wxpay/unifyOrderV3", data, (res) => {
console.log(res);
let resquest = {
provider: 'wxpay',
success: (res)=>{
console.log(res);
this.$httpGet("/api/order/payed", {id: ecsdoasdasdasdasdasdasdasdid}, (res) => {
uni.showToast({ icon: "none", title: '支付成功' })
setTimeout(() => {
uni.switchTab({
url:"/pages/index/order"
})
}, 1000)
})
},
fail:(err)=>{
console.log(err);
uni.showToast({ icon:"none", title: '支付失败,请重试' })
},
}
let a = Object.assign(resquest, res)
a.package = a.packageValue
console.log(a)
uni.requestPayment(a)
})
}
}
}
</script>
<style>
page {
background-color: #F5F5F5;
}
/deep/ uni-radio .uni-radio-input{
background-color: #F40000 !important;
border-color: #F40000 !important;
}
/deep/ uni-radio .uni-radio-input:empty{
background-color: #ffffff !important;
border-color: #888888 !important;
}
</style>