From 6ef869b1adcf3a5bb8e4c3117dc507d173f13fd8 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 18 九月 2024 15:19:55 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
---
admin/src/views/task/visSubDetail.vue | 361 ++++++++++++++++++++++-----------------------------
1 files changed, 156 insertions(+), 205 deletions(-)
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
index 8f04d80..cb47f45 100644
--- a/admin/src/views/task/visSubDetail.vue
+++ b/admin/src/views/task/visSubDetail.vue
@@ -3,11 +3,19 @@
<div class="modal_wrap">
<div class="modal_content">
<div class="header">
+ <img v-if="info.businessStatus == '3'" class="head_bg"
+ src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+ <img v-else-if="info.businessStatus == '2'" class="head_bg"
+ src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
+ <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
<div class="left">
<div class="h1">{{ cateList[type] }}</div>
<div class="time">鎻愪氦鏃堕棿锛歿{ info.createTime }}</div>
</div>
- <div class="right">{{ statusMap[info.status] }}</div>
+ <div class="right"
+ :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
+ statusMap[info.businessStatus] }}</div>
</div>
<div class="info">
<div class="title">璁垮棰勭害淇℃伅</div>
@@ -44,15 +52,10 @@
<el-table-column label="濮撳悕" prop="" min-width="150">
<template slot-scope="{ row }">
<div class="name_wrap">
- <image
- :src="
- row.prefix
- ? row.prefix
- : require('@/assets/avatar/man.png')
- "
- class="avatar"
- mode=""
- />
+ <image :src="row.prefix
+ ? row.prefix
+ : require('@/assets/avatar/man.png')
+ " class="avatar" mode="" />
<div class="content">
<div class="line">
<div class="name">{{ row.name }}</div>
@@ -64,27 +67,15 @@
</template>
</el-table-column>
<!-- <el-table-column label="鎬у埆" prop="" min-width="40" /> -->
- <el-table-column
- label="璇佷欢绫诲瀷"
- prop="idcardTypeName"
- min-width="80"
- >
+ <el-table-column label="璇佷欢绫诲瀷" prop="idcardTypeName" min-width="80">
<template slot-scope="{ row }">
<span v-if="row.idcardType == 0">韬唤璇�</span>
<span v-if="row.idcardType == 1">娓境璇佷欢</span>
<span v-if="row.idcardType == 2">鎶ょ収</span>
</template>
</el-table-column>
- <el-table-column
- label="璇佷欢鍙风爜"
- prop="idCardDecode"
- min-width="120"
- />
- <el-table-column
- label="鍏徃鍚嶇О"
- prop="companyName"
- min-width="120"
- />
+ <el-table-column label="璇佷欢鍙风爜" prop="idCardDecode" min-width="120" />
+ <el-table-column label="鍏徃鍚嶇О" prop="companyName" min-width="120" />
<el-table-column label="浜鸿劯鐓х墖" prop="" min-width="80">
<template slot-scope="{ row }">
<el-image :src="row.prefix + row.faceImg" :preview-src-list="[row.prefix + row.faceImg]">
@@ -96,69 +87,24 @@
</div>
<div class="side">
<div class="side_title">瀹℃壒娴佺▼</div>
- <div
- class="list"
- v-if="
- info.approveDateVO != null && info.approveDateVO.approveList != null
- "
- >
- <div
- class="item"
- v-for="(item, index) in info.approveDateVO.approveList"
- :key="item.id"
- >
- <div
- class="separate"
- v-if="index < info.approveDateVO.approveList.length - 1"
- ></div>
+ <div class="list" v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ ">
+ <div class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id">
+ <div class="separate" v-if="index < info.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"
- />
+ <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 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=""
- />
+ <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">
@@ -168,47 +114,27 @@
<div class="line">
<div class="company">
{{ item.memberName }}
- <div
- style="display: inline"
- v-if="item.statusInfo != null && item.statusInfo != ''"
- >
- 锛�<span class="status-green">{{
+ <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
+ 锛�<span class="status" :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
item.statusInfo || ""
- }}</span
- >锛�
+ }}</span>锛�
</div>
</div>
</div>
</div>
</div>
- <div
- v-if="
- item.approveType != 1 &&
- item.checkInfo != null &&
- item.checkInfo != ''
- "
- class="remark"
- >
+ <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
- 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=""
- />
+ <div v-if="item.approveType == 1 || item.approveType == 0" 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>
</div>
</div>
@@ -218,46 +144,24 @@
</div>
<!-- -->
<template v-slot:footer>
- <el-button
- @click="handleAppr(2)"
- type="primary"
- class="status-red"
- v-if="
- info.approveDateVO != null &&
- info.approveDateVO.canBeApproved != null &&
- info.approveDateVO.canBeApproved == 1
- "
- >鍚屾剰</el-button
- >
- <el-button
- @click="handleAppr(3)"
- type="danger"
- v-if="
- info.approveDateVO != null &&
- info.approveDateVO.canBeApproved != null &&
- info.approveDateVO.canBeApproved == 1
- "
- >鎷掔粷</el-button
- >
+ <el-button @click="handleAppr(2)" type="primary" class="status-red" v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ ">鍚屾剰</el-button>
+ <el-button @click="handleAppr(3)" type="danger" v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ ">鎷掔粷</el-button>
<el-button @click="isShowModal = false">杩斿洖</el-button>
</template>
<!-- 鍚屾剰/鎷掔粷 -->
- <el-dialog
- append-to-body
- :title="apprTitle"
- :visible.sync="isShowAppr"
- width="480px"
- >
+ <el-dialog append-to-body :title="param.status == 2 ? '鍚屾剰' : '鎷掔粷'" :visible.sync="isShowAppr" width="480px">
<el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
- <el-input
- type="textarea"
- :placeholder="
- param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
- "
- :rows="4"
- v-model="param.checkInfo"
- />
+ <el-input type="textarea" :placeholder="param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
+ " :rows="4" v-model="param.checkInfo" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -266,32 +170,16 @@
</span>
</el-dialog>
<!-- 闅愭偅 -->
- <el-dialog
- append-to-body
- title="闅愭偅"
- :visible.sync="isShowProblem"
- width="480px"
- >
+ <el-dialog append-to-body title="闅愭偅" :visible.sync="isShowProblem" width="480px">
<el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
<el-form-item label="閫�鍥炴椂闂�">
- <el-date-picker
- class="w300"
- value-format="yyyy-MM-dd"
- type="date"
- placeholder="閫夋嫨鏃ユ湡"
- v-model="param.date"
- />
+ <el-date-picker class="w300" value-format="yyyy-MM-dd" type="date" placeholder="閫夋嫨鏃ユ湡" v-model="param.date" />
</el-form-item>
<el-form-item label="鏁存敼鍓�">
<div class="df_ac">
<img src="@/assets/avatar/man.png" />
- <el-upload
- class="avatar-uploader"
- action="https://jsonplaceholder.typicode.com/posts/"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :before-upload="beforeAvatarUpload"
- >
+ <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/"
+ :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
<img v-if="param.url" :src="param.url" class="avatar" />
<div v-else class="upload_box">
<el-icon class="el-icon-plus icon" />
@@ -301,19 +189,12 @@
</div>
</el-form-item>
<el-form-item label="閫�鍥炶鏄�">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="param.explain"
- />
+ <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="param.explain" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowProblem = false">鍙栨秷</el-button>
- <el-button type="primary" @click="isShowProblem = false"
- >纭畾</el-button
- >
+ <el-button type="primary" @click="isShowProblem = false">纭畾</el-button>
</span>
</el-dialog>
</GlobalWindow>
@@ -327,7 +208,7 @@
} from '@/api'
export default {
components: { GlobalWindow },
- data () {
+ data() {
return {
id: '',
type: '',
@@ -345,13 +226,11 @@
checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
},
statusMap: {
- 0: '寰呭鎵�',
- 1: '瀹℃壒涓�',
- 2: '瀹℃壒閫氳繃',
- 3: '瀹℃壒鏈�氳繃',
+ 0: '寰呭鏍�',
+ 1: '澶勭悊涓�',
+ 2: '宸插悓鎰�',
+ 3: '宸叉嫆缁�',
4: '宸插彇娑�',
- 5: '浠栦汉鎴栫',
- 6: '浠栦汉鎷掔粷'
},
cateList: {
0: '璁垮鐢宠',
@@ -363,7 +242,7 @@
}
},
methods: {
- onSubAppr () {
+ onSubAppr() {
this.$refs.ruleForm.validate((valid) => {
if (!valid) {
return
@@ -389,38 +268,54 @@
})
})
},
- getDetail () {
+ getDetail() {
const { id, type } = this
console.log(id, type)
switch (type) {
- case 0:
- getVisitedDetail({ id }).then(res => {
- this.info = res
- })
- break
+ case 0:
+ getVisitedDetail({ id }).then(res => {
+ this.info = res
+ if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
+ this.info.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.approveList = []
+ }
+ })
+ }
+ })
+ break
- default:
- break
+ default:
+ break
}
},
- handleAppr (val) {
+ handleAppr(val) {
this.$set(this.param, 'status', val)
this.isShowAppr = true
+ this.$nextTick(() => {
+ this.$refs.ruleForm.clearValidate()
+ })
},
- confirm () {
+ confirm() {
console.log('--')
},
- handleTransfer () {
+ handleTransfer() {
this.isShowProblem = true
},
- reject () { },
- handleAvatarSuccess () { },
- beforeAvatarUpload () { }
+ reject() { },
+ handleAvatarSuccess() { },
+ beforeAvatarUpload() { }
}
}
</script>
<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
.upload_box {
width: 84px;
height: 84px;
@@ -432,13 +327,16 @@
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;
@@ -447,9 +345,11 @@
margin-left: 20px;
margin-top: 20px;
}
+
.modal_wrap {
display: flex;
height: 100%;
+
.modal_content {
flex: 1;
padding: 0px 30px;
@@ -464,6 +364,7 @@
margin-bottom: 20px;
margin-top: 30px;
}
+
.info {
.list {
display: flex;
@@ -473,6 +374,7 @@
display: flex;
width: 40%;
margin-bottom: 20px;
+
&:nth-of-type(2n) {
width: 60%;
}
@@ -496,7 +398,16 @@
padding: 20px 30px;
margin: 0 -30px;
border-radius: 8px 8px 0 0;
- background: linear-gradient(to right, #f2f6fe, #cadffa);
+ position: relative;
+
+ .head_bg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 9;
+ }
.h1 {
font-weight: 600;
@@ -519,22 +430,36 @@
background: #207ff7;
box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
border-radius: 16px 0px 16px 0px;
+ position: relative;
+ z-index: 99;
+ }
+
+ .scs {
+ background-color: #00BA67;
+ }
+
+ .msg {
+ background-color: #ED4545;
}
}
+
.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;
@@ -552,17 +477,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;
@@ -570,18 +498,22 @@
margin: 0 12px 0 16px;
//border: 1px solid;
}
+
.childList {
display: flex;
flex-wrap: wrap;
margin-left: 100px;
}
+
.company {
font-size: 13px;
color: #888888;
+
.status {
color: #00ba67;
}
}
+
.m_content {
display: flex;
flex-direction: column;
@@ -589,56 +521,75 @@
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 {
width: 24px;
height: 24px;
}
+
.icon3 {
position: relative;
z-index: 11;
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;
--
Gitblit v1.9.3