diff --git a/dist.zip b/dist.zip index 37c5042..2487246 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/src/api/business/category/category-api.js b/src/api/business/category/category-api.js index 5eb80d2..048057c 100644 --- a/src/api/business/category/category-api.js +++ b/src/api/business/category/category-api.js @@ -23,6 +23,10 @@ export const categoryApi = { queryCategoryTree: (param) => { return postRequest('/category/tree', param); }, + // 查询类目层级树(带子节点-活动)@author wzh + queryCategoryTreeChild: () => { + return getRequest('/category/tree/child'); + }, // 更新类目 @author 卓大 updateCategory: (param) => { return postRequest('/category/update', param); diff --git a/src/api/business/service-applications/service-applications-api.js b/src/api/business/service-applications/service-applications-api.js index 76c17a5..f6aea2c 100644 --- a/src/api/business/service-applications/service-applications-api.js +++ b/src/api/business/service-applications/service-applications-api.js @@ -143,6 +143,13 @@ export const serviceApplicationsApi = { return getDownload('/serviceApplications/exportLawyerByDepartment', params); }, + /** + * 查询是否有未审核的数据 @author wzh + */ + queryNoReview: () => { + return getRequest('/serviceApplications/queryNoReview'); + }, + /** * 服务上报统计 @author */ @@ -156,4 +163,39 @@ export const serviceApplicationsApi = { getServiceApplicationsCost: (queryForm) => { return postRequest('/serviceApplications/statistics/cost', queryForm); }, + + /** + * 按活动统计律师服务数据 @author wzh + */ + statisticsByActivity: (params) => { + return postRequest('/serviceApplications/statistics/lawyerActivityCount', params); + }, + + /** + * 导出律师活动统计 @author wzh + */ + exportLawyerActivityStatistics: (params) => { + return postDownload('/serviceApplications/export/lawyerActivityCount', params); + }, + + /** + * 导出服务申报明细 @author wzh + */ + exportServiceApplications: (params) => { + return postDownload('/serviceApplications/export/activityDetail', params); + }, + + /** + * 按活动统计律所服务数据 @author wzh + */ + statisticsFirmByActivity: (params) => { + return postRequest('/serviceApplications/statistics/firmActivityCount', params); + }, + + /** + * 导出律所活动统计 @author wzh + */ + exportFirmActivityStatistics: (params) => { + return postDownload('/serviceApplications/export/firmActivityCount', params); + }, }; diff --git a/src/lvshi.html b/src/lvshi.html new file mode 100644 index 0000000..727eb5a --- /dev/null +++ b/src/lvshi.html @@ -0,0 +1,1071 @@ + + + + + + 报表统计 + + + + + + + +
+ + + +
+
+ + +
+
+ + +
+ + + +
+

筛选条件

+
+
+ +
+ + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+
+
+ + +
+
+

律师服务汇总

+
+ 每页显示: + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
序号律师姓名执业证号执业机构活动分类服务总时长(小时) 服务次数
1商立群136456…安徽承义律师事务所法律咨询31
2张丽丽131551…安徽三乐律师事务所法制宣传251
3孙睿139551…安徽承义律师事务所3法律援助100
4李惊雷132456…安徽承义律师事务所法律援助6815
5陈菊134567…安徽春辰律师事务所法律援助458
+
+ + + +
+
+ + +
+ + + +
+

筛选条件

+
+
+ +
+ + + +
+
+
+ + +
+
+
+ + + +
+
+ + +
+

活动参与情况

+ +
+ +
+
+ + 普法宣传 + 共 120 人参与,总时长 450h +
+
+ +
+
+ + 社区普法讲座 + 共 45 人参与,总时长 112.5h +
+
+
+
+ 张哲豪 + 安徽金华安律师事务所 +
+ 2.5h +
+
+
+ 袁先生 + 蜀山区法律援助中心 +
+ 2.5h +
+
+
+ 王律师 + 安徽承义律师事务所 +
+ 3h +
+ +
+
+ + +
+
+ + 校园普法活动 + 共 75 人参与,总时长 337.5h +
+
+
+
+ 陈菊 + 安徽春辰律师事务所 +
+ 68h +
+ +
+
+
+
+ + +
+
+ + 法律援助 + 共 80 人参与,总时长 300h +
+
+ +
+
+ + 农民工讨薪援助 + 共 30 人参与,总时长 120h +
+
+
+
+ 李惊雷 + 安徽承义律师事务所 +
+ 6h +
+ +
+
+ + +
+
+ + 未成年人保护 + 共 50 人参与,总时长 180h +
+
+ +
+
+
+
+
+
+
+
+ + + + diff --git a/src/views/business/erp/service/ceo-service-detail.vue b/src/views/business/erp/service/ceo-service-detail.vue index 50a8d56..b988e11 100644 --- a/src/views/business/erp/service/ceo-service-detail.vue +++ b/src/views/business/erp/service/ceo-service-detail.vue @@ -563,7 +563,7 @@ const columns = ref([ width: 100 }, { - title: '职务名称', + title: '所属服务团', dataIndex: 'positionName', key: 'positionName', ellipsis: true, diff --git a/src/components/system/service-count/firm-statistics-detail.vue b/src/views/business/erp/service/firm-statistics-detail.vue similarity index 72% rename from src/components/system/service-count/firm-statistics-detail.vue rename to src/views/business/erp/service/firm-statistics-detail.vue index 2203175..40b5233 100644 --- a/src/components/system/service-count/firm-statistics-detail.vue +++ b/src/views/business/erp/service/firm-statistics-detail.vue @@ -1,12 +1,39 @@ \ No newline at end of file diff --git a/src/components/system/service-count/law-firm.vue b/src/views/business/erp/service/law-firm.vue similarity index 98% rename from src/components/system/service-count/law-firm.vue rename to src/views/business/erp/service/law-firm.vue index 1ff0a9e..ffc7aaa 100644 --- a/src/components/system/service-count/law-firm.vue +++ b/src/views/business/erp/service/law-firm.vue @@ -74,7 +74,7 @@ import { SearchOutlined, ReloadOutlined, DownloadOutlined, ArrowLeftOutlined } f import { message } from 'ant-design-vue'; import { serviceApplicationsApi } from '/@/api/business/service-applications/service-applications-api'; import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue'; -import FirmStatisticsDetail from './firm-statistics-detail.vue'; // 导入detail组件 +import FirmStatisticsDetail from '/@/views/business/erp/service/firm-statistics-detail.vue'; // 导入detail组件 // 响应式数据 const loading = ref(false); diff --git a/src/views/business/erp/service/lawyer-service-report-statistics.vue b/src/views/business/erp/service/lawyer-service-report-statistics.vue new file mode 100644 index 0000000..a87fb12 --- /dev/null +++ b/src/views/business/erp/service/lawyer-service-report-statistics.vue @@ -0,0 +1,549 @@ + + + + + + \ No newline at end of file diff --git a/src/views/business/erp/service/lawyer-statistics-detail.vue b/src/views/business/erp/service/lawyer-statistics-detail.vue new file mode 100644 index 0000000..bef3ceb --- /dev/null +++ b/src/views/business/erp/service/lawyer-statistics-detail.vue @@ -0,0 +1,378 @@ + + + + \ No newline at end of file diff --git a/src/views/business/erp/service/service-applications-count.vue b/src/views/business/erp/service/service-applications-count.vue index 67544bc..212c7c1 100644 --- a/src/views/business/erp/service/service-applications-count.vue +++ b/src/views/business/erp/service/service-applications-count.vue @@ -44,7 +44,7 @@ import { ref, onMounted, reactive, watch } from 'vue'; import { ExportOutlined, SearchOutlined, ReloadOutlined, ArrowLeftOutlined } from '@ant-design/icons-vue'; import { message } from 'ant-design-vue'; import QuarterStatistics from '/@/components/system/service-count/quarter-statistics.vue'; -import LawFirmStatistics from '/@/components/system/service-count/law-firm.vue'; +import LawFirmStatistics from '/@/views/business/erp/service/law-firm.vue'; import ExcelStatisticsDetail from '/@/components/system/service-count/excel-statistics-detail.vue'; import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue'; import { loginApi } from '/@/api/system/login-api'; diff --git a/src/views/business/erp/service/service-applications-form.vue b/src/views/business/erp/service/service-applications-form.vue index 0a7acee..b31f7a7 100644 --- a/src/views/business/erp/service/service-applications-form.vue +++ b/src/views/business/erp/service/service-applications-form.vue @@ -43,8 +43,8 @@ - - + + @@ -559,7 +559,7 @@ certificateNumber: undefined, firmId: undefined, //执业机构ID departmentName: undefined, //部门名称 - positionId: undefined, //职务ID + positionId: undefined, //所属服务团ID serviceStart: undefined, //服务开始时间 serviceEnd: undefined, //服务结束时间 serviceDuration: undefined, //服务时长(小时) diff --git a/src/views/business/erp/service/service-applications-list.vue b/src/views/business/erp/service/service-applications-list.vue index 4ab3d30..af139ae 100644 --- a/src/views/business/erp/service/service-applications-list.vue +++ b/src/views/business/erp/service/service-applications-list.vue @@ -32,10 +32,10 @@ - + @@ -111,6 +111,8 @@ 批量审核 + + 批量上报 - + + + + 导出 + +
@@ -332,7 +341,7 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue' ellipsis: true, }, { - title: '职务名称', + title: '所属服务团', dataIndex: 'positionName', ellipsis: true, width: 100, @@ -665,6 +674,13 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue' // 检查是否有成本查询权限 if (loginInfo.value.costVisibleFlag === true) { try { + // 先检查是否有未审核的数据 + const hasUnreviewedData = await checkUnreviewedData(); + if (hasUnreviewedData) { + message.warning('有律师提交的数据尚未审核,请先完成审核后再进行批量上报。'); + return; + } + const costPermissionResult = await firmReportsApi.query(); if (costPermissionResult.data === false) { // 成本权限检查返回false,需要先填报成本报表 @@ -746,6 +762,21 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue' return reportYear === lastMonthYear && reportMonth === lastMonth; } + // 检查是否有未审核的数据 + async function checkUnreviewedData() { + try { + // 调用后端提供的专门接口查询是否有未审核的数据 + const result = await serviceApplicationsApi.queryNoReview(); + + // 如果返回的数据大于0,说明有未审核的记录 + return result.data && result.data > 0; + + } catch (error) { + console.error('检查未审核数据失败:', error); + return false; // 出错时默认返回false,避免阻塞用户操作 + } + } + // 执行批量上报 async function handleBatchReport(validRecords) { try { @@ -1196,8 +1227,19 @@ function showAuditModal(record) { } } - async function onExport() { - await serviceApplicationsApi.exportServiceApplications(); + // 导出功能 + async function handleExport() { + try { + const params = processQueryParams({ ...queryForm }); + // 导出时删除分页参数 + delete params.pageNum; + delete params.pageSize; + await serviceApplicationsApi.exportServiceApplications(params); + message.success('导出成功'); + } catch (error) { + smartSentry.captureError(error); + message.error('导出失败'); + } } // ---------------------------- 批量提交 ---------------------------- diff --git a/src/views/business/erp/service/service-applications-report-list.vue b/src/views/business/erp/service/service-applications-report-list.vue index 54f003d..022599a 100644 --- a/src/views/business/erp/service/service-applications-report-list.vue +++ b/src/views/business/erp/service/service-applications-report-list.vue @@ -73,6 +73,14 @@ 批量删除 + + + + + 导出 +
- +