Commit 61a2e4c3b2ebec70ae8d60429e60f1a598b042cc

Authored by 王通
1 parent 855f993b

1.调度工作台

src/main/java/com/bsth/controller/realcontrol/PageForwardingController.java
... ... @@ -81,9 +81,11 @@ public class PageForwardingController {
81 81 }
82 82  
83 83  
84   - if(type.equals("v2_mobile")){
  84 + if ("v2_mobile".equals(type)) {
85 85 mv.setViewName("/real_control_v2_mobile/main");
86   - }else{
  86 + } else if("v2_".equals(type)) {
  87 + mv.setViewName("/real_control_v2/main_");
  88 + } else {
87 89 //正常线调主页
88 90 mv.setViewName("/real_control_v2/main");
89 91 }
... ...
src/main/resources/static/pages/control/lineallot_v2/iframe_wrap_.html 0 → 100644
  1 +<!-- 线路选择 -->
  2 +<iframe src="/pages/control/lineallot_v2/main_.html?origin=real_control_iframe" frameborder="0" style="height: 100%;width: 100%;"></iframe>
0 3 \ No newline at end of file
... ...
src/main/resources/static/pages/control/lineallot_v2/main_.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <link rel="stylesheet" href="/assets/plugins/uk3.0/uikit.min.css"/>
  7 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css"/>
  8 + <!-- flatpickr -->
  9 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css">
  10 + <style>
  11 + html, body {
  12 + height: 100%;
  13 + }
  14 +
  15 + .ct_page {
  16 + padding: 25px 15px;
  17 + height: 100%;
  18 + height: calc(100% - 65px);
  19 + }
  20 +
  21 + .ct_cont {
  22 + height: calc(100% - 41px);
  23 + }
  24 +
  25 + .ct_cont > div > div.uk-card {
  26 + height: 99%;
  27 + }
  28 +
  29 + .loading {
  30 + height: 100%;
  31 + text-align: center;
  32 + }
  33 +
  34 + .loading .uk-spinner {
  35 + margin-top: 200px;
  36 + }
  37 +
  38 + .loading circle {
  39 + stroke: red;
  40 + }
  41 +
  42 + .ps-container > .ps-scrollbar-x-rail, .ps-container > .ps-scrollbar-y-rail {
  43 + opacity: 0.6 !important;
  44 + padding: 0 !important;
  45 + }
  46 +
  47 + .line_list_all_wrap {
  48 + height: 200px;
  49 + overflow: auto;
  50 + position: relative;
  51 + -webkit-user-select:none;
  52 + -moz-user-select:none;
  53 + -ms-user-select:none;
  54 + user-select:none;
  55 + }
  56 +
  57 + .line_list_all_wrap > .item {
  58 + background: #fff;
  59 + color: #666;
  60 + box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.08);
  61 + padding: 7px 12px;
  62 + border: 1px solid #ececec;
  63 + display: inline-block;
  64 + margin: 5px;
  65 + min-width: 70px;
  66 + text-align: center;
  67 + cursor: default;
  68 + }
  69 +
  70 + .line_list_all_wrap > .item.active{
  71 + background: #ffe9a5;
  72 + }
  73 +
  74 + .checked_list {
  75 + padding-left: 4px;
  76 + -webkit-user-select:none;
  77 + -moz-user-select:none;
  78 + -ms-user-select:none;
  79 + user-select:none;
  80 + }
  81 +
  82 + .checked_list > .item {
  83 + color: #fbfbfb;
  84 + box-shadow: 0px 3px 12px rgba(50, 197, 210, 0.3);
  85 + padding: 7px 12px;
  86 + border: 1px solid #ececec;
  87 + display: inline-block;
  88 + margin: 5px 2px;
  89 + min-width: 70px;
  90 + text-align: center;
  91 + background: #32C5D2;
  92 + cursor: move;
  93 + }
  94 +
  95 + .company_search_wrap {
  96 + width: 610px;
  97 + margin-left: 6px;
  98 + }
  99 +
  100 + .company_search_wrap select {
  101 + display: inline-block;
  102 + width: 128px;
  103 + margin-right: 12px;
  104 + }
  105 +
  106 + .uk-card {
  107 + border: 1px solid #eeeeee;
  108 + }
  109 +
  110 + .footer_tools_card {
  111 + margin-top: 20px;
  112 + padding: 20px 40px;
  113 + }
  114 +
  115 + .footer_tools_card label {
  116 + vertical-align: bottom;
  117 + display: inline-block;
  118 + font-size: 13px;
  119 + margin-left: 13px;
  120 + margin-bottom: 3px !important;
  121 + }
  122 +
  123 + .uk-button-default{
  124 + background: #e0e0e0 !important;
  125 + }
  126 +
  127 + .line_list_all_wrap > .item.destroy{
  128 + color: #f64242;
  129 + }
  130 +
  131 + .checked_list > .item.destroy{
  132 + background: #ff5c5c;
  133 + }
  134 + </style>
  135 +</head>
  136 +
  137 +<body>
  138 +<div class="loading">
  139 + <div uk-spinner></div>
  140 +</div>
  141 +<div class="ct_page" style="display: none;">
  142 + <h2 class="uk-heading-line uk-heading-bullet"><span>调度工作台 <h5 style="display: inline-block;">-选择线路</h5></span></h2>
  143 + <div class="ct_cont">
  144 + <div class="allot_wrap uk-flex-center" uk-grid>
  145 + <div class="uk-card uk-card-hover uk-card-body uk-width-2-3@m"
  146 + style="padding-top: 20px;padding-bottom: 20px;">
  147 + <div class="company_search_wrap" style="width: 99%">
  148 + <select class="uk-select company_search_select"></select>
  149 + <select class="uk-select fgs_search_select" disabled>
  150 + <option value="">分公司搜索</option>
  151 + </select>
  152 + <div class="uk-inline">
  153 + <span class="uk-form-icon uk-form-icon-flip" uk-icon="icon: search"></span>
  154 + <input class="uk-input line_search_input" style="width: 310px;" placeholder="搜索线路">
  155 + </div>
  156 + <button class="uk-button uk-button-primary" style="font-size: 16px;float: right;" id="select_all" data-selectType="select_all_no"><i
  157 + uk-icon=" " style="margin-right: 5px;" ></i>全选
  158 + </button>
  159 + </div>
  160 + <hr>
  161 + <div class="line_list_all_wrap"></div>
  162 + <hr>
  163 + <div class="checked_list" uk-sortable> </div>
  164 + </div>
  165 +
  166 + <div class="uk-card uk-card-hover uk-card-body uk-width-2-3@m footer_tools_card">
  167 + <button class="uk-button uk-button-default uk-button-large" style="font-size: 16px" id="go_to_real_system_btn"><i
  168 + uk-icon=" icon: sign-in" style="margin-right: 5px;" ></i>进入线路调度
  169 + </button>
  170 +
  171 + <label class="pattern_type_label"><input class="uk-checkbox" type="checkbox" > 主调模式登录</label>
  172 + <label class="new_window_open_label" title="可能会被浏览器阻止新建窗口" uk-tooltip><input class="uk-checkbox" type="checkbox"> 新窗口打开</label>
  173 +
  174 + </div>
  175 +
  176 + <div class="uk-alert-warning uk-width-2-3@m " uk-alert>
  177 + <p>注意!!! 相关“设备调试人员”和“测试人员”不要以主调模式进入调度工作台。</p>
  178 + </div>
  179 + </div>
  180 + </div>
  181 +</div>
  182 +
  183 +<script id="line_list_items_temp" type="text/html">
  184 + {{each list as obj i}}
  185 + <span class="item {{obj.destroy==1?'destroy':''}}" data-id="{{obj.lineCode}}" data-gsbm="{{obj.company}}_{{obj.brancheCompany}}">{{obj.name}}</span>
  186 + {{/each}}
  187 +</script>
  188 +
  189 +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
  190 +<script src="/assets/plugins/uk3.0/uikit.min.js"></script>
  191 +<script src="/assets/plugins/uk3.0/uikit-icons.min.js"></script>
  192 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js"></script>
  193 +<!-- EventProxy -->
  194 +<script src="/assets/js/eventproxy.js"></script>
  195 +<!-- art-template 模版引擎 -->
  196 +<script src="/assets/plugins/template.js"></script>
  197 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  198 +<script src="/assets/plugins/pinyin.js"></script>
  199 +<script>
  200 + var allMapps = {};//线路搜索映射
  201 + var companyData = {};
  202 + var codeMapps={}; //线路编码映射
  203 + //滚动条
  204 + $('.line_list_all_wrap').perfectScrollbar();
  205 + window.localStorage.setItem("pattern", 0);
  206 +
  207 + var ep = EventProxy.create('all_lines', 'user_author', 'company_data', function (allLines, userAuthor, company_data) {
  208 + //按用户权限过滤线路
  209 + var authArray = userAuthor.lineCodeStr.split(','),
  210 + newArray = [];
  211 + $.each(allLines, function () {
  212 + if (this.lineCode && authArray.indexOf(this.lineCode) != -1) {
  213 + newArray.push(this);
  214 + codeMapps[this.lineCode] = this;
  215 + }
  216 + });
  217 + //排序
  218 + newArray.sort(function (a, b) {
  219 + return a.name.localeCompare(b.name);
  220 + });
  221 + //创建线路搜索映射
  222 + createLineSearchMapps(newArray);
  223 +
  224 + var htmlStr = template('line_list_items_temp', {list: newArray});
  225 + $('.line_list_all_wrap').html(htmlStr);
  226 +
  227 + //过滤公司编码数据
  228 + filter_company_data.filter(newArray, convert_buss_data(company_data));
  229 + initCompanySelect();
  230 + //更新滚动条高度
  231 + setTimeout(function () {
  232 + $('.line_list_all_wrap').perfectScrollbar('update');
  233 + }, 1000);
  234 +
  235 + //登录模式
  236 + changePattern(userAuthor.pattern);
  237 + window.localStorage.setItem("pattern", userAuthor.pattern);
  238 + if(!userAuthor.pattern)
  239 + $('.pattern_type_label').hide().find('input')[0].checked=false;
  240 + else
  241 + $('input','.pattern_type_label')[0].checked=true;
  242 +
  243 + $('.loading').remove();
  244 + $('.ct_page').show();
  245 +
  246 + //默认选中上次记录
  247 + var lineControlItems = window.localStorage.getItem('lineControlItems');
  248 + if (lineControlItems) {
  249 + var array = JSON.parse(lineControlItems);
  250 + $.each(array, function (i, line) {
  251 + $('.item[data-id='+line.lineCode+']','.line_list_all_wrap').trigger('click');
  252 + });
  253 + }
  254 + selectButtonStatus();
  255 + });
  256 +
  257 + $('.pattern_type_label').on('click', function () {
  258 + var checked = $('input',this)[0].checked;
  259 + changePattern(checked);
  260 + });
  261 +
  262 + function changePattern(status) {
  263 + var btn = $('#go_to_real_system_btn'),
  264 + def='uk-button-default',
  265 + prim='uk-button-primary';
  266 + if(status){
  267 + btn.removeClass(def).addClass(prim);
  268 + }
  269 + else{
  270 + btn.removeClass(prim).addClass(def);
  271 + }
  272 + }
  273 +
  274 + /**
  275 + * 查询所有线路
  276 + */
  277 + $.get('/line/all', {remove_ne: 1}, function (list) {
  278 + ep.emit('all_lines', list);
  279 + });
  280 +
  281 + /**用户分配的线路*/
  282 + $.get('/realControAuthority/findByCurrentUser', function (t) {
  283 + ep.emit('user_author', t);
  284 + });
  285 +
  286 + /** 查询公司编码 */
  287 + $.get('/business/all', function (rs) {
  288 + ep.emit('company_data', rs);
  289 + });
  290 +
  291 + //点击选择线路
  292 + $('.line_list_all_wrap').on('click', 'span.item', function () {
  293 + var lineCode = $(this).data('id'),
  294 + name = $(this).text();
  295 + if ($(this).hasClass('active')) {
  296 + $(this).removeClass('active');
  297 +
  298 + $('.item[data-id='+lineCode+']','.checked_list').remove();
  299 + }
  300 + else {
  301 + $(this).addClass('active');
  302 + var span = $('<span data-id="'+lineCode+'" class="item uk-card uk-card-default uk-animation-slide-bottom '+($(this).hasClass('destroy')?"destroy":"")+'">'+name+'</span>')
  303 + .one('webkitAnimationEnd', function () {
  304 + $(this).removeClass('uk-animation-slide-bottom');
  305 + });
  306 + $('.checked_list').append(span);
  307 + }
  308 + selectButtonStatus();
  309 + });
  310 +
  311 + /*$('.checked_list').on('click', '.item', function () {
  312 + var lineCode = $(this).data('id');
  313 + $('.item[data-id='+lineCode+']','.line_list_all_wrap').removeClass('active');
  314 + $(this).remove();
  315 + });*/
  316 +
  317 + /**
  318 + * 搜索线路
  319 + */
  320 + function search_line_list() {
  321 + var comp = $('select.company_search_select').val(),
  322 + fgs = $('select.fgs_search_select').val(),
  323 + gsbm = comp + '_' + fgs;
  324 +
  325 + if(gsbm=='_')
  326 + gsbm=null;
  327 + var allDoms = $('.line_list_all_wrap span.item');
  328 + //线路
  329 + var lineCodeArray = [];
  330 + var t = $('.line_search_input').val();
  331 + if(t){
  332 + t = t.toUpperCase();
  333 + for(var m in allMapps){
  334 + if(m.indexOf(t)!=-1)
  335 + lineCodeArray.push(allMapps[m]);
  336 + }
  337 + }
  338 +
  339 + //搜索
  340 + var show_elems = [];
  341 + for (var i=0, dom; dom = allDoms[i++];) {
  342 + if(gsbm && $(dom).data('gsbm').indexOf(gsbm)==-1)
  343 + continue;
  344 +
  345 + if(t && lineCodeArray.indexOf($(dom).data('id')+'') == -1)
  346 + continue;
  347 +
  348 + show_elems.push($(dom));
  349 + }
  350 +
  351 + //show
  352 + allDoms.hide();
  353 + for(var j=0,$dom;$dom=show_elems[j++];)
  354 + $dom.show();
  355 + }
  356 +
  357 + function createLineSearchMapps(list) {
  358 + allMapps = {};
  359 + var name, code;
  360 + for (var i = 0, line; line = list[i++];) {
  361 + name = line.name;
  362 + code = line.lineCode;
  363 + //拼音映射
  364 + allMapps[pinyin.getCamelChars(name)] = code;
  365 + allMapps[pinyin.getFullChars(name).toUpperCase()] = code;
  366 + //中文映射
  367 + allMapps[name] = code;
  368 + }
  369 + }
  370 +
  371 +
  372 + //构建公司级联下拉框
  373 + function initCompanySelect() {
  374 + var opts = '<option value="">公司搜索</option>';
  375 + for (var k in companyData) {
  376 + opts += '<option value="' + k + '">' + companyData[k].name + '</option>';
  377 + }
  378 + $('select.company_search_select').html(opts);
  379 + }
  380 +
  381 + //公司切换
  382 + $('select.company_search_select').on('change', function () {
  383 + var opts = '<option value="">分公司搜索</option>',
  384 + t = $(this).val(),
  385 + fgsSelect = $('select.fgs_search_select');
  386 + if (!t) {
  387 + fgsSelect.html(opts).attr('disabled', 'disabled');
  388 + }
  389 + else{
  390 + var array = companyData[t].childs;
  391 + for (var i = 0, fgs; fgs = array[i++];) {
  392 + opts += '<option value="' + fgs.businessCode + '">' + fgs.businessName + '</option>';
  393 + }
  394 +
  395 + fgsSelect.html(opts).removeAttr('disabled');
  396 + }
  397 + search_line_list();
  398 + });
  399 +
  400 + //分公司切换
  401 + $('select.fgs_search_select').on('change', search_line_list);
  402 +
  403 + //线路文本框输入
  404 + var flag;
  405 + $('.line_search_input').on('input', function () {
  406 + if(flag)
  407 + return;
  408 + flag = true;
  409 + setTimeout(function () {
  410 + //延迟
  411 + search_line_list();
  412 + flag = false;
  413 + }, 200);
  414 + });
  415 +
  416 + function convert_buss_data(rs) {
  417 + var baseCode;
  418 + //找到跟节点
  419 + $.each(rs, function () {
  420 + if (this.upCode == 0) {
  421 + baseCode = this.businessCode;
  422 + return false;
  423 + }
  424 + });
  425 + if (!baseCode)return;
  426 + //提取二级节点
  427 + var secondMap = {};
  428 + $.each(rs, function () {
  429 + if (this.upCode == baseCode)
  430 + secondMap[this.businessCode] = {name: this.businessName, childs: []};
  431 + });
  432 + //分公司节点
  433 + $.each(rs, function () {
  434 + if (secondMap[this.upCode])
  435 + secondMap[this.upCode].childs.push(this);
  436 + });
  437 + //排序
  438 + for (var sid in secondMap)
  439 + secondMap[sid].childs.sort(naturalSort);
  440 + return secondMap;
  441 + }
  442 +
  443 + var naturalSort = function (a, b) {
  444 + return a.businessName.localeCompare(b.businessName);
  445 + };
  446 +
  447 + /**
  448 + * 根据用户线路权限过滤公司编码数据
  449 + */
  450 + var filter_company_data = (function () {
  451 + var filter = function (lineArray, data) {
  452 + companyData = {};
  453 + var com, fCom;
  454 + $.each(lineArray, function () {
  455 + com = this.company;
  456 + fCom = this.brancheCompany;
  457 + if (!companyData[com]) {
  458 + companyData[com] = {name: data[com].name, childs: []};
  459 + }
  460 +
  461 + if (!get(fCom, companyData[com].childs)) {
  462 + companyData[com].childs.push(get(fCom, data[com].childs));
  463 + }
  464 + });
  465 + };
  466 +
  467 + function get(fgsCode, fgsArray) {
  468 + for (var i = 0, fgs; fgs = fgsArray[i++];) {
  469 + if (fgs.businessCode == fgsCode)
  470 + return fgs;
  471 + }
  472 + return null;
  473 + }
  474 +
  475 + return {
  476 + filter: filter
  477 + }
  478 + })();
  479 + var storage = window.localStorage;
  480 + $('#go_to_real_system_btn').on('click', go_to_xd_sys);
  481 + $('#select_all').on('click', function(){
  482 + if ($(this).attr("data-selectType")=="select_all_no"){
  483 + $('.line_list_all_wrap>.item').addClass('active');
  484 + $(this).text('全不选');
  485 + $(this).attr("data-selectType","select_all");
  486 + var linesArrays= $('.line_list_all_wrap span.item');
  487 + if(linesArrays&&linesArrays.length>0){
  488 + $('.checked_list').empty();
  489 + for (var i = 0; i < linesArrays.length; i++) {
  490 + var span = $('<span data-id="'+$(linesArrays[i]).data('id')+'" class="item uk-card uk-card-default uk-animation-slide-bottom '+($(linesArrays[i]).hasClass('destroy')?"destroy":"")+'">'+$(linesArrays[i]).text()+'</span>')
  491 + .one('webkitAnimationEnd', function () {
  492 + $(this).removeClass('uk-animation-slide-bottom');
  493 + });
  494 + $('.checked_list').append(span);
  495 + }
  496 + }
  497 + $(this).removeClass('uk-button-primary');
  498 + $(this).addClass('uk-button-default');
  499 + return;
  500 + }
  501 + if ($(this).attr("data-selectType")=="select_all"){
  502 + $('.line_list_all_wrap>.item').removeClass('active');
  503 + $(this).text('全选');
  504 + $(this).attr("data-selectType","select_all_no");
  505 + $('.checked_list').empty();
  506 + $(this).removeClass('uk-button-default');
  507 + $(this).addClass('uk-button-primary');
  508 + return;
  509 + }
  510 + });
  511 + var selectButtonStatus=function(){
  512 + if($('.checked_list span.item').length==$('.line_list_all_wrap span.item').length){
  513 + $('#select_all').removeClass('uk-button-primary').addClass('uk-button-default').attr("data-selectType","select_all").text('全不选');
  514 + }else {
  515 + $('#select_all').removeClass('uk-button-default').addClass('uk-button-primary').attr("data-selectType","select_all_no").text('全选');
  516 + }
  517 + }
  518 +
  519 + /**
  520 + * 进入调度工作台
  521 + */
  522 + function go_to_xd_sys() {
  523 + var items = $('.checked_list .item');
  524 + if(items.length==0)
  525 + return UIkit.notification({message: '你还没有选择线路!', pos: 'bottom-center', status: 'danger'});
  526 + $(this).attr('disabled', 'disabled');
  527 +
  528 + show_btn_load(this, '更新缓存数据...');
  529 + (function () {
  530 + var ls_line_data = [];
  531 + $.each(items, function () {
  532 + ls_line_data.push(codeMapps[$(this).data('id')]);
  533 + });
  534 + //将线路基础信息写入localStorage
  535 + storage.setItem('lineControlItems', JSON.stringify(ls_line_data));
  536 + //监控模式还是主调模式
  537 + storage.setItem('operationMode', $('.pattern_type_label>input')[0].checked?1:0);
  538 +
  539 + //进入调度工作台
  540 + var eq = EventProxy.create('cache_route', 'check_line_config', function () {
  541 + var newWinOpen = $('input','.new_window_open_label')[0].checked;
  542 + if(!newWinOpen){
  543 + top.window.location.href = "/real_control/v2_";
  544 + /*if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
  545 + //移动端
  546 + top.window.location.href = "/real_control/mobile_v2";
  547 + }else{
  548 + top.window.location.href = "/real_control/v2";
  549 + }*/
  550 + }else{
  551 + window.open("/real_control/v2_");
  552 + $('#go_to_real_system_btn').html('已经尝试打开新窗口,如看不到,可能被浏览器阻止了');
  553 + }
  554 + });
  555 +
  556 + //拼接线路编码
  557 + var idx='';
  558 + $.each(ls_line_data, function () {
  559 + idx+=(this.lineCode + ',');
  560 + });
  561 + //缓存路由
  562 + idx=idx.substr(0, idx.length - 1);
  563 + $.get('/realMap/findRouteByLine', {idx: idx}, function (rs) {
  564 + if (rs) {
  565 + for(var lineCode in rs)
  566 + storage.setItem(lineCode + '_route', JSON.stringify(rs[lineCode]));
  567 +
  568 + eq.emit('cache_route');
  569 + }
  570 + });
  571 +
  572 + //检查线路配置
  573 + checkLineConfig(ls_line_data, function (rs) {
  574 + if (rs.status == 0)
  575 + eq.emit('check_line_config');
  576 + else if (rs.status == 1){
  577 + initLineConfig(rs.not, function () {
  578 + eq.emit('check_line_config');
  579 + });
  580 + }
  581 + })
  582 + })();
  583 + }
  584 +
  585 + function checkLineConfig(lsData, cb) {
  586 + var lineCodeArray = [];
  587 + $.each(lsData, function () {
  588 + lineCodeArray.push(this.lineCode);
  589 + });
  590 +
  591 + $.ajax({
  592 + url: '/lineConfig/check',
  593 + traditional: true,
  594 + data: {codeArray: lineCodeArray},
  595 + method: 'POST',
  596 + success: cb
  597 + });
  598 + }
  599 +
  600 + function initLineConfig(arr, cb) {
  601 + var i = 0;
  602 + (function () {
  603 + if (i >= arr.length) {
  604 + cb && cb();
  605 + return;
  606 + }
  607 + var f = arguments.callee
  608 + , lineCode = arr[i];
  609 +
  610 + //showLoad('初始化' + lineIds[lineCode] + '配置信息...');
  611 + $.post('/lineConfig/init/' + lineCode, function (rs) {
  612 + if (rs == 1) {
  613 + i++;
  614 + f();
  615 + }
  616 + });
  617 + })();
  618 + }
  619 +
  620 + /**
  621 + * 按钮转菊花
  622 + */
  623 + function show_btn_load(btn, msg) {
  624 + $(btn).html('<div uk-spinner></div> ' + msg);
  625 + }
  626 +
  627 + window.onload = function () {
  628 + if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
  629 + goPAGE();
  630 + $('.checked_list').on('touchstart', '.item', function () {
  631 + itemDataIdRemoveClass($(this));
  632 + });
  633 + }else{
  634 + $('.checked_list').on('click', '.item', function () {
  635 + itemDataIdRemoveClass($(this));
  636 + });
  637 + }
  638 +
  639 + }
  640 +
  641 + /**
  642 + * 如何使移动端修改按钮文字
  643 + */
  644 + function goPAGE() {
  645 + $("#go_to_real_system_btn")[0].innerText = "进入移动端线调系统";
  646 + $.each($("#go_to_real_system_btn").siblings(),function(i,el){
  647 + if(i === 1) $(el).css({'display':'none'});
  648 + });
  649 + }
  650 +
  651 + /**
  652 + * 移除選中的車
  653 + */
  654 + function itemDataIdRemoveClass(e) {
  655 + var lineCode = $(e).data('id');
  656 + $('.item[data-id='+lineCode+']','.line_list_all_wrap').removeClass('active');
  657 + $(e).remove();
  658 + selectButtonStatus();
  659 + }
  660 +
  661 +</script>
  662 +</body>
  663 +</html>
