Преглед изворни кода

모바일 슬라이드 메뉴 수정

juney пре 2 година
родитељ
комит
ef1abb7b79

+ 119 - 188
src/main/webapp/mobile/app/main.html

@@ -24,206 +24,137 @@
24 24
 	<script src="../js/properties.js"></script>
25 25
 	<script src="../../js/require.min.js" data-main="../js/config.js"></script>
26 26
 </head>
27
-	<body>
28
-		<div id="ITP_WRAPPER">
29
-			<header>
30
-				<div class="header_wrap">
31
-					<div class="menu_logo">
32
-						<button id="ITP_MOBILE_BTN_MENU"><img src="../img/menu.png" alt=""></button>
33
-						<button id="ITP_MOBILE_BTN_HOME"><img src="../img/home.png" alt=""></button>
34
-					</div>
35
-					<div class="logout">
36
-						<button id="ITP_MOBILE_BTN_LOGOUT">로그<br>아웃</button>
37
-					</div>
38
-					<div class="name_info">
39
-						<label>
40
-							<div class="fnBrnadNm">브랜드명</div>
41
-						</label>
42
-						<label class="fnLblDash">
43
-							<div>-</div>
44
-						</label>
45
-						<label class="fnLblStoreNm">
46
-							<div class="fnStoreNm">매장명</div>
47
-						</label>
48
-					</div>
49
-				</div>
50
-			</header>
27
+<body>
28
+<div id="ITP_WRAPPER">
29
+	<header>
30
+		<div class="header_wrap">
31
+			<div class="menu_logo">
32
+				<button id="ITP_MOBILE_BTN_MENU"><img src="../img/menu.png" alt=""></button>
33
+				<button id="ITP_MOBILE_BTN_HOME"><img src="../img/home.png" alt=""></button>
34
+			</div>
35
+			<div class="logout">
36
+				<button id="ITP_MOBILE_BTN_LOGOUT">로그<br>아웃</button>
37
+			</div>
38
+			<div class="name_info">
39
+				<label>
40
+					<div class="fnMenuNm"></div>
41
+				</label>
42
+				<label>
43
+					<div class="fnBrnadNm">브랜드명</div>
44
+				</label>
45
+				<label class="fnLblDash">
46
+					<div>-</div>
47
+				</label>
48
+				<label class="fnLblStoreNm">
49
+					<div class="fnStoreNm">매장명</div>
50
+				</label>
51
+			</div>
52
+		</div>
53
+	</header>
51 54
 
52
-			<div id="ITP_MENU" style="display: none;">
53
-				<div class="menu_area">
54
-					<button class="ITP_BTN_CLOSE"><img src="../img/close2.png"></button>
55
+	<div id="ITP_MENU" style="display: none;">
56
+		<div class="menu_area">
57
+			<button class="ITP_BTN_NAV_CLOSE"><img src="../img/close2.png"></button>
58
+		</div>
59
+		<div class="menu_bar">
60
+			<div class="menu_header">
61
+				<div class="brand_img">
62
+					<img src="../img/naver.png">
63
+				</div>
64
+				<div class="user_info">
65
+					<div id="ITP_LOGIN_USER_NM" class=""></div>
66
+					<label>사장님</label>
67
+					<div id="ITP_LOGIN_USER_ID" class="id"></div>
55 68
 				</div>
56
-				<div class="menu_bar">
57
-					<div class="menu_header">
58
-						<div class="brand_img">
59
-							<img src="../img/naver.png">
69
+				<div class="setting">
70
+					<button id="ITP_MOBILE_BTN_SETTING"><img src="../img/gear.png"></button>
71
+				</div>
72
+			</div>
73
+			<nav id="ITP_SIDEBAR" class="itp_open_nav">
74
+				<ul class="panel-group itp_nav"></ul>
75
+				<textarea id="ITP_AJAX_MAIN_SIDE_LEVEL2_ROWCOPY" rows="0" cols="0" style="display:none;">
76
+				<li class="panel panel-default">
77
+					<div class="panel-heading">
78
+						<div class="panel-title">
79
+							<a class="accordion-toggle" data-toggle="collapse" href="">
80
+								<span class="fnMenuNm">메뉴명</span>
81
+								<i class="indicator glyphicon glyphicon-chevron-down pull-right"></i>
82
+							</a>
60 83
 						</div>
