From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 16 十月 2024 15:59:38 +0800 Subject: [PATCH] 代码初始化 --- admin/src/views/task/visSubDetail.vue | 371 +++++++++++++++++++++++------------------------------ 1 files changed, 161 insertions(+), 210 deletions(-) diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue index 57a70bd..db8dd9b 100644 --- a/admin/src/views/task/visSubDetail.vue +++ b/admin/src/views/task/visSubDetail.vue @@ -1,13 +1,21 @@ <template> - <GlobalWindow :title="title" :visible.sync="isShowModal" @confirm="confirm"> + <GlobalWindow :title="title" :visible.sync="isShowModal" @close="close" @confirm="confirm"> <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,30 +67,18 @@ </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]"> + <el-image v-if="row.prefix && row.faceImg" :src="row.prefix + row.faceImg" :preview-src-list="[row.prefix + row.faceImg]"> </el-image> </template> </el-table-column> @@ -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="{ 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 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="isShowModal = false">杩斿洖</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="close">杩斿洖</el-button> </template> <!-- 鍚屾剰/鎷掔粷 --> - <el-dialog - append-to-body - :title="param.status == 2 ? '鍚屾剰' : '鎷掔粷'" - :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,16 +226,11 @@ checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }] }, statusMap: { - 0: '寰呭鎵�', - 1: '瀹℃壒涓�', - 2: '瀹℃壒閫氳繃', - 3: '瀹℃壒鏈�氳繃', + 0: '寰呭鏍�', + 1: '澶勭悊涓�', + 2: '宸插悓鎰�', + 3: '宸叉嫆缁�', 4: '宸插彇娑�', - 5: '棰勭害鎴愬姛', - 6: '棰勭害澶辫触', - 7: '鎷滆涓�', - 8: '宸茬绂�', - 9: '宸插け鏁�' }, cateList: { 0: '璁垮鐢宠', @@ -366,7 +242,7 @@ } }, methods: { - onSubAppr () { + onSubAppr() { this.$refs.ruleForm.validate((valid) => { if (!valid) { return @@ -384,6 +260,8 @@ this.subLoading = false this.$tip.apiSuccess('澶勭悊鎴愬姛') this.getDetail() + this.$emit('success') + this.$emit('close') this.isShowAppr = false }) .finally(() => { @@ -392,41 +270,58 @@ }) }) }, - getDetail () { + close(){ + this.isShowModal = false + this.$emit('close') + }, + 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; @@ -438,13 +333,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; @@ -453,9 +351,11 @@ margin-left: 20px; margin-top: 20px; } + .modal_wrap { display: flex; height: 100%; + .modal_content { flex: 1; padding: 0px 30px; @@ -470,6 +370,7 @@ margin-bottom: 20px; margin-top: 30px; } + .info { .list { display: flex; @@ -479,6 +380,7 @@ display: flex; width: 40%; margin-bottom: 20px; + &:nth-of-type(2n) { width: 60%; } @@ -502,7 +404,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; @@ -525,22 +436,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; @@ -558,17 +483,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; @@ -576,18 +504,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; @@ -595,56 +527,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