# 4.檢索
# 全局搜索單據
提示
通過系統左側的單據菜單可以全局檢索系統中的業務單據,全局檢索默認不支持配置,
但是通過自定義查詢可以配置個性化的查詢頁面
提示
保存當前過濾條件-將搜索條件保存,方便下一次快速執行單據檢索操作
電梯:https://loan.elcube.cloud/#/apps/docs (opens new window)
# 創建自定義查詢-NkQueryGrid|查詢
提示
通過JSON配置一個查詢菜單界面,可以定制界面的搜索內容、搜索條件及列表字段,就像傳統系統中的管理功能一樣
# 配置查詢頁面
電梯:https://loan.elcube.cloud/#/apps/def/base (opens new window)
在開發-模型中新建一個模型程序為用戶頁面的單據模型,功能卡片選擇'NkQueryGrid|查詢'
| 字段 | 描述 | 示例 |
|---|---|---|
| 啟用預覽 | 列表頁是否可以預覽單據數據,默認為否 | |
| 默認條目數 | 列表頁的每頁條目數 | |
| 查詢服務 | 定義數據的從哪個數據服務中取值,默認為空,從ElasticSearchSQLService中取值 | |
| 查詢命令 | 查詢服務對應的查詢命令,默認為空 | |
| 查詢表 | 默認為document,也可以是doc-ext | |
| 模板 | 小程序,H5用到 | |
| 導出 | 定義列表頁是否有導出按鈕可導出數據 | |
| 數據過濾 | ES語法的過濾條件 | |
| 檢索條件 | 菜單欄的搜索條件,名稱是描述,列為字段名,從索引中取出,例如,dynamics.jobNumber_keyword | |
| 更多條件 | 可以配置更多的搜索條件 | |
| 數據列 | 菜單的展示數據,字段名為配置的索引字段或者基礎字段,對于金額或者日期等特殊格式,可選擇格式化對其進行處理 | |
| 創建菜單 | 在菜單欄是否可以創建該單據,若該單據沒有前序單據,則可以配置 |
####數據列的各字段
| 字段 | 描述 | 示例 |
|---|---|---|
| 名稱 | 顯示在列表頁的表頭 | |
| 字段 | 顯示的數據,基礎字段直接寫字段 | 基礎字段:docName,其他:dynamics.name_name |
| 寬度 | 顯示的列的寬度默認均分,字符長的可以設置寬一點,展示完全部數據 | 20% |
| 列類型 | 序號:一般用在數據列的第一列,方便列表查看,高亮:當該字段是檢索條件時,此處的列類型必選高亮, | |
| 格式化 | 對于金額和時間可以進行不同格式的轉換 | |
| 排序 | 該字段是否能排序顯示 | |
| 排序字段 | 當排序為true時,該字段填寫:字段.original | dynamics.name_name.original |
| 忽略 | 不展示該字段 |
提示
查詢配置有邊可點擊源碼查看該配置的源碼JSON
# 一個典型的源碼例子就像這樣
{
"table": "document",
"filter": {
"terms": {
"docType": [
"PU01"
]
}
},
"queryService": "ElasticSearchSQLService",
"queryCommand": null,
"mobileTemplate": null,
"defaultRows": 10,
"preview": false,
"border": "inner",
"searchItemsDefault": [
{
"name": "關鍵字",
"component": "nk-search-options-text",
"field": [
"dynamics.name_name",
"dynamics.jobNumber_keyword",
"dynamics.position_keyword"
],
"placeholder": null,
"defaultValue": null,
"agg": false,
"defaultOptions": true,
"max": null,
"formatter": null,
"_X_ROW_KEY": "row_302"
},
{
"name": "狀態",
"component": "nk-search-options-single",
"field": "docStateDesc",
"placeholder": null,
"defaultValue": null,
"agg": true,
"defaultOptions": true,
"max": null,
"formatter": null,
"_X_ROW_KEY": "row_303"
},
{
"name": "更新時間",
"component": "nk-search-options-date-range",
"field": "updatedTime",
"placeholder": null,
"defaultValue": null,
"agg": false,
"defaultOptions": true,
"max": null,
"formatter": null,
"_X_ROW_KEY": "row_304"
}
],
"searchItemsMoreDef": [],
"columns": [
{
"field": null,
"title": "#",
"type": "seq",
"width": "5%",
"sortable": true,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_324"
},
{
"field": "docTypeDesc",
"title": "單據類型",
"type": null,
"width": "12%",
"sortable": false,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_325"
},
{
"field": "dynamics.name_name",
"title": "姓名",
"type": "html",
"width": "16%",
"sortable": false,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_326"
},
{
"field": "dynamics.jobNumber_keyword",
"title": "工號",
"type": "html",
"width": "16%",
"sortable": false,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_327"
},
{
"field": "dynamics.position_keyword",
"title": "職位",
"type": "html",
"width": "12%",
"sortable": false,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_328"
},
{
"field": "docStateDesc",
"title": "狀態",
"type": null,
"width": "15%",
"sortable": true,
"params": {
"orderField": null
},
"formatter": null,
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_329"
},
{
"field": "updatedTime",
"title": "更新時間",
"type": null,
"width": "15%",
"sortable": true,
"params": {
"orderField": null
},
"formatter": [
"nkDatetimeFriendly"
],
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_330"
},
{
"field": null,
"title": "操作",
"type": "html",
"width": "",
"sortable": false,
"params": {
"orderField": null
},
"formatter": [
"docLink",
"docId"
],
"ignore": false,
"mobileTemplateFiled": null,
"_X_ROW_KEY": "row_331"
}
],
"creatable": [
{
"docType": "PU01",
"docName": "創建",
"_X_ROW_KEY": "row_343"
}
],
"sortConfig": {
"remote": true,
"trigger": "cell",
"orders": [
"desc",
"asc",
null
]
},
"exportConfig": {
"enable": false
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# 配置格式說明
| 字段 | 描述 | 數據類型 | 默認值 |
|---|---|---|---|
| table | 索引 | String | document |
| title | 頁面Tab標題 | String | null |
| preview | 是否啟用單據預覽 | Boolean | false |
| defaultRows | 默認條目數量 | Integer | 10 |
| postCondition | 數據過濾條件 | JSONObject | null不過濾,顯示索引全部數據 |
| searchItemsDefault | 搜索框 | JSONArray | null |
| searchItemsMoreDef | 更多搜索框 | JSONArray | null |
| columns | 列定義 | JSONArray | null |
# 數據過濾條件 postCondition
postCondition 是一段 ElasticSearch 查詢語法
| 過濾類型 | 描述 | 語法 |
|---|---|---|
| term | 單條件過濾 | {"字段名":"過濾條件"} |
| terms | 單條件多值過濾 | {"字段名":["過濾條件1"、"過濾條件2"、"過濾條件3"]} |
| bool | 多條件過濾 |
提示
更多 ElasticSearch 查詢語法可參考百度
# 搜索框 searchItemsDefault
searchItemsDefault 描述界面的搜索條件框,目前支持下述輸入框類型
提示
當字段被作為檢索條件時,該字段在數據列中的列類型需要設置為高亮
# 通用選項
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段,不可多選 | docName |
| component | 查詢組件 | nk-search-options-suggest |
| condition | 顯示條件 | function |
顯示條件 condition 是一個回調函數,通過函數返回值來決定搜索框是否顯示
{ condition : function(params){ return !!params["dynamics.province_keyword"]; } }1
2
3
4
5
# 搜索提示框 nk-search-options-suggest
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段,不可多選 | docName |
| component | 查詢組件 | nk-search-options-suggest |
| placeholder | 輸入提示 | 請輸入關鍵字 |
注意
搜索提示框僅對部分字段類型有效
# 文本搜索框 nk-search-options-text
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段,可多選 | ["keyword","docName","partnerName"] |
| component | 查詢組件 | nk-search-options-text |
| placeholder | 輸入提示 | 請輸入關鍵字 |
# 下拉框 nk-search-options-single
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段 | |
| component | 查詢組件 | nk-search-options-single |
| agg | 下拉框數據分組統計候選值 | true or false |
| min | 最小顯示寬度 | |
| max | 最大顯示寬度 | |
| placeholder | 輸入提示 | 請選擇 |
# 多選下拉框 nk-search-options-multiple
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段 | |
| component | 查詢組件 | nk-search-options-multiple |
| agg | 下拉框數據分組統計候選值 | true or false |
| min | 最小顯示寬度 | |
| max | 最大顯示寬度 | |
| placeholder | 輸入提示 | 請選擇 |
# 日期區間框 nk-search-options-date-range
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段 | |
| component | 查詢組件 | nk-search-options-date-range |
| placeholder | 輸入提示 | 請選擇 |
# 數值區間框 nk-search-options-number-range
| 過濾類型 | 描述 | 配置參考 |
|---|---|---|
| name | 查詢字段描述 | 搜索 |
| field | 查詢字段 | |
| component | 查詢組件 | nk-search-options-number-range |
| from | 最小值 | |
| to | 最大值 | |
| placeholder | 輸入提示 | 請選擇 |
# 更多搜索框 searchItemsMoreDef
提示
跟searchItemsDefault一樣,searchItemsMoreDef同樣配置搜索框;
與searchItemsDefault區別是,更多輸入框默認不顯示,折疊在更多下拉菜單中,需要用戶手動點擊選擇;
這樣的好處是可以減少搜索框對界面版幅的占用
# 列定義 columns
| 屬性 | 描述 | 配置參考 |
|---|---|---|
| title | 字段標題 | |
| field | 顯示字段 | |
| width | 字段寬度,默認px,可顯示指定為% | 80, 15% |
| type | 列類型,可設置序號或者高亮 | |
| formatter | 格式化 | percent, currency, datetime等 |
| sortable | 是否可排序 | true or false |
| params.orderField | 對于text類型的字段,如果排序則需要指定該字段的原始數據字段,一般情況下為field.original | name.original |
# 掛載到主菜單
電梯:https://loan.elcube.cloud/#/apps/settings/menus (opens new window)
在菜單設置中,增加一個菜單項,并設置路徑屬性為/apps/q/查詢頁面的模型類型
提示
/apps/q/docType 是一個預定義的Vue路由,它指向一個動態表格頁面的Vue組件
# 菜單屬性
| 字段 | 描述 | 配置參考 |
|---|---|---|
| 菜單 | 顯示在主菜單上的文字描述 | |
| 圖標 | 顯示在主菜單上的圖標,僅一級菜單有效 | |
| 路徑 | Vue的路由地址 | |
| 權限 | 權限KEY,多個權限可以使用|分割,用戶擁有任意權限即可顯示該菜單 |
# 為單據增加自定義索引
提示
默認情況下,查詢界面只能處理單據模型的基礎字段,通過增加自定義索引列,可以為單據模型提供更多字段選擇
# 基礎字段
| 字段 | 描述 | 索引類型 |
|---|---|---|
| docId | 單據ID | keyword |
| docName | 單據名稱 | text |
| docType | 單據類型KEY | keyword |
| docTypeDesc | 單據類型描述 | keyword |
| docNumber | 單據編號 | keyword |
| docState | 單據狀態KEY | keyword |
| docStateDesc | 單據狀態描述 | keyword |
| docDesc | 單據描述或備注 | text |
| docDefVersion | 單據配置版本 | keyword |
| createdTime | 創建時間 | date |
| updatedTime | 更新時間 | date |
| preDocId | 前序單據ID | keyword |
| refObjectId | 根單據ID | keyword |
| tags | TAG標簽數組 | keyword |
| partnerId | 交易伙伴ID | keyword |
| partnerName | 交易伙伴名稱 | text |
| processInstanceId | 工作流實例ID | keyword |
| classify | 單據分類 伙伴或交易 | keyword |
| dynamics | 動態字段對象 | object |
# 為單據增加索引字段
在單據配置詳情-業務邏輯-索引字段中添加索引字段
| 字段 | 描述 | 說明 |
|---|---|---|
| 索引名 | 添加到單據索引中的key值 | |
| 索引類型 | 字段的數據類型與索引規則 | |
| SpEL | 字段的取值邏輯 |
提示
添加的索引字段,在單據保存時會同步到ElasticSearch的索引中,作為自定義菜單的數據源使用;
字段命名規則如下:
dynamics.[索引名]_[索引類型] 索引字段
dynamics.[索引名]_[索引類型].original 分詞類型的原始字段
# 創建樹查詢-NkQueryTree|樹查詢
提示
通過樹查詢配置,再搭配NkQueryGrid | 查詢卡片,可以配置出樹形數據結構,可應用于用戶組織架構等場景
例如:組織架構從上到下分為:部門PUDE,小組PUGR,員工PU01
小組則是部門的后序單據
員工單據中需要選擇部門和小組,并且增加索引字段dynamics.zzjg_keyword,EL取值為部門和小組的docId:{data.Department?.name?.docId,data.Group?.name?.docId}
# 配置樹查詢頁面
在開發-模型中新建一個模型程序為用戶頁面的單據模型,功能卡片選擇'NkQueryTree|樹查詢'和'NkQueryGrid|查詢'
| 字段 | 描述 | 示例 |
|---|---|---|
| 索引 | 默認document | |
| 數據過濾 | 所有上級的單據類型 | { "terms": { "docType": [ "PUDE", "PUGR" ] } } |
| 上級字段 | 樹形的上下關聯關系 | preDocId |
| 顯示字段 | 樹形的顯示字段 | docName |
| 過濾條件字段 | dynamics.zzjg_keyword |
提示
NkQueryGrid|查詢 卡片的配置則以員工單據為主