AIoT前端公共UI

CommonTableDemo.vue 3.9KB

    <template> <div class="table-demo"> <el-row :gutter="20"> <el-col :span="12"> <common-table :table-header="tableHeader" :table-data="tableData" ></common-table> </el-col> <el-col :span="12"> <common-table :table-header="tableHeader" :table-data="tableData" :highlight="highlight" @handle-current-row-change="handleCurrentRowChange" @handle-selection-change="handleSelectionChange" ></common-table> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <common-table :table-header="tableHeader" :table-data="tableData" :highlight="highlight" is-check @handle-current-row-change="handleCurrentRowChange" @handle-selection-change="handleSelectionChange" ></common-table> </el-col> <el-col :span="12"> <common-table :table-header="tableHeader1" :table-data="tableData" :highlight="highlight" is-check @handle-current-row-change="handleCurrentRowChange" @handle-selection-change="handleSelectionChange" ></common-table> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <common-table :table-header="tableHeader2" :table-data="tableData" :highlight="highlight" is-check @handle-current-row-change="handleCurrentRowChange" @handle-selection-change="handleSelectionChange" ></common-table> </el-col> <el-col :span="12"> <common-table :table-header="tableHeader3" :table-data="tableData" :highlight="highlight" is-check @handle-current-row-change="handleCurrentRowChange" @handle-selection-change="handleSelectionChange" ></common-table> </el-col> </el-row> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; const tableHeader = ref([ { label: '姓名', name: 'name', width: '100' }, { label: '年龄', name: 'age', 'min-width': '100' } ]); const tableHeader1 = ref([ { label: '姓名', name: 'name', 'min-width': '100' }, { label: '年龄', name: 'age', 'min-width': '100' }, { label: '操作', name: 'custom', type: 'custom', fixed: 'right', 'min-width': '100' } ]); const tableHeader2 = ref([ { label: '姓名', name: 'name', type: 'input', 'min-width': '100' }, { label: '年龄', name: 'age', type: 'select', attrs: { options: [{ label: '123132', value: 123 }] }, 'min-width': '100' }, { label: '操作', name: 'custom', type: 'custom', fixed: 'right', 'min-width': '100' } ]); const tableHeader3 = ref([ { label: '姓名', name: 'name', type: 'input', 'min-width': '100' }, { label: '年龄', name: 'age', type: 'select', 'min-width': '100' }, { label: '操作', name: 'custom', type: 'custom', fixed: 'right', 'min-width': '100' } ]); function viewDetail() {} function deleteDevice() {} const btns = [ { label: '查看详情', name: 'view', onClick: viewDetail }, { label: '删除', type: 'danger', disabled: true, name: 'delete', onClick: deleteDevice }, { label: '更多', children: [ { label: '删除', type: 'danger', name: 'delete', onClick: deleteDevice } ] } ]; const tableData = ref([ { name: '张三', age: 12 }, { name: '张三', age: 12 }, { name: '张三', age: 12 } ]); tableData.value.map((item: any) => { item.actions = btns; return item; }); const highlight = ref(true); const currentRow = ref(); // 选择高亮 function handleCurrentRowChange(val: any) { currentRow.value = val; } // const isCheck = ref(true); // function handleSelectionChange(val: any) { console.log(val); } </script> <style scoped lang="scss"> .table-demo { padding: 20px; } </style>