This commit is contained in:
Ray.Hao
2025-05-20 23:17:36 +08:00

View File

@@ -7,7 +7,6 @@
v-bind="{ destroyOnClose: true, ...modalConfig.drawer }" v-bind="{ destroyOnClose: true, ...modalConfig.drawer }"
@close="handleClose" @close="handleClose"
> >
<!-- 表单 -->
<el-form ref="formRef" v-bind="modalConfig.form" :model="formData" :rules="formRules"> <el-form ref="formRef" v-bind="modalConfig.form" :model="formData" :rules="formRules">
<el-row :gutter="20"> <el-row :gutter="20">
<template v-for="item in formItems" :key="item.prop"> <template v-for="item in formItems" :key="item.prop">
@@ -57,7 +56,7 @@
</template> </template>
</el-row> </el-row>
</el-form> </el-form>
<!-- 弹窗底部操作按钮 -->
<template #footer> <template #footer>
<el-button v-if="!formDisable" type="primary" @click="handleSubmit"> </el-button> <el-button v-if="!formDisable" type="primary" @click="handleSubmit"> </el-button>
<el-button @click="handleClose">{{ !formDisable ? " " : "关闭" }}</el-button> <el-button @click="handleClose">{{ !formDisable ? " " : "关闭" }}</el-button>
@@ -68,16 +67,15 @@
<template v-else> <template v-else>
<el-dialog <el-dialog
v-model="modalVisible" v-model="modalVisible"
v-bind="{ destroyOnClose: true, ...modalConfig.dialog }" v-bind="{ destroyOnClose: true, alignCenter: true, ...modalConfig.dialog }"
@close="handleClose" @close="handleClose"
> >
<!-- 表单 -->
<el-form ref="formRef" v-bind="modalConfig.form" :model="formData" :rules="formRules"> <el-form ref="formRef" v-bind="modalConfig.form" :model="formData" :rules="formRules">
<el-scrollbar max-height="70vh" :view-style="{ overflowX: 'hidden' }">
<el-row :gutter="20"> <el-row :gutter="20">
<template v-for="item in formItems" :key="item.prop"> <template v-for="item in formItems" :key="item.prop">
<el-col v-show="!item.hidden" v-bind="item.col"> <el-col v-show="!item.hidden" v-bind="item.col">
<el-form-item :label="item.label" :prop="item.prop"> <el-form-item :label="item.label" :prop="item.prop">
<!-- Label -->
<template #label> <template #label>
<span> <span>
{{ item?.label || "" }} {{ item?.label || "" }}
@@ -88,7 +86,6 @@
</span> </span>
</template> </template>
<!-- components -->
<template v-if="item.type === 'custom'"> <template v-if="item.type === 'custom'">
<slot <slot
:name="item.slotName ?? item.prop" :name="item.slotName ?? item.prop"
@@ -120,8 +117,10 @@
</el-col> </el-col>
</template> </template>
</el-row> </el-row>
<slot name="bottom" :form-data="formData"></slot>
</el-scrollbar>
</el-form> </el-form>
<!-- 弹窗底部操作按钮 -->
<template #footer> <template #footer>
<el-button v-if="!formDisable" type="primary" @click="handleSubmit"> </el-button> <el-button v-if="!formDisable" type="primary" @click="handleSubmit"> </el-button>
<el-button @click="handleClose">{{ !formDisable ? " " : "关闭" }}</el-button> <el-button @click="handleClose">{{ !formDisable ? " " : "关闭" }}</el-button>
@@ -144,7 +143,7 @@ const props = defineProps<{ modalConfig: IModalConfig }>();
// 自定义事件 // 自定义事件
const emit = defineEmits<{ submitClick: []; customSubmit: [queryParams: IObject] }>(); const emit = defineEmits<{ submitClick: []; customSubmit: [queryParams: IObject] }>();
// 组件映射表 // 组件映射表
/* eslint-disable */
const componentMap = new Map<IComponentType, any>([ const componentMap = new Map<IComponentType, any>([
// @ts-ignore // @ts-ignore
["input", markRaw(ElInput)], // @ts-ignore ["input", markRaw(ElInput)], // @ts-ignore
@@ -170,7 +169,6 @@ const childrenMap = new Map<IComponentType, any>([
["radio", markRaw(ElRadio)], // @ts-ignore" ["radio", markRaw(ElRadio)], // @ts-ignore"
["checkbox", markRaw(ElCheckbox)], ["checkbox", markRaw(ElCheckbox)],
]); ]);
/* eslint-enable */
const pk = props.modalConfig.pk ?? "id"; // 主键名,用于表单数据处理 const pk = props.modalConfig.pk ?? "id"; // 主键名,用于表单数据处理
const modalVisible = ref(false); // 弹窗显示状态 const modalVisible = ref(false); // 弹窗显示状态