Commit 1ff7296b85c11f5234337900c516ade403391dd8

Authored by 潘钊
2 parents 43cfc07d 08dc4e9e

Merge branch 'master' into minhang

Showing 26 changed files with 1721 additions and 403 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&lt;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&lt;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&lt;SysUser, Integer&gt;{
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&lt;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&lt;SysUser, Integer&gt;{
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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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
... ... @@ -6,4 +6,8 @@ import com.bsth.service.BaseService;
6 6 public interface SysUserService extends BaseService<SysUser, Integer>{
7 7  
8 8 SysUser findByUserName(String name);
  9 +
  10 + int changeEnabled(int id,int enabled);
  11 +
  12 + int changePWD(int id,String newPWD);
9 13 }
... ...
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&lt;SysUser, Integer&gt; 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/java/com/bsth/util/TimeUtils.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +public class TimeUtils {
  4 + public static String getTimeDifference(String date1,String date2){
  5 + String[] temp1 = date1.split(":");
  6 + String[] temp2 = date2.split(":");
  7 + int m1 = Integer.parseInt(temp1[0])*60;
  8 + int s1 = Integer.parseInt(temp1[1]);
  9 + int m2 = Integer.parseInt(temp2[0])*60;
  10 + int s2 = Integer.parseInt(temp2[1]);
  11 + if(date1.compareTo(date2) > 0){
  12 + return ((m1+s1)-(m2+s2))+"";
  13 + } else {
  14 + return ((m2+s2)-(m1+s1))+"";
  15 + }
  16 + }
  17 +}
... ...
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/daily.xls 0 → 100644
No preview for this file type
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/scheduleDaily_minhang.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>调度日报</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group">
  39 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + </div>
  42 + </form>
  43 + </div>
  44 + <div class="portlet-body">
  45 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  46 + <table class="table table-bordered table-hover table-checkable" id="forms">
  47 + <thead>
  48 + <tr>
  49 + <th colspan="40">线路调度日报</th>
  50 + </tr>
  51 + <tr>
  52 + <td rowspan="3">路线别</td>
  53 + <td colspan="15">全日营运里程(公里)</td>
  54 + <td colspan="15">全日营运班次</td>
  55 + <td colspan="9">大间隔情况</td>
  56 + </tr>
  57 + <tr>
  58 + <td rowspan="2">计划</td>
  59 + <td rowspan="2">实驶</td>
  60 + <td rowspan="2">少驶</td>
  61 + <td colspan="11">少驶原因(公里)</td>
  62 + <td rowspan="2">临加公里</td>
  63 + <td colspan="3">计划班次</td>
  64 + <td colspan="3">实际班次</td>
  65 + <td colspan="3">临加班次</td>
  66 + <td colspan="3">放站班次</td>
  67 + <td colspan="3">调头班次</td>
  68 + <td colspan="3">发生次数</td>
  69 + <td rowspan="2">最大间隔时间(秒)</td>
  70 + <td colspan="5" rowspan="2">原因</td>
  71 + </tr>
  72 + <tr>
  73 + <td>路阻</td>
  74 + <td>吊慢</td>
  75 + <td>故障</td>
  76 + <td>纠纷</td>
  77 + <td>肇事</td>
  78 + <td>缺人</td>
  79 + <td>缺车</td>
  80 + <td>客稀</td>
  81 + <td>气候</td>
  82 + <td>援外</td>
  83 + <td>其他</td>
  84 + <td>全日</td>
  85 + <td>6:31~8:30</td>
  86 + <td>16:01~18:00</td>
  87 + <td>全日</td>
  88 + <td>6:31~8:30</td>
  89 + <td>16:01~18:00</td>
  90 + <td>全日</td>
  91 + <td>6:31~8:30</td>
  92 + <td>16:01~18:00</td>
  93 + <td>全日</td>
  94 + <td>6:31~8:30</td>
  95 + <td>16:01~18:00</td>
  96 + <td>全日</td>
  97 + <td>6:31~8:30</td>
  98 + <td>16:01~18:00</td>
  99 + <td>全日</td>
  100 + <td>6:31~8:30</td>
  101 + <td>16:01~18:00</td>
  102 + </tr>
  103 + </thead>
  104 + <tr>
  105 + <td colspan="40">&nbsp;</td>
  106 + </tr>
  107 + <tr>
  108 + <td colspan="40">合计</td>
  109 + </tr>
  110 + <tr>
  111 + <td colspan="40">&nbsp;</td>
  112 + </tr>
  113 + <tr>
  114 + <td colspan="2">班次</td>
  115 + <td colspan="2">车号</td>
  116 + <td>司早</td>
  117 + <td>售早</td>
  118 + <td>司晚</td>
  119 + <td>售晚</td>
  120 + <td colspan="2">班次</td>
  121 + <td colspan="2">车号</td>
  122 + <td>司早</td>
  123 + <td>售早</td>
  124 + <td>司晚</td>
  125 + <td>售晚</td>
  126 + <td colspan="2">班次</td>
  127 + <td colspan="2">车号</td>
  128 + <td>司早</td>
  129 + <td>售早</td>
  130 + <td>司晚</td>
  131 + <td>售晚</td>
  132 + <td colspan="2">班次</td>
  133 + <td colspan="2">车号</td>
  134 + <td>司早</td>
  135 + <td>售早</td>
  136 + <td>司晚</td>
  137 + <td>售晚</td>
  138 + <td colspan="2">班次</td>
  139 + <td colspan="2">车号</td>
  140 + <td>司早</td>
  141 + <td>售早</td>
  142 + <td>司晚</td>
  143 + <td>售晚</td>
  144 + </tr>
  145 + <tr>
  146 + <td colspan="40">&nbsp;</td>
  147 + </tr>
  148 + <tr>
  149 + <td rowspan="2">路牌</td>
  150 + <td colspan="2" rowspan="2">起点站</td>
  151 + <td colspan="4">到达时间</td>
  152 + <td colspan="4">发车时间</td>
  153 + <td colspan="2" rowspan="2">备注</td>
  154 + <td rowspan="2">路牌</td>
  155 + <td colspan="2" rowspan="2">起点站</td>
  156 + <td colspan="4">到达时间</td>
  157 + <td colspan="4">发车时间</td>
  158 + <td colspan="2" rowspan="2">备注</td>
  159 + <td rowspan="2">路牌</td>
  160 + <td colspan="2" rowspan="2">起点站</td>
  161 + <td colspan="4">到达时间</td>
  162 + <td colspan="4">发车时间</td>
  163 + <td colspan="2" rowspan="2">备注</td>
  164 + <td>&nbsp;</td>
  165 + </tr>
  166 + <tr>
  167 + <td>应到</td>
  168 + <td>实到</td>
  169 + <td>快</td>
  170 + <td>慢</td>
  171 + <td>应发</td>
  172 + <td>实发</td>
  173 + <td>快</td>
  174 + <td>慢</td>
  175 + <td>应到</td>
  176 + <td>实到</td>
  177 + <td>快</td>
  178 + <td>慢</td>
  179 + <td>应发</td>
  180 + <td>实发</td>
  181 + <td>快</td>
  182 + <td>慢</td>
  183 + <td>应到</td>
  184 + <td>实到</td>
  185 + <td>快</td>
  186 + <td>慢</td>
  187 + <td>应发</td>
  188 + <td>实发</td>
  189 + <td>快</td>
  190 + <td>慢</td>
  191 + <td>&nbsp;</td>
  192 + </tr>
  193 + <tbody>
  194 +
  195 + </tbody>
  196 + </table>
  197 + </div>
  198 + </div>
  199 + </div>
  200 + </div>
  201 +</div>
  202 +
  203 +<script>
  204 + $(function(){
  205 + // 关闭左侧栏
  206 + if (!$('body').hasClass('page-sidebar-closed'))
  207 + $('.menu-toggler.sidebar-toggler').click();
  208 +
  209 + $("#date").datetimepicker({
  210 + format : 'YYYY-MM-DD',
  211 + locale : 'zh-cn'
  212 + });
  213 +
  214 + $('#line').select2({
  215 + ajax: {
  216 + url: '/realSchedule/findLine',
  217 + dataType: 'json',
  218 + delay: 150,
  219 + data: function(params){
  220 + return{line: params.term};
  221 + },
  222 + processResults: function (data) {
  223 + return {
  224 + results: data
  225 + };
  226 + },
  227 + cache: true
  228 + },
  229 + templateResult: function(repo){
  230 + if (repo.loading) return repo.text;
  231 + var h = '<span>'+repo.text+'</span>';
  232 + return h;
  233 + },
  234 + escapeMarkup: function (markup) { return markup; },
  235 + minimumInputLength: 1,
  236 + templateSelection: function(repo){
  237 + return repo.text;
  238 + },
  239 + language: {
  240 + noResults: function(){
  241 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  242 + },
  243 + inputTooShort : function(e) {
  244 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  245 + },
  246 + searching : function() {
  247 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  248 + }
  249 + }
  250 + });
  251 +
  252 + //查询
  253 + $("#query").on('click',function(){
  254 + var line = $("#line").val();
  255 + var date = $("#date").val();
  256 + $.get('/realSchedule/scheduleDaily',{line:line,date:date},function(result){
  257 +
  258 + });
  259 + });
  260 + });
  261 +</script>
  262 +<script type="text/html" id="list_forms">
  263 + {{each list as obj i}}
  264 + <tr>
  265 +
  266 + </tr>
  267 + {{/each}}
  268 + {{if list.length == 0}}
  269 + <tr>
  270 + <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td>
  271 + </tr>
  272 + {{/if}}
  273 +</script>
0 274 \ No newline at end of file
... ...
src/main/resources/static/pages/forms/statement/scheduleRealDaily.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>计划实际日报</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group">
  39 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + </div>
  42 + </form>
  43 + </div>
  44 + <div class="portlet-body">
  45 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  46 + <table class="table table-bordered table-hover table-checkable" id="forms">
  47 + <thead>
  48 + <tr>
  49 + <th colspan="7">计划实际日报</th>
  50 + </tr>
  51 + <tr>
  52 + <td>路线:</td>
  53 + <td colspan="2"><span id="form_line">&nbsp;</span></td>
  54 + <td>时间:</td>
  55 + <td colspan="3"><span id="form_date">&nbsp;</span></td>
  56 + </tr>
  57 + <tr>
  58 + <td>计划里程</td>
  59 + <td>实际计划里程</td>
  60 + <td>营运里程</td>
  61 + <td>空驶里程</td>
  62 + <td>抽减里程</td>
  63 + <td>增加里程</td>
  64 + <td>总里程</td>
  65 + <td>计划班次</td>
  66 + <td>实际计划班次</td>
  67 + <td>抽减班次</td>
  68 + <td>增加班次</td>
  69 + <td>实际班次</td>
  70 + </tr>
  71 + </thead>
  72 + <tbody class="scheduleRealDaily">
  73 +
  74 + </tbody>
  75 + </table>
  76 + </div>
  77 + </div>
  78 + </div>
  79 + </div>
  80 +</div>
  81 +
  82 +<script>
  83 + $(function(){
  84 + // 关闭左侧栏
  85 + if (!$('body').hasClass('page-sidebar-closed'))
  86 + $('.menu-toggler.sidebar-toggler').click();
  87 +
  88 + $("#date").datetimepicker({
  89 + format : 'YYYY-MM-DD',
  90 + locale : 'zh-cn'
  91 + });
  92 +
  93 + $('#line').select2({
  94 + ajax: {
  95 + url: '/realSchedule/findLine',
  96 + dataType: 'json',
  97 + delay: 150,
  98 + data: function(params){
  99 + return{line: params.term};
  100 + },
  101 + processResults: function (data) {
  102 + return {
  103 + results: data
  104 + };
  105 + },
  106 + cache: true
  107 + },
  108 + templateResult: function(repo){
  109 + if (repo.loading) return repo.text;
  110 + var h = '<span>'+repo.text+'</span>';
  111 + return h;
  112 + },
  113 + escapeMarkup: function (markup) { return markup; },
  114 + minimumInputLength: 1,
  115 + templateSelection: function(repo){
  116 + return repo.text;
  117 + },
  118 + language: {
  119 + noResults: function(){
  120 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  121 + },
  122 + inputTooShort : function(e) {
  123 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  124 + },
  125 + searching : function() {
  126 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  127 + }
  128 + }
  129 + });
  130 +
  131 + var line;
  132 + var date;
  133 + $("#query").on("click",function(){
  134 + line = $("#line").val();
  135 + date = $("#date").val();
  136 +
  137 + });
  138 + });
  139 +</script>
  140 +<script type="text/html" id="scheduleRealDaily">
  141 + {{each list as obj i}}
  142 + <tr>
  143 + <td></td>
  144 + </tr>
  145 + {{/each}}
  146 + {{if list.length == 0}}
  147 + <tr>
  148 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  149 + </tr>
  150 + {{/if}}
  151 +</script>
0 152 \ 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
... ... @@ -99,6 +99,7 @@
99 99 $('#line').select2({
100 100 ajax: {
101 101 url: '/realSchedule/findLine',
  102 + type: 'post',
102 103 dataType: 'json',
103 104 delay: 150,
104 105 data: function(params){
... ... @@ -165,18 +166,18 @@
165 166 $get('/realSchedule/'+id,null,function(result){
166 167 result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD");
167 168 var ludan_1 = template('ludan_1',result);
168   - var ludan_4 = template('ludan_4',result);
  169 + //var ludan_4 = template('ludan_4',result);
169 170 // 把渲染好的模版html文本追加到表格中
170 171 $('#forms .ludan_1').append(ludan_1);
171   - $('#forms .ludan_4').append(ludan_4);
  172 + //$('#forms .ludan_4').append(ludan_4);
172 173 });
173   - $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  174 + $post('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
174 175 getTime(result);
175 176 var ludan_2 = template('ludan_2',{list:result});
176 177 // 把渲染好的模版html文本追加到表格中
177 178 $('#forms .ludan_2').append(ludan_2);
178 179 });
179   - $get('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  180 + $post('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
180 181 var ludan_3 = template('ludan_3',result);
181 182 $('#forms .ludan_3').append(ludan_3);
182 183 });
... ... @@ -184,8 +185,8 @@
184 185 });
185 186  
186 187 $("#export").on("click",function(){
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 + $post('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  189 + window.open("/downloadFile/download?fileName="+jName);
189 190 });
190 191 });
191 192  
... ... @@ -198,11 +199,11 @@
198 199 if(obj.zdsj != null && obj.zdsjActual != null ){
199 200 var zdsjActual = (obj.zdsjActual).split(":");
200 201 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]);
  202 + if(zdsjActual[0]*60+Number(zdsjActual[1]) > zdsj[0]*60+Number(zdsj[1])){
  203 + obj["slow"] = (zdsjActual[0]*60+Number(zdsjActual[1])) - (zdsj[0]*60+Number(zdsj[1]));
203 204 }
204   - else{
205   - obj["fast"] = (zdsj[0]*60+zdsj[1]) - (zdsjActual[0]*60+zdsjActual[1]);
  205 + else if(zdsjActual[0]*60+Number(zdsjActual[1]) < zdsj[0]*60+Number(zdsj[1])){
  206 + obj["fast"] = (zdsj[0]*60+Number(zdsj[1])) - (zdsjActual[0]*60+Number(zdsjActual[1]));
206 207 }
207 208 }
208 209 });
... ... @@ -228,7 +229,7 @@
228 229 <td colspan="14">行车路单</td>
229 230 </tr>
230 231 <tr>
231   - <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{ccTime}} 到达站名:{{zdzName}} 当班调派:&nbsp; 日期:{{scheduleDate}}</td>
  232 + <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{fcsjActual}} 到达站名:{{zdzName}} 当班调派:&nbsp; 日期:{{scheduleDate}}</td>
