自动表单生成工具说明(后端、桌面、web、移动端)

13 篇文章 1 订阅
2 篇文章 0 订阅

功能描述:

  1. 使用模型编辑工具编辑模型,每个模型对应数据库一张表,内含多个字段。
  2. 从模型生成数据库(现支持sqlite)。
  3. 从模型生成golang微服务代码,并自动进行编译。
  4. 从模型生成winform dll项目,并可自动编译、拷贝dll到模型工具同目录下、生成模型工具菜单配置文件,重启模型即可看到新的表单菜单,打开对应表单,编辑数据。
  5. 从模型生成vue项目,并可自动安装依赖,启动开发测试环境,build发布程序。
  6. 从模型生成flutter项目表单,并可自动安装依赖,生成模型json序列化代码,build apk安装包

当前状况:

  1.  本工具目前是1.0版本,功能非常简单,后面有大量功能需要完善、扩展。
  2. 还有部分技术问题需要解决,为了快速出一个版本,暂时绕过,后续需要跟进。
  3. 代码已经上传github并开源(https://github.com/henreash/AutoCodeToolChain),希望有兴趣的同仁加入。
  4. angular的自动表单工具还没有开发,暂时延后。
  5. 为了简化,当前字段类型仅支持bool、string、number类型,后续增加对datetime、image类型的支持。
  6. 目前数据库仅支持sqlite的自动生成,需要扩展到MsSql、MySql、Oracle等主流数据库,也可引入mongodb...

一、模型编辑工具

点击模型编辑器界面的添加、修改、删除按钮,编辑模型,最后点击保存按钮,将模型保存到本地的json文件。

模型编辑界面如下图:

字段编辑界面如下图:

说明:在这个界面中指定字段名称、标题、类型、长度等信息,内容与数据库中相应概念一致。后面基于这些字段属性自动生成各种平台代码。

模型编辑完毕,在图一界面点击保存按钮,将模型存储在ModelDefine.json文件中。json格式如下所示:

{
	"ModelList": [{
		"ModelName": "UserTable",
		"Title": "用户信息",
		"FieldList": [{
			"FieldName": "Id",
			"Title": "编号",
			"IsPrimaryKey": true,
			"ForeignKey": {
				"IsForeignKey": false,
				"ModelName": null,
				"PrimaryKeyName": null
			},
			"Type": "integer",
			"Length": 0,
			"Precision": 0,
			"Scale": 0,
			"IsNullable": false
		}, {
			"FieldName": "Name",
			"Title": "姓名",
			"IsPrimaryKey": false,
			"ForeignKey": {
				"IsForeignKey": false,
				"ModelName": null,
				"PrimaryKeyName": null
			},
			"Type": "varchar",
			"Length": 20,
			"Precision": 0,
			"Scale": 0,
			"IsNullable": false
		}, {
			"FieldName": "Age",
			"Title": "年龄",
			"IsPrimaryKey": false,
			"ForeignKey": {
				"IsForeignKey": false,
				"ModelName": null,
				"PrimaryKeyName": null
			},
			"Type": "int",
			"Length": 0,
			"Precision": 0,
			"Scale": 0,
			"IsNullable": false
		}, {
			"FieldName": "Remark",
			"Title": "备注",
			"IsPrimaryKey": false,
			"ForeignKey": {
				"IsForeignKey": false,
				"ModelName": null,
				"PrimaryKeyName": null
			},
			"Type": "varchar",
			"Length": 200,
			"Precision": 0,
			"Scale": 0,
			"IsNullable": true
		}]
	}, {
		......
	}
		
	}]
}

二、生成golang微服务代码

在转换引擎菜单命令中,点击模型-Golang转换,打开如下图界面:

分别点击解压模板按钮、生成Main.go按钮、生成模型按钮、生成控制器按钮、编译按钮。将会自动生成Golang可执行微服务程序。如下图:

注意:如果编译失败,错误信息中将提示缺少依赖,请go get安装。

这时点击启动服务按钮,提示:

因为还没有生成数据库文件,这时运行自动生成的golang程序,会报错,因此需要生成sqlite数据库(见下一步),在启动服务。

三、创建sqlite数据库

在转换引擎菜单命令中,点击模型-数据库转换,打开如下图界面:

 点击生成脚本按钮,再点击创建Sqlite库,弹出对话框,直接点保存按钮,即可创建数据库(目录和文件名都不用改,程序已经自动做了默认设置)。再到第二步中的最后一小步,启动golang服务。

注意:在工具程序同目录下,有个SysConfig.json文件:

