Просмотр исходного кода

모바일 반품관리 디자인 적용

juney лет назад: 2
Родитель
Сommit
96161f3050

+ 37 - 38
src/main/webapp/mobile/app/mrtnmng/MRTNMNG04010.html

@@ -1,46 +1,8 @@
1 1
 <section id="ITP_MOBILE_MRTNMNG04010">
2
-	<div id="ITP_POP_MRTNMNG04010_WHS_AREA" class="popup2 mobile-pop-close" style="display: none;">
3
-		<div class="pop">
4
-			<div class="header">
5
-				<div class="header_left">
6
-					<label>납품장소</label>
7
-				</div>
8
-				<div class="header_right">
9
-					<button type="button" id="ITP_BTN_MRTNMNG04010_POP_WHS_CLOSE"><img src="../img/close.png"></button>
10
-				</div>
11
-			</div>
12
-			<div class="search_bar">
13
-				<form id="ITP_FORM_MRTNMNG04010_POP_WHS" class="form-horizontal" onsubmit="return false;">
14
-					<input type="hidden" id="ITP_FORM_MRTNMNG04010_WHS_ITEM_BRAND_ID" name="sbrandId" value="">
15
-					<input type="hidden" id="ITP_FORM_MRTNMNG04010_WHS_ITEM_STORE_ID" name="sstoreId" value="">
16
-					<input id="ITP_FORM_MRTNMNG04010_POP_WHS_KEYWORD" type="text" name="swhsNm" placeholder="납품장소명">
17
-					<button id="ITP_BTN_MRTNMNG04010_POP_WHS_SEARCH"><img src="../img/search.png"></button>
18
-				</form>
19
-			</div>
20
-			<div class="select_btn">
21
-				<button id="ITP_BTN_MRTNMNG04010_POP_WHS_NM" class="btn_blue">납품장소 <img src="../img/arrow_down.png"></button>
22
-			</div>
23
-			<div id="ITP_LIST_MRTNMNG04010_POP_WHS_AREA" class="popup_scroll">
24
-				<ul id="ITP_LIST_MRTNMNG04010_POP_WHS_ROWS" class="mb_0 panel-group itp_nav"></ul>
25
-				<div id="ITP_LIST_MRTNMNG04010_POP_WHS_ROWCOPY" style="display:;">
26
-					<li class="list-row row_2">
27
-						<div class="scroll_left">
28
-							<div class="con_2 fnWhsNm"></div>
29
-							<div class="con_2 sub fnLocationNm"></div>
30
-						</div>
31
-						<div class="scroll_right">
32
-							<button id="ITP_BTN_MRTNMNG04010_POP_WHS_CHOICE" class="fnWhsId" data-whs-id="">선택</button>
33
-						</div>
34
-					</li>
35
-				</div>
36
-			</div>
37
-		</div>
38
-	</div>
39 2
 	<div id="ITP_AJAX_MRTNMNG04010_LIST_CONTAINER" style="display: none;">
40 3
 		<form id="ITP_FORM_MRTNMNG04010_LIST_SEARCH" class="form-horizontal" onsubmit="return false;">
41 4
 			<input type="hidden" id="ITP_FORM_MPOMNG02010_LIST_SEARCH_BRAND_ID" name="sbrandId" value="">
42 5
 			<input type="hidden" id="ITP_FORM_MPOMNG02010_LIST_SEARCH_STORE_ID" name="sstoreId" value="">
43
-			<input type="hidden" id="ITP_FORM_MPOMNG02010_LIST_SEARCH_IDX" name="sidx" value="0">
44 6
 			<div class="content">
45 7
 				<div class="line header">
46 8
 				  <div class="itp_search_header"><img src="../img/right_arrow_pink.png" alt="">반품발주현황</div>
@@ -223,4 +185,41 @@
223 185
 		</form>
224 186
 	</div>
225 187
 	<div id="ITP_MOBILE_JS"></div>
