17--微信小程序 点击显示想要展示的组件 和 功能,及九宫格 隐藏

在这里插入图片描述
隐藏:
在这里插入图片描述
签到类型:
在这里插入图片描述
页面:

<view class="container">
  <!-- 头部 -->
  <view class="header">
    <view class="top">
      <image class="logo" src="/static/images/ban.png"></image>
      <label class="classname">{{teacherinfo.classname}}</label>
      <tui-icon name="manage" style="position: absolute;right:30rpx;" size="24" color="#fff" bindtap="showMenu"></tui-icon>
      
    </view>
  </view>

  <tui-grid wx:if="{{showMenu}}">
    <block wx:for="{{dataList}}" wx:key="{{index}}">
      <tui-grid-item cell="4" data-name="{{item.name}}" tui-griditem-class="tui-grid-four" bind:click="itemClick">
        <view class="tui-grid-icon">
          <image src="{{item.icon}}"></image>
        </view>
        <text class="tui-grid-label">{{item.name}}</text>
      </tui-grid-item>
    </block>
  </tui-grid>

  <my-edit wx:if="{{showEdit}}" classid="{{teacherinfo.classid}}" classname="{{teacherinfo.classname}}" bindhide="hideEdit"></my-edit>
  <my-qrcode wx:if="{{showQrcode}}" classid="{{teacherinfo.classid}}" classname="{{teacherinfo.classname}}" bindclose="hideQrcode"></my-qrcode>
  <my-teacher wx:if="{{showTeacher}}" classid="{{teacherinfo.classid}}" classname="{{teacherinfo.classname}}"></my-teacher>
  <my-student wx:if="{{showStudent}}" classid="{{teacherinfo.classid}}" classname="{{teacherinfo.classname}}"></my-student>
  <my-jilu wx:if="{{showJilu}}" classid="{{teacherinfo.classid}}" classname="{{teacherinfo.classname}}"></my-jilu>
  <tui-actionsheet show="{{showActionSheet}}" tips="请选择签到类型" item-list="{{itemList}}" mask-closable="{{maskClosable}}" is-cancel="{{true}}" bind:click="selectedKaoqin" bind:cancel="closeActionSheet"></tui-actionsheet>
</view>

js:

