From 1daa22ed05c77e4a8c3069124a1849d5d6504f69 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 30 七月 2026 17:57:00 +0800
Subject: [PATCH] 修改报工审批数据显示
---
src/views/officeProcessAutomation/ApproveManage/approve-list/components/FormPayloadFields.vue | 50 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/FormPayloadFields.vue b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/FormPayloadFields.vue
index 6cdc627..9d95a8b 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/FormPayloadFields.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/FormPayloadFields.vue
@@ -17,18 +17,24 @@
</el-descriptions-item>
</el-descriptions>
- <el-form v-else label-width="120px" class="form-payload-edit">
+ <div
+ v-else
+ class="form-payload-edit"
+ v-loading="optionSourceLoading"
+ >
<el-form-item
v-for="field in fields"
:key="field.key"
:label="field.label"
:prop="`formPayload.${field.key}`"
+ :required="Boolean(field.required)"
>
<el-input
v-if="field.type === 'text'"
v-model="formPayload[field.key]"
:placeholder="`璇疯緭鍏�${field.label}`"
maxlength="200"
+ :disabled="Boolean(field.disabled)"
/>
<el-input
v-else-if="field.type === 'textarea'"
@@ -38,6 +44,7 @@
:placeholder="`璇峰~鍐�${field.label}`"
maxlength="2000"
show-word-limit
+ :disabled="Boolean(field.disabled)"
/>
<el-input-number
v-else-if="field.type === 'number'"
@@ -46,6 +53,7 @@
:precision="field.precision ?? 0"
controls-position="right"
style="width: 100%"
+ :disabled="Boolean(field.disabled)"
/>
<el-date-picker
v-else-if="field.type === 'date'"
@@ -55,6 +63,7 @@
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%"
+ :disabled="Boolean(field.disabled)"
/>
<el-date-picker
v-else-if="field.type === 'datetimerange'"
@@ -66,6 +75,7 @@
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 100%"
+ :disabled="Boolean(field.disabled)"
/>
<el-select
v-else-if="field.type === 'select'"
@@ -73,17 +83,26 @@
:placeholder="`璇烽�夋嫨${field.label}`"
style="width: 100%"
clearable
+ filterable
+ :disabled="Boolean(field.disabled)"
>
- <el-option v-for="o in field.options" :key="o.value" :label="o.label" :value="o.value" />
+ <el-option
+ v-for="o in getOptions(field)"
+ :key="String(o.value)"
+ :label="o.label"
+ :value="o.value"
+ />
</el-select>
<span v-else class="field-value">{{ displayValue(field) }}</span>
</el-form-item>
- </el-form>
+ </div>
</template>
<el-empty v-else description="鏆傛棤濉姤椤�" :image-size="48" />
</template>
<script setup>
+import { onMounted, watch } from "vue";
+import { useSelectOptionSources } from "../../approve-template/useSelectOptionSources.js";
import { formatFieldDisplayValue } from "../approveListConstants.js";
const props = defineProps({
@@ -92,8 +111,31 @@
readonly: { type: Boolean, default: false },
});
+const { loading: optionSourceLoading, ensureForFields, getOptions, getDisplayLabel } =
+ useSelectOptionSources();
+
+async function loadOptionCaches() {
+ await ensureForFields(props.fields);
+}
+
+onMounted(() => {
+ loadOptionCaches();
+});
+
+watch(
+ () => props.fields,
+ () => {
+ loadOptionCaches();
+ },
+ { deep: true }
+);
+
function displayValue(field) {
- return formatFieldDisplayValue(field, props.formPayload?.[field.key]);
+ const val = props.formPayload?.[field.key];
+ if (field.type === "select" && field.optionSource && field.optionSource !== "static") {
+ return getDisplayLabel(field, val);
+ }
+ return formatFieldDisplayValue(field, val);
}
</script>
--
Gitblit v1.9.3