因为在项目中经常开发一些报表,并且业务、逻辑其实都有大部分的重复部分。
所以将这些常用的模块抽象出来、并且可视化操作。封装成一款报表开发工具。
先看一下项目的一些效果:数据单项绑定
可视化操作:
数据联动:
使用技术:vue全家桶
项目结构:
│ App.vue #主要组件│ main.js│├─assets│ logo.png│├─axios #网络,用于执行远程计算机上的sql,或者接口、实现数据绘制到页面上│ http.js│├─components│ │ Canvas.vue #基础画布组件│ │ ComSougnBaseAssemblyCheckbox.vue #基础组件│ │ ComSougnBaseAssemblyDatePicker.vue #基础组件│ │ ComSougnBaseAssemblyDateTimePicker.vue #基础组件│ │ ComSougnBaseAssemblyFont.vue #基础组件│ │ ComSougnBaseAssemblyInputText.vue #基础组件│ │ ComSougnBaseAssemblyLine.vue #基础组件│ │ ComSougnBaseAssemblyRadio.vue #基础组件│ │ ComSougnBaseAssemblySelect.vue #基础组件│ │ ComSougnBaseAssemblySlider.vue #基础组件│ │ ComSougnBaseAssemblySwitch.vue #基础组件│ │ ComSougnBaseAssemblyTimePicker.vue #基础组件│ │ ComSougnBaseAssemblyTimeSelect.vue #基础组件│ │ ComSougnBaseBi.vue #可视化操作主要实现的组件,使用遍历,绘制所有组件│ │ ComSougnBaseLayoutCenter.vue #基础布局组件│ │ ComSougnBaseLayoutRow.vue #基础布局组件│ │ Config.vue #基础组件│ ││ └─mixins #无用│ GetValue.js │├─router│ index.js #无用│└─store #无用 │ index.js │ └─stage canvas.js #画布,保存所有组件的布局,以及样式、配置选项 data.js #数据,保存数据源 type.js #组件可以配置的样式
实现算法:
树的广度优先遍历,依据画布中保存的组件布局,来重绘所需要的组件。并寻找依据的配置选项和数据源实现联动
联动实现:
vuex,每次修改配置,以及数据源时。对整个vuex中的数据强制更新指针。实现联动。
github:bug??
https://github.com/ututuut/bi.git