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

基于Vue和Quasar的前端SPA项目实战之业务数据(七)

回顾

通过上一篇文章 基于Vue和Quasar的前端SPA项目实战之表关系(六)的介绍,元数据设计功能全部实现了,本文主要介绍业务数据的crud增删改查功能。

简介

在crudapi系统中,通过配置表单的方式定义元数据。表单配置好之后,对应的crud接口就自动生成了,前端集成RESTful API就可以实现业务数据的crud功能,如果配置了表关系,也支持主子表的级联操作。

UI界面

业务数据列表
业务数据列表

编辑业务数据
编辑业务数据

省市区主子表
省市区主子表

API

业务数据CRUDAPI
业务数据API包括基本的CRUD操作,具体的通过swagger文档可以查看。通过axios封装api,名称为table

  1. import { axiosInstance } from "boot/axios";
  2. const table = {
  3. create: function(tableName, data) {
  4. return axiosInstance.post("/api/business/" + tableName,
  5. data
  6. );
  7. },
  8. update: function(tableName, id, data) {
  9. return axiosInstance.patch("/api/business/" + tableName + "/" + id,
  10. data
  11. );
  12. },
  13. list: function(tableName, page, rowsPerPage, search, query, filter) {
  14. if (!page) {
  15. page = 1
  16. }
  17. if (!rowsPerPage) {
  18. rowsPerPage = 10
  19. }
  20. let filterStrEncode;
  21. if (filter) {
  22. let filterStr = JSON.stringify(filter);
  23. filterStrEncode = encodeURIComponent(filterStr);
  24. }
  25. return axiosInstance.get("/api/business/" + tableName,
  26. {
  27. params: {
  28. offset: (page - 1) * rowsPerPage,
  29. limit: rowsPerPage,
  30. search: search,
  31. ...query,
  32. filter: filterStrEncode
  33. }
  34. }
  35. );
  36. },
  37. count: function(tableName, search, query) {
  38. return axiosInstance.get("/api/business/" + tableName + "/count",
  39. {
  40. params: {
  41. search: search,
  42. ...query
  43. }
  44. }
  45. );
  46. },
  47. get: function(tableName, id) {
  48. return axiosInstance.get("/api/business/" + tableName + "/" + id,
  49. {
  50. params: {
  51. }
  52. }
  53. );
  54. },
  55. delete: function(tableName, id) {
  56. return axiosInstance.delete("/api/business/" + tableName + "/" + id);
  57. },
  58. batchDelete: function(tableName, ids) {
  59. return axiosInstance.delete("/api/business/" + tableName,
  60. {data: ids}
  61. );
  62. }
  63. };
  64. export { table };

核心代码

代码结构

代码结构
代码结构

下拉选择q-select

  1. <q-select
  2. v-if="item.options"
  3. style="min-width: 150px;height: 40px;"
  4. outlined
  5. option-label="name"
  6. use-input
  7. hide-selected
  8. fill-input
  9. input-debounce="0"
  10. @filter="item.filterFn"
  11. @filter-abort="item.abortFilterFn"
  12. v-model="item.value"
  13. :options="item.options"
  14. />

对于多对一和一对一(子主方向)使用q-select选择数据。

CFile组件

  1. <q-file v-model="localFile">
  2. <template v-slot:prepend>
  3. <q-icon name="attach_file" />
  4. </template>
  5. <template v-slot:after>
  6. <q-btn round dense flat icon="send" @click="onSubmitClick" />
  7. </template>
  8. </q-file>

用到了q-file组件,用于上传和显示附件。

表单组件

包括四种类型CTableNew、CTableEdit,CTableList,CTableListEdit

  1. CTableNew
    新建数据时候采用该组件,CTableNew把主表字段平铺展示,然后可以嵌套CTableNew(一对一主子表)和CTableList(一对多主子表)。

  2. CTableEdit
    编辑数据时候采用该组件,CTableEdit把主表字段平铺展示,然后可以嵌套CTableNew(一对一主子表)、CTableEdit(一对一主子表)、CTableList(一对多主子表),CTableListEdit(一对多主子表)。

  3. CTableList
    新建数据时候作为子表采用该组件,CTableList采用q-table支持多行子表数据,然后可以嵌套CTableNew(一对一主子表)和CTableList(一对多主子表)。

  4. CTableListEdit
    编辑数据时候作为子表采用该组件,CTableListEdit采用q-table支持多行子表数据,然后可以嵌套CTableNew(一对一主子表)、CTableEdit(一对一主子表)、CTableList(一对多主子表),CTableListEdit(一对多主子表)。

通过上面4种类型的组件嵌套,可以支持无限主子表级联保存,比如省市区三级子表,目录文件无限级子表。

列表查询和分页

数据查询主要是指按照输入条件检索出符合要求的数据列表,如果数据量大的情况下,需要考虑分页。
listapi
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部署相关内容。

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/14610912.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号