字段href
概述
- 在列表和表单详情一对多关联表列表中, 点击单元格可跳转链接.
- 可以配置外部链接、系统内路由、弹出窗口
- 并且对于关联表的单元格点击,可先调用JS增强, 动态修改字段href,
配置
在页面属性-字段href输入框书写123
- 外部链接: 以
http
开头的外部链接 - 系统内路由: 以
/
开头的系统内部路由 - 弹窗自定义组件:以
.vue
为后缀的文件路径, 从views文件夹开始(不必写views) - 如果需要JS 增强, 对被关联的表配置JS增强, 只针对一对多关联表生效, 并且是详情(禁用)状态下下点击生效, 对被关联的表配置JS增强, JS增强返回的值可以为:
- 返回null, undefaind, false 不继续向下执行
- 返回对象
- next: 是否继续执行, true/false
- fieldHref: 重新定义fieldHref, 这个字段为空则使用页面属性配置的fieldHref
- closeAutoModal: 是否关闭表单弹窗,跳转系统内路由时需要关闭, true/false
备注
- 链接内可书写
${variable}
, variable会替换为: 当前列表行内容的这个字段的值record.variable
- JS增强可返回同步的值, 如false, {next:true}; 可在JS增强中调接口,返回promise,
return new Promise(resolve=>{setTimeout(()=>resolve({next:true}),2000)})
配置外链
- https://www.baidu.com/#ie=UTF-8&wd=${fd_text}
- 点击单元格时, 会打开一个新的浏览器窗口, 跳转到百度搜索,并且搜索关键词为
record.fd_text
的值
配置内部路由
- /online/cgformList/bde7543ab42547c480772ae923813641?fd_name=${fd_text}
- 点击单元格时, 跳转系统内部路由, 并且查询参数
姓名
的值为record.fd_text
的值 - 效果图
配置弹窗组件
modules/online/cgform/auto/OnlCgformAutoList.vue?propCode=8a828b997e7240f5017e724858b40002&fd_name=${fd_name}&isModalList=1
-
点击单元格, 会打开一个弹出窗口, 弹窗内容时该路径对应的Vue组件,传递给该组件一些参数
- 将?后面的查询字符串解析成一个对象, 传递给该组件当作
props
- 如果需要打开内置的列表组件, 需要传递固定的prop名称
propCode
, 其余的属性当作查询项参数传递给内置列表
- 将?后面的查询字符串解析成一个对象, 传递给该组件当作
-
效果图
示例:结合JS增强使用(养老服务对象详情-三种津贴关联表动态打开不同列表)
-
通过服务对象表的关联表配置, 找到被关联的表, 记录需要用到的信息, 关联表名,关联字段
-
配置关联表的发放次数字段href(点击这个会执行操作), 页面属性配置fieldHref, 因为是动态计算的, 可以随便写一个数(详情加载动态表单组件是条件加载的,这一步没有值就不渲染)
-
配置服务对象表的JS增强, form页面
-
配置点击单元格打开的高龄津贴列表JS增强, 去掉部分字段, 操作列
-
配置步骤
-
效果图
对应JS增强
// 详情下点击关联表单元格
// 函数名是固定的
// 参数1: 是onlineForm对象, 可获取当前表单每个字段的数据
// 参数2是事件对象, 可获取当前点击的row对应的信息, 和 单元格信息
// 参数3是jvxetable对象(列表) , 可获取整个表格的数据, 目前用不到
onClickLinkTableCell(onlineForm, event, jvxeTable){
console.log("onClickLinkTableCell:",{onlineForm, event, jvxeTable});
// 点击关联表单元格
const tab = onlineForm.activeTab; // 获取当前激活的tab页名(关联表名), 因为有多个tab页
const key = event.column.property; // 获取点击的是哪个字段
const value = event.row.fd_send_type; // 获取这一行的发放类型
// 如果点击的不是我们想要的关联表 和想要的单元格, 不操作
if(tab !== 'link_uv_elec_bas_fund_send_static') return
if(key !== 'fd_count') return
// 如果点击的发放类型不是 困难,高龄,失能 不操作
if(![105003,105001,105002].includes(value)) return
let code = '';
// 获取不同的code, 也就是online表的ID
if(value === 105003){
// 高龄
code = '8a828b997e7240f5017e724858b40002'
} else if(value === 105001){
// 困难
code = '8a828b997e7240f5017e72481c4a0001'
} else{
// 失能
code = '8a828b997e7240f5017e7240f5a20000'
}
// 返回next代表继续操作
// 返回fieldHref代表重写href, 其中propCode属性名固定, fd_card是到跳转列表携带的查询项(做数据关联), isModalList=1 是传递给跳转列表的参数, 对应列表可根据这个参数, 去掉其余查询项, 去掉操作列,
// closeAutoModal 表示不关闭表单弹窗
return {
next: true,
fieldHref: "modules/online/cgform/auto/OnlCgformAutoList.vue?propCode=" + code + "&fd_card=${fd_card}&isModalList=1",
closeAutoModal: false
}
}
被关联表的JS增强
initTableColumns(that, columns){
if(that.$attrs.isModalList === "1"){
console.log("处于弹窗中")
// 去掉操作列
that.actionLoading = true;
// 去掉查询项
that.onlyShowTable = true;
// 只展示某些数据列
const showColumns = ['fd_name', 'fd_send_year', 'fd_send_month', 'fd_send_type', 'fd_subsidy_type', 'fd_send_money']
columns = columns.filter(v=>showColumns.includes(v.dataIndex))
}
return columns;
}
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。
页面内容