Commit 64338fb599dd212b145617332e7f4416e1c7ecd3
Merge branch 'minhang' of http://222.66.0.204:8090//panzhaov5/bsth_control into minhang
Showing
39 changed files
with
1268 additions
and
266 deletions
src/main/java/com/bsth/controller/realcontrol/RealMapController.java
| @@ -49,6 +49,11 @@ public class RealMapController { | @@ -49,6 +49,11 @@ public class RealMapController { | ||
| 49 | return realMapService.findRouteByLine(lineCode); | 49 | return realMapService.findRouteByLine(lineCode); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | + @RequestMapping(value = "/multiRouteByLine") | ||
| 53 | + public Map<String, Object> multiRouteByLine(@RequestParam String codeStr) { | ||
| 54 | + return realMapService.multiRouteByLine(codeStr); | ||
| 55 | + } | ||
| 56 | + | ||
| 52 | 57 | ||
| 53 | /** | 58 | /** |
| 54 | * 获取线路的路段路由 和 站点路由信息 (为前端站间距计算提供数据源) | 59 | * 获取线路的路段路由 和 站点路由信息 (为前端站间距计算提供数据源) |
src/main/java/com/bsth/controller/sys/RealControAuthorityController.java
0 → 100644
| 1 | +package com.bsth.controller.sys; | ||
| 2 | + | ||
| 3 | +import com.bsth.controller.BaseController; | ||
| 4 | +import com.bsth.entity.sys.RealControAuthority; | ||
| 5 | +import com.bsth.service.sys.RealControAuthorityService; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 9 | +import org.springframework.web.bind.annotation.RestController; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * Created by panzhao on 2017/2/14. | ||
| 13 | + */ | ||
| 14 | +@RestController | ||
| 15 | +@RequestMapping("realControAuthority") | ||
| 16 | +public class RealControAuthorityController extends BaseController<RealControAuthority, Integer> { | ||
| 17 | + | ||
| 18 | + @Autowired | ||
| 19 | + RealControAuthorityService realControAuthorityService; | ||
| 20 | + | ||
| 21 | + @RequestMapping("findByUserId") | ||
| 22 | + public RealControAuthority findByUserId(@RequestParam Integer userId){ | ||
| 23 | + | ||
| 24 | + return realControAuthorityService.findByUserId(userId); | ||
| 25 | + } | ||
| 26 | +} |
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
| @@ -88,6 +88,9 @@ public class GpsEntity { | @@ -88,6 +88,9 @@ public class GpsEntity { | ||
| 88 | /** 越界距离 */ | 88 | /** 越界距离 */ |
| 89 | private double outOfBoundDistance; | 89 | private double outOfBoundDistance; |
| 90 | 90 | ||
| 91 | + /** gps是否有效 设备端发送的状态 */ | ||
| 92 | + private int valid; | ||
| 93 | + | ||
| 91 | public Integer getCompanyCode() { | 94 | public Integer getCompanyCode() { |
| 92 | return companyCode; | 95 | return companyCode; |
| 93 | } | 96 | } |
| @@ -280,4 +283,12 @@ public class GpsEntity { | @@ -280,4 +283,12 @@ public class GpsEntity { | ||
| 280 | public void setOutOfBoundDistance(double outOfBoundDistance) { | 283 | public void setOutOfBoundDistance(double outOfBoundDistance) { |
| 281 | this.outOfBoundDistance = outOfBoundDistance; | 284 | this.outOfBoundDistance = outOfBoundDistance; |
| 282 | } | 285 | } |
| 286 | + | ||
| 287 | + public int getValid() { | ||
| 288 | + return valid; | ||
| 289 | + } | ||
| 290 | + | ||
| 291 | + public void setValid(int valid) { | ||
| 292 | + this.valid = valid; | ||
| 293 | + } | ||
| 283 | } | 294 | } |
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
| @@ -52,7 +52,7 @@ public class GpsRealData implements CommandLineRunner { | @@ -52,7 +52,7 @@ public class GpsRealData implements CommandLineRunner { | ||
| 52 | public void run(String... arg0) throws Exception { | 52 | public void run(String... arg0) throws Exception { |
| 53 | logger.info("gpsDataLoader,20,5"); | 53 | logger.info("gpsDataLoader,20,5"); |
| 54 | //定时从网关获取GPS数据 | 54 | //定时从网关获取GPS数据 |
| 55 | - //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS); | 55 | + //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 15, TimeUnit.SECONDS); |
| 56 | //定时扫描掉离线 | 56 | //定时扫描掉离线 |
| 57 | 57 | ||
| 58 | } | 58 | } |
src/main/java/com/bsth/entity/sys/RealControAuthority.java
0 → 100644
| 1 | +package com.bsth.entity.sys; | ||
| 2 | + | ||
| 3 | +import javax.persistence.*; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 线调权限配置 | ||
| 7 | + * Created by panzhao on 2017/2/14. | ||
| 8 | + */ | ||
| 9 | +@Entity | ||
| 10 | +@Table(name = "bsth_c_real_control_authority") | ||
| 11 | +public class RealControAuthority { | ||
| 12 | + | ||
| 13 | + @Id | ||
| 14 | + private Integer userId; | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 可调度的线路 , 分隔多个 | ||
| 18 | + */ | ||
| 19 | + private String lineCodeStr; | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 调度模式 0: 监控模式 1:主调模式 | ||
| 23 | + */ | ||
| 24 | + private int pattern; | ||
| 25 | + | ||
| 26 | + public Integer getUserId() { | ||
| 27 | + return userId; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + public void setUserId(Integer userId) { | ||
| 31 | + this.userId = userId; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + public String getLineCodeStr() { | ||
| 35 | + return lineCodeStr; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + public void setLineCodeStr(String lineCodeStr) { | ||
| 39 | + this.lineCodeStr = lineCodeStr; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public int getPattern() { | ||
| 43 | + return pattern; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public void setPattern(int pattern) { | ||
| 47 | + this.pattern = pattern; | ||
| 48 | + } | ||
| 49 | +} |
src/main/java/com/bsth/entity/sys/UserLine.java
| 1 | package com.bsth.entity.sys; | 1 | package com.bsth.entity.sys; |
| 2 | 2 | ||
| 3 | -import javax.persistence.Entity; | ||
| 4 | -import javax.persistence.GeneratedValue; | ||
| 5 | -import javax.persistence.GenerationType; | ||
| 6 | -import javax.persistence.Id; | ||
| 7 | -import javax.persistence.ManyToOne; | ||
| 8 | -import javax.persistence.Table; | ||
| 9 | - | ||
| 10 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 11 | 4 | ||
| 5 | +import javax.persistence.*; | ||
| 6 | + | ||
| 12 | /** | 7 | /** |
| 13 | * | 8 | * |
| 14 | * @ClassName: Line(用户线路分配实体类) | 9 | * @ClassName: Line(用户线路分配实体类) |
| @@ -20,6 +15,8 @@ import com.bsth.entity.Line; | @@ -20,6 +15,8 @@ import com.bsth.entity.Line; | ||
| 20 | * @Date 2016年8月26日 09:03:33 | 15 | * @Date 2016年8月26日 09:03:33 |
| 21 | * | 16 | * |
| 22 | * @Version 公交调度系统BS版 0.1 | 17 | * @Version 公交调度系统BS版 0.1 |
| 18 | + * | ||
| 19 | + * PS:这个类缺少主调监控模式的配置,暂不使用 | ||
| 23 | * | 20 | * |
| 24 | */ | 21 | */ |
| 25 | 22 |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| @@ -30,7 +30,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | @@ -30,7 +30,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | ||
| 30 | 30 | ||
| 31 | @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)") | 31 | @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)") |
| 32 | List<ScheduleRealInfo> queryUserInfo2(String line,String date); | 32 | List<ScheduleRealInfo> queryUserInfo2(String line,String date); |
| 33 | - | 33 | + |
| 34 | @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ") | 34 | @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ") |
| 35 | List<ScheduleRealInfo> queryUserInfo3(String line,String date); | 35 | List<ScheduleRealInfo> queryUserInfo3(String line,String date); |
| 36 | 36 | ||
| @@ -119,6 +119,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | @@ -119,6 +119,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | ||
| 119 | 119 | ||
| 120 | @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.bcType not in ('in','out') order by s.xlBm") | 120 | @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.bcType not in ('in','out') order by s.xlBm") |
| 121 | List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date); | 121 | List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date); |
| 122 | + | ||
| 123 | + //按月统计 | ||
| 124 | + @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m') = ?2 and s.bcType not in ('in','out') order by s.xlBm") | ||
| 125 | + List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date); | ||
| 122 | 126 | ||
| 123 | @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY realExecDate,fcsj,xlBm,clZbh") | 127 | @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY realExecDate,fcsj,xlBm,clZbh") |
| 124 | List<Map<String,Object>> yesterdayDataList(String line,String date); | 128 | List<Map<String,Object>> yesterdayDataList(String line,String date); |
src/main/java/com/bsth/repository/sys/RealControAuthorityRepository.java
0 → 100644
| 1 | +package com.bsth.repository.sys; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.sys.RealControAuthority; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.data.jpa.repository.Query; | ||
| 6 | +import org.springframework.stereotype.Repository; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by panzhao on 2017/2/14. | ||
| 10 | + */ | ||
| 11 | +@Repository | ||
| 12 | +public interface RealControAuthorityRepository extends BaseRepository<RealControAuthority, Integer>{ | ||
| 13 | + | ||
| 14 | + @Query("select t from RealControAuthority t where t.userId=?1") | ||
| 15 | + RealControAuthority findByUserId(Integer userId); | ||
| 16 | +} |
src/main/java/com/bsth/service/realcontrol/RealMapService.java
| @@ -15,4 +15,6 @@ public interface RealMapService { | @@ -15,4 +15,6 @@ public interface RealMapService { | ||
| 15 | Map<String,Object> findRouteAndStationByLine(String lineCode); | 15 | Map<String,Object> findRouteAndStationByLine(String lineCode); |
| 16 | 16 | ||
| 17 | Map<String,Object> multiSectionRoute(String codeIdx); | 17 | Map<String,Object> multiSectionRoute(String codeIdx); |
| 18 | + | ||
| 19 | + Map<String,Object> multiRouteByLine(String codeStr); | ||
| 18 | } | 20 | } |
src/main/java/com/bsth/service/realcontrol/impl/RealMapServiceImpl.java
| @@ -159,6 +159,17 @@ public class RealMapServiceImpl implements RealMapService { | @@ -159,6 +159,17 @@ public class RealMapServiceImpl implements RealMapService { | ||
| 159 | return rs; | 159 | return rs; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | + @Override | ||
| 163 | + public Map<String, Object> multiRouteByLine(String codeStr) { | ||
| 164 | + List<String> codeArray = Splitter.on(",").splitToList(codeStr); | ||
| 165 | + Map<String, Object> rs = new HashMap<>(); | ||
| 166 | + | ||
| 167 | + for(String code : codeArray){ | ||
| 168 | + rs.put(code + "_route" ,findRouteByLine(code)); | ||
| 169 | + } | ||
| 170 | + return rs; | ||
| 171 | + } | ||
| 172 | + | ||
| 162 | /** | 173 | /** |
| 163 | * wgs 坐标数组转 百度 | 174 | * wgs 坐标数组转 百度 |
| 164 | * | 175 | * |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| @@ -525,6 +525,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -525,6 +525,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 525 | map.put("fast", ""); | 525 | map.put("fast", ""); |
| 526 | map.put("slow", ""); | 526 | map.put("slow", ""); |
| 527 | } | 527 | } |
| 528 | + System.out.println(map); | ||
| 528 | listMap.add(map); | 529 | listMap.add(map); |
| 529 | } catch (Exception e) { | 530 | } catch (Exception e) { |
| 530 | e.printStackTrace(); | 531 | e.printStackTrace(); |
| @@ -1386,7 +1387,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1386,7 +1387,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1386 | @Override | 1387 | @Override |
| 1387 | public List<Map<String, Object>> statisticsDaily(String line, String date, | 1388 | public List<Map<String, Object>> statisticsDaily(String line, String date, |
| 1388 | String xlName, String type) { | 1389 | String xlName, String type) { |
| 1389 | - List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date); | 1390 | + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 1391 | + if(date.length() == 10) | ||
| 1392 | + list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date); | ||
| 1393 | + else if(date.length() == 7) | ||
| 1394 | + list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date); | ||
| 1390 | 1395 | ||
| 1391 | List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); | 1396 | List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); |
| 1392 | DecimalFormat format = new DecimalFormat("0.00"); | 1397 | DecimalFormat format = new DecimalFormat("0.00"); |
| @@ -2563,7 +2568,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -2563,7 +2568,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 2563 | map.put("fast", ""); | 2568 | map.put("fast", ""); |
| 2564 | map.put("slow", ""); | 2569 | map.put("slow", ""); |
| 2565 | } | 2570 | } |
| 2566 | - listMap.add(map); | 2571 | + System.out.println(map); |
| 2572 | + listMap.add(map); | ||
| 2567 | } catch (Exception e) { | 2573 | } catch (Exception e) { |
| 2568 | e.printStackTrace(); | 2574 | e.printStackTrace(); |
| 2569 | } | 2575 | } |
| @@ -2591,13 +2597,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -2591,13 +2597,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 2591 | map.put("jzl", jzl); | 2597 | map.put("jzl", jzl); |
| 2592 | map.put("jhlc", format.format(jhlc+jcclc)); | 2598 | map.put("jhlc", format.format(jhlc+jcclc)); |
| 2593 | map.put("yygljh", format.format(jhlc)); | 2599 | map.put("yygljh", format.format(jhlc)); |
| 2594 | - map.put("ssgl", format.format(remgl)); | 2600 | + map.put("ssgl", format.format(remMileage)); |
| 2595 | map.put("ksgl", format.format(ksgl)); | 2601 | map.put("ksgl", format.format(ksgl)); |
| 2596 | map.put("yyglsj", format.format(yygl)); | 2602 | map.put("yyglsj", format.format(yygl)); |
| 2597 | map.put("jhbc", jhbc); | 2603 | map.put("jhbc", jhbc); |
| 2598 | map.put("jcclc", jcclc); | 2604 | map.put("jcclc", jcclc); |
| 2599 | 2605 | ||
| 2600 | - map.put("ljgl", format.format(addgl)); | 2606 | + map.put("ljgl", format.format(addMileage)); |
| 2601 | map.put("ssbc", cjbc); | 2607 | map.put("ssbc", cjbc); |
| 2602 | map.put("ysgl", format.format(yygl)); | 2608 | map.put("ysgl", format.format(yygl)); |
| 2603 | map.put("sjbc", jhbc-cjbc+ljbc); | 2609 | map.put("sjbc", jhbc-cjbc+ljbc); |
| @@ -3114,7 +3120,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -3114,7 +3120,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 3114 | listI.add(dataList2.iterator()); | 3120 | listI.add(dataList2.iterator()); |
| 3115 | listI.add(dataList3.iterator()); | 3121 | listI.add(dataList3.iterator()); |
| 3116 | String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; | 3122 | String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; |
| 3117 | - ee.excelReplace(listI, new Object[] { m }, path+"mould/scheduleDaily.xls", | 3123 | + String sourcePath = path+"mould/scheduleDaily.xls"; |
| 3124 | + if(date.length() == 7){ | ||
| 3125 | + sdfMonth = new SimpleDateFormat("yyyy-MM"); | ||
| 3126 | + sdfSimple = new SimpleDateFormat("yyyyMM"); | ||
| 3127 | + sourcePath = path+"mould/scheduleDaily_m.xls"; | ||
| 3128 | + } | ||
| 3129 | + ee.excelReplace(listI, new Object[] { m }, sourcePath, | ||
| 3118 | path+"export/调度日报" + sdfSimple.format(sdfMonth.parse(date))+".xls"); | 3130 | path+"export/调度日报" + sdfSimple.format(sdfMonth.parse(date))+".xls"); |
| 3119 | } catch (Exception e) { | 3131 | } catch (Exception e) { |
| 3120 | // TODO: handle exception | 3132 | // TODO: handle exception |
src/main/java/com/bsth/service/sys/RealControAuthorityService.java
0 → 100644
| 1 | +package com.bsth.service.sys; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.sys.RealControAuthority; | ||
| 4 | +import com.bsth.service.BaseService; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * Created by panzhao on 2017/2/14. | ||
| 8 | + */ | ||
| 9 | +public interface RealControAuthorityService extends BaseService<RealControAuthority, Integer> { | ||
| 10 | + RealControAuthority findByUserId(Integer userId); | ||
| 11 | +} |
src/main/java/com/bsth/service/sys/impl/RealControAuthorityServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.sys.impl; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.sys.RealControAuthority; | ||
| 4 | +import com.bsth.repository.sys.RealControAuthorityRepository; | ||
| 5 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 6 | +import com.bsth.service.sys.RealControAuthorityService; | ||
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 8 | +import org.springframework.stereotype.Service; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * Created by panzhao on 2017/2/14. | ||
| 12 | + */ | ||
| 13 | +@Service | ||
| 14 | +public class RealControAuthorityServiceImpl extends BaseServiceImpl<RealControAuthority, Integer> implements RealControAuthorityService { | ||
| 15 | + | ||
| 16 | + @Autowired | ||
| 17 | + RealControAuthorityRepository realControAuthorityRepository; | ||
| 18 | + | ||
| 19 | + @Override | ||
| 20 | + public RealControAuthority findByUserId(Integer userId) { | ||
| 21 | + return realControAuthorityRepository.findByUserId(userId); | ||
| 22 | + } | ||
| 23 | +} |
src/main/resources/static/assets/js/common.js
| @@ -119,6 +119,8 @@ function initPinYinSelect2(selector, data, cb){ | @@ -119,6 +119,8 @@ function initPinYinSelect2(selector, data, cb){ | ||
| 119 | $(selector).select2({ | 119 | $(selector).select2({ |
| 120 | data: data, | 120 | data: data, |
| 121 | matcher: oldMatcher(function(term, text, item){ | 121 | matcher: oldMatcher(function(term, text, item){ |
| 122 | + if(!item.id) | ||
| 123 | + return; | ||
| 122 | var upTerm = term.toUpperCase(); | 124 | var upTerm = term.toUpperCase(); |
| 123 | if(item.fullChars.indexOf(upTerm) != -1 | 125 | if(item.fullChars.indexOf(upTerm) != -1 |
| 124 | || item.camelChars.indexOf(upTerm) != -1) | 126 | || item.camelChars.indexOf(upTerm) != -1) |
src/main/resources/static/index.html
| @@ -289,6 +289,11 @@ | @@ -289,6 +289,11 @@ | ||
| 289 | {{/each}} | 289 | {{/each}} |
| 290 | 290 | ||
| 291 | </script> | 291 | </script> |
| 292 | +<script> | ||
| 293 | + delete window.require; | ||
| 294 | + delete window.exports; | ||
| 295 | + delete window.module; | ||
| 296 | +</script> | ||
| 292 | <!-- jQuery --> | 297 | <!-- jQuery --> |
| 293 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script> | 298 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script> |
| 294 | <!-- bootstrap --> | 299 | <!-- bootstrap --> |
src/main/resources/static/login.html
| @@ -220,6 +220,11 @@ h3.logo-text{ | @@ -220,6 +220,11 @@ h3.logo-text{ | ||
| 220 | <div class="login-footer"> © 2016 上海巴士拓华科技发展有限公司 Some Rights Reserved </div> | 220 | <div class="login-footer"> © 2016 上海巴士拓华科技发展有限公司 Some Rights Reserved </div> |
| 221 | </div> | 221 | </div> |
| 222 | 222 | ||
| 223 | +<script> | ||
| 224 | + delete window.require; | ||
| 225 | + delete window.exports; | ||
| 226 | + delete window.module; | ||
| 227 | +</script> | ||
| 223 | <!-- jQuery --> | 228 | <!-- jQuery --> |
| 224 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" ></script> | 229 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" ></script> |
| 225 | <script src="/assets/plugins/jsencrypt.min.js" ></script> | 230 | <script src="/assets/plugins/jsencrypt.min.js" ></script> |
| @@ -228,7 +233,7 @@ window.onload=function(){ | @@ -228,7 +233,7 @@ window.onload=function(){ | ||
| 228 | var body=document.getElementsByTagName("body")[0]; | 233 | var body=document.getElementsByTagName("body")[0]; |
| 229 | if(typeof body.style.WebkitAnimation=="undefined") | 234 | if(typeof body.style.WebkitAnimation=="undefined") |
| 230 | $('.warn-note').fadeIn(); | 235 | $('.warn-note').fadeIn(); |
| 231 | -} | 236 | +}; |
| 232 | !function(){ | 237 | !function(){ |
| 233 | var form = $('#loginPanel form') | 238 | var form = $('#loginPanel form') |
| 234 | ,nameInput = $('input[name=userName]', form) | 239 | ,nameInput = $('input[name=userName]', form) |
src/main/resources/static/pages/forms/mould/scheduleDaily.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/scheduleDaily_m.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/statement/scheduleDaily.html
| @@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
| 37 | </div> | 37 | </div> |
| 38 | <div class="form-group"> | 38 | <div class="form-group"> |
| 39 | <input class="btn btn-default" type="button" id="query" value="查询"/> | 39 | <input class="btn btn-default" type="button" id="query" value="查询"/> |
| 40 | + <input class="btn btn-default" type="button" id="month" value="按月查询"/> | ||
| 40 | <input class="btn btn-default" type="button" id="export" value="导出"/> | 41 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 41 | </div> | 42 | </div> |
| 42 | </form> | 43 | </form> |
| @@ -51,8 +52,8 @@ | @@ -51,8 +52,8 @@ | ||
| 51 | </tr> | 52 | </tr> |
| 52 | <tr> | 53 | <tr> |
| 53 | <td rowspan="3">路线别</td> | 54 | <td rowspan="3">路线别</td> |
| 54 | - <td colspan="16">全日营运里程(公里)</td> | ||
| 55 | - <td colspan="15">全日营运班次</td> | 55 | + <td colspan="16"><c>全日</c>营运里程(公里)</td> |
| 56 | + <td colspan="15"><c>全日</c>营运班次</td> | ||
| 56 | <td colspan="9">大间隔情况</td> | 57 | <td colspan="9">大间隔情况</td> |
| 57 | </tr> | 58 | </tr> |
| 58 | <tr> | 59 | <tr> |
| @@ -83,22 +84,22 @@ | @@ -83,22 +84,22 @@ | ||
| 83 | <td>气候</td> | 84 | <td>气候</td> |
| 84 | <td>援外</td> | 85 | <td>援外</td> |
| 85 | <td>其他</td> | 86 | <td>其他</td> |
| 86 | - <td>全日</td> | 87 | + <td><c>全日</c></td> |
| 87 | <td>早高峰</td> | 88 | <td>早高峰</td> |
| 88 | <td>晚高峰</td> | 89 | <td>晚高峰</td> |
| 89 | - <td>全日</td> | 90 | + <td><c>全日</c></td> |
| 90 | <td>早高峰</td> | 91 | <td>早高峰</td> |
| 91 | <td>晚高峰</td> | 92 | <td>晚高峰</td> |
| 92 | - <td>全日</td> | 93 | + <td><c>全日</c></td> |
| 93 | <td>早高峰</td> | 94 | <td>早高峰</td> |
| 94 | <td>晚高峰</td> | 95 | <td>晚高峰</td> |
| 95 | - <td>全日</td> | 96 | + <td><c>全日</c></td> |
| 96 | <td>早高峰</td> | 97 | <td>早高峰</td> |
| 97 | <td>晚高峰</td> | 98 | <td>晚高峰</td> |
| 98 | - <td>全日</td> | 99 | + <td><c>全日</c></td> |
| 99 | <td>早高峰</td> | 100 | <td>早高峰</td> |
| 100 | <td>晚高峰</td> | 101 | <td>晚高峰</td> |
| 101 | - <td>全日</td> | 102 | + <td><c>全日</c></td> |
| 102 | <td>早高峰</td> | 103 | <td>早高峰</td> |
| 103 | <td>晚高峰</td> | 104 | <td>晚高峰</td> |
| 104 | </tr> | 105 | </tr> |
| @@ -273,15 +274,24 @@ | @@ -273,15 +274,24 @@ | ||
| 273 | initPinYinSelect2('#line',data,''); | 274 | initPinYinSelect2('#line',data,''); |
| 274 | 275 | ||
| 275 | }) | 276 | }) |
| 277 | + | ||
| 278 | + $('#export').attr('disabled', "true"); | ||
| 279 | + | ||
| 280 | + var line = $("#line").val(); | ||
| 281 | + var xlName = $("#select2-line-container").html(); | ||
| 282 | + var date = $("#date").val(); | ||
| 283 | + | ||
| 276 | //查询 | 284 | //查询 |
| 277 | $("#query").on('click',function(){ | 285 | $("#query").on('click',function(){ |
| 278 | - var line = $("#line").val(); | ||
| 279 | - var xlName = $("#select2-line-container").html(); | ||
| 280 | - var date = $("#date").val(); | 286 | + line = $("#line").val(); |
| 287 | + xlName = $("#select2-line-container").html(); | ||
| 288 | + date = $("#date").val(); | ||
| 281 | if(date == null || date.length == 0){ | 289 | if(date == null || date.length == 0){ |
| 282 | layer.msg("请选择时间"); | 290 | layer.msg("请选择时间"); |
| 283 | return; | 291 | return; |
| 284 | } | 292 | } |
| 293 | + $("c").html("全日"); | ||
| 294 | + $("#export").removeAttr("disabled"); | ||
| 285 | $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){ | 295 | $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){ |
| 286 | var scheduleDaily_1 = template('scheduleDaily_1',{list:result}); | 296 | var scheduleDaily_1 = template('scheduleDaily_1',{list:result}); |
| 287 | $('#forms .scheduleDaily_1').html(scheduleDaily_1); | 297 | $('#forms .scheduleDaily_1').html(scheduleDaily_1); |
| @@ -298,22 +308,43 @@ | @@ -298,22 +308,43 @@ | ||
| 298 | 308 | ||
| 299 | }); | 309 | }); |
| 300 | 310 | ||
| 311 | + //按月查询 | ||
| 312 | + $("#month").on('click',function(){ | ||
| 313 | + line = $("#line").val(); | ||
| 314 | + xlName = $("#select2-line-container").html(); | ||
| 315 | + date = $("#date").val(); | ||
| 316 | + if(date == null || date.length == 0){ | ||
| 317 | + layer.msg("请选择时间"); | ||
| 318 | + return; | ||
| 319 | + } | ||
| 320 | + date = date.substring(0, 7); | ||
| 321 | + $("c").html("全月"); | ||
| 322 | + $("#export").removeAttr("disabled"); | ||
| 323 | + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){ | ||
| 324 | + var scheduleDaily_1 = template('scheduleDaily_1',{list:result}); | ||
| 325 | + $('#forms .scheduleDaily_1').html(scheduleDaily_1); | ||
| 326 | + }); | ||
| 327 | + $('#forms .scheduleDaily_2').html(""); | ||
| 328 | + $('#forms .scheduleDaily_3').html(""); | ||
| 329 | + | ||
| 330 | + }); | ||
| 331 | + | ||
| 301 | $("#export").on("click",function(){ | 332 | $("#export").on("click",function(){ |
| 302 | var params = {}; | 333 | var params = {}; |
| 303 | - var line = $("#line").val(); | ||
| 304 | - var xlName = $("#select2-line-container").html(); | ||
| 305 | - var date = $("#date").val(); | ||
| 306 | if(date == null || date.length == 0){ | 334 | if(date == null || date.length == 0){ |
| 307 | layer.msg("请选择时间"); | 335 | layer.msg("请选择时间"); |
| 308 | return; | 336 | return; |
| 309 | } | 337 | } |
| 310 | params['line'] = line; | 338 | params['line'] = line; |
| 311 | params['date'] = date; | 339 | params['date'] = date; |
| 312 | - params['xlName'] = "xlName"; | 340 | + params['xlName'] = xlName; |
| 313 | params['type'] = "export"; | 341 | params['type'] = "export"; |
| 314 | params['state'] = '2'; | 342 | params['state'] = '2'; |
| 315 | $get('/realSchedule/scheduleDailyExport', params, function(result){ | 343 | $get('/realSchedule/scheduleDailyExport', params, function(result){ |
| 316 | - window.open("/downloadFile/download?fileName=调度日报"+moment(date).format("YYYYMMDD")); | 344 | + if(date.length == 10) |
| 345 | + window.open("/downloadFile/download?fileName=调度日报"+moment(date).format("YYYYMMDD")); | ||
| 346 | + else | ||
| 347 | + window.open("/downloadFile/download?fileName=调度日报"+moment(date).format("YYYYMM")); | ||
| 317 | }); | 348 | }); |
| 318 | }); | 349 | }); |
| 319 | 350 |
src/main/resources/static/pages/permission/user/controlAllot.html
0 → 100644
| 1 | +<div id="pageRealControlAllotWrap" style="overflow: hidden;padding: 15px 15px 0;"> | ||
| 2 | + | ||
| 3 | + <style> | ||
| 4 | + #pageRealControlAllotWrap span.line-item { | ||
| 5 | + background: #efefef; | ||
| 6 | + padding: 4px 11px; | ||
| 7 | + margin: 0 3px 11px 8px; | ||
| 8 | + box-shadow: 0px 1px 3px 0 rgba(71, 69, 69, 0.2), 1px 2px 3px 0 rgba(96, 94, 94, 0.19); | ||
| 9 | + position: relative; | ||
| 10 | + border: 1px solid #c5c0c0; | ||
| 11 | + display: inline-block; | ||
| 12 | + } | ||
| 13 | + | ||
| 14 | + #pageRealControlAllotWrap .remove-icon { | ||
| 15 | + position: absolute; | ||
| 16 | + right: -5px; | ||
| 17 | + top: -5px; | ||
| 18 | + color: #ffffff; | ||
| 19 | + background: #ff4646; | ||
| 20 | + border-radius: 99px; | ||
| 21 | + font-size: 12px; | ||
| 22 | + cursor: pointer; | ||
| 23 | + padding: 0px 1px; | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + .select2-container { | ||
| 27 | + z-index: 19891017; | ||
| 28 | + } | ||
| 29 | + </style> | ||
| 30 | + | ||
| 31 | + <h4> | ||
| 32 | + mky001/ 系统管理员 | ||
| 33 | + </h4> | ||
| 34 | + | ||
| 35 | + <div style="border: 1px solid #cccbcb;height: 190px;position: relative;"> | ||
| 36 | + <span style="display: block;margin: 10px;color: grey;">已分配的线路</span> | ||
| 37 | + | ||
| 38 | + <div class="line-list" style="height: 110px;"> | ||
| 39 | + </div> | ||
| 40 | + | ||
| 41 | + <div style="padding-left: 8px;"> | ||
| 42 | + <div style="display: inline-block;"> | ||
| 43 | + <select name="lineSelect" style="width: 160px;"> | ||
| 44 | + <option value="">请选择线路...</option> | ||
| 45 | + </select> | ||
| 46 | + </div> | ||
| 47 | + | ||
| 48 | + <button disabled type="button" id="addLineItemBtn" class="btn blue btn-sm" style="margin-top: -10px;"><i | ||
| 49 | + class="fa fa-plus"></i> 添加线路 | ||
| 50 | + </button> | ||
| 51 | + </div> | ||
| 52 | + </div> | ||
| 53 | + | ||
| 54 | + <div style="margin-top: 15px;"> | ||
| 55 | + <form class="form-horizontal"> | ||
| 56 | + <div class="form-group" style="width: 50%;"> | ||
| 57 | + <label class="col-md-5 control-label">系统运行模式</label> | ||
| 58 | + <div class="col-md-7"> | ||
| 59 | + <select class="form-control" name="pattern"> | ||
| 60 | + <option value="0">监控模式</option> | ||
| 61 | + <option value="1">主调模式</option> | ||
| 62 | + </select> | ||
| 63 | + </div> | ||
| 64 | + </div> | ||
| 65 | + </form> | ||
| 66 | + </div> | ||
| 67 | + | ||
| 68 | + <button class="btn blue btn-block" id="saveBtn"><i class="fa fa-check"></i> 保存</button> | ||
| 69 | + <script> | ||
| 70 | + !function () { | ||
| 71 | + var wrap = '#pageRealControlAllotWrap' | ||
| 72 | + , lineSelect = $('select[name=lineSelect]', wrap) | ||
| 73 | + , addBtn = $('#addLineItemBtn', wrap); | ||
| 74 | + | ||
| 75 | + var userId; | ||
| 76 | + var codeNameMap = {}; | ||
| 77 | + $(wrap).on('init', function (e, id) { | ||
| 78 | + e.stopPropagation(); | ||
| 79 | + userId = id; | ||
| 80 | + | ||
| 81 | + $.get('/line/all', {'destroy_eq': 0}, function (rs) { | ||
| 82 | + var data = []; | ||
| 83 | + $.each(rs, function () { | ||
| 84 | + data.push({ | ||
| 85 | + id: this.lineCode, | ||
| 86 | + text: this.name | ||
| 87 | + }); | ||
| 88 | + codeNameMap[this.lineCode] = this.name; | ||
| 89 | + }); | ||
| 90 | + | ||
| 91 | + initPinYinSelect2(lineSelect, data); | ||
| 92 | + | ||
| 93 | + $.get('/realControAuthority/findByUserId', {userId: userId}, function (t) { | ||
| 94 | + if(!t || !t.lineCodeStr) | ||
| 95 | + return; | ||
| 96 | + var lineArray = t.lineCodeStr.split(','); | ||
| 97 | + var htmlStr = ''; | ||
| 98 | + $.each(lineArray, function (i, code) { | ||
| 99 | + if(!code) | ||
| 100 | + return; | ||
| 101 | + htmlStr += '<span class="line-item" data-id="'+code+'"><i class="fa fa-remove remove-icon"></i>'+codeNameMap[code]+'</span>'; | ||
| 102 | + }); | ||
| 103 | + | ||
| 104 | + $('.line-list', wrap).html(htmlStr); | ||
| 105 | + }); | ||
| 106 | + }); | ||
| 107 | + }); | ||
| 108 | + | ||
| 109 | + lineSelect.on('change', function () { | ||
| 110 | + if ($(this).val() == '') { | ||
| 111 | + addBtn.attr('disabled', 'disabled'); | ||
| 112 | + } | ||
| 113 | + else { | ||
| 114 | + addBtn.removeAttr('disabled'); | ||
| 115 | + } | ||
| 116 | + }); | ||
| 117 | + | ||
| 118 | + addBtn.on('click', function () { | ||
| 119 | + var code = lineSelect.val(), | ||
| 120 | + name = codeNameMap[code]; | ||
| 121 | + | ||
| 122 | + $('.line-list', wrap).append('<span class="line-item" data-id="'+code+'"><i class="fa fa-remove remove-icon"></i>'+name+'</span>'); | ||
| 123 | + }); | ||
| 124 | + | ||
| 125 | + $(wrap).on('click', '.remove-icon', function () { | ||
| 126 | + $(this).parent().remove(); | ||
| 127 | + }); | ||
| 128 | + | ||
| 129 | + //保存 | ||
| 130 | + $('#saveBtn', wrap).on('click', function () { | ||
| 131 | + var data = $('form', wrap).serializeJSON(); | ||
| 132 | + var lineCodeStr = ''; | ||
| 133 | + $('.line-list .line-item', wrap).each(function () { | ||
| 134 | + lineCodeStr += ($(this).data('id') + ','); | ||
| 135 | + }); | ||
| 136 | + | ||
| 137 | + data.lineCodeStr = lineCodeStr; | ||
| 138 | + | ||
| 139 | + if(!userId){ | ||
| 140 | + alert('无法获取到用户ID'); | ||
| 141 | + return; | ||
| 142 | + } | ||
| 143 | + | ||
| 144 | + data.userId = userId; | ||
| 145 | + | ||
| 146 | + $.post('/realControAuthority', data, function (rs) { | ||
| 147 | + alert('保存成功!'); | ||
| 148 | + }); | ||
| 149 | + }); | ||
| 150 | + }(); | ||
| 151 | + </script> | ||
| 152 | +</div> | ||
| 0 | \ No newline at end of file | 153 | \ No newline at end of file |
src/main/resources/static/pages/permission/user/list.html
| @@ -21,29 +21,7 @@ | @@ -21,29 +21,7 @@ | ||
| 21 | </div> | 21 | </div> |
| 22 | <div class="actions"> | 22 | <div class="actions"> |
| 23 | <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a> | 23 | <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a> |
| 24 | - <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> --> | ||
| 25 | - <div class="btn-group"> | ||
| 26 | - <a class="btn red btn-outline btn-circle" href="javascript:;" | ||
| 27 | - data-toggle="dropdown"> <i class="fa fa-share"></i> <span | ||
| 28 | - class="hidden-xs"> 系统工具 </span> <i class="fa fa-angle-down"></i> | ||
| 29 | - </a> | ||
| 30 | - <ul class="dropdown-menu pull-right" id="datatable_ajax_tools"> | ||
| 31 | - <li><a href="javascript:;" data-action="0" | ||
| 32 | - class="tool-action"> <i class="fa fa-print"></i> 打印 | ||
| 33 | - </a></li> | ||
| 34 | - <li><a href="javascript:;" data-action="1" | ||
| 35 | - class="tool-action"> <i class="fa fa-copy"></i> 复制 | ||
| 36 | - </a></li> | ||
| 37 | - <li><a href="javascript:;" data-action="3" | ||
| 38 | - class="tool-action"> <i class="fa fa-file-excel-o"></i> | ||
| 39 | - 导出Excel | ||
| 40 | - </a></li> | ||
| 41 | - <li class="divider"></li> | ||
| 42 | - <li><a href="javascript:;" data-action="5" | ||
| 43 | - class="tool-action"> <i class="fa fa-refresh"></i> 刷新数据 | ||
| 44 | - </a></li> | ||
| 45 | - </ul> | ||
| 46 | - </div> | 24 | + |
| 47 | </div> | 25 | </div> |
| 48 | </div> | 26 | </div> |
| 49 | <div class="portlet-body"> | 27 | <div class="portlet-body"> |
| @@ -134,6 +112,7 @@ | @@ -134,6 +112,7 @@ | ||
| 134 | </td> | 112 | </td> |
| 135 | <td> | 113 | <td> |
| 136 | <a class="btn btn-sm blue btn-outline" href="edit.html?no={{obj.id}}" data-pjax><i class="fa fa-edit"></i> 编辑</a> | 114 | <a class="btn btn-sm blue btn-outline" href="edit.html?no={{obj.id}}" data-pjax><i class="fa fa-edit"></i> 编辑</a> |
| 115 | + <button type="button" class="btn btn-sm line_allot_btn" data-id="{{obj.id}}">线调线路分配</button> | ||
| 137 | </td> | 116 | </td> |
| 138 | </tr> | 117 | </tr> |
| 139 | {{/each}} | 118 | {{/each}} |
| @@ -150,7 +129,7 @@ $(function(){ | @@ -150,7 +129,7 @@ $(function(){ | ||
| 150 | var icheckOptions = { | 129 | var icheckOptions = { |
| 151 | checkboxClass: 'icheckbox_flat-blue', | 130 | checkboxClass: 'icheckbox_flat-blue', |
| 152 | increaseArea: '20%' | 131 | increaseArea: '20%' |
| 153 | - } | 132 | + }; |
| 154 | 133 | ||
| 155 | jsDoQuery(null,true); | 134 | jsDoQuery(null,true); |
| 156 | 135 | ||
| @@ -204,6 +183,8 @@ $(function(){ | @@ -204,6 +183,8 @@ $(function(){ | ||
| 204 | showPagination(data); | 183 | showPagination(data); |
| 205 | } | 184 | } |
| 206 | layer.close(i); | 185 | layer.close(i); |
| 186 | + | ||
| 187 | + $('.line_allot_btn').on('click', openAllotWindow); | ||
| 207 | }); | 188 | }); |
| 208 | } | 189 | } |
| 209 | 190 | ||
| @@ -244,6 +225,22 @@ $(function(){ | @@ -244,6 +225,22 @@ $(function(){ | ||
| 244 | }); | 225 | }); |
| 245 | } | 226 | } |
| 246 | 227 | ||
| 228 | + function openAllotWindow() { | ||
| 229 | + var id = $(this).data('id'); | ||
| 230 | + $.get('/pages/permission/user/controlAllot.html', function (content) { | ||
| 231 | + layer.open({ | ||
| 232 | + type: 1, | ||
| 233 | + area: ['600px', '395px'], | ||
| 234 | + content: content, | ||
| 235 | + title: '线路调度权限分配', | ||
| 236 | + shift: 5, | ||
| 237 | + scrollbar: false, | ||
| 238 | + success: function () { | ||
| 239 | + $('#pageRealControlAllotWrap').trigger('init', id); | ||
| 240 | + } | ||
| 241 | + }); | ||
| 242 | + }); | ||
| 243 | + } | ||
| 247 | 244 | ||
| 248 | //删除 | 245 | //删除 |
| 249 | $('#removeButton').on('click', function(){ | 246 | $('#removeButton').on('click', function(){ |
| @@ -259,7 +256,6 @@ $(function(){ | @@ -259,7 +256,6 @@ $(function(){ | ||
| 259 | }); | 256 | }); |
| 260 | //改变状态 | 257 | //改变状态 |
| 261 | function changeEnabled(id,enabled){ | 258 | function changeEnabled(id,enabled){ |
| 262 | - debugger | ||
| 263 | $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ | 259 | $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ |
| 264 | jsDoQuery(null, true); | 260 | jsDoQuery(null, true); |
| 265 | }) | 261 | }) |
src/main/resources/static/real_control_v2/assets/imgs/icon/minus.png
0 → 100644
119 Bytes
src/main/resources/static/real_control_v2/assets/imgs/icon/remove.png
0 → 100644
269 Bytes
src/main/resources/static/real_control_v2/assets/plugins/uikit-2.27.1/components/sortable.gradient.min.css
0 → 100644
| 1 | +/*! UIkit 2.27.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ | ||
| 2 | +.uk-sortable{position:relative}.uk-sortable>*{touch-action:none}.uk-sortable a,.uk-sortable img{-webkit-touch-callout:none}.uk-sortable>:last-child{margin-bottom:0}.uk-sortable-dragged{position:absolute;z-index:1050;pointer-events:none}.uk-sortable-placeholder{opacity:0}.uk-sortable-empty{min-height:30px}.uk-sortable-handle{touch-action:none}.uk-sortable-handle:hover{cursor:move}.uk-sortable-moving,.uk-sortable-moving *{cursor:move}.uk-sortable-moving iframe{pointer-events:none} | ||
| 0 | \ No newline at end of file | 3 | \ No newline at end of file |
src/main/resources/static/real_control_v2/assets/plugins/uikit-2.27.1/components/sortable.min.js
0 → 100644
| 1 | +/*! UIkit 2.27.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ | ||
| 2 | +!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-sortable",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";function e(e){e=t.$(e);do{if(e.data("sortable"))return e;e=t.$(e).parent()}while(e.length);return e}function o(t,e){var o=t.parentNode;if(e.parentNode!=o)return!1;for(var n=t.previousSibling;n&&9!==n.nodeType;){if(n===e)return!0;n=n.previousSibling}return!1}function n(t,e){var o=e;if(o==t)return null;for(;o;){if(o.parentNode===t)return o;if(o=o.parentNode,!o||!o.ownerDocument||11===o.nodeType)break}return null}function s(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}var a,r,i,l,d,h,u,p,c,g,f,m="ontouchstart"in window||"MSGesture"in window||window.DocumentTouch&&document instanceof DocumentTouch,v=m?"MSGesture"in window?"pointerdown":"touchstart":"mousedown",b=m?"MSGesture"in window?"pointermove":"touchmove":"mousemove",C=m?"MSGesture"in window?"pointerup":"touchend":"mouseup";return t.component("sortable",{defaults:{animation:150,threshold:10,childClass:"uk-sortable-item",placeholderClass:"uk-sortable-placeholder",overClass:"uk-sortable-over",draggingClass:"uk-sortable-dragged",dragMovingClass:"uk-sortable-moving",baseClass:"uk-sortable",noDragClass:"uk-sortable-nodrag",emptyClass:"uk-sortable-empty",dragCustomClass:"",handleClass:!1,group:!1,stop:function(){},start:function(){},change:function(){}},boot:function(){t.ready(function(e){t.$("[data-uk-sortable]",e).each(function(){var e=t.$(this);e.data("sortable")||t.sortable(e,t.Utils.options(e.attr("data-uk-sortable")))})}),t.$html.on(b,function(e){if(u){var o=e.originalEvent.targetTouches?e.originalEvent.targetTouches[0]:e;(Math.abs(o.pageX-u.pos.x)>u.threshold||Math.abs(o.pageY-u.pos.y)>u.threshold)&&u.apply(o)}if(a){d||(d=!0,a.show(),a.$current.addClass(a.$sortable.options.placeholderClass),a.$sortable.element.children().addClass(a.$sortable.options.childClass),t.$html.addClass(a.$sortable.options.dragMovingClass));var n=a.data("mouse-offset"),s=e.originalEvent.touches&&e.originalEvent.touches[0]||e.originalEvent,r=parseInt(s.pageX,10)+n.left,i=parseInt(s.pageY,10)+n.top;if(a.css({left:r,top:i}),i+a.height()/3>document.body.offsetHeight)return;i<t.$win.scrollTop()?t.$win.scrollTop(t.$win.scrollTop()-Math.ceil(a.height()/3)):i+a.height()/3>window.innerHeight+t.$win.scrollTop()&&t.$win.scrollTop(t.$win.scrollTop()+Math.ceil(a.height()/3))}}),t.$html.on(C,function(t){if(u=h=!1,!r||!a)return r=a=null,void 0;var o=e(r),n=a.$sortable,s={type:t.type};o[0]&&n.dragDrop(s,n.element),n.dragEnd(s,n.element)})},init:function(){function e(){m&&f.touches&&f.touches.length?h.addEventListener(b,y,!1):(h.addEventListener("mouseover",$,!1),h.addEventListener("mouseout",w,!1))}function o(){m&&f.touches&&f.touches.length?h.removeEventListener(b,y,!1):(h.removeEventListener("mouseover",$,!1),h.removeEventListener("mouseout",w,!1))}function a(t){r&&d.dragMove(t,d)}function l(e){return function(o){var s,a,r;f=o,o&&(s=o.touches&&o.touches[0]||o,a=s.target||o.target,m&&document.elementFromPoint&&(a=document.elementFromPoint(s.pageX-document.body.scrollLeft,s.pageY-document.body.scrollTop)),g=t.$(a)),t.$(a).hasClass("."+d.options.childClass)?e.apply(a,[o]):a!==h&&(r=n(h,a),r&&e.apply(r,[o]))}}var d=this,h=this.element[0];p=[],this.checkEmptyList(),this.element.data("sortable-group",this.options.group?this.options.group:t.Utils.uid("sortable-group"));var u=l(function(e){if(!e.data||!e.data.sortable){var o=t.$(e.target),n=o.is("a[href]")?o:o.parents("a[href]");if(!o.is(":input")){if(d.options.handleClass){var s=o.hasClass(d.options.handleClass)?o:o.closest("."+d.options.handleClass,d.element);if(!s.length)return}return e.preventDefault(),n.length&&n.one("click",function(t){t.preventDefault()}).one(C,function(){c||(n.trigger("click"),m&&n.attr("href").trim()&&(location.href=n.attr("href")))}),e.data=e.data||{},e.data.sortable=h,d.dragStart(e,this)}}}),$=l(t.Utils.debounce(function(t){return d.dragEnter(t,this)}),40),w=l(function(){var e=d.dragenterData(this);d.dragenterData(this,e-1),d.dragenterData(this)||(t.$(this).removeClass(d.options.overClass),d.dragenterData(this,!1))}),y=l(function(t){return r&&r!==this&&i!==this?(d.element.children().removeClass(d.options.overClass),i=this,d.moveElementNextTo(r,this),s(t)):!0});this.addDragHandlers=e,this.removeDragHandlers=o,window.addEventListener(b,a,!1),h.addEventListener(v,u,!1)},dragStart:function(e,o){c=!1,d=!1,l=!1;var n=this,s=t.$(e.target);if(!(!m&&2==e.button||s.is("."+n.options.noDragClass)||s.closest("."+n.options.noDragClass).length||s.is(":input"))){r=o,a&&a.remove();var i=t.$(r),h=i.offset(),p=e.touches&&e.touches[0]||e;u={pos:{x:p.pageX,y:p.pageY},threshold:n.options.handleClass?1:n.options.threshold,apply:function(){a=t.$('<div class="'+[n.options.draggingClass,n.options.dragCustomClass].join(" ")+'"></div>').css({display:"none",top:h.top,left:h.left,width:i.width(),height:i.height(),padding:i.css("padding")}).data({"mouse-offset":{left:h.left-parseInt(p.pageX,10),top:h.top-parseInt(p.pageY,10)},origin:n.element,index:i.index()}).append(i.html()).appendTo("body"),a.$current=i,a.$sortable=n,i.data({"start-list":i.parent(),"start-index":i.index(),"sortable-group":n.options.group}),n.addDragHandlers(),n.options.start(this,r),n.trigger("start.uk.sortable",[n,r,a]),c=!0,u=!1}}}},dragMove:function(e){g=t.$(document.elementFromPoint(e.pageX-(document.body.scrollLeft||document.scrollLeft||0),e.pageY-(document.body.scrollTop||document.documentElement.scrollTop||0)));var o,n=g.closest("."+this.options.baseClass),s=n.data("sortable-group"),a=t.$(r),i=a.parent(),l=a.data("sortable-group");n[0]!==i[0]&&void 0!==l&&s===l&&(n.data("sortable").addDragHandlers(),p.push(n),n.children().addClass(this.options.childClass),n.children().length>0?(o=g.closest("."+this.options.childClass),o.length?o.before(a):n.append(a)):g.append(a),UIkit.$doc.trigger("mouseover")),this.checkEmptyList(),this.checkEmptyList(i)},dragEnter:function(e,o){if(!r||r===o)return!0;var n=this.dragenterData(o);if(this.dragenterData(o,n+1),0===n){var s=t.$(o).parent(),a=t.$(r).data("start-list");if(s[0]!==a[0]){var i=s.data("sortable-group"),l=t.$(r).data("sortable-group");if((i||l)&&i!=l)return!1}t.$(o).addClass(this.options.overClass),this.moveElementNextTo(r,o)}return!1},dragEnd:function(e,o){var n=this;r&&(this.options.stop(o),this.trigger("stop.uk.sortable",[this])),r=null,i=null,p.push(this.element),p.forEach(function(e){t.$(e).children().each(function(){1===this.nodeType&&(t.$(this).removeClass(n.options.overClass).removeClass(n.options.placeholderClass).removeClass(n.options.childClass),n.dragenterData(this,!1))})}),p=[],t.$html.removeClass(this.options.dragMovingClass),this.removeDragHandlers(),a&&(a.remove(),a=null)},dragDrop:function(t){"drop"===t.type&&(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault()),this.triggerChangeEvents()},triggerChangeEvents:function(){if(r){var e=t.$(r),o=a.data("origin"),n=e.closest("."+this.options.baseClass),s=[],i=t.$(r);o[0]===n[0]&&a.data("index")!=e.index()?s.push({sortable:this,mode:"moved"}):o[0]!=n[0]&&s.push({sortable:t.$(n).data("sortable"),mode:"added"},{sortable:t.$(o).data("sortable"),mode:"removed"}),s.forEach(function(t){t.sortable&&t.sortable.element.trigger("change.uk.sortable",[t.sortable,i,t.mode])})}},dragenterData:function(e,o){return e=t.$(e),1==arguments.length?parseInt(e.data("child-dragenter"),10)||0:(o?e.data("child-dragenter",Math.max(0,o)):e.removeData("child-dragenter"),void 0)},moveElementNextTo:function(e,n){l=!0;var s=this,a=t.$(e).parent().css("min-height",""),r=o(e,n)?n:n.nextSibling,i=a.children(),d=i.length;return s.options.animation?(a.css("min-height",a.height()),i.stop().each(function(){var e=t.$(this),o=e.position();o.width=e.width(),e.data("offset-before",o)}),n.parentNode.insertBefore(e,r),t.Utils.checkDisplay(s.element.parent()),i=a.children().each(function(){var e=t.$(this);e.data("offset-after",e.position())}).each(function(){var e=t.$(this),o=e.data("offset-before");e.css({position:"absolute",top:o.top,left:o.left,"min-width":o.width})}),i.each(function(){var e=t.$(this),o=(e.data("offset-before"),e.data("offset-after"));e.css("pointer-events","none").width(),setTimeout(function(){e.animate({top:o.top,left:o.left},s.options.animation,function(){e.css({position:"",top:"",left:"","min-width":"","pointer-events":""}).removeClass(s.options.overClass).removeData("child-dragenter"),d--,d||(a.css("min-height",""),t.Utils.checkDisplay(s.element.parent()))})},0)}),void 0):(n.parentNode.insertBefore(e,r),t.Utils.checkDisplay(s.element.parent()),void 0)},serialize:function(){var e,o,n=[];return this.element.children().each(function(s,a){e={};for(var r,i,l=0;l<a.attributes.length;l++)o=a.attributes[l],0===o.name.indexOf("data-")&&(r=o.name.substr(5),i=t.Utils.str2json(o.value),e[r]=i||"false"==o.value||"0"==o.value?i:o.value);n.push(e)}),n},checkEmptyList:function(e){e=e?t.$(e):this.element,this.options.emptyClass&&e[e.children().length?"removeClass":"addClass"](this.options.emptyClass)}}),t.sortable}); | ||
| 0 | \ No newline at end of file | 3 | \ No newline at end of file |
src/main/resources/static/real_control_v2/css/electron.css
0 → 100644
| 1 | +/** 在electron 环境下特定的css样式 */ | ||
| 2 | + | ||
| 3 | +.north{ | ||
| 4 | + height: 160px !important; | ||
| 5 | +} | ||
| 6 | + | ||
| 7 | +.north-toolbar{ | ||
| 8 | + width: 582px !important; | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +.north>div.uk-grid.uk-grid-match{ | ||
| 12 | + margin-top: 35px; | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +.main-container { | ||
| 17 | + height: calc(100% - 160px) !important; | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +.uk-navbar-content .icon-item{ | ||
| 21 | + display: inline-block; | ||
| 22 | + margin: 6px 3px 7px 0; | ||
| 23 | + font-size: 16px; | ||
| 24 | + vertical-align: middle; | ||
| 25 | + padding: 5px; | ||
| 26 | + cursor: pointer; | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +.uk-navbar-content .icon-item:hover{ | ||
| 30 | + box-shadow: 0 4px 7px 0 rgba(0, 0, 0, 0.2), 0 3px 2px 0 rgba(0, 0, 0, 0.19); | ||
| 31 | +} | ||
| 32 | + |
src/main/resources/static/real_control_v2/css/home.css
| @@ -245,14 +245,14 @@ span.signal-state-outbounds{ | @@ -245,14 +245,14 @@ span.signal-state-outbounds{ | ||
| 245 | color: #d42727; | 245 | color: #d42727; |
| 246 | padding: 2px 3px; | 246 | padding: 2px 3px; |
| 247 | border-radius: 3px; | 247 | border-radius: 3px; |
| 248 | - font-size: 11px; | 248 | + font-size: 12px; |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | span.signal-state-speed-limit{ | 251 | span.signal-state-speed-limit{ |
| 252 | color: red; | 252 | color: red; |
| 253 | padding: 2px 3px; | 253 | padding: 2px 3px; |
| 254 | border-radius: 3px; | 254 | border-radius: 3px; |
| 255 | - font-size: 11px; | 255 | + font-size: 12px; |
| 256 | } | 256 | } |
| 257 | 257 | ||
| 258 | .home-svg-edit-icon{ | 258 | .home-svg-edit-icon{ |
src/main/resources/static/real_control_v2/css/main.css
| @@ -711,61 +711,6 @@ li.map-panel { | @@ -711,61 +711,6 @@ li.map-panel { | ||
| 711 | width: 33%; | 711 | width: 33%; |
| 712 | } | 712 | } |
| 713 | 713 | ||
| 714 | -/* | ||
| 715 | -#schedule-lp_change-modal .sch-list { | ||
| 716 | - margin-top: 25px; | ||
| 717 | -} | ||
| 718 | - | ||
| 719 | -#schedule-lp_change-modal .sch-list .sch-item dl { | ||
| 720 | - font-size: 0; | ||
| 721 | - border-bottom: 1px solid #e1dbdb; | ||
| 722 | - margin: 7px 0; | ||
| 723 | -} | ||
| 724 | - | ||
| 725 | -#schedule-lp_change-modal .sch-list .sch-item dl dd { | ||
| 726 | - font-size: 14px; | ||
| 727 | - display: inline-block; | ||
| 728 | - line-height: 35px; | ||
| 729 | - text-align: center; | ||
| 730 | - border-right: 1px dashed #e1dbdb; | ||
| 731 | -} | ||
| 732 | - | ||
| 733 | -#schedule-lp_change-modal .sch-list .sch-item dl dd:nth-of-type(1) { | ||
| 734 | - width: 33%; | ||
| 735 | -} | ||
| 736 | - | ||
| 737 | -#schedule-lp_change-modal .sch-list .sch-item dl dd:nth-of-type(2) { | ||
| 738 | - width: 33%; | ||
| 739 | -} | ||
| 740 | - | ||
| 741 | -#schedule-lp_change-modal .sch-list .sch-item dl dd:nth-of-type(3) { | ||
| 742 | - width: 17%; | ||
| 743 | -} | ||
| 744 | - | ||
| 745 | -#schedule-lp_change-modal .sch-list .sch-item dl dd:nth-of-type(4) { | ||
| 746 | - width: 15%; | ||
| 747 | - border-right:0; | ||
| 748 | -} | ||
| 749 | - | ||
| 750 | - | ||
| 751 | -#schedule-lp_change-modal .sch-list .sch-item.reverse dl dd:nth-of-type(1) { | ||
| 752 | - width: 15%; | ||
| 753 | -} | ||
| 754 | - | ||
| 755 | -#schedule-lp_change-modal .sch-list .sch-item.reverse dl dd:nth-of-type(2) { | ||
| 756 | - width: 17%; | ||
| 757 | -} | ||
| 758 | - | ||
| 759 | -#schedule-lp_change-modal .sch-list .sch-item.reverse dl dd:nth-of-type(3) { | ||
| 760 | - width: 33%; | ||
| 761 | -} | ||
| 762 | - | ||
| 763 | -#schedule-lp_change-modal .sch-list .sch-item.reverse dl dd:nth-of-type(4) { | ||
| 764 | - width: 33%; | ||
| 765 | - border-right:0; | ||
| 766 | -}*/ | ||
| 767 | - | ||
| 768 | - | ||
| 769 | #schedule-lp_change-modal .sch-list dl dd { | 714 | #schedule-lp_change-modal .sch-list dl dd { |
| 770 | font-size: 14px; | 715 | font-size: 14px; |
| 771 | } | 716 | } |
| @@ -791,7 +736,6 @@ li.map-panel { | @@ -791,7 +736,6 @@ li.map-panel { | ||
| 791 | width: 15%; | 736 | width: 15%; |
| 792 | } | 737 | } |
| 793 | 738 | ||
| 794 | - | ||
| 795 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) { | 739 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) { |
| 796 | width: 9%; | 740 | width: 9%; |
| 797 | border-left: 1px solid #dedede; | 741 | border-left: 1px solid #dedede; |
| @@ -812,3 +756,23 @@ li.map-panel { | @@ -812,3 +756,23 @@ li.map-panel { | ||
| 812 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(5) { | 756 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(5) { |
| 813 | width: 30%; | 757 | width: 30%; |
| 814 | } | 758 | } |
| 759 | + | ||
| 760 | +#schedule-lp_change-modal .ct_table.sch-list .ct_table_body dl.active { | ||
| 761 | + background: #b9d2ff; | ||
| 762 | +} | ||
| 763 | + | ||
| 764 | +#schedule-lp_change-modal .ct_table.sch-list .ct_table_body dl.active dd { | ||
| 765 | + border-top: 1px solid #b9d2ff; | ||
| 766 | +} | ||
| 767 | + | ||
| 768 | +#schedule-lp_change-modal .ct_table.sch-list dl.active input[type=checkbox] { | ||
| 769 | + border: none; | ||
| 770 | +} | ||
| 771 | + | ||
| 772 | +#schedule-lp_change-modal .ct_table.sch-list.reverse .ct_table_body dl.active { | ||
| 773 | + background: #ffe2b9; | ||
| 774 | +} | ||
| 775 | + | ||
| 776 | +#schedule-lp_change-modal .ct_table.sch-list.reverse .ct_table_body dl.active dd { | ||
| 777 | + border-top: 1px solid #ffe2b9; | ||
| 778 | +} |
src/main/resources/static/real_control_v2/electron/lineSelect.html
0 → 100644
| 1 | +<!DOCTYPE html> | ||
| 2 | +<html lang="zh"> | ||
| 3 | +<head> | ||
| 4 | + <meta name="renderer" content="webkit"/> | ||
| 5 | + <meta charset="utf-8"/> | ||
| 6 | + <title>选择线路</title> | ||
| 7 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css"/> | ||
| 8 | + <link rel="stylesheet" | ||
| 9 | + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/form-advanced.gradient.min.css"/> | ||
| 10 | + | ||
| 11 | + <link rel="stylesheet" | ||
| 12 | + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sortable.gradient.min.css"/> | ||
| 13 | + | ||
| 14 | + <style type="text/css"> | ||
| 15 | + | ||
| 16 | + ::-webkit-scrollbar { | ||
| 17 | + width: 16px; | ||
| 18 | + height: 16px; | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + ::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb { | ||
| 22 | + border-radius: 999px; | ||
| 23 | + border: 5px solid transparent; | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + ::-webkit-scrollbar-track { | ||
| 27 | + box-shadow: 1px 1px 5px rgba(0, 0, 0, .2) inset; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + ::-webkit-scrollbar-thumb { | ||
| 31 | + min-height: 20px; | ||
| 32 | + background-clip: content-box; | ||
| 33 | + box-shadow: 0 0 0 5px rgba(0, 0, 0, .2) inset; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + ::-webkit-scrollbar-corner { | ||
| 37 | + background: transparent; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + input[type="checkbox"] { | ||
| 41 | + vertical-align: bottom; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + .line-btn-list { | ||
| 45 | + padding: 0 15px 15px 15px; | ||
| 46 | + height: 180px; | ||
| 47 | + overflow: auto; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + .line-btn-list-selected { | ||
| 51 | + padding: 0 15px 15px 15px; | ||
| 52 | + height: 35px; | ||
| 53 | + overflow: auto; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + .line-btn-list span.line-item { | ||
| 57 | + border: 1px solid #e0dfdf; | ||
| 58 | + padding: 4px 9px; | ||
| 59 | + margin: 5px; | ||
| 60 | + -webkit-user-select: none; | ||
| 61 | + user-select: none; | ||
| 62 | + display: inline-block; | ||
| 63 | + cursor: default; | ||
| 64 | + transition: all .1s; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + .line-btn-list span.line-item.active { | ||
| 68 | + background: #5E96D2; | ||
| 69 | + border: 1px solid #5E96D2; | ||
| 70 | + box-shadow: 0px 3px 4px 0 rgba(111, 172, 237, 0.3), 0px 3px 5px 0 rgba(111, 172, 237, 0.3); | ||
| 71 | + color: #ffffff; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + input.i-cbox[type=checkbox] { | ||
| 75 | + vertical-align: middle; | ||
| 76 | + margin-top: -3px; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + .line-btn-list span.line-item.active input.i-cbox[type=checkbox] { | ||
| 80 | + border: 0; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + .line-btn-list span.line-item.active input.i-cbox[type=checkbox]:checked:before { | ||
| 84 | + color: #86f78b; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + .uk-panel-title { | ||
| 88 | + text-indent: 15px; | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + .line-btn-list-selected span.line-item { | ||
| 92 | + padding: 4px 9px; | ||
| 93 | + margin: 2px; | ||
| 94 | + color: #fff; | ||
| 95 | + background: #5e96d2; | ||
| 96 | + box-shadow: 0px 3px 4px 0 rgba(111, 172, 237, 0.3), 0px 3px 5px 0 rgba(111, 172, 237, 0.3); | ||
| 97 | + user-select: none; | ||
| 98 | + display: inline-block; | ||
| 99 | + cursor: move; | ||
| 100 | + border-radius: 5px; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + #lineSearchInput { | ||
| 104 | + width: 300px; | ||
| 105 | + box-shadow: 0px 3px 4px 0 rgba(217, 226, 235, 0.3), 0px 3px 5px 0 rgba(200, 217, 236, 0.3); | ||
| 106 | + height: 35px; | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + #submitBtn{ | ||
| 110 | + border-radius: 0; | ||
| 111 | + border-color: #00aff2; | ||
| 112 | + transition: all .3s; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + #submitBtn:disabled{ | ||
| 116 | + border-color: #ebe9e9; | ||
| 117 | + } | ||
| 118 | + </style> | ||
| 119 | +</head> | ||
| 120 | + | ||
| 121 | +<body> | ||
| 122 | +<div class="wrapper ng-scope"> | ||
| 123 | + <div class="dialog dialog-shadow"> | ||
| 124 | + <form class="uk-form" style="width: 100%;"> | ||
| 125 | + <div class="uk-grid"> | ||
| 126 | + | ||
| 127 | + <div class="uk-width-medium-1-1"> | ||
| 128 | + <div class="uk-panel uk-panel-divider"> | ||
| 129 | + <div class="uk-form-row"> | ||
| 130 | + <div class="uk-form-icon" style="margin: 15px;"> | ||
| 131 | + <i class="uk-icon-search"></i> | ||
| 132 | + <input type="text" placeholder="搜索线路..." id="lineSearchInput"> | ||
| 133 | + </div> | ||
| 134 | + </div> | ||
| 135 | + <h3 class="uk-panel-title">待选择的线路</h3> | ||
| 136 | + <div class="line-btn-list"> | ||
| 137 | + </div> | ||
| 138 | + </div> | ||
| 139 | + <div class="uk-panel uk-panel-divider"> | ||
| 140 | + <h3 class="uk-panel-title">已选择的线路</h3> | ||
| 141 | + <div class="line-btn-list-selected uk-sortable" data-uk-sortable data-uk-observe> | ||
| 142 | + </div> | ||
| 143 | + <button disabled class="uk-button uk-button-primary uk-button-large uk-width-1-1" type="button" id="submitBtn">确定 | ||
| 144 | + </button> | ||
| 145 | + </div> | ||
| 146 | + </div> | ||
| 147 | + | ||
| 148 | + </div> | ||
| 149 | + </form> | ||
| 150 | + | ||
| 151 | + </div> | ||
| 152 | +</div> | ||
| 153 | + | ||
| 154 | +<script> | ||
| 155 | + delete window.exports; | ||
| 156 | + delete window.module; | ||
| 157 | +</script> | ||
| 158 | +<!-- jQuery --> | ||
| 159 | +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script> | ||
| 160 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js"></script> | ||
| 161 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sortable.min.js"></script> | ||
| 162 | +<script src="/assets/plugins/pinyin.js"></script> | ||
| 163 | +<script src="/real_control_v2/js/common.js"></script> | ||
| 164 | + | ||
| 165 | +<!-- EventProxy --> | ||
| 166 | +<script src="/assets/js/eventproxy.js"></script> | ||
| 167 | +<script> | ||
| 168 | + if (typeof(process) == 'undefined' || !process) { | ||
| 169 | + alert('不支持当前环境!!'); | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + const ipcMain = require('electron').ipcRenderer | ||
| 173 | + | ||
| 174 | + !function () { | ||
| 175 | + var all = {}; | ||
| 176 | + //线路编码映射 | ||
| 177 | + var lineIdMap = {}; | ||
| 178 | + var storage = window.localStorage; | ||
| 179 | + | ||
| 180 | + gb_common.$get('/line/all', {destroy_eq: 0}, function (list) { | ||
| 181 | + var htmlStr = ''; | ||
| 182 | + $.each(list, function () { | ||
| 183 | + htmlStr += '<span class="line-item" data-name="' + this.name + '" data-code="' + this.lineCode + '">' + | ||
| 184 | + ' <input class="i-cbox" type="checkbox"> ' + this.name + | ||
| 185 | + '</span>'; | ||
| 186 | + | ||
| 187 | + //拼音首字母 | ||
| 188 | + this.camelChars = pinyin.getCamelChars(this.name); | ||
| 189 | + //全拼 | ||
| 190 | + this.fullChars = pinyin.getFullChars(this.name).toUpperCase(); | ||
| 191 | + | ||
| 192 | + lineIdMap[this.lineCode] = this; | ||
| 193 | + }); | ||
| 194 | + all = list; | ||
| 195 | + | ||
| 196 | + $('.line-btn-list').html(htmlStr); | ||
| 197 | + | ||
| 198 | + $('.line-btn-list .line-item').on('click', function () { | ||
| 199 | + var box = $(this).find('input[type=checkbox]')[0]; | ||
| 200 | + if ($(this).hasClass('active')) { | ||
| 201 | + $(this).removeClass('active'); | ||
| 202 | + box.checked = false; | ||
| 203 | + | ||
| 204 | + removeSelected(this); | ||
| 205 | + } | ||
| 206 | + else { | ||
| 207 | + $(this).addClass('active'); | ||
| 208 | + box.checked = true; | ||
| 209 | + | ||
| 210 | + addSelected(this); | ||
| 211 | + } | ||
| 212 | + }); | ||
| 213 | + }); | ||
| 214 | + | ||
| 215 | + | ||
| 216 | + $('#lineSearchInput').on('input', function () { | ||
| 217 | + var t = $(this).val().toUpperCase(); | ||
| 218 | + if (!t) { | ||
| 219 | + $('.line-btn-list .line-item').show(); | ||
| 220 | + return; | ||
| 221 | + } | ||
| 222 | + | ||
| 223 | + var rs = []; | ||
| 224 | + $.each(all, function () { | ||
| 225 | + if (this.camelChars.indexOf(t) != -1 | ||
| 226 | + || this.fullChars.indexOf(t) != -1 | ||
| 227 | + || this.name.indexOf(t) != -1) { | ||
| 228 | + rs.push(this.lineCode); | ||
| 229 | + } | ||
| 230 | + }); | ||
| 231 | + | ||
| 232 | + $('.line-btn-list .line-item').hide().each(function () { | ||
| 233 | + var code = $(this).data('code') + ''; | ||
| 234 | + if (rs.indexOf(code) != -1) | ||
| 235 | + $(this).show(); | ||
| 236 | + }); | ||
| 237 | + }); | ||
| 238 | + | ||
| 239 | + function addSelected(that) { | ||
| 240 | + $('.line-btn-list-selected').append('<span class="line-item" data-code="' + $(that).data('code') + '">' + $(that).data('name') + '</span>'); | ||
| 241 | + | ||
| 242 | + $('#submitBtn').removeAttr('disabled'); | ||
| 243 | + } | ||
| 244 | + | ||
| 245 | + function removeSelected(that) { | ||
| 246 | + var code = $(that).data('code'); | ||
| 247 | + $('.line-btn-list-selected .line-item[data-code='+code+']').remove(); | ||
| 248 | + | ||
| 249 | + if($('.line-btn-list-selected .line-item').length == 0){ | ||
| 250 | + $('#submitBtn').attr('disabled', 'disabled'); | ||
| 251 | + } | ||
| 252 | + } | ||
| 253 | + | ||
| 254 | + function error(rs) { | ||
| 255 | + return rs.status == 'ERROR' || rs.status == 500; | ||
| 256 | + } | ||
| 257 | + | ||
| 258 | + /** | ||
| 259 | + * 确定 | ||
| 260 | + */ | ||
| 261 | + $('#submitBtn').on('click', function () { | ||
| 262 | + var ep = EventProxy.create('car2DeviceId', 'routes', 'checkLineConfig', function () { | ||
| 263 | + ipcMain.send('webPageGotoControl'); | ||
| 264 | + }); | ||
| 265 | + | ||
| 266 | + var lsData = [], codeStr='', code; | ||
| 267 | + $('.line-btn-list-selected .line-item').each(function () { | ||
| 268 | + code = $(this).data('code'); | ||
| 269 | + lsData.push(lineIdMap[code]); | ||
| 270 | + codeStr += (code + ','); | ||
| 271 | + }); | ||
| 272 | + //将选择的线路信息写入localstorage | ||
| 273 | + storage.setItem('lineControlItems', JSON.stringify(lsData)); | ||
| 274 | + | ||
| 275 | + //缓存车辆自编号和设备号对照 | ||
| 276 | + $.get('/gps/Car2DeviceId', function (rs) { | ||
| 277 | + storage.setItem('car2DeviceId', JSON.stringify(rs)); | ||
| 278 | + ep.emitLater('car2DeviceId'); | ||
| 279 | + }); | ||
| 280 | + | ||
| 281 | + //缓存线路路由 | ||
| 282 | + codeStr = codeStr.substr(0, codeStr.length - 1); | ||
| 283 | + $.get('/realMap/multiRouteByLine', {codeStr: codeStr}, function (rs) { | ||
| 284 | + for(var key in rs){ | ||
| 285 | + storage.setItem(key, JSON.stringify(rs[key])); | ||
| 286 | + } | ||
| 287 | + ep.emitLater('routes'); | ||
| 288 | + }); | ||
| 289 | + | ||
| 290 | + //检查线路配置信息 | ||
| 291 | + $.ajax({ | ||
| 292 | + url: '/lineConfig/check', | ||
| 293 | + traditional: true, | ||
| 294 | + data: {codeArray: codeStr.split(',')}, | ||
| 295 | + method: 'POST', | ||
| 296 | + success: function (rs) { | ||
| 297 | + if (rs.status == 0){ | ||
| 298 | + ep.emitLater('checkLineConfig'); | ||
| 299 | + } | ||
| 300 | + else if (rs.status == 1){ | ||
| 301 | + initLineConfig(rs.not, function () { | ||
| 302 | + ep.emitLater('checkLineConfig'); | ||
| 303 | + }); | ||
| 304 | + } | ||
| 305 | + } | ||
| 306 | + }); | ||
| 307 | + }); | ||
| 308 | + | ||
| 309 | + | ||
| 310 | + function initLineConfig(arr, cb) { | ||
| 311 | + var i = 0; | ||
| 312 | + (function () { | ||
| 313 | + if (i >= arr.length) { | ||
| 314 | + cb && cb(); | ||
| 315 | + return; | ||
| 316 | + } | ||
| 317 | + var f = arguments.callee | ||
| 318 | + , lineCode = arr[i]; | ||
| 319 | + | ||
| 320 | + $.post('/lineConfig/init/' + lineCode, function (rs) { | ||
| 321 | + if (rs == 1) { | ||
| 322 | + i++; | ||
| 323 | + f(); | ||
| 324 | + } | ||
| 325 | + }); | ||
| 326 | + })(); | ||
| 327 | + } | ||
| 328 | + }(); | ||
| 329 | +</script> | ||
| 330 | +</body> | ||
| 331 | +</html> | ||
| 0 | \ No newline at end of file | 332 | \ No newline at end of file |
src/main/resources/static/real_control_v2/electron/login.html
0 → 100644
| 1 | +<!DOCTYPE html> | ||
| 2 | +<html lang="zh"> | ||
| 3 | +<head> | ||
| 4 | + <meta name="renderer" content="webkit"/> | ||
| 5 | + <meta charset="utf-8"/> | ||
| 6 | + <title>登录</title> | ||
| 7 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css"/> | ||
| 8 | + | ||
| 9 | + <style type="text/css"> | ||
| 10 | + body { | ||
| 11 | + overflow: hidden; | ||
| 12 | + } | ||
| 13 | + | ||
| 14 | + hr { | ||
| 15 | + margin: 20px 0; | ||
| 16 | + border: 0; | ||
| 17 | + border-top: 1px solid #eee; | ||
| 18 | + border-bottom: 0; | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + .uk-form-icon, input { | ||
| 22 | + width: 100%; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + input { | ||
| 26 | + height: 48px; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + input:focus{ | ||
| 30 | + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + #loginPanel{ | ||
| 34 | + background: linear-gradient(to bottom, #ffffff, #b5c0c7, #3b4044); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + </style> | ||
| 38 | +</head> | ||
| 39 | + | ||
| 40 | +<body> | ||
| 41 | +<div class="wrapper ng-scope"> | ||
| 42 | + <div id="loginPanel" class="dialog dialog-shadow"> | ||
| 43 | + <div class="uk-grid"> | ||
| 44 | + <div class="uk-width-5-10"> | ||
| 45 | + </div> | ||
| 46 | + <div class="uk-width-5-10"> | ||
| 47 | + <div class="uk-panel" style="padding: 56px 25px 36px 0;"> | ||
| 48 | + <form class="uk-form"> | ||
| 49 | + <div class="uk-form-row"> | ||
| 50 | + <div class="uk-form-icon"> | ||
| 51 | + <i class="uk-icon-user"></i> | ||
| 52 | + <input autofocus class="uk-form-large" name="userName" type="text" placeholder="输入用户名"> | ||
| 53 | + </div> | ||
| 54 | + </div> | ||
| 55 | + | ||
| 56 | + <div class="uk-form-row"> | ||
| 57 | + <div class="uk-form-icon"> | ||
| 58 | + <i class="uk-icon-key"></i> | ||
| 59 | + <input class="uk-form-large" name="password" type="password" placeholder="输入密码"> | ||
| 60 | + </div> | ||
| 61 | + </div> | ||
| 62 | + | ||
| 63 | + <br> | ||
| 64 | + <br> | ||
| 65 | + <div class="uk-form-row"> | ||
| 66 | + <button id="loginBtn" class="uk-button uk-button-primary uk-button-large uk-width-1-1" | ||
| 67 | + >登录 | ||
| 68 | + </button> | ||
| 69 | + </div> | ||
| 70 | + </form> | ||
| 71 | + </div> | ||
| 72 | + </div> | ||
| 73 | + </div> | ||
| 74 | + </div> | ||
| 75 | +</div> | ||
| 76 | + | ||
| 77 | +<script> | ||
| 78 | + delete window.exports; | ||
| 79 | + delete window.module; | ||
| 80 | +</script> | ||
| 81 | +<!-- jQuery --> | ||
| 82 | +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script> | ||
| 83 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js"></script> | ||
| 84 | +<script src="/assets/plugins/jsencrypt.min.js"></script> | ||
| 85 | +<script> | ||
| 86 | + //if() process | ||
| 87 | + if(typeof(process)=='undefined' || !process){ | ||
| 88 | + alert('不支持当前环境!!'); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + const ipcMain = require('electron').ipcRenderer | ||
| 92 | + | ||
| 93 | + !function () { | ||
| 94 | + var form = $('#loginPanel form') | ||
| 95 | + , nameInput = $('input[name=userName]', form) | ||
| 96 | + , pwdInput = $('input[name=password]', form); | ||
| 97 | + | ||
| 98 | + var keys; | ||
| 99 | + $('#loginBtn').on('click', function (e) { | ||
| 100 | + e.stopPropagation(); | ||
| 101 | + try { | ||
| 102 | + var userName = nameInput.val() | ||
| 103 | + , pwd = pwdInput.val(); | ||
| 104 | + | ||
| 105 | + if(!userName || $.trim(userName)==''){ | ||
| 106 | + alert('请输入用户名!!'); | ||
| 107 | + return false; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + if(!pwd || $.trim(pwd)==''){ | ||
| 111 | + alert('请输入密码!!'); | ||
| 112 | + return false; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + //获取keys | ||
| 116 | + $.get('/user/login/jCryptionKey?t=' + Math.random(), function (data) { | ||
| 117 | + keys = data.publickey; | ||
| 118 | + | ||
| 119 | + //RSA加密 | ||
| 120 | + var encrypt = new JSEncrypt(); | ||
| 121 | + encrypt.setPublicKey(keys); | ||
| 122 | + userName = encrypt.encrypt(userName); | ||
| 123 | + pwd = encrypt.encrypt(pwd); | ||
| 124 | + //登录 | ||
| 125 | + login(userName, pwd); | ||
| 126 | + }); | ||
| 127 | + } | ||
| 128 | + catch (e) { | ||
| 129 | + console.log(e); | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + return false; | ||
| 133 | + }); | ||
| 134 | + | ||
| 135 | + | ||
| 136 | + function login(userName, pwd) { | ||
| 137 | + var params = { | ||
| 138 | + userName: userName, | ||
| 139 | + password: pwd | ||
| 140 | + }; | ||
| 141 | + $.post('/user/login', params | ||
| 142 | + , function (rs) { | ||
| 143 | + if (error(rs)) { | ||
| 144 | + $('#loginBtn').removeAttr('disabled'); | ||
| 145 | + alert(rs.msg); | ||
| 146 | + } | ||
| 147 | + else { | ||
| 148 | + ipcMain.send('webPageLoginSuccess'); | ||
| 149 | + } | ||
| 150 | + }); | ||
| 151 | + } | ||
| 152 | + | ||
| 153 | + function error(rs) { | ||
| 154 | + return rs.status == 'ERROR' || rs.status == 500; | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + }(); | ||
| 158 | +</script> | ||
| 159 | +</body> | ||
| 160 | +</html> | ||
| 0 | \ No newline at end of file | 161 | \ No newline at end of file |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lp_change.html
| @@ -68,25 +68,25 @@ | @@ -68,25 +68,25 @@ | ||
| 68 | 68 | ||
| 69 | <script id="schedule-lp_change-list-temp" type="text/html"> | 69 | <script id="schedule-lp_change-list-temp" type="text/html"> |
| 70 | {{if order == 0}} | 70 | {{if order == 0}} |
| 71 | - {{each array as sch i}} | ||
| 72 | - <dl> | ||
| 73 | - <dd><input type="checkbox"></dd> | ||
| 74 | - <dd>{{sch.jGh}}/{{sch.jName}}</dd> | ||
| 75 | - <dd>{{sch.clZbh}}</dd> | ||
| 76 | - <dd>{{sch.lpName}}</dd> | ||
| 77 | - <dd>{{sch.dfsj}}</dd> | ||
| 78 | - </dl> | ||
| 79 | - {{/each}} | 71 | + {{each array as sch i}} |
| 72 | + <dl> | ||
| 73 | + <dd><input type="checkbox"></dd> | ||
| 74 | + <dd>{{sch.jGh}}/{{sch.jName}}</dd> | ||
| 75 | + <dd>{{sch.clZbh}}</dd> | ||
| 76 | + <dd>{{sch.lpName}}</dd> | ||
| 77 | + <dd>{{sch.dfsj}}</dd> | ||
| 78 | + </dl> | ||
| 79 | + {{/each}} | ||
| 80 | {{else if order == 1}} | 80 | {{else if order == 1}} |
| 81 | - {{each array as sch i}} | ||
| 82 | - <dl> | ||
| 83 | - <dd><input type="checkbox"></dd> | ||
| 84 | - <dd>{{sch.dfsj}}</dd> | ||
| 85 | - <dd>{{sch.lpName}}</dd> | ||
| 86 | - <dd>{{sch.clZbh}}</dd> | ||
| 87 | - <dd>{{sch.jGh}}/{{sch.jName}}</dd> | ||
| 88 | - </dl> | ||
| 89 | - {{/each}} | 81 | + {{each array as sch i}} |
| 82 | + <dl> | ||
| 83 | + <dd><input type="checkbox"></dd> | ||
| 84 | + <dd>{{sch.dfsj}}</dd> | ||
| 85 | + <dd>{{sch.lpName}}</dd> | ||
| 86 | + <dd>{{sch.clZbh}}</dd> | ||
| 87 | + <dd>{{sch.jGh}}/{{sch.jName}}</dd> | ||
| 88 | + </dl> | ||
| 89 | + {{/each}} | ||
| 90 | {{/if}} | 90 | {{/if}} |
| 91 | </script> | 91 | </script> |
| 92 | 92 | ||
| @@ -102,15 +102,15 @@ | @@ -102,15 +102,15 @@ | ||
| 102 | //线路切换事件 | 102 | //线路切换事件 |
| 103 | $('[name=lineSelect]', modal).on('change', function () { | 103 | $('[name=lineSelect]', modal).on('change', function () { |
| 104 | var order = $(this).data('order') | 104 | var order = $(this).data('order') |
| 105 | - ,lineCode = $(this).val(); | 105 | + , lineCode = $(this).val(); |
| 106 | 106 | ||
| 107 | var array = gb_common.get_vals(gb_schedule_table.findScheduleByLine(lineCode)); | 107 | var array = gb_common.get_vals(gb_schedule_table.findScheduleByLine(lineCode)); |
| 108 | //按路牌分组 | 108 | //按路牌分组 |
| 109 | list[order] = gb_common.groupBy(array, 'lpName'); | 109 | list[order] = gb_common.groupBy(array, 'lpName'); |
| 110 | //设置路牌下拉框 | 110 | //设置路牌下拉框 |
| 111 | - var lpSelect = $(this).next('select'), ops=''; | 111 | + var lpSelect = $(this).next('select'), ops = ''; |
| 112 | $.each(gb_common.get_keys(list[order]), function (i, lp) { | 112 | $.each(gb_common.get_keys(list[order]), function (i, lp) { |
| 113 | - ops += '<option value="'+lp+'">'+lp+'</option>'; | 113 | + ops += '<option value="' + lp + '">' + lp + '</option>'; |
| 114 | }); | 114 | }); |
| 115 | lpSelect.html(ops); | 115 | lpSelect.html(ops); |
| 116 | }); | 116 | }); |
| @@ -118,7 +118,7 @@ | @@ -118,7 +118,7 @@ | ||
| 118 | //路牌切换事件 | 118 | //路牌切换事件 |
| 119 | $('[name=lpName]', modal).on('change', function () { | 119 | $('[name=lpName]', modal).on('change', function () { |
| 120 | var order = $(this).data('order') | 120 | var order = $(this).data('order') |
| 121 | - ,lp = $(this).val(); | 121 | + , lp = $(this).val(); |
| 122 | 122 | ||
| 123 | var htmlStr = template('schedule-lp_change-list-temp', {array: list[order][lp], order: order}); | 123 | var htmlStr = template('schedule-lp_change-list-temp', {array: list[order][lp], order: order}); |
| 124 | $('.sch-list .ct_table_body', modal).eq(order).html(htmlStr); | 124 | $('.sch-list .ct_table_body', modal).eq(order).html(htmlStr); |
| @@ -131,7 +131,43 @@ | @@ -131,7 +131,43 @@ | ||
| 131 | lineOps += '<option value="' + this.lineCode + '">' + this.name + '</option>'; | 131 | lineOps += '<option value="' + this.lineCode + '">' + this.name + '</option>'; |
| 132 | }); | 132 | }); |
| 133 | $('[name=lineSelect]', modal).html(lineOps); | 133 | $('[name=lineSelect]', modal).html(lineOps); |
| 134 | + | ||
| 135 | + //左默认线路路牌 | ||
| 136 | + $('[name=lineSelect]:eq(0)', modal).val(sch.xlBm).trigger('change'); | ||
| 137 | + //左默认路牌 | ||
| 138 | + $('[name=lpName]:eq(0)', modal).val(sch.lpName).trigger('change'); | ||
| 134 | }); | 139 | }); |
| 140 | + | ||
| 141 | + //选中事件 | ||
| 142 | + $(modal).on('click', '.sch-list input[type=checkbox]', function (e) { | ||
| 143 | + e.stopPropagation(); | ||
| 144 | + var dl = $(this).parents('dl'); | ||
| 145 | + if (this.checked) | ||
| 146 | + activeDl(dl); | ||
| 147 | + else | ||
| 148 | + cancelActiveDl(dl); | ||
| 149 | + }); | ||
| 150 | + | ||
| 151 | + $(modal).on('click', '.sch-list dl', function (e) { | ||
| 152 | + e.stopPropagation(); | ||
| 153 | + var cbox = $(this).find('input[type=checkbox]')[0]; | ||
| 154 | + if (!$(this).hasClass('active')) { | ||
| 155 | + activeDl($(this)); | ||
| 156 | + cbox.checked = true; | ||
| 157 | + } | ||
| 158 | + else { | ||
| 159 | + cancelActiveDl($(this)); | ||
| 160 | + cbox.checked = false; | ||
| 161 | + } | ||
| 162 | + }); | ||
| 163 | + | ||
| 164 | + function activeDl(dl) { | ||
| 165 | + dl.addClass('active'); | ||
| 166 | + } | ||
| 167 | + | ||
| 168 | + function cancelActiveDl(dl) { | ||
| 169 | + dl.removeClass('active'); | ||
| 170 | + } | ||
| 135 | })(); | 171 | })(); |
| 136 | </script> | 172 | </script> |
| 137 | </div> | 173 | </div> |
src/main/resources/static/real_control_v2/fragments/north/toolbar.html
| @@ -63,4 +63,73 @@ | @@ -63,4 +63,73 @@ | ||
| 63 | </nav> | 63 | </nav> |
| 64 | </div> | 64 | </div> |
| 65 | </script> | 65 | </script> |
| 66 | + | ||
| 67 | + <script id="north-toolbar-electron-temp" type="text/html"> | ||
| 68 | + <div class="uk-margin" id="north_toolbar_panel"> | ||
| 69 | + <nav class="uk-navbar"> | ||
| 70 | + <a class="uk-navbar-brand" > | ||
| 71 | + <span><i class="uk-icon-user"></i> <span id="north_toolbar_user">{{user.userName}}</span>,在线</span><i class="uk-icon-ellipsis-v"></i> | ||
| 72 | + </a> | ||
| 73 | + <ul class="uk-navbar-nav"> | ||
| 74 | + {{each list as obj i}} | ||
| 75 | + <li class="uk-parent " data-uk-dropdown="{{if obj.columns}}{pos:'top-right'}{{/if}}" aria-haspopup="true" aria-expanded="false"> | ||
| 76 | + <a>{{obj.text}} <i class="uk-icon-caret-down"></i></a> | ||
| 77 | + {{if obj.children != null}} | ||
| 78 | + <div class="uk-dropdown uk-dropdown-navbar uk-dropdown-bottom" style="top: 40px; left: 0px;"> | ||
| 79 | + <ul class="uk-nav uk-nav-navbar"> | ||
| 80 | + {{each obj.children as c j}} | ||
| 81 | + {{if c.header}} | ||
| 82 | + <li class="uk-nav-header">{{c.text}}</li> | ||
| 83 | + | ||
| 84 | + {{else if c.divider}} | ||
| 85 | + <li class="uk-nav-divider"></li> | ||
| 86 | + {{else}} | ||
| 87 | + <li class="event"><a data-event="{{c.event}}">{{c.text}}</a></li> | ||
| 88 | + {{/if}} | ||
| 89 | + {{/each}} | ||
| 90 | + </ul> | ||
| 91 | + </div> | ||
| 92 | + {{else if obj.columns}} | ||
| 93 | + <div class="uk-dropdown {{obj.clazz}}"> | ||
| 94 | + <div class="uk-grid uk-dropdown-grid"> | ||
| 95 | + {{each obj.grid as cls s}} | ||
| 96 | + <div class="{{obj.cls_class}}"> | ||
| 97 | + <ul class="uk-nav uk-nav-dropdown uk-panel"> | ||
| 98 | + {{each cls as c z}} | ||
| 99 | + {{if c.header}} | ||
| 100 | + <li class="uk-nav-header">{{c.text}}</li> | ||
| 101 | + | ||
| 102 | + {{else if c.divider}} | ||
| 103 | + <li class="uk-nav-divider"></li> | ||
| 104 | + {{else}} | ||
| 105 | + <li class="event"> | ||
| 106 | + <a data-event="{{c.event}}"> | ||
| 107 | + {{if c.icon != null}} | ||
| 108 | + <i class="{{c.icon}}"></i> | ||
| 109 | + {{/if}} | ||
| 110 | + {{c.text}}</a> | ||
| 111 | + </li> | ||
| 112 | + {{/if}} | ||
| 113 | + {{/each}} | ||
| 114 | + </ul> | ||
| 115 | + </div> | ||
| 116 | + {{/each}} | ||
| 117 | + </div> | ||
| 118 | + </div> | ||
| 119 | + {{/if}} | ||
| 120 | + </li> | ||
| 121 | + {{/each}} | ||
| 122 | + </ul> | ||
| 123 | + <div class="uk-navbar-content uk-navbar-flip uk-hidden-small"> | ||
| 124 | + <div class="icon-item" id="mnavbarIconBtnMIN" data-uk-tooltip="{pos:'bottom'}" title="最小化"> | ||
| 125 | + <img src="/real_control_v2/assets/imgs/icon/minus.png"> | ||
| 126 | + </div> | ||
| 127 | + | ||
| 128 | + <div class="icon-item" id="mnavbarIconBtnCLOSE" data-uk-tooltip="{pos:'bottom'}" title="退出系统"> | ||
| 129 | + <img src="/real_control_v2/assets/imgs/icon/remove.png"> | ||
| 130 | + </div> | ||
| 131 | + </div> | ||
| 132 | + </nav> | ||
| 133 | + </div> | ||
| 134 | + </script> | ||
| 66 | </div> | 135 | </div> |
src/main/resources/static/real_control_v2/js/common.js
| @@ -82,8 +82,7 @@ var gb_common = (function () { | @@ -82,8 +82,7 @@ var gb_common = (function () { | ||
| 82 | function successHandle(json, handle) { | 82 | function successHandle(json, handle) { |
| 83 | var status = json.status; | 83 | var status = json.status; |
| 84 | if (status == 407) { | 84 | if (status == 407) { |
| 85 | - //alert('被注销的登录'); | ||
| 86 | - location.href = '/'; | 85 | + location.href = '/real_control_v2/login.html'; |
| 87 | return; | 86 | return; |
| 88 | } | 87 | } |
| 89 | 88 |
src/main/resources/static/real_control_v2/js/data/json/north_toolbar.json
| @@ -90,6 +90,11 @@ | @@ -90,6 +90,11 @@ | ||
| 90 | "text": "系统设置", | 90 | "text": "系统设置", |
| 91 | "children": [ | 91 | "children": [ |
| 92 | { | 92 | { |
| 93 | + "id": 3.1, | ||
| 94 | + "text": "线路配置", | ||
| 95 | + "event": "line_config" | ||
| 96 | + } | ||
| 97 | + ,{ | ||
| 93 | "id": 3.2, | 98 | "id": 3.2, |
| 94 | "text": "TTS", | 99 | "text": "TTS", |
| 95 | "event": "tts_config" | 100 | "event": "tts_config" |
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
| @@ -169,8 +169,7 @@ var gb_schedule_context_menu = (function () { | @@ -169,8 +169,7 @@ var gb_schedule_context_menu = (function () { | ||
| 169 | }, | 169 | }, |
| 170 | 'sep3': '---------', | 170 | 'sep3': '---------', |
| 171 | 'lp_change': { | 171 | 'lp_change': { |
| 172 | - name: '路牌对调', | ||
| 173 | - disabled: true | 172 | + name: '路牌对调' |
| 174 | } | 173 | } |
| 175 | } | 174 | } |
| 176 | }); | 175 | }); |
src/main/resources/static/real_control_v2/js/main.js
| 1 | - | ||
| 2 | /* main js */ | 1 | /* main js */ |
| 3 | var gb_main_ep = new EventProxy(), | 2 | var gb_main_ep = new EventProxy(), |
| 4 | res_load_ep = EventProxy.create('load_data_basic', 'load_tab', 'load_home_layout', 'load_home_line_panel', function () { | 3 | res_load_ep = EventProxy.create('load_data_basic', 'load_tab', 'load_home_layout', 'load_home_line_panel', function () { |
src/main/resources/static/real_control_v2/js/north/toolbar.js
| @@ -19,8 +19,23 @@ var gb_northToolbar = (function () { | @@ -19,8 +19,23 @@ var gb_northToolbar = (function () { | ||
| 19 | }); | 19 | }); |
| 20 | 20 | ||
| 21 | var ep = EventProxy.create("template", "data", "user", function (temp, data, user) { | 21 | var ep = EventProxy.create("template", "data", "user", function (temp, data, user) { |
| 22 | + var tempId = '#north-toolbar-temp'; | ||
| 23 | + | ||
| 24 | + //electron环境 | ||
| 25 | + if(isElectron){ | ||
| 26 | + tempId = '#north-toolbar-electron-temp'; | ||
| 27 | + //最小化 | ||
| 28 | + $(document).on('click', '#mnavbarIconBtnMIN', function () { | ||
| 29 | + ipcMain.send('webPageMainWindowMinimize'); | ||
| 30 | + }); | ||
| 31 | + //关闭 | ||
| 32 | + $(document).on('click', '#mnavbarIconBtnCLOSE', function () { | ||
| 33 | + ipcMain.send('webPageMainWindowClose'); | ||
| 34 | + }); | ||
| 35 | + } | ||
| 36 | + | ||
| 22 | currentUser = user; | 37 | currentUser = user; |
| 23 | - var t = $('#north-toolbar-temp', temp).html() | 38 | + var t = $(tempId, temp).html() |
| 24 | , htmlStr = template.render(t)({list: data, user: currentUser}); | 39 | , htmlStr = template.render(t)({list: data, user: currentUser}); |
| 25 | $('.north .north-toolbar').html(htmlStr); | 40 | $('.north .north-toolbar').html(htmlStr); |
| 26 | 41 |
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
| @@ -45,7 +45,7 @@ var gb_svg_chart = (function () { | @@ -45,7 +45,7 @@ var gb_svg_chart = (function () { | ||
| 45 | len = data.length; | 45 | len = data.length; |
| 46 | 46 | ||
| 47 | var w = get_width(wrap), | 47 | var w = get_width(wrap), |
| 48 | - h = get_height(wrap) | 48 | + h = parseInt(get_height(wrap)) |
| 49 | //x scale | 49 | //x scale |
| 50 | , | 50 | , |
| 51 | xScale = d3.scale.linear().range([x_padd, w - x_padd]).domain([0, len - 1]), | 51 | xScale = d3.scale.linear().range([x_padd, w - x_padd]).domain([0, len - 1]), |
| @@ -82,7 +82,8 @@ var gb_svg_chart = (function () { | @@ -82,7 +82,8 @@ var gb_svg_chart = (function () { | ||
| 82 | .classed({ | 82 | .classed({ |
| 83 | 'line-chart': true | 83 | 'line-chart': true |
| 84 | }).attr('data-code', lineCode) | 84 | }).attr('data-code', lineCode) |
| 85 | - .attr('onselectstart', 'return false'); | 85 | + .attr('onselectstart', 'return false') |
| 86 | + .style('height', h); | ||
| 86 | 87 | ||
| 87 | //add item g | 88 | //add item g |
| 88 | var items = svg.selectAll('g.item').data(data) | 89 | var items = svg.selectAll('g.item').data(data) |
src/main/resources/static/real_control_v2/main.html
| @@ -5,149 +5,179 @@ | @@ -5,149 +5,179 @@ | ||
| 5 | <meta charset="UTF-8"> | 5 | <meta charset="UTF-8"> |
| 6 | <title>线路调度 v2.0</title> | 6 | <title>线路调度 v2.0</title> |
| 7 | <!-- uikit core style--> | 7 | <!-- uikit core style--> |
| 8 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css" /> | ||
| 9 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css" /> | ||
| 10 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" /> | ||
| 11 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" /> | ||
| 12 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css" /> | 8 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css"/> |
| 9 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css"/> | ||
| 10 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css"/> | ||
| 11 | + <link rel="stylesheet" | ||
| 12 | + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css"/> | ||
| 13 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css"/> | ||
| 13 | 14 | ||
| 14 | <!-- main style --> | 15 | <!-- main style --> |
| 15 | - <link rel="stylesheet" href="/real_control_v2/css/main.css" /> | 16 | + <link rel="stylesheet" href="/real_control_v2/css/main.css"/> |
| 16 | <!-- north style --> | 17 | <!-- north style --> |
| 17 | - <link rel="stylesheet" href="/real_control_v2/css/north.css" /> | 18 | + <link rel="stylesheet" href="/real_control_v2/css/north.css"/> |
| 18 | <!-- home style --> | 19 | <!-- home style --> |
| 19 | - <link rel="stylesheet" href="/real_control_v2/css/home.css" /> | 20 | + <link rel="stylesheet" href="/real_control_v2/css/home.css"/> |
| 20 | <!-- line style --> | 21 | <!-- line style --> |
| 21 | - <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css" /> | ||
| 22 | - <link rel="stylesheet" href="/real_control_v2/css/sch_autocomp_result.css" /> | 22 | + <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css"/> |
| 23 | + <link rel="stylesheet" href="/real_control_v2/css/sch_autocomp_result.css"/> | ||
| 23 | <!-- custom table --> | 24 | <!-- custom table --> |
| 24 | - <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" /> | 25 | + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css"/> |
| 25 | <!-- jquery contextMenu style --> | 26 | <!-- jquery contextMenu style --> |
| 26 | - <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" /> | 27 | + <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css"/> |
| 27 | <!-- formvalidation style --> | 28 | <!-- formvalidation style --> |
| 28 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" /> | 29 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css"/> |
| 29 | <!-- js tree --> | 30 | <!-- js tree --> |
| 30 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.min.css" /> | 31 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.min.css"/> |
| 31 | <!-- tooltip css--> | 32 | <!-- tooltip css--> |
| 32 | - <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" /> | 33 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css"/> |
| 33 | 34 | ||
| 34 | - <link rel="stylesheet" href="/real_control_v2/css/pace.css" /> | 35 | + <link rel="stylesheet" href="/real_control_v2/css/pace.css"/> |
| 35 | </head> | 36 | </head> |
| 36 | 37 | ||
| 37 | <body> | 38 | <body> |
| 38 | - <div class="north uk-width-1-1 uk-panel-box"> | ||
| 39 | - <div class="uk-grid uk-grid-match"> | ||
| 40 | - <div class="uk-width-4-10"> | ||
| 41 | - <div class="uk-panel"> | ||
| 42 | - <h2 class="north-logo"> | 39 | +<div class="north uk-width-1-1 uk-panel-box"> |
| 40 | + <div class="uk-grid uk-grid-match"> | ||
| 41 | + <div class="uk-width-4-10"> | ||
| 42 | + <div class="uk-panel"> | ||
| 43 | + <h2 class="north-logo"> | ||
| 43 | <i class="uk-icon-life-ring"></i> 闵行公交线路调度 | 44 | <i class="uk-icon-life-ring"></i> 闵行公交线路调度 |
| 44 | - </h2> | ||
| 45 | - </div> | ||
| 46 | - </div> | ||
| 47 | - <div class="uk-width-6-10"> | ||
| 48 | - <div class="uk-panel uk-width north-toolbar"></div> | 45 | + </h2> |
| 49 | </div> | 46 | </div> |
| 50 | </div> | 47 | </div> |
| 51 | - <div class="north-tabs"></div> | 48 | + <div class="uk-width-6-10"> |
| 49 | + <div class="uk-panel uk-width north-toolbar"></div> | ||
| 50 | + </div> | ||
| 52 | </div> | 51 | </div> |
| 52 | + <div class="north-tabs"></div> | ||
| 53 | +</div> | ||
| 53 | 54 | ||
| 54 | - <div class="main-container"> | ||
| 55 | - <div class="load-panel"> | ||
| 56 | - <i class="uk-icon-spinner uk-icon-spin"></i> | ||
| 57 | - 正在加载数据 | ||
| 58 | - </div> | 55 | +<div class="main-container"> |
| 56 | + <div class="load-panel"> | ||
| 57 | + <i class="uk-icon-spinner uk-icon-spin"></i> | ||
| 58 | + 正在加载数据 | ||
| 59 | </div> | 59 | </div> |
| 60 | +</div> | ||
| 60 | 61 | ||
| 61 | - <!-- 地图相关 --> | ||
| 62 | - <script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT" ></script> | ||
| 63 | - <script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script> | ||
| 64 | - <script src="/assets/js/baidu//MarkerClusterer.js"></script> | ||
| 65 | - <script src="/assets/js/TransGPS.js" ></script> | ||
| 66 | - <!-- 高德 --> | ||
| 67 | - <script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda" ></script> | ||
| 68 | - <!-- jquery --> | ||
| 69 | - <script src="/real_control_v2/assets/js/jquery.min.js"></script> | ||
| 70 | - <!-- jquery actual --> | ||
| 71 | - <script src="/real_control_v2/assets/js/jquery.actual.min.js"></script> | ||
| 72 | - <!-- jquery.serializejson JSON序列化插件 --> | ||
| 73 | - <script src="/assets/plugins/jquery.serializejson.js"></script> | ||
| 74 | - <!-- moment.js 日期处理类库 --> | ||
| 75 | - <script src="/assets/plugins/moment-with-locales.js"></script> | ||
| 76 | - <!-- common js --> | ||
| 77 | - <script src="/real_control_v2/js/common.js"></script> | ||
| 78 | - <!-- art-template 模版引擎 --> | ||
| 79 | - <script src="/assets/plugins/template.js"></script> | ||
| 80 | - <!-- d3 --> | ||
| 81 | - <script src="/assets/js/d3.min.js"></script> | ||
| 82 | - <!-- EventProxy --> | ||
| 83 | - <script src="/assets/js/eventproxy.js"></script> | ||
| 84 | - <!-- uikit core --> | ||
| 85 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js"></script> | ||
| 86 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js"></script> | ||
| 87 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js"></script> | ||
| 88 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js"></script> | ||
| 89 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js"></script> | ||
| 90 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js"></script> | ||
| 91 | - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js"></script> | ||
| 92 | - | ||
| 93 | - <!-- jquery contextMenu --> | ||
| 94 | - <script src="/real_control_v2/assets/js/jquery.contextMenu.min.js"></script> | ||
| 95 | - <script src="/real_control_v2/assets/js/jquery.ui.position.min.js"></script> | ||
| 96 | - <!-- formvalidation- --> | ||
| 97 | - <script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js"></script> | ||
| 98 | - <script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js"></script> | ||
| 99 | - <script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js"></script> | ||
| 100 | - <!-- js tree --> | ||
| 101 | - <script src="/real_control_v2/assets/plugins/jstree/jstree.min.js"></script> | ||
| 102 | - <!-- simple pinyin --> | ||
| 103 | - <script src="/assets/plugins/pinyin.js"></script> | ||
| 104 | - <!-- qtip --> | ||
| 105 | - <script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js"></script> | ||
| 106 | - | ||
| 107 | - <!-- main js --> | ||
| 108 | - <script src="/real_control_v2/js/main.js"></script> | ||
| 109 | - <!-- 数据 --> | ||
| 110 | - <script src="/real_control_v2/js/data/data_basic.js"></script> | ||
| 111 | - <script src="/real_control_v2/js/data/data_gps.js"></script> | ||
| 112 | - <script src="/real_control_v2/js/data/gps_abnormal.js"></script> | ||
| 113 | - <!-- 线路模拟图 --> | ||
| 114 | - <script src="/real_control_v2/js/utils/svg_chart.js"></script> | ||
| 115 | - <script src="/real_control_v2/js/utils/svg_data_convert.js"></script> | ||
| 116 | - <script src="/real_control_v2/js/utils/svg_chart_tooltip.js"></script> | ||
| 117 | - <script src="/real_control_v2/js/utils/svg_chart_map.js"></script> | ||
| 118 | - | ||
| 119 | - <!-- custom table js --> | ||
| 120 | - <script src="/real_control_v2/js/utils/ct_table.js"></script> | ||
| 121 | - <!-- north js --> | ||
| 122 | - <script src="/real_control_v2/js/north/toolbar.js"></script> | ||
| 123 | - <script src="/real_control_v2/js/north/tabs.js"></script> | ||
| 124 | - <!-- home js --> | ||
| 125 | - <script src="/real_control_v2/js/home/layout.js"></script> | ||
| 126 | - <script src="/real_control_v2/js/home/line_panel.js"></script> | ||
| 127 | - <script src="/real_control_v2/js/home/context_menu.js"></script> | ||
| 128 | - <!-- line schedule js --> | ||
| 129 | - <script src="/real_control_v2/js/line_schedule/legend.js"></script> | ||
| 130 | - <script src="/real_control_v2/js/line_schedule/layout.js"></script> | ||
| 131 | - <script src="/real_control_v2/js/line_schedule/sch_table.js"></script> | ||
| 132 | - <script src="/real_control_v2/js/line_schedule/context_menu.js"></script> | ||
| 133 | - <script src="/real_control_v2/js/line_schedule/dbclick.js"></script> | ||
| 134 | - <script src="/real_control_v2/js/line_schedule/search.js"></script> | ||
| 135 | - | ||
| 136 | - <!-- 字典相关 --> | ||
| 137 | - <script src="/assets/js/dictionary.js"></script> | ||
| 138 | - <!-- websocket --> | ||
| 139 | - <script src="/assets/js/sockjs.min.js"></script> | ||
| 140 | - <script src="/real_control_v2/js/websocket/sch_websocket.js"></script> | ||
| 141 | - <!-- tts --> | ||
| 142 | - <script src="/real_control_v2/js/utils/tts.js"></script> | ||
| 143 | - | ||
| 144 | - <!-- echart --> | ||
| 145 | - <script src="/real_control_v2/assets/echarts-3/echarts.js"></script> | ||
| 146 | - <!-- Geolib --> | ||
| 147 | - <script src="/real_control_v2/geolib/geolib.js"></script> | ||
| 148 | - | ||
| 149 | - <script src="/real_control_v2/js/signal_state/signal_state.js"></script> | ||
| 150 | - <script src="/real_control_v2/js/utils/dispatch_pattern.js"></script> | 62 | +<script> |
| 63 | + delete window.exports; | ||
| 64 | + delete window.module; | ||
| 65 | + | ||
| 66 | + var ipcMain; | ||
| 67 | + //是否处于electron环境下 | ||
| 68 | + var isElectron = (function () { | ||
| 69 | + try { | ||
| 70 | + if (process.versions.electron) | ||
| 71 | + return true; | ||
| 72 | + else | ||
| 73 | + return false; | ||
| 74 | + } | ||
| 75 | + catch (e) { | ||
| 76 | + return false; | ||
| 77 | + } | ||
| 78 | + })(); | ||
| 79 | + | ||
| 80 | + if (isElectron) { | ||
| 81 | + var link = document.createElement("link"); | ||
| 82 | + link.type = "text/css"; | ||
| 83 | + link.rel = "stylesheet"; | ||
| 84 | + link.href = "/real_control_v2/css/electron.css"; | ||
| 85 | + document.getElementsByTagName("head")[0].appendChild(link); | ||
| 86 | + | ||
| 87 | + ipcMain = require('electron').ipcRenderer; | ||
| 88 | + } | ||
| 89 | +</script> | ||
| 90 | + | ||
| 91 | +<!-- 地图相关 --> | ||
| 92 | +<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script> | ||
| 93 | +<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script> | ||
| 94 | +<script src="/assets/js/baidu//MarkerClusterer.js"></script> | ||
| 95 | +<script src="/assets/js/TransGPS.js"></script> | ||
| 96 | +<!-- 高德 --> | ||
| 97 | +<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script> | ||
| 98 | +<!-- jquery --> | ||
| 99 | +<script src="/real_control_v2/assets/js/jquery.min.js"></script> | ||
| 100 | +<!-- jquery actual --> | ||
| 101 | +<script src="/real_control_v2/assets/js/jquery.actual.min.js"></script> | ||
| 102 | +<!-- jquery.serializejson JSON序列化插件 --> | ||
| 103 | +<script src="/assets/plugins/jquery.serializejson.js"></script> | ||
| 104 | +<!-- moment.js 日期处理类库 --> | ||
| 105 | +<script src="/assets/plugins/moment-with-locales.js"></script> | ||
| 106 | +<!-- common js --> | ||
| 107 | +<script src="/real_control_v2/js/common.js"></script> | ||
| 108 | +<!-- art-template 模版引擎 --> | ||
| 109 | +<script src="/assets/plugins/template.js"></script> | ||
| 110 | +<!-- d3 --> | ||
| 111 | +<script src="/assets/js/d3.min.js"></script> | ||
| 112 | +<!-- EventProxy --> | ||
| 113 | +<script src="/assets/js/eventproxy.js"></script> | ||
| 114 | +<!-- main js --> | ||
| 115 | +<script src="/real_control_v2/js/main.js"></script> | ||
| 116 | +<!-- uikit core --> | ||
| 117 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js"></script> | ||
| 118 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js"></script> | ||
| 119 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js"></script> | ||
| 120 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js"></script> | ||
| 121 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js"></script> | ||
| 122 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js"></script> | ||
| 123 | +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js"></script> | ||
| 124 | + | ||
| 125 | +<!-- jquery contextMenu --> | ||
| 126 | +<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js"></script> | ||
| 127 | +<script src="/real_control_v2/assets/js/jquery.ui.position.min.js"></script> | ||
| 128 | +<!-- formvalidation- --> | ||
| 129 | +<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js"></script> | ||
| 130 | +<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js"></script> | ||
| 131 | +<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js"></script> | ||
| 132 | +<!-- js tree --> | ||
| 133 | +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js"></script> | ||
| 134 | +<!-- simple pinyin --> | ||
| 135 | +<script src="/assets/plugins/pinyin.js"></script> | ||
| 136 | +<!-- qtip --> | ||
| 137 | +<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js"></script> | ||
| 138 | + | ||
| 139 | +<!-- 数据 --> | ||
| 140 | +<script src="/real_control_v2/js/data/data_basic.js"></script> | ||
| 141 | +<script src="/real_control_v2/js/data/data_gps.js"></script> | ||
| 142 | +<script src="/real_control_v2/js/data/gps_abnormal.js"></script> | ||
| 143 | +<!-- 线路模拟图 --> | ||
| 144 | +<script src="/real_control_v2/js/utils/svg_chart.js"></script> | ||
| 145 | +<script src="/real_control_v2/js/utils/svg_data_convert.js"></script> | ||
| 146 | +<script src="/real_control_v2/js/utils/svg_chart_tooltip.js"></script> | ||
| 147 | +<script src="/real_control_v2/js/utils/svg_chart_map.js"></script> | ||
| 148 | + | ||
| 149 | +<!-- custom table js --> | ||
| 150 | +<script src="/real_control_v2/js/utils/ct_table.js"></script> | ||
| 151 | +<!-- north js --> | ||
| 152 | +<script src="/real_control_v2/js/north/toolbar.js"></script> | ||
| 153 | +<script src="/real_control_v2/js/north/tabs.js"></script> | ||
| 154 | +<!-- home js --> | ||
| 155 | +<script src="/real_control_v2/js/home/layout.js"></script> | ||
| 156 | +<script src="/real_control_v2/js/home/line_panel.js"></script> | ||
| 157 | +<script src="/real_control_v2/js/home/context_menu.js"></script> | ||
| 158 | +<!-- line schedule js --> | ||
| 159 | +<script src="/real_control_v2/js/line_schedule/legend.js"></script> | ||
| 160 | +<script src="/real_control_v2/js/line_schedule/layout.js"></script> | ||
| 161 | +<script src="/real_control_v2/js/line_schedule/sch_table.js"></script> | ||
| 162 | +<script src="/real_control_v2/js/line_schedule/context_menu.js"></script> | ||
| 163 | +<script src="/real_control_v2/js/line_schedule/dbclick.js"></script> | ||
| 164 | +<script src="/real_control_v2/js/line_schedule/search.js"></script> | ||
| 165 | + | ||
| 166 | +<!-- 字典相关 --> | ||
| 167 | +<script src="/assets/js/dictionary.js"></script> | ||
| 168 | +<!-- websocket --> | ||
| 169 | +<script src="/assets/js/sockjs.min.js"></script> | ||
| 170 | +<script src="/real_control_v2/js/websocket/sch_websocket.js"></script> | ||
| 171 | +<!-- tts --> | ||
| 172 | +<script src="/real_control_v2/js/utils/tts.js"></script> | ||
| 173 | + | ||
| 174 | +<!-- echart --> | ||
| 175 | +<script src="/real_control_v2/assets/echarts-3/echarts.js"></script> | ||
| 176 | +<!-- Geolib --> | ||
| 177 | +<script src="/real_control_v2/geolib/geolib.js"></script> | ||
| 178 | + | ||
| 179 | +<script src="/real_control_v2/js/signal_state/signal_state.js"></script> | ||
| 180 | +<script src="/real_control_v2/js/utils/dispatch_pattern.js"></script> | ||
| 151 | </body> | 181 | </body> |
| 152 | 182 | ||
| 153 | </html> | 183 | </html> |