Commit dfab6eb47926ba58a503cec3d5e0fd1220fec337

Authored by 王通
1 parent 3c08b97c

1.

src/main/resources/static/index.html
1 -<!DOCTYPE html>  
2 -<html lang="zh">  
3 -<head>  
4 - <meta name="renderer" content="webkit" />  
5 - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />  
6 - <meta charset="UTF-8">  
7 - <title>调度系统</title>  
8 -  
9 - <meta http-equiv="Pragma" content="no-cache">  
10 - <meta http-equiv="Cache-control" content="no-cache">  
11 - <meta http-equiv="Cache" content="no-cache">  
12 -  
13 - <!-- Font Awesome 图标字体 -->  
14 - <link  
15 - href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"  
16 - rel="stylesheet" type="text/css" />  
17 - <!-- Bootstrap style -->  
18 - <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"  
19 - rel="stylesheet" type="text/css" />  
20 - <!-- jsTree 数插件 -->  
21 - <link  
22 - href="/metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css"  
23 - rel="stylesheet" type="text/css" />  
24 - <!-- MULTI-select 多选下拉框美化 -->  
25 - <link  
26 - href="/metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css"  
27 - rel="stylesheet" type="text/css" />  
28 -  
29 - <!-- editable -->  
30 - <link  
31 - href="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css"  
32 - rel="stylesheet" type="text/css" />  
33 - <!-- METRONIC style -->  
34 - <link href="/metronic_v4.5.4/layout4/css/themes/light.min.css"  
35 - rel="stylesheet" type="text/css" id="style_color" />  
36 - <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"  
37 - type="text/css" />  
38 - <link href="/metronic_v4.5.4/css/plugins.css" rel="stylesheet"  
39 - type="text/css" />  
40 - <link href="/metronic_v4.5.4/layout4/css/layout.min.css"  
41 - rel="stylesheet" type="text/css" />  
42 - <link href="/metronic_v4.5.4/layout4/css/custom.min.css"  
43 - rel="stylesheet" type="text/css" />  
44 - <!-- select2 下拉框插件 -->  
45 - <link href="/metronic_v4.5.4/plugins/select2/css/select2.min.css"  
46 - rel="stylesheet" type="text/css" />  
47 - <link  
48 - href="/metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css"  
49 - rel="stylesheet" type="text/css" />  
50 - <!-- layer 弹层 插件 -->  
51 - <link href="/assets/plugins/layer-v2.4/layer/skin/layer.css"  
52 - rel="stylesheet" type="text/css" />  
53 - <!-- fileinput 上传 插件 -->  
54 - <link href="/assets/plugins/fileinput/css/fileinput.min.css"  
55 - rel="stylesheet" type="text/css" />  
56 - <!-- iCheck 单选框和复选框 -->  
57 - <link href="/metronic_v4.5.4/plugins/icheck/skins/all.css"  
58 - rel="stylesheet" type="text/css" />  
59 - <!-- 日期控件 -->  
60 - <link  
61 - href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"  
62 - rel="stylesheet" type="text/css" />  
63 - <!-- table 表格控件 -->  
64 - <!--<link rel="stylesheet"-->  
65 - <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"-->  
66 - <!--type="text/css" />-->  
67 - <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/>  
68 - <!-- handsontable样式 -->  
69 - <link rel="stylesheet"  
70 - href="/assets/bower_components/handsontable/dist/handsontable.full.css" />  
71 - <!-- sweetalert样式 -->  
72 - <link rel="stylesheet"  
73 - href="/assets/bower_components/sweetalert/dist/sweetalert.css" />  
74 - <!-- schedule计划调度AngularJS模块主css -->  
75 - <link rel="stylesheet" href="/pages/scheduleApp/module/common/main.css"  
76 - type="text/css" />  
77 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>  
78 -  
79 - <!-- CSS动画 -->  
80 - <link  
81 - href="/metronic_v4.5.4/plugins/tipso/css/animate.css"  
82 - rel="stylesheet" type="text/css" />  
83 -  
84 - <!-- 提示工具样式 -->  
85 - <link  
86 - href="/metronic_v4.5.4/plugins/tipso/css/tipso.css"  
87 - rel="stylesheet" type="text/css" />  
88 -  
89 - <style type="text/css">  
90 - .searchForm {  
91 -  
92 - }  
93 -  
94 - .searchForm .form-group .control-label {  
95 - padding-right: 0px;  
96 - text-align: right;  
97 - margin-top: 7px;  
98 - }  
99 -  
100 - .searchForm .form-group>div {  
101 - padding-left: 10px;  
102 - padding-right: 0px;  
103 - }  
104 -  
105 - .searchForm .row>div {  
106 - padding-left: 0px;  
107 - padding-right: 0px;  
108 - padding: 5px 0 5px 0;  
109 - width: 270px;  
110 - display: inline-block;  
111 - }  
112 -  
113 - .searchForm .form-actions {  
114 -  
115 - }  
116 -  
117 - tr.row-active td {  
118 - border-bottom: 1px solid blue !important;  
119 - color: blue;  
120 - }  
121 -  
122 - .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection  
123 - {  
124 - font-size: 14px;  
125 - }  
126 -  
127 - .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection  
128 - {  
129 - padding: 6px 26px;  
130 - }  
131 -  
132 - .ms-container .ms-list {  
133 - height: 306px;  
134 - }  
135 -  
136 - .ms-container .ms-selectable,.ms-container .ms-selection {  
137 - width: 47%;  
138 - }  
139 -  
140 - .ms-container {  
141 - width: 470px;  
142 - margin: auto;  
143 - }  
144 -  
145 - .multi-custom-header-left {  
146 - text-align: center;  
147 - padding: 7px;  
148 - color: #3B3F51;  
149 - }  
150 -  
151 - .multi-custom-header-right {  
152 - text-align: center;  
153 - padding: 7px;  
154 - font-weight: bold;  
155 - color: #36C6D3;  
156 - }  
157 -  
158 - .mt-element-list .list-simple.mt-list-container ul>.mt-list-item>.list-item-content  
159 - {  
160 - padding: 0 55px 0 0px;  
161 - }  
162 -  
163 - .mt-element-list .list-simple.mt-list-container ul>.mt-list-item {  
164 - padding: 3.3px 0;  
165 - }  
166 -  
167 - #route-container {  
168 - display: none;  
169 - }  
170 -  
171 - .page-content.active {  
172 - display: block !important;  
173 - }  
174 -  
175 - .page-header.navbar .page-logo .logo-default {  
176 - margin: 0;  
177 - }  
178 -  
179 - .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle  
180 - {  
181 - background-color: #284a99;  
182 - }  
183 -  
184 - .page-header.navbar .page-logo {  
185 - padding-right: 10px;  
186 - }  
187 -  
188 - .page-logo .logo-default.logo-default-text {  
189 - font-weight: 600;  
190 - color: white !important;  
191 - margin-top: 19px !important;  
192 - font-size: 24px;  
193 - text-decoration: none;  
194 - }  
195 -  
196 - .page-logo .logo-default.logo-default-text:HOVER {  
197 - color: #dedede !important;  
198 - }  
199 -  
200 - body,.page-content-wrapper,#pjax-container{  
201 - height: 100%;  
202 - }  
203 - html{  
204 - height: 90%;  
205 - }  
206 - .page-container{  
207 - height: 100%;  
208 - }  
209 - </style>  
210 -  
211 - <!-- ocLazyLoading载入文件的位置 -->  
212 - <link id="ng_load_plugins_before" />  
213 -  
214 -</head>  
215 -<body  
216 - class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">  
217 -<div class="page-header navbar navbar-fixed-top"  
218 - style="background: linear-gradient(to bottom, #124e78, #125688);">  
219 - <div class="page-header-inner ">  
220 - <!-- LOGO -->  
221 - <div class="page-logo">  
222 - <a href="index.html" class="logo-default logo-default-text">  
223 - 闵行公交调度系统 </a>  
224 - <div class="menu-toggler sidebar-toggler"></div>  
225 - </div>  
226 - <!-- END LOGO -->  
227 - <a href="javascript:;" class="menu-toggler responsive-toggler"  
228 - data-toggle="collapse" data-target=".navbar-collapse"> </a>  
229 - <div class="page-top">  
230 - <div class="top-menu">  
231 - <ul class="nav navbar-nav pull-right">  
232 - <!-- 信息通知区 -->  
233 - <li  
234 - class="dropdown dropdown-extended dropdown-notification dropdown-dark"  
235 - id="header_notification_bar"><a href="javascript:;"  
236 - class="dropdown-toggle" data-toggle="dropdown"  
237 - data-hover="dropdown" data-close-others="true"> <i  
238 - class="fa fa-bell"></i> <span class="badge badge-success">  
239 - 0 </span>  
240 - </a>  
241 - <ul class="dropdown-menu" style="max-width: 345px; width: 345px;">  
242 - <li class="external">  
243 - <h3>  
244 - 今日 <span class="bold">0 条</span> 通知  
245 - </h3> <a href="javascript:;">查看全部</a>  
246 - </li>  
247 - <li>  
248 - <ul class="dropdown-menu-list scroller" style="height: 250px;"  
249 - data-handle-color="#637283">  
250 - </ul>  
251 - </li>  
252 - </ul></li>  
253 - <li class="dropdown dropdown-user dropdown-dark"><a  
254 - href="javascript:;" class="dropdown-toggle"  
255 - data-toggle="dropdown" data-hover="dropdown"  
256 - data-close-others="true"> <span id="indexTopUName"  
257 - class="username username-hide-on-mobile"  
258 - style="vertical-align: middle;"> <i class="fa fa-user"></i></span>  
259 - </a>  
260 - <ul class="dropdown-menu dropdown-menu-default">  
261 - <li><a href="javascript:;"> <i class="fa fa-user"></i>  
262 - 我的信息  
263 - </a></li>  
264 - <li><a href="javascript:;" id="changePWD"> <i  
265 - class="fa fa-unlock-alt"></i> 修改密码  
266 - </a></li>  
267 - <li class="divider"></li>  
268 - <li><a href="javascript:;"> <i class="fa fa-lock"></i>  
269 - 锁屏  
270 - </a></li>  
271 - <li><a href="/logout"> <i class="fa fa-key"></i> 注销登陆  
272 - </a></li>  
273 - </ul></li>  
274 - </ul>  
275 - </div>  
276 - </div>  
277 - </div>  
278 -</div>  
279 -<div class="page-container">  
280 - <div class="page-sidebar-wrapper">  
281 - <div class="page-sidebar navbar-collapse collapse">  
282 - <ul class="page-sidebar-menu page-sidebar-menu-fixed"  
283 - data-keep-expanded="false" data-auto-scroll="true"  
284 - data-slide-speed="200" id="leftMenuSidebar">  
285 - </ul>  
286 - </div>  
287 - </div>  
288 - <div class="page-content-wrapper">  
289 - <div id="pjax-container" class="page-content"></div>  
290 - <a name="xd_position"></a>  
291 - <div id="route-container">  
292 - <div ng-app="ScheduleApp">  
293 - <div ng-controller="ScheduleAppController">  
294 -  
295 - <!-- loading widget -->  
296 - <div id="loadingWidget" class="flyover mask" loading-widget>  
297 - <div class="alert alert-info">  
298 - <strong>载入中......</strong>  
299 - </div>  
300 - </div>  
301 -  
302 - <div ui-view class="uv"></div>  
303 - </div>  
304 - </div>  
305 - </div>  
306 - </div>  
307 -</div>  
308 -  
309 -<script id="menu_list_temp" type="text/html">  
310 - {{each list as group i}}  
311 - <li class="heading">  
312 - <h3 class="uppercase">{{group.name}}</h3>  
313 - </li>  
314 - {{each group.children as dir j}}  
315 - <li class="nav-item">  
316 - <a href="javascript:;" class="nav-link nav-toggle ">  
317 - <i class="{{dir.icon}}"></i>  
318 - <span class="title">{{dir.name}}</span>  
319 - <span class="arrow"></span>  
320 - </a>  
321 - <ul class="sub-menu">  
322 - {{each dir.children as module s}}  
323 - <li class="nav-item ">  
324 - {{if module.container=="pjax-container"}}  
325 - <a href="/pages/{{module.path}}" class="nav-link " data-pjax>  
326 - <span class="title">{{module.name}}</span>  
327 - </a>  
328 - {{else}}  
329 - <a href="{{module.path}}" class="nav-link " data-angularjs>  
330 - <span class="title">{{module.name}}</span>  
331 - </a>  
332 - {{/if}}  
333 - </li>  
334 - {{/each}}  
335 - </ul>  
336 - </li>  
337 - {{/each}}  
338 - {{/each}}  
339 -  
340 -</script>  
341 -<script>  
342 - delete window.require;  
343 - delete window.exports;  
344 - delete window.module;  
345 -</script>  
346 -<!-- jQuery -->  
347 -<script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script>  
348 -<!-- bootstrap -->  
349 -<script src="/metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js"  
350 - data-exclude=1></script>  
351 -<script src="/pages/forms/statement/js/jquery.autocompleter.js"></script>  
352 -<script src="/pages/forms/statement/js/jquery.PrintArea.js"></script>  
353 -<!-- MTRONIC JS -->  
354 -<script src="/metronic_v4.5.4/scripts/app.min.js" data-exclude=1></script>  
355 -<script src="/metronic_v4.5.4/layout4/scripts/layout.min.js"  
356 - data-exclude=1></script>  
357 -<!-- 虚拟滚动条 -->  
358 -<script  
359 - src="/metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js"></script>  
360 -<!-- jsTree 树插件 -->  
361 -<script src="/metronic_v4.5.4/plugins/jstree/dist/jstree.min.js"></script>  
362 -<!-- bootstrap-hover-dropDown -->  
363 -<script  
364 - src="/metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script>  
365 -<!-- jquery.validate 表单验证 -->  
366 -<script  
367 - src="/metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>  
368 -<script  
369 - src="/metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>  
370 -<!-- 向导式插件 -->  
371 -<script  
372 - src="/metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>  
373 -<!-- iCheck 单选框和复选框 -->  
374 -<script src="/metronic_v4.5.4/plugins/icheck/icheck.min.js"></script>  
375 -<!-- select2 下拉框 -->  
376 -<script src="/metronic_v4.5.4/plugins/select2/js/select2.full.min.js"></script>  
377 -<!-- MULTI SELECT 多选下拉框 -->  
378 -<script  
379 - src="/metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js"></script>  
380 -<!-- editable.js -->  
381 -<script  
382 - src="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js"></script>  
383 -<!-- PJAX -->  
384 -<script src="/assets/plugins/jquery.pjax.js"></script>  
385 -<!-- layer 弹层 -->  
386 -<script src="/assets/plugins/layer-v2.4/layer/layer.js" data-exclude=1></script>  
387 -<!-- fileinput 上传 -->  
388 -<script src="/assets/plugins/fileinput/canvas-to-blob.min.js"></script>  
389 -<script src="/assets/plugins/fileinput/purify.min.js"></script>  
390 -<script src="/assets/plugins/fileinput/sortable.min.js"></script>  
391 -<script src="/assets/plugins/fileinput/fileinput.min.js"></script>  
392 -<script src="/assets/plugins/fileinput/fileinput_locale_zh.js"></script>  
393 -<!-- jquery.purl URL解析 -->  
394 -<script src="/assets/plugins/purl.js"></script>  
395 -<!-- jquery.serializejson JSON序列化插件 -->  
396 -<script src="/assets/plugins/jquery.serializejson.js"></script>  
397 -<!-- art-template 模版引擎 -->  
398 -<script src="/assets/plugins/template.js"></script>  
399 -<!-- jquery.pageinator 分页 -->  
400 -<script src="/assets/plugins/jqPaginator.min.js"></script>  
401 -<!-- moment.js 日期处理类库 -->  
402 -<script src="/assets/plugins/moment-with-locales.js"></script>  
403 -  
404 -<script src="/assets/plugins/pinyin.js"></script>  
405 -<!-- 日期控件 -->  
406 -<script  
407 - src="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js"></script>  
408 -<!-- 表格控件 -->  
409 -<script src="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script>  
410 -<!-- 统计图控件 -->  
411 -<!--<script src="/assets/global/getEchart.js"></script>  
412 -<script src="/assets/global/echarts.js"></script> -->  
413 -<script src="/assets/js/common.js"></script>  
414 -<script src="/assets/js/dictionary.js"></script>  
415 -<!-- tipso JS -->  
416 -<script src="/metronic_v4.5.4/plugins/tipso/js/tipso.js"></script>  
417 -<script data-exclude=1>  
418 - //初始打开的片段地址  
419 - var initFragment = "^_^initFragment^_^";  
420 - //静态文件目录  
421 - var dir = '/pages/';  
422 - //片段容器  
423 - var pjaxContainer = '#pjax-container'  
424 - , angJsContainer = '#route-container';  
425 -  
426 - $(document).ajaxError(function (event, jqxhr, settings, thrownError) {  
427 - if(jqxhr.status == 403){  
428 - layer.closeAll();  
429 - layer.alert(jqxhr.message?jqxhr.message:'访问被拒绝', {icon: 2, title: '操作失败'});  
430 - }  
431 - });  
432 -  
433 - $(function () {  
434 - $.get('/user/currentUser', function (user) {  
435 - $('#indexTopUName').text(user.userName);  
436 - });  
437 -  
438 - //带 data-pjax 的链接由pjax加载  
439 - $(document).pjax('a[data-pjax]', pjaxContainer);  
440 -  
441 - //pjax左菜单点击事件  
442 - $(document).on('click', '#leftMenuSidebar a[data-pjax]', function () {  
443 - setTitle(this);  
444 -  
445 - $('#leftMenuSidebar li.nav-item.active').removeClass('active');  
446 - $(this).parent().addClass('active');  
447 - showPjax();  
448 - });  
449 -  
450 - //angularjs左菜单点击事件  
451 - $(document).on('click', '#leftMenuSidebar a[data-angularjs]', function () {  
452 - setTitle(this);  
453 -  
454 - $('#leftMenuSidebar li.nav-item.active').removeClass('active');  
455 - $(this).parent().addClass('active');  
456 - showAngJs();  
457 - });  
458 -  
459 - //加载左菜单栏  
460 - $get('/module/findByCurrentUser', null,  
461 - function (ms) {  
462 - var treeArray = createTreeData(ms);  
463 - treeArray.sort(function (a, b) {  
464 - return a.createDate - b.createDate;  
465 - });  
466 - var menuHtml = template('menu_list_temp', {list: treeArray});  
467 - $('#leftMenuSidebar').html(menuHtml);  
468 -  
469 - //----------- 检查URL ----------------  
470 - var h = location.hash;  
471 - if (initFragment && initFragment != '') {  
472 - showPjax();  
473 - //普通片段  
474 - loadPage(initFragment);  
475 - //选中菜单  
476 - $.each($('#leftMenuSidebar a'), function (i, item) {  
477 - if (urlPattern($(item).attr('href'), initFragment)) {  
478 - activeLeftMenu(item);  
479 - }  
480 - });  
481 - } else if (h) {  
482 - //angularjs片段  
483 - showAngJs();  
484 - //选中菜单  
485 - $.each($('#leftMenuSidebar a'), function (i, item) {  
486 - if ($(item).attr('href') == h) {  
487 - activeLeftMenu(item);  
488 - }  
489 - });  
490 - }  
491 - else {  
492 - //加载主页  
493 - loadPage('/pages/home.html');  
494 - }  
495 - });  
496 -  
497 - //修改密码  
498 - $('#changePWD').on('click', function () {  
499 - $.get('/pages/permission/user/changePWD.html', function (content) {  
500 - layer.open({  
501 - type: 1,  
502 - area: ['600px', '360px'],  
503 - content: content,  
504 - title: '修改密码',  
505 - shift: 5,  
506 - scrollbar: false,  
507 - success: function () {  
508 - }  
509 - });  
510 - });  
511 - });  
512 - });  
513 -  
514 - //modal关闭时销毁dom  
515 - $(document).on('hidden.bs.modal', '.modal', function () {  
516 - $(this).remove();  
517 - });  
518 -  
519 - //pjax加载完成事件  
520 - $(document).on('pjax:success', function () {  
521 - var dicts = $(pjaxContainer).find('.nt-dictionary');  
522 - dictionaryUtils.transformDom(dicts);  
523 - });  
524 -  
525 - function loadPage(url) {  
526 - $.pjax({url: url, container: pjaxContainer})  
527 - }  
528 -  
529 - function urlPattern(a, b) {  
530 - var r;  
531 - try {  
532 - r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));  
533 - } catch (e) {  
534 - r = false;  
535 - }  
536 - return r;  
537 - }  
538 -  
539 - function showPjax() {  
540 - $(angJsContainer).removeClass('page-content active').hide();  
541 - $(pjaxContainer).addClass('page-content active');  
542 - }  
543 -  
544 - function showAngJs() {  
545 - $(pjaxContainer).html('').removeClass('page-content active').hide();  
546 - $(angJsContainer).addClass('page-content active');  
547 - }  
548 -  
549 - function activeLeftMenu(item) {  
550 - $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');  
551 - setTitle(item);  
552 - }  
553 -  
554 - function setTitle(menuItem){  
555 - document.title = $('span.title', menuItem).text();  
556 - }  
557 -  
558 -</script>  
559 -<!-- d3 -->  
560 -<script src="/assets/js/d3.min.js" data-exclude=1></script>  
561 -<!-- webSocket JS -->  
562 -<script src="/assets/js/sockjs.min.js"></script>  
563 -  
564 -<!-- TODO:angularJS相关库 -->  
565 -  
566 -<!-- angularJS相关库 -->  
567 -<!-- 这个是基于angularjs 1.4.10修改的版本,主要是修改了history控制部分,用于兼容route和pjax的同时操作history的冲突 -->  
568 -<script src="/assets/js/angular.js" data-autocephaly=1></script>  
569 -<script src="/assets/bower_components/angular-i18n/angular-locale_zh-cn.js" data-autocephaly=1></script>  
570 -<script  
571 - src="/assets/bower_components/angular-resource/angular-resource.min.js"  
572 - data-exclude=1></script>  
573 -<script  
574 - src="/assets/bower_components/angular-sanitize/angular-sanitize.min.js"  
575 - data-exclude=1></script>  
576 -<script  
577 - src="/assets/bower_components/angular-animate/angular-animate.min.js"  
578 - data-exclude=1></script>  
579 -<script  
580 - src="/assets/bower_components/angular-touch/angular-touch.min.js"  
581 - data-exclude=1></script>  
582 -<script  
583 - src="/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js"  
584 - data-exclude=1></script>  
585 -<script  
586 - src="/assets/bower_components/oclazyload/dist/ocLazyLoad.min.js"  
587 - data-exclude=1></script>  
588 -<script  
589 - src="/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"  
590 - data-exclude=1></script>  
591 -<!-- handsontable相关js -->  
592 -<script  
593 - src="/assets/bower_components/handsontable/dist/handsontable.full.js"></script>  
594 -<script  
595 - src="/assets/bower_components/ngHandsontable/dist/ngHandsontable.js"></script>  
596 -<!-- sweetalert相关js -->  
597 -<script src="/assets/bower_components/sweetalert/dist/sweetalert.min.js"></script>  
598 -<script src="/assets/bower_components/ng-sweet-alert/ng-sweet-alert.js"></script>  
599 -  
600 -<!-- schedule计划调度AngularJS模块主JS -->  
601 -<script src="/pages/scheduleApp/module/common/main.js" data-exclude=1></script>  
602 -<script  
603 - src="/pages/scheduleApp/module/common/prj-common-globalservice.js"  
604 - data-exclude=1></script>  
605 -<script src="/pages/scheduleApp/module/common/prj-common-filter.js"  
606 - data-exclude=1></script>  
607 -<script src="/pages/scheduleApp/module/common/prj-common-directive.js"  
608 - data-exclude=1></script>  
609 -<script  
610 - src="/pages/scheduleApp/module/common/prj-common-ui-route-state.js"  
611 - data-exclude=1></script>  
612 -  
613 -<!-- 地图相关 -->  
614 -<!-- 百度 -->  
615 -<script  
616 - src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"  
617 - data-exclude=1></script>  
618 -<script  
619 - src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"  
620 - data-exclude=1></script>  
621 -<script type="text/javascript"  
622 - src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"  
623 - data-exclude=1></script>  
624 -<script type="text/javascript"  
625 - src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "  
626 - data-exclude=1></script>  
627 -<script src="/assets/js/baidu/TextIconOverlay.js" data-exclude=1></script>  
628 -<script src="/assets/js/baidu//MarkerClusterer.js" data-exclude=1></script>  
629 -<!-- 高德 -->  
630 -<script  
631 - src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"  
632 - data-exclude=1></script>  
633 -<!-- echarts4 误删 -->  
634 -<script src="/metronic_v4.5.4/plugins/echarts4/echarts.min.js"></script>  
635 -  
636 -</body> 1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +<head>
  4 + <meta name="renderer" content="webkit" />
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  6 + <meta charset="UTF-8">
  7 + <title>调度系统</title>
  8 +
  9 + <meta http-equiv="Pragma" content="no-cache">
  10 + <meta http-equiv="Cache-control" content="no-cache">
  11 + <meta http-equiv="Cache" content="no-cache">
  12 +
  13 + <!-- Font Awesome 图标字体 -->
  14 + <link
  15 + href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"
  16 + rel="stylesheet" type="text/css" />
  17 + <!-- Bootstrap style -->
  18 + <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"
  19 + rel="stylesheet" type="text/css" />
  20 + <!-- jsTree 数插件 -->
  21 + <link
  22 + href="/metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css"
  23 + rel="stylesheet" type="text/css" />
  24 + <!-- MULTI-select 多选下拉框美化 -->
  25 + <link
  26 + href="/metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css"
  27 + rel="stylesheet" type="text/css" />
  28 +
  29 + <!-- editable -->
  30 + <link
  31 + href="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css"
  32 + rel="stylesheet" type="text/css" />
  33 + <!-- METRONIC style -->
  34 + <link href="/metronic_v4.5.4/layout4/css/themes/light.min.css"
  35 + rel="stylesheet" type="text/css" id="style_color" />
  36 + <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
  37 + type="text/css" />
  38 + <link href="/metronic_v4.5.4/css/plugins.css" rel="stylesheet"
  39 + type="text/css" />
  40 + <link href="/metronic_v4.5.4/layout4/css/layout.min.css"
  41 + rel="stylesheet" type="text/css" />
  42 + <link href="/metronic_v4.5.4/layout4/css/custom.min.css"
  43 + rel="stylesheet" type="text/css" />
  44 + <!-- select2 下拉框插件 -->
  45 + <link href="/metronic_v4.5.4/plugins/select2/css/select2.min.css"
  46 + rel="stylesheet" type="text/css" />
  47 + <link
  48 + href="/metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css"
  49 + rel="stylesheet" type="text/css" />
  50 + <!-- layer 弹层 插件 -->
  51 + <link href="/assets/plugins/layer-v2.4/layer/skin/layer.css"
  52 + rel="stylesheet" type="text/css" />
  53 + <!-- fileinput 上传 插件 -->
  54 + <link href="/assets/plugins/fileinput/css/fileinput.min.css"
  55 + rel="stylesheet" type="text/css" />
  56 + <!-- iCheck 单选框和复选框 -->
  57 + <link href="/metronic_v4.5.4/plugins/icheck/skins/all.css"
  58 + rel="stylesheet" type="text/css" />
  59 + <!-- 日期控件 -->
  60 + <link
  61 + href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"
  62 + rel="stylesheet" type="text/css" />
  63 + <!-- table 表格控件 -->
  64 + <!--<link rel="stylesheet"-->
  65 + <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"-->
  66 + <!--type="text/css" />-->
  67 + <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/>
  68 + <!-- handsontable样式 -->
  69 + <link rel="stylesheet"
  70 + href="/assets/bower_components/handsontable/dist/handsontable.full.css" />
  71 + <!-- sweetalert样式 -->
  72 + <link rel="stylesheet"
  73 + href="/assets/bower_components/sweetalert/dist/sweetalert.css" />
  74 + <!-- schedule计划调度AngularJS模块主css -->
  75 + <link rel="stylesheet" href="/pages/scheduleApp/module/common/main.css"
  76 + type="text/css" />
  77 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  78 +
  79 + <!-- CSS动画 -->
  80 + <link
  81 + href="/metronic_v4.5.4/plugins/tipso/css/animate.css"
  82 + rel="stylesheet" type="text/css" />
  83 +
  84 + <!-- 提示工具样式 -->
  85 + <link
  86 + href="/metronic_v4.5.4/plugins/tipso/css/tipso.css"
  87 + rel="stylesheet" type="text/css" />
  88 +
  89 + <style type="text/css">
  90 + .searchForm {
  91 +
  92 + }
  93 +
  94 + .searchForm .form-group .control-label {
  95 + padding-right: 0px;
  96 + text-align: right;
  97 + margin-top: 7px;
  98 + }
  99 +
  100 + .searchForm .form-group>div {
  101 + padding-left: 10px;
  102 + padding-right: 0px;
  103 + }
  104 +
  105 + .searchForm .row>div {
  106 + padding-left: 0px;
  107 + padding-right: 0px;
  108 + padding: 5px 0 5px 0;
  109 + width: 270px;
  110 + display: inline-block;
  111 + }
  112 +
  113 + .searchForm .form-actions {
  114 +
  115 + }
  116 +
  117 + tr.row-active td {
  118 + border-bottom: 1px solid blue !important;
  119 + color: blue;
  120 + }
  121 +
  122 + .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
  123 + {
  124 + font-size: 14px;
  125 + }
  126 +
  127 + .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
  128 + {
  129 + padding: 6px 26px;
  130 + }
  131 +
  132 + .ms-container .ms-list {
  133 + height: 306px;
  134 + }
  135 +
  136 + .ms-container .ms-selectable,.ms-container .ms-selection {
  137 + width: 47%;
  138 + }
  139 +
  140 + .ms-container {
  141 + width: 470px;
  142 + margin: auto;
  143 + }
  144 +
  145 + .multi-custom-header-left {
  146 + text-align: center;
  147 + padding: 7px;
  148 + color: #3B3F51;
  149 + }
  150 +
  151 + .multi-custom-header-right {
  152 + text-align: center;
  153 + padding: 7px;
  154 + font-weight: bold;
  155 + color: #36C6D3;
  156 + }
  157 +
  158 + .mt-element-list .list-simple.mt-list-container ul>.mt-list-item>.list-item-content
  159 + {
  160 + padding: 0 55px 0 0px;
  161 + }
  162 +
  163 + .mt-element-list .list-simple.mt-list-container ul>.mt-list-item {
  164 + padding: 3.3px 0;
  165 + }
  166 +
  167 + #route-container {
  168 + display: none;
  169 + }
  170 +
  171 + .page-content.active {
  172 + display: block !important;
  173 + }
  174 +
  175 + .page-header.navbar .page-logo .logo-default {
  176 + margin: 0;
  177 + }
  178 +
  179 + .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle
  180 + {
  181 + background-color: #284a99;
  182 + }
  183 +
  184 + .page-header.navbar .page-logo {
  185 + padding-right: 10px;
  186 + }
  187 +
  188 + .page-logo .logo-default.logo-default-text {
  189 + font-weight: 600;
  190 + color: white !important;
  191 + margin-top: 19px !important;
  192 + font-size: 24px;
  193 + text-decoration: none;
  194 + }
  195 +
  196 + .page-logo .logo-default.logo-default-text:HOVER {
  197 + color: #dedede !important;
  198 + }
  199 +
  200 + body,.page-content-wrapper,#pjax-container{
  201 + height: 100%;
  202 + }
  203 + html{
  204 + height: 90%;
  205 + }
  206 + .page-container{
  207 + height: 100%;
  208 + }
  209 + </style>
  210 +
  211 + <!-- ocLazyLoading载入文件的位置 -->
  212 + <link id="ng_load_plugins_before" />
  213 +
  214 +</head>
  215 +<body
  216 + class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">
  217 +<div class="page-header navbar navbar-fixed-top"
  218 + style="background: linear-gradient(to bottom, #124e78, #125688);">
  219 + <div class="page-header-inner ">
  220 + <!-- LOGO -->
  221 + <div class="page-logo">
  222 + <a href="index.html" class="logo-default logo-default-text">
  223 + 闵行公交调度系统 </a>
  224 + <div class="menu-toggler sidebar-toggler"></div>
  225 + </div>
  226 + <!-- END LOGO -->
  227 + <a href="javascript:;" class="menu-toggler responsive-toggler"
  228 + data-toggle="collapse" data-target=".navbar-collapse"> </a>
  229 + <div class="page-top">
  230 + <div class="top-menu">
  231 + <ul class="nav navbar-nav pull-right">
  232 + <!-- 信息通知区 -->
  233 + <li
  234 + class="dropdown dropdown-extended dropdown-notification dropdown-dark"
  235 + id="header_notification_bar"><a href="javascript:;"
  236 + class="dropdown-toggle" data-toggle="dropdown"
  237 + data-hover="dropdown" data-close-others="true"> <i
  238 + class="fa fa-bell"></i> <span class="badge badge-success">
  239 + 0 </span>
  240 + </a>
  241 + <ul class="dropdown-menu" style="max-width: 345px; width: 345px;">
  242 + <li class="external">
  243 + <h3>
  244 + 今日 <span class="bold">0 条</span> 通知
  245 + </h3> <a href="javascript:;">查看全部</a>
  246 + </li>
  247 + <li>
  248 + <ul class="dropdown-menu-list scroller" style="height: 250px;"
  249 + data-handle-color="#637283">
  250 + </ul>
  251 + </li>
  252 + </ul></li>
  253 + <li class="dropdown dropdown-user dropdown-dark"><a
  254 + href="javascript:;" class="dropdown-toggle"
  255 + data-toggle="dropdown" data-hover="dropdown"
  256 + data-close-others="true"> <span id="indexTopUName"
  257 + class="username username-hide-on-mobile"
  258 + style="vertical-align: middle;"> <i class="fa fa-user"></i></span>
  259 + </a>
  260 + <ul class="dropdown-menu dropdown-menu-default">
  261 + <li><a href="javascript:;"> <i class="fa fa-user"></i>
  262 + 我的信息
  263 + </a></li>
  264 + <li><a href="javascript:;" id="changePWD"> <i
  265 + class="fa fa-unlock-alt"></i> 修改密码
  266 + </a></li>
  267 + <li class="divider"></li>
  268 + <li><a href="javascript:;"> <i class="fa fa-lock"></i>
  269 + 锁屏
  270 + </a></li>
  271 + <li><a href="/logout"> <i class="fa fa-key"></i> 注销登陆
  272 + </a></li>
  273 + </ul></li>
  274 + </ul>
  275 + </div>
  276 + </div>
  277 + </div>
  278 +</div>
  279 +<div class="page-container">
  280 + <div class="page-sidebar-wrapper">
  281 + <div class="page-sidebar navbar-collapse collapse">
  282 + <ul class="page-sidebar-menu page-sidebar-menu-fixed"
  283 + data-keep-expanded="false" data-auto-scroll="true"
  284 + data-slide-speed="200" id="leftMenuSidebar">
  285 + </ul>
  286 + </div>
  287 + </div>
  288 + <div class="page-content-wrapper">
  289 + <div id="pjax-container" class="page-content"></div>
  290 + <a name="xd_position"></a>
  291 + <div id="route-container">
  292 + <div ng-app="ScheduleApp">
  293 + <div ng-controller="ScheduleAppController">
  294 +
  295 + <!-- loading widget -->
  296 + <div id="loadingWidget" class="flyover mask" loading-widget>
  297 + <div class="alert alert-info">
  298 + <strong>载入中......</strong>
  299 + </div>
  300 + </div>
  301 +
  302 + <div ui-view class="uv"></div>
  303 + </div>
  304 + </div>
  305 + </div>
  306 + </div>
  307 +</div>
  308 +
  309 +<script id="menu_list_temp" type="text/html">
  310 + {{each list as group i}}
  311 + <li class="heading">
  312 + <h3 class="uppercase">{{group.name}}</h3>
  313 + </li>
  314 + {{each group.children as dir j}}
  315 + <li class="nav-item">
  316 + <a href="javascript:;" class="nav-link nav-toggle ">
  317 + <i class="{{dir.icon}}"></i>
  318 + <span class="title">{{dir.name}}</span>
  319 + <span class="arrow"></span>
  320 + </a>
  321 + <ul class="sub-menu">
  322 + {{each dir.children as module s}}
  323 + <li class="nav-item ">
  324 + {{if module.container=="pjax-container"}}
  325 + <a href="/pages/{{module.path}}" class="nav-link " data-pjax>
  326 + <span class="title">{{module.name}}</span>
  327 + </a>
  328 + {{else if module.container == "route-container"}}
  329 + <a href="{{module.path}}" class="nav-link " data-angularjs>
  330 + <span class="title">{{module.name}}</span>
  331 + </a>
  332 + {{else}}
  333 + <a href="javascript:void(0)" data-url="{{module.path}}" class="nav-link " data-link>
  334 + <span class="title">{{module.name}}</span>
  335 + </a>
  336 + {{/if}}
  337 + </li>
  338 + {{/each}}
  339 + </ul>
  340 + </li>
  341 + {{/each}}
  342 + {{/each}}
  343 +
  344 +</script>
  345 +<script>
  346 + delete window.require;
  347 + delete window.exports;
  348 + delete window.module;
  349 +</script>
  350 +<!-- jQuery -->
  351 +<script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script>
  352 +<!-- bootstrap -->
  353 +<script src="/metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js"
  354 + data-exclude=1></script>
  355 +<script src="/pages/forms/statement/js/jquery.autocompleter.js"></script>
  356 +<script src="/pages/forms/statement/js/jquery.PrintArea.js"></script>
  357 +<!-- MTRONIC JS -->
  358 +<script src="/metronic_v4.5.4/scripts/app.min.js" data-exclude=1></script>
  359 +<script src="/metronic_v4.5.4/layout4/scripts/layout.min.js"
  360 + data-exclude=1></script>
  361 +<!-- 虚拟滚动条 -->
  362 +<script
  363 + src="/metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js"></script>
  364 +<!-- jsTree 树插件 -->
  365 +<script src="/metronic_v4.5.4/plugins/jstree/dist/jstree.min.js"></script>
  366 +<!-- bootstrap-hover-dropDown -->
  367 +<script
  368 + src="/metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script>
  369 +<!-- jquery.validate 表单验证 -->
  370 +<script
  371 + src="/metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>
  372 +<script
  373 + src="/metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>
  374 +<!-- 向导式插件 -->
  375 +<script
  376 + src="/metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>
  377 +<!-- iCheck 单选框和复选框 -->
  378 +<script src="/metronic_v4.5.4/plugins/icheck/icheck.min.js"></script>
  379 +<!-- select2 下拉框 -->
  380 +<script src="/metronic_v4.5.4/plugins/select2/js/select2.full.min.js"></script>
  381 +<!-- MULTI SELECT 多选下拉框 -->
  382 +<script
  383 + src="/metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js"></script>
  384 +<!-- editable.js -->
  385 +<script
  386 + src="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js"></script>
  387 +<!-- PJAX -->
  388 +<script src="/assets/plugins/jquery.pjax.js"></script>
  389 +<!-- layer 弹层 -->
  390 +<script src="/assets/plugins/layer-v2.4/layer/layer.js" data-exclude=1></script>
  391 +<!-- fileinput 上传 -->
  392 +<script src="/assets/plugins/fileinput/canvas-to-blob.min.js"></script>
  393 +<script src="/assets/plugins/fileinput/purify.min.js"></script>
  394 +<script src="/assets/plugins/fileinput/sortable.min.js"></script>
  395 +<script src="/assets/plugins/fileinput/fileinput.min.js"></script>
  396 +<script src="/assets/plugins/fileinput/fileinput_locale_zh.js"></script>
  397 +<!-- jquery.purl URL解析 -->
  398 +<script src="/assets/plugins/purl.js"></script>
  399 +<!-- jquery.serializejson JSON序列化插件 -->
  400 +<script src="/assets/plugins/jquery.serializejson.js"></script>
  401 +<!-- art-template 模版引擎 -->
  402 +<script src="/assets/plugins/template.js"></script>
  403 +<!-- jquery.pageinator 分页 -->
  404 +<script src="/assets/plugins/jqPaginator.min.js"></script>
  405 +<!-- moment.js 日期处理类库 -->
  406 +<script src="/assets/plugins/moment-with-locales.js"></script>
  407 +
  408 +<script src="/assets/plugins/pinyin.js"></script>
  409 +<!-- 日期控件 -->
  410 +<script
  411 + src="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js"></script>
  412 +<!-- 表格控件 -->
  413 +<script src="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script>
  414 +<!-- 统计图控件 -->
  415 +<!--<script src="/assets/global/getEchart.js"></script>
  416 +<script src="/assets/global/echarts.js"></script> -->
  417 +<script src="/assets/js/common.js"></script>
  418 +<script src="/assets/js/dictionary.js"></script>
  419 +<!-- tipso JS -->
  420 +<script src="/metronic_v4.5.4/plugins/tipso/js/tipso.js"></script>
  421 +<script data-exclude=1>
  422 + //初始打开的片段地址
  423 + var initFragment = "^_^initFragment^_^";
  424 + //静态文件目录
  425 + var dir = '/pages/';
  426 + //片段容器
  427 + var pjaxContainer = '#pjax-container'
  428 + , angJsContainer = '#route-container';
  429 +
  430 + $(document).ajaxError(function (event, jqxhr, settings, thrownError) {
  431 + if(jqxhr.status == 403){
  432 + layer.closeAll();
  433 + layer.alert(jqxhr.message?jqxhr.message:'访问被拒绝', {icon: 2, title: '操作失败'});
  434 + }
  435 + });
  436 +
  437 + $(function () {
  438 + $.get('/user/currentUser', function (user) {
  439 + $('#indexTopUName').text(user.userName);
  440 + });
  441 +
  442 + //带 data-pjax 的链接由pjax加载
  443 + $(document).pjax('a[data-pjax]', pjaxContainer);
  444 +
  445 + //pjax左菜单点击事件
  446 + $(document).on('click', '#leftMenuSidebar a[data-pjax]', function () {
  447 + setTitle(this);
  448 +
  449 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  450 + $(this).parent().addClass('active');
  451 + showPjax();
  452 + });
  453 +
  454 + //外链左菜单点击事件
  455 + $(document).on('click', '#leftMenuSidebar a[data-link]', function (e) {
  456 + setTitle(this);
  457 +
  458 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  459 + $(this).parent().addClass('active');
  460 + showLink($(this).data('url'));
  461 + });
  462 +
  463 + //angularjs左菜单点击事件
  464 + $(document).on('click', '#leftMenuSidebar a[data-angularjs]', function () {
  465 + setTitle(this);
  466 +
  467 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  468 + $(this).parent().addClass('active');
  469 + showAngJs();
  470 + });
  471 +
  472 + //加载左菜单栏
  473 + $get('/module/findByCurrentUser', null,
  474 + function (ms) {
  475 + var treeArray = createTreeData(ms);
  476 + treeArray.sort(function (a, b) {
  477 + return a.createDate - b.createDate;
  478 + });
  479 + var menuHtml = template('menu_list_temp', {list: treeArray});
  480 + $('#leftMenuSidebar').html(menuHtml);
  481 +
  482 + //----------- 检查URL ----------------
  483 + var h = location.hash;
  484 + if (initFragment && initFragment != '') {
  485 + showPjax();
  486 + //普通片段
  487 + loadPage(initFragment);
  488 + //选中菜单
  489 + $.each($('#leftMenuSidebar a'), function (i, item) {
  490 + if (urlPattern($(item).attr('href'), initFragment)) {
  491 + activeLeftMenu(item);
  492 + }
  493 + });
  494 + } else if (h) {
  495 + //angularjs片段
  496 + showAngJs();
  497 + //选中菜单
  498 + $.each($('#leftMenuSidebar a'), function (i, item) {
  499 + if ($(item).attr('href') == h) {
  500 + activeLeftMenu(item);
  501 + }
  502 + });
  503 + }
  504 + else {
  505 + //加载主页
  506 + loadPage('/pages/home.html');
  507 + }
  508 + });
  509 +
  510 + //修改密码
  511 + $('#changePWD').on('click', function () {
  512 + $.get('/pages/permission/user/changePWD.html', function (content) {
  513 + layer.open({
  514 + type: 1,
  515 + area: ['600px', '360px'],
  516 + content: content,
  517 + title: '修改密码',
  518 + shift: 5,
  519 + scrollbar: false,
  520 + success: function () {
  521 + }
  522 + });
  523 + });
  524 + });
  525 + });
  526 +
  527 + //modal关闭时销毁dom
  528 + $(document).on('hidden.bs.modal', '.modal', function () {
  529 + $(this).remove();
  530 + });
  531 +
  532 + //pjax加载完成事件
  533 + $(document).on('pjax:success', function () {
  534 + var dicts = $(pjaxContainer).find('.nt-dictionary');
  535 + dictionaryUtils.transformDom(dicts);
  536 + });
  537 +
  538 + function loadPage(url) {
  539 + $.pjax({url: url, container: pjaxContainer})
  540 + }
  541 +
  542 + function urlPattern(a, b) {
  543 + var r;
  544 + try {
  545 + r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));
  546 + } catch (e) {
  547 + r = false;
  548 + }
  549 + return r;
  550 + }
  551 +
  552 + function showPjax() {
  553 + $(angJsContainer).removeClass('page-content active').hide();
  554 + $(pjaxContainer).addClass('page-content active');
  555 + }
  556 +
  557 + function showLink(url) {
  558 + window.open(url, '_blank');
  559 + }
  560 +
  561 + function showAngJs() {
  562 + $(pjaxContainer).html('').removeClass('page-content active').hide();
  563 + $(angJsContainer).addClass('page-content active');
  564 + }
  565 +
  566 + function activeLeftMenu(item) {
  567 + $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');
  568 + setTitle(item);
  569 + }
  570 +
  571 + function setTitle(menuItem){
  572 + document.title = $('span.title', menuItem).text();
  573 + }
  574 +
  575 +</script>
  576 +<!-- d3 -->
  577 +<script src="/assets/js/d3.min.js" data-exclude=1></script>
  578 +<!-- webSocket JS -->
  579 +<script src="/assets/js/sockjs.min.js"></script>
  580 +
  581 +<!-- TODO:angularJS相关库 -->
  582 +
  583 +<!-- angularJS相关库 -->
  584 +<!-- 这个是基于angularjs 1.4.10修改的版本,主要是修改了history控制部分,用于兼容route和pjax的同时操作history的冲突 -->
  585 +<script src="/assets/js/angular.js" data-autocephaly=1></script>
  586 +<script src="/assets/bower_components/angular-i18n/angular-locale_zh-cn.js" data-autocephaly=1></script>
  587 +<script
  588 + src="/assets/bower_components/angular-resource/angular-resource.min.js"
  589 + data-exclude=1></script>
  590 +<script
  591 + src="/assets/bower_components/angular-sanitize/angular-sanitize.min.js"
  592 + data-exclude=1></script>
  593 +<script
  594 + src="/assets/bower_components/angular-animate/angular-animate.min.js"
  595 + data-exclude=1></script>
  596 +<script
  597 + src="/assets/bower_components/angular-touch/angular-touch.min.js"
  598 + data-exclude=1></script>
  599 +<script
  600 + src="/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js"
  601 + data-exclude=1></script>
  602 +<script
  603 + src="/assets/bower_components/oclazyload/dist/ocLazyLoad.min.js"
  604 + data-exclude=1></script>
  605 +<script
  606 + src="/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"
  607 + data-exclude=1></script>
  608 +<!-- handsontable相关js -->
  609 +<script
  610 + src="/assets/bower_components/handsontable/dist/handsontable.full.js"></script>
  611 +<script
  612 + src="/assets/bower_components/ngHandsontable/dist/ngHandsontable.js"></script>
  613 +<!-- sweetalert相关js -->
  614 +<script src="/assets/bower_components/sweetalert/dist/sweetalert.min.js"></script>
  615 +<script src="/assets/bower_components/ng-sweet-alert/ng-sweet-alert.js"></script>
  616 +
  617 +<!-- schedule计划调度AngularJS模块主JS -->
  618 +<script src="/pages/scheduleApp/module/common/main.js" data-exclude=1></script>
  619 +<script
  620 + src="/pages/scheduleApp/module/common/prj-common-globalservice.js"
  621 + data-exclude=1></script>
  622 +<script src="/pages/scheduleApp/module/common/prj-common-filter.js"
  623 + data-exclude=1></script>
  624 +<script src="/pages/scheduleApp/module/common/prj-common-directive.js"
  625 + data-exclude=1></script>
  626 +<script
  627 + src="/pages/scheduleApp/module/common/prj-common-ui-route-state.js"
  628 + data-exclude=1></script>
  629 +
  630 +<!-- 地图相关 -->
  631 +<!-- 百度 -->
  632 +<script
  633 + src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"
  634 + data-exclude=1></script>
  635 +<script
  636 + src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"
  637 + data-exclude=1></script>
  638 +<script type="text/javascript"
  639 + src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"
  640 + data-exclude=1></script>
  641 +<script type="text/javascript"
  642 + src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "
  643 + data-exclude=1></script>
  644 +<script src="/assets/js/baidu/TextIconOverlay.js" data-exclude=1></script>
  645 +<script src="/assets/js/baidu//MarkerClusterer.js" data-exclude=1></script>
  646 +<!-- 高德 -->
  647 +<script
  648 + src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"
  649 + data-exclude=1></script>
  650 +<!-- echarts4 误删 -->
  651 +<script src="/metronic_v4.5.4/plugins/echarts4/echarts.min.js"></script>
  652 +
  653 +</body>