188
+	<div id="ITP_POP_MRTNMNG04010_WHS_AREA" class="popup2 mobile-pop-close" style="display: none;">
189
+		<div class="pop">
190
+			<div class="header">
191
+				<div class="header_left">
192
+					<label>납품장소</label>
193
+				</div>
194
+				<div class="header_right">
195
+					<button type="button" id="ITP_BTN_MRTNMNG04010_POP_WHS_CLOSE"><img src="../img/close.png"></button>
196
+				</div>
197
+			</div>
198
+			<div class="search_bar">
199
+				<form id="ITP_FORM_MRTNMNG04010_POP_WHS" class="form-horizontal" onsubmit="return false;">
200
+					<input type="hidden" id="ITP_FORM_MRTNMNG04010_WHS_ITEM_BRAND_ID" name="sbrandId" value="">
201
+					<input type="hidden" id="ITP_FORM_MRTNMNG04010_WHS_ITEM_STORE_ID" name="sstoreId" value="">
202
+					<input id="ITP_FORM_MRTNMNG04010_POP_WHS_KEYWORD" type="text" name="swhsNm" placeholder="납품장소명">
203
+					<button id="ITP_BTN_MRTNMNG04010_POP_WHS_SEARCH"><img src="../img/search.png"></button>
204
+				</form>
205
+			</div>
206
+			<div class="select_btn">
207
+				<button id="ITP_BTN_MRTNMNG04010_POP_WHS_NM" class="btn_blue">납품장소 <img src="../img/arrow_down.png"></button>
208
+			</div>
209
+			<div id="ITP_LIST_MRTNMNG04010_POP_WHS_AREA" class="popup_scroll">
210
+				<ul id="ITP_LIST_MRTNMNG04010_POP_WHS_ROWS" class="mb_0 panel-group itp_nav"></ul>
211
+				<div id="ITP_LIST_MRTNMNG04010_POP_WHS_ROWCOPY" style="display:none;">
212
+					<li class="list-row row_2">
213
+						<div class="scroll_left">
214
+							<div class="con_2 fnWhsNm"></div>
215
+							<div class="con_2 sub fnLocationNm"></div>
216
+						</div>
217
+						<div class="scroll_right">
218
+							<button id="ITP_BTN_MRTNMNG04010_POP_WHS_CHOICE" class="fnWhsId" data-whs-id="">선택</button>
219
+						</div>
220
+					</li>
221
+				</div>
222
+			</div>
223
+		</div>
224
+	</div>
226 225
 </section>

+ 3 - 3
src/main/webapp/mobile/app/mrtnmng/MRTNMNG05010.html

@@ -25,8 +25,8 @@
25 25
 				<div class="line">
26 26
 					<label>반품입고장소</label>
27 27
 					<div class="float_left">
28
-						<input type="text" id="ITP_FORM_MRTNMNG05010_LIST_SEARCH_RTN_WHS_NM" data-check-required="empty" class="" name="srtnWhsNm" placeholder="매장명" readonly />
29
-						<input type="hidden" id="ITP_FORM_MRTNMNG05010_LIST_SEARCH_RTN_WHS_ID" data-check-required="empty" class="" name="srtnWhsId" />
28
+						<input type="text" id="ITP_FORM_MRTNMNG05010_LIST_SEARCH_RTN_WHS_NM" data-check-required="empty" data-alert-required="ONLYCHK" data-alert-msg="수거창고" class="" name="srtnWhsNm" placeholder="수거창고" readonly />
29
+						<input type="hidden" id="ITP_FORM_MRTNMNG05010_LIST_SEARCH_RTN_WHS_ID" class="" name="srtnWhsId" />
30 30
 						<div class="itp_input_btn">
31 31
 							<button id="ITP_BTN_MRTNMNG05010_LIST_SEARCH_RTN_WHS_NM"><img src="../img/search.png" alt=""></button>
32 32
 						</div>
@@ -67,7 +67,7 @@
67 67
 		<form id="ITP_FORM_MRTNMNG05010_LIST_MODIFY" class="form-horizontal" onsubmit="return false;">
68 68
 			<div id="ITP_LIST_MRTNMNG05010_LIST_ITEM_AREA" class="scroll_area row-10">
69 69
 				<ul id="ITP_LIST_MRTNMNG05010_LIST_ITEM_ROWS" class="panel-group"></ul>
