xuzhancheng il y a 4 jours
Parent
commit
2a9796ebcb

+ 1 - 1
yudao-ui-admin-vue3/src/api/laboratory/unit/index.ts

@@ -51,7 +51,7 @@ interface UpdateUnitVO extends UnitVO {
 }
 
 // 获得系统客户单位信息分页
-export const getUnitList = (params: {pageNo: number, pageSize: number, name?: string}) => {
+export const getUnitList = (params: {pageNo: number, pageSize: number, name?: string, code?: string}) => {
   return request.get({ url: '/system/client-unit/page', params})
 }
 export const getUnitListNoPage = (params: {pageNo: number, pageSize: number, name?: string}) => {

+ 18 - 9
yudao-ui-admin-vue3/src/api/pressure2/boilerconnectrecordreport/index.ts

@@ -3,18 +3,27 @@ import request from '@/config/axios'
 // 记录和报告模板关联 VO
 export interface BoilerConnectRecordReportVO {
   id: string // 主键
-  projectName: string // 项目名称
-  isMainProject: boolean // 是否为主项
-  status: number // 状态
+  projectName: string // 检验项目名称
+  projectType: string // 项目类型:MAIN-主项目, SUB-子项目, STANDALONE-独走项
+  status: string // 状态(1-启用, 0-禁用)
   recordTemplateId: string // 记录模板ID
+  recordTemplateCode: string // 记录模板CODE
+  recordTemplateName: string // 记录模板名称
   reportTemplateId: string // 报告模板ID
+  reportTemplateCode: string // 报告模板CODE
+  reportTemplateName: string // 报告模板名称
+  resultTemplateId: string // 结论报告模板ID
+  resultTemplateCode: string // 结论报告模板CODE
+  resultTemplateName: string // 结论报告模板名称
   projectCode: string // 项目代码
   feeTypes: string // 费用类型(多个用逗号分隔)
   acceptOrderTemplateId: string // 受理单模板ID
-  feeCalcType: string // 费用计算类型(fixed-固定费用, calculated-参数计算)
-  fee: number // 费用
+  feeCalcType: string // 费用计算类型(1-固定费用, 0-参数计算)
+  fee: string // 费用
   isAutoAmount: string // 是否自动计算金额(1-是, 0-否)
   feeFileUrl: string // 费用文件URL
+  operationInstruction: string // 操作指导书
+  approvalCode: string // 核准代号
 }
 
 // 记录和报告模板关联 API
@@ -30,8 +39,8 @@ export const BoilerConnectRecordReportApi = {
   },
 
   // 查询记录和报告模板关联详情
-  getBoilerConnectRecordReport: async (id: number) => {
-    return await request.get({ url: `/pressure2/boiler-connect-record-report/get?id=` + id })
+  getBoilerConnectRecordReport: async (id: string) => {
+    return await request.get({ url: `/pressure2/boiler-connect-record-report/get`, params: { id } })
   },
 
   // 新增记录和报告模板关联
@@ -45,8 +54,8 @@ export const BoilerConnectRecordReportApi = {
   },
 
   // 删除记录和报告模板关联
-  deleteBoilerConnectRecordReport: async (id: number) => {
-    return await request.delete({ url: `/pressure2/boiler-connect-record-report/delete?id=` + id })
+  deleteBoilerConnectRecordReport: async (id: string) => {
+    return await request.delete({ url: `/pressure2/boiler-connect-record-report/delete`, params: { id } })
   },
 
   // 导出记录和报告模板关联 Excel

+ 2 - 1
yudao-ui-admin-vue3/src/api/pressure2/boilertaskorder/index.ts

@@ -329,7 +329,8 @@ export const BoilerTaskOrderApi = {
   },
   // 提交报告审核
   submitReportAudit: async (data: any) => {
-    return await request.put({ url: `/pressure2/boiler-task-order/order-item/report/prepare/submit`, data })
+    const timeout = 1000 * 60 * 5 // 5分钟
+    return await request.put({ url: `/pressure2/boiler-task-order/order-item/report/prepare/submit`, data ,timeout})
   },
   // 任务单详情:添加重大问题隐患-检验方案-作业指导书
   addMajorIssues: async (data) => {

+ 2 - 1
yudao-ui-admin-vue3/src/api/pressure2/pipetaskorder/index.ts

@@ -327,7 +327,8 @@ export const PipeTaskOrderApi = {
   },
   // 提交报告审核
   submitReportAudit: async (data: any) => {
-    return await request.put({ url: `/pressure2/pipe-task-order/order-item/report/prepare/submit`, data })
+    const timeout = 1000 * 60 * 5 // 5分钟
+    return await request.put({ url: `/pressure2/pipe-task-order/order-item/report/prepare/submit`, data ,timeout})
   },
   // 任务单详情:添加重大问题隐患-检验方案-作业指导书
   addMajorIssues: async (data) => {

+ 8 - 9
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/components/StatusOperationPanel.vue

@@ -643,14 +643,11 @@
       <template v-if="!getReportStatusEnd && selectedItem">
         <!-- 根据报告类型和配置显示相应按钮 -->
         <template
-          v-if="
-                    selectedItem.reportType === PressureReportType.SINGLE &&
-                    'PipeCheckerTaskDetail' === routeName
-                  "
+          v-if="selectedItem.reportType === PressureReportType.SINGLE"
         >
           <!-- 独审报告根据配置显示按钮 -->
           <el-button
-            v-if="currentReportConfig?.isApproval && isCanSubmitToAudit"
+            v-if="isCanSubmitToAudit"
             type="danger"
             @click="handleSubmitAudit"
             :disabled="checkerIsLoginUser"
@@ -659,7 +656,7 @@
             提交报告审核
           </el-button>
           <!-- 没有审核只有审批 -->
-          <el-button
+          <!-- <el-button
             v-if="
                       currentReportConfig?.isRatify &&
                       !currentReportConfig?.isApproval &&
@@ -671,7 +668,7 @@
             size="small"
           >
             提交报告审批
-          </el-button>
+          </el-button> -->
         </template>
         <!-- 非独审报告默认显示审核按钮 -->
         <el-button
@@ -1814,7 +1811,9 @@ const handleSubmitAudit = async () => {
 
   if(PressureReportType.SINGLE === props?.selectedItem?.reportType && !props?.selectedItem?.prepareUrl) {
     // 独审报告:用户可以不走报告编制环节直接提交审核,需要调用handleUploadAPIReportPreviewBlob将reportPreview接口的文件流拿来提交一遍
-    return handleUploadAPIReportPreviewBlob(handleSubmitAudit)
+    // return handleUploadAPIReportPreviewBlob(handleSubmitAudit)
+    isShowReportAuditDialog.value = true
+    return
   }
   // 检查检验意见通知书是否“报告完结”
   const canSubmit = canSubmitMainReportType('该报告存在未办结检验意见通知书,无法提交审核、审批')
@@ -2102,7 +2101,7 @@ const handleReportAuditSelectConfirm = async () => {
   }
   reportAuditSubmitting.value = true
   try {
-    const submitResult = await PipeTaskOrderApi.submitReportAudit({
+    const submitResult = await BoilerTaskOrderApi.submitReportAudit({
       id: templateParams.value?.id,
       auditor: reportAuditUserCode.value
     })

+ 4 - 4
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/components/useTaskProgress.ts

@@ -54,12 +54,12 @@ export const useTaskProgress = () => {
         ]
         
         // 根据配置添加审核和审批步骤
-        if (isApproval) {
+        // if (isApproval) {
           steps.push({ title: '报告审核', status: [PressureCheckerMyTaskStatus.REPORT_AUDIT] })
-        }
-        if (isRatify) {
+        // }
+        // if (isRatify) {
           steps.push({ title: '报告审批', status: [PressureCheckerMyTaskStatus.REPORT_APPROVE] })
-        }
+        // }
         
         // 最后添加办结步骤
         steps.push({ title: '报告办结', status: [PressureCheckerMyTaskStatus.REPORT_END] })

+ 60 - 18
yudao-ui-admin-vue3/src/views/pressure2/boilerconnectrecordreport/BoilerConnectRecordReportForm.vue

@@ -24,11 +24,12 @@
           clearable
         />
       </el-form-item>
-      <el-form-item label="是否为主项目" prop="isMainProject">
-        <el-radio-group v-model="formData.isMainProject">
-          <el-radio :value="true">是</el-radio>
-          <el-radio :value="false">否</el-radio>
-        </el-radio-group>
+      <el-form-item label="项目类型" prop="projectType">
+        <el-select v-model="formData.projectType" placeholder="请选择项目类型" clearable style="width: 100%">
+          <el-option label="主项目" value="MAIN"/>
+          <el-option label="子项目" value="SUB"/>
+          <el-option label="独走项目" value="STANDALONE"/>
+        </el-select>
       </el-form-item>
       <el-form-item label="记录文件" prop="recordTemplateId">
         <el-select v-model="formData.recordTemplateId" placeholder="请选择记录文件" filterable
@@ -52,7 +53,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="项目代码" prop="projectCode" v-if="formData.isMainProject">
+      <el-form-item label="项目代码" prop="projectCode" v-if="formData.projectType === 'MAIN' || formData.projectType === 'STANDALONE'">
         <el-select
           v-model="formData.projectCode"
           placeholder="请选择质量部检验项目"
@@ -68,7 +69,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="受理单模板" prop="acceptOrderTemplateId" v-if="formData.isMainProject">
+      <el-form-item label="受理单模板" prop="acceptOrderTemplateId" v-if="formData.projectType === 'MAIN'">
         <el-select v-model="formData.acceptOrderTemplateId" placeholder="请选择受理单模板"
                    filterable clearable>
           <el-option
@@ -104,6 +105,23 @@
       <el-form-item label="费用计算" prop="feeFileUrl" v-if="formData.feeCalcType === '0'">
          <el-button @click="handleEditFeeFile">编辑</el-button>
       </el-form-item>
+      <el-form-item label="操作指导书" prop="operationInstruction" v-if="formData.projectType === 'STANDALONE'">
+        <el-select v-model="formData.operationInstruction" placeholder="请选择操作指导书" filterable clearable style="width: 100%">
+          <el-option
+            v-for="item in operationInstructionList"
+            :key="item.id"
+            :label="item.tbCode + ' - ' +item.tbName + '(' + item.versionNo + ')'"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="核准代号" prop="approvalCode" v-if="formData.projectType === 'STANDALONE'">
+        <el-input
+          v-model="formData.approvalCode"
+          placeholder="请输入核准代号"
+          clearable
+        />
+      </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="formData.status" placeholder="请选择状态" clearable>
           <el-option label="启用" value="1"/>
@@ -140,22 +158,27 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
 const formData = ref({
   id: undefined,
   projectName: undefined,
-  isMainProject: false,
+  projectType: undefined,
   status: '1',
   recordTemplateId: undefined,
   reportTemplateId: undefined,
   projectCode: undefined,
   feeTypes: [],
   acceptOrderTemplateId: undefined,
-  feeCalcType: 'fixed',
+  feeCalcType: '1', // 1-固定费用, 0-参数计算
   fee: undefined,
   isAutoAmount: '0',
   feeFileUrl: undefined, // 费用计算配置
+  operationInstruction: undefined,
+  approvalCode: undefined,
 })
 const formRules = reactive({
   projectName: [
     {required: true, message: '项目名称不能为空', trigger: 'blur'},
   ],
+  projectType: [
+    {required: true, message: '项目类型不能为空', trigger: 'change'},
+  ],
   recordTemplateId: [
     {required: computed(() => !formData.value.reportTemplateId), message: '记录文件不能为空', trigger: 'change'},
     {
@@ -184,21 +207,21 @@ const formRules = reactive({
   ],
   projectCode: [
     {
-      required: computed(() => formData.value.isMainProject),
-      message: '主项目时项目代码不能为空',
+      required: computed(() => formData.value.projectType === 'MAIN' || formData.value.projectType === 'STANDALONE'),
+      message: '主项目或独走项目时项目代码不能为空',
       trigger: 'change'
     },
   ],
   feeTypes: [
     {
-      required: computed(() => formData.value.isMainProject),
-      message: '主项目时费用类型不能为空',
+      required: computed(() => formData.value.projectType === 'MAIN' || formData.value.projectType === 'STANDALONE'),
+      message: '主项目或独走项目时费用类型不能为空',
       trigger: 'change'
     },
   ],
   acceptOrderTemplateId: [
     {
-      required: computed(() => formData.value.isMainProject),
+      required: computed(() => formData.value.projectType === 'MAIN'),
       message: '主项目时受理单模板不能为空',
       trigger: 'change'
     },
@@ -209,12 +232,13 @@ const formRef = ref() // 表单 Ref
 const feeCalculatorRef = ref() // 费用计算器 Ref
 const recordList = ref()
 const reportList = ref()
+const operationInstructionList = ref()
 const qualityInspectionList = ref([]) // 质量部检验项目列表
 const acceptOrderTemplateList = ref() // 受理单模板列表
 const showFeeCalculator = ref(false) // 是否显示费用计算器
 
 /** 打开弹窗 */
-const open = async (type: string, id?: number) => {
+const open = async (type: string, id?: string) => {
   formType.value = type
   resetForm()
   // 修改时,设置数据
@@ -226,7 +250,6 @@ const open = async (type: string, id?: number) => {
         ...formData.value,
         ...data,
         feeTypes: data.feeTypes ? data.feeTypes.split(',') : [],
-        isMainProject: data.isMainProject == 1,
       }
     } finally {
       formLoading.value = false
@@ -269,22 +292,25 @@ const handleBack = () => {
 const resetForm = () => {
   getRecordList()
   getReportList()
+  getOperationInstructionList()
   getQualityInspectionList()
   getAcceptOrderTemplateList()
   formData.value = {
     id: undefined,
     projectName: undefined,
-    isMainProject: false,
+    projectType: undefined,
     status: '1',
     recordTemplateId: undefined,
     reportTemplateId: undefined,
     projectCode: undefined,
     feeTypes: [],
     acceptOrderTemplateId: undefined,
-    feeCalcType: 'fixed',
+    feeCalcType: '1',
     fee: undefined,
     isAutoAmount: '0',
     feeFileUrl: undefined,
+    operationInstruction: undefined,
+    approvalCode: undefined,
   }
   formRef.value?.resetFields()
 }
@@ -319,6 +345,21 @@ const getReportList = async () => {
   }
 }
 
+/** 查询操作指导书列表 */
+const getOperationInstructionList = async () => {
+  try {
+    const params = {
+      pageNo: 1,
+      pageSize: 1000,
+      reportType: 400, // 操作指导书
+      status: 200, // 只查询上架状态的模板
+    }
+    const data = await DynamicTbApi.getDynamicTbPage(params)
+    operationInstructionList.value = data.list
+  } finally {
+  }
+}
+
 
 /** 查询质量部检验项目列表 */
 const getQualityInspectionList = async () => {
@@ -382,6 +423,7 @@ const handleFeeCalculatorBack = () => {
 onMounted(() => {
   getRecordList()
   getReportList()
+  getOperationInstructionList()
 })
 
 </script>

+ 14 - 13
yudao-ui-admin-vue3/src/views/pressure2/boilerconnectrecordreport/index.vue

@@ -36,15 +36,16 @@
             class="!w-240px"
           />
         </el-form-item>
-        <el-form-item label="是否为主项目" prop="isMainProject">
+        <el-form-item label="项目类型" prop="projectType">
           <el-select
-            v-model="queryParams.isMainProject"
-            placeholder="请选择是否为主项目"
+            v-model="queryParams.projectType"
+            placeholder="请选择项目类型"
             clearable
             class="!w-240px"
           >
-            <el-option label="是" :value="true"/>
-            <el-option label="否" :value="false"/>
+            <el-option label="主项目" value="MAIN"/>
+            <el-option label="子项目" value="SUB"/>
+            <el-option label="独走项目" value="STANDALONE"/>
           </el-select>
         </el-form-item>
         <el-form-item label="创建时间" prop="createTime">
@@ -86,17 +87,17 @@
         <el-table-column label="检验项目名称" align="center" prop="projectName"/>
         <el-table-column label="记录文件" align="center" prop="recordTemplateName"/>
         <el-table-column label="报告文件" align="center" prop="reportTemplateName"/>
-        <el-table-column label="是否为主项目" align="center" prop="isMainProject" width="120">
+        <el-table-column label="项目类型" align="center" prop="projectType" width="120">
           <template #default="scope">
-            <el-tag :type="scope.row.isMainProject == 1 ? 'success' : 'info'">
-              {{ scope.row.isMainProject == 1 ? '是' : '否' }}
+            <el-tag :type="scope.row.projectType === 'MAIN' ? 'success' : scope.row.projectType === 'SUB' ? 'info' : 'warning'">
+              {{ scope.row.projectType === 'MAIN' ? '主项目' : scope.row.projectType === 'SUB' ? '子项目' : '独走项目' }}
             </el-tag>
           </template>
         </el-table-column>
         <el-table-column label="状态" align="center" prop="status" width="100">
           <template #default="scope">
-            <el-tag :type="scope.row.status == 1 ? 'success' : 'info'">
-              {{ scope.row.status == 1 ? '启用' : '禁用' }}
+            <el-tag :type="scope.row.status == '1' ? 'success' : 'info'">
+              {{ scope.row.status == '1' ? '启用' : '禁用' }}
             </el-tag>
           </template>
         </el-table-column>
@@ -159,7 +160,7 @@ const queryParams = reactive({
   projectName: undefined,
   recordTemplateName: undefined,
   reportTemplateName: undefined,
-  isMainProject: undefined,
+  projectType: undefined,
   createTime: [],
 })
 const queryFormRef = ref() // 搜索的表单
@@ -192,7 +193,7 @@ const resetQuery = () => {
 
 /** 添加/修改操作 */
 const formRef = ref()
-const openForm = async (type: string, id?: number) => {
+const openForm = async (type: string, id?: string) => {
   showForm.value = true
   // 等待 DOM 更新后再调用 open 方法
   await nextTick()
@@ -211,7 +212,7 @@ const handleFormCancel = () => {
 }
 
 /** 删除按钮操作 */
-const handleDelete = async (id: number) => {
+const handleDelete = async (id: string) => {
   try {
     // 删除的二次确认
     await message.delConfirm()

+ 7 - 8
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/components/StatusOperationPanel.vue

@@ -642,14 +642,11 @@
       <template v-if="!getReportStatusEnd && selectedItem">
         <!-- 根据报告类型和配置显示相应按钮 -->
         <template
-          v-if="
-                    selectedItem.reportType === PressureReportType.SINGLE &&
-                    'PipeCheckerTaskDetail' === routeName
-                  "
+          v-if="selectedItem.reportType === PressureReportType.SINGLE"
         >
           <!-- 独审报告根据配置显示按钮 -->
           <el-button
-            v-if="currentReportConfig?.isApproval && isCanSubmitToAudit"
+            v-if="isCanSubmitToAudit"
             type="danger"
             @click="handleSubmitAudit"
             :disabled="checkerIsLoginUser"
@@ -658,7 +655,7 @@
             提交报告审核
           </el-button>
           <!-- 没有审核只有审批 -->
-          <el-button
+<!--          <el-button
             v-if="
                       currentReportConfig?.isRatify &&
                       !currentReportConfig?.isApproval &&
@@ -670,7 +667,7 @@
             size="small"
           >
             提交报告审批
-          </el-button>
+          </el-button>-->
         </template>
         <!-- 非独审报告默认显示审核按钮 -->
         <el-button
@@ -1768,7 +1765,9 @@ const handleSubmitAudit = async () => {
 
   if(PressureReportType.SINGLE === props?.selectedItem?.reportType && !props?.selectedItem?.prepareUrl) {
     // 独审报告:用户可以不走报告编制环节直接提交审核,需要调用handleUploadAPIReportPreviewBlob将reportPreview接口的文件流拿来提交一遍
-    return handleUploadAPIReportPreviewBlob(handleSubmitAudit)
+    // return handleUploadAPIReportPreviewBlob(handleSubmitAudit)
+    isShowReportAuditDialog.value = true
+    return
   }
   // 检查检验意见通知书是否“报告完结”
   const canSubmit = canSubmitMainReportType('该报告存在未办结检验意见通知书,无法提交审核、审批')

+ 4 - 4
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/components/useTaskProgress.ts

@@ -54,12 +54,12 @@ export const useTaskProgress = () => {
         ]
         
         // 根据配置添加审核和审批步骤
-        if (isApproval) {
+        // if (isApproval) {
           steps.push({ title: '报告审核', status: [PressureCheckerMyTaskStatus.REPORT_AUDIT] })
-        }
-        if (isRatify) {
+        // }
+        // if (isRatify) {
           steps.push({ title: '报告审批', status: [PressureCheckerMyTaskStatus.REPORT_APPROVE] })
-        }
+        // }
         
         // 最后添加办结步骤
         steps.push({ title: '报告办结', status: [PressureCheckerMyTaskStatus.REPORT_END] })