<style> ._info_img ul { /* padding: 10px 0 */ } ._info_img ul li { width: 52px; height: 52px; float: left; position: relative; cursor: pointer; margin-right: 5px; border: 1px dashed #d1d1d1; border-radius: 6px; } ._info_img ul li:hover ._see_img { opacity: 1; } ._info_img ul li img { width: 50px; height: 50px; } ._see_img { position: absolute; top: 0; width: 50px; height: 50px; line-height: 34px; text-align: center; background-color: rgba(2, 2, 2, 0.3); display: inherit; opacity: 0; transition: all linear .5s } ._see_img i.iconfont { display: inline-block; width: 32px; height: 32px; margin-top: 8px; border-radius: 50%; color: #FFFFFF !important; background-color: rgba(255, 255, 255, 0.5); } ._show_img_box { position: fixed; background: rgba(0, 0, 0, .6); left: 0; top: 0; width: 100%; height: 100%; z-index: 999; text-align: center; overflow: auto; } .customerApproval .approvalNav { height: 52px; width: 100%; margin: 30px 0 20px; } .customerApproval .approvalNav>li { float: left; width: 116px; font-size: 14px; height: 52px; color: #666; text-align: center; line-height: 52px; background: #E9E9E9; cursor: pointer; } .customerApproval .approvalNav>li.active { background: #fff; color: #333; } .customerApproval .approvalNav .divActive { margin: -3px auto; width: 26px; height: 3px; background: #E95252; } .customerApprovalDetailTable { width: 100%; font-size: 14px; color: #333; } .customerApprovalDetailTable tr th { background: #E6E6E6; height: 30px; font-size: 12px; text-align: left; text-indent: 25px; } .customerApprovalDetailTable tr { background: #fff; text-align: left; } .customerApprovalDetailTable tr td { height: 60px; padding-left: 25px; border-bottom: 1px solid #eee; font-size: 14px; color: #333; } .customerApprovalLayer { position: fixed; z-index: 99; background: rgba(0, 0, 0, .1); width: 100%; height: 100%; left: 0; top: 0; } .customerApprovalLayer .rightZero { right: 0px; } .customerApprovalLayercontentDiv { width: 420px; background: #fff; height: 100%; overflow: auto; top: 0; right: -420px; position: fixed; box-shadow: 4px 0px 10px rgba(0, 0, 0, 0.1); transition: right .5s; } .customerApprovalLayercontentDiv .title { width: 420px; height: 48px; line-height: 48px; text-indent: 20px; font-size: 16px; color: #333; background: #EDEEF0; } .customerApprovalLayercontentDiv .item { width: 380px; height: auto; overflow: hidden; border: 1px solid #E6E6E6; margin: 20px 0 20px 20px; padding: 20px; } .customerApprovalLayercontentDiv .item .topMsg { overflow: hidden; padding-bottom: 20px; border-bottom: 1px solid #E6E6E6; } .customerApprovalLayercontentDiv .item .topMsg>img { float: left; margin-right: 13px; } .customerApprovalLayercontentDiv .item .bottomMsg { padding: 15px 0; } .customerApprovalLayercontentDiv .item .bottomMsg .pImg { margin-top: 10px; } .customerApprovalLayercontentDiv .item .bottomMsg .pImg img { cursor: pointer; height: 100px; } .customerApprovalLayercontentDiv .answerItem { overflow: hidden; padding: 15px 0; } .customerApprovalLayercontentDiv .answerItem>img { float: left; width: 28px; height: 28px; border-radius: 14px; margin-right: 10px; } .customerApprovalLayercontentBtn { position: fixed; bottom: 0; background: #f5f5f5; width: 420px; height: 70px; line-height: 70px; text-align: right; padding: 0 20px; } .customerApprovalLayercontentBtn>div { border-bottom: 1px solid #D9D9D9; height: 40px; line-height: 40px; text-align: left; overflow: hidden; } .customerApprovalLayercontentBtn>span { display: inline-block; line-height: 18px; color: #333; font-size: 12px; text-align: center; border: 2px solid #fff; cursor: pointer; background: #fff; height: 110px; width: 110px; margin-top: 20px; box-sizing: border-box; } .customerApprovalLayercontentBtn>span.cked { border: 2px solid #E95252; box-sizing: border-box; } .customerApprovalLayercontentBtn>span>img { float: left; margin: 10px 23px; width: 63px; height: 63px; } .customerApproval .lastVisitContent { background: #f5f5f5; font-size: 12px; padding: 5px 12px; margin-top: 8px; } .customerApproval ._class_b { color: #257BF1 !important } </style> <template> <div class="customerApproval"> <div :class="{viewBigPicLayer:true,viewBigPicLayerDisplayNone:dspNone}" @click="closePicLayer"> <i @click="closePicLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer"></i> <el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click"> <el-carousel-item v-for="(item,index) in picObj" :key="index"> <div class="inlineDiv ownScrollbarStyle"><img :src="item" /></div> </el-carousel-item> </el-carousel> </div> <viewer :images="picObj" :options='imageOptions' @inited="inited" class="viewer" ref="viewer"> <img v-for="item in picObj" :src="item" :key="item"> </viewer> <div :class="{customerApprovalLayer:showlayer}" @click="closeLayer"> <div :class="{customerApprovalLayercontentDiv:true,rightZero:isTransition}" class="ownScrollbarStyle" @click.stop> <div class="title">{{meta}}{{$t('fnc.xiangqing')}}</div> <div class="item"> <div class="topMsg"> <img v-if='!detailList.photo' src="../../assets/img/litheader.png" /> <img v-if='detailList.photo' :onerror="defaultImg" :src='detailList.photo' /> <p>{{detailList.customerName}}</p> <p class="mt5"> <i class="iconfont icon-img_dianhua fz12" style="color: #09d49d;"></i> <span class="fz14 color333">{{detailList.contact}}</span> <span class="fz14 color333">{{detailList.contactNumber}}</span> </p> <p class="fz12 color999 mt5">{{detailList.expectVisitDateTime}}</p> </div> <p v-if="lastVisitObj.visitId>0" class="fz14 mt10 color666"> <i class="iconfont icon-shijian colorccc"></i> {{$t('salesModule.HistoryVisit')}} <span class="color666 fz12">{{lastVisitObj.timestr}}</span> </p> <div v-if="lastVisitObj.visitId>0" style="border-bottom: 1px solid #ccc; padding-bottom: 10px;"> <p class="fz12 mt10">{{$t('salesModule.ProcessType')}}:{{lastVisitObj.salesProcess}}</p> <p class="fz12 mt10">{{$t('salesModule.fwRecord')}}:</p> <p v-if="lastVisitObj.remark!=''" class="lastVisitContent">{{lastVisitObj.remark}}</p> <p class="fz12 mt10">{{$t('salesModule.goutong')}}:</p> <p v-if="lastVisitObj.visitRecord!=''" class="lastVisitContent">{{lastVisitObj.visitRecord}}</p> </div> <div class="bottomMsg"> <p class="fz14 color666 mt10"> <i class="iconfont icon-ico-mingpianzhaopian fz14 colorccc"></i> {{$t('objFill.hetongziliang')}} </p> <p class="pImg" v-if="!detailList.businessCardPhotos"><span class="fz12 color333">{{$t('active.cl_zanwu')}}</span></p> <p class="pImg" v-else> <div class="_info_img" v-if="detailList.businessCardPhotos&&detailList.businessCardPhotos.length>0"> <ul class="clearfix"> <li v-for="(img,imgI) in detailList.businessCardPhotos" :key="imgI"> <img v-if="!img" src="../../assets/img/Travelslider.png" alt=""> <el-image v-if="img&&verificationFile(img,3)" :src="img" :preview-src-list="[img]"> </el-image> <div v-if="img&&verificationFile(img,1)" style="width: 50px; line-height: 50px;text-align: center;"> <span class="_wenjian_P iconfont" :class="img.substring(img.lastIndexOf('.')+1,img.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"></span> </div> <div v-if="img&&verificationFile(img,1)" class="_see_img" @click="showUpLoadFile2(img)"> <i class="iconfont icon-sousuo"></i> </div> </li> </ul> </div> </p> <p class="fz14 color666 mt10"> <i class="iconfont icon-ico-menpaizhaopian fz14 colorccc"></i> {{$t('objFill.pingtaiyhm')}} </p> <p> <div style="display: flex; flex-wrap: wrap;align-items: center;"> <el-tag :key="tag" v-for="tag in detailList.platformUserNameList" :disable-transitions="false" size="medium" style="margin-right: 5px;margin-bottom: 3px;"> {{tag}} </el-tag> </div> </p> <p class="fz14 color666 mt10"> <i class="iconfont icon-ico-menpaizhaopian fz14 colorccc"></i> {{$t('salesModule.doorPhoto')}} </p> <p class="pImg" v-if="!detailList.housePhotos"><span class="fz12 color333">{{$t('active.cl_zanwu')}}</span> </p> <p class="pImg" v-else> <img @click="getPic(detailList.housePhotos,index)" :key="index+10000" v-if='detailList.housePhotos.length==1' v-for="(i,index) in detailList.housePhotos" :src="i+'?x-oss-process=image/resize,m_mfit,h_100,w_300'" /> <img @click="getPic(detailList.housePhotos,index)" v-if='detailList.housePhotos.length==2||detailList.housePhotos.length==4' v-for="(i,index) in detailList.housePhotos" :src="i+'?x-oss-process=image/resize,m_pad,w_169,h_150,color_333333'" :key="index+20000" /> <img @click="getPic(detailList.housePhotos,index)" v-if='detailList.housePhotos.length==3||detailList.housePhotos.length>=5' v-for="(i,index) in detailList.housePhotos" :key="index+30000" :src="i+'?x-oss-process=image/resize,m_pad,h_100,w_100,color_333333'" /> </p> <p class="fz14 color666 mt10"> <i class="iconfont icon-ico_yingyezhizhao fz14 colorccc"></i> {{$t('salesModule.BusinessLicense')}} </p> <p class="pImg" v-if="!detailList.images"><span class="fz12 color333">{{$t('active.cl_zanwu')}}</span></p> <p class="pImg" v-else> <img @click="getPic(detailList.images,index)" v-if='detailList.images.length==1' v-for="(i,index) in detailList.images" :key="index+40000" :src="i+'?x-oss-process=image/resize,m_mfit,h_100,w_300'" /> <img @click="getPic(detailList.images,index)" v-if='detailList.images.length==2||detailList.images.length==4' v-for="(i,index) in detailList.images" :src="i+'?x-oss-process=image/resize,m_pad,w_169,h_150,color_333333'" :key="index+50000" /> <img @click="getPic(detailList.images,index)" v-if='detailList.images.length==3||detailList.images.length>=5' v-for="(i,index) in detailList.images" :key="index+60000" :src="i+'?x-oss-process=image/resize,m_pad,h_100,w_100,color_333333'" /> </p> <p class="fz14 color666 mt10"> <i class="iconfont icon-fangwenjilu fz14 colorccc"></i> {{$t('salesModule.kaifaDetail')}} </p> <p class="fz12 color333 mt10"> {{detailList.remark==''?$t('pub.noMsg'):detailList.remark}} </p> <p class="fz14 color666 mt10"> <i class="iconfont icon-goutongneirong fz14 colorccc"></i> {{$t('salesModule.VisitJG')}} </p> <p class="fz12 color333 mt10"> {{detailList.visitRecord==''?$t('pub.noMsg'):detailList.visitRecord}} </p> <p class="fz14 mt10" style="color: #4779FF;" v-show="customerStatus==2||customerStatus==3"> <i class="iconfont icon-shenpiyijian fz14" style="color: #4779FF;"></i> {{$t('salesModule.SPYJ')}} </p> <div class="answerItem" v-for="item in answerDetailList"> <img v-if='!item.emPhoto' src="../../assets/img/litheader.png" /> <img v-if='item.emPhoto' :onerror="defaultImg" :src='item.emPhoto' /> <p> <span class="fz14 color333">{{item.createBy}}</span> <span class="fz12 color999">{{item.createDate}}</span> </p> <p class="mt5" style="color: #E95252;" v-show='item.adviceStatus==2'> {{$t('salesModule.ApprovalRejected')}}</p> <p style="color: #09D49D;" v-show='item.adviceStatus==1'>{{$t('salesModule.ApprovalPassed')}}</p> <p class="fz12 color333 mt5" style="margin-left: 35px; background: #f5f5f5; padding: 10px;"> {{item.adviceContent}}</p> </div> </div> </div> <div class="customerApprovalLayercontentBtn" v-show="(customerStatus==0||customerStatus==1)&&isOk==-1"> <input type="button" class="normalBtn" :value="$t('visa.v_tongguo')" @click="isOk=1;addMsg.AdviceStatus=1" /> <input type="button" class="hollowFixedBtn" :value="$t('visa.v_jujue')" @click="isOk=0;addMsg.AdviceStatus=2" /> </div> <div class="customerApprovalLayercontentBtn" style="height: 190px;" v-show="isOk==0"> <div> <span class="fz14 color333">{{$t('salesModule.RejectJJ')}}</span> </div> <p class="mt10"> <el-input type="textarea" v-model='addMsg.AdviceContent' maxlength='200'></el-input> </p> <input type="button" class="normalBtn" :value="$t('adm.adm_publish')" @click="saveApproval()" /> <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="isOk=-1" /> </div> <div class="customerApprovalLayercontentBtn" style="height: 250px; text-align: center;" v-show="isOk==1"> <div> <span class="fz14 color333">{{$t('salesModule.ChoiceCustomer')}}</span> </div> <span :class="{cked:addMsg.IsMember==2}" @click="addMsg.IsMember=2"> <img src="../../assets/img/notVip.png" /> {{$t('salesModule.NormalCustomer')}} </span> <span :class="{cked:addMsg.IsMember==1}" @click="addMsg.IsMember=1"> <img src="../../assets/img/isVip.png" /> {{$t('salesModule.MemberCustomer')}} </span> <p class="clearfix"></p> <input type="button" class="normalBtn mg0" :value="$t('restaurant.res_confirm')" @click="saveApproval()" /> <input type="button" class="hollowFixedBtn mg0" :value="$t('pub.cancelBtn')" @click="isOk=-1" /> </div> </div> </div> <div class="approvalNav"> <li :class="{active:type==-1}" @click="type=-1;clickGetList(-1)"> {{$t('salesModule.AllApproval')}} <div class="divActive" v-show="type==-1"></div> </li> <li :class="{active:type==1}" @click="type=1;clickGetList(1)"> {{$t('salesModule.Pending')}} <div class="divActive" v-show="type==1"></div> </li> <li :class="{active:type==2}" @click="type=2;clickGetList(2)"> {{$t('salesModule.YSP')}} <div class="divActive" v-show="type==2"></div> </li> </div> <table class="customerApprovalDetailTable" border="0" cellspacing="0" cellpadding="0" v-loading='loading'> <tr> <th width="20%">{{$t('salesModule.Stores')}}</th> <th width="10%">{{$t('hotel.suplier_contact')}}</th> <th width="15%">{{$t('hotel.table_tel')}}</th> <th width="15%">{{$t('salesModule.SaveTime')}}</th> <th width="10%">{{$t('salesModule.Laiyuan')}}</th> <th width="15%">{{$t('hotel.hotel_status')}}</th> <th width="15%">{{$t('admin.admin_operate')}}</th> </tr> <tr v-for="item in list"> <td class="fz16">{{item.customerName}}<i class="iconfont icon-shimingrenzheng" :class="{'_class_b': item.RealNameAuthentication===1}"></i></td> <td> {{item.contact}} </td> <td>{{item.contactNumber}}</td> <td>{{item.expectVisitDateTime}}</td> <td>{{item.emName}}</td> <td> <img src="../../assets/img/dsp.png" v-show="item.customerStatus==0||item.customerStatus==1" /> <img src="../../assets/img/ysp.png" v-show="item.customerStatus==2||item.customerStatus==3" /> </td> <td> <input type="button" :value="$t('salesModule.CheckDetails')" class="normalBtn" style="margin-left: 0;" @click="getDetail(item)" /> </td> </tr> </table> <el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size=msg.pageSize :total=total> </el-pagination> </div> </template> <script> export default { data() { return { imageOptions: { navbar: false, title: false }, lastVisitObj: {}, meta: '', isOk: -1, type: -1, loading: false, isTransition: false, showlayer: false, msg: { pageIndex: 1, pageSize: 10, CustomerStatus: -1, }, addMsg: { CustomerId: 0, AdviceStatus: 0, AdviceContent: '', VisitId: -1, IsMember: 2, }, customerStatus: -1, picObj: [], dspNone: true, initialIndex: 0, defaultImg: 'this.src="' + require("../../assets/img/litheader.png") + '"', currentPage: 1, total: 0, list: [], detailList: {}, answerDetailList: [] } }, methods: { showUpLoadFile2(i) { // 预览上传文件 if (i.substring(i.lastIndexOf('.') + 1, i.length).toUpperCase() == 'PDF') { this.previewPDF(i) } else { window.open("https://view.officeapps.live.com/op/view.aspx?src=" + i) } }, inited(viewer) { this.$viewer = viewer }, saveApproval() { if (this.addMsg.AdviceStatus == 1) { this.addMsg.AdviceContent = '' } else { this.addMsg.IsMember = 2 } this.apipost('app_today_visit_SetCustomerAdvice', this.addMsg, res => { if (res.data.resultCode == 1) { this.$message.success(res.data.message) this.closeLayer() this.getList() } else { this.$message.error(res.data.message) } }, err => {}) }, closePicLayer() { this.dspNone = true; }, getPic(obj, index) { this.picObj = obj; this.$viewer.show() }, getDetail(obj) { this.meta = obj.customerName this.addMsg.VisitId = obj.visitID this.addMsg.CustomerId = obj.customerId this.customerStatus = obj.customerStatus this.apipost('app_today_visit_GetVisitByCustomerIDEntity', { customerId: obj.customerId }, res => { if (res.data.resultCode == 1) { this.openLayer() this.detailList = res.data.data.customerInfo } else {} }, err => {}) this.apipost('app_today_visit_GetCustomerAdvice', { CustomerId: obj.customerId }, res => { if (res.data.resultCode == 1) { this.answerDetailList = res.data.data } else {} }, err => {}) this.apipost('app_get_my_GetVisitPlanLastList', { empId: obj.creatBy, customerId: obj.customerId }, res => { if (res.data.resultCode == 1) { this.lastVisitObj = res.data.data } else {} }, err => {}) }, clickGetList(type) { this.msg.CustomerStatus = type this.msg.pageIndex = 1 this.currentPage = 1 this.getList() }, getList() { this.loading = true this.apipost('app_today_visit_GetMyDeptCustomerList', this.msg, res => { if (res.data.resultCode == 1) { this.list = res.data.data.pageData this.total = res.data.data.count this.loading = false } else { this.$message.error(res.data.message) } }, err => {}) }, openLayer() { this.showlayer = true; this.isTransition = true; }, closeLayer() { let _this = this; setTimeout(function () { _this.showlayer = false; }, 300) this.isTransition = false; this.isOk = -1 this.addMsg.AdviceContent = '' this.addMsg.IsMember = 2 }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList() }, resetPageIndex() { this.msg.pageIndex = 1; this.currentPage = 1 }, }, mounted() { this.getList() } } </script>