Quellcode durchsuchen

任务单修改

xuzhancheng vor 3 Wochen
Ursprung
Commit
f9f2196986

+ 343 - 0
yudao-ui-admin-vue3/src/views/pressure2/boilertaskorder/components/BoilerTaskOrderModifyContent.vue

@@ -0,0 +1,343 @@
+<template>
+  <div>
+    <div v-if="!taskOrder" class="loading-text">无法加载修改内容。</div>
+    <div v-else>
+      <ContentWrap class="mb-4" title="任务单详情">
+        <div class="tip custom-block">单位信息</div>
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="任务单号">
+            {{ taskOrder.orderNo || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验类别">
+            {{ PressureBoilerCheckTypeMap[taskOrder.checkType] || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验设备数量">
+            {{ taskOrder.equipNum || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="申请单位名称">
+            {{ taskOrder.unitName || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="使用单位名称">
+            {{ taskOrder.useUnitName || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验日期">
+            {{ Array.isArray(taskOrder.checkDate) ? formatArrayDate(taskOrder.checkDate) : taskOrder.checkDate || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="申请单位地址">
+            {{ taskOrder.unitAddress || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="使用单位地址">
+            {{ taskOrder.useUnitAddress || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="收费性质">
+            {{ PressureFeeNatureMap[taskOrder.feeNature] || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="收费形式">
+            {{ PressureFeeTypeMap[taskOrder.feeType] || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="收费金额">
+            {{ taskOrder.payAmount || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="是否已交费">
+            {{ taskOrder.isPay === 1 ? '是' : '否' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="业务受理人">
+            <el-tag v-if="taskOrder.acceptUser" effect="light" :closable="false">
+              {{ formatUserDisplay(taskOrder.acceptUser) }}
+            </el-tag>
+            <span v-else>-</span>
+          </el-descriptions-item>
+          <el-descriptions-item label="项目负责人">
+            <div v-if="taskOrder.manager">
+              <el-tag type="primary">
+                {{ formatUserDisplay(taskOrder.manager) }}
+              </el-tag>
+            </div>
+            <span v-else>-</span>
+          </el-descriptions-item>
+          <el-descriptions-item label="检验人员">
+            <div v-if="teamItemDisplayList && teamItemDisplayList.length > 0">
+              <div
+                v-for="(team, teamIndex) in teamItemDisplayList"
+                :key="team.groupTeamId || 'team-' + teamIndex"
+                style="margin-bottom: 8px"
+              >
+                <div
+                  v-if="teamItemDisplayList.length > 1"
+                  style="font-weight: bold; margin-bottom: 4px"
+                >
+                  团队 {{ teamIndex + 1 }}:
+                </div>
+                <div style="display: flex; flex-wrap: wrap; align-items: center; gap: 6px">
+                  <template v-if="team.leaderId && resolveUser(team.leaderId)">
+                    <el-tag effect="light" :closable="false">
+                      <span class="leader-tag">组</span>
+                      {{ resolveUser(team.leaderId).nickname }}
+                    </el-tag>
+                  </template>
+                  <template v-for="(userId, idx) in (team.userIds || [])" :key="idx">
+                    <el-tag
+                      v-if="resolveUser(userId)"
+                      effect="light"
+                      :closable="false"
+                    >
+                      {{ resolveUser(userId).nickname }}({{ resolveUser(userId).employeeNo }})
+                    </el-tag>
+                  </template>
+                  <span
+                    v-if="(!team.leaderId || !resolveUser(team.leaderId)) && (!team.userIds || team.userIds.length === 0 || !team.userIds.some(id => resolveUser(id)))"
+                  >-</span>
+                </div>
+              </div>
+            </div>
+            <span v-else>-</span>
+          </el-descriptions-item>
+
+          <el-descriptions-item label="计划编制人">
+            <el-tag v-if="taskOrder.scheduleUser" effect="light" :closable="false">
+              {{ formatUserDisplay(taskOrder.scheduleUser) }}
+            </el-tag>
+            <span v-else>-</span>
+          </el-descriptions-item>
+          <el-descriptions-item label="中止检验">
+            {{ taskOrder.XXX || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="安全检查记录">
+            {{ taskOrder.securityCheckCount || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="备注" :span="2">
+            {{ taskOrder.remark || '-' }}
+          </el-descriptions-item>
+        </el-descriptions>
+
+        <div class="tip custom-block">联系人信息</div>
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="约检联系人">
+            {{ taskOrder.unitContact || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="约检联系人电话">
+            {{ taskOrder.unitPhone || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="约检联系人邮箱">
+            {{ taskOrder.unitEmail || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="电子报告接收人">
+            {{ taskOrder.recipient || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="报告接收人电话">
+            {{ taskOrder.recipientPhone || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="接收人邮箱">
+            {{ taskOrder.recipientEmail || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="缴费联系人">
+            {{ taskOrder.payerContactName || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="缴费人电话">
+            {{ taskOrder.payerContact || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="缴费人邮箱">
+            {{ taskOrder.payerMail || '-' }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </ContentWrap>
+
+      <ContentWrap title="设备清单">
+        <el-table
+          :data="taskOrder.orderItems"
+          border
+          stripe
+          empty-text="暂无设备信息"
+        >
+          <el-table-column
+            label="区域"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              <div>{{ row.equipDistrictName || '-' }}</div>
+              <div class="text-gray-400 text-sm">{{ row.equipStreetName || '' }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="检验性质"
+            align="center"
+            width="150px"
+          >
+            <template #default>
+              {{ PressureBoilerCheckTypeMap[taskOrder.checkType] || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="设备注册代码"
+            align="center"
+            width="200px"
+          >
+            <template #default="{ row }">
+              <el-tag type="primary" size="small">{{ row.equipCode || '-' }}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="使用证编号"
+            align="center"
+            prop="useCode"
+            width="150px"
+          />
+          <el-table-column
+            label="蒸发量"
+            align="center"
+            prop="maxContinueEvapor"
+            min-width="200px"
+          />
+          <el-table-column
+            label="型号"
+            align="center"
+            prop="boilerModel"
+            width="150px"
+          />
+          <el-table-column
+            label="下次内部检验"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              {{ row.nextInCheckDate ? dayjs(row.nextInCheckDate).format('YYYY-MM-DD') : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="下次外部检验"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              {{ row.nextOutCheckDate ? dayjs(row.nextOutCheckDate).format('YYYY-MM-DD') : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="下次耐压检验"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              {{ row.nextPressureCheckDate ? dayjs(row.nextPressureCheckDate).format('YYYY-MM-DD') : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="约检联系人"
+            align="center"
+            width="160px"
+          >
+            <template #default="{ row }">
+              {{ row.contact || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="约检联系人电话"
+            align="center"
+            width="160px"
+          >
+            <template #default="{ row }">
+              {{ row.contactPhone || '-' }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </ContentWrap>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { computed, onMounted, ref } from 'vue'
+import { dayjs } from 'element-plus'
+import { formatArrayDate } from '@/utils/formatTime'
+import {
+  PressureFeeNatureMap,
+  PressureFeeTypeMap,
+  PressureBoilerCheckTypeMap
+} from '@/utils/constants'
+import { getSimpleUserList, type UserVO } from '@/api/system/user'
+
+defineOptions({ name: 'BoilerTaskOrderModifyContent' })
+
+const props = defineProps({
+  taskOrder: {
+    type: Object as () => Record<string, any>,
+    required: true
+  }
+})
+
+const userMap = ref<Record<string, UserVO>>({})
+
+const teamItemDisplayList = computed(() => {
+  if (!props.taskOrder?.teamItemList) return []
+  return props.taskOrder.teamItemList
+})
+
+const resolveUser = (userId: string) => {
+  if (!userId) return null
+  return userMap.value[String(userId)] || null
+}
+
+const formatUserDisplay = (user: any) => {
+  if (!user) return '-'
+  if (typeof user === 'string') return user
+  if (user.nickname && user.employeeNo) return `${user.nickname} (${user.employeeNo})`
+  if (user.nickname) return user.nickname
+  return String(user.id || user)
+}
+
+onMounted(async () => {
+  try {
+    const userList = await getSimpleUserList()
+    const map: Record<string, UserVO> = {}
+    userList.forEach(user => {
+      map[String(user.id)] = user
+    })
+    userMap.value = map
+  } catch (e) {
+    console.error('获取用户列表失败', e)
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+.loading-text {
+  text-align: center;
+  padding: 20px;
+  color: #909399;
+}
+
+:deep(.el-descriptions__label) {
+  width: 10%;
+}
+
+:deep(.el-descriptions__content) {
+  width: 20%;
+}
+
+.leader-tag {
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  border: 1px solid #4475d6;
+  font-size: 12px;
+  margin-right: 4px;
+  color: #4475d6;
+}
+
+.custom-block.tip {
+  padding: 0 6px;
+  background-color: var(--block-warning-bg-color);
+  border-left: 5px solid var(--el-color-primary);
+  margin: 15px 0;
+}
+</style>

+ 7 - 2
yudao-ui-admin-vue3/src/views/pressure2/boilertaskorder/detail.vue

@@ -675,7 +675,7 @@ const formRules = {
   ],
   unitPhone: [
     { required: true, message: '请输入单位联系电话', trigger: 'blur' },
-    { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
+   /*  { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' } */
   ],
   unitEmail: [
     { pattern: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message: '请输入正确的邮箱', trigger: 'blur' }
@@ -1150,9 +1150,14 @@ const submitAcceptance = async (reason: string) => {
     // 组装提交数据
     const submitData = {
       id: orderDetail.value?.id,
+      orderNo: orderDetail.value?.orderNo,
+      equipNum: orderDetail.value.equipNum,
+      acceptUser: orderDetail.value?.acceptUser,
+      scheduleUser: orderDetail.value?.scheduleUser,
+      securityCheckCount: orderDetail.value.securityCheckCount,
       ...formData.value,
       checkDate: formData.value.checkDate,
-      unitName: orderDetail.value?.unitName?.name,
+      unitName: orderDetail.value?.unitName,
       unitAddress: orderDetail.value?.unitAddress,
       unitContact: formData.value.unitContact,
       //unitContactDept: formData.value.unitContactDept,

+ 5 - 12
yudao-ui-admin-vue3/src/views/pressure2/boilertaskorder/review.vue

@@ -296,25 +296,18 @@
   <!-- 任务单详情对话框 (用于查看修改内容) -->
   <el-dialog
     v-model="taskOrderDetailDialogVisible"
-    title="任务单详情"
+    title="修改后任务单详情"
     width="80%"
     draggable
     :close-on-click-modal="false"
   >
-<!--    <TaskOrderDetailDialog-->
-<!--      v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.CONTAINER"-->
-<!--      :task-order="parsedTaskOrderData"-->
-<!--      :in-page-mode="false"-->
-<!--    />-->
-    <BoilerTaskOrderDetailDialog
+    <BoilerTaskOrderModifyContent
       v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.BOILER"
       :task-order="parsedTaskOrderData"
-      :in-page-mode="false"
     />
-    <PipeTaskOrderDetailDialog
+    <PipeTaskOrderModifyContent
       v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.PIPE"
       :task-order="parsedTaskOrderData"
-      :in-page-mode="false"
     />
   </el-dialog>
 </template>
@@ -337,8 +330,8 @@ import {
   PressureBoilerCheckTypeMap, PressureEquipMainType
 } from '@/utils/constants'
 // import TaskOrderDetailDialog from './components/TaskOrderDetailDialog.vue'
-import BoilerTaskOrderDetailDialog from '../../pressure2/boilertaskorder/components/TaskOrderDetailDialog.vue'
-import PipeTaskOrderDetailDialog from '../../pressure2/pipetaskorder/components/TaskOrderDetailDialog.vue'
+import BoilerTaskOrderModifyContent from './components/BoilerTaskOrderModifyContent.vue'
+import PipeTaskOrderModifyContent from '../../pressure2/pipetaskorder/components/PipeTaskOrderModifyContent.vue'
  import TaskOrderOperationRecordDialog from './components/TaskOrderOperationRecordDialog.vue'
 import { useUserStore } from '@/store/modules/user'
 import { cloneDeep } from 'lodash-es'

+ 332 - 0
yudao-ui-admin-vue3/src/views/pressure2/pipetaskorder/components/PipeTaskOrderModifyContent.vue

@@ -0,0 +1,332 @@
+<template>
+  <div>
+    <div v-if="!taskOrder" class="loading-text">无法加载修改内容。</div>
+    <div v-else>
+      <ContentWrap class="mb-4" title="任务单详情">
+        <div class="tip custom-block">单位信息</div>
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="任务单号">
+            {{ taskOrder.orderNo || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验类别">
+            {{ PressurePipeCheckTypeMap[taskOrder.checkType] || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验设备数量">
+            {{ taskOrder.equipNum || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="申请单位名称">
+            {{ taskOrder.unitName || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="使用单位名称">
+            {{ taskOrder.useUnitName || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="检验日期">
+            {{ Array.isArray(taskOrder.checkDate) ? formatArrayDate(taskOrder.checkDate) : taskOrder.checkDate || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="申请单位地址">
+            {{ taskOrder.unitAddress || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="使用单位地址">
+            {{ taskOrder.useUnitAddress || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="收费性质">
+            {{ PressureFeeNatureMap[taskOrder.feeNature] || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="收费形式">
+            {{ PressureFeeTypeMap[taskOrder.feeType] || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="收费金额">
+            {{ taskOrder.payAmount || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="主检员">
+            <div v-if="taskOrder.manager">
+              <el-tag type="primary">
+                {{ taskOrder.manager }}
+              </el-tag>
+            </div>
+            <span v-else>-</span>
+          </el-descriptions-item>
+          <el-descriptions-item label="检验人员">
+            <div v-if="teamItemDisplayList && teamItemDisplayList.length > 0">
+              <div
+                v-for="(team, teamIndex) in teamItemDisplayList"
+                :key="team.groupTeamId || 'team-' + teamIndex"
+                style="margin-bottom: 8px"
+              >
+                <div
+                  v-if="teamItemDisplayList.length > 1"
+                  style="font-weight: bold; margin-bottom: 4px"
+                >
+                  团队 {{ teamIndex + 1 }}:
+                </div>
+                <div style="display: flex; flex-wrap: wrap; align-items: center; gap: 6px">
+                  <template v-if="team.leaderId && resolveUser(team.leaderId)">
+                    <el-tag effect="light" :closable="false">
+                      <span class="leader-tag">组</span>
+                      {{ resolveUser(team.leaderId).nickname }}
+                    </el-tag>
+                  </template>
+                  <template v-for="(userId, idx) in (team.userIds || [])" :key="idx">
+                    <el-tag
+                      v-if="resolveUser(userId)"
+                      effect="light"
+                      :closable="false"
+                    >
+                      {{ resolveUser(userId).nickname }}({{ resolveUser(userId).employeeNo }})
+                    </el-tag>
+                  </template>
+                  <span
+                    v-if="(!team.leaderId || !resolveUser(team.leaderId)) && (!team.userIds || team.userIds.length === 0 || !team.userIds.some(id => resolveUser(id)))"
+                  >-</span>
+                </div>
+              </div>
+            </div>
+            <span v-else>-</span>
+          </el-descriptions-item>
+
+          <el-descriptions-item label="约检联系人">
+            {{ taskOrder.unitContact || '-' }}
+          </el-descriptions-item>
+          <el-descriptions-item label="约检联系人电话">
+            {{ taskOrder.unitPhone || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="备注" :span="2">
+            {{ taskOrder.remark || '-' }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </ContentWrap>
+
+      <ContentWrap title="设备清单">
+        <el-table
+          :data="taskOrder.orderItems"
+          border
+          stripe
+          empty-text="暂无设备信息"
+        >
+          <el-table-column type="expand" fixed="left">
+            <template #default="props">
+              <div class="ml-15px mr-15px">
+                <el-table
+                  :data="props.row.detailDOS"
+                  border
+                  :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"
+                >
+                  <el-table-column label="注册代码" prop="pipeRegCode" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="管道名称" prop="pipeName" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="管道编号" prop="pipeNo" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="管道级别" prop="pipeLevel" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="管道品种" prop="pipeType" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="长度" prop="pipeLength" min-width="100" show-overflow-tooltip />
+                  <el-table-column label="管道材质" prop="pipeMaterial" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="材料标准" prop="materialStandard" min-width="120" show-overflow-tooltip />
+                  <el-table-column label="定期安全状况等级" prop="legalSafetyStatusLevel" min-width="130" show-overflow-tooltip />
+                  <el-table-column label="年度安全状况等级" prop="yearSafetyStatusLevel" min-width="130" show-overflow-tooltip />
+                </el-table>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column type="index" label="序号" width="60" align="center" />
+          <el-table-column
+            label="工程号"
+            align="center"
+            prop="projectNo"
+            width="180px"
+          />
+          <el-table-column
+            label="检验性质"
+            align="center"
+            width="150px"
+          >
+            <template #default>
+              {{ inspectionNatureLabel || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="检验项目"
+            align="center"
+            width="150px"
+          >
+            <template #default>
+              {{ PressurePipeCheckTypeMap[taskOrder.checkType] || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="区域"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              <div>{{ row.equipDistrictName || '-' }}</div>
+              <div class="text-gray-400 text-sm">{{ row.equipStreetName || '' }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="工程名称"
+            align="center"
+            prop="projectName"
+            width="280px"
+          />
+          <el-table-column
+            label="管道类别"
+            align="center"
+            width="150px"
+          >
+            <template #default="{ row }">
+              {{ pipeTypeOptions.find(i => i.value === row.pipeCategory)?.label || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="下次法定检验"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              {{ row.nextLegalCheckDate ? dayjs(row.nextLegalCheckDate).format('YYYY-MM-DD') : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="下次年度检查"
+            align="center"
+            width="120px"
+          >
+            <template #default="{ row }">
+              {{ row.nextYearCheckDate ? dayjs(row.nextYearCheckDate).format('YYYY-MM-DD') : '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="约检联系人"
+            align="center"
+            width="160px"
+          >
+            <template #default="{ row }">
+              {{ row.contact || '-' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="约检联系人电话"
+            align="center"
+            width="160px"
+          >
+            <template #default="{ row }">
+              {{ row.contactPhone || '-' }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </ContentWrap>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { computed, onMounted, ref } from 'vue'
+import { dayjs } from 'element-plus'
+import { formatArrayDate } from '@/utils/formatTime'
+import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
+import {
+  PressureFeeNatureMap,
+  PressureFeeTypeMap,
+  PressurePipeCheckTypeMap
+} from '@/utils/constants'
+import { getSimpleUserList, type UserVO } from '@/api/system/user'
+import { InspectionNatureTypeApi, type InspectionNatureTypeVO } from '@/api/pressure2/inspectionnaturetype'
+
+defineOptions({ name: 'PipeTaskOrderModifyContent' })
+
+const props = defineProps({
+  taskOrder: {
+    type: Object as () => Record<string, any>,
+    required: true
+  }
+})
+
+const pipeTypeOptions = getStrDictOptions(DICT_TYPE.PIPE_TYPE)
+
+const typeOptions = [
+  { value: 1, label: '法定' },
+  { value: 2, label: '委托' }
+]
+
+const userMap = ref<Record<string, UserVO>>({})
+const inspectionNatureTypeList = ref<InspectionNatureTypeVO[]>([])
+
+const teamItemDisplayList = computed(() => {
+  if (!props.taskOrder?.teamItemList) return []
+  return props.taskOrder.teamItemList
+})
+
+const inspectionNatureLabel = computed(() => {
+  if (!props.taskOrder?.checkType) return '-'
+  const match = inspectionNatureTypeList.value.find(
+    item => String(item.nature) === String(props.taskOrder.checkType)
+  )
+  if (match) {
+    return typeOptions.find(t => String(t.value) === String(match.type))?.label || '-'
+  }
+  return '-'
+})
+
+const resolveUser = (userId: string) => {
+  if (!userId) return null
+  return userMap.value[String(userId)] || null
+}
+
+onMounted(async () => {
+  try {
+    const userList = await getSimpleUserList()
+    const map: Record<string, UserVO> = {}
+    userList.forEach(user => {
+      map[String(user.id)] = user
+    })
+    userMap.value = map
+  } catch (e) {
+    console.error('获取用户列表失败', e)
+  }
+
+  try {
+    const res = await InspectionNatureTypeApi.getInspectionNatureTypePage({ equip: '300' })
+    inspectionNatureTypeList.value = res.list || []
+  } catch (e) {
+    console.error('获取检验性质类型失败', e)
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+.loading-text {
+  text-align: center;
+  padding: 20px;
+  color: #909399;
+}
+
+:deep(.el-descriptions__label) {
+  width: 10%;
+}
+
+:deep(.el-descriptions__content) {
+  width: 20%;
+}
+
+.leader-tag {
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  border: 1px solid #4475d6;
+  font-size: 12px;
+  margin-right: 4px;
+  color: #4475d6;
+}
+
+.custom-block.tip {
+  padding: 0 6px;
+  background-color: var(--block-warning-bg-color);
+  border-left: 5px solid var(--el-color-primary);
+  margin: 15px 0;
+}
+</style>

+ 3 - 9
yudao-ui-admin-vue3/src/views/pressure2/pipetaskorder/review.vue

@@ -296,25 +296,19 @@
   <!-- 任务单详情对话框 (用于查看修改内容) -->
   <el-dialog
     v-model="taskOrderDetailDialogVisible"
-    title="任务单详情"
+    title="修改后任务单详情"
     width="80%"
     draggable
     :close-on-click-modal="false"
   >
-<!--    <TaskOrderDetailDialog-->
-<!--      v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.CONTAINER"-->
-<!--      :task-order="parsedTaskOrderData"-->
-<!--      :in-page-mode="false"-->
-<!--    />-->
     <BoilerTaskOrderDetailDialog
       v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.BOILER"
       :task-order="parsedTaskOrderData"
       :in-page-mode="false"
     />
-    <PipeTaskOrderDetailDialog
+    <PipeTaskOrderModifyContent
       v-if="parsedTaskOrderData && equipMainType === PressureEquipMainType.PIPE"
       :task-order="parsedTaskOrderData"
-      :in-page-mode="false"
     />
   </el-dialog>
 </template>
@@ -338,7 +332,7 @@ import {
 } from '@/utils/constants'
 // import TaskOrderDetailDialog from './components/TaskOrderDetailDialog.vue'
 import BoilerTaskOrderDetailDialog from '../../pressure2/boilertaskorder/components/TaskOrderDetailDialog.vue'
-import PipeTaskOrderDetailDialog from '../../pressure2/pipetaskorder/components/TaskOrderDetailDialog.vue'
+import PipeTaskOrderModifyContent from './components/PipeTaskOrderModifyContent.vue'
  import TaskOrderOperationRecordDialog from './components/TaskOrderOperationRecordDialog.vue'
 import { useUserStore } from '@/store/modules/user'
 import { cloneDeep } from 'lodash-es'