网站首页 > 开源技术 正文
基于Vue和Quasar的前端SPA项目实战之表关系(六)
回顾
通过上一篇文章 「开源免费」基于Vue和Quasar的动态表单设计器(五) 的介绍,我们已经完成了元数据中动态表单设计功能,本文主要表关系功能的实现。
简介
在crudapi系统中,通过表关系(relation)管理将多个表连接起来,支持一对多,多对一,一对一,多对多等关系, 有关表关系基本概念参考之前文章 订单和产品的多对多表关系在crudapi系统中的实现 ,通过UI配置好表关系后,可以支持主子表的级联操作。
UI界面
表关系列表
编辑表关系
表关系图
API
表关系API包括基本的CRUD操作,具体的通过swagger文档可以查看。通过axios封装api,名称为metadataRelation
import { axiosInstance } from "boot/axios";
const metadataRelation = {
create: function(data) {
return axiosInstance.post("/api/metadata/tablerelations",
data
);
},
update: function(id, data) {
return axiosInstance.patch("/api/metadata/tablerelations/" + id,
data
);
},
list: function(page, rowsPerPage, search, query) {
return axiosInstance.get("/api/metadata/tablerelations",
{
params: {
offset: (page - 1) * rowsPerPage,
limit: rowsPerPage,
search: search,
...query
}
}
);
},
count: function(search, query) {
return axiosInstance.get("/api/metadata/tablerelations/count",
{
params: {
search: search,
...query
}
}
);
},
get: function(id) {
return axiosInstance.get("/api/metadata/tablerelations/" + id,
{
params: {
}
}
);
},
delete: function(id) {
return axiosInstance.delete("/api/metadata/tablerelations/" + id);
},
batchDelete: function(ids) {
return axiosInstance.delete("/api/metadata/tablerelations",
{data: ids}
);
}
};
export { metadataRelation };
核心代码
q-select控件
表关系设计页面用到了q-select控件,支持选择4种基本类型:包括一对多OneToMany,多对一ManyToOne,一对一(主子)OneToOneMainToSub,一对一(子主)OneToOneSubToMain,通过多次组合实现了所有类型的表关系。
<q-select
class="col-7"
outlined
v-model="metadataRelation.relationType"
:options="relationTypeOptions"
emit-value
map-options
/>
relationTypeOptions: [
{
value: "OneToMany",
label: "一对多"
},
{
value: "ManyToOne",
label: "多对一"
},
{
value: "OneToOneMainToSub",
label: "一对一(主子)"
},
{
value: "OneToOneSubToMain",
label: "一对一(子主)"
}
]
表关系图
G6
采用蚂蚁集团的G6图可视化引擎,G6是一个简单、易用、完备的图可视化引擎,它在高定制能力的基础上,提供了一系列设计优雅、便于使用的图可视化解决方案。能帮助开发者搭建属于自己的图,图分析应用或是图编辑器应用。
package.json
添加@antv/g6依赖
"dependencies": {
"@quasar/extras": "^1.0.0",
"@antv/g6": "^3.3.6",
"axios": "^0.18.1",
"core-js": "^3.6.5",
"quasar": "^1.0.0",
"vue-i18n": "^8.0.0"
}
增删改查
通过列表页面,新建页面和编辑页面实现了表关系基本的crud操作,其中编辑和新建页面类似,表关系图可以看到所有表之间的关系,这样可以一目了然,更多内容参考源码即可。
小结
本文主要介绍了元数据中表关系管理功能,支持常见一对多,一对一,多对多等关系,并且通过G6图表库显示所有表的关系图,到目前为止,元数据设计功能全部实现了,下一篇文章开始会介绍业务数据的crud功能。
温馨提示:点击“了解更多”可以去官网查看源码!
- 上一篇: 2018年前端流行哪些技术?(推荐收藏)
- 下一篇: 前端性能优化,你想知道的都在这里
猜你喜欢
- 2024-09-10 Facebook发新版React,这些新功能让程序员直呼强大!
- 2024-09-10 React Native 网络层分析(react-native-router-flux)
- 2024-09-10 Brisk-Admin基于vue3+element-plus+vite开箱即用后台前端框架
- 2024-09-10 前端性能优化,你想知道的都在这里
- 2024-09-10 AngularJS2 教程—JavaScript 环境配置—架构大全第一章
- 2024-09-10 2018年前端流行哪些技术?(推荐收藏)
- 2024-09-10 你还在用 for 循环遍历集合?试试 JavaScript 新增的 7 种方法吧!
- 2024-09-10 Vue开发中常用的ES6新特性(vue支持es几)
- 2024-09-10 在线编辑excel功能一次完整体验历程,以及可以避免的坑
- 2024-09-10 超详细,手把手教你入门.NET for Linux
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)