0 664 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/north/toolbar_.html 0 → 100644
  1 +<div>
  2 + <script id="north-toolbar-temp" type="text/html">
  3 + <div class="uk-margin" id="north_toolbar_panel">
  4 + <nav class="uk-navbar">
  5 + <a class="uk-navbar-brand" id="navbar_user_detail_link" title="点击切换账号">
  6 + <span><i class="uk-icon-user"></i> <span id="north_toolbar_user">{{user.userName}}</span></span><i class="uk-icon-ellipsis-v"></i>
  7 + </a>
  8 + <ul class="uk-navbar-nav">
  9 + {{each list as obj i}}
  10 + <li class="uk-parent " data-uk-dropdown="{{if obj.columns}}{pos:'top-right'}{{/if}}" aria-haspopup="true" aria-expanded="false">
  11 + <a>{{obj.text}} <i class="uk-icon-caret-down"></i></a>
  12 + {{if obj.children != null}}
  13 + <div class="uk-dropdown uk-dropdown-navbar uk-dropdown-bottom" style="top: 40px; left: 0px;">
  14 + <ul class="uk-nav uk-nav-navbar uk-dropdown-close">
  15 + {{each obj.children as c j}}
  16 + {{if c.header}}
  17 + <li class="uk-nav-header">{{c.text}}</li>
  18 +
  19 + {{else if c.divider}}
  20 + <li class="uk-nav-divider"></li>
  21 + {{else}}
  22 + <li class="event"><a data-event="{{c.event}}">{{c.text}}</a></li>
  23 + {{/if}}
  24 + {{/each}}
  25 + </ul>
  26 + </div>
  27 + {{else if obj.columns}}
  28 + <div class="uk-dropdown {{obj.clazz}}">
  29 + <div class="uk-grid uk-dropdown-grid">
  30 + {{each obj.grid as cls s}}
  31 + <div class="{{obj.cls_class}}">
  32 + <ul class="uk-nav uk-nav-dropdown uk-panel uk-dropdown-close">
  33 + {{each cls as c z}}
  34 + {{if c.header}}
  35 + <li class="uk-nav-header">{{c.text}}</li>
  36 +
  37 + {{else if c.divider}}
  38 + <li class="uk-nav-divider"></li>
  39 + {{else}}
  40 + <li class="event">
  41 + <a data-event="{{c.event}}">
  42 + {{if c.icon != null}}
  43 + <i class="{{c.icon}}"></i>
  44 + {{/if}}
  45 + {{c.text}}</a>
  46 + </li>
  47 + {{/if}}
  48 + {{/each}}
  49 + </ul>
  50 + </div>
  51 + {{/each}}
  52 + </div>
  53 + </div>
  54 + {{/if}}
  55 + </li>
  56 + {{/each}}
  57 + </ul>
  58 + <a class="uk-navbar-brand op-beijingtime-time" >
  59 + <span></span>
  60 + </a>
  61 + <div class="uk-navbar-content uk-navbar-flip uk-hidden-small" style="padding-left: 0;">
  62 + <div class="uk-button-group">
  63 + <button class="uk-button uk-button-danger exit-system">退出线调</button>
  64 + </div>
  65 + </div>
  66 + </nav>
  67 + </div>
  68 + </script>
  69 +
  70 + <script id="north-toolbar-electron-temp" type="text/html">
  71 + <div class="uk-margin" id="north_toolbar_panel">
  72 + <nav class="uk-navbar">
  73 + <a class="uk-navbar-brand" >
  74 + <span><i class="uk-icon-user"></i> <span id="north_toolbar_user">{{user.userName}}</span>,在线</span><i class="uk-icon-ellipsis-v"></i>
  75 + </a>
  76 + <ul class="uk-navbar-nav">
  77 + {{each list as obj i}}
  78 + <li class="uk-parent " data-uk-dropdown="{{if obj.columns}}{pos:'top-right'}{{/if}}" aria-haspopup="true" aria-expanded="false">
  79 + <a>{{obj.text}} <i class="uk-icon-caret-down"></i></a>
  80 + {{if obj.children != null}}
  81 + <div class="uk-dropdown uk-dropdown-navbar uk-dropdown-bottom" style="top: 40px; left: 0px;">
  82 + <ul class="uk-nav uk-nav-navbar uk-dropdown-close">
  83 + {{each obj.children as c j}}
  84 + {{if c.header}}
  85 + <li class="uk-nav-header">{{c.text}}</li>
  86 +
  87 + {{else if c.divider}}
  88 + <li class="uk-nav-divider"></li>
  89 + {{else}}
  90 + <li class="event"><a data-event="{{c.event}}">{{c.text}}</a></li>
  91 + {{/if}}
  92 + {{/each}}
  93 + </ul>
  94 + </div>
  95 + {{else if obj.columns}}
  96 + <div class="uk-dropdown {{obj.clazz}}">
  97 + <div class="uk-grid uk-dropdown-grid">
  98 + {{each obj.grid as cls s}}
  99 + <div class="{{obj.cls_class}}">
  100 + <ul class="uk-nav uk-nav-dropdown uk-panel uk-dropdown-close">
  101 + {{each cls as c z}}
  102 + {{if c.header}}
  103 + <li class="uk-nav-header">{{c.text}}</li>
  104 +
  105 + {{else if c.divider}}
  106 + <li class="uk-nav-divider"></li>
  107 + {{else}}
  108 + <li class="event">
  109 + <a data-event="{{c.event}}">
  110 + {{if c.icon != null}}
  111 + <i class="{{c.icon}}"></i>
  112 + {{/if}}
  113 + {{c.text}}</a>
  114 + </li>
  115 + {{/if}}
  116 + {{/each}}
  117 + </ul>
  118 + </div>
  119 + {{/each}}
  120 + </div>
  121 + </div>
  122 + {{/if}}
  123 + </li>
  124 + {{/each}}
  125 + </ul>
  126 + <div class="uk-navbar-content uk-navbar-flip uk-hidden-small" style="padding-left: 0;">
  127 + <div class="icon-item" id="mnavbarIconBtnMIN" data-uk-tooltip="{pos:'bottom'}" title="最小化">
  128 + <img src="/real_control_v2/assets/imgs/icon/minus.png">
  129 + </div>
  130 + &nbsp;
  131 + <div class="icon-item" id="mnavbarIconBtnCLOSE" data-uk-tooltip="{pos:'bottom'}" title="退出系统">
  132 + <img src="/real_control_v2/assets/imgs/icon/remove.png">
  133 + </div>
  134 + </div>
  135 + </nav>
  136 + </div>
  137 + </script>
  138 +</div>
