Ver Fonte

feat(web-admin): add storage-cert QC fill entry on QC work-order cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu há 1 mês atrás
pai
commit
f1dcafd33d

+ 33 - 1
web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSingleCard.vue

@@ -156,6 +156,13 @@
             >
               <el-icon><EditPen /></el-icon>特殊样本
             </el-button>
+            <el-button
+              v-if="showStorageCertQcButton"
+              class="btn-op-item"
+              @click="openStorageCertQcDialog"
+            >
+              <el-icon><Document /></el-icon>填写储存证质检信息
+            </el-button>
           </template>
           <template v-else-if="showWorkOrderOps">
             <el-button
@@ -177,6 +184,13 @@
             >
               <el-icon><EditPen /></el-icon>特殊样本
             </el-button>
+            <el-button
+              v-if="showStorageCertQcButton"
+              class="btn-op-item"
+              @click="openStorageCertQcDialog"
+            >
+              <el-icon><Document /></el-icon>填写储存证质检信息
+            </el-button>
             <el-dropdown
               v-if="hasMoreWorkOrderActions(row)"
               trigger="hover"
@@ -234,12 +248,21 @@
       :target="sampleSpecialMarkTarget"
       @success="emit('sample-special-changed')"
     />
+    <StorageCertQcDialog
+      v-model:visible="storageCertQcVisible"
+      mode="edit"
+      :sample-code="String(row.sampleCode || '')"
+      :sample-type-name="String(row.sampleTypeName || '')"
+      :qc-work-order-id="String(row.id || '')"
+    />
   </article>
 </template>
 
 <script setup lang="ts">
   import { computed, ref } from 'vue'
-  import { Setting, View, More, EditPen, Delete } from '@element-plus/icons-vue'
+  import { Setting, View, More, EditPen, Delete, Document } from '@element-plus/icons-vue'
+  import StorageCertQcDialog from '@/components/business/storage-cert-qc-dialog/index.vue'
+  import { supportsStorageCertQc } from '@/utils/storage-cert-qc-fields'
   import type { QcWorkOrder, OutboundQcDetailProduct } from '@/api/qc-work-order'
   import type { QcTask } from '@/api/qc-task'
   import type { QcInspectionBatch } from '@/utils/qc-inspection-batch'
@@ -314,6 +337,11 @@
   }>()
 
   const sampleSpecialDialogVisible = ref(false)
+  const storageCertQcVisible = ref(false)
+
+  const showStorageCertQcButton = computed(() =>
+    supportsStorageCertQc(String(props.row?.sampleTypeName || ''))
+  )
 
   const sampleSpecialMarkTarget = computed(() =>
     resolveInboundSampleSpecialMarkTargetFromRow(props.row)
@@ -328,6 +356,10 @@
     sampleSpecialDialogVisible.value = true
   }
 
+  function openStorageCertQcDialog() {
+    storageCertQcVisible.value = true
+  }
+
   const effectiveCardMeta = computed(() =>
     resolveCardMetaForRow(props.row, props.cardMetaConfig.tabKey)
   )