「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之自定义组件(四)

基于Vue和Quasar的前端SPA项目实战之序列号(四)

回顾

经过上一篇文章 基于Vue和Quasar的前端SPA项目实战之布局菜单(三)的介绍,咱们已经完成了布局菜单,本文主要介绍序列号功能的实现。javascript

简介

MySQL数据库没有单独的Sequence,只支持自增加(increment)主键,可是不能设置步长、开始索引、格式等,最重要的是一张表只能由一个字段使用自增,但有的时候咱们须要多个字段实现序列号功能或者须要支持复杂格式,MySQL自己是实现不了的,因此封装了复杂序列号,支持字符串和数字,自定义格式,也能够设置为时间戳。能够用于产品编码、订单流水号等场景!html

UI界面

序列号列表
序列号列表前端

建立序列号
建立序列号vue

编辑序列号
编辑序列号java

API

序列号API包括基本的CRUD操做,经过axios封装api,名称为metadataSequenceios

import { axiosInstance } from "boot/axios";

const metadataSequence = {
  create: function(data) {
    return axiosInstance.post("/api/metadata/sequences",
       data
    );
  },
  update: function(id, data) {
    return axiosInstance.patch("/api/metadata/sequences/" + id,
       data
    );
  },
  list: function(page, rowsPerPage, search, query) {
    if (!page) {
      page = 1
    }

    if (!rowsPerPage) {
      rowsPerPage = 10
    }

    return axiosInstance.get("/api/metadata/sequences",
      {
        params: {
          offset: (page - 1) * rowsPerPage,
          limit: rowsPerPage,
          search: search,
          ...query
        }
      }
    );
  },
  count: function(search, query) {
    return axiosInstance.get("/api/metadata/sequences/count",
      {
        params: {
          search: search,
          ...query
        }
      }
    );
  },
  get: function(id) {
    return axiosInstance.get("/api/metadata/sequences/" + id,
      {
        params: {
        }
      }
    );
  },
  delete: function(id) {
    return axiosInstance.delete("/api/metadata/sequences/" + id);
  },
  batchDelete: function(ids) {
    return axiosInstance.delete("/api/metadata/sequences",
      {data: ids}
    );
  }
};

export { metadataSequence };

增删改查

经过列表页面,新建页面和编辑页面实现了序列号基本的crud操做,其中新建和编辑页面相似,普通的表单提交,这里就不详细介介绍了,直接查看代码便可。对于列表查询页面,用到了自定义组件,这里重点介绍了一下自定义组件相关知识。数据库

自定义component

序列号列表页面中用到了分页控件,由于其它列表页面也会用到,因此适合封装成component, 名称为CPage。主要功能包括:设置每页的条目个数,切换分页,统同样式等。axios

核心代码

首先在components目录下建立文件夹CPage,而后建立CPage.vue和index.js文件。api

CPage/CPage.vue

用到了q-pagination控件async

<q-pagination
  unelevated
  v-model="pagination.page"
  :max="Math.ceil(pagination.count / pagination.rowsPerPage)"
  :max-pages="10"
  :direction-links="true"
  :ellipses="false"
  :boundary-numbers="true"
  :boundary-links="true"
  @input="onRequestAction"
>
</q-pagination>

CPage/index.js

实现install方法

import CPage from "./CPage.vue";

const cPage = {
  install: function(Vue) {
    Vue.component("CPage", CPage);
  }
};

export default cPage;

CPage使用

全局配置

首先,建立boot/cpage.js文件

import cPage from "../components/CPage";

export default async ({ Vue }) => {
  Vue.use(cPage);
};

而后,在quasar.conf.js里面boot节点添加cpage,这样Quasar就会自动加载cpage。

boot: [
    'i18n',
    'axios',
    'cpage'
  ]

应用

在序列号列表中经过标签CPage使用

<CPage v-model="pagination" @input="onRequestAction"></CPage>

当切换分页的时候,经过@input回调,传递当前页数和每页个数给父页面,而后经过API获取对应的序列号列表。

小结

本文主要介绍了元数据中序列号功能,用到了q-pagination分页控件,而且封装成自定义组件cpage, 而后实现了序列号的crud增删改查功能,下一章会介绍元数据中表定义功能。