Bom dia,
Preciso que um campo do formulário aparece somente em uma determinada atividade no processo.
Grata
Bom dia,
Preciso que um campo do formulário aparece somente em uma determinada atividade no processo.
Grata
Normalmente faço isso no displayFields, mas é evento de formulário.
function displayFields(form, customHTML) {
var atividadeAtual = parseInt(getValue("WKNumState"));
if (atividadeAtual == 5) {
form.setEnabled("metaIndicador", false);
}
}
Bruno, obrigada pelo retorno
E o enableFields como usar?
Sinceramente não cheguei a usar o evento enableFields. Eu já faço tudo no evento displayFields pra não ter retrabalho.
Obrigada, Bruno. Deu certo.
Grata.
Olá bruno, pode me ajudar com esta duvida, por favor?
@joaopretti , eu costumo usar exatamente como comentei aqui, no evento displayFields. Inclusive no exemplo eu desabilito um campo pra não permitir edição quando estou na atividade de id 5 do processo.
tem como usar o método form. setVisible e/ou form.setVisibleById se quiser ocultar.
Como eu descubro qual é o ID do processo?
Você utiliza discord ou telegram pra gente trocar ideia sobre o fluig? ![]()
Fiz os crusos sim!!! mas acho que eles nao mostram o ID, ai fiquei meio perdido como vê rsrsrs, vou tentar adequar a função que vc fez ali em cima com esse setvisible ai
O método setVisible só faz um style="display: none" no elemento.
Um exemplo:
/**
* Exibe os campos de acordo com a Atividade
*
* @param {FormController} form
* @param {customHTML} customHTML
*/
function displayFields(form, customHTML) {
var isEditingForm = (form.getFormMode() == "ADD" || form.getFormMode() == "MOD");
var atividadeAtual = parseInt(getValue("WKNumState"));
var atividades = atividadesEmisCapTec();
hideAllPanels(form);
disableAllFields(form);
// Iniciando uma solicitação
if (isEditingForm && (form.getFormMode() == "ADD" || atividadeAtual == atividades.ATIVIDADE_INICIO)) {
var usuario = fluigAPI.getUserService().getCurrent();
var gerenteNome = "";
var unidadeNome = "";
try {
var usuarioRmDados = getUserRmData(usuario.getLogin());
var gerenteDados = getUserFluigData(usuarioRmDados.gerenteLogin);
gerenteNome = gerenteDados.nome;
gerenteMatricula = gerenteDados.id;
unidadeNome = usuarioRmDados.unidadeNome;
} catch (error) {
gerenteNome = "";
gerenteMatricula = "";
unidadeNome = "";
}
form.setValue("data_solicitacao", pegaDataAtual());
form.setValue("solicitante_matricula", usuario.getCode());
form.setValue("solicitante_nome", usuario.getFullName());
form.setValue("solicitante_unidade", unidadeNome);
form.setValue("gerente_nome", gerenteNome);
form.setValue("gerente_matricula", gerenteMatricula);
form.setVisibleById("parecer_qualidade_obs_row", false);
form.setVisibleById("parecer_escopo_obs_row", false);
form.setVisibleById("parecer_prazo_obs_row", false);
form.setVisibleById("parecer_responsabilidade_obs_row", false);
form.setVisibleById("parecer_conduta_obs_row", false);
setEnableRequestFields(form, true);
setEnableTechnicalAdviceFields(form, true);
return;
}
if (atividadeAtual == atividades.ATIVIDADE_GERENTE_APROVAR_SOLICITACAO) {
setEnableManagerApprovalFields(form, true);
setVisibilityManagerApprovalPanel(form, true);
if (isEditingForm) {
form.setValue("aprovacao_gerente", "");
customHTML.append('<script>$(configuraEventosAprovacaoGerente);</script>');
}
return;
}
if (atividadeAtual == atividades.ATIVIDADE_CORRIGIR_SOLICITACAO) {
setEnableTechnicalAdviceFields(form, true);
setVisibilityManagerApprovalPanel(form, true);
form.setEnabled("data_entrega", true);
if (isEditingForm) {
customHTML.append('<script>$(function () { configuraEventosDadosSolicitacao(); configuraEventosParecerTecnico(); });</script>');
}
return;
}
// ...
}
Eu acabo criando funções para desabilitar os campos de acordo com os painéis/agrupamentos que faço no formulário. Exemplo:
/**
* Habilita/Desabilita os campos da Aprovação UAD
*
* @param {FormController} form Formulário
* @param {boolean} enabled Se true habilita os campos, caso contrário são desabilitados
*/
function setEnableUadApprovalFields(form, enable) {
form.setEnabled("analise_uad", enable);
form.setEnabled("analise_uad_justificativa", enable);
}
/**
* Exibe/Oculta paineil de aprovação da Unidade Administrativa
*
* @param {FormController} form
* @param {boolean} visible
*/
function setVisibilityUadApprovalPanel(form, visible) {
form.setVisibleById("panel_analise_uad", visible);
form.setVisibleById("analise_uad_justificativa_row", form.getValue("analise_uad") == "reprovado");
}
E pra facilitar acessar as Atividades, em ter que ficar jogando números mágicos no código, faço uma função que me retorna os números das atividades pra ir utilizando nas condições.
/**
* Atividades do Processo
*
*/
function atividadesEmisCapTec() {
return {
ATIVIDADE_INICIO: 5
, ATIVIDADE_GERENTE_APROVAR_SOLICITACAO: 50
, ATIVIDADE_CORRIGIR_SOLICITACAO: 55
, ATIVIDADE_UAD_ANALISAR_SOLICITACAO: 6
, ATIVIDADE_EMITIR_PARECER_JURIDICO: 12
, ATIVIDADE_SELECIONAR_REPRESENTANTE: 58
, ATIVIDADE_VALIDAR_MINUTA: 16
, ATIVIDADE_APROVAR_MINUTA: 18
, ATIVIDADE_CORRIGIR_MINUTA: 24
, ATIVIDADE_COLETAR_ASSINATURA: 22
, FIM_REPROVADO_UAD: 10
, FIM_REPROVADO_JURIDICO: 41
, FIM_REPROVADO_SOLICITANTE: 46
};
}
Sobre o evento displayFields
https://tdn.totvs.com/pages/releaseview.action?pageId=270924158#EventosdeFormulário-displayFields
Sobre os métodos que usei:
https://tdn.totvs.com/pages/releaseview.action?pageId=662892312
Consegui usando: function displayFields(form, customHTML) { form.setVisible("campoA", false); form.setVisibleById("linha___1", false); }
porem preciso desativar um checkbox, mas nao está indo com esse tipo de função, preciso que quando chegue neste demarcado em vermelho:
Funcionou bruno, fiz um outro metodo de validação mas deu certo.