Merge branch 'master' of https://gitee.com/youlaiorg/vue3-element-admin
This commit is contained in:
@@ -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,60 +67,60 @@
|
|||||||
<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-row :gutter="20">
|
<el-scrollbar max-height="70vh" :view-style="{ overflowX: 'hidden' }">
|
||||||
<template v-for="item in formItems" :key="item.prop">
|
<el-row :gutter="20">
|
||||||
<el-col v-show="!item.hidden" v-bind="item.col">
|
<template v-for="item in formItems" :key="item.prop">
|
||||||
<el-form-item :label="item.label" :prop="item.prop">
|
<el-col v-show="!item.hidden" v-bind="item.col">
|
||||||
<!-- Label -->
|
<el-form-item :label="item.label" :prop="item.prop">
|
||||||
<template #label>
|
<template #label>
|
||||||
<span>
|
<span>
|
||||||
{{ item?.label || "" }}
|
{{ item?.label || "" }}
|
||||||
<el-tooltip v-if="item?.tips" v-bind="getTooltipProps(item.tips)">
|
<el-tooltip v-if="item?.tips" v-bind="getTooltipProps(item.tips)">
|
||||||
<QuestionFilled class="w-4 h-4 mx-1" />
|
<QuestionFilled class="w-4 h-4 mx-1" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<span v-if="modalConfig.colon" class="ml-0.5">:</span>
|
<span v-if="modalConfig.colon" class="ml-0.5">:</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
|
||||||
|
|
||||||
<!-- components -->
|
|
||||||
<template v-if="item.type === 'custom'">
|
|
||||||
<slot
|
|
||||||
:name="item.slotName ?? item.prop"
|
|
||||||
:prop="item.prop"
|
|
||||||
:form-data="formData"
|
|
||||||
:attrs="item.attrs"
|
|
||||||
></slot>
|
|
||||||
</template>
|
|
||||||
<component
|
|
||||||
:is="componentMap.get(item.type)"
|
|
||||||
v-else
|
|
||||||
v-model.trim="formData[item.prop]"
|
|
||||||
v-bind="{ style: { width: '100%' }, ...item.attrs }"
|
|
||||||
>
|
|
||||||
<template v-if="['select', 'radio', 'checkbox'].includes(item.type)">
|
|
||||||
<component
|
|
||||||
:is="childrenMap.get(item.type)"
|
|
||||||
v-for="opt in item.options"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value"
|
|
||||||
></component>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="item?.slotName && $slots[item.slotName]" #[item.slotName]>
|
<template v-if="item.type === 'custom'">
|
||||||
<slot :name="item.slotName" />
|
<slot
|
||||||
|
:name="item.slotName ?? item.prop"
|
||||||
|
:prop="item.prop"
|
||||||
|
:form-data="formData"
|
||||||
|
:attrs="item.attrs"
|
||||||
|
></slot>
|
||||||
</template>
|
</template>
|
||||||
</component>
|
<component
|
||||||
</el-form-item>
|
:is="componentMap.get(item.type)"
|
||||||
</el-col>
|
v-else
|
||||||
</template>
|
v-model.trim="formData[item.prop]"
|
||||||
</el-row>
|
v-bind="{ style: { width: '100%' }, ...item.attrs }"
|
||||||
|
>
|
||||||
|
<template v-if="['select', 'radio', 'checkbox'].includes(item.type)">
|
||||||
|
<component
|
||||||
|
:is="childrenMap.get(item.type)"
|
||||||
|
v-for="opt in item.options"
|
||||||
|
:label="opt.label"
|
||||||
|
:value="opt.value"
|
||||||
|
></component>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-if="item?.slotName && $slots[item.slotName]" #[item.slotName]>
|
||||||
|
<slot :name="item.slotName" />
|
||||||
|
</template>
|
||||||
|
</component>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</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); // 弹窗显示状态
|
||||||
|
|||||||
Reference in New Issue
Block a user