O método transfer.render da caixa de transporte Layui aceita [todos os dados] dados da matriz do objeto e [dados corretos iniciais] valor da matriz de id
Agora a demanda é a seguinte: Use a caixa de transporte para atribuir funções aos funcionários, e funções que não estão disponíveis na conta de operação não podem ser atribuídas. A página é a seguinte
Matriz de objetos obtida por solicitação ajax: própria função myRoles e a função do funcionário operado hisRoles
Gere a matriz de id do item à direita da caixa de transporte como o valor da caixa de transporte
deixe hisRolesIdList = []; hisRoles.forEach (his => hisRolesIdList.push (his.id));
Calcule a função do funcionário operado, a função disableRoles que você não possui
deixe disableRoles = [... hisRoles] .filter (his => [... myRoles] .every (my => my.id! == his.id));
O conjunto de diferença mais o conjunto de menos é o conjunto de união, incluindo todos os itens, como os dados da caixa de transporte
deixe unionRoles = [... myRoles, ... disableRoles];
Como disableRoles é uma matriz copiada, adicione o atributo disabled em unionRoles
unionRoles.forEach (x => {if (new Set (disableRoles) .has (x)) x.disabled = true;});
Está tudo pronto, basta gerar a próxima caixa de transporte!
transfer.render ({
......
data: unionRoles,
valor: hisRolesIdList
})