diff --git a/src/api/system/employee-api.js b/src/api/system/employee-api.js index c2cc16e..bc5a041 100644 --- a/src/api/system/employee-api.js +++ b/src/api/system/employee-api.js @@ -90,4 +90,10 @@ export const employeeApi = { queryEmployeeByDeptId: (departmentId) => { return getRequest(`/employee/getAllEmployeeByDepartmentId/${departmentId}`); }, + /** + * 搜索员工(下拉框搜索用) + */ + searchEmployee: (params) => { + return getRequest('/employee/search', params); + }, }; diff --git a/src/views/business/erp/penalty-apply/penalty-apply-list.vue b/src/views/business/erp/penalty-apply/penalty-apply-list.vue index f4a3f78..124236e 100644 --- a/src/views/business/erp/penalty-apply/penalty-apply-list.vue +++ b/src/views/business/erp/penalty-apply/penalty-apply-list.vue @@ -346,6 +346,7 @@ import PenaltyApplyForm from './penalty-apply-form.vue'; applyDateStart: undefined, // 申请日期开始 applyDateEnd: undefined, // 申请日期结束 status: undefined, // 状态 + userType: undefined, // 角色类型(ceo/cto/staff/user) }; // 查询表单form const queryForm = reactive({ ...queryFormState }); @@ -456,6 +457,17 @@ import PenaltyApplyForm from './penalty-apply-form.vue'; // 行政人员角色判断 isFirmAdmin.value = roleCodes.includes('staff'); + // 设置userType供后端过滤状态字段 + if (isCeo.value) { + queryForm.userType = 'ceo'; + } else if (isCto.value) { + queryForm.userType = 'cto'; + } else if (isFirmAdmin.value) { + queryForm.userType = 'staff'; + } else { + queryForm.userType = 'user'; + } + console.log('用户角色代码:', roleCodes, 'isCeo:', isCeo.value, 'isUser:', isUser.value, 'isCto:', isCto.value, 'isFirmAdmin:', isFirmAdmin.value); } } diff --git a/src/views/business/erp/service/service-applications-list.vue b/src/views/business/erp/service/service-applications-list.vue index 4e042b6..ed0c24d 100644 --- a/src/views/business/erp/service/service-applications-list.vue +++ b/src/views/business/erp/service/service-applications-list.vue @@ -14,7 +14,7 @@ - + { - let result = employeeList.value; - - // 首先根据执业机构过滤 - if (queryForm.firmId) { - result = result.filter(item => item.departmentId == queryForm.firmId); - } - - // 然后根据搜索关键词过滤 - if (searchKeyword.value) { - const keyword = searchKeyword.value.toLowerCase(); - result = result.filter(item => - (item.actualName && item.actualName.toLowerCase().includes(keyword)) || - (item.departmentName && item.departmentName.toLowerCase().includes(keyword)) - ); - } - - return result; - }); + // 员工列表(直接使用API返回的数据,无需前端过滤) + const filteredEmployeeList = computed(() => employeeList.value); // 审核相关状态 const auditModalVisible = ref(false); @@ -618,13 +600,6 @@ import { getRoleInfo } from '/@/utils/role-util'; return optionText.includes(input.toLowerCase()); } - // 处理律师搜索 - function handleLawyerSearch(keyword) { - searchKeyword.value = keyword; - } - - - // 批量审核确认 async function handleBatchAudit() { if (!batchAuditForm.auditResult) { @@ -833,27 +808,41 @@ import { getRoleInfo } from '/@/utils/role-util'; } } - // 加载所有员工数据 - async function loadAllEmployees() { + // 加载指定机构的员工数据(使用新搜索接口) + async function loadEmployeesByFirm(keyword = '') { try { - if (employeeList.value.length === 0) { - let resp = await employeeApi.queryAll(); - employeeList.value = resp.data; + // 律所主任(cto)和行政(staff)角色:只看当前律所的律师 + // 律协/CEO角色:可以看所有律师 + let firmId = undefined; + if (loginInfo.value) { + const roleCode = loginInfo.value.roleCode || ''; + if (roleCode === 'cto' || roleCode === 'staff') { + firmId = loginInfo.value.departmentId; + } } + + const params = { + firmId: queryForm.firmId || firmId, + keyword: keyword || undefined, + limit: 50 + }; + const resp = await employeeApi.searchEmployee(params); + employeeList.value = resp.data || []; } catch (e) { console.error('加载员工数据失败:', e); } } - // 加载指定机构的员工数据 - async function loadEmployeesByFirm() { - try { - if (employeeList.value.length === 0) { - await loadAllEmployees(); - } - } catch (e) { - console.error('加载员工数据失败:', e); - } + // 搜索防抖定时器 + let searchTimer = null; + + // 处理律师搜索(带防抖) + function handleLawyerSearch(keyword) { + clearTimeout(searchTimer); + searchKeyword.value = keyword; + searchTimer = setTimeout(() => { + loadEmployeesByFirm(keyword); + }, 300); // 300ms 防抖 } // 处理执业机构变化 @@ -861,6 +850,8 @@ import { getRoleInfo } from '/@/utils/role-util'; // 清空律师选择 queryForm.userId = undefined; searchKeyword.value = ''; + // 重新加载律师列表 + loadEmployeesByFirm(''); } // 处理律师选择变化(选择律师时清空搜索关键词) @@ -868,9 +859,10 @@ import { getRoleInfo } from '/@/utils/role-util'; searchKeyword.value = ''; } - // 处理律师下拉框清空(点击叉号时清空搜索关键词) + // 处理律师下拉框清空(点击叉号时清空搜索关键词并重新加载) function handleLawyerClear() { searchKeyword.value = ''; + loadEmployeesByFirm(''); } // 总数