npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mone-query

v0.1.0

Published

基于element-ui的数据查询通用组件

Downloads

3

Readme

mone-query 组件API

mone-query mone-query是基于element-ui的查询组件,它通过丰富的配置让你尽可能少的前端编码就可以完成大部分报表需求。

必要依赖

vue >= 2.5.2 element-ui >= 2.4.0 axios >= 0.16.0

安装

CommonJS方式

npm install mone-query -D

umd方式

<link href="mone-query/lib/style.css" rel="stylesheet">
<script src="../mone-query/lib/index.js"></script>

快速上手

import Vue from "vue";
import 'mone-query/style.css';
import MoneQuery from "mone-query";
Vue.use(MoneQuery, {
  // options
  ...
})
<mone-query border :config="config" :data="data" />
...
import Config from "@/Config.json";
import Data from "@/Data.json";
data() {
  return {
    // 传入请求路径
    config: "/api/config",
    data: "/api/data"
    // or
    // 传入对象
    config: Config.resultData,
    data: Data.resultData
  };
}

运行机制

  1. 校验入参

    mone-query有两个必要参数configdata, config控制表格结构和自定义功能,data渲染数据行,这两个参数可以传入ajax路径字符串,也可以传入json对象,其他类型的参数传入时会抛出异常。注意组件还有其它一些参数可以传入,组件传入的参数与config有一些参数是重复的,甚至你还可以在Vue.use时给所有的组件实例传入默认参数,这是为了增加组件配置的灵活性,不过通过组件直接传入的参数优先级最高,config属性其次,最后是默认配置

  2. 根据config参数获取配置

    如果config传入字符串,那么组件首先会发起Get请求查询配置json,这段期间表格会一直loading到请求结束,如果请求失败,表格将会触发on-error事件,使用者可以监听事件做后续处理,或者让页面保持错误面板的状态;请求成功的结果将直接作为配置对象使用。如果config传入json,将直接作为配置对象使用(具体结构示例参照Config.json)。

  3. 根据配置对象渲染表结构

    受配置影响的部分包括:

    • colbox: 工具栏的字段面板
    • cols: 表头
    • ......
  4. 根据data参数获取结果集

    如果data传入字符串,那么组件会将之作为ajax路径查询结果集。如果data传入json,将直接作为结果集使用(具体结构示例参照Data.json)。

  5. 有时候在结果集渲染之前需要对某些字段进行处理,比如映射新值、时间转换等等,这时提供formatters对象,这是一个属性名为col.prop、属性值为该列过滤函数的对象,过滤函数有四个形参:row, column, cellValue, index

MoneQuery Attributes

| 属性名 | 类型 | 含义 | 可选值 | 默认值 | | -- | -- | -- | -- | -- | | *config | Object , String | 表头列 | ajax路径\配置对象 | {} | | *data | Array , String | 数据行 | ajax路径\数据集合 | [] | | height | String/Number | Table高度 | auto\80\80px | auto | | max-height | String/Number | Table的最大高度 | - | - | | border | Boolean | 是否带有纵向边框 | - | false | | primary-key | String | 主键(数据行多选时必要) | - | id | | page-name | String | 分页参数中的pageSize键名 | - | pageIndex | | size-name | String | 分页参数中的pageSize键名 | - | pageSize | | rows-name | String | ajax请求结果集键名 | - | resultData.rows | | total-name | String | ajax请求结果总数键名 | - | resultData.total | | colbox | Object | 字段显示框方位 | - | { placement: "top", width: "540px", trigger: "click" } | | visible-fields | Boolean,Array | 默认显示字段 | true: 全部显示; false: 全部隐藏; ["propA", "propB", ...] | true | | visible-fields-config | Array<FieldGroup> | 字段在工具栏的显示配置 | - | - | | formatters | Object | 包含各个列过滤函数的对象 | - | {} | | show-action | Boolean | 是否显示右侧操作栏 | - | false | | show-delete | Boolean | 是否显示删除按钮 | - | false | | show-header | Boolean | 是否显示表头(包含筛选条件) | - | true | | show-selection | Boolean | 是否显示多选框 | - | true | | show-index | Boolean | 是否自定义序列 | - | false |

MoneQuery Events

| 事件名 | 说明 | 参数 | | -- | -- | -- | | delete | 点击删除按钮触发 | selection | | search | 点击查询按钮触发 | parameters | | config-success | 查询配置成功 | res | | config-error | 查询配置失败 | error | | config-complete | 查询配置完成(成功或失败都会触发) | - | | data-success | 查询结果集成功 | res | | data-error | 查询结果集失败 | error | | data-complete | 查询结果集完成(成功或失败都会触发) | - |

MoneQuery Slots

| 名称 | 说明 | | -- | -- | | header | 头部栏 | | header-left | 头部栏左侧 |

config Attributes

| 属性名 | 类型 | 含义 | 可选值 | 默认值 | | -- | -- | -- | -- | -- | | baseUrl | String | ajax根路径 | - | - | | primary-key | String | 主键(数据行多选时必要) | - | id | | cols | Array<Col> | 列 | - | id | | page-name | String | 分页参数中的pageSize键名 | - | pageIndex | | size-name | String | 分页参数中的pageSize键名 | - | pageSize | | rows-name | String | ajax请求结果集键名 | - | resultData.rows | | total-name | String | ajax请求结果总数键名 | - | resultData.total | | colbox | Object | 字段显示框方位 | - | { placement: "top", width: "540px", trigger: "click" } | | visible-fields | Boolean,Array | 默认显示字段 | true: 全部显示; false: 全部隐藏; ["propA", "propB", ...] | true | | visible-fields-config | Array<FieldGroup> | 字段在工具栏的显示配置 | - | - | | show-action | Boolean | 是否显示右侧操作栏 | - | false | | show-delete | Boolean | 是否显示删除按钮 | - | false | | show-header | Boolean | 是否显示表头(包含筛选条件) | - | true | | show-selection | Boolean | 是否显示多选框 | - | true | | show-index | Boolean | 是否自定义序列 | - | false |

