Commit e8753aaede390239085f355e0caf772d27a5e789
1 parent
e73b4f61
update...
Showing
34 changed files
with
1199 additions
and
244 deletions
src/main/java/com/bsth/controller/realcontrol/RealMapController.java
| ... | ... | @@ -49,6 +49,11 @@ public class RealMapController { |
| 49 | 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 | 88 | /** 越界距离 */ |
| 89 | 89 | private double outOfBoundDistance; |
| 90 | 90 | |
| 91 | + /** gps是否有效 设备端发送的状态 */ | |
| 92 | + private int valid; | |
| 93 | + | |
| 91 | 94 | public Integer getCompanyCode() { |
| 92 | 95 | return companyCode; |
| 93 | 96 | } |
| ... | ... | @@ -280,4 +283,12 @@ public class GpsEntity { |
| 280 | 283 | public void setOutOfBoundDistance(double outOfBoundDistance) { |
| 281 | 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 | 52 | public void run(String... arg0) throws Exception { |
| 53 | 53 | logger.info("gpsDataLoader,20,5"); |
| 54 | 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 | 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 | 3 | import com.bsth.entity.Line; |
| 11 | 4 | |
| 5 | +import javax.persistence.*; | |
| 6 | + | |
| 12 | 7 | /** |
| 13 | 8 | * |
| 14 | 9 | * @ClassName: Line(用户线路分配实体类) |
| ... | ... | @@ -20,6 +15,8 @@ import com.bsth.entity.Line; |
| 20 | 15 | * @Date 2016年8月26日 09:03:33 |
| 21 | 16 | * |
| 22 | 17 | * @Version 公交调度系统BS版 0.1 |
| 18 | + * | |
| 19 | + * PS:这个类缺少主调监控模式的配置,暂不使用 | |
| 23 | 20 | * |
| 24 | 21 | */ |
| 25 | 22 | ... | ... |
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
src/main/java/com/bsth/service/realcontrol/impl/RealMapServiceImpl.java
| ... | ... | @@ -159,6 +159,17 @@ public class RealMapServiceImpl implements RealMapService { |
| 159 | 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 | 174 | * wgs 坐标数组转 百度 |
| 164 | 175 | * | ... | ... |
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 | 119 | $(selector).select2({ |
| 120 | 120 | data: data, |
| 121 | 121 | matcher: oldMatcher(function(term, text, item){ |
| 122 | + if(!item.id) | |
| 123 | + return; | |
| 122 | 124 | var upTerm = term.toUpperCase(); |
| 123 | 125 | if(item.fullChars.indexOf(upTerm) != -1 |
| 124 | 126 | || item.camelChars.indexOf(upTerm) != -1) | ... | ... |
src/main/resources/static/index.html
| ... | ... | @@ -289,6 +289,11 @@ |
| 289 | 289 | {{/each}} |
| 290 | 290 | |
| 291 | 291 | </script> |
| 292 | +<script> | |
| 293 | + delete window.require; | |
| 294 | + delete window.exports; | |
| 295 | + delete window.module; | |
| 296 | +</script> | |
| 292 | 297 | <!-- jQuery --> |
| 293 | 298 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script> |
| 294 | 299 | <!-- bootstrap --> | ... | ... |
src/main/resources/static/login.html
| ... | ... | @@ -220,6 +220,11 @@ h3.logo-text{ |
| 220 | 220 | <div class="login-footer"> © 2016 上海巴士拓华科技发展有限公司 Some Rights Reserved </div> |
| 221 | 221 | </div> |
| 222 | 222 | |
| 223 | +<script> | |
| 224 | + delete window.require; | |
| 225 | + delete window.exports; | |
| 226 | + delete window.module; | |
| 227 | +</script> | |
| 223 | 228 | <!-- jQuery --> |
| 224 | 229 | <script src="/metronic_v4.5.4/plugins/jquery.min.js" ></script> |
| 225 | 230 | <script src="/assets/plugins/jsencrypt.min.js" ></script> |
| ... | ... | @@ -228,7 +233,7 @@ window.onload=function(){ |
| 228 | 233 | var body=document.getElementsByTagName("body")[0]; |
| 229 | 234 | if(typeof body.style.WebkitAnimation=="undefined") |
| 230 | 235 | $('.warn-note').fadeIn(); |
| 231 | -} | |
| 236 | +}; | |
| 232 | 237 | !function(){ |
| 233 | 238 | var form = $('#loginPanel form') |
| 234 | 239 | ,nameInput = $('input[name=userName]', form) | ... | ... |
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 | 153 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/permission/user/list.html
| ... | ... | @@ -21,29 +21,7 @@ |
| 21 | 21 | </div> |
| 22 | 22 | <div class="actions"> |
| 23 | 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 | 25 | </div> |
| 48 | 26 | </div> |
| 49 | 27 | <div class="portlet-body"> |
| ... | ... | @@ -134,6 +112,7 @@ |
| 134 | 112 | </td> |
| 135 | 113 | <td> |
| 136 | 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 | 116 | </td> |
| 138 | 117 | </tr> |
| 139 | 118 | {{/each}} |
| ... | ... | @@ -150,7 +129,7 @@ $(function(){ |
| 150 | 129 | var icheckOptions = { |
| 151 | 130 | checkboxClass: 'icheckbox_flat-blue', |
| 152 | 131 | increaseArea: '20%' |
| 153 | - } | |
| 132 | + }; | |
| 154 | 133 | |
| 155 | 134 | jsDoQuery(null,true); |
| 156 | 135 | |
| ... | ... | @@ -204,6 +183,8 @@ $(function(){ |
| 204 | 183 | showPagination(data); |
| 205 | 184 | } |
| 206 | 185 | layer.close(i); |
| 186 | + | |
| 187 | + $('.line_allot_btn').on('click', openAllotWindow); | |
| 207 | 188 | }); |
| 208 | 189 | } |
| 209 | 190 | |
| ... | ... | @@ -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 | 246 | $('#removeButton').on('click', function(){ |
| ... | ... | @@ -259,7 +256,6 @@ $(function(){ |
| 259 | 256 | }); |
| 260 | 257 | //改变状态 |
| 261 | 258 | function changeEnabled(id,enabled){ |
| 262 | - debugger | |
| 263 | 259 | $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ |
| 264 | 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 | 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 | 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 | 245 | color: #d42727; |
| 246 | 246 | padding: 2px 3px; |
| 247 | 247 | border-radius: 3px; |
| 248 | - font-size: 11px; | |
| 248 | + font-size: 12px; | |
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | span.signal-state-speed-limit{ |
| 252 | 252 | color: red; |
| 253 | 253 | padding: 2px 3px; |
| 254 | 254 | border-radius: 3px; |
| 255 | - font-size: 11px; | |
| 255 | + font-size: 12px; | |
| 256 | 256 | } |
| 257 | 257 | |
| 258 | 258 | .home-svg-edit-icon{ | ... | ... |
src/main/resources/static/real_control_v2/css/main.css
| ... | ... | @@ -711,61 +711,6 @@ li.map-panel { |
| 711 | 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 | 714 | #schedule-lp_change-modal .sch-list dl dd { |
| 770 | 715 | font-size: 14px; |
| 771 | 716 | } |
| ... | ... | @@ -791,7 +736,6 @@ li.map-panel { |
| 791 | 736 | width: 15%; |
| 792 | 737 | } |
| 793 | 738 | |
| 794 | - | |
| 795 | 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 | 740 | width: 9%; |
| 797 | 741 | border-left: 1px solid #dedede; |
| ... | ... | @@ -812,3 +756,23 @@ li.map-panel { |
| 812 | 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 | 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 | 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 | 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 | 68 | |
| 69 | 69 | <script id="schedule-lp_change-list-temp" type="text/html"> |
| 70 | 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 | 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 | 90 | {{/if}} |
| 91 | 91 | </script> |
| 92 | 92 | |
| ... | ... | @@ -102,15 +102,15 @@ |
| 102 | 102 | //线路切换事件 |
| 103 | 103 | $('[name=lineSelect]', modal).on('change', function () { |
| 104 | 104 | var order = $(this).data('order') |
| 105 | - ,lineCode = $(this).val(); | |
| 105 | + , lineCode = $(this).val(); | |
| 106 | 106 | |
| 107 | 107 | var array = gb_common.get_vals(gb_schedule_table.findScheduleByLine(lineCode)); |
| 108 | 108 | //按路牌分组 |
| 109 | 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 | 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 | 115 | lpSelect.html(ops); |
| 116 | 116 | }); |
| ... | ... | @@ -118,7 +118,7 @@ |
| 118 | 118 | //路牌切换事件 |
| 119 | 119 | $('[name=lpName]', modal).on('change', function () { |
| 120 | 120 | var order = $(this).data('order') |
| 121 | - ,lp = $(this).val(); | |
| 121 | + , lp = $(this).val(); | |
| 122 | 122 | |
| 123 | 123 | var htmlStr = template('schedule-lp_change-list-temp', {array: list[order][lp], order: order}); |
| 124 | 124 | $('.sch-list .ct_table_body', modal).eq(order).html(htmlStr); |
| ... | ... | @@ -131,7 +131,43 @@ |
| 131 | 131 | lineOps += '<option value="' + this.lineCode + '">' + this.name + '</option>'; |
| 132 | 132 | }); |
| 133 | 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 | 172 | </script> |
| 137 | 173 | </div> | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/toolbar.html
| ... | ... | @@ -63,4 +63,73 @@ |
| 63 | 63 | </nav> |
| 64 | 64 | </div> |
| 65 | 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 | 135 | </div> | ... | ... |
src/main/resources/static/real_control_v2/js/common.js
src/main/resources/static/real_control_v2/js/data/json/north_toolbar.json
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
src/main/resources/static/real_control_v2/js/main.js
src/main/resources/static/real_control_v2/js/north/toolbar.js
| ... | ... | @@ -19,8 +19,23 @@ var gb_northToolbar = (function () { |
| 19 | 19 | }); |
| 20 | 20 | |
| 21 | 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 | 37 | currentUser = user; |
| 23 | - var t = $('#north-toolbar-temp', temp).html() | |
| 38 | + var t = $(tempId, temp).html() | |
| 24 | 39 | , htmlStr = template.render(t)({list: data, user: currentUser}); |
| 25 | 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 | 45 | len = data.length; |
| 46 | 46 | |
| 47 | 47 | var w = get_width(wrap), |
| 48 | - h = get_height(wrap) | |
| 48 | + h = parseInt(get_height(wrap)) | |
| 49 | 49 | //x scale |
| 50 | 50 | , |
| 51 | 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 | 82 | .classed({ |
| 83 | 83 | 'line-chart': true |
| 84 | 84 | }).attr('data-code', lineCode) |
| 85 | - .attr('onselectstart', 'return false'); | |
| 85 | + .attr('onselectstart', 'return false') | |
| 86 | + .style('height', h); | |
| 86 | 87 | |
| 87 | 88 | //add item g |
| 88 | 89 | var items = svg.selectAll('g.item').data(data) | ... | ... |
src/main/resources/static/real_control_v2/main.html
| ... | ... | @@ -5,149 +5,179 @@ |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <title>线路调度 v2.0</title> |
| 7 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 36 | </head> |
| 36 | 37 | |
| 37 | 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 | 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 | 46 | </div> |
| 50 | 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 | 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 | 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 | 181 | </body> |
| 152 | 182 | |
| 153 | 183 | </html> | ... | ... |