// 抽取公共接口请求函数(异步处理)
function requestApi(url, params) {
return new Promise((resolve, reject) => {
const proxy = viewModel.setProxy({
tempApi: { // 使用临时key避免覆盖已有proxy
url: url,
method: 'post',
options: { "domainKey": 'xlx001' }
}
});
try {
// 优先使用异步方法,避免阻塞UI
proxy.tempApi(params, (err, result) => {
if (err) {
console.error('接口请求失败:', err);
reject(err);
return;
}
resolve(result);
});
} catch (e) {
console.error('请求处理异常:', e);
reject(e);
}
});
}
// 数据加载后事件
viewModel.on('afterLoadData', async function (data) {
const mode = viewModel.getParams().mode;
if (mode !== "browse") {
const staffName = viewModel.get("staff_name").getValue();
if (!staffName) {
try {
// 调用员工信息查询接口
const retResult = await requestApi(
window.location.origin + "/xlx001-be/xlxhr/qry-staffinfo",
{}
);
const retDatas = retResult.result || {};
if (retDatas.staffId) {
// 触发参照选择
cb.utils.triggerReferBrowse(
viewModel.get("staff_name"),
[{ field: "id", op: 'eq', value1: retDatas.staffId }]
);
} else {
console.warn('未获取到有效的员工ID');
}
} catch (e) {
console.error('自动填充员工信息失败:', e);
// 可添加用户提示,如:cb.utils.alert('员工信息加载失败,请手动选择');
}
}
}
});
// 员工姓名变化事件
viewModel.get("staff_name") && viewModel.get("staff_name").on("afterValueChange", async function (event) {
const staffId = event.value?.id; // 可选链避免event.value为undefined时报错
if (!staffId) return; // 无员工ID时不执行后续逻辑
try {
// 调用员工详情接口
const retResult = await requestApi(
window.location.origin + "/xlx001-be/xlxhr/qry-staff-detail-info",
{ staffId: staffId }
);
const { staffJobData = [] } = retResult.result || {}; // 解构赋值并默认空数组
const firstJobData = staffJobData[0] || {}; // 避免访问undefined[0]
// 填充部门信息
if (firstJobData.deptId) {
cb.utils.triggerReferBrowse(
viewModel.get("staffDept_name"),
[{ field: "id", op: 'eq', value1: firstJobData.deptId }]
);
}
// 填充组织信息
if (firstJobData.orgId) {
cb.utils.triggerReferBrowse(
viewModel.get("staffOrganize_name"),
[{ field: "id", op: 'eq', value1: firstJobData.orgId }]
);
}
// 填充职位信息(修正postId为psnclId)
if (firstJobData.psnclId) {
cb.utils.triggerReferBrowse(
viewModel.get("staffPosition_name"),
[{ field: "id", op: 'eq', value1: firstJobData.psnclId }]
);
}
} catch (e) {
console.error('填充员工关联信息失败:', e);
// 可添加用户提示,如:cb.utils.alert('员工详情加载失败,请手动填写关联信息');
}
});
博客内容均系原创,未经允许严禁转载!