最近搜索

小程序 按钮 权限功能

浏览:62
管理员 2026-01-29 17:05




  data: {
    baseURL: baseURL, //默认是域名
    openid: "", //用户的openid
    orderId: "",
    xcxUser: {},
    order: {},
    config: {}, // config.endTime; // 2小时=7200000毫秒  主要用这个属性
    timer: null, //定时器
    timer2: null, //定时器
    reload_order_timer: null, //3秒一次的定时器,刷新 订单数据用的。
    is_yukuan: false, //默认不显 支付余款
    yukuan_jine: 0, //需要支付的 余款多少钱  
    display_chajia_btn: false, //默认不显示  单独支付差价
    authList:[], // 核心:存为数组,后续判断权限用
    project_expanded:false,//我的费用明细 项目费用展开和收缩用的。
  },
  
  
  
  
  load_xcx_user() {
    find_openid(this.data.openid).then(res => {
      if (res.data.success) {
          // 初始化权限列表为空数组
          let authList = [];
         // 安全处理 permissions 字段:
        // 1. 先判断是否存在且不为 null/undefined
        // 2. 转换为字符串并去除首尾空格
        // 3. 非空时才进行分割和过滤
        const permissions = res.data.xcxUser.permissions;
        if (permissions != null && permissions !== undefined) {
          const permissionsStr = String(permissions).trim();
          if (permissionsStr) {
            authList = permissionsStr.split(',').filter(item => item.trim() !== '');
          }
        }
        this.setData({
          xcxUser: res.data.xcxUser,
          authList:authList
        })
      }
    });
  },
  
  
  页面要引入这个脚本
  <wxs module="filter" src="/utils/filter.wxs"></wxs>

  <button  wx:if="{{filter.hasAuth(authList, 'order:xcx_edit')}}" class="float-btn" bindtap="createOrderForCustomer">
    为客户创建订单
  </button>
 
 
 
 
 
 
 // utils/filter.wxs
var filters = {

 
             /**
             * 权限判断方法
             * @param {Array} authList 权限数组(如 ['order:xcx_edit', 'order:xcx_view'])
             * @param {String} authKey 要判断的权限标识(如 'order:xcx_edit')
             * @return {Boolean} 是否拥有该权限
             */
             hasAuth :function (authList, authKey) {
              // 兼容空值:如果authList不是数组/为空,直接返回false
              if (!authList || typeof authList !== 'object' || authList.length === 0) {
                return false;
              }
              // 遍历数组判断是否包含目标权限(WXS 不支持 Array.includes,需手动遍历)
              for (var i = 0; i < authList.length; i++) {
                if (authList[i] === authKey) {
                  return true;
                }
              }
              return false;
            }


}



// 暴露接口
module.exports = {
   
  hasAuth:filters.hasAuth
   
}


image.png

联系站长

站长微信:xiaomao0055

站长QQ:14496453