穿透到列表

穿透到列表

作者:


列表方案

列表方案其实应该叫查询列表方案,预制的时候是先创建一个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
    }
  }
}