61
-						<div class="user_info">
62
-							<div id="ITP_LOGIN_USER_NM" class=""></div>
63
-							<label>사장님</label>
64
-							<div id="ITP_LOGIN_USER_ID" class="id">asdf1234</div>
84
+					</div>
85
+					<div class="panel-collapse collapse" id="">
86
+						<div class="panel-body itp_svgs_body">
87
+							<ul class="itp_svgs fnLevelBottomList"></ul>
65 88
 						</div>
66
-						<div class="setting">
67
-							<button id="ITP_MOBILE_BTN_SETTING"><img src="../img/gear.png"></button>
89
+					</div>
90
+				</li>
91
+				</textarea>
92
+				<textarea id="ITP_AJAX_MAIN_SIDE_LEVEL3_ROWCOPY" rows="0" cols="0" style="display:none;">
93
+				<li>
94
+					<div class="itp_svg_in">
95
+						<a href="javascript:void(0)" data-itp-nav-id="" data-conn-url="" id="" class="itp_nav_link fix">
96
+							<i class="glyphicon glyphicon-chevron-right"></i>
97
+							<span class="itp_tt fnMenuNm">메뉴명</span>
98
+						</a>
99
+					</div>
100
+				</li>
101
+				</textarea>
102
+				<ul class="nav_bottom">
103
+					<li>
104
+						<div class="panel-heading">
105
+							<span class="fnMenuNm">버전</span>
106
+							<span class="fnVersion ver">1.0.3</span>
107
+							<!--<span class="show">최신버전</span>-->
68 108
 						</div>
109
+					</li>
110
+				</ul>
111
+			</nav>
112
+		</div>
113
+	</div>
114
+
115
+	<div id="ITP_CONTAINER" class="fix">
116
+		<div class="itp_mobile_contents">
117
+
118
+		</div>
119
+	</div>
120
+	<footer id="ITP_FOOTER">
121
+		<div id="ITP_MODAL_ALERT" class="modal itp_modal">
122
+			<div class="modal-dialog modal-sm">
123
+				<div class="modal-content">
124
+					<div class="modal-header">
125
+						<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
126
+						<h5 class="modal-title">알림</h5>
127
+					</div>
128
+					<div class="modal-body">
129
+						<div class="text-center itp_alert_txt"></div>
69 130
 					</div>
70
-					<div id="ITP_SIDEBAR" class="menu_select" style="overflow:auto;">
71
-						<ul class="panel-group itp_nav"></ul>
72
-						<ul>
73
-							<textarea id="ITP_AJAX_MAIN_SLIDE_LEVEL2_ROWCOPY" rows="0" cols="0" style="display:none;">
74
-								<li class="panel_list">
75
-									<div class="panel_heading accordion-toggle">
76
-										<span data-toggle="collapse" href="" class="fnMenuNm"></span>
77
-									</div>
78
-									<div class="panel_body">
79
-										<ul class="fnLevelBottomList"></ul>
80
-									</div>
81
-								</li>
82
-							</textarea>
83
-							<textarea id="ITP_AJAX_MAIN_SLIDE_LEVEL3_ROWCOPY" rows="0" cols="0" style="display:none;">
84
-								<li>
85
-									<div data-itp-nav-id="" data-conn-url="" id="" class="itp_svg_in itp_nav_link fix">
86
-										<i><img src="../img/arrow_right.png"></i>
87
-										<span class="fnMenuNm"></span>
88
-									</div>
89
-								</li>
90
-							</textarea>
91
-							<!--<li class="panel_list">
92
-								<div class="panel_heading">
93
-									<span class="fnMenuNm">발주관리</span>
94
-								</div>
95
-								<div class="panel_body">
96
-									<ul>
97
-										<li>
98
-											<div class="itp_svg_in">
99
-												<i><img src="../img/arrow_right.png"></i>
100
-												<span class="fnMenuNm">구매요청생성</span>
101
-											</div>
102
-										</li>
103
-										<li>
104
-											<div class="itp_svg_in">
105
-												<i><img src="../img/arrow_right.png"></i>
106
-												<span class="fnMenuNm">구매요청현황</span>
107
-											</div>
108
-										</li>
109
-										<li>
110
-											<div class="itp_svg_in">
111
-												<i><img src="../img/arrow_right.png"></i>
112
-												<span class="fnMenuNm">입고처리</span>
113
-											</div>
114
-										</li>
115
-										<li>
116
-											<div class="itp_svg_in">
117
-												<i><img src="../img/arrow_right.png"></i>
118
-												<span class="fnMenuNm">입고현황</span>
119
-											</div>
120
-										</li>
121
-									</ul>
122
-								</div>
123
-							</li>
124
-							<li class="panel_list">
125
-								<div class="panel_heading">
126
-									<span class="fnMenuNm">반품관리</span>
127
-								</div>
128
-								<div class="panel_body">
129
-									<ul>
130
-										<li>
131
-											<div class="itp_svg_in">
132
-												<i><img src="../img/arrow_right.png"></i>
133
-												<span class="fnMenuNm">반품요청</span>
134
-											</div>
135
-										</li>
136
-										<li>
137
-											<div class="itp_svg_in">
138
-												<i><img src="../img/arrow_right.png"></i>
139
-												<span class="fnMenuNm">반품요청현황</span>
140
-											</div>
141
-										</li>
142
-										<li>
143
-											<div class="itp_svg_in">
144
-												<i><img src="../img/arrow_right.png"></i>
145
-												<span class="fnMenuNm">반품발주현황</span>
146
-											</div>
147
-										</li>
148
-										<li>
149
-											<div class="itp_svg_in">
150
-												<i><img src="../img/arrow_right.png"></i>
151
-												<span class="fnMenuNm">반품처리</span>
152
-											</div>
153
-										</li>
154
-										<li>
155
-											<div class="itp_svg_in">
156
-												<i><img src="../img/arrow_right.png"></i>
157
-												<span class="fnMenuNm">반품현황</span>
158
-											</div>
159
-										</li>
160
-									</ul>
161
-								</div>
162
-							</li>
163
-							<li class="panel_list">
164
-								<div class="panel_heading">
165
-									<span class="fnMenuNm">여신관리</span>
166
-								</div>
167
-							</li>
168
-							<li class="panel_list">
169
-								<div class="panel_heading">
170
-									<span class="fnMenuNm">재고관리</span>
171
-								</div>
172
-							</li>-->
173
-							<li class="panel_list">
174
-								<div class="panel_heading">
175
-									<span class="fnMenuNm">버전</span>
176
-									<span class="fnVersion ver">1.0.3</span>
177
-									<span class="show">최신버전</span>
178
-								</div>
179
-							</li>
180
-						</ul>
131
+					<div class="modal-footer">
132
+						<button type="button" class="btn btn-default" id="ITP_MODAL_ALERT_CANCEL" data-dismiss="modal">취소</button>
133
+						<button type="button" class="btn btn-primary" id="ITP_MODAL_ALERT_CONFIRM">확인</button>
181 134
 					</div>
182 135
 				</div>
183 136
 			</div>
184
-			<div id="ITP_CONTAINER" class="fix">
185
-				<div class="itp_mobile_contents">
137
+		</div>
186 138
 
187
-				</div>
188
-			</div>
189
-			<footer id="ITP_FOOTER">
190
-				<div id="ITP_MODAL_ALERT" class="modal itp_modal">
191
-					<div class="modal-dialog modal-sm">
192
-						<div class="modal-content">
193
-							<div class="modal-header">
194
-								<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
195
-								<h5 class="modal-title">알림</h5>
196
-							</div>
197
-							<div class="modal-body">
198
-								<div class="text-center itp_alert_txt"></div>
199
-							</div>
200
-							<div class="modal-footer">
201
-								<button type="button" class="btn btn-default" id="ITP_MODAL_ALERT_CANCEL" data-dismiss="modal">취소</button>
202
-								<button type="button" class="btn btn-primary" id="ITP_MODAL_ALERT_CONFIRM">확인</button>
203
-							</div>
204
-						</div>
139
+		<div id="ITP_MODAL_ALERT_AJAX" class="modal itp_modal">
140
+			<div class="modal-dialog modal-sm">
141
+				<div class="modal-content">
142
+					<div class="modal-header">
143
+						<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
144
+						<h5 class="modal-title">알림</h5>
205 145
 					</div>
