「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)

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

回顾

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

简介

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

UI界面

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
业务数据列表

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
编辑业务数据

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
省市区主子表

API

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
业务数据API包括基本的CRUD操作,具体的通过swagger文档可以查看。通过axios封装api,名称为table
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 };

核心代码

代码结构

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
代码结构

下拉选择q-select

<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>

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

CFile组件

<q-file v-model="localFile">
  <template v-slot:prepend>
    <q-icon name="attach_file">
  </q-icon></template>
  <template v-slot:after>
    <q-btn round dense flat icon="send" @click="onSubmitClick">
  </q-btn></template>
</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种类型的组件嵌套,可以支持无限主子表级联保存,比如省市区三级子表,目录文件无限级子表。

列表查询和分页

数据查询主要是指按照输入条件检索出符合要求的数据列表,如果数据量大的情况下,需要考虑分页。

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)
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即可,代码同步更新。

Original: https://www.cnblogs.com/crudapi/p/14610912.html
Author: crudapi
Title: 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713153/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CMake库搜索函数居然不搜索LD_LIBRARY_PATH

    摘要:本文通过编译后运行找不到库文件的问题引入,首先分析了find_package(JNI)的工作流程,而后针对cmake不搜索LD_LIBRARY_PATH的问题,提出了一种通用…

    技术杂谈 2023年5月31日
    089
  • Oracle Client没有正确安装

    lnitialization errorOracle Client没有正确安装OracleHomeKey:OracleHomeDir: Original: https://www….

    技术杂谈 2023年5月30日
    0103
  • 阿里云高防回源IP的限制

    高防回源IP 只能回到非阿里云的IP 高防所在阿里云账号下的SLB或者ECS IP *以及非阿里云账号下的SLB IP 一共三种情况。 posted on2022-05-17 15…

    技术杂谈 2023年5月31日
    0101
  • IEEE浮点数向偶数舍

    CSAPP ​ 向偶数舍入初看上去好像是个相当随意的目标——有什么理由偏向取偶数呢?为什么不始终把位于两个可表示的值中间的值都向上舍入呢?使用这种方法的一个问题就是很容易假想到这样…

    技术杂谈 2023年7月11日
    093
  • SASE

    什么是 SASE? SASE一般读作”sassy”。 安全访问服务边缘简称 SASE,是一种基于云的 IT 模型,它将软件定义的网络与网络安全功能捆绑在一起…

    技术杂谈 2023年5月31日
    094
  • C++ 回调函数及 std::function 与 std::bind

    回调函数是做为参数传递的一种函数,在早期C样式编程当中,回调函数必须依赖函数指针来实现。 而后的C++语言当中,又引入了 std::function 与 std::bind 来配合…

    技术杂谈 2023年6月21日
    0104
  • IDEA常用设置及插件

    设置 1.设置打开后不直接进入项目 IDEA默认打开时会直接进入上次打开的目录,有的时候加载很长时间,但这个时候可能我们并不是要打开这个项目,这里有一个设置,在如图的位置,去掉勾选…

    技术杂谈 2023年7月24日
    080
  • python中的*和**

    简介:Python中的与*操作符使用最多的就是两种用法。 1.用做运算符,即表示乘号,*表示次方。 用于指定函数传入参数的类型的。*用于参数前面,表示传入的多个参数将按照元组的形式…

    技术杂谈 2023年7月25日
    083
  • bloomRpc下载

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月31日
    0105
  • react 代码优化

    1.减少setstate:setstate会增加render的次数,从而影响性能。如果涉及到与视图层无关的属性,直接当做class实例的属性,而不是state的状态。这样改变这个属…

    技术杂谈 2023年6月1日
    092
  • PyTorch 介绍 | 优化模型参数

    既然已经有模型和数据了,是时候在数据上优化模型参数来训练、验证和测试它了。模型训练是一个迭代过程;在每一次迭代( epoch),模型会作出一个预测,计算其预测误差( loss),收…

    技术杂谈 2023年7月25日
    076
  • 五、一种适用于STM32的通用串口通信架构及与PN532的通信实践

    用STM32与PN532建立连接了。本章节的最终目标,是希望构建一套针对任意外设收发包的通用框架,而不仅限于PN532和串口通信。 我个人对基于HAL库和RT-Thread的STM…

    技术杂谈 2023年6月1日
    098
  • Dubbo学习

    Dubbo 前言 1.1 大型互联网项目架构目标 1.2 集群和分布式 概念 集群:很多”人”一起,干一样的事。 一个业务模块,部署在多台服务器上。 分布式…

    技术杂谈 2023年6月21日
    096
  • Linux账户,组,权限管理

    内容多数来源于https://wangchujiang.com/linux-command/c/chmod.html, 开源地址:https://github.com/jaywcj…

    技术杂谈 2023年6月21日
    093
  • 腾讯社会招聘内推(长期有效)

    一、内推方式 扫描以下图二维码,选择自己想要投递的岗位直接投递,即可以博主名义进行内推。 如以上二维码过期可添加博主微信,寻求新的内推链接: 二、投递建议 一是工作年限/学历/证书…

    技术杂谈 2023年5月31日
    0100
  • 可以用爱因斯坦求和替代的那些矩阵运算

    技术背景 在前面的几篇文章中我们分别介绍过numpy中的爱因斯坦求和函数Einsum和MindSpore框架中的爱因斯坦求和算子Einsum的基本用法。而我们需要知道,爱因斯坦求和…

    技术杂谈 2023年7月25日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球