antd-form-modal-pro
v1.0.50
Published
1. ### 源码:https://github.com/coderjcy/AntdFormModalPro 2. ### 属性(因为组件中最外层为 a-model,可以直接在组件上设置原生 a-model 的属性)
Maintainers
Readme
源码:https://github.com/coderjcy/AntdFormModalPro
属性(因为组件中最外层为 a-model,可以直接在组件上设置原生 a-model 的属性)
| 属性名 | 描述 | 类型 | 默认 | 必传 | | :-------------------- | :------------------------------------------------ | :------------------------------------------------------------: | :----------: | :--: | | model-value / v-model | 是否展示 | boolean | | ✅ | | formItems | 表单列的配置描述,具体项见[下表] | IFormItem[] | | ✅ | | rules | 表单验证规则 | object | | | | span | 每个表单项所占据的份数(每行分为 24 份) | ISpan, (1~24) | 24 | | | labelWidth | label 标签的宽度 | string | 100px | | | minHeight | 表单的最小高度 | string | 300px | | | maxHeight | 表单的最大高度,超出最大高度变为滚动 | string | | | | dateValueFormat | 日期组件值的格式化规则 | string具体格式 | x | | | readonly | 表单是否只读 | boolean | false | | | title | 弹窗标题 | string |[string,string,string] | 表单 | | | confirmButtonText | 提交按钮的文字内容 | string | 保存 | | | cancellButtonText | 取消按钮的文字内容 | string | 取消 | | | data | 表单内容回显数据 | object | | | | submitCallback | 提交表单前的回调函数,函数返回 false 取消提交操作 | (formData) => boolean | | | | layout | 表单的排列方式 | "horizontal"|"vertical" | "horizontal" | |
formItems 属性
| 属性名 | 描述 | 类型 | 默认 | 必传 | | ------------ | ----------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ---- | :--- | | type | 表单项类型 | input、textarea、select、number、checkbox、radio、cascader、date、daterange、time、timerange、datetime、datetimerange、file、image 、coordinate、custom、custom-full | | ✅ | | prop | 属性字段 | string | | ✅ | | label | 表单项 label | string | | | | labelWidth | label 标签的宽度 | string | | | | required | 是否必须填写 | boolean | | | | span | 表单项占据的份数 | ISpan, (1~24) | | | | initialValue | 初始默认值 | any | | | | show | 控制该表单项是否展示的计算函数 | (formData: Ref) => boolean; | | | | attrs | 表单项上需要绑定的原生属性 | object | | | | events | 表单项需要监听的原生事件 | object | | | | pagination | type 为 select 时,传入该属性用于实现分页选择项的设置 | (keyword: string, page: number)=>Promise | | |
事件
| 事件名 | 说明 | 类型 | | ---------- | -------------------------------- | ------------------ | | submit | 提交表单并且关闭弹窗后的回调函数 | (formData) => void |
插槽
| 插槽名 | 说明 | | ---------- | -------- | | title | 表单标题 | | handle | 操作部分 |
实例属性(Exposes)
| 属性名 | 说明 | 类型 | | ---------- | ---------------------- | -------------- | | formData | 表单数据 | object | | formRef | 组件中的 a-form 的实例 | object | | create | 新增表单 | () => void | | update | 修改表单 | (data) => void | | Info | 查看表单 | (data) => void |
黑夜模式:通过在 body 元素上添加“dark”类启用
添加下列代码到 /src/components.d.ts 文件中(用于类型提示)
import type { AntdFormModal, IProps2 as _IProps, IFormItem as _IFormItems } from "antd-form-modal-pro";
declare module "vue" {
export interface GlobalComponents {
AntdFormModal: AntdFormModal;
}
}
declare global {
interface IProps extends _IProps {}
interface IFormItem extends _IFormItems {}
}
export {};tsconfig.json 文件中配置
{
"compilerOptions": {
"moduleResolution": "bundler"
}
}添加下列代码到 /src/main.ts 文件中
import { createApp } from "vue";
import App from "./App.vue";
import AntdFormModal from "antd-form-modal-pro";
import "antd-form-modal-pro/style.css";
createApp(App).use(AntdFormModal).mount("#app");示例
<template>
<div>
<antd-form-modal v-model="isShow" :formItems>
<template #test2="{formData,config}">
<input v-model="formData.test2" />
</template>
<template #test3="{formData,config}">
<div>123</div>
</template>
</antd-form-modal>
</div>
</template><script setup lang="ts">
import { ref } from "vue";
const isShow = ref(false);
const formItems = [
{
label: "测试show",
prop: "test",
type: "input",
},
{
label: "姓名",
prop: "12",
type: "select",
labelWidth: "100px",
show:(formData)=>{
return formData.value.test === 'pass'
}
attrs: {
placeholder: "请选择",
options: [
{ label: "a", value: "a" },
{ label: "b", value: "b" },
],
// 监听事件的第一种方法,会额外返回formData对象
"@change": (formData, ...args) => {
console.log("formData", formData);
console.log("args", args);
},
},
events: {
// 监听事件的第二种方法
change: (...args) => {
console.log("args", args);
},
},
},
{
type:'custom', //
label:'测试2',
prop:'test2', // 这里的prop作为插槽名
},
{
type:'custom-full', // 类型为custom-full时,label部分也会消失,该部分完全自定义,所以无需设置label属性
prop:'test3',
},
// ......
];
</script>