使用LeanCloud的分页查询

1.话不多说上代码:product-list.html




	
		
		
		
		
	
	
		
类名 1 类型 任意该类型的值 3



2.接下来就是js部分了(很多需要注意的地方,已经在代码里写了注释):product-list.js

//定义全局map
var map = new Map();
map.set("03002", "北京");
map.set("03003", "上海");
map.set("03004", "广州");
map.set("03005", "深圳");
map.set("03006", "深圳");




/**
 * 查询
 * @param {Object} pageNo 当前页码
 */
function toSearch(pageNo) {
	if(typeof(pageNo) == "undefined") {
		pageNo = 1;
	}
	$('#productList').empty();
	var startDate=$("#dpd1").val();
	var endDate=$("#dpd2").val();
	var scenicName=$("#scenic").val();
	
	var totalNum;
	var pageSize = 15;
	var cql=getCQL('01',startDate,endDate,scenicName,pageSize,pageNo);
	console.log("查询记录条数的【cql】:"+cql);
	AV.Query.doCloudQuery(cql).then(function(data) {
		console.log(data);
		var bean = new Page();
		bean.setPageNo(pageNo); //设置当前页  
		bean.setTotalSize(data.count); //设置总页数  
		bean.setPageSize(pageSize); //设置每页显示的条数
		bean.setPageDiv("pageDiv"); //设置展示分页控件的容器  
		bean.setFn("toSearch"); //点击按钮的回调函数  
		bean.doStartPage();
	}, function(error) {
		console.log(error);
	});
	
	cql=getCQL('02',startDate,endDate,scenicName,pageSize,pageNo);
	console.log("查询数据的【cql】:"+cql);
	AV.Query.doCloudQuery(cql).then(function(data) {
		var productList=generalTr(data);
		console.log("表格拼装HTML:"+productList);
		$('#productList').append(productList);
	}, function(error) {
		console.log(error);
	});
	
};

/**
 * 通过城市代码获取城市名称
 * @param {Object} code
 */
function getScenicNameByCode(code) {

	var value = map.get(code);
	if(typeof(value) != "undefined") {
		return value;
	} else {
		return code;
	}
}

function getNumber(num) {
	if(num == "100") {
		return 1;
	} else if(num == "-100") {
		return -1;
	} else {
		return num;
	}
}

function getReason(reason) {
	if(reason == null) {
		return "无";
	} else {
		return reason;
	}
}

/**
 * 生成select 的 option
 */
$(function() {
	$("#scenic").prepend("");
	var filterMap = new Map();
	map.forEach(function(value, key) {
		var isContainsValue = (null == filterMap.get(value) || "" == filterMap.get(value)) ? true : false;
		if(isContainsValue) {
			filterMap.set(value, value);
			$("#scenic").append("");
		}
	});
	
});

/**
 * 通过value 取 keyList
 * @param {Object} value
 */
function getKeySet(value) {
	var set = new Set();
	map.forEach(function(val, key) {
		if(value == val) {
			set.add(key);
		}
	});
	return set;
}


/**
 * 
 * @param {Object} businessType 业务类型:01-查询总条数,02-查询数据
 * @param {Object} startDate
 * @param {Object} endDate
 * @param {Object} scenicName
 * @param {Object} pageSize
 * @param {Object} pageNo
 */
function getCQL(businessType,startDate,endDate,scenicName,pageSize,pageNo){
	var start;
	if(businessType=='01'){
		//count 不支持 distinct 等语法。仅限 count(*) 和 count(objectId)。
		start='select count(objectId) from city ';
	}else{
		start='select * from city ';
	}
	
	var where='where objectId is exists ';
	
	if(null!=scenicName&&""!=scenicName){
		var scenicKeys=getKeySet(scenicName);
		where+='and user in (';
		var i=0;
		scenicKeys.forEach(function(key){
			if(i==0){
				where+='"'+key+'"';
			}else{
				where+=',"'+key+'"';
			}
			i++;
		});
		where+=') ';
	}
	
	//内置函数 date() 接收的日期格式必须是 `` 的 UTC 时间。
	if(null!=startDate&&""!=startDate){
		where+='and createdAt>=date("'+startDate+'T00:00:00.000Z") ';
	}
	if(null!=endDate&&""!=endDate){
		where+='and createdAt<=date("'+endDate+'T00:00:00.000Z") ';
	}
	if(businessType=='01'){
		return start+=where;
	}else{
		//普通查询一样,limit 默认为 100,最大 1000
		var startLine=(pageNo - 1) * pageSize;
		return start+=where+'limit '+startLine+','+pageSize;
	}
}

/**
 * 通过返回的数据拼装 Tr
 * @param {Object} data
 */
function generalTr(data){
	var productList = "";
	var products=data.results;
	products.forEach(function(leaseRec) {
		var productTitle = leaseRec.get('user');
		var productprice = leaseRec.get('discountRate');
		var productRemark = leaseRec.get('remark');
		var releaseTime = (leaseRec.createdAt.getMonth() + 1) + '/' + leaseRec.createdAt.getDate() + '/' + leaseRec.createdAt.getFullYear();
		var product = "" + getScenicNameByCode(productTitle) + "" + getReason(productRemark) + "" + getNumber(productprice) + "" + releaseTime + "";
		productList = productList + product;
	});
	return productList
}



3.附上项目demo下载地址:http://download.csdn.net/detail/after95/9801032


你可能感兴趣的:(LeanCloud)