232 233 </tr>
233 234 <tr>
234 235 <td colspan="2">出场存油 &nbsp;升</td>
... ...
src/main/resources/static/pages/forms/statement/waybill_minhang.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>行车路单</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group" style="display: inline-block;margin-left: 15px;">
  39 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + <input class="btn btn-default" type="button" id="print" value="打印"/>
  42 + <input class="btn btn-default" type="button" id="exportMore" value="批量导出"/>
  43 + </div>
  44 + </form>
  45 + </div>
  46 + <div class="portlet-body">
  47 + <div class="row">
  48 + <div class="col-md-3">
  49 + <div class="" style="margin-top: 10px;overflow:auto;height: 860px">
  50 + <table class="table table-bordered table-hover table-checkable pre-scrollable" id="info">
  51 + <thead>
  52 + <tr class="hidden">
  53 + <th>人员</th>
  54 + <th>自编号</th>
  55 + <th>路牌</th>
  56 + </tr>
  57 + </thead>
  58 + <tbody>
  59 +
  60 + </tbody>
  61 + </table>
  62 + </div>
  63 + </div>
  64 + <div class="col-md-9" id="printArea">
  65 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  66 + <table class="table table-bordered table-checkable" id="forms">
  67 + <tbody class="ludan_1">
  68 +
  69 + </tbody>
  70 + <tbody class="ludan_2">
  71 +
  72 + </tbody>
  73 + <tbody class="ludan_3">
  74 +
  75 + </tbody>
  76 + <tbody class="ludan_4">
  77 +
  78 + </tbody>
  79 + </table>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + </div>
  86 +</div>
  87 +
  88 +<script>
  89 + $(function(){
  90 + // 关闭左侧栏
  91 + if (!$('body').hasClass('page-sidebar-closed'))
  92 + $('.menu-toggler.sidebar-toggler').click();
  93 +
  94 + $("#date").datetimepicker({
  95 + format : 'YYYY-MM-DD',
  96 + locale : 'zh-cn'
  97 + });
  98 +
  99 + $('#line').select2({
  100 + ajax: {
  101 + url: '/realSchedule/findLine',
  102 + dataType: 'json',
  103 + delay: 150,
  104 + data: function(params){
  105 + return{line: params.term};
  106 + },
  107 + processResults: function (data) {
  108 + return {
  109 + results: data
  110 + };
  111 + },
  112 + cache: true
  113 + },
  114 + templateResult: function(repo){
  115 + if (repo.loading) return repo.text;
  116 + var h = '<span>'+repo.text+'</span>';
  117 + return h;
  118 + },
  119 + escapeMarkup: function (markup) { return markup; },
  120 + minimumInputLength: 1,
  121 + templateSelection: function(repo){
  122 + return repo.text;
  123 + },
  124 + language: {
  125 + noResults: function(){
  126 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  127 + },
  128 + inputTooShort : function(e) {
  129 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  130 + },
  131 + searching : function() {
  132 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  133 + }
  134 + }
  135 + });
  136 +
  137 + $("#query").on("click",function(){
  138 + var line = $("#line").val();
  139 + var date = $("#date").val();
  140 + $(".hidden").removeClass("hidden");
  141 + $get('/realSchedule/queryUserInfo',{line:line,date:date},function(result){
  142 + // 把数据填充到模版中
  143 + var tbodyHtml = template('list_info',{list:result});
  144 + // 把渲染好的模版html文本追加到表格中
  145 + $('#info tbody').html(tbodyHtml);
  146 + });
  147 + });
  148 +
  149 + var params = {};
  150 + var jName;
  151 + $("#info tbody").on("click","tr",function(){
  152 + $('#forms .ludan_1').html('');
  153 + $('#forms .ludan_2').html('');
  154 + $('#forms .ludan_3').html('');
  155 + $('#forms .ludan_4').html('');
  156 + if($(this).children().size() < 2){
  157 + return;
  158 + }
  159 +
  160 + $(this).children().each(function(index){
  161 + params[index] = $(this).text();
  162 + });
  163 + jName = params[0].split("\\")[0];
  164 + var id = $("#"+params[1]).val();
  165 + $get('/realSchedule/'+id,null,function(result){
  166 + result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD");
  167 + var ludan_1 = template('ludan_1',result);
  168 + //var ludan_4 = template('ludan_4',result);
  169 + // 把渲染好的模版html文本追加到表格中
  170 + $('#forms .ludan_1').append(ludan_1);
  171 + //$('#forms .ludan_4').append(ludan_4);
  172 + });
  173 + $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  174 + getTime(result);
  175 + var ludan_2 = template('ludan_2',{list:result});
  176 + // 把渲染好的模版html文本追加到表格中
  177 + $('#forms .ludan_2').append(ludan_2);
  178 + });
  179 + $get('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  180 + var ludan_3 = template('ludan_3',result);
  181 + $('#forms .ludan_3').append(ludan_3);
  182 + });
  183 +
  184 + });
  185 +
  186 + $("#export").on("click",function(){
  187 + $get('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  188 + window.open("/downloadFile/download?fileName="+jName);
  189 + });
  190 + });
  191 +
  192 + $("#print").click(function(){
  193 + $("#printArea").printArea();
  194 + });
  195 +
  196 + function getTime(list){
  197 + $.each(list, function(i, obj) {
  198 + if(obj.zdsj != null && obj.zdsjActual != null ){
  199 + var zdsjActual = (obj.zdsjActual).split(":");
  200 + var zdsj = (obj.zdsj).split(":");
  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 + }
  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 + }
  207 + }
  208 + });
  209 + }
  210 + });
  211 +</script>
  212 +<script type="text/html" id="list_info">
  213 + {{each list as obj i}}
  214 + <tr>
  215 + <td width="45%">{{obj.jName}}\{{obj.jGh}}</td>
  216 + <td width="32%">{{obj.clZbh}}</td>
  217 + <td width="23%">{{obj.lpName}}<input type="hidden" id="{{obj.clZbh}}" value="{{obj.id}}"></td>
  218 + </tr>
  219 + {{/each}}
  220 + {{if list.length == 0}}
  221 + <tr>
  222 + <td colspan="3"><h6 class="muted">没有找到相关数据</h6></td>
  223 + </tr>
  224 + {{/if}}
  225 +</script>
  226 +<script type="text/html" id="ludan_1">
  227 + <tr>
  228 + <td colspan="13">行车路单</td>
  229 + </tr>
  230 + <tr>
  231 + <td colspan="13">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{fcsjActual}} 到达站名:{{zdzName}} 当班调度:&nbsp; 日期:{{scheduleDate}} 本日耗油:&nbsp;升</td>
  232 + </tr>
  233 +<!--
  234 + <tr>
  235 + <td rowspan="2">调度章</td>
  236 + <td colspan="1">&nbsp;</td>
  237 + <td rowspan="2">早班</td>
  238 + <td colspan="1">&nbsp;</td>
  239 + <td rowspan="2">夜班</td>
  240 + <td colspan="1">&nbsp;</td>
  241 + <td rowspan="2" colspan="2">交叉</td>
  242 + <td colspan="2">&nbsp;</td>
  243 + <td rowspan="2">其他</td>
  244 + <td colspan="1">&nbsp;</td>
  245 + <td colspan="1">&nbsp;</td>
  246 + <td colspan="1">&nbsp;</td>
  247 + </tr>
  248 + <tr>
  249 + <td colspan="1">&nbsp;</td>
  250 + <td colspan="1">&nbsp;</td>
  251 + <td colspan="1">&nbsp;</td>
  252 + <td colspan="2">&nbsp;</td>
  253 + <td colspan="1">&nbsp;</td>
  254 + <td colspan="1">&nbsp;</td>
  255 + <td colspan="1">&nbsp;</td>
  256 + </tr>
  257 +-->
  258 + <tr>
  259 + <td rowspan="2">车次</td>
  260 + <td colspan="2">工号</td>
  261 + <!-- <td rowspan="2">公里耗油</td> -->
  262 + <td colspan="2">起讫站</td>
  263 + <td colspan="4">时间</td>
  264 + <td colspan="2">误点</td>
  265 + <td rowspan="2" width="66px">里程(公里)计划</td>
  266 + <td rowspan="2">备注</td>
  267 + </tr>
  268 + <tr>
  269 + <td colspan="1" width="60px">司&nbsp;机</td>
  270 + <td colspan="1" width="60px">售&nbsp;票</td>
  271 + <td colspan="1">起点</td>
  272 + <td colspan="1">终点</td>
  273 + <td colspan="1">计发</td>
  274 + <td colspan="1">实发</td>
  275 + <td colspan="1">应到</td>
  276 + <td colspan="1">实到</td>
  277 + <td colspan="1">快</td>
  278 + <td colspan="1">慢</td>
  279 + </tr>
  280 +</script>
  281 +<script type="text/html" id="ludan_2">
  282 + {{each list as obj i}}
  283 + <tr>
  284 + <td>{{i+1}}</td>
  285 + <td>{{obj.jName}}</td>
  286 + <td>{{obj.sName}}</td>
  287 + <td>{{obj.qdzName}}</td>
  288 + <td>{{obj.zdzName}}</td>
  289 + <td>{{obj.fcsj}}</td>
  290 + <td>{{obj.fcsjActual}}</td>
  291 + <td>{{obj.zdsj}}</td>
  292 + <td>{{obj.zdsjActual}}</td>
  293 + <td>{{obj.fast}}</td>
  294 + <td>{{obj.slow}}</td>
  295 + <td>{{obj.jhlc}}</td>
  296 + <td>{{obj.remarks}}</td>
  297 + </tr>
  298 + {{/each}}
  299 + {{if list.length == 0}}
  300 + <tr>
  301 + <td colspan="13"><h6 class="muted">没有找到相关数据</h6></td>
  302 + </tr>
  303 + {{/if}}
  304 +</script>
  305 +<script type="text/html" id="ludan_3">
  306 + <tr>
  307 + <td colspan="2">计划公里</td>
  308 + <td>{{jhlc}}</td>
  309 + <td>抽减公里</td>
  310 + <td>{{remMileage}}</td>
  311 + <td colspan="2">增加公里</td>
  312 + <td>{{addMileage}}</td>
  313 + <td colspan="2">实际计划公里</td>
  314 + <td colspan="3">{{jhlc}}</td>
  315 + </tr>
  316 + <tr>
  317 + <td colspan="2">营运公里</td>
  318 + <td>{{realMileage}}</td>
  319 + <td>空驶公里</td>
  320 + <td>{{ksgl}}</td>
  321 + <td colspan="2">总公里</td>
  322 + <td>{{realMileage}}</td>
  323 + <td colspan="2">计划班次</td>
  324 + <td colspan="3">{{jhbc}}</td>
  325 + </tr>
  326 + <tr>
  327 + <td colspan="2">抽减班次</td>
  328 + <td>{{cjbc}}</td>
  329 + <td>增加班次</td>
  330 + <td>{{ljbc}}</td>
  331 + <td colspan="2">实际计划班次</td>
  332 + <td>{{jhbc}}</td>
  333 + <td colspan="2">实际班次</td>
  334 + <td colspan="3">{{sjbc}}</td>
  335 + </tr>
  336 +</script>
  337 +<script type="text/html" id="ludan_4">
  338 + <tr>
  339 + <td colspan="12">认真做好终点项目的例保保修工作,杜绝机械火警事故!</td>
  340 + <td>轮胎</td>
  341 + <td>&nbsp;</td>
  342 + </tr>
  343 + <tr>
  344 + <td colspan="3">重点例保项目</td>
  345 + <td>1</td>
  346 + <td>2</td>
  347 + <td>3</td>
  348 + <td colspan="3">重点例保项目</td>
  349 + <td>1</td>
  350 + <td>2</td>
  351 + <td>3</td>
  352 + <td>灭火机</td>
  353 + <td>&nbsp;</td>
  354 + </tr>
  355 + <tr>
  356 + <td colspan="3">各类制动</td>
  357 + <td>&nbsp;</td>
  358 + <td>&nbsp;</td>
  359 + <td>&nbsp;</td>
  360 + <td colspan="3">各类灯光</td>
  361 + <td>&nbsp;</td>
  362 + <td>&nbsp;</td>
  363 + <td>&nbsp;</td>
  364 + <td colspan="2">出场路码表里程</td>
  365 + </tr>
  366 + <tr>
  367 + <td colspan="3">方向机</td>
  368 + <td>&nbsp;</td>
  369 + <td>&nbsp;</td>
  370 + <td>&nbsp;</td>
  371 + <td colspan="3">各类仪表</td>
  372 + <td>&nbsp;</td>
  373 + <td>&nbsp;</td>
  374 + <td>&nbsp;</td>
  375 + <td colspan="2" rowspan="2">&nbsp;</td>
  376 + </tr>
  377 + <tr>
  378 + <td colspan="3">欠压报警器</td>
  379 + <td>&nbsp;</td>
  380 + <td>&nbsp;</td>
  381 + <td>&nbsp;</td>
  382 + <td colspan="3">各类皮带</td>
  383 + <td>&nbsp;</td>
  384 + <td>&nbsp;</td>
  385 + <td>&nbsp;</td>
  386 + </tr>
  387 + <tr>
  388 + <td colspan="3">发动机清洁及响声</td>
  389 + <td>&nbsp;</td>
  390 + <td>&nbsp;</td>
  391 + <td>&nbsp;</td>
  392 + <td colspan="3">油箱及托架</td>
  393 + <td>&nbsp;</td>
  394 + <td>&nbsp;</td>
  395 + <td>&nbsp;</td>
  396 + <td colspan="2">出场路码表里程</td>
  397 + </tr>
  398 + <tr>
  399 + <td colspan="3">地盘响声</td>
  400 + <td>&nbsp;</td>
  401 + <td>&nbsp;</td>
  402 + <td>&nbsp;</td>
  403 + <td colspan="3">轮胎、半轴螺栓螺母</td>
  404 + <td>&nbsp;</td>
  405 + <td>&nbsp;</td>
  406 + <td>&nbsp;</td>
  407 + <td colspan="2" rowspan="3">&nbsp;</td>
  408 + </tr>
  409 + <tr>
  410 + <td colspan="3">化油器及油路</td>
  411 + <td>&nbsp;</td>
  412 + <td>&nbsp;</td>
  413 + <td>&nbsp;</td>
  414 + <td colspan="3">油、电、水、气</td>
  415 + <td>&nbsp;</td>
  416 + <td>&nbsp;</td>
  417 + <td>&nbsp;</td>
  418 + </tr>
  419 + <tr>
  420 + <td colspan="3">进排歧管及排气管</td>
  421 + <td>&nbsp;</td>
  422 + <td>&nbsp;</td>
  423 + <td>&nbsp;</td>
  424 + <td colspan="3">内外车身及附件</td>
  425 + <td>&nbsp;</td>
  426 + <td>&nbsp;</td>
  427 + <td>&nbsp;</td>
  428 + </tr>
  429 + <tr>
  430 + <td colspan="14">1 首次出场,2 复使中途,3 某次进场。√正常,ⓧ报修,×尚未报修</td>
  431 + </tr>
  432 +</script>
