潘志宝
5 天以前 6d75723f3e3bd43895db2470bc5fabb2314dbe8b
提交 | 用户 | 时间
e7c126 1 $(function() {
H 2
3     // init date tables
4     var jobGroupTable = $("#jobgroup_list").dataTable({
5         "deferRender": true,
6         "processing" : true,
7         "serverSide": true,
8         "ajax": {
9             url: base_url + "/jobgroup/pageList",
10             type:"post",
11             data : function ( d ) {
12                 var obj = {};
13                 obj.appname = $('#appname').val();
14                 obj.title = $('#title').val();
15                 obj.start = d.start;
16                 obj.length = d.length;
17                 return obj;
18             }
19         },
20         "searching": false,
21         "ordering": false,
22         //"scrollX": true,    // scroll x,close self-adaption
23         "columns": [
24             {
25                 "data": 'id',
26                 "visible" : false
27             },
28             {
29                 "data": 'appname',
30                 "visible" : true,
31                 "width":'30%'
32             },
33             {
34                 "data": 'title',
35                 "visible" : true,
36                 "width":'30%'
37             },
38             {
39                 "data": 'addressType',
40                 "width":'10%',
41                 "visible" : true,
42                 "render": function ( data, type, row ) {
43                     if (row.addressType == 0) {
44                         return I18n.jobgroup_field_addressType_0;
45                     } else {
46                         return I18n.jobgroup_field_addressType_1;
47                     }
48                 }
49             },
50             {
51                 "data": 'registryList',
52                 "width":'15%',
53                 "visible" : true,
54                 "render": function ( data, type, row ) {
55                     return row.registryList
56                         ?'<a class="show_registryList" href="javascript:;" _id="'+ row.id +'" >'
57                             + I18n.system_show +' ( ' + row.registryList.length+ ' )</a>'
58                         :I18n.system_empty;
59                 }
60             },
61             {
62                 "data": I18n.system_opt ,
63                 "width":'15%',
64                 "render": function ( data, type, row ) {
65                     return function(){
66                         // data
67                         tableData['key'+row.id] = row;
68
69                         // opt
70                         var html = '<div class="btn-group">\n' +
71                             '     <button type="button" class="btn btn-primary btn-sm">'+ I18n.system_opt +'</button>\n' +
72                             '     <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">\n' +
73                             '       <span class="caret"></span>\n' +
74                             '       <span class="sr-only">Toggle Dropdown</span>\n' +
75                             '     </button>\n' +
76                             '     <ul class="dropdown-menu" role="menu" _id="'+ row.id +'" >\n' +
77                             '       <li><a href="javascript:void(0);" class="opt_edit" >'+ I18n.system_opt_edit +'</a></li>\n' +
78                             '       <li><a href="javascript:void(0);" class="opt_del" >'+ I18n.system_opt_del +'</a></li>\n' +
79                             '     </ul>\n' +
80                             '   </div>';
81
82                         return html;
83                     };
84                 }
85             }
86         ],
87         "language" : {
88             "sProcessing" : I18n.dataTable_sProcessing ,
89             "sLengthMenu" : I18n.dataTable_sLengthMenu ,
90             "sZeroRecords" : I18n.dataTable_sZeroRecords ,
91             "sInfo" : I18n.dataTable_sInfo ,
92             "sInfoEmpty" : I18n.dataTable_sInfoEmpty ,
93             "sInfoFiltered" : I18n.dataTable_sInfoFiltered ,
94             "sInfoPostFix" : "",
95             "sSearch" : I18n.dataTable_sSearch ,
96             "sUrl" : "",
97             "sEmptyTable" : I18n.dataTable_sEmptyTable ,
98             "sLoadingRecords" : I18n.dataTable_sLoadingRecords ,
99             "sInfoThousands" : ",",
100             "oPaginate" : {
101                 "sFirst" : I18n.dataTable_sFirst ,
102                 "sPrevious" : I18n.dataTable_sPrevious ,
103                 "sNext" : I18n.dataTable_sNext ,
104                 "sLast" : I18n.dataTable_sLast
105             },
106             "oAria" : {
107                 "sSortAscending" : I18n.dataTable_sSortAscending ,
108                 "sSortDescending" : I18n.dataTable_sSortDescending
109             }
110         }
111     });
112
113     // table data
114     var tableData = {};
115
116     // search btn
117     $('#searchBtn').on('click', function(){
118         jobGroupTable.fnDraw();
119     });
120
121     // job registryinfo
122     $("#jobgroup_list").on('click', '.show_registryList',function() {
123         var id = $(this).attr("_id");
124         var row = tableData['key'+id];
125
126         /*var html = '<div>';
127         if (row.registryList) {
128             for (var index in row.registryList) {
129                 html += (parseInt(index)+1) + '. <span class="badge bg-green" >' + row.registryList[index] + '</span><br>';
130             }
131         }
132         html += '</div>';
133
134         layer.open({
135             title: I18n.jobinfo_opt_registryinfo ,
136             btn: [ I18n.system_ok ],
137             content: html
138         });*/
139
140         var html = '<table class="table table-bordered"><tbody>';
141         if (row.registryList) {
142             for (var index in row.registryList) {
143                 html += '<tr><th>' + (parseInt(index)+1) + '</th>';
144                 html += '<th><span class="badge bg-green" >' + row.registryList[index] + '</span></th><tr>';
145             }
146         }
147         html += '</tbody></table>';
148
149         $('#showRegistryListModal .data').html(html);
150         $('#showRegistryListModal').modal({backdrop: false, keyboard: false}).modal('show');
151     });
152
153
154     // opt_del
155     $("#jobgroup_list").on('click', '.opt_del',function() {
156         var id = $(this).parents('ul').attr("_id");
157
158         layer.confirm( (I18n.system_ok + I18n.jobgroup_del + '?') , {
159             icon: 3,
160             title: I18n.system_tips ,
161             btn: [ I18n.system_ok, I18n.system_cancel ]
162         }, function(index){
163             layer.close(index);
164
165             $.ajax({
166                 type : 'POST',
167                 url : base_url + '/jobgroup/remove',
168                 data : {"id":id},
169                 dataType : "json",
170                 success : function(data){
171                     if (data.code == 200) {
172                         layer.open({
173                             title: I18n.system_tips ,
174                             btn: [ I18n.system_ok ],
175                             content: (I18n.jobgroup_del + I18n.system_success),
176                             icon: '1',
177                             end: function(layero, index){
178                                 jobGroupTable.fnDraw();
179                             }
180                         });
181                     } else {
182                         layer.open({
183                             title: I18n.system_tips,
184                             btn: [ I18n.system_ok ],
185                             content: (data.msg || (I18n.jobgroup_del + I18n.system_fail)),
186                             icon: '2'
187                         });
188                     }
189                 },
190             });
191         });
192     });
193
194
195     // jquery.validate “low letters start, limit contants、 letters、numbers and line-through.”
196     jQuery.validator.addMethod("myValid01", function(value, element) {
197         var length = value.length;
198         var valid = /^[a-z][a-zA-Z0-9-]*$/;
199         return this.optional(element) || valid.test(value);
200     }, I18n.jobgroup_field_appname_limit );
201
202     $('.add').on('click', function(){
203         $('#addModal').modal({backdrop: false, keyboard: false}).modal('show');
204     });
205     var addModalValidate = $("#addModal .form").validate({
206         errorElement : 'span',
207         errorClass : 'help-block',
208         focusInvalid : true,
209         rules : {
210             appname : {
211                 required : true,
212                 rangelength:[4,64],
213                 myValid01 : true
214             },
215             title : {
216                 required : true,
217                 rangelength:[4, 12]
218             }
219         },
220         messages : {
221             appname : {
222                 required : I18n.system_please_input+"AppName",
223                 rangelength: I18n.jobgroup_field_appname_length ,
224                 myValid01: I18n.jobgroup_field_appname_limit
225             },
226             title : {
227                 required : I18n.system_please_input + I18n.jobgroup_field_title ,
228                 rangelength: I18n.jobgroup_field_title_length
229             }
230         },
231         highlight : function(element) {
232             $(element).closest('.form-group').addClass('has-error');
233         },
234         success : function(label) {
235             label.closest('.form-group').removeClass('has-error');
236             label.remove();
237         },
238         errorPlacement : function(error, element) {
239             element.parent('div').append(error);
240         },
241         submitHandler : function(form) {
242             $.post(base_url + "/jobgroup/save",  $("#addModal .form").serialize(), function(data, status) {
243                 if (data.code == "200") {
244                     $('#addModal').modal('hide');
245                     layer.open({
246                         title: I18n.system_tips ,
247                         btn: [ I18n.system_ok ],
248                         content: I18n.system_add_suc ,
249                         icon: '1',
250                         end: function(layero, index){
251                             jobGroupTable.fnDraw();
252                         }
253                     });
254                 } else {
255                     layer.open({
256                         title: I18n.system_tips,
257                         btn: [ I18n.system_ok ],
258                         content: (data.msg || I18n.system_add_fail  ),
259                         icon: '2'
260                     });
261                 }
262             });
263         }
264     });
265     $("#addModal").on('hide.bs.modal', function () {
266         $("#addModal .form")[0].reset();
267         addModalValidate.resetForm();
268         $("#addModal .form .form-group").removeClass("has-error");
269     });
270
271     // addressType change
272     $("#addModal input[name=addressType], #updateModal input[name=addressType]").click(function(){
273         var addressType = $(this).val();
274         var $addressList = $(this).parents("form").find("textarea[name=addressList]");
275         if (addressType == 0) {
276             $addressList.css("background-color", "#eee");    // 自动注册
277             $addressList.attr("readonly","readonly");
278             $addressList.val("");
279         } else {
280             $addressList.css("background-color", "white");
281             $addressList.removeAttr("readonly");
282         }
283     });
284
285     // opt_edit
286     $("#jobgroup_list").on('click', '.opt_edit',function() {
287         var id = $(this).parents('ul').attr("_id");
288         var row = tableData['key'+id];
289
290         $("#updateModal .form input[name='id']").val( row.id );
291         $("#updateModal .form input[name='appname']").val( row.appname );
292         $("#updateModal .form input[name='title']").val( row.title );
293
294         // 注册方式
295         $("#updateModal .form input[name='addressType']").removeAttr('checked');
296         $("#updateModal .form input[name='addressType'][value='"+ row.addressType +"']").click();
297         // 机器地址
298         $("#updateModal .form textarea[name='addressList']").val( row.addressList );
299
300         $('#updateModal').modal({backdrop: false, keyboard: false}).modal('show');
301     });
302     var updateModalValidate = $("#updateModal .form").validate({
303         errorElement : 'span',
304         errorClass : 'help-block',
305         focusInvalid : true,
306         rules : {
307             appname : {
308                 required : true,
309                 rangelength:[4,64],
310                 myValid01 : true
311             },
312             title : {
313                 required : true,
314                 rangelength:[4, 12]
315             }
316         },
317         messages : {
318             appname : {
319                 required : I18n.system_please_input+"AppName",
320                 rangelength: I18n.jobgroup_field_appname_length ,
321                 myValid01: I18n.jobgroup_field_appname_limit
322             },
323             title : {
324                 required : I18n.system_please_input + I18n.jobgroup_field_title ,
325                 rangelength: I18n.jobgroup_field_title_length
326             }
327         },
328         highlight : function(element) {
329             $(element).closest('.form-group').addClass('has-error');
330         },
331         success : function(label) {
332             label.closest('.form-group').removeClass('has-error');
333             label.remove();
334         },
335         errorPlacement : function(error, element) {
336             element.parent('div').append(error);
337         },
338         submitHandler : function(form) {
339             $.post(base_url + "/jobgroup/update",  $("#updateModal .form").serialize(), function(data, status) {
340                 if (data.code == "200") {
341                     $('#updateModal').modal('hide');
342
343                     layer.open({
344                         title: I18n.system_tips ,
345                         btn: [ I18n.system_ok ],
346                         content: I18n.system_update_suc ,
347                         icon: '1',
348                         end: function(layero, index){
349                             jobGroupTable.fnDraw();
350                         }
351                     });
352                 } else {
353                     layer.open({
354                         title: I18n.system_tips,
355                         btn: [ I18n.system_ok ],
356                         content: (data.msg || I18n.system_update_fail  ),
357                         icon: '2'
358                     });
359                 }
360             });
361         }
362     });
363     $("#updateModal").on('hide.bs.modal', function () {
364         $("#updateModal .form")[0].reset();
365         addModalValidate.resetForm();
366         $("#updateModal .form .form-group").removeClass("has-error");
367     });
368
369     
370 });