206
-				</div>
207
-
208
-				<div id="ITP_MODAL_ALERT_AJAX" class="modal itp_modal">
209
-					<div class="modal-dialog modal-sm">
210
-						<div class="modal-content">
211
-							<div class="modal-header">
212
-								<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
213
-								<h5 class="modal-title">알림</h5>
214
-							</div>
215
-							<div class="modal-body">
216
-								<div class="text-center itp_alert_txt"></div>
217
-							</div>
218
-							<div class="modal-footer">
219
-								<button type="button" class="btn btn-primary" id="ITP_MODAL_ALERT_AJAX_CONFIRM">확인</button>
220
-							</div>
221
-						</div>
146
+					<div class="modal-body">
147
+						<div class="text-center itp_alert_txt"></div>
148
+					</div>
149
+					<div class="modal-footer">
150
+						<button type="button" class="btn btn-primary" id="ITP_MODAL_ALERT_AJAX_CONFIRM">확인</button>
222 151
 					</div>
223 152
 				</div>
224
-			</footer>
225
-
226
-			<aside id="ITP_ASIDE"></aside>
153
+			</div>
227 154
 		</div>
228
-	</body>
155
+	</footer>
156
+
157
+	<aside id="ITP_ASIDE"></aside>
158
+</div>
159
+</body>
229 160
 </html>

+ 30 - 1
src/main/webapp/mobile/css/style.css

@@ -196,7 +196,7 @@ input .day {margin: 18%; width: 45%; height: 80px; float: right;}
196 196
 #ITP_MENU .menu_area {position: fixed; width: 100%; height: 100%; top: 0; left: -0%; background: #000; opacity: 0.7; z-index: 12; transition: all 0.5s;}
197 197
 #ITP_MENU .menu_area button {float: right; width: 20px; height: 20px; padding: 0; background: transparent; border: none;}
198 198
 #ITP_MENU .menu_area button img {float: right; width: 40px; height: 40px; margin: 7px;}
199
-#ITP_MENU .menu_bar {position: fixed; width: 80%; height: 100%; left: -0%; top: 0; background: #fff; opacity: 1; z-index: 13; transition: all 0.5s;}
199
+#ITP_MENU .menu_bar {position: fixed; width: 70%; height: 100%; left: -0%; top: 0; background: #fff; opacity: 1; z-index: 13; transition: all 0.5s;}
200 200
 #ITP_MENU .menu_bar .menu_header {width: 100%; height: 100px; border-bottom: 1px solid #000 ;}
201 201
 #ITP_MENU .menu_bar .menu_header .brand_img {position: absolute; width: 50px; height: 50px; margin: 20px 0 0 20px;}
202 202
 #ITP_MENU .menu_bar .menu_header .brand_img img {width: 50px; height: 50px; border: 1px solid #000; border-radius: 5px;}
@@ -216,6 +216,35 @@ input .day {margin: 18%; width: 45%; height: 80px; float: right;}
216 216
 #ITP_MENU .menu_bar .menu_select ul .panel_list .panel_body .itp_svg_in i {width: 30px; height: 30px;}
217 217
 #ITP_MENU .menu_bar .menu_select ul .panel_list .panel_body .itp_svg_in i img{width: 15px; height: 15px;}
218 218
 
