Explorar o código

审核前判断

xzc hai 1 semana
pai
achega
5bd3e3361c

+ 7 - 0
yudao-ui-admin-vue3/src/api/pressure2/orderreport/index.ts

@@ -8,6 +8,8 @@ export interface OrderReportVO {
   orderType: string // 类型(1:受理单,2:任务单)
   templateId: string // 模板id
   insId: string // 报表实例id
+  signUrl: string // 签名图片地址
+  signDate: string // 签名时间
 }
 
 // 受理单任务单关联报告 API
@@ -72,4 +74,9 @@ export const OrderReportApi = {
     return await request.get({ url: `/pressure2/notificationform-report/updateNotificationReport/` + id })
   },
 
+  // 检查任务单是否有有效签名(基于签名文件表)
+  hasValidSignByOrderId: async (orderId: string) => {
+    return await request.get({ url: `/pressure2/boiler-task-order-sign-file/hasValidSign`, params: { orderId } })
+  },
+
 }

+ 19 - 0
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/components/StatusOperationPanel.vue

@@ -860,6 +860,7 @@ import { uploadFile } from '@/api/common/index'
 import ReportListUploadModal from './reportListUploadModal.vue'
 import AssociationOperationManual from './AssociationOperationManual.vue'
 import {DynamicTbInsApi} from "@/api/pressure2/dynamictbins";
+import { OrderReportApi } from "@/api/pressure2/orderreport";
 import {SpreadViewer} from "@/components/DynamicReport";
 import {InitParams} from "@/components/DynamicReport/SpreadInterface";
 import { cloneDeep, debounce } from 'lodash-es'
@@ -1814,6 +1815,24 @@ const handleSubmitAudit = async () => {
     return
   }
 
+  // 主报告需检查签名状态(金额变动后签名会被置空)
+  if (props?.selectedItem?.reportType === PressureReportType.MAIN) {
+    try {
+      const hasValidSign = await OrderReportApi.hasValidSignByOrderId(props.taskInfo?.id || props.taskId)
+      if (!hasValidSign) {
+        await ElMessageBox.alert(
+          '任务单金额已发生变动,客户签名已失效,请重新推送客户签名后再提交审核',
+          '无法提交审核'
+        )
+        return
+      }
+    } catch (error) {
+      console.error('检查签名状态失败:', error)
+      ElMessage.error('检查签名状态失败,请重试')
+      return
+    }
+  }
+
   // if([PressureReportType.SUGGUESTION, PressureReportType.MAINQUESTION].includes(props?.selectedItem?.reportType) && !props?.selectedItem?.reportUrl) {
   //   // 【重大问题线索告知表,检验意见通知书】必须先填写记录,才能提交审核
   //   ElMessage.warning('请先“填写记录”!再提交审核!')

+ 19 - 0
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/components/StatusOperationPanel.vue

@@ -856,6 +856,7 @@ import {InitParams} from "@/components/DynamicReport/SpreadInterface";
 import { cloneDeep, debounce } from 'lodash-es'
 import {BoilerTaskOrderApi} from "@/api/pressure2/boilertaskorder";
 import {BoilerConnectRecordReportApi} from "@/api/pressure2/boilerconnectrecordreport";
+import { OrderReportApi } from "@/api/pressure2/orderreport";
 import * as UserGroupApi from '@/api/bpm/userGroup'
 
 const CustomDialog = defineAsyncComponent(() => import('@/components/CustomDialog/index.vue'))
@@ -1768,6 +1769,24 @@ const handleSubmitAudit = async () => {
     return
   }
 
+  // 主报告需检查签名状态(金额变动后签名会被置空)
+  if (props?.selectedItem?.reportType === PressureReportType.MAIN) {
+    try {
+      const hasValidSign = await OrderReportApi.hasValidSignByOrderId(props.taskInfo?.id || props.taskId)
+      if (!hasValidSign) {
+        await ElMessageBox.alert(
+          '任务单金额已发生变动,客户签名已失效,请重新推送客户签名后再提交审核',
+          '无法提交审核'
+        )
+        return
+      }
+    } catch (error) {
+      console.error('检查签名状态失败:', error)
+      ElMessage.error('检查签名状态失败,请重试')
+      return
+    }
+  }
+
   // if([PressureReportType.SUGGUESTION, PressureReportType.MAINQUESTION].includes(props?.selectedItem?.reportType) && !props?.selectedItem?.reportUrl) {
   //   // 【重大问题线索告知表,检验意见通知书】必须先填写记录,才能提交审核
   //   ElMessage.warning('请先“填写记录”!再提交审核!')