1.0.4 • Published 4 years ago

vue-como-form v1.0.4

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

vue-como-form

  • 基于element ui的中后台表单组件,增加了的element ui的表单功能,功能强大,灵活、快捷

组件安装

npm install vue-como-form

组件引入

//在main.js中引入

import vueComoForm from 'vue-como-form';
import 'vue-como-form/vue-como-form.css';
Vue.use(vueComoForm);

组件效果

alt 效果图

使用示例

<template>
	<div class="add-form">
		<vue-como-form :config="formConfig" :attr="{labelWidth:'100px'}" @submit="onSubmit" ref="addForm">
		</vue-como-form>
	</div>
</template>
<script>

//依赖图片处理组件
import comoImage from 'vue-como-image';
//依赖编辑器组件

export default {
	name: 'add-form',
	components: {},
	data() {
		let that = this;
		return {
			formConfig:[
				[
					{type:'select',color:'#ff0000',label:'文章类型',value:1,name:'article_category',options:[
						{label:'分类一',selectvalue:1},{label:'<i class="el-icon-more-outline"></i> 测试分类',selectvalue:2}
					],span:8},
					{type:'input',color:'#ff0000',label:'文章标题',span:16,name:'title'},
				],
				{type:'textarea',label:'文章描述',attr:{rows:2},name:'article_desc'},
				[
					{type:'radio',label:'文章类型',value:0,name:'article_type',options:[
						{label:'<span style="color:#ff0000;">普通文章</span>',radiovalue:0},{label:'视频文章',radiovalue:1}
					],span:10,attr:{disabled:true}},
					{type:'number',label:'浏览数量',name:'article_views',span:7},
					{type:'input',label:'文章排序',span:7,name:'article_order'},
				],
				{type:'image',label:'轮播图片',placeholder:'请上传轮播图片',name:'article_image',attr:{
					httpRequest:that.handleUploadImage,showFileList:false,action:'',accept:'image/jpeg'
				}},
				{type:'file',label:'附件上传',name:'article_file',attr:{
					httpRequest:that.handleUploadFile}},
				[{type:'autocomplete',label:'审核意见',span:12,attr:{
						fetchSuggestions:that.fetchAuto
					},events:{select:that.selectHandler},name:'article_examine'},
				{type:'autocomplete',label:'审核意见1',span:12}],
				[
					{type:'checkbox',label:'文章标签',value:[1,2],options:[
						{label:'<span style="color:#02c367;">新闻</span>',checkvalue:1,disabled:true},{label:'娱乐',checkvalue:2},{label:'八卦',checkvalue:3}
					],span:12,name:'article_tags'},
					{type:'time',label:'定时时间',span:6,name:'article_time'},
					{type:'color',label:'标题颜色',span:6,name:'article_color'},
				],
				[
					{type:'switch',label:'是否显示',value:0,span:6,name:'is_show'},
					{type:'switch',label:'首页显示',value:1,name:'is_home',span:6},
					{type:'datetime',label:'发布时间',name:'create_time',span:12},
				],
				{type:'cascader',label:'三级联动',attr:{options:[]},name:'article_category_name'},
				{type:'editor',label:'文章内容',name:'content',upload:that.handleEditorUploadImage},
				{type:'hidden',label:'文章ID',value:123,name:'article_id'}
			]
		};
	},
	methods:{
		initialize:function() {
			let that = this;
		},
		/**
		 * [onSubmit 表单提交事件]
		 * @author    szjcomo
		 * @date   		2020-10-21
		 * @param  {[type]}     data [description]
		 * @return {[type]}          [description]
		 */
		onSubmit:function(data) {
			let that = this;
			console.log(data);
		},
		/**
		 * [fetchAuto 自动完成]
		 * @author    szjcomo
		 * @date   		2020-10-20
		 * @param  {[type]}     str      [description]
		 * @param  {Function}   callback [description]
		 * @return {[type]}              [description]
		 */
		fetchAuto:function(str,callback) {
			let search =  [
				{ "value": "三全鲜食(北新泾店)", "address": "长宁区新渔路144号" },
				{ "value": "Hot honey 首尔炸鸡(仙霞路)", "address": "上海市长宁区淞虹路661号" },
				{ "value": "新旺角茶餐厅", "address": "上海市普陀区真北路988号创邑金沙谷6号楼113" },
				{ "value": "泷千家(天山西路店)", "address": "天山西路438号" },
				{ "value": "胖仙女纸杯蛋糕(上海凌空店)", "address": "上海市长宁区金钟路968号1幢18号楼一层商铺18-101" },
				{ "value": "贡茶", "address": "上海市长宁区金钟路633号" },
				{ "value": "豪大大香鸡排超级奶爸", "address": "上海市嘉定区曹安公路曹安路1685号" },
				{ "value": "茶芝兰(奶茶,手抓饼)", "address": "上海市普陀区同普路1435号" },
				{ "value": "十二泷町", "address": "上海市北翟路1444弄81号B幢-107" },
				{ "value": "星移浓缩咖啡", "address": "上海市嘉定区新郁路817号" },
				{ "value": "阿姨奶茶/豪大大", "address": "嘉定区曹安路1611号" },
				{ "value": "新麦甜四季甜品炸鸡", "address": "嘉定区曹安公路2383弄55号" },
				{ "value": "Monica摩托主题咖啡店", "address": "嘉定区江桥镇曹安公路2409号1F,2383弄62号1F" },
				{ "value": "浮生若茶(凌空soho店)", "address": "上海长宁区金钟路968号9号楼地下一层" },
				{ "value": "NONO JUICE  鲜榨果汁", "address": "上海市长宁区天山西路119号" },
				{ "value": "CoCo都可(北新泾店)", "address": "上海市长宁区仙霞西路" },
				{ "value": "快乐柠檬(神州智慧店)", "address": "上海市长宁区天山西路567号1层R117号店铺" },
				{ "value": "Merci Paul cafe", "address": "上海市普陀区光复西路丹巴路28弄6号楼819" },
				{ "value": "猫山王(西郊百联店)", "address": "上海市长宁区仙霞西路88号第一层G05-F01-1-306" },
			];
			callback(search);
		},
		/**
		 * [handleEditorUploadImage 编辑器图片上传事件]
		 * @author    szjcomo
		 * @date   		2020-10-21
		 * @param  {[type]}     files    [description]
		 * @param  {Function}   callback [description]
		 * @return {[type]}              [description]
		 */
		handleEditorUploadImage:function(files,callback) {
			let that = this;
			files.forEach(async (file) => {
				let imageHandle = await comoImage.compress(file);
				callback(imageHandle.content);
			})
		},
		/**
		 * [handleUploadImage 图片上传功能]
		 * @author    szjcomo
		 * @date   		2020-10-21
		 * @param  {[type]}     params [description]
		 * @return {[type]}            [description]
		 */
		handleUploadImage:async function(params) {
			let that = this;
			let imageHandle = await comoImage.compress(params.file);
			params.data.value = imageHandle.content;
		},
		/**
		 * [handleUploadFile 执行文件上传]
		 * @author    szjcomo
		 * @date   		2020-10-21
		 * @param  {[type]}     params [description]
		 * @return {[type]}            [description]
		 */
		handleUploadFile:async function(params) {
			let that = this;
			let handle = await comoImage.file2Base64(params.file);
			params.data.value = handle;
		}
	},
	//此时,已经将编译好的模板,挂载到了页面指定的容器中显示
	mounted:function(){
		let that = this;
		that.initialize();
	},
}
</script>
<style scoped>
/*pass*/
</style>

组件说明

组件属性

属性名说明类型默认值
attrform属性Object详见 element ui 表单组件属性
config表单item项配置array详见示例

config 每一项参数说明

参数名说明类型是否必传
type组件类型 示例上都有,其它的没有string- Y
name键名称string- Y
label标签名称string- Y
span当config 每一项是数组时必传,否则不用传(宽度)int- Y
color标签颜色 (#666666)string- N
valuearray/string- N
attr各组件的具体属性,用什么组件请参考element ui组件属性object- N

组件事件

属性名说明参数
submit用户点击提交function(object)

组件方法

属性名说明参数
getFormData获取表单数据- object

更新记录

2020年10月21日

  • 首次完成表单组件的封装

2020年10月24日

  • 修复已知的bug

2020年10月26日

  • 增加下拦框、单选框、复选框的html渲染

2020年10月31日

  • el-select自动占满位置