collection.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  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.bindevent();
  314. },
  315. edit: function () {
  316. Controller.api.bindevent1();
  317. },
  318. api: {
  319. bindevent1: function () {
  320. Form.api.bindevent($("form[role=form]"));
  321. },
  322. bindevent2: function () {
  323. var rel_Ids = [];
  324. var qudui_total = 0;
  325. var xueyuan_total = 0;
  326. Table.api.init({
  327. extend: {
  328. // index_url: 'department/admin/departadmintotal' + location.search,
  329. index_url: 'auth/admin/admintotal' + location.search,
  330. }
  331. });
  332. var table = $("#table1");
  333. // 初始化表格
  334. table.bootstrapTable({
  335. url: $.fn.bootstrapTable.defaults.extend.index_url,
  336. pk: 'id',
  337. sortName: 'id',
  338. fixedColumns: true,
  339. fixedRightNumber: 1,
  340. searchFormVisible:false,
  341. // pagination:false,
  342. Search:false,
  343. columns: [
  344. [
  345. {checkbox: true,
  346. formatter: function(value,row,index){
  347. if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
  348. rel_Ids.push(row.id);
  349. return true;
  350. }
  351. return false;
  352. }
  353. },
  354. {field: 'department_text', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  355. {field: 'nickname', title: __('姓名'),operate: false},
  356. ]
  357. ],
  358. onLoadSuccess: function(data) {
  359. $.each(data.rows, function(index, row) {
  360. if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
  361. xueyuan_total = xueyuan_total+1;
  362. }
  363. });
  364. $(".xueyuan_total").html(xueyuan_total);
  365. $(".xueyuan_input").val(xueyuan_total);
  366. },
  367. // 点击每一个单选框时触发的操作
  368. onCheck:function(row){
  369. rel_Ids.push(row.id);
  370. xueyuan_total = xueyuan_total+1;
  371. $(".depart_ids").val(rel_Ids.join());
  372. $(".xueyuan_total").html(xueyuan_total);
  373. $(".xueyuan_input").val(xueyuan_total);
  374. },
  375. // 取消每一个单选框时对应的操作;
  376. onUncheck:function(row){
  377. var index = rel_Ids.indexOf(row.id);
  378. if(index > -1) {
  379. rel_Ids.splice(index, 1);
  380. }
  381. xueyuan_total = xueyuan_total-1;
  382. $(".depart_ids").val(rel_Ids.join());
  383. $(".xueyuan_total").html(xueyuan_total);
  384. $(".xueyuan_input").val(xueyuan_total);
  385. }
  386. });
  387. // 为表格绑定事件
  388. Table.api.bindevent(table);
  389. $(document).on('change', '#c-question_setting_method', function () {
  390. if($(this).val()==1){
  391. $(".btn-sm,.btn-task").css('display','none');
  392. }else if($(this).val()==2){
  393. $(".btn-sm").show();
  394. $(".btn-task").css('display','none');
  395. }else if($(this).val()==3){
  396. $(".btn-sm").css('display','none');
  397. $(".btn-task").show();
  398. }
  399. $(".question_ids").val(0);
  400. $(".task_id").val(0);
  401. $("#c-task_name").val('');
  402. $("#c-fault_name").val('');
  403. $("#c-question_name").val('');
  404. $(".tasks,.questions").css('display','none')
  405. });
  406. //考题
  407. $(document).on('click', '.btn-sm', function () {
  408. var simtype = $("#c-sim_type").val();
  409. if(!simtype){
  410. Layer.alert('请选择模拟器类型');
  411. return false
  412. }
  413. var title = '选择考题';
  414. Fast.api.open(Fast.api.fixurl("teacher/collection/faults/type/"+simtype), title, {
  415. area: ["85%", "85%"],
  416. maxmin: true,
  417. moveOut: false,
  418. offset: ['40px'],
  419. callback: function(value) {
  420. if (value.task_id) {
  421. $(".questions").css('display','block')
  422. $(".question_ids").val(value.task_id);
  423. $("#c-question_name").val(value.task_name);
  424. $(".tasks").css('display','none')
  425. $(".task_id").val(0);
  426. $("#c-task_name").val('');
  427. $("#c-fault_name").val('');
  428. }
  429. }
  430. });
  431. });
  432. //任务
  433. $(document).on('click', '.btn-task', function () {
  434. var simtype = $("#c-sim_type").val();
  435. if(!simtype){
  436. Layer.alert('请选择模拟器类型');
  437. return false;
  438. }
  439. var title = '选择任务';
  440. parent.Fast.api.open(Fast.api.fixurl("teacher/collection/task/type/"+simtype), title, {
  441. area: ["65%", "70%"],
  442. maxmin: true,
  443. moveOut: false,
  444. offset: ['40px'],
  445. callback: function(value) {
  446. console.log(value);
  447. if (value.task_id) {
  448. $(".tasks").css('display','block')
  449. $(".task_id").val(value.task_id);
  450. $("#c-task_name").val(value.task_name);
  451. $("#c-fault_name").val(value.fault_name);
  452. $(".questions").css('display','none')
  453. $(".question_ids").val(0);
  454. $("#c-question_name").val('');
  455. }
  456. }
  457. });
  458. });
  459. $("button[name=commonSearch]").css('display','none');
  460. $("input[name='btSelectAll']").css('display','none');
  461. Form.api.bindevent($("form[role=form]"));
  462. },
  463. bindevent: function () {
  464. var rel_Ids = [];
  465. Table.api.init({
  466. extend: {
  467. // index_url: 'department/admin/departadmintotal' + location.search,
  468. index_url: 'auth/admin/admintotal' + location.search,
  469. }
  470. });
  471. var table = $("#table1");
  472. // 初始化表格
  473. table.bootstrapTable({
  474. url: $.fn.bootstrapTable.defaults.extend.index_url,
  475. pk: 'id',
  476. sortName: 'id',
  477. fixedColumns: true,
  478. fixedRightNumber: 1,
  479. searchFormVisible:false,
  480. // pagination:false,
  481. Search:false,
  482. columns: [
  483. [
  484. {checkbox: true,
  485. formatter: function(value,row,index){
  486. if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
  487. // rel_Ids.push(row.id);
  488. return true;
  489. }else{
  490. return {disabled : true}
  491. }
  492. }
  493. },
  494. // {field: 'id', title: __('ID'),operate: false},
  495. {field: 'department_text', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  496. {field: 'nickname', title: __('姓名'),operate: false},
  497. ]
  498. ],
  499. onLoadSuccess: function(data) {
  500. // $.each(data.rows, function(index, row) {
  501. // if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
  502. // xueyuan_total = xueyuan_total+1;
  503. // }
  504. // });
  505. },
  506. // 点击每一个单选框时触发的操作
  507. onCheck:function(row){
  508. var index = rel_Ids.indexOf(row.id);
  509. if(index > -1) {
  510. rel_Ids.splice(index, 1);
  511. };
  512. $(".depart_id").val(rel_Ids.join());
  513. },
  514. // 取消每一个单选框时对应的操作;
  515. onUncheck:function(row){
  516. rel_Ids.push(row.id);
  517. $(".depart_id").val(rel_Ids.join());
  518. }
  519. });
  520. // 为表格绑定事件
  521. Table.api.bindevent(table);
  522. $("button[name=commonSearch]").css('display','none');
  523. $("input[name='btSelectAll']").css('display','none');
  524. Form.api.bindevent($("form[role=form]"));
  525. }
  526. }
  527. };
  528. return Controller;
  529. });