70
-				<div id="ITP_LIST_MRTNMNG05010_LIST_ITEM_ROWCOPY" style="display: block;">
70
+				<div id="ITP_LIST_MRTNMNG05010_LIST_ITEM_ROWCOPY" style="display: none;">
71 71
 					<li class="history_list2">
72 72
 						<div class="left">
73 73
 							<div class="nomal">

+ 3 - 3
src/main/webapp/mobile/app/mrtnmng/MRTNMNG06010.html

@@ -3,7 +3,7 @@
3 3
 		<form id="ITP_FORM_MRTNMNG06010_LIST_SEARCH" class="form-horizontal" onsubmit="return false;">
4 4
 			<input type="hidden" id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_BRAND_ID" name="sbrandId" value="">
5 5
 			<input type="hidden" id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_STORE_ID" name="sstoreId" value="">
6
-			<input type="hidden" id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_IDX" name="sidx" value="0">
6
+			<input type="hidden" id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_SPPLY_ID" name="sspplyId" value="">
7 7
 			<div class="content">
8 8
 				<div class="line header">
9 9
 				  <div class="itp_search_header"><img src="../img/right_arrow_pink.png" alt="">반품현황</div>
@@ -25,7 +25,7 @@
25 25
 				<div class="line top3">
26 26
 					<label>반품입고장소</label>
27 27
 					<div class="float_left">
28
-						<input id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_RTN_WHS_NM" name="srtnWhsNm" type="text" placeholder="매장명" readonly>
28
+						<input id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_RTN_WHS_NM" name="srtnWhsNm" type="text" data-check-required="empty" data-alert-required="ONLYCHK" data-alert-msg="수거창고" placeholder="매장명" readonly>
29 29
 						<input type="hidden" id="ITP_FORM_MRTNMNG06010_LIST_SEARCH_RTN_WHS_ID" class="" name="srtnWhsId" />
30 30
 						<div class="itp_input_btn">
31 31
 							<button id="ITP_BTN_MRTNMNG06010_LIST_SEARCH_RTN_WHS_NM" data-call-popup="ITP_POP_MRTNMNG06010_WHS_NM"><img src="../img/search.png" alt=""></button>
@@ -151,7 +151,7 @@
151 151
 			</div>
152 152
 			<div id="ITP_LIST_MRTNMNG06010_POP_WHS_AREA" class="popup_scroll">
153 153
 				<ul id="ITP_LIST_MRTNMNG06010_POP_WHS_ROWS" class="mb_0 panel-group itp_nav"></ul>
154
-				<div id="ITP_LIST_MRTNMNG06010_POP_WHS_ROWCOPY" style="display: block;">
154
+				<div id="ITP_LIST_MRTNMNG06010_POP_WHS_ROWCOPY" style="display: none;">
155 155
 					<li class="row_2">
156 156
 						<div class="scroll_left">
157 157
 							<div class="con_2 fnWhsNm">브랜드 창고 명A</div>

+ 13 - 12
src/main/webapp/mobile/js/app/mrtnmng/ITP_MRTNMNG04010.js

