diff --git a/src/views/dms/dmsFaultInstanceActivity/index.vue b/src/views/dms/dmsFaultInstanceActivity/index.vue
index 34b665f..9f782b9 100644
--- a/src/views/dms/dmsFaultInstanceActivity/index.vue
+++ b/src/views/dms/dmsFaultInstanceActivity/index.vue
@@ -47,11 +47,28 @@
+
+
+
+
@@ -65,8 +82,37 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -184,6 +230,17 @@
+
+
+
+
+
+
+
+
+
+
+
>({});
const workOrder = ref({});
const workOrderStatusText = ref('');
+const approveStatusText = ref('');
+const confirmStatusText = ref('');
const outsourceList = ref([]);
const outsourcingName = ref('');
+
// 表单相关
const processFormRef = ref();
const submitVerifyRef = ref>();
@@ -229,6 +290,9 @@ const approvalRecordRef = ref>();
// 任务变量
const taskVariables = ref({});
+// 当前用户是否为任务办理人
+const isCurrentUserTaskAssignee = ref(false);
+
// 表单数据
const initFormData = {
repairInstanceId: undefined,
@@ -255,8 +319,15 @@ const rules = reactive({
processHandleResolution: [{ required: false, message: '处理意见不能为空', trigger: 'blur' }]
});
+// 是否为查看模式
+const isViewMode = computed(() => {
+ return routeParams.value.type === 'view';
+});
+
// 计算属性
const needProcessResolution = computed(() => {
+ // 查看模式不显示处理意见输入框
+ if (isViewMode.value) return false;
return isApprovalStage.value || confirmButtonShow.value;
});
@@ -268,8 +339,10 @@ const currentStepName = computed(() => {
});
const approvalButtonShow = computed(() => {
- // 显示审批按钮的条件:工单审批状态为待审批(1)
- return workOrder.value?.approveStatus === '1';
+ // 查看模式不显示审批按钮
+ if (isViewMode.value) return false;
+ // 显示审批按钮的条件:工单审批状态为待审批(1) && 当前用户是任务办理人
+ return workOrder.value?.approveStatus === '1' && isCurrentUserTaskAssignee.value;
});
const confirmButtonShow = computed(() => {
@@ -290,20 +363,26 @@ const confirmButtonShow = computed(() => {
const approveStatusMatches = String(workOrder.value?.approveStatus) === '2';
const repairConfirmMatches = String(workOrder.value?.repairConfirm) === '0';
- const shouldShow = billsStatusMatches && approveStatusMatches && repairConfirmMatches;
+ // 查看模式不显示主管确认按钮
+ if (isViewMode.value) return false;
+
+ // 同时需要当前用户是任务办理人
+ const shouldShow = billsStatusMatches && approveStatusMatches && repairConfirmMatches && isCurrentUserTaskAssignee.value;
console.log('主管确认按钮显示结果:', {
billsStatusMatches,
approveStatusMatches,
repairConfirmMatches,
+ isCurrentUserTaskAssignee: isCurrentUserTaskAssignee.value,
shouldShow
});
return shouldShow;
});
-// 是否为审批阶段
+// 是否为审批阶段(查看模式不显示审批状态选择框)
const isApprovalStage = computed(() => {
+ if (isViewMode.value) return false;
return workOrder.value?.approveStatus === '1';
});
@@ -319,6 +398,9 @@ onMounted(async () => {
// 获取外协单位列表
await getOutsourceList();
+ // 检查当前用户是否为任务办理人
+ await checkCurrentUserTaskPermission();
+
// 初始化表单数据
initializeFormData();
@@ -333,6 +415,40 @@ onMounted(async () => {
}
});
+// 检查当前用户是否为任务办理人
+const checkCurrentUserTaskPermission = async () => {
+ try {
+ const businessId = routeParams.value.id;
+ if (!businessId) {
+ isCurrentUserTaskAssignee.value = false;
+ return;
+ }
+
+ // 查询当前用户的待办任务列表,筛选出匹配当前工单的任务
+ const taskRes = await pageByTaskWait({
+ pageNum: 1,
+ pageSize: 100,
+ flowCode: 'Fault01' // 故障维修流程代码
+ });
+
+ // 检查是否有匹配当前业务ID的待办任务
+ const matchingTask = taskRes.rows?.find(
+ (task: any) => String(task.businessId) === String(businessId)
+ );
+
+ isCurrentUserTaskAssignee.value = !!matchingTask;
+
+ console.log('用户任务权限检查:', {
+ businessId,
+ hasMatchingTask: !!matchingTask,
+ isCurrentUserTaskAssignee: isCurrentUserTaskAssignee.value
+ });
+ } catch (error) {
+ console.error('检查用户任务权限失败:', error);
+ isCurrentUserTaskAssignee.value = false;
+ }
+};
+
// 加载工单信息
const loadWorkOrderInfo = async () => {
// 从query参数获取businessId
@@ -348,6 +464,8 @@ const loadWorkOrderInfo = async () => {
// 设置状态显示文本 - 添加安全检查
workOrderStatusText.value = getStatusText(workOrder.value.billsStatus || '');
+ approveStatusText.value = getApproveStatusText(workOrder.value.approveStatus || '');
+ confirmStatusText.value = getConfirmStatusText(workOrder.value.repairConfirm || '');
};
// 初始化表单数据
@@ -385,7 +503,25 @@ const approvalVerifyOpen = async () => {
if (!processFormRef.value) return;
try {
+ // 先进行表单验证
const valid = await processFormRef.value.validate();
+ if (!valid) {
+ (proxy as any)?.$modal.msgWarning('请填写必填项');
+ return;
+ }
+
+ // 检查审批状态是否已选择
+ if (!form.approveStatus || form.approveStatus === '1') {
+ (proxy as any)?.$modal.msgWarning('请选择审批状态(通过或拒绝)');
+ return;
+ }
+
+ // 检查处理意见是否已填写
+ if (!form.processHandleResolution || form.processHandleResolution.trim() === '') {
+ (proxy as any)?.$modal.msgWarning('请填写处理意见');
+ return;
+ }
+
if (valid) {
await (proxy as any)?.$modal.confirm('是否确认提交审批?');
@@ -433,6 +569,12 @@ const submitCallback = async (approvalResult?: any) => {
// 主管确认处理
const handleConfirm = async () => {
+ // 检查处理意见是否已填写
+ if (!form.processHandleResolution || form.processHandleResolution.trim() === '') {
+ (proxy as any)?.$modal.msgWarning('请填写处理意见');
+ return;
+ }
+
try {
// 使用自定义按钮的确认对话框
const result = await ElMessageBox.confirm(
@@ -528,7 +670,7 @@ const setDynamicValidationRules = () => {
// 工具函数
const getStatusText = (status: string) => {
- const statusMap = {
+ const statusMap: Record = {
'0': '待维修',
'1': '维修中',
'2': '维修完成',
@@ -537,6 +679,25 @@ const getStatusText = (status: string) => {
};
return statusMap[status] || '未知状态';
};
+
+const getApproveStatusText = (status: string) => {
+ const statusMap: Record = {
+ '0': '未提交',
+ '1': '待审批',
+ '2': '审批通过',
+ '3': '审批拒绝'
+ };
+ return statusMap[status] || '未知状态';
+};
+
+const getConfirmStatusText = (status: string) => {
+ const statusMap: Record = {
+ '0': '待确认',
+ '1': '确认通过',
+ '2': '确认不通过'
+ };
+ return statusMap[status] || '未知状态';
+};