import { Vue } from 'vue-class-component' import { Page } from './common.dto' import moment from 'moment' export default abstract class BaseList extends Vue { /** * 表格数据加载中 */ loading: boolean = false /** * 表单提交中 */ modalLoading: boolean = false /** * 数据总数 */ total: number = 0 abstract search: T /** * 加载数据的实现 */ abstract loadData(): Promise /** * 加载数据 * @param resetPage 是否重置页码 */ loadDataBase(resetPage: boolean = false): void { if(resetPage) { this.search.pageNum = 1 } this.loadData() } /** * 重置搜索项 */ reset(): void { this.search.reset() this.loadData() } /** * 页码变更 * @param pageNum 页码 */ pageChange(pageNum: number): void { this.search.pageNum = pageNum this.loadData() } /** * 每页数据条数变更 * @param pageSize 每页数据条数 */ pageSizeChange(pageSize: number): void { this.search.limit = pageSize this.loadData() } /** * 日期时间格式化 * @param dateStr 日期时间 */ datetimeFormat(dateStr: string): string | null { return dateStr ? moment(dateStr).format('YYYY-MM-DD HH:mm:ss') : null } }