collection.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'teacher/collection/index' + location.search,
  8. add_url: 'teacher/collection/add',
  9. edit_url: 'teacher/collection/edit',
  10. del_url: 'teacher/collection/del',
  11. multi_url: 'teacher/collection/multi',
  12. import_url: 'teacher/collection/import',
  13. table: 'teacher_collection',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'exam_collection_id',
  21. sortName: 'exam_collection_id',
  22. fixedColumns: true,
  23. fixedRightNumber: 1,
  24. singleSelect : true, //
  25. searchFormVisible:true,
  26. search:false,
  27. columns: [
  28. [
  29. {checkbox: true},
  30. {field: 'exam_collection_id', title: __('编号'),operate: false},
  31. {field: 'exam_collection_name', title: __('Exam_collection_name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  32. // {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
  33. // {field: 'question_setting_method', title: __('Question_setting_method'),searchList:{"1":"系统随机","2":"教师自选","3":"任务自选"},formatter: Table.api.formatter.simmethod},
  34. {
  35. field: 'exam_collection_state',searchList:{"2":"打开","3":"关闭"},
  36. title: __('Exam_collection_state'),
  37. align: 'center',
  38. table: table,
  39. formatter: Table.api.formatter.collectonstate
  40. },
  41. // {field: 'task_id', title: __('Task_id')},
  42. {field: 'limit_duration', title: __('Limit_duration')},
  43. // {field: 'start_time', title: __('Start_time'), operate:false, addclass:'datetimerange', autocomplete:false},
  44. // {field: 'end_time', title: __('End_time'), operate:false, addclass:'datetimerange', autocomplete:false},
  45. // {field: 'create_user_id', title: __('Create_user_id')},
  46. {field: 'create_by', title: __('Create_by'), operate: 'LIKE'},
  47. // {field: 'qudui_count', title: __('区队数量'), operate: false},
  48. {field: 'xueyuan_count', title: __('应考人数'), operate: false},
  49. {field: 'yikao_count', title: __('已考人数'), operate: false},
  50. {field: 'createtime', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter: Table.api.formatter.datetime},
  51. // {field: 'update_by', title: __('Update_by'), operate: 'LIKE'},
  52. // {field: 'update_time', title: __('Update_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
  53. // {field: 'remark', title: __('Remark'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  54. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
  55. // formatter: Table.api.formatter.operate
  56. formatter: Table.api.formatter.buttons,
  57. buttons: [
  58. {
  59. name: 'dispatch',
  60. text: '编辑',
  61. icon: 'fa fa-pencil',
  62. title: '编辑',
  63. classname: 'btn btn-success btn-xs btn-magic btn-dialog',
  64. // extend: 'data-area=\'["85%","85%"]\'',
  65. url: 'teacher/collection/edit',
  66. },
  67. {
  68. name: 'dispatch',
  69. text: '进入考试',
  70. icon: 'fa fa-hand-pointer-o',
  71. title: '进入考试',
  72. visible: function (rr) {
  73. if(rr.exam_collection_state == 2){
  74. return true;
  75. }
  76. return false;
  77. },
  78. classname: 'btn btn-info btn-xs btn-magic btn-addtabs',
  79. url: 'teacher/exams/persent',
  80. },
  81. {
  82. name: 'dispatch',
  83. text: '查看学员',
  84. icon: 'fa fa-eye',
  85. title: '查看学员',
  86. classname: 'btn btn-warning btn-xs btn-magic btn-dialog',
  87. extend: 'data-area=\'["85%","85%"]\'',
  88. url: 'teacher/collection/viewuser',
  89. },
  90. {
  91. name: 'dispatch',
  92. text: '添加学员',
  93. icon: 'fa fa-plus',
  94. title: '添加学员',
  95. classname: 'btn btn-success btn-xs btn-magic btn-dialog',
  96. extend: 'data-area=\'["85%","85%"]\'',
  97. url: 'teacher/collection/adduser',
  98. },
  99. {
  100. name: 'dispatch',
  101. text: '删除学员',
  102. icon: 'fa fa-pencil',
  103. title: '删除学员',
  104. classname: 'btn btn-info btn-xs btn-magic btn-dialog',
  105. extend: 'data-area=\'["75%","75%"]\'',
  106. url: 'teacher/collection/edituser',
  107. },
  108. {
  109. name: 'dispatch',
  110. text: '删除',
  111. icon: 'fa fa-trash',
  112. title: '删除',
  113. classname: 'btn btn-danger btn-xs btn-magic btn-ajax',
  114. url: 'teacher/collection/del',
  115. confirm: '确定要删除吗?',
  116. success: function (data, ret) {
  117. $(".btn-refresh").trigger("click");
  118. },
  119. error: function (data, ret) {
  120. Layer.alert(ret.msg);
  121. return false;
  122. }
  123. }
  124. ],
  125. }
  126. ]
  127. ]
  128. });
  129. // 为表格绑定事件
  130. Table.api.bindevent(table);
  131. $(document).on('click', '.btn-start', function () {
  132. var ids = Table.api.selectedids(table);
  133. Fast.api.ajax({
  134. url: "teacher/collection/start/ids/"+ids,
  135. type: "post",
  136. }, function () {
  137. Layer.alert('开始成功');
  138. table.bootstrapTable('refresh');
  139. Layer.close(index);
  140. });
  141. });
  142. },
  143. viewuser: function () {
  144. // 初始化表格参数配置
  145. Table.api.init({
  146. extend: {
  147. index_url: 'teacher/collection/viewuser/ids/' +Config.ids+ location.search,
  148. }
  149. });
  150. var table = $("#table");
  151. var multiple = true;
  152. // 初始化表格
  153. table.bootstrapTable({
  154. url: $.fn.bootstrapTable.defaults.extend.index_url,
  155. pk: 'task_id',
  156. sortName: 'task_id',
  157. fixedColumns: true,
  158. fixedRightNumber: 1,
  159. singleSelect : true,
  160. searchFormVisible:true,
  161. search: false,
  162. columns: [
  163. [
  164. // {checkbox: true},
  165. // {field: 'task_id', title: __('Task_id'),operate: false},
  166. {field: 'user_nickname', title: __('学员'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  167. {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
  168. {field: 'question_setting_method', title: __('Question_setting_method'),searchList:{"1":"系统随机","2":"教师自选","3":"任务自选"},formatter: Table.api.formatter.simmethod},
  169. {field: 'fault_names', title: __('故障内容'),formatter: Table.api.formatter.faultname,operate: false},
  170. {field: 'createtime', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter: Table.api.formatter.datetime},
  171. // {
  172. // field: 'operate', title: __('Operate'), width: 85, events: {
  173. // 'click .btn-chooseone': function (e, value, row, index) {
  174. // Fast.api.close({url: row.url, multiple: multiple,task_id:row.task_id,task_name:row.name,fault_name:row.fault_name});
  175. // },
  176. // }, formatter: function () {
  177. // return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
  178. // }
  179. // }
  180. ]
  181. ]
  182. });
  183. // 为表格绑定事件
  184. Table.api.bindevent(table);
  185. },
  186. task: function () {
  187. // 初始化表格参数配置
  188. Table.api.init({
  189. extend: {
  190. index_url: 'teacher/collection/task/type/' +Config.sim_type+ location.search,
  191. }
  192. });
  193. var table = $("#table");
  194. var multiple = true;
  195. // 初始化表格
  196. table.bootstrapTable({
  197. url: $.fn.bootstrapTable.defaults.extend.index_url,
  198. pk: 'task_id',
  199. sortName: 'task_id',
  200. fixedColumns: true,
  201. fixedRightNumber: 1,
  202. singleSelect : true,
  203. searchFormVisible:true,
  204. search: false,
  205. columns: [
  206. [
  207. {checkbox: true},
  208. {field: 'task_id', title: __('Task_id'),operate: false},
  209. {field: 'name', title: __('任务名称'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  210. {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
  211. {field: 'fault_name', title: __('故障内容'),formatter: Table.api.formatter.faultname},
  212. {field: 'createtime', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter: Table.api.formatter.datetime},
  213. {
  214. field: 'operate', title: __('Operate'), width: 85, events: {
  215. 'click .btn-chooseone': function (e, value, row, index) {
  216. Fast.api.close({url: row.url, multiple: multiple,task_id:row.task_id,task_name:row.name,fault_name:row.fault_name});
  217. },
  218. }, formatter: function () {
  219. return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
  220. }
  221. }
  222. ]
  223. ]
  224. });
  225. // 为表格绑定事件
  226. Table.api.bindevent(table);
  227. },
  228. faults: function () {
  229. // 初始化表格参数配置
  230. Table.api.init({
  231. extend: {
  232. index_url: 'teacher/collection/faults/type/'+Config.sim_type + location.search,
  233. }
  234. });
  235. var table = $("#table");
  236. var multiple = true;
  237. // 初始化表格
  238. table.bootstrapTable({
  239. url: $.fn.bootstrapTable.defaults.extend.index_url,
  240. pk: 'fault_id',
  241. sortName: 'fault_id',
  242. sortOrder:'asc',
  243. fixedColumns: true,
  244. fixedRightNumber: 1,
  245. searchFormVisible:false,
  246. showExport:false,
  247. pagination:false,
  248. search:false,
  249. columns: [
  250. [
  251. {checkbox: true},
  252. {field: 'sim_type', title: __('模拟器类型'),operate:false,searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
  253. {field: 'parent_name', title: __('故障现象'), operate: false, table: table, class: 'autocontent',},
  254. {field: 'name', title: __('故障内容'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  255. // {
  256. // field: 'operate', title: __('Operate'), width: 85, events: {
  257. // 'click .btn-chooseone': function (e, value, row, index) {
  258. // Fast.api.close({url: row.url, multiple: multiple,task_id:row.fault_id});
  259. // },
  260. // }, formatter: function () {
  261. // return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
  262. // }
  263. // }
  264. ]
  265. ]
  266. });
  267. // 为表格绑定事件
  268. Table.api.bindevent(table);
  269. // 选中多个
  270. $(document).on("click", ".btn-choose-multi", function () {
  271. var ids = Table.api.selectedids(table);
  272. if(ids.length!=3){
  273. Layer.alert('故障内容只允许选择3个');
  274. return false
  275. }
  276. console.log(ids)
  277. var taskname = [];
  278. var ptaskids = [];
  279. var datas = $("#table").bootstrapTable('getSelections');
  280. $.each(datas,function (index,val) {
  281. taskname.push(val.name)
  282. // var index = ptaskids.indexOf(val.parent_fault_id);
  283. // if (index > -1) {
  284. // Layer.alert('一个故障现象下只允许申请一个故障部位');
  285. // return false
  286. // }
  287. ptaskids.push(val.parent_fault_id)
  288. })
  289. console.log(taskname)
  290. console.log('taskname')
  291. console.log(ptaskids);
  292. var obj = {};
  293. for (var i = 0; i < ptaskids.length; i++) {
  294. var str = ptaskids[i];
  295. if (obj[str]) {
  296. Layer.alert('一个故障现象下只允许申请一个故障部位');
  297. return;
  298. } else {
  299. obj[str] = str; // 存入对象中做标记
  300. }
  301. }
  302. Fast.api.close({url: '', multiple: multiple, task_id:ids,task_name:taskname});
  303. });
  304. $("button[name=commonSearch]").css('display','none');
  305. },
  306. add: function () {
  307. Controller.api.bindevent1();
  308. },
  309. adduser: function () {
  310. Controller.api.bindevent2();
  311. },
  312. edituser: function () {
  313. Controller.api.bindevent2();
  314. },
  315. edit: function () {
  316. Controller.api.bindevent1();
  317. },
  318. api: {
  319. bindevent1: function () {
  320. Form.api.bindevent($("form[role=form]"));
  321. },
  322. initSubTable: function (index, row, $detail,parent_table) {
  323. var admin_id = row.id;
  324. var cur_table = $detail.html('<table id="sub_'+ admin_id +'" style="background-color:#d7d1d147"></table>').find('table');
  325. var sub_table = $(cur_table);
  326. sub_table.bootstrapTable({
  327. // url: 'area/index',
  328. toolbar: false,
  329. showColumns: false,
  330. showToggle: false,
  331. showExport: false,
  332. search: false,
  333. pagination:false,
  334. commonSearch: false,
  335. sortOrder: 'ASC',
  336. checkboxHeader: false,
  337. columns: [
  338. {checkbox: true,
  339. formatter: function(value,row,index){
  340. if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
  341. return true;
  342. }else{
  343. return {disabled : true}
  344. }
  345. }
  346. },
  347. // {field: 'id', title: 'ID'},
  348. {field: 'username', title: __('学号')},
  349. {field: 'nickname', title: __('姓名')},
  350. ],
  351. data: row.alluser
  352. });
  353. Table.api.bindevent(sub_table);
  354. sub_table.on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table post-body.bs.table", function (e) {
  355. var selectedIds = Table.api.selectedids(sub_table);
  356. console.log(selectedIds);
  357. $(".depart_ids").val(selectedIds.join());
  358. })
  359. },
  360. bindevent2: function () {
  361. var rel_Ids = [];
  362. var qudui_total = 0;
  363. var xueyuan_total = 0;
  364. Table.api.init({
  365. extend: {
  366. index_url: 'department/admin/departadmintotal' + location.search,
  367. // index_url: 'auth/admin/admintotal' + location.search,
  368. }
  369. });
  370. var table = $("#table1");
  371. // var oInit = new Object();
  372. // 初始化表格
  373. table.bootstrapTable({
  374. url: $.fn.bootstrapTable.defaults.extend.index_url,
  375. pk: 'id',
  376. sortName: 'id',
  377. fixedColumns: true,
  378. fixedRightNumber: 1,
  379. searchFormVisible:false,
  380. // pagination:false,
  381. detailView: true,//父子表
  382. Search:false,
  383. columns: [
  384. [
  385. {checkbox: true},
  386. {field: 'department_name', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  387. {field: 'department_admin_count', title: __('人员数量'),operate: false},
  388. ]
  389. ],
  390. onExpandRow: function (index, row, $detail) {
  391. Controller.api.initSubTable(index, row, $detail);
  392. },
  393. onCheck: function (row, $element) {
  394. $('.btn-disabled').addClass('disabled');
  395. var id = row.id;
  396. $("#sub_" + id).bootstrapTable("checkAll");
  397. },
  398. onUncheck: function (row) {
  399. var id = row.id;
  400. $("#sub_" + id).bootstrapTable("uncheckAll");
  401. },
  402. });
  403. // 为表格绑定事件
  404. Table.api.bindevent(table);
  405. $(document).on('change', '#c-question_setting_method', function () {
  406. if($(this).val()==1){
  407. $(".btn-sm,.btn-task").css('display','none');
  408. }else if($(this).val()==2){
  409. $(".btn-sm").show();
  410. $(".btn-task").css('display','none');
  411. }else if($(this).val()==3){
  412. $(".btn-sm").css('display','none');
  413. $(".btn-task").show();
  414. }
  415. $(".question_ids").val(0);
  416. $(".task_id").val(0);
  417. $("#c-task_name").val('');
  418. $("#c-fault_name").val('');
  419. $("#c-question_name").val('');
  420. $(".tasks,.questions").css('display','none')
  421. });
  422. //考题
  423. $(document).on('click', '.btn-sm', function () {
  424. var simtype = $("#c-sim_type").val();
  425. if(!simtype){
  426. Layer.alert('请选择模拟器类型');
  427. return false
  428. }
  429. var title = '选择考题';
  430. Fast.api.open(Fast.api.fixurl("teacher/collection/faults/type/"+simtype), title, {
  431. area: ["85%", "85%"],
  432. maxmin: true,
  433. moveOut: false,
  434. offset: ['40px'],
  435. callback: function(value) {
  436. if (value.task_id) {
  437. $(".questions").css('display','block')
  438. $(".question_ids").val(value.task_id);
  439. $("#c-question_name").val(value.task_name);
  440. $(".tasks").css('display','none')
  441. $(".task_id").val(0);
  442. $("#c-task_name").val('');
  443. $("#c-fault_name").val('');
  444. }
  445. }
  446. });
  447. });
  448. //任务
  449. $(document).on('click', '.btn-task', function () {
  450. var simtype = $("#c-sim_type").val();
  451. if(!simtype){
  452. Layer.alert('请选择模拟器类型');
  453. return false;
  454. }
  455. var title = '选择任务';
  456. parent.Fast.api.open(Fast.api.fixurl("teacher/collection/task/type/"+simtype), title, {
  457. area: ["65%", "70%"],
  458. maxmin: true,
  459. moveOut: false,
  460. offset: ['40px'],
  461. callback: function(value) {
  462. console.log(value);
  463. if (value.task_id) {
  464. $(".tasks").css('display','block')
  465. $(".task_id").val(value.task_id);
  466. $("#c-task_name").val(value.task_name);
  467. $("#c-fault_name").val(value.fault_name);
  468. $(".questions").css('display','none')
  469. $(".question_ids").val(0);
  470. $("#c-question_name").val('');
  471. }
  472. }
  473. });
  474. });
  475. $("button[name=commonSearch]").css('display','none');
  476. $("input[name='btSelectAll']").css('display','none');
  477. Form.api.bindevent($("form[role=form]"));
  478. },
  479. }
  480. };
  481. return Controller;
  482. });