# URL参考

# URL规则

规则:

  1. 所有系统提供的URL参数都以冒号开头,如:edit:filters

通用参数:

  1. :user:password:cipherPassport - 见在url上输入用户ID密码登录
  2. access_token - 用于根据令牌登录系统
  3. :embedded - 传true时表示页面是被嵌入到其它的页面中的,此时会给html的body元素上添加一个class:embedded,开发者可以通过编写custom.css来重载相应的样式。

# 访问文件型资源

通过URL可以直接访问系统内的一个文件型资源(如仪表板、报表、图片……),URL结构如下:

  1. 通过路径访问:http://{IP或域名}:{端口}/{WEB根}/{项目名称}/{文件路径(含后缀)}
  2. 通过资源ID访问:http://{IP或域名}:{端口}/{WEB根}/fid/{资源ID}}
  3. :preview 传递true表示不需要查询所有数据,比如默认查询最多5000行数据(系统设置有阈值设置),且不显示工具按钮
  4. :animation 传递false时禁用所有动画(例如为了尽快产生缩略图)

通用参数:

  1. :edit - 进入对应资源的编辑或设计界面,需要有相应的权限。
  2. 通过参数名或输入控件名称传递值,如仪表板或报表支持将参数或输入控件的值作为URL参数传递进来,如input1=20190201

# 报表、仪表板URL

如:

  1. https://demo.succbi.com/DEMO/ana/行业应用/服饰企业/完成率分析.dash (opens new window)
  2. https://localhost/DEMO/ana/my-dash1.dash (opens new window)

报表仪表板支持如下参数:

  1. :edit - 对于仪表板、报表、应用、表单等对象,传递true将进入设计器模式。
  2. :filters - 传递给仪表板、报表的个性化过滤条件,过滤条件可以作用到全局、指定数据源、指定控件,更多说明见下文。
  3. :breadcrumb - 该参数用来控制打开的对于仪表板、报表文件是否在顶部显示面包屑,面包屑用于显示对应元数据的钻取路径,参数值可以为:
    1. auto:按需显示。开始不显示面包屑,当发生钻取且显示方式为当前容器时,则显示钻取路径的面包屑。
    2. none:不显示。总是不显示面包屑,此参数的优先级高于链接交互中的配置,同时也会影响表单应用中的面包屑显示。如果不显示面包屑,仪表板等可通过‘返回上页’交互返回钻取前的页面,表单内部通过关闭按钮返回。
    3. show:总是显示。一开始就显示面包屑,面包屑内容为当前打开的元数据名称。
  4. 其他参数或输入控件 - 仪表板或报表支持将参数或输入控件的值作为URL参数传递进来,key为控件ID,value为值,如:
    1. input1=420100
  5. :showParamsPanel - 该参数用于控制报表参数栏显示、隐藏,传递false表明要隐藏参数栏。该参数仅在报表使用。

:filters参数说明:

  1. 支持两种格式,一种是表达式,一种是JSON,不管是表达式还是JSON,都需要进行编码(如使用javascript的encodeURIComponent()函数编码)。
  2. 当使用表达式时,表示一个过滤条件表达式字符串,作用范围为全局,例如要传递XS_DAY.JGDC='01' and XS_DAY.XSSL>1000作为全局条件给仪表板,URL如:https://localhost/DEMO/ana/my-dash1.dash?:filters=XS_DAY.JGDC%3D'01'%20and%20XS_DAY.XSSL%3E1000
  3. 当使用JSON时,可以构造完整的字段过滤和表达式过滤,并自定义作用范围,例如要传递如下条件:
