PageRenderTime 23ms CodeModel.GetById 18ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/licitacoes.php

https://bitbucket.org/denissilva/cgpdi_admin
PHP | 301 lines | 272 code | 28 blank | 1 comment | 20 complexity | d724b772e304a51edc4b95814d934ee9 MD5 | raw file
  1<!DOCTYPE html>
  2<html lang="pt-br">
  3<head>
  4    <meta charset="UTF-8">
  5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6    <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7    <title>CGPDI Admin</title>
  8
  9    <link rel="stylesheet" href="css/bootstrap.min.css">
 10    <link rel="stylesheet" href="css/index.css">
 11    <link rel="stylesheet" href="css/datatables.min.css">
 12
 13</head>
 14<body>
 15    <?php include_once "cabecalho.php";?>
 16
 17    <main role="main" class="container">
 18        <h2>Licitações</h2>
 19        <ul class="nav nav-tabs" id="cabecalho.phpTab" role="tablist">
 20            <li class="nav-item">
 21                <a class="nav-link active" id="cadastro-tab" data-toggle="tab" href="#cadastro" role="tab" aria-controls="cadastro" aria-selected="true">Cadastro</a>
 22            </li>
 23                
 24            <li class="nav-item">
 25                <a class="nav-link" id="lista-tab" data-toggle="tab" href="#lista" role="tab" aria-controls="lista" aria-selected="false">Lista</a>
 26            </li>
 27        </ul>
 28        
 29        <div class="tab-content" id="cabecalho.phpTabConteudo">
 30            <div class="tab-pane fade show active" id="cadastro" role="tabpanel" aria-labelledby="cadastro-tab">
 31                <form method="post" enctype="multipart/form-data" onreset="javascrit:$('#id').val('');">
 32                    <input type="hidden" class="form-control" id="id" name="id">
 33                    <div class="form-group col-sm clearfix">
 34                        <button type="submit" class="btn btn-success float-right" id="btn-cadastrar">
 35                            <i class="fas fa-save"></i>
 36                        </button>
 37                        
 38                        <button class="btn btn-secondary float-right" id="btn-novo">
 39                            <i class="fas fa-plus"></i>
 40                        </button>
 41                    </div>
 42
 43                    <div class="form-row">
 44                        <div class="form-group col-md-2">
 45                            <label for="situacao">Tipo de Processo</label>
 46                            <select class="form-control required" id="tipo" name="tipo" >
 47                                <option value="" class="hidden">Selecione</div>
 48                                <option value="LI">Licitação</option>        
 49                                <option value="PE">Pregão Eletrônico</option>
 50                                <option value="PP">Pregão Presencial</option>
 51                                <option value="TP">Tomada de Preço</option>
 52                                <option value="OU">Outros</option>
 53                                
 54                            </select>
 55                        </div>
 56                        <div class="form-group col-md-2">
 57                            <label for="codigo">Nº Processo</label>
 58                            <input type="text" class="form-control required" id="codigo" name="codigo" minlength="6" maxlength="6">
 59                        </div>
 60                        <div class="form-group col-md-8">
 61                            <label for="titulo">Título</label>
 62                            <input type="text" class="form-control required" id="titulo" name="titulo" maxlength="75">
 63                        </div>
 64                    </div>
 65                    <div class="form-row">
 66                        <div class="form-group col-md-2">
 67                            <label for="abertura">Abertura</label>
 68                            <input type="date" class="form-control required" id="abertura" name="abertura" >
 69                        </div>
 70                        <div class="form-group col-md-2">
 71                            <label for="situacao">Situação</label>
 72                            <select class="form-control required" id="situacao" name="situacao" >
 73                                <option value="1">Ativo</option>
 74                                <option value="0">Inativo</option>
 75                            </select>
 76                        </div>
 77                        <div class="form-group col-md-8" id="div-upload">
 78                            <label for="upload">Upload Imagem</label>
 79                            <div class="input-group">
 80                                <div class="custom-file">
 81                                    <input type="file" class="custom-file-input required" id="files" name="files[]" multiple="multiple">
 82                                    <label class="custom-file-label" for="files" id="fileLabel">Escolha os arquivos...</label>
 83                                </div>
 84                            </div>
 85                        </div>
 86                        <div class="form-group col-md-8 hidden" id="div-files"></div>
 87                    </div>
 88                </form>
 89            </div>
 90            <div class="tab-pane fade" id="lista" role="tabpanel" aria-labelledby="lista-tab">
 91                <div class="alert alert-danger hidden" role="alert" id="alerta-erro"></div>
 92                <div class="alert alert-success hidden" role="alert" id="alerta-sucesso"></div>
 93                <hr />
 94                <div class="row">
 95                    <div class="col-sm">
 96                        <div class="table-responsive">
 97                            <table class="table table-bordered table-striped" id="listaClientes">
 98                                <thead>
 99                                    <tr>
