Skip to main content

Buttons of Edit and Delete in DataTables Vue 3

I'm trying to include Edit and Delete buttons in the actions column in DataTables, the buttons are rendered on the screen, but the @click event doesn't work, and doesn't return an error message, can you check where I'm going wrong? Thank you all. The MontaTable component was created in another file.

<template>
<div id="divClientes">
  <div style="padding-bottom: 20px; color: navy; font-weight: bold;">
    <h3>Clientes cadastrados</h3>
    <button type="button" @click="novoCliente" class="btn btn-secondary">Novo Cliente</button>
  </div>
  <MontaTabela :rows="rows" :columns="columns" />
</div>
</template>

<script>
/* eslint-disable */
import MontaTabela from '@/components/MontaTabela/MontaTabela.vue';
import http from '@/services/http.js';
import { FuncoesAuxiliares } from '@/helpers/FuncoesAuxiliares.vue';

const funcoes = FuncoesAuxiliares();

export default {
  el: '#divClientes',
    components: { MontaTabela },
    data() {
      return {
            rows: null,
            form: {},
            columns: [
                { name: 'cod_cliente', title: 'ID', data: 'cod_cliente', className: "text-center" },
                { name: 'nom_cliente', title: 'NOME', data: 'nom_cliente' },
                { name: 'num_cpf', title: 'CPF', data: 'num_cpf', className: "text-center" },
                { name: 'dat_nascimento', title: 'DT. NASCIMENTO', data: 'dat_nascimento', className: "text-center" },
                { name: 'dsc_endereco', title: 'ENDEREÇO', data: 'dsc_endereco' },
                { name: 'dsc_bairro', title: 'BAIRRO', data: 'dsc_bairro', className: "text-center" },
                { name: 'dsc_cidade', title: 'CIDADE', data: 'dsc_cidade', className: "text-center" },
                { name: 'dsc_uf', title: 'UF', data: 'dsc_uf', className: "text-center" },
                { name: 'flg_ativo', title: 'STATUS', data: 'flg_ativo', className: "text-center" },
                { name: 'acoes', title: 'AÇÕES', data: null, className: "text-center",
                  render (data) {
                    let btns = '';
                    btns += '<button data-bs-toggle="tooltip" data-bs-placement="top" title="Editar" id="btnEditCliente' + data.cod_cliente + '" @click="editarCliente(' + data.cod_cliente + ')" class="btn btn-primary btn-sm"><i class="fa fa-edit"></i></button>&nbsp;',
                    btns += '<button data-bs-toggle="tooltip" data-bs-placement="top" title="Excluir" id="btnDeleteCliente' + data.cod_cliente + '" @click="excluirCliente(' + data.cod_cliente + ')" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></button>'
                    return btns;
                  }
                }
            ]
        }
    },
    async created() {
      await http.get('/cliente/listar').then((response) => {
        this.rows = response.data;

            this.rows.forEach(element => {
              element['dat_nascimento'] = element['dat_nascimento'] ? funcoes.dataFront(element['dat_nascimento']) : '-';
              element['num_cpf'] = element['num_cpf'] ? funcoes.formataCPF(element['num_cpf']) : '-';
              element['flg_ativo'] === parseInt(1) ? element['flg_ativo'] = '<span class="text-success">Ativo</span>' : element['flg_ativo'] = '<span class="text-danger">Inativo</span>';
            });
        });
    },
    methods: {
      novoCliente() {
        this.$router.push({ name: 'cadastro-cliente' });
      },
      editarCliente(cod_cliente) {
        console.log(cod_cliente);
      },
      excluirCliente(cod_cliente) {
        funcoes.confirmaDelecao().then(() => {
          http.put(`/cliente/${cod_cliente}/excluir`).then(() => {
            funcoes.alerta('success', 'Cliente excluído com sucesso!');
          }).catch(()=>{
              funcoes.alerta('error', 'Erro ao tentar excluir Cliente!');
          })
        }).catch(()=>{})
      }
    }
}
</script>

Here's the rendered screen:

enter image description here

Via Active questions tagged javascript - Stack Overflow https://ift.tt/KeQMy5g

Comments

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console