From cdf8190c92a536dabdbd3dfd6758cf67320ff6df Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 16 一月 2026 17:47:21 +0800
Subject: [PATCH] Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management into dev_New

---
 src/views/qualityManagement/metricMaintenance/index.vue |   88 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 82 insertions(+), 6 deletions(-)

diff --git a/src/views/qualityManagement/metricMaintenance/index.vue b/src/views/qualityManagement/metricMaintenance/index.vue
index 4f62bca..f152a04 100644
--- a/src/views/qualityManagement/metricMaintenance/index.vue
+++ b/src/views/qualityManagement/metricMaintenance/index.vue
@@ -6,6 +6,8 @@
         <div class="toolbar-left"></div>
         <div class="toolbar-right">
           <el-button type="primary" @click="openStandardDialog('add')">鏂板</el-button>
+          <el-button type="success" plain @click="handleBatchAudit(1)">鎵瑰噯</el-button>
+          <el-button type="warning" plain @click="handleBatchAudit(2)">鎾ら攢</el-button>
           <el-button type="danger" plain @click="handleBatchDelete">鍒犻櫎</el-button>
         </div>
       </div>
@@ -16,6 +18,7 @@
         :page="page"
         :isSelection="true"
         :tableLoading="tableLoading"
+        :rowClassName="rowClassNameCenter"
         @selection-change="handleSelectionChange"
         @pagination="handlePagination"
         :total="page.total"
@@ -92,10 +95,10 @@
       </div>
 
       <div class="right-toolbar">
-        <el-button type="primary" :disabled="!currentStandard" @click="openParamDialog('add')">
+        <el-button type="primary" :disabled="!currentStandard || isStandardReadonly" @click="openParamDialog('add')">
           鏂板
         </el-button>
-        <el-button type="danger" plain :disabled="!currentStandard" @click="handleParamBatchDelete">
+        <el-button type="danger" plain :disabled="!currentStandard || isStandardReadonly" @click="handleParamBatchDelete">
           鍒犻櫎
         </el-button>
       </div>
@@ -104,6 +107,8 @@
         v-loading="detailLoading"
         :data="detailTableData"
         border
+        :row-class-name="() => 'row-center'"
+        class="center-table"
         style="width: 100%"
         height="calc(100vh - 220px)"
         @selection-change="handleParamSelectionChange"
@@ -117,10 +122,10 @@
         <el-table-column prop="defaultValue" label="榛樿鍊�" min-width="120" />
         <el-table-column label="鎿嶄綔" width="140" fixed="right" align="center">
           <template #default="{ row }">
-            <el-button link type="primary" size="small" @click="openParamDialog('edit', row)">
+            <el-button link type="primary" size="small" :disabled="isStandardReadonly" @click="openParamDialog('edit', row)">
               缂栬緫
             </el-button>
-            <el-button link type="danger" size="small" @click="handleParamDelete(row)">
+            <el-button link type="danger" size="small" :disabled="isStandardReadonly" @click="handleParamDelete(row)">
               鍒犻櫎
             </el-button>
           </template>
@@ -155,7 +160,7 @@
 
 <script setup>
 import { Search } from '@element-plus/icons-vue'
