From a4fcad66822cfc97858a1e460c5585e577ec2551 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 24 三月 2026 12:21:07 +0800
Subject: [PATCH] fix: 质量管理可编辑

---
 src/pages/qualityManagement/nonconformingManagement/form.vue  |    6 ++++--
 src/pages/qualityManagement/nonconformingManagement/index.vue |   10 ++++++++--
 src/pages/qualityManagement/rawMaterial/index.vue             |    6 +++++-
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/pages/qualityManagement/nonconformingManagement/form.vue b/src/pages/qualityManagement/nonconformingManagement/form.vue
index 7acb67d..a28ae54 100644
--- a/src/pages/qualityManagement/nonconformingManagement/form.vue
+++ b/src/pages/qualityManagement/nonconformingManagement/form.vue
@@ -370,7 +370,7 @@
     id: d.id,
     productId: d.productId,
     productName: d.productName,
-    productModelId: d.productModelId,
+    productModelId: d.productModelId ?? d.modelId ?? d.productModeId ?? '',
     model: d.model,
     unit: d.unit,
     batchNo: d.batchNo,
@@ -387,7 +387,9 @@
 
 const validate = () => {
   if (!form.productId) return toast('璇烽�夋嫨浜у搧鍚嶇О'), false
-  if (!form.productModelId) return toast('璇烽�夋嫨瑙勬牸鍨嬪彿'), false
+  // 瀵归綈 PC 绔細缂栬緫鎬佸厑璁镐粎鍥炴樉鍨嬪彿鏂囨湰锛堝巻鍙叉暟鎹彲鑳界己灏� productModelId锛�
+  if (!isEdit.value && !form.productModelId) return toast('璇烽�夋嫨瑙勬牸鍨嬪彿'), false
+  if (isEdit.value && !form.productModelId && !form.model) return toast('璇烽�夋嫨瑙勬牸鍨嬪彿'), false
   if (!form.batchNo) return toast('璇疯緭鍏ユ壒鍙�'), false
   if (form.checkType === undefined || form.checkType === '') return toast('璇烽�夋嫨妫�楠岀被鍨�'), false
   if (!form.checkName) return toast('璇烽�夋嫨妫�楠屽憳'), false
diff --git a/src/pages/qualityManagement/nonconformingManagement/index.vue b/src/pages/qualityManagement/nonconformingManagement/index.vue
index a7e49be..f83e37d 100644
--- a/src/pages/qualityManagement/nonconformingManagement/index.vue
+++ b/src/pages/qualityManagement/nonconformingManagement/index.vue
@@ -54,8 +54,8 @@
           </view>
           <view class="card-actions">
             <view class="btn-link btn-link-primary" v-if="item.inspectState == 0" @click.stop="openDealDialog(item)">澶勭悊</view>
-            <view class="btn-link btn-link-plain" v-if="item.inspectState == 0" @click.stop="openForm('edit', item)">缂栬緫</view>
-            <view class="btn-link btn-link-warn" v-if="item.inspectState == 0" @click.stop="handleDelete(item)">鍒犻櫎</view>
+            <view class="btn-link btn-link-plain" v-if="item.inspectState == 0 && hasNonconformingEdit" @click.stop="openForm('edit', item)">缂栬緫</view>
+            <view class="btn-link btn-link-warn" v-if="item.inspectState == 0 && hasNonconformingCancel" @click.stop="handleDelete(item)">鍒犻櫎</view>
           </view>
         </view>
         <view class="load-more-wrap">
@@ -168,6 +168,10 @@
 import dayjs from 'dayjs';
 import PageHeader from '@/components/PageHeader.vue'
 import { onReachBottom, onShow } from '@dcloudio/uni-app'
+import { checkPermi } from '@/utils/permission'
+
+const hasNonconformingEdit = computed(() => checkPermi(['nonconforming_edit']))
+const hasNonconformingCancel = computed(() => checkPermi(['nonconforming_cancel']))
 
 const searchForm = reactive({
   productName: '',
@@ -358,6 +362,7 @@
 };
 
 const handleDelete = (row) => {
+  if (!hasNonconformingCancel.value) return
   showConfirm('纭鍒犻櫎璇ヤ笉鍚堟牸璁板綍鍚楋紵').then(async res => {
     if (!res.confirm) return
     await qualityUnqualifiedDel([row.id])
@@ -372,6 +377,7 @@
 };
 
 const openForm = (type, row) => {
+  if (type === 'edit' && !hasNonconformingEdit.value) return
   if (type !== 'add' && row?.inspectState == 1) {
     toast('宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶇紪杈�')
     return
diff --git a/src/pages/qualityManagement/rawMaterial/index.vue b/src/pages/qualityManagement/rawMaterial/index.vue
index 99abfeb..a661bc4 100644
--- a/src/pages/qualityManagement/rawMaterial/index.vue
+++ b/src/pages/qualityManagement/rawMaterial/index.vue
@@ -63,7 +63,7 @@
           <up-button v-if="item.inspectState != 1" type="primary" size="mini" @click.stop="openForm('edit', item)">缂栬緫</up-button>
           <up-button type="info" size="mini" @click.stop="openFiles(item)">闄勪欢</up-button>
           <up-button v-if="item.inspectState != 1" type="success" size="mini" @click.stop="handleConfirmSubmit(item)">鎻愪氦</up-button>
-          <up-button type="error" size="mini" @click.stop="handleDelete(item)">鍒犻櫎</up-button>
+          <up-button v-if="hasRawCancel" type="error" size="mini" @click.stop="handleDelete(item)">鍒犻櫎</up-button>
         </view>
       </view>
       <view class="pagination-container">
@@ -110,8 +110,10 @@
 } from '@/api/qualityManagement/rawMaterial.js';
 import { toast, showConfirm } from '@/utils/common';
 import useUserStore from '@/store/modules/user';
+import { checkPermi } from '@/utils/permission';
 
 const userStore = useUserStore();
+const hasRawCancel = computed(() => checkPermi(['raw_cancel']));
 
 const searchForm = reactive({
   batchNo: '',
@@ -201,6 +203,7 @@
 };
 
 const openForm = (type, item) => {
+  if (type === 'edit' && !hasRawEdit.value) return
   const id = item?.id
   uni.navigateTo({
     url: `/pages/qualityManagement/rawMaterial/form?type=${type}${id ? `&id=${id}` : ''}`
@@ -219,6 +222,7 @@
 };
 
 const handleDelete = (row) => {
+  if (!hasRawCancel.value) return
   showConfirm('纭鍒犻櫎璇ヨ褰曞悧锛�').then(res => {
     if (res.confirm) {
       // 瀵归綈 PC 绔細鍒犻櫎鎺ュ彛鎺ユ敹 id 鏁扮粍

--
Gitblit v1.9.3