2 \src\views\Users\UserView.vue
format="YYYY-MM-DD" value-format="YYYY-MM-DD" :append-to-body="false"> format="YYYY-MM-DD" value-format="YYYY-MM-DD" :append-to-body="false"> 查 询 重 置 添 加 删除所选 'prop': JSON.parse(this.pagination.OrderByModel).OrderByFiled, 'order':JSON.parse(this.pagination.OrderByModel).OrderByType}" @sort-change="handleTableSort" ref="refTable"> #default="scope"> style="vertical-align: middle; margin-right: 3px; float: left;"> style="width: 100%; height: 20px; line-height: 20px;"> {{scope.row.name}} style=" width: 100%; height: 10px; line-height: 10px; font-size: 60%; color: #999999; font-weight: 400;"> {{scope.row.email}} style=" width: 100%; height: 10px; line-height: 10px; font-size: 60%; color: #999999; font-weight: 400;"> {{scope.row.phone}} #default="scope"> style="letter-spacing:7px; text-indent:10px">其它 v-show="scope.row.isActive">激活 v-show="!scope.row.isActive">禁用 style="letter-spacing:7px; text-indent:10px">可用 #default="scope"> :page-sizes="[3, 10, 15, 20, 50, 100]" :total="this.pagination.totalCount" prev-text="上一页" next-text="下一页" background layout="->, total, sizes, prev, pager, next" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
/>
/>
import moment from 'moment';
import {
postCustomerIndex,
} from '../../common/http.api.js';
export default {
data() {
//验证查询表单中的开始日期必须小于等于当前时间。
const validateDateTimeFrom = (rule, value, callback) => {
if (value != null || value != '') {
if (this.moment(value) > Date.now())
callback(new Error("开始日期必须小于等于当前时间!"));
}
callback();
};
//验证查询表单中的开始日期必须小大于等于开始日期;且小于等于当前时间。
const validateDateTimeTo = (rule, value, callback) => {
if (this.queryForm.createdDateTimeFrom != '') {
if (value == null || value == '') {
callback(new Error("请输入结束日期!"));
} else if (this.moment(value) > Date.now()) {
callback(new Error("结束日期必须小于等于当前时间!"));
} else if (this.moment(value) < this.moment(this.queryForm.createdDateTimeFrom)) {
callback(new Error("结束日期必须大于等于开始日期!"));
}
}
callback();
};
return {
//获取日期格式化类的1个指定实例。
moment: moment,
//查询表单实例初始化。
queryForm: {
name: '',
email: '',
phone: '',
isSystemAccount: '',
isActive: '',
deleted: '',
createdDateTimeFrom: '',
createdDateTimeTo: '',
},
queryRule: {
createdDateTimeFrom: [{
validator: validateDateTimeFrom,
trigger: "blur"
}],
createdDateTimeTo: [{
validator: validateDateTimeTo,
trigger: "blur"
}]
},
//分页表实例初始化。
pagination: {
pageIndex: 1, //初始化当前页,即第1页。
pageSize: 15, //初始化每页最多所包含的项数值,即每页最多所包含15项。
totalCount: 0, //初始化数据源的总计项数值,由于还没有加载数据源所以该值为:0。
//初始化排序字段及其方式。
OrderByModel: JSON.stringify({
OrderByFiled: 'createdDateTime',
OrderByType: 'descending',
}),
QueryCondition: ""
},
//初始化当前页的渲染数据集列表实例。
currentPageList: [],
//初始化图片的填充方式:按照长宽比填充整个图片(https://www.w3school.com.cn/css/css3_object-fit.asp)。
fitCover: "cover",
};
},
methods: {
//格式化日期显示。
dateTimeformat: function(row, column) {
let data = row[column.property];
if (data == null) {
return null;
}
return moment(data).format('YYYY-MM-DD HH:mm:ss');
},
//获取当前页面渲染显示所需的数据源。
async currentPageInit() {
let res = await postCustomerIndex(this.pagination);
//console.log(res.data.response.data);
this.currentPageList = res.data.response.data;
this.pagination.totalCount = res.data.response.totalCount;
},
//表单查询事件
async onSubmit() {
this.$refs.refRule.validate(async (valid) => {
if (valid) {
var where = {};
if (this.queryForm.name != '') {
where.name = this.queryForm.name;
}
if (this.queryForm.email != '') {
where.email = this.queryForm.email;
}
if (this.queryForm.phone != '') {
where.phone = this.queryForm.phone;
}
if (this.queryForm.isSystemAccount != '') {
where.isSystemAccount = this.queryForm.isSystemAccount;
}
if (this.queryForm.isActive != '') {
where.isActive = this.queryForm.isActive;
}
if (this.queryForm.deleted != '') {
where.deleted = this.queryForm.deleted;
}
if (this.queryForm.createdDateTimeFrom != '') {
where.createdDateTimeFrom = this.moment(this.queryForm.createdDateTimeFrom)
.format('YYYY-MM-DD HH:mm:ss');
}
if (this.queryForm.createdDateTimeTo != '') {
where.createdDateTimeTo = this.moment(this.queryForm.createdDateTimeTo).add(
1, 'days').format('YYYY-MM-DD HH:mm:ss');
}
console.log(where);
this.pagination.QueryCondition = JSON.stringify(where);
console.log(this.pagination.QueryCondition);
await this.currentPageInit();
} else {
this.$message.error('输入不能通过验证 !');
return false;
}
});
},
//重置页面样式及其数据。
async onResert() {
//重置查询表单。
this.queryForm = {
name: '',
email: '',
phone: '',
isSystemAccount: '',
isActive: '',
deleted: '',
createdDateTimeFrom: '',
createdDateTimeTo: '',
};
//重置排序字段试及其排序方式。
this.pagination = {
pageIndex: 1,
pageSize: 15,
totalCount: 0,
OrderByModel: JSON.stringify({
OrderByFiled: 'createdDateTime',
OrderByType: 'descending',
}),
QueryCondition: ""
} ;
await this.$refs.refTable.sort(JSON.parse(this.pagination.OrderByModel).OrderByFiled,
JSON.parse(this.pagination.OrderByModel).OrderByType);
await this.currentPageInit();
},
// 单击排序三角图标时所触发的事件。
async handleTableSort({
column
}) {
//防止排序方式的值为:null。
if (column.property == null && column.order == null) {
column.property = 'createdDateTime',
column.order = "descending";
} else if (column.property != null && column.order == null) {
column.order = "ascending";
}
this.pagination.OrderByModel = JSON.stringify({
OrderByFiled: column.property,
OrderByType: column.order,
});
await this.currentPageInit();
},
//该事件在改变每页最多所包含的项数值后,把数据源加载到当前页面中,并重新对当前页进行渲染显示。
async handleSizeChange(size) {
this.pagination.pagesize = size;
//console.log(this.pagesize); //每页最多所包含的项数值。
await this.currentPageInit();
},
//该事件在改变当前页的索引值后,把数据源加载到当前页面中,并重新对当前页进行渲染显示。
async handleCurrentChange(currentPage) {
this.pagination.PageIndex = currentPage;
//console.log(this.PageIndex); //当前页的索引值。
await this.currentPageInit();
},
//编辑单击事件
async editUser(row) {
console.log(row);
},
},
async mounted() {
await this.currentPageInit();
},
};
对以上功能更为具体实现和注释见:230315_014shopvue(用户页面分页的渲染显示)。