经过上一篇文章 基于Vue和Quasar的前端SPA项目实战之表关系(六)的介绍,元数据设计功能所有实现了,本文主要介绍业务数据的crud增删改查功能。javascript
在crudapi系统中,经过配置表单的方式定义元数据。表单配置好以后,对应的crud接口就自动生成了,前端集成RESTful API就能够实现业务数据的crud功能,若是配置了表关系,也支持主子表的级联操做。html
业务数据列表前端
编辑业务数据vue
省市区主子表java
业务数据API包括基本的CRUD操做,具体的经过swagger文档能够查看。经过axios封装api,名称为tablemysql
import { axiosInstance } from "boot/axios"; const table = { create: function(tableName, data) { return axiosInstance.post("/api/business/" + tableName, data ); }, update: function(tableName, id, data) { return axiosInstance.patch("/api/business/" + tableName + "/" + id, data ); }, list: function(tableName, page, rowsPerPage, search, query, filter) { if (!page) { page = 1 } if (!rowsPerPage) { rowsPerPage = 10 } let filterStrEncode; if (filter) { let filterStr = JSON.stringify(filter); filterStrEncode = encodeURIComponent(filterStr); } return axiosInstance.get("/api/business/" + tableName, { params: { offset: (page - 1) * rowsPerPage, limit: rowsPerPage, search: search, ...query, filter: filterStrEncode } } ); }, count: function(tableName, search, query) { return axiosInstance.get("/api/business/" + tableName + "/count", { params: { search: search, ...query } } ); }, get: function(tableName, id) { return axiosInstance.get("/api/business/" + tableName + "/" + id, { params: { } } ); }, delete: function(tableName, id) { return axiosInstance.delete("/api/business/" + tableName + "/" + id); }, batchDelete: function(tableName, ids) { return axiosInstance.delete("/api/business/" + tableName, {data: ids} ); } }; export { table };
代码结构ios
<q-select v-if="item.options" style="min-width: 150px;height: 40px;" outlined option-label="name" use-input hide-selected fill-input input-debounce="0" @filter="item.filterFn" @filter-abort="item.abortFilterFn" v-model="item.value" :options="item.options" />
对于多对一和一对一(子主方向)使用q-select选择数据。git
<q-file v-model="localFile"> <template v-slot:prepend> <q-icon name="attach_file" /> </template> <template v-slot:after> <q-btn round dense flat icon="send" @click="onSubmitClick" /> </template> </q-file>
用到了q-file组件,用于上传和显示附件。github
包括四种类型CTableNew、CTableEdit,CTableList,CTableListEditweb
CTableNew
新建数据时候采用该组件,CTableNew把主表字段平铺展现,而后能够嵌套CTableNew(一对一主子表)和CTableList(一对多主子表)。
CTableEdit
编辑数据时候采用该组件,CTableEdit把主表字段平铺展现,而后能够嵌套CTableNew(一对一主子表)、CTableEdit(一对一主子表)、CTableList(一对多主子表),CTableListEdit(一对多主子表)。
CTableList
新建数据时候做为子表采用该组件,CTableList采用q-table支持多行子表数据,而后能够嵌套CTableNew(一对一主子表)和CTableList(一对多主子表)。
CTableListEdit
编辑数据时候做为子表采用该组件,CTableListEdit采用q-table支持多行子表数据,而后能够嵌套CTableNew(一对一主子表)、CTableEdit(一对一主子表)、CTableList(一对多主子表),CTableListEdit(一对多主子表)。
经过上面4种类型的组件嵌套,能够支持无限主子表级联保存,好比省市区三级子表,目录文件无限级子表。
数据查询主要是指按照输入条件检索出符合要求的数据列表,若是数据量大的状况下,须要考虑分页。
API为/api/business/{name},其中name为对象名称复数形式(兼容对象名称),查询参数以下:
参数 | 类型 | 描述 |
---|---|---|
select | string | 选择查询须要的字段和关联子表,默认查询所有字段和关联子表 |
expand | string | 选择须要展开的关联主表,默认关联主表字段只查询id和name |
search | string | 全文检索关键字,经过内置的系统字段全文索引fullTextBody实现 |
filter | string | 智能查询条件,格式为Condition对象JSON序列化后的字符串 |
orderby | string | 排序方式,ASC和DESC |
offset | int32 | 分页开始位置 |
limit | int32 | 每页数量 |
字段1 | Object | 最终转换成mysql中=操做符 |
字段2 | Object | 最终转换成mysql中=操做符 |
...... | Object | 最终转换成mysql中=操做符 |
字段1,字段2,...之间的关系为而且AND关系,更多内容能够参考以前的一篇文章 数据条件查询和分页
本文主要介绍了介绍业务数据的增删改查功能,到目前为止,前端实现了crudapi完整的功能。经过配置的方式能够零代码实现业务数据的基本crud功能,若是须要复杂功能,能够进行二次开发。下一篇文章会介绍前端打包和docker部署相关内容。
官网地址:https://crudapi.cn
测试地址:https://demo.crudapi.cn/crudapi/login
https://github.com/crudapi/crudapi-admin-web
https://gitee.com/crudapi/crudapi-admin-web
因为网络缘由,GitHub可能速度慢,改为访问Gitee便可,代码同步更新。