Administrator
2022-09-14 58d006e05dcf2a20d0ec5367dd03d66a61db6849
提交 | 用户 | 时间
58d006 1 /**
A 2 * date: 
3 * author: neeler
4 */
5
6 //test data start
7 // var data_getVehicleTypeList = Mock.mock('/enterprise/vehicletype/getList.htm', {code: 0, list: [
8 //     {id: 1, name: '货车类型1', note: '货车类型1',},
9 //     {id: 2, name: '货车类型2', note: '货车类型2',},
10 //     {id: 3, name: '货车类型3', note: '货车类型3',},
11 //     {id: 4, name: '货车类型4', note: '货车类型4',},
12 //     {id: 5, name: '货车类型5', note: '货车类型5',},
13 //     {id: 6, name: '货车类型6', note: '货车类型6',},
14 //     {id: 7, name: '货车类型7', note: '货车类型7',},
15 //     {id: 8, name: '货车类型8', note: '货车类型8',},
16 //     {id: 9, name: '货车类型9', note: '货车类型9',},
17 //     {id: 10, name: '货车类型10', note: '货车类型10',},
18 //     {id: 11, name: '货车类型11', note: '货车类型11',}
19 //     ], pages: 12})
20 // var data_getList = Mock.mock('/enterprise/whitevehicle/getList.htm', {code: 0, 'list|3-19': [
21 //     {numberplates: '豫A88888', cardID: '56456465778', vtypename: '厂内车辆', sdate: '2015-07-08', edate: '2030-12-12', departid: '1', departname: '企管部', vtypeid: 3, ctime: '2016-11-11', note: 'nnnnnnnnnote', createid: '1', cname: '顾小白', cdepartid: '1', cdepart: '政务部'}
22 //     ], pages: 12})
23 // var data_getDepartList = Mock.mock('/enterprise/depart/getList.htm', {code: 0, list: [
24 //     {id: 1,bianhao: '01',name: '河南明泰',note: '',address: '河南省巩义市', level: 1, pid: 0},
25 //     {id: 2,bianhao: '0101',name: '企管部',note: '',address: '办公大楼1楼右', level: 2, pid: 1},
26 //     {id: 3,bianhao: '010101',name: '铝锭库',note: '',address: '南门挨着磅房', level: 3, pid: 2},
27 //     {id: 4,bianhao: '0102',name: '政务部',note: '',address: '办公大楼1楼左', level: 2, pid: 1},
28 //     {id: 5,bianhao: '0103',name: '信息中心',note: '',address: '办公大楼4楼最西', level: 2, pid: 1},
29 //     {id: 6,bianhao: '02',name: '高精板带',note: '',address: '河南省巩义市', level: 1, pid: 0},
30 //     {id: 7,bianhao: '0201',name: '企管部',note: '',address: '办公大楼1楼左', level: 2, pid: 6},
31 //     {id: 8,bianhao: '0202',name: '政务部',note: '',address: '办公大楼', level: 2, pid: 6},
32 //     {id: 9,bianhao: '03',name: '郑州明泰',note: '',address: '河南省郑州市', level: 1, pid: 0},
33 //     {id: 10,bianhao: '0301',name: '企管部',note: '',address: '办公大楼1楼右', level: 2, pid: 9}
34 //     ]})
35 // var data_doDel = Mock.mock('/enterprise/whitevehicle/delItem.htm', {code: 0, errmsg: ''})
36 // var data_doSave = Mock.mock('/enterprise/whitevehicle/saveItem.htm', {code: 0, errmsg: ''})
37 //test data end
38
39 window.I = {
40     PZ: 30,
41     keyword: $('#keyword'),
42     searchBtn: $('#searchBtn'),
43     pageValue: !!$('#p').val() ? $('#p').val() - 1 : 0,
44     keywordValue: $('#k').val(),
45     dValue: parseInt($('#d').val()),
46     newObj: $('#newObj'),
47     modal: $('#modal'),
48     save: $('#save'),
49     departName: $('#departName'),
50     departModal: $('#departModal'),
51     search: $('#search'),
52     saveDepart: $('#saveDepart'),
53     _type: {},  //全部货车类型
54     edate: $('#edate'),
55     sdate: $('#sdate')
56 }
57
58 var Obj = {
59     numberplates: '豫A',
60     cardID: '',
61     vtypeid: '',
62     vtypename: '',
63     sdate: '',
64     edate: '',
65     departid: '',
66     departname: '',
67     ctime: '',
68     note: '',
69     createid: '',
70     cname: '',
71     cdepartid: '',
72     cdepart: '',
73     enState: '',
74     valid: true,
75     driver: '',
76     phone: ''
77 }
78
79 var ViewModel = function() {
80     var self = this;
81     self.o = ko.observable(ko.mapping.fromJS(Obj));
82
83     self.keyword = ko.observable(I.keywordValue);
84     self.list = ko.observableArray();
85
86     self.dList = ko.observableArray();
87
88     self.neworedit=ko.observable(true);
89
90     self.edit = function(item) {
91         self.neworedit(false);
92         doEdit(item);
93     }
94     self.del = function(item) {
95         delConfirm(item);
96     }
97     self.did = ko.observable(I.dValue);
98
99     self.change = function() {
100         doOpen();
101     }
102
103     self.tList = ko.observableArray();
104
105     self.valid = function (item) {
106         doValid(item);
107     }
108     self.tid = ko.observable();
109 }
110
111 $(function () {
112     window.vm = new ViewModel();
113     doSearch();
114     autoHeight();
115     ko.applyBindings(vm);
116     getVehicleTypeList();
117     getDepartList();
118     pageInit();
119 });
120
121 function pageInit() {
122     $('.table-responsive').scroll(function() {
123         $('.th').css('top', $(this).scrollTop());
124     })
125     I.saveDepart.click(function(event) {
126         vm.o().departid(I.selected.id);
127         vm.o().departname(I.selected.text);
128     });
129     I.search.keyup(function(event) {
130         var to = false;
131         if(to) {
132             clearTimeout(to);
133         }
134         to = setTimeout(function () {
135             var v = I.search.val();
136             $('#jstree_Enterprise').jstree(true).search(v);
137         }, 250);
138     });
139     I.departName.click(function(event) {
140         I.departModal.modal('show');
141     });
142     I.save.click(function(event) {
143         if (valid()) {
144             doSave();
145         }
146     });
147     I.newObj.click(function(event) {
148         vm.neworedit(true);
149         vm.o(ko.mapping.fromJS(Obj));
150         I.modal.modal('show');
151     });
152     I.searchBtn.click(function(event) {
153         doOpen();
154     });
155     I.modal.on('hidden.bs.modal', function (e) {
156         clearError();
157     });
158     I.keyword.on(ISIE ? 'keydown' : 'keyup', function (event) {
159         if (event.keyCode == 13) {
160             doOpen();
161         }
162     });
163 }
164
165 function doOpen() {
166     // var k = $.trim(vm.keyword());
167     // k = !!k ? '?keyword=' + k : '';
168     // var d = $.trim(vm.did());
169     // d = !!d ? 'd=' + d : '';
170     // d = (!!k ? '&' : '?') + d;
171     // window.open('whitevehicle.jsf' + k + d, '_self');
172     doSearch();
173 }
174
175 function doSearch() {
176     getList(vm.keyword(), vm.tid(), vm.did(), I.pageValue, I.PZ, 1);
177 }
178
179
180 function getList(keyword, vtypeid, depart, page, pagesize, pages) {
181     $.post('/enterprise/whitevehicle/getList.htm', {
182         keyword: keyword,
183         vtypeid: vtypeid,
184         depart: depart,
185         page: page,
186         pagesize: pagesize,
187         pages: pages
188     }, function(data, textStatus, xhr) {
189         vm.list.removeAll();
190         if (data.code >= 1) {
191             //parent.showErrmsg(data.errmsg);
192             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
193             return;
194         }
195         if (data.code == 0) {
196             if (isList(data.list)) {
197                 $.each(data.list, function(index, val) {
198                     // val.numberplates += index;
199                     val.valid = ko.observable(val.valid);
200                     vm.list.push(val);
201                 });
202                 $('tbody tr').click(function (e) { 
203                     $('tbody tr').removeClass('info');
204                     $(this).addClass('info');
205                 });
206             }
207             if (!!pages) {
208                 pages = data.pages;
209                 $('#pagdiv').unbind('page').empty();
210                 if (pages > 1) {
211                     $('#pagdiv').bootpag({total: pages, maxVisible: 10, page: page + 1}).on('page',function(event,num){
212                         // var k = !!I.keywordValue ? '&keyword=' + I.keywordValue : '';
213                         // var d = !!I.dValue ? '&d=' + I.dValue : '';
214                         // window.open('whitevehicle.jsf?page=' + num + k + d, '_self');
215                         getList(keyword, vtypeid, depart, num - 1, pagesize, 0);
216                     });
217                 }
218             }
219             return;
220         }
221     }, 'json');
222 }
223
224 function valid(){
225     var isValid = false;
226     var iF = $('#form');
227     iF.validate({
228         rules: {
229             'numberplates': {
230                 required: true,
231                 isPlateNumber: true
232                 // remote: {
233                 //     url: '/enterprise/whitevehicle/checkPlateNumber.htm',     //后台处理程序
234                 //     type: 'post',               //数据发送方式
235                 //     dataType: 'json',           //接受数据格式
236                 //     data: {                     //要传递的数据
237     //                     // numberplates: $('#numberplates').val().toUpperCase()
238     //                     numberplates: function() {
239     //                         return vm.o().numberplates().toUpperCase();
240     //                     }                        
241                 //     }
242                 // }
243             },
244             'departName': {
245                 required: true
246             },
247             'sdate': {
248                 required: true
249             },
250             'edate': {
251                 required: true
252             },
253             'cardID': {
254                 required: true,
255                 remote: {
256                     url: '/gates/cardinuse/checkCardno.htm', 
257                     type: 'post',
258                     dataType: 'json',
259                     data: {
260                         cardno: function() {
261                             return vm.o().cardID();
262                         }                        
263                     }
264                 }
265             }
266         },
267         messages: {
268             'numberplates': {
269                 required: '车牌号不能为空!',
270                 isPlateNumber: '车牌号不正确!'
271                 //remote: '车牌号已存在!'
272             },
273             'departName': {
274                 required: '部门未选择!'
275             },
276             'sdate': {
277                 required: '起始日期未选择!'
278             },
279             'edate': {
280                 required: '截止日期未选择!'
281             },
282             'cardID': {
283                 required: '卡号不能为空!',
284                 remote: '该卡不能使用!'
285             }
286         },
287         errorPlacement: function (err, element) {
288             var p = element.parents('.form-group').eq(0);
289             var d = p.find('.text-error').eq(0);
290             d.css('color', '#D9534F');
291             err.appendTo(d);
292         }
293     })
294     isValid = iF.valid();
295     return isValid;
296 }
297
298 function doEdit(item) {
299     vm.o(ko.mapping.fromJS(item));
300     I.modal.modal('show');
301 }
302
303 function delConfirm(item) {
304     $("#modalContent").html('确定要删除【' + item.numberplates + '】吗?');
305     $("#dialog-confirm").removeClass('hide').dialog({
306         resizable: false,
307         width: '320',
308         modal: true,
309         title: "<div class='widget-header'><h4 class='smaller'><i class='ace-icon fa fa-exclamation-triangle red'></i>确认信息</h4></div>",
310         title_html: true,
311         position: { my: "center", at: "center", of: window },
312         buttons: [
313             {
314                 html: "<i class='ace-icon fa fa-trash-o bigger-110'></i>&nbsp; 确定",
315                 "class" : "btn btn-danger btn-minier",
316                 click: function() {
317                     $( this ).dialog( "close" );
318                     doDel(item);
319                 }
320             }
321             ,
322             {
323                 html: "<i class='ace-icon fa fa-times bigger-110'></i>&nbsp; 取消",
324                 "class" : "btn btn-minier",
325                 click: function() {
326                     $( this ).dialog( "close" );
327                 }
328             }
329         ]
330     });
331 }
332
333 function doDel(item) {
334     if (!!I.AjaxDelItem) return;
335     I.AjaxDelItem = true;
336     $.post('/enterprise/whitevehicle/delItem.htm', {id: item.numberplates}, function(data, textStatus, xhr) {
337         I.AjaxDelItem = false;
338         if (data.code >= 1) {
339             //parent.showErrmsg(data.errmsg);
340             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
341             return;
342         }
343         if (data.code == 0) {
344             vm.list.remove(item);
345             location.replace(location.href);
346             return;
347         }
348     }, 'json');
349 }
350
351 function doSave() {
352     if (!I.AjaxSaveItem &&valid()) {
353         I.AjaxSaveItem = true;
354         var o = ko.mapping.toJS(vm.o());
355         o.numberplates = o.numberplates.toUpperCase();
356         o.sdate = I.sdate.val();
357         o.edate = I.edate.val();
358         o.vtypename = I._type[o.vtypeid];
359         o.valid = $('#objUsed').prop('checked');
360         $.post('/enterprise/whitevehicle/saveItem.htm', o, function(data, textStatus, xhr) {
361             I.AjaxSaveItem = false;
362             if (data.code >= 1) {
363                 //parent.showErrmsg(data.errmsg);
364                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
365                 return;
366             }
367             if (data.code == 0) {
368                 location.replace(location.href);
369                 return;
370             }
371         }, 'json');
372     }
373 }
374
375 function clearError() {
376     $('#form input').removeClass('error');
377     $('#form .text-error').html('');
378 }
379
380 function getDepartList(keyword, page, pagesize, pages) {
381     $.post('/enterprise/depart/getList.htm', {
382         keyword: keyword,
383         page: page,
384         pagesize: pagesize,
385         pages: pages
386     }, function(data, textStatus, xhr) {
387         var allId = [];
388         vm.dList.removeAll();
389         if (data.code >= 1) {
390             //parent.showErrmsg(data.errmsg);
391             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
392             return;
393         }
394         if (data.code == 0) {
395             if (!!$('#jstree_Enterprise').jstree(true)) {
396                 $('#jstree_Enterprise').jstree(true).refresh();
397             }
398             I.DB_ep = {};
399             if (isList(data.list)) {
400                 var Arr = [];
401                 var level = 0;
402                 $.each(data.list, function(index, val) {
403                     if (val.level > 1) {
404                         for (var i = 1; i < val.level; i++) {
405                             val.name = '-' + val.name;
406                         }
407                     }
408                     vm.dList.push(val);
409                     allId.push(val.id);
410                     I.DB_ep[val.id] = val;
411                     if (val.level === 2) {
412                         Arr.push({
413                             text: val.name,
414                             id: val.id,
415                             children: [],
416                             state: index === 0 ? {selected: true} : ''
417                         });
418                     } else {
419                         var j = 3;
420                         var children = Arr[Arr.length - 1].children;
421                        while (j < val.level) {
422                             children = children[children.length - 1].children;
423                             j++;
424                         }
425                         children.push({
426                             text: val.name,
427                             id: val.id,
428                             children: []
429                         })
430                     }
431                 });
432                 if (allId.indexOf(I.dValue) != -1) {
433                     vm.did(I.dValue);
434                 }
435                 $('#jstree_Enterprise')
436                 .jstree({
437                     core: {
438                         check_callback : true,
439                         data: Arr
440                     },
441                     "plugins" : [
442                       'search'
443                     ]
444                 })
445                 .on("changed.jstree", function (e, data) {
446                     if(data.selected.length) {
447                         // console.log(data.instance.get_node(data.selected[0]));
448                         var selected = data.instance.get_node(data.selected[0]);
449                         I.selected = selected;
450                     }
451                 })
452             }
453             return;
454         }
455     }, 'json');
456 }
457
458
459 function getVehicleTypeList() {
460     $.post('/enterprise/vehicletype/getList.htm', {
461         keyword: null,
462         page: 0,
463         pagesize: null,
464         pages: 0
465     }, function(data, textStatus, xhr) {
466         vm.tList.removeAll();
467         if (data.code >= 1) {
468             //parent.showErrmsg(data.errmsg);
469             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
470             return;
471         }
472         if (data.code == 0) {
473             if (isList(data.list)) {
474                 $.each(data.list, function(index, val) {
475                     I._type[val.id] = val.name;
476                     vm.tList.push(val);
477                 });
478             }
479         }
480     }, 'json');
481 }
482
483 function doValid(item) {
484     if (!I.AjaxChangeUsed) {
485         var valid = !item.valid();
486         I.AjaxChangeUsed = true;
487         $.post('/enterprise/whitevehicle/valid.htm', {vehicleID: item.numberplates, valid: valid}, function(data, textStatus, xhr) {
488             I.AjaxChangeUsed = false;
489             if (data.code >= 1) {
490                 //parent.showErrmsg(data.errmsg);
491                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
492                 return;
493             }
494             if (data.code == 0) {
495                 item.valid(valid);
496                 return;
497             }
498         }, 'json');
499     }
500 }
501
502 function autoHeight() {
503     $('.page-content').css('min-height', $(parent.window).height() - 117);
504     $('.table-responsive').css('height', $(parent.window).height() - 217);
505 }
506
507 $(window).resize(function() {autoHeight();})