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.
 
 
 
 

570 lines
14 KiB

<template>
<view class="oil_body">
<view class="oil_header">请选择分油类型</view>
<view class="sele_car">
<view @tap="seleFn(1)"
:style=" {zIndex: seleindex!=1? '1':'',transform:seleindex!=1? 'scale(0.9)':'',backgroundColor: seleindex!=1?'#66AFFF':''} "
class="car_itme car_itme_left">
<view v-if="seleindex==1" style="width: 100%;" class="car_body">
<view class="car_itme_title">
接收方:个人
</view>
<view class="img">
<view style="width: 79rpx; height: 81rpx;">
<image style="width: 100%;height: 100%;" src="@/static/cargs.png"></image>
</view>
<view style="width: 61rpx; height: 34rpx;">
<image style="width: 100%;height: 100%;" src="@/static/arrow.png"></image>
</view>
<view style="height: 81rpx;width: 73rpx;">
<image style="width: 100%;height: 100%;" src="@/static/carUser.png"></image>
</view>
</view>
<view class="car_itme_title">企业对个人</view>
</view>
<view v-if="seleindex!=1" style="left: 0; position: absolute;" class="hideTip">
接收方:个人
<image style="height: 141rpx; width: 100rpx; margin-top: 31rpx;" src="@/static/carsz.png"></image>
</view>
</view>
<view @tap="seleFn(2)"
:style="{zIndex: seleindex!=2? '1':'',transform:seleindex!=2? 'scale(0.9)':'',backgroundColor: seleindex!=2?'#66AFFF':''}"
class="car_itme car_itme_right">
<view v-if="seleindex==2" style="width: 100%;" class="car_body">
<view class="car_itme_title">
接收方:企业
</view>
<view class="img">
<view style="width: 79rpx; height: 81rpx;">
<image style="width: 100%;height: 100%;" src="@/static/cargs.png"></image>
</view>
<view style="width: 61rpx; height: 34rpx;">
<image style="width: 100%;height: 100%;" src="@/static/arrow.png"></image>
</view>
<view style="width: 79rpx; height: 81rpx;">
<image style="width: 100%;height: 100%;" src="@/static/cargs.png"></image>
</view>
</view>
<view class="car_itme_title">企业对企业</view>
</view>
<view v-if="seleindex!=2" style="right: 0; position: absolute;" class="hideTip">
接收方:企业
<image style="height: 141rpx; width: 100rpx; margin-top: 31rpx;" src="@/static/carsz.png"></image>
</view>
</view>
</view>
<view class="sele_Bar">
<view :style="{transform: barIndex==2? 'translateX( calc(100% - 20rpx) )' :'' ,background:barIndex==2? '#EC4645' :'' }"
class="move_item"></view>
<view @tap="seleBarFn(1)" :style="{color:barIndex==1? 'white' : ''}" class="sele_Bar_item">分油</view>
<view @tap="seleBarFn(2)" :style="{color:barIndex==2? 'white' : ''}" class="sele_Bar_item">圈回</view>
</view>
<view class="oli_list">
<view @tap='jump(1)' class="oli_list_item">
<view class="oli_list_item_body">
<view class="oli_list_item_body_left">
<view class="oli_list_item_body_left_img">
<image style="width: 100%; height: 100%;" src="@/static/fyjt.png"></image>
</view>
<view style="font-size: 28rpx;color: #333333;">
<view v-if="sendData!=null">
<view>{{sendData.name}}</view>
<view style="margin-top: 26rpx;color: #999999;">可用余额:¥{{ sendData.balance }}</view>
</view>
<view v-if="sendData==null">发起方</view>
</view>
</view>
<view>
<uni-icons type="right" size="20" color="#bbbbbb"></uni-icons>
</view>
</view>
</view>
<view @tap='jump(2)' class="oli_list_item">
<view class="oli_list_item_body">
<view class="oli_list_item_body_left">
<view class="oli_list_item_body_left_img">
<image style="width: 100%; height: 100%;" src="@/static/jsjt.png"></image>
</view>
<view style="font-size: 28rpx;color: #333333;">
<view style="font-size: 28rpx;color: #333333;">
<view v-if="receiveData!=null">
<view>
{{receiveData.name?receiveData.name?receiveData.name:'未设置':receiveData.userName?receiveData.userName:'未设置'}}
</view>
<view style="margin-top: 26rpx;color: #999999;">可用余额:¥{{receiveData.balance }}
</view>
</view>
<view v-if="receiveData==null">接收方</view>
</view>
</view>
</view>
<view>
<uni-icons type="right" size="20" color="#bbbbbb"></uni-icons>
</view>
</view>
</view>
</view>
<view class="oilInput">
<text class="oliPrice" style=""> 金额 </text>
<view
style="flex: 1; background-color: #F1F1F1; margin-left: 23rpx; height: 74rpx;align-items: center; display: flex; padding: 0 33rpx ;">
<input @input="inputFn" type="digit" v-model="postData.disAmount" style="flex: 1; margin-left: 47rpx; "
placeholder="请输入金额" />
<view
@tap=' barIndex==2? postData.disAmount = receiveData.balance : postData.disAmount = sendData.balance'
class="oilInputMax">MAX</view>
</view>
</view>
<button @tap='postFn' :style="{background:barIndex==2? '#EC4645' :''}"
class="oliButten">{{barIndex==2?'圈回':'分油'}}</button>
<popup @confirmFn='confirmFn' @closeFn='closeFn' v-model="iShow.seting">
<view slot="coment">
<view class="tiptext"> 是否{{barIndex==2?'圈回':'分油'}}给该司机/企业?</view>
</view>
</popup>
</view>
</template>
<script>
import oilDistribution from '@/api/oilDistribution'
import popup from '@/components/customPopup'
export default {
components: {
popup
},
data() {
return {
postData: {
disCompanyId: '',
disTagType: '',
disType: '',
customerId: '',
companyId: '',
disAmount: ''
},
iShow: {
seting: false
},
sendData: null,
receiveData: null,
seleindex: 1,
barIndex: 1,
transition: {
zIndex: '1',
// height: '323rpx',
// width: '397rpx',
transform: "scale(0.9)",
backgroundColor: '#66AFFF'
}
}
},
onLoad() {
let that = this
uni.$on('driverfn', function(e) {
console.log(e, '司机参数更新')
that.receiveData = e
that.postData.customerId = e.id
that.postData.companyId = ''
that.postData.disTagType = e.companyCustomerNature == 0 ? 'OUTSIDE' : 'ESELF_SUPPORT'
})
uni.$on('company', function(e) {
console.log(e.type, e)
that.receiveData = null
if (e.type == 'send') {
that.sendData = e
that.postData.disCompanyId = e.id
} else if (e.type == 'receive') {
that.receiveData = e
that.postData.companyId = e.id
that.postData.customerId = ''
that.postData.disTagType = 'SUBCOMPANY'
}
console.log(e, '公司参数更新')
})
},
methods: {
inputFn(e) {
// this.postData.disAmount = Number(this.postData.disAmount).toFixed(2)
if (this.postData.disAmount.indexOf('.') != -1) {
if (this.postData.disAmount.split('.')[1].length > 2) {
uni.showToast({
title: '最多保留小数点后两位',
icon: 'none'
})
this.$nextTick(function() {
this.postData.disAmount = Number(this.postData.disAmount).toFixed(2)
console.log(this.postData.disAmount)
})
}
}
},
confirmFn() {
if (this.barIndex == 2) {
if (Number(this.receiveData.balance) == 0) {
uni.showToast({
title: '圈回对象账户不能为零',
icon: "none"
})
return
}
if (Number(this.postData.disAmount) > Number(this.receiveData.balance)) {
uni.showToast({
title: '输入金额不能大于圈回对象总余额',
icon: "none"
})
return
}
} else {
if (Number(this.postData.disAmount) > Number(this.sendData.balance)) {
uni.showToast({
title: '输入金额不能大于总余额',
icon: "none"
})
return
}
if (Number(this.sendData.balance) == 0) {
uni.showToast({
title: '转账方金额不能为零',
icon: "none"
})
return
}
}
if (Number(this.postData.disAmount) == 0) {
uni.showToast({
title: '操作金额不能为零',
icon: "none"
})
return
}
// if (this.seleindex == 2 && this.sendData.id == this.receiveData) {
// uni.showToast({
// title: '双方账户不能重复',
// icon: "none"
// })
// return
// }
let that = this
this.postData.disType = this.barIndex == 1 ? 1 : -1
console.log(this.postData)
oilDistribution.oilDistributions(that.postData).then(res => {
if (res.code !== 20000) return
uni.showToast({
title: '操作成功',
icon: 'none'
})
this.iShow.seting = false
setTimeout(() => {
uni.redirectTo({
url: '../index/index'
})
}, 500)
});
},
closeFn() {
this.iShow.seting = false
console.log('取消')
},
postFn() {
if (this.sendData == null || this.receiveData == null) {
return
}
if (this.postData.disAmount == '' || this.postData.disAmount == 0) {
uni.showToast({
title: '金额不能为零',
icon: 'none'
})
return
}
this.iShow.seting = true
},
jump(e) {
switch (e) {
case 1:
// clc 写 clc 注
// uni.navigateTo({
// url: '/driverManagement/company/company?jsData=' + JSON.stringify({
// type:'send',
// data:''
// })
// })
uni.navigateTo({
url: '../newSeleCompany/newSeleCompany?jsData=' + JSON.stringify({
type: 'send',
data: ''
})
})
break
case 2:
// uni.navigateTo({
// url: '../newSeleDirver/newSeleDirver'
// })
if (this.sendData == null && this.seleindex == 1) {
uni.showToast({
title: '请先选择企业',
icon: 'none'
})
return
}
if (this.seleindex == 1) {
uni.navigateTo({
url: '../newSeleDirver/newSeleDirver?jsData=' + JSON.stringify(this.sendData),
fail(e) {
console.log(e)
}
})
// uni.navigateTo({
// url: '/driverManagement/seleDriver/seleDriver?jsData=' + JSON.stringify(this
// .sendData)
// })
} else {
// console.log(this.sendData,'66666')
// uni.navigateTo({
// url: '../newSeleCompany/newSeleCompany?jsData=' + JSON.stringify(
// {
// type:'receive',
// id:this.sendData.id
// })
// })
uni.navigateTo({
url: '../newSeleCompany/newSeleCompany?jsData=' + JSON.stringify({
type: 'receive',
data: this.sendData
}),
fail(e) {
console.log(e)
}
})
}
break
}
},
seleBarFn(e) {
this.barIndex = e
},
seleFn(e) {
this.seleindex = e
this.postData.disAmount = ''
this.receiveData = null
}
}
}
</script>
<style>
.tiptext {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: bold;
color: #999999;
text-align: center;
margin: 64rpx 0;
}
.oliButten {
margin-top: 48rpx;
background: #2866FF;
border-radius: 10rpx;
font-size: 36rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
.oilInputMax {
background: #BBBBBB;
border-radius: 21rpx;
padding: 11rpx 17rpx;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 500;
color: #FFFFFF;
margin-left: 25rpx;
}
.oliPrice {
font-size: 30rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
}
.oilInput {
height: 133rpx;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
padding: 0 20rpx;
align-items: center;
margin-top: 20rpx;
}
.car_itme_title {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 500;
color: #FFFFFF;
}
.oli_list_item_body_left_img {
width: 80rpx;
height: 73rpx;
margin-right: 33rpx;
}
.oli_list_item_body_left {
display: flex;
align-items: center;
flex: 1;
}
.oli_list_item_body {
border-bottom: 1px #F0F2FF solid;
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 20rpx;
/* padding: 20rpx 0; */
}
.oli_list_item {
flex: 1;
padding: 0 20rpx;
}
.oli_list {
height: 333rpx;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
flex-direction: column;
}
.img {
width: 100%;
height: 81rpx;
margin-top: 43rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 83rpx;
}
.car_body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
}
.move_item {
position: absolute;
left: 10rpx;
width: 50%;
height: 60rpx;
background: #2866FF;
border-radius: 10rpx;
display: flex;
align-items: center;
justify-content: center;
color: #999999;
z-index: 0;
transition: all .3s;
}
.sele_Bar_item {
/* width: 287rpx; */
flex: 1;
height: 60rpx;
/* background: #2866FF; */
border-radius: 10rpx;
display: flex;
align-items: center;
justify-content: center;
color: #999999;
z-index: 1;
transition: color .4s;
}
.sele_Bar {
/* background-color: #18B566; */
margin: 31rpx 40rpx;
padding: 10rpx;
display: flex;
position: relative;
background-color: #FFFFFF;
border-radius: 10px;
}
.hideTip {
/* background-color: #E43D33; */
width: calc(100% - (882rpx - (100vw - 62rpx)));
/* width: calc( 100vw - 62rpx - 441rpx ); */
height: 100%;
padding: 29rpx 38rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.car_itme_right {
right: 0;
/* top:0;
bottom: 0;
margin: auto; */
}
.car_itme_left {
left: 0;
/* top:0;
bottom: 0;
margin: auto; */
}
.car_itme {
/* opacity: .3; */
height: 359rpx;
width: 441rpx;
border-radius: 20rpx;
overflow: hidden;
position: absolute;
/* transition: width .4s,height .4s ,background .4s,z-index 0s ; */
transition: transform .4s, background .8s;
z-index: 2;
background-color: #2866FF;
box-shadow: 0px 3px 9px 0px rgba(88, 88, 88, 0.2);
color: white;
display: flex;
justify-content: center;
}
.sele_car {
margin-top: 25rpx;
display: flex;
flex-wrap: wrap;
position: relative;
height: 359rpx;
}
.oil_body {
padding: 42rpx 31rpx;
}
.oil_header {
font-size: 34rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
</style>