// pages/teacher/banji/detail.js
const app = getApp()
Page({
  data: {
    showMenu: true,
    teacherinfo:{},
    showActionSheet: false,
    maskClosable: true,
    isCancel: true,
    showEdit: false,
    showQrcode: false,
    showTeacher: false,
    showStudent: false,
    showJilu: false,
    itemList: [{
      text: "限时签到",
      color: "#1a1a1a"
    }, {
      text: "人工签到",
      color: "#1a1a1a"
    }],
    dataList: [{
      name: "签到",
      icon: '/static/images/qian.png',
      size: 30
    }, {
      name: "编辑",
      icon: '/static/images/bianji.png',
      size: 30
    }, {
      name: "退出班级",
      icon: '/static/images/tuiban.png',
      size: 30
    }, {
      name: "解散班级",
      icon: '/static/images/jiesan.png',
      size: 30
    }, {
      name: "二维码",
      icon: '/static/images/erweima.png',
      size: 30
    }, {
      name: "签到记录",
      icon: '/static/images/jilu.png',
      size: 30
    }, {
      name: "学生",
      icon: '/static/images/xuesheng.png',
      size: 30
    }, {
      name: "教师",
      icon: '/static/images/jiaoshi.png',
      size: 30
    }]
  },


  //页面加载时
  onLoad: function (options) {
    let index = wx.getStorageSync('index')
    console.log(index)
    let teacherinfo = wx.getStorageSync('teacherinfo')[index]
    this.setData({
      teacherinfo
    })
    let classid = this.data.teacherinfo.classid
    this.setData({
      classid
    })
    wx.setStorageSync('classid', classid)
  },
  //显示隐藏功能栏
  showMenu: function(e) {
    this.setData({
      showMenu: !this.data.showMenu
    })
  },
  //关闭
  closeActionSheet: function() {
    this.setData({
      showActionSheet: false
    })
  },
  //显示哪个组件
  itemClick: function(e) {
    let name = e.currentTarget.dataset.name
    console.log(name)
    switch (name) {
      case '签到':
        this.setData({
          showActionSheet: true
        })
        break
      case "编辑":
        this.setData({
          showEdit: true,
          showQrcode: false,
          showTeacher: false,
          showStudent: false,
          showJilu: false
        })
        break
      case "退出班级":
        this.exitbanji(this.data.teacherinfo.classid)
        break
      case "解散班级":
        this.del()
        break
      case "二维码":
        this.setData({
          showQrcode: true,
          showEdit: false,
          showTeacher: false,
          showStudent: false,
          showJilu: false
        })
        break
      case "签到记录":
        this.setData({
          showJilu: true,
          showQrcode: false,
          showEdit: false,
          showTeacher: false,
          showStudent: false
        })
        break
      case "学生":
        this.setData({
          showStudent: true,
          showJilu: false,
          showQrcode: false,
          showEdit: false,
          showTeacher: false
        })
        break
      case "教师":
        this.setData({
          showTeacher: true,
          showJilu: false,
          showQrcode: false,
          showEdit: false,
          showStudent: false
        })
        break
    } //switch 结束
  }, //itemClick方法结束

  //选择签到类型
  selectedKaoqin: function(e) {
    let index = e.detail.index;
    this.closeActionSheet();
    if (index == 0) {
      wx.navigateTo({
        url: '/pages/teacher/qiandao/index?classid=' + this.data.teacherinfo.classid,
      })
    } else {
      wx.navigateTo({
        url: '/pages/teacher/qiandao/rengong?classid=' + this.data.teacherinfo.classid,
      })
    }

  },




  //退出班级
  exitbanji: function() {
    wx.showModal({
      title: '提示',
      content: '是否退出该班级',
      success(res) {
        if (res.confirm) {
          let token = wx.getStorageSync('token')
          let classid = wx.getStorageSync('classid')
          wx.request({
            url: app.globalData.exitbanji,
            method: 'POST',
            header: {
              'content-type': 'application/x-www-form-urlencoded',
              'cookie': token
            },
            data: {
              token,
              classid
            },
            //成功后
            success: res => {
              wx.showToast({
                title: res.data.message,
                icon: 'success',
                duration: 2000
              })
              //移除缓存
              wx.removeStorage({
                key: 'teacherinfo'
              })
              wx.navigateBack({
                complete: (res) => { }
              })

            }
           
          })

        }
      }
    })
  },
  //解散班级
  del: function() {
    wx.showModal({
      title: '提示',
      content: '是否解散该班级',
      success(res) {
        if (res.confirm) {
          let token = wx.getStorageSync('token')
          let classid = wx.getStorageSync('classid')
          wx.request({
            url: app.globalData.delbanji,
            method: 'POST',
            header: {
              'content-type': 'application/x-www-form-urlencoded',
              'cookie': token
            },
            data: {
              token,
              classid
            },
            //成功后
            success: res => {
              if (res.data.error) {
                wx.showToast({
                  title: res.data.message,
                  icon: 'none',
                  duration: 2000
                })
                return
              } else {
                wx.showToast({
                  title: res.data.message,
                  icon: 'success',
                  duration: 2000
                })
              }

              //移除缓存
              wx.removeStorage({
                key: 'teacherinfo'
              })
              wx.navigateBack({
                complete: (res) => { }
              })

            }

          })


        }
      }
    })
  },

  //隐藏编辑班级
  hideEdit: function(e) {
    this.setData({
      showEdit: false
    })
    if (e.detail.classname) {
      let teacherinfo = this.data.teacherinfo
      teacherinfo.classname = e.detail.classname
      this.setData({
        teacherinfo: teacherinfo
      })
    }


  },

  //关闭二维码
  hideQrcode: function() {
    this.setData({
      showQrcode: false
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})

json:引用自定义组件和九宫格

{
  "usingComponents": {
    "tui-icon": "/static/thorui/components/icon/icon",
    "tui-grid": "/static/thorui/components/grid/grid",
    "tui-grid-item": "/static/thorui/components/grid-item/grid-item",
    "tui-actionsheet": "/static/thorui/components/actionsheet/actionsheet",
    "my-edit": "/pages/gongneng/edit/index",
    "my-qrcode": "/pages/gongneng/qrcode/index",
    "my-teacher": "/pages/gongneng/teacher/index",
    "my-student": "/pages/gongneng/student/index",
    "my-kaoqin": "/pages/gongneng/kaoqin/index",
    "my-jilu": "/pages/gongneng/jilu/index"
    
  }
}

样式:

.container {
  padding-bottom: env(safe-area-inset-bottom);
}
my-edit{
  width: 92%;
}
my-student{
  width: 92%;
}
my-teacher{
  width: 92%;
}
my-jilu{
  width: 92%;
}
/* 头部 */

.header {
  background-color: #4e75d3;
  width: 100%;
  height: 106rpx;
  line-height: 106rpx;
}

.top {
  padding-left: 30rpx;
}

.classname {
  color: #fff;
  position: absolute;
  left: 92rpx;
}

.logo {
  width: 50rpx;
  height: 50rpx;
  position: relative;
  top: 11rpx;
}

/* 宫格 */
.tui-title {
  padding: 50rpx 30rpx 30rpx 30rpx;
  font-size: 32rpx;
  color: #333;
  box-sizing: border-box;
  font-weight: bold;
  border-top: 0 !important;
}

.tui-grid-icon {
  width: 64rpx;
  height: 64rpx;
  margin: 0 auto;
  text-align: center;
  vertical-align: middle;
}

.tui-grid-icon + .tui-grid-label {
  margin-top: 10rpx;
}

.tui-grid-four {
  padding: 30rpx 20rpx !important;
}

.tui-grid-5 {
  margin-top: 0 !important;
  color: #8a5966 !important;
}

.tui-grid-five {
  padding: 20rpx !important;
}

.tui-grid-label {
  display: block;
  text-align: center;
  font-weight: 400;
  color: #333;
  font-size: 28rpx;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

猜你喜欢

转载自blog.csdn.net/xu_ze_qin/article/details/107131040