100                                        <th>Código</th>
101                                        <th>Tipo</th>
102                                        <th>Título</th>
103                                        <th>Situação</th>
104                                        <th>Abertura</th>
105                                        <th>Editar</th>
106                                        <th>Remover</th>
107                                    </tr>
108                                </thead>
109                                <tbody/>
110                            </table>
111                        </div>
112                    </div>
113                </div>
114            </div>
115        </div>
116    </main>
117
118    <?php include_once "modal/Modal.php";?>
119
120    <script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>
121    <script src="js/jquery.min.js"></script>
122    <script src="js/bootstrap.min.js"></script>
123    <script src="js/datatables.min.js"></script>
124    <script src="js/jquery.mask.min.js"></script>
125    <script src="js/cgpdi.js"></script>
126    <script src="js/modal.js"></script>
127
128    <script>
129        $('#codigo').mask('0#');    
130        $('body .data-toggle').tooltip();
131
132        var div_upload= $("#div-upload").html();
133
134        $("#btn-novo").click(function(){
135            $('input[type="text"], input[type="date"], input[type="hidden"], input[type="file"]').val('');
136            //$("#fileLabel").html('');
137            $("#div-upload").html(div_upload).show();
138            $("#div-files").html("").hide();
139        });
140        
141        $(document).ready(function() {
142            $('table').DataTable({
143                order: [[ 0, "desc" ]],
144                ajax: {
145                    url: "controller/licitacao/lista.php",
146                    dataSrc: ""
147                },
148                columns: [
149                    { data: "codigo" },
150                    {"render": function (data, type, full, meta)
151                        {
152                            if(full.tipo == "TP")        return "Tomada de Preço";
153                            else if(full.tipo == "PE")   return "Pregão Eletrônico";           
154                            else if(full.tipo == "PP")   return "Pregão Presencial";
155                            else if(full.tipo == "LI")   return "Licitação";
156                            else                         return "Outros";
157                        }
158                    },
159                    { data: "titulo" },
160                    { data: "abertura" },
161                    
162                    {"render": function (data, type, full, meta)
163                        { return  full.situacao == 1 ? "Ativo" : "Inativo"; }
164                    },
165                    {"render": function (data, type, full, meta)
166                        { return '<a class="btn btn-warning editar" id="' + full.id + '"><i class="far fa-edit"></i></a>'; }
167                    },
168                    {"render": function (data, type, full, meta)
169                        { return '<a class="btn btn-danger remover" id="' + full.id + '"><i class="far fa-trash-alt"></i></a>'; }
170                    }
171                ],
172                bAutoWidth: false,
173                info: false,
174                lengthChange: false,
175                language: {
176                    search: 'Busca:',
177                    searchPlaceholder: "",
178                    emptyTable: "Nenhum registro encontrado.",
179                    paginate: {
180                        "next": "Próxima",
181                        "previous": "Anterior"
182                    }
183                }
184            });
185
186            $('body [data-toggle="tooltip"]').tooltip();
187        });
188
189        $('body').on('change', '#codigo', function(){
190            codigo = $("#codigo").val();
191            tipo = $("#tipo").val();
192            $.get('controller/licitacao/checkCodigoTipo.php',{codigo: codigo,tipo: tipo},function(data){
193                if(JSON.parse(data).length > 0){
194                    $("#alerta-erro").html("Código "+codigo+" já utilizado para esse tipo de processo.").show();
195                    $("#codigo").addClass("border-danger");
196                    setTimeout(function(){ $("#alerta-erro").fadeOut()}, 5000);
197                }
198                else{
199                    $("#codigo").removeClass("border-danger");
200                }
201            }); 
202        });
203
204        $('body').on('click', '.editar', function(){
205            id = $(this).attr("id");
206            $.get('controller/licitacao/formulario.php',{id: id},function(data){
207                licitacao = JSON.parse(data)[0];
208                $("#id").val(licitacao.id);
209                $("#codigo").val(licitacao.codigo);
210                $("#tipo").val(licitacao.tipo);
211                $("#titulo").val(licitacao.titulo);
212                $("#situacao").val(licitacao.situacao);
213                $("#abertura").val(licitacao.abertura);
214                listaArquivos(licitacao.arquivos);
215                $("#cadastro-tab").click();
216                $("#div-upload").html("").hide();
217            });            
218        });
219
220        $('body').on('click', '.remover', function(){
221            id = $(this).attr("id");
222            modal({title: "Deseja realmente excluir essa Licitação?", confirmTitle: "Sim", cancelTitle: "Não"}, function(){
223                $.ajax({url: "controller/licitacao/remover.php?id="+id, type: "post", dataType: "html", contentType: false, cache: false, processData: false, success: function (result) {
224                    $("#alerta-sucesso").html(result).show();
225                    $("#btn-novo").click();
226                    $('table').DataTable().ajax.reload();
227                    $('.border-danger').removeClass("border-danger");
228                },
229                error: function (result) {
230                    console.log(result);
231                }}); 
232            });       
233        });
234
235        $('form').submit(function (evt) {
236            evt.preventDefault();
237            
238            if(tools.validaCampos()){
239                $.ajax({
240                    url: "controller/licitacao/salvar.php",
241                    type: "post",
242                    dataType: "html",
243                    data: new FormData(this),
244                    contentType: false,
245                    cache: false,
246                    processData: false,
247                    success: function (result) {
248                        $("#alerta-sucesso").html(result).show();
249                        $("#btn-novo").click();
250                        $('.border-danger').removeClass("border-danger");
251                    },
252                    error: function (result) {
253                        console.log(result);
254                    }
255                }).done(function(){
256                    $('table').DataTable().ajax.reload();
257                    $("#lista-tab").click();
258                });
259            }
260        });
261
262        listaArquivos = function(arquivos){
263            paths = arquivos.split(";");
264            
265            $("#div-upload").hide();
266            $("#div-files").html("<label>Arquivo</label><br />");
267            for(i in paths){
268                niveis = paths[i].split("/");
269                url = "upload/"+niveis[niveis.length-3]+"/"+niveis[niveis.length-2]+"/"+niveis[niveis.length-1];
270                nome = niveis[niveis.length-1];
271                $("#div-files").append("<a class='btn btn-warning data-toggle d-inline-block' target='_blank' href='"+url+"' title='"+nome+"'><i class='far fa-file-pdf'></i></button>");
272            }
273            $("#div-files").show();
274        }
275
276        $("#files").change(function() {
277            $("#fileLabel").html("");            
278            
279            valido = true;
280            for (i = 0; i < this.files.length; i++){
281                fileType = this.files[i].type;
282                
283                if(fileType != "application/pdf"){
284                    valido = false;
285                    break;
286                }else{
287                    $("#fileLabel").append(this.files[i].name+";");
288                }
289            }
290            
291            if(!valido){
292                modal({title: "Escolha um arquivo valido (.pdf)", cancel: false}, function(){
293                    $("#fileLabel").html('Selecione os arquivos PDF...');
294                });
295            }
296
297            return valido;
298        });
299    </script>
300</body>
301</html>