完善车辆管理模块

This commit is contained in:
2023-08-16 17:29:17 +08:00
parent c27a99d0ac
commit 1a119820dd
23 changed files with 389 additions and 92 deletions

View File

@ -5,11 +5,11 @@ export function supplierVehicleList(data){
return request({ return request({
url:'/supplierAppV2/dispatchApp/user/supplierVehicleList', url:'/supplierAppV2/dispatchApp/user/supplierVehicleList',
method:'POST', method:'POST',
contentTye:'application/json', contentType:'application/json',
data data
}) })
} }
//添加或修改车辆信息 //编辑车辆信息
export function saveVehicle(data){ export function saveVehicle(data){
return request({ return request({
url:'/supplierAppV2/dispatchApp/user/saveVehicle', url:'/supplierAppV2/dispatchApp/user/saveVehicle',
@ -42,4 +42,22 @@ export function vehicleTypeList(){
url:'/supplierAppV2/dispatchApp/user/vehicleTypeList', url:'/supplierAppV2/dispatchApp/user/vehicleTypeList',
method:'POST' method:'POST'
}) })
}
//司机列表
export function driverList(data){
return request({
url:'/supplierAppV2/dispatchApp/user/driverList',
method:'POST',
contentType:'application/json',
data
})
}
//编辑司机信息
export function saveDriver(data){
return request({
url:'/supplierAppV2/dispatchApp/user/saveDriver',
method:'POST',
contentType:'application/json',
data
})
} }

BIN
src/assets/addImg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
src/assets/empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -55,12 +55,12 @@ export default {
@include widHeiMar(6px,6px,3px); @include widHeiMar(6px,6px,3px);
} }
::v-deep .van-field__label{ ::v-deep .van-field__label{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
margin-left: 10px; margin-left: 10px;
} }
::v-deep .van-field__control{ ::v-deep .van-field__control{
color: #323643; color: #323643;
@include fontWeightSize(500,13px); @include fontWeightSize(bold,13px);
} }
</style> </style>

View File

@ -29,7 +29,7 @@
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
@include bgFontColor(#FFFFFF,#354D93); @include bgFontColor(#FFFFFF,#354D93);
@include fontWeightSize(500,15px); @include fontWeightSize(bold,15px);
@include whLin(88%,48px); @include whLin(88%,48px);
} }
</style> </style>

View File

@ -38,7 +38,7 @@ export default {
@include whLin(152px,39px); @include whLin(152px,39px);
border-radius: 5px; border-radius: 5px;
color: #FFFFFF; color: #FFFFFF;
@include fontWeightSize(500,14px) @include fontWeightSize(bold,14px)
} }
.cancel{ .cancel{
background: #9EA7C0; background: #9EA7C0;

View File

@ -39,10 +39,18 @@ const routes = [
title: '补结算单' title: '补结算单'
} }
}, },
{
path: "/workOrderReconciliation",
name: "workOrderReconciliation",
component:()=>import('@/views/workOrder/workOrderReconciliation.vue'),
meta: {
title: '工单对账'
}
},
{ {
path: "/accounting", path: "/accounting",
name: 'accountingView', name: 'accountingView',
component: () => import('@/views/index/accounting'), component: () => import('@/views/workOrder/accounting.vue'),
meta: { meta: {
title: '记账' title: '记账'
} }
@ -50,7 +58,7 @@ const routes = [
{ {
path: "/reAccounting", path: "/reAccounting",
name: 'reAccountingView', name: 'reAccountingView',
component: () => import('@/views/index/reAccounting'), component: () => import('@/views/workOrder/reAccounting.vue'),
meta: { meta: {
title: '重新记账' title: '重新记账'
} }

View File

@ -29,24 +29,24 @@ select{
overflow-y: auto; overflow-y: auto;
} }
::v-deep .van-nav-bar__content{ ::v-deep .van-nav-bar__content{
background-color: #354683 ; background-color: #2C395F ;
} }
::v-deep .van-nav-bar__title{ ::v-deep .van-nav-bar__title{
color: #fff; color: #fff;
opacity: .7; opacity: .7;
font-weight: 500; font-weight: bolder;
font-size: 15px; font-size: 18px;
} }
::v-deep .van-nav-bar .van-icon{ ::v-deep .van-nav-bar .van-icon{
color: #fff; color: #fff;
opacity: .7; opacity: .7;
font-size: 15px; font-size: 18px;
width: 6px; width: 6px;
height: 13px; height: 13px;
} }
::v-deep .van-radio__label{ ::v-deep .van-radio__label{
margin-left: 0; margin-left: 0;
font-weight: 400; font-weight: normal;
font-size: 14px; font-size: 14px;
//@include fontWeightSize(400,14px); //@include fontWeightSize(400,14px);
color: #000000; color: #000000;

View File

@ -14,8 +14,9 @@ service.interceptors.request.use(
config => { config => {
config.data = config.contentType ? config.data : qs.stringify(config.data) config.data = config.contentType ? config.data : qs.stringify(config.data)
config.headers['Content-Type'] = config.contentType || 'application/x-www-form-urlencoded' config.headers['Content-Type'] = config.contentType || 'application/x-www-form-urlencoded'
const urlParams = new URLSearchParams(window.location.search); // const urlParams = new URLSearchParams(window.location.search);
const token = urlParams.get('token'); // const token = urlParams.get('token');
let token='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJzemwiLCJhdWQiOlsic3VwcGxpZXItYXBwIl0sIm5iZiI6MTY5MjE2ODQ3OCwidXNlcl9pbmZvIjp7InVzZXJJZCI6NTQ1ODUsInBob25lIjoiMTc2MzAwMzU2NTgiLCJuYW1lIjoi5bCP5a6LIiwic3VwcGxpZXJOYW1lIjoi5LiK5rW35a6J55WFQSIsInN1cHBsaWVySWQiOjExMjgsInN1cHBsaWVyVHlwZSI6MSwidXNlcm5hbWUiOiJzemwiLCJ1c2VyVHlwZSI6IkFQUCIsImF1dGhvcml0aWVzIjpbXX0sInNjb3BlIjpbImFsbCJdLCJpc3MiOiJodHRwczovL3Npbm9hc3Npc3QuY29tIiwiZXhwIjoxNjkyMjU0ODc4LCJpYXQiOjE2OTIxNjg0Nzh9.yVreEsJqwcEy6jALrhqQ9tasuBKqEE-y3fq_TXfaspE'
config.headers['Authorization'] = `${token}`; config.headers['Authorization'] = `${token}`;
return config return config
}, },

View File

@ -22,6 +22,12 @@ export const myMixins = {
document.execCommand('copy'); document.execCommand('copy');
window.getSelection().removeAllRanges(); // 清除选择内容的高亮状态 window.getSelection().removeAllRanges(); // 清除选择内容的高亮状态
this.$toast('复制成功') this.$toast('复制成功')
},
goBack(){//h5返回APP
window.android.sendMessage("goBack");
},
h5GoBack(){
this.$router.back();
} }
} }
} }

View File

@ -141,7 +141,7 @@ export default {
box-sizing: border-box; box-sizing: border-box;
padding-right: 25px; padding-right: 25px;
.titleType{ .titleType{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
} }
.isJoin{ .isJoin{
@ -160,7 +160,7 @@ export default {
input{ input{
border: none; border: none;
text-align: right; text-align: right;
@include fontWeightSize(500,13px); @include fontWeightSize(bold,13px);
opacity: .5; opacity: .5;
} }

View File

@ -1,5 +1,23 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="navBar">
<van-nav-bar
title="司机管理"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="goPage"
>
<template slot="right">
<div class="rightWrap" @click="addDriver">
<img src="@/assets/addImg.png" />
<span class="addTxt">添加</span>
</div>
</template>
</van-nav-bar>
</div>
<div class="itemWrap"> <div class="itemWrap">
<div class="name-status"> <div class="name-status">
<div class="namephone">王小微 / 15234345656</div> <div class="namephone">王小微 / 15234345656</div>
@ -70,6 +88,7 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
@import '@/styles/mixin.scss'; @import '@/styles/mixin.scss';
@import "@/styles/common.scss";
.wrap { .wrap {
background: #F4F5F7; background: #F4F5F7;
@ -77,6 +96,28 @@ export default {
padding: 13px; padding: 13px;
@include wh(100%, 100%); @include wh(100%, 100%);
} }
.navBar{
//height: 46px;
margin-bottom: 46px;
.rightWrap{
width: 50px;
height: 20px;
border-radius: 10px;
opacity: 0.7;
border: 1px solid #FFFFFF;
@include flexCenter;
justify-content: center;
img{
@include widHeiMar(9px,8px,4px);
}
.addTxt{
@include fontWeightSize(bolder,11px);
opacity: .7;
color: #FFFFFF;
}
}
}
.itemWrap { .itemWrap {
@include wh(100%, 104px); @include wh(100%, 104px);
@ -112,7 +153,7 @@ export default {
justify-content: space-between; justify-content: space-between;
.namephone { .namephone {
@include fontWeightSize(500, 14px) @include fontWeightSize(bold, 14px)
} }
.twoBtn { .twoBtn {
@ -121,7 +162,7 @@ export default {
width: 48px; width: 48px;
@include all-height(20px); @include all-height(20px);
border-radius: 3px; border-radius: 3px;
@include fontWeightSize(500, 12px) @include fontWeightSize(bold, 12px)
} }
.del { .del {

View File

@ -8,7 +8,7 @@
:border="false" :border="false"
:fixed="true" :fixed="true"
:safe-area-inset-top="true" :safe-area-inset-top="true"
@click-left="onClickLeft" @click-left="h5GoBack"
/> />
</div> </div>
<div class="contentWrap"> <div class="contentWrap">
@ -26,9 +26,7 @@ export default {
name: "invoicingDetail", name: "invoicingDetail",
mixins:[myMixins], mixins:[myMixins],
methods:{ methods:{
onClickLeft(){
this.goPage('invoicingNotify')
}
} }
} }
</script> </script>

View File

@ -1,5 +1,16 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="navBar">
<van-nav-bar
title="工单对账"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="goBack"
/>
</div>
<div class="itemWrap" v-for="(item,index) in 3" :key="index"> <div class="itemWrap" v-for="(item,index) in 3" :key="index">
<div class="item line1"> <div class="item line1">
<div class="itemTime"> <div class="itemTime">
@ -46,18 +57,24 @@ export default {
checkDetail(index){ checkDetail(index){
console.log("查看详情"+index) console.log("查看详情"+index)
} },
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import "@/styles/mixin.scss"; @import "@/styles/mixin.scss";
@import "@/styles/common.scss";
.wrap{ .wrap{
@include wh(100%,100%); @include wh(100%,100%);
background-color: #F4F5F7; background-color: #F4F5F7;
overflow-y: auto; overflow-y: auto;
} }
.navBar{
height: 46px;
//margin-bottom: 46px;
}
.itemWrap{ .itemWrap{
background: #FFFFFF; background: #FFFFFF;
@include wh(100%,194px); @include wh(100%,194px);

View File

@ -106,7 +106,7 @@ export default {
} }
.title { .title {
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
} }

View File

@ -132,7 +132,7 @@ export default {
@include wh(100%, 198px) @include wh(100%, 198px)
} }
.title { .title {
@include fontWeightSize(500, 14px); @include fontWeightSize(bold, 14px);
color: #323643; color: #323643;
opacity: 0.66; opacity: 0.66;
} }
@ -149,7 +149,7 @@ export default {
justify-content: space-between; justify-content: space-between;
line-height: 37px; line-height: 37px;
.blueColor{ .blueColor{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #4682FE; color: #4682FE;
} }
.alignRight{ .alignRight{
@ -161,7 +161,7 @@ export default {
} }
.rightInputMeters { .rightInputMeters {
margin-right: 13px; margin-right: 13px;
@include fontWeightSize(500, 13px); @include fontWeightSize(bold, 13px);
color: #323643; color: #323643;
opacity: .5; opacity: .5;
input { input {

View File

@ -1,9 +1,14 @@
<template> <template>
<div class="wrap" > <div v-if="show" style="width:100%;height:100%;background: #F1F5F9;;display: flex;align-items: center;justify-content: center">
<ul id="dataList" class="dataList"> <img src="@/assets/empty.png" style="width:65%;">
</div>
<div class="wrap" v-else>
<ul id="dataList" class="dataList" >
<li class="item" v-for="(item,i) in todolist" :key="i"> <li class="item" v-for="(item,i) in todolist" :key="i">
<div class="left"> <div class="left">
<div class="repairName"><span class="name">{{ item.toDoType.label }}</span><span class="carCode">{{item.plateNumber ? item.plateNumber : "无"}}</span></div> <div class="repairName">
<span class="name">{{ item.toDoType.label }}</span>
<span class="carCode">{{item.plateNumber ? item.plateNumber : "无"}}</span></div>
<div class="addressName">{{ item.address }}</div> <div class="addressName">{{ item.address }}</div>
<div class="time">{{item.toDoTime}} &nbsp;&nbsp;{{item.userName}}</div> <div class="time">{{item.toDoTime}} &nbsp;&nbsp;{{item.userName}}</div>
</div> </div>
@ -23,17 +28,23 @@ export default {
data(){ data(){
return{ return{
todolist:[], todolist:[],
show:false
} }
}, },
mounted() { mounted() {
// this.getList() this.getList()
}, },
methods:{ methods:{
async getList(){ async getList(){
let result=await getToDoList(); let result=await getToDoList();
if(result.code === 200){ if(result.code === 200){
this.todolist=result.data; this.todolist=result.data;
console.log("this.todolist",this.todolist) if(this.todolist.length === 0){
this.show=true
}else {
this.show=false
}
console.log("this.todolist",this.todolist.length)
} }
}, },
async noPass(item){ async noPass(item){
@ -81,7 +92,7 @@ export default {
} }
.repairName { .repairName {
font-weight: 500; font-weight: bold;
} }
.name { .name {
@ -105,7 +116,7 @@ export default {
button { button {
padding: 2px 8px; padding: 2px 8px;
@include fontWeightSize(500,12px); @include fontWeightSize(bold,12px);
border-radius: 3px; border-radius: 3px;
} }

View File

@ -1,26 +1,25 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="navBar">
<van-nav-bar
:title="id ? '修改车辆信息' : '添加车辆'"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="h5GoBack"
/>
</div>
<div class="addContentWrap"> <div class="addContentWrap">
<cell-group label="车牌号" placeholder="请输入车牌号" @input="getPLateNum(carNum)" v-model="carNum" /> <cell-group label="车牌号" placeholder="请输入车牌号" @input="getPLateNum(carNum)" v-model="carNum" />
<!-- <div class="itemContent">-->
<!-- <div class="titleType">-->
<!-- <img class="startImg" src="@/assets/start.png" />-->
<!-- <span>车牌号</span>-->
<!-- </div>-->
<!-- <div class="checkContent">-->
<!-- <input placeholder="请输入车牌号" />-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="lineBot"></div>-->
<div class="itemContent"> <div class="itemContent">
<div class="titleType"> <div class="titleType">
<img class="startImg" src="@/assets/start.png" /> <img class="startImg" src="@/assets/start.png" />
<span>车辆类型</span> <span>车辆类型</span>
</div> </div>
<select id="mySelect" style="width: 80px"> <select id="mySelect" style="width: 70px" v-model="selectedOption">
<option value="一般平板">一般平板</option> <option v-for="(item,index) in typeList" :key="index" :value="index">{{item}}</option>
<option value="小轿车">小轿车</option>
<option value="大卡车">大卡车</option>
</select> </select>
</div> </div>
<div class="lineBot"></div> <div class="lineBot"></div>
@ -30,8 +29,8 @@
<span>是否参与中道聚合</span> <span>是否参与中道聚合</span>
</div> </div>
<div class="isJoin"> <div class="isJoin">
<van-radio-group v-model="radio3" @change="isChange" class="joinWrap"> <van-radio-group v-model="isJoin" @change="isChange" class="joinWrap">
<van-radio name="参与" style="margin-right: 26px"> <van-radio :name="1" style="margin-right: 26px">
参与 参与
<img <img
slot="icon" slot="icon"
@ -39,7 +38,7 @@
:src="props.checked ? activeIcon : inactiveIcon" :src="props.checked ? activeIcon : inactiveIcon"
> >
</van-radio> </van-radio>
<van-radio name="不参与"> <van-radio :name="0">
不参与 不参与
<img <img
slot="icon" slot="icon"
@ -63,7 +62,7 @@
<span class="service">拖车服务:</span> <span class="service">拖车服务:</span>
<span class="line"></span> <span class="line"></span>
</div> </div>
<van-radio-group v-model="radio" @change="change" class="radioWrap"> <van-radio-group v-model="trailerService" @change="change" class="radioWrap">
<van-radio name="故障——平板拖车" class="item"> <van-radio name="故障——平板拖车" class="item">
故障平板拖车 故障平板拖车
<img <img
@ -87,7 +86,7 @@
<span class="service">小修服务:</span> <span class="service">小修服务:</span>
<span class="line"></span> <span class="line"></span>
</div> </div>
<van-radio-group v-model="radio2" @change="change2" class="radioWrap"> <van-radio-group v-model="smallRepairService" @change="change2" class="radioWrap">
<van-radio name="换胎" class="item"> <van-radio name="换胎" class="item">
换胎 换胎
<img <img
@ -130,6 +129,7 @@
<script> <script>
import {myMixins} from "@/utils/myMixins" import {myMixins} from "@/utils/myMixins"
import {vehicleTypeList,saveVehicle,getInfoById} from "@/api/mine"
import TwoCommonBtn from "@/components/twoBtnCommon.vue" import TwoCommonBtn from "@/components/twoBtnCommon.vue"
import CellGroup from "@/components/cellGroup.vue"; import CellGroup from "@/components/cellGroup.vue";
export default { export default {
@ -137,40 +137,99 @@ export default {
mixins:[myMixins], mixins:[myMixins],
data(){ data(){
return{ return{
radio: '故障——平板拖车', trailerService: '',//拖车服务
radio2: '换胎', smallRepairService: '',//小修服务
radio3:'参与', isJoin:'',//是否参与
activeIcon: require('@/assets/check.png'), activeIcon: require('@/assets/check.png'),
inactiveIcon: require('@/assets/uncheck.png'), inactiveIcon: require('@/assets/uncheck.png'),
carNum:"", carNum:"",//车牌号
typeList:[],//车辆类型列表
selectedOption:'1',//车辆类型
id:'',//车辆Id
serviceIds:''//车辆服务种类
} }
}, },
mounted() { created() {
this.id=this.$route.query?.id || ''
},
async mounted() {
const selectElement = document.getElementById('mySelect'); const selectElement = document.getElementById('mySelect');
selectElement.addEventListener('change', function() { selectElement.addEventListener('change', function() {
const selectedValue = selectElement.value; this.selectedOption=selectElement.value;
console.log('Selected value:', selectedValue); // console.log(this.selectedOption,"11")
}); });
await this.getTypeList();
// console.log(this.selectedOption,"22")
this.id=this.$route.query?.id || ''
console.log("this.$route.query",this.id);
await this.vehicleInfo()
}, },
methods:{ methods:{
async getTypeList() {
let result=await vehicleTypeList();
if(result.code === 200){
this.typeList=result.data
}
},
async vehicleInfo(){
let res= await getInfoById({
vehicleId:this.id
})
if(res.code === 200){
let result=res.data;
console.log("获取信息",res)
this.id=result.vehicleId
this.carNum=result.plateNumber
this.isJoin=result.hasPolymerization.code
this.selectedOption=result.vehicleType;
this.serviceIds=result.serviceIds
// console.log("num",this.carNum,this.isJoin)
}
},
change(e) { change(e) {
console.log("拖车服务",e) console.log("拖车服务",e)
this.trailerService=e
}, },
change2(e) { change2(e) {
console.log("小修服务",e) console.log("小修服务",e)
this.smallRepairService=e
}, },
isChange(e){ isChange(e){
console.log("是否参与",e) console.log("是否参与",e)
this.isJoin=e
}, },
cancelBtn(){ cancelBtn(){//取消车辆
console.log("取消车辆") this.isJoin='';
this.trailerService='';
this.smallRepairService='';
this.carNum=''
}, },
submitBtn(){ async submitBtn(){
console.log("提交车辆") console.log("提交车辆");
let res=await saveVehicle({
vehicleId:this.id ? this.id : '',
plateNumber:this.carNum ? this.carNum :'',
vehicleType:this.selectedOption ? this.selectedOption : '',
hasPolymerization:Number(this.isJoin ? this.isJoin : '') ,
serviceIds:this.serviceIds ? this.serviceIds : []
})
if(res.code === 200){
if(this.id){
this.$toast('修改成功')
}else{
this.$toast('添加成功')
}
setTimeout(()=>{
this.$router.back();
},2000)
}
console.log("res",res)
}, },
getPLateNum(e){ getPLateNum(e){
console.log("e",e) console.log("e",e)
} },
}, },
components:{ components:{
CellGroup, CellGroup,
@ -182,6 +241,9 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
@import "@/styles/mixin.scss"; @import "@/styles/mixin.scss";
@import "@/styles/common.scss"; @import "@/styles/common.scss";
.navBar{
margin-bottom: 46px;
}
.wrap{ .wrap{
@include wh(100%,100%); @include wh(100%,100%);
} }
@ -194,7 +256,7 @@ export default {
box-sizing: border-box; box-sizing: border-box;
padding-right: 25px; padding-right: 25px;
.titleType{ .titleType{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
} }
.isJoin{ .isJoin{
@ -213,7 +275,7 @@ export default {
input{ input{
border: none; border: none;
text-align: right; text-align: right;
@include fontWeightSize(500,13px); @include fontWeightSize(bold,13px);
opacity: .5; opacity: .5;
} }
} }
@ -223,7 +285,7 @@ export default {
opacity: 0.6; opacity: 0.6;
} }
.serviceType{ .serviceType{
@include fontWeightSize(500,13px); @include fontWeightSize(bold,13px);
margin-left: 15px; margin-left: 15px;
.trailerService{ .trailerService{
margin-bottom: 10px; margin-bottom: 10px;

View File

@ -1,39 +1,134 @@
<template> <template>
<div class="wrap"> <div class="wrap" >
<div class="carItem" v-for="(item,index) in 3" :key="index"> <div class="navBar">
<van-nav-bar
title="车辆管理"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="goBack"
>
<template slot="right">
<div class="rightWrap" @click="goPage('vehicleAdd')">
<img src="@/assets/addImg.png" />
<span class="addTxt">添加</span>
</div>
</template>
</van-nav-bar>
</div>
<div class="carItem" v-for="(item,index) in vehicleList" :key="index">
<div class="carCode"> <div class="carCode">
<div class="codeLeft">苏AB6768 / 拖车</div> <div class="codeLeft">{{item.plateNumber}} / {{item.vehicleTypeString}}</div>
<div class="twoBtn"> <div class="twoBtn">
<button class="del">删除</button> <button class="del" @click="deleteItem(item.vehicleId)">删除</button>
<button class="revise" @click="goPage('vehicleAdd')">修改</button> <button class="revise" @click="goPage('vehicleAdd',{ id: item.vehicleId })">修改</button>
</div> </div>
</div> </div>
<div class="carType">事故--大型拖车,事故--小型拖车,事故--平板拖车....</div> <div class="carType">{{ item.serviceName }}</div>
<div class="juhe"> <div class="juhe">
<span class="zdJuhe">是否参与中道聚合: </span> <span class="zdJuhe">是否参与中道聚合: </span>
<span class="isZd isYes"></span> <span :class="item.hasPolymerization.code == 0 ? 'isYes' :'isNo'">{{item.hasPolymerization.label}}</span>
</div> </div>
</div> </div>
<van-dialog v-model="show" title="确定删除吗" show-cancel-button @confirm="handleConfirm"></van-dialog>
</div> </div>
</template> </template>
<script> <script>
import { myMixins} from "@/utils/myMixins"; import { myMixins} from "@/utils/myMixins";
import {supplierVehicleList,deleteVehicle} from "@/api/mine"
export default { export default {
name: "vehicleManage", name: "vehicleManage",
mixins:[myMixins], mixins:[myMixins],
data(){
return{
vehicleList:[],
show:false,
id:'',
pageNum:1,
pageSize:10,
total:'',
}
},
mounted() {
this.getVehicleList();
},
methods:{
async getVehicleList(){
let result = await supplierVehicleList({
pageNum:this.pageNum,
pageSize:this.pageSize
})
if(result.code === 200){
this.vehicleList=result.data;
this.total=result.total
}
},
deleteItem(id){//删除车辆
this.show=true
this.id=id
},
addVehicle(){//添加车辆
console.log("添加")
},
async handleConfirm(){//调删除车辆接口
let result= await deleteVehicle({
vehicleId:this.id
})
if(result.code === 200){
this.$toast('删除成功');
await this.getVehicleList();
}
},
async handleScroll(){
this.pageNum += 1;
let res= await this.getVehicleList();
let newData=res.data
this.vehicleList=[...this.vehicleList,...newData]
console.log("滑动")
}
}
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import "@/styles/mixin.scss"; @import "@/styles/mixin.scss";
@import "@/styles/common.scss";
.wrap{ .wrap{
@include wh(100%,100%); overflow-y: auto;
@include wh(100%,calc(100% - 46px));
box-sizing: border-box; box-sizing: border-box;
padding: 13px 13px 0; padding: 13px 13px 0;
} }
.navBar{
margin-bottom: 46px;
//height: 46px;
.rightWrap{
width: 50px;
height: 20px;
border-radius: 10px;
opacity: 0.7;
border: 1px solid #FFFFFF;
@include flexCenter;
justify-content: center;
img{
@include widHeiMar(9px,8px,4px);
}
.addTxt{
@include fontWeightSize(bolder,11px);
opacity: .7;
color: #FFFFFF;
}
}
}
.carItem{ .carItem{
//position: relative;
// z-index: 11;
@include wh(100%,86px); @include wh(100%,86px);
background: #FFFFFF; background: #FFFFFF;
box-shadow: 0px 2px 10px 0px rgba(216,216,216,0.5); box-shadow: 0px 2px 10px 0px rgba(216,216,216,0.5);
@ -46,7 +141,7 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.codeLeft{ .codeLeft{
@include fontWeightSize(500,14px) @include fontWeightSize(bold,14px)
} }
.twoBtn{ .twoBtn{
button{ button{
@ -54,7 +149,7 @@ export default {
width: 48px; width: 48px;
@include all-height(20px); @include all-height(20px);
border-radius: 3px; border-radius: 3px;
@include fontWeightSize(500,12px) @include fontWeightSize(bold,12px)
} }
.del{ .del{
border: 1px solid #DDDDDD; border: 1px solid #DDDDDD;
@ -67,18 +162,23 @@ export default {
} }
} }
} }
.carType{
width: 95%;
white-space: nowrap; // 防止文本换行
text-overflow: ellipsis; // 使用省略号表示超出部分
overflow: hidden; // 隐藏超出容器宽度的内容
}
.carType,.zdJuhe{ .carType,.zdJuhe{
opacity: .7; opacity: .7;
@include fontWeightSize(400,12px) @include fontWeightSize(400,12px)
} }
.isZd{
@include fontWeightSize(400,12px);
}
.isYes{ .isYes{
color: #09B820; color: #09B820;
@include fontWeightSize(400,12px);
} }
.isNo{ .isNo{
color: #FF0000; color: #FF0000;
@include fontWeightSize(400,12px);
} }
} }
</style> </style>

View File

@ -23,7 +23,10 @@
<div class="rightItem">{{ orderDetailInfo.userName }}</div> <div class="rightItem">{{ orderDetailInfo.userName }}</div>
<div class="rightItem">{{ orderDetailInfo.userPhone }}</div> <div class="rightItem">{{ orderDetailInfo.userPhone }}</div>
<div class="rightItem">{{ orderDetailInfo.plateNumber }}</div> <div class="rightItem">{{ orderDetailInfo.plateNumber }}</div>
<div class="rightItem">{{orderDetailInfo.model}} {{ orderDetailInfo.brand }}</div> <div class="rightItem" style="line-height: 17px">
<span >{{orderDetailInfo.model}}</span>
<span>{{ orderDetailInfo.brand }}</span>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -155,7 +158,7 @@ export default {
} }
.rightContent{ .rightContent{
width: calc(100% - 90px); width: calc(100% - 90px);
@include fontWeightSize(500,12px); @include fontWeightSize(bold,12px);
} }
.vehicleRemark{ .vehicleRemark{
@ -171,7 +174,7 @@ export default {
} }
} }
.title{ .title{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
line-height: 20px; line-height: 20px;
opacity: .6; opacity: .6;

View File

@ -96,7 +96,7 @@ export default {
background-color: #F4F5F7; background-color: #F4F5F7;
} }
.title{ .title{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
opacity: 0.66; opacity: 0.66;
} }
@ -143,7 +143,7 @@ img{
} }
.titleContent{ .titleContent{
width: 91px; width: 91px;
@include fontWeightSize(500,13px); @include fontWeightSize(bold,13px);
} }
.halfOpcity{ .halfOpcity{

View File

@ -99,7 +99,7 @@
</template> </template>
<script> <script>
import {myMixins} from '@/utils/myMixins' import {myMixins} from '@/utils/myMixins'
export default { export default {
name: "reAccountingView", name: "reAccountingView",
mixins:[myMixins], mixins:[myMixins],
@ -118,7 +118,7 @@ export default {
overflow-y: auto; overflow-y: auto;
} }
.title{ .title{
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
color: #323643; color: #323643;
opacity: 0.66; opacity: 0.66;
} }
@ -211,7 +211,7 @@ export default {
background: #354D93; background: #354D93;
border-radius: 3px; border-radius: 3px;
color: #FFFFFF; color: #FFFFFF;
@include fontWeightSize(500,12px) @include fontWeightSize(bold,12px)
} }
.checkData,.supplierData{ .checkData,.supplierData{
color: #323643; color: #323643;
@ -240,7 +240,7 @@ export default {
background: #9EA7C0; background: #9EA7C0;
border-radius: 5px; border-radius: 5px;
color: #FFFFFF; color: #FFFFFF;
@include fontWeightSize(500,14px); @include fontWeightSize(bold,14px);
border: none; border: none;
} }
.submit{ .submit{

View File

@ -0,0 +1,32 @@
<template>
<div class="wrap">
<div class="navBar">
<van-nav-bar
title="工单对账"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="goPage"
/>
</div>
</div>
</template>
<script>
export default {
name: "workOrderReconciliation",
methods:{
}
}
</script>
<style scoped lang="scss">
@import "@/styles/common.scss";
@import "@/styles/mixin.scss";
.navBar{
margin-bottom: 46px;
}
</style>