From 9fe04f4d9567a4de97f5f25d36557ab70b833782 Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期一, 15 九月 2025 08:37:38 +0800
Subject: [PATCH] 提交
---
src/views/components/formDialog.vue | 39 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/src/views/components/formDialog.vue b/src/views/components/formDialog.vue
index a92743c..3cb0e76 100644
--- a/src/views/components/formDialog.vue
+++ b/src/views/components/formDialog.vue
@@ -97,6 +97,22 @@
/>
</el-select>
+ <!-- 级联选择组件 -->
+ <el-cascader
+ v-else-if="item.type === 'cascader'"
+ v-model="state.formData[item.prop]"
+ :options="getCascaderOptions(item)"
+ :props="item.props || {}"
+ :placeholder="item.placeholder || '请选择'"
+ :disabled="state.title === '查看' || item.disabled"
+ :clearable="item.clearable !== false"
+ :filterable="item.filterable"
+ :show-all-levels="item.showAllLevels !== false"
+ :style="item.style || 'width: 100%'"
+ @change="item.changeEvent ? handleEvent(item.changeEvent, state.formData[item.prop]) : null"
+ />
+
+
<!-- 日期选择器组件 -->
<el-date-picker
v-else-if="item.type === 'date'"
@@ -279,6 +295,27 @@
return []
}
+const getCascaderOptions = (item) => {
+ if (!item.options) return []
+
+ // 如果是函数,执行函数获取选项
+ if (typeof item.options === 'function') {
+ return item.options()
+ }
+
+ // 如果是数组,直接返回
+ if (Array.isArray(item.options)) {
+ return item.options
+ }
+
+ // 如果是响应式引用
+ if (item.options && typeof item.options === 'object' && 'value' in item.options) {
+ return item.options.value
+ }
+
+ return []
+}
+
// 文件上传前的校验
const beforeUpload = (rawFile, item) => {
const maxSize = item.maxSize || 5
@@ -341,7 +378,7 @@
if (userItem) {
userItem.options = () => userList.map(user => ({
value: user.userId,
- label: user.userName
+ label: user.nickName
}))
state.formData.reformUserId = null
await nextTick()
--
Gitblit v1.9.2