Bladeren bron

feat(pressure2): 添加锅炉和管线任务审核人功能

- 在锅炉任务订单API中新增getReviewUserList方法用于获取审核人列表
- 在管线任务订单API中新增getPipeReviewUserList方法用于获取审核人列表
- 移除检验结束时间的日期禁用限制
- 将审核人选择对话框替换为自定义Dialog组件,使用下拉选择方式
- 实现审核人远程搜索功能,支持按名称模糊查询
- 添加审核人选择确认逻辑,验证选择后提交审核
- 修复流程撤销操作的消息提示和页面刷新问题
- 更新审核权限判断逻辑,基于主检验员身份验证
- 注释掉原有的审核人对话框组件调用
xuzhancheng 6 dagen geleden
bovenliggende
commit
c3145c9c22

+ 6 - 0
yudao-ui-admin-vue3/src/api/pressure2/boilertaskorder/index.ts

@@ -583,6 +583,12 @@ export const BoilerTaskOrderApi = {
     return await request.get({ url: '/pressure2/boiler-task-order/recheckUser/page', params})
   },
 
+
+  //获取审核人
+  getReviewUserList: async (params) => {
+    return await request.get({ url: '/pressure2/synchronization/authorizeSignature/'+ params.reportId, params})
+  },
+
   /**
    * 查询检验通知书列表
    * @param params

+ 5 - 0
yudao-ui-admin-vue3/src/api/pressure2/pipetaskorder/index.ts

@@ -576,6 +576,11 @@ export const PipeTaskOrderApi = {
     return await request.get({ url: '/pressure2/pipe-task-order/recheckUser/page', params})
   },
 
+  //获取审核人
+  getPipeReviewUserList: async (params) => {
+    return await request.get({ url: '/pressure2/synchronization/authorizeSignature/'+ params.reportId})
+  },
+
   //设置报告对应管线
   setPipeDetail: async (data: any) => {
     return await request.put({ url: '/pressure2/pipe-task-order/order-item/report/setPipeDetail', data})

+ 63 - 37
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/components/StatusOperationPanel.vue

@@ -470,40 +470,35 @@
       /> -->
 
       <!-- 报告审核人选择对话框 -->
-      <AuditUserDialog
-        v-if="isShowReportAuditDialog"
+      <Dialog
         v-model="isShowReportAuditDialog"
-        :apiFn="getRecheckUserList"
+        width="400"
         title="请选择审核人"
-        selectedAlertText="已选择审核人"
-        width="700px"
-        :columns="[
-          {
-            type: 'selection',
-            fieldProps: {
-              reserveSelection: true
-            }
-          },
-          {
-            label: '姓名',
-            prop: 'nickname',
-            search: {
-              type: 'input',
-              span: 12,
-              prop: 'nickName'
-            }
-          },
-          {
-            label: '部门',
-            prop: 'deptName',
-            search: {
-              type: 'input',
-              span: 12
-            }
-          }
-        ]"
-        @confirm="handleReportAuditSelectConfirm"
-      />
+      >
+        <el-select
+          v-model="reportAuditUser"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请选择审核人"
+          :remote-method="searchReportAuditUser"
+          :loading="reportAuditUserLoading"
+          clearable
+          value-key="code"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in reportAuditUserOptions"
+            :key="item.code"
+            :label="item.name"
+            :value="item"
+          />
+        </el-select>
+        <template #footer>
+          <el-button type="primary" @click="handleReportAuditSelectConfirm">确 定</el-button>
+          <el-button @click="isShowReportAuditDialog = false">取 消</el-button>
+        </template>
+      </Dialog>
     </el-row>
 
     <!-- 检验结果录入-葡萄城模板 -->
@@ -1573,6 +1568,9 @@ const handleCancelFlow = async () => {
       if (result) {
         ElMessage.success('流程已撤销')
         emit('refresh')
+      }else {
+         ElMessage.error('流程已撤销')
+        emit('refresh')
       }
     } catch (error) {
       console.error('撤销流程失败:', error)
@@ -1861,7 +1859,7 @@ const handleSubmitAudit = async () => {
     // 确定审核人:使用当前用户,否则使用默认审核人
     // const approveId = userStore.user.id
     const approveId = 'b5369aeb73954430eef53a9c8b7586ee'
-
+    
     ElMessageBox.confirm('确定提交审核吗?', '提示', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
@@ -1887,6 +1885,7 @@ const handleSubmitAudit = async () => {
     }).catch(() => {
       console.log('用户取消提交审核')
     })
+    // isShowReportAuditDialog.value = true
   }
 }
 
@@ -1970,6 +1969,12 @@ const getRecheckUserList = async (params) => {
   return await BoilerTaskOrderApi.getRecheckUserList(params)
 }
 
+
+const getReviewUserList = async (params) => {
+  params.reportId = props.selectedItem.id
+  return await BoilerTaskOrderApi.getReviewUserList(params)
+}
+
 // 上传主报告文件流
 const handleUploadAPIReportPreviewBlob = async (submitApprovalFn) => {
   if(!props.selectedItem || props.selectedItem.taskStatus !== PressureTaskOrderTaskStatus.REPORT_INPUT) return 
@@ -2074,12 +2079,33 @@ const checkOtherReportsFinished = (): { canSubmit: boolean; message?: string } =
   return { canSubmit: true }
 }
 
+// 报告审核人选择对话框 - 远程搜索选项
+const reportAuditUser = ref<Recordable | null>(null)
+const reportAuditUserOptions = ref<Recordable[]>([])
+const reportAuditUserLoading = ref(false)
+
+// 远程搜索报告审核人
+const searchReportAuditUser = async (query: string) => {
+  reportAuditUserLoading.value = true
+  try {
+    const params: any = { pageNo: 1, pageSize: 50, name: query || '' }
+    const res = await getReviewUserList(params)
+    reportAuditUserOptions.value = res || []
+  } finally {
+    reportAuditUserLoading.value = false
+  }
+}
+
 // 报告审核人选择确认
-const handleReportAuditSelectConfirm = async (res: any) => {
-  const approveId = res[0]
-  const submitResult = await BoilerTaskOrderApi.submitReportAudit({
+const handleReportAuditSelectConfirm = async () => {
+  if (!reportAuditUser.value?.code) {
+    ElMessage.warning('请选择审核人')
+    return
+  }
+  const approveCode = reportAuditUser.value.code
+  const submitResult = await PipeTaskOrderApi.submitReportAudit({
     id: templateParams.value?.id,
-    approveId
+    auditor: approveCode
   })
   if (submitResult) {
     // 这里可以做页面刷新

+ 0 - 1
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/components/endCheckForm.vue

@@ -13,7 +13,6 @@
           type="date"
           placeholder="请输入检验结束时间"
           value-format="YYYY-MM-DD"
-          :disabled-date="(time) => time.getTime() < Date.now() - 8.64e7"
           class="!w-240px"
         />
       </el-form-item>

+ 62 - 37
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/components/StatusOperationPanel.vue

@@ -470,40 +470,35 @@
       /> -->
 
       <!-- 报告审核人选择对话框 -->
-      <AuditUserDialog
-        v-if="isShowReportAuditDialog"
+      <Dialog
         v-model="isShowReportAuditDialog"
-        :apiFn="getPipeRecheckUserList"
+        width="400"
         title="请选择审核人"
-        selectedAlertText="已选择审核人"
-        width="700px"
-        :columns="[
-          {
-            type: 'selection',
-            fieldProps: {
-              reserveSelection: true
-            }
-          },
-          {
-            label: '姓名',
-            prop: 'nickname',
-            search: {
-              type: 'input',
-              span: 12,
-              prop: 'nickName'
-            }
-          },
-          {
-            label: '部门',
-            prop: 'deptName',
-            search: {
-              type: 'input',
-              span: 12
-            }
-          }
-        ]"
-        @confirm="handleReportAuditSelectConfirm"
-      />
+      >
+        <el-select
+          v-model="reportAuditUser"
+          filterable
+          remote
+          reserve-keyword
+          placeholder="请选择审核人"
+          :remote-method="searchReportAuditUser"
+          :loading="reportAuditUserLoading"
+          clearable
+          value-key="id"
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in reportAuditUserOptions"
+            :key="item.id"
+            :label="item.name"
+            :value="item"
+          />
+        </el-select>
+        <template #footer>
+          <el-button type="primary" @click="handleReportAuditSelectConfirm">确 定</el-button>
+          <el-button @click="isShowReportAuditDialog = false">取 消</el-button>
+        </template>
+      </Dialog>
     </el-row>
 
     <!-- 检验结果录入-葡萄城模板 -->
@@ -1526,7 +1521,7 @@ const isCanCancelFlow = computed(() => {
   ].includes(props.selectedItem.taskStatus)
   if (!isAuditOrApprove) return false
   if (!props.selectedItem.summaryId) return false
-  return !checkerIsLoginUser.value
+  return props.taskOrderItem?.mainCheckerUser?.id === userStore?.user?.id
 })
 
 // 撤销流程
@@ -1545,6 +1540,9 @@ const handleCancelFlow = async () => {
       if (result) {
         ElMessage.success('流程已撤销')
         handleRefresh()
+      } else {
+         ElMessage.error('流程已撤销')
+        emit('refresh')
       }
     } catch (error) {
       console.error('撤销流程失败:', error)
@@ -1830,7 +1828,7 @@ const handleSubmitAudit = async () => {
     // 确定审核人:使用当前用户,否则使用默认审核人
     // const approveId = userStore.user.id
     const approveId = 'b5369aeb73954430eef53a9c8b7586ee'
-
+    
     ElMessageBox.confirm('确定提交审核吗?', '提示', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
@@ -1856,6 +1854,7 @@ const handleSubmitAudit = async () => {
     }).catch(() => {
       console.log('用户取消提交审核')
     })
+    // isShowReportAuditDialog.value = true
   }
 }
 
@@ -1969,12 +1968,33 @@ const checkOtherReportsFinished = (): { canSubmit: boolean; message?: string } =
   return { canSubmit: true }
 }
 
+// 报告审核人选择对话框 - 远程搜索选项
+const reportAuditUser = ref<Recordable | null>(null)
+const reportAuditUserOptions = ref<Recordable[]>([])
+const reportAuditUserLoading = ref(false)
+
+// 远程搜索报告审核人
+const searchReportAuditUser = async (query: string) => {
+  reportAuditUserLoading.value = true
+  try {
+    const params: any = { pageNo: 1, pageSize: 50, name: query || '' }
+    const res = await getPipeReviewUserList(params)
+    reportAuditUserOptions.value = res || []
+  } finally {
+    reportAuditUserLoading.value = false
+  }
+}
+
 // 报告审核人选择确认
-const handleReportAuditSelectConfirm = async (res: any) => {
-  const approveId = res[0]
+const handleReportAuditSelectConfirm = async () => {
+  if (!reportAuditUser.value?.code) {
+    ElMessage.warning('请选择审核人')
+    return
+  }
+  const approveCode = reportAuditUser.value.code
   const submitResult = await PipeTaskOrderApi.submitReportAudit({
     id: templateParams.value?.id,
-    approveId
+    auditor: approveCode
   })
   if (submitResult) {
     // 这里可以做页面刷新
@@ -2269,6 +2289,11 @@ const getPipeRecheckUserList = async (params) => {
   return await PipeTaskOrderApi.getPipeRecheckUserList(params)
 }
 
+const getPipeReviewUserList = async (params) => {
+  params.reportId = props.selectedItem.id
+  return await PipeTaskOrderApi.getPipeReviewUserList(params)
+}
+
 const showAssociationOperationManual = ref(false)
 const handleShowAssociationOperationManual = () => {
   showAssociationOperationManual.value = true

+ 0 - 1
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/components/endCheckForm.vue

@@ -13,7 +13,6 @@
           type="date"
           placeholder="请输入检验结束时间"
           value-format="YYYY-MM-DD"
-          :disabled-date="(time) => time.getTime() < Date.now() - 8.64e7"
           class="!w-240px"
         />
       </el-form-item>