index.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. {extend name="public/container"}
  2. {block name="content"}
  3. <div class="layui-fluid">
  4. <div class="layui-card">
  5. <div class="layui-card-header">班级列表</div>
  6. <div class="layui-card-body">
  7. <div class="layui-row layui-col-space15">
  8. <div class="layui-col-md12">
  9. <form class="layui-form layui-form-pane" action="">
  10. <div class="layui-form-item">
  11. <div class="layui-inline">
  12. <label class="layui-form-label">班级搜索</label>
  13. <div class="layui-input-inline">
  14. <input type="text" name="title" class="layui-input" placeholder="班级名称" autocomplete="off">
  15. </div>
  16. </div>
  17. <div class="layui-inline">
  18. <label class="layui-form-label">班级状态</label>
  19. <div class="layui-input-inline">
  20. <select name="status">
  21. <option value="">全部</option>
  22. <option value="1">开班</option>
  23. <option value="2">结班</option>
  24. </select>
  25. </div>
  26. </div>
  27. <div class="layui-inline">
  28. <div class="layui-input-inline">
  29. <div class="layui-btn-group">
  30. <button type="button" class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="search" lay-filter="search">
  31. <i class="layui-icon layui-icon-search"></i>搜索
  32. </button>
  33. </div>
  34. </div>
  35. </div>
  36. </div>
  37. </form>
  38. </div>
  39. <div class="layui-col-md12">
  40. <div class="layui-btn-group">
  41. <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="add" onclick="action.open_add('{:Url('create')}','添加班级','90%','90%')">
  42. <i class="layui-icon">&#xe608;</i>添加班级
  43. </button>
  44. <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="refresh" onclick="window.location.reload()">
  45. <i class="layui-icon">&#xe669;</i>刷新
  46. </button>
  47. </div>
  48. <table class="layui-hide" id="List" lay-filter="List"></table>
  49. <input type="hidden" id="check_source_tmp" name="check_source_tmp"/>
  50. <script type="text/html" id="act">
  51. <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" onclick="dropdown(this)">
  52. <i class="layui-icon">&#xe625;</i>操作
  53. </button>
  54. <ul class="layui-nav-child layui-anim layui-anim-upbit">
  55. <li>
  56. <a href="javascript:void(0)" onclick="action.open_add('{:Url('create')}?id={{d.id}}','编辑班级','100%','100%')">
  57. <i class="iconfont icon-bianji"></i> 编辑班级
  58. </a>
  59. </li>
  60. <li>
  61. <a href="javascript:void(0)" onclick="action.open_add('{:Url('educational.student/index')}?cid={{d.id}}','查看学员','90%','80%')">
  62. <i class="iconfont icon-xueyuan"></i> 查看学员
  63. </a>
  64. </li>
  65. <li>
  66. <a lay-event='delect' href="javascript:void(0)">
  67. <i class="iconfont icon-shanchu"></i> 删除班级
  68. </a>
  69. </li>
  70. </ul>
  71. </script>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <script src="{__ADMIN_PATH}js/layuiList.js"></script>
  78. {/block}
  79. {block name="script"}
  80. <script>
  81. var $ = layui.jquery;
  82. var layer = layui.layer;
  83. //实例化form
  84. layList.form.render();
  85. layList.date({elem: '#datetime', type: 'datetime', range: '~'});
  86. //加载列表
  87. layList.tableList({o:'List', done:function () {}},"{:Url('getClassesList')}",function (){
  88. return [
  89. {field: 'id', title: '编号', width: '6%',align: 'center'},
  90. {field: 'title', title: '班级名称'},
  91. {field: 'teacher', title: '配班教师'},
  92. {field: 'upper_limit', title: '班级名额',align: 'center', width: '6%'},
  93. {field: 'start_time', title: '开班时间',align: 'center', width: '8%', templet: function (d) {
  94. return d.start_time.split(' ')[0];
  95. }},
  96. {field: 'end_time', title: '结班时间',align: 'center', width: '8%', templet: function (d) {
  97. return d.end_time.split(' ')[0];
  98. }},
  99. {field: 'status', title: '班级状态', align: 'center', width: '6%'},
  100. {field: 'sort', title: '排序', align: 'center', width: '6%'},
  101. {title: '操作',align:'center',toolbar:'#act', width: '8%'}
  102. ];
  103. });
  104. //下拉框
  105. $(document).click(function (e) {
  106. $('.layui-nav-child').hide();
  107. });
  108. function dropdown(that){
  109. var oEvent = arguments.callee.caller.arguments[0] || event;
  110. oEvent.stopPropagation();
  111. var offset = $(that).offset();
  112. var top=offset.top-$(window).scrollTop();
  113. var index = $(that).parents('tr').data('index');
  114. $('.layui-nav-child').each(function (key) {
  115. if (key != index) {
  116. $(this).hide();
  117. }
  118. });
  119. if($(document).height() < top+$(that).next('ul').height()){
  120. $(that).next('ul').css({
  121. 'padding': 10,
  122. 'top': - ($(that).parent('td').height() / 2 + $(that).height() + $(that).next('ul').height()/2),
  123. 'min-width': 'inherit',
  124. 'position': 'absolute'
  125. }).toggle();
  126. }else{
  127. $(that).next('ul').css({
  128. 'padding': 10,
  129. 'top':$(that).parent('td').height() / 2 + $(that).height(),
  130. 'min-width': 'inherit',
  131. 'position': 'absolute'
  132. }).toggle();
  133. }
  134. }
  135. //自定义方法
  136. var action= {
  137. set_value: function (field, id, value) {
  138. layList.baseGet(layList.Url({
  139. a: 'set_value',
  140. q: {field: field, id: id, value: value}
  141. }), function (res) {
  142. layList.msg(res.msg);
  143. });
  144. },
  145. //打开新添加页面
  146. open_add: function (url,title,w,h) {
  147. layer.open({
  148. type: 2 //Page层类型
  149. ,area: [w, h]
  150. ,title: title
  151. ,shade: 0.6 //遮罩透明度
  152. ,maxmin: true //允许全屏最小化
  153. ,anim: 1 //0-6的动画形式,-1不开启
  154. ,content: url
  155. ,end:function() {
  156. location.reload();
  157. }
  158. });
  159. }
  160. };
  161. //查询
  162. layList.search('search',function(where){
  163. layList.reload({
  164. status: where.status,
  165. title: where.title
  166. },true);
  167. });
  168. //快速编辑
  169. layList.edit(function (obj) {
  170. var id=obj.data.id,value=obj.value;
  171. switch (obj.field) {
  172. case 'sort':
  173. if (value.trim()) {
  174. if (isNaN(value.trim())) {
  175. layList.msg('请输入正确的数字');
  176. } else {
  177. if (value.trim() < 0) {
  178. layList.msg('排序不能小于0');
  179. } else if (value.trim() > 9999) {
  180. layList.msg('排序不能大于9999');
  181. } else if (parseInt(value.trim()) != value.trim()) {
  182. layList.msg('排序不能为小数');
  183. } else {
  184. action.set_value('sort', id, value.trim());
  185. }
  186. }
  187. } else {
  188. layList.msg('排序不能为空');
  189. }
  190. break;
  191. }
  192. });
  193. //监听并执行排序
  194. layList.sort(['id','sort'],true);
  195. //点击事件绑定
  196. layList.tool(function (event,data,obj) {
  197. switch (event) {
  198. case 'delect':
  199. var url=layList.U({a:'delete',q:{id:data.id}});
  200. $eb.$swal('delete',function(){
  201. $eb.axios.get(url).then(function(res){
  202. if(res.status == 200 && res.data.code == 200) {
  203. $eb.$swal('success',res.data.msg);
  204. obj.del();
  205. }else
  206. return Promise.reject(res.data.msg || '删除失败')
  207. }).catch(function(err){
  208. $eb.$swal('error',err);
  209. });
  210. });
  211. break;
  212. case 'open_image':
  213. $eb.openImage(data.image);
  214. break;
  215. case 'relation':
  216. var url="{:Url('educational.classes/relation')}?id="+data.id;
  217. layer.open({
  218. type: 2 //Page层类型
  219. ,area: ['80%', '90%']
  220. ,title: '关联专题'
  221. ,shade: 0.6 //遮罩透明度
  222. ,maxmin: true //允许全屏最小化
  223. ,anim: 1 //0-6的动画形式,-1不开启
  224. ,content: url,
  225. btn: '确定',
  226. btnAlign: 'c', //按钮居中
  227. closeBtn:1,
  228. yes: function(){
  229. layer.closeAll();
  230. var source_tmp = $("#check_source_tmp").val();
  231. var source_tmp_list = JSON.parse(source_tmp);
  232. var arr=[];
  233. for(var i=0;i<source_tmp_list.length;i++){
  234. arr.push(source_tmp_list[i].id);
  235. }
  236. var ids=arr.join(',');
  237. action.set_value('relation',data.id,ids);
  238. }
  239. });
  240. break;
  241. }
  242. })
  243. </script>
  244. {/block}