|
@@ -82,14 +82,28 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="s-table" ref="sTableRef" v-if="isShowTable">
|
|
<div class="s-table" ref="sTableRef" v-if="isShowTable">
|
|
|
- <el-table ref="tableElRef" v-bind="getBindValues" v-loading="getLoading">
|
|
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ ref="tableElRef"
|
|
|
|
|
+ v-bind="getBindValues"
|
|
|
|
|
+ v-loading="getLoading"
|
|
|
|
|
+ @sort-change="sortChange"
|
|
|
|
|
+ >
|
|
|
<template v-for="item in getTableColumns" :key="item.key">
|
|
<template v-for="item in getTableColumns" :key="item.key">
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
- v-if="item.type === 'index' || item.type === 'selection'"
|
|
|
|
|
|
|
+ v-if="item.type === 'index'"
|
|
|
|
|
+ label="序号"
|
|
|
|
|
+ :index="getIndexNum"
|
|
|
:type="item.type"
|
|
:type="item.type"
|
|
|
- :width="item.width"
|
|
|
|
|
|
|
+ :minWidth="item.minWidth"
|
|
|
|
|
+ :fixed="item.fixed"
|
|
|
/>
|
|
/>
|
|
|
- <el-table-column v-else :prop="item.prop" v-bind="item">
|
|
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ v-else-if="item.type === 'selection'"
|
|
|
|
|
+ :type="item.type"
|
|
|
|
|
+ :minWidth="item.minWidth"
|
|
|
|
|
+ :fixed="item.fixed"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column v-else :prop="item.prop" :sortable="item.sortable" v-bind="item">
|
|
|
<template #default="scope" v-if="item.render">
|
|
<template #default="scope" v-if="item.render">
|
|
|
<Render :column="item" :row="scope.row" :render="item.render" :index="scope.$index" />
|
|
<Render :column="item" :row="scope.row" :render="item.render" :index="scope.$index" />
|
|
|
</template>
|
|
</template>
|
|
@@ -146,6 +160,7 @@
|
|
|
} from '@vicons/antd';
|
|
} from '@vicons/antd';
|
|
|
import { useFullscreen } from '@vueuse/core';
|
|
import { useFullscreen } from '@vueuse/core';
|
|
|
import { ElIcon } from 'element-plus';
|
|
import { ElIcon } from 'element-plus';
|
|
|
|
|
+ import { PaginationProps } from './types/pagination';
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
...basicProps,
|
|
...basicProps,
|
|
@@ -162,6 +177,9 @@
|
|
|
'edit-row-end',
|
|
'edit-row-end',
|
|
|
'edit-change',
|
|
'edit-change',
|
|
|
'columns-change',
|
|
'columns-change',
|
|
|
|
|
+ 'order-change',
|
|
|
|
|
+ 'page-num-change',
|
|
|
|
|
+ 'page-size-change',
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
const striped = ref(false);
|
|
const striped = ref(false);
|
|
@@ -235,17 +253,36 @@
|
|
|
reload(opt);
|
|
reload(opt);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //表格index计算
|
|
|
|
|
+ const getIndexNum = (index) => {
|
|
|
|
|
+ if (!isBoolean(unref(pagination))) {
|
|
|
|
|
+ const { currentPage = 1, pageSize = 10 } = unref(pagination) as PaginationProps;
|
|
|
|
|
+ return (currentPage - 1) * pageSize + (index + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ return index + 1;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
//页码切换
|
|
//页码切换
|
|
|
async function updatePage(page) {
|
|
async function updatePage(page) {
|
|
|
!getProps.value.isKeepRowKeys && (await restCheckedRowKeys());
|
|
!getProps.value.isKeepRowKeys && (await restCheckedRowKeys());
|
|
|
setPagination({ currentPage: page });
|
|
setPagination({ currentPage: page });
|
|
|
reload();
|
|
reload();
|
|
|
|
|
+ //自定义页码切换脚本
|
|
|
|
|
+ setLoading(true);
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ emit('page-num-change', page);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//分页数量切换
|
|
//分页数量切换
|
|
|
function updatePageSize(size) {
|
|
function updatePageSize(size) {
|
|
|
setPagination({ currentPage: 1, pageSize: size });
|
|
setPagination({ currentPage: 1, pageSize: size });
|
|
|
reload();
|
|
reload();
|
|
|
|
|
+ //自定义分页数量切换脚本
|
|
|
|
|
+ setLoading(true);
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ emit('page-size-change', size);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//密度切换
|
|
//密度切换
|
|
@@ -383,6 +420,15 @@
|
|
|
|
|
|
|
|
useWindowSizeFn(computeTableHeight, 280);
|
|
useWindowSizeFn(computeTableHeight, 280);
|
|
|
|
|
|
|
|
|
|
+ function sortChange(e) {
|
|
|
|
|
+ const { prop, order } = e;
|
|
|
|
|
+ const sortInfo = {
|
|
|
|
|
+ prop,
|
|
|
|
|
+ order: order === 'ascending' ? 'asc' : 'desc',
|
|
|
|
|
+ };
|
|
|
|
|
+ emit('order-change', sortInfo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
computeTableHeight();
|
|
computeTableHeight();
|