2023-08-31 10:44:45 +08:00

535 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="" style="position: relative;">
<view v-if='true'>
<u-loading-page :loading="showLoading"></u-loading-page>
</view>
<view class="" v-else>
<!-- 小组公司 -->
<view class="noCar" v-if='company_type==18'>
<!-- 申请 -->
<view class="" v-if="step==999">
<view class="">
你还没有所属车辆哦,请向镇公司申请用车或使用自有车辆并绑定系统
</view>
<view class="" style="margin: 20rpx 0;">
<u-button @tap="applycarFn" type="primary" style="background-color: #0122C7;border: none;"
class="btn">
申请用车</u-button>
</view>
<view class="">
<u-button @tap="show=true" type="primary" style="background-color: #0122C7;border: none;"
class="btn">
上传自有车辆</u-button>
</view>
<u-modal :show="show" @close="show=false" :showCancelButton="true" @confirm="upCarFn"
:closeOnClickOverlay="true" @cancel="show=false" title="车辆上传">
<view class="slot-content">
<u--input placeholder="请输入您的车牌号" v-model="carLicense"></u--input>
</view>
</u-modal>
</view>
<!-- 等待 -->
<view class="" v-if='step==-1'>
<!-- 上传自有车辆 -->
<view v-if="0">
<view class="loading">
<span>您已上传自用车辆,系统正在审核中,请耐心等待</span>
<span class="dots">...</span>
</view>
</view>
<!-- 申请用车 -->
<view v-else>
<view class="loading">
<span>你已提交用车申请后台正在加快处理中请耐心等待哦</span>
<span class="dots">...</span>
</view>
</view>
</view>
<!-- 审核结束 -->
<view class="" v-if="step==4">
<view class="">
你的申请于2022年12月12日被驳回
</view>
<view class="">
驳回理由:xxxxxxxxxx
</view>
<view class="">
请修改相应内容重新提交哦
</view>
<view class="">
<view class="" style="margin: 20rpx 0;">
<u-button @tap="applycarFn" type="primary" style="background-color: #0122C7;border: none;"
class="btn">
申请用车</u-button>
</view>
<view class="">
<u-button @tap="show=true" type="primary" style="background-color: #0122C7;border: none;"
class="btn">
上传自有车辆</u-button>
</view>
<u-modal :show="show" @close="show=false" @confirm="upCarFn" :closeOnClickOverlay="true"
title="车辆上传">
<view class="slot-content">
<u--input placeholder="请输入您的车牌号" v-model="carLicense"></u--input>
</view>
</u-modal>
</view>
</view>
</view>
<!-- 镇街公司 -->
<view v-if='company_type==16'>
<view class="info">
<text>可监管车辆数量 {{datas.monitor_num}}</text>
<view @click="showPop=true" class="not_leased">
<view class="">
租赁 {{datas.rent_num}}
</view>
<view class="triangle-up" v-if="datas.can_rent_num">
</view>
<view class="message_bottom" v-if="datas.can_rent_num">
可再租赁车辆:{{datas.can_rent_num}}
</view>
</view>
<text>自有车辆 {{datas.self_num}}</text>
</view>
<!-- 公告栏 -->
<view class="application_tit">
<view class="head" @click="navgo('/subpkg/property/agencyList')">
<text>签约申请</text>
<view style="display: flex;">
<text>更多 </text>
<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="content">
<view class="li" @click="navgo(`/subpkg/property/chosseCompany?id=${item.id}`)"
v-for="item,index in applicationList">
<view class="date">
{{item.create_time.slice(0, 10)}}
</view>
<view class="text">
{{item.village_company_name}}提出租赁车辆一台
</view>
<view class="detail">
<u-icon name="arrow-right"></u-icon>
</view>
</view>
</view>
</view>
<view class="personnel_list">
<view>
<view class="cards" v-for="item,index in dataList" :key="index"
@click="navgo(`/subpkg/property/vehicle_a?id=${item.car_id}`)">
<view class="cards_head">
<text>{{item.car_license}}</text>
</view>
<view class="cards_content">
<view class="right">
<!-- 已出租 -->
<view v-if="item.status==1">
<view class="li">
<text>使用人: </text>
<text> {{item.rent_company.master_name}}</text>
<view style="float: right;">
<text style="color: green;" v-if="item.type==1">自有车辆</text>
<text style="color: orange;" v-else>租赁车辆</text>
</view>
</view>
<view class="li">
<text>联系方式: </text>
<text>{{item.rent_company.master_phone}}</text>
</view>
<view class="li">
<text>所属公司: </text>
<text> {{item.rent_company.company_name}} </text>
</view>
<view class="li">
<text>签约时间: </text>
<text> {{item.rent_time}} </text>
</view>
</view>
<!-- 未出租 -->
<view class="" v-else>
<view class="li">
<text>车牌号: </text>
<text> {{item.car_license}}</text>
<view style="float: right;">
<text style="color: green;" v-if="item.type==1">自有车辆</text>
<text style="color: orange;" v-else>租赁车辆</text>
</view>
</view>
<view class="li">
暂未出租快去选择承租对象吧
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<u-modal :show="showPop" @close="showPop=false" @confirm="confirm" :closeOnClickOverlay="true"
:title="`请输入您需要租赁的车辆数量(上限为${datas.can_rent_num})`">
<view class="slot-content">
<u--input placeholder="请输入内容" type="number" v-model="newCarNum"></u--input>
</view>
</u-modal>
</view>
</view>
</view>
</template>
<script>
import {
getvehicleListApi,
getAgencyListApi,
leaseApi,
upVehicleApi,
getAgencyDetailApi,
getvehicleDetailApi,
villageCompanyApi
} from "@/api/property.js"
import Cache from '@/utils/cache';
// import mybtn from "@/components/mybtn/mybtn.vue"
import {
Toast
} from "../../libs/uniApi";
// Toast("请至少选择一辆车")
export default {
components: {
// mybtn
},
name: "vehicle",
data() {
return {
showLoading: true,
company_type: "",
// 1上传2审核3审核结束
step: 1,
applicationList: [1],
show: false,
carLicense: "",
showPop: false,
datas: {},
dataList: [],
newCarNum: "",
newcarTit: ""
};
},
onLoad() {
let type = (JSON.parse(Cache.get("USER_INFO")).company.company_type)
this.company_type = type
// 小组公司
if (type == 18) {
// getvehicleDetailApi().then(res => {})
villageCompanyApi().then(res => {
this.showLoading = false
this.step = res.data.status || 999
console.log(res.data.cars_info.id)
switch (this.step) {
case 3:
uni.navigateTo({
url: `/subpkg/property/vehicle_a?type=2`
})
// this.step =
break;
default:
break;
}
})
}
// 镇街公司
else {
getvehicleListApi().then(res => {
this.datas = res.data
res.data.apply.length >= 2 ? this.applicationList = res.data.apply : this.applicationList = res
.data.apply.slice(0, 2)
this.applicationList = res.data.apply
this.dataList = res.data.car_list
this.showLoading = false
})
// getAgencyListApi().then(res => {
// this.applicationList = res.data
// })
}
// if (true) {
// uni.navigateTo({
// url: '/subpkg/property/vehicle_a'
// })
// }
// getvehicleListApi().then(res => {
// console.log(res)
// // this.getvehicleList = res
// })
// getAgencyListApi().then(res => {
// // this.applicationList=res
// })
},
methods: {
// 申请车辆
applycarFn() {
upVehicleApi().then(res => {
Toast(res.msg)
})
this.step = 2
},
// 自有车辆
upCarFn() {
upVehicleApi({
license: this.carLicense
}).then(res => {
this.show = false
this.step = 2
})
// upVehicleApi({
// license: this.carLicense
// }).then(res => {
// this.show = false
// })
console.log(this.carLicense)
},
signFn() {
this.toDetail("/subpkg/property/chosseCompany")
},
confirm() {
if (!this.newCarNum) return
leaseApi({
num: Number(this.newCarNum)
}).then(res => {
this.newCarNum = ""
Toast(res.msg)
})
this.showPop = false
},
navgo(url) {
uni.navigateTo({
url
})
},
}
}
</script>
<style lang="scss">
.dots {
animation: loadingDots 1s infinite;
}
@keyframes loadingDots {
0% {
opacity: 0;
}
25% {
opacity: 0;
}
50% {
opacity: 1;
}
75% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.noCar {
padding: 50rpx;
margin-top: 30vh;
// position: absolute;
// width: 80vw;
// height: auto;
// position: absolute;
// top: 40vh;
// left: 50vw;
// transform: translate(-50%, -50%);
}
.info {
display: flex;
justify-content: space-around;
margin: 10rpx 0 0 0;
.not_leased {
display: flex;
align-items: center;
// background-color: red;
flex-direction: column;
}
.triangle-up {
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 10px solid rgba(0, 0, 0, .5);
}
.message_bottom {
background-color: rgba(0, 0, 0, .5);
color: white;
// transform: translateX();
padding: 20rpx;
border-radius: 30rpx;
}
}
.application_tit {
background-color: white;
padding: 20rpx;
width: 694rpx;
border-radius: 20rpx;
margin: 20rpx auto 0;
.head {
display: flex;
justify-content: space-between;
}
.content {
.li {
margin: 10rpx 0;
display: flex;
justify-content: space-between;
.date {
background-color: #FF7C32;
color: white;
padding: 0 10rpx;
border-radius: 15rpx // width: 170rpx;
}
.text {
// background-color: lightyellow;
max-width: 400rpx;
white-space: nowrap;
/* 让文本不换行 */
overflow: hidden;
/* 隐藏溢出的文本 */
text-overflow: ellipsis;
}
.detail {
// background-color: black;
// width: 50rpx;
}
}
}
}
.personnel_list {
padding: 28rpx 0;
margin-bottom: 130rpx;
.empty {
padding-top: 200rpx;
text-align: center;
.btn {
width: 30vw;
margin-top: 10rpx;
margin: 10rpx auto;
}
// height: 80vh;
// background-color: red;
}
.cards {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
background: #ffffff;
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;
background-color: $theme-oa-color;
color: white;
height: 100rpx;
display: flex;
justify-content: space-between;
}
.cards_content {
padding: 10rpx 28rpx;
display: flex;
justify-content: space-between;
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding-top: 20rpx;
width: 160rpx;
background-color: $theme-oa-color;
color: white;
border-radius: 40rpx;
.cir {
width: 120rpx;
height: 120rpx;
background-color: #ffffff;
margin-left: 25rpx;
border-radius: 120rpx;
position: relative;
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
.li {
margin: 10rpx 0;
width: 85vw;
.check_box {
// background-color: #ff0000;
// color: red;
}
text:nth-child(1) {
margin-right: 20rpx;
}
}
}
}
}
}
</style>