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