前言
该系列接口共分为:
1、获取搜索展示的元数据
2、获取搜索元数据中需要动态加载的选择框内容项
3、获取搜索或滚动结果中对应字段的显示字段描述
5、高级搜索接口
高级搜索组件代码示例
search-components 运行前请查看[README.md]文件
元数据接口
获取元数据接口-标准版
接口详见:https://openapi.xiaolanben.com/#/api-detail?id=4035
该接口为获取标准版搜索条件元数据信息,该接口结果一般条件下都不会发生变化,建议缓存1天以上。渲染效果如下图:

获取元数据接口-高级版
接口详见:https://openapi.xiaolanben.com/#/api-detail?id=4030
该接口为获取高级版搜索条件元数据信息,该接口结果一般条件下都不会发生变化,建议缓存1天以上。渲染效果如下图:



响应体信息结构
条件分组
groupCode: 分组的代码
groupDesc: 分组的名称
searchFieldMetadataList: 该分组下有的条件字段元数据列表, 需要注意的是,同一个条件字段,可能会在不同的条件组里都存在
条件字段
id: 该条件的标识ID,可以不回传
field: 条件搜索对应的字段标识
fieldName: 条件字段的名称,搜索时不需要回传
renderType: 页面展示的格式,分为以下几个种
类型 | 样式 | 备注 | 组装value值示例 |
input | 输入框样式 | 用于文本字段的包含搜索;搜索时上行用户输入文本,包含任意一个则为符合条件 | “value”:[“天下文章”,”英雄传”] |
simpleSelect或 dateSelectPicker |
单选框样式 | 单选框呈现内容来自renderData字段,label用于显示,value用于回传,以单值方式回传 | “value”:”是独角兽企业” |
multiSelect | 多选框样式 | 多选框呈现内容来自renderData字段,label用于显示,value用于回传,以数据方式回传 | “value”:[“员工_10人以下”,”员工_20人以上”] |
valueRange | 值范围格式 | 两个值范围的输入框,上行时转换为{min: 第一个输入框的值, max: 第二个输入框的值} | “value”:{min: 3, max: 10} |
dateRangePicker | 日期范围选框 | 呈现日期为从yyyy-MM-dd至yyyy-MM-dd的选择框,上行时转换为{“start”:开始时间戳,”end”:结束时间戳} | “value”:{“start”:1667232000000,”end”:1667491200000} |
multiCascader | 多级级联样式 | 如该字段有包含multiCascaderType: 如multiCascaderType=areas,则该级联元数据为https://h5.u51.com/web.u51.com/storage/static-configs/areas.json 其它包含multiCascaderType的,则该级联元数据为https://h5.u51.com/web.u51.com/storage/static-configs/{multiCascaderType}.json 需要注意的是areas与其它的级联结构不完全一至 如果该字段没有包含multiCascaderType的,则读取该字段下的renderData呈现 搜索时,以两层数组的方式回传结果 |
“value”:[[“浙江”,”杭州市”,”西湖区”],[“广东”],[“山东”,”济南市”]] |
locationSelect | 地理位置框 | 在根据baiduAPI,搜索定位中心点,然后选择距离范围,上行时转换为(米与定位点)。 | “value”:{“distance”: 3000,”name”: “杭州东站”,”location”: {“lat”: 30.297149,”lng”: 120.219396}} |
fuzzy | 输入下拉选择框模式 | 该下拉选项需要根据field值调用接口2,获取动态下拉的内容; 如果觉得开发复杂,也可以用输入框样式代替 |
operate: 当为输入框样式或多选框样式时,用于显示 『包含任一』或『都不包含』
unit: 当是值范围样式时,用于在样式后面呈现单位,如 ____至____元,的【元】
renderData: 显示单选、多选、级联框内的样式,注:级联样式时,如有multiCascaderType,则该字段无效
fieldGroup: 字段条件组,当该字段有值时,同一个组的条件可以作为父条件的附加条件呈现
multiCascaderType: 当页面呈现类型为multiCascader时,如果有该值存在,参考多级级联样式
组装搜索条件的信息结构
{
"sortKey": "",
"ascSort": false,
"pageIndex": 1,
"pageSize": 10,
"query": {
"logic": "AND",
"children": [
{
"type": "searchRule",
"searchRule": {
"field": "q_tags",
"renderType": "simpleSelect",
"operate": "",
"value": "是独角兽企业"
}
},
{
"type": "searchGroup",
"searchGroup": {
"logic": "OR",
"children": [
{
"type": "searchRule",
"searchRule": {
"field": "name",
"renderType": "input",
"operate": "contain",
"value": ["天下文章","英雄传"]
}
},
{
"type": "searchRule",
"searchRule": {
"field": "zhaopin_1y.date_at",
"renderType": "dateRangePicker",
"operate": "",
"fieldGroup": "zhaopin_1y",
"value": {
"start": 1667232000000,
"end": 1667491200000
},
"additionSearchRules": [
{
"field": "zhaopin_1y.src",
"renderType": "multiSelect",
"operate": "contain",
"fieldGroup": "zhaopin_1y",
"value": [
"智联招聘",
"前程无忧"
]
}
]
}
},
{
"type": "searchRule",
"searchRule": {
"field": "esage",
"renderType": "valueRange",
"operate": "",
"fieldGroup": null,
"value": {
"min": 1,
"max": 3
}
}
}
]
}
}
]
}
}
信息结构说明
外层结构
sortKey: 排序的字段,主要参考数据列元数据接口下行的数据; 如果不传,则表示后台使用智能排序
ascSort: 如果为false,则为倒序;如果为true则为升序排序
pageIndex: 页面起始索引号,从1开始
pageSize: 每页返回记录大小,最小1,最大20; 注意:pageIndex*pageSize不得超过1万,否则系统不会有响应
query: 高级搜索条件
高级搜索条件
logic: 当前层多条件之间的逻辑关系,AND是表示多条件满足;OR满足一条即可
children: 当前层的条件数组
高级搜索条件–嵌套分组条件
type: 固定为searchGroup; 表明当前条件是一个分组条件
searchGroup: 搜索条件组,内部为嵌套的一层条件;系统仅支持下一层嵌套
高级搜索条件–规则条件(字段条件)
type: 固定为searchRule;表明是字段规则条件
searchRule: 指定的字段搜索条件
–field: 搜索元数据字段中的field值直接回传
–renderType: 搜索元数据字段中的renderType的值直接回传
–operate: 如果为多选、输入框样式时,必须回传元数据字段中的operate其中的一个值,注意:不能以数组方式回传
–fieldGroup: 搜索元数据字段中的fieldGroup的值直接回传
–value: 根据字段的renderType不同,组装回传的值;输入框/单选的直接回传具体的值,如果是多选回传的是值数组,…
–additionSearchRules: 附加条件组,仅支持上一层存在fieldGroup时,才歌词附加条件,且附加条件组中的字段的fieldGroup必须与上一层相同
— processor 处理value所需要用到的处理器。如果下行的有条件有该值的,则需要同步回传
获取元数据中动态加载的下拉项
接口详见:https://openapi.xiaolanben.com/#/api-detail?id=4040
如【业务标签】该条件时,标签下拉项需要根据输入的条件动态从服务端拉取加载

