Github: https://github.com/jczzq/mone...
Demo: https://blog.jczzq.com/mone-q...css
mone-query
是基於element-ui
封裝的通用查詢組件,它經過豐富的配置讓你儘量少的前端編碼就能夠完成大部分報表需求。前端
vue
>= 2.5.2 element-ui
>= 2.4.0 axios
>= 0.16.0vue
npm install mone-query -D
<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 }; }
mone-query
有兩個必要參數config
和data
, config控制表格結構和自定義功能,data渲染數據行,這兩個參數能夠傳入ajax路徑字符串,也能夠傳入json對象,其餘類型的參數傳入時會拋出異常。注意組件還有其它一些參數能夠傳入,組件傳入的參數與config有一些參數是重複的,甚至你還能夠在Vue.use時給全部的組件實例傳入默認參數,這是爲了增長組件配置的靈活性,不過經過組件直接傳入的參數優先級最高,config屬性其次,最後是默認配置ios
若是config傳入字符串,那麼組件首先會發起Get請求查詢配置json,這段期間表格會一直loading到請求結束,若是請求失敗,表格將會觸發on-error
事件,使用者能夠監聽事件作後續處理,或者讓頁面保持錯誤面板的狀態;請求成功的結果將直接做爲配置對象使用。若是config傳入json,將直接做爲配置對象使用(具體結構示例參照Config.json
)。git
根據配置對象渲染表結構github
受配置影響的部分包括:ajax
若是data傳入字符串,那麼組件會將之做爲ajax路徑查詢結果集。若是data傳入json,將直接做爲結果集使用(具體結構示例參照Data.json
)。npm
row, column, cellValue, index
屬性名 | 類型 | 含義 | 可選值 | 默認值 |
---|---|---|---|---|
*config | Object , String | 表頭列 | ajax路徑配置對象 | {} |
*data | Array , String | 數據行 | ajax路徑數據集合 | [] |
height | String/Number | Table高度 | auto8080px | 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 |
事件名 | 說明 | 參數 |
---|---|---|
delete | 點擊刪除按鈕觸發 | selection |
search | 點擊查詢按鈕觸發 | parameters |
config-success | 查詢配置成功 | res |
config-error | 查詢配置失敗 | error |
config-complete | 查詢配置完成(成功或失敗都會觸發) | - |
data-success | 查詢結果集成功 | res |
data-error | 查詢結果集失敗 | error |
data-complete | 查詢結果集完成(成功或失敗都會觸發) | - |
屬性名 | 類型 | 含義 | 可選值 | 默認值 |
---|---|---|---|---|
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 |
屬性名 | 類型 | 含義 | 可選值 | 默認值 |
---|---|---|---|---|
placement | String | 展現方位 | - | top |
width | String | 面板寬度 | - | 540px |
trigger | String | 觸發事件類型 | - | click |
屬性名 | 類型 | 含義 | 可選值 | 默認值 |
---|---|---|---|---|
label | String | 列標題 | - | - |
prop | String | 列字段名 | - | - |
type | String | 列字段類型 | varchar 、option 、date 、datetime |
- |
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}] | - | - |
枚舉值 | 含義 |
---|---|
varchar | 文本 |
option | 多選 |
date | 日期 |
datetime | 日期時間 |
屬性名 | 類型 | 含義 | 可選值 | 默認值 |
---|---|---|---|---|
title | String | 組標題 | - | - |
order | String | 排列順序 | - | - |
selection | Array | 選中的 | - | - |
checkAll | Boolean | 是否全選 | - | true |
isIndeterminate | Boolean | 是否半選 | - | false |
colProps | Array | 組成員 | - | - |
resultData 響應結果(注意resultData
必須是JSON對象)element-ui
String
主鍵prop(默認:id)String
結果集屬性名,將根據rowsName指定的屬性名獲取目標結果集(默認: resultData.rows)String
結果總數屬性名,將根據totalName指定的屬性名獲取目標結果總數(默認: resultData.total)String
當前頁屬性名,將根據pageName指定的屬性名設置分頁參數(默認: pageIndex)String
每頁條數屬性名,將根據sizeName指定的屬性名設置分頁參數(默認: pageSize)Number
默認每頁查詢的數據數量(默認: 20)cols Array
列頭(字段)對象集合json
String
標題String
屬性名type String
屬性類型
String
列寬Number
排列順序colbox Object
可選字段配置
String
展現方位(默認:top)String
面板寬度(默認:540px)String
觸發事件類型(默認:click)Array
(默認:全部字段)Array
要查詢的字段列params Array
查詢參數字段
String
action String
filedType String
any
sort Array
排序字段
String
字段名type String
排序方式
page Object
Number
當前頁(默認:1)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 }
[resultData] 響應結果
mone-query默認依賴element-ui部分組件和axios請求庫,這裏有兩個構建版供你的應用選擇:
只引入核心代碼(≈24kb, style≈1kb),若是你的應用已經引入了element和axios,那建議只引入核心代碼便可。
import "mone-query/lib/lite/style.css"; import moneQuery from "mone-query/lib/lite"; ...
PS: 這裏說來講去最終不影響物質守恆,若是你不是太關心你應用的構建體積能夠忽略