| | |
| | | @close="handleClose" |
| | | class="dialog-table" |
| | | > |
| | | <ETable |
| | | :columns="columns" |
| | | :table-data="tableData" |
| | | :loading="loading" |
| | | :show-selection="false" |
| | | :show-operations="false" |
| | | /> |
| | | <div class="dialog-table-content"> |
| | | <div class="table-wrapper"> |
| | | <ETable |
| | | :columns="columns" |
| | | :table-data="tableData" |
| | | :loading="loadings" |
| | | :show-selection="false" |
| | | :show-operations="false" |
| | | :height="height" |
| | | :style="{ minHeight: height }" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | |
| | | import ETable from '@/components/Table/ETable.vue' |
| | | |
| | | const props = defineProps({ |
| | | // 弹窗控制 |
| | | modelValue: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '数据表格' |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '80%' |
| | | }, |
| | | |
| | | // 表格数据 |
| | | tableData: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | columns: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | modelValue: Boolean, |
| | | title: String, |
| | | width: String, |
| | | tableData: Array, |
| | | columns: Array, |
| | | loading: Boolean, |
| | | height: [String, Number] |
| | | }) |
| | | |
| | | const loadings = computed(() => props.loading || false) |
| | | const emit = defineEmits(['update:modelValue']) |
| | | |
| | | // 弹窗显示控制 |
| | | const visible = computed({ |
| | | get: () => props.modelValue, |
| | | set: (value) => emit('update:modelValue', value) |
| | | }) |
| | | |
| | | // 关闭弹窗 |
| | | const handleClose = () => { |
| | | emit('update:modelValue', false) |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .dialog-table-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | min-height: 300px; |
| | | } |
| | | |
| | | .table-wrapper { |
| | | display: flex; |
| | | flex-direction: column; |
| | | flex: 1; |
| | | } |
| | | |
| | | .empty-state { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | min-height: 300px; |
| | | background-color: #ffffff; |
| | | border-radius: 6px; |
| | | border: 1px dashed #d9d9d9; |
| | | } |
| | | |
| | | .pagination-wrapper { |
| | | margin-top: 20px; |
| | | display: flex; |
| | | justify-content: center; |
| | | padding: 16px 0; |
| | | background-color: #ffffff; |
| | | border-radius: 6px; |
| | | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); |
| | | |
| | | :deep(.el-pagination) { |
| | | --el-pagination-font-size: 14px; |
| | | --el-pagination-bg-color: #ffffff; |
| | | --el-pagination-text-color: #606266; |
| | | --el-pagination-border-radius: 4px; |
| | | |
| | | .btn-prev, |
| | | .btn-next { |
| | | background-color: #f5f7fa; |
| | | color: #606266; |
| | | |
| | | &:hover { |
| | | color: #409eff; |
| | | } |
| | | |
| | | &:disabled { |
| | | color: #c0c4cc; |
| | | background-color: #f5f7fa; |
| | | } |
| | | } |
| | | |
| | | .el-pager li { |
| | | background-color: #f5f7fa; |
| | | color: #606266; |
| | | |
| | | &:hover { |
| | | color: #409eff; |
| | | } |
| | | |
| | | &.is-active { |
| | | background-color: #409eff; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | |
| | | .el-pagination__sizes .el-select .el-input__wrapper { |
| | | background-color: #f5f7fa; |
| | | } |
| | | |
| | | .el-pagination__jump .el-input__wrapper { |
| | | background-color: #f5f7fa; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 响应式设计 */ |
| | | @media (max-width: 768px) { |
| | | .pagination-wrapper { |
| | | :deep(.el-pagination) { |
| | | .el-pagination__sizes, |
| | | .el-pagination__jump { |
| | | display: none; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |