Commit 2578ee809c958dfa487ec73198891ef473dc5cd6
1 parent
e319593a
更新
Showing
20 changed files
with
788 additions
and
400 deletions
src/main/java/com/bsth/controller/DownloadController.java
| ... | ... | @@ -28,11 +28,10 @@ public class DownloadController |
| 28 | 28 | { |
| 29 | 29 | |
| 30 | 30 | @RequestMapping("download") |
| 31 | - public ResponseEntity<byte[]> download(String jName,String lpName) throws IOException { | |
| 32 | - String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+jName+".xls"; | |
| 33 | -// System.out.println(moudelPath); | |
| 34 | - String fileName = jName+lpName+".xls"; | |
| 35 | -// String path="D:\\export\\target\\"+jName+".xls"; | |
| 31 | + public ResponseEntity<byte[]> download(String fileName) throws IOException { | |
| 32 | + fileName = fileName+".xls"; | |
| 33 | + String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+fileName; | |
| 34 | +// String path="D:\\export\\target\\"+jName+".xls"; | |
| 36 | 35 | File file=new File(moudelPath); |
| 37 | 36 | HttpHeaders headers = new HttpHeaders(); |
| 38 | 37 | String realFileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题 | ... | ... |
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| ... | ... | @@ -300,8 +300,8 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 300 | 300 | } |
| 301 | 301 | |
| 302 | 302 | @RequestMapping(value = "/dailyInfo") |
| 303 | - public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date) { | |
| 304 | - return scheduleRealInfoService.dailyInfo(line, date); | |
| 303 | + public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date,@RequestParam String type) { | |
| 304 | + return scheduleRealInfoService.dailyInfo(line, date, type); | |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | @RequestMapping(value = "/historyMessage") |
| ... | ... | @@ -336,9 +336,33 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 336 | 336 | @RequestParam String endDate,@RequestParam String lpName,@RequestParam String code) { |
| 337 | 337 | return scheduleRealInfoService.correctForm(line, startDate, endDate, lpName, code); |
| 338 | 338 | } |
| 339 | - | |
| 339 | + /** | |
| 340 | + * @Title queryListWaybill | |
| 341 | + * @Description 查询行车路单列表 | |
| 342 | + * @param jName 驾驶员名字 | |
| 343 | + * @param clZbh 车辆自编号(内部编号) | |
| 344 | + * @param lpName 路牌 | |
| 345 | + * @return | |
| 346 | + */ | |
| 340 | 347 | @RequestMapping(value="/queryListWaybill") |
| 341 | 348 | public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName){ |
| 342 | 349 | return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName); |
| 343 | 350 | } |
| 351 | + | |
| 352 | + @RequestMapping(value="/statisticsDaily") | |
| 353 | + public List<Map<String,Object>> statisticsDaily(@RequestParam String line,@RequestParam String date,@RequestParam String xlName){ | |
| 354 | + return scheduleRealInfoService.statisticsDaily(line, date,xlName); | |
| 355 | + } | |
| 356 | + | |
| 357 | + /** | |
| 358 | + * @Title: scheduleDaily | |
| 359 | + * @Description: TODO(调度日报表) | |
| 360 | + * @param line 线路 | |
| 361 | + * @param date 时间 | |
| 362 | + * @return | |
| 363 | + */ | |
| 364 | + @RequestMapping(value="/scheduleDaily") | |
| 365 | + public List<Object> scheduleDaily(@RequestParam String line,@RequestParam String date){ | |
| 366 | + return scheduleRealInfoService.scheduleDaily(line,date); | |
| 367 | + } | |
| 344 | 368 | } | ... | ... |
src/main/java/com/bsth/controller/sys/UserController.java
| ... | ... | @@ -4,23 +4,30 @@ import javax.servlet.http.HttpServletRequest; |
| 4 | 4 | import javax.servlet.http.HttpServletResponse; |
| 5 | 5 | import javax.servlet.http.HttpSession; |
| 6 | 6 | |
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 7 | 8 | import org.springframework.security.authentication.BadCredentialsException; |
| 8 | 9 | import org.springframework.security.core.Authentication; |
| 9 | 10 | import org.springframework.security.core.context.SecurityContextHolder; |
| 11 | +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | |
| 10 | 12 | import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; |
| 11 | 13 | import org.springframework.security.web.authentication.session.SessionAuthenticationException; |
| 12 | 14 | import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | +import org.springframework.web.bind.annotation.RequestParam; | |
| 13 | 16 | import org.springframework.web.bind.annotation.RestController; |
| 14 | 17 | import org.springframework.web.servlet.ModelAndView; |
| 15 | 18 | |
| 16 | 19 | import com.bsth.controller.BaseController; |
| 17 | 20 | import com.bsth.entity.sys.SysUser; |
| 18 | 21 | import com.bsth.security.util.SecurityUtils; |
| 22 | +import com.bsth.service.sys.SysUserService; | |
| 19 | 23 | |
| 20 | 24 | @RestController |
| 21 | 25 | @RequestMapping("user") |
| 22 | 26 | public class UserController extends BaseController<SysUser, Integer>{ |
| 23 | 27 | |
| 28 | + @Autowired | |
| 29 | + SysUserService sysUserService; | |
| 30 | + | |
| 24 | 31 | /** |
| 25 | 32 | * |
| 26 | 33 | * @Title: loginFailure |
| ... | ... | @@ -65,4 +72,45 @@ public class UserController extends BaseController<SysUser, Integer>{ |
| 65 | 72 | public SysUser currentUser(){ |
| 66 | 73 | return SecurityUtils.getCurrentUser(); |
| 67 | 74 | } |
| 75 | + | |
| 76 | + /** | |
| 77 | + * @Title changeEnabled | |
| 78 | + * @Description: TODO(改变用户状态) | |
| 79 | + * @param id 用户ID | |
| 80 | + * @param enabled 状态 | |
| 81 | + * @return | |
| 82 | + */ | |
| 83 | + @RequestMapping("/changeEnabled") | |
| 84 | + public int changeEnabled(@RequestParam int id,@RequestParam int enabled){ | |
| 85 | + return sysUserService.changeEnabled(id,enabled); | |
| 86 | + } | |
| 87 | + | |
| 88 | + /** | |
| 89 | + * @Title changePWD | |
| 90 | + * @Description: TODO(修改密码) | |
| 91 | + * @param oldPWD 原始密码 | |
| 92 | + * @param newwPWD 新密码 | |
| 93 | + * @param cnewPWD 确认新密码 | |
| 94 | + * @return | |
| 95 | + */ | |
| 96 | + @RequestMapping("/changePWD") | |
| 97 | + public String changePWD(@RequestParam String oldPWD,@RequestParam String newPWD,@RequestParam String cnewPWD){ | |
| 98 | + SysUser sysUser = SecurityUtils.getCurrentUser(); | |
| 99 | + String msg = ""; | |
| 100 | + if(new BCryptPasswordEncoder(4).matches(oldPWD, sysUser.getPassword())){ | |
| 101 | + if(oldPWD.equals(newPWD)){ | |
| 102 | + msg = "新密码不能跟原始密码一样!"; | |
| 103 | + }else{ | |
| 104 | + if(newPWD.equals(cnewPWD)){ | |
| 105 | + sysUserService.changePWD(sysUser.getId(),newPWD); | |
| 106 | + msg = "修改成功!"; | |
| 107 | + }else{ | |
| 108 | + msg= "新密码两次输入不一致!"; | |
| 109 | + } | |
| 110 | + } | |
| 111 | + }else{ | |
| 112 | + msg = "原始密码错误!"; | |
| 113 | + } | |
| 114 | + return msg; | |
| 115 | + } | |
| 68 | 116 | } | ... | ... |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| ... | ... | @@ -54,4 +54,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI |
| 54 | 54 | |
| 55 | 55 | @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by fcsj") |
| 56 | 56 | List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName); |
| 57 | + | |
| 58 | + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2") | |
| 59 | + List<ScheduleRealInfo> statisticsDaily(String line,String date); | |
| 60 | + | |
| 61 | + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2") | |
| 62 | + List<ScheduleRealInfo> scheduleDaily(String line,String date); | |
| 57 | 63 | } | ... | ... |
src/main/java/com/bsth/repository/sys/SysUserRepository.java
| 1 | 1 | package com.bsth.repository.sys; |
| 2 | 2 | |
| 3 | +import org.springframework.data.jpa.repository.Modifying; | |
| 4 | +import org.springframework.data.jpa.repository.Query; | |
| 3 | 5 | import org.springframework.stereotype.Repository; |
| 6 | +import org.springframework.transaction.annotation.Transactional; | |
| 4 | 7 | |
| 5 | 8 | import com.bsth.entity.sys.SysUser; |
| 6 | 9 | import com.bsth.repository.BaseRepository; |
| ... | ... | @@ -10,4 +13,13 @@ public interface SysUserRepository extends BaseRepository<SysUser, Integer>{ |
| 10 | 13 | |
| 11 | 14 | SysUser findByUserName(String userName); |
| 12 | 15 | |
| 16 | + @Transactional | |
| 17 | + @Modifying | |
| 18 | + @Query(value="update bsth_c_sys_user set enabled=?2 where id=?1",nativeQuery=true) | |
| 19 | + int changeEnabled(int id,int enabled); | |
| 20 | + | |
| 21 | + @Transactional | |
| 22 | + @Modifying | |
| 23 | + @Query(value="update bsth_c_sys_user set password=?2 where id=?1",nativeQuery=true) | |
| 24 | + int changePWD(int id,String newPWD); | |
| 13 | 25 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
| ... | ... | @@ -62,7 +62,7 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 62 | 62 | |
| 63 | 63 | List<ScheduleRealInfo> exportWaybill(String jName,String clZbh,String lpName); |
| 64 | 64 | |
| 65 | - List<Map<String,Object>> dailyInfo(String line,String date); | |
| 65 | + List<Map<String,Object>> dailyInfo(String line,String date,String type); | |
| 66 | 66 | |
| 67 | 67 | List<Object[]> historyMessage(String line,String date,String code); |
| 68 | 68 | |
| ... | ... | @@ -95,4 +95,8 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 95 | 95 | List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName); |
| 96 | 96 | |
| 97 | 97 | Map<String, Object> removeChildTask(Long taskId); |
| 98 | + | |
| 99 | + List<Map<String,Object>> statisticsDaily(String line,String date,String xlName); | |
| 100 | + | |
| 101 | + List<Object> scheduleDaily(String line,String date); | |
| 98 | 102 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -42,7 +42,9 @@ import com.bsth.service.SectionRouteService; |
| 42 | 42 | import com.bsth.service.impl.BaseServiceImpl; |
| 43 | 43 | import com.bsth.service.realcontrol.ScheduleRealInfoService; |
| 44 | 44 | import com.bsth.service.realcontrol.buffer.ScheduleBuffer; |
| 45 | +import com.bsth.util.ReportRelatedUtils; | |
| 45 | 46 | import com.bsth.util.ReportUtils; |
| 47 | +import com.bsth.util.TimeUtils; | |
| 46 | 48 | import com.bsth.util.TransGPS; |
| 47 | 49 | import com.bsth.util.TransGPS.Location; |
| 48 | 50 | import com.bsth.vehicle.BorrowCenter; |
| ... | ... | @@ -87,7 +89,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 87 | 89 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 88 | 90 | |
| 89 | 91 | SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), |
| 90 | - sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"), sdfShort = new SimpleDateFormat("HH:mm"); | |
| 92 | + sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"), sdfShort = new SimpleDateFormat("HH:mm"), | |
| 93 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 91 | 94 | |
| 92 | 95 | @Override |
| 93 | 96 | public Map<String, Collection<ScheduleRealInfo>> findByLines(String lines) { |
| ... | ... | @@ -426,13 +429,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 426 | 429 | public List<ScheduleRealInfo> queryUserInfo(String line, String date) { |
| 427 | 430 | return scheduleRealInfoRepository.queryUserInfo(line, date); |
| 428 | 431 | } |
| 429 | - | |
| 432 | + /** | |
| 433 | + * | |
| 434 | + */ | |
| 430 | 435 | @Override |
| 431 | 436 | public List<ScheduleRealInfo> exportWaybill(String jName, String clZbh, String lpName) { |
| 432 | 437 | ReportUtils ee = new ReportUtils(); |
| 438 | + ReportRelatedUtils rru = new ReportRelatedUtils(); | |
| 433 | 439 | List<Iterator<?>> list = new ArrayList<Iterator<?>>(); |
| 434 | 440 | List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.exportWaybill(jName, clZbh, lpName); |
| 435 | - ScheduleRealInfo scheduleReal = scheduleRealInfoRepository.findOne(scheduleRealInfos.get(0).getId()); | |
| 441 | + List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>(); | |
| 436 | 442 | |
| 437 | 443 | DecimalFormat format = new DecimalFormat("0.00"); |
| 438 | 444 | int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); |
| ... | ... | @@ -440,7 +446,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 440 | 446 | int jhbc = 0; |
| 441 | 447 | double jhlc = 0; |
| 442 | 448 | float realMileage = 0l,addMileage = 0l,remMileage = 0l; |
| 443 | - Map<String,Object> map = new HashMap<String, Object>(); | |
| 449 | + | |
| 450 | + Map<String,Object> map; | |
| 444 | 451 | for(ScheduleRealInfo scheduleRealInfo : scheduleRealInfos){ |
| 445 | 452 | if(scheduleRealInfo != null){ |
| 446 | 453 | jhlc += scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); |
| ... | ... | @@ -448,8 +455,34 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 448 | 455 | addMileage += scheduleRealInfo.getAddMileage()==null?0:scheduleRealInfo.getAddMileage(); |
| 449 | 456 | remMileage += scheduleRealInfo.getRemMileage()==null?0:scheduleRealInfo.getRemMileage(); |
| 450 | 457 | jhbc++; |
| 458 | + | |
| 459 | + map = new HashMap<String, Object>(); | |
| 460 | + try { | |
| 461 | + map = rru.getMapValue(scheduleRealInfo); | |
| 462 | + String zdsj = scheduleRealInfo.getZdsj(); | |
| 463 | + String zdsjActual = scheduleRealInfo.getZdsjActual(); | |
| 464 | + if(zdsj != null && zdsjActual != null && | |
| 465 | + !zdsj.equals(zdsjActual)){ | |
| 466 | + if(zdsj.compareTo(zdsjActual) > 0){ | |
| 467 | + map.put("fast", TimeUtils.getTimeDifference(zdsj, zdsjActual)); | |
| 468 | + map.put("slow", ""); | |
| 469 | + } else { | |
| 470 | + map.put("fast", ""); | |
| 471 | + map.put("slow", TimeUtils.getTimeDifference(zdsj, zdsjActual)); | |
| 472 | + } | |
| 473 | + } else { | |
| 474 | + map.put("fast", ""); | |
| 475 | + map.put("slow", ""); | |
| 476 | + } | |
| 477 | + listMap.add(map); | |
| 478 | + } catch (Exception e) { | |
| 479 | + e.printStackTrace(); | |
| 480 | + } | |
| 451 | 481 | } |
| 452 | 482 | } |
| 483 | + | |
| 484 | + //计算里程和班次数,并放入Map里 | |
| 485 | + map = new HashMap<String, Object>(); | |
| 453 | 486 | map.put("jhlc", format.format(jhlc)); |
| 454 | 487 | map.put("remMileage", format.format(remMileage)); |
| 455 | 488 | map.put("addMileage", format.format(addMileage)); |
| ... | ... | @@ -463,19 +496,50 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 463 | 496 | |
| 464 | 497 | String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\"; |
| 465 | 498 | |
| 466 | - list.add(scheduleRealInfos.iterator()); | |
| 467 | - ee.excelReplace(list, new Object[] { scheduleReal,map }, path+"mould\\waybill.xls", | |
| 499 | + list.add(listMap.iterator()); | |
| 500 | + ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould\\waybill.xls", | |
| 468 | 501 | path+"export\\" + jName + ".xls"); |
| 469 | 502 | return scheduleRealInfos; |
| 470 | 503 | } |
| 471 | 504 | |
| 472 | 505 | @Override |
| 473 | - public List<Map<String, Object>> dailyInfo(String line, String date) { | |
| 506 | + public List<Map<String, Object>> dailyInfo(String line, String date,String type) { | |
| 474 | 507 | DecimalFormat format = new DecimalFormat("0.00"); |
| 508 | + ReportUtils ee = new ReportUtils(); | |
| 509 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 475 | 510 | List<Map<String, Object>> list = scheduleRealInfoRepository.dailyInfo(line, date); |
| 511 | + | |
| 512 | + double totalZGL = 0,totalKSGL=0,totalYH=0; | |
| 513 | + int totalBCS=0; | |
| 476 | 514 | for(int i = 0;i < list.size();i++){ |
| 477 | - list.get(i).put("zgl", format.format(Double.parseDouble(list.get(i).get("zgl")==null?"0":list.get(i).get("zgl").toString()))); | |
| 478 | - list.get(i).put("ksgl", format.format(Double.parseDouble(list.get(i).get("ksgl")==null?"0":list.get(i).get("ksgl").toString()))); | |
| 515 | + String zgl = format.format(Double.parseDouble(list.get(i).get("zgl")==null?"0":list.get(i).get("zgl").toString())); | |
| 516 | + String ksgl = format.format(Double.parseDouble(list.get(i).get("ksgl")==null?"0":list.get(i).get("ksgl").toString())); | |
| 517 | + if(type.equals("export")){ | |
| 518 | + totalZGL += Double.parseDouble(zgl); | |
| 519 | + totalKSGL += Double.parseDouble(ksgl); | |
| 520 | + totalBCS += Integer.parseInt(list.get(i).get("bcs").toString()); | |
| 521 | + } | |
| 522 | + list.get(i).put("zgl", zgl); | |
| 523 | + list.get(i).put("ksgl", ksgl); | |
| 524 | + } | |
| 525 | + if(type.equals("export")){ | |
| 526 | + Map<String,Object> map = new HashMap<String, Object>(); | |
| 527 | + map.put("line", line); | |
| 528 | + map.put("date", date); | |
| 529 | + map.put("totalZGL", totalZGL); | |
| 530 | + map.put("totalKSGL", totalKSGL); | |
| 531 | + map.put("totalYH", totalYH); | |
| 532 | + map.put("totalBCS", totalBCS); | |
| 533 | + | |
| 534 | + String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\"; | |
| 535 | + | |
| 536 | + listI.add(list.iterator()); | |
| 537 | + try { | |
| 538 | + ee.excelReplace(listI, new Object[] { map }, path+"mould\\daily.xls", | |
| 539 | + path+"export\\班次日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); | |
| 540 | + } catch (ParseException e) { | |
| 541 | + e.printStackTrace(); | |
| 542 | + } | |
| 479 | 543 | } |
| 480 | 544 | return list; |
| 481 | 545 | } |
| ... | ... | @@ -907,9 +971,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 907 | 971 | map.put("jhlc", format.format(jhlc)); |
| 908 | 972 | map.put("remMileage", format.format(remMileage)); |
| 909 | 973 | map.put("addMileage", format.format(addMileage)); |
| 910 | - map.put("yygl", format.format(realMileage-addMileage)); | |
| 974 | + map.put("yygl", format.format(jhlc)); | |
| 911 | 975 | map.put("ksgl", format.format(realMileage-addMileage)); |
| 912 | - map.put("realMileage", format.format(realMileage)); | |
| 976 | + map.put("realMileage", format.format(jhlc)); | |
| 913 | 977 | map.put("jhbc", jhbc); |
| 914 | 978 | map.put("cjbc", cjbc); |
| 915 | 979 | map.put("ljbc", ljbc); |
| ... | ... | @@ -967,4 +1031,40 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 967 | 1031 | } |
| 968 | 1032 | return rs; |
| 969 | 1033 | } |
| 1034 | + | |
| 1035 | + @Override | |
| 1036 | + public List<Map<String, Object>> statisticsDaily(String line, String date, | |
| 1037 | + String xlName) { | |
| 1038 | + List<ScheduleRealInfo> list = scheduleRealInfoRepository.statisticsDaily(line, date); | |
| 1039 | + double jhlc = 0.00; | |
| 1040 | + float realMileage = 0l; | |
| 1041 | + for(ScheduleRealInfo scheduleRealInfo: list){ | |
| 1042 | + if(scheduleRealInfo != null){ | |
| 1043 | + jhlc += scheduleRealInfo.getJhlc(); | |
| 1044 | + if(scheduleRealInfo.getsName().equals("1")){ | |
| 1045 | + realMileage += scheduleRealInfo.getRealMileage(); | |
| 1046 | + } | |
| 1047 | + } | |
| 1048 | + } | |
| 1049 | + return null; | |
| 1050 | + } | |
| 1051 | + | |
| 1052 | + @Override | |
| 1053 | + public List<Object> scheduleDaily(String line, String date) { | |
| 1054 | + Map<String,String> tempMap = null; | |
| 1055 | + List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleDaily(line, date); | |
| 1056 | + Map<String, Object> map = new HashMap<String, Object>(); | |
| 1057 | + Double jhlc = 0.00; | |
| 1058 | + for(ScheduleRealInfo scheduleRealInfo:scheduleRealInfos){ | |
| 1059 | + if(scheduleRealInfo != null){ | |
| 1060 | + jhlc += scheduleRealInfo.getJhlc(); | |
| 1061 | + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | |
| 1062 | + if(childTaskPlans.isEmpty()){ | |
| 1063 | + | |
| 1064 | + } | |
| 1065 | + } | |
| 1066 | + } | |
| 1067 | + map.put("jhlc", jhlc); | |
| 1068 | + return null; | |
| 1069 | + } | |
| 970 | 1070 | } | ... | ... |
src/main/java/com/bsth/service/sys/SysUserService.java
src/main/java/com/bsth/service/sys/impl/SysUserServiceImpl.java
| 1 | 1 | package com.bsth.service.sys.impl; |
| 2 | 2 | |
| 3 | +import java.util.Map; | |
| 4 | + | |
| 3 | 5 | import org.springframework.beans.factory.annotation.Autowired; |
| 6 | +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | |
| 4 | 7 | import org.springframework.stereotype.Service; |
| 5 | 8 | |
| 6 | 9 | import com.bsth.entity.sys.SysUser; |
| ... | ... | @@ -18,4 +21,22 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implem |
| 18 | 21 | public SysUser findByUserName(String name) { |
| 19 | 22 | return sysUserRepository.findByUserName(name); |
| 20 | 23 | } |
| 24 | + | |
| 25 | + @Override | |
| 26 | + public Map<String, Object> save(SysUser t) { | |
| 27 | + // | |
| 28 | + t.setPassword(new BCryptPasswordEncoder(4).encode(t.getPassword())); | |
| 29 | + return super.save(t); | |
| 30 | + } | |
| 31 | + | |
| 32 | + @Override | |
| 33 | + public int changeEnabled(int id, int enabled) { | |
| 34 | + sysUserRepository.changeEnabled(id,enabled); | |
| 35 | + return 0; | |
| 36 | + } | |
| 37 | + | |
| 38 | + @Override | |
| 39 | + public int changePWD(int id,String newPWD) { | |
| 40 | + return sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode(newPWD)); | |
| 41 | + } | |
| 21 | 42 | } | ... | ... |
src/main/java/com/bsth/util/ReportRelatedUtils.java
| 1 | 1 | package com.bsth.util; |
| 2 | 2 | |
| 3 | +import java.lang.reflect.Field; | |
| 3 | 4 | import java.lang.reflect.InvocationTargetException; |
| 4 | 5 | import java.lang.reflect.Method; |
| 6 | +import java.util.HashMap; | |
| 7 | +import java.util.Map; | |
| 8 | + | |
| 9 | +import org.apache.poi.ss.formula.functions.T; | |
| 5 | 10 | |
| 6 | 11 | import com.bsth.entity.Line; |
| 7 | 12 | |
| ... | ... | @@ -52,6 +57,42 @@ public class ReportRelatedUtils { |
| 52 | 57 | } |
| 53 | 58 | return value; |
| 54 | 59 | } |
| 60 | + | |
| 61 | + /** | |
| 62 | + * 通过字段名取到对象中该字段的相应值 | |
| 63 | + * | |
| 64 | + * @param t | |
| 65 | + * 对象 | |
| 66 | + * @param fieldName | |
| 67 | + * 字段名 | |
| 68 | + * @return | |
| 69 | + * @throws ClassNotFoundException | |
| 70 | + * @throws IllegalAccessException | |
| 71 | + * @throws InvocationTargetException | |
| 72 | + * @throws NoSuchMethodException | |
| 73 | + * @throws NoSuchFieldException | |
| 74 | + */ | |
| 75 | + public Map<String,Object> getMapValue(Object t) | |
| 76 | + throws ClassNotFoundException, IllegalAccessException, | |
| 77 | + InvocationTargetException, NoSuchMethodException, | |
| 78 | + NoSuchFieldException { | |
| 79 | + Map<String,Object> map = new HashMap<String, Object>(); | |
| 80 | + Object value = ""; | |
| 81 | + Field[] fields = t.getClass().getDeclaredFields(); | |
| 82 | + for(Field field:fields){ | |
| 83 | + String fieldName = field.getName(); | |
| 84 | + String tmpFieldName = firstCharToUpperCase(fieldName); | |
| 85 | + Method method = null; | |
| 86 | + try { | |
| 87 | + method = t.getClass().getMethod("get" + tmpFieldName); | |
| 88 | + value = method.invoke(t)==null?"":method.invoke(t); | |
| 89 | + } catch (NoSuchMethodException e) { | |
| 90 | + value = ""; | |
| 91 | + } | |
| 92 | + map.put(fieldName, value); | |
| 93 | + } | |
| 94 | + return map; | |
| 95 | + } | |
| 55 | 96 | |
| 56 | 97 | /** |
| 57 | 98 | * 首字母大写 | ... | ... |
src/main/java/com/bsth/util/ReportUtils.java
| ... | ... | @@ -279,6 +279,9 @@ public class ReportUtils { |
| 279 | 279 | } |
| 280 | 280 | } else if (obj.getClass().getName().equals(classWholeName)) { |
| 281 | 281 | cellValue = cellValue.replace("$" + tmpKey + "$",getKeyValue(obj, fieldName) + ""); |
| 282 | + } else if (obj.getClass().getName().equals("java.util.HashMap")){ | |
| 283 | + Map<String,Object> map = (HashMap<String,Object>)obj; | |
| 284 | + cellValue = cellValue.replace("$" + tmpKey + "$",map.get(fieldName)+""); | |
| 282 | 285 | } |
| 283 | 286 | } |
| 284 | 287 | } | ... | ... |
src/main/resources/static/index.html
| ... | ... | @@ -166,6 +166,10 @@ tr.row-active td { |
| 166 | 166 | <a href="javascript:;"> |
| 167 | 167 | <i class="fa fa-user"></i> 我的信息 </a> |
| 168 | 168 | </li> |
| 169 | + <li> | |
| 170 | + <a href="javascript:;" id="changePWD"> | |
| 171 | + <i class="fa fa-unlock-alt"></i> 修改密码</a> | |
| 172 | + </li> | |
| 169 | 173 | <li class="divider"> </li> |
| 170 | 174 | <li> |
| 171 | 175 | <a href="javascript:;"> |
| ... | ... | @@ -391,6 +395,22 @@ $(function(){ |
| 391 | 395 | loadPage('/pages/home.html'); |
| 392 | 396 | } |
| 393 | 397 | }); |
| 398 | + | |
| 399 | + //修改密码 | |
| 400 | + $('#changePWD').on('click', function(){ | |
| 401 | + $.get('/pages/permission/user/changePWD.html', function(content){ | |
| 402 | + layer.open({ | |
| 403 | + type: 1, | |
| 404 | + area: ['600px','360px'], | |
| 405 | + content: content, | |
| 406 | + title : '修改密码', | |
| 407 | + shift: 5, | |
| 408 | + scrollbar: false, | |
| 409 | + success: function(){ | |
| 410 | + } | |
| 411 | + }); | |
| 412 | + }); | |
| 413 | + }); | |
| 394 | 414 | }); |
| 395 | 415 | |
| 396 | 416 | //modal关闭时销毁dom | ... | ... |
src/main/resources/static/pages/forms/mould/waybill.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/daily.html
| ... | ... | @@ -130,10 +130,12 @@ |
| 130 | 130 | } |
| 131 | 131 | }); |
| 132 | 132 | |
| 133 | + var line; | |
| 134 | + var date; | |
| 133 | 135 | $("#query").on("click",function(){ |
| 134 | - var line = $("#line").val(); | |
| 135 | - var date = $("#date").val(); | |
| 136 | - $get('/realSchedule/dailyInfo',{line:line,date:date},function(result){ | |
| 136 | + line = $("#line").val(); | |
| 137 | + date = $("#date").val(); | |
| 138 | + $get('/realSchedule/dailyInfo',{line:line,date:date,type:'query'},function(result){ | |
| 137 | 139 | $("#form_line").text(line); |
| 138 | 140 | $("#form_date").text(date); |
| 139 | 141 | var total_zgl = 0,total_ksgl = 0,total_yh = 0,total_bcs = 0; |
| ... | ... | @@ -153,6 +155,11 @@ |
| 153 | 155 | // 把渲染好的模版html文本追加到表格中 |
| 154 | 156 | $('#forms .dailyInfo').html(tbodyHtml); |
| 155 | 157 | }); |
| 158 | + }); | |
| 159 | + $("#export").on("click",function(){ | |
| 160 | + $get('/realSchedule/dailyInfo',{line:line,date:date,type:'export'},function(result){ | |
| 161 | + window.open("/downloadFile/download?fileName=班次日报"+moment(date).format("YYYYMMDD")); | |
| 162 | + }); | |
| 156 | 163 | }); |
| 157 | 164 | }); |
| 158 | 165 | </script> | ... | ... |
src/main/resources/static/pages/forms/statement/historyMessage.html
| ... | ... | @@ -168,8 +168,8 @@ |
| 168 | 168 | $('#forms tbody').html(tbodyHtml); |
| 169 | 169 | }); |
| 170 | 170 | }); |
| 171 | - $("#export").click(function(){ | |
| 172 | - $('#forms').tableExport({ type: 'excel', escape: 'false' }); | |
| 171 | + $("#export").on("click",function(){ | |
| 172 | + $('#forms').tableExport({ type: 'excel', escape: 'false',filename:'(2016-02-29_2016-03-06)'}); | |
| 173 | 173 | }); |
| 174 | 174 | |
| 175 | 175 | }); |
| ... | ... | @@ -191,7 +191,4 @@ |
| 191 | 191 | <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> |
| 192 | 192 | </tr> |
| 193 | 193 | {{/if}} |
| 194 | -</script> | |
| 195 | - | |
| 196 | -<script src="/pages/forms/statement/js/tableExport.js"></script> | |
| 197 | -<script src="/pages/forms/statement/js/jquery.base64.js"></script> | |
| 198 | 194 | \ No newline at end of file |
| 195 | +</script> | |
| 199 | 196 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/statement/js/tableExport.js
| 1 | -/*The MIT License (MIT) | |
| 2 | - | |
| 3 | -Copyright (c) 2014 https://github.com/kayalshri/ | |
| 4 | - | |
| 5 | -Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | -of this software and associated documentation files (the "Software"), to deal | |
| 7 | -in the Software without restriction, including without limitation the rights | |
| 8 | -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | -copies of the Software, and to permit persons to whom the Software is | |
| 10 | -furnished to do so, subject to the following conditions: | |
| 11 | - | |
| 12 | -The above copyright notice and this permission notice shall be included in | |
| 13 | -all copies or substantial portions of the Software. | |
| 14 | - | |
| 15 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| 21 | -THE SOFTWARE.*/ | |
| 22 | - | |
| 1 | +// 此函数引用自: http://www.alloyteam.com/2014/01/use-js-file-download/ | |
| 2 | +function downloadFile(fileName, content){ | |
| 3 | + var aLink = document.createElement('a'); | |
| 4 | + var blob = new Blob([content]); | |
| 5 | + var evt = document.createEvent("HTMLEvents"); | |
| 6 | + evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈 | |
| 7 | + aLink.download = fileName; | |
| 8 | + aLink.href = URL.createObjectURL(blob); | |
| 9 | + aLink.dispatchEvent(evt); | |
| 10 | +} | |
| 11 | + | |
| 12 | + | |
| 23 | 13 | (function($){ |
| 24 | - $.fn.extend({ | |
| 25 | - tableExport: function(options) { | |
| 26 | - var defaults = { | |
| 27 | - separator: ',', | |
| 28 | - ignoreColumn: [], | |
| 29 | - tableName:'yourTableName', | |
| 30 | - type:'csv', | |
| 31 | - pdfFontSize:14, | |
| 32 | - pdfLeftMargin:20, | |
| 33 | - escape:'true', | |
| 34 | - htmlContent:'false', | |
| 35 | - consoleLog:'false' | |
| 36 | - }; | |
| 37 | - | |
| 38 | - var options = $.extend(defaults, options); | |
| 39 | - var el = this; | |
| 40 | - | |
| 41 | - if(defaults.type == 'csv' || defaults.type == 'txt'){ | |
| 42 | - | |
| 43 | - // Header | |
| 44 | - var tdData =""; | |
| 45 | - $(el).find('thead').find('tr').each(function() { | |
| 46 | - tdData += "\n"; | |
| 47 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 48 | - if ($(this).css('display') != 'none'){ | |
| 49 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 50 | - tdData += '"' + parseString($(this)) + '"' + defaults.separator; | |
| 51 | - } | |
| 52 | - } | |
| 53 | - | |
| 54 | - }); | |
| 55 | - tdData = $.trim(tdData); | |
| 56 | - tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 57 | - }); | |
| 58 | - | |
| 59 | - // Row vs Column | |
| 60 | - $(el).find('tbody').find('tr').each(function() { | |
| 61 | - tdData += "\n"; | |
| 62 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 63 | - if ($(this).css('display') != 'none'){ | |
| 64 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 65 | - tdData += '"'+ parseString($(this)) + '"'+ defaults.separator; | |
| 66 | - } | |
| 67 | - } | |
| 68 | - }); | |
| 69 | - //tdData = $.trim(tdData); | |
| 70 | - tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 71 | - }); | |
| 72 | - | |
| 73 | - //output | |
| 74 | - if(defaults.consoleLog == 'true'){ | |
| 75 | - console.log(tdData); | |
| 76 | - } | |
| 77 | - var base64data = "base64," + $.base64.encode(tdData); | |
| 78 | - window.open('data:application/'+defaults.type+';filename=exportData;' + base64data); | |
| 79 | - }else if(defaults.type == 'sql'){ | |
| 80 | - | |
| 81 | - // Header | |
| 82 | - var tdData ="INSERT INTO `"+defaults.tableName+"` ("; | |
| 83 | - $(el).find('thead').find('tr').each(function() { | |
| 84 | - | |
| 85 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 86 | - if ($(this).css('display') != 'none'){ | |
| 87 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 88 | - tdData += '`' + parseString($(this)) + '`,' ; | |
| 89 | - } | |
| 90 | - } | |
| 91 | - | |
| 92 | - }); | |
| 93 | - tdData = $.trim(tdData); | |
| 94 | - tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 95 | - }); | |
| 96 | - tdData += ") VALUES "; | |
| 97 | - // Row vs Column | |
| 98 | - $(el).find('tbody').find('tr').each(function() { | |
| 99 | - tdData += "("; | |
| 100 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 101 | - if ($(this).css('display') != 'none'){ | |
| 102 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 103 | - tdData += '"'+ parseString($(this)) + '",'; | |
| 104 | - } | |
| 105 | - } | |
| 106 | - }); | |
| 107 | - | |
| 108 | - tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 109 | - tdData += "),"; | |
| 110 | - }); | |
| 111 | - tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 112 | - tdData += ";"; | |
| 113 | - | |
| 114 | - //output | |
| 115 | - //console.log(tdData); | |
| 116 | - | |
| 117 | - if(defaults.consoleLog == 'true'){ | |
| 118 | - console.log(tdData); | |
| 119 | - } | |
| 120 | - | |
| 121 | - var base64data = "base64," + $.base64.encode(tdData); | |
| 122 | - window.open('data:application/sql;filename=exportData;' + base64data); | |
| 123 | - | |
| 124 | - | |
| 125 | - }else if(defaults.type == 'json'){ | |
| 126 | - | |
| 127 | - var jsonHeaderArray = []; | |
| 128 | - $(el).find('thead').find('tr').each(function() { | |
| 129 | - var tdData =""; | |
| 130 | - var jsonArrayTd = []; | |
| 131 | - | |
| 132 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 133 | - if ($(this).css('display') != 'none'){ | |
| 134 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 135 | - jsonArrayTd.push(parseString($(this))); | |
| 136 | - } | |
| 137 | - } | |
| 138 | - }); | |
| 139 | - jsonHeaderArray.push(jsonArrayTd); | |
| 140 | - | |
| 141 | - }); | |
| 142 | - | |
| 143 | - var jsonArray = []; | |
| 144 | - $(el).find('tbody').find('tr').each(function() { | |
| 145 | - var tdData =""; | |
| 146 | - var jsonArrayTd = []; | |
| 147 | - | |
| 148 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 149 | - if ($(this).css('display') != 'none'){ | |
| 150 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 151 | - jsonArrayTd.push(parseString($(this))); | |
| 152 | - } | |
| 153 | - } | |
| 154 | - }); | |
| 155 | - jsonArray.push(jsonArrayTd); | |
| 156 | - | |
| 157 | - }); | |
| 158 | - | |
| 159 | - var jsonExportArray =[]; | |
| 160 | - jsonExportArray.push({header:jsonHeaderArray,data:jsonArray}); | |
| 161 | - | |
| 162 | - //Return as JSON | |
| 163 | - //console.log(JSON.stringify(jsonExportArray)); | |
| 164 | - | |
| 165 | - //Return as Array | |
| 166 | - //console.log(jsonExportArray); | |
| 167 | - if(defaults.consoleLog == 'true'){ | |
| 168 | - console.log(JSON.stringify(jsonExportArray)); | |
| 169 | - } | |
| 170 | - var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray)); | |
| 171 | - window.open('data:application/json;filename=exportData;' + base64data); | |
| 172 | - }else if(defaults.type == 'xml'){ | |
| 173 | - | |
| 174 | - var xml = '<?xml version="1.0" encoding="utf-8"?>'; | |
| 175 | - xml += '<tabledata><fields>'; | |
| 176 | - // Header | |
| 177 | - $(el).find('thead').find('tr').each(function() { | |
| 178 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 179 | - if ($(this).css('display') != 'none'){ | |
| 180 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 181 | - xml += "<field>" + parseString($(this)) + "</field>"; | |
| 182 | - } | |
| 183 | - } | |
| 184 | - }); | |
| 185 | - }); | |
| 186 | - xml += '</fields><data>'; | |
| 187 | - | |
| 188 | - // Row Vs Column | |
| 189 | - var rowCount=1; | |
| 190 | - $(el).find('tbody').find('tr').each(function() { | |
| 191 | - xml += '<row id="'+rowCount+'">'; | |
| 192 | - var colCount=0; | |
| 193 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 194 | - if ($(this).css('display') != 'none'){ | |
| 195 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 196 | - xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">"; | |
| 197 | - } | |
| 198 | - } | |
| 199 | - colCount++; | |
| 200 | - }); | |
| 201 | - rowCount++; | |
| 202 | - xml += '</row>'; | |
| 203 | - }); | |
| 204 | - xml += '</data></tabledata>' | |
| 205 | - | |
| 206 | - if(defaults.consoleLog == 'true'){ | |
| 207 | - console.log(xml); | |
| 208 | - } | |
| 209 | - | |
| 210 | - var base64data = "base64," + $.base64.encode(xml); | |
| 211 | - window.open('data:application/xml;filename=exportData;' + base64data); | |
| 212 | - }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){ | |
| 213 | - //console.log($(this).html()); | |
| 214 | - var excel="<table>"; | |
| 215 | - // Header | |
| 216 | - $(el).find('thead').find('tr').each(function() { | |
| 217 | - excel += "<tr>"; | |
| 218 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 219 | - if ($(this).css('display') != 'none'){ | |
| 220 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 221 | - excel += "<td>" + parseString($(this))+ "</td>"; | |
| 222 | - } | |
| 223 | - } | |
| 224 | - }); | |
| 225 | - excel += '</tr>'; | |
| 226 | - | |
| 227 | - }); | |
| 228 | - | |
| 229 | - | |
| 230 | - // Row Vs Column | |
| 231 | - var rowCount=1; | |
| 232 | - $(el).find('tbody').find('tr').each(function() { | |
| 233 | - excel += "<tr>"; | |
| 234 | - var colCount=0; | |
| 235 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 236 | - if ($(this).css('display') != 'none'){ | |
| 237 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 238 | - excel += "<td>"+parseString($(this))+"</td>"; | |
| 239 | - } | |
| 240 | - } | |
| 241 | - colCount++; | |
| 242 | - }); | |
| 243 | - rowCount++; | |
| 244 | - excel += '</tr>'; | |
| 245 | - }); | |
| 246 | - excel += '</table>' | |
| 247 | - | |
| 248 | - if(defaults.consoleLog == 'true'){ | |
| 249 | - console.log(excel); | |
| 250 | - } | |
| 251 | - | |
| 252 | - var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>"; | |
| 253 | - excelFile += "<head>"; | |
| 254 | - excelFile += "<!--[if gte mso 9]>"; | |
| 255 | - excelFile += "<xml>"; | |
| 256 | - excelFile += "<x:ExcelWorkbook>"; | |
| 257 | - excelFile += "<x:ExcelWorksheets>"; | |
| 258 | - excelFile += "<x:ExcelWorksheet>"; | |
| 259 | - excelFile += "<x:Name>"; | |
| 260 | - excelFile += "{worksheet}"; | |
| 261 | - excelFile += "</x:Name>"; | |
| 262 | - excelFile += "<x:WorksheetOptions>"; | |
| 263 | - excelFile += "<x:DisplayGridlines/>"; | |
| 264 | - excelFile += "</x:WorksheetOptions>"; | |
| 265 | - excelFile += "</x:ExcelWorksheet>"; | |
| 266 | - excelFile += "</x:ExcelWorksheets>"; | |
| 267 | - excelFile += "</x:ExcelWorkbook>"; | |
| 268 | - excelFile += "</xml>"; | |
| 269 | - excelFile += "<![endif]-->"; | |
| 270 | - excelFile += "</head>"; | |
| 271 | - excelFile += "<body>"; | |
| 272 | - excelFile += excel; | |
| 273 | - excelFile += "</body>"; | |
| 274 | - excelFile += "</html>"; | |
| 275 | - var base64data = "base64," + $.base64({ data: excelFile, type: 0 }); | |
| 276 | - window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data); | |
| 277 | - | |
| 278 | - }else if(defaults.type == 'png'){ | |
| 279 | - html2canvas($(el), { | |
| 280 | - onrendered: function(canvas) { | |
| 281 | - var img = canvas.toDataURL("image/png"); | |
| 282 | - window.open(img); | |
| 283 | - | |
| 284 | - | |
| 285 | - } | |
| 286 | - }); | |
| 287 | - }else if(defaults.type == 'pdf'){ | |
| 288 | - | |
| 289 | - var doc = new jsPDF('p','pt', 'a4', true); | |
| 290 | - doc.setFontSize(defaults.pdfFontSize); | |
| 291 | - | |
| 292 | - // Header | |
| 293 | - var startColPosition=defaults.pdfLeftMargin; | |
| 294 | - $(el).find('thead').find('tr').each(function() { | |
| 295 | - $(this).filter(':visible').find('th').each(function(index,data) { | |
| 296 | - if ($(this).css('display') != 'none'){ | |
| 297 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 298 | - var colPosition = startColPosition+ (index * 50); | |
| 299 | - doc.text(colPosition,20, parseString($(this))); | |
| 300 | - } | |
| 301 | - } | |
| 302 | - }); | |
| 303 | - }); | |
| 304 | - | |
| 305 | - | |
| 306 | - // Row Vs Column | |
| 307 | - var startRowPosition = 20; var page =1;var rowPosition=0; | |
| 308 | - $(el).find('tbody').find('tr').each(function(index,data) { | |
| 309 | - rowCalc = index+1; | |
| 310 | - | |
| 311 | - if (rowCalc % 26 == 0){ | |
| 312 | - doc.addPage(); | |
| 313 | - page++; | |
| 314 | - startRowPosition=startRowPosition+10; | |
| 315 | - } | |
| 316 | - rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280); | |
| 317 | - | |
| 318 | - $(this).filter(':visible').find('td').each(function(index,data) { | |
| 319 | - if ($(this).css('display') != 'none'){ | |
| 320 | - if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 321 | - var colPosition = startColPosition+ (index * 50); | |
| 322 | - doc.text(colPosition,rowPosition, parseString($(this))); | |
| 14 | + $.fn.extend({ | |
| 15 | + tableExport: function(options) { | |
| 16 | + var defaults = { | |
| 17 | + separator: ',', | |
| 18 | + ignoreColumn: [], | |
| 19 | + tableName:'yourTableName', | |
| 20 | + type:'csv', | |
| 21 | + pdfFontSize:14, | |
| 22 | + pdfLeftMargin:20, | |
| 23 | + escape:'true', | |
| 24 | + htmlContent:'false', | |
| 25 | + consoleLog:'false' | |
| 26 | + }; | |
| 27 | + | |
| 28 | + var options = $.extend(defaults, options); | |
| 29 | + var el = this; | |
| 30 | + | |
| 31 | + if(defaults.type == 'csv' || defaults.type == 'txt'){ | |
| 32 | + | |
| 33 | + // Header | |
| 34 | + var tdData =""; | |
| 35 | + $(el).find('thead').find('tr').each(function() { | |
| 36 | + tdData += "\n"; | |
| 37 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 38 | + if ($(this).css('display') != 'none'){ | |
| 39 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 40 | + tdData += '"' + parseString($(this)) + '"' + defaults.separator; | |
| 41 | + } | |
| 42 | + } | |
| 43 | + | |
| 44 | + }); | |
| 45 | + tdData = $.trim(tdData); | |
| 46 | + tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 47 | + }); | |
| 48 | + | |
| 49 | + // Row vs Column | |
| 50 | + $(el).find('tbody').find('tr').each(function() { | |
| 51 | + tdData += "\n"; | |
| 52 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 53 | + if ($(this).css('display') != 'none'){ | |
| 54 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 55 | + tdData += '"'+ parseString($(this)) + '"'+ defaults.separator; | |
| 56 | + } | |
| 57 | + } | |
| 58 | + }); | |
| 59 | + //tdData = $.trim(tdData); | |
| 60 | + tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 61 | + }); | |
| 62 | + | |
| 63 | + //output | |
| 64 | + if(defaults.consoleLog == 'true'){ | |
| 65 | + console.log(tdData); | |
| 66 | + } | |
| 67 | + var base64data = "base64," + $.base64({ data: tdData, type: 0 }); | |
| 68 | + //window.open('data:application/'+defaults.type+';filename=exportData;' + base64data); | |
| 69 | + downloadFile(defaults.filename + '.' + defaults.type, tdData); | |
| 70 | + }else if(defaults.type == 'sql'){ | |
| 71 | + | |
| 72 | + // Header | |
| 73 | + var tdData ="INSERT INTO `"+defaults.tableName+"` ("; | |
| 74 | + $(el).find('thead').find('tr').each(function() { | |
| 75 | + | |
| 76 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 77 | + if ($(this).css('display') != 'none'){ | |
| 78 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 79 | + tdData += '`' + parseString($(this)) + '`,' ; | |
| 80 | + } | |
| 81 | + } | |
| 82 | + | |
| 83 | + }); | |
| 84 | + tdData = $.trim(tdData); | |
| 85 | + tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 86 | + }); | |
| 87 | + tdData += ") VALUES "; | |
| 88 | + // Row vs Column | |
| 89 | + $(el).find('tbody').find('tr').each(function() { | |
| 90 | + tdData += "("; | |
| 91 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 92 | + if ($(this).css('display') != 'none'){ | |
| 93 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 94 | + tdData += '"'+ parseString($(this)) + '",'; | |
| 95 | + } | |
| 96 | + } | |
| 97 | + }); | |
| 98 | + | |
| 99 | + tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 100 | + tdData += "),"; | |
| 101 | + }); | |
| 102 | + tdData = $.trim(tdData).substring(0, tdData.length -1); | |
| 103 | + tdData += ";"; | |
| 104 | + | |
| 105 | + //output | |
| 106 | + //console.log(tdData); | |
| 107 | + | |
| 108 | + if(defaults.consoleLog == 'true'){ | |
| 109 | + console.log(tdData); | |
| 110 | + } | |
| 111 | + | |
| 112 | + var base64data = "base64," + $.base64.encode(tdData); | |
| 113 | + window.open('data:application/sql;filename=exportData;' + base64data); | |
| 114 | + | |
| 115 | + | |
| 116 | + }else if(defaults.type == 'json'){ | |
| 117 | + | |
| 118 | + var jsonHeaderArray = []; | |
| 119 | + $(el).find('thead').find('tr').each(function() { | |
| 120 | + var tdData =""; | |
| 121 | + var jsonArrayTd = []; | |
| 122 | + | |
| 123 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 124 | + if ($(this).css('display') != 'none'){ | |
| 125 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 126 | + jsonArrayTd.push(parseString($(this))); | |
| 127 | + } | |
| 128 | + } | |
| 129 | + }); | |
| 130 | + jsonHeaderArray.push(jsonArrayTd); | |
| 131 | + | |
| 132 | + }); | |
| 133 | + | |
| 134 | + var jsonArray = []; | |
| 135 | + $(el).find('tbody').find('tr').each(function() { | |
| 136 | + var tdData =""; | |
| 137 | + var jsonArrayTd = []; | |
| 138 | + | |
| 139 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 140 | + if ($(this).css('display') != 'none'){ | |
| 141 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 142 | + jsonArrayTd.push(parseString($(this))); | |
| 143 | + } | |
| 144 | + } | |
| 145 | + }); | |
| 146 | + jsonArray.push(jsonArrayTd); | |
| 147 | + | |
| 148 | + }); | |
| 149 | + | |
| 150 | + var jsonExportArray =[]; | |
| 151 | + jsonExportArray.push({header:jsonHeaderArray,data:jsonArray}); | |
| 152 | + | |
| 153 | + //Return as JSON | |
| 154 | + //console.log(JSON.stringify(jsonExportArray)); | |
| 155 | + | |
| 156 | + //Return as Array | |
| 157 | + //console.log(jsonExportArray); | |
| 158 | + if(defaults.consoleLog == 'true'){ | |
| 159 | + console.log(JSON.stringify(jsonExportArray)); | |
| 160 | + } | |
| 161 | + var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray)); | |
| 162 | + window.open('data:application/json;filename=exportData;' + base64data); | |
| 163 | + }else if(defaults.type == 'xml'){ | |
| 164 | + | |
| 165 | + var xml = '<?xml version="1.0" encoding="utf-8"?>'; | |
| 166 | + xml += '<tabledata><fields>'; | |
| 167 | + // Header | |
| 168 | + $(el).find('thead').find('tr').each(function() { | |
| 169 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 170 | + if ($(this).css('display') != 'none'){ | |
| 171 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 172 | + xml += "<field>" + parseString($(this)) + "</field>"; | |
| 173 | + } | |
| 174 | + } | |
| 175 | + }); | |
| 176 | + }); | |
| 177 | + xml += '</fields><data>'; | |
| 178 | + | |
| 179 | + // Row Vs Column | |
| 180 | + var rowCount=1; | |
| 181 | + $(el).find('tbody').find('tr').each(function() { | |
| 182 | + xml += '<row id="'+rowCount+'">'; | |
| 183 | + var colCount=0; | |
| 184 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 185 | + if ($(this).css('display') != 'none'){ | |
| 186 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 187 | + xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">"; | |
| 188 | + } | |
| 189 | + } | |
| 190 | + colCount++; | |
| 191 | + }); | |
| 192 | + rowCount++; | |
| 193 | + xml += '</row>'; | |
| 194 | + }); | |
| 195 | + xml += '</data></tabledata>' | |
| 196 | + | |
| 197 | + if(defaults.consoleLog == 'true'){ | |
| 198 | + console.log(xml); | |
| 199 | + } | |
| 200 | + | |
| 201 | + var base64data = "base64," + $.base64.encode(xml); | |
| 202 | + window.open('data:application/xml;filename=exportData;' + base64data); | |
| 203 | + }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){ | |
| 204 | + //console.log($(this).html()); | |
| 205 | + var excel="<table>"; | |
| 206 | + // Header | |
| 207 | + $(el).find('thead').find('tr').each(function() { | |
| 208 | + excel += "<tr>"; | |
| 209 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 210 | + if ($(this).css('display') != 'none'){ | |
| 211 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 212 | + excel += "<td>" + parseString($(this))+ "</td>"; | |
| 213 | + } | |
| 214 | + } | |
| 215 | + }); | |
| 216 | + excel += '</tr>'; | |
| 217 | + | |
| 218 | + }); | |
| 219 | + | |
| 220 | + | |
| 221 | + // Row Vs Column | |
| 222 | + var rowCount=1; | |
| 223 | + $(el).find('tbody').find('tr').each(function() { | |
| 224 | + excel += "<tr>"; | |
| 225 | + var colCount=0; | |
| 226 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 227 | + if ($(this).css('display') != 'none'){ | |
| 228 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 229 | + excel += "<td>"+parseString($(this))+"</td>"; | |
| 230 | + } | |
| 231 | + } | |
| 232 | + colCount++; | |
| 233 | + }); | |
| 234 | + rowCount++; | |
| 235 | + excel += '</tr>'; | |
| 236 | + }); | |
| 237 | + excel += '</table>' | |
| 238 | + | |
| 239 | + if(defaults.consoleLog == 'true'){ | |
| 240 | + console.log(excel); | |
| 241 | + } | |
| 242 | + | |
| 243 | + var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>"; | |
| 244 | + excelFile += "<head>"; | |
| 245 | + excelFile += "<!--[if gte mso 9]>"; | |
| 246 | + excelFile += "<xml>"; | |
| 247 | + excelFile += "<x:ExcelWorkbook>"; | |
| 248 | + excelFile += "<x:ExcelWorksheets>"; | |
| 249 | + excelFile += "<x:ExcelWorksheet>"; | |
| 250 | + excelFile += "<x:Name>"; | |
| 251 | + excelFile += "{worksheet}"; | |
| 252 | + excelFile += "</x:Name>"; | |
| 253 | + excelFile += "<x:WorksheetOptions>"; | |
| 254 | + excelFile += "<x:DisplayGridlines/>"; | |
| 255 | + excelFile += "</x:WorksheetOptions>"; | |
| 256 | + excelFile += "</x:ExcelWorksheet>"; | |
| 257 | + excelFile += "</x:ExcelWorksheets>"; | |
| 258 | + excelFile += "</x:ExcelWorkbook>"; | |
| 259 | + excelFile += "</xml>"; | |
| 260 | + excelFile += "<![endif]-->"; | |
| 261 | + excelFile += "</head>"; | |
| 262 | + excelFile += "<body>"; | |
| 263 | + excelFile += excel; | |
| 264 | + excelFile += "</body>"; | |
| 265 | + excelFile += "</html>"; | |
| 266 | + var base64data = "base64," + $.base64({ data: excelFile, type: 0 }); | |
| 267 | + | |
| 268 | + if(defaults.type == "doc") { | |
| 269 | + window.open('data:application/msword;filename=exportData.'+defaults.type+';' + base64data); | |
| 270 | + } | |
| 271 | + else { | |
| 272 | + window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.'+defaults.type+';' + base64data); | |
| 273 | + } | |
| 274 | + }else if(defaults.type == 'png'){ | |
| 275 | + html2canvas($(el), { | |
| 276 | + onrendered: function(canvas) { | |
| 277 | + var img = canvas.toDataURL("image/png"); | |
| 278 | + window.open(img); | |
| 279 | + | |
| 280 | + | |
| 281 | + } | |
| 282 | + }); | |
| 283 | + }else if(defaults.type == 'pdf'){ | |
| 284 | + | |
| 285 | + var doc = new jsPDF('p','pt', 'a4', true); | |
| 286 | + doc.setFontSize(defaults.pdfFontSize); | |
| 287 | + | |
| 288 | + // Header | |
| 289 | + var startColPosition=defaults.pdfLeftMargin; | |
| 290 | + $(el).find('thead').find('tr').each(function() { | |
| 291 | + $(this).filter(':visible').find('th').each(function(index,data) { | |
| 292 | + if ($(this).css('display') != 'none'){ | |
| 293 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 294 | + var colPosition = startColPosition+ (index * 50); | |
| 295 | + doc.text(colPosition,20, parseString($(this))); | |
| 296 | + } | |
| 297 | + } | |
| 298 | + }); | |
| 299 | + }); | |
| 300 | + | |
| 301 | + | |
| 302 | + // Row Vs Column | |
| 303 | + var startRowPosition = 20; var page =1;var rowPosition=0; | |
| 304 | + $(el).find('tbody').find('tr').each(function(index,data) { | |
| 305 | + rowCalc = index+1; | |
| 306 | + | |
| 307 | + if (rowCalc % 26 == 0){ | |
| 308 | + doc.addPage(); | |
| 309 | + page++; | |
| 310 | + startRowPosition=startRowPosition+10; | |
| 311 | + } | |
| 312 | + rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280); | |
| 313 | + | |
| 314 | + $(this).filter(':visible').find('td').each(function(index,data) { | |
| 315 | + if ($(this).css('display') != 'none'){ | |
| 316 | + if(defaults.ignoreColumn.indexOf(index) == -1){ | |
| 317 | + var colPosition = startColPosition+ (index * 50); | |
| 318 | + doc.text(colPosition,rowPosition, parseString($(this))); | |
| 319 | + } | |
| 320 | + } | |
| 321 | + | |
| 322 | + }); | |
| 323 | + | |
| 324 | + }); | |
| 325 | + | |
| 326 | + // Output as Data URI | |
| 327 | + doc.output('datauri'); | |
| 328 | + | |
| 329 | + } | |
| 330 | + | |
| 331 | + | |
| 332 | + function parseString(data){ | |
| 333 | + | |
| 334 | + if(defaults.htmlContent == 'true'){ | |
| 335 | + content_data = data.html().trim(); | |
| 336 | + }else{ | |
| 337 | + content_data = data.text().trim(); | |
| 338 | + } | |
| 339 | + | |
| 340 | + if(defaults.escape == 'true'){ | |
| 341 | + content_data = escape(content_data); | |
| 342 | + } | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + return content_data; | |
| 347 | + } | |
| 348 | + | |
| 323 | 349 | } |
| 324 | - } | |
| 325 | - | |
| 326 | - }); | |
| 327 | - | |
| 328 | - }); | |
| 329 | - | |
| 330 | - // Output as Data URI | |
| 331 | - doc.output('datauri'); | |
| 332 | - | |
| 333 | - } | |
| 334 | - | |
| 335 | - | |
| 336 | - function parseString(data){ | |
| 337 | - | |
| 338 | - if(defaults.htmlContent == 'true'){ | |
| 339 | - content_data = data.html().trim(); | |
| 340 | - }else{ | |
| 341 | - content_data = data.text().trim(); | |
| 342 | - } | |
| 343 | - | |
| 344 | - if(defaults.escape == 'true'){ | |
| 345 | - content_data = escape(content_data); | |
| 346 | - } | |
| 347 | - | |
| 348 | - | |
| 349 | - | |
| 350 | - return content_data; | |
| 351 | - } | |
| 352 | - | |
| 353 | - } | |
| 354 | - }); | |
| 355 | - })(jQuery); | |
| 356 | - | |
| 350 | + }); | |
| 351 | +})(jQuery); | |
| 357 | 352 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/statement/statisticsDaily .html
| ... | ... | @@ -200,7 +200,18 @@ |
| 200 | 200 | return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>'; |
| 201 | 201 | } |
| 202 | 202 | } |
| 203 | - }); | |
| 203 | + }); | |
| 204 | + $("#query").on("click",function(){ | |
| 205 | + var line = $("#line").val(); | |
| 206 | + var xlName = $("#line").text(); | |
| 207 | + var date = $("#date").val(); | |
| 208 | + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName},function(result){ | |
| 209 | + // 把数据填充到模版中 | |
| 210 | + var tbodyHtml = template('list_account',{list:result}); | |
| 211 | + // 把渲染好的模版html文本追加到表格中 | |
| 212 | + $('#forms tbody').html(tbodyHtml); | |
| 213 | + }); | |
| 214 | + }); | |
| 204 | 215 | }); |
| 205 | 216 | </script> |
| 206 | 217 | <script type="text/html" id="list_forms"> | ... | ... |
src/main/resources/static/pages/forms/statement/waybill.html
| ... | ... | @@ -165,10 +165,10 @@ |
| 165 | 165 | $get('/realSchedule/'+id,null,function(result){ |
| 166 | 166 | result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD"); |
| 167 | 167 | var ludan_1 = template('ludan_1',result); |
| 168 | - var ludan_4 = template('ludan_4',result); | |
| 168 | + //var ludan_4 = template('ludan_4',result); | |
| 169 | 169 | // 把渲染好的模版html文本追加到表格中 |
| 170 | 170 | $('#forms .ludan_1').append(ludan_1); |
| 171 | - $('#forms .ludan_4').append(ludan_4); | |
| 171 | + //$('#forms .ludan_4').append(ludan_4); | |
| 172 | 172 | }); |
| 173 | 173 | $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){ |
| 174 | 174 | getTime(result); |
| ... | ... | @@ -185,7 +185,7 @@ |
| 185 | 185 | |
| 186 | 186 | $("#export").on("click",function(){ |
| 187 | 187 | $get('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){ |
| 188 | - window.open("/downloadFile/download?jName="+jName+"&lpName="+params[2]); | |
| 188 | + window.open("/downloadFile/download?fileName="+jName); | |
| 189 | 189 | }); |
| 190 | 190 | }); |
| 191 | 191 | |
| ... | ... | @@ -198,11 +198,11 @@ |
| 198 | 198 | if(obj.zdsj != null && obj.zdsjActual != null ){ |
| 199 | 199 | var zdsjActual = (obj.zdsjActual).split(":"); |
| 200 | 200 | var zdsj = (obj.zdsj).split(":"); |
| 201 | - if(zdsjActual[0]*60+zdsjActual[1] > zdsj[0]*60+zdsj[1]){ | |
| 202 | - obj["slow"] = (zdsjActual[0]*60+zdsjActual[1]) - (zdsj[0]*60+zdsj[1]); | |
| 201 | + if(zdsjActual[0]*60+Number(zdsjActual[1]) > zdsj[0]*60+Number(zdsj[1])){ | |
| 202 | + obj["slow"] = (zdsjActual[0]*60+Number(zdsjActual[1])) - (zdsj[0]*60+Number(zdsj[1])); | |
| 203 | 203 | } |
| 204 | - else{ | |
| 205 | - obj["fast"] = (zdsj[0]*60+zdsj[1]) - (zdsjActual[0]*60+zdsjActual[1]); | |
| 204 | + else if(zdsjActual[0]*60+Number(zdsjActual[1]) < zdsj[0]*60+Number(zdsj[1])){ | |
| 205 | + obj["fast"] = (zdsj[0]*60+Number(zdsj[1])) - (zdsjActual[0]*60+Number(zdsjActual[1])); | |
| 206 | 206 | } |
| 207 | 207 | } |
| 208 | 208 | }); |
| ... | ... | @@ -228,7 +228,7 @@ |
| 228 | 228 | <td colspan="14">行车路单</td> |
| 229 | 229 | </tr> |
| 230 | 230 | <tr> |
| 231 | - <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{ccTime}} 到达站名:{{zdzName}} 当班调派: 日期:{{scheduleDate}}</td> | |
| 231 | + <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{fcsjActual}} 到达站名:{{zdzName}} 当班调派: 日期:{{scheduleDate}}</td> | |
| 232 | 232 | </tr> |
| 233 | 233 | <tr> |
| 234 | 234 | <td colspan="2">出场存油 升</td> | ... | ... |
src/main/resources/static/pages/permission/user/add.html
| ... | ... | @@ -19,7 +19,7 @@ |
| 19 | 19 | </div> |
| 20 | 20 | </div> |
| 21 | 21 | <div class="portlet-body form"> |
| 22 | - <form action="/resource" class="form-horizontal" id="resource_add_form" > | |
| 22 | + <form action="/addUser" class="form-horizontal" id="user_add_form" > | |
| 23 | 23 | <div class="alert alert-danger display-hide"> |
| 24 | 24 | <button class="close" data-close="alert"></button> |
| 25 | 25 | 您的输入有误,请检查下面的输入项 |
| ... | ... | @@ -41,7 +41,7 @@ |
| 41 | 41 | <div class="form-group"> |
| 42 | 42 | <label class="col-md-3 control-label">密码</label> |
| 43 | 43 | <div class="col-md-4"> |
| 44 | - <input type="password" class="form-control" name="password" > | |
| 44 | + <input type="password" class="form-control" id="password" name="password" > | |
| 45 | 45 | <span class="help-block"> 请输入6位以上密码</span> |
| 46 | 46 | </div> |
| 47 | 47 | </div> |
| ... | ... | @@ -62,8 +62,8 @@ |
| 62 | 62 | <div class="form-group"> |
| 63 | 63 | <label class="col-md-3 control-label">角色</label> |
| 64 | 64 | <div class="col-md-4"> |
| 65 | - <select class="form-control" name="role[]" style="width: 160px;" multiple="multiple"> | |
| 66 | - <option>请选择...</option> | |
| 65 | + <select class="form-control" id="role" name="roles[]" style="width: 160px;" multiple="multiple"> | |
| 66 | + | |
| 67 | 67 | </select> |
| 68 | 68 | </div> |
| 69 | 69 | </div> |
| ... | ... | @@ -72,7 +72,7 @@ |
| 72 | 72 | <label class="col-md-3 control-label">是否启用</label> |
| 73 | 73 | <div class="col-md-4"> |
| 74 | 74 | <div class="input-group"> |
| 75 | - <select class="form-control" name="enable" style="width: 160px;"> | |
| 75 | + <select class="form-control" name="enabled" style="width: 160px;"> | |
| 76 | 76 | <option value="1">可用</option> |
| 77 | 77 | <option value="0">禁用</option> |
| 78 | 78 | </select> |
| ... | ... | @@ -93,5 +93,88 @@ |
| 93 | 93 | </div> |
| 94 | 94 | </div> |
| 95 | 95 | <script> |
| 96 | - | |
| 96 | + $(function(){ | |
| 97 | + $get('/role/all',null,function(result){ | |
| 98 | + $.each(result,function(i,obj){ | |
| 99 | + $("#role").append("<option value='"+obj.id+"'>"+obj.roleName+"</option>"); | |
| 100 | + }); | |
| 101 | + }); | |
| 102 | + | |
| 103 | + var form = $('#user_add_form'); | |
| 104 | + var error = $('.alert-danger', form); | |
| 105 | + | |
| 106 | + //表单 validate | |
| 107 | + form.validate({ | |
| 108 | + errorElement : 'span', | |
| 109 | + errorClass : 'help-block help-block-error', | |
| 110 | + focusInvalid : false, | |
| 111 | + rules : { | |
| 112 | + 'userName' : { | |
| 113 | + required : true, | |
| 114 | + maxlength: 25 | |
| 115 | + }, | |
| 116 | + 'name' : { | |
| 117 | + required : true, | |
| 118 | + maxlength: 25 | |
| 119 | + }, | |
| 120 | + 'password' : { | |
| 121 | + required : true, | |
| 122 | + minlength: 6, | |
| 123 | + maxlength: 25 | |
| 124 | + }, | |
| 125 | + 'cfmPassword' : { | |
| 126 | + equalTo: '#password' | |
| 127 | + }, | |
| 128 | + 'role' : { | |
| 129 | + required : true, | |
| 130 | + minlength: 1 | |
| 131 | + } | |
| 132 | + }, | |
| 133 | + invalidHandler : function(event, validator) { | |
| 134 | + error.show(); | |
| 135 | + App.scrollTo(error, -200); | |
| 136 | + }, | |
| 137 | + | |
| 138 | + highlight : function(element) { | |
| 139 | + $(element).closest('.form-group').addClass('has-error'); | |
| 140 | + }, | |
| 141 | + | |
| 142 | + unhighlight : function(element) { | |
| 143 | + $(element).closest('.form-group').removeClass('has-error'); | |
| 144 | + }, | |
| 145 | + | |
| 146 | + success : function(label) { | |
| 147 | + label.closest('.form-group').removeClass('has-error'); | |
| 148 | + }, | |
| 149 | + | |
| 150 | + submitHandler : function(f) { | |
| 151 | + var params = form.serializeJSON(); | |
| 152 | + error.hide(); | |
| 153 | + console.log(params); | |
| 154 | + | |
| 155 | + //检查一下用户是否存在 | |
| 156 | + $get('/user/all', {userName_eq: params.userName}, function(list){ | |
| 157 | + if(!list || list.length == 0){ | |
| 158 | + console.log(params); | |
| 159 | + $.ajax({ | |
| 160 | + url: '/user', | |
| 161 | + type: 'POST', | |
| 162 | + traditional: true, | |
| 163 | + data: params, | |
| 164 | + success: function(res){ | |
| 165 | + layer.msg('添加用户成功.'); | |
| 166 | + loadPage('list.html'); | |
| 167 | + } | |
| 168 | + }); | |
| 169 | + /* $post('/user', params, function(res){ | |
| 170 | + layer.msg('添加用户成功.'); | |
| 171 | + loadPage('list.html'); | |
| 172 | + }); */ | |
| 173 | + } | |
| 174 | + else | |
| 175 | + layer.alert('用户【' + params.userName + '】已存在', {icon: 2, title: '提交被拒绝'}); | |
| 176 | + }); | |
| 177 | + } | |
| 178 | + }); | |
| 179 | + }); | |
| 97 | 180 | </script> |
| 98 | 181 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/permission/user/list.html
| ... | ... | @@ -75,7 +75,7 @@ |
| 75 | 75 | </td> |
| 76 | 76 | <td></td> |
| 77 | 77 | <td> |
| 78 | - <select class="form-control form-filter " name="enable_eq"> | |
| 78 | + <select class="form-control form-filter " name="enabled_eq"> | |
| 79 | 79 | <option value="">请选择...</option> |
| 80 | 80 | <option value="1">可用</option> |
| 81 | 81 | <option value="0">禁用</option> |
| ... | ... | @@ -132,7 +132,13 @@ |
| 132 | 132 | <td> |
| 133 | 133 | {{obj.lastLoginDate}} |
| 134 | 134 | </td> |
| 135 | - <td><a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a></td> | |
| 135 | + <td> | |
| 136 | + {{if obj.enabled}} | |
| 137 | + <button type="button" onclick="changeEnabled({{obj.id}},0)" class="btn btn-warning btn-sm">禁用</button> | |
| 138 | + {{else}} | |
| 139 | + <button type="button" onclick="changeEnabled({{obj.id}},1)" class="btn btn-success btn-sm">启用</button> | |
| 140 | + {{/if}} | |
| 141 | + </td> | |
| 136 | 142 | </tr> |
| 137 | 143 | {{/each}} |
| 138 | 144 | {{if list.length == 0}} |
| ... | ... | @@ -252,4 +258,11 @@ $(function(){ |
| 252 | 258 | }); |
| 253 | 259 | }); |
| 254 | 260 | }); |
| 261 | +//改变状态 | |
| 262 | +function changeEnabled(id,enabled){ | |
| 263 | + debugger | |
| 264 | + $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ | |
| 265 | + jsDoQuery(null, true); | |
| 266 | + }) | |
| 267 | +} | |
| 255 | 268 | </script> |
| 256 | 269 | \ No newline at end of file | ... | ... |