{
  "Application": {
    "Name": "模型工具",
    "Version": "1.0.0",
    "Culture": "zh-cn",
    "LogoPicFile": "pic/logo.png",
    "IconPicFile": "pic/app.icon"
  },
  "Server": {
    "ServerUrl": "http://94.191.85.82:8081"
  },
  "AutoGen": {
    "Devenv": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\devenv.com"
  }
}

 其中ServerUrl就是golang微服务的url地址,请把db文件及golang可执行程序拷贝到此服务器并启动。如下图:

四、自动生成Winform表单代码

在转换引擎菜单命令中,点击模型-Winform转换,打开如下图界面:

 

 分别点击上图界面的生成项目文件按钮、生成模型按钮、生成窗体按钮、编译dll按钮。在弹出的目录中找到build.bat,双击这个批处理文件,编译出dll:

编译成功后,按任意键关闭命令行界面。

继续点击拷贝dll按钮、生成菜单配置文件按钮,弹出提示框,重启工具后,可以启动自动生成的winform表单界面。

在工具同目录的Winform子目录下,可查看自动生成的winform代码,用vs2019打开既可查看、编辑、编译:

五、自动生成vue表单代码:

请安装好vue开发环境(nodejs、vue脚手架)。

在转换引擎菜单命令中,点击模型-Vue转换,打开如下图界面:

依次点击解压Vue模板按钮、生成路由按钮、生成View按钮、生成Restful Api按钮,界面如上图。

接着点击npm install按钮,生成批处理,双击启动后下载Vue依赖程序。

点击npm run dev按钮,编译服务并启动测试页面(由于测试过程需要跨域,请采用chrome浏览器(安装Access-Control-Allow-Origin插件)) :

在chrome浏览器打开http://localhost:8080地址:

 点击npm build按钮,打开目录,找到npm_run_build.bat文件,双击启动build过程。build后生成dist目录。

注意:生成发布文件后,在dist目录,打开index.html文件,需将css、js引用目录进行手动调整(build指定的目录有误)。

至此,vue自动生成代码结束。可在工具同目录下找到Vue子目录,使用vs code打开查看、编辑代码。

 六、自动生成flutter表单代码

请安装好flutter开发环境(flutter环境、android studio及插件)。

在转换引擎菜单命令中,点击模型-flutter转换,打开如下图界面:

分别点击解压Flutter模板按钮、生成main.dart按钮、生成Model按钮、生成Page按钮,如上图。

代码生成完毕后,点击flutter pub get按钮,生成flutter_pub_get.bat批处理文件,双击后下载依赖包:

接着点击生成json序列号辅助类按钮,生成json序列号支持代码:

最后,点击flutter build apk按钮,编译安卓apk安装包:

build完毕后,生成apk安装包,安装到安卓手机即可。

安卓运行界面如下图:

 

打开页面默认显示前20条记录,向上滑动到底部,自动加载下一页。向左滑动记录,显示编辑、删除操作按钮。新建、刷新按钮在页面标题栏。

 

页面没有做美化,后续完成...

在工具程序同目录下,找到flutter子目录,使用android studio查看、编译代码。

 

 

 

 

 

FillForm功能概要描述及与普通填表扩展autofill forms的比较: * 通过一个快捷键(Alt + Q)就可以填写当前网页内容。 * 通过一个快捷键(Alt + W)就可以保存当前网页内容,这是autofill forms所没有的功能。 * 对于已经保存的数据都是做了一些加密的,别人是无法轻易看到得到里面的信息的。例如用户名、密码等。这是autofill forms一直存在的缺陷。 * 对于表单,可以填写除了input标签之外的所有可填写的标签。例如textarea,select。(文本框、超文本框、下拉列表框、复选框、单选框)。 * 可以填写非表单的标签。例如有些标签并没有放在表单内我们的fillform也可以处理,而autofill forms是无法处理表单之外的标签的。 * 可以使用历史数据对未保存过信息的网址进行填写。有时一个相同的网页有着不同的网址,fillform只要保存一次就可以都填写了。 * 如果使用历史数据填写,则都是使用最新的数据进行填写。例如很多文本框的name标签都叫username,历史记录中可能保存了很多 username的值,这时如果再遇到name为username的文本框则会直接使用最近保存的一次的值进行填写。通过保存操作用户可以调整控制“默认值”。autofill forms是弹出个对话框让用户选择的,比较麻烦。 * 有效的减少了一些冲突,智能化处理的很多东西,大大降低用户的手工操作。例如几个文本框的name属性都叫“username”,在 fillform中可以自动编排处理,无须用户手工选择,这在autofill forms中需要手工确认information 的。 * 此插件虽然小但功能却是强大的,而且使用方法很简单,占用系统资源也很小。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值