当用户在输入框输入【经营】时,则需要调用该接口获取下拉的内容项
入参说明
属性 | 描述 | 备注 |
type | 动态获取数据的类型,取自字段条件中的field | 如业务标签:ent_tags |
keyword | 用户输入的字 | 如:经营 |
响应体信息结构
详见接口
获取搜索或滚动结果中对应字段的显示字段描述
接口详见:https://openapi.xiaolanben.com/#/api-detail?id=4050
该接口用于描述搜索或滚动响应的数据列表中的字段的中文描述及是否支持排序等信息,该接口一般条件都不会发生变化,建议缓存1天以上
响应体信息结构
{
search: {
advancedSearchColumns: '{"columns":[{"field":"name","fieldName":"企业名称","mandatory":true,"visible":true,"sortable":false,"appSortable":null,"dataType":null,"format":null,"defaultZero":null}]}'
}
}
在colums中的每条记录,均对应下方的元数据信息结构
信息结构
field:对应搜索响应列表中的字段名
fieldName:文书人字段的中文名
mandatory: 如果为true, 建议显示时固定在表格的右边
visible: 暂无用
sortable: 如果为true,则表示支持以该的field做排序
dataType: 数据类型:number:数值 text:文本 date:日期
format: 格式化类型
defaultZero:暂无用
高级搜索接口
接口详见:https://openapi.xiaolanben.com/#/api-detail?id=4060
注意:该接口需要使用POST方式请求
该接口是根据接口1中获取的元数据,用户组装生成请求体,获取最终的搜索结果
注意:该接口请求中pageIndex*pageSize的值必须小于10000
接口参数 queryType 特殊说明
queryType可用于控制keyword 参数及应用场景使用,具体取值如下 :
参数不传或空 | 智能搜索,keyword 参数搜索范围包含 企业名、项目、人物姓名、经营范围、产品等 |
mapExpandCustomer | 地图拓客场景,会基于distance/latitude/longitude参数优先距离排序输出 |
COMPANY_NAME | 仅搜索企业名 |
COMPANY_PERSON | 仅搜索法人、董监高等人名 |
COMPANY_PRODUCT | 仅搜索产品 |
COMPANY_PROJECT | 仅搜索项目名 |
COMPANY_LABEL | 仅搜索企业泛标签 |
COMPANY_ADDRESS | 仅搜索企业地址 |
COMPANY_OPSCOPE | 仅搜索经营范围 |
COMPANY_CCGP | 仅搜索招投标 |
COMPANY_ZHAOPIN | 仅搜索招聘岗位 |
COMPANY_AD_KEYWORD | 仅搜索企业推广信息 |
COMPANY_CONTACT | 仅搜索企业联系方式(号码) |
响应体信息结构
详见接口文档
信息结构
pageIndex: 请求的页码
pageSize: 请求的页面大小
totalCount: 搜索总命中记录数
data: 详细命中的企业信息,当中每条记录的字段均可以使用上方字段描述接口获取
extData: 扩展数据,供参考
searchKey: 搜索的标识,暂无用
搜索滚动拉取数据
高级搜索接口中仅能获取搜索的前1万条记录,当需要获取更多数据的场景时,则需要使用搜索滚动拉取数据的方案。
注意:此方案接口需要向管理员申请开通
DEMO: openapi-scroll-demo

高级搜索开始滚动-beginScroll
接口详见:https://openapi.xiaolanben.com/#/ent/api-detail?id=4705
注意:该接口需要使用POST方式请求
该接口请求参数与高级搜索接口一至,是根据接口1中获取的元数据,用户组装生成请求体,获取最终的搜索结果
响应体信息结构
详见接口文档
高级搜索继续滚动–doScroll
接口详见:https://openapi.xiaolanben.com/#/ent/api-detail?id=4706
该接口入参scrollId值取自beginScroll或上一次doScroll的响应体right中的值