= javascript_include_tag "bomcobox" = simple_form_for(@acao) do |f| = f.error_notification = f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? = f.input :orcamento_id, as: :hidden, input_html: { value: "#{contexto_atual.id}" } .form-group .row .col-sm-3 = f.input :data_de_cadastro, label: "Data de Cadastro", as: :string, wrapper: :calendar_field, input_html: { class: 'date-picker', autocomplete: false } .col-sm-6 - if @acao.persisted? && @acao.orcamentos_da_despesa_por_acao.any? p ' Unidade Orçamentária: p = @acao.unidade_orcamentaria.try(:nome) - else = f.input :unidade_orcamentaria_id, label: "Unidade Orçamentária", collection: @unidades_orcamentarias, label_method: :codigo_e_nome, include_blank: 'Selecione', input_html: { class: 'form-control s2', id: 'unidade_orcamentaria' } .col-sm-3 = f.input :prioridade, include_blank: "Selecione", input_html: {class: "s2", id:'prioridade'} .form-group .row .col-sm-6 = f.input :responsavel_id, label: "Responsável pela Demanda", collection: @agentes, label_method: :cpf_e_nome, include_blank: "Selecione", input_html: {class: "s2"} .col-sm-3 = f.input :data_de_previsao_da_contratacao, label: "Data de previsão da contratação", as: :string, wrapper: :calendar_field, input_html: { class: 'date-picker', autocomplete: false } .col-sm-3 = f.input :tipo_de_contratacao, include_blank: "Selecione", input_html: {class: "s2"} .form-group .row .col-sm-4 = f.input :categoria_de_despesa, include_blank: "Selecione", input_html: {class: "s2"} .col-sm-4 = f.input :forma_de_contratacao_modalidade, label: "Modalidade de Contratação", include_blank: "Selecione", input_html: {class: "s2", id:'modalidade'} .col-sm-4 = f.input :forma_de_contratacao_modalidade_de_licitacao, label: "Modalidade de Licitação", include_blank: "Selecione", input_html: {class: "s2", id:'modalidade_de_licitacao'} br .form-group .row - if @acao.new_record? || @acao.aberto? .col-sm-12 fieldset legend strong ' Adicionar Tipo de Despesa .table-responsive table.table.table-bordered.table-hover thead tr th width="90%" Tipo de Despesa th width="10%" Opções tbody#tipos_de_despesa_por_acao = f.fields_for :tipos_de_despesa_por_acao do |tipo_de_despesa| = render 'tipo_de_despesa_por_acao_fields', f: tipo_de_despesa = error_for @acao, :tipos_de_despesa_por_acao tfoot tr td.links colspan=2 align="right" = link_to_add_association ' Adicionar'.html_safe, f, :tipos_de_despesa_por_acao, :"data-association-insertion-node" => "tbody#tipos_de_despesa_por_acao",:"data-association-insertion-method" => "append", class: 'btn btn-primary btn-sm', id: 'btn-add-tipo-de-despesa-por-acao' .form-group .row .col-sm-12 = f.input :objeto .form-group .row .col-sm-12 = f.input :justificativa .form-group.justificativa_prioridade .row .col-sm-12 = f.input :justificativa_prioridade, label: "Justificativa de Prioridade" .form-group .row .col-sm-12 = f.input :resultado_pretendido, label: "Resultado Pretendido" .form-group .row .col-sm-12 = f.input :outras_informacoes, label: "Outras Informações" .form-group .row.alinhar .col-sm-2 = f.input :possui_itens, label: "Ação possui itens?", as: :boolean, input_html: { id: "possui_itens", style: "margin-top: 30px; margin-right: 10px; align-items: center;" } span.help-block ' Possibilita a adição de itens na ação e obrigatoriamente a ação irá para o PNCP. .col-sm-2 = f.input :vinculada_a_outra_acao, label: "Ação está vinculada a outra?", as: :boolean, input_html: { id: "acao_vinculada", style: "margin-top: 30px; margin-right: 10px; align-items: center;" } br .form-group.categorias .row - if @acao.new_record? || @acao.aberto? .col-sm-12 fieldset legend strong ' Adicionar Categorias da Ação .table-responsive table.table.table-bordered.table-hover thead tr th width="45%" Categoria th width="45%" Subcategoria th width="10%" Opções tbody#categorias_da_acao = f.fields_for :categorias_da_acao do |categoria_da_acao| = render 'categoria_da_acao_fields', f: categoria_da_acao = error_for @acao, :categorias_da_acao tfoot tr td.links colspan=12 align="right" = link_to_add_association ' Adicionar'.html_safe, f, :categorias_da_acao, :"data-association-insertion-node" => "tbody#categorias_da_acao",:"data-association-insertion-method" => "append", class: 'btn btn-primary btn-sm', id: 'btn-add-categoria_da_acao', partial: 'pca/acoes/categoria_da_acao_fields' .form-actions = f.submit "Salvar", class: "btn btn-primary", id: "botao_salvar" - if @acao.new_record? - rota = cookies[:ano_seguinte].to_boolean == true ? pca_ano_seguinte_path : pca_acoes_path = link_to "Cancelar", pca_acoes_path, class: "btn btn-default" - else = link_to "Cancelar", pca_acao_path(@acao), class: "btn btn-default" javascript: $(document).ready(function(){ $('.justificativa_prioridade').hide(); $('#modalidade').on('change', function(){ preencheModalidadeDaLicitacao(); }); $('#prioridade').on('change', function(){ if ($('#prioridade').val() == 'alta'){ $('.justificativa_prioridade').show(); } else { $('.justificativa_prioridade').hide(); } }); }); $(document).on('cocoon:after-insert', function(e, insertedItem) { $('select.s2', insertedItem).select2(); }); document.addEventListener('DOMContentLoaded', function() { const possuiItensCheckbox = document.querySelector("#possui_itens"); const categoriasElement = document.querySelector(".categorias"); function toggleCategorias() { if (possuiItensCheckbox.checked) { categoriasElement.style.display = 'block'; } else { categoriasElement.style.display = 'none'; } } toggleCategorias(); possuiItensCheckbox.addEventListener('change', toggleCategorias); }); $(document).on('change', '.categoria-select', function() { console.log('Categoria selecionada: ', $(this).val()); var categoriaSelect = $(this); var subcategoriaSelect = categoriaSelect.closest('tr').find('.subcategoria-select'); var categoriaId = categoriaSelect.val(); if (categoriaId) { console.log('Carregando subcategorias para categoria ID:', categoriaId); fetch(`/base/categorias/${categoriaId}/subcategorias`) .then(response => { console.log('Resposta da requisição: ', response); if (!response.ok) { throw new Error('Network response was not ok ' + response.statusText); } return response.json(); }) .then(data => { console.log('Dados recebidos: ', data); subcategoriaSelect.empty(); subcategoriaSelect.append(''); data.forEach(subcategoria => { subcategoriaSelect.append(``); }); }) .catch(error => { console.error('Error fetching subcategories:', error); alert('Erro ao carregar subcategorias. Por favor, tente novamente.'); }); } else { subcategoriaSelect.empty(); subcategoriaSelect.append(''); } }); function preencheModalidadeDaLicitacao(){ url = root_url + 'pca/acoes/:modalidade_enum/retorna_modalidades_de_licitacao' new BomcoBox({ filter: '#modalidade', result: '#modalidade_de_licitacao', searchUrl: url, filterParamName: 'modalidade_enum', resultValue: 'key', resultText: 'nome' }); }