diff --git a/src/api/business/penalty-apply/penalty-apply-api.js b/src/api/business/penalty-apply/penalty-apply-api.js
index d18bc47..8097306 100644
--- a/src/api/business/penalty-apply/penalty-apply-api.js
+++ b/src/api/business/penalty-apply/penalty-apply-api.js
@@ -5,7 +5,7 @@
* @Date: 2026-01-07 21:36:44
* @Copyright 1.0
*/
-import { postRequest, getRequest } from '/@/lib/axios';
+import { postRequest, getRequest, getDownload } from '/@/lib/axios';
export const penaltyApplyApi = {
@@ -45,4 +45,11 @@ export const penaltyApplyApi = {
return postRequest('/penaltyApply/batchDelete', idList);
},
+ /**
+ * 无处罚证明下载 @author wzh
+ */
+ exportWordCertificate: (id) => {
+ return getDownload(`/wordCertificate/export/${id}`);
+ },
+
};
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 c7a9dcb..abbf073 100644
--- a/src/views/business/erp/penalty-apply/penalty-apply-list.vue
+++ b/src/views/business/erp/penalty-apply/penalty-apply-list.vue
@@ -51,12 +51,6 @@
新建
-
-
-
-
- 批量删除
-
@@ -80,9 +74,8 @@
@@ -135,6 +128,7 @@
import { message, Modal } from 'ant-design-vue';
import { SmartLoading } from '/@/components/framework/smart-loading';
import { penaltyApplyApi } from '/@/api/business/penalty-apply/penalty-apply-api';
+import { loginApi } from '/@/api/system/login-api';
import { PAGE_SIZE_OPTIONS } from '/@/constants/common-const';
import { REVIEW_ENUM } from '/@/constants/system/review-const';
import { smartSentry } from '/@/lib/smart-sentry';
@@ -203,6 +197,15 @@ import PenaltyApplyForm from './penalty-apply-form.vue';
// 总数
const total = ref(0);
+ // 登录用户信息
+ const loginInfo = ref(null);
+
+ // 判断用户是否为CEO角色
+ const isCeo = ref(false);
+
+ // 判断用户是否为User角色
+ const isUser = ref(false);
+
// 重置查询条件
function resetQuery() {
let pageSize = queryForm.pageSize;
@@ -243,7 +246,39 @@ import PenaltyApplyForm from './penalty-apply-form.vue';
}
- onMounted(queryData);
+ onMounted(() => {
+ getLoginInfo();
+ queryData();
+ });
+
+ // 获取登录信息
+ async function getLoginInfo() {
+ try {
+ const res = await loginApi.getLoginInfo();
+ loginInfo.value = res.data;
+ checkUserRole(); // 获取登录信息后检查用户角色
+ console.log('登录信息:', res.data);
+ } catch (error) {
+ console.error('获取登录信息失败:', error);
+ }
+ }
+
+ // 检查用户角色
+ function checkUserRole() {
+ if (loginInfo.value) {
+ // 根据用户角色判断权限
+ const userRole = loginInfo.value.roleCode || loginInfo.value.roleName || '';
+ const roleLower = userRole.toLowerCase();
+
+ // CEO角色判断
+ isCeo.value = roleLower === 'ceo';
+
+ // User角色判断
+ isUser.value = roleLower === 'user';
+
+ console.log('用户角色:', userRole, 'isCeo:', isCeo.value, 'isUser:', isUser.value);
+ }
+ }
// ---------------------------- 添加/修改 ----------------------------
const formRef = ref();
@@ -345,9 +380,14 @@ import PenaltyApplyForm from './penalty-apply-form.vue';
// ---------------------------- 下载相关 ----------------------------
// 处理下载
function handleDownload(record) {
- // 这里需要调用下载API
- console.log('下载无处罚证明:', record);
- message.info('下载功能待实现');
+ try {
+ // 调用下载API,getDownload函数会自动处理文件下载
+ penaltyApplyApi.exportWordCertificate(record.id);
+ message.success('下载请求已发送');
+ } catch (error) {
+ console.error('下载失败:', error);
+ message.error('下载失败,请稍后重试');
+ }
}
// ---------------------------- 批量删除 ----------------------------
diff --git a/src/views/business/erp/service/ceo-service-detail.vue b/src/views/business/erp/service/ceo-service-detail.vue
index 0f6b3f7..6a0af41 100644
--- a/src/views/business/erp/service/ceo-service-detail.vue
+++ b/src/views/business/erp/service/ceo-service-detail.vue
@@ -267,7 +267,7 @@ 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 ServiceApplicationsForm from './service-applications-form.vue';
-import TableOperator from '/@/components/smart-table/table-operator/index.vue';
+import TableOperator from '/@/components/support/table-operator/index.vue';
const router = useRouter();
const route = useRoute();
diff --git a/src/views/business/erp/service/law-firm-statistics.vue b/src/views/business/erp/service/law-firm-statistics.vue
index 422db05..e1db92e 100644
--- a/src/views/business/erp/service/law-firm-statistics.vue
+++ b/src/views/business/erp/service/law-firm-statistics.vue
@@ -106,6 +106,9 @@