ReadOnlyQuery.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. if (typeof ReadOnlyQuery == 'undefined') {
  2. ReadOnlyQuery = {};
  3. }
  4. ReadOnlyQuery.init = function() {
  5. $("span[selectquery]").each(function() {
  6. var me = $(this);
  7. var cond = me.attr("selectvalue");
  8. var queryJson = JSON2.parse(me.attr("selectquery")
  9. .replaceAll("'", "\""));
  10. var key = queryJson.binding.key; // 返回值作为select的value
  11. var value = queryJson.binding.value; // 返回值作为select的显示值
  12. var query = queryJson.query;
  13. var querydataStr='';
  14. var datastr='{'
  15. for(var i in query){
  16. if(query[i].initValue){
  17. datastr+=query[i].condition+ ":\"" + query[i].initValue + "\",";
  18. }
  19. }
  20. datastr = datastr.substring(0, datastr.length - 1);
  21. datastr +='}';
  22. if(datastr.length > 2){
  23. querydataStr=datastr;
  24. }
  25. var queryedCacheDataString="";
  26. //如果querydataStr为{},说明是查询全部数据,引用一个"queryedCacheDataString"标识全部数据
  27. if(querydataStr==""){
  28. queryedCacheDataString="queryedCacheDataString";
  29. }else{
  30. queryedCacheDataString=querydataStr;
  31. }
  32. var cacheData=ReadOnlyQuery.getCascaData(queryJson.name,queryedCacheDataString);
  33. if(cacheData){
  34. ReadOnlyQuery.handData(cacheData,queryJson,me,cond);
  35. }else{
  36. queryCond = {
  37. alias : queryJson.name,
  38. querydata : querydataStr,
  39. page : 0,
  40. pagesize : 0
  41. };
  42. DoQuery(queryCond, function(data) {
  43. if (data.errors || data.list.length < 1) {
  44. return;
  45. }
  46. ReadOnlyQuery.handData(data.list,queryJson,me,cond);
  47. ReadOnlyQuery.setCascaData(queryJson.name,queryedCacheDataString,data.list);
  48. },true);
  49. }
  50. });
  51. };
  52. /**
  53. * 获取缓存数据
  54. */
  55. ReadOnlyQuery.getCascaData=function(alias,querydata){
  56. return QueryUI.getCascaData(alias,querydata);
  57. };
  58. /**
  59. * 设置缓存数据
  60. */
  61. ReadOnlyQuery.setCascaData = function(alias,querydata,data){
  62. QueryUI.setCascaData(alias,querydata,data);
  63. };
  64. /**
  65. * 获取数据以后经过处理,显示多下拉列表中
  66. */
  67. ReadOnlyQuery.handData=function(data,queryJson,currSelectObj,currcond){
  68. var me=$(currSelectObj);
  69. for (var i = 0; i < data.length; i++) {
  70. var dataobj = data[i];
  71. if (dataobj[queryJson.binding.key.toLowerCase()] == currcond) {
  72. var datavalue = dataobj[queryJson.binding.value.toLowerCase()];
  73. me.text(datavalue);
  74. }
  75. }
  76. };