1.0.5 • Published 2 years ago

zhongan-ui v1.0.5

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

zhongan-ui

介绍

  • 封装ant-design-vue 的form表单, 配置参数即可便捷的在页面展示表单。

  • 内部需要使用ant-design-vue组件库,故项目中使用此包需要在antd组件库,全局完整注册组件,注册所有icon组件。如使用中写法

环境

  • Vu3^3.2.13
  • ant-design-vue^3.2.9

使用

npm i ant-design-vue
npm i zhongan-ui

// main.js文件
import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/antd.css'
import * as Icons from "@ant-design/icons-vue"
import ZhongAnUI from 'zhongan-ui'

const app = createApp(App)
app.use(Antd)
app.use(ZhongAnUI)
for (const i in Icons) {
  app.component(i, Icons[i])
}

案例

​ 直接使用za-form, 配置formSrting对象

// xxx.vue文件
<template>
  <za-form :formSetting="data.formSetting"/>
</template>

<script>
import { reactive } from 'vue'
export default {
  setup() {
    const data = reactive({
      formSetting: {
        layout: "span",
        gutter: 20,
        attributes:{
          model: {},
		},
        formItems: [
          {
            type: 'input',
            span: 6,
            allowClear: true,
            placeholder: '请输入文件标识',
          },
          {
            type: 'select',
            span: 6,
            placeholder: '请输入分发方',
            showSearch: true,
            allowClear: true,
            filterOption: false,
            options: []
          },
          {
            type: 'button',
            label: '重置',
            span: 2,
          },
        ]
      }
    })
    return {
      data
    }
  }

}
</script>

API

formSetting

  • 支持所有antd组件库form属性、方法及事件,以下buttons和formItems是新增的可配置项。

  • 配置layout可配置布局格式,layout属性值除了antd自带的horizontal、vertical、inline,还可配置值为span和flex。span和flex布局对应antd的栅格布局中span和flex

  • 兼容antd组件库中所有form方法

  • 设置formSetting,如设置事件、属性

     formSetting: {
         layout: "grid",
         gutter: 20,
         attributes:{
              autocomplete: 'off',
    	}
        events:{
            onFinish: handleFinish,
    		}
        formItems: [....]
     }
参数说明试例
layout'horizontal'、'vertical'、'inline'、‘grid'不设置时,同antd默认值
gutter当layout为'grid'时,用于设置间距{ gutter: 24 }
attributesa-form表单属性
eventsa-form表单事件
formItemsa-form-item的配置

formSetting.formItems

  • formItems是数组, 数组每一项为对象,type值必填

  • 配置按钮时,设置type为button。 按钮中的文字配置label

     {
         type: 'button',
         attributes: {
         	label: '重置',
            icon: <sync-outlined />,
          },
         events: {
           	onClick: handleResetForm
         }
    }
  • 兼容antd组件input、select、button等表单项配置
参数说明试例
type(必填)类型,如input, select、button等,必须是在antd 中存在的{ type: 'select' }
isShow是否显示,默认值为true,为false时不显示{ isShow: false }
flexgrid布局下生效{ layout: 'grid', formItems: {...., flex: 6 } }
spangrid布局下生效{ layout: 'grid', formItems: {...., span: 6 } }
事件对应antd中事件,注册事件以驼峰名称{ onSearch: ()=> {do somethings} }
attributes属性, 如type为input,则可配置a-input的所有属性
events事件

获取数据

​ 前提: formItem中想要获取的数据,设置name属性

​ 1、如果有设置model,则可直接获取

// xxx.vue文件
<template>
  <za-form :formSetting="data.formSetting"/>
</template>

<script>
import { reactive } from 'vue'
export default {
  setup() {
    const data = reactive({
      formSetting: {
        attributes:{
          model: {},
		},
      formItems: [
          {
            type: 'input',
            name: 'fileName',
            attributes: {
              allowClear: true,
              placeholder: '输入文件名称',
            }
          }
		]
      }
    })

  function getData() {
      console.log(data.formSetting.attributes.model.fileName )
  }

​ 2、通过ref获取组件的model属性

// xxx.vue文件
<template>
  <za-form :formSetting="data.formSetting" ref="formRef"/>
</template>
<script>
import { reactive,ref } from 'vue'
export default {
	setup() {
    	const formRef = ref(null)
        const data = reactive({
      		formSetting: {
                ......
            }
  		function getData() {
            formRef.value.model
      		console.log(formRef.value.model )
  		}
		return {
          data
          formRef
	  	}
  }

​ 3、ant-design中方法,如事件onFinsh,通过ref调用valida方法等

注意点

  • 配置formSetting时,注意变量作用域,否则报错未声明就已使用
  • formItems里每一项的type必填,不填,当前项不显示
  • 配置项数据绑定的是响应式的,数据改变页面不会生效重新渲染。需要直接设置具体配置

​ 以select获取下拉项数据为例

错误代码

mport { reactive, computed } from 'vue'
const data = reactive({
	selectData: []
    formSetting: {
        formItems: [
            {
                type: 'select',
                name: 'status',
                showSearch: true,
                onSearch: val => handleSearch(val)
                options: computed(()=>{
                	return data.selectData.map(item => {
                		return {
                		...item,
                		...{ lable: item.xx, value: item.xx }
                		}
					})
				})
            }
        ]
    }
})
function handleSearch(val) {
	const dataList = xxx 发请求获取
	data.selectData = dataList
}

正确代码

const data = reactive({
	selectData: []
    formSetting: {
        formItems: [
            {
                ...
                onSearch: val => handleSearch(val)
                options: []
            }
        ]
    }
})
function handleSearch(val) {
	const dataList = xxx 发请求获取
	data.formSetting.formItems[下标].options = dataList
}
1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago