| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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]"> |
| | |
| | | </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"> |
| | |
| | | <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> |
| | |
| | | </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="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"> |
| | |
| | | </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" /> |
| | |
| | | </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> |
| | |
| | | } from '@/api' |
| | | export default { |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | id: '', |
| | | type: '', |
| | |
| | | checkInfo: [{ required: true, message: '请输入', trigger: 'blur' }] |
| | | }, |
| | | statusMap: { |
| | | 0: '待审批', |
| | | 1: '审批中', |
| | | 2: '审批通过', |
| | | 3: '审批未通过', |
| | | 0: '待审核', |
| | | 1: '处理中', |
| | | 2: '已同意', |
| | | 3: '已拒绝', |
| | | 4: '已取消', |
| | | 5: '预约成功', |
| | | 6: '预约失败', |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | onSubAppr () { |
| | | onSubAppr() { |
| | | this.$refs.ruleForm.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | 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; |
| | |
| | | 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; |
| | |
| | | margin-left: 20px; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | | padding: 0px 30px; |
| | |
| | | margin-bottom: 20px; |
| | | margin-top: 30px; |
| | | } |
| | | |
| | | .info { |
| | | .list { |
| | | display: flex; |
| | |
| | | display: flex; |
| | | width: 40%; |
| | | margin-bottom: 20px; |
| | | |
| | | &:nth-of-type(2n) { |
| | | width: 60%; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |