jquery-rockbase.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. /**
  2. rockbase 基础信息
  3. */
  4. var backautocloseupload = {};
  5. (function ($) {
  6. function rockupload(element, options){
  7. var obj = element;
  8. var can = options;
  9. var me = this,
  10. rand= 'sdh_'+js.getrand();
  11. this.init = function(){
  12. var s = '<div class="form-control" id="view_'+rand+'" style="height:'+can.height+'px;overflow:auto;padding:0px"></div><div><a onclick="return false" id="add_'+rand+'" href="javascript:"><i class="icon-plus"></i> '+can.uploadtext+'</a>&nbsp;<span id="count_'+rand+'"></span></div><input type="hidden" id="fileid_'+rand+'" name="'+can.name+'">';
  13. obj.html(s);
  14. $('#add_'+rand+'').click(function(){
  15. me._upload();
  16. });
  17. this.loadfile();
  18. };
  19. this._upload= function(){
  20. if(!can.addbool)return;
  21. js.tanbody('uploadaction','上传文件',550,250,{
  22. html:'<iframe src="" name="uploadiframea" width="100%" height="250px" frameborder="0"></iframe>',bbar:'none'
  23. });
  24. var cans=can.uploadparams;
  25. cans.showid=rand;
  26. var url= js.upload('',cans,'url');
  27. uploadiframea.location.href=url;
  28. return false;
  29. };
  30. this.loadfile = function(mtype, mid){
  31. if(!mtype)mtype=can.mtype;
  32. if(!mid)mid=can.mid;
  33. if(!mtype || !mid || mid==0)return;
  34. var url = js.getajaxurl('getfile','upload','public',{mtype:mtype,mid:mid});
  35. var o = $('#view_'+rand+'');
  36. o.html('<div style="padding:10px"><img src="images/loading.gif" align="absmiddle">&nbsp;加载中...</div>');
  37. $.get(url, function(da){
  38. o.html('');
  39. var a = js.decode(da);
  40. js.downupshow(a,rand);
  41. });
  42. };
  43. this.removedel = function(){
  44. $('#view_'+rand+'').find("temp='dela'").remove();
  45. };
  46. this.idAdd = function(bo){
  47. can.addbool = bo;
  48. };
  49. };
  50. $.fn.rockupload = function(options){
  51. var defaultVal = {
  52. name:'fileid',uploadtext:'添加文件',mtype:'',mid:0,height:80,delbool:true,addbool:true,
  53. uploadparams:{}
  54. };
  55. var can = $.extend({}, defaultVal, options);
  56. var clsa = new rockupload($(this), can);
  57. clsa.init();
  58. return clsa;
  59. };
  60. //搜索工具条
  61. function rocksearch(element, options){
  62. var obj = element;
  63. var can = options;
  64. var me = this,
  65. rand= js.getrand();
  66. this.luojiarr = [{
  67. name:'包含',value:'LIKE'
  68. },{
  69. name:'不包含',value:'NOT LIKE'
  70. },{
  71. name:'等于',value:'='
  72. },{
  73. name:'不等于',value:'!='
  74. },{
  75. name:'大于',value:'>'
  76. },{
  77. name:'大于等于',value:'>='
  78. },{
  79. name:'小于',value:'<'
  80. },{
  81. name:'小于等于',value:'<='
  82. }];
  83. this.init = function(){
  84. if(can.listtable){
  85. this.createlisttable();
  86. return;
  87. }
  88. var s = '';
  89. s = '<div class="input-group" style="width:'+can.width+'px;">'+
  90. '<span class="input-group-btn">'+
  91. ' <a type="button" id="fields_'+rand+'" class="btn btn-default">字段 <span class="caret"></span></a>'+
  92. ' <a type="button" id="luoji_'+rand+'" class="btn btn-default">包含 <span class="caret"></span></a>'+
  93. '</span>'+
  94. '<input class="form-control" id="key_'+rand+'" placeholder="关键词">'+
  95. '<input class="form-control" style="display:none" readonly id="date_'+rand+'">'+
  96. '<span style="display:none" id="selectdivshoa_'+rand+'"></span>'+
  97. '<span class="input-group-btn">'+
  98. ' <button class="btn btn-default" style="display:none" id="datebtn_'+rand+'" type="button"><i class="icon-calendar"></i></button>'+
  99. ' <button class="btn btn-default" id="soubtn_'+rand+'" type="button"><i class="icon-search"></i> 查询 </button>';
  100. s+=' <button class="btn btn-default" id="soubtndown_'+rand+'" type="button"><i class="icon-caret-down"></i></button>';
  101. s+=' </span>';
  102. s+='</div>';
  103. obj.html(s);
  104. $('#soubtn_'+rand+'').click(function(){
  105. me._search(false);
  106. });
  107. $('#fields_'+rand+'').rockmenu({
  108. data:can.columns,top:35,width:150,
  109. itemsclick:function(d, oi){
  110. me.changefields(oi);
  111. }
  112. });
  113. $('#luoji_'+rand+'').rockmenu({
  114. data:this.luojiarr,top:35,width:100,
  115. itemsclick:function(d){
  116. me.changeluoji(d);
  117. }
  118. });
  119. var ds = [{name:'结果中查询',oi:0},{name:'高级查询...',oi:1}];
  120. if(!can.highsearch){
  121. ds = [{name:'(',val:'('},{name:')',val:')'},{name:'并且',val:'and'},{name:'或者',val:'or'}];
  122. $('#soubtn_'+rand+'').html('<i class="icon-plus"></i>');
  123. }
  124. $('#soubtndown_'+rand+'').rockmenu({
  125. data:ds,top:35,width:100,
  126. itemsclick:function(d){
  127. if(can.highsearch){
  128. if(d.oi==0)me._search(true);
  129. if(d.oi==1)me._highsearch();
  130. }else{
  131. me._showhighsearch(d.val, d.name, 0);
  132. }
  133. }
  134. });
  135. this.dateobj = $('#datebtn_'+rand+'').rockdatepicker({inputid:'date_'+rand+''});
  136. this.selobj = $('#selectdivshoa_'+rand+'').bootstigger({
  137. data:[],valuefields:'id',clearbool:true
  138. });
  139. this.changefields(0);
  140. this.changeluoji(this.luojiarr[0]);
  141. };
  142. this.oldkeysou = '';
  143. this._search = function(bo){
  144. var awhere = '',oper,key,fields,type;
  145. oper = this.luojiobj.value;
  146. key = $('#key_'+rand+'').val();
  147. arr = this.fieldsobj;
  148. fields= arr.dataIndex;
  149. type = arr.atype;
  150. if(!type)type='';
  151. if(type.indexOf('date')>-1)key = this.dateobj.getValue();
  152. if(type=='select')key = this.selobj.getValue();;
  153. var qz=arr.qz;
  154. if(isempt(qz))qz='';
  155. var keyss = key+'',
  156. keyss1 = key+'';
  157. if(type=='select')keyss1=this.selobj.getRawValue();
  158. if(oper.indexOf('LIKE')>=0)key='%'+key+'%';
  159. key="[F]"+key+"[F]";
  160. if(can.highsearch)awhere='[K][A]';
  161. awhere+="[K]"+qz+"`"+fields+"`[K]"+oper+"[K]"+key+"[K]";
  162. if(arr.searchtpl){
  163. awhere = '[K][A][K]'+arr.searchtpl.replace('?0', oper);
  164. awhere = awhere.replace('?1', key);
  165. }
  166. if((oper.indexOf('LIKE')>=0 || oper=='=') && keyss =='')awhere='';
  167. if(bo)awhere = this.oldkeysou+awhere;
  168. this.oldkeysou = awhere;
  169. var awhes = ''+arr.name+' '+this.luojiobj.name+' '+keyss1+'';
  170. can.backcall(awhere, awhes, this);
  171. return awhere;
  172. };
  173. this._highsearchstr = '';
  174. this._highsearch = function(){
  175. var s = '<div><div id="highsearch_list_tools"></div><div id="highsearch_list" style="height:180px;overflow:auto;">'+this._highsearchstr+'</div></div>';
  176. js.tanbody('highsearch','高级查询',450, 250,{html:s,btn:[{text:'查询',icons:'search'}]});
  177. var soutools=$('#highsearch_list_tools').rocksearch({
  178. columns:can.columns,width:448,highsearch:false,
  179. backcall:function(s, s1){
  180. if(s!='')me._showhighsearch(s, '&nbsp; &nbsp; '+s1, 1);
  181. }
  182. });
  183. $('#highsearch_btn0').click(function(){
  184. me._highsearchok();
  185. });
  186. };
  187. this._highsearchok = function(){
  188. var o = $('#highsearch_list');
  189. this._highsearchstr = o.html();
  190. var o1 = o.find('font'),s= '',i,v;
  191. for(i=0; i<o1.length; i++){
  192. v = o1[i].innerHTML;
  193. v = v.replace('&lt;','<');
  194. v = v.replace('&gt;','>');
  195. s+=''+v;
  196. }
  197. can.backcall(s);
  198. js.tanclose('highsearch');
  199. };
  200. this._showhighsearch = function(s, s1, lx){
  201. var o = $('#highsearch_list');
  202. var h = '<div ondblclick="$(this).remove()" onmouseover="this.style.backgroundColor=\'#f1f1f1\'" onmouseout="this.style.backgroundColor=\'\'" style="padding:8px 10px;border-bottom:1px #eeeeee solid"><span>'+s1+'</span><font style="display:none">'+s+'</font></div>';
  203. if(lx==1){
  204. var las = o.find('font:last').html(),
  205. lass= ',(,),and,or,';
  206. if(lass.indexOf(','+las+',')<0){
  207. this._showhighsearch('and','并且',0);
  208. }
  209. }
  210. o.append(h);
  211. this._highsearchstr = o.html();
  212. };
  213. this.changefields = function(oi){
  214. var d = can.columns[oi];
  215. $('#fields_'+rand+'').html(''+d.name+' <span class="caret"></span>');
  216. this.fieldsobj = d;
  217. if(!d.atype)d.atype='';
  218. if(d.atype.indexOf('date')>-1){
  219. $('#key_'+rand+'').hide();
  220. this.selobj.hide();
  221. $('#date_'+rand+'').show();
  222. $('#datebtn_'+rand+'').show();
  223. this.dateobj.setView(d.atype);
  224. }else if(d.atype=='select'){
  225. $('#key_'+rand+'').hide();
  226. this.selobj.show();
  227. $('#date_'+rand+'').hide();
  228. $('#datebtn_'+rand+'').hide();
  229. var sdv = d.valuefields;
  230. if(!sdv)sdv='value';
  231. this.selobj.setData(d.data,d.displayfields, sdv);
  232. this.selobj.setValue('');
  233. this.changeluoji(this.luojiarr[2]);
  234. }else{
  235. this.selobj.hide();
  236. $('#key_'+rand+'').show();
  237. $('#date_'+rand+'').hide();
  238. $('#datebtn_'+rand+'').hide();
  239. }
  240. };
  241. this.changeluoji = function(d){
  242. $('#luoji_'+rand+'').html(''+d.name+' <span class="caret"></span>');
  243. this.luojiobj = d;
  244. };
  245. this.setData = function(fi, da){
  246. var i,
  247. a = can.columns;
  248. for(i=0; i<a.length; i++){
  249. if(a[i].dataIndex==fi){
  250. can.columns[i].data = da;
  251. break;
  252. }
  253. }
  254. };
  255. this.createlisttable = function(){
  256. var s = '';
  257. s='<table><tr>';
  258. var i,a = can.columns;
  259. for(i=0; i<a.length; i++){
  260. s+='<td>';
  261. if(a[i].atype=='select'){
  262. }else{
  263. s+='<input class="form-control" name="'+a[i].dataIndex+'" placeholder="'+a[i].name+'" style="width:100px">';
  264. }
  265. s+='</td>';
  266. }
  267. s+='</tr></table>';
  268. obj.html(s);
  269. }
  270. };
  271. $.fn.rocksearch = function(options){
  272. var defaultVal = {
  273. columns:[{
  274. }],
  275. highsearch:true,
  276. listtable:false,
  277. width:500,backcall:function(){}
  278. };
  279. var can = $.extend({}, defaultVal, options);
  280. var clsa = new rocksearch($(this), can);
  281. clsa.init();
  282. return clsa;
  283. };
  284. })(jQuery);