因为项目需要,需要开发类似大屏设计器的内容,所以开始考虑开发大屏设计器。
一、数据库设计
1、主要先考虑数据源类型,可以根据需要进行增加,包括mysql,oracle,http等。
DROP TABLE IF EXISTS `bs_source_type`;
CREATE TABLE `bs_source_type` (
`id` varchar(36) NOT NULL COMMENT 'id',
`code` varchar(32) DEFAULT NULL COMMENT '编码',
`name` varchar(32) DEFAULT NULL COMMENT '名称',
`json_value` text COMMENT 'json值',
`status` int(11) DEFAULT NULL COMMENT '状态',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) DEFAULT NULL COMMENT '所属部门',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2、 数据源表,保存用实际需要的数据源,同时可以进行测试。
DROP TABLE IF EXISTS `bs_data_source`;
CREATE TABLE `bs_data_source` (
`id` varchar(36) NOT NULL COMMENT 'id',
`code` varchar(100) DEFAULT NULL COMMENT '数据源编码',
`name` varchar(100) DEFAULT NULL COMMENT '数据源名称',
`type` varchar(10) DEFAULT NULL COMMENT '数据源类型',
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) DEFAULT NULL COMMENT '所属部门',
`config` text COMMENT '数据源配置',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `bs_data_source_code_uni` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
二、online表单设计
因为上面的数据都需要录入等维护,所以通过online设计表单实现
因为大盘设计作为单独的模块表单,所以在数据字典增加一个类型大盘表单
1、bs_source_type表单按照正常的新建一个就可以,如下:
生成代码也不需要做什么调整,应该直接 就可以用了。
2、bs_data_source表单如下:
这个主要是用到第一个表的type类型,所以需要进行关联,生成的前后端代码也要做一些调整。
2.1 前端代码
首先数据源类型这里需要增加一个onchange事件,以便选择变化的时候进行取值,获取type数据源类型后再把json值取出来
onchange(val) {const that = this;console.log("onchange val=",val);this.sourceForm.sourceType = val;let url = this.url.queryByCode, method = 'get';let params = {code: val};getAction(url,params).then((res)=>{if(res.success){//that.$message.success(res.message);console.log("onchange res=",res);that.dataLink = JSON.parse(res.result.jsonValue);console.log("onchange that.dataLink=",that.dataLink);}else{that.$message.warning(res.message);}}).finally(() => {that.confirmLoading = false;})},
同时根据这个值进行动态显示相应的类型内容
测试
显示出来后进行相应的数据源测试
// 测试dataSourceTest() {const newList = {};this.dataLink.forEach(item => {newList[item.label] = item.value;});this.sourceForm.sourceConfig = JSON.stringify(newList);testConnection(this.sourceForm).then(res => {console.log("testConnection res=",res);if (res.code == "200") {this.testReplyCode = res.code;this.$message.success(res.result);} else {this.$message.error(res.result);this.testReplyCode = null;}});},
后端部分修改下个章节介绍
三、效果如下:
3.1数据源类型
3.2 数据源编辑与测试