经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之动态表关系管理(六)
来源:cnblogs  作者:crudapi  时间:2021/4/6 10:09:52  对本文有异议

基于Vue和Quasar的前端SPA项目实战之表关系(六)

回顾

通过上一篇文章 基于Vue和Quasar的前端SPA项目实战之动态表单(五)的介绍,我们已经完成了元数据中动态表单设计功能,本文主要表关系功能的实现。

简介

在crudapi系统中,通过表关系(relation)管理将多个表连接起来,支持一对多,多对一,一对一,多对多等关系,
有关表关系基本概念参考之前文章 表关系 ,通过UI配置好表关系后,可以支持主子表的级联操作。

UI界面

表关系列表
表关系列表

编辑表关系
编辑表关系

表关系图
表关系图

API

表关系管理API
表关系API包括基本的CRUD操作,具体的通过swagger文档可以查看。通过axios封装api,名称为metadataRelation

  1. import { axiosInstance } from "boot/axios";
  2. const metadataRelation = {
  3. create: function(data) {
  4. return axiosInstance.post("/api/metadata/tablerelations",
  5. data
  6. );
  7. },
  8. update: function(id, data) {
  9. return axiosInstance.patch("/api/metadata/tablerelations/" + id,
  10. data
  11. );
  12. },
  13. list: function(page, rowsPerPage, search, query) {
  14. return axiosInstance.get("/api/metadata/tablerelations",
  15. {
  16. params: {
  17. offset: (page - 1) * rowsPerPage,
  18. limit: rowsPerPage,
  19. search: search,
  20. ...query
  21. }
  22. }
  23. );
  24. },
  25. count: function(search, query) {
  26. return axiosInstance.get("/api/metadata/tablerelations/count",
  27. {
  28. params: {
  29. search: search,
  30. ...query
  31. }
  32. }
  33. );
  34. },
  35. get: function(id) {
  36. return axiosInstance.get("/api/metadata/tablerelations/" + id,
  37. {
  38. params: {
  39. }
  40. }
  41. );
  42. },
  43. delete: function(id) {
  44. return axiosInstance.delete("/api/metadata/tablerelations/" + id);
  45. },
  46. batchDelete: function(ids) {
  47. return axiosInstance.delete("/api/metadata/tablerelations",
  48. {data: ids}
  49. );
  50. }
  51. };
  52. export { metadataRelation };

核心代码

q-select控件

表关系设计页面用到了q-select控件,支持选择4种基本类型:包括一对多OneToMany,多对一ManyToOne,一对一(主子)OneToOneMainToSub,一对一(子主)OneToOneSubToMain,通过多次组合实现了所有类型的表关系。

  1. <q-select
  2. class="col-7"
  3. outlined
  4. v-model="metadataRelation.relationType"
  5. :options="relationTypeOptions"
  6. emit-value
  7. map-options
  8. />
  9. relationTypeOptions: [
  10. {
  11. value: "OneToMany",
  12. label: "一对多"
  13. },
  14. {
  15. value: "ManyToOne",
  16. label: "多对一"
  17. },
  18. {
  19. value: "OneToOneMainToSub",
  20. label: "一对一(主子)"
  21. },
  22. {
  23. value: "OneToOneSubToMain",
  24. label: "一对一(子主)"
  25. }
  26. ]

表关系图

G6

采用蚂蚁集团的G6图可视化引擎,G6是一个简单、易用、完备的图可视化引擎,它在高定制能力的基础上,提供了一系列设计优雅、便于使用的图可视化解决方案。能帮助开发者搭建属于自己的图,图分析应用或是图编辑器应用。

package.json

添加@antv/g6依赖

  1. "dependencies": {
  2. "@quasar/extras": "^1.0.0",
  3. "@antv/g6": "^3.3.6",
  4. "axios": "^0.18.1",
  5. "core-js": "^3.6.5",
  6. "quasar": "^1.0.0",
  7. "vue-i18n": "^8.0.0"
  8. }

增删改查

通过列表页面,新建页面和编辑页面实现了表关系基本的crud操作,其中编辑和新建页面类似,表关系图可以看到所有表之间的关系,这样可以一目了然,更多内容参考源码即可。

小结

本文主要介绍了元数据中表关系管理功能,支持常见一对多,一对一,多对多等关系,并且通过G6图表库显示所有表的关系的图,到目前为止,元数据设计功能全部实现了,下一篇文章开始会介绍业务数据的crud功能。

demo演示

官网地址:https://crudapi.cn
测试地址:https://demo.crudapi.cn/crudapi/login

附源码地址

GitHub地址

https://github.com/crudapi/crudapi-admin-web

Gitee地址

https://gitee.com/crudapi/crudapi-admin-web

由于网络原因,GitHub可能速度慢,改成访问Gitee即可,代码同步更新。

原文链接:http://www.cnblogs.com/crudapi/p/14604898.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号