@@ -143,7 +143,7 @@ let mobContentObj = {
143 143
 				_this.totPage = result.gridTotal;
144 144
 				$.each(result.gridRows, function (i, item) {
145 145
 					$('#ITP_LIST_MRTNMNG04010_LIST_ITEM_AREA .panel-group').append($('#ITP_LIST_MRTNMNG04010_LIST_ITEM_ROWCOPY').html());
146
-					var $li = $('#ITP_LIST_MRTNMNG04010_LIST_ITEM_AREA .panel-group > .history_list:last');
146
+					var $li = $('#ITP_LIST_MRTNMNG04010_LIST_ITEM_AREA .panel-group > .history_list7:last');
147 147
 					$li.find('.fnRtnOdrRegDt').text(item.rtnOdrRegDt);
148 148
 					$li.find('.fnColDvsnNm').text(item.colDvsnNm);
149 149
 					$li.find('.fnRtnOdrStNm').text(item.rtnOdrStNm);
@@ -190,7 +190,7 @@ let mobContentObj = {
190 190
 			$(id).find('.fnWhsNm').text(result.whsNm);
191 191
 			$.each(result.rtnOdrDtlList, function (i, item) {
192 192
 				$('#ITP_LIST_MRTNMNG04010_VIEW_ITEM_AREA .panel-group').append($('#ITP_LIST_MRTNMNG04010_VIEW_ITEM_ROWCOPY').html());
193
-				var $li = $('#ITP_LIST_MRTNMNG04010_VIEW_ITEM_AREA .panel-group > .list-row2:last');
193
+				var $li = $('#ITP_LIST_MRTNMNG04010_VIEW_ITEM_AREA .panel-group > .history_list5:last');
194 194
 				$li.find('.fnItemNm').text(item.itemNm);
195 195
 				$li.find('.fnRtnOdrQty').text(CommonObj.comma.set(item.rtnOdrQty, item.unit));
196 196
 				$li.find('.fnRtnOdrAmt').text(CommonObj.currency.add(item.rtnOdrAmt));
@@ -198,11 +198,16 @@ let mobContentObj = {
198 198
 			});
199 199
 		},
200 200
 		rtnPoCancel: function() {
201
-			if(confirm('반품 취소하시겠습니까?')) {
202
-				const param = {'brandId': fn_make_user_info.get('brandId'), 'rtnPodrUnqNo': this.rtnPodrUnqNo};
203
-				console.log(param);
204
-				fn_ajax_call(API_MOBILE_CANCEL, JSON.stringify(param), function() { mobContentObj.view.cancel(true) }, 'POST');
205
-			}
201
+			var modalFn = {
202
+				callBack: () => {
203
+					const param = {'brandId': fn_make_user_info.get('brandId'), 'rtnPodrUnqNo': this.rtnPodrUnqNo};
204
+					var searhFn = function () {
205
+						mobContentObj.list.init();
206
+					};
207
+					fn_ajax_call(API_RTNMNG_RTN_CANCEL_RTNPO, JSON.stringify(param), searhFn, 'POST');
208
+				}
209
+			};
210
+			itp_fn_modal_confirm('반품발주를 취소 하시겠습니까?', modalFn);
206 211
 		},
207 212
 		cancel: function (isSearch) {
208 213
 			var id = '#ITP_AJAX_MRTNMNG04010_VIEW_CONTAINER';
@@ -300,11 +305,7 @@ let mobPopObj = {
300 305
 				_this.view(result.gridRows);
301 306
 			};
302 307
 			const param = $('#ITP_FORM_MRTNMNG04010_POP_WHS').serializeObject();
303
-			if(this.popMode === 'RTN_WHS') {
304
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
305
-			} else {
306
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
307
-			}
308
+			param.swhsDvsn = CommonObj.schWhsDvsn(true);
308 309
 			fn_ajax_call(API_POP_SEARCH_LIST, JSON.stringify(param), callbackFn, 'POST');
309 310
 		},
310 311
 		view: function(gridRows) {

+ 57 - 21
src/main/webapp/mobile/js/app/mrtnmng/ITP_MRTNMNG05010.js

@@ -151,36 +151,76 @@ let mobContentObj = {
151 151
 		},
152 152
 		save: function() {
153 153
 			var _this = this;
154
+			var chkQtyYn1 = true;
155
+			var chkQtyYn2 = true;
156
+			var chkQtyYn3 = true;
154 157
 			var gridInsertData = [];
158
+			var swhsId = "";
159
+			var srtnWhsId = "";
160
+			var storeId = "";
155 161
 			$('#ITP_LIST_MRTNMNG05010_LIST_ITEM_ROWS li').each(function(index) {
156 162
 				var whsQty = $(this).find('input[name="whsQty"]').val();
157 163
 				if(whsQty !== '') {
164
+					if(Number(whsQty) > _this.rows[index].colReqQty) {
165
+						chkQtyYn1 = false;
166
+						return false;
167
+					}
168
+					if (swhsId !== "" && swhsId !== _this.rows[index].whsId) {
169
+						chkQtyYn2 = false;
170
+						return false;
171
+					}
172
+					if (srtnWhsId !== "" && srtnWhsId !== _this.rows[index].rtnWhsId) {
173
+						chkQtyYn3 = false;
174
+						return false;
175
+					}
158 176
 					var item = {
159 177
 						'dlvSttmtDtlNo'	: _this.rows[index].dlvSttmtDtlNo,
160 178
 						'dlvSttmtUnqNo'	: _this.rows[index].dlvSttmtUnqNo,
161 179
 						'itemId'		: _this.rows[index].itemId,
162 180
 						'whsQty'		: whsQty
163 181
 					};
182
+					swhsId = value.whsId;
183
+					srtnWhsId = value.rtnWhsId;
184
+					storeId = value.storeId;
164 185
 					gridInsertData.push(item);
165 186
 				}
166 187
 			});
167
-			if(gridInsertData.length > 0) {
168
-				var modalFn = {
169
-					callBack: (args) => {
170
-						let param = {};
171
-						param['viewCd'] = 'C';
172
-						param['brandId'] = $('#ITP_FORM_MRTNMNG05010_LIST_SEARCH #ITP_FORM_MPOMNG02010_LIST_SEARCH_BRAND_ID').val();
173
-						param['storeId'] = $('#ITP_FORM_MRTNMNG05010_LIST_SEARCH #ITP_FORM_MPOMNG02010_LIST_SEARCH_STORE_ID').val();
174
-						param['whsId'] = $('#ITP_FORM_MRTNMNG05010_LIST_SEARCH #ITP_FORM_MRTNMNG05010_LIST_SEARCH_WHS_ID').val();
175
-						param['gridInsertData'] = gridInsertData;
176
-						console.log(JSON.stringify(param));
177
-						var saveFn = function () {
178
-						};
179
-						fn_ajax_call(API_MOBILE_SAVE, JSON.stringify(param), saveFn, 'POST');
180
-					}
181
-				};
182
-				itp_fn_modal_confirm('저장 하시겠습니까?', modalFn);
188
+
189
+			if (chkQtyYn1 === false) {
190
+				itp_fn_modal_alert("수거요청수량보다 수거수량이 더 많습니다.");
191
+				return;
192
+			}
193
+			if (chkQtyYn2 === false) {
194
+				itp_fn_modal_alert("서로 다른 반품입고창고 품목은 처리할 수 없습니다.");
195
+				return;
196
+			}
197
+			if (chkQtyYn3 === false) {
198
+				itp_fn_modal_alert("서로 다른 수거창고 품목은 처리할 수 없습니다.");
199
+				return;
200
+			}
201
+
202
+			if (gridInsertData.length === 0) {
203
+				itp_fn_modal_alert("반품처리할 품목이 없습니다.");
204
+				return ;
183 205
 			}
206
+
207
+			var modalFn = {
208
+				callBack: (args) => {
209
+					let param = {};
210
+					param['viewCd'] = 'C';
211
+					param['whsId'] = swhsId;
212
+					param['rtnWhsId'] = srtnWhsId;
213
+					param['brandId'] = $('#ITP_FORM_MRTNMNG05010_LIST_SEARCH #ITP_FORM_MPOMNG02010_LIST_SEARCH_BRAND_ID').val();
214
+					param['storeId'] = storeId;
215
+					param['gridInsertData'] = gridInsertData;
216
+					console.log(JSON.stringify(param));
217
+					var saveFn = function () {
218
+						_this.search();
219
+					};
220
+					fn_ajax_call(API_MOBILE_SAVE, JSON.stringify(param), saveFn, 'POST');
221
+				}
222
+			};
223
+			itp_fn_modal_confirm('반품처리 하시겠습니까?', modalFn);
184 224
 		}
185 225
 	}
186 226
 };
@@ -204,11 +244,7 @@ let mobPopObj = {
204 244
 				_this.view(result.gridRows);
205 245
 			};
206 246
 			const param = $('#ITP_FORM_MRTNMNG05010_POP_WHS').serializeObject();
207
-			if(this.popMode === 'RTN_WHS') {
208
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
209
-			} else {
210
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
211
-			}
247
+			param.swhsDvsn = CommonObj.schWhsDvsn();
212 248
 			fn_ajax_call(API_POP_SEARCH_LIST, JSON.stringify(param), callbackFn, 'POST');
213 249
 		},
214 250
 		view: function(gridRows) {

+ 4 - 13
src/main/webapp/mobile/js/app/mrtnmng/ITP_MRTNMNG06010.js

@@ -118,11 +118,7 @@ let mobContentObj = {
118 118
 			// this.search();
119 119
 		},
120 120
 		search: function() {
121
-			if($('#ITP_FORM_MRTNMNG06010_LIST_SEARCH #ITP_FORM_MRTNMNG06010_LIST_SEARCH_RTN_WHS_NM').val().length < 1) {
122
-				alert('수거창고를 지정해주세요!');
123
-				return;
124
-			}
125
-			var formId = '#ITP_FORM_MRTNMNG05010_LIST_SEARCH';
121
+			var formId = '#ITP_FORM_MRTNMNG06010_LIST_SEARCH';
126 122
 			itp_fn_form_clear_validate(null, formId);
127 123
 			if (itp_fn_form_event.isValid(formId)) {
128 124
 				this.listPage = 0;
@@ -157,8 +153,6 @@ let mobContentObj = {
157 153
 			const param = $('#ITP_FORM_MRTNMNG06010_LIST_SEARCH').serializeObject();
158 154
 			param.gridPage = ++this.listPage;
159 155
 			param.gridSize = this.listSize;
160
-			param.fromDt = CommonObj.onlyNumber(param.fromDt);
161
-			param.toDt = CommonObj.onlyNumber(param.toDt);
162 156
 			console.log(JSON.stringify(param));
163 157
 			fn_ajax_call(API_MOBILE_GRID_LIST, JSON.stringify(param), callbackFn, 'POST', errFn);
164 158
 		}
@@ -248,18 +242,15 @@ let mobPopObj = {
248 242
 				_this.view(result.gridRows);
249 243
 			};
250 244
 			const param = $('#ITP_FORM_MRTNMNG06010_POP_WHS').serializeObject();
251
-			if(this.popMode === 'RTN_WHS') {
252
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
253
-			} else {
254
-				(fn_make_user_info.get('authTpCd') === '50') ? param.swhsDvsn = 'W02' : param.swhsDvsn = 'W01';
255
-			}
245
+			// param.swhsDvsn = (fn_make_user_info.get('authTpCd') === '50') ? 'W02' : '';
246
+			param.swhsDvsn = CommonObj.schWhsDvsn(true);
256 247
 			fn_ajax_call(API_POP_SEARCH_LIST, JSON.stringify(param), callbackFn, 'POST');
257 248
 		},
258 249
 		view: function(gridRows) {
259 250
 			this.rows = gridRows;
260 251
 			$.each(gridRows, function (i, item) {
261 252
 				$('#ITP_LIST_MRTNMNG06010_POP_WHS_AREA .panel-group').append($('#ITP_LIST_MRTNMNG06010_POP_WHS_ROWCOPY').html());
262
-				var $li = $('#ITP_LIST_MRTNMNG06010_POP_WHS_AREA .panel-group > .list-row:last');
253
+				var $li = $('#ITP_LIST_MRTNMNG06010_POP_WHS_AREA .panel-group > .row_2:last');
263 254
 				$li.find('.fnWhsNm').text(item.whsNm);
264 255
 				$li.find('.fnLocationNm').text(item.locationNm);
265 256
 				$li.find('.fnWhsId').data('whs-id', item.whsId);

+ 3 - 0
src/main/webapp/mobile/js/config.js

@@ -829,6 +829,9 @@ let CommonObj = {
829 829
 	btnPay: function(id) {
830 830
 		return this.isPayPossible() ? $(id).show() : $(id).hide();
831 831
 	},
832
+	schWhsDvsn: function(isEmpty) {
833
+		return (fn_make_user_info.get('authTpCd') === '50') ? 'W02' : isEmpty ? '' : 'W01';
834
+	},
832 835
 	isApp: (/oqpo_android|oqpo_ios/).test(navigator.userAgent.toLowerCase())
833 836
 };
834 837