219
+
220
+/* ITP_SIDEBAR */
221
+#ITP_SIDEBAR {width:0px; float:left; margin-left:-2px; height:calc(100vh - 68px); background:#ddd; transition:all .25s ease; border-style:solid; border-color:#ddd; border-width:0 1px 1px 1px;}
222
+#ITP_SIDEBAR.itp_open_nav {width: 100%; height: 100%;}
223
+#ITP_SIDEBAR .itp_nav {list-style:none; margin:0; padding:0; height:80%; overflow-y:scroll; overflow-x:hidden; visibility:hidden;}
224
+#ITP_SIDEBAR.itp_open_nav .itp_nav {visibility:visible;}
225
+#ITP_SIDEBAR.itp_open_nav .itp_nav::-webkit-scrollbar{display:none;}
226
+#ITP_SIDEBAR .itp_nav.panel-group .panel+.panel {margin-top:0;}
227
+#ITP_SIDEBAR .itp_nav .panel-heading {padding:0;}
228
+#ITP_SIDEBAR .itp_nav .panel-title {line-height:1.1; border-bottom:1px solid #ddd;}
229
+#ITP_SIDEBAR .itp_nav .panel-title a {font-size:20px; display:block; padding:13px 15px; color:#333;}
230
+#ITP_SIDEBAR .itp_nav .panel-title a:hover{text-decoration: none;}
231
+#ITP_SIDEBAR .itp_nav .panel-title a .glyphicon {font-size:12px;}
232
+#ITP_SIDEBAR .itp_nav .panel-default {margin-bottom:0; border:none;}
233
+#ITP_SIDEBAR .itp_nav * {border-radius:0; border-width:1px 0 1px 0;}
234
+#ITP_SIDEBAR .itp_nav .itp_svgs_body {padding:0; border-top:0; border-bottom:1px solid #ddd;}
235
+#ITP_SIDEBAR .itp_nav .itp_svgs {display:flex; align-content:flex-start; flex-direction:column; flex-wrap:wrap; overflow:auto;}
236
+#ITP_SIDEBAR .itp_nav .itp_svgs .itp_svg_in {position:relative;}
237
+#ITP_SIDEBAR .itp_nav .itp_svgs li a {display:block; width:100%; color:#333; padding:5px 10px 5px 17px;}
238
+#ITP_SIDEBAR .itp_nav .itp_svgs li:first-child a {padding-top:10px;}
239
+#ITP_SIDEBAR .itp_nav .itp_svgs li:last-child a {padding-bottom:10px;}
240
+#ITP_SIDEBAR .itp_nav .itp_svgs li a:hover, #ITP_SIDEBAR .itp_nav .itp_svgs li a:active {color:#000; font-weight:bold;}
241
+#ITP_SIDEBAR .itp_nav .itp_svgs li a .glyphicon {font-size:9px; float:left; margin:4px 6px 0 0;}
242
+#ITP_SIDEBAR .itp_nav .itp_svgs li a .itp_icon {font-size:9px; float:left; margin:4px 6px 0 15px;}
243
+#ITP_SIDEBAR .itp_nav .itp_svgs li a .itp_icon_5 {font-size:9px; float:left; margin:4px 6px 0 25px;}
244
+#ITP_SIDEBAR .itp_nav .itp_svgs li a .itp_tt {float:left;}
245
+
246
+#ITP_SIDEBAR.itp_open_nav .nav_bottom {visibility:visible;}
247
+
219 248
 /* 컨텐츠 화면 */
220 249
 
221 250
 

+ 3 - 14
src/main/webapp/mobile/js/app/main.js

