穿透到列表
作者:
列表方案
列表方案其实应该叫查询列表方案,预制的时候是先创建一个QueryDefinitionGroup,然后创建QueryListDefinition也就是查询方案,在创建listColumnsDefinitions也就是栏目方案。
一个group可以有多个queryList,一个queryList又可以有多个listColDef。
穿透到列表
首先要生成hash,有新老两个版本,现在一般都用新的ListV2。它们生成的hash不一样。
// /Project/ChangeHistory/list?baseBillId=NXHL256341J00DD&listColumnsDefId=31WL3U51187001F&isBase=false
const hash = appRouterHashManager.generateHash(EN_Project, PageModeEnum.List, {
solutionId: 'ChangeHistory/list',
queryStringParams: {
baseBillId: this.form.value.id,
listColumnsDefId: '31WL3U51187001F',
},
});
// /list/Project/ProjectChange_list?listColumnsDefId=31WL3U51187001F
const hash2 = appRouterHashManager.generateHash(EN_Timesheet, PageModeEnum.ListV2, {
groupName: 'Timesheet_list',
criteriaStr: `${approveStr} and ${convertTimesheetCriteriaStr}`,
listColumnsDefId: 'AR2WNR511M20002', // 公共方案--明细
});
然后是跳转
proxyHistory.push(hash,{
usedOrg: this.form.value.usedOrg
})
到列表的明细方案
listColumnsDefId是栏目方案的id,可以在列表方案的预制数据中找到。
栏目方案一般分为明细和整单。通过isMaster区分。
只要使用预制方案的明细或整单方案id,就会自动跳转到明细或整单。如果有对应的个人方案就跳到个人方案,没有跟人方案就 创建新的。
两个版本的generateHash对于指定栏目方案略有不同,老版本定义在queryStringParams中。
下面是gql可以查方案的数据。
{
QueryListDefinition(criteriaStr: "id='9LVL3U51187000T'") {
title
group {
name
}
listColumnsDefinitions {
id
title
isMaster
}
}
}