| | |
| | | <el-table-column v-if="showOperations" :label="operationsLabel" :width="operationsWidth" :show-overflow-tooltip="false" fixed="right" align="center"> |
| | | <template #default="scope"> |
| | | <slot name="operations" :row="scope.row"> |
| | | <!-- 自定义按钮 - 放在默认按钮之前 --> |
| | | <el-button |
| | | v-for="button in customButtons" |
| | | :key="button.name" |
| | | v-show="!button.show || button.show(scope.row)" |
| | | :link="button.link !== false" |
| | | :type="button.type || 'primary'" |
| | | :size="button.size || 'small'" |
| | | :icon="button.icon" |
| | | :disabled="button.disabled && button.disabled(scope.row)" |
| | | @click="handleCustomClick(button.name, scope.row)" |
| | | > |
| | | {{ button.label }} |
| | | </el-button> |
| | | |
| | | <!-- 默认操作按钮 --> |
| | | <el-button v-if="operations.includes('edit')" link type="primary" size="small" |
| | | @click="handleEdit(scope.row)">编辑</el-button> |
| | | <el-button v-if="operations.includes('viewRow')" link type="primary" size="small" |
| | |
| | | operations: { |
| | | type: Array, |
| | | default: () => ['edit', 'delete', 'export'] |
| | | }, // 删除确认信息 |
| | | }, |
| | | // 自定义按钮配置 |
| | | customButtons: { |
| | | type: Array, |
| | | default: () => [] |
| | | // 示例配置: |
| | | // [ |
| | | // { |
| | | // name: 'return', // 按钮标识 |
| | | // label: '归还', // 按钮显示文本 |
| | | // type: 'success', // 按钮类型 |
| | | // size: 'small', // 按钮大小 |
| | | // icon: '', // 图标(可选) |
| | | // show: (row) => true, // 显示条件函数(可选) |
| | | // disabled: (row) => false, // 禁用条件函数(可选) |
| | | // } |
| | | // ] |
| | | }, |
| | | // 删除确认信息 |
| | | deleteConfirmText: { |
| | | type: String, |
| | | default: '确认删除该记录?' |
| | |
| | | }; |
| | | |
| | | // 处理选择变化、编辑、删除和导出操作 |
| | | const emit = defineEmits(['selection-change', 'edit', 'delete', 'export', 'viewRow', 'viewFile']) |
| | | const emit = defineEmits(['selection-change', 'edit', 'delete', 'export', 'viewRow', 'viewFile', 'custom-click']) |
| | | const handleSelectionChange = (selection) => { |
| | | emit('selection-change', selection) |
| | | } |
| | |
| | | const handleViewFile = (row) => { |
| | | emit('viewFile', row) |
| | | } |
| | | |
| | | // 处理自定义按钮点击 |
| | | const handleCustomClick = (buttonName, row) => { |
| | | emit('custom-click', { buttonName, row }) |
| | | } |
| | | |
| | | const handleDelete = (row) => { |
| | | ElMessageBox.confirm( |
| | | props.deleteConfirmText, |