... ...
src/main/resources/static/real_control_v2/js/north/toolbar_.js 0 → 100644
  1 +/* main.html north toolbar js */
  2 +
  3 +var gb_northToolbar = (function () {
  4 +
  5 + var modal_opts = {center: true, bgclose: false};
  6 + var currentUser;
  7 +
  8 + var init = function () {
  9 + $.get('/real_control_v2/fragments/north/toolbar_.html', function (temp) {
  10 + ep.emit("template", temp);
  11 + });
  12 +
  13 + $.get('/real_control_v2/js/data/json/north_toolbar.json', function (data) {
  14 + ep.emit("data", data);
  15 + });
  16 +
  17 + //当前用户信息
  18 + $.get('/user/currentUser', function (user) {
  19 + ep.emit("user", user);
  20 +
  21 + //查询线调权限信息
  22 + $.get('/realControAuthority/findByUserId', {userId: user.id}, function (rs) {
  23 + ep.emit("xd_auth", rs);
  24 + });
  25 + });
  26 +
  27 + var xd_auth;//线调权限
  28 + var ep = EventProxy.create("template", "data", "user", 'xd_auth', function (temp, data, user, auth) {
  29 + var tempId = '#north-toolbar-temp';
  30 + xd_auth = auth;
  31 + currentUser = user;
  32 + var t = $(tempId, temp).html()
  33 + , htmlStr = template.render(t)({list: data, user: currentUser});
  34 + $('.north .north-toolbar').html(htmlStr);
  35 +
  36 + //exit
  37 + $('.north .north-toolbar .exit-system').on('click', function () {
  38 + //关闭websocket 连接
  39 + gb_sch_websocket.sock().close(1000, '退出线调');
  40 + window.location.href = '/pages/control/lineallot_v2/iframe_wrap_.html';
  41 + });
  42 +
  43 + //过滤菜单
  44 + var excludes=[];
  45 + if(xd_auth.excludeMenus)
  46 + excludes=xd_auth.excludeMenus.split(',');
  47 + if(excludes.length>0){
  48 + $('li.event', '#north_toolbar_panel').each(function () {
  49 + if(excludes.indexOf($('a', this).data('event'))!=-1)
  50 + $(this).remove();
  51 + });
  52 + }
  53 + });
  54 + };
  55 +
  56 + init();
  57 +
  58 + //点击用户名
  59 + $(document).on('click', '#navbar_user_detail_link', function () {
  60 + open_modal('/real_control_v2/fragments/north/nav/user_change/user_change_modal.html', {}, {center: false, bgclose: false});
  61 + });
  62 +
  63 + $(document).on('click', '#north_toolbar_panel li.event a', function () {
  64 + var event = $(this).data('event');
  65 + handler[event] && handler[event]();
  66 + });
  67 +
  68 + //electron环境
  69 + if(isElectron){
  70 + tempId = '#north-toolbar-electron-temp';
  71 + //最小化
  72 + $(document).on('click', '#mnavbarIconBtnMIN', function () {
  73 + ipcMain.send('webPageMainWindowMinimize');
  74 + });
  75 + //关闭
  76 + $(document).on('click', '#mnavbarIconBtnCLOSE', function () {
  77 + ipcMain.send('webPageMainWindowClose');
  78 + });
  79 + }
  80 +
  81 + var handler = {
  82 + // device report list
  83 + device_report: function () {
  84 + open_modal('/real_control_v2/fragments/north/nav/report_80.html', {}, modal_opts);
  85 + },
  86 + directive_history: function () {
  87 + open_modal('/real_control_v2/fragments/north/nav/directive_history.html', {}, modal_opts);
  88 + },
  89 + tts_config: function () {
  90 + open_modal('/real_control_v2/fragments/north/nav/tts_config.html', {}, modal_opts);
  91 + },
  92 + all_devices: function () {
  93 + open_modal('/real_control_v2/fragments/north/nav/all_devices.html', {}, modal_opts);
  94 + },
  95 + device_online_rate: function () {
  96 + open_modal('/real_control_v2/fragments/north/nav/charts/device_online_rate.html', {}, modal_opts);
  97 + },
  98 + turnout_rate: function () {
  99 + open_modal('/real_control_v2/fragments/north/nav/charts/car_out_rate.html', {}, modal_opts);
  100 + },
  101 + s_e_punctuality_rate: function () {
  102 + open_modal('/real_control_v2/fragments/north/nav/charts/strat_end_punctuality_rate.html', {}, modal_opts);
  103 + },
  104 + s_e_punctuality_rate_line: function () {
  105 + open_modal('/real_control_v2/fragments/north/nav/charts/s_e_punctuality_rate_line.html', {}, modal_opts);
  106 + },
  107 + history_sch_maintain: function () {
  108 + open_modal('/real_control_v2/fragments/north/nav/history_sch_maintain.html', {}, {
  109 + center: false,
  110 + bgclose: false
  111 + });
  112 + },
  113 + sch_exec_rate: function () {
  114 + open_modal('/real_control_v2/fragments/north/nav/charts/sch_exec_rate.html', {}, modal_opts);
  115 + },
  116 + gps_play_back: function () {
  117 + gb_map_play_back.initParams();
  118 + },
  119 + signal_state: function () {
  120 + open_modal('/real_control_v2/fragments/north/nav/signal_state_config.html', {}, modal_opts);
  121 + },
  122 + line_config: function () {
  123 + open_modal('/real_control_v2/fragments/north/nav/line_config/line_config.html', {}, modal_opts);
  124 + },
  125 + cache_data_manage: function () {
  126 + open_modal('/real_control_v2/fragments/north/nav/cache_data/list.html', {}, modal_opts);
  127 + },
  128 + form_waybill: function () {
  129 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/waybill.html', '行车路单');
  130 + },
  131 + form_waybillQp: function () {
  132 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/waybillQp.html', '行车路单');
  133 + },
  134 + form_history_message: function () {
  135 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/historyMessage.html', '调度历史消息');
  136 + },
  137 + form_account: function () {
  138 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/account.html', '驾驶员请求台账');
  139 + },
  140 + form_daily: function () {
  141 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/daily.html', '班次日报表');
  142 + },
  143 + form_correctForm: function () {
  144 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/correctForm.html', '修正报表');
  145 + },
  146 + form_statisticsDaily: function () {
  147 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/statisticsDaily.html', '统计日报');
  148 + },
  149 + form_scheduleDaily: function () {
  150 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/scheduleDaily.html', '调度日报');
  151 + },
  152 + form_jobSummary: function () {
  153 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/jobSummary.html', '工作汇总');
  154 + },
  155 + form_waybillday: function () {
  156 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/waybilldays/waybillday.html', '行车路单日报表');
  157 + },
  158 + form_inoutstation: function () {
  159 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/report/inoutstation.html', '班次到离站');
  160 + },
  161 + form_shifday: function () {
  162 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/shifdays/shifday.html', '班次车辆人员日报表');
  163 + },
  164 + form_shiftuehiclemanth: function () {
  165 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/shiftuehiclemanths/shiftuehiclemanth.html', '班次车辆人员月报表');
  166 + },
  167 + form_workDaily: function () {
  168 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/workDaily.html', '营运服务日报表');
  169 + }/*,
  170 + form_peopleCarPlan: function () {
  171 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/peopleCarPlan.html', '计划车辆班次人员');
  172 + }*/,
  173 + form_oilListMonth: function () {
  174 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/report/oil/oilListMonth.html', '月存油报表');
  175 + },
  176 + form_scheduleAnaly: function () {
  177 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/scheduleAnaly.html', '时刻表分析');
  178 + },
  179 + form_message: function () {
  180 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/report/message/message.html', '调度消息分析');
  181 + },
  182 + form_commandState: function () {
  183 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/commandState.html', '指令状态分析');
  184 + },
  185 + form_firstAndLastBus: function () {
  186 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/firstAndLastBus.html', '线路首末班查询');
  187 + },
  188 + form_singledata: function () {
  189 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/singledatas/singledata.html', '路单数据');
  190 + },
  191 + form_vehicleloading: function () {
  192 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/vehicleloadings/vehicleloading.html', '车辆加注');
  193 + },
  194 + form_operationservice: function () {
  195 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/operationservices/operationservice.html', '运营服务阶段报表');
  196 + },
  197 + form_linepassengerflow: function () {
  198 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/linepassengerflows/linepassengerflow.html', '线路客流量报表');
  199 + },
  200 + form_changetochange: function () {
  201 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/changetochanges/changetochange.html', '换人换车情况统计表');
  202 + },
  203 + form_turnoutrate: function () {
  204 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/changetochanges/turnoutrate.html', '营运线路出车率统计表');
  205 + },
  206 + form_executionrate: function () {
  207 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/executionrates/executionrate.html', '班次执行率统计表');
  208 + },
  209 + form_allline: function () {
  210 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/alllines/allline.html', '营运线路名称统计表');
  211 + },
  212 + curr_date_schedule: function () {
  213 + open_modal('/real_control_v2/fragments/north/nav/curr_date_schedule.html', {}, modal_opts);
  214 + },
  215 + form_schedule_daily_qp: function () {
  216 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/scheduleDailyQp.html', '调度工作日报表');
  217 + },
  218 + form_schedule_daily: function () {
  219 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/scheduleDaily.html', '调度工作日报表');
  220 + },
  221 + safe_driving: function () {
  222 + open_modal('/real_control_v2/fragments/north/nav/safeDriving.html', {}, modal_opts);
  223 + },
  224 + data_move_and_verification: function () {
  225 + open_modal('/real_control_v2/fragments/north/nav/dataManager/dataMoveAndVerification.html', {}, modal_opts);
  226 + },
  227 + sch_edit_info: function () {
  228 + open_modal('/real_control_v2/fragments/north/nav/sch_edit_info/list.html', {}, modal_opts);
  229 + },
  230 + form_shifday: function () {
  231 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/mforms/shifdays/shifday.html', '班次车辆人员日统计');
  232 + }
  233 + };
  234 +
  235 + return {
  236 + user: function () {
  237 + return currentUser;
  238 + },
  239 + init: init
  240 + }
  241 +})();
