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
}
站长微信:xiaomao0055
站长QQ:14496453