-import { ref, reactive, toRefs, onMounted, getCurrentInstance } from 'vue'
+import { ref, reactive, toRefs, onMounted, getCurrentInstance, computed } from 'vue'
 import { ElMessageBox } from 'element-plus'
 import {
   qualityTestStandardListPage,
@@ -163,6 +168,7 @@
   qualityTestStandardUpdate,
   qualityTestStandardDel,
   qualityTestStandardCopyParam,
+  qualityTestStandardAudit,
   qualityTestStandardParamList,
   qualityTestStandardParamAdd,
   qualityTestStandardParamUpdate,
@@ -173,6 +179,15 @@
 import ParamFormDialog from './ParamFormDialog.vue'
 
 const { proxy } = getCurrentInstance()
+
+// 宸︿晶鏍囧噯鍒楄〃锛氭暣琛屽唴瀹瑰眳涓紙閰嶅悎鏍峰紡锛�
+const rowClassNameCenter = () => 'row-center'
+
+// 鏍囧噯鐘舵�佷负鈥滈�氳繃(1)鈥濇椂锛屽彸渚у弬鏁扮姝㈠鍒犳敼
+const isStandardReadonly = computed(() => {
+  const state = currentStandard.value?.state
+  return state === 1 || state === '1'
+})
 
 // 鎼滅储鏉′欢
 const data = reactive({
@@ -286,7 +301,14 @@
   },
   {
     label: '宸ュ簭',
-    prop: 'processId'
+    prop: 'processId',
+    dataType: 'tag',
+    formatData: (val) => {
+      const target = processOptions.value.find(
+        (item) => String(item.value) === String(val)
+      )
+      return target?.label || val
+    }
   },
   {
     label: '鐘舵��',
@@ -399,6 +421,32 @@
   selectedRows.value = selection
 }
 
+// 鎵归噺瀹℃牳锛氱姸鎬� 1=鎵瑰噯锛�2=鎾ら攢
+const handleBatchAudit = async (state) => {
+  if (!selectedRows.value.length) {
+    proxy.$message.warning('璇烽�夋嫨鏁版嵁')
+    return
+  }
+  const text = state === 1 ? '鎵瑰噯' : '鎾ら攢'
+  const payload = selectedRows.value
+    .filter(i => i?.id)
+    .map((item) => ({ id: item.id, state }))
+
+  if (!payload.length) {
+    proxy.$message.warning('璇烽�夋嫨鏈夋晥鏁版嵁')
+    return
+  }
+
+  try {
+    await ElMessageBox.confirm(`纭${text}閫変腑鐨勬爣鍑嗭紵`, '鎻愮ず', { type: 'warning' })
+  } catch {
+    return
+  }
+  await qualityTestStandardAudit(payload)
+  proxy.$message.success(`${text}鎴愬姛`)
+  getStandardList()
+}
+
 // 宸︿晶琛岀偣鍑伙紝鍔犺浇鍙充晶鍙傛暟
 const handleStandardRowClick = (row) => {
   currentStandard.value = row
@@ -425,6 +473,10 @@
 
 const openParamDialog = (type, row) => {
   if (!currentStandard.value?.id) return
+  if (isStandardReadonly.value) {
+    proxy.$message.warning('璇ユ爣鍑嗗凡閫氳繃锛屽弬鏁颁笉鍙紪杈�')
+    return
+  }
   paramOperationType.value = type
   if (type === 'add') {
     Object.assign(paramForm, {
@@ -449,6 +501,10 @@
 const submitParamForm = async () => {
   const testStandardId = currentStandard.value?.id
   if (!testStandardId) return
+  if (isStandardReadonly.value) {
+    proxy.$message.warning('璇ユ爣鍑嗗凡閫氳繃锛屽弬鏁颁笉鍙紪杈�')
+    return
+  }
   const payload = { ...paramForm, testStandardId }
   if (paramOperationType.value === 'edit') {
     await qualityTestStandardParamUpdate(payload)
@@ -463,6 +519,10 @@
 
 const handleParamDelete = async (row) => {
   if (!row?.id) return
+  if (isStandardReadonly.value) {
+    proxy.$message.warning('璇ユ爣鍑嗗凡閫氳繃锛屽弬鏁颁笉鍙紪杈�')
+    return
+  }
   try {
     await ElMessageBox.confirm('纭鍒犻櫎璇ュ弬鏁帮紵', '鎻愮ず', { type: 'warning' })
   } catch {
@@ -474,6 +534,10 @@
 }
 
 const handleParamBatchDelete = async () => {
+  if (isStandardReadonly.value) {
+    proxy.$message.warning('璇ユ爣鍑嗗凡閫氳繃锛屽弬鏁颁笉鍙紪杈�')
+    return
+  }
   if (!paramSelectedRows.value.length) {
     proxy.$message.warning('璇烽�夋嫨鏁版嵁')
     return
@@ -682,4 +746,16 @@
 .clickable-link:hover {
   text-decoration: underline;
 }
+
+:deep(.row-center td) {
+  text-align: center !important;
+}
+
+/* el-table 琛ㄥご/鍐呭缁熶竴灞呬腑锛坮ow-class-name 涓嶄綔鐢ㄤ簬琛ㄥご锛� */
+:deep(.center-table .el-table__header-wrapper th .cell) {
+  text-align: center !important;
+}
+:deep(.center-table .el-table__body-wrapper td .cell) {
+  text-align: center !important;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3