[{
    "range": "1",//作用到:1:画布,2:数据源,3:控件,默认为1
    "exp":"XS_DAY.JGDC='01'",//表达式过滤条件
    "matchAll": true,//为true时表示and,false为or,使用clauses时有效
    "target": ["XS_DAY"],//作用目标,当range为2时,表示目标数据源的名称;range为3时,表示控件名称或ID。
    "clauses":[{
        "exp": "XS_DAY.JGDC='01'",
        "leftExp": "XS_DAY.YEARMONTH",
        "operator": ">=",
        "rightExp": "today()",//右值为表达式
        "rightValue": "20190101"//右值为常量值
    }]
}]

URL如下(用encodeURIComponent(JSON.stringify({你的JSON参数})))编码):

https://localhost/DEMO/ana/my-dash1.dash?:filters=%5B%7B%22range%22%3A%221%22%2C%22exp%22%3A%22XS_DAY.JGDC%3D'01'%22%2C%22matchAll%22%3Atrue%2C%22target%22%3A%5B%22XS_DAY%22%5D%2C%22clauses%22%3A%5B%7B%22exp%22%3A%22XS_DAY.JGDC%3D'01'%22%2C%22leftExp%22%3A%22XS_DAY.YEARMONTH%22%2C%22operator%22%3A%22%3E%3D%22%2C%22rightExp%22%3A%22today()%22%2C%22rightValue%22%3A%2220190101%22%7D%5D%7D%5D

# 模型表URL

如:

  1. https://demo.succbi.com/DEMO/data/tables/dataflow/DF_1.tbl (opens new window)

模型表URL支持如下参数:

  1. :edit - 进入模型管理界面,默认false。
  2. :viewer - 默认为data,可以传递:
    1. data - 进入模型数据查询界面
    2. linkages - 显示模型的血统分析界面
    3. fields - 显示模型的字段列表界面
    4. relations - 显示模型的关联关系界面
    5. dataflow - 显示模型的加工流程图
    6. hierarchy - 显示模型的层次界面
    7. settings - 显示模型的基本设置界面

:viewer传递data时,可以使用如下更多参数配置:

  1. :fields - 指定显示出来的字段,不传递时显示所有字段,可以传递如下值:
    1. 一个JSON数组或者一个逗号(或竖线)分割的字段名(物理字段名或字段名)列表。
  2. :moreFields - 指定哪些可选的输出字段,这些字段默认不显示出来,但是用户可以添加到查询结果中
  3. :titleVisible 是否显示标题,不传递时默认不显示标题,传递true显示标题。
  4. :title - 默认取元数据描述(没有描述取名称)作为标题,可以传递一个指定的标题。
  5. :limit - 每页行数,默认100。
  6. :queryTotalRowCount - 是否查询总行数,默认查询,传递false时不查询总行数,可以节省一些数据库资源。
  7. :filter - 传递一个表达式过滤条件,只查询满足此条件的数据。
  8. :paramFields - 指定默认显示哪些字段当作可选过滤条件,不传递时显示前5个维键字段,可以传递如下值:
    1. 数字,如3,表示显示前3个维键字段
    2. 一个JSON数组或者一个逗号(或竖线)分割的字段名(物理字段名或字段名)列表
    3. 一个JSON,key是物理字段名或字段名,value是字段对应的默认值
  9. :moreParamFields - 指定哪些可选的条件过滤字段,这些字段默认不显示出来,但是用户可以添加进来,不传递时所有维键字段都是可选的,可以传递如下值:
    1. 一个JSON数组或者一个逗号(或竖线)分割的字段名(物理字段名或字段名)列表
    2. 一个JSON,key是物理字段名或字段名,value是字段对应的默认值
  10. :sortField - 指定排序字段,默认不排序,可以传递一个字段的字段名或物理字段名,默认升序,可以在字段名后面加一个空格后输入descasc指定降序或升序,如需对多个字段进行排序传递多次此参数即可。
  11. :allowExport - 是否显示导出按钮,默认显示。
  12. :allowSelectCell - 是否能框选单元格,默认false。
  13. :allowChangePageSize - 是否允许切换每页行数,默认true。
  14. :rowLink - 指定一个宏字符串表示点击行后定位到的路径,宏中可以使用当前输出的字段或条件字段作为变量。
  15. :rowLinkTarget 行链接默认显示的位置,可以指定如下值:
    1. dialog 在对话框中打开
    2. _blank 在新浏览器标签页中打开
    3. _self 在当前浏览器标签页中打开
    4. container 在当前容器中打开,此时会在容器上方显示钻取路径,点击路径可以回到钻取前的页面
  16. :fieldsLink - 指定具体的字段的连接设置,是一个json,key是字段名或物理字段名,value是一个json包含link、target 属性。

