blog-admin-web/src/model/baselist.ts

65 lines
1.3 KiB
TypeScript

import { Vue } from 'vue-class-component'
import { Page } from './common.dto'
import moment from 'moment'
export default abstract class BaseList<T extends Page> extends Vue {
/**
* 表格数据加载中
*/
loading: boolean = false
/**
* 表单提交中
*/
modalLoading: boolean = false
/**
* 数据总数
*/
total: number = 0
abstract search: T
/**
* 加载数据的实现
*/
abstract loadData(): Promise<void>
/**
* 加载数据
* @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
}
}