From e5a70efeaa9fd96ce1242e5d582c8237319fade4 Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期五, 10 四月 2026 11:13:15 +0800
Subject: [PATCH] Merge branch 'dev_天津_阳光印刷' of http://114.132.189.42:9002/r/product-inventory-management into dev_天津_阳光印刷

---
 src/views/qualityManagement/metricBinding/index.vue |  117 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 81 insertions(+), 36 deletions(-)

diff --git a/src/views/qualityManagement/metricBinding/index.vue b/src/views/qualityManagement/metricBinding/index.vue
index ac67474..0509961 100644
--- a/src/views/qualityManagement/metricBinding/index.vue
+++ b/src/views/qualityManagement/metricBinding/index.vue
@@ -1,7 +1,14 @@
 <template>
   <div class="app-container metric-binding">
-    <!-- 宸︿晶锛氭娴嬫爣鍑嗗垪琛紙鍙锛� -->
-    <div class="left-panel">
+    <el-tabs v-model="activeTab" @tab-change="handleTabChange" class="metric-tabs">
+      <el-tab-pane label="鍘熸潗鏂欐楠�" name="0" />
+      <el-tab-pane label="杩囩▼妫�楠�" name="1" />
+      <el-tab-pane label="鍑哄巶妫�楠�" name="2" />
+    </el-tabs>
+    <el-row :gutter="16" class="metric-binding-row">
+      <!-- 宸︿晶锛氭娴嬫爣鍑嗗垪琛� -->
+      <el-col :xs="24" :sm="24" :md="12" :lg="14" :xl="14" class="left-col">
+        <div class="panel left-panel">
       <PIMTable
         rowKey="id"
         :column="standardColumns"
@@ -41,21 +48,6 @@
             @clear="handleQuery"
           />
         </template>
-        <template #inspectTypeHeader>
-          <el-select
-            v-model="searchForm.inspectType"
-            placeholder="绫诲埆"
-            clearable
-            size="small"
-            style="width: 120px"
-            @change="handleQuery"
-            @clear="handleQuery"
-          >
-            <el-option label="鍘熸潗鏂欐楠�" value="0" />
-            <el-option label="杩囩▼妫�楠�" value="1" />
-            <el-option label="鍑哄巶妫�楠�" value="2" />
-          </el-select>
-        </template>
         <template #stateHeader>
           <el-select
             v-model="searchForm.state"
@@ -72,10 +64,12 @@
           </el-select>
         </template>
       </PIMTable>
-    </div>
+        </div>
+      </el-col>
 
-    <!-- 鍙充晶锛氱粦瀹氬垪琛� -->
-    <div class="right-panel">
+      <!-- 鍙充晶锛氱粦瀹氬垪琛� -->
+      <el-col :xs="24" :sm="24" :md="12" :lg="10" :xl="10" class="right-col">
+        <div class="panel right-panel">
       <div class="right-header">
         <div class="title">缁戝畾鍏崇郴</div>
         <div class="desc" v-if="currentStandard">
@@ -108,7 +102,9 @@
           </template>
         </el-table-column>
       </el-table>
-    </div>
+        </div>
+      </el-col>
+    </el-row>
 
     <!-- 娣诲姞缁戝畾寮规 -->
     <el-dialog
@@ -161,6 +157,9 @@
 
 const { proxy } = getCurrentInstance()
 
+// 绫诲埆 Tab锛�0=鍘熸潗鏂欙紝1=杩囩▼锛�2=鍑哄巶锛�
+const activeTab = ref('0')
+
 // 宸︿晶鏍囧噯鍒楄〃锛氭暣琛屽唴瀹瑰眳涓紙閰嶅悎鏍峰紡锛�
 const rowClassNameCenter = () => 'row-center'
 
@@ -203,7 +202,6 @@
   {
     label: '绫诲埆',
     prop: 'inspectType',
-    headerSlot: 'inspectTypeHeader',
     align: 'center',
     dataType: 'tag',
     formatData: (val) => {
@@ -245,6 +243,18 @@
   //   }
   // }
 ])
+
+const handleTabChange = () => {
+  searchForm.value.standardNo = ''
+  searchForm.value.standardName = ''
+  searchForm.value.state = ''
+  searchForm.value.inspectType = activeTab.value
+  page.current = 1
+  currentStandard.value = null
+  bindingTableData.value = []
+  bindingSelectedRows.value = []
+  getStandardList()
+}
 
 const currentStandard = ref(null)
 
@@ -375,15 +385,21 @@
 }
 
 const handleUnbind = async (row) => {
-  if (!row?.id) return
+  const id = row?.id ?? row?.qualityTestStandardBindingId
+  if (id == null || id === '') return
   try {
     await ElMessageBox.confirm('纭鍒犻櫎璇ョ粦瀹氾紵', '鎻愮ず', { type: 'warning' })
   } catch {
     return
   }
-  await qualityTestStandardBindingDel([row.qualityTestStandardBindingId])
-  proxy.$message.success('鍒犻櫎鎴愬姛')
-  loadBindingList()
+  try {
+    await qualityTestStandardBindingDel([id])
+    proxy.$message.success('鍒犻櫎鎴愬姛')
+    loadBindingList()
+  } catch (err) {
+    console.error('鍒犻櫎缁戝畾澶辫触:', err)
+    proxy.$message?.error(err?.message || '鍒犻櫎澶辫触')
+  }
 }
 
 const handleBatchUnbind = async () => {
@@ -391,18 +407,30 @@
     proxy.$message.warning('璇烽�夋嫨鏁版嵁')
     return
   }
-  const ids = bindingSelectedRows.value.map((i) => i.qualityTestStandardBindingId)
+  const ids = bindingSelectedRows.value
+    .map((i) => i?.id ?? i?.qualityTestStandardBindingId)
+    .filter((id) => id != null && id !== '')
+  if (!ids.length) {
+    proxy.$message.warning('閫変腑鏁版嵁缂哄皯鏈夋晥 id')
+    return
+  }
   try {
     await ElMessageBox.confirm('閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�', '鍒犻櫎鎻愮ず', { type: 'warning' })
   } catch {
     return
   }
-  await qualityTestStandardBindingDel(ids)
-  proxy.$message.success('鍒犻櫎鎴愬姛')
-  loadBindingList()
+  try {
+    await qualityTestStandardBindingDel(ids)
+    proxy.$message.success('鍒犻櫎鎴愬姛')
+    loadBindingList()
+  } catch (err) {
+    console.error('鎵归噺鍒犻櫎缁戝畾澶辫触:', err)
+    proxy.$message?.error(err?.message || '鍒犻櫎澶辫触')
+  }
 }
 
 onMounted(() => {
+  searchForm.value.inspectType = activeTab.value
   getStandardList()
   getProcessList()
 })
@@ -410,16 +438,33 @@
 
 <style scoped>
 .metric-binding {
-  display: flex;
-  gap: 16px;
+  padding: 0;
+}
+
+.metric-tabs {
+  margin: 10px;
+}
+
+.metric-binding-row {
+  width: 100%;
+}
+
+.metric-binding-row .left-col,
+.metric-binding-row .right-col {
+  margin-bottom: 16px;
+}
+
+.metric-binding-row .panel {
+  background: #ffffff;
+  padding: 16px;
+  box-sizing: border-box;
+  height: 100%;
+  min-height: 400px;
 }
 
 .left-panel,
 .right-panel {
-  flex: 1;
-  background: #ffffff;
-  padding: 16px;
-  box-sizing: border-box;
+  height: 100%;
 }
 
 .toolbar {

--
Gitblit v1.9.3