datatable.blade.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <script type="text/html" id="toolbar">
  2. <span class="data-attr-{{ $dataId }}" style="display:none" @verbatim{{# layui.each(d, function(index, item){ }}data-{{ index }}="{{ item }}"{{# }); }}@endverbatim ></span>
  3. @if($dataToolBar!=-1)
  4. @foreach ($dataToolBar as $tool)
  5. <a class="layui-btn layui-btn-sm {{ $tool }}" lay-event="detail" pid="{{ $primaryKey }}" uri="/{{S('MODULE')}}/{{S('CONTROLLER')}}/{{$tool}}/?{{$primaryKey}}=" href="/{{S('MODULE')}}/{{S('CONTROLLER')}}/{{$tool}}/?{{$primaryKey}}=@verbatim{{ d.@endverbatim {{$primaryKey}} @verbatim}}@endverbatim">@if (trans($dataTableLang.'.'.$tool)==$dataTableLang.'.'.$tool) {{ trans('common.'.$tool) }} @else {{ trans($dataTableLang.'.'.$tool) }} @endif</a>
  6. @endforeach
  7. @endif
  8. </script>
  9. <table class="layui-hide" id="{{ $dataId }}" lay-filter="{{ $dataId }}"></table>
  10. <style>
  11. .layui-table-view .layui-table {
  12. position: relative;
  13. width: 100%;
  14. margin: 0px;
  15. }
  16. .layui-form{
  17. height: auto !important;
  18. }
  19. .layui-table-cell{
  20. padding: 0px 12px;
  21. }
  22. </style>
  23. <script>
  24. function loadCols()
  25. {
  26. var cols= @json($dataCols);
  27. try{
  28. cols=optCols($cols);
  29. }catch(ex){
  30. }
  31. return cols;
  32. }
  33. function loadData(){
  34. return ;
  35. }
  36. /**
  37. * 初始化where条件
  38. **/
  39. function initLoadWhere(){
  40. var list={};
  41. $('*[eventType=event-query]').each(function(index,item){
  42. var field=$(this).attr('name');
  43. var value=$(this).val();
  44. try{
  45. list[field]=filterWhere(field,value);
  46. }catch(ex){
  47. list[field]=value;
  48. }
  49. list[field]=value;
  50. });
  51. return list;
  52. }
  53. var tab;
  54. var pid='{{ $primaryKey }}';
  55. layui.use(['table','form','tree','laydate'], function(){
  56. table = layui.table ,
  57. form = layui.form,
  58. laydate = layui.laydate //日期;
  59. //展示已知数据
  60. var tableIns=table.render({
  61. elem: '#{{ $dataId }} '
  62. // ,height: 'full-150'
  63. // ,cellMinWidth: 100
  64. ,cellMinWidth: 50
  65. ,url:'{!! $dataUri !!}'
  66. ,where:initLoadWhere()
  67. ,cols:loadCols()
  68. ,cellMinWidth: 80
  69. //,skin: 'line' //表格风格
  70. ,even: true
  71. ,id:'{{ $dataId }}'
  72. ,page: true //是否显示分页
  73. ,limits: [5, 7, 10,20,30,50,100,200,500,1000,2000]
  74. ,limit: 50 //每页默认显示的数量
  75. ,done: function(res, curr, count){
  76. // var width = $('.layui-table').find('th .layui-table-cell').width();
  77. //
  78. // width = parseFloat(width);
  79. // $('.layui-table').find('.layui-table-cell').width(width-3)
  80. try{
  81. dataTableLoadFinished(res,curr,count);
  82. }catch(ex){}
  83. tab=tableIns;
  84. }
  85. });
  86. table.on('sort({{ $dataId }})', function(obj){
  87. table.reload('{{ $dataId }}', {
  88. page: {
  89. curr: 1 //重新从第 1 页开始
  90. }
  91. ,initSort: obj
  92. ,where: {
  93. field: obj.field
  94. ,order: obj.type
  95. }
  96. });
  97. });
  98. table.on('edit({{ $dataId }})', function(obj){
  99. var value = obj.value //得到修改后的值
  100. ,data = obj.data //得到所在行所有键值
  101. ,field = obj.field; //得到字段
  102. try{
  103. editlineOpt(data.id,field,value);
  104. }catch(ex){
  105. editLine('/{{S('MODULE')}}/{{S('CONTROLLER')}}/editCols?id='+data.id+'&field='+field+'&value='+value,'{{ trans("common.editline") }}');
  106. }
  107. });
  108. form.on('switch({{ $dataId }})', function(obj){
  109. try{
  110. switchOpt(obj);
  111. }catch(ex){}
  112. });
  113. form.on('checkbox({{ $dataId }})', function(obj){
  114. try{
  115. checkboxOpt(obj);
  116. }catch(ex){}
  117. });
  118. table.on('checkbox({{ $dataId }})', function(obj){
  119. if(g.currentDataTableIdArray==undefined){
  120. g.currentDataTableIdArray=[];
  121. }
  122. if(obj.checked){
  123. if(obj.type=='all'){
  124. var checkStatus = table.checkStatus('{{ $dataId }}'),data = checkStatus.data;
  125. for (x in data)
  126. {
  127. g.currentDataTableIdArray.push(data[x][pid]);
  128. }
  129. }else{
  130. g.currentDataTableIdArray.push(obj.data[pid]);
  131. }
  132. }else{
  133. var id=obj.data[pid];
  134. var index=$.inArray(id,g.currentDataTableIdArray);
  135. if(index!=-1){
  136. g.currentDataTableIdArray.splice(index,1);
  137. }
  138. }
  139. g.currentDataTableIds=g.currentDataTableIdArray.join(',');
  140. console.log(g.currentDataTableIds);
  141. });
  142. //获取今日号
  143. var data=new Date();
  144. var m=data.getMonth();
  145. m=m+1;
  146. var d=data.getDate();
  147. var y=data.getFullYear();
  148. var now=y+'-'+m+'-'+d;
  149. var obj='{"'+now+'":"今天"}';
  150. var obj=JSON.parse(obj);
  151. //同时绑定多个
  152. lay('.test-item').each(function(){
  153. laydate.render({
  154. elem: this
  155. ,type: 'date'
  156. ,trigger: 'click'
  157. ,btns:['now']
  158. ,mark:obj
  159. ,done: function(value, date){
  160. $('.lay-btn-diy').click();
  161. }
  162. });
  163. });
  164. @stack('dataTableJS')
  165. g.currentDataTable=table;
  166. var _dataTableReload = {
  167. reload: function(){
  168. //执行重载
  169. table.reload('{{ $dataId }}', {
  170. page: {
  171. curr: 1 //重新从第 1 页开始
  172. }
  173. ,where: initLoadWhere()
  174. });
  175. }
  176. };
  177. g.currentDataTableReload=_dataTableReload;
  178. $('*[eventType=event-query-submit]').on('click', function(){
  179. $('*[eventType=eventForm]').submit();
  180. // _dataTableReload['reload'] ? _dataTableReload['reload'].call(this) : '';
  181. });
  182. function tableReload(obj){
  183. _dataTableReload['reload'] ? _dataTableReload['reload'].call(null) : '';
  184. }
  185. });
  186. </script>