当前位置:   article > 正文

vue3.0使用form-create动态生成表单_formcreate vue3

formcreate vue3

安装

根据自己使用的 UI 安装对应的版本

//element-plus 版本
npm i @form-create/element-ui@next
//ant-design-vue@3.0 版本
npm i @form-create/ant-design-vue@next
  • 1
  • 2
  • 3
  • 4

快速上手

本文以element-ui为例

import ElementUI from 'element-plus/es/index'
import 'element-plus/dist/index.css'
import formCreate from '@form-create/element-ui'

app.use(ElementUI)
app.use(FormCreate)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例

<!--
 * @Author: oneMiu
 * @Date: 2022-05-17 14:33:56
 * @LastEditors: oneMiu
 * @LastEditTime: 2022-05-18 11:30:03
 * @Desc: 
-->

<template>
	<section>
		<FormCreate v-model="fApi" :rule="rule" :option="option" />
	</section>
</template>
<script lang="ts">
	import {
		defineComponent,
		ref,
		onMounted
	} from "vue";
	export default defineComponent({
		name: "FormCreateFoarmat",
		peops:["formJson"],
		setup(props,{emit}) {
			let fApi = ref({})
			console.log(props.formJson)
			let rule = ref([{
					"type": "select", // 生成组件的名称(就是表单的名称:如input,radio,checkbox,select,slider等)
					"field": "s705v90rbcg3", // 表单组件的字段名称(就是表单的name属性,注:该必须唯一),自定义组件可以不配置
					"title": "请假类型", // 组件的名称, 选填
					"info": "", //提示信息
					"effect": {
						"fetch": ""
					},
					"props": {
						// input的表单类型 <input type="">:注:有些表单类型form-create和element-ui专门做成了组件,可以在上面的type中直接用,所以下面有些类型如(radio)在这里会无效哦!!

						// text	默认。定义单行输入字段,用户可在其中输入文本。默认是 20 个字符。
						// button	定义可点击的按钮(大多与 JavaScript 使用来启动脚本)
						// checkbox	定义复选框。
						// color	定义拾色器。
						// date	定义日期字段(带有 calendar 控件)
						// datetime	定义日期字段(带有 calendar 和 time 控件)
						// datetime-local	定义日期字段(带有 calendar 和 time 控件)
						// month	定义日期字段的月(带有 calendar 控件)
						// week	定义日期字段的周(带有 calendar 控件)
						// time	定义日期字段的时、分、秒(带有 time 控件)
						// email	定义用于 e-mail 地址的文本字段
						// file	定义输入字段和 "浏览..." 按钮,供文件上传
						// hidden	定义隐藏输入字段
						// image	定义图像作为提交按钮
						// number	定义带有 spinner 控件的数字字段
						// password	定义密码字段。字段中的字符会被遮蔽。
						// radio	定义单选按钮。
						// range	定义带有 slider 控件的数字字段。
						// reset	定义重置按钮。重置按钮会将所有表单字段重置为初始值。
						// search	定义用于搜索的文本字段。
						// submit	定义提交按钮。提交按钮向服务器发送数据。
						// tel	定义用于电话号码的文本字段。
						// url	定义用于 URL 的文本字段。
						"clearable": true
					},
					"options": [{
							"value": "1",
							"label": "事假"
						},
						{
							"value": "2",
							"label": "调休"
						},
						{
							"label": "病假",
							"value": "3"
						},
						{
							"label": "年假",
							"value": "4"
						},
						{
							"label": "产假",
							"value": "5"
						},
						{
							"label": "陪产假",
							"value": "6"
						},
						{
							"label": "婚嫁",
							"value": "7"
						},
						{
							"label": "例假",
							"value": "8"
						},
						{
							"label": "丧假",
							"value": "9"
						},
						{
							"label": "哺乳假",
							"value": "10"
						}
					],
					"_fc_drag_tag": "select",
					"hidden": false,
					"display": true,
					"$required": ""
				},
				{
					"type": "datePicker",
					"field": "7su1moi7tfy8o",
					"title": "开始时间",
					"info": "",
					"props": {
						"type": "datetime",
						"placeholder": "请选择开始时间"
					},
					"_fc_drag_tag": "datePicker",
					"hidden": false,
					"display": true,
					"$required": "请选择开始时间"
				},
				{
					"type": "datePicker",
					"field": "3wm1moi7vuyvt",
					"title": "结束时间",
					"info": "",
					"props": {
						"type": "datetime",
						"placeholder": "请选择结束时间"
					},
					"_fc_drag_tag": "datePicker",
					"hidden": false,
					"display": true,
					"$required": "请选择结束时间"
				},
				{
					"type": "input",
					"field": "dyg1moi7xxx16",
					"title": "时长(小时)",
					"info": "",
					"props": {
						"type": "number",
						"placeholder": "请输入时长",
						"readonly": true
					},
					"_fc_drag_tag": "input",
					"hidden": false,
					"display": true,
					"$required": "请输入时长"
				},
				{
					"type": "input",
					"field": "3qs1moi80lnhh",
					"title": "请假事由",
					"info": "",
					"props": {
						"type": "textarea",
						"placeholder": "请输入请假事由",
						"rows": 3
					},
					"_fc_drag_tag": "input",
					"hidden": false,
					"display": true,
					"$required": ""
				}
			])
			let option = ref({
				// 显示重置表单按扭
				resetBtn: true,

				// 表单提交按扭事件
				onSubmit: formData => {
					// alert(JSON.stringify(formData));

					// console.log("获取表单中的数据:", formData);
					emit('submitForm', formData)
					//按钮进入提交状态
					//   this.fApi.btn.loading();

					//重置按钮禁用
					//   this.fApi.resetBtn.disabled();

					//按钮进入可点击状态
					//   this.fApi.btn.finish();
				}
			})
			//获取Form表单 model对象
			function getFormModelFn() {
				console.log("Form表单 model对象:", this.fApi.model());
			}

			function getUserNameChange(e) {
				this.$nextTick(() => {
					this.rule[2].value = this.rule[0].value;
				});
				console.log(this.fApi.getValue("userName"));
			}
			onMounted(() => {

			});
			return {
				option,
				getFormModelFn,
				rule,
				fApi
			};
		},
	});
</script>
<style lang="less" scoped>
	.el-form {
		padding: 20px 30px 20px 0;
		width: 100vw;
		height: 500px;
		overflow-y: scroll;
		height: calc(100vh - 100px);
		background-color: #fff;
	}
</style>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/797306
推荐阅读
相关标签
  

闽ICP备14008679号