From d3b6db246a59ada62cb72c81c0a9f82b324bc692 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 21 五月 2025 18:34:40 +0800
Subject: [PATCH] 最新版本541200007
---
admin/src/components/business/OperaCarUseBookWindow.vue | 311 ++++++++++++++++++++++++++++++---------------------
1 files changed, 181 insertions(+), 130 deletions(-)
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 1eedd79..05ac112 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -1,107 +1,117 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" :visible.sync="visible" @confirm="confirm">
<div class="modal_wrap">
<div class="modal_content">
<div class="header">
<div class="left">
<div class="h1">鍏姟杞︾敵璇�</div>
- <div class="time">鎻愪氦鏃堕棿锛歿{model.createDate}}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ model.createDate }}</div>
</div>
- <span class="right" v-if="model.status === 0">鐢宠涓�</span>
- <span class="right" v-if="model.status === 1">瀹℃壒涓�</span>
+ <span class="right" v-if="model.status === 0">鐢宠涓�</span>
+ <span class="right" v-if="model.status === 1">瀹℃壒涓�</span>
<span class="right" style="background:#53b76f " v-if="model.status === 2">瀹℃壒閫氳繃</span>
<span class="right" style="background:#dc362e " v-if="model.status === 3">瀹℃壒涓嶉�氳繃</span>
- <span class="right" style="background:#dc362e " v-if="model.status === 4">宸插彇娑�</span>
+ <span class="right" style="background:#B2B2B2; " v-if="model.status === 4">宸叉挙閿�</span>
</div>
<div class="info">
<div class="title">鍏姟杞︾敵璇蜂俊鎭�</div>
<div class="list">
<div class="item" style="width: 100%">
<div class="label">鐢宠浜�</div>
- <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}} ({{model.companyName || ''}})</div>
+ <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || ''
+ }})
+ </div>
</div>
<div class="item">
<div class="label">鐢宠杞﹁締</div>
- <div class="value">{{model.carCode || ''}}</div>
+ <div class="value">{{ model.carCode || '' }}</div>
</div>
<div class="item">
<div class="label">鍙告満淇℃伅</div>
- <div class="value" v-if="model.driverId !=null">{{model.driverName || ''}} {{model.driverPhone || ''}}</div>
- <div class="value" v-if="model.driverId ==null">鏈寚娲�</div>
+ <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || ''
+ }}
+ </div>
+ <div class="value" v-if="model.driverId == null">鏈寚娲�</div>
</div>
- <div class="item" >
- <div class="label">鐢ㄨ溅浜嬬敱</div>
- <div class="value">{{model.content}}</div>
- </div>
+ <div class="item">
+ <div class="label">鐢ㄨ溅浜嬬敱</div>
+ <div class="value">{{ model.content }}</div>
+ </div>
<div class="item">
<div class="label">涔樿溅浜哄憳</div>
- <div class="value">{{model.memberNames || ''}}</div>
+ <div class="value">{{ model.memberNames || '' }}</div>
</div>
<div class="item">
<div class="label">鐩殑鍦扮被鍒�</div>
- <div class="value status-green" v-if="model.type === 0">銆愬競鍐呯敤杞︺��</div>
- <spdivan class="value status-red" v-if="model.type === 1">銆愬競鍐呯敤杞︺��</spdivan>
+ <div class="value status-green" v-if="model.type == 0">銆愬競鍐呯敤杞︺��</div>
+ <div class="value status-red" v-if="model.type == 1">銆愬競澶栫敤杞︺��</div>
</div>
<div class="item">
<div class="label">鐩殑鍦�</div>
- <div class="value">{{model.addr || ''}}</div>
+ <div class="value">{{ model.addr || '' }}</div>
</div>
<div class="item">
<div class="label">棰勮鍑哄彂鏃堕棿</div>
- <div class="value">{{model.planUseDate || ''}}</div>
+ <div class="value" v-if="model.planUseDate">{{ model.planUseDate.slice(0,16) }}</div>
</div>
<div class="item">
<div class="label">鐢ㄨ溅鏃舵</div>
- <div class="value">濮�:{{model.startTime || ''}}<br>姝�:{{model.endTime || ''}}</div>
+ <div class="value">濮�:<span v-if="model.startTime">{{ model.startTime.slice(0,16) }}</span><br>姝�:<span v-if="model.endTime">{{ model.endTime.slice(0,16) }}</span></div>
</div>
</div>
</div>
</div>
<div class="side">
<div class="side_title">瀹℃壒娴佺▼</div>
- <div class="list" v-if="model.approveDateVO !=null && model.approveDateVO.approveList !=null">
- <div class="item" v-for="(item,index) in model.approveDateVO.approveList" :key="item.id">
- <div class="separate" v-if=" (index < model.approveDateVO.approveList.length-1)"></div>
+ <div class="list" v-if="
+ model.approveDateVO != null && model.approveDateVO.approveList != null
+ ">
+ <div class="item" v-for="(item, index) in model.approveDateVO.approveList" :key="item.id">
+ <div class="separate" v-if="index < model.approveDateVO.approveList.length - 1"></div>
<div class="info">
- <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="( item.status ==2)"/>
- <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="( item.status==1)"/>
- <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="( item.status==3)"/>
- <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if=" (item.status==null || item.status==0 )"/>
- <div style="display: inline" v-if="item.approveType !=1">
- <img v-if="item.faceImg!=null && item.faceImg !=''" :src="item.faceImg" class="avatar" alt="" />
- <img v-if="item.faceImg ==null ||item.faceImg ==''" src="@/assets/avatar/man.png" class="avatar" alt="" />
+ <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
+ <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
+ <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 4 || item.status == 3" />
+ <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
+ <div style="display: inline" v-if="item.approveType != 1">
+ <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" />
+ <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
+ alt="" />
</div>
- <div style="display: inline" v-if="item.approveType == 1">
- <img v-if="item.type !=1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
- <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
+ <div style="display: inline" v-if="item.approveType == 1">
+ <img v-if="item.type != 1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
+ <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
</div>
<div class="content">
<div class="line">
- <div class="name">{{ item.title}}</div>
+ <div class="name">{{ item.title }}</div>
<div class="time">{{ item.checkDate }}</div>
</div>
<div class="line">
<div class="company">
{{ item.memberName }}
- <div style="display: inline" v-if="item.statusInfo!=null && item.statusInfo!=''">
- 锛�<span class="status-green">{{item.statusInfo ||''}}</span>锛�
+ <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
+ 锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
+ item.statusInfo || ""
+ }}</span>锛�
</div>
</div>
</div>
</div>
</div>
- <div v-if="item.approveType != 1 && item.checkInfo !=null && item.checkInfo !=''" class="remark">
- {{ item.checkInfo || '' }}
+ <div v-if="
+ item.approveType != 1 &&
+ item.checkInfo != null &&
+ item.checkInfo != ''
+ " class="remark">
+ {{ item.checkInfo || "" }}
</div>
- <div v-if="item.approveType == 1 " class="childList">
+ <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList">
<div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
- <img v-if="item1.faceImg!=null && item1.faceImg !=''" :src="item1.faceImg" class="avatar" alt="" />
- <img v-if="item1.faceImg ==null ||item1.faceImg ==''" src="@/assets/avatar/man.png" class="avatar" alt="" />
- <span > {{item1.memberName}}</span>
+ <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
+ <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
+ alt="" />
+ <span> {{ item1.memberName }}</span>
</div>
</div>
</div>
@@ -109,37 +119,27 @@
</div>
</div>
<!-- -->
- <template v-slot:footer>
- <el-button @click="isShowProblem = true" type="primary" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " class="status-red">鍚屾剰</el-button>
- <el-button @click="isBackProblem=true" type="danger" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " >鎷掔粷</el-button>
- <el-button @click="visible=false">杩斿洖</el-button>
+ <template v-slot:footer>
+ <el-button @click="agreeOpen" type="primary"
+ v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1"
+ class="status-red">鍚屾剰</el-button>
+ <el-button @click="jectOpen" type="danger"
+ v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1">鎷掔粷</el-button>
+ <el-button @click="visible = false">杩斿洖</el-button>
</template>
- <el-dialog
- append-to-body
- title="鍚屾剰鐢宠"
- style="text-align: center"
- class="dialogCl"
- :visible.sync="isShowProblem"
- width="480px"
- >
- <el-form :model="dealForm" ref="dealForm" >
- <el-form-item label="娲捐溅鍙告満" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.drvierParam ===1">
- <el-select v-model="transForm.driverId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
- <el-option
- v-for="item in memberList"
- :key="item.id"
- :label="item.name+'-'+item.phone"
- :value="item.id">
+ <el-dialog append-to-body title="鍚屾剰鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem"
+ width="480px">
+ <el-form :model="dealForm" :rules="rules" ref="dealForm">
+ <!-- <el-form-item label="娲捐溅鍙告満" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.driverParam === 1"> -->
+ <el-form-item label="娲捐溅鍙告満" prop="driverId"
+ v-if="model.approveDateVO != null && model.approveDateVO.driverParam == 1">
+ <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
+ <el-option v-for="item in memberList" :key="item.id" :label="item.name + '-' + item.phone" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鍚屾剰璇存槑">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="backForm.checkInfo"
- />
+ <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="dealForm.checkInfo" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -147,26 +147,15 @@
<el-button type="primary" :loading="dealing" @click="dealDo">纭畾</el-button>
</span>
</el-dialog>
- <el-dialog
- append-to-body
- title="鎷掔粷鐢宠"
- style="text-align: center"
- class="dialogCl"
- :visible.sync="isBackProblem"
- width="600px"
- >
- <el-form :model="backForm" ref="backForm" label-width="100px">
+ <el-dialog append-to-body title="鎷掔粷鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isBackProblem"
+ width="600px">
+ <el-form :model="backForm" ref="backForm" label-width="100px">
<el-form-item label="鎷掔粷璇存槑">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="backForm.checkInfo"
- />
+ <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="backForm.checkInfo" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
- <el-button @click="isBackProblem= false">鍙栨秷</el-button>
+ <el-button @click="isBackProblem = false">鍙栨秷</el-button>
<el-button type="primary" :loading="dealing" @click="backDo">纭畾</el-button>
</span>
</el-dialog>
@@ -179,16 +168,17 @@
import { driveList } from '@/api/business/member'
import { approveDo } from '@/api/business/approve'
import { mapState } from 'vuex'
+
export default {
name: 'OperaCarUseBookWindow',
components: { GlobalWindow },
extends: BaseOpera,
- data () {
+ data() {
return {
title: '鍏姟杞︾敵璇�',
visible: false,
dataId: null,
- model: { },
+ model: {},
dealing: false,
isShowProblem: false,
isBackProblem: false,
@@ -199,20 +189,23 @@
},
backForm: {
checkInfo: null
+ },
+ rules: {
+ driverId: [{ required: true, message: '璇烽�夋嫨娲鹃仯鍙告満', trigger: 'blur' }]
}
}
},
computed: {
...mapState(['userInfo'])
},
- created () {
+ created() {
this.config({
api: '/business/carUseBook',
'field.id': 'id'
})
},
methods: {
- dealDo () {
+ dealDo() {
this.$refs.dealForm.validate((valid) => {
if (!valid) {
return
@@ -222,9 +215,9 @@
this.dealing = true
approveDo({
objId: this.dataId,
- objType: this.model.type == 1?4:3,
+ objType: this.model.type == 1 ? 4 : 3,
status: 2,
- driverId: this.dealForm.driveId,
+ driverId: this.dealForm.driverId,
checkInfo: this.dealForm.checkInfo
})
.then(res => {
@@ -238,30 +231,42 @@
})
})
},
- backDo () {
+ agreeOpen() {
+ this.isShowProblem = true
+ this.$set(this.dealForm, 'driverId', this.model.driverId)
+
+ this.$set(this.dealForm, 'checkInfo', '')
+ this.loadMemberList()
+ },
+ jectOpen() {
+ this.isBackProblem = true
+ this.backForm = {
+ checkInfo: null
+ }
+ },
+ backDo() {
this.$refs.backForm.validate((valid) => {
if (!valid) {
return
}
approveDo({
- objId: this.dataId,
- objType: this.model.type == 1?4:3,
- status: 3,
- checkInfo: this.dealForm.checkInfo
- }).then(res => {
- this.$tip.apiSuccess('閫�鍥炴垚鍔�')
- this.getDetail()
- this.isBackProblem = false
- })
- .catch(e => {
- })
- .finally(() => {
- this.dealing = false
- })
+ objId: this.dataId,
+ objType: this.model.type == 1 ? 4 : 3,
+ status: 3,
+ checkInfo: this.backForm.checkInfo
+ }).then(res => {
+ this.$tip.apiSuccess('閫�鍥炴垚鍔�')
+ this.getDetail()
+ this.isBackProblem = false
+ })
+ .catch(e => {
+ })
+ .finally(() => {
+ this.dealing = false
})
})
},
- open (title, target) {
+ open(title, target) {
this.title = title
this.visible = true
this.model = {}
@@ -278,18 +283,26 @@
this.getDetail()
})
},
- getDetail () {
+ getDetail() {
this.api.detail(this.dataId)
.then(res => {
this.model = res
+ if (this.model.approveDateVO && this.model.approveDateVO.approveList.length > 0) {
+ this.model.approveDateVO.approveList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.status = item.approveList[0].status
+ item.approveList = []
+ }
+ })
+ }
this.dealForm.driveId = res.driveId
})
},
- handleTransfer () {
- this.isShowTransfer = true
- this.loadMemberList()
- },
- loadMemberList () {
+ loadMemberList() {
driveList({}).then(res => {
this.memberList = res
})
@@ -299,14 +312,8 @@
</script>
<style lang="scss" scoped>
-.side_title{
- font-weight: 600;
- font-size: 18px;
- color: #111111;
- margin-bottom: 20px;
- margin-left: 20px;
- margin-top: 20px;
-}
+@import "@/assets/style/variables.scss";
+
.upload_box {
width: 84px;
height: 84px;
@@ -318,17 +325,29 @@
align-items: center;
color: #999999;
border: 1px solid #e4e4e4;
+
.icon {
font-size: 24px;
}
+
.text {
font-size: 12px;
}
}
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+
.modal_wrap {
display: flex;
height: 100%;
+
.modal_content {
flex: 1;
padding: 0px 30px;
@@ -343,6 +362,7 @@
margin-bottom: 20px;
margin-top: 30px;
}
+
.info {
.list {
display: flex;
@@ -352,6 +372,7 @@
display: flex;
width: 40%;
margin-bottom: 20px;
+
&:nth-of-type(2n) {
width: 60%;
}
@@ -362,6 +383,7 @@
}
.value {
+ flex: 1;
color: #111111;
}
}
@@ -400,20 +422,24 @@
border-radius: 16px 0px 16px 0px;
}
}
+
.table_info {
.name_wrap {
display: flex;
align-items: center;
+
.avatar {
width: 40px;
height: 40px;
border-radius: 50%;
margin-right: 12px;
}
+
.content {
.line {
display: flex;
}
+
.tag {
color: #b2cbf9;
border: 1px solid #b2cbf9;
@@ -431,17 +457,20 @@
width: 420px;
background: #ffffff;
border-left: 20px solid #f7f7f7;
+
.list {
.item {
padding: 8px 0;
position: relative;
+
.separate {
position: absolute;
border-left: 2px dashed #cccccc;
left: 31px;
- height: calc(100% - 36px);
+ height: calc(100% - 30px);
top: 49px;
}
+
.avatar {
width: 40px;
height: 40px;
@@ -449,75 +478,98 @@
margin: 0 12px 0 16px;
//border: 1px solid;
}
- .childList{
+
+ .childList {
display: flex;
flex-wrap: wrap;
margin-left: 100px;
}
+
.company {
font-size: 13px;
color: #888888;
+
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
- .m_content{
+
+ .m_content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 4px;
}
+
.info {
display: flex;
align-items: center;
margin-left: 20px;
+
.icon {
position: relative;
z-index: 11;
color: #53b76f;
font-size: 24px;
}
+
.icon1 {
position: relative;
z-index: 11;
color: deepskyblue;
font-size: 24px;
}
+
.icon2 {
position: relative;
z-index: 11;
color: #dc362e;
font-size: 24px;
}
- .iconnew{
+
+ .iconnew {
width: 24px;
height: 24px;
}
+
.icon3 {
position: relative;
z-index: 11;
- color:gray;
+ color: gray;
font-size: 24px;
}
+
.content {
flex: 1;
+
.line {
display: flex;
justify-content: space-between;
align-content: center;
margin-bottom: 6px;
+
+ .status {
+ color: #888888;
+ }
+
+ .padding {
+ color: $primaryColor;
+ }
+
.name {
font-weight: 600;
font-size: 16px;
color: #111111;
}
+
.time {
color: #888888;
}
}
}
}
+
.remark {
background: #f7f7f7;
border-radius: 4px;
@@ -525,7 +577,6 @@
color: #666666;
margin-left: 100px;
}
-
}
}
}
--
Gitblit v1.9.3