当前位置:   article > 正文

uniapp微信小程序实现不同账号权限显示不同tabbar_uniapp不同用户登录不同权限

uniapp不同用户登录不同权限

一套小程序可能会有多个用户角色,比如在线课堂类小程序,会有老师和学生,但是两者能看到的内容应该是不一样的。

实现原理

舍弃uniapp原生的tabbar,使用uView插件下的u-tabbar导航插件来实现。

uView

uView的官网如下,里面有详细的教程,而且在uniapp插件市场也能找到,使用起来也是非常的方便。

uView 2.0 - 全面兼容nvue的uni-app生态框架

过程

1.首先在文件目录下的components文件下创建一个自定义组件UserTab

 2.在UserTab文件里面,根据uView的教程,搭建好自己需要的导航 模块

  1. <view>
  2. <!-- 学生端 -->
  3. <u-tabbar v-if="showWho=='student'" :value="student" @change="studentChange" :fixed="true" :placeholder="true"
  4. :safeAreaInsetBottom="true" activeColor="#31aef1">
  5. <u-tabbar-item v-for="i in studentList" :key='i.id' :text="i.name" :name="i.name">
  6. <image class="u-page__item__slot-icon" slot="active-icon" :src="i.active" mode="widthFix"></image>
  7. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="i.inactive" mode="widthFix"></image>
  8. </u-tabbar-item>
  9. </u-tabbar>
  10. <!-- 教师端 -->
  11. <u-tabbar v-if="showWho=='teacher'" :value="teacher" @change="teacherChange" :fixed="true" :placeholder="true"
  12. :safeAreaInsetBottom="true" activeColor="#31aef1">
  13. <u-tabbar-item v-for="i in teacherList" :key='i.id' :text="i.name" :name="i.name">
  14. <image class="u-page__item__slot-icon" slot="active-icon" :src="i.active" mode="widthFix"></image>
  15. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="i.inactive" mode="widthFix"></image>
  16. </u-tabbar-item>
  17. </u-tabbar>
  18. </view>

  3.为了方便循环和切换,要在JS里面配置好两端的名字和图片。并且要用showWho或其他变量来控制隐藏和显示哪个。

  1. teacherList: [{
  2. id: 1,
  3. name: '课堂',
  4. active: '../../static/classroom-active.png',
  5. inactive: '../../static/classroom.png'
  6. },
  7. {
  8. id: 2,
  9. name: '兴趣小组',
  10. active: '../../static/interestGroup-actiev.png',
  11. inactive: '../../static/interestGroup.png'
  12. },
  13. {
  14. id: 3,
  15. name: '我的',
  16. active: '../../static/mine-active.png',
  17. inactive: '../../static/mine.png'
  18. }
  19. ]

4.来到要做成tabbar的各个页面里,引入UserTab这个自定义组件,并且传值过去(直接传页面的名称就好)

<UserTab tabNumber='课堂'></UserTab>

5.在登录的时候,就在本地存一个值,表明是老师还是学生。在UserTab的mounted生命周期里做一个简单的判断并且把tabbar传过来的值赋值给事先准备好的变

  1. mounted() {
  2. if (uni.getStorageSync('status') == 'teacher') {
  3. this.showWho = 'teacher'
  4. }
  5. if (uni.getStorageSync('status') == 'student') {
  6. this.showWho = 'student'
  7. }
  8. this.student = this.tabNumber
  9. this.teacher = this.tabNumber
  10. },

6.最后,配置好tabbar切换的方法函数 

  1. teacherChange(e) {
  2. this.teacher = e
  3. if (e == '课堂') {
  4. uni.reLaunch({
  5. url: "/pages/index/CourseTeacherIndex"
  6. })
  7. uni.hideHomeButton() //为了防止跳转页面后,小程序右上角会出现一个回到主页的小房子
  8. } else if (e == "兴趣小组") {
  9. uni.reLaunch({
  10. url: "/pages/interestGroup/interestGroup"
  11. })
  12. uni.hideHomeButton()
  13. } else if (e == "我的") {
  14. uni.reLaunch({
  15. url: "/pages/mine/mine"
  16. })
  17. uni.hideHomeButton()
  18. }
  19. },

总结:主要还是要摸索一下uView的tabbar的切换逻辑 。uniapp原生的tabbar必须要注释了。退出账号的时候,得把本地存的信息要删除掉。这是一个比较笨的方法,如果大家有其他好的方法的话,欢迎交流学习噢!

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/555868
推荐阅读