637 </html> 654 </html>
638 \ No newline at end of file 655 \ No newline at end of file
src/main/resources/static/pages/permission/module/add_modal.html
1 -<div class="modal fade" id="add_modal" tabindex="-1" role="basic"  
2 - aria-hidden="true">  
3 - <div class="modal-dialog">  
4 - <div class="modal-content">  
5 - <div class="modal-header">  
6 - <button type="button" class="close" data-dismiss="modal"  
7 - aria-hidden="true"></button>  
8 - <h4 class="modal-title">新增功能模块</h4>  
9 - </div>  
10 - <div class="modal-body">  
11 - <form class="form-horizontal" role="form" id="module_add_form"  
12 - action="/module" method="post">  
13 - <input type="hidden" name="groupType" value="3">  
14 - <div class="alert alert-danger display-hide">  
15 - <button class="close" data-close="alert"></button>  
16 - 您的输入有误,请检查下面的输入项  
17 - </div>  
18 - <div class="form-body">  
19 - <div class="form-group">  
20 - <label class="col-md-3 control-label">所属组</label>  
21 - <div class="col-md-9">  
22 - <select class="form-control input-medium " name="" id="groupSelect"></select>  
23 - </div>  
24 - </div>  
25 - <div class="form-group">  
26 - <label class="col-md-3 control-label">所属目录</label>  
27 - <div class="col-md-9">  
28 - <select class="form-control input-medium " name="pId" id="dirSelect"></select>  
29 - </div>  
30 - </div>  
31 - <div class="form-group">  
32 - <label class="col-md-3 control-label">模块名</label>  
33 - <div class="col-md-9">  
34 - <input type="text" class="form-control input-medium" name="name" > <span class="help-inline">  
35 - 不要超过10个汉字长度 </span>  
36 - </div>  
37 - </div>  
38 - <div class="form-group">  
39 - <label class="col-md-3 control-label">片段路径</label>  
40 - <div class="col-md-9">  
41 - <input type="text" class="form-control input-medium" name="path" autocomplete="off">  
42 - <span class="help-inline"> 片段,如:permission/module/list.html </span>  
43 - </div>  
44 - </div>  
45 - <div class="form-group">  
46 - <label class="col-md-3 control-label">片段渲染容器</label>  
47 - <div class="col-md-9">  
48 - <select class="form-control input-medium" name="container">  
49 - <option value="pjax-container">pjax-container</option>  
50 - <option value="route-container">route-container</option>  
51 - </select>  
52 - </div>  
53 - </div>  
54 - <div class="form-group">  
55 - <label class="col-md-3 control-label">映射地址</label>  
56 - <div class="col-md-9">  
57 - <input type="text" class="form-control input-medium"  
58 - name="mappSymbol">  
59 - <span class="help-inline"> Controller对应的映射地址,如: /module </span>  
60 - </div>  
61 - </div>  
62 - <div class="form-group">  
63 - <label class="col-md-3 control-label">是否可用</label>  
64 - <div class="col-md-9">  
65 - <select class="form-control input-medium" name="enable">  
66 - <option value="1">可用</option>  
67 - <option value="0">禁用</option>  
68 - </select>  
69 - </div>  
70 - </div>  
71 - <div class="form-group">  
72 - <label class="col-md-3 control-label">描述</label>  
73 - <div class="col-md-9">  
74 - <input type="text" class="form-control input-medium" name="descriptions">  
75 - </div>  
76 - </div>  
77 - <hr>  
78 - <div class="form-group">  
79 - <label class="col-md-3 control-label">基础资源</label>  
80 - <div class="col-md-9">  
81 - <div class="icheck-list">  
82 - <label >  
83 - <input type="radio" class="icheck" name="baseRes" value=1 > 继承BaseController 的基础接口</label>  
84 - <label>  
85 - <input type="radio" class="icheck" name="baseRes" value=0 checked> 不需要 </label>  
86 - </div>  
87 - </div>  
88 - </div>  
89 - <div class="form-group defaultRes" style="display: none;" >  
90 - <div class="portlet-body">  
91 - <div class="table-scrollable">  
92 - <table class="table table-bordered table-advance">  
93 - <thead>  
94 - <tr>  
95 - <th style="width: 13%;text-align: center;"> # </th>  
96 - <th style="width: 29%;"> 映射 </th>  
97 - <th style="width: 29%;"> 请求方式 </th>  
98 - <th style="width: 29%;"> 资源名 </th>  
99 - </tr>  
100 - </thead>  
101 - <tbody>  
102 - <tr class="">  
103 - <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>  
104 - <td> <span class="mappSymbol_sync"></span> </td>  
105 - <td> get </td>  
106 - <td> 分页查询 </td>  
107 - </tr>  
108 - <tr class="">  
109 - <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>  
110 - <td> <span class="mappSymbol_sync"></span> </td>  
111 - <td> post </td>  
112 - <td> 新增/编辑 </td>  
113 - </tr>  
114 - <tr class="">  
115 - <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>  
116 - <td> <span class="mappSymbol_sync"></span> </td>  
117 - <td> delete </td>  
118 - <td> 删除 </td>  
119 - </tr>  
120 - <tr class="">  
121 - <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>  
122 - <td> <span class="mappSymbol_sync"></span>/{id} </td>  
123 - <td> get </td>  
124 - <td> 主键查询 </td>  
125 - </tr>  
126 - <tr class="">  
127 - <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>  
128 - <td> <span class="mappSymbol_sync"></span>/all </td>  
129 - <td> get </td>  
130 - <td> 查询所有 </td>  
131 - </tr>  
132 - </tbody>  
133 - </table>  
134 - </div>  
135 - </div>  
136 - </div>  
137 - </div>  
138 - </form>  
139 - </div>  
140 - <div class="modal-footer">  
141 - <button type="button" class="btn default" data-dismiss="modal">取消</button>  
142 - <button type="button" class="btn btn-primary" id="addModuleButton">提交数据</button>  
143 - </div>  
144 - </div>  
145 - </div>  
146 -</div>  
147 -<script id="res_tbody_temp" type="text/html">  
148 -  
149 -</script>  
150 -<script data-exclude=1>  
151 - $(function() {  
152 - var groupData = []  
153 - ,dirGroupMapp = {};//目录到组的映射  
154 -  
155 - var form = $('#module_add_form');  
156 - var error = $('.alert-danger', form);  
157 -  
158 - //icheck  
159 - $('.icheck').iCheck({  
160 - checkboxClass: 'icheckbox_flat-green',  
161 - radioClass: 'iradio_flat-green',  
162 - increaseArea: '20%' // optional  
163 - });  
164 -  
165 - //modal 显示事件  
166 - $('#add_modal').on('show.bs.modal', function(){  
167 - refreshFormData(function(){  
168 - var sel = getCurrSelNode();  
169 - if(sel.length > 0){  
170 - var orig = sel[0].original;  
171 - //选中的是目录(二级)  
172 - if(orig.groupType == '2'){  
173 - $('#groupSelect').val(orig.pId).change();  
174 - $('select[name=pId]').val(orig.id).change();  
175 - }  
176 - else if(orig.groupType == '1'){  
177 - $('#groupSelect').val(orig.id).change();  
178 - }  
179 - }  
180 - });  
181 - })  
182 - .modal('show');  
183 -  
184 - $('input[name=mappSymbol]').on('keyup change', function(){  
185 - $('.mappSymbol_sync').text($(this).val());  
186 - });  
187 -  
188 - $('input[name=baseRes]').on('ifChanged', function(){  
189 - var v = $(this).val();  
190 - if(v == 1 && this.checked){  
191 - if($.trim($('input[name=mappSymbol]').val()) == ''){  
192 - layer.msg('请先输入Controler映射地址');  
193 -  
194 - var wrap = $(this).iCheck('uncheck').parent();  
195 - setTimeout(function(){  
196 - wrap.removeClass('checked');  
197 - $('input[name=baseRes]:eq(1)').iCheck('check');  
198 - }, 100);  
199 - return false;  
200 - }  
201 - else{  
202 - $('.defaultRes').slideDown(500, function(){  
203 - $('#add_modal').animate({  
204 - scrollTop: $('#add_modal')[0].scrollHeight  
205 - }, 1100);  
206 -  
207 - });  
208 - }  
209 - }  
210 - else  
211 - $('.defaultRes').slideUp();  
212 - });  
213 -  
214 -/* $('select[name=pId]').on('change', function() {  
215 - var objs = $('input[name=path],input[name=mappSymbol]')  
216 - ,dr = $('.defaultRes');  
217 - if (this.value == '-2') {  
218 - objs.attr('readonly', 'readonly');  
219 - dr.hide();  
220 - } else {  
221 - objs.removeAttr('readonly');  
222 - dr.show();  
223 - }  
224 - }); */  
225 -  
226 - $('#groupSelect').on('change', function(){  
227 - var id = $(this).val();  
228 - $.each(groupData, function(i, obj){  
229 - if(obj.id == id){  
230 - var option = '';  
231 - $.each(obj.dirs, function(i, dir){  
232 - option += '<option value="'+dir.id+'">'+dir.name+'</option>';  
233 - });  
234 - $('#dirSelect').html(option);  
235 - return false;  
236 - }  
237 - });  
238 - });  
239 -  
240 - //提交  
241 - $('#addModuleButton').on('click', function() {  
242 - form.submit();  
243 - });  
244 - //form validate  
245 - form.validate({  
246 - errorElement : 'span',  
247 - errorClass : 'help-block help-block-error',  
248 - focusInvalid : false,  
249 - rules : {  
250 - name : {  
251 - minlength : 2,  
252 - required : true,  
253 - maxlength : 10  
254 - },  
255 - path : {  
256 - required : true  
257 - }/* ,  
258 - mappSymbol: {  
259 - required : true  
260 - } */  
261 - },  
262 - invalidHandler : function(event, validator) {  
263 - error.show();  
264 - App.scrollTo(error, -200);  
265 - },  
266 -  
267 - highlight : function(element) {  
268 - $(element).closest('.form-group').addClass('has-error');  
269 - },  
270 -  
271 - unhighlight : function(element) {  
272 - $(element).closest('.form-group').removeClass('has-error');  
273 - },  
274 -  
275 - success : function(label) {  
276 - label.closest('.form-group').removeClass('has-error');  
277 - },  
278 -  
279 - submitHandler : function(f) {  
280 - var params = form.serializeJSON();  
281 - error.hide();  
282 - $post('/module', params, function(res){  
283 - layer.msg('新增模块成功.');  
284 -  
285 - //添加资源  
286 - if($('input[name=baseRes]:checked').val() == 1){  
287 - submitBaseResource(res.t.id);  
288 - }  
289 - else{  
290 - refreshJsTree();  
291 - $('#add_modal').modal('hide');  
292 - }  
293 - });  
294 - }  
295 - });  
296 -  
297 -  
298 - //提交默认资源  
299 - function submitBaseResource(moduleId){  
300 - var rows = $('.defaultRes table tbody')[0].rows  
301 - ,rsArray = [];  
302 - $.each(rows, function(i, r){  
303 - var cells = r.cells  
304 - ,c = $(cells[0]).find(':checkbox')  
305 - ,resObj = {name: $.trim($(cells[3]).text()), url: $.trim($(cells[1]).text())  
306 - ,method: $.trim($(cells[2]).text()),enable: c[0].checked,module: {id: moduleId}, descriptions: 'extends base' };  
307 -  
308 - rsArray.push(resObj);  
309 - });  
310 -  
311 - if(rsArray.length > 0){  
312 - $post('/resource/batch', {array: JSON.stringify(rsArray)}, function(){  
313 - layer.msg('添加资源成功.');  
314 -  
315 - setTimeout(function(){  
316 - refreshJsTree();  
317 - $('#add_modal').modal('hide');  
318 - }, 500);  
319 - });  
320 - }  
321 - }  
322 -  
323 - //默认的BaseController接口  
324 - /* function saveDefaultResource(t, rs){  
325 - if(rs){  
326 - var rsArray = [];  
327 - for(var n in rs)  
328 - rsArray = rsArray.concat(getDefaultRes(n, t.mappSymbol, t.id));  
329 -  
330 - if(rsArray.length == 0)  
331 - return;  
332 -  
333 - $post('/resource/batch', {array: JSON.stringify(rsArray)}, function(){  
334 - layer.msg('添加资源成功.');  
335 - });  
336 - }  
337 - } */  
338 -  
339 -  
340 - function refreshFormData(cb){  
341 - groupData = [];  
342 - $get('/module/findByGroupType',{group: '1,2'}, function(array){  
343 - for(var i = 0,item; item=array[i++];){  
344 - if(item.groupType == '1'){  
345 - groupData.push(item);  
346 - }  
347 -  
348 - for(var j = 0,item2;item2=array[j++];){  
349 - if(item2.pId == item.id){  
350 - if(!item.dirs)  
351 - item.dirs = [];  
352 - item.dirs.push(item2);  
353 -  
354 - dirGroupMapp[item2.id] = item.id;  
355 - }  
356 - }  
357 - }  
358 -  
359 - var options = '';  
360 - $.each(groupData, function(i, obj){  
361 - options += '<option value="'+obj.id+'">'+obj.name+'</option>';  
362 - });  
363 - $('#groupSelect').html(options).change();  
364 -  
365 - cb && cb();  
366 - });  
367 - }  
368 -  
369 - function getCurrSelNode(){  
370 - return $.jstree.reference("#modules_tree").get_selected(true);  
371 - }  
372 - }); 1 +<div class="modal fade" id="add_modal" tabindex="-1" role="basic"
  2 + aria-hidden="true">
  3 + <div class="modal-dialog">
  4 + <div class="modal-content">
  5 + <div class="modal-header">
  6 + <button type="button" class="close" data-dismiss="modal"
  7 + aria-hidden="true"></button>
  8 + <h4 class="modal-title">新增功能模块</h4>
  9 + </div>
  10 + <div class="modal-body">
  11 + <form class="form-horizontal" role="form" id="module_add_form"
  12 + action="/module" method="post">
  13 + <input type="hidden" name="groupType" value="3">
  14 + <div class="alert alert-danger display-hide">
  15 + <button class="close" data-close="alert"></button>
  16 + 您的输入有误,请检查下面的输入项
  17 + </div>
  18 + <div class="form-body">
  19 + <div class="form-group">
  20 + <label class="col-md-3 control-label">所属组</label>
  21 + <div class="col-md-9">
  22 + <select class="form-control input-medium " name="" id="groupSelect"></select>
  23 + </div>
  24 + </div>
  25 + <div class="form-group">
  26 + <label class="col-md-3 control-label">所属目录</label>
  27 + <div class="col-md-9">
  28 + <select class="form-control input-medium " name="pId" id="dirSelect"></select>
  29 + </div>
  30 + </div>
  31 + <div class="form-group">
  32 + <label class="col-md-3 control-label">模块名</label>
  33 + <div class="col-md-9">
  34 + <input type="text" class="form-control input-medium" name="name" > <span class="help-inline">
  35 + 不要超过10个汉字长度 </span>
  36 + </div>
  37 + </div>
  38 + <div class="form-group">
  39 + <label class="col-md-3 control-label">片段路径</label>
  40 + <div class="col-md-9">
  41 + <input type="text" class="form-control input-medium" name="path" autocomplete="off">
  42 + <span class="help-inline"> 片段,如:permission/module/list.html </span>
  43 + </div>
  44 + </div>
  45 + <div class="form-group">
  46 + <label class="col-md-3 control-label">片段渲染容器</label>
  47 + <div class="col-md-9">
  48 + <select class="form-control input-medium" name="container">
  49 + <option value="pjax-container">pjax-container</option>
  50 + <option value="route-container">route-container</option>
  51 + <option value="route-link">route-link</option>
  52 + </select>
  53 + </div>
  54 + </div>
  55 + <div class="form-group">
  56 + <label class="col-md-3 control-label">映射地址</label>
  57 + <div class="col-md-9">
  58 + <input type="text" class="form-control input-medium"
  59 + name="mappSymbol">
  60 + <span class="help-inline"> Controller对应的映射地址,如: /module </span>
  61 + </div>
  62 + </div>
  63 + <div class="form-group">
  64 + <label class="col-md-3 control-label">是否可用</label>
  65 + <div class="col-md-9">
  66 + <select class="form-control input-medium" name="enable">
  67 + <option value="1">可用</option>
  68 + <option value="0">禁用</option>
  69 + </select>
  70 + </div>
  71 + </div>
  72 + <div class="form-group">
  73 + <label class="col-md-3 control-label">描述</label>
  74 + <div class="col-md-9">
  75 + <input type="text" class="form-control input-medium" name="descriptions">
  76 + </div>
  77 + </div>
  78 + <hr>
  79 + <div class="form-group">
  80 + <label class="col-md-3 control-label">基础资源</label>
  81 + <div class="col-md-9">
  82 + <div class="icheck-list">
  83 + <label >
  84 + <input type="radio" class="icheck" name="baseRes" value=1 > 继承BaseController 的基础接口</label>
  85 + <label>
  86 + <input type="radio" class="icheck" name="baseRes" value=0 checked> 不需要 </label>
  87 + </div>
  88 + </div>
  89 + </div>
  90 + <div class="form-group defaultRes" style="display: none;" >
  91 + <div class="portlet-body">
  92 + <div class="table-scrollable">
  93 + <table class="table table-bordered table-advance">
  94 + <thead>
  95 + <tr>
  96 + <th style="width: 13%;text-align: center;"> # </th>
  97 + <th style="width: 29%;"> 映射 </th>
  98 + <th style="width: 29%;"> 请求方式 </th>
  99 + <th style="width: 29%;"> 资源名 </th>
  100 + </tr>
  101 + </thead>
  102 + <tbody>
  103 + <tr class="">
  104 + <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>
  105 + <td> <span class="mappSymbol_sync"></span> </td>
  106 + <td> get </td>
  107 + <td> 分页查询 </td>
  108 + </tr>
  109 + <tr class="">
  110 + <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>
  111 + <td> <span class="mappSymbol_sync"></span> </td>
  112 + <td> post </td>
  113 + <td> 新增/编辑 </td>
  114 + </tr>
  115 + <tr class="">
  116 + <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>
  117 + <td> <span class="mappSymbol_sync"></span> </td>
  118 + <td> delete </td>
  119 + <td> 删除 </td>
  120 + </tr>
  121 + <tr class="">
  122 + <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>
  123 + <td> <span class="mappSymbol_sync"></span>/{id} </td>
  124 + <td> get </td>
  125 + <td> 主键查询 </td>
  126 + </tr>
  127 + <tr class="">
  128 + <td style="text-align: center;"> <input type="checkbox" checked class="icheck"> </td>
  129 + <td> <span class="mappSymbol_sync"></span>/all </td>
  130 + <td> get </td>
  131 + <td> 查询所有 </td>
  132 + </tr>
  133 + </tbody>
  134 + </table>
  135 + </div>
  136 + </div>
  137 + </div>
  138 + </div>
  139 + </form>
  140 + </div>
  141 + <div class="modal-footer">
  142 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  143 + <button type="button" class="btn btn-primary" id="addModuleButton">提交数据</button>
  144 + </div>
  145 + </div>
  146 + </div>
  147 +</div>
  148 +<script id="res_tbody_temp" type="text/html">
  149 +
  150 +</script>
  151 +<script data-exclude=1>
  152 + $(function() {
  153 + var groupData = []
  154 + ,dirGroupMapp = {};//目录到组的映射
  155 +
  156 + var form = $('#module_add_form');
  157 + var error = $('.alert-danger', form);
  158 +
  159 + //icheck
  160 + $('.icheck').iCheck({
  161 + checkboxClass: 'icheckbox_flat-green',
  162 + radioClass: 'iradio_flat-green',
  163 + increaseArea: '20%' // optional
  164 + });
  165 +
  166 + //modal 显示事件
  167 + $('#add_modal').on('show.bs.modal', function(){
  168 + refreshFormData(function(){
  169 + var sel = getCurrSelNode();
  170 + if(sel.length > 0){
  171 + var orig = sel[0].original;
  172 + //选中的是目录(二级)
  173 + if(orig.groupType == '2'){
  174 + $('#groupSelect').val(orig.pId).change();
  175 + $('select[name=pId]').val(orig.id).change();
  176 + }
  177 + else if(orig.groupType == '1'){
  178 + $('#groupSelect').val(orig.id).change();
  179 + }
  180 + }
  181 + });
  182 + })
  183 + .modal('show');
  184 +
  185 + $('input[name=mappSymbol]').on('keyup change', function(){
  186 + $('.mappSymbol_sync').text($(this).val());
  187 + });
  188 +
  189 + $('input[name=baseRes]').on('ifChanged', function(){
  190 + var v = $(this).val();
  191 + if(v == 1 && this.checked){
  192 + if($.trim($('input[name=mappSymbol]').val()) == ''){
  193 + layer.msg('请先输入Controler映射地址');
  194 +
  195 + var wrap = $(this).iCheck('uncheck').parent();
  196 + setTimeout(function(){
  197 + wrap.removeClass('checked');
  198 + $('input[name=baseRes]:eq(1)').iCheck('check');
  199 + }, 100);
  200 + return false;
  201 + }
  202 + else{
  203 + $('.defaultRes').slideDown(500, function(){
  204 + $('#add_modal').animate({
  205 + scrollTop: $('#add_modal')[0].scrollHeight
  206 + }, 1100);
  207 +
  208 + });
  209 + }
  210 + }
  211 + else
  212 + $('.defaultRes').slideUp();
  213 + });
  214 +
  215 +/* $('select[name=pId]').on('change', function() {
  216 + var objs = $('input[name=path],input[name=mappSymbol]')
  217 + ,dr = $('.defaultRes');
  218 + if (this.value == '-2') {
  219 + objs.attr('readonly', 'readonly');
  220 + dr.hide();
  221 + } else {
  222 + objs.removeAttr('readonly');
  223 + dr.show();
  224 + }
  225 + }); */
  226 +
  227 + $('#groupSelect').on('change', function(){
  228 + var id = $(this).val();
  229 + $.each(groupData, function(i, obj){
  230 + if(obj.id == id){
  231 + var option = '';
  232 + $.each(obj.dirs, function(i, dir){
  233 + option += '<option value="'+dir.id+'">'+dir.name+'</option>';
  234 + });
  235 + $('#dirSelect').html(option);
  236 + return false;
  237 + }
  238 + });
  239 + });
  240 +
  241 + //提交
  242 + $('#addModuleButton').on('click', function() {
  243 + form.submit();
  244 + });
  245 + //form validate
  246 + form.validate({
  247 + errorElement : 'span',
  248 + errorClass : 'help-block help-block-error',
  249 + focusInvalid : false,
  250 + rules : {
  251 + name : {
  252 + minlength : 2,
  253 + required : true,
  254 + maxlength : 10
  255 + },
  256 + path : {
  257 + required : true
  258 + }/* ,
  259 + mappSymbol: {
  260 + required : true
  261 + } */
  262 + },
  263 + invalidHandler : function(event, validator) {
  264 + error.show();
  265 + App.scrollTo(error, -200);
  266 + },
  267 +
  268 + highlight : function(element) {
  269 + $(element).closest('.form-group').addClass('has-error');
  270 + },
  271 +
  272 + unhighlight : function(element) {
  273 + $(element).closest('.form-group').removeClass('has-error');
  274 + },
  275 +
  276 + success : function(label) {
  277 + label.closest('.form-group').removeClass('has-error');
  278 + },
  279 +
  280 + submitHandler : function(f) {
  281 + var params = form.serializeJSON();
  282 + error.hide();
  283 + $post('/module', params, function(res){
  284 + layer.msg('新增模块成功.');
  285 +
  286 + //添加资源
  287 + if($('input[name=baseRes]:checked').val() == 1){
  288 + submitBaseResource(res.t.id);
  289 + }
  290 + else{
  291 + refreshJsTree();
  292 + $('#add_modal').modal('hide');
  293 + }
  294 + });
  295 + }
  296 + });
  297 +
  298 +
  299 + //提交默认资源
  300 + function submitBaseResource(moduleId){
  301 + var rows = $('.defaultRes table tbody')[0].rows
  302 + ,rsArray = [];
  303 + $.each(rows, function(i, r){
  304 + var cells = r.cells
  305 + ,c = $(cells[0]).find(':checkbox')
  306 + ,resObj = {name: $.trim($(cells[3]).text()), url: $.trim($(cells[1]).text())
  307 + ,method: $.trim($(cells[2]).text()),enable: c[0].checked,module: {id: moduleId}, descriptions: 'extends base' };
  308 +
  309 + rsArray.push(resObj);
  310 + });
  311 +
  312 + if(rsArray.length > 0){
  313 + $post('/resource/batch', {array: JSON.stringify(rsArray)}, function(){
  314 + layer.msg('添加资源成功.');
  315 +
  316 + setTimeout(function(){
  317 + refreshJsTree();
  318 + $('#add_modal').modal('hide');
  319 + }, 500);
  320 + });
  321 + }
  322 + }
  323 +
  324 + //默认的BaseController接口
  325 + /* function saveDefaultResource(t, rs){
  326 + if(rs){
  327 + var rsArray = [];
  328 + for(var n in rs)
  329 + rsArray = rsArray.concat(getDefaultRes(n, t.mappSymbol, t.id));
  330 +
  331 + if(rsArray.length == 0)
  332 + return;
  333 +
  334 + $post('/resource/batch', {array: JSON.stringify(rsArray)}, function(){
  335 + layer.msg('添加资源成功.');
  336 + });
  337 + }
  338 + } */
  339 +
  340 +
  341 + function refreshFormData(cb){
  342 + groupData = [];
  343 + $get('/module/findByGroupType',{group: '1,2'}, function(array){
  344 + for(var i = 0,item; item=array[i++];){
  345 + if(item.groupType == '1'){
  346 + groupData.push(item);
  347 + }
  348 +
  349 + for(var j = 0,item2;item2=array[j++];){
  350 + if(item2.pId == item.id){
  351 + if(!item.dirs)
  352 + item.dirs = [];
  353 + item.dirs.push(item2);
  354 +
  355 + dirGroupMapp[item2.id] = item.id;
  356 + }
  357 + }
  358 + }
  359 +
  360 + var options = '';
  361 + $.each(groupData, function(i, obj){
  362 + options += '<option value="'+obj.id+'">'+obj.name+'</option>';
  363 + });
  364 + $('#groupSelect').html(options).change();
  365 +
  366 + cb && cb();
  367 + });
  368 + }
  369 +
  370 + function getCurrSelNode(){
  371 + return $.jstree.reference("#modules_tree").get_selected(true);
  372 + }
  373 + });
