/**
|
* 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 = '<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.userName}(${item.userId})</td>
|
<td>${item.storeName}</td>
|
<td>${item.relCdName}</td>
|
</tr>`;
|
});
|
|
content += '</tbody></table>';
|
content += '</div>';
|
|
// 使用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);
|