From aaa700a2efc44c2f633f2c83885bc67ddcbcd770 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期三, 23 九月 2026 09:10:36 +0800
Subject: [PATCH] feat: 台账品名/材质/规格手工录入与产品编号选填、审批模板启用锁定编辑

---
 src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue |   49 ++++++++++++++++++++++++++++---------------------
 1 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue b/src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue
index 6880f3f..afc6488 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue
@@ -8,6 +8,7 @@
         placeholder="濡傦細璇峰~鍐欐姤閿�浜嬬敱銆侀噾棰濈瓑"
         maxlength="200"
         show-word-limit
+        :disabled="readonly"
         @input="emitOut"
       />
     </div>
@@ -23,11 +24,11 @@
         <div class="fce-toolbar-actions">
           <el-dropdown
             trigger="click"
-            :disabled="disableImport"
+            :disabled="disableImport || readonly"
             @visible-change="onImportDropdownVisible"
             @command="importFromTemplate"
           >
-            <el-button size="small" :loading="templateImportLoading" :disabled="disableImport">
+            <el-button size="small" :loading="templateImportLoading" :disabled="disableImport || readonly">
               浠庡凡鏈夋ā鏉垮鍏�
             </el-button>
             <template #dropdown>
@@ -46,7 +47,7 @@
               </el-dropdown-menu>
             </template>
           </el-dropdown>
-          <el-button type="primary" size="small" :icon="Plus" @click="addField">娣诲姞濉姤椤�</el-button>
+          <el-button v-if="!readonly" type="primary" size="small" :icon="Plus" @click="addField">娣诲姞濉姤椤�</el-button>
         </div>
       </div>
 
@@ -76,7 +77,7 @@
               <el-tag v-if="field.required" size="small" type="danger" effect="plain">蹇呭~</el-tag>
               <el-tag v-if="isFieldLocked(field)" size="small" type="info" effect="plain">鍐呯疆椤�</el-tag>
             </div>
-            <div v-if="!isFieldLocked(field)" class="fce-card-btns">
+            <div v-if="!isFieldDisabled(field)" class="fce-card-btns">
               <el-tooltip content="涓婄Щ" placement="top">
                 <el-button circle size="small" :disabled="index === 0" @click="moveField(index, -1)">
                   <el-icon><Top /></el-icon>
@@ -109,7 +110,7 @@
                     v-model="field.label"
                     placeholder="濡傦細鎶ラ攢璇存槑"
                     maxlength="50"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @input="emitOut"
                   />
                 </el-form-item>
@@ -120,7 +121,7 @@
                     v-model="field.key"
                     placeholder="濡傦細summary"
                     maxlength="50"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @input="emitOut"
                   />
                 </el-form-item>
@@ -130,7 +131,7 @@
                   <el-select
                     v-model="field.type"
                     style="width: 100%"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @change="onTypeChange(field)"
                   >
                     <el-option
@@ -155,7 +156,7 @@
                     inline-prompt
                     active-text="蹇呭~"
                     inactive-text="閫夊~"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @change="emitOut"
                   />
                 </el-form-item>
@@ -168,7 +169,7 @@
                     :max="10"
                     controls-position="right"
                     style="width: 100%"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @change="emitOut"
                   />
                 </el-form-item>
@@ -180,7 +181,7 @@
                       v-model="field.min"
                       controls-position="right"
                       style="width: 100%"
-                      :disabled="isFieldLocked(field)"
+                      :disabled="isFieldDisabled(field)"
                       @change="emitOut"
                     />
                   </el-form-item>
@@ -193,7 +194,7 @@
                       :max="4"
                       controls-position="right"
                       style="width: 100%"
-                      :disabled="isFieldLocked(field)"
+                      :disabled="isFieldDisabled(field)"
                       @change="emitOut"
                     />
                   </el-form-item>
@@ -211,7 +212,7 @@
               :type="field.type === 'textarea' ? 'textarea' : 'text'"
               :rows="field.type === 'textarea' ? 2 : undefined"
               :placeholder="defaultPlaceholder(field)"
-              :disabled="isFieldLocked(field)"
+              :disabled="isFieldDisabled(field)"
               clearable
               @input="emitOut"
             />
@@ -223,7 +224,7 @@
               controls-position="right"
               placeholder="閫夊~"
               style="width: 100%"
-              :disabled="isFieldLocked(field)"
+              :disabled="isFieldDisabled(field)"
               @change="emitOut"
             />
             <el-date-picker
@@ -234,7 +235,7 @@
               format="YYYY-MM-DD"
               value-format="YYYY-MM-DD"
               style="width: 100%"
-              :disabled="isFieldLocked(field)"
+              :disabled="isFieldDisabled(field)"
               clearable
               @change="emitOut"
             />
@@ -248,7 +249,7 @@
               format="YYYY-MM-DD HH:mm:ss"
               value-format="YYYY-MM-DD HH:mm:ss"
               style="width: 100%"
-              :disabled="isFieldLocked(field)"
+              :disabled="isFieldDisabled(field)"
               clearable
               @change="emitOut"
             />
@@ -260,7 +261,7 @@
               clearable
               filterable
               :loading="optionSourceLoading"
-              :disabled="isFieldLocked(field)"
+              :disabled="isFieldDisabled(field)"
               @change="emitOut"
             >
               <el-option
@@ -280,7 +281,7 @@
                   <el-select
                     v-model="field.optionSource"
                     style="width: 100%"
-                    :disabled="isFieldLocked(field)"
+                    :disabled="isFieldDisabled(field)"
                     @change="onOptionSourceChange(field)"
                   >
                     <el-option
@@ -304,7 +305,7 @@
                   link
                   size="small"
                   :icon="Plus"
-                  :disabled="isFieldLocked(field)"
+                  :disabled="isFieldDisabled(field)"
                   @click="addOption(field)"
                 >
                   娣诲姞閫夐」
@@ -319,21 +320,21 @@
                 <el-input
                   v-model="opt.label"
                   placeholder="鏄剧ず鏂囨湰"
-                  :disabled="isFieldLocked(field)"
+                  :disabled="isFieldDisabled(field)"
                   @input="emitOut"
                 />
                 <el-input
                   v-model="opt.value"
                   placeholder="閫夐」鍊�"
                   class="fce-option-value"
-                  :disabled="isFieldLocked(field)"
+                  :disabled="isFieldDisabled(field)"
                   @input="emitOut"
                 />
                 <el-button
                   type="danger"
                   link
                   :icon="Delete"
-                  :disabled="isFieldLocked(field) || field.options.length <= 1"
+                  :disabled="isFieldDisabled(field) || field.options.length <= 1"
                   @click="removeOption(field, oi)"
                 />
               </div>
@@ -382,6 +383,8 @@
   disableImport: { type: Boolean, default: false },
   /** 绯荤粺鍐呯疆妯℃澘缂栬緫鏃讹紝鎵撳紑寮圭獥鍗冲瓨鍦ㄧ殑濉姤椤� _uid锛屼笉鍙敼鍒� */
   lockedFieldUids: { type: Array, default: () => [] },
+  /** 鍙锛氭暣浣撲笉鍙紪杈� */
+  readonly: { type: Boolean, default: false },
 });
 
 const emit = defineEmits(["update:modelValue"]);
@@ -401,6 +404,10 @@
   return field?._uid != null && lockedUidSet.value.has(field._uid);
 }
 
+function isFieldDisabled(field) {
+  return props.readonly || isFieldLocked(field);
+}
+
 function typeLabel(type) {
   return formFieldTypeLabel(type);
 }

--
Gitblit v1.9.3