65 lines
1.3 KiB
TypeScript
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
|
|
}
|
|
} |