define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'selectpage'], function ($, undefined, Backend, Table, Form, SelectPage) { var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'manage/tasks/index' + location.search, add_url: 'manage/tasks/add', edit_url: 'manage/tasks/edit', del_url: 'manage/tasks/del', multi_url: 'manage/tasks/multi', table: 'qc_tasks', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', columns: [ [ {field: 'name', title: __('Name')}, {field: 'type', title: __('任务类型'),formatter: function (value){ if(value == 1){return '技术质控'}else if(value == 2){return '诊断质控'}else if(value == 3){return '技术+诊断质控'}else {return value} },searchList:{"1":"技术质控", "2":"诊断质控" ,"3":"技术+诊断质控"}}, {field: 'institution_id', title: __('Institution_id'),visible:false}, {field: 'institution_name', title: __('Institution_name'),searchable:false}, {field: 'exam_class', title: __('Exam_class')}, {field: 'exam_num', title: __('生成检查的数量')}, {field: 'qc_num', title: __('完成质控的数量')}, {field: 'datetime_area', title: __('Datetime_area')}, {field: 'num', title: __('Num')}, {field: 'status', title: __('任务状态'),formatter: function (value){ if(value == 0){return '创建'}else if(value == 1){return '启用'}else if(value == 2){return '完成'}else {return value} },searchList:{"0":"创建", "1":"启用" ,"2":"完成"}}, {field: 'order_type', title: __('抽取顺序类型'),formatter: function (value){ if(value == 1){return '随机'}else if(value == 2){return '检查时间正序'}else if(value == 3){return '检查时间倒序'}else {return value} },searchList:{"1":"随机", "2":"检查时间正序" ,"3":"检查时间倒序"}}, {field: 'createdAt', title: __('创建时间'), operate:'RANGE', addclass:'datetimerange'}, {field: 'updatedAt', title: __('修改时间'), operate:'RANGE', addclass:'datetimerange'}, { field: 'operate', export:false, title: __('Operate'), table: table, buttons: [ { name : 'btn_topup', title : __('开始任务'), text : '开始任务', extend : 'data-toggle="tooltip"', classname: 'btn btn-xs btn-warning btn-start', visible : function (row){ return row.status == 0 ? true : false } }, { name : 'btn_topup', title : __('完成任务'), text : '完成任务', extend : 'data-toggle="tooltip"', classname: 'btn btn-xs btn-warning btn-complete', visible : function (row){ return row.status == 1 ? true : false } }, // { // name : 'btn_topup', // title : __('任务统计'), // text : '任务统计', // extend : 'data-toggle="tooltip"', // classname: 'btn btn-xs btn-warning', // visible : function (row){ // return row.status !== 0 ? true : false // } // }, { name : 'btn_topup', title : __('查看任务数据'), text : '查看任务数据', extend : 'data-toggle="tooltip" data-area=\'["95%","95%"]\'', classname: 'btn btn-xs btn-warning btn-dialog', visible : function (row){ return row.status !== 0 ? true : false }, url : function (row){return 'manage/taskexams/index?task='+row.id} } ], events: Controller.api.events.operate, formatter: Table.api.formatter.operate, } ] ] }); // 为表格绑定事件 Table.api.bindevent(table); initInstitutionSearchList('institution_id'); }, add: function () { examClassSearchList(); initInstitutionSearchList('institution_id'); Controller.api.bindevent(); }, edit: function () { examClassSearchList(); initInstitutionSearchList('institution_id'); Controller.api.bindevent(); }, api: { events:{ operate:{ 'click .btn-start': function (e, value, row, index) { Fast.api.ajax({ url: 'manage/tasks/start', data: { id : row.id }, loading:true }, function (data, ret) { $('.btn-refresh').trigger('click'); Layer.closeAll(); Layer.alert('已生成任务数据'); return false; }, function (data, ret) { $('.btn-refresh').trigger('click'); Layer.closeAll(); Toastr.error(ret.msg) return false; }) }, 'click .btn-complete': function (e, value, row, index) { $.ajax({ url: 'manage/tasks/getNums/ids/'+row.id, type: 'post', dataType: 'json', success: function success(res) { console.log(res); if(res) { completeTask(row.id) }else{ Layer.confirm(__('未完成所有检查的质控任务,是否强制完成'), { }, function (index) { completeTask(row.id) }); } } }); }, 'click .btn-editone': function (e, value, row, index) { e.stopPropagation(); e.preventDefault(); var table = $(this).closest('table'); var options = table.bootstrapTable('getOptions'); var ids = row[options.pk]; row = $.extend({}, row ? row : {}, {ids: ids}); var url = options.extend.edit_url; Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {}); }, 'click .btn-delone': function (e, value, row, index) { e.stopPropagation(); e.preventDefault(); let that = this; var table = $(this).closest('table'); var options = table.bootstrapTable('getOptions'); $(that).data('url',options.extend.del_url); let top = $(that).offset().top - $(window).scrollTop(); let left = $(that).offset().left - $(window).scrollLeft() - 260; if (top + 154 > $(window).height()) { top = top - 154; } if ($(window).width() < 480) { top = left = undefined; } Layer.confirm( __('Are you sure you want to delete this item?'), {icon: 3, title: __('Warning'), offset: [top, left], shadeClose: true}, function (index) { let table = $(that).closest('table'); let options = table.bootstrapTable('getOptions'); Table.api.multi("del", row[options.pk], table, that); Layer.close(index); } ); }, } }, bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; let initInstitutionSearchList = function (id) { $.ajax({ url: 'institution/institution/institutionSelectList', type: 'post', dataType: 'json', success: function success(res) { let data = res.rows; $('#'+id).selectPage({ data : data, orderBy: 'index' }); } }); }; let examClassSearchList = function () { $.ajax({ url: 'dict/device/examClassSelectList', type: 'post', dataType: 'json', success: function success(res) { let data = res.rows; $('#c-exam_class').selectPage({ data : data, orderBy: 'id', multiple:true }); } }); }; let completeTask = function (id) { Fast.api.ajax({ url: 'manage/tasks/complete', data: { id : id } }, function (data, ret) { $('.btn-refresh').trigger('click'); Layer.closeAll(); Layer.alert('任务已完成'); return false; }, function (data, ret) { $('.btn-refresh').trigger('click'); Layer.closeAll(); Toastr.error(ret.msg) return false; }) }; return Controller; });