vue-django
Version:
个人实验项目, 本框架的目标是借鉴并超越django admin的自动化思想, 实现UI前端的极简快速定制开发
85 lines (81 loc) • 2.49 kB
JavaScript
/**
* Created by denishuang on 2018/4/23.
*/
import Qs from 'qs'
import filters from '../utils/filters'
import server_response from './server_response'
let DEFAULT_PAGE_SIZE = 20
export default{
props: {
tableBaseQueries: {
type: Object,
default: () => {
return {}
}
},
tablePageSize: {type: Number, default: () => DEFAULT_PAGE_SIZE},
},
data () {
return {
tableQueries: {page_size: this.tablePageSize, search: ''},
tableData: [],
tablePage: 1,
tableCount: 0,
tableUrl: "",
// tableItems: [], // wayky modified : model_table mixin already define props
tableSearchFields: []
}
},
mixins: [server_response],
modelTableFilters: filters,
// mounted () {
// this.tableUpdateQueries({page: 1, page_size: this.pageSize, search: ''})
// // this.$store.state.bus.$on('model-posted', this.onModelPosted)
// // console.log(this.$store)
// },
components: {},
methods: {
tableUpdateQueries(d){
this.tableQueries = Object.assign({}, this.tableBaseQueries, this.tableQueries, d)
},
tableLoad (queris) {
let d = queris || this.tableQueries
this.loading = true
this.loadingText = '查询中'
// console.log(this.tableUrl)
return this.$http.get(`${this.tableUrl}?${Qs.stringify(d)}`).then(({data}) => {
this.tableData = data.results
this.tableCount = data.count
this.loading = false
// this.$emit("loaded", data)
}).catch(this.onServerResponseError)
},
tableOnSearch(){
this.tableUpdateQueries({page: 1})
},
tableOnPageChanged (val) {
this.tablePage = val
},
tableOnPageSizeChanged (val){
this.tablePageSize = val
},
tableDefaultWidget(f){
}
},
computed: {
tableSearchFieldNames () {
return this.tableSearchFields.join(',')
},
},
watch: {
tablePage(newVal, oldVal){
this.tableUpdateQueries({page: newVal})
},
tablePageSize(newVal, oldVal){
this.tableUpdateQueries({page_size: newVal})
},
tableQueries(newVal, oldVal){
this.tableLoad(newVal)
}
}
}