jwyu il y a 3 ans
Parent
commit
1019d427ba

+ 2 - 3
custom-tab-bar/index.wxss

@@ -4,19 +4,18 @@
   left: 0;
   right: 0;
   height: 48px;
-  background: white;
+  background: #fff;
   display: flex;
   padding-bottom: env(safe-area-inset-bottom);
 }
 
 .tab-bar-border {
-  background-color: rgba(0, 0, 0, 0.33);
+  background: rgba(203, 203, 203, 0.16);
   position: absolute;
   left: 0;
   top: 0;
   width: 100%;
   height: 1px;
-  transform: scaleY(0.5);
 }
 
 .tab-bar-item {

+ 3 - 2
manifest.json

@@ -1,5 +1,5 @@
 {
-    "name" : "",
+    "name" : "hongze_yb_xcx",
     "appid" : "",
     "description" : "",
     "versionName" : "1.0.0",
@@ -58,7 +58,8 @@
             "minified" : true,
             "postcss" : true
         },
-        "usingComponents" : true
+        "usingComponents" : true,
+        "requiredBackgroundModes": ["audio"]
     },
     "mp-alipay" : {
         "usingComponents" : true

+ 7 - 4
mixin/index.js

@@ -4,12 +4,13 @@ moment.locale('zh-cn');
 // 引入全局配置的图片资源地址 
 import {globalImgUrls} from "../utils/config"
 import store from '@/store'
+import { unix } from "../utils/moment-with-locales.min";
 
 module.exports = {
   watch: {
     tabbar(){
-      const page = this.$mp.page;
-      if( page&&(page.route==='pages/buy/buy'||
+      const page = this.$mp&&this.$mp.page;
+      if(page&&(page.route==='pages/buy/buy'||
           page.route=='pages/report/report'||
           page.route=='pages/chart/chart'||
           page.route=='pages/activity/activity'||
@@ -48,6 +49,7 @@ module.exports = {
     return {
       globalImgUrls:globalImgUrls,// 图片资源
       userInfo:{},//个人信息
+      globalBgMusic:uni.getBackgroundAudioManager()
     };
   },
   onLoad() {
@@ -59,7 +61,7 @@ module.exports = {
   methods: {
     // 设置tabbar的选中态
     handleSetTabBarItem(){
-      const page = this.$mp.page;
+      const page = this.$mp&&this.$mp.page;
       const tabbarList=this.$store.state.user.tabbarList
       if( page.route==='pages/buy/buy'||
           page.route=='pages/report/report'||
@@ -75,6 +77,7 @@ module.exports = {
         }
       }
       
-    }
+    },
+
   },
 };

+ 443 - 190
pages-activity/detail.vue

@@ -1,264 +1,517 @@
 <template>
-  <view class="activity-detail" v-if="info">
-        <view class="top-wrap" :style="'background-image:url('+info.speakerBackgroundPic+')'">
-            <view class="status status-before" v-if="info.activityState===1">未开始</view>
-            <view class="status status-before" v-if="info.activityState===2">进行中</view>
-            <view class="status status-before" v-if="info.activityState===3">已结束</view>
-            <view class="title">{{info.activityTypeName}}</view>
-            <view class="name">主讲人:{{info.speaker}}</view>
-            <view class="time">活动时间:{{info.startTime| formatActivityTime(info.endTime)}}</view>
-            <view class="flex city" v-if="info.activityTypeId===3">
-              <image src="./static/position.png" model="aspectFill"></image>
-              <text>{{info.city}}</text>
+    <view class="activity-detail" v-if="info">
+        <view
+            class="top-wrap"
+            :style="'background-image:url(' + info.speakerBackgroundPic + ')'"
+        >
+            <view class="status status-before" v-if="info.activityState === 1"
+                >未开始</view
+            >
+            <view class="status status-before" v-if="info.activityState === 2"
+                >进行中</view
+            >
+            <view class="status status-before" v-if="info.activityState === 3"
+                >已结束</view
+            >
+            <view class="title">{{ info.activityTypeName }}</view>
+            <view class="name">主讲人:{{ info.speaker }}</view>
+            <view class="time"
+                >活动时间:{{
+                    info.startTime | formatActivityTime(info.endTime)
+                }}</view
+            >
+            <view class="flex city" v-if="info.city">
+                <image src="./static/position.png" model="aspectFill"></image>
+                <text>{{ info.city }}</text>
             </view>
         </view>
-        <view class="intro-wrap">{{info.activityName}}</view>
+        <view class="intro-wrap">{{ info.activityName }}</view>
+        
 
-        <view class="info-wrap" v-if="info.activityState!==3">
-            <view class="flex item" v-for="item in infoList" :key="item.label" @click="handleClickInfoItem(item)">
-                <view class="label">{{item.label}}:</view>
-                <view :class="['content',item.color&&'yellow-color']">{{item.text}}</view>
+        <!-- 音频 -->
+        <view class="audio-wrap" v-if="info.activityState === 3">
+            <view
+                class="audio-item"
+                v-for="item in audioList"
+                :key="item.voiceUrl"
+            >
+                <image 
+                  class="icon" 
+                  :src="activeAudioUrl==item.voiceUrl?'./static/audio-doing.png':'./static/audio-play.png'" 
+                  model="aspectFill" 
+                  @click="handlePlayAudio(item)">
+                </image>
+                <view class="name">{{ item.voiceName }}</view>
+                <view class="time">{{ item.voicePlaySeconds|formarVoiceTime }}</view>
             </view>
         </view>
 
-        <!-- 音频 -->
-        <view class="audio-wrap" v-if="info.activityState===3">
-            <view class="audio-item" v-for="item in audioList" :key="item.voiceUrl">
-                <image class="icon" src="./static/audio-play.png" model="aspectFill"></image>
-                <view class="name">{{item.voiceName}}</view>
-                <view class="time">{{item.voicePlaySeconds}}</view>
+        <view class="info-wrap">
+            <view
+                class="flex item"
+                v-for="item in infoList"
+                :key="item.label"
+                @click="handleClickInfoItem(item)"
+            >
+                <view class="label">{{ item.label }}:</view>
+                <view :class="['content', item.color && 'yellow-color']">
+                  {{item.text}}
+                </view>
+                <view class="copy-btn" v-if="item.type == 'copy'" @click="handleCopyLink(item.text)">复制链接</view>
             </view>
         </view>
 
         <!-- 报告链接 -->
         <view class="info-wrap" v-if="info.reportLink">
-          <view class="flex item" @click="handleOpenReport">
-              <view class="label">相关报告:</view>
-              <view class="yellow-color">查看报告链接</view>
-          </view>
+            <view class="flex item" @click="handleOpenReport">
+                <view class="label">相关报告:</view>
+                <view class="yellow-color">查看报告链接</view>
+            </view>
         </view>
 
-        <view class="btn-wrap" v-if="info.activityState===1">
-            <view class="global-btn-yellow-change btn">报名线下参会(15/20)</view>
-            <view class="global-btn-yellow-change btn">会议提醒</view>
+        <view class="btn-wrap" v-if="info.activityState === 1">
+            <view
+                class="global-btn-yellow-change btn"
+                v-if="info.firstActivityTypeId === 3"
+                @click="handleSetRegister"
+                >{{
+                    info.registerState == 0
+                        ? "报名线下参会"
+                        : "取消报名线下参会"
+                }}({{ info.isLimitPeople }}/{{ info.limitPeopleNum }})</view
+            >
+            <view
+                :class="[
+                    info.hasRemind == 1
+                        ? 'global-btn-disable'
+                        : 'global-btn-yellow-change',
+                    'btn',
+                ]"
+                @click="handleSetRemind"
+                >{{ info.hasRemind == 1 ? "取消会议提醒" : "会议提醒" }}</view
+            >
             <p class="tips">(会前15分钟推送微信消息提醒)</p>
         </view>
-  </view>
+
+        <!-- 弹窗 -->
+        <van-popup :show="pupData.show" @close="pupData.show = false">
+            <view class="global-pup">
+                <view class="content">
+                    <rich-text :nodes="pupData.content"></rich-text>
+                </view>
+                <view class="flex bot" v-if="pupData.type == 'contact'">
+                    <view @click="pupData.show = false" style="color: #a9afb8"
+                        >取消</view
+                    >
+                    <view @click="handleCallPhone(pupData.mobile)">拨号</view>
+                </view>
+                <view class="flex bot" v-if="pupData.type == 'apply'">
+                    <view @click="pupData.show = false" style="color: #a9afb8"
+                        >取消</view
+                    >
+                    <view @click="handleApply">立即申请</view>
+                </view>
+                <view class="flex bot" v-else>
+                    <view @click="pupData.show = false">知道了</view>
+                </view>
+            </view>
+        </van-popup>
+    </view>
 </template>
 
 <script>
 // 活动详情
-import {apiActivityDetail,apiActivityAudios} from '@/api/activity'
+import {
+    apiActivityDetail,
+    apiActivityAudios,
+    apiActivityAddRemind,
+    apiActivityCancelRemind,
+    apiActivityRegister,
+    apiActivityCancelRegister
+} from "@/api/activity";
 export default {
-  name: "ActivityDetail",
-  data() {
-    return {
-      id: 0, //活动id
-      infoList:[],
-      info:null,
-      audioList:[],//音频数据
-    };
-  },
-  onLoad(options) {
-    this.id = options.id;
-    this.getDetail()
-    // setTimeout(()=>{
-    //     uni.redirectTo({
-    //         url: '/pages-activity/noAuthority'
-    //     });
-    // },2000)
-  },
-  methods: {
-    async getDetail(){
-      const res=await apiActivityDetail({activity_id:Number(this.id)})
-      // 无权限
-      if(res.code===403){
-
-        return
+    name: "ActivityDetail",
+    filters:{
+      formarVoiceTime(e){
+        let minus=parseInt(e/60)
+        let sec=e%60
+        return `${minus}分${sec}秒`
       }
-      if(res.code===200){
-        this.info=res.data
+    },
+    data() {
+        return {
+            id: 0, //活动id
+            infoList: [],
+            info: null,
+            audioList: [], //音频数据
 
-        // 线上会议
-        if(res.data.activityTypeId===1){
-          this.infoList=[
-            {
-              label:'大陆拨号',
-              text:res.data.mainlandTel,
-              color:'yellow',
-              type:'tel'
-            },
-            {
-              label:'新加坡拨入',
-              text:res.data.singaporeTel,
-              color:'yellow',
-              type:'tel'
-            },
-            {
-              label:'香港拨入',
-              text:res.data.hongKongTel,
-              color:'yellow',
-              type:'tel'
-            },
-            {
-              label:'台湾拨入',
-              text:res.data.taiwanTel,
-              color:'yellow',
-              type:'tel'
-            },
-            {
-              label:'美国拨入',
-              text:res.data.americaTel,
-              color:'yellow',
-              type:'tel'
-            },
-            {
-              label:'拨入密码',
-              text:res.data.participationCode
-            },
-          ]
-        }
+            activeAudioUrl:'',//正在播放的背景音频地址
 
-        if(res.data.activityState===3){
-          this.getAudios()
-        }
-      }
+            pupData: {
+                show: false,
+                content: "", //弹窗html字符串
+                type: "",
+                mobile: "",
+            },
+        };
     },
-
-    // 获取活动音频
-    async getAudios(){
-      const res=await apiActivityAudios({activity_id:Number(this.id)})
-      if(res.code===200){
-        this.audioList=res.data
-      }
+    onLoad(options) {
+        this.id = options.id;
+        this.getDetail();
     },
+    methods: {
+        async getDetail() {
+            const res = await apiActivityDetail({ activity_id: Number(this.id) });
+            // 无权限
+            if (res.code === 403) {
+                uni.redirectTo({
+                    url: "/pages-activity/noAuthority?data=" + JSON.stringify(res.data),
+                });
+                return;
+            }
+            if (res.code === 200) {
+                this.info = res.data;
 
-    // 点击信息项
-    handleClickInfoItem(e){
-      if(e.type==='tel'&&e.text){
-        uni.makePhoneCall({
-            phoneNumber: e.text 
-        });
-      }
-    },
+                let arr = [
+                    {
+                        label: "大陆拨号",
+                        text: res.data.mainlandTel,
+                        color: "yellow",
+                        type: "tel",
+                    },
+                    {
+                        label: "新加坡拨入",
+                        text: res.data.singaporeTel,
+                        color: "yellow",
+                        type: "tel",
+                    },
+                    {
+                        label: "香港拨入",
+                        text: res.data.hongKongTel,
+                        color: "yellow",
+                        type: "tel",
+                    },
+                    {
+                        label: "台湾拨入",
+                        text: res.data.taiwanTel,
+                        color: "yellow",
+                        type: "tel",
+                    },
+                    {
+                        label: "美国拨入",
+                        text: res.data.americaTel,
+                        color: "yellow",
+                        type: "tel",
+                    },
+                    {
+                        label: "拨入密码",
+                        text: res.data.participationCode,
+                    },
+                ];
+                this.infoList = arr.filter((item) => {
+                    return item.text;
+                });
+                // 研究员线下沙龙
+                if (res.data.firstActivityTypeId === 3) {
+                    this.infoList.push({label: "活动地址",text: res.data.city + res.data.address})
+                    if(res.data.linkParticipants){
+                      this.infoList.push({label: "网络参会",text: res.data.linkParticipants,color: "yellow",type: "copy"})
+                    }
+                }
 
-    // 跳转webview 打开报告
-    handleOpenReport(){
-      uni.navigateTo({
-        url:'/pages/webView?url='+this.info.reportLink
-      })
-    }
-  }
+                if (res.data.activityState === 3) {
+                    this.getAudios();
+                }
+            }
+        },
+
+        // 获取活动音频
+        async getAudios() {
+            const res = await apiActivityAudios({ activity_id: Number(this.id) });
+            if (res.code === 200) {
+                this.audioList = res.data;
+            }
+        },
+
+        // 点击信息项
+        handleClickInfoItem(e) {
+            if (e.type === "tel" && e.text) {
+                uni.makePhoneCall({
+                    phoneNumber: e.text,
+                });
+            }
+        },
+
+        // 播放音频
+        handlePlayAudio(e){
+          if(e.voiceUrl==this.activeAudioUrl){
+            this.globalBgMusic.pause()
+          }else{
+            this.globalBgMusic.title=e.voiceName
+            this.globalBgMusic.src=e.voiceUrl
+            this.globalBgMusic.play()
+          }
+          
+          this.globalBgMusic.onPlay(res=>{
+            this.activeAudioUrl=e.voiceUrl
+          })
+          this.globalBgMusic.onPause(e=>{
+            this.activeAudioUrl=''
+          })
+          this.globalBgMusic.onStop(e=>{
+            this.activeAudioUrl=''
+          })
+          this.globalBgMusic.onEnded(e=>{
+            this.activeAudioUrl=''
+          })
+        },
+
+        // 跳转webview 打开报告
+        handleOpenReport() {
+            uni.navigateTo({
+                url: "/pages/webView?url=" + this.info.reportLink,
+            });
+        },
+
+        // 复制链接
+        handleCopyLink(text){
+          uni.setClipboardData({
+              data: text,
+              success: function () {
+                  uni.showToast({
+                    title:"复制成功,可在浏览器内打开",
+                    icon:"none"
+                  })
+              },
+              fail:function(){
+                  uni.showToast({
+                    title:"复制失败",
+                    icon:"none"
+                  })
+              }
+          });
+        },
+
+        // 设置会议提醒
+        async handleSetRemind() {
+            if (this.info.hasRemind == 1) {
+                this.handleCancelRemind();
+            } else {
+                this.handleAddRemind();
+            }
+        },
+        // 添加提醒
+        async handleAddRemind() {
+            const res = await apiActivityAddRemind({ activity_id: Number(this.info.activityId) });
+            if (res.code === 200) {
+                this.pupData.content = `<p style="margin-bottom:10px">设置成功,会前15分钟会为您推送微信消息提醒</p>
+                                 <p>请关注【弘则研究】公众号,以获取微信消息提醒</p>`;
+                this.pupData.show = true;
+                this.handleUpateRemindStatus();
+            } else if (res.code === 4001) {
+                if (res.data.type == "time") {
+                    this.pupData.content = `<p style="margin-bottom:10px">会议开始前15分钟内</p>
+                                          <p>无法设置会议提醒</p>`;
+                    this.pupData.type = "time";
+                }
+                this.pupData.show = true;
+            }
+        },
+        //取消提醒
+        async handleCancelRemind() {
+            const res = await apiActivityCancelRemind({ activity_id: Number(this.info.activityId) });
+            if (res.code === 200) {
+                uni.showToast({
+                    title: "取消提醒成功",
+                    icon: "none",
+                });
+                this.handleUpateRemindStatus();
+            }
+        },
+        // 更新列表提醒状态
+        handleUpateRemindStatus() {
+            if (this.info.hasRemind == 1) {
+                this.info.hasRemind = 0
+            } else {
+                this.info.hasRemind = 1
+            }
+            uni.$emit('activityDetailSetRemind', { id: this.info.activityId })
+        },
+
+        // 设置报名
+        handleSetRegister() {
+            if (this.info.registerState == 1) {
+                this.handleCancelRegister();
+            } else {
+                this.handleAddRegister();
+            }
+        },
+        // 线下报名
+        async handleAddRegister() {
+            const res = await apiActivityRegister({ activity_id: Number(this.info.activityId) })
+            if (res.code === 200) {
+                this.pupData.content = `<p style="margin-bottom:10px">报名成功,已加入您的活动日程</p>
+                                 <p>想要及时获取活动时间变更通知,请关注【弘则研究】公众号</p>`
+                this.pupData.show = true
+                this.handleUpdateRegister()
+            } else if (res.code === 4001) {
+                if (res.data.type == 'time') {
+                    this.pupData.content = `<p style="margin-bottom:10px">活动开始前15分钟内</p>
+                                          <p>无法设置会议提醒</p>`
+                    this.pupData.type = 'time'
+                } else if (res.data.type == 'full') {
+                    this.pupData.content = `<p>此活动报名人数已满,请留意下期活动</p>`
+                    this.pupData.type = 'full'
+                }
+                this.pupData.show = true
+            }
+        },
+        //取消线下报名
+        async handleCancelRegister() {
+            const res = await apiActivityCancelRegister({ activity_id: Number(this.info.activityId) })
+            if (res.code === 200) {
+                uni.showToast({
+                    title: "取消报名成功",
+                    icon: "none"
+                })
+                this.handleUpdateRegister()
+            }
+        },
+        //更新列表报名状态
+        handleUpdateRegister() {
+            if (this.info.registerState == 1) {
+                this.info.registerState = 0
+            } else {
+                this.info.registerState = 1
+            }
+            uni.$emit('activityDetailSetRegister', { id: this.info.activityId })
+        }
+    },
 };
 </script>
 
 <style lang="scss">
+.activity-detail {
+    background: #fff;
+}
 .top-wrap {
-  width: 100%;
-  height: 370rpx;
-  background: linear-gradient(312deg, rgba(0, 0, 0, 0.8) 0%, rgba(43, 43, 43, 0.8) 100%);
-  color: $global-text-color-white;
-  padding-top: 144rpx;
-  padding-left: 40rpx;
-  padding-right: 40rpx;
-  background-size: cover;
-  background-repeat: no-repeat;
-  position: relative;
-  .status {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 116rpx;
-    line-height: 44rpx;
-    border-radius: 0px 0px 16rpx 0px;
+    width: 100%;
+    height: 370rpx;
+    background: linear-gradient(
+        312deg,
+        rgba(0, 0, 0, 0.8) 0%,
+        rgba(43, 43, 43, 0.8) 100%
+    );
     color: $global-text-color-white;
-    text-align: center;
-    font-size: $global-font-size-sm;
-  }
-  .status-before {
-    background-color: #e3b377;
-  }
-  .status-progress {
-    background-color: #3385ff;
-  }
-  .status-end {
-    background-color: #a2a2a2;
-  }
-  .title {
-    font-size: 17px;
-    font-weight: bold;
-  }
-  .name {
-    margin-top: 15rpx;
-    margin-bottom: 40rpx;
-  }
-  .time {
-    opacity: 0.8;
-    font-size: $global-font-size-sm;
-  }
-  .city{
-    font-size: $global-font-size-sm;
-    align-items: center;
-    position: absolute;
-    right: 40rpx;
-    bottom: 59rpx;
-    image{
-      width: 32rpx;
-      height: 32rpx;
+    padding-top: 144rpx;
+    padding-left: 40rpx;
+    padding-right: 40rpx;
+    background-size: cover;
+    background-repeat: no-repeat;
+    position: relative;
+    .status {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 116rpx;
+        line-height: 44rpx;
+        border-radius: 0px 0px 16rpx 0px;
+        color: $global-text-color-white;
+        text-align: center;
+        font-size: $global-font-size-sm;
+    }
+    .status-before {
+        background-color: #e3b377;
+    }
+    .status-progress {
+        background-color: #3385ff;
+    }
+    .status-end {
+        background-color: #a2a2a2;
+    }
+    .title {
+        font-size: 17px;
+        font-weight: bold;
+    }
+    .name {
+        margin-top: 15rpx;
+        margin-bottom: 40rpx;
+    }
+    .time {
+        opacity: 0.8;
+        font-size: $global-font-size-sm;
+    }
+    .city {
+        font-size: $global-font-size-sm;
+        align-items: center;
+        position: absolute;
+        right: 40rpx;
+        bottom: 59rpx;
+        image {
+            width: 32rpx;
+            height: 32rpx;
+        }
     }
-  }
 }
-.intro-wrap{
+.intro-wrap {
     background-color: #fff;
     box-shadow: 0px 3px 12px rgba(196, 196, 196, 0.16);
     font-size: $global-font-size-lg;
     font-weight: bold;
     padding: 28rpx 34rpx;
 }
-.info-wrap{
+.info-wrap {
     padding: 30rpx 34rpx;
-    .item{
+    .item {
         margin-bottom: 30rpx;
-        .label{
+        .label {
             flex-shrink: 0;
         }
+        .copy-btn {
+            background-color: #e3b377;
+            color: #fff;
+            padding: 4rpx 8rpx;
+            font-size: 12px;
+            margin-left: 4rpx;
+        }
     }
-    .yellow-color{
+    .yellow-color {
         color: $global-text-color-main;
     }
 }
 
-.audio-wrap{
-    .audio-item{
-        padding: 36rpx 34rpx;
-        border-bottom: 1px solid $global-border-color;
+.audio-wrap {
+    padding: 0 94rpx 0 34rpx;
+    .audio-item {
+        padding: 36rpx 0;
+        border-bottom: 1px solid #E8DED2;
         position: relative;
-        .icon{
+        .icon {
             position: absolute;
             top: 50%;
             transform: translateY(-50%);
-            right: 45rpx;
+            right: 0;
             width: 48rpx;
             height: 48rpx;
         }
-        .name{
+        .name {
             margin-bottom: 10rpx;
         }
-        .time{
+        .time {
             font-size: $global-font-size-mini;
         }
     }
 }
 
-.btn-wrap{
-    .btn{
+.btn-wrap {
+    .btn {
         width: 380rpx;
         line-height: 70rpx;
         margin-left: auto;
         margin-right: auto;
         margin-top: 40rpx;
     }
-    .tips{
+    .tips {
         font-size: $global-font-size-sm;
         color: $global-text-color-999;
         text-align: center;

+ 46 - 9
pages-activity/noAuthority.vue

@@ -1,29 +1,66 @@
 <template>
   <view class="noauthority-page">
-      <image class="img" :src="globalImgUrls.img1" mode="widthFix"></image>
+      <image class="img" :src="globalImgUrls.activityNoAuth" mode="widthFix"></image>
       <view>您暂无权限参加此活动</view>
-      <view>若想参加可以申请开通哦</view>
-      <view class="global-btn-yellow-change btn" @click="handleGoApply">立即申请</view>
-      <view class="global-btn-yellow-plain btn">返回</view>
+      <view v-if="info.type=='contact'">若想参加,可以联系对口销售</view>
+      <view v-else>若想参加可以申请开通</view>
+      <view class="global-btn-yellow-change btn" @click="handleContact" v-if="info.type=='contact'">联系销售</view>
+      <view class="global-btn-yellow-change btn" @click="handleGoApply" v-else>立即申请</view>
+      <view class="global-btn-yellow-plain btn" @click="handleBack">返回</view>
   </view>
 </template>
 
 <script>
+import {apiApplyPermission} from '@/api/user'
 export default {
     name:"noAuthority",
     data () {
         return {
-            
+            info:{}
         }
     },
     onLoad(options){
+       this.info=JSON.parse(options.data)
     },
     methods: {
-        handleGoApply(){
-            uni.navigateTo({
-                url:"/pages-activity/applyTrial"
-            })
+        async handleGoApply(){
+            if(this.info.type=='apply'){
+                if(this.info.customer_info.has_apply){// 已经申请过
+                    uni.redirectTo({
+                        url:"/pages-applyPermission/applyResult"
+                    })
+                }else{
+                    if(!this.info.customer_info.status||this.info.customer_info.status!='流失'){
+                        uni.redirectTo({
+                            url:"/pages-applyPermission/applyPermission"
+                        })
+                    }else{//主动调一次申请权限接口 
+                        const res=await apiApplyPermission({
+                            company_name:this.info.customer_info.company_name,
+                            real_name:this.info.customer_info.name,
+                        })
+                        if(res.code===200){
+                            uni.redirectTo({
+                                url:"/pages-applyPermission/applyResult"
+                            })
+                        }
+                    }
+                }
+                
+            }
+            
+        },
+
+        handleContact(){
+            uni.makePhoneCall({
+                phoneNumber: this.info.mobile
+            });
+        },
+
+        handleBack(){
+            uni.navigateBack()
         }
+
     }
 }
 </script>

+ 1 - 0
pages-applyPermission/applyPermission.vue

@@ -13,6 +13,7 @@
                 <view class="tips" v-if="!cardImg">上传您的名片</view>
             </view>
             <view class="box exp">
+                <image class="bg-img" :src="globalImgUrls.idCardExp" mode="widthFix"></image>
                 <view class="tips">名片示例</view>
             </view>
         </view>

+ 2 - 1
pages-applyPermission/applyResult.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="apply-result-page">
-    <image style="width:100px" :src="globalImgUrls.imgSuccess"></image>
+    <image style="width:100px" :src="globalImgUrls.imgSuccess" mode="widthFix"></image>
     <view style="margin-top:20px">申请已提交</view>
     <view style="margin-top:15px">请等待销售人员与您联系</view>
     <view class="global-btn-yellow-change btn" @click="handleBack">返回</view>
@@ -21,6 +21,7 @@ export default {
 .apply-result-page{
   text-align: center;
   font-size: 17px;
+  padding-top: 100rpx;
   .btn{
     margin-left: auto;
     margin-right: auto;

+ 7 - 7
pages.json

@@ -1,5 +1,12 @@
 {
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/activity/activity",
+			"style": {
+				"navigationBarTitleText": "活动",
+				"enablePullDownRefresh": true
+			}
+		},
 		{
 			"path": "pages/report/report",
 			"style": {
@@ -18,13 +25,6 @@
 				"navigationBarTitleText": "图库"
 			}
 		},
-		{
-			"path": "pages/activity/activity",
-			"style": {
-				"navigationBarTitleText": "活动",
-				"enablePullDownRefresh": true
-			}
-		},
 		{
 			"path": "pages/user/user",
 			"style": {

+ 136 - 15
pages/activity/activity.vue

@@ -69,7 +69,7 @@
                                 <text>回放</text>
                             </template>
                         </view>
-                        <view class="van-ellipsis title">{{item.activityName}}</view>
+                        <view class="van-ellipsis title">{{item.activityTypeName}}</view>
                         <view class="name">主讲:{{item.speaker}}</view>
                         <view class="time">时间:{{ item.startTime | formatActivityTime(item.endTime) }}</view>
                     </view>
@@ -83,7 +83,7 @@
                     </view>
                     <view 
                         :class="!item.registerState&&'active'" 
-                        v-if="item.activityTypeId===3"
+                        v-if="item.firstActivityTypeId===3"
                         @click.stop="handleRegister(item,index)"
                     >
                         {{item.registerState?'取消线下报名':'报名线下参会'}}
@@ -94,13 +94,21 @@
         <van-empty description="暂无数据" v-else />
 
         <!-- 弹窗 -->
-        <van-popup :show="show" @close="show=false">
+        <van-popup :show="pupData.show" @close="pupData.show=false">
             <view class="global-pup">
                 <view class="content">
-                    <rich-text :nodes="pupContent"></rich-text>
+                    <rich-text :nodes="pupData.content"></rich-text>
                 </view>
-                <view class="flex bot">
-                    <view @click="show=false">知道了</view>
+                <view class="flex bot" v-if="pupData.type=='contact'">
+                    <view @click="pupData.show=false" style="color:#A9AFB8">取消</view>
+                    <view @click="handleCallPhone(pupData.mobile)">拨号</view>
+                </view>
+                <view class="flex bot" v-if="pupData.type=='apply'">
+                    <view @click="pupData.show=false" style="color:#A9AFB8">取消</view>
+                    <view @click="handleApply">立即申请</view>
+                </view>
+                <view class="flex bot" v-else>
+                    <view @click="pupData.show=false">知道了</view>
                 </view>
             </view>
         </van-popup>
@@ -115,7 +123,22 @@ import {
     apiActivityRegister,
     apiActivityCancelRegister
 } from '@/api/activity'
+import {apiApplyPermission} from '@/api/user'
 export default {
+    watch: {
+      'pupData.show':{
+          handler(nval){
+              if(!nval){
+                this.pupData={
+                    show:false,
+                    content:'',//弹窗html字符串
+                    type:'',
+                    mobile:"",
+                }
+              }
+          }
+      }  
+    },
     data() {
         return {
             searchVal: '',
@@ -127,13 +150,23 @@ export default {
             list: [],
             finished: false,
 
-            show:false,
-            pupContent:'',//弹窗html字符串
+            pupData:{
+                show:false,
+                content:'',//弹窗html字符串
+                type:'',
+                mobile:"",
+            }
         }
     },
     onLoad() {
         this.getList()
+        this.addEventListenerRemind()
+        this.addEventListenerRegister()
     },
+    onUnload(){
+		uni.$off('activityDetailSetRemind')
+        uni.$off('activityDetailSetRegister')
+	},
 
     onPullDownRefresh() {
         this.refreshPage()
@@ -148,8 +181,29 @@ export default {
         this.getList()
     },
 
-
     methods: {
+        // 监听详情中设置提醒
+        addEventListenerRemind(){
+            uni.$on('activityDetailSetRemind',e=>{
+                this.list.forEach((item,index) => {
+                    if(item.activityId==e.id){
+                        this.handleUpateRemindStatus(index)
+                    }
+                });
+            })
+        },
+
+        // 监听详情中报名
+        addEventListenerRegister(){
+            uni.$on('activityDetailSetRegister',e=>{
+                this.list.forEach((item,index) => {
+                    if(item.activityId==e.id){
+                        this.handleUpdateRegister(index)
+                    }
+                });
+            })
+        },
+
         //搜索
         onSearch(){
             this.refreshPage()
@@ -171,7 +225,7 @@ export default {
         // 类型切换
         tabChange(e) {
             const type = e.target.dataset.type
-            if (type === this.tabActive) return
+            if (!type||type === this.tabActive) return
             this.tabActive = type
             this.statusActive = '1'
             this.refreshPage()
@@ -180,7 +234,7 @@ export default {
         // 状态切换
         statusChange(e) {
             const status = e.target.dataset.status
-            if (status === this.statusActive) return
+            if (!status||status === this.statusActive) return
             this.statusActive = status
             this.refreshPage()
         },
@@ -228,10 +282,27 @@ export default {
         async handleAddRemind(e,index){
             const res=await apiActivityAddRemind({activity_id:Number(e.activityId)})
             if(res.code===200){
-                this.pupContent=`<p style="margin-bottom:10px">设置成功,会前15分钟会为您推送微信消息提醒</p>
+                this.pupData.content=`<p style="margin-bottom:10px">设置成功,会前15分钟会为您推送微信消息提醒</p>
                                  <p>请关注【弘则研究】公众号,以获取微信消息提醒</p>`
-                this.show=true
+                this.pupData.show=true
                 this.handleUpateRemindStatus(index)
+            }else if(res.code===4001){
+                if(res.data.type=='time'){
+                    this.pupData.content=`<p style="margin-bottom:10px">会议开始前15分钟内</p>
+                                          <p>无法设置会议提醒</p>`
+                    this.pupData.type='time'
+                }
+                this.pupData.show=true
+            }else if(res.code===403){
+                if(res.data.type=='contact'){
+                    this.pupData.content=`<p>您暂无权限参加此会议,若想参加请联系对口销售--${res.data.name}:</p>
+                                          <p>${res.data.mobile}</p>`
+                    this.pupData.mobile=res.data.mobile
+                }else if(res.data.type=='apply'){
+                    this.pupData.content=`<p>您暂无权限参加此会议,若想参加可以申请开通哦</p>`
+                }
+                this.pupData.show=true
+                this.pupData={...this.pupData,...res.data}
             }
         },
 
@@ -268,10 +339,30 @@ export default {
         async handleAddRegister(e,index){
             const res=await apiActivityRegister({activity_id:Number(e.activityId)})
             if(res.code===200){
-                this.pupContent=`<p style="margin-bottom:10px">报名成功,已加入您的活动日程</p>
+                this.pupData.content=`<p style="margin-bottom:10px">报名成功,已加入您的活动日程</p>
                                  <p>想要及时获取活动时间变更通知,请关注【弘则研究】公众号</p>`
-                this.show=true
+                this.pupData.show=true
                 this.handleUpdateRegister(index)
+            }else if(res.code===4001){
+                if(res.data.type=='time'){
+                    this.pupData.content=`<p style="margin-bottom:10px">活动开始前15分钟内</p>
+                                          <p>无法设置会议提醒</p>`
+                    this.pupData.type='time'
+                }else if(res.data.type=='full'){
+                    this.pupData.content=`<p>此活动报名人数已满,请留意下期活动</p>`
+                    this.pupData.type='full'
+                }
+                this.pupData.show=true
+            }else if(res.code===403){
+                if(res.data.type=='contact'){
+                    this.pupData.content=`<p>您暂无权限参加此活动,若想参加请联系对口销售--${res.data.name}:</p>
+                                          <p>${res.data.mobile}</p>`
+                    this.pupData.mobile=res.data.mobile
+                }else if(res.data.type=='apply'){
+                    this.pupData.content=`<p>您暂无权限参加此活动,若想参加可以申请开通哦</p>`
+                }
+                this.pupData.show=true
+                this.pupData={...this.pupData,...res.data}
             }
         },
 
@@ -294,6 +385,36 @@ export default {
             }else{
                 this.list[index].registerState=0
             }
+        },
+
+        // 点击立即申请
+        async handleApply(){
+            if(this.pupData.customer_info.has_apply){//已经申请过
+                this.pupData.content=`<p>申请已提交</p><p>请等待销售人员与您联系</p>`
+                this.pupData.type=''
+            }else{
+                if(!this.pupData.customer_info.status||this.pupData.customer_info.status!='流失'){
+                    uni.navigateTo({
+                        url:"/pages-applyPermission/applyPermission"
+                    })
+                }else{//主动调一次申请权限接口 
+                    const res=await apiApplyPermission({
+                        company_name:this.pupData.customer_info.company_name,
+                        real_name:this.pupData.customer_info.name,
+                    })
+                    if(res.code===200){
+                        this.pupData.content=`<p>申请已提交</p><p>请等待销售人员与您联系</p>`
+                        this.pupData.type=''
+                    }
+                }
+            }
+        },
+
+        // 拨打电话
+        handleCallPhone(tel){
+            uni.makePhoneCall({
+                phoneNumber: tel
+            });
         }
 
     }

+ 179 - 126
pages/login.vue

@@ -1,81 +1,82 @@
 <template>
     <view class="login-page">
-        <van-tabs :active="active" animated @change="onChange">
-            <van-tab title="手机号" name="手机号">
-                <view class="form-wrap tel-wrap">
-                    <van-field
-                        :value="tel"
-                        placeholder="请输入手机号"
-                        :border="false"
-                        center
-                        type="number"
-                        title-width="60px"
-                        @change="inputChange('tel',$event)"
+        <image :src="globalImgUrls.loginTop" class="top-img" mode="aspectFill"></image>
+        <view class="form-wrap tel-wrap" v-if="active==='手机号'">
+            <van-field
+                :value="tel"
+                placeholder="请输入手机号"
+                :border="false"
+                center
+                type="number"
+                title-width="60px"
+                @change="inputChange('tel', $event)"
+            >
+                <template slot="label">
+                    <picker
+                        mode="selector"
+                        :range="telAreaList"
+                        range-key="name"
+                        :value="telAreaIndex"
+                        @change="telAreaChange"
+                        header-text="请选择您的国际区号"
                     >
-                        <template slot="label">
-                            <picker
-                                mode="selector"
-                                :range="telAreaList"
-                                range-key="name"
-                                :value="telAreaIndex"
-                                @change="telAreaChange"
-                                header-text="请选择您的国际区号"
-                            >
-                                <view>+{{telAreaList[telAreaIndex].value}}<van-icon name="arrow-down" style="margin-left:4px" /></view>
-                            </picker>
-                        </template>
-                    </van-field>
-                    <van-field
-                        :value="verifyCode"
-                        placeholder="请输入4位验证码"
-                        :border="false"
-                        title-width="60px"
-                        label="验证码"
-                        type="number"
-                        center
-                        @change="inputChange('verifyCode',$event)"
-                    >   
-                        <van-button slot="button" size="small" type="primary" v-if="!isSendVerifyCode" @click="handleSendVerifyCode('tel')">发送验证码</van-button>
-                        <van-count-down slot="button" :time="countDownTime" format="ss S" @finish="timeFinished" v-else/>
-                    </van-field>
-                    <view class="global-btn-yellow-change submit-btn" @click="handleSubmit('tel')">提交</view>
-                </view>
-            </van-tab>
-            <van-tab title="邮箱" name="邮箱">
-                <view class="form-wrap email-wrap">
-                    <van-field
-                        :value="email"
-                        placeholder="请输入邮箱地址"
-                        :border="false"
-                        center
-                        title-width="60px"
-                        label="邮箱地址"
-                        @change="inputChange('email',$event)"
-                    />
-                    <van-field
-                        :value="verifyCode"
-                        placeholder="请输入4位验证码"
-                        :border="false"
-                        title-width="60px"
-                        label="验证码"
-                        center
-                        type="number"
-                        @change="inputChange('verifyCode',$event)"
-                    >   
-                        <van-button slot="button" size="small" type="primary" v-if="!isSendVerifyCode" @click="handleSendVerifyCode('email')">发送验证码</van-button>
-                        <van-count-down slot="button" :time="countDownTime" format="ss S" @finish="timeFinished" v-else/>
-                    </van-field>
-                    <view class="global-btn-yellow-change submit-btn" @click="handleSubmit('email')">提交</view>
-                </view>
-            </van-tab>
-        </van-tabs>
+                        <view>
+                            +{{ telAreaList[telAreaIndex].value}}
+                            <van-icon name="arrow-down" style="margin-left: 4px"/>
+                        </view>
+                    </picker>
+                </template>
+            </van-field>
+            <van-field
+                :value="verifyCode"
+                placeholder="请输入4位验证码"
+                :border="false"
+                title-width="60px"
+                type="number"
+                center
+                @change="inputChange('verifyCode', $event)"
+            >
+                <text slot="button" class="sendcode-btn" v-if="!isSendVerifyCode" @click="handleSendVerifyCode('tel')">发送验证码</text>
+                <van-count-down slot="button" :time="countDownTime" format="ss S" @finish="timeFinished" v-else/>
+            </van-field>
+            <view class="global-btn-yellow-change submit-btn" @click="handleSubmit('tel')">提交</view>
+        </view>
+        <view class="form-wrap email-wrap" v-else>
+            <van-field
+                :value="email"
+                placeholder="请输入邮箱地址"
+                :border="false"
+                center
+                title-width="60px"
+                @change="inputChange('email',$event)"
+            />
+            <van-field
+                :value="verifyCode"
+                placeholder="请输入4位验证码"
+                :border="false"
+                title-width="60px"
+                center
+                type="number"
+                @change="inputChange('verifyCode',$event)"
+            >   
+                <text slot="button" class="sendcode-btn" type="primary" v-if="!isSendVerifyCode" @click="handleSendVerifyCode('email')">发送验证码</text>
+                <van-count-down slot="button" :time="countDownTime" format="ss S" @finish="timeFinished" v-else/>
+            </van-field>
+            <view class="global-btn-yellow-change submit-btn" @click="handleSubmit('email')">提交</view>
+        </view>
+        <!-- 底部 -->
+        <view class="change-wrap">
+            <view class="text">{{active==='手机号'?'使用邮箱登录':'使用手机号登录'}}</view>
+            <image class="img" @click="handleChange" mode="aspectFill" :src="active==='手机号'?'../static/login-email.png':'../static/login-phone.png'"></image>
+        </view>
+        <view class="bot-text">专注为全球投资者提供中立客观的研究服务</view>
     </view>
 </template>
 
 <script>
-import {apiGetSMSCode,apiGetEmailCode} from '@/api/common'
-import {apiUserLogin} from '@/api/user'
-import {telVerify,emailVerify} from '@/utils/common'
+import { apiGetSMSCode, apiGetEmailCode } from '@/api/common'
+import { apiUserLogin } from '@/api/user'
+import { telVerify, emailVerify } from '@/utils/common'
 export default {
     data() {
         return {
@@ -104,15 +105,20 @@ export default {
             ], //手机号区号
             telAreaIndex: 0, //选择手机号区号第几个
             tel: "",//手机号
-            email:"",//邮箱
-            verifyCode:"",//验证码
-            isSendVerifyCode:false,//是否已经发送验证码
-            countDownTime:60*1000,//倒计时60秒
+            email: "",//邮箱
+            verifyCode: "",//验证码
+            isSendVerifyCode: false,//是否已经发送验证码
+            countDownTime: 60 * 1000,//倒计时60秒
         };
     },
     methods: {
-        onChange(e) {
-            console.log(e);
+
+        handleChange(){
+            if(this.active==='手机号'){
+                this.active='邮箱'
+            }else{
+                this.active='手机号'
+            }
         },
 
         // 区号改变
@@ -121,102 +127,149 @@ export default {
         },
 
         //倒计时结束
-        timeFinished(){
-            this.isSendVerifyCode=false
+        timeFinished() {
+            this.isSendVerifyCode = false
         },
 
-
-        inputChange(key,event){
-			this[key]=event.detail
-		},
-        
+        inputChange(key, event) {
+            this[key] = event.detail
+        },
 
         //发送验证码
-        async handleSendVerifyCode(type){
+        async handleSendVerifyCode(type) {
             let res
-            if(type==='tel'){
-                if(!telVerify(this.tel,this.telAreaList[this.telAreaIndex].value)){
+            if (type === 'tel') {
+                if (!telVerify(this.tel, this.telAreaList[this.telAreaIndex].value)) {
                     uni.showToast({
-                        title:"请输入正确手机号",
-                        icon:"none"
+                        title: "请输入正确手机号",
+                        icon: "none"
                     })
                     return
                 }
-                res=await apiGetSMSCode({
-                    mobile:this.tel,
-                    area_num:this.telAreaList[this.telAreaIndex].value
+                res = await apiGetSMSCode({
+                    mobile: this.tel,
+                    area_num: this.telAreaList[this.telAreaIndex].value
                 })
-                
-            }else{
-                if(!emailVerify(this.email)){
-                     uni.showToast({
-                        title:"请输入正确邮箱地址",
-                        icon:"none"
+
+            } else {
+                if (!emailVerify(this.email)) {
+                    uni.showToast({
+                        title: "请输入正确邮箱地址",
+                        icon: "none"
                     })
                     return
                 }
-                res=await apiGetEmailCode({
-                    email:this.email
+                res = await apiGetEmailCode({
+                    email: this.email
                 })
             }
 
-            if(res.code===200){
-                this.isSendVerifyCode=true
+            if (res.code === 200) {
+                this.isSendVerifyCode = true
                 uni.showToast({
-                    title:"验证码已发送",
-                    icon:"success"
+                    title: "验证码已发送",
+                    icon: "success"
                 })
             }
         },
 
         // 提交
-        async handleSubmit(type){
-            let params={}
-            if(type==='tel'){
-                params={
-                    area_num:Number(this.telAreaList[this.telAreaIndex].value),
-                    mobile:this.tel,
-                    verify_code:this.verifyCode,
-                    bind_type:1
+        async handleSubmit(type) {
+            let params = {}
+            if (type === 'tel') {
+                params = {
+                    area_num: Number(this.telAreaList[this.telAreaIndex].value),
+                    mobile: this.tel,
+                    verify_code: this.verifyCode,
+                    bind_type: 1
                 }
-            }else{
-                params={
-                    email:this.email,
-                    verify_code:this.verifyCode,
-                    bind_type:2
+            } else {
+                params = {
+                    email: this.email,
+                    verify_code: this.verifyCode,
+                    bind_type: 2
                 }
             }
 
-            if(!params.verify_code){
+            if (!params.verify_code) {
                 uni.showToast({
-                    title:"请输入验证码",
-                    icon:"none"
+                    title: "请输入验证码",
+                    icon: "none"
                 })
                 return
             }
 
-            const res=await apiUserLogin(params)
-            if(res.code===200){
+            const res = await apiUserLogin(params)
+            if (res.code === 200) {
                 uni.navigateBack()
                 this.$store.dispatch('getUserInfo')
+                this.$store.dispatch('getTabBar')
             }
-            
+
         }
     },
 };
 </script>
 
 <style lang="scss">
-.form-wrap {
+.login-page {
     padding: 34rpx;
+    text-align: center;
+}
+.top-img {
+    width: 140rpx;
+    height: 140rpx;
+    margin-top: 70rpx;
+    margin-bottom: 100rpx;
 }
 .van-cell {
     border-bottom: 1px solid $global-border-color;
 }
-.submit-btn{
-    width: 400rpx;
+.sendcode-btn{
+    color:$global-text-color-main;
+}
+.change-wrap{
+    margin-top: 100rpx;
+    .text{
+        color: #CFCFCF;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        &::before{
+            content: '';
+            width: 140rpx;
+            height: 1rpx;
+            display: inline-block;
+            background-color: #E1E2E6;
+            margin-right: 20rpx;
+        }
+        &::after{
+            content: '';
+            width: 140rpx;
+            height: 1rpx;
+            display: inline-block;
+            background-color: #E1E2E6;
+            margin-left: 20rpx;
+        }
+    }
+    .img{
+        margin-top: 40rpx;
+        width: 80rpx;
+        height: 80rpx;
+    }
+}
+.submit-btn {
+    width: 490rpx;
     margin-left: auto;
     margin-right: auto;
     margin-top: 100rpx;
 }
+.bot-text{
+    position: fixed;
+    left: 50%;
+    transform: translateX(-50%);
+    bottom: 100rpx;
+    color: $global-text-color-999;
+    width: 100%;
+}
 </style>

BIN
static/login-email.png


BIN
static/login-phone.png


BIN
static/tabbar/activity-s.png


BIN
static/tabbar/activity.png


BIN
static/tabbar/buy-s.png


BIN
static/tabbar/buy.png


BIN
static/tabbar/chart-s.png


BIN
static/tabbar/chart.png


BIN
static/tabbar/report-s.png


BIN
static/tabbar/report.png


BIN
static/tabbar/user-s.png


BIN
static/tabbar/user.png


+ 7 - 7
store/modules/user.js

@@ -24,6 +24,13 @@ const userModules = {
 		setTabBar(state, data) {
 			// 默认的tabbar数据
 			let defaultTabBarList = [
+				{
+					key: "activity",
+					pagePath: "pages/activity/activity",
+					text: "活动",
+					iconPath: "../static/tabbar/activity.png",
+					selectedIconPath: "../static/tabbar/activity-s.png",
+				},
 				{
 					key: "report",
 					pagePath: "pages/report/report",
@@ -45,13 +52,6 @@ const userModules = {
 					iconPath: "../static/tabbar/chart.png",
 					selectedIconPath: "../static/tabbar/chart-s.png",
 				},
-				{
-					key: "activity",
-					pagePath: "pages/activity/activity",
-					text: "活动",
-					iconPath: "../static/tabbar/activity.png",
-					selectedIconPath: "../static/tabbar/activity-s.png",
-				},
 				{
 					key: "user",
 					pagePath: "pages/user/user",

+ 1 - 0
style/common.scss

@@ -55,6 +55,7 @@ view{
     .content{
         padding: 34rpx;
         text-align: center;
+        min-height: 200rpx;
     }
     .bot{
         border-top: 1px solid $global-border-color;

+ 5 - 3
utils/config.js

@@ -14,10 +14,12 @@ if(env.envVersion==='develop'){//开发
 
 
 
-// 配置图片资源
+// 配置图片资源 https://hongze.oss-accelerate.aliyuncs.com/static/icon/hzyb/
 const globalImgUrls={
-    img1:'https://hongze.oss-accelerate.aliyuncs.com/banner/crm_wxapp_share.jpg',
-    imgSuccess:'https://hongze.oss-accelerate.aliyuncs.com/banner/crm_wxapp_share.jpg',
+    activityNoAuth:'https://hongze.oss-cn-shanghai.aliyuncs.com/static/icon/hzyb/activity_no_auth.png',
+    imgSuccess:'https://hongze.oss-cn-shanghai.aliyuncs.com/static/icon/hzyb/success_icon.png',
+    loginTop:'https://hongze.oss-cn-shanghai.aliyuncs.com/static/icon/hzyb/login_top_img.png',
+    idCardExp:'https://hongze.oss-cn-shanghai.aliyuncs.com/static/icon/hzyb/idcard_exp.jpg'
 }
 
 

+ 1 - 1
utils/request.js

@@ -87,7 +87,7 @@ const http=(url,params,method)=>{
 				Authorization:store.state.user.token,
 			},
 			success(res) {
-				if(res.data.code!==200){
+				if(res.data.code!==200&&res.data.code!==403&&res.data.code!==4001){
 					showError(res.data)
 				}