<template> <view> <!-- 状态栏 --> <status-nav :backgroudColor="publicColor" :tabcolor="publicColor" :statusTitle="true" :statusBack="false"></status-nav> <image src="/static/public/staff-head.png" class="blue-img"></image> <view class="mar-zy32 posir pad-x260" :style="{paddingTop:statusHNH+'px'}"> <view class="radius20 posir gao"> <view class="posia" :style="{top:`-${gaoh*0.4}px`,height:gaoh+'px'}"></view> <view class="disjbac"> <view class="disac colf"> <!-- 头像 --> <image @tap="openXiao" class="mar-sx30" :src="userInfo.headimgurl || ''" mode="aspectFill"></image> <view class="mar-z30"> <!-- 昵称 --> <view class="disac"> <view class="fon36 bold clips1" style="max-width: 260rpx;">{{userInfo.nickname || ''}}</view> <view class="gao-name">{{userInfo.level.name}}</view> </view> <view class="disac mar-s10" v-if="userPhone!==''"> <image src="/static/public/phone-02.png" class="gao-phone" mode=""></image> <!-- 手机号 --> <view class="fon24 mar-z10">{{userPhone}}</view> </view> </view> </view> <view class="mar-y25 disac"> <!-- 二维码 --> <image @tap="tuneUpqr" src="/static/public/staff-qro.png" class="gao-m" mode=""></image> <!-- 前进键 --> <view @tap="goNodifyData" class="disac gao-next-box"> <!-- <image class="" src="/static/public/next-white.png" mode="aspectFill"></image> --> <image class="" src="/static/public/set-icon.png" mode="aspectFill"></image> </view> </view> </view> <view class="disjbac posir mar-s40 fon24 pad-zy50" style="z-index: 1;color: #F8CE59;"> <view> <view class="disac"><span class="bold mar-y20">VIP</span>{{userInfo.level.name}}</view> </view> <navigator url="/pagesA/member/member" hover-class="none"> <view class="disac"> <view>更多权益</view> <image src="/static/public/next-yellow.png" class="white-next" mode=""></image> </view> </navigator> </view> </view> <view class="disja posir" style="z-index: 1;margin-top: 75rpx;"> <view @tap="chooseone(indext)" class="disac fc flexs width25" v-for="(itemt,indext) in tongList" :key="indext"> <view class="fon28 bold mar-sx20 clips1">{{itemt.num}}<text v-if="indext==2">天</text><text v-if="indext==3">人</text></view> <view class="fon28 mar-x25">{{itemt.title}}</view> </view> </view> <!-- 员工功能 v-if="userInfo.is_staff && yuanList.length!=0" --> <view v-if="userInfo.is_staff==1" class="bacf radius20 mar-s20 pad20"> <view class="mar-x30 fon28 bold col3">员工功能</view> <view class="disja yuan-box"> <view @tap="chooseYitem(indexy)" v-for="(itemy,indexy) in yuanList" :key="indexy"> <view class="disac fc"> <image :src="itemy.src" mode="aspectFill"></image> <view class="fon28 mar-s20 mar-x10">{{itemy.title}}</view> </view> <block v-if="indexy<yuanList.length-1"> <view class="xian-right"></view> </block> </view> </view> </view> <!-- 我的订单 --> <view class="bacf radius20 mar-s20 pad20"> <view class="mar-x30 fon28 col3 disjbac"> <view>我的订单</view> <navigator url="/pagesA/myOrder/myOrder?index=0" hover-class="none"> <view class="disac"> <view class="fon24 col9">全部</view> <image src="/static/public/nextM.png" class="white-next" mode=""></image> </view> </navigator> </view> <view class="disja fon28 col3"> <view @tap="chooseOrderStatus(indexo)" v-for="(itemo,indexo) in myOrderList" :key="indexo"> <view class="disac fc posir"> <image :src="itemo.src" class="icon-img" mode="aspectFill"></image> <view class="mar-s20 mar-x10">{{itemo.title}}</view> <view class="posia red-num" style="right: 0;top: 0;" v-if="itemo.num!=0">{{itemo.num}}</view> </view> </view> </view> </view> <!-- 广告 --> <image @tap="goPage" class="width100 radius20 mar-sx20" :src="guangImg" style="height: 160rpx;" mode="aspectFill"></image> <!-- 功能列表① --> <view class="bacf radius20"> <view class="disjbac fon28 col3 fw"> <view @tap="goPageNew(indexm)" v-for="(itemm,indexm) in moneyList" :key="indexm" class="mar-s20 mar-x20 width25"> <view class="disac fc"> <image :src="itemm.src" class="icon-img" mode="aspectFill"></image> <view class="mar-s20 mar-x10">{{itemm.title}}</view> </view> </view> </view> </view> <!-- 功能列表② --> <view class="bacf radius20 mar-s20"> <view class="disac fon28 col3 fw"> <view @tap="goPageTwo(indexf)" v-for="(itemf,indexf) in toolsList" :key="indexf" class="mar-s20 mar-x20 width25"> <view class="disac fc posir"> <image :src="itemf.src" class="icon-img" mode="aspectFill"></image> <view class="mar-s20 mar-x10">{{itemf.title}}</view> <view v-if="itemf.title=='消息通知' && itemf.num!=0" class="posia red-num">{{itemf.num}}</view> </view> </view> </view> </view> </view> <!-- 我的二维码弹框 --> <view v-if="isQrcode" class="posAll disjcac"> <view> <view class="bacf radius20" style="margin: 0 130rpx;"> <view class="fon28 col3 tc pad-s40">我的二维码</view> <image :src="myqr" class="person-m" mode="aspectFill"></image> </view> <view class="disjcac"> <image @tap="closeqr" class="mar-s50 close-m" src="/static/public/qrcodec.png" mode="aspectFill"></image> </view> </view> </view> <!-- 专属客服 --> <view v-if="zCustomer" class="posAll disjcac"> <view style="width: 80%;"> <view class="bacf radius20 pad-sx40" style=""> <view class="fon32 bold col3 tc pad-x40" v-if="customerInfo.service_name!=''">我的专属客服</view> <view class="fon28 col3 disjb mar20" v-if="customerInfo.service_name!=''">客服名称:{{customerInfo.service_name}}</view> <view class="fon28 col3 disjb mar20" v-if="customerInfo.service_phone!=''">客服手机号:{{customerInfo.service_phone}}<span @tap="countCustomer(customerInfo.service_phone)" class="pcol">联系客服</span></view> <view class="fon28 col3 disjb mar20" v-if="customerInfo.service_wechat!=''">客服微信号:{{customerInfo.service_wechat}}<span @tap="copyWechat" class="pcol">复制</span></view> <view style="display: flex;align-items: center;flex-direction: column;width: 100%;"> <image v-if="customerImg!=''" :src="customerImg" class="person-m" style="margin-bottom: 40rpx;" mode="aspectFill"></image> <view class="fon28 colf tc radius10" @tap="saveImg" style="width: 200rpx; padding: 16rpx;background-color: #38CE51;margin: 0 auto;">保存</view> </view> <view class="fon28 col9 tc pad-s40" v-if="customerInfo.service_phone==''">暂无专属客服</view> </view> <view class="disjcac"> <image @tap="closeCustomer" class="mar-s50 close-m" src="/static/public/qrcodec.png" mode="aspectFill"></image> </view> </view> </view> <!-- 底部tab --> <foot-tab :titleList="titleList" :imgList="imgList" :newcurrent='4'></foot-tab> <!-- 签到弹框 --> <view v-if="isQian" class="sigin-box"> <view>{{contentVal}}</view> </view> <!-- 用户信息授权,手机号授权 --> <auth-userInfo-mobileInfo></auth-userInfo-mobileInfo> </view> </template> <script> import {base64ToPath} from '@/jsFile/base64-src.js'; import {checkBanner,themeEv} from '@/jsFile/publicAPI.js'; export default { data() { return { statusHNH:uni.getSystemInfoSync().statusBarHeight + 54, tongList:[ {num:'0',title:'我的积分'}, {num:'0',title:'孔雀币'}, {num:'0',title:'连续签到'}, {num:'0',title:'我的分享人'} ], yuanList:[], //'customer-list','footmarks','scan' zanCyuanList:[ {src:'/static/public/keh.png',title:'客户列表',rule:'customer-list'}, {src:'/static/public/zu.png',title:'用户足迹',rule:'footmarks'}, {src:'/static/public/scan.png',title:'扫码签到',rule:'scan'}, {src:'/static/public/customer-check.png',title:'客服查询',rule:'customer-list'}, {src:'/static/public/scan.png',title:'核销扫码',rule:'check-scan'}, ], myOrderList:[//我的订单状态 {src:'/static/public/dai-fu60.png',title:'待付款',num:0}, {src:'/static/public/dai-fa60.png',title:'待发货',num:0}, {src:'/static/public/dai-shou60.png',title:'待收货',num:0}, {src:'/static/public/wan-60.png',title:'已完成',num:0}, ], moneyList:[ {src:'/static/public/integral60.png',title:'积分商城'}, {src:'/static/public/address60.png',title:'地址管理'}, {src:'/static/public/day60.png',title:'日程提醒'}, {src:'/static/public/ren60.png',title:'活动任务'}, {src:'/static/public/quan60.png',title:'优惠券'}, {src:'/static/public/kong60.png',title:'孔雀币'}, {src:'/static/public/scor60.png',title:'积分管理'}, {src:'/static/public/signIn.png',title:'积分签到'}, ], toolsList:[ {src:'/static/public/staff-yue60.png',title:'自助预约',num:''}, {src:'/static/public/staff-hai60.png',title:'个人海报',num:''}, {src:'/static/public/staff-collection60.png',title:'收藏',num:''}, {src:'/static/public/staff-share.png',title:'分享中心',num:''}, {src:'/static/public/staff-msg60.png',title:'消息通知',num:''}, {src:'/static/public/diary.png',title:'我的日记',num:''}, {src:'/static/public/staff-about60.png',title:'关于我们',num:''}, {src:'/static/public/staff-tou60.png',title:'投诉与建议',num:''}, ], isQrcode:false,//是否显示我的二维码 userInfo:{},//用户信息 gaoh:uni.getStorageSync('gao'), myqr:'/static/public/qrcode.png', is_worker:'',//是否为职工账号,0否(客户), 1是 is_doctor:'',//是否为医生,0否,1是 is_servicer:'',//是否为客服,0否,1是 is_staff:'',//是否为普通员工,0否,1是 isQian:false, bannerList:[], guangImg:'', guanggao:'', userToken:'', contentVal:'',//扫码后的提示内容 userPhone:'', timer:null, nonce_str:'', zCustomer:false, customerImg:'', customerInfo:'', times:0, openSettingBtnHidden: true,//是否授权 } }, onUnload: function() { //相当于监听返回按钮 let pages = getCurrentPages(); // console.log('pages:',pages); }, computed: { // 底部标题 titleList() { return this.$store.state.titleList }, // 底部图标 imgList() { return this.$store.state.imgList }, // 主题颜色 publicColor() { return this.$store.state.publicColor } }, onShow() { uni.removeStorageSync('uinfo')//清空用户缓存信息 uni.removeStorageSync('shareAll')//清空分享中心里的统计信息 if(uni.getStorageSync('phone_active')!=0 && uni.getStorageSync('is_active')!=0){ this.checkInfo(); } }, onUnload() { // 关闭我的二维码弹框 this.closeqr(); }, onLoad(options) { uni.setStorageSync('channel',options.channel); if(uni.getStorageSync('gao')==''){ const query = wx.createSelectorQuery() query.select('.gao').boundingClientRect((rect) => { uni.setStorageSync('gao',rect.height) this.gaoh = rect.height }).exec() } this.checkSwi() }, methods: { countCustomer(phone){//拨打电话 const res = uni.getSystemInfoSync(); if(res.platform=='ios'){ uni.makePhoneCall({ phoneNumber:phone, success: () => {}, fail: () => {} }) } else { uni.showActionSheet({ itemList:[phone,'呼叫'], itemColor:'#3875F6', success: (res) => { if(res.tapIndex==1){ uni.makePhoneCall({ phoneNumber:phone }) } } }) } }, copyWechat(){//复制微信号 if(this.times==0){ this.times++; this.$toolAll.tools.clickCopy(this.customerInfo.service_wechat); this.$toolAll.tools.showToast('复制成功'); setTimeout(()=>{ this.times = 0; },2000) } }, saveImg(e){//保存二维码 //获取相册授权 uni.getSetting({ success:(res)=> { if (!res.authSetting['scope.writePhotosAlbum']) { uni.authorize({ scope: 'scope.writePhotosAlbum', success:()=> { //这里是用户同意授权后的回调 this.saveImgToLocal(); }, fail:()=> {//这里是用户拒绝授权后的回调 this.openSettingBtnHidden=false } }) } else {//用户已经授权过了 this.saveImgToLocal(); } } }) }, saveImgToLocal(){//保存图片 this.$toolAll.tools.showToast('正在保存','loading'); uni.downloadFile({ url: this.customerImg,//图片地址 success: (res) =>{ if (res.statusCode === 200){ uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: ()=> { this.$toolAll.tools.showToast('保存成功'); }, fail: ()=> { this.$toolAll.tools.showToast('保存失败'); } }); } } }) }, tuneUpqr(){//调起二维码弹框 this.isQrcode = true; clearInterval(this.timer); this.myqr = ''; this.nonce_str=''; this.checkGM(); this.timer = setInterval(()=>{ if(this.nonce_str!=''){ this.$requst.post('user/check-scan',{nonce_str:this.nonce_str}).then(res=>{ if(res.code==0){ if(res.data.result==1){ this.$toolAll.tools.showToast('已签到'); this.isQrcode = false; clearInterval(this.timer); } } }) } },3000) setTimeout(()=>{ this.isQrcode = false; clearInterval(this.timer); },60000) }, // 关闭我的二维码弹框 closeqr(){ this.isQrcode = false; clearInterval(this.timer); }, chooseone(index){ if(index==2){uni.navigateTo({url:'/pagesA/signIn/signIn'})} if(index==3){uni.navigateTo({url:'/pagesB/mysharer/mysharer'})} }, goPageNew(index){ if(index==0){uni.navigateTo({url:'/pagesA/pointsMall/pointsMall'})} if(index==1){uni.navigateTo({url:'/pagesA/myAddress/myAddress'})} if(index==2){uni.navigateTo({url:'/pagesB/messagecenter/messagecenter?index=true&comeNum=0'})} if(index==3){uni.navigateTo({url:'/pagesA/activityTask/activityTask'})} if(index==4){uni.navigateTo({url:'/pagesA/coupon/coupon'})} if(index==5){uni.navigateTo({url:'/pagesA/peacockCoin/peacockCoin'})} if(index==6){uni.navigateTo({url:'/pagesA/integralManage/integralManage'})} if(index==7){uni.navigateTo({url:'/pagesA/signIn/signIn'})} }, goPageTwo(index){//自助预约、个人海报、收藏、分享中心、消息通知、我的日记、投诉与建议、关于我们、专属客服 let newUrl = '' if(this.toolsList[index].title=='自助预约') newUrl = '/pagesA/makeAnPppointment/makeAnPppointment' if(this.toolsList[index].title=='个人海报') newUrl = '/pagesB/personalPoster/personalPoster' if(this.toolsList[index].title=='收藏') newUrl = '/pagesB/myCollection/myCollection' if(this.toolsList[index].title=='分享中心') newUrl = '/pagesB/sharingCenter/sharingCenter' if(this.toolsList[index].title=='消息通知') newUrl = '/pagesB/messagecenter/messagecenter?comeNum=0' if(this.toolsList[index].title=='我的日记') newUrl = '/pagesA/my-diary/my-diary' if(this.toolsList[index].title=='关于我们') newUrl = '/pagesB/aboutUs/aboutUs' if(this.toolsList[index].title=='投诉与建议') newUrl = '/pagesA/suggestions/suggestions' if(this.toolsList[index].title=='专属客服'){ this.$requst.post('user/my-service').then(res=>{ if(res.code==0){ this.customerInfo = res.data; if(this.customerInfo.service_qr!=''){ this.customerImg = this.$http + this.customerInfo.service_qr; } this.zCustomer = true; } }) } else { uni.navigateTo({ url:newUrl }) } }, closeCustomer(){ this.zCustomer = false; }, chooseOrderStatus(index){ let statusIndex = '' if(index==0) statusIndex = 1; if(index==1) statusIndex = 2; if(index==2) statusIndex = 4; if(index==3) statusIndex = 5; uni.navigateTo({ url:'/pagesA/myOrder/myOrder?index='+statusIndex }) }, goPage(){ uni.navigateTo({ url:this.guanggao }) }, checkSwi(){ checkBanner({position:'personal-center-banner'}).then(res=>{ // console.log('res',res); if(res.code==0){ if(res.data.length!=0){ this.guangImg = this.$http + res.data[0].src this.guanggao = res.data[0].url // res.data.forEach(item=>{ // let isVideo = false // if(item.type!='img') isVideo = true // let banObj = { // imgSrc:this.$http + item.src, // url:item.url, // isVideo:isVideo, // poster:this.$http + item.src, // } // this.bannerList.push(banObj) // }) } } }) }, checkGM(){//查询个人二维码事件 uni.showToast({ title:'正在生成二维码', icon:'none', duration:100000 }) this.$requst.post('user/personal-qr').then(res=>{ // console.log('个人二维码:',res); if(res.code==0){ this.nonce_str = res.data.nonce_str; base64ToPath(res.data.qr).then(path => { this.myqr = path uni.hideToast(); uni.setStorageSync('imgSrc',path) }).catch(error => {}) } },error=>{}) }, checkInfo(){ this.$requst.post('user/info').then(res=>{ // console.log('用户信息:',res); if(res.code==0 && res.data.length!=0) { this.userInfo = res.data; uni.setStorageSync('userId',res.data.id); uni.setStorageSync('phone',this.userInfo.mobile); this.userPhone = this.$toolAll.tools.hideMPhone(this.userInfo.mobile) this.tongList[0].num = res.data.score;//个人积分 this.tongList[1].num = res.data.coin;//个人孔雀币 this.tongList[2].num = res.data.continuity_sign;//个人连续签到 this.tongList[3].num = res.data.share_users.total;//分享人总数 this.toolsList[4].num = res.data.unread_messages;//消息总数 this.toolsList[5].num = res.data.unread_messages;//消息总数 this.myOrderList[0].num = res.data.order_count.waiting;//待支付总数 this.myOrderList[1].num = res.data.order_count.paid;//待发货总数 this.myOrderList[2].num = res.data.order_count.shipped;//待收货总数 this.is_worker = res.data.is_worker;//是否为职工账号,0否(客户), 1是 this.is_doctor = res.data.is_doctor;//是否为医生,0否,1是 this.is_servicer = res.data.is_servicer;//是否为客服,0否,1是 this.is_staff = res.data.is_staff;//是否为普通员工,0否,1是 if(res.data.customer_service!=0 && this.toolsList.length==8){ this.toolsList.unshift({src:'/static/public/customer-check.png',title:'专属客服',num:''}) } uni.setStorageSync('shareAll',res.data) if(res.data.rules.length!=0){ // 判断是否有分配客服的权限 let isFen = res.data.rules.indexOf('customer-allot'); if(isFen!=-1){ uni.setStorageSync('isFen',true); } else { uni.setStorageSync('isFen',false); } let result = this.zanCyuanList.filter(item => res.data.rules.some(itemt => itemt===item.rule)) this.yuanList = result uni.setStorageSync('rules',res.data.rules) } else this.yuanList = [] } },error=>{}) }, chooseYitem(index){//员工功能事件 // console.log('当前选项:',this.yuanList[index].title); if(this.yuanList[index].title=='客户列表') { uni.navigateTo({ url:'/pagesB/customerList/customerList' }) } if(this.yuanList[index].title=='用户足迹') { uni.navigateTo({ url:'/pagesB/userFootprint/userFootprint' }) } if(this.yuanList[index].title=='扫码签到') { wx.scanCode({ // 微信扫码 调起客户端扫码界面进行扫码 complete: (res) => {}, //接口调用结束的回调函数(调用成功、失败都会执行) fail: (res) => {}, //接口调用失败的回调函数 onlyFromCamera: false, //是否只能从相机扫码,不允许从相册选择图片,这里是只允许相机扫码 scanType: ['qrCode'], // scanType:扫码类型 : 二维码 success: (rt) => { // 接口调用成功的回调函数 if(rt.result.slice(0,1)=='{'){ let uc = JSON.parse(rt.result).user_coding; let ns = JSON.parse(rt.result).nonce_str;//随机码 console.log(rt); this.$requst.post('user/sign-in',{user_coding:uc,nonce_str:ns}).then(res=>{ // console.log('执行扫码事件:',res); if(res.code==0){ this.isQian = true; this.contentVal = "签到成功"; setTimeout(()=>{ this.isQian = false },2000) } },error=>{}) } else this.$toolAll.tools.showToast('请出示正确的码'); } }) } if(this.yuanList[index].title=='核销扫码') { wx.scanCode({ // 微信扫码 调起客户端扫码界面进行扫码 complete: (res) => {}, //接口调用结束的回调函数(调用成功、失败都会执行) fail: (res) => {}, //接口调用失败的回调函数 onlyFromCamera: false, //是否只能从相机扫码,不允许从相册选择图片,这里是只允许相机扫码 scanType: ['qrCode'], // scanType:扫码类型 : 二维码 success: (rt) => { // 接口调用成功的回调函数 let narr = rt.result.split('H'); if(narr[1]=='true'){//体验券核销 this.$requst.post('staff/coupon/write-off-experience-coupon',{coupon_id:narr[0],secret:narr[2],account_id:narr[3]}).then(res=>{ this.isQian = true if(res.code==0){ this.contentVal = "核销成功"; } else { this.contentVal = res.msg; } setTimeout(()=>{ this.isQian = false },2000) },error=>{}) } else {//订单核销 this.$requst.post('order/check',{order_coding:narr[0],id:narr[1],check_user:this.userInfo.id}).then(res=>{ this.isQian = true if(res.code==0){ this.contentVal = "核销成功"; } else { this.contentVal = res.msg; } setTimeout(()=>{ this.isQian = false },2000) },error=>{}) } } }) } if( this.yuanList[index].title=='客服查询') { uni.navigateTo({ url:'/pagesB/customerCheck/customerCheck' }) } }, goNodifyData(){//去修改资料页面 uni.setStorageSync('uinfo',this.userInfo) uni.navigateTo({ url:'/pagesA/nodifyData/nodifyData' }) }, } } </script> <style> </style>