@@ -12,20 +12,9 @@ require(['config'], function() {
12 12
 
13 13
 var mobMainObj = {
14 14
 	init: function () {
15
-
16
-	}
17
-};
18
-
19
-var itp_fn_barcode = {
20
-	init: function () {
21
-		this.event();
22
-	},
23
-	event: function () {
24
-		$('#ITP_BTN_BARCODE').on('click', function() {
25
-			$(location).attr('href', 'app:scan');
15
+		$('#ITP_BTN_CLOSE').on('click', function() {
16
+			console.log('ITP_BTN_CLOSE clicked!!!');
26 17
 		});
27 18
 	},
28
-	callback: function (barcode) {
29
-		alert(barcode);
30
-	}
19
+
31 20
 };

+ 15 - 9
src/main/webapp/mobile/js/config.js

@@ -61,6 +61,10 @@ require([
61 61
 		$('#ITP_MENU').toggle();
62 62
 	});
63 63
 
64
+	$('#ITP_BTN_NAV_CLOSE').on('click', function() {
65
+		$('#ITP_MENU').toggle();
66
+	});
67
+
64 68
 	// 로그아웃 버튼
65 69
 	$('#ITP_MOBILE_BTN_LOGOUT').click(function() {
66 70
 		fnLogout();
@@ -160,29 +164,30 @@ var fn_make_slide_menu = {
160 164
 		this.make();
161 165
 	},
162 166
 	make: function() {
163
-		var selector = '.menu_select .panel-group > .panel_list:last';
167
+		var selector = '#ITP_SIDEBAR .panel-group > .panel-default:last';
168
+		$('#ITP_SIDEBAR .panel-group').empty();
164 169
 		$.each(AUTH_MENU_LIST, function(key, value) {
165 170
 			if(value.level === 2) { // LEVEL2
166
-				$('.menu_select .panel-group').append($('#ITP_AJAX_MAIN_SLIDE_LEVEL2_ROWCOPY').val());
171
+				$('#ITP_SIDEBAR .panel-group').append($('#ITP_AJAX_MAIN_SIDE_LEVEL2_ROWCOPY').val());
167 172
 				$(selector).find('.fnMenuNm').text(value.menuNm);
168 173
 				$(selector).find('.accordion-toggle').attr('href', '#ITP_NAV_'+value.menuNo);
169 174
 				$(selector).find('.panel-collapse').attr('id', 'ITP_NAV_'+value.menuNo);
170 175
 				$(selector).find('.fnLevelBottomList').empty();
171 176
 			} else if(value.level === 3) { // LEVEL3
172
-				$(selector).find('.fnLevelBottomList').append($('#ITP_AJAX_MAIN_SLIDE_LEVEL3_ROWCOPY').val());
177
+				$(selector).find('.fnLevelBottomList').append($('#ITP_AJAX_MAIN_SIDE_LEVEL3_ROWCOPY').val());
173 178
 				$(selector + ' .fnLevelBottomList .itp_svg_in:last').find('.fnMenuNm').text(value.menuNm);
174
-				$(selector + ' .fnLevelBottomList .itp_svg_in:last').attr('data-itp-nav-id', value.menuId);
175
-				$(selector + ' .fnLevelBottomList .itp_svg_in:last').attr('data-conn-url', value.connUrl);
176
-				$(selector + ' .fnLevelBottomList .itp_svg_in:last').attr('data-open-cd', value.openCd);
177
-				$(selector + ' .fnLevelBottomList .itp_svg_in:last').attr('id', value.menuId + '_PAGE_NO');
179
+				$(selector + ' .fnLevelBottomList .itp_svg_in:last').find('.itp_nav_link').attr('data-itp-nav-id', value.menuId);
180
+				$(selector + ' .fnLevelBottomList .itp_svg_in:last').find('.itp_nav_link').attr('data-conn-url', value.connUrl);
181
+				$(selector + ' .fnLevelBottomList .itp_svg_in:last').find('.itp_nav_link').attr('data-open-cd', value.openCd);
182
+				$(selector + ' .fnLevelBottomList .itp_svg_in:last').find('.itp_nav_link').attr('id', value.menuId + '_PAGE_NO');
178 183
 			}
179 184
 		});
185
+
180 186
 		this.action();
181 187
 	},
182 188
 	action: function() {
183 189
 		var _this = this;
184
-		$('#ITP_SIDEBAR .accordion-toggle').off('click').on('click', function() {
185
-			console.log('accordion-toggle');
190
+		$('#ITP_SIDEBAR .accordion-toggle').off('click').on('click', function(e) {
186 191
 			$(this).find('i.indicator').toggleClass('glyphicon-chevron-down glyphicon-chevron-up');
187 192
 		});
188 193
 		$('#ITP_SIDEBAR .itp_nav_link').off('click').on('click', function() {
@@ -198,6 +203,7 @@ var fn_make_slide_menu = {
198 203
 				$('.name_info .fnMenuNm').text($(this).find('.fnMenuNm').text() + '|');
199 204
 			}
200 205
 		});
206
+		$('#ITP_SIDEBAR .panel-group > .panel-default:first').find('.accordion-toggle').trigger('click');
201 207
 	},
202 208
 	loadPage: function(id, href, param) {
203 209
 		//로그인체크