From 9c491f119144c9bc536c1cf39307ad82be96b85b Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期五, 18 十月 2024 18:13:40 +0800 Subject: [PATCH] ll --- admin/src/components/business/OperaCarUseBookWindow.vue | 242 +++++++++++++++++++++++++++-------------------- 1 files changed, 139 insertions(+), 103 deletions(-) diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue index 8321ae4..e1afa43 100644 --- a/admin/src/components/business/OperaCarUseBookWindow.vue +++ b/admin/src/components/business/OperaCarUseBookWindow.vue @@ -1,18 +1,14 @@ <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:#B2B2B2; " v-if="model.status === 4">宸叉挙閿�</span> @@ -22,86 +18,98 @@ <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> - <div class="value status-red" v-if="model.type == 1">銆愬競澶栫敤杞︺��</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">{{ model.planUseDate || '' }}</div> </div> <div class="item"> <div class="label">鐢ㄨ溅鏃舵</div> - <div class="value">濮�:{{model.startTime || ''}}<br>姝�:{{model.endTime || ''}}</div> + <div class="value">濮�:{{ model.startTime || '' }}<br>姝�:{{ model.endTime || '' }}</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 == 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,38 +117,27 @@ </div> </div> <!-- --> - <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 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" :rules="rules" ref="dealForm" > + <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-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="dealForm.checkInfo" - /> + <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="dealForm.checkInfo" /> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -148,26 +145,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> @@ -184,12 +170,12 @@ name: 'OperaCarUseBookWindow', components: { GlobalWindow }, extends: BaseOpera, - data () { + data() { return { title: '鍏姟杞︾敵璇�', visible: false, dataId: null, - model: { }, + model: {}, dealing: false, isShowProblem: false, isBackProblem: false, @@ -209,14 +195,14 @@ computed: { ...mapState(['userInfo']) }, - created () { + created() { this.config({ api: '/business/carUseBook', 'field.id': 'id' }) }, methods: { - dealDo () { + dealDo() { this.$refs.dealForm.validate((valid) => { if (!valid) { return @@ -242,18 +228,18 @@ }) }) }, - agreeOpen () { + agreeOpen() { this.isShowProblem = true this.$set(this.dealForm, 'checkInfo', '') this.loadMemberList() }, - jectOpen () { + jectOpen() { this.isBackProblem = true this.backForm = { checkInfo: null } }, - backDo () { + backDo() { this.$refs.backForm.validate((valid) => { if (!valid) { return @@ -275,7 +261,7 @@ }) }) }, - open (title, target) { + open(title, target) { this.title = title this.visible = true this.model = {} @@ -292,14 +278,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 }) }, - loadMemberList () { + loadMemberList() { driveList({}).then(res => { this.memberList = res }) @@ -309,6 +307,8 @@ </script> <style lang="scss" scoped> +@import "@/assets/style/variables.scss"; + .upload_box { width: 84px; height: 84px; @@ -320,14 +320,17 @@ align-items: center; color: #999999; border: 1px solid #e4e4e4; + .icon { font-size: 24px; } + .text { font-size: 12px; } } -.side_title{ + +.side_title { font-weight: 600; font-size: 18px; color: #111111; @@ -335,9 +338,11 @@ margin-left: 20px; margin-top: 20px; } + .modal_wrap { display: flex; height: 100%; + .modal_content { flex: 1; padding: 0px 30px; @@ -352,6 +357,7 @@ margin-bottom: 20px; margin-top: 30px; } + .info { .list { display: flex; @@ -361,6 +367,7 @@ display: flex; width: 40%; margin-bottom: 20px; + &:nth-of-type(2n) { width: 60%; } @@ -410,20 +417,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; @@ -441,17 +452,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; @@ -459,75 +473,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; @@ -535,7 +572,6 @@ color: #666666; margin-left: 100px; } - } } } -- Gitblit v1.9.3