Kaynağa Gözat

管线受理单/约检确认单/任务单拒绝约检设备以管线维度处理

xy 1 gün önce
ebeveyn
işleme
2cfa8cb225

+ 41 - 11
yudao-ui-admin-vue3/src/views/pressure2/acceptorder/boilerDetail.vue

@@ -176,16 +176,26 @@
           <el-col :span="24">
             <!-- 检验员 teamList -->
             <el-form-item label="检验员" prop="teamList">
-              <CheckerSelect
-                ref="checkerSelectRef"
-                v-model="selectedCheckers"
-                :dept-id="userStore.getUser.deptId?.toString() || '1'"
-                :disabled="false"
-                :has-data="true"
-                empty-text="暂无检验员数据"
-                :multiple="true"
-                @change="handleCheckerChange"
-              />
+<!--              <CheckerSelect-->
+<!--                ref="checkerSelectRef"-->
+<!--                v-model="selectedCheckers"-->
+<!--                :dept-id="userStore.getUser.deptId?.toString() || '1'"-->
+<!--                :disabled="false"-->
+<!--                :has-data="true"-->
+<!--                empty-text="暂无检验员数据"-->
+<!--                :multiple="true"-->
+<!--                @change="handleCheckerChange"-->
+<!--              />-->
+              <div v-if="formattedCheckers.length > 0" class="selected-checkers">
+                <el-tag
+                  v-for="checker in formattedCheckers"
+                  :key="checker.id"
+                  effect="plain"
+                  class="mr-8px mb-8px"
+                >
+                  {{ checker.label }}
+                </el-tag>
+              </div>
             </el-form-item>
           </el-col>
         </el-row>
@@ -1618,7 +1628,27 @@ const handleRemove = (type: string, attach: string) => {
   exceptionInfo.value[attach] = ''
 }
 
-
+const formattedCheckers = computed(() => {
+  const teamList = formData.value.teamList
+  console.log("teamList",teamList)
+  if (!teamList || !Array.isArray(teamList) || teamList.length === 0) return []
+
+  const result: { id: string; label: string }[] = []
+  teamList.forEach((team: any, teamIndex: number) => {
+    if (team.isLeader) {
+      result.push({
+        id: `leader-${team.member.id || teamIndex}`,
+        label: `组长: ${team.member.nickname || ''}`
+      })
+    }else{
+      result.push({
+        id: `member-${team.member.id || teamIndex}`,
+        label: `${team.member.nickname || ''}`
+      })
+    }
+  })
+  return result
+})
 </script>
 
 <style lang="scss" scoped>

+ 43 - 11
yudao-ui-admin-vue3/src/views/pressure2/acceptorder/pipeDetail.vue

@@ -176,16 +176,26 @@
           <el-col :span="24">
             <!-- 检验员 teamList -->
             <el-form-item label="检验员" prop="teamList">
-              <CheckerSelect
-                ref="checkerSelectRef"
-                v-model="selectedCheckers"
-                :dept-id="userStore.getUser.deptId?.toString() || '1'"
-                :disabled="false"
-                :has-data="true"
-                empty-text="暂无检验员数据"
-                :multiple="true"
-                @change="handleCheckerChange"
-              />
+<!--              <CheckerSelect-->
+<!--                ref="checkerSelectRef"-->
+<!--                v-model="selectedCheckers"-->
+<!--                :dept-id="userStore.getUser.deptId?.toString() || '1'"-->
+<!--                :disabled="false"-->
+<!--                :has-data="true"-->
+<!--                empty-text="暂无检验员数据"-->
+<!--                :multiple="true"-->
+<!--                @change="handleCheckerChange"-->
+<!--              />-->
+              <div v-if="formattedCheckers.length > 0" class="selected-checkers">
+                <el-tag
+                  v-for="checker in formattedCheckers"
+                  :key="checker.id"
+                  effect="plain"
+                  class="mr-8px mb-8px"
+                >
+                  {{ checker.label }}
+                </el-tag>
+              </div>
             </el-form-item>
           </el-col>
         </el-row>
@@ -1293,7 +1303,7 @@ watch(datePickerType, (newVal) => {
 
 /** 拒绝约检 */
 const handleRejectEquip = async () => {
-  if (selectedRows.value.length === 0) {
+  if (selectedRows.value.length === 0 || selectedDetailRows.value.length === 0) {
     ElMessage.warning('请选择要拒绝约检的设备')
     return
   }
@@ -1323,6 +1333,7 @@ const handleRejectConfirm = async (type) => {
   const submitData = {
     equipIds,
     orderId: orderDetail.value?.id,
+    detailEquipRows: selectedDetailRows.value,
     type,
     reason: rejectForm.value.reason,
     reasonDict: rejectForm.value.reasonDict,
@@ -1686,6 +1697,27 @@ const handleRemove = (type: string, attach: string) => {
   exceptionInfo.value[attach] = ''
 }
 
+const formattedCheckers = computed(() => {
+  const teamList = formData.value.teamList
+  console.log("teamList",teamList)
+  if (!teamList || !Array.isArray(teamList) || teamList.length === 0) return []
+
+  const result: { id: string; label: string }[] = []
+  teamList.forEach((team: any, teamIndex: number) => {
+    if (team.isLeader) {
+      result.push({
+        id: `leader-${team.member.id || teamIndex}`,
+        label: `组长: ${team.member.nickname || ''}`
+      })
+    }else{
+      result.push({
+        id: `member-${team.member.id || teamIndex}`,
+        label: `${team.member.nickname || ''}`
+      })
+    }
+  })
+  return result
+})
 
 </script>
 

+ 3 - 3
yudao-ui-admin-vue3/src/views/pressure2/boilerReportPreparationList/index.vue

@@ -67,9 +67,9 @@
           <el-button @click="resetQuery">
             <Icon icon="ep:refresh" class="mr-5px" /> 重置
           </el-button>
-          <el-button type="primary" @click="showSettingDialog">
-            <Icon icon="ep:user" class="mr-5px" /> 审核配置
-          </el-button>
+<!--          <el-button type="primary" @click="showSettingDialog">-->
+<!--            <Icon icon="ep:user" class="mr-5px" /> 审核配置-->
+<!--          </el-button>-->
           <el-button link @click="isSearchExpanded = !isSearchExpanded">
             <el-icon>
               <ArrowUp v-if="isSearchExpanded" />

+ 4 - 4
yudao-ui-admin-vue3/src/views/pressure2/boilerchecker/myTask.vue

@@ -208,10 +208,10 @@
             <Icon icon="ep:refresh" class="mr-5px"/>
             重置
           </el-button>
-          <el-button type="primary" @click="showSettingDialog">
-            <Icon icon="ep:user" class="mr-5px"/>
-            审核配置
-          </el-button>
+<!--          <el-button type="primary" @click="showSettingDialog">-->
+<!--            <Icon icon="ep:user" class="mr-5px"/>-->
+<!--            审核配置-->
+<!--          </el-button>-->
           <el-button link @click="isSearchExpanded = !isSearchExpanded">
             <el-icon>
               <ArrowUp v-if="isSearchExpanded"/>

+ 42 - 10
yudao-ui-admin-vue3/src/views/pressure2/orderConfirm/boilerDetail.vue

@@ -202,16 +202,27 @@
           <el-col :span="24">
             <!-- 检验员 teamList -->
             <el-form-item label="检验员" prop="teamList">
-              <CheckerSelect
-                ref="checkerSelectRef"
-                v-model="selectedCheckers"
-                :dept-id="userStore.getUser.deptId?.toString() || '1'"
-                :disabled="false"
-                :has-data="true"
-                empty-text="暂无检验员数据"
-                :multiple="true"
-                @change="handleCheckerChange"
-              />
+<!--              <CheckerSelect-->
+<!--                ref="checkerSelectRef"-->
+<!--                v-model="selectedCheckers"-->
+<!--                :dept-id="userStore.getUser.deptId?.toString() || '1'"-->
+<!--                :disabled="false"-->
+<!--                :has-data="true"-->
+<!--                empty-text="暂无检验员数据"-->
+<!--                :multiple="true"-->
+<!--                @change="handleCheckerChange"-->
+<!--              />-->
+              <div v-if="formattedCheckers.length > 0" class="selected-checkers">
+                <el-tag
+                  v-for="checker in formattedCheckers"
+                  :key="checker.id"
+                  effect="plain"
+                  class="mr-8px mb-8px"
+                >
+                  {{ checker.label }}
+                </el-tag>
+              </div>
+              <span v-else>-</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -1683,6 +1694,27 @@ const handleRemove = (type: string, attach: string) => {
   exceptionInfo.value[attach] = ''
 }
 
+const formattedCheckers = computed(() => {
+  const teamList = formData.value.teamList
+  console.log("teamList",teamList)
+  if (!teamList || !Array.isArray(teamList) || teamList.length === 0) return []
+
+  const result: { id: string; label: string }[] = []
+  teamList.forEach((team: any, teamIndex: number) => {
+    if (team.isLeader) {
+      result.push({
+        id: `leader-${team.member.id || teamIndex}`,
+        label: `组长: ${team.member.nickname || ''}`
+      })
+    }else{
+      result.push({
+        id: `member-${team.member.id || teamIndex}`,
+        label: `${team.member.nickname || ''}`
+      })
+    }
+  })
+  return result
+})
 
 // 页面加载时获取详情
 onMounted(async () => {

+ 46 - 11
yudao-ui-admin-vue3/src/views/pressure2/orderConfirm/pipeDetail.vue

@@ -433,16 +433,27 @@
           <el-col :span="24">
             <!-- 检验员 teamList -->
             <el-form-item label="检验员" prop="teamList">
-              <CheckerSelect
-                ref="checkerSelectRef"
-                v-model="selectedCheckers"
-                :dept-id="userStore.getUser.deptId?.toString() || '1'"
-                :disabled="false"
-                :has-data="true"
-                empty-text="暂无检验员数据"
-                :multiple="true"
-                @change="handleCheckerChange"
-              />
+<!--              <CheckerSelect-->
+<!--                ref="checkerSelectRef"-->
+<!--                v-model="selectedCheckers"-->
+<!--                :dept-id="userStore.getUser.deptId?.toString() || '1'"-->
+<!--                :disabled="false"-->
+<!--                :has-data="true"-->
+<!--                empty-text="暂无检验员数据"-->
+<!--                :multiple="true"-->
+<!--                @change="handleCheckerChange"-->
+<!--              />-->
+              <div v-if="formattedCheckers.length > 0" class="selected-checkers">
+                <el-tag
+                  v-for="checker in formattedCheckers"
+                  :key="checker.id"
+                  effect="plain"
+                  class="mr-8px mb-8px"
+                >
+                  {{ checker.label }}
+                </el-tag>
+              </div>
+              <span v-else>-</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -1337,7 +1348,7 @@ watch(datePickerType, (newVal) => {
 
 /** 拒绝约检 */
 const handleRejectEquip = async () => {
-  if (selectedRows.value.length === 0) {
+  if (selectedRows.value.length === 0 || selectedDetailRows.value.length === 0) {
     ElMessage.warning('请选择要拒绝约检的设备')
     return
   }
@@ -1367,6 +1378,7 @@ const handleRejectConfirm = async (type) => {
   const submitData = {
     equipIds,
     orderId: orderDetail.value?.id,
+    detailEquipRows: selectedDetailRows.value,
     type,
     reasonDict: rejectForm.value.reasonDict,
     reason: rejectForm.value.reason,
@@ -1853,6 +1865,29 @@ onMounted(async () => {
     // await handleGetExceptionInfo('eb9a57fe2ed98a45e1a892aef4cc13f0')
   }
 })
+
+const formattedCheckers = computed(() => {
+  const teamList = formData.value.teamList
+  console.log("teamList",teamList)
+  if (!teamList || !Array.isArray(teamList) || teamList.length === 0) return []
+
+  const result: { id: string; label: string }[] = []
+  teamList.forEach((team: any, teamIndex: number) => {
+    if (team.isLeader) {
+      result.push({
+        id: `leader-${team.member.id || teamIndex}`,
+        label: `组长: ${team.member.nickname || ''}`
+      })
+    }else{
+      result.push({
+        id: `member-${team.member.id || teamIndex}`,
+        label: `${team.member.nickname || ''}`
+      })
+    }
+  })
+  return result
+})
+
 </script>
 
 <style lang="scss" scoped>

+ 3 - 3
yudao-ui-admin-vue3/src/views/pressure2/pipeReportPreparationList/index.vue

@@ -67,9 +67,9 @@
           <el-button @click="resetQuery">
             <Icon icon="ep:refresh" class="mr-5px" /> 重置
           </el-button>
-          <el-button type="primary" @click="showSettingDialog">
-            <Icon icon="ep:user" class="mr-5px" /> 审核配置
-          </el-button>
+<!--          <el-button type="primary" @click="showSettingDialog">-->
+<!--            <Icon icon="ep:user" class="mr-5px" /> 审核配置-->
+<!--          </el-button>-->
           <el-button link @click="isSearchExpanded = !isSearchExpanded">
             <el-icon>
               <ArrowUp v-if="isSearchExpanded" />

+ 4 - 4
yudao-ui-admin-vue3/src/views/pressure2/pipechecker/myTask.vue

@@ -208,10 +208,10 @@
             <Icon icon="ep:refresh" class="mr-5px"/>
             重置
           </el-button>
-          <el-button type="primary" @click="showSettingDialog">
-            <Icon icon="ep:user" class="mr-5px"/>
-            审核配置
-          </el-button>
+<!--          <el-button type="primary" @click="showSettingDialog">-->
+<!--            <Icon icon="ep:user" class="mr-5px"/>-->
+<!--            审核配置-->
+<!--          </el-button>-->
           <el-button link @click="isSearchExpanded = !isSearchExpanded">
             <el-icon>
               <ArrowUp v-if="isSearchExpanded"/>

+ 31 - 3
yudao-ui-admin-vue3/src/views/pressure2/pipetaskorder/detail.vue

@@ -717,9 +717,18 @@ const rejectForm = ref({
 
 const formRef = ref() // 表单引用
 
-// 计算属性,用于过滤掉 editType 为 'reject' 的设备
+// 计算属性,用于过滤设备:只有管线子表全部标记为拒绝时才隐藏父表
 const filteredEquipList = computed(() => {
-  return equipList.value.filter(equip => equip.editType !== 'reject');
+  return equipList.value
+    .filter(equip => {
+      const detailDOS = equip.detailDOS || [];
+      if (detailDOS.length === 0) return equip.editType !== 'reject';
+      return !detailDOS.every(d => d.editType === 'reject');
+    })
+    .map(equip => ({
+      ...equip,
+      detailDOS: (equip.detailDOS || []).filter(d => d.editType !== 'reject')
+    }));
 })
 
 /** 约检确认详情 */
@@ -1154,7 +1163,7 @@ watch(datePickerType, (newVal) => {
 
 /** 拒绝约检 */
 const handleRejectEquip = async () => {
-  if (selectedRows.value.length === 0) {
+  if (selectedRows.value.length === 0 || selectedDetailRows.value.length === 0) {
     ElMessage.warning('请选择要拒绝约检的设备')
     return
   }
@@ -1198,6 +1207,24 @@ const handleRejectConfirm = async (type) => {
     }
   });
 
+  // 拒绝约检时,标记选中的管线子表数据
+  if (selectedDetailRows.value.length > 0) {
+    const detailIds = new Set(selectedDetailRows.value.map(d => d.id));
+    equipList.value.forEach(equip => {
+      if (equip.detailDOS && equip.detailDOS.length > 0) {
+        equip.detailDOS.forEach(detail => {
+          if (detailIds.has(detail.id)) {
+            detail.editType = 'reject';
+            detail.rejectType = type;
+            detail.reason = reason;
+            detail.reasonDict = reasonDict;
+          }
+        });
+      }
+    });
+    selectedDetailRows.value = [];
+  }
+
   let alertText = ''
   switch(type) {
     case 100:
@@ -1396,6 +1423,7 @@ const submitAcceptance = async (reason: string) => {
         afterJson: JSON.stringify(submitData) // 快照后的完整数据
     }
 
+    console.log('提交数据:', submitData)
     await PipeTaskOrderApi.createTaskOrderOperationRecord(data)
     ElMessage.success('任务单修改请求提交')