373 </script> 374 </script>
374 \ No newline at end of file 375 \ No newline at end of file
src/main/resources/static/pages/permission/module/edit_modal.html
1 -<!-- 编辑Modal -->  
2 -<div class="modal fade" id="edit_modal" tabindex="-1" role="basic"  
3 - aria-hidden="true">  
4 - <div class="modal-dialog">  
5 - <div class="modal-content">  
6 - <div class="modal-header">  
7 - <button type="button" class="close" data-dismiss="modal"  
8 - aria-hidden="true"></button>  
9 - <h4 class="modal-title">编辑模块</h4>  
10 - </div>  
11 - <div class="modal-body">  
12 - <form class="form-horizontal" role="form" id="module_edit_form"  
13 - action="/module" method="post">  
14 - <input type="hidden" name="groupType" value="3">  
15 - <div class="alert alert-danger display-hide">  
16 - <button class="close" data-close="alert"></button>  
17 - 您的输入有误,请检查下面的输入项  
18 - </div>  
19 - <div class="form-body">  
20 - <input name="id" type="hidden">  
21 - <div class="form-group">  
22 - <label class="col-md-3 control-label">所属组</label>  
23 - <div class="col-md-9">  
24 - <select class="form-control input-medium " name="" id="groupSelect"></select>  
25 - </div>  
26 - </div>  
27 - <div class="form-group">  
28 - <label class="col-md-3 control-label">所属目录</label>  
29 - <div class="col-md-9">  
30 - <select class="form-control input-medium " name="pId" id="dirSelect"></select>  
31 - </div>  
32 - </div>  
33 - <div class="form-group">  
34 - <label class="col-md-3 control-label">模块名</label>  
35 - <div class="col-md-9">  
36 - <input type="text" class="form-control input-medium" name="name" > <span class="help-inline">  
37 - 不要超过10个汉字长度 </span>  
38 - </div>  
39 - </div>  
40 - <div class="form-group">  
41 - <label class="col-md-3 control-label">片段路径</label>  
42 - <div class="col-md-9">  
43 - <input type="text" class="form-control input-medium" name="path" autocomplete="off">  
44 - <span class="help-inline"> 片段,如:permission/module/list.html </span>  
45 - </div>  
46 - </div>  
47 - <div class="form-group">  
48 - <label class="col-md-3 control-label">片段渲染容器</label>  
49 - <div class="col-md-9">  
50 - <select class="form-control input-medium" name="container">  
51 - <option value="pjax-container">pjax-container</option>  
52 - <option value="route-container">route-container</option>  
53 - </select>  
54 - </div>  
55 - </div>  
56 - <div class="form-group">  
57 - <label class="col-md-3 control-label">映射</label>  
58 - <div class="col-md-9">  
59 - <input type="text" class="form-control input-medium"  
60 - name="mappSymbol">  
61 - <span class="help-inline"> Controller对应的映射符,如: /module </span>  
62 - </div>  
63 - </div>  
64 - <div class="form-group">  
65 - <label class="col-md-3 control-label">是否可用</label>  
66 - <div class="col-md-9">  
67 - <select class="form-control input-medium" name="enable">  
68 - <option value="1">可用</option>  
69 - <option value="0">禁用</option>  
70 - </select>  
71 - </div>  
72 - </div>  
73 - <div class="form-group">  
74 - <label class="col-md-3 control-label">描述</label>  
75 - <div class="col-md-9">  
76 - <input type="text" class="form-control input-medium" name="descriptions">  
77 - </div>  
78 - </div>  
79 - </div>  
80 - </form>  
81 - </div>  
82 - <div class="modal-footer">  
83 - <button type="button" class="btn default" data-dismiss="modal">取消</button>  
84 - <button type="button" class="btn btn-primary" id="editModuleButton">保存修改</button>  
85 - </div>  
86 - </div>  
87 - </div>  
88 -</div>  
89 -<script data-exclude=1>  
90 -$(function() {  
91 -  
92 - var groupData = []  
93 - ,dirGroupMapp = {};//目录到组的映射  
94 -  
95 - var form = $('#module_edit_form');  
96 - var error = $('.alert-danger', form);  
97 -  
98 - //icheck  
99 - $('.icheck').iCheck({  
100 - checkboxClass: 'icheckbox_flat-green',  
101 - radioClass: 'iradio_flat-green',  
102 - increaseArea: '20%' // optional  
103 - });  
104 -  
105 - //modal 显示事件  
106 - $('#edit_modal').on('show.bs.modal', function(){  
107 - refreshFormData(function(){  
108 - var sel = getCurrSelNode();  
109 - if(sel.length > 0){  
110 - var tree = $.jstree.reference('#modules_tree')  
111 - ,m = sel[0]  
112 - , d = tree.get_node(m.parent)  
113 - , g = tree.get_node(d.parent);  
114 -  
115 - drawFormData(m.original, '#module_edit_form');//写入表单数据  
116 - $('#groupSelect').val(g.id).change();  
117 - $('select[name=pId]').val(d.id).change();  
118 - }  
119 - });  
120 - })  
121 - .modal('show');  
122 -  
123 - $('#groupSelect').on('change', function(){  
124 - var id = $(this).val();  
125 - $.each(groupData, function(i, obj){  
126 - if(obj.id == id){  
127 - var option = '';  
128 - $.each(obj.dirs, function(i, dir){  
129 - option += '<option value="'+dir.id+'">'+dir.name+'</option>';  
130 - });  
131 - $('#dirSelect').html(option);  
132 - return false;  
133 - }  
134 - });  
135 - });  
136 -  
137 - //提交  
138 - $('#editModuleButton').on('click', function() {  
139 - form.submit();  
140 - });  
141 - //form validate  
142 - form.validate({  
143 - errorElement : 'span',  
144 - errorClass : 'help-block help-block-error',  
145 - focusInvalid : false,  
146 - rules : {  
147 - name : {  
148 - minlength : 2,  
149 - required : true,  
150 - maxlength : 10  
151 - },  
152 - path : {  
153 - required : true  
154 - }/* ,  
155 - mappSymbol: {  
156 - required : true  
157 - } */  
158 - },  
159 - invalidHandler : function(event, validator) {  
160 - error.show();  
161 - App.scrollTo(error, -200);  
162 - },  
163 -  
164 - highlight : function(element) {  
165 - $(element).closest('.form-group').addClass('has-error');  
166 - },  
167 -  
168 - unhighlight : function(element) {  
169 - $(element).closest('.form-group').removeClass('has-error');  
170 - },  
171 -  
172 - success : function(label) {  
173 - label.closest('.form-group').removeClass('has-error');  
174 - },  
175 -  
176 - submitHandler : function(f) {  
177 - var params = form.serializeJSON();  
178 - error.hide();  
179 - $post('/module', params, function(res){  
180 - layer.msg('修改模块成功.');  
181 - refreshJsTree();  
182 - $('#edit_modal').modal('hide');  
183 - });  
184 - }  
185 - });  
186 -  
187 - function refreshFormData(cb){  
188 - groupData = [];  
189 - $get('/module/findByGroupType',{group: '1,2'}, function(array){  
190 - for(var i = 0,item; item=array[i++];){  
191 - if(item.groupType == '1'){  
192 - groupData.push(item);  
193 - }  
194 -  
195 - for(var j = 0,item2;item2=array[j++];){  
196 - if(item2.pId == item.id){  
197 - if(!item.dirs)  
198 - item.dirs = [];  
199 - item.dirs.push(item2);  
200 -  
201 - dirGroupMapp[item2.id] = item.id;  
202 - }  
203 - }  
204 - }  
205 -  
206 - var options = '';  
207 - $.each(groupData, function(i, obj){  
208 - options += '<option value="'+obj.id+'">'+obj.name+'</option>';  
209 - });  
210 - $('#groupSelect').html(options).change();  
211 -  
212 - cb && cb();  
213 - });  
214 - }  
215 -  
216 - //将数据写入表单  
217 - function drawFormData(json, fId){  
218 - json.enable = json.enable==true? 1 : 0;  
219 - for(var att in json){  
220 - var f = 'name=' +att  
221 - ,elem = $('input['+f+'],select['+f+']', fId);  
222 - if(elem.length > 0){  
223 - elem.val(json[att]).change();  
224 - }  
225 - }  
226 - }  
227 -  
228 - function getCurrSelNode(){  
229 - return $.jstree.reference("#modules_tree").get_selected(true);  
230 - }  
231 -}); 1 +<!-- 编辑Modal -->
  2 +<div class="modal fade" id="edit_modal" tabindex="-1" role="basic"
  3 + aria-hidden="true">
  4 + <div class="modal-dialog">
  5 + <div class="modal-content">
  6 + <div class="modal-header">
  7 + <button type="button" class="close" data-dismiss="modal"
  8 + aria-hidden="true"></button>
  9 + <h4 class="modal-title">编辑模块</h4>
  10 + </div>
  11 + <div class="modal-body">
  12 + <form class="form-horizontal" role="form" id="module_edit_form"
  13 + action="/module" method="post">
  14 + <input type="hidden" name="groupType" value="3">
  15 + <div class="alert alert-danger display-hide">
  16 + <button class="close" data-close="alert"></button>
  17 + 您的输入有误,请检查下面的输入项
  18 + </div>
  19 + <div class="form-body">
  20 + <input name="id" type="hidden">
  21 + <div class="form-group">
  22 + <label class="col-md-3 control-label">所属组</label>
  23 + <div class="col-md-9">
  24 + <select class="form-control input-medium " name="" id="groupSelect"></select>
  25 + </div>
  26 + </div>
  27 + <div class="form-group">
  28 + <label class="col-md-3 control-label">所属目录</label>
  29 + <div class="col-md-9">
  30 + <select class="form-control input-medium " name="pId" id="dirSelect"></select>
  31 + </div>
  32 + </div>
  33 + <div class="form-group">
  34 + <label class="col-md-3 control-label">模块名</label>
  35 + <div class="col-md-9">
  36 + <input type="text" class="form-control input-medium" name="name" > <span class="help-inline">
  37 + 不要超过10个汉字长度 </span>
  38 + </div>
  39 + </div>
  40 + <div class="form-group">
  41 + <label class="col-md-3 control-label">片段路径</label>
  42 + <div class="col-md-9">
  43 + <input type="text" class="form-control input-medium" name="path" autocomplete="off">
  44 + <span class="help-inline"> 片段,如:permission/module/list.html </span>
  45 + </div>
  46 + </div>
  47 + <div class="form-group">
  48 + <label class="col-md-3 control-label">片段渲染容器</label>
  49 + <div class="col-md-9">
  50 + <select class="form-control input-medium" name="container">
  51 + <option value="pjax-container">pjax-container</option>
  52 + <option value="route-container">route-container</option>
  53 + <option value="route-link">route-link</option>
  54 + </select>
  55 + </div>
  56 + </div>
  57 + <div class="form-group">
  58 + <label class="col-md-3 control-label">映射</label>
  59 + <div class="col-md-9">
  60 + <input type="text" class="form-control input-medium"
  61 + name="mappSymbol">
  62 + <span class="help-inline"> Controller对应的映射符,如: /module </span>
  63 + </div>
  64 + </div>
  65 + <div class="form-group">
  66 + <label class="col-md-3 control-label">是否可用</label>
  67 + <div class="col-md-9">
  68 + <select class="form-control input-medium" name="enable">
  69 + <option value="1">可用</option>
  70 + <option value="0">禁用</option>
  71 + </select>
  72 + </div>
  73 + </div>
  74 + <div class="form-group">
  75 + <label class="col-md-3 control-label">描述</label>
  76 + <div class="col-md-9">
  77 + <input type="text" class="form-control input-medium" name="descriptions">
  78 + </div>
  79 + </div>
  80 + </div>
  81 + </form>
  82 + </div>
  83 + <div class="modal-footer">
  84 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  85 + <button type="button" class="btn btn-primary" id="editModuleButton">保存修改</button>
  86 + </div>
  87 + </div>
  88 + </div>
  89 +</div>
  90 +<script data-exclude=1>
  91 +$(function() {
  92 +
  93 + var groupData = []
  94 + ,dirGroupMapp = {};//目录到组的映射
  95 +
  96 + var form = $('#module_edit_form');
  97 + var error = $('.alert-danger', form);
  98 +
  99 + //icheck
  100 + $('.icheck').iCheck({
  101 + checkboxClass: 'icheckbox_flat-green',
  102 + radioClass: 'iradio_flat-green',
  103 + increaseArea: '20%' // optional
  104 + });
  105 +
  106 + //modal 显示事件
  107 + $('#edit_modal').on('show.bs.modal', function(){
  108 + refreshFormData(function(){
  109 + var sel = getCurrSelNode();
  110 + if(sel.length > 0){
  111 + var tree = $.jstree.reference('#modules_tree')
  112 + ,m = sel[0]
  113 + , d = tree.get_node(m.parent)
  114 + , g = tree.get_node(d.parent);
  115 +
  116 + drawFormData(m.original, '#module_edit_form');//写入表单数据
  117 + $('#groupSelect').val(g.id).change();
  118 + $('select[name=pId]').val(d.id).change();
  119 + }
  120 + });
  121 + })
  122 + .modal('show');
  123 +
  124 + $('#groupSelect').on('change', function(){
  125 + var id = $(this).val();
  126 + $.each(groupData, function(i, obj){
  127 + if(obj.id == id){
  128 + var option = '';
  129 + $.each(obj.dirs, function(i, dir){
  130 + option += '<option value="'+dir.id+'">'+dir.name+'</option>';
  131 + });
  132 + $('#dirSelect').html(option);
  133 + return false;
  134 + }
  135 + });
  136 + });
  137 +
  138 + //提交
  139 + $('#editModuleButton').on('click', function() {
  140 + form.submit();
  141 + });
  142 + //form validate
  143 + form.validate({
  144 + errorElement : 'span',
  145 + errorClass : 'help-block help-block-error',
  146 + focusInvalid : false,
  147 + rules : {
  148 + name : {
  149 + minlength : 2,
  150 + required : true,
  151 + maxlength : 10
  152 + },
  153 + path : {
  154 + required : true
  155 + }/* ,
  156 + mappSymbol: {
  157 + required : true
  158 + } */
  159 + },
  160 + invalidHandler : function(event, validator) {
  161 + error.show();
  162 + App.scrollTo(error, -200);
  163 + },
  164 +
  165 + highlight : function(element) {
  166 + $(element).closest('.form-group').addClass('has-error');
  167 + },
  168 +
  169 + unhighlight : function(element) {
  170 + $(element).closest('.form-group').removeClass('has-error');
  171 + },
  172 +
  173 + success : function(label) {
  174 + label.closest('.form-group').removeClass('has-error');
  175 + },
  176 +
  177 + submitHandler : function(f) {
  178 + var params = form.serializeJSON();
  179 + error.hide();
  180 + $post('/module', params, function(res){
  181 + layer.msg('修改模块成功.');
  182 + refreshJsTree();
  183 + $('#edit_modal').modal('hide');
  184 + });
  185 + }
  186 + });
  187 +
  188 + function refreshFormData(cb){
  189 + groupData = [];
  190 + $get('/module/findByGroupType',{group: '1,2'}, function(array){
  191 + for(var i = 0,item; item=array[i++];){
  192 + if(item.groupType == '1'){
  193 + groupData.push(item);
  194 + }
  195 +
  196 + for(var j = 0,item2;item2=array[j++];){
  197 + if(item2.pId == item.id){
  198 + if(!item.dirs)
  199 + item.dirs = [];
  200 + item.dirs.push(item2);
  201 +
  202 + dirGroupMapp[item2.id] = item.id;
  203 + }
  204 + }
  205 + }
  206 +
  207 + var options = '';
  208 + $.each(groupData, function(i, obj){
  209 + options += '<option value="'+obj.id+'">'+obj.name+'</option>';
  210 + });
  211 + $('#groupSelect').html(options).change();
  212 +
  213 + cb && cb();
  214 + });
  215 + }
  216 +
  217 + //将数据写入表单
  218 + function drawFormData(json, fId){
  219 + json.enable = json.enable==true? 1 : 0;
  220 + for(var att in json){
  221 + var f = 'name=' +att
  222 + ,elem = $('input['+f+'],select['+f+']', fId);
  223 + if(elem.length > 0){
  224 + elem.val(json[att]).change();
  225 + }
  226 + }
  227 + }
  228 +
  229 + function getCurrSelNode(){
  230 + return $.jstree.reference("#modules_tree").get_selected(true);
  231 + }
  232 +});
232 </script> 233 </script>
233 \ No newline at end of file 234 \ No newline at end of file