Administrator
2023-04-17 63fbfddabe08e353ad75e495c2ac8dc5203da88c
提交 | 用户 | 时间
58d006 1 /**
A 2 * date: 
3 * author: neeler 
4 */
5
6 //test data start
7 // var data_getList = Mock.mock('/task/getList.htm', {code: 0, 'list|6-30': [{bussinessNo: 'bussinessNo', vehicleId: 'vehicleId', fdnum: 'fdnum', fdweight: 'fdweight', driver: 'driver', phone: 'phone', dcompany: 'dcompany', rcompany: 'rcompany', invitecode: 'invitecode', hasCard: false}], pages: 12})
8 // var data_getVehicleList = Mock.mock('/business/getVehicleList.htm', {code: 0, 'list|5-30': [{vehicleId: 'vehicleId', feature: 'feature', note: 'note', fdnum: 'fdnum', fdweight: '4.551', vehicleweight: 'vehicleweight', loadweight: '51.111', driver: 'driver', phone: 'phone'}]})
9 // var data_validVehicle = Mock.mock('/business/validVehicle.htm', {code: 0, errmsg: '车牌号不能使用!'})
10 // var data_changeVehicle = Mock.mock('/task/changeVehicle.htm', {code: 0, })
11 // var data_doDel = Mock.mock('/task/delItem.htm', {code: 0, errmsg: '不能删除!'})
12 // var data_send = Mock.mock('/task/send.htm', {code: 0, })
13 // var data_resend = Mock.mock('/task/resend.htm', {code: 0, item: '23333'})
14 //test data end
15
16 var TYPE = ['千克' ,'吨' ] 
17
18 window.I = {
19     PZ: 30,
20     keyword: $('#keyword'),
21     searchBtn: $('#searchBtn'),
22     _page: !!$('#p').val() ? $('#p').val() - 1 : 0,
23     keywordValue: $('#k').val(),
24     newObj: $('#newObj'),
25     modal: $('#modal'),
26     save: $('#save'),
27     vehicleModal: $('#vehicleModal'),
28     tempVehicleModal: $('#tempVehicleModal'),
29     vehicleKeyword: $('#vehicleKeyword'),
30     refreshVehicleBtn: $('#refreshVehicleBtn'),
31     searchVehicleBtn: $('#searchVehicleBtn'),
32     addTempVehicle: $('#addTempVehicle'),
33     vehicleBindBtn: $('#vehicleBindBtn'),
34     tempVehicleSaveBtn: $('#tempVehicleSaveBtn'),
35     sendBtn: $('#sendBtn')
36 }
37
38 var Obj = {
39     vehicleId: '豫A',
40     driver: '',
41     phone: '',
42     IDNum: '',
43     vehicleweight: '',
44     loadweight: '',
45     note: '',
46     feature: ''
47 }
48
49 var ViewModel = function() {
50     var self = this;
51     self.isAdmin = ko.observable(typeof(parent.G) != 'undefined' ? parent.G.isAdmin : false);
52     self.tList = ko.observableArray();
53     self.mtid = ko.observable();
54     self.o = ko.observable(ko.mapping.fromJS(Obj));
55
56     self.keyword = ko.observable(I.keywordValue);
57     self.list = ko.observableArray();
58
59     self.edit = function(item) {
60         doEdit(item);
61     }
62     self.del = function(item) {
63         delConfirm(item);
64     }
65
66     self.change = function() {
67         doOpen();
68     }
69     self.mtvalid=function(item){
70         doValid(item);
71     }   
72
73     self.tyList = ko.observableArray(TYPE);
74     self.resend = function(item) {
75         doResend(item);
76     }
77     
78     self.details = function(item) {
79         newTab(item);
80     }
81     self.vehicleTasks = function(item) {
82         gotoVehicleDetails(item);
83     }
84     self.changeVehicle = function () {
85         I.vehicleModal.modal('show');
86     }
87     self.vList = ko.observableArray();
88
89
90     //厂区
91     self.cqVal=ko.observable(0);
92     self.cqList=ko.observableArray();
93     self.cqchange=function(){
94         doOpen();
95     }
96
97 }
98
99 $(function () {
100     window.vm = new ViewModel();
101     ko.applyBindings(vm);
102     // doSearch();
103     // getVehicleList();
104     getcqList();
105     autoHeight();
106     if (vm.isAdmin()) {
107         getCompanyList();
108     }
109     pageInit();
110 });
111
112 function pageInit() {
113     I.sendBtn.click(function (e) { 
114         e.preventDefault();
115         doSend();
116     });
117     I.tempVehicleSaveBtn.click(function (e) { 
118         e.preventDefault();
119         if (valid()) {
120             validVehicle();
121         }
122     });
123     I.vehicleBindBtn.click(function (e) { 
124         e.preventDefault();
125         if ($('.vitem.info').length) {
126             doVehicleBind();
127         } else {
128             parent.showErrmsg('请选择一个车辆!');
129         }
130     });
131     I.addTempVehicle.click(function (e) { 
132         e.preventDefault();
133         vm.o(ko.mapping.fromJS(Obj));
134         I.vehicleModal.modal('hide');
135         I.tempVehicleModal.modal('show');
136     });
137     I.tempVehicleModal.on('hidden.bs.modal', function (e) {
138         clearError();
139     });
140     I.vehicleKeyword.keyup(function (e) { 
141         // updateVList();
142     });
143     I.searchVehicleBtn.click(function (e) { 
144         e.preventDefault();
145         // updateVList();
146     });
147     I.refreshVehicleBtn.click(function (e) { 
148         e.preventDefault();
149         // getVehicleList();
150     });
151     $('.main-table').scroll(function() {
152         $('.th').css('top', $(this).scrollTop());
153     })
154     I.newObj.click(function(event) {
155         vm.o(ko.mapping.fromJS(Obj));
156         // getNewNo();
157         I.modal.modal('show');
158     });
159     I.searchBtn.click(function(event) {
160         doOpen();
161     });
162     I.modal.on('hidden.bs.modal', function (e) {
163         clearError();
164     });
165     I.keyword.on(ISIE ? 'keydown' : 'keyup', function (event) {
166         if (event.keyCode == 13) {
167             doOpen();
168         }
169     });
170 }
171
172 function doOpen() {
173     doSearch();
174 }
175
176 function doSearch() {
177     getList(vm.keyword(), vm.mtid(), I._page, I.PZ, 1);
178 }
179
180 function doSend() {
181     if (!!I.Ajaxsend) {
182         return;
183     }
184     showErrmsg('该方法已取消,不能使用!');
185     return ;
186     I.Ajaxsend = true;
187     I.sendBtn.prop('disabled', true);
188     $.post("/task/send.htm", null,
189         function (data, textStatus, jqXHR) {
190             I.Ajaxsend = false;
191             I.sendBtn.prop('disabled', false);
192             if (data.code >= 1) {
193                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
194                 return;
195             }
196             if (data.code == 0) {
197                 showErrmsg('发送成功!');
198                 return;
199             }
200         },
201         "json"
202     );
203 }
204
205 function doVehicleBind() {
206     I.vehicleBindBtn.prop('disabled', true);
207     var bussinessNo = $('.titem.info').attr('data-no');
208     var vehicle = null;
209     var indx = $('.vitem.info').attr('data-indx');
210     $.each(vm.vList(), function (index, value) { 
211          if (value.indx === indx) {
212              vehicle = value;
213          }
214     });
215     changeVehicle(bussinessNo, vehicle);
216 }
217
218 function changeVehicle(bussinessNo, vehicle) {
219     if (!!I.AjaxchangeVehicle) {
220         return;
221     }
222     I.AjaxchangeVehicle = true;
223     $.post("/task/changeVehicle.htm", {bussinessNo: bussinessNo, vehicle: $.toJSON(vehicle)},
224         function (data, textStatus, jqXHR) {
225             I.AjaxchangeVehicle = false;
226             I.vehicleBindBtn.prop('disabled', false);
227             I.tempVehicleSaveBtn.prop('disabled', false);
228             if (data.code >= 1) {
229                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
230                 return;
231             }
232             if (data.code == 0) {
233                 showErrmsg('换车成功!');
234                 doSearch();
235                 I.vehicleModal.modal('hide');
236                 I.tempVehicleModal.modal('hide');    
237                 return;
238             }
239         },
240         "json"
241     );
242 }
243
244 function getList(keyword, companyNo, page, pagesize, pages) {
245     I._page = page;
246     $.post('/task/getList.htm', {
247         searchword: keyword,
248         companyNo: vm.isAdmin() ? companyNo : (typeof(parent.G) != 'undefined' ? parent.G.loginCompanyNo : 'ABCDEFG'),
249         page: page,
250         pagesize: pagesize,
251         pages: pages,
252         cqV:vm.cqVal()
253     }, function(data, textStatus, xhr) {
254         vm.list.removeAll();
255         if (data.code >= 1) {
256             //parent.showErrmsg(data.errmsg);
257             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
258             return;
259         }
260         if (data.code == 0) {
261             if (isList(data.list)) {
262                 $.each(data.list, function(index, val) {
263                     val.invitecode=ko.observable(val.invitecode);
264                     val.hasCard = val.hasCard == 'true';
265                     vm.list.push(val);
266                 });
267                 $('.titem').click(function (e) { 
268                     $('.titem').removeClass('info');
269                     $(this).addClass('info');
270                 });
271             }
272             if (!!pages) {
273                 pages = data.pages;
274                 $('#pagdiv').unbind('page').empty();
275                 if (pages > 1) {
276                     $('#pagdiv').bootpag({total: pages, maxVisible: 10, page: page + 1}).on('page',function(event,num){
277                         getList(keyword, companyNo, num - 1, pagesize, 0);
278                     });
279                 }
280             }
281             return;
282         }
283     }, 'json');
284 }
285
286 function getVehicleList() {
287     $.post("/business/getVehicleList.htm", {
288         companyNo: vm.isAdmin() ? '' : (typeof(parent.G) != 'undefined' ? parent.G.loginCompanyNo : 'ABCDEFG'),
289          vehicleId:'111111'
290     },
291         function (data, textStatus, jqXHR) {
292             I.VDB = [];            
293             if (data.code >= 1) {
294                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
295                 return;
296             }
297             if (data.code == 0) {
298                 if (isList(data.list)) {
299                     $.each(data.list, function (index, value) { 
300                         value.indx = index + '';
301                         value.lastweight = '';
302                         if ($.isNumeric(value.loadweight) && $.isNumeric(value.fdweight)) {
303                             value.lastweight = (parseFloat(value.loadweight) - parseFloat(value.fdweight)).toFixed(3);
304                         }
305                         I.VDB.push(value);
306                     });
307                 }
308                 updateVList();
309                 return;
310             }
311         },
312         "json"
313     );
314 }
315
316 function updateVList() {
317     var str = I.vehicleKeyword.val();
318     vm.vList.removeAll();
319     if (!!str) {
320         var reg = new RegExp(str);
321         $.each(I.VDB, function (index, value) { 
322              if (reg.test(value.vehicleId)) {
323                  vm.vList.push(value);
324              }
325         });
326     } else {
327         $.each(I.VDB, function (index, value) { 
328              vm.vList.push(value);
329         });
330     }
331     $('.vitem').click(function (e) { 
332         $('.vitem').removeClass('info');
333         $(this).addClass('info');
334     });
335 }
336
337 function doTempVehicleBind() {
338     I.tempVehicleSaveBtn.prop('disabled', false);
339     var bussinessNo = $('.titem.info').attr('data-no');
340     var vehicle = ko.mapping.toJS(vm.o());
341     changeVehicle(bussinessNo, vehicle);
342 }
343
344 function validVehicle() {
345     $.post("/business/validVehicle.htm", {vehicleId: ko.mapping.toJS(vm.o()).vehicleId.toUpperCase()},
346         function (data, textStatus, jqXHR) {
347             if (data.code >= 1) {
348                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
349                 return;
350             }
351             if (data.code == 0) {
352                 doTempVehicleBind();
353                 return;
354             }
355         },
356         "json"
357     );
358 }
359
360 function valid(){
361     var isValid = false;
362     var iF = $('#form');
363     iF.validate({
364         rules: {
365             'vehicleId': {
366                 required: true,
367                 isPlateNumber: true
368             },
369             'driver': {
370                 required: true,
371             },
372             'phone': {
373                 required: true,
374                 isPhone: true
375             },
376             'IDNum':{
377                 required:true,
378             }
379         },
380         messages: {
381             'vehicleId': {
382                 required: '不能为空!',
383                 isPlateNumber: '车牌号不正确!'
384             },
385             'driver': {
386                 required: '不能为空!',
387             },
388             'phone': {
389                 required: '不能为空!',
390                 isPhone: '手机号不正确!'
391             },
392             'IDNum':{
393                 required:'不能为空!'
394             }
395         },
396         errorPlacement: function (err, element) {
397             var p = element.parents('.form-group').eq(0);
398             var d = p.find('.text-error').eq(0);
399             d.css('color', '#D9534F');
400             err.appendTo(d);
401         }
402     })
403     isValid = iF.valid();
404     return isValid;
405 }
406
407 function doEdit(item) {
408     if(isFunction(item.valid)){
409         item.valid=item.valid();
410     }
411     vm.o(ko.mapping.fromJS(item));
412     I.modal.modal('show');
413 }
414
415 function delConfirm(item) {
416     $("#modalContent").html('确定要取消【' + item.vehicleId + '】的派车任务吗?');
417     $("#dialog-confirm").removeClass('hide').dialog({
418         resizable: false,
419         width: '320',
420         modal: true,
421         title: "<div class='widget-header'><h4 class='smaller'><i class='ace-icon fa fa-exclamation-triangle red'></i>确认信息</h4></div>",
422         title_html: true,
423         position: { my: "center", at: "center", of: window },
424         buttons: [
425             {
426                 html: "<i class='ace-icon fa fa-trash-o bigger-110'></i>&nbsp; 确定",
427                 "class" : "btn btn-danger btn-minier",
428                 click: function() {
429                     $( this ).dialog( "close" );
430                     doDel(item);
431                 }
432             }
433             ,
434             {
435                 html: "<i class='ace-icon fa fa-times bigger-110'></i>&nbsp; 取消",
436                 "class" : "btn btn-minier",
437                 click: function() {
438                     $( this ).dialog( "close" );
439                 }
440             }
441         ]
442     });
443 }
444
445 function doDel(item) {
446     if (!!I.AjaxDelItem) return;
447     I.AjaxDelItem = true;
448     $.post('/task/delItem.htm', {bussinessNo: item.bussinessNo}, function(data, textStatus, xhr) {
449         I.AjaxDelItem = false;
450         if (data.code >= 1) {
451             //parent.showErrmsg(data.errmsg);
452             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
453             return;
454         }
455         if (data.code == 0) {
456             vm.list.remove(item);
457             parent.showErrmsg('删除成功!');
458             return;
459         }
460     }, 'json');
461 }
462
463 function doSave() {
464     if (!I.AjaxSaveItem &&valid()) {
465         I.AjaxSaveItem = true;
466         I.save.prop('disabled', true);
467         var o = ko.mapping.toJS(vm.o());
468         o.vehicleId = o.vehicleId.toUpperCase();
469         o.state = $('#state').prop('checked');
470         o.companyNo = vm.isAdmin() ? o.companyNo : (typeof(parent.G) != 'undefined' ? parent.G.loginCompanyNo : 'ABCDEFG')
471         $.post('/vehicle/saveItem.htm', o, function(data, textStatus, xhr) {
472             I.AjaxSaveItem = false;
473             I.save.prop('disabled', false);
474             if (data.code >= 1) {
475                 //parent.showErrmsg(data.errmsg);
476                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
477                 return;
478             }
479             if (data.code == 0) {
480                 parent.showErrmsg('保存成功!');
481                 I.modal.modal('hide');
482                 getList(vm.keyword(), vm.mtid(), I._page, I.PZ, 1);
483                 return;
484             }
485         }, 'json');
486     }
487 }
488
489 function clearError() {
490     $('#form input').removeClass('error');
491     $('#form .text-error').html('');
492 }
493
494 function getCompanyList() {
495     $.post('/company/getList.htm', null, function(data, textStatus, xhr) {
496         vm.tList.removeAll();
497         if (data.code >= 1) {
498             //parent.showErrmsg(data.errmsg);
499             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
500             return;
501         }
502         if (data.code == 0) {
503             if (isList(data.list)) {
504                 $.each(data.list, function(index, val) {
505                     vm.tList.push(val);
506                 });
507             }
508         }
509     }, 'json');
510 }
511
512 function doValid(item){
513     var state=true;
514     if(isFunction(item.state)){
515         state=item.state();
516     }else{
517         state=item.state;
518     }
519     jQuery.post('/vehicle/changeState.htm', {vehicleId: item.vehicleId, state: !state}, function(data, textStatus, xhr) {
520       //optional stuff to do after success
521       if(data.code==0){
522         item.state(data.item);
523       }else{
524         //parent.showErrmsg(data.errmsg);
525         swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
526       }
527     },'json');
528 }
529
530 function getNewNo() {
531     $.post("/basicconfig/prefix/getNewNo.htm", {type: 'materiel'},
532         function (data, textStatus, jqXHR) {
533             if (data.code >= 1) {
534                 //parent.showErrmsg(data.errmsg);
535                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
536                 return;
537             }
538             if (data.code == 0) {
539                 // vm.o().visitNo(data.number);
540                 $('#materielNo').val(data.number);
541                 return;
542             }
543         },
544         "json"
545     );
546 }
547
548 function autoHeight() {
549     $('.page-content').css('min-height', $(parent.window).height() - 117);
550     $('.table-responsive').css('height', $(parent.window).height() - 217);
551 }
552
553 function doResend(item) {
554     $.post("/task/resend.htm", {item: item.bussinessNo},
555         function (data, textStatus, jqXHR) {
556             if (data.code >= 1) {
557                 //parent.showErrmsg(data.errmsg);
558                 swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
559                 return;
560             }
561             if (data.code == 0) {
562                 item.invitecode(data.item);
563                 parent.showErrmsg('重发成功!');
564                 return;
565             }
566         },
567         "json"
568     );
569 }
570
571 function newTab(item) {
572     parent.closableTab.addTab({
573         'id': new Date().getTime(),
574         'name': '业务详情',
575         'url': '/basic/bizDetalis.jsf?id=' + item.id + '&businessNo=' + item.bussinessNo,
576         'closable': true
577     });
578 }
579
580 function gotoVehicleDetails(item) {
581     parent.closableTab.addTab({
582         'id': new Date().getTime(),
583         'name': item.vehicleId + '的配车物资',
584         'url': '/basic/vehicleBindMaterials.jsf?numberplates=' + encodeURI(encodeURI(item.vehicleId)) + '&id=' + item.id+'&bsNo=' + item.bussinessNo,
585         'closable': true
586     });
587 }
588
589 //获取物流公司可操作的厂区
590 function getcqList() {
591     $.post('/company/getcqList.htm', null, function(data, textStatus, xhr) {
592         vm.cqList.removeAll();
593         if (data.code >= 1) {
594             //parent.showErrmsg(data.errmsg);
595             swal({title:'',text:data.errmsg,type:'error',confirmButtonText:'确定'}); 
596             return;
597         }
598         if (data.code == 0) {
599             if (isList(data.list)) {
600                 $.each(data.list, function(index, val) {
601                     vm.cqList.push(val);
602                 });
603             }
604         }
605     }, 'json');
606 }