| | |
| | | /** |
| | | * initData组件 - 初始化数据组件 |
| | | * 功能:处理登录后的用户数据初始化,包括社区信息加载、权限加载等 |
| | | * @param {Object} vc - 框架核心对象 |
| | | */ |
| | | (function (vc) { |
| | | vc.extends({ |
| | | data: { |
| | | initDataInfo: { |
| | | loginUsers: [], |
| | | pageUrl: '' |
| | | 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 = '<div style="padding: 20px;">'; |
| | | content += '<table class="layui-table">'; |
| | | content += '<thead><tr><th>选择</th><th>账号</th><th>隶属</th><th>角色</th></tr></thead>'; |
| | | content += '<tbody>'; |
| | | |
| | | // 遍历登录用户列表,生成表格行 |
| | | $that.initDataInfo.loginUsers.forEach(function (item) { |
| | | content += `<tr> |
| | | <td><input type="radio" name="selectedItem" value='${JSON.stringify(item)}'></td> |
| | |
| | | <td>${item.relCdName}</td> |
| | | </tr>`; |
| | | }); |
| | | |
| | | content += '</tbody></table>'; |
| | | content += '</div>'; |
| | | |
| | | // 打开弹框 |
| | | // 使用layer.open打开用户选择弹框 |
| | | layer.open({ |
| | | type: 1, |
| | | title: '请选择账号', |
| | | content: content, |
| | | area: ['600px', '400px'], |
| | | btn: ['确定', '取消'], |
| | | 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', |
| | | page: 1, |
| | | row: 3 |
| | | _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' |
| | | _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.jumpToPage(_param.url); |
| | | // 提示错误信息 |
| | | vc.toast(e); |
| | | } |
| | | ); |
| | | }, |
| | | /** |
| | | * 加载员工权限 |
| | | * 获取当前用户的操作权限列表,并保存到缓存中 |
| | | */ |
| | | _loadStaffPrivileges: function (_param) { |
| | | |
| | | // 请求参数 |
| | | let param = { |
| | | params: { |
| | | a: 'HC' |
| | | a: 'HC' // 应用标识 |
| | | } |
| | | }; |
| | | //发送get请求 |
| | | |
| | | // 发送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('请求失败处理'); |
| | | }); |