colbox Attributes

| 属性名 | 类型 | 含义 | 可选值 | 默认值 | | -- | -- | -- | -- | -- | | placement | String | 展示方位 | - | top | | width | String | 面板宽度 | - | 540px | | trigger | String | 触发事件类型 | - | click |

Col class

| 属性名 | 类型 | 含义 | 可选值 | 默认值 | | -- | -- | -- | -- | -- | | label | String | 列标题 | - | - | | prop | String | 列字段名 | - | - | | type | String | 列字段类型 | varcharoptiondatedatetime | - | | width | String | 列宽度 | width | width | | order | Number | 排列顺序 | - | - | | action | String | 查询类型 | - | varchar:lk,option:in; data:lt& gt; datetime:le& ge | | placeholder | String | 输入提示 | - | - | | fixed | Boolean | 是否固定列 | - | - | | options | Array | 多选组件的选项列表,eg: [{label, value}] | - | - |

Col.type enum

| 枚举值 | 含义 | | -- | -- | | varchar | 文本 | | option | 多选 | | date | 日期 | | datetime | 日期时间 |

FieldGroup class

| 属性名 | 类型 | 含义 | 可选值 | 默认值 | | -- | -- | -- | -- | -- | | title | String | 组标题 | - | - | | order | String | 排列顺序 | - | - | | selection | Array | 选中的 | - | - | | checkAll | Boolean | 是否全选 | - | true | | isIndeterminate | Boolean | 是否半选 | - | false | | colProps | Array | 组成员 | - | - |

查询配置标准结构(application/json)

  • resultCode 响应码
  • resultData 响应结果(注意resultData必须是JSON对象)
    • primaryKey String 主键prop(默认:id)
    • rowsName String 结果集属性名,将根据rowsName指定的属性名获取目标结果集(默认: resultData.rows)
    • totalName String 结果总数属性名,将根据totalName指定的属性名获取目标结果总数(默认: resultData.total)
    • pageName String 当前页属性名,将根据pageName指定的属性名设置分页参数(默认: pageIndex)
    • sizeName String 每页条数属性名,将根据sizeName指定的属性名设置分页参数(默认: pageSize)
    • pageSize Number 默认每页查询的数据数量(默认: 20)
    • cols Array 列头(字段)对象集合
      • label String 标题
      • prop String 属性名
      • type String 属性类型
        • varchar 文本
        • option 多选
        • date 日期
        • datetime 日期时间
        • bit 单选(暂不支持)
        • int 数字(暂不支持)
        • time 时间(暂不支持)
      • width String 列宽
      • order Number 排列顺序
    • colbox Object 可选字段配置
      • placement String 展示方位(默认:top)
      • width String 面板宽度(默认:540px)
      • trigger String 触发事件类型(默认:click)
      • value Array (默认:所有字段)

查询参数标准结构(application/json)

  • colProps Array 要查询的字段列
  • params Array 查询参数字段
    • field String
    • action String
      • eq 等于
      • ne 不等于
      • in 包含在
      • ni 不包含在
      • sw start with
      • ew end with
      • lk like
      • gt 大于
      • lt 小于
      • ge 大于等于
      • le 小于等于
    • filedType String
      • varchar 字符串
      • option 多选
      • date 日期范围
      • datetime 日期时间范围
      • bit 单选(暂不支持)
      • int 数字(暂不支持)
      • time 时间(暂不支持)
    • value any
  • sort Array 排序字段
    • prop String 字段名
    • type String 排序方式
      • asc 正序
      • desc 降序
  • page Object
    • pageIndex Number 当前页(默认:1)
    • pageSize Number 每页多少条(默认:20)
# 查询参数示例
cols: ["name", "age", "grade", "isMarried", "birthday", "schoolTime"],
params: [
  {
    field: "name",
    action: "lk",
    filedType: "varchar",
    value: "李",
  },
  {
    field: "birthday",
    action: "lt",
    filedType: "datetime",
    value: "2019-04-13",
  },
  {
    field: "birthday",
    action: "ge",
    filedType: "datetime",
    value: "2019-03-13",
  },
  {
    field: "grade",
    action: "in",
    filedType: "option",
    value: [1,2,5],
  }
]
sort: [
  {
    prop: "age',
    type: "asc"
  }
],
page: {
  pageIndex: 1,
  pageSize: 20
}

查询结果集标准结构(application/json)

  • [resultCode] 响应码
  • [resultData] 响应结果
    • [rows] 结果集
    • [total] 结果总数

轻量版

mone-query默认依赖element-ui部分组件和axios请求库,这里有两个构建版供你的应用选择:

  • 全部引入(js≈360kb, style≈103kb):包括element相关组件(可以在应用中使用这些组件,因为它们已经全局注册过了);另外是axios。
  • 只引入核心代码(≈24kb, style≈1kb),如果你的应用已经引入了element和axios,那建议只引入核心代码即可。
      import "mone-query/lib/lite/style.css";
      import moneQuery from "mone-query/lib/lite";
      ...

PS: 这里说来说去最终不影响物质守恒,如果你不是太关心你应用的构建体积可以忽略