... ...
src/main/resources/static/real_control_v2/main_.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <title>线路调度 v2.0</title>
  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" merge="plugins"/>
  10 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" merge="plugins"/>
  11 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" merge="plugins"/>
  12 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css"
  13 + merge="plugins"/>
  14 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css"
  15 + merge="plugins"/>
  16 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css"
  17 + merge="plugins"/>
  18 +
  19 + <!-- main style -->
  20 + <link rel="stylesheet" href="/real_control_v2/css/main.css"/>
  21 + <!-- north style -->
  22 + <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>
  23 + <!-- home style -->
  24 + <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>
  25 + <!-- line style -->
  26 + <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css" merge="custom_style"/>
  27 + <link rel="stylesheet" href="/real_control_v2/css/line_schedule_table.css" merge="custom_style"/>
  28 +
  29 + <link rel="stylesheet" href="/real_control_v2/css/sch_autocomp_result.css" merge="custom_style"/>
  30 + <!-- custom table -->
  31 + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
  32 + <!-- jquery contextMenu style -->
  33 + <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>
  34 + <!-- formvalidation style -->
  35 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css"
  36 + merge="plugins"/>
  37 + <!-- js tree -->
  38 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>
  39 + <!-- tooltip css-->
  40 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" merge="plugins"/>
  41 + <link rel="stylesheet" href="/real_control_v2/css/pace.css" merge="plugins"/>
  42 +
  43 + <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
  44 + <!-- perfect-scrollbar style -->
  45 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css"
  46 + merge="plugins"/>
  47 + <!-- layer 3.0.3 -->
  48 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
  49 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
  50 +
  51 + <!-- flatpickr -->
  52 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css" merge="plugins">
  53 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/themes/airbnb.css" merge="plugins">
  54 +</head>
  55 +
  56 +<body>
  57 +<div class="north uk-width-1-1 uk-panel-box">
  58 + <div class="uk-grid uk-grid-match">
  59 + <div class="uk-width-4-10">
  60 + <div class="uk-panel">
  61 + <h2 class="north-logo">
  62 + <!--<i class="uk-icon-life-ring"></i>--> 闵行公交调度工作台
  63 + </h2>
  64 + </div>
  65 + </div>
  66 + <div class="uk-width-6-10">
  67 + <div class="uk-panel uk-width north-toolbar"></div>
  68 + </div>
  69 + </div>
  70 + <div class="north-tabs"></div>
  71 +</div>
  72 +
  73 +<div class="main-container">
  74 + <div class="load-panel">
  75 + <i class="uk-icon-spinner uk-icon-spin"></i>
  76 + 正在加载数据
  77 + </div>
  78 +</div>
  79 +
  80 +<script>
  81 + /* var gb_beforeunload_fun = function (e) {
  82 + var confirmationMessage = "\o/";
  83 + (e || window.event).returnValue = confirmationMessage;
  84 + return confirmationMessage;
  85 + }
  86 + window.addEventListener("beforeunload", gb_beforeunload_fun);*/
  87 +
  88 + delete window.exports;
  89 + delete window.module;
  90 +
  91 + var ipcMain;
  92 + //是否处于electron环境下
  93 + var isElectron = (function () {
  94 + try {
  95 + if (process.versions.electron)
  96 + return true;
  97 + else
  98 + return false;
  99 + }
  100 + catch (e) {
  101 + return false;
  102 + }
  103 + })();
  104 +
  105 + if (isElectron) {
  106 + var link = document.createElement("link");
  107 + link.type = "text/css";
  108 + link.rel = "stylesheet";
  109 + link.href = "/real_control_v2/css/electron.css";
  110 + document.getElementsByTagName("head")[0].appendChild(link);
  111 +
  112 + ipcMain = require('electron').ipcRenderer;
  113 + }
  114 +</script>
  115 +
  116 +<!-- 地图相关 -->
  117 +<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
  118 +<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
  119 +<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>
  120 +<script src="/assets/js/TransGPS.js" merge="plugins"></script>
  121 +<!-- 高德 -->
  122 +<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script>
  123 +<!-- jquery -->
  124 +<script src="/real_control_v2/assets/js/jquery.min.js"></script>
  125 +<!-- jquery actual -->
  126 +<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
  127 +<!-- jquery.serializejson JSON序列化插件 -->
  128 +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
  129 +<!-- moment.js 日期处理类库 -->
  130 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  131 +<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
  132 +
  133 +<!-- flatpickr -->
  134 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
  135 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
  136 +
  137 +<!-- perfect-scrollbar -->
  138 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  139 +<!-- common js -->
  140 +<script src="/real_control_v2/js/common.js"></script>
  141 +<!-- art-template 模版引擎 -->
  142 +<script src="/assets/plugins/template.js" merge="plugins"></script>
  143 +<!-- d3 -->
  144 +<script src="/assets/js/d3.min.js"></script>
  145 +<!-- EventProxy -->
  146 +<script src="/assets/js/eventproxy.js"></script>
  147 +<!-- main js -->
  148 +<script src="/real_control_v2/js/main.js"></script>
  149 +<!-- uikit core -->
  150 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
  151 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
  152 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>
  153 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
  154 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>
  155 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>
  156 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js" merge="uikit_js"></script>
  157 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/lightbox.min.js" merge="uikit_js"></script>
  158 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
  159 +
  160 +
  161 +<!-- jquery contextMenu -->
  162 +<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>
  163 +<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>
  164 +<!-- formvalidation- -->
  165 +<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>
  166 +<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>
  167 +<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>
  168 +
  169 +<!-- jquery-validation- -->
  170 +<script src="/real_control_v2/assets/plugins/jquery-validation/js/jquery.validate.min.js" merge="plugins"></script>
  171 +<script src="/real_control_v2/assets/plugins/jquery-validation/js/localization/messages_zh.js" merge="plugins"></script>
  172 +
  173 +<!-- js tree -->
  174 +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
  175 +<!-- simple pinyin -->
  176 +<script src="/assets/plugins/pinyin.js" merge="plugins"></script>
  177 +<!-- qtip -->
  178 +<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
  179 +<!-- layer 3.0.3 -->
  180 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
  181 +
  182 +<!-- 数据 -->
  183 +<script src="/real_control_v2/js/data/data_basic.js" merge="custom_js"></script>
  184 +<script src="/real_control_v2/js/data/data_gps.js" merge="custom_js"></script>
  185 +<script src="/real_control_v2/js/data/gps_abnormal.js" merge="custom_js"></script>
  186 +<script src="/real_control_v2/js/data/data_line_config.js" merge="custom_js"></script>
  187 +<!-- 线路模拟图 -->
  188 +<script src="/real_control_v2/js/utils/svg_chart.js" merge="custom_js"></script>
  189 +<script src="/real_control_v2/js/utils/svg_data_convert.js" merge="custom_js"></script>
  190 +<script src="/real_control_v2/js/utils/svg_chart_tooltip.js" merge="custom_js"></script>
  191 +<script src="/real_control_v2/js/utils/svg_chart_map.js" merge="custom_js"></script>
  192 +
  193 +<!-- custom table js -->
  194 +<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
  195 +<!-- north js -->
  196 +<script src="/real_control_v2/js/north/toolbar_.js" merge="custom_js"></script>
  197 +<script src="/real_control_v2/js/north/tabs.js" merge="custom_js"></script>
  198 +<script src="/real_control_v2/js/north/second_timer.js" merge="custom_js"></script>
  199 +<!-- home js -->
  200 +<script src="/real_control_v2/js/home/layout.js" merge="custom_js"></script>
  201 +<script src="/real_control_v2/js/home/line_panel.js" merge="custom_js"></script>
  202 +<script src="/real_control_v2/js/home/context_menu.js" merge="custom_js"></script>
  203 +<!-- line schedule js -->
  204 +<script src="/real_control_v2/js/line_schedule/legend.js" merge="custom_js"></script>
  205 +<script src="/real_control_v2/js/line_schedule/layout.js" merge="custom_js"></script>
  206 +<script src="/real_control_v2/js/line_schedule/sch_table.js" merge="custom_js"></script>
  207 +<script src="/real_control_v2/js/line_schedule/context_menu.js" merge="custom_js"></script>
  208 +<script src="/real_control_v2/js/line_schedule/dbclick.js" merge="custom_js"></script>
  209 +<script src="/real_control_v2/js/line_schedule/search.js" merge="custom_js"></script>
  210 +<script src="/real_control_v2/js/line_schedule/badge_tooltip.js" merge="custom_js"></script>
  211 +<script src="/real_control_v2/js/line_schedule/mileage_count.js" merge="custom_js"></script>
  212 +
  213 +<!-- 字典相关 -->
  214 +<script src="/assets/js/dictionary.js" merge="custom_js"></script>
  215 +<!-- websocket -->
  216 +<script src="/real_control_v2/assets/plugins/sockjs-client/sockjs.min.js"></script>
  217 +<script src="/real_control_v2/js/websocket/sch_websocket.js" merge="custom_js"></script>
  218 +<!-- tts -->
  219 +<script src="/real_control_v2/js/utils/tts.js" merge="custom_js"></script>
  220 +
  221 +<!-- echart -->
  222 +<script src="/real_control_v2/assets/echarts-3/echarts.js" merge="plugins"></script>
  223 +<!-- Geolib -->
  224 +<script src="/real_control_v2/geolib/geolib.js" merge="plugins"></script>
  225 +
  226 +<script src="/real_control_v2/js/signal_state/signal_state.js" merge="custom_js"></script>
  227 +<script src="/real_control_v2/js/utils/dispatch_pattern.js" merge="custom_js"></script>
  228 +
  229 +<!-- 处理表单片段嵌入问题 -->
  230 +<script src="/real_control_v2/js/forms/form_embed.js" merge="custom_js"></script>
  231 +<!-- 模态框扩展 -->
  232 +<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
  233 +
  234 +<!-- #### 安全驾驶 start ### -->
  235 +<div class="safe_driv_pop_wrap"></div>
  236 +<script id="safe_driv_item-temp" type="text/html">
  237 + <div class="safe_driv_pop uk-animation-slide-bottom" data-nbbm="{{clzbh}}" data-type="{{yczltype}}"
  238 + data-title="{{clzbh}} {{timeStr}} {{ycztText}}" data-url="{{url}}">
  239 + <div>
  240 + <span class="title">异常&nbsp;{{clzbh}}</span>
  241 + <span class="text"> {{timeStr}} 出现违规驾驶({{ycztText}})</span>
  242 + <span class="desc">--安全驾驶监管平台</span>
  243 + </div>
  244 + </div>
  245 +</script>
  246 +
  247 +<script src="/real_control_v2/js/safe_driv/safeDriv.js" merge="custom_js"></script>
  248 +<!-- #### 安全驾驶 end ### -->
  249 +
  250 +<!-- 打电话 -->
  251 +<script src="/real_control_v2/js/safe_driv/call_phone.js"></script>
  252 +
  253 +<script id="voip_call_info_panel-temp" type="text/html">
  254 + <div class="voip_call_info_panel" style="{{style}}">
  255 + <p class="_title">VOIP</p>
  256 + <form class="uk-form uk-form-horizontal">
  257 +
  258 + <div class="uk-form-row">
  259 + <label class="uk-form-label">工号:</label>
  260 + <div class="uk-form-controls">
  261 + <input type="text" name="agentID" value="1002" disabled>
  262 + </div>
  263 + </div>
  264 + <div class="uk-form-row">
  265 + <label class="uk-form-label" ">分机号:</label>
  266 + <div class="uk-form-controls">
  267 + <input type="text" name="dn" value="">
  268 + </div>
  269 + </div>
  270 + <div class="uk-form-row">
  271 + <label class="uk-form-label">自编号:</label>
  272 + <div class="uk-form-controls">
  273 + <input type="text" value="{{nbbm}}" disabled>
  274 + </div>
  275 + </div>
  276 + <div class="uk-form-row">
  277 + <label class="uk-form-label">SIM号:</label>
  278 + <div class="uk-form-controls">
  279 + <input type="text" name="simNo" disabled>
  280 + </div>
  281 + </div>
  282 + <hr>
  283 + <h4 class="state_txt">
  284 + <button class="uk-button uk-button-large" type="button" disabled>获取SIM卡号...</button>
  285 + </h4>
  286 + </form>
  287 + </div>
  288 +</script>
  289 +</body>
  290 +
  291 +</html>
  292 +<script>
  293 + $('body').on('click','.sidebar-toggler',function(){
  294 + if ($(".uk-width-1-6").css("display") == "none") {
  295 + $('.uk-width-5-6').css("width", "83.33%");
  296 + $('.uk-width-1-6').show();
  297 + } else {
  298 + $('.uk-width-5-6').css("width", "98.99%");
  299 + $('.uk-width-1-6').hide();
  300 + }
  301 + })
  302 +</script>
0 303 \ No newline at end of file
... ...