/** * initData组件 - 初始化数据组件 * 功能:处理登录后的用户数据初始化,包括社区信息加载、权限加载等 * @param {Object} vc - 框架核心对象 */ (function (vc) { vc.extends({ data: { initDataInfo: { loginUsers: [], // 登录用户列表,支持多用户选择 pageUrl: '' // 登录后跳转的页面URL } }, /** * 组件初始化方法 * 在组件创建时自动调用,这里为空实现 */ _initMethod: function () { }, /** * 组件事件初始化方法 * 注册组件事件监听器,处理外部事件通知 */ _initEvent: function () { // 监听initData组件的loadCommunityInfo事件,用于处理登录后的社区信息加载 vc.on('initData', 'loadCommunityInfo', function (_param) { // 将参数中的登录用户列表和页面URL保存到组件数据中 $that.initDataInfo.loginUsers = _param.loginUsers; $that.initDataInfo.pageUrl = _param.url; // 如果有多个登录用户,打开选择弹框让用户选择 if ($that.initDataInfo.loginUsers.length > 1) { $that._initOpenModal(); return; } // 如果只有一个登录用户,直接初始化用户信息 $that._initLoginUserInfo($that.initDataInfo.loginUsers[0]); }) }, methods: { /** * 初始化打开用户选择弹框 * 当存在多个登录用户时,显示选择界面让用户选择要使用的账号 */ _initOpenModal: function () { // 构建用户选择表格的HTML内容 var content = '
'; content += ''; content += ''; content += ''; // 遍历登录用户列表,生成表格行 $that.initDataInfo.loginUsers.forEach(function (item) { content += ``; }); content += '
选择账号隶属角色
${item.userName}(${item.userId}) ${item.storeName} ${item.relCdName}
'; content += '
'; // 使用layer.open打开用户选择弹框 layer.open({ type: 1, // 1表示页面层 title: '请选择账号', // 弹框标题 content: content, // 弹框内容,即上面构建的HTML area: ['600px', '400px'], // 弹框大小 btn: ['确定', '取消'], // 弹框按钮 // 确定按钮回调函数 yes: function (index, layero) { // 获取用户选择的radio按钮 let selected = document.querySelector('input[name="selectedItem"]:checked'); if (selected) { // 解析选中的值,获取用户信息 let selectedData = JSON.parse(selected.value); // 初始化选中的用户信息 $that._initLoginUserInfo(selectedData); } else { // 如果没有选择,提示用户 vc.toast('请选择'); } layer.close(index); // 关闭弹框 }, // 取消按钮回调函数 btn2: function (index, layero) { layer.close(index); // 关闭弹框 } }); }, /** * 初始化登录用户信息 * @param {Object} _user - 用户信息对象,包含token等关键信息 */ _initLoginUserInfo: function (_user) { // 将用户token保存到缓存中,供其他组件使用 vc.saveData('hc_accessToken', { token: _user.token }); // 验证用户是否有权限访问门店 $that._validateHasStore(); }, /** * 加载社区信息 * 从服务器获取用户所属的社区列表,并设置当前社区 */ _loadCommunityInfo: function () { // 请求参数 let param = { params: { _uId: 'ccdd00opikookjuhyyttvhnnjuuu', // 用户ID标识 page: 1, // 页码 row: 3 // 每页记录数 } }; // 调用HTTP API获取社区列表 vc.http.apiGet('/community.listMyEnteredCommunitys', param, // 请求成功回调 function (json, res) { let _json = JSON.parse(json); // 如果返回码为0,表示请求成功 if (_json.code == 0) { let _communityInfos = _json.communitys; // 如果有社区信息,设置当前社区和社区列表 if (_communityInfos && _communityInfos.length > 0) { vc.setCurrentCommunity(_communityInfos[0]); vc.setCommunitys(_communityInfos); } else { // 如果没有社区信息,提示用户 vc.toast('运营团队未分配小区,请联系运营团队'); return; } // 跳转到指定页面 vc.jumpToPage($that.initDataInfo.pageUrl); } }, // 请求失败回调 function () { // 无论失败与否,都跳转到指定页面 vc.jumpToPage($that.initDataInfo.pageUrl); } ); }, /** * 验证用户是否有权限访问门店 * 调用API检查用户所属门店信息 */ _validateHasStore: function () { // 请求参数 let param = { params: { _uId: 'ccdd00opikookjuhyyttvhnnjuuu' // 用户ID标识 } }; // 调用HTTP API查询用户所属门店 vc.http.apiGet('/query.store.byuser', param, // 请求成功回调 function (json, res) { if (res.status == 200) { // 如果请求成功,加载用户权限 $that._loadStaffPrivileges(); } else { // 如果请求失败,提示错误信息 vc.toast(json); } }, // 请求失败回调 function (e, res) { console.log('请求失败处理', e); // 提示错误信息 vc.toast(e); } ); }, /** * 加载员工权限 * 获取当前用户的操作权限列表,并保存到缓存中 */ _loadStaffPrivileges: function (_param) { // 请求参数 let param = { params: { a: 'HC' // 应用标识 } }; // 发送get请求获取用户权限 vc.http.apiGet('/query.user.privilege', param, // 请求成功回调 function (json) { let _json = JSON.parse(json); // 提取权限ID列表 let _privilege = []; _json.datas.forEach(item => { _privilege.push(item.pId); }); // 将权限列表保存到缓存中 vc.saveData('hc_staff_privilege', _privilege); // 加载社区信息 $that._loadCommunityInfo(); }, // 请求失败回调 function () { console.log('请求失败处理'); }); }, } }); })(window.vc);