# ActiveDoc URL

显示一个文档(docx、pptx、pdf等)的预览效果,URL如:

  1. https://demo.succbi.com/DEMO/app/SuperPage.app/test.d.docx?param1=xx&param2=yy (opens new window)

支持如下参数:

  1. :toolbar - 是否显示工具栏,可选:visible显示工具栏(默认), hide隐藏
  2. :scale - 缩放设置,可选:auto自动缩放, page-actual实际大小, page-fit适合页面, page-width适合宽度, 0.5表示50%, 0.75表示75%, 3表示300%...
  3. :sidebar - 是否显示侧边栏,visible表示默认侧边栏可见,hide表示默认侧边栏隐藏(默认)
  4. :sidebarView - 侧边栏显示大纲还是缩略图,thumbnail表示侧边栏默认显示缩略图,outline表示侧边栏默认显示大纲(默认)
  5. :printButton - 是否显示打印按钮,visible显示(默认), hide隐藏
  6. :downloadButton - 是否显示下载按钮,visible显示(默认), hide隐藏
  7. :bookmarkButton - 是否显示书签按钮,visible显示(默认), hide隐藏
  8. :mouseWheelZoom - 默认时按ctrl+鼠标滚轮可以缩放页面,设置为true时鼠标滚轮将直接缩放页面无需按下ctrl
  9. :textSelect - 是否能选择文本,默认true
  10. :dragScroll - 默认时按ctrl+鼠标拖动可以滚动页面,设置为true时鼠标拖动将直接滚动页面无需按下ctrl
  11. :cache - 传递false表示忽略缓存,重新刷新文档(但本次刷新的结果还是会缓存起来供下次使用),默认系统会使用缓存尽量快速的显示文档。
  12. :viewSource - 传递true表示不运行动态文档,直接预览或下载源文件(需要有源文件的编辑权限)
  13. :viewMode - 可传递pageweb,对应word的Web版式和页面版式,对word文档和pdf有效
  14. :export - 传递此参数表示此URL是要导出文件的(如果浏览器支持预览pdf或docx,那么浏览器会自动使用原生功能预览),参数值表示导出的格式或文件名:
    1. pdf: 导出pdf
    2. true: 表示文档原来的格式。
    3. xxxxxx.pdf: 同时指定文件名和类型,此时浏览器将总是下载并保存文件,并不会预览文件

# 表单应用URL

用于显示一个表单应用,或者表单应用内部的某个子功能页面,URL如:

  1. https://demo.succbi.com/DEMO/fapp/流程/报销申请.fapp (opens new window)