0 433 \ No newline at end of file
... ...
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/changePWD.html 0 → 100644
  1 +<div class="row">
  2 +<div class="col-md-12">
  3 +<!-- BEGIN VALIDATION STATES-->
  4 +<div class="portlet light portlet-fit portlet-form bordered">
  5 +<div class="portlet-body">
  6 + <form action="/user/changePWD" class="form-horizontal" id="changePWD">
  7 + <div class="form-group" style="margin-top: 60px">
  8 + <label class="control-label col-md-5">原始密码:
  9 + </label>
  10 + <div class="col-md-4">
  11 + <div class="input-icon right">
  12 + <i class="fa"></i>
  13 + <input type="password" class="form-control" name="oldPWD" /> </div>
  14 + </div>
  15 + </div>
  16 + <div class="form-group">
  17 + <label class="control-label col-md-5">输入新密码:
  18 + </label>
  19 + <div class="col-md-4">
  20 + <div class="input-icon right">
  21 + <i class="fa"></i>
  22 + <input type="password" class="form-control" name="newPWD" /> </div>
  23 + </div>
  24 + </div>
  25 + <div class="form-group">
  26 + <label class="control-label col-md-5">确认新密码:
  27 + </label>
  28 + <div class="col-md-4">
  29 + <div class="input-icon right">
  30 + <i class="fa"></i>
  31 + <input type="password" class="form-control" name="cnewPWD" /> </div>
  32 + </div>
  33 + </div>
  34 + <div class="form-actions">
  35 + <div class="row">
  36 + <div class="col-md-offset-5 col-md-7">
  37 + <button type="button" id="confirm" class="btn green">确定</button>
  38 + <button type="reset" class="btn default">取消</button>
  39 + </div>
  40 + </div>
  41 + </div>
  42 + </form>
  43 +</div>
  44 +</div>
  45 +</div>
  46 +</div>
  47 +
  48 +<script>
  49 +$(function(){
  50 + $("#confirm").on("click",function(){
  51 + $.get('/user/changePWD',null,function(){
  52 +
  53 + });
  54 + });
  55 +});
  56 +</script>
0 57 \ 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
... ...