表单应用URL支持如下参数:

  1. :edit - 进入应用设计界面。
  2. :tab - 显示指定的标签,如todo
  3. :tabs - 显示多个标签,顶部有标签页切换。
  4. :newData - 进入表单填写界面,开始一个新的流程申请、或者打开编辑一个已存在的数据。
  5. :hideNewDataButton - 隐藏“新申请”按钮。
  6. :dataPeriod - 显示某个数据期的数据,适用于周期填报应用。
  7. :orgId - 显示某个单位或部门的数据。
  8. :detailId - 显示某个明细数据。
  9. :form - 默认显示哪张表单。
  10. :forms - 显示哪些表单,逗号分隔,不传默认显示全部
  11. :hideForms - 隐藏哪些表单,逗号分隔,从目前可以显示的表单中,剔除掉
  12. :readonly - 用只读方式显示表单。
  13. :embedForm - 可传入true指定为嵌入表单形式,此时不会显示填报单位树、数据列表、工具栏等元素。一般在SuperPage、报表中打开某个表单数据时使用。传入此参数时,需传入完整的数据级次参数(有三个:dataPeriod:orgId:detailId,根据应用的类型需要传入1个到3个)。
  14. :XXX_Select - 设置过滤条件栏(包括左侧树和工具栏)上的维树选中的节点,参数名为:主模型字段名_Select的形式,多个值用逗号分隔,如:DEPT_Select=1000,表示部门树默认高亮选择节点1000。
  15. :XXX_RootItems - 设置过滤条件栏(包括左侧树和工具栏)上的维树的根节点,参数名为:主模型字段名_RootItems的形式,多个值用逗号分隔,如DEPT_RootItems=1000,表示部门树只显示1000的子节点。
  16. :XXX_Filter - 两种场景:1. 设置过滤条件栏(包括左侧树和工具栏)上的维树的过滤条件,参数名为:主模型物理字段名_Filter的形式;2. 设置装载数据时模型的过滤条件,参数名为:模型别名.物理字段名_Filter。可传入一个值和多个值,多个值用逗号分隔,如:DEPT_ID_Filter=001:JCB.JG_Filter=1,2

# 我的工作URL

如:

  1. https://demo.succbi.com/DEMO/my-tasks (opens new window)
  2. https://demo.succbi.com/DEMO/my-tasks/todo (opens new window)

我的工作URL支持如下参数:

  1. :visibleTabs - 显示的标签,多个标签用逗号分隔。不支持直接打开一个标签时使用。
  2. :tab - 默认显示的标签。不支持直接打开一个标签时使用。

# 登录界面URL

  1. 可定制登录界面:https://demo.succbi.com/login (opens new window)
  2. 默认登录界面:https://demo.succbi.com/login/default (opens new window)

登录界面URL支持如下参数

  1. redirect_url:登录成功后跳转的地址:
    • 仅支持传递一个以/开头的相对地址,登录成功后跳转到系统内对应的相对地址,注意:一定不会根据传入地址上下文跳转到其他系统
    • 请对参数进行URL转义 (opens new window)

# 健康检测URL

用于界面检测与服务器的通讯状态。URL:

  1. https://demo.succbi.com/api/sys/health-info (opens new window)

返回值和状态说明:

  1. 该接口关注的只是服务器是否能够通讯,接口里直接返回ok

# 附件下载URL

用于下载或者预览附件,URL如:

  1. 下载单个附件
    https://demo.succbi.com/api/dw/services/downloadAttachment?preview=false&resIdOrPath=/TestCase/data/tables/TESTCASE/attachment/test_dwAttachment.tbl&keys=["4febf2e53ca84640a4479e578e85ced0"]&fileField=文件内容字段&zipFile=true (opens new window)
    参数解析:
{
    "preview": false,
    "resIdOrPath": "/TestCase/data/tables/TESTCASE/attachment/test_dwAttachment.tbl",
    "keys": ["eb232959ef714d35b7459597b1c93e7a"],
    "fileField": "文件内容字段",
    "zipFile": true
}
  1. 预览附件
    https://demo.succbi.com/api/dw/services/downloadAttachment?preview=true&resIdOrPath=/TestCase/data/tables/TESTCASE/ana/test_spg.dash&queryId=model2&keys=["4febf2e53ca84640a4479e578e85ced0"]&fileField=文件内容字段 (opens new window)
    参数解析:
{
    "preview": true,
    "resIdOrPath": "/TestCase/data/tables/TESTCASE/ana/test_spg.dash",
    "queryId": "model2",
    "keys": ["eb232959ef714d35b7459597b1c93e7a"],
    "fileField": "文件内容字段"
}
  1. 批量下载附件
    https://demo.succbi.com/api/dw/services/downloadAttachment?preview=false&resIdOrPath=/TestCase/data/tables/TESTCASE/attachment/test_dwAttachment.tbl&fileField=文件路径字段&dataKeyMap={"id":["9248db7a2e5b4e868646dfffa17329a9","8534431408e244b9a705e87e57a3046c","37be68098cfb4ea3a7a8b7b96bbb22af"]}&fileName=下载压缩附件.zip (opens new window)
    参数解析:
{
    "preview": false,
    "resIdOrPath": "/TestCase/data/tables/TESTCASE/attachment/test_dwAttachment.tbl",
    "fileField": "文件路径字段",
    "dataKeyMap": {
        "id":["9248db7a2e5b4e868646dfffa17329a9","8534431408e244b9a705e87e57a3046c","37be68098cfb4ea3a7a8b7b96bbb22af"]
    },
    "fileName": "下载压缩附件.zip"
}
  1. 预览下载临时附件
    https://demo.succbi.com/api/dw/services/downloadAttachment?preview=false&fileId=33e2ff76b09d11a544fba4986a60d2dd55eb-20200213210429.png (opens new window)
    参数解析:
{
    "preview": false,
    "fileId": "33e2ff76b09d11a544fba4986a60d2dd55eb-20200213210429.png"
}

参数说明:

  1. resIdOrPath - 发起查询的资源uuid或路径,可以是报表或spg,也可以是附件模型表本身。如果是报表或spg,则需要传入参数queryId
  2. queryId - 查询约束id。一般是spg中的附件模型id或者别名,后端会根据这个queryId在后端找到真正的附件表
  3. fileField - 文件角色字段名(或者物理字段名)。附件表可能有多个文件字段,需要指定使用哪个文件字段
  4. keys - 下载或预览单个附件的过滤条件,参数格式和使用说明见下文
  5. dataKeyMap - 批量下载附件的过滤条件,可选。keysdataKeyMap只有一个生效,若已传入keys,则此参数无效。参数格式和使用说明见下文
  6. zipFile - 下载的附件是否需要压缩,可选。当下载的附件只有一个时,会根据此参数决定是否仍然需要进行压缩后下载,默认不压缩。其他情况:下载多个附件时,始终压缩;预览时,此参数无效。
  7. fileName - 指定下载附件的名称,可选。下载单个附件时,默认下载名称为附件名字段对应的名称;下载多个附件时(zip压缩文件),默认下载名称为后台根据下载附件id自动生成的名称。
  8. preview - 传递true表示预览,下载附件只有1个时生效;传递false表示下载,默认false。
  9. fileId - 临时附件id,可选。项目需求:上传的附件没有上报到附件表时,直接根据临时id预览下载临时上传的附件。该场景下,只需要传入previewfileId,其他参数不需要。
  10. 参数中可能包含中文或者特殊字符,因此需要最后对url编码一次(encodeUrl(url))。

keysdataKeyMap参数说明:

  1. keys为附件字段的主键值数组的JSON字符串,用来过滤得到唯一附件。例如:附件表有一个主键attachmentId,想要下载主键为abc的附件,主键数组就为["abc"]keys通过JSON.stringify(主键数组)获取。
  2. dataKeyMap为附件表中字段名(或者物理字段名)和值的键值对的JSON字符串,用来过滤得到对应条件的多个附件。键值对map示例:
//匹配class为"abc"的附件
{
    "class": "abc"
}
//匹配dept为"1"或者"2"的附件
{
    //值可以是数组,各个值为“或”的关系
    "dept": ["1","2"]
}
//匹配dept为"1"或者"2"并且class为"abc"的附件
{
    //可以有多个键值对,键值对之间是“且”的关系
    "dept": ["1","2"],
    "class": "abc"
}

同样的,键值对的JSON字符串需要通过JSON.stringify(键值对)获取。

是否有帮助?
0条评论
评论