Преглед на файлове

기준정보관리 화면 구성

juney преди 2 години
родител
ревизия
a6439e2f15
променени са 24 файла, в които са добавени 3939 реда и са изтрити 348 реда
  1. 2 1
      bin/src/main/webapp/js/app/config.js
  2. 0 1
      src/main/webapp/app/oper/OPER02010.html
  3. 73 0
      src/main/webapp/app/popup/biz/BIZPOP_ITEM_CLASS_MANAGE.html
  4. 6 5
      src/main/webapp/app/stinfo/STINFO02010.html
  5. 9 8
      src/main/webapp/app/stinfo/STINFO03010.html
  6. 14 13
      src/main/webapp/app/stinfo/STINFO04010.html
  7. 6 6
      src/main/webapp/app/stinfo/STINFO05010.html
  8. 10 8
      src/main/webapp/app/stinfo/STINFO06010.html
  9. 8 8
      src/main/webapp/app/stinfo/STINFO07010.html
  10. 18 2
      src/main/webapp/js/app/config.js
  11. 39 2
      src/main/webapp/js/app/locales/locale-ko.js
  12. 43 43
      src/main/webapp/js/app/oper/ITP_OPER01010.js
  13. 7 8
      src/main/webapp/js/app/oper/ITP_OPER02010.js
  14. 114 115
      src/main/webapp/js/app/oper/ITP_OPER03010.js
  15. 9 9
      src/main/webapp/js/app/oper/ITP_OPER04010.js
  16. 0 2
      src/main/webapp/js/app/popup/biz/ITP_BIZPOP_AFFL_SHOP.js
  17. 104 0
      src/main/webapp/js/app/popup/biz/ITP_BIZPOP_ITEM_CLASS_MANAGE.js
  18. 128 117
      src/main/webapp/js/app/stinfo/ITP_STINFO01010.js
  19. 659 0
      src/main/webapp/js/app/stinfo/ITP_STINFO02010.js
  20. 620 0
      src/main/webapp/js/app/stinfo/ITP_STINFO03010.js
  21. 626 0
      src/main/webapp/js/app/stinfo/ITP_STINFO04010.js
  22. 539 0
      src/main/webapp/js/app/stinfo/ITP_STINFO05010.js
  23. 454 0
      src/main/webapp/js/app/stinfo/ITP_STINFO06010.js
  24. 451 0
      src/main/webapp/js/app/stinfo/ITP_STINFO07010.js

+ 2 - 1
bin/src/main/webapp/js/app/config.js

@@ -410,7 +410,8 @@ var fn_make_affl_brand = {
410 410
 				$.each(rowDataPop, function(key, value) {
411 411
 					itp_fn_close_other_tab(''); // 다른탭 닫기
412 412
 					$('#ITP_TXT_MAIN_SHR_BRAND').text('(' + value.brandNm + ')');
413
-					sessionStorage.setItem('itp_manage_brand_cd', JSON.stringify(value));
413
+					console.log(JSON.stringify(value));
414
+					sessionStorage.setItem('itp_manage_brand_info', JSON.stringify(value));
414 415
 				});
415 416
 			};
416 417
 			fn_call_popup('biz', 'BIZPOP_AFFL_BRAND', '#ITP_ASIDE', popFn, null, 'S');

+ 0 - 1
src/main/webapp/app/oper/OPER02010.html

@@ -21,7 +21,6 @@
21 21
 									<input type="hidden" id="ITP_FORM_OPER02010_SEARCH_AFFL_SHOP_ID" name="safflShopId" value="">
22 22
 									<div class="form-group">
23 23
 										<div class="col-xs-2 itp_ip itp_noMar">
24
-											<input type="text" id="ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM" class="form-control itp_input" name="sAfflShopNm" placeholder="가맹점" />
25 24
 											<input type="text" id="ITP_FORM_OPER02010_SEARCH_AFFL_SHOP_NM" class="form-control itp_input" name="safflShopNm" placeholder="가맹점" />
26 25
 										</div>
27 26
 										<div class="col-xs-1 itp_in" style="width:8%; padding:0px;">

+ 73 - 0
src/main/webapp/app/popup/biz/BIZPOP_ITEM_CLASS_MANAGE.html

@@ -0,0 +1,73 @@
1
+<div id="ITP_BIZPOP_ITEM_CLASS_MANAGE" class="modal itp_modal">
2
+	<div class="modal-dialog">
3
+		<div class="modal-content">
4
+			<div class="modal-header">
5
+				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
6
+				<h5 class="modal-title">품목분류 정보</h5>
7
+			</div>
8
+			<div class="modal-body">
9
+				<div class="itp_form itp_type1 fix">
10
+					<div class="col-xs-12">
11
+						<div class="form-horizontal">
12
+							<h4 class="itp_form_tit">분류 정보</h4>
13
+							<form id="ITP_FORM_NOTICE_INFO_POPUP">
14
+								<div class="form-group">
15
+									<label class="col-xs-3 itp_lb">상위 분류정보</label>
16
+									<div class="col-xs-9 itp_ip">
17
+										<div class="col-xs-3 itp_in">
18
+											<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS1" class="form-control itp_input" name="sitemClass1">
19
+												<option value="A">품목분류Level1</option>
20
+											</select>
21
+										</div>
22
+										<div class="col-xs-3 itp_in">
23
+											<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS2" class="form-control itp_input" name="sitemClass2">
24
+												<option value="A">품목분류Level2</option>
25
+											</select>
26
+										</div>
27
+										<div class="col-xs-3 itp_in">
28
+											<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS3" class="form-control itp_input" name="sitemClass3">
29
+												<option value="A">품목분류Level3</option>
30
+											</select>
31
+										</div>
32
+										<div class="col-xs-3 itp_in">
33
+											<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS4" class="form-control itp_input" name="sitemClass4">
34
+												<option value="A">품목분류Level4</option>
35
+											</select>
36
+										</div>
37
+									</div>
38
+								</div>
39
+								<div class="form-group">
40
+									<label class="col-xs-3 itp_lb">분류 코드 </label>
41
+									<div class="col-xs-9 itp_ip ITEM_ST_CD">
42
+									</div>
43
+								</div>
44
+								<div class="form-group colspan">
45
+									<label class="col-xs-2 itp_lb">분류명</label>
46
+									<div class="col-xs-4 itp_ip">
47
+										<div class="col-xs-6 itp_in">
48
+											<input type="email" id="ITP_FORM_SITP_TAB_STINFO07010_DETAIL_USER_PW" class="form-control itp_input" name="ITEM_CLASS_NM" value="분류 3 Level">
49
+										</div>
50
+									</div>
51
+								</div>
52
+								<div class="form-group border">
53
+									<label class="col-xs-2 itp_lb">출력순번</label>
54
+									<div class="col-xs-4 itp_ip">
55
+										<div class="col-xs-3 itp_in">
56
+											<input type="email" id="ITP_FORM_SITP_TAB_STINFO07010_DETAIL_USER_PW_CONFIRM" class="form-control itp_input" name="PRN_SEQ" value="3">
57
+										</div>
58
+									</div>
59
+								</div>
60
+							</form>
61
+						</div>
62
+					</div>
63
+				</div>
64
+			</div>
65
+			<div class="modal-footer">
66
+				<button type="button" id="ITP_BTN_STINFO07010_CLOSE_POP" class="btn btn-danger btn-sm CLB">&nbsp;&nbsp;취소&nbsp;&nbsp;</button>
67
+				<button type="button" id="ITP_BTN_STINFO07010_DETAIL_SAVE_POP" class="btn btn-primary btn-sm SAB" style="display: inline-block;">&nbsp;&nbsp;저장&nbsp;&nbsp;</button>
68
+			</div>
69
+		</div>
70
+	</div>
71
+
72
+	<div id="ITP_POPUP_JS"></div>
73
+</div>

+ 6 - 5
src/main/webapp/app/stinfo/STINFO02010.html

@@ -72,7 +72,8 @@
72 72
 						<div class="col-xs-12">
73 73
 							<form id="ITP_FORM_STINFO02010_DETAIL" class="form-horizontal">
74 74
 								<input type="hidden" id="ITP_FORM_STINFO02010_DETAIL_VIEW_CD" name="viewCd" value="R">
75
- 								<input type="hidden" id="ITP_FORM_STINFO02010_DETAIL_USER_ID" name="userId" value="">
75
+ 								<input type="hidden" id="ITP_FORM_STINFO02010_DETAIL_BRAND_ID" name="brandId" value="">
76
+								<input type="hidden" id="ITP_FORM_STINFO02010_DETAIL_STORE_ID" name="storeId" value="">
76 77
 								<section class="itp_form_sec">
77 78
 									<h4 class="itp_form_tit">매장정보-신규</h4>
78 79
 									<div class="itp_form_in">
@@ -84,7 +85,7 @@
84 85
 											<label class="col-xs-2 itp_lb">상태 *</label>
85 86
 											<div class="col-xs-4 itp_ip">
86 87
 												<div class="col-xs-7 itp_in">
87
-								                	<select id="ITP_FORM_STINFO02010_DETAIL_ST_CD" class="form-control itp_input" name="stCd"></select>
88
+								                	<select id="ITP_FORM_STINFO02010_DETAIL_STORE_ST_CD" class="form-control itp_input" name="stCd"></select>
88 89
 												</div>
89 90
 											</div>
90 91
 										</div>
@@ -212,7 +213,7 @@
212 213
 												<div class="col-xs-2 itp_in" style="width:10%;">
213 214
 													<button type="button" id="ITP_FORM_STINFO02010_DETAIL_FILE_SEARCH" class="btn btn-primary btn-sm FILE_SEARCH" style="margin:0 3px;">&nbsp;&nbsp;주소찾기&nbsp;&nbsp;</button>
214 215
 												</div>
215
-												<div class="col-xs-4 itp_in" style="margin:0 5px;">a
216
+												<div class="col-xs-4 itp_in" style="margin:0 5px;">
216 217
 													<input type="text" id="ITP_FORM_STINFO02010_DETAIL_LOAD_ADDR" class="form-control itp_input" name="loadAddr" value="" placeholder="기본주소">													
217 218
 												</div>
218 219
 												<div class="col-xs-4 itp_in">
@@ -264,7 +265,7 @@
264 265
 						<div class="col-xs-12">
265 266
 							<form id="ITP_FORM_STINFO02010_VIEW" class="form-horizontal">
266 267
 								<input type="hidden" id="ITP_FORM_STINFO02010_VIEW_VIEW_CD" name="viewCd" value="R">
267
-								 <input type="hidden" id="ITP_FORM_STINFO02010_VIEW_USER_ID" name="userId" value="">
268
+								 <input type="hidden" id="ITP_FORM_STINFO02010_VIEW_STORE_ID" name="storeId" value="">
268 269
 								<section class="itp_form_sec">
269 270
 									<h4 class="itp_form_tit">매장정보-상세</h4>
270 271
 									<div class="itp_form_in">
@@ -284,7 +285,7 @@
284 285
 										<div class="form-group">
285 286
 											<label class="col-xs-2 itp_lb">매장번호</label>
286 287
 											<div class="col-xs-4 itp_ip">
287
-												<div class="col-xs-10 itp_in fnStoreNm"></div>
288
+												<div class="col-xs-10 itp_in fnStoreId"></div>
288 289
 											</div>
289 290
 											<label class="col-xs-2 itp_lb">매장구분 *</label>
290 291
 											<div class="col-xs-4 itp_ip">

+ 9 - 8
src/main/webapp/app/stinfo/STINFO03010.html

@@ -206,19 +206,19 @@
206 206
 											<label class="col-xs-2 itp_lb">통장사본</label>
207 207
 											<div class="col-xs-4 itp_ip">
208 208
 												<div class="col-xs-6 itp_in">
209
-													<input type="text" id="ITP_FORM_STINFO03010_DETAIL_FILE_PATH" class="form-control itp_input" name="filePath" value="">
209
+													<input type="text" id="ITP_FORM_STINFO03010_DETAIL_ACCT_FILE_PATH" class="form-control itp_input" name="filePath" value="">
210 210
 												</div>
211 211
 												<div class="col-xs-6 itp_in" >
212
-													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_FILE_SEARCH" class="btn btn-primary btn-sm FFB" style="margin:0px; float:right;">&nbsp;&nbsp;파일찾기&nbsp;&nbsp;</button>
212
+													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_BTN_ACCT_FILE_SEARCH" class="btn btn-primary btn-sm FFB" style="margin:0px; float:right;">&nbsp;&nbsp;파일찾기&nbsp;&nbsp;</button>
213 213
 												</div>
214 214
 											</div>
215 215
 											<label class="col-xs-2 itp_lb">사업자등록파일</label>
216 216
 											<div class="col-xs-4 itp_ip">
217 217
 												<div class="col-xs-8 itp_in">
218
-								                	<input type="text" id="ITP_FORM_STINFO03010_DETAIL_FILE_PATH" class="form-control itp_input" name="filePath" value="">
218
+								                	<input type="text" id="ITP_FORM_STINFO03010_DETAIL_BTN_CORP_FILE_PATH" class="form-control itp_input" name="filePath" value="">
219 219
 												</div>
220 220
 												<div class="col-xs-4 itp_in">
221
-													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_FILE_SEARCH" class="btn btn-primary btn-sm FFB" style="margin:0; float:right;">&nbsp;&nbsp;파일찾기&nbsp;&nbsp;</button>
221
+													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_BTN_CORP_FILE_SEARCH" class="btn btn-primary btn-sm FFB" style="margin:0; float:right;">&nbsp;&nbsp;파일찾기&nbsp;&nbsp;</button>
222 222
 												</div>
223 223
 											</div>
224 224
 										</div>
@@ -231,7 +231,7 @@
231 231
 													<input type="text" id="ITP_FORM_STINFO03010_DETAIL_ZIP_NO" class="form-control itp_input" name="zipNo" value="" maxlength="6" placeholder="우편번호">													
232 232
 												</div>
233 233
 												<div class="col-xs-2 itp_in" style="width:10%;">
234
-													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_FILE_SEARCH" class="btn btn-primary btn-sm FILE_SEARCH" style="margin:0 3px;">&nbsp;&nbsp;주소찾기&nbsp;&nbsp;</button>
234
+													<button type="button" id="ITP_FORM_STINFO03010_DETAIL_ADDR_SEARCH" class="btn btn-primary btn-sm FILE_SEARCH" style="margin:0 3px;">&nbsp;&nbsp;주소찾기&nbsp;&nbsp;</button>
235 235
 												</div>
236 236
 												<div class="col-xs-4 itp_in" style="margin:0 5px;">
237 237
 													<input type="text" id="ITP_FORM_STINFO03010_DETAIL_LOAD_ADDR" class="form-control itp_input" name="loadAddr" value="" placeholder="기본주소">													
@@ -248,8 +248,8 @@
248 248
 								<div class="itp_table_head fix" style="background:#f5f5f5;">
249 249
 									<h4 class="itp_table_tit">공급업체 담당자 정보</h4>
250 250
 									<div class="pull-right itp_cicon">
251
-										<button type="button" id="ITP_BTN_STINFO03010_DETAIL_ADDROW" class="btn btn-primary btn-sm ARB" style="display: inline-block;"><i class="glyphicon "></i>&nbsp;&nbsp;추가&nbsp;&nbsp;</button>
252
-										<button type="button" id="ITP_BTN_STINFO03010_DETAIL_DELROW" class="btn btn-danger btn-sm DRB"><i class="glyphicon "></i>&nbsp;&nbsp;삭제&nbsp;&nbsp;</button>
251
+										<button type="button" id="ITP_BTN_STINFO03010_DETAIL_ADDROW" class="btn btn-primary btn-sm ARB" style="display: inline-block;"><i class="glyphicon "></i>&nbsp;&nbsp;추가&nbsp;&nbsp;</button>
252
+										<button type="button" id="ITP_BTN_STINFO03010_DETAIL_DELROW" class="btn btn-danger btn-sm DRB"><i class="glyphicon "></i>&nbsp;&nbsp;삭제&nbsp;&nbsp;</button>
253 253
 									</div>
254 254
 								</div>
255 255
 								<div id="ITP_STINFO03010_DETAIL_jqGrid_list" class="itp_tb_list">
@@ -268,6 +268,7 @@
268 268
 							<form id="ITP_FORM_STINFO03010_VIEW" class="form-horizontal">
269 269
 								<input type="hidden" id="ITP_FORM_STINFO03010_VIEW_VIEW_CD" name="viewCd" value="C">
270 270
 								<input type="hidden" id="ITP_FORM_STINFO03010_VIEW_POP_NO" name="popNo" value="">
271
+								<input type="hidden" id="ITP_FORM_STINFO03010_DETAIL_SPPLY_ID" name="spplyId" value="">
271 272
 								<input type="hidden" id="ITP_FORM_STINFO03010_VIEW_MENU_NO" name="menuNo" value="">
272 273
 								<input type="hidden" id="ITP_FORM_STINFO03010_VIEW_FILE_NO" name="popFileNo" value="">
273 274
 					
@@ -277,7 +278,7 @@
277 278
 										<div class="form-group">
278 279
 											<label class="col-xs-2 itp_lb">브랜드 *</label>
279 280
 											<div class="col-xs-4 itp_ip">
280
-												<div class="col-xs-10 itp_in fbBrandNm"></div>
281
+												<div class="col-xs-10 itp_in fnBrandNm"></div>
281 282
 											</div>
282 283
 											<label class="col-xs-2 itp_lb">상태 *</label>
283 284
 											<div class="4 itp_ip">

+ 14 - 13
src/main/webapp/app/stinfo/STINFO04010.html

@@ -19,7 +19,7 @@
19 19
 								<form id="ITP_FORM_STINFO04010_SEARCH" class="form-horizontal">
20 20
 									<div class="form-group">
21 21
 										<div class="col-xs-2 itp_ip itp_noMar">
22
-											<select id="ITP_FORM_STINFO04010_SERVICE_ST_CD" class="form-control itp_input" name="serviceStCd">
22
+											<select id="ITP_FORM_STINFO04010_SERVICE_ST_CD" class="form-control itp_input" name="sitemStCd">
23 23
 												<option value="">가능</option>										
24 24
 												<option value="">단종</option>										
25 25
 											</select>	
@@ -84,7 +84,8 @@
84 84
 						<div class="col-xs-12">
85 85
 							<form id="ITP_FORM_STINFO04010_DETAIL" class="form-horizontal">
86 86
 								<input type="hidden" id="ITP_FORM_STINFO04010_DETAIL_VIEW_CD" name="viewCd" value="R">
87
-								<input type="hidden" id="ITP_FORM_STINFO04010_DETAIL_MAIL_FORM_NO" name="mailFormNo" value="">
87
+								<input type="hidden" id="ITP_FORM_STINFO04010_DETAIL_MAIL_BRAND_ID" name="brandId" value="">
88
+								<input type="hidden" id="ITP_FORM_STINFO04010_DETAIL_MAIL_ITEM_ID" name="itemId" value="">
88 89
 								<input type="hidden" id="ITP_FORM_STINFO04010_DETAIL_FILE_NO" name="fileNo" value="">
89 90
 								<section class="itp_form_sec">
90 91
 									<h4 class="itp_form_tit">품목정보-신규</h4>
@@ -98,7 +99,7 @@
98 99
 											<label class="col-xs-2 itp_lb">상태 *</label>
99 100
 											<div class="col-xs-3 itp_ip">
100 101
 												<div class="col-xs-9 itp_in">
101
-								               		<select id="ITP_FORM_STINFO04010_DETAIL_ST_CD" class="form-control itp_input" name="stCd"></select>
102
+								               		<select id="ITP_FORM_STINFO04010_DETAIL_ST_CD" class="form-control itp_input default_st_cd" name="stCd"></select>
102 103
 												</div>
103 104
 											</div>
104 105
 										</div>
@@ -178,7 +179,7 @@
178 179
 											<label class="col-xs-2 itp_lb">기본단위 *</label>
179 180
 											<div class="col-xs-5 itp_ip">
180 181
 												<div class="col-xs-9 itp_in">
181
-									                <select id="ITP_FORM_STINFO04010_DETAIL_UNIT" class="form-control itp_input" name="unit"></select>
182
+									                <select id="ITP_FORM_STINFO04010_DETAIL_UNIT" class="form-control itp_input detail_item_unit" name="unit"></select>
182 183
 												</div>
183 184
 											</div>
184 185
 										</div>
@@ -197,7 +198,7 @@
197 198
 											<label class="col-xs-2 itp_lb">구매단위</label>
198 199
 											<div class="col-xs-5 itp_ip">
199 200
 												<div class="col-xs-9 itp_in">
200
-									                <select id="ITP_FORM_STINFO04010_DETAIL_PCH_UNIT" class="form-control itp_input" name="pchUnit"></select>
201
+									                <select id="ITP_FORM_STINFO04010_DETAIL_PCH_UNIT" class="form-control itp_input detail_item_unit" name="pchUnit"></select>
201 202
 												</div>
202 203
 											</div>
203 204
 										</div>
@@ -216,7 +217,7 @@
216 217
 											<label class="col-xs-2 itp_lb">판매단위</label>
217 218
 											<div class="col-xs-5 itp_ip">
218 219
 												<div class="col-xs-9 itp_in">
219
-								      	          	<select id="ITP_FORM_STINFO04010_DETAIL_SALE_UNIT" class="form-control itp_input" name="saleUnit"></select>
220
+								      	          	<select id="ITP_FORM_STINFO04010_DETAIL_SALE_UNIT" class="form-control itp_input detail_item_unit" name="saleUnit"></select>
220 221
 												</div>
221 222
 											</div>
222 223
 										</div>
@@ -232,7 +233,7 @@
232 233
 											<label class="col-xs-2 itp_lb">재고단위</label>
233 234
 											<div class="col-xs-5 itp_ip">
234 235
 												<div class="col-xs-9 itp_in">
235
-								      	          	<select id="ITP_FORM_STINFO04010_DETAIL_SALE_UNIT" class="form-control itp_input" name="stckUnit"></select>
236
+								      	          	<select id="ITP_FORM_STINFO04010_DETAIL_STCK_UNIT" class="form-control itp_input detail_item_unit" name="stckUnit"></select>
236 237
 												</div>
237 238
 											</div>
238 239
 										</div>
@@ -245,7 +246,7 @@
245 246
 													<input type="text" id="ITP_FORM_STINFO04010_DETAIL_WEIGHT" class="form-control itp_input" name="weight" value="">
246 247
 												</div>
247 248
 												<div class="col-xs-4 itp_in">
248
-	              									<select id="ITP_FORM_STINFO04010_DETAIL_" class="form-control itp_input" name=""></select>
249
+	              									<select id="ITP_FORM_STINFO04010_DETAIL_WEIGHT_UNIT" class="form-control itp_input detail_item_unit" name="weight_unit"></select>
249 250
 												</div>
250 251
 											</div>
251 252
 											<label class="col-xs-2 itp_lb">부피</label>
@@ -254,7 +255,7 @@
254 255
 													<input type="text" id="ITP_FORM_STINFO04010_DETAIL_VOLUME" class="form-control itp_input" name="volume" value="">
255 256
 												</div>
256 257
 												<div class="col-xs-6 itp_in">
257
-	              									<select id="ITP_FORM_STINFO04010_DETAIL_" class="form-control itp_input" name=""></select>
258
+	              									<select id="ITP_FORM_STINFO04010_DETAIL_VOLUME_UNIT" class="form-control itp_input detail_item_unit" name=""></select>
258 259
 												</div>
259 260
 											</div>
260 261
 										</div>
@@ -267,7 +268,7 @@
267 268
 													<input type="text" id="ITP_FORM_STINFO04010_DETAIL_WIDTH" class="form-control itp_input" name="width" value="">
268 269
 												</div>
269 270
 												<div class="col-xs-4 itp_in">
270
-	              									<select id="ITP_FORM_STINFO04010_DETAIL_" class="form-control itp_input" name=""></select>
271
+	              									<select id="ITP_FORM_STINFO04010_DETAIL_WIDTH_UNIT" class="form-control itp_input detail_item_unit" name=""></select>
271 272
 												</div>
272 273
 											</div>
273 274
 											<label class="col-xs-2 itp_lb">세로</label>
@@ -276,7 +277,7 @@
276 277
 													<input type="text" id="ITP_FORM_STINFO04010_DETAIL_HEIGHT" class="form-control itp_input" name="height" value="">
277 278
 												</div>
278 279
 												<div class="col-xs-6 itp_in">
279
-	              									<select id="ITP_FORM_STINFO04010_DETAIL_" class="form-control itp_input" name=""></select>
280
+	              									<select id="ITP_FORM_STINFO04010_DETAIL_HEIGHT_UNIT" class="form-control itp_input detail_item_unit" name=""></select>
280 281
 												</div>
281 282
 											</div>
282 283
 										</div>
@@ -289,7 +290,7 @@
289 290
 													<input type="text" id="ITP_FORM_STINFO04010_DETAIL_HIGH" class="form-control itp_input" name="high" value="">
290 291
 												</div>
291 292
 												<div class="col-xs-4 itp_in">
292
-	              									<select id="ITP_FORM_STINFO04010_DETAIL_" class="form-control itp_input" name=""></select>
293
+	              									<select id="ITP_FORM_STINFO04010_DETAIL_HIGH_UNIT" class="form-control itp_input detail_item_unit" name=""></select>
293 294
 												</div>
294 295
 											</div>
295 296
 											<label class="col-xs-2 itp_lb">1Box수량</label>
@@ -372,7 +373,7 @@
372 373
 						<div class="col-xs-12">
373 374
 							<form id="ITP_FORM_STINFO04010_VIEW" class="form-horizontal">
374 375
 								<input type="hidden" id="ITP_FORM_STINFO04010_VIEW_VIEW_CD" name="viewCd" value="R">
375
-								<input type="hidden" id="ITP_FORM_STINFO04010_VIEW_MAIL_FORM_NO" name="mailFormNo" value="">
376
+								<input type="hidden" id="ITP_FORM_STINFO04010_VIEW_ITEM_ID" name="itemId" value="">
376 377
 								<input type="hidden" id="ITP_FORM_STINFO04010_VIEW_FILE_NO" name="fileNo" value="">
377 378
 								<section class="itp_form_sec">
378 379
 									<h4 class="itp_form_tit">품목정보-상세</h4>

+ 6 - 6
src/main/webapp/app/stinfo/STINFO05010.html

@@ -81,8 +81,8 @@
81 81
 						<div class="col-xs-12">
82 82
 							<form id="ITP_FORM_STINFO05010_DETAIL" class="form-horizontal">
83 83
 								<input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_VIEW_CD" name="viewCd" value="C">
84
-								<input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_BATCH_NO" name="batchNo" value="">
85
-								<input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_RUN_SS" name="runSs" value="00"> <!-- 초:00 고정 -->
84
+								<input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_ITEM_ID" name="itemId" value="">
85
+								<input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_BRAND_UNIT_UNQ_NO" name="brandUnitUnqNo" value="">
86 86
 					
87 87
 								<section class="itp_form_sec">
88 88
 									<h4 class="itp_form_tit">단가정보-신규</h4>
@@ -125,8 +125,8 @@
125 125
 													<input type="text" id="ITP_FORM_STINFO05010_DETAIL_SPPLY_NM" class="form-control itp_input" name="spplyNm" value="공급업체명" maxlength="100" readonly>
126 126
 								                </div>
127 127
 												<div class="col-xs-2 itp_in" style="padding-left: 5px;">
128
-													<button type="button" id="ITP_BTN_STINFO05010_DETAIL_SRH" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon glyphicon-search"></i></button>
129
-													<button type="button" id="ITP_BTN_STINFO05010_DETAIL_MODIFY" class="btn btn-primary btn-sm UPB" style="display: inline-block;"><i class="glyphicon glyphicon-erase"></i></button>
128
+													<button type="button" id="ITP_BTN_STINFO05010_DETAIL_SRH_SPPLY" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon glyphicon-search"></i></button>
129
+													<button type="button" id="ITP_BTN_STINFO05010_DETAIL_MODIFY_SPPLY" class="btn btn-primary btn-sm UPB" style="display: inline-block;"><i class="glyphicon glyphicon-erase"></i></button>
130 130
 								                </div>
131 131
 								                <div class="col-xs-3 itp_in" style="padding-left: 5px; left:-40px;">
132 132
 													<input type="text" id="ITP_FORM_STINFO05010_DETAIL_SPPLY_ITEM_ID" class="form-control itp_input" name="spplyItemId" value="공급업체 품번" maxlength="100">
@@ -240,8 +240,8 @@
240 240
 						<div class="col-xs-12">
241 241
 							<form id="ITP_FORM_STINFO05010_VIEW" class="form-horizontal">
242 242
 								<input type="hidden" id="ITP_FORM_STINFO05010_VIEW_VIEW_CD" name="viewCd" value="C">
243
-								<input type="hidden" id="ITP_FORM_STINFO05010_VIEW_BATCH_NO" name="batchNo" value="">
244
-								<input type="hidden" id="ITP_FORM_STINFO05010_VIEW_RUN_SS" name="runSs" value="00"> <!-- 초:00 고정 -->
243
+								<input type="hidden" id="ITP_FORM_STINFO05010_VIEW_ITEM_ID" name="itemId" value="">
244
+								<input type="hidden" id="ITP_FORM_STINFO05010_VIEW_BRAND_UNIT_UNQ_NO" name="brandUnitUnqNo" value="">
245 245
 					
246 246
 								<section class="itp_form_sec">
247 247
 									<h4 class="itp_form_tit">단가정보-상세</h4>

+ 10 - 8
src/main/webapp/app/stinfo/STINFO06010.html

@@ -18,7 +18,7 @@
18 18
 								<form id="ITP_FORM_STINFO06010_SEARCH" class="form-horizontal">
19 19
 									<div class="form-group">
20 20
 										<div class="col-xs-3 itp_ip itp_noMar">
21
-											<input type="text" id="ITP_FORM_STINFO06010_SEARCH_BATCH_NM" class="form-control itp_input" name="sbatchNm" placeholder="매장 *" />
21
+											<input type="text" id="ITP_FORM_STINFO06010_SEARCH_STORE_NM" class="form-control itp_input" name="sstoreNm" placeholder="매장 *" />
22 22
 										</div>
23 23
 										<div class="col-xs-2 itp_ip itp_noMar" style="width:10%;">
24 24
 											<button type="button" id="ITP_BTN_STINFO06010_SEARCH_SRH" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon glyphicon-search"></i></button>
@@ -38,25 +38,27 @@
38 38
 						</div>
39 39
 					</div>
40 40
 				</div>
41
-				<div id="ITP_AJAX_STINFO06010_LIST_CONTAINER">
41
+				<div id="ITP_AJAX_STINFO06010_DETAIL_CONTAINER">
42 42
 			   		<div class="itp_lg_form itp_type1 fix">
43 43
 				       <div class="itp_srh_border fix">
44 44
 				          <div class="col-xs-12">
45
-				          <form id="ITP_FORM_STINFO06010_SEARCH" class="form-horizontal">
45
+				          <form id="ITP_FORM_STINFO06010_DETAIL" class="form-horizontal">
46
+							  <input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_CURR" value="">
47
+							  <input type="hidden" id="ITP_FORM_STINFO05010_DETAIL_UNIT_TARGET_CD" value="">
46 48
 				             <div class="form-group">
47 49
 				                <div class="col-xs-3 itp_ip itp_noMar">
48
-				                <input type="text" id="ITP_FORM_STINFO06010_SEARCH_BATCH_NM" class="form-control itp_input" name="sbatchNm" placeholder="매장 *" />
50
+				                <input type="text" id="ITP_FORM_STINFO06010_DETAIL_STORE_NM" class="form-control itp_input" name="sstoreNm" placeholder="매장 *" />
49 51
 				                </div>
50 52
 				                <div class="col-xs-2 itp_ip itp_noMar" style="width:10%;">
51
-				                <button type="button" id="ITP_BTN_STINFO06010_SEARCH_SRH" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon glyphicon-search"></i></button>
52
-				                <button type="button" id="ITP_BTN_STINFO06010_SEARCH_MODIFY" class="btn btn-primary btn-sm UPB" style="display: inline-block;"><i class="glyphicon glyphicon-erase"></i></button>
53
+				                <button type="button" id="ITP_BTN_STINFO06010_DETAIL_SRH" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon glyphicon-search"></i></button>
54
+				                <button type="button" id="ITP_BTN_STINFO06010_DETAIL_MODIFY" class="btn btn-primary btn-sm UPB" style="display: inline-block;"><i class="glyphicon glyphicon-erase"></i></button>
53 55
 				                </div>
54 56
 				                <label class="col-xs-1 itp_ip itp_noMar" style="top:6px;">계약기간</label>
55 57
 				                <div class="col-xs-3 itp_ip itp_noMar">
56 58
 				                <div class="input-daterange input-group date">
57
-				                   <input type="text" id="ITP_FORM_STINFO06010_SEARCH_FROM_DT" class="form-control itp_input" name="fromDt" value="" readonly>
59
+				                   <input type="text" id="ITP_FORM_STINFO06010_DETAIL_FROM_DT" class="form-control itp_input" name="fromDt" value="" readonly>
58 60
 				                   <span class="input-group-addon itp_date_to">~</span>
59
-				                   <input type="text" id="ITP_FORM_STINFO06010_SEARCH_TO_DT" class="form-control itp_input" name="toDt" value="" readonly>
61
+				                   <input type="text" id="ITP_FORM_STINFO06010_DETAIL_TO_DT" class="form-control itp_input" name="toDt" value="" readonly>
60 62
 				                </div>
61 63
 				                </div>
62 64
 				             </div>

+ 8 - 8
src/main/webapp/app/stinfo/STINFO07010.html

@@ -6,7 +6,7 @@
6 6
 				<div class="pull-right itp_cicon">
7 7
 					<button type="button" id="ITP_BTN_STINFO07010_SRH" class="btn btn-success btn-sm SEB" style="display: inline-block;"><i class="glyphicon "></i>&nbsp;&nbsp;조회&nbsp;&nbsp;</button>
8 8
 					<button type="button" id="ITP_BTN_STINFO07010_NEWREG" class="btn btn-primary btn-sm ADB" style="display: inline-block;"><i class="glyphicon "></i>&nbsp;&nbsp;추가&nbsp;&nbsp;</button>
9
-					<button type="button" id="ITP_BTN_STINFO07010_SAVE" class="btn btn-success btn-sm SAB"><i class="glyphicon "></i>&nbsp;&nbsp;저장&nbsp;&nbsp;</button>
9
+					<button type="button" id="ITP_BTN_STINFO07010_DEL" class="btn btn-success btn-sm SAB"><i class="glyphicon "></i>&nbsp;&nbsp;삭제&nbsp;&nbsp;</button>
10 10
 				</div>
11 11
 			</div>
12 12
 			<div class="itp_det_in">
@@ -57,10 +57,10 @@
57 57
 				<div class="fix">
58 58
 					<div class="pull-right itp_cicon" style="margin-top: 4px;">
59 59
 		                <button type="button" id="ITP_BTN_STINFO07010_CLOSE" class="btn btn-danger btn-sm CLB">&nbsp;&nbsp;취소&nbsp;&nbsp;</button>									
60
-		                <button type="button" id="ITP_BTN_STINFO07010_SAVE" class="btn btn-primary btn-sm SAB" style="display: inline-block;">&nbsp;&nbsp;저장&nbsp;&nbsp;</button>
60
+		                <button type="button" id="ITP_BTN_STINFO07010_DETAIL_SAVE" class="btn btn-primary btn-sm SAB" style="display: inline-block;">&nbsp;&nbsp;저장&nbsp;&nbsp;</button>
61 61
 		            </div>
62 62
 				</div>
63
-				<div id="ITP_AJAX_STINFO07010_DETAIL_CONTAINER">
63
+				<!--<div id="ITP_AJAX_STINFO07010_DETAIL_CONTAINER">
64 64
 					<div class="itp_form itp_type1 fix">
65 65
 						    <form id="ITP_FORM_SITP_TAB_STINFO07010_DETAIL" class="form-horizontal">
66 66
 						        <input type="hidden" id="ITP_FORM_SITP_TAB_STINFO07010_DETAIL_VIEW_CD" name="viewCd" value="C">
@@ -71,22 +71,22 @@
71 71
 						                    <label class="col-xs-3 itp_lb">상위 분류정보</label>
72 72
 						                    <div class="col-xs-9 itp_ip">
73 73
 							                    <div class="col-xs-3 itp_in">
74
-													<select id="ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS1" class="form-control itp_input" name="sitemClass1">
74
+													<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS1" class="form-control itp_input" name="sitemClass1">
75 75
 														<option value="A">품목분류Level1</option>											
76 76
 													</select>
77 77
 												</div>
78 78
 												<div class="col-xs-3 itp_in">
79
-													<select id="ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS2" class="form-control itp_input" name="sitemClass2">
79
+													<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS2" class="form-control itp_input" name="sitemClass2">
80 80
 														<option value="A">품목분류Level2</option>											
81 81
 													</select>
82 82
 												</div>
83 83
 												<div class="col-xs-3 itp_in">
84
-													<select id="ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS3" class="form-control itp_input" name="sitemClass3">
84
+													<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS3" class="form-control itp_input" name="sitemClass3">
85 85
 														<option value="A">품목분류Level3</option>											
86 86
 													</select>
87 87
 												</div>										
88 88
 												<div class="col-xs-3 itp_in">
89
-													<select id="ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS4" class="form-control itp_input" name="sitemClass4">
89
+													<select id="ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS4" class="form-control itp_input" name="sitemClass4">
90 90
 														<option value="A">품목분류Level4</option>											
91 91
 													</select>
92 92
 												</div>
@@ -117,7 +117,7 @@
117 117
 						        </section>								
118 118
 						    </form>
119 119
 					</div>
120
-				</div>
120
+				</div>-->
121 121
 				</div>
122 122
 			</div>
123 123
 		</article>

+ 18 - 2
src/main/webapp/js/app/config.js

@@ -410,7 +410,7 @@ var fn_make_affl_brand = {
410 410
 				$.each(rowDataPop, function(key, value) {
411 411
 					itp_fn_close_other_tab(''); // 다른탭 닫기
412 412
 					$('#ITP_TXT_MAIN_SHR_BRAND').text('(' + value.brandNm + ')');
413
-					sessionStorage.setItem('itp_manage_brand_cd', JSON.stringify(value));
413
+					sessionStorage.setItem('itp_manage_brand_info', JSON.stringify(value));
414 414
 				});
415 415
 			};
416 416
 			fn_call_popup('biz', 'BIZPOP_AFFL_BRAND', '#ITP_ASIDE', popFn, null, 'S');
@@ -463,7 +463,7 @@ function fn_make_side_menu() {
463 463
 
464 464
 		console.log('[ITP_NAV_LINK] data-itp-nav-id = ' + id + ', data-conn-url = ' + connUrl + ', tabSize = ' + tabSize);
465 465
 
466
-		// if(String(id).indexOf('OPER') === -1 && String(id).indexOf('SYSTEM') === -1 && !sessionStorage.getItem('itp_manage_brand_cd')) {
466
+		// if(String(id).indexOf('OPER') === -1 && String(id).indexOf('SYSTEM') === -1 && !sessionStorage.getItem('itp_manage_brand_info')) {
467 467
 		// 	itp_fn_modal_alert(ITP_MSG_LOCALE.message.page.noChoiceBrand);
468 468
 		// 	return false;
469 469
 		// }
@@ -625,6 +625,20 @@ function fn_make_select_brand(options, select_id, all_show_yn, all_name) { //브
625 625
 	});
626 626
 };
627 627
 
628
+function fn_make_select_item_class(options, select_id, all_show_yn, all_name) { //브랜드 셀렉트 박스 만들기
629
+	$select_id = $('#' + select_id);
630
+	$select_id.empty();
631
+	if(all_show_yn == true) {
632
+		$('<option/>', {'value': '', 'text': all_name}).prependTo($select_id);
633
+	}
634
+	$.each(options, function(key, value) {
635
+		$('<option/>', {
636
+			'value': value.itemClass,	// 브랜드코드
637
+			'text': value.itemClassNm	// 브랜드명
638
+		}).appendTo($select_id);
639
+	});
640
+};
641
+
628 642
 function fn_make_select_store(options, select_id, all_show_yn, all_name, all_value) { //매장 셀렉트 박스 만들기
629 643
 	$select_id = $('#' + select_id);
630 644
 	$select_id.empty();
@@ -1643,6 +1657,7 @@ function itp_fn_search_tabs_detail(tabs, wrap) {
1643 1657
 // [수발주 추가]
1644 1658
 function itp_fn_grid_make_remote(option) {
1645 1659
 	var options = $.extend({
1660
+		mtype: 'POST',
1646 1661
 		multiselect: false,
1647 1662
 		rownumbers: true,
1648 1663
 		loadBeforeSend: function(jqXHR) {
@@ -1656,6 +1671,7 @@ function itp_fn_grid_make_remote(option) {
1656 1671
 	$(options.gridId).jqGrid({
1657 1672
 		colModel: options.colModel,
1658 1673
 		postData: options.param,
1674
+		mtype: options.mtype,
1659 1675
 		url: options.url,
1660 1676
 		pager: options.pager,
1661 1677
 		multiselect: options.multiselect,

+ 39 - 2
src/main/webapp/js/app/locales/locale-ko.js

@@ -111,6 +111,10 @@ const ITP_MSG_LOCALE = (function() {
111 111
 			"brandId": "브랜드ID",
112 112
 			"brandNm": "브랜드명",
113 113
 			"brandTypeNm": "브랜드 타입",
114
+			"storeId": "매장번호",
115
+			"storeNm": "매장명",
116
+			"bsnsRegNo": "사업자등록번호",
117
+			"storeDvsn": "매장구분",
114 118
 			"notiNo": "공지번호",
115 119
 			"titlet": "제목",
116 120
 			"targetNm": "대상구분",
@@ -118,7 +122,6 @@ const ITP_MSG_LOCALE = (function() {
118 122
 			"regDt": "등록일",
119 123
 			"lastLogin": "마지막 로그인",
120 124
 			"srhResult": "검색결과",
121
-			"numbering": "NO",
122 125
 			"ordering": "노출순서",
123 126
 			"ranking": "순위",
124 127
 			"tot": "총",
@@ -127,7 +130,41 @@ const ITP_MSG_LOCALE = (function() {
127 130
 			"stNm": "상태",
128 131
 			"ownerNm": "대표자명",
129 132
 			"rprstTelNo": "대표연락처",
130
-			"joinDt": "가입일자"
133
+			"joinDt": "가입일자",
134
+			"sysRegDttm": "최초등록일",
135
+			"spplyId": "공급업체번호",
136
+			"spplyNm": "공급업체명",
137
+			"spplyMgrNm": "담당자명",
138
+			"position": "직위",
139
+			"rprstEmal": "이메일",
140
+			"rprstMblNo": "핸드폰번호",
141
+			"assgnTaskNm": "담당업무",
142
+			"itemId": "품목번호",
143
+			"itemNm": "품목명",
144
+			"itemTypeNm": "품목유형",
145
+			"itemClassNm": "품목분류",
146
+			"podrPssblDvsnNm": "발주여부",
147
+			"unit": "기본단위",
148
+			"pchItemYn": "구매품목여부",
149
+			"saleItemYn": "판매품목여부",
150
+			"spplyIdNm": "공급업체명",
151
+			"stddQty": "기준수량",
152
+			"curr": "통화",
153
+			"unitAmt": "단가",
154
+			"contSttDt": "시작일",
155
+			"contEndDt": "종료일",
156
+			"leadTime": "리드타임 (Day)",
157
+			"itemFilePath": "단가계약파일",
158
+			"spplyItemId": "공급사품번",
159
+			"sysRegDt": "계약생성일",
160
+			"unitTargetCd": "대상여부",
161
+			"itemCnt": "계약품목수",
162
+			"spplyUnitAmt": "공급단가",
163
+			"itemClassLevel1": "품목분류Level 1",
164
+			"itemClassLevel2": "품목분류Level 2",
165
+			"itemClassLevel3": "품목분류Level 3",
166
+			"itemClassLevel4": "품목분류Level 4",
167
+			"prnSeq": "출력순번"
131 168
 		},
132 169
 		"table": {
133 170
 			"brandId": "브랜드ID",

+ 43 - 43
src/main/webapp/js/app/oper/ITP_OPER01010.js

@@ -1,3 +1,10 @@
1
+require(['config'], function() {
2
+	require([
3
+	], function($) {
4
+		pageObj.init();
5
+	});
6
+});
7
+
1 8
 /********************************************************
2 9
  --------------------------------------------------------
3 10
  - Object 목록								            -
@@ -102,40 +109,40 @@ const gridColModel = {
102 109
 			sortable: false, hidden: false
103 110
 		}
104 111
 	],
105
-	view: [
106
-		{
107
-			index: 'VIEW_CD', name: 'viewCd',
108
-			label: ITP_MSG_LOCALE.label.viewCd,
109
-			width: '10', fixed: false, align: 'center',
110
-			sortable: false, hidden: true
111
-		},
112
-		{
113
-			index: 'AUTH_NO', name: 'authNo',
114
-			label: ITP_MSG_LOCALE.label.permitCd,
115
-			width: '20', fixed: false, align: 'center',
116
-			sortable: false, editable: false, edittype: 'text',
117
-			editrules: {required: true}
118
-		},
119
-		{
120
-			index: 'AUTH_NM', name: 'authNm',
121
-			label: ITP_MSG_LOCALE.label.permitName,
122
-			width: '30', fixed: false, align: 'center',
123
-			sortable: true, editable: false, edittype: 'text',
124
-			editrules: {required: true}
125
-		},
126
-		{
127
-			index: 'USE_YN_NM', name: 'useYnNm',
128
-			label: ITP_MSG_LOCALE.label.status,
129
-			width: '10', fixed: false, align: 'center',
130
-			sortable: false, editable: false, edittype: 'text'
131
-		},
132
-		{
133
-			index: 'ADD_DT', name: 'addDt',
134
-			label: ITP_MSG_LOCALE.label.regDt,
135
-			width: '10', fixed: false, align: 'center',
136
-			sortable: false, editable: false, edittype: 'text'
137
-		}
138
-	],
112
+	// view: [
113
+	// 	{
114
+	// 		index: 'VIEW_CD', name: 'viewCd',
115
+	// 		label: ITP_MSG_LOCALE.label.viewCd,
116
+	// 		width: '10', fixed: false, align: 'center',
117
+	// 		sortable: false, hidden: true
118
+	// 	},
119
+	// 	{
120
+	// 		index: 'AUTH_NO', name: 'authNo',
121
+	// 		label: ITP_MSG_LOCALE.label.permitCd,
122
+	// 		width: '20', fixed: false, align: 'center',
123
+	// 		sortable: false, editable: false, edittype: 'text',
124
+	// 		editrules: {required: true}
125
+	// 	},
126
+	// 	{
127
+	// 		index: 'AUTH_NM', name: 'authNm',
128
+	// 		label: ITP_MSG_LOCALE.label.permitName,
129
+	// 		width: '30', fixed: false, align: 'center',
130
+	// 		sortable: true, editable: false, edittype: 'text',
131
+	// 		editrules: {required: true}
132
+	// 	},
133
+	// 	{
134
+	// 		index: 'USE_YN_NM', name: 'useYnNm',
135
+	// 		label: ITP_MSG_LOCALE.label.status,
136
+	// 		width: '10', fixed: false, align: 'center',
137
+	// 		sortable: false, editable: false, edittype: 'text'
138
+	// 	},
139
+	// 	{
140
+	// 		index: 'ADD_DT', name: 'addDt',
141
+	// 		label: ITP_MSG_LOCALE.label.regDt,
142
+	// 		width: '10', fixed: false, align: 'center',
143
+	// 		sortable: false, editable: false, edittype: 'text'
144
+	// 	}
145
+	// ],
139 146
 	detail: [
140 147
 		{
141 148
 			index: 'VIEW_CD', name: 'viewCd',
@@ -172,13 +179,6 @@ const gridColModel = {
172 179
 	]
173 180
 };
174 181
 
175
-require(['config'], function() {
176
-	require([
177
-	], function($) {
178
-		pageObj.init();
179
-	});
180
-});
181
-
182 182
 /*화면공통 Object*/
183 183
 let pageObj = {
184 184
 	init: function () {
@@ -464,7 +464,7 @@ let viewObj = {
464 464
 
465 465
 			var option = {
466 466
 				gridId: OPER01010_VIEW_GRID_ID,
467
-				colModel: gridColModel.view,
467
+				colModel: gridColModel.detail,
468 468
 				param: JSON.stringify(param),
469 469
 				url: DOMAIN + USER_USERAUTH_GRID_LIST,
470 470
 				pager: OPER01010_VIEW_GRID_PAGER,
@@ -552,7 +552,7 @@ let modifyObj = {
552 552
 		$('#ITP_FORM_OPER01010_DETAIL .fnLastLoginDt').text(result.lastLoginDt);
553 553
 
554 554
 		// 권한정보 리스트 조회
555
-		this.grid.init();
555
+		modifyObj.grid.init();
556 556
 	},
557 557
 	grid: {
558 558
 		init: function() {

+ 7 - 8
src/main/webapp/js/app/oper/ITP_OPER02010.js

@@ -1,3 +1,10 @@
1
+require(['config'], function() {
2
+	require([
3
+		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
4
+	], function($) {
5
+		pageObj.init();
6
+	});
7
+});
1 8
 
2 9
 const OPER02010_GRID_ID = '#ITP_OPER02010_jqGrid';
3 10
 const OPER02010_GRID_LIST = '#ITP_OPER02010_jqGrid_list';
@@ -154,14 +161,6 @@ const gridColModel = {
154 161
 	]
155 162
 };
156 163
 
157
-require(['config'], function() {
158
-	require([
159
-		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
160
-	], function($) {
161
-		pageObj.init();
162
-	});
163
-});
164
-
165 164
 /********************************************************
166 165
  --------------------------------------------------------
167 166
  - Object 목록								            -

+ 114 - 115
src/main/webapp/js/app/oper/ITP_OPER03010.js

@@ -1,3 +1,11 @@
1
+require(['config'], function() {
2
+	require([
3
+		'kakao.postcode',
4
+		'kakao.maps'
5
+	], function($) {
6
+		pageObj.init();
7
+	});
8
+});
1 9
 
2 10
 const OPER03010_GRID_ID = '#ITP_OPER03010_jqGrid';
3 11
 const OPER03010_GRID_LIST = '#ITP_OPER03010_jqGrid_list';
@@ -24,110 +32,6 @@ let COMPANY_SAVE_COMPANY = '/api/affl/save-frcomp';
24 32
 let COMPANY_CHECK_DUPLICATE = '/api/affl/check-duplicate';
25 33
 let USER_INTI_USERPW = '/api/user/inti-userpw';
26 34
 
27
-let kakaoMap = {
28
-    init: function(id, locate) {
29
-        this.load(id, locate);
30
-    },
31
-    geocoder: null,
32
-    schDetailAddrFromCoords: function(coords, callback) {
33
-        // 좌표로 법정동 상세 주소 정보를 요청합니다
34
-        if(this.geocoder) {
35
-            this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
36
-        }
37
-    },
38
-    getMap: function(id) {
39
-        var mapContainer = document.getElementById(id), // 지도를 표시할 div
40
-            mapOption = {
41
-                center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
42
-                level: 3, // 지도의 확대 레벨
43
-                mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
44
-            };
45
-
46
-        // 지도를 생성한다
47
-        var map = new kakao.maps.Map(mapContainer, mapOption);
48
-
49
-        // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
50
-        map.setZoomable(false);
51
-
52
-        // 지도에 확대 축소 컨트롤을 생성한다
53
-        //var zoomControl = new kakao.maps.ZoomControl();
54
-
55
-        // 지도의 우측에 확대 축소 컨트롤을 추가한다
56
-        //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
57
-
58
-        return map;
59
-    },
60
-    marker: function(map, coords) {
61
-        // 지도에 마커를 생성하고 표시한다
62
-        marker = new kakao.maps.Marker({
63
-            position: coords, // 마커의 좌표
64
-            map: map // 마커를 표시할 지도 객체
65
-        });
66
-    },
67
-    load: function(id, locate) {
68
-        var _this = this;
69
-        kakao.maps.load(function() {
70
-            var map = _this.getMap(id);
71
-            // 주소-좌표 변환 객체를 생성합니다
72
-            _this.geocoder = new kakao.maps.services.Geocoder();
73
-            if( !locate || locate.length == 0 ) {
74
-                // 지도에 마커를 생성하고 표시한다
75
-                _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
76
-            } else {
77
-                // 주소로 좌표를 검색합니다
78
-                _this.geocoder.addressSearch(locate, function(result, status) {
79
-                    // 정상적으로 검색이 완료됐으면
80
-                    if (status === kakao.maps.services.Status.OK) {
81
-
82
-                        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
83
-                        if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
84
-                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = result[0].y;
85
-                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = result[0].x;
86
-                        }
87
-
88
-                        // 결과값으로 받은 위치를 마커로 표시합니다
89
-                        _this.marker(map, coords);
90
-
91
-                        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
92
-                        map.setCenter(coords);
93
-                    } else {
94
-                        _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
95
-                    }
96
-                });
97
-            }
98
-
99
-            if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
100
-                _this.listener.drag(map);
101
-            }
102
-        });
103
-    },
104
-    listener: {
105
-        drag: function(map) {
106
-            var _this = this;
107
-            // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
108
-            kakao.maps.event.addListener(map, 'drag', function () {
109
-                kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
110
-                    if (status === kakao.maps.services.Status.OK) {
111
-
112
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
113
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
114
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').val();
115
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#ITP_FORM_OPER04010_DETAIL_CMPY_ZIPNO').val() ;
116
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = map.getCenter().getLat();
117
-                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = map.getCenter().getLng();
118
-
119
-                        // 마커를 클릭한 위치에 표시합니다
120
-                        marker.setPosition(map.getCenter());
121
-                        marker.setMap(map);
122
-                    }
123
-                });
124
-                /* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
125
-                console.log(message); */
126
-            });
127
-        }
128
-    }
129
-};
130
-
131 35
 const gridColModel = {
132 36
 	// 목록
133 37
 	list: [
@@ -216,15 +120,6 @@ const gridColModel = {
216 120
 	]
217 121
 };
218 122
 
219
-require(['config'], function() {
220
-	require([
221
-		'kakao.postcode',
222
-		'kakao.maps'
223
-	], function($) {
224
-		pageObj.init();
225
-	});
226
-});
227
-
228 123
 /********************************************************
229 124
  --------------------------------------------------------
230 125
  - Object 목록								            -
@@ -375,8 +270,6 @@ let listObj = {
375 270
 			$(OPER03010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
376 271
 		},
377 272
 		create: function() {
378
-			pageObj.switchScreen('ADD');
379
-			itp_fn_form_clear_validate(null, '#ITP_FORM_OPER03010_DETAIL');
380 273
 			createObj.init();
381 274
 		}
382 275
 	},
@@ -615,6 +508,8 @@ let modifyObj = {
615 508
 /*신규등록 화면 Object*/
616 509
 let createObj = {
617 510
 	init: function() {
511
+		pageObj.switchScreen('ADD');
512
+		itp_fn_form_clear_validate(null, '#ITP_FORM_OPER03010_DETAIL');
618 513
 		this.load();
619 514
 	},
620 515
 	load: function() {
@@ -818,3 +713,107 @@ let createObj = {
818 713
 		}
819 714
 	}
820 715
 };
716
+
717
+let kakaoMap = {
718
+	init: function(id, locate) {
719
+		this.load(id, locate);
720
+	},
721
+	geocoder: null,
722
+	schDetailAddrFromCoords: function(coords, callback) {
723
+		// 좌표로 법정동 상세 주소 정보를 요청합니다
724
+		if(this.geocoder) {
725
+			this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
726
+		}
727
+	},
728
+	getMap: function(id) {
729
+		var mapContainer = document.getElementById(id), // 지도를 표시할 div
730
+			mapOption = {
731
+				center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
732
+				level: 3, // 지도의 확대 레벨
733
+				mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
734
+			};
735
+
736
+		// 지도를 생성한다
737
+		var map = new kakao.maps.Map(mapContainer, mapOption);
738
+
739
+		// 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
740
+		map.setZoomable(false);
741
+
742
+		// 지도에 확대 축소 컨트롤을 생성한다
743
+		//var zoomControl = new kakao.maps.ZoomControl();
744
+
745
+		// 지도의 우측에 확대 축소 컨트롤을 추가한다
746
+		//map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
747
+
748
+		return map;
749
+	},
750
+	marker: function(map, coords) {
751
+		// 지도에 마커를 생성하고 표시한다
752
+		marker = new kakao.maps.Marker({
753
+			position: coords, // 마커의 좌표
754
+			map: map // 마커를 표시할 지도 객체
755
+		});
756
+	},
757
+	load: function(id, locate) {
758
+		var _this = this;
759
+		kakao.maps.load(function() {
760
+			var map = _this.getMap(id);
761
+			// 주소-좌표 변환 객체를 생성합니다
762
+			_this.geocoder = new kakao.maps.services.Geocoder();
763
+			if( !locate || locate.length == 0 ) {
764
+				// 지도에 마커를 생성하고 표시한다
765
+				_this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
766
+			} else {
767
+				// 주소로 좌표를 검색합니다
768
+				_this.geocoder.addressSearch(locate, function(result, status) {
769
+					// 정상적으로 검색이 완료됐으면
770
+					if (status === kakao.maps.services.Status.OK) {
771
+
772
+						var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
773
+						if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
774
+							document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = result[0].y;
775
+							document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = result[0].x;
776
+						}
777
+
778
+						// 결과값으로 받은 위치를 마커로 표시합니다
779
+						_this.marker(map, coords);
780
+
781
+						// 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
782
+						map.setCenter(coords);
783
+					} else {
784
+						_this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
785
+					}
786
+				});
787
+			}
788
+
789
+			if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
790
+				_this.listener.drag(map);
791
+			}
792
+		});
793
+	},
794
+	listener: {
795
+		drag: function(map) {
796
+			var _this = this;
797
+			// 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
798
+			kakao.maps.event.addListener(map, 'drag', function () {
799
+				kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
800
+					if (status === kakao.maps.services.Status.OK) {
801
+
802
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
803
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
804
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').val();
805
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#ITP_FORM_OPER04010_DETAIL_CMPY_ZIPNO').val() ;
806
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = map.getCenter().getLat();
807
+						document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = map.getCenter().getLng();
808
+
809
+						// 마커를 클릭한 위치에 표시합니다
810
+						marker.setPosition(map.getCenter());
811
+						marker.setMap(map);
812
+					}
813
+				});
814
+				/* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
815
+                console.log(message); */
816
+			});
817
+		}
818
+	}
819
+};

+ 9 - 9
src/main/webapp/js/app/oper/ITP_OPER04010.js

@@ -1,3 +1,12 @@
1
+require(['config'], function() {
2
+    require([
3
+        'kakao.postcode',
4
+        'kakao.maps'
5
+    ], function($) {
6
+        pageObj.init();
7
+    });
8
+});
9
+
1 10
 /********************************************************
2 11
  --------------------------------------------------------
3 12
  - Object 목록								            -
@@ -167,15 +176,6 @@ const gridColModel = {
167 176
     ]
168 177
 };
169 178
 
170
-require(['config'], function() {
171
-    require([
172
-        'kakao.postcode',
173
-        'kakao.maps'
174
-    ], function($) {
175
-        pageObj.init();
176
-    });
177
-});
178
-
179 179
 /*화면공통 Object*/
180 180
 let pageObj = {
181 181
     init: function () {

+ 0 - 2
src/main/webapp/js/app/popup/biz/ITP_BIZPOP_AFFL_SHOP.js

@@ -47,9 +47,7 @@ function itp_fn_BIZPOP_AFFL_SHOP(parentPopFn, args, returnType) {
47 47
 			parentPopFn(afflData);
48 48
 			$('#ITP_BIZPOP_AFFL_SHOP').modal('hide'); // 팝업닫기
49 49
 		};
50
-		console.log(selRow);
51 50
 		var param = {'afflShopId': selRow.afflShopId};
52
-		console.log('===>', param);
53 51
 		fn_ajax_call(BRAND_POP_GRID_LIST, param, callbackFn, 'GET');
54 52
 	});
55 53
 

+ 104 - 0
src/main/webapp/js/app/popup/biz/ITP_BIZPOP_ITEM_CLASS_MANAGE.js

@@ -0,0 +1,104 @@
1
+require(['config'], function() {
2
+	require([
3
+		'jquery'
4
+	], function($) {
5
+
6
+	});
7
+});
8
+
9
+let AFFL_POP_GRID_LIST 			= '/api/affl/pop-grid-list';
10
+let BRAND_POP_GRID_LIST 		= '/api/brand/affl-brand-list';
11
+let API_ITEM_CLASS_LEVEL_POP	= '/api/item/class-level-list';			//품목분류 level 검색
12
+
13
+var popPageObj = {
14
+	init: function () {
15
+		this.button();
16
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
17
+		popItemClassLevel.list(1, true);
18
+	},
19
+	brandInfo: {},
20
+	parentPopFn: null,
21
+	args: null,
22
+	returnType: null,
23
+	button: function() {
24
+		$('#ITP_BTN_STINFO07010_CLOSE_POP').on('click', function () {
25
+		});
26
+		$('#ITP_BTN_STINFO07010_DETAIL_SAVE_POP').on('click', function () {
27
+		});
28
+	},
29
+	form: function() {
30
+		$('#ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS1').on('change', function() {
31
+			($(this).val() === '') ? popItemClassLevel.clear(2, true): popItemClassLevel.list(2, true);
32
+		});
33
+		$('#ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS2').on('change', function() {
34
+			($(this).val() === '') ? popItemClassLevel.clear(3, true): popItemClassLevel.list(3, true);
35
+		});
36
+		$('#ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS3').on('change', function() {
37
+			($(this).val() === '') ? popItemClassLevel.clear(4, true): popItemClassLevel.list(4, true);
38
+		});
39
+	}
40
+};
41
+
42
+var popItemClassLevel = {
43
+	isList: true,
44
+	level: 1,
45
+	keys: function() {
46
+		var keys = {sBrandId:popPageObj.brandInfo.brandId, sItemLevel: this.level};
47
+		for(var i=1; i<this.level; i++) {
48
+			var key = 'sItemClass' + i;
49
+			var id = '#ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS' + i;
50
+			keys[key] = $(id + ' option:selected').val();
51
+		}
52
+		return keys;
53
+	},
54
+	list: function(level, isList) {
55
+		this.level = level;
56
+		this.isList = isList;
57
+		this.clear(level, isList);
58
+		this.call( $.param(this.keys()));
59
+	},
60
+	detail: {
61
+		data: [],
62
+		make: function() {
63
+			popItemClassLevel.isList = false;
64
+			popItemClassLevel.call( $.param(popItemClassLevel.keys()));
65
+		}
66
+	},
67
+	call: function(param) {
68
+		fn_ajax_call(API_ITEM_CLASS_LEVEL_POP, param, this.callback, 'GET');
69
+	},
70
+	callback: function(result) {
71
+		// console.log(result);
72
+		var id = 'ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS' + popItemClassLevel.level;
73
+		fn_make_select_item_class(result.searchList, id, true, '선택');
74
+		if(!popItemClassLevel.isList) {
75
+			$('#' + id).val(popItemClassLevel.detail.data[ popItemClassLevel.level - 1]);
76
+			if(popItemClassLevel.level < popItemClassLevel.detail.data.length) {
77
+				if(popItemClassLevel.detail.data[popItemClassLevel.level] !== '') {
78
+					popItemClassLevel.level++;
79
+					popItemClassLevel.call( $.param(popItemClassLevel.keys()));
80
+				}
81
+			}
82
+		}
83
+	},
84
+	clear: function(level, isList) {
85
+		for(var i=level; i<5; i++) {
86
+			var id = 'ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS' + i;
87
+			$('#' + id).find('option').remove();
88
+		}
89
+	}
90
+};
91
+
92
+function itp_fn_BIZPOP_ITEM_CLASS_MANAGE(parentPopFn, args, returnType) {
93
+	$('#ITP_BIZPOP_ITEM_CLASS_MANAGE').one('shown.bs.modal', function(e) {
94
+		itp_fn_fire_window_resize();
95
+	}).one('hidden.bs.modal', function(e) {
96
+		$('#ITP_BIZPOP_ITEM_CLASS_MANAGE').remove();
97
+	}).modal('show');
98
+
99
+	popPageObj.parentPopFn = parentPopFn;
100
+	popPageObj.args = args;
101
+	popPageObj.returnType = returnType;
102
+	popPageObj.init();
103
+
104
+}

+ 128 - 117
src/main/webapp/js/app/stinfo/ITP_STINFO01010.js

@@ -1,3 +1,12 @@
1
+require(['config'], function() {
2
+    require([
3
+        'kakao.postcode',
4
+        'kakao.maps'
5
+    ], function($) {
6
+        pageObj.init();
7
+    });
8
+});
9
+
1 10
 /********************************************************
2 11
  --------------------------------------------------------
3 12
  - Object 목록								            -
@@ -27,116 +36,12 @@ const STINFO01010_DETAIL_GRID_PAGER = '#ITP_STINFO01010_DETAIL_jqGridPager';
27 36
 const STINFO01010_DETAIL_GRID_EMPTY = '#ITP_STINFO01010_DETAIL_jqGridEmpty';
28 37
 
29 38
 /*API URL*/
30
-let BRAND_DETAIL_GRID_LIST = '/api/brand/detail-grid-list';
39
+let API_DETAIL_GRID_LIST = '/api/brand/detail-grid-list';
31 40
 let  BRAND_INFO_BRAND = '/api/brand/info-brand';
32 41
 
33 42
 let ITP_FORM_STINFO01010_DETAIL_IS_DUPLICATE = false;
34 43
 let ITP_FORM_STINFO01010_DETAIL_IS_WRITING = false;
35 44
 
36
-let kakaoMap = {
37
-    init: function(id, locate) {
38
-        this.load(id, locate);
39
-    },
40
-    geocoder: null,
41
-    schDetailAddrFromCoords: function(coords, callback) {
42
-        // 좌표로 법정동 상세 주소 정보를 요청합니다
43
-        if(this.geocoder) {
44
-            this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
45
-        }
46
-    },
47
-    getMap: function(id) {
48
-        var mapContainer = document.getElementById(id), // 지도를 표시할 div
49
-            mapOption = {
50
-                center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
51
-                level: 3, // 지도의 확대 레벨
52
-                mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
53
-            };
54
-
55
-        // 지도를 생성한다
56
-        var map = new kakao.maps.Map(mapContainer, mapOption);
57
-
58
-        // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
59
-        map.setZoomable(false);
60
-
61
-        // 지도에 확대 축소 컨트롤을 생성한다
62
-        //var zoomControl = new kakao.maps.ZoomControl();
63
-
64
-        // 지도의 우측에 확대 축소 컨트롤을 추가한다
65
-        //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
66
-
67
-        return map;
68
-    },
69
-    marker: function(map, coords) {
70
-        // 지도에 마커를 생성하고 표시한다
71
-        marker = new kakao.maps.Marker({
72
-            position: coords, // 마커의 좌표
73
-            map: map // 마커를 표시할 지도 객체
74
-        });
75
-    },
76
-    load: function(id, locate) {
77
-        var _this = this;
78
-        kakao.maps.load(function() {
79
-            var map = _this.getMap(id);
80
-            // 주소-좌표 변환 객체를 생성합니다
81
-            _this.geocoder = new kakao.maps.services.Geocoder();
82
-            if( !locate || locate.length == 0 ) {
83
-                // 지도에 마커를 생성하고 표시한다
84
-                _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
85
-            } else {
86
-                // 주소로 좌표를 검색합니다
87
-                _this.geocoder.addressSearch(locate, function(result, status) {
88
-                    // 정상적으로 검색이 완료됐으면
89
-                    if (status === kakao.maps.services.Status.OK) {
90
-
91
-                        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
92
-                        if(id === 'ITP_FORM_STINFO01010_DETAIL_MAP') {
93
-                            document.getElementById('ITP_FORM_STINFO01010_DETAIL_LAT').value = result[0].y;
94
-                            document.getElementById('ITP_FORM_STINFO01010_DETAIL_LNG').value = result[0].x;
95
-                        }
96
-
97
-                        // 결과값으로 받은 위치를 마커로 표시합니다
98
-                        _this.marker(map, coords);
99
-
100
-                        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
101
-                        map.setCenter(coords);
102
-                    } else {
103
-                        _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
104
-                    }
105
-                });
106
-            }
107
-
108
-            if(id === 'ITP_FORM_STINFO01010_DETAIL_MAP') {
109
-                _this.listener.drag(map);
110
-            }
111
-        });
112
-    },
113
-    listener: {
114
-        drag: function(map) {
115
-            var _this = this;
116
-            // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
117
-            kakao.maps.event.addListener(map, 'drag', function () {
118
-                kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
119
-                    if (status === kakao.maps.services.Status.OK) {
120
-
121
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
122
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
123
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#ITP_FORM_STINFO01010_DETAIL_STREET_ADDRESS').val();
124
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#ITP_FORM_STINFO01010_DETAIL_CMPY_ZIPNO').val() ;
125
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LAT').value = map.getCenter().getLat();
126
-                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LNG').value = map.getCenter().getLng();
127
-
128
-                        // 마커를 클릭한 위치에 표시합니다
129
-                        marker.setPosition(map.getCenter());
130
-                        marker.setMap(map);
131
-                    }
132
-                });
133
-                /* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
134
-                console.log(message); */
135
-            });
136
-        }
137
-    }
138
-};
139
-
140 45
 /*화면 Grid Object*/
141 46
 const gridColModel = {
142 47
     list: [
@@ -192,13 +97,6 @@ const gridColModel = {
192 97
     detail: []
193 98
 };
194 99
 
195
-require(['config'], function() {
196
-    require([
197
-    ], function($) {
198
-        pageObj.init();
199
-    });
200
-});
201
-
202 100
 /*화면공통 Object*/
203 101
 let pageObj = {
204 102
     init: function () {
@@ -383,7 +281,7 @@ let listObj = {
383 281
                 gridId: STINFO01010_GRID_ID,
384 282
                 colModel: gridColModel.list,
385 283
                 param: JSON.stringify(param),
386
-                url: DOMAIN + BRAND_DETAIL_GRID_LIST,
284
+                url: DOMAIN + API_DETAIL_GRID_LIST,
387 285
                 pager: STINFO01010_GRID_PAGER,
388 286
                 onCellSelect: function(rowId, cellIdx, cellValue) {
389 287
                     var cm = $(this).jqGrid('getGridParam', 'colModel');
@@ -456,10 +354,19 @@ let viewObj = {
456 354
 
457 355
 /*수정화면 Object*/
458 356
 let modifyObj = {
459
-    init: function (param) {
460
-        this.load(param);
357
+    init: function () {
461 358
     },
462
-    load: function() {
359
+    button: {
360
+        modify: function () {
361
+            itp_fn_form_clear_validate(null, '#ITP_FORM_OPER02010_DETAIL');
362
+            const nticeNoVal = $('#ITP_FORM_OPER02010_VIEW_USER_ID').val();
363
+            const key = {nticeNo: nticeNoVal, viewCd: 'R'};
364
+            var param = $.param(key);
365
+            modifyObj.load(param);
366
+        }
367
+    },
368
+    load: function(param) {
369
+        fn_ajax_call(NTICE_INFO_NTICE, param, this.callback, 'GET');
463 370
     },
464 371
     callback: function (result) {
465 372
         // console.log(result);
@@ -478,4 +385,108 @@ let createObj = {
478 385
     },
479 386
     load: function () {
480 387
     }
481
-};
388
+};
389
+
390
+let kakaoMap = {
391
+    init: function(id, locate) {
392
+        this.load(id, locate);
393
+    },
394
+    geocoder: null,
395
+    schDetailAddrFromCoords: function(coords, callback) {
396
+        // 좌표로 법정동 상세 주소 정보를 요청합니다
397
+        if(this.geocoder) {
398
+            this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
399
+        }
400
+    },
401
+    getMap: function(id) {
402
+        var mapContainer = document.getElementById(id), // 지도를 표시할 div
403
+            mapOption = {
404
+                center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
405
+                level: 3, // 지도의 확대 레벨
406
+                mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
407
+            };
408
+
409
+        // 지도를 생성한다
410
+        var map = new kakao.maps.Map(mapContainer, mapOption);
411
+
412
+        // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
413
+        map.setZoomable(false);
414
+
415
+        // 지도에 확대 축소 컨트롤을 생성한다
416
+        //var zoomControl = new kakao.maps.ZoomControl();
417
+
418
+        // 지도의 우측에 확대 축소 컨트롤을 추가한다
419
+        //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
420
+
421
+        return map;
422
+    },
423
+    marker: function(map, coords) {
424
+        // 지도에 마커를 생성하고 표시한다
425
+        marker = new kakao.maps.Marker({
426
+            position: coords, // 마커의 좌표
427
+            map: map // 마커를 표시할 지도 객체
428
+        });
429
+    },
430
+    load: function(id, locate) {
431
+        var _this = this;
432
+        kakao.maps.load(function() {
433
+            var map = _this.getMap(id);
434
+            // 주소-좌표 변환 객체를 생성합니다
435
+            _this.geocoder = new kakao.maps.services.Geocoder();
436
+            if( !locate || locate.length == 0 ) {
437
+                // 지도에 마커를 생성하고 표시한다
438
+                _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
439
+            } else {
440
+                // 주소로 좌표를 검색합니다
441
+                _this.geocoder.addressSearch(locate, function(result, status) {
442
+                    // 정상적으로 검색이 완료됐으면
443
+                    if (status === kakao.maps.services.Status.OK) {
444
+
445
+                        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
446
+                        if(id === 'ITP_FORM_STINFO01010_DETAIL_MAP') {
447
+                            document.getElementById('ITP_FORM_STINFO01010_DETAIL_LAT').value = result[0].y;
448
+                            document.getElementById('ITP_FORM_STINFO01010_DETAIL_LNG').value = result[0].x;
449
+                        }
450
+
451
+                        // 결과값으로 받은 위치를 마커로 표시합니다
452
+                        _this.marker(map, coords);
453
+
454
+                        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
455
+                        map.setCenter(coords);
456
+                    } else {
457
+                        _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
458
+                    }
459
+                });
460
+            }
461
+
462
+            if(id === 'ITP_FORM_STINFO01010_DETAIL_MAP') {
463
+                _this.listener.drag(map);
464
+            }
465
+        });
466
+    },
467
+    listener: {
468
+        drag: function(map) {
469
+            var _this = this;
470
+            // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
471
+            kakao.maps.event.addListener(map, 'drag', function () {
472
+                kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
473
+                    if (status === kakao.maps.services.Status.OK) {
474
+
475
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
476
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
477
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#ITP_FORM_STINFO01010_DETAIL_STREET_ADDRESS').val();
478
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#ITP_FORM_STINFO01010_DETAIL_CMPY_ZIPNO').val() ;
479
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LAT').value = map.getCenter().getLat();
480
+                        document.getElementById('ITP_FORM_STINFO01010_DETAIL_LNG').value = map.getCenter().getLng();
481
+
482
+                        // 마커를 클릭한 위치에 표시합니다
483
+                        marker.setPosition(map.getCenter());
484
+                        marker.setMap(map);
485
+                    }
486
+                });
487
+                /* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
488
+                console.log(message); */
489
+            });
490
+        }
491
+    }
492
+};

+ 659 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO02010.js

@@ -0,0 +1,659 @@
1
+require(['config'], function() {
2
+	require([
3
+		'kakao.postcode',
4
+		'kakao.maps'
5
+	], function($) {
6
+		pageObj.init();
7
+	});
8
+});
9
+
10
+/********************************************************
11
+ --------------------------------------------------------
12
+ - Object 목록								            -
13
+ --------------------------------------------------------
14
+ * const gridColModel = {}	: 화면 Grid Object			*
15
+ * let pageObj = {}			: 화면공통 Object			*
16
+ * let listObj = {}			: 목록화면 Object			*
17
+ * let viewObj = {}			: 상세화면 Object			*
18
+ * let modifyObj = {}		: 수정화면 Object			*
19
+ * let createObj = {}		: 신규화면 Object			*
20
+ *******************************************************/
21
+
22
+/*화면 변수*/
23
+const STINFO02010_GRID_ID = '#ITP_STINFO02010_jqGrid';
24
+const STINFO02010_GRID_LIST = '#ITP_STINFO02010_jqGrid_list';
25
+const STINFO02010_GRID_PAGER = '#ITP_STINFO02010_jqGridPager';
26
+const STINFO02010_GRID_EMPTY = '#ITP_STINFO02010_jqGridEmpty';
27
+
28
+const STINFO02010_VIEW_GRID_ID = '#ITP_STINFO02010_VIEW_jqGrid';
29
+const STINFO02010_VIEW_GRID_LIST = '#ITP_STINFO02010_VIEW_jqGrid_list';
30
+const STINFO02010_VIEW_GRID_PAGER = '#ITP_STINFO02010_VIEW_jqGridPager';
31
+const STINFO02010_VIEW_GRID_EMPTY = '#ITP_STINFO02010_VIEW_jqGridEmpty';
32
+
33
+const STINFO02010_DETAIL_GRID_ID = '#ITP_STINFO02010_DETAIL_jqGrid';
34
+const STINFO02010_DETAIL_GRID_LIST = '#ITP_STINFO02010_DETAIL_jqGrid_list';
35
+const STINFO02010_DETAIL_GRID_PAGER = '#ITP_STINFO02010_DETAIL_jqGridPager';
36
+const STINFO02010_DETAIL_GRID_EMPTY = '#ITP_STINFO02010_DETAIL_jqGridEmpty';
37
+
38
+let ITP_FORM_STINFO02010_DETAIL_IS_DUPLICATE = false;
39
+let ITP_FORM_STINFO02010_DETAIL_IS_WRITING = false;
40
+
41
+/*API URL*/
42
+let API_DETAIL_GRID_LIST 	= '/api/store/detail-grid-list';	// 목록
43
+let API_DETAIL_INFO 		= '/api/store/info-store';			// 상세
44
+let API_DETAIL_SAVE 		= '/api/store/save-store';			// 저장
45
+let API_INTI_PW				= '/api/store/inti-storePw';		// 패스워드 초기화
46
+
47
+/*화면 Grid ColModel*/
48
+const gridColModel = {
49
+	list: [
50
+		{
51
+			index: 'STORE_ID', name: 'storeId',
52
+			label: ITP_MSG_LOCALE.label.storeId, //매장번호
53
+			width: '10', fixed: false, align: 'center',
54
+			sortable: false, hidden: false
55
+		},
56
+		{
57
+			index: 'STORE_NM', name: 'storeNm',
58
+			label: ITP_MSG_LOCALE.label.storeNm, //매장명
59
+			width: '13', fixed: false, align: 'center',
60
+			sortable: false, hidden: false
61
+		},
62
+		{
63
+			index: 'BRAND_ID', name: 'brandId',
64
+			label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
65
+			width: '10', fixed: false, align: 'center',
66
+			sortable: false, hidden: true
67
+		},
68
+		{
69
+			index: 'BRAND_NM', name: 'brandNm',
70
+			label: ITP_MSG_LOCALE.label.brandNm, //브랜드명
71
+			width: '10', fixed: false, align: 'center',
72
+			sortable: false, hidden: false
73
+		},
74
+		{
75
+			index: 'BSNS_REG_NO', name: 'bsnsRegNo',
76
+			label: ITP_MSG_LOCALE.label.bsnsRegNo, //사업자등록번호
77
+			width: '13', fixed: false, align: 'center',
78
+			sortable: false, hidden: false
79
+		},
80
+		{
81
+			index: 'STORE_DVSN', name: 'storeDvsn',
82
+			label: ITP_MSG_LOCALE.label.storeDvsn, //매장구분
83
+			width: '15', fixed: false, align: 'center',
84
+			sortable: false, hidden: true
85
+		},
86
+		{
87
+			index: 'STORE_DVSN_NM', name: 'storeDvsnNm',
88
+			label: ITP_MSG_LOCALE.label.storeDvsn, //매장구분명
89
+			width: '15', fixed: false, align: 'center',
90
+			sortable: false, hidden: false
91
+		},
92
+		{
93
+			index: 'STORE_ST_NM', name: 'storeStNm',
94
+			label: ITP_MSG_LOCALE.label.stNm, //상태
95
+			width: '6', fixed: false, align: 'center',
96
+			sortable: false, hidden: false
97
+		},
98
+		{
99
+			index: 'SYS_REG_DTTM', name: 'sysRegDttm',
100
+			label: ITP_MSG_LOCALE.label.sysRegDttm, //최초등록일
101
+			width: '10', fixed: false, align: 'center',
102
+			sortable: false, hidden: false
103
+		},
104
+	],
105
+	detail: [
106
+		{
107
+			index: 'VIEW_CD', name: 'viewCd',
108
+			label: ITP_MSG_LOCALE.label.viewCd,
109
+			width: '10', fixed: false, align: 'center',
110
+			sortable: false, hidden: true
111
+		},
112
+		{
113
+			index: 'AUTH_NO', name: 'authNo',
114
+			label: ITP_MSG_LOCALE.label.permitCd,
115
+			width: '20', fixed: false, align: 'center',
116
+			sortable: false, editable: false, edittype: 'text',
117
+			editrules: {required: true}
118
+		},
119
+		{
120
+			index: 'AUTH_NM', name: 'authNm',
121
+			label: ITP_MSG_LOCALE.label.permitName,
122
+			width: '30', fixed: false, align: 'center',
123
+			sortable: true, editable: false, edittype: 'text',
124
+			editrules: {required: true}
125
+		},
126
+		{
127
+			index: 'USE_YN_NM', name: 'useYnNm',
128
+			label: ITP_MSG_LOCALE.label.status,
129
+			width: '10', fixed: false, align: 'center',
130
+			sortable: false, editable: false, edittype: 'text'
131
+		},
132
+		{
133
+			index: 'ADD_DT', name: 'addDt',
134
+			label: ITP_MSG_LOCALE.label.regDt,
135
+			width: '10', fixed: false, align: 'center',
136
+			sortable: false, editable: false, edittype: 'text'
137
+		}
138
+	]
139
+};
140
+
141
+/*화면공통 Object*/
142
+let pageObj = {
143
+	init: function () {
144
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
145
+		this.ui.init();
146
+		this.event.init();
147
+	},
148
+	brandInfo: {},
149
+	ui: {
150
+		init: function () {
151
+			this.view();
152
+			this.grid();
153
+			this.ready();
154
+		},
155
+		view: function() {
156
+			// 버튼 권한설정
157
+			fn_proc_btn_auth('STINFO02010');
158
+			// 공통코드 표시
159
+			fn_make_select(CODE_LIST, 'STORE_DVSN', 'ITP_FORM_STINFO02010_SEARCH_STORE_DVSN');
160
+			fn_make_select(CODE_LIST, 'STORE_ST_CD', 'ITP_FORM_STINFO02010_SEARCH_STORE_ST_CD');
161
+			fn_make_select(CODE_LIST, 'LOAN_DVSN', 'ITP_FORM_STINFO02010_SEARCH_LOAN_DVSN');
162
+		},
163
+		grid: function() {
164
+			itp_fn_jqgrid_resize(STINFO02010_GRID_ID, STINFO02010_GRID_LIST, 'lg');
165
+			listObj.empty.init();
166
+			itp_fn_fire_window_resize();
167
+		},
168
+		ready: function() {
169
+			listObj.init();
170
+		}
171
+	},
172
+	event: {
173
+		init: function () {
174
+			this.button();
175
+		},
176
+		button: function () {
177
+			// 버튼 클릭 이벤트
178
+			$('button').each(function() {
179
+				var id = $(this).attr('id');
180
+				$(this).on('click', function() {
181
+					switch (id) {
182
+						case 'ITP_BTN_STINFO02010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
183
+						case 'ITP_BTN_STINFO02010_NEWREG'			: listObj.button.create(); 		break;	// 신규등록 버튼
184
+						case 'ITP_BTN_STINFO02010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
185
+						case 'ITP_BTN_STINFO02010_CANCELLIST'		: createObj.button.cancel(); 	break;	// 취소/목록 버튼
186
+						case 'ITP_BTN_STINFO02010_DELETE'			: 								break;	// 삭제 버튼
187
+						case 'ITP_BTN_STINFO02010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
188
+						case 'ITP_FORM_STINFO02010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
189
+						case 'ITP_BTN_STINFO02010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
190
+					}
191
+				});
192
+			});
193
+
194
+			$('body').on('click', function(e) {
195
+				var gridId = STINFO02010_DETAIL_GRID_ID.replace('#', '');
196
+				var rids = $(STINFO02010_DETAIL_GRID_ID).jqGrid('getDataIDs');
197
+				var last_row_id = rids[rids.length - 1];
198
+				itp_fn_grid_reset_selection(e, last_row_id, gridId, 'STINFO02010_DETAIL');
199
+			});
200
+
201
+		}
202
+	},
203
+	switchScreen: function(mode) {
204
+		if(mode == 'LIST') { // 목록
205
+			$('#ITP_BTN_STINFO02010_MODIFY').hide();
206
+			$('#ITP_BTN_STINFO02010_CANCELLIST').hide();
207
+			$('#ITP_BTN_STINFO02010_DELETE').hide();
208
+			$('#ITP_BTN_STINFO02010_SAVE').hide();
209
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_SRH');
210
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_NEWREG');
211
+
212
+			$('#ITP_AJAX_STINFO02010_LIST_CONTAINER').show();
213
+			$('#ITP_AJAX_STINFO02010_DETAIL_CONTAINER').hide();
214
+			$('#ITP_AJAX_STINFO02010_VIEW_CONTAINER').hide();
215
+		} else if(mode == 'ADD') { // 등록
216
+			$('#ITP_BTN_STINFO02010_SRH').hide();
217
+			$('#ITP_BTN_STINFO02010_MODIFY').hide();
218
+			$('#ITP_BTN_STINFO02010_NEWREG').hide();
219
+			$('#ITP_BTN_STINFO02010_DELETE').hide();
220
+			$('#ITP_BTN_STINFO02010_RESET_PW').hide();
221
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_CANCELLIST');
222
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_SAVE');
223
+
224
+			$('#ITP_AJAX_STINFO02010_LIST_CONTAINER').hide();
225
+			$('#ITP_AJAX_STINFO02010_DETAIL_CONTAINER').show();
226
+			$('#ITP_AJAX_STINFO02010_VIEW_CONTAINER').hide();
227
+			$('#ITP_FORM_STINFO02010_DETAIL_STORE_ID').removeAttr('readonly');
228
+			$('#ITP_FORM_STINFO02010_DETAIL_DUP').removeAttr('disabled');
229
+
230
+			$.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO02010_DETAIL'),function(k) {
231
+				$(this).val('');
232
+			});
233
+
234
+			$('#ITP_FORM_STINFO02010_DETAIL_VIEW_CD').val('C');
235
+			$('#ITP_FORM_STINFO02010_DETAIL .fnStoreNm').text('(자동부여)');
236
+			// $('#ITP_FORM_STINFO02010_DETAIL_USER_NM').val('');
237
+			// $('#ITP_FORM_STINFO02010_DETAIL_USER_STAT_CD').val('');
238
+			// $('#ITP_FORM_STINFO02010_DETAIL_STORE_ID').val('');
239
+			// $('#ITP_FORM_STINFO02010_DETAIL_USER_PW').val('');
240
+			// $('#ITP_FORM_STINFO02010_DETAIL_TEL_NO').val('');
241
+			// $('#ITP_FORM_STINFO02010_DETAIL_USER_PW_CONFIRM').val('');
242
+			// $('#ITP_FORM_STINFO02010_DETAIL_EMAIL').val('');
243
+			//
244
+			// $('#ITP_FORM_STINFO02010_DETAIL_SEARCH_AFFL_SHOP_ID').val('');
245
+			// $('#ITP_FORM_STINFO02010_DETAIL_SEARCH_AFFL_SHOP_NM').val('');
246
+			// $('#ITP_FORM_STINFO02010_DETAIL_SEARCH_BRAND_ID option').remove();
247
+			// $('#ITP_FORM_STINFO02010_DETAIL_SEARCH_AFFL_SHOP').show();
248
+			// $('#ITP_FORM_STINFO02010_DETAIL_DELETE_AFFL_SHOP').show();
249
+		} else if(mode == 'MODIFY') { // 수정
250
+			$('#ITP_BTN_STINFO02010_SRH').hide();
251
+			$('#ITP_BTN_STINFO02010_MODIFY').hide();
252
+			$('#ITP_BTN_STINFO02010_NEWREG').hide();
253
+			$('#ITP_BTN_STINFO02010_DELETE').hide();
254
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_CANCELLIST');
255
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_SAVE');
256
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_RESET_PW');
257
+
258
+			$('#ITP_AJAX_STINFO02010_LIST_CONTAINER').hide();
259
+			$('#ITP_AJAX_STINFO02010_DETAIL_CONTAINER').show();
260
+			$('#ITP_AJAX_STINFO02010_VIEW_CONTAINER').hide();
261
+			$('#ITP_FORM_STINFO02010_DETAIL_STORE_ID').attr('readonly', true);
262
+			$('#ITP_FORM_STINFO02010_DETAIL_DUP').attr('disabled', true);
263
+			$('#ITP_FORM_STINFO02010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
264
+
265
+			$('#ITP_FORM_STINFO02010_DETAIL_SEARCH_AFFL_SHOP').hide();
266
+			$('#ITP_FORM_STINFO02010_DETAIL_DELETE_AFFL_SHOP').hide();
267
+		} else if(mode == 'VIEW') { // 보기
268
+			$('#ITP_BTN_STINFO02010_SRH').hide();
269
+			$('#ITP_BTN_STINFO02010_NEWREG').hide();
270
+			$('#ITP_BTN_STINFO02010_DELETE').hide();
271
+			$('#ITP_BTN_STINFO02010_SAVE').hide();
272
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_MODIFY');
273
+			fn_show_btn_auth('#ITP_BTN_STINFO02010_CANCELLIST');
274
+
275
+			$('#ITP_AJAX_STINFO02010_LIST_CONTAINER').hide();
276
+			$('#ITP_AJAX_STINFO02010_DETAIL_CONTAINER').hide();
277
+			$('#ITP_AJAX_STINFO02010_VIEW_CONTAINER').show();
278
+		}
279
+	}
280
+};
281
+
282
+/*목록화면 Object*/
283
+let listObj = {
284
+	init: function () {
285
+		this.grid.init();
286
+	},
287
+	itp_STINFO02010_search: false,
288
+	button: {
289
+		search: function() {
290
+			listObj.itp_STINFO02010_search = true;
291
+			let param = $('#ITP_FORM_STINFO02010_SEARCH').serializeObject();
292
+			param.gridSize = $.jgrid.defaults.rowNum;
293
+			param.gridPage = $.jgrid.defaults.page;
294
+			$(STINFO02010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
295
+		},
296
+		create: function() {
297
+			if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
298
+				createObj.init();
299
+			}
300
+		}
301
+	},
302
+	empty: {
303
+		init: function() {
304
+			var _this = this;
305
+			this.push();
306
+			$(STINFO02010_GRID_EMPTY).on('click', function() {
307
+				_this.back();
308
+				_this.itp_STINFO02010_param.gridSize = $.jgrid.defaults.rowNum;
309
+				$(STINFO02010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO02010_param)}).trigger('reloadGrid');
310
+			});
311
+		},
312
+		itp_STINFO02010_param: {},
313
+		push: function() {
314
+			let param = $('#ITP_FORM_STINFO02010_SEARCH').serializeObject();
315
+			listObj.itp_STINFO02010_param = param;
316
+		},
317
+		back: function() {
318
+			$('#ITP_FORM_STINFO02010_SERVICE_ST_DT').val(this.itp_STINFO02010_param.serviceStDt);
319
+			$('#ITP_FORM_STINFO02010_SEARCH_REG_DT').val(this.itp_STINFO02010_param.sregDt);
320
+			$('#ITP_FORM_STINFO02010_SEARCH_OPEN_DT').val(this.itp_STINFO02010_param.sopenDt);
321
+			$('#ITP_FORM_STINFO02010_SEARCH_STORE_DVSN').val(this.itp_STINFO02010_param.sstoreDvsn);
322
+			$('#ITP_FORM_STINFO02010_SEARCH_STORE_ST_CD').val(this.itp_STINFO02010_param.sstoreStCd);
323
+			$('#ITP_FORM_STINFO02010_SEARCH_LOAN_DVSN').val(this.itp_STINFO02010_param.sdvsn);
324
+			$('#ITP_FORM_STINFO02010_SEARCH_STORE_NM').val(this.itp_STINFO02010_param.sstoreMm);
325
+		}
326
+	},
327
+	grid: {
328
+		init: function () {
329
+			// 데이터 없을때
330
+			listObj.empty.push();
331
+			this.search();
332
+		},
333
+		colModel: gridColModel.list,
334
+		search: function() {
335
+			pageObj.switchScreen('LIST');
336
+			this.unload();
337
+			this.load();
338
+		},
339
+		load: function() {
340
+			let param = $('#ITP_FORM_STINFO02010_SEARCH').serializeObject();
341
+			param.gridSize = $.jgrid.defaults.rowNum;
342
+			param.sbrandId = pageObj.brandInfo.brandId;
343
+			// param.sbrandId = sessionStorage.getItem('itp_brand_id') !== null ? sessionStorage.getItem('itp_brand_id') : 'BRD221000001';
344
+
345
+			var option = {
346
+				gridId: STINFO02010_GRID_ID,
347
+				colModel: gridColModel.list,
348
+				param: JSON.stringify(param),
349
+				url: DOMAIN + API_DETAIL_GRID_LIST,
350
+				pager: STINFO02010_GRID_PAGER,
351
+				onCellSelect: function(rowId, cellIdx, cellValue) {
352
+					var cm = $(this).jqGrid('getGridParam', 'colModel');
353
+					var colNm = cm[cellIdx].name;
354
+					if (colNm == 'storeNm') {
355
+						const selectVal = $(this).jqGrid('getCell', rowId, 'storeId');
356
+						const key = {brandId:pageObj.brandInfo.brandId, storeId: selectVal, viewCd: 'R'};
357
+						var param = $.param(key);
358
+						viewObj.init(param);
359
+					}
360
+				},
361
+				loadComplete: function(data) {
362
+					console.log(data);
363
+					itp_fn_grid_load_complete(data, STINFO02010_GRID_ID, true, 'number', 'STINFO02010', listObj.itp_STINFO02010_search, listObj.empty, true, data.gridRecords, true);
364
+					var ids = $(STINFO02010_GRID_ID).getDataIDs();
365
+					$.each(ids, function(idx, rowId) {
366
+						$(STINFO02010_GRID_ID).jqGrid('setCell', rowId, 'storeNm', '', ITP_GRID_COL_STYLE.link);
367
+					});
368
+				},
369
+				onPaging: function(action) {
370
+					itp_fn_grid_paging(STINFO02010_GRID_ID, action, param);
371
+				}
372
+			};
373
+			itp_fn_grid_make_remote(option);
374
+		},
375
+		clearData : function() {
376
+			$(STINFO02010_GRID_ID).jqGrid('clearGridData', true);
377
+			$(STINFO02010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
378
+			$(STINFO02010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
379
+			$(STINFO02010_GRID_EMPTY).show();
380
+		},
381
+		unload : function() {
382
+			$.jgrid.gridUnload(STINFO02010_GRID_ID);
383
+		}
384
+	}
385
+};
386
+
387
+/*상세화면 Object*/
388
+let viewObj = {
389
+	init: function (param) {
390
+		this.load(param);
391
+	},
392
+	load: function(param) {
393
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
394
+	},
395
+	callback: function (result) {
396
+		console.log(result);
397
+		pageObj.switchScreen('VIEW');
398
+		$('#ITP_FORM_STINFO02010_VIEW #ITP_FORM_STINFO02010_VIEW_STORE_ID').val(result.storeId);
399
+		$('#ITP_FORM_STINFO02010_VIEW .fnBrandNm').text(result.brandNm);
400
+		$('#ITP_FORM_STINFO02010_VIEW .fnStCd').text(result.storeStNm);
401
+		$('#ITP_FORM_STINFO02010_VIEW .fnStoreId').text(result.storeId);
402
+		$('#ITP_FORM_STINFO02010_VIEW .fnStoreDvsn').text(result.storeDvsnNm);
403
+		$('#ITP_FORM_STINFO02010_VIEW .fnStoreNm').text(result.storeNm);
404
+		$('#ITP_FORM_STINFO02010_VIEW .fnBsnsCndt').text(result.bsnsCndt);
405
+		$('#ITP_FORM_STINFO02010_VIEW .fnBsnsRegNo').text(result.bsnsRegNo);
406
+		$('#ITP_FORM_STINFO02010_VIEW .fnCtgrBsns').text(result.ctgrBsns);
407
+		$('#ITP_FORM_STINFO02010_VIEW .fnCorpRegNo').text(result.corpRegNo);
408
+		$('#ITP_FORM_STINFO02010_VIEW .fnTelNo').text(result.telNo);
409
+		$('#ITP_FORM_STINFO02010_VIEW .fnOwnerNm').text(result.ownerNm);
410
+		$('#ITP_FORM_STINFO02010_VIEW .fnFaxNo').text(result.faxNo);
411
+		$('#ITP_FORM_STINFO02010_VIEW .fnMblNo').text(result.telNo);
412
+		$('#ITP_FORM_STINFO02010_VIEW .fnEmalAddr').text(result.emalAddr);
413
+		$('#ITP_FORM_STINFO02010_VIEW .fnAreaCd').text(result.areaNm);
414
+		$('#ITP_FORM_STINFO02010_VIEW .fnFromDt').text(result.openDt);
415
+		$('#ITP_FORM_STINFO02010_VIEW .fnZipNo').text(result.zipNo);
416
+		$('#ITP_FORM_STINFO02010_VIEW .fnLoadAddr').text(result.addr1);
417
+		$('#ITP_FORM_STINFO02010_VIEW .fnDtlAddr').text(result.addr2);
418
+
419
+		var cmpyAdres = result.addr1/* + ' ' + result.addr*/;
420
+		kakaoMap.init('ITP_FORM_STINFO02010_VIEW_MAP', cmpyAdres);
421
+
422
+		$('#ITP_FORM_STINFO02010_VIEW .fnBrandAcctInfo').text(result.brandAcctNo);
423
+		$('#ITP_FORM_STINFO02010_VIEW .fnLoanDvsn').text(result.loanDvsnNm);
424
+		$('#ITP_FORM_STINFO02010_VIEW .fnCredtLimitAmt').text(result.limitAmt);
425
+		$('#ITP_FORM_STINFO02010_VIEW .fnTmpRcvAcct').text(result.storeAcctNo);
426
+		$('#ITP_FORM_STINFO02010_VIEW .fnRemainLimitAmt').text(result.limitAmt);
427
+		$('#ITP_FORM_STINFO02010_VIEW .fnRegDt').text(result.sysRegDttm);
428
+		$('#ITP_FORM_STINFO02010_VIEW .fnCloseDt').text(result.closeDt);
429
+	}
430
+};
431
+
432
+/*수정화면 Object*/
433
+let modifyObj = {
434
+	init: function () {
435
+	},
436
+	button: {
437
+		modify: function (param) {
438
+			itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO02010_DETAIL');
439
+			const selectVal = $('#ITP_FORM_STINFO02010_VIEW_STORE_ID').val();
440
+			const key = {brandId:pageObj.brandInfo.brandId, storeId: selectVal, viewCd: 'R'};
441
+			var param = $.param(key);
442
+			modifyObj.load(param);
443
+		}
444
+	},
445
+	load: function(param) {
446
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
447
+	},
448
+	callback: function (result) {
449
+		console.log(result);
450
+		pageObj.switchScreen('MODIFY');
451
+
452
+		fn_make_select(CODE_LIST, 'STORE_ST_CD', 'ITP_FORM_STINFO02010_DETAIL_STORE_ST_CD');
453
+		fn_make_select(CODE_LIST, 'AREA_CD', 'ITP_FORM_STINFO02010_DETAIL_AREA_CD');
454
+		fn_make_select(CODE_LIST, 'STORE_DVSN', 'ITP_FORM_STINFO02010_DETAIL_STORE_DVSN');
455
+		fn_make_select(CODE_LIST, 'LOAN_DVSN', 'ITP_FORM_STINFO02010_DETAIL_LOAN_DVSN');
456
+
457
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_VIEW_CD').val('U');
458
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_STORE_ID').val(result.storeId);
459
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
460
+		$('#ITP_FORM_STINFO02010_DETAIL .fnBrandNm').text(result.brandNm);
461
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_STORE_ST_CD').val(result.storeStCd);
462
+		$('#ITP_FORM_STINFO02010_DETAIL .fnStoreNm').text(result.storeId);
463
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_STORE_DVSN').val(result.storeDvsn);
464
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_STORE_NM').val(result.storeNm);
465
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_BSNS_CNDT').val(result.bsnsCndt);
466
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_BSNS_REG_NO').val(result.bsnsRegNo);
467
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_CTGR_BSNS').val(result.ctgrBsns);
468
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_CORP_REG_NO').val(result.bsnsRegNo);
469
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_TEL_NO').val(result.telNo);
470
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_OWNER_NM').val(result.ownerNm);
471
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_FAX_NO').val(result.faxNo);
472
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_MBL_NO').val(result.telNo);
473
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_EMAL_ADDR').val(result.emalAddr);
474
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_AREA_CD').val(result.areaCd);
475
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_FROM_DT').val(result.openDt);
476
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_ZIP_NO').val(result.zipNo);
477
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_LOAD_ADDR').val(result.addr1);
478
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_DTL_ADDR').val(result.addr2);
479
+		$('#ITP_FORM_STINFO02010_DETAIL .fbBrandAcctInfo').text(result.brandAcctNo);
480
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_LOAN_DVSN').val(result.loanDvsn);
481
+		$('#ITP_FORM_STINFO02010_DETAIL #ITP_FORM_STINFO02010_DETAIL_CREDT_LIMIT_AMT').val(result.limitAmt);
482
+
483
+		var cmpyAdres = result.addr1/* + ' ' + result.addr*/;
484
+		kakaoMap.init('ITP_FORM_STINFO02010_DETAIL_MAP', cmpyAdres);
485
+	}
486
+};
487
+
488
+/*신규화면 Object*/
489
+let createObj = {
490
+	init: function () {
491
+		pageObj.switchScreen('ADD');
492
+		itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO02010_DETAIL');
493
+		$('#ITP_FORM_STINFO02010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
494
+		kakaoMap.init('ITP_FORM_STINFO02010_DETAIL_MAP', '');
495
+	},
496
+	button: {
497
+		cancel: function() {
498
+			listObj.grid.search();
499
+		},
500
+		save: function() {
501
+			const formId = '#ITP_FORM_STINFO02010_DETAIL';
502
+			itp_fn_form_clear_validate(null, formId);
503
+			var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
504
+			var vali_userStatCd = itp_fn_form_validate(formId, formId + '_USER_STAT_CD', ['empty'], undefined);
505
+			var vali_userNm = itp_fn_form_validate(formId, formId + '_USER_NM', ['empty'], undefined);
506
+			var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
507
+			var vali_email = itp_fn_form_validate(formId, formId + '_EMAIL', ['empty'], undefined);
508
+			var vali_userPw = true;
509
+			var vali_userPwConfirm = true;
510
+			if (vali_userId && vali_userStatCd && vali_userNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
511
+				if (ITP_FORM_STINFO02010_DETAIL_IS_DUPLICATE) {
512
+					itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
513
+				} else {
514
+					let gridInsertData = [];
515
+					let gridUpdateData = [];
516
+					let gridDeleteData = [];
517
+					const rowData = $(STINFO02010_DETAIL_GRID_ID).getRowData();
518
+					const keyValue = $(formId + '_USER_ID').val();
519
+					$.each(rowData, function(key, value) {
520
+						if (value.viewCd != 'R') {
521
+							value.userId = keyValue;
522
+							if (value.viewCd == 'C') {
523
+								gridInsertData.push(value);
524
+							} else if (value.viewCd == 'U') {
525
+								gridUpdateData.push(value);
526
+							} else if (value.viewCd == 'D') {
527
+								gridDeleteData.push(value);
528
+							}
529
+						}
530
+					});
531
+					let param = $(formId).serializeObject();
532
+					param.gridInsertData = gridInsertData;
533
+					param.gridUpdateData = gridUpdateData;
534
+					param.gridDeleteData = gridDeleteData;
535
+					//console.log(JSON.stringify(param));
536
+					var searhFn = function() {
537
+						ITP_FORM_STINFO02010_DETAIL_IS_WRITING = false;
538
+						listObj.grid.search();
539
+					};
540
+					fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
541
+				}
542
+			}
543
+		},
544
+		resetPass: function() {
545
+			var resetPwFn = {
546
+				callBack: function(args) {
547
+					const key = {'storeId':  $('#ITP_FORM_STINFO02010_DETAIL_STORE_ID').val()};
548
+					const param = $.param(key);
549
+					fn_ajax_call(API_INTI_PW, param, undefined, 'GET');
550
+				}
551
+			};
552
+			itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.askResetUserPw, resetPwFn, null);
553
+		}
554
+	}
555
+};
556
+
557
+let kakaoMap = {
558
+	init: function(id, locate) {
559
+		this.load(id, locate);
560
+	},
561
+	geocoder: null,
562
+	schDetailAddrFromCoords: function(coords, callback) {
563
+		// 좌표로 법정동 상세 주소 정보를 요청합니다
564
+		if(this.geocoder) {
565
+			this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
566
+		}
567
+	},
568
+	getMap: function(id) {
569
+		var mapContainer = document.getElementById(id), // 지도를 표시할 div
570
+			mapOption = {
571
+				center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
572
+				level: 3, // 지도의 확대 레벨
573
+				mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
574
+			};
575
+
576
+		// 지도를 생성한다
577
+		var map = new kakao.maps.Map(mapContainer, mapOption);
578
+
579
+		// 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
580
+		map.setZoomable(false);
581
+
582
+		// 지도에 확대 축소 컨트롤을 생성한다
583
+		//var zoomControl = new kakao.maps.ZoomControl();
584
+
585
+		// 지도의 우측에 확대 축소 컨트롤을 추가한다
586
+		//map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
587
+
588
+		return map;
589
+	},
590
+	marker: function(map, coords) {
591
+		// 지도에 마커를 생성하고 표시한다
592
+		marker = new kakao.maps.Marker({
593
+			position: coords, // 마커의 좌표
594
+			map: map // 마커를 표시할 지도 객체
595
+		});
596
+	},
597
+	load: function(id, locate) {
598
+		var _this = this;
599
+		kakao.maps.load(function() {
600
+			var map = _this.getMap(id);
601
+			// 주소-좌표 변환 객체를 생성합니다
602
+			_this.geocoder = new kakao.maps.services.Geocoder();
603
+			if( !locate || locate.length == 0 ) {
604
+				// 지도에 마커를 생성하고 표시한다
605
+				_this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
606
+			} else {
607
+				// 주소로 좌표를 검색합니다
608
+				_this.geocoder.addressSearch(locate, function(result, status) {
609
+					// 정상적으로 검색이 완료됐으면
610
+					if (status === kakao.maps.services.Status.OK) {
611
+
612
+						var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
613
+						if(id === 'ITP_FORM_STINFO02010_DETAIL_MAP') {
614
+							document.getElementById('ITP_FORM_STINFO02010_DETAIL_LAT').value = result[0].y;
615
+							document.getElementById('ITP_FORM_STINFO02010_DETAIL_LNG').value = result[0].x;
616
+						}
617
+
618
+						// 결과값으로 받은 위치를 마커로 표시합니다
619
+						_this.marker(map, coords);
620
+
621
+						// 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
622
+						map.setCenter(coords);
623
+					} else {
624
+						_this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
625
+					}
626
+				});
627
+			}
628
+
629
+			if(id === 'ITP_FORM_STINFO02010_DETAIL_MAP') {
630
+				_this.listener.drag(map);
631
+			}
632
+		});
633
+	},
634
+	listener: {
635
+		drag: function(map) {
636
+			var _this = this;
637
+			// 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
638
+			kakao.maps.event.addListener(map, 'drag', function () {
639
+				kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
640
+					if (status === kakao.maps.services.Status.OK) {
641
+
642
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
643
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
644
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#ITP_FORM_STINFO02010_DETAIL_STREET_ADDRESS').val();
645
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#ITP_FORM_STINFO02010_DETAIL_CMPY_ZIPNO').val() ;
646
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_LAT').value = map.getCenter().getLat();
647
+						document.getElementById('ITP_FORM_STINFO02010_DETAIL_LNG').value = map.getCenter().getLng();
648
+
649
+						// 마커를 클릭한 위치에 표시합니다
650
+						marker.setPosition(map.getCenter());
651
+						marker.setMap(map);
652
+					}
653
+				});
654
+				/* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
655
+                console.log(message); */
656
+			});
657
+		}
658
+	}
659
+};

+ 620 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO03010.js

@@ -0,0 +1,620 @@
1
+require(['config'], function() {
2
+	require([
3
+		'kakao.postcode',
4
+		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
5
+	], function($) {
6
+		pageObj.init();
7
+	});
8
+});
9
+
10
+/********************************************************
11
+ --------------------------------------------------------
12
+ - Object 목록								            -
13
+ --------------------------------------------------------
14
+ * const gridColModel = {}	: 화면 Grid Object			*
15
+ * let pageObj = {}			: 화면공통 Object			*
16
+ * let listObj = {}			: 목록화면 Object			*
17
+ * let viewObj = {}			: 상세화면 Object			*
18
+ * let modifyObj = {}		: 수정화면 Object			*
19
+ * let createObj = {}		: 신규화면 Object			*
20
+ * let sfflyObj = {}		: 공급업체담당자 Object		*
21
+ *******************************************************/
22
+
23
+/*화면 변수*/
24
+const STINFO03010_GRID_ID = '#ITP_STINFO03010_jqGrid';
25
+const STINFO03010_GRID_LIST = '#ITP_STINFO03010_jqGrid_list';
26
+const STINFO03010_GRID_PAGER = '#ITP_STINFO03010_jqGridPager';
27
+const STINFO03010_GRID_EMPTY = '#ITP_STINFO03010_jqGridEmpty';
28
+
29
+const STINFO03010_VIEW_GRID_ID = '#ITP_STINFO03010_VIEW_jqGrid';
30
+const STINFO03010_VIEW_GRID_LIST = '#ITP_STINFO03010_VIEW_jqGrid_list';
31
+const STINFO03010_VIEW_GRID_PAGER = '#ITP_STINFO03010_VIEW_jqGridPager';
32
+const STINFO03010_VIEW_GRID_EMPTY = '#ITP_STINFO03010_VIEW_jqGridEmpty';
33
+
34
+const STINFO03010_DETAIL_GRID_ID = '#ITP_STINFO03010_DETAIL_jqGrid';
35
+const STINFO03010_DETAIL_GRID_LIST = '#ITP_STINFO03010_DETAIL_jqGrid_list';
36
+const STINFO03010_DETAIL_GRID_PAGER = '#ITP_STINFO03010_DETAIL_jqGridPager';
37
+const STINFO03010_DETAIL_GRID_EMPTY = '#ITP_STINFO03010_DETAIL_jqGridEmpty';
38
+
39
+let ITP_FORM_STINFO03010_DETAIL_IS_DUPLICATE = false;
40
+let ITP_FORM_STINFO03010_DETAIL_IS_WRITING = false;
41
+
42
+/*API URL*/
43
+let API_DETAIL_GRID_LIST 	= '/api/spply/detail-grid-list';	// 목록
44
+let API_DETAIL_INFO 		= '/api/spply/info-spply';			// 상세
45
+let API_DETAIL_SAVE 		= '/api/spply/save-spply';			// 저장
46
+let API_INTI_PW				= '/api/spply/inti-spplyPw';		// 패스워드 초기화
47
+let API_POP_GRID_LIST 		= '/api/spply/pop-grid-list';		// 공급사 팝업 그리드 리스트
48
+
49
+/*화면 Grid ColModel*/
50
+const gridColModel = {
51
+	list: [
52
+		{
53
+			index: 'SFFLY_ID', name: 'spplyId',
54
+			label: ITP_MSG_LOCALE.label.spplyId
55
+			, //공급업체번호
56
+			width: '10', fixed: false, align: 'center',
57
+			sortable: false, hidden: false
58
+		},
59
+		{
60
+			index: 'SFFLY_NM', name: 'spplyNm',
61
+			label: ITP_MSG_LOCALE.label.spplyNm, //공급업체명
62
+			width: '13', fixed: false, align: 'center',
63
+			sortable: false, hidden: false
64
+		},
65
+		{
66
+			index: 'BRAND_ID', name: 'brandId',
67
+			label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
68
+			width: '10', fixed: false, align: 'center',
69
+			sortable: false, hidden: true
70
+		},
71
+		{
72
+			index: 'BRAND_NM', name: 'brandNm',
73
+			label: ITP_MSG_LOCALE.label.brandNm, //브랜드명
74
+			width: '10', fixed: false, align: 'center',
75
+			sortable: false, hidden: false
76
+		},
77
+		{
78
+			index: 'BSNS_REG_NO', name: 'bsnsRegNo',
79
+			label: ITP_MSG_LOCALE.label.bsnsRegNo, //사업자등록번호
80
+			width: '13', fixed: false, align: 'center',
81
+			sortable: false, hidden: false
82
+		},
83
+		{
84
+			index: 'OWNER_NM', name: 'ownerNm',
85
+			label: ITP_MSG_LOCALE.label.ownerNm, //대표자명
86
+			width: '15', fixed: false, align: 'center',
87
+			sortable: false, hidden: true
88
+		},
89
+		{
90
+			index: 'ST_NM', name: 'stNm',
91
+			label: ITP_MSG_LOCALE.label.stNm, //상태
92
+			width: '6', fixed: false, align: 'center',
93
+			sortable: false, hidden: false
94
+		},
95
+		{
96
+			index: 'SYS_REG_DTTM', name: 'sysRegDttm',
97
+			label: ITP_MSG_LOCALE.label.sysRegDttm, //최초등록일
98
+			width: '10', fixed: false, align: 'center',
99
+			sortable: false, hidden: false
100
+		},
101
+	],
102
+	detail: [
103
+		{
104
+			index: 'VIEW_CD', name: 'viewCd',
105
+			label: ITP_MSG_LOCALE.label.viewCd,
106
+			width: '10', fixed: false, align: 'center',
107
+			sortable: false, hidden: true
108
+		},
109
+		{
110
+			index: 'SPPLY_ID', name: 'spplyId',
111
+			label: ITP_MSG_LOCALE.label.spplyId,
112
+			width: '10', fixed: false, align: 'center',
113
+			sortable: false, hidden: true
114
+		},
115
+		{
116
+			index: 'SPPLY_MGR_ID', name: 'spplyMgrId',
117
+			label: ITP_MSG_LOCALE.label.spplyMgrId,
118
+			width: '10', fixed: false, align: 'center',
119
+			sortable: false, hidden: true
120
+		},
121
+		{
122
+			index: 'ASSGN_TASK_NM', name: 'spplyMgrNm',
123
+			label: ITP_MSG_LOCALE.label.spplyMgrNm, //담당자명
124
+			width: '20', fixed: false, align: 'center',
125
+			sortable: false, editable: true, edittype: 'text',
126
+			editrules: {required: true}
127
+		},
128
+		{
129
+			index: 'POSITION', name: 'position',
130
+			label: ITP_MSG_LOCALE.label.position, //직위
131
+			width: '30', fixed: false, align: 'center',
132
+			sortable: true, editable: true, edittype: 'text',
133
+			editrules: {required: true}
134
+		},
135
+		{
136
+			index: 'RPRST_EMAIL', name: 'rprstEmal',
137
+			label: ITP_MSG_LOCALE.label.rprstEmal, //이메일
138
+			width: '10', fixed: false, align: 'center',
139
+			sortable: false, editable: true, edittype: 'text'
140
+		},
141
+		{
142
+			index: 'RPRST_TEL_NO', name: 'rprstTelNo',
143
+			label: ITP_MSG_LOCALE.label.rprstMblNo, //핸드폰번호
144
+			width: '10', fixed: false, align: 'center',
145
+			sortable: false, editable: true, edittype: 'text'
146
+		},
147
+		{
148
+			index: 'ASSGN_TASK_NM', name: 'assgnTaskNm',
149
+			label: ITP_MSG_LOCALE.label.assgnTaskNm, //담당업무
150
+			width: '10', fixed: false, align: 'center',
151
+			sortable: false, editable: true, edittype: 'text'
152
+		}
153
+	]
154
+};
155
+
156
+/*화면공통 Object*/
157
+let pageObj = {
158
+	init: function () {
159
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
160
+		this.ui.init();
161
+		this.event.init();
162
+	},
163
+	brandInfo: {},
164
+	ui: {
165
+		init: function () {
166
+			this.view();
167
+			this.grid();
168
+			this.ready();
169
+		},
170
+		view: function() {
171
+			// 버튼 권한설정
172
+			fn_proc_btn_auth('STINFO03010');
173
+			// 공통코드 표시
174
+			fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO03010_SERVICE_ST_DT');
175
+			fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO03010_DETAIL_ST_CD');
176
+			fn_make_select(CODE_LIST, 'AREA_CD', 'ITP_FORM_STINFO03010_DETAIL_AREA_CD');
177
+			fn_make_select(CODE_LIST, 'CORP_TYPE', 'ITP_FORM_STINFO03010_DETAIL_CORP_TYPE');
178
+			fn_make_select(CODE_LIST, 'BNK_CD', 'ITP_FORM_STINFO03010_DETAIL_BNK_CD');
179
+		},
180
+		grid: function() {
181
+			itp_fn_jqgrid_resize(STINFO03010_GRID_ID, STINFO03010_GRID_LIST, 'lg');
182
+			listObj.empty.init();
183
+			itp_fn_fire_window_resize();
184
+		},
185
+		ready: function() {
186
+			listObj.init();
187
+		}
188
+	},
189
+	event: {
190
+		init: function () {
191
+			this.button();
192
+		},
193
+		button: function () {
194
+			// 버튼 클릭 이벤트
195
+			$('button').each(function() {
196
+				var id = $(this).attr('id');
197
+				$(this).on('click', function() {
198
+					switch (id) {
199
+						case 'ITP_BTN_STINFO03010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
200
+						case 'ITP_BTN_STINFO03010_NEWREG'			: listObj.button.create(); 		break;	// 신규등록 버튼
201
+						case 'ITP_BTN_STINFO03010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
202
+						case 'ITP_BTN_STINFO03010_CANCELLIST'		: createObj.button.cancel(); 	break;	// 취소/목록 버튼
203
+						case 'ITP_BTN_STINFO03010_DELETE'			: 								break;	// 삭제 버튼
204
+						case 'ITP_BTN_STINFO03010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
205
+						case 'ITP_FORM_STINFO03010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
206
+						case 'ITP_BTN_STINFO03010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
207
+						case 'ITP_BTN_STINFO03010_DETAIL_ADDROW'	: createObj.button.addRow();	break;	// 행추가
208
+						case 'ITP_BTN_STINFO03010_DETAIL_DELROW'	: createObj.button.delRow();	break;	// 행삭제
209
+					}
210
+				});
211
+			});
212
+
213
+			$('body').on('click', function(e) {
214
+				var gridId = STINFO03010_DETAIL_GRID_ID.replace('#', '');
215
+				var rids = $(STINFO03010_DETAIL_GRID_ID).jqGrid('getDataIDs');
216
+				var last_row_id = rids[rids.length - 1];
217
+				itp_fn_grid_reset_selection(e, last_row_id, gridId, 'STINFO03010_DETAIL');
218
+			});
219
+
220
+		}
221
+	},
222
+	switchScreen: function(mode) {
223
+		if(mode == 'LIST') { // 목록
224
+			$('#ITP_BTN_STINFO03010_MODIFY').hide();
225
+			$('#ITP_BTN_STINFO03010_CANCELLIST').hide();
226
+			$('#ITP_BTN_STINFO03010_DELETE').hide();
227
+			$('#ITP_BTN_STINFO03010_SAVE').hide();
228
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_SRH');
229
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_NEWREG');
230
+
231
+			$('#ITP_AJAX_STINFO03010_LIST_CONTAINER').show();
232
+			$('#ITP_AJAX_STINFO03010_DETAIL_CONTAINER').hide();
233
+			$('#ITP_AJAX_STINFO03010_VIEW_CONTAINER').hide();
234
+		} else if(mode == 'ADD') { // 등록
235
+			$('#ITP_BTN_STINFO03010_SRH').hide();
236
+			$('#ITP_BTN_STINFO03010_MODIFY').hide();
237
+			$('#ITP_BTN_STINFO03010_NEWREG').hide();
238
+			$('#ITP_BTN_STINFO03010_DELETE').hide();
239
+			$('#ITP_BTN_STINFO03010_RESET_PW').hide();
240
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_CANCELLIST');
241
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_SAVE');
242
+
243
+			$('#ITP_AJAX_STINFO03010_LIST_CONTAINER').hide();
244
+			$('#ITP_AJAX_STINFO03010_DETAIL_CONTAINER').show();
245
+			$('#ITP_AJAX_STINFO03010_VIEW_CONTAINER').hide();
246
+			$('#ITP_FORM_STINFO03010_DETAIL_STORE_ID').removeAttr('readonly');
247
+			$('#ITP_FORM_STINFO03010_DETAIL_DUP').removeAttr('disabled');
248
+
249
+			$.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO03010_DETAIL'),function(k) {
250
+				$(this).val('');
251
+			});
252
+
253
+			$('#ITP_FORM_STINFO03010_DETAIL_VIEW_CD').val('C');
254
+			$('#ITP_FORM_STINFO03010_DETAIL .fnSpplyId').text('(자동부여) (비밀번호는 사업자번호로 초기화 됩니다.)');
255
+		} else if(mode == 'MODIFY') { // 수정
256
+			$('#ITP_BTN_STINFO03010_SRH').hide();
257
+			$('#ITP_BTN_STINFO03010_MODIFY').hide();
258
+			$('#ITP_BTN_STINFO03010_NEWREG').hide();
259
+			$('#ITP_BTN_STINFO03010_DELETE').hide();
260
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_CANCELLIST');
261
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_SAVE');
262
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_RESET_PW');
263
+
264
+			$('#ITP_AJAX_STINFO03010_LIST_CONTAINER').hide();
265
+			$('#ITP_AJAX_STINFO03010_DETAIL_CONTAINER').show();
266
+			$('#ITP_AJAX_STINFO03010_VIEW_CONTAINER').hide();
267
+			$('#ITP_FORM_STINFO03010_DETAIL_STORE_ID').attr('readonly', true);
268
+			$('#ITP_FORM_STINFO03010_DETAIL_DUP').attr('disabled', true);
269
+			$('#ITP_FORM_STINFO03010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
270
+
271
+			$('#ITP_FORM_STINFO03010_DETAIL_SEARCH_AFFL_SHOP').hide();
272
+			$('#ITP_FORM_STINFO03010_DETAIL_DELETE_AFFL_SHOP').hide();
273
+		} else if(mode == 'VIEW') { // 보기
274
+			$('#ITP_BTN_STINFO03010_SRH').hide();
275
+			$('#ITP_BTN_STINFO03010_NEWREG').hide();
276
+			$('#ITP_BTN_STINFO03010_DELETE').hide();
277
+			$('#ITP_BTN_STINFO03010_SAVE').hide();
278
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_MODIFY');
279
+			fn_show_btn_auth('#ITP_BTN_STINFO03010_CANCELLIST');
280
+
281
+			$('#ITP_AJAX_STINFO03010_LIST_CONTAINER').hide();
282
+			$('#ITP_AJAX_STINFO03010_DETAIL_CONTAINER').hide();
283
+			$('#ITP_AJAX_STINFO03010_VIEW_CONTAINER').show();
284
+		}
285
+	}
286
+};
287
+
288
+/*목록화면 Object*/
289
+let listObj = {
290
+	init: function () {
291
+		this.grid.init();
292
+	},
293
+	itp_STINFO03010_search: false,
294
+	button: {
295
+		search: function() {
296
+			listObj.itp_STINFO03010_search = true;
297
+			let param = $('#ITP_FORM_STINFO03010_SEARCH').serializeObject();
298
+			param.gridSize = $.jgrid.defaults.rowNum;
299
+			param.gridPage = $.jgrid.defaults.page;
300
+			$(STINFO03010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
301
+		},
302
+		create: function() {
303
+			if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
304
+				createObj.init();
305
+			}
306
+		}
307
+	},
308
+	empty: {
309
+		init: function() {
310
+			var _this = this;
311
+			this.push();
312
+			$(STINFO03010_GRID_EMPTY).on('click', function() {
313
+				_this.back();
314
+				_this.itp_STINFO03010_param.gridSize = $.jgrid.defaults.rowNum;
315
+				$(STINFO03010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO03010_param)}).trigger('reloadGrid');
316
+			});
317
+		},
318
+		itp_STINFO03010_param: {},
319
+		push: function() {
320
+			let param = $('#ITP_FORM_STINFO03010_SEARCH').serializeObject();
321
+			listObj.itp_STINFO03010_param = param;
322
+		},
323
+		back: function() {
324
+			$('#ITP_FORM_STINFO03010_SERVICE_ST_DT').val(this.itp_STINFO03010_param.serviceStDt);
325
+			$('#ITP_FORM_STINFO03010_SEARCH_BSNS_REG_NO').val(this.itp_STINFO03010_param.sbsnsRegNo);
326
+			$('#ITP_FORM_STINFO03010_SEARCH_SPPLY_NM').val(this.itp_STINFO03010_param.sspplyNm);
327
+		}
328
+	},
329
+	grid: {
330
+		init: function () {
331
+			// 데이터 없을때
332
+			listObj.empty.push();
333
+			this.search();
334
+		},
335
+		colModel: gridColModel.list,
336
+		search: function() {
337
+			pageObj.switchScreen('LIST');
338
+			this.unload();
339
+			this.load();
340
+		},
341
+		load: function() {
342
+			let param = $('#ITP_FORM_STINFO03010_SEARCH').serializeObject();
343
+			param.gridSize = $.jgrid.defaults.rowNum;
344
+			param.sbrandId = pageObj.brandInfo.brandId;
345
+
346
+			var option = {
347
+				gridId: STINFO03010_GRID_ID,
348
+				colModel: gridColModel.list,
349
+				param: JSON.stringify(param),
350
+				url: DOMAIN + API_DETAIL_GRID_LIST,
351
+				pager: STINFO03010_GRID_PAGER,
352
+				onCellSelect: function(rowId, cellIdx, cellValue) {
353
+					var cm = $(this).jqGrid('getGridParam', 'colModel');
354
+					var colNm = cm[cellIdx].name;
355
+					if (colNm == 'spplyNm') {
356
+						const selectVal = $(this).jqGrid('getCell', rowId, 'spplyId');
357
+						const key = {brandId:pageObj.brandInfo.brandId, spplyId: selectVal, viewCd: 'R'};
358
+						var param = $.param(key);
359
+						viewObj.init(param);
360
+					}
361
+				},
362
+				loadComplete: function(data) {
363
+					console.log(data);
364
+					itp_fn_grid_load_complete(data, STINFO03010_GRID_ID, true, 'number', 'STINFO03010', listObj.itp_STINFO03010_search, listObj.empty, true, data.gridRecords, true);
365
+					var ids = $(STINFO03010_GRID_ID).getDataIDs();
366
+					$.each(ids, function(idx, rowId) {
367
+						$(STINFO03010_GRID_ID).jqGrid('setCell', rowId, 'spplyNm', '', ITP_GRID_COL_STYLE.link);
368
+					});
369
+				},
370
+				onPaging: function(action) {
371
+					itp_fn_grid_paging(STINFO03010_GRID_ID, action, param);
372
+				}
373
+			};
374
+			itp_fn_grid_make_remote(option);
375
+		},
376
+		clearData : function() {
377
+			$(STINFO03010_GRID_ID).jqGrid('clearGridData', true);
378
+			$(STINFO03010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
379
+			$(STINFO03010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
380
+			$(STINFO03010_GRID_EMPTY).show();
381
+		},
382
+		unload : function() {
383
+			$.jgrid.gridUnload(STINFO03010_GRID_ID);
384
+		}
385
+	}
386
+};
387
+
388
+/*상세화면 Object*/
389
+let viewObj = {
390
+	init: function (param) {
391
+		this.load(param);
392
+	},
393
+	load: function(param) {
394
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
395
+	},
396
+	callback: function (result) {
397
+		console.log(result);
398
+		pageObj.switchScreen('VIEW');
399
+		$('#ITP_FORM_STINFO03010_VIEW #ITP_FORM_STINFO03010_DETAIL_SPPLY_ID').val(result.spplyId);
400
+		$('#ITP_FORM_STINFO03010_VIEW .fnBrandNm').text(result.brandNm);
401
+		$('#ITP_FORM_STINFO03010_VIEW .fnStCd').text(result.stNm);
402
+		$('#ITP_FORM_STINFO03010_VIEW .fnSpplyId').text(result.spplyId);
403
+		$('#ITP_FORM_STINFO03010_VIEW .fnCorpType').text(result.corpTypeNm);
404
+		$('#ITP_FORM_STINFO03010_VIEW .fnSpplyNm').text(result.spplyNm);
405
+		$('#ITP_FORM_STINFO03010_VIEW .fnBsnsCndt').text(result.bsnsCndt);
406
+		$('#ITP_FORM_STINFO03010_VIEW .fnBsnsRegNo').text(result.bsnsRegNo);
407
+		$('#ITP_FORM_STINFO03010_VIEW .fnCtgrBsns').text(result.ctgrBsns);
408
+		$('#ITP_FORM_STINFO03010_VIEW .fnCorpRegNo').text(result.corpRegNo);
409
+		$('#ITP_FORM_STINFO03010_VIEW .fnTelNo').text(result.mgrTelNo);
410
+		$('#ITP_FORM_STINFO03010_VIEW .fnOwnerNm').text(result.ownerNm);
411
+		$('#ITP_FORM_STINFO03010_VIEW .fnFaxNo').text(result.faxNo);
412
+		$('#ITP_FORM_STINFO03010_VIEW .fnMblNo').text(result.mgrMblNo);
413
+		$('#ITP_FORM_STINFO03010_VIEW .fnEmalAddr').text(result.mgrEmal);
414
+		$('#ITP_FORM_STINFO03010_VIEW .fnAreaCd').text(result.areaNm);
415
+		$('#ITP_FORM_STINFO03010_VIEW .fnBnkCd').text(result.bnkNm);
416
+		$('#ITP_FORM_STINFO03010_VIEW .fnAcctNo').text(result.acctNo);
417
+		$('#ITP_FORM_STINFO03010_VIEW .fnOwacNm').text(result.owacNm);
418
+		// 통장사본 fileBookCopyNoList
419
+		//$('#ITP_FORM_STINFO03010_VIEW .fnFilePath').text(result.fileBookCopyNoList);
420
+		// 사업자등록파일 fileBsnsRegNoList
421
+		//$('#ITP_FORM_STINFO03010_VIEW .fnFilePath').text(result.fileBsnsRegNoList);
422
+		$('#ITP_FORM_STINFO03010_VIEW .fnZipNo').text(result.zipNo);
423
+		$('#ITP_FORM_STINFO03010_VIEW .fnLoadAddr').text(result.addr1);
424
+		$('#ITP_FORM_STINFO03010_VIEW .fnDtlAddr').text(result.addr2);
425
+		// $('#ITP_FORM_STINFO03010_VIEW .fnRegDt').text(result.openDt);
426
+		// $('#ITP_FORM_STINFO03010_VIEW .fnCloseDt').text(result.openDt);
427
+
428
+		// 담당자정보  리스트 조회
429
+		viewObj.grid.load(result.spplyMgrList);
430
+	},
431
+	grid: {
432
+		init: function() {
433
+		},
434
+		load: function(gridList) {
435
+			var option = {
436
+				gridId: STINFO03010_VIEW_GRID_ID,
437
+				colModel: gridColModel.detail,
438
+				data: gridList,
439
+				pager: STINFO03010_VIEW_GRID_PAGER,
440
+			};
441
+			itp_fn_grid_make_local(option);
442
+		},
443
+		clearData : function() {
444
+			$(STINFO03010_VIEW_GRID_ID).jqGrid('clearGridData', true);
445
+			$(STINFO03010_VIEW_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
446
+			$(STINFO03010_VIEW_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
447
+			$(STINFO03010_VIEW_GRID_EMPTY).show();
448
+		},
449
+		unload : function() {
450
+			$.jgrid.gridUnload(STINFO03010_VIEW_GRID_ID);
451
+		}
452
+	}
453
+};
454
+
455
+/*수정화면 Object*/
456
+let modifyObj = {
457
+	init: function () {
458
+	},
459
+	button: {
460
+		modify: function (param) {
461
+			itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO03010_DETAIL');
462
+			const selectVal = $('#ITP_FORM_STINFO03010_DETAIL_SPPLY_ID').val();
463
+			const key = {brandId:pageObj.brandInfo.brandId, spplyId: selectVal, viewCd: 'R'};
464
+			var param = $.param(key);
465
+			modifyObj.load(param);
466
+		}
467
+	},
468
+	load: function(param) {
469
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
470
+	},
471
+	callback: function (result) {
472
+		console.log(result);
473
+		pageObj.switchScreen('MODIFY');
474
+
475
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_VIEW_CD').val('U');
476
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_STORE_ID').val(result.storeId);
477
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
478
+		$('#ITP_FORM_STINFO03010_DETAIL .fnBrandNm').text(result.brandNm);
479
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_ST_CD').val(result.stCd);
480
+		$('#ITP_FORM_STINFO03010_DETAIL .fnSpplyId').text(result.spplyId);
481
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_CORP_TYPE').val(result.corpType);
482
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_SPPLY_NM').val(result.spplyNm);
483
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_BSNS_CNDT').val(result.bsnsCndt);
484
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_BSNS_REG_NO').val(result.bsnsRegNo);
485
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_CTGR_BSNS').val(result.ctgrBsns);
486
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_CORP_REG_NO').val(result.corpRegNo);
487
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_TEL_NO').val(result.mgrTelNo);
488
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_OWNER_NM').val(result.ownerNm);
489
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_FAX_NO').val(result.faxNo);
490
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_MBL_NO').val(result.mgrMblNo);
491
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_EMAL_ADDR').val(result.mgrEmal);
492
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_AREA_CD').val(result.areaCd);
493
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_BNK_CD').val(result.bnkCd);
494
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_ACCT_NO').val(result.acctNo);
495
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_OWAC_NM').val(result.owacNm);
496
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_FROM_DT').val(result.openDt);
497
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_ZIP_NO').val(result.zipNo);
498
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_LOAD_ADDR').val(result.addr1);
499
+		$('#ITP_FORM_STINFO03010_DETAIL #ITP_FORM_STINFO03010_DETAIL_DTL_ADDR').val(result.addr2);
500
+
501
+		// 담당자정보  리스트 조회
502
+		modifyObj.grid.load(result.spplyMgrList);
503
+	},
504
+	grid: {
505
+		init: function() {
506
+		},
507
+		load: function(gridList) {
508
+			var option = {
509
+				gridId: STINFO03010_DETAIL_GRID_ID,
510
+				colModel: gridColModel.detail,
511
+				data: gridList,
512
+				pager: STINFO03010_DETAIL_GRID_PAGER,
513
+			};
514
+			itp_fn_grid_make_local(option);
515
+		},
516
+		clearData : function() {
517
+			$(STINFO03010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
518
+			$(STINFO03010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
519
+			$(STINFO03010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
520
+			$(STINFO03010_DETAIL_GRID_EMPTY).show();
521
+		},
522
+		unload : function() {
523
+			$.jgrid.gridUnload(STINFO03010_DETAIL_GRID_ID);
524
+		}
525
+	}
526
+};
527
+
528
+/*신규화면 Object*/
529
+let createObj = {
530
+	init: function () {
531
+		pageObj.switchScreen('ADD');
532
+		itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO03010_DETAIL');
533
+		$('#ITP_FORM_STINFO03010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
534
+		this.unload();
535
+		this.load();
536
+	},
537
+	button: {
538
+		cancel: function() {
539
+			listObj.grid.search();
540
+		},
541
+		addRow: function() {
542
+			itp_fn_grid_add_row(STINFO03010_DETAIL_GRID_ID, undefined, ['spplyId'], 'STINFO03010_DETAIL');
543
+		},
544
+		delRow: function() {
545
+			itp_fn_grid_del_row(STINFO03010_DETAIL_GRID_ID);
546
+		},
547
+		save: function() {
548
+			const formId = '#ITP_FORM_STINFO03010_DETAIL';
549
+			itp_fn_form_clear_validate(null, formId);
550
+			var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
551
+			var vali_userStatCd = itp_fn_form_validate(formId, formId + '_USER_STAT_CD', ['empty'], undefined);
552
+			var vali_userNm = itp_fn_form_validate(formId, formId + '_USER_NM', ['empty'], undefined);
553
+			var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
554
+			var vali_email = itp_fn_form_validate(formId, formId + '_EMAIL', ['empty'], undefined);
555
+			var vali_userPw = true;
556
+			var vali_userPwConfirm = true;
557
+			if (vali_userId && vali_userStatCd && vali_userNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
558
+				if (ITP_FORM_STINFO03010_DETAIL_IS_DUPLICATE) {
559
+					itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
560
+				} else {
561
+					let gridInsertData = [];
562
+					let gridUpdateData = [];
563
+					let gridDeleteData = [];
564
+					const rowData = $(STINFO03010_DETAIL_GRID_ID).getRowData();
565
+					const keyValue = $(formId + '_USER_ID').val();
566
+					$.each(rowData, function(key, value) {
567
+						if (value.viewCd != 'R') {
568
+							value.userId = keyValue;
569
+							if (value.viewCd == 'C') {
570
+								gridInsertData.push(value);
571
+							} else if (value.viewCd == 'U') {
572
+								gridUpdateData.push(value);
573
+							} else if (value.viewCd == 'D') {
574
+								gridDeleteData.push(value);
575
+							}
576
+						}
577
+					});
578
+					let param = $(formId).serializeObject();
579
+					param.gridInsertData = gridInsertData;
580
+					param.gridUpdateData = gridUpdateData;
581
+					param.gridDeleteData = gridDeleteData;
582
+					//console.log(JSON.stringify(param));
583
+					var searhFn = function() {
584
+						ITP_FORM_STINFO03010_DETAIL_IS_WRITING = false;
585
+						listObj.grid.search();
586
+					};
587
+					fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
588
+				}
589
+			}
590
+		},
591
+		resetPass: function() {
592
+			var resetPwFn = {
593
+				callBack: function(args) {
594
+					const key = {'storeId':  $('#ITP_FORM_STINFO03010_DETAIL_STORE_ID').val()};
595
+					const param = $.param(key);
596
+					fn_ajax_call(API_INTI_PW, param, undefined, 'GET');
597
+				}
598
+			};
599
+			itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.askResetUserPw, resetPwFn, null);
600
+		}
601
+	},
602
+	load: function () {
603
+		var option = {
604
+			gridId: STINFO03010_DETAIL_GRID_ID,
605
+			colModel: gridColModel.detail,
606
+			data: [],
607
+			pager: STINFO03010_DETAIL_GRID_PAGER,
608
+		};
609
+		itp_fn_grid_make_local(option);
610
+	},
611
+	clearData : function() {
612
+		$(STINFO03010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
613
+		$(STINFO03010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
614
+		$(STINFO03010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
615
+		$(STINFO03010_DETAIL_GRID_EMPTY).show();
616
+	},
617
+	unload : function() {
618
+		$.jgrid.gridUnload(STINFO03010_DETAIL_GRID_ID);
619
+	}
620
+};

+ 626 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO04010.js

@@ -0,0 +1,626 @@
1
+require(['config'], function() {
2
+    require([
3
+        'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
4
+    ], function($) {
5
+        pageObj.init();
6
+    });
7
+});
8
+
9
+/********************************************************
10
+ --------------------------------------------------------
11
+ - Object 목록								            -
12
+ --------------------------------------------------------
13
+ * const gridColModel = {}	: 화면 Grid Object			*
14
+ * let pageObj = {}			: 화면공통 Object			*
15
+ * let listObj = {}			: 목록화면 Object			*
16
+ * let viewObj = {}			: 상세화면 Object			*
17
+ * let modifyObj = {}		: 수정화면 Object			*
18
+ * let createObj = {}		: 신규화면 Object			*
19
+ *******************************************************/
20
+
21
+/*화면 변수*/
22
+const STINFO04010_GRID_ID = '#ITP_STINFO04010_jqGrid';
23
+const STINFO04010_GRID_LIST = '#ITP_STINFO04010_jqGrid_list';
24
+const STINFO04010_GRID_PAGER = '#ITP_STINFO04010_jqGridPager';
25
+const STINFO04010_GRID_EMPTY = '#ITP_STINFO04010_jqGridEmpty';
26
+
27
+const STINFO04010_VIEW_GRID_ID = '#ITP_STINFO04010_VIEW_jqGrid';
28
+const STINFO04010_VIEW_GRID_LIST = '#ITP_STINFO04010_VIEW_jqGrid_list';
29
+const STINFO04010_VIEW_GRID_PAGER = '#ITP_STINFO04010_VIEW_jqGridPager';
30
+const STINFO04010_VIEW_GRID_EMPTY = '#ITP_STINFO04010_VIEW_jqGridEmpty';
31
+
32
+const STINFO04010_DETAIL_GRID_ID = '#ITP_STINFO04010_DETAIL_jqGrid';
33
+const STINFO04010_DETAIL_GRID_LIST = '#ITP_STINFO04010_DETAIL_jqGrid_list';
34
+const STINFO04010_DETAIL_GRID_PAGER = '#ITP_STINFO04010_DETAIL_jqGridPager';
35
+const STINFO04010_DETAIL_GRID_EMPTY = '#ITP_STINFO04010_DETAIL_jqGridEmpty';
36
+
37
+let ITP_FORM_STINFO04010_DETAIL_IS_DUPLICATE = false;
38
+let ITP_FORM_STINFO04010_DETAIL_IS_WRITING = false;
39
+
40
+/*API URL*/
41
+let API_DETAIL_GRID_LIST 	= '/api/item/detail-grid-list';	    // 목록
42
+let API_DETAIL_INFO 		= '/api/item/info-item';			// 상세
43
+let API_DETAIL_SAVE 		= '/api/item/save-item';			// 저장
44
+let API_ITEM_CLASS_LEVEL	= '/api/item/class-level-list';		//품목분류 level 검색
45
+
46
+/*화면 Grid ColModel*/
47
+const gridColModel = {
48
+    list: [
49
+        {
50
+            index: 'BRAND_ID', name: 'brandId',
51
+            label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
52
+            width: '10', fixed: false, align: 'center',
53
+            sortable: false, hidden: true
54
+        },
55
+        {
56
+            index: 'BRAND_NM', name: 'brandNm',
57
+            label: ITP_MSG_LOCALE.label.brandNm, //브랜드명
58
+            width: '10', fixed: false, align: 'center',
59
+            sortable: false, hidden: false
60
+        },
61
+        {
62
+            index: 'ITEM_ID', name: 'itemId',
63
+            label: ITP_MSG_LOCALE.label.itemId, //품목번호
64
+            width: '10', fixed: false, align: 'center',
65
+            sortable: false, hidden: false
66
+        },
67
+        {
68
+            index: 'ITEM_NM', name: 'itemNm',
69
+            label: ITP_MSG_LOCALE.label.itemNm, //품목명
70
+            width: '13', fixed: false, align: 'center',
71
+            sortable: false, hidden: false
72
+        },
73
+        {
74
+            index: 'ITEM_TYPE_NM', name: 'itemTypeNm',
75
+            label: ITP_MSG_LOCALE.label.itemTypeNm, //품목유형
76
+            width: '13', fixed: false, align: 'center',
77
+            sortable: false, hidden: false
78
+        },
79
+        {
80
+            index: 'ITEM_CLASS_NM', name: 'itemClassNm',
81
+            label: ITP_MSG_LOCALE.label.itemClassNm, //품목분류
82
+            width: '15', fixed: false, align: 'center',
83
+            sortable: false, hidden: false
84
+        },
85
+        {
86
+            index: 'ST_CD', name: 'stCd',
87
+            label: ITP_MSG_LOCALE.label.stNm, //상태
88
+            width: '6', fixed: false, align: 'center',
89
+            sortable: false, hidden: false
90
+        },
91
+        {
92
+            index: 'PODR_PSSBLDVSN_NM', name: 'podrPssblDvsnNm',
93
+            label: ITP_MSG_LOCALE.label.podrPssblDvsnNm, //발주여부
94
+            width: '6', fixed: false, align: 'center',
95
+            sortable: false, hidden: false
96
+        },
97
+        {
98
+            index: 'UNIT', name: 'unit',
99
+            label: ITP_MSG_LOCALE.label.unit, //기본단위
100
+            width: '6', fixed: false, align: 'center',
101
+            sortable: false, hidden: false
102
+        },
103
+        {
104
+            index: 'PCH_ITEM_YN', name: 'pchItemYn',
105
+            label: ITP_MSG_LOCALE.label.pchItemYn, //구매품목여부
106
+            width: '6', fixed: false, align: 'center',
107
+            sortable: false, hidden: false
108
+        },
109
+        {
110
+            index: 'SALE_ITEM_YN', name: 'saleItemYn',
111
+            label: ITP_MSG_LOCALE.label.saleItemYn, //판매품목여부
112
+            width: '10', fixed: false, align: 'center',
113
+            sortable: false, hidden: false
114
+        },
115
+    ],
116
+    detail: [
117
+        {
118
+            index: 'VIEW_CD', name: 'viewCd',
119
+            label: ITP_MSG_LOCALE.label.viewCd,
120
+            width: '10', fixed: false, align: 'center',
121
+            sortable: false, hidden: true
122
+        },
123
+        {
124
+            index: 'AUTH_NO', name: 'authNo',
125
+            label: ITP_MSG_LOCALE.label.permitCd,
126
+            width: '20', fixed: false, align: 'center',
127
+            sortable: false, editable: false, edittype: 'text',
128
+            editrules: {required: true}
129
+        },
130
+        {
131
+            index: 'AUTH_NM', name: 'authNm',
132
+            label: ITP_MSG_LOCALE.label.permitName,
133
+            width: '30', fixed: false, align: 'center',
134
+            sortable: true, editable: false, edittype: 'text',
135
+            editrules: {required: true}
136
+        },
137
+        {
138
+            index: 'USE_YN_NM', name: 'useYnNm',
139
+            label: ITP_MSG_LOCALE.label.status,
140
+            width: '10', fixed: false, align: 'center',
141
+            sortable: false, editable: false, edittype: 'text'
142
+        },
143
+        {
144
+            index: 'ADD_DT', name: 'addDt',
145
+            label: ITP_MSG_LOCALE.label.regDt,
146
+            width: '10', fixed: false, align: 'center',
147
+            sortable: false, editable: false, edittype: 'text'
148
+        }
149
+    ]
150
+};
151
+
152
+/*화면공통 Object*/
153
+let pageObj = {
154
+    init: function () {
155
+        this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
156
+        this.ui.init();
157
+        this.event.init();
158
+    },
159
+    brandInfo: {},
160
+    ui: {
161
+        init: function () {
162
+            this.view();
163
+            this.grid();
164
+            this.ready();
165
+        },
166
+        view: function() {
167
+            // 버튼 권한설정
168
+            fn_proc_btn_auth('STINFO04010');
169
+            // 공통코드 표시
170
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO04010_DETAIL_ST_CD');
171
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO04010_SERVICE_ST_CD');
172
+            fn_make_select(CODE_LIST, 'PODR_PSSBL_DVSN', 'ITP_FORM_STINFO04010_SEARCH_PODR_PSSBL_DVSN');
173
+            fn_make_select(CODE_LIST, 'ITEM_GUBUN', 'ITP_FORM_STINFO04010_SEARCH_ITEM_KIND');
174
+            fn_make_select(CODE_LIST, 'ITEM_TYPE', 'ITP_FORM_STINFO04010_SEARCH_ITEM_TYPE');
175
+
176
+            $('.detail_item_unit').each(function() {
177
+                var id = $(this).attr('id');
178
+                fn_make_select(CODE_LIST, 'DSTRBT_COST_UNIT', $(this).attr('id'));
179
+            });
180
+
181
+            itemClassLevel.list(1, true);
182
+        },
183
+        grid: function() {
184
+            itp_fn_jqgrid_resize(STINFO04010_GRID_ID, STINFO04010_GRID_LIST, 'lg');
185
+            listObj.empty.init();
186
+            itp_fn_fire_window_resize();
187
+        },
188
+        ready: function() {
189
+            listObj.init();
190
+        }
191
+    },
192
+    event: {
193
+        init: function () {
194
+            this.button();
195
+        },
196
+        button: function () {
197
+            // 버튼 클릭 이벤트
198
+            $('button').each(function() {
199
+                var id = $(this).attr('id');
200
+                $(this).on('click', function() {
201
+                    switch (id) {
202
+                        case 'ITP_BTN_STINFO04010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
203
+                        case 'ITP_BTN_STINFO04010_NEWREG'			: listObj.button.create(); 		break;	// 신규등록 버튼
204
+                        case 'ITP_BTN_STINFO04010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
205
+                        case 'ITP_BTN_STINFO04010_CANCELLIST'		: createObj.button.cancel(); 	break;	// 취소/목록 버튼
206
+                        case 'ITP_BTN_STINFO04010_DELETE'			: 								break;	// 삭제 버튼
207
+                        case 'ITP_BTN_STINFO04010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
208
+                        case 'ITP_FORM_STINFO04010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
209
+                        case 'ITP_BTN_STINFO04010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
210
+                    }
211
+                });
212
+            });
213
+
214
+            $('body').on('click', function(e) {
215
+                var gridId = STINFO04010_DETAIL_GRID_ID.replace('#', '');
216
+                var rids = $(STINFO04010_DETAIL_GRID_ID).jqGrid('getDataIDs');
217
+                var last_row_id = rids[rids.length - 1];
218
+                itp_fn_grid_reset_selection(e, last_row_id, gridId, 'STINFO04010_DETAIL');
219
+            });
220
+
221
+        }
222
+    },
223
+    switchScreen: function(mode) {
224
+        if(mode == 'LIST') { // 목록
225
+            $('#ITP_BTN_STINFO04010_MODIFY').hide();
226
+            $('#ITP_BTN_STINFO04010_CANCELLIST').hide();
227
+            $('#ITP_BTN_STINFO04010_DELETE').hide();
228
+            $('#ITP_BTN_STINFO04010_SAVE').hide();
229
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_SRH');
230
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_NEWREG');
231
+
232
+            $('#ITP_AJAX_STINFO04010_LIST_CONTAINER').show();
233
+            $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').hide();
234
+            $('#ITP_AJAX_STINFO04010_VIEW_CONTAINER').hide();
235
+        } else if(mode == 'ADD') { // 등록
236
+            $('#ITP_BTN_STINFO04010_SRH').hide();
237
+            $('#ITP_BTN_STINFO04010_MODIFY').hide();
238
+            $('#ITP_BTN_STINFO04010_NEWREG').hide();
239
+            $('#ITP_BTN_STINFO04010_DELETE').hide();
240
+            $('#ITP_BTN_STINFO04010_RESET_PW').hide();
241
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_CANCELLIST');
242
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_SAVE');
243
+
244
+            $('#ITP_AJAX_STINFO04010_LIST_CONTAINER').hide();
245
+            $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').show();
246
+            $('#ITP_AJAX_STINFO04010_VIEW_CONTAINER').hide();
247
+            $('#ITP_FORM_STINFO04010_DETAIL_STORE_ID').removeAttr('readonly');
248
+            $('#ITP_FORM_STINFO04010_DETAIL_DUP').removeAttr('disabled');
249
+
250
+            $.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO04010_DETAIL'),function(k) {
251
+                $(this).val('');
252
+            });
253
+
254
+            $('#ITP_FORM_STINFO04010_DETAIL_VIEW_CD').val('C');
255
+            $('#ITP_FORM_STINFO04010_DETAIL .fnStoreNm').text('(자동부여)');
256
+        } else if(mode == 'MODIFY') { // 수정
257
+            $('#ITP_BTN_STINFO04010_SRH').hide();
258
+            $('#ITP_BTN_STINFO04010_MODIFY').hide();
259
+            $('#ITP_BTN_STINFO04010_NEWREG').hide();
260
+            $('#ITP_BTN_STINFO04010_DELETE').hide();
261
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_CANCELLIST');
262
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_SAVE');
263
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_RESET_PW');
264
+
265
+            $('#ITP_AJAX_STINFO04010_LIST_CONTAINER').hide();
266
+            $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').show();
267
+            $('#ITP_AJAX_STINFO04010_VIEW_CONTAINER').hide();
268
+            $('#ITP_FORM_STINFO04010_DETAIL_STORE_ID').attr('readonly', true);
269
+            $('#ITP_FORM_STINFO04010_DETAIL_DUP').attr('disabled', true);
270
+            $('#ITP_FORM_STINFO04010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
271
+
272
+            $('#ITP_FORM_STINFO04010_DETAIL_SEARCH_AFFL_SHOP').hide();
273
+            $('#ITP_FORM_STINFO04010_DETAIL_DELETE_AFFL_SHOP').hide();
274
+        } else if(mode == 'VIEW') { // 보기
275
+            $('#ITP_BTN_STINFO04010_SRH').hide();
276
+            $('#ITP_BTN_STINFO04010_NEWREG').hide();
277
+            $('#ITP_BTN_STINFO04010_DELETE').hide();
278
+            $('#ITP_BTN_STINFO04010_SAVE').hide();
279
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_MODIFY');
280
+            fn_show_btn_auth('#ITP_BTN_STINFO04010_CANCELLIST');
281
+
282
+            $('#ITP_AJAX_STINFO04010_LIST_CONTAINER').hide();
283
+            $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').hide();
284
+            $('#ITP_AJAX_STINFO04010_VIEW_CONTAINER').show();
285
+        }
286
+    }
287
+};
288
+
289
+/*목록화면 Object*/
290
+let listObj = {
291
+    init: function () {
292
+        this.form();
293
+        this.grid.init();
294
+    },
295
+    itp_STINFO04010_search: false,
296
+    button: {
297
+        search: function() {
298
+            listObj.itp_STINFO04010_search = true;
299
+            let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
300
+            param.gridSize = $.jgrid.defaults.rowNum;
301
+            param.gridPage = $.jgrid.defaults.page;
302
+            $(STINFO04010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
303
+        },
304
+        create: function() {
305
+            if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
306
+                createObj.init();
307
+            }
308
+        }
309
+    },
310
+    form: function() {
311
+        $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS1').on('change', function() {
312
+            ($(this).val() === '') ? itemClassLevel.clear(2, true): itemClassLevel.list(2, true);
313
+        });
314
+        $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS2').on('change', function() {
315
+            ($(this).val() === '') ? itemClassLevel.clear(3, true): itemClassLevel.list(3, true);
316
+        });
317
+        $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS3').on('change', function() {
318
+            ($(this).val() === '') ? itemClassLevel.clear(4, true): itemClassLevel.list(4, true);
319
+        });
320
+    },
321
+    empty: {
322
+        init: function() {
323
+            var _this = this;
324
+            this.push();
325
+            $(STINFO04010_GRID_EMPTY).on('click', function() {
326
+                _this.back();
327
+                _this.itp_STINFO04010_param.gridSize = $.jgrid.defaults.rowNum;
328
+                $(STINFO04010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO04010_param)}).trigger('reloadGrid');
329
+            });
330
+        },
331
+        itp_STINFO04010_param: {},
332
+        push: function() {
333
+            let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
334
+            listObj.itp_STINFO04010_param = param;
335
+        },
336
+        back: function() {
337
+            $('#ITP_FORM_STINFO04010_SERVICE_ST_CD').val(this.itp_STINFO04010_param.sitemStCd);
338
+            $('#ITP_FORM_STINFO04010_SEARCH_PODR_PSSBL_DVSN').val(this.itp_STINFO04010_param.spodrPssblDvsn);
339
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_KIND').val(this.itp_STINFO04010_param.sitemKind);
340
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_TYPE').val(this.itp_STINFO04010_param.sitemType);
341
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS1').val(this.itp_STINFO04010_param.sitemClass1);
342
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS2').val(this.itp_STINFO04010_param.sitemClass2);
343
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS3').val(this.itp_STINFO04010_param.sitemClass3);
344
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS4').val(this.itp_STINFO04010_param.sitemClass4);
345
+            $('#ITP_FORM_STINFO04010_SEARCH_ITEM_NM').val(this.itp_STINFO04010_param.sitemNm);
346
+        }
347
+    },
348
+    grid: {
349
+        init: function () {
350
+            // 데이터 없을때
351
+            listObj.empty.push();
352
+            this.search();
353
+        },
354
+        colModel: gridColModel.list,
355
+        search: function() {
356
+            pageObj.switchScreen('LIST');
357
+            this.unload();
358
+            this.load();
359
+        },
360
+        load: function() {
361
+            let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
362
+            param.gridSize = $.jgrid.defaults.rowNum;
363
+            param.sbrandId = pageObj.brandInfo.brandId;
364
+            // param.sbrandId = sessionStorage.getItem('itp_brand_id') !== null ? sessionStorage.getItem('itp_brand_id') : 'BRD221000001';
365
+
366
+            var option = {
367
+                gridId: STINFO04010_GRID_ID,
368
+                colModel: gridColModel.list,
369
+                param: JSON.stringify(param),
370
+                url: DOMAIN + API_DETAIL_GRID_LIST,
371
+                pager: STINFO04010_GRID_PAGER,
372
+                onCellSelect: function(rowId, cellIdx, cellValue) {
373
+                    var cm = $(this).jqGrid('getGridParam', 'colModel');
374
+                    var colNm = cm[cellIdx].name;
375
+                    if (colNm == 'itemNm') {
376
+                        const selectVal = $(this).jqGrid('getCell', rowId, 'itemId');
377
+                        const key = {brandId:pageObj.brandInfo.brandId, itemId: selectVal, viewCd: 'R'};
378
+                        var param = $.param(key);
379
+                        viewObj.init(param);
380
+                    }
381
+                },
382
+                loadComplete: function(data) {
383
+                    console.log(data);
384
+                    itp_fn_grid_load_complete(data, STINFO04010_GRID_ID, true, 'number', 'STINFO04010', listObj.itp_STINFO04010_search, listObj.empty, true, data.gridRecords, true);
385
+                    var ids = $(STINFO04010_GRID_ID).getDataIDs();
386
+                    $.each(ids, function(idx, rowId) {
387
+                        $(STINFO04010_GRID_ID).jqGrid('setCell', rowId, 'itemNm', '', ITP_GRID_COL_STYLE.link);
388
+                    });
389
+                },
390
+                onPaging: function(action) {
391
+                    itp_fn_grid_paging(STINFO04010_GRID_ID, action, param);
392
+                }
393
+            };
394
+            itp_fn_grid_make_remote(option);
395
+        },
396
+        clearData : function() {
397
+            $(STINFO04010_GRID_ID).jqGrid('clearGridData', true);
398
+            $(STINFO04010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
399
+            $(STINFO04010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
400
+            $(STINFO04010_GRID_EMPTY).show();
401
+        },
402
+        unload : function() {
403
+            $.jgrid.gridUnload(STINFO04010_GRID_ID);
404
+        }
405
+    }
406
+};
407
+
408
+/*상세화면 Object*/
409
+let viewObj = {
410
+    init: function (param) {
411
+        this.load(param);
412
+    },
413
+    load: function(param) {
414
+        fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
415
+    },
416
+    callback: function (result) {
417
+        console.log(result);
418
+        pageObj.switchScreen('VIEW');
419
+        $('#ITP_FORM_STINFO04010_VIEW #ITP_FORM_STINFO04010_VIEW_ITEM_ID').val(result.itemId);
420
+        $('#ITP_FORM_STINFO04010_VIEW .fnBrandNm').text(result.brandId);
421
+        $('#ITP_FORM_STINFO04010_VIEW .fnStCd').text(result.itemStNm);
422
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemClass1').text(result.itemClass1);
423
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemClass2').text(result.itemClass2);
424
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemClass3').text(result.itemClass3);
425
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemClass4').text(result.itemClass4);
426
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemClassMgntNo').text(result.itemClassMgntNo);
427
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemType').text(result.itemType);
428
+        $('#ITP_FORM_STINFO04010_VIEW .fnItemNm').text(result.itemClassNm);
429
+        $('#ITP_FORM_STINFO04010_VIEW .fnImpDvsn').text(result.impDvsnNm);
430
+        $('#ITP_FORM_STINFO04010_VIEW .fnPodrPssblDvsn').text(result.podrPssblDvsn);
431
+        $('#ITP_FORM_STINFO04010_VIEW .fnUnit').text(result.unit);
432
+        $('#ITP_FORM_STINFO04010_VIEW .fnPchItemYn').text(result.pchItemYn);
433
+        $('#ITP_FORM_STINFO04010_VIEW .fnViewPchUnit').text(result.pchUnit);
434
+        $('#ITP_FORM_STINFO04010_VIEW .fnSaleItemYn').text(result.saleItemYn);
435
+        $('#ITP_FORM_STINFO04010_VIEW .fnSaleUnit').text(result.saleUnit);
436
+        $('#ITP_FORM_STINFO04010_VIEW .fnAssetInfo').text(result.assetInfo);
437
+        $('#ITP_FORM_STINFO04010_VIEW .fnStckUnit').text(result.stckUnit);
438
+        $('#ITP_FORM_STINFO04010_VIEW .fnWeight').text(result.weight);
439
+        $('#ITP_FORM_STINFO04010_VIEW .fnVolume').text(result.volume);
440
+        $('#ITP_FORM_STINFO04010_VIEW .fnWidth').text(result.width);
441
+        $('#ITP_FORM_STINFO04010_VIEW .fnHeight').text(result.height);
442
+        $('#ITP_FORM_STINFO04010_VIEW .fnHigh').text(result.high);
443
+        $('#ITP_FORM_STINFO04010_VIEW .fnOneBoxQty').text(result.oneBoxQty);
444
+        $('#ITP_FORM_STINFO04010_VIEW .fnExpryYn').text(result.expryYn);
445
+        $('#ITP_FORM_STINFO04010_VIEW .fnExpryDate').text(result.expryDate);
446
+        $('#ITP_FORM_STINFO04010_VIEW .fnRtnPssblYn').text(result.rtnPssblYn);
447
+        $('#ITP_FORM_STINFO04010_VIEW .fnRtnDvsn').text(result.rtnDvsn);
448
+        // $('#ITP_FORM_STINFO04010_VIEW .fnItemImage').text(result.imageFileNoList);
449
+        $.each(result.imageFileNoList, function(index, item) {
450
+            $('#ITP_FORM_STINFO04010_VIEW .fnItemImage').append('<img src=" + item.filePath +" />');
451
+        });
452
+    }
453
+};
454
+
455
+/*수정화면 Object*/
456
+let modifyObj = {
457
+    init: function () {
458
+    },
459
+    button: {
460
+        modify: function (param) {
461
+            itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO04010_DETAIL');
462
+            const selectVal = $('#ITP_FORM_STINFO04010_VIEW_ITEM_ID').val();
463
+            const key = {brandId:pageObj.brandInfo.brandId, itemId: selectVal, viewCd: 'R'};
464
+            var param = $.param(key);
465
+            modifyObj.load(param);
466
+        }
467
+    },
468
+    load: function(param) {
469
+        fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
470
+    },
471
+    callback: function (result) {
472
+        console.log(result);
473
+        pageObj.switchScreen('MODIFY');
474
+
475
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_VIEW_CD').val('U');
476
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
477
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_ID').val(result.itemId);
478
+        $('#ITP_FORM_STINFO04010_DETAIL .fnBrandNm').text(result.brandId);
479
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_STORE_ST_CD').val(result.itemStCd);
480
+        // $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS1').val(result.itemClass1);
481
+        // $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS2').val(result.itemClass2);
482
+        // $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS3').val(result.itemClass3);
483
+        // $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS4').val(result.itemClass4);
484
+        $('#ITP_FORM_STINFO04010_DETAIL .fnItemClassMgntNo').text(result.itemId);
485
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_TYPE').val(result.itemType);
486
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_NM').val(result.itemClassNm);
487
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_IMP_DVSN').val(result.impDvsn);
488
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PODR_PSSBL_DVSN').val(result.podrPssblDvsn);
489
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_UNIT').val(result.unit);
490
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PCH_ITEM_YN').val(result.pchItemYn);
491
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PCH_UNIT').val(result.pchUnit);
492
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_SALE_ITEM_YN').val(result.saleItemYn);
493
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_SALE_UNIT').val(result.saleUnit);
494
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ASSET_INFO').val(result.assetInfo);
495
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_STCK_UNIT').val(result.stckUnit);
496
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WEIGHT').val(result.weight);
497
+        $('#ITP_FORM_STINFO04010_DETAIL .item_unit').text(result.unit);
498
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_VOLUME').val(result.volume);
499
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WIDTH').val(result.width);
500
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HEIGHT').val(result.height);
501
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HIGH').val(result.high);
502
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ONE_BOX_QTY').val(result.oneBoxQty);
503
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_EXPRY_YN').val(result.expryYn);
504
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_EXPRY_DATE').val(result.expryDate);
505
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_RTN_PSSBL_YN').val(result.rtnPssblYn);
506
+        $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_RTN_DVSN').val(result.rtnDvsn);
507
+        $.each(result.imageFileNoList, function(index, item) {
508
+            $('#ITP_FORM_STINFO04010_VIEW .ITEM_IMAGE').append('<img src=" + item.filePath +" />');
509
+        });
510
+
511
+        itemClassLevel.detail.data.push(result.itemClass1);
512
+        itemClassLevel.detail.data.push(result.itemClass2);
513
+        itemClassLevel.detail.data.push(result.itemClass3);
514
+        itemClassLevel.detail.data.push(result.itemClass4);
515
+        itemClassLevel.detail.make();
516
+    }
517
+};
518
+
519
+/*신규화면 Object*/
520
+let createObj = {
521
+    init: function () {
522
+        pageObj.switchScreen('ADD');
523
+        itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO04010_DETAIL');
524
+        $('#ITP_FORM_STINFO04010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
525
+        itemClassLevel.list(1, false);
526
+    },
527
+    button: {
528
+        cancel: function() {
529
+            listObj.grid.search();
530
+        },
531
+        save: function() {
532
+            const formId = '#ITP_FORM_STINFO04010_DETAIL';
533
+            itp_fn_form_clear_validate(null, formId);
534
+            var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
535
+            var vali_userStatCd = itp_fn_form_validate(formId, formId + '_USER_STAT_CD', ['empty'], undefined);
536
+            var vali_userNm = itp_fn_form_validate(formId, formId + '_USER_NM', ['empty'], undefined);
537
+            var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
538
+            var vali_email = itp_fn_form_validate(formId, formId + '_EMAIL', ['empty'], undefined);
539
+            var vali_userPw = true;
540
+            var vali_userPwConfirm = true;
541
+            if (vali_userId && vali_userStatCd && vali_userNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
542
+                if (ITP_FORM_STINFO04010_DETAIL_IS_DUPLICATE) {
543
+                    itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
544
+                } else {
545
+                    let gridInsertData = [];
546
+                    let gridUpdateData = [];
547
+                    let gridDeleteData = [];
548
+                    const rowData = $(STINFO04010_DETAIL_GRID_ID).getRowData();
549
+                    const keyValue = $(formId + '_USER_ID').val();
550
+                    $.each(rowData, function(key, value) {
551
+                        if (value.viewCd != 'R') {
552
+                            value.userId = keyValue;
553
+                            if (value.viewCd == 'C') {
554
+                                gridInsertData.push(value);
555
+                            } else if (value.viewCd == 'U') {
556
+                                gridUpdateData.push(value);
557
+                            } else if (value.viewCd == 'D') {
558
+                                gridDeleteData.push(value);
559
+                            }
560
+                        }
561
+                    });
562
+                    let param = $(formId).serializeObject();
563
+                    param.gridInsertData = gridInsertData;
564
+                    param.gridUpdateData = gridUpdateData;
565
+                    param.gridDeleteData = gridDeleteData;
566
+                    //console.log(JSON.stringify(param));
567
+                    var searhFn = function() {
568
+                        ITP_FORM_STINFO04010_DETAIL_IS_WRITING = false;
569
+                        listObj.grid.search();
570
+                    };
571
+                    fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
572
+                }
573
+            }
574
+        }
575
+    }
576
+};
577
+
578
+var itemClassLevel = {
579
+    isList: true,
580
+    level: 1,
581
+    keys: function() {
582
+        var keys = {sBrandId:pageObj.brandInfo.brandId, sItemLevel: this.level};
583
+        for(var i=1; i<this.level; i++) {
584
+            var key = 'sItemClass' + i;
585
+            var id = (this.isList ? '#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS' : '#ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS') + i;
586
+            keys[key] = $(id + ' option:selected').val();
587
+        }
588
+        return keys;
589
+    },
590
+    list: function(level, isList) {
591
+        this.level = level;
592
+        this.isList = isList;
593
+        this.clear(level, isList);
594
+        this.call( $.param(this.keys()));
595
+    },
596
+    detail: {
597
+        data: [],
598
+        make: function() {
599
+            itemClassLevel.isList = false;
600
+            itemClassLevel.call( $.param(itemClassLevel.keys()));
601
+        }
602
+    },
603
+    call: function(param) {
604
+        fn_ajax_call(API_ITEM_CLASS_LEVEL, param, this.callback, 'GET');
605
+    },
606
+    callback: function(result) {
607
+        // console.log(result);
608
+        var id = (itemClassLevel.isList ? 'ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS' : 'ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS')  + itemClassLevel.level;
609
+        fn_make_select_item_class(result.searchList, id, true, '선택');
610
+        if(!itemClassLevel.isList) {
611
+            $('#' + id).val(itemClassLevel.detail.data[ itemClassLevel.level - 1]);
612
+            if(itemClassLevel.level < itemClassLevel.detail.data.length) {
613
+                if(itemClassLevel.detail.data[itemClassLevel.level] !== '') {
614
+                    itemClassLevel.level++;
615
+                    itemClassLevel.call( $.param(itemClassLevel.keys()));
616
+                }
617
+            }
618
+        }
619
+    },
620
+    clear: function(level, isList) {
621
+        for(var i=level; i<5; i++) {
622
+            var id = (isList ? 'ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS' : 'ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS') + i;
623
+            $('#' + id).find('option').remove();
624
+        }
625
+    }
626
+};

+ 539 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO05010.js

@@ -0,0 +1,539 @@
1
+require(['config'], function() {
2
+	require([
3
+		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
4
+	], function($) {
5
+		pageObj.init();
6
+	});
7
+});
8
+
9
+/********************************************************
10
+ --------------------------------------------------------
11
+ - Object 목록								            -
12
+ --------------------------------------------------------
13
+ * const gridColModel = {}	: 화면 Grid Object			*
14
+ * let pageObj = {}			: 화면공통 Object			*
15
+ * let listObj = {}			: 목록화면 Object			*
16
+ * let viewObj = {}			: 상세화면 Object			*
17
+ * let modifyObj = {}		: 수정화면 Object			*
18
+ * let createObj = {}		: 신규화면 Object			*
19
+ *******************************************************/
20
+
21
+/*화면 변수*/
22
+const STINFO05010_GRID_ID = '#ITP_STINFO05010_jqGrid';
23
+const STINFO05010_GRID_LIST = '#ITP_STINFO05010_jqGrid_list';
24
+const STINFO05010_GRID_PAGER = '#ITP_STINFO05010_jqGridPager';
25
+const STINFO05010_GRID_EMPTY = '#ITP_STINFO05010_jqGridEmpty';
26
+
27
+let ITP_FORM_STINFO05010_DETAIL_IS_DUPLICATE = false;
28
+let ITP_FORM_STINFO05010_DETAIL_IS_WRITING = false;
29
+
30
+/*API URL*/
31
+let API_DETAIL_GRID_LIST 	= '/api/itemunit/detail-grid-list';	    // 목록
32
+let API_DETAIL_INFO 		= '/api/itemunit/info-itemunit';		// 상세
33
+let API_DETAIL_SAVE 		= '/api/itemunit/save-itemunit';		// 저장
34
+let API_ITEM_CLASS_LEVEL	= '/api/item/class-level-list';			//품목분류 level 검색
35
+
36
+/*화면 Grid ColModel*/
37
+const gridColModel = {
38
+	list: [
39
+		{
40
+			index: 'BRAND_ID', name: 'brandId',
41
+			label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
42
+			width: '10', fixed: false, align: 'center',
43
+			sortable: false, hidden: true
44
+		},
45
+		{
46
+			index: 'BRAND_UNIT_UNQ_NO', name: 'brandUnitUnqNo',
47
+			label: ITP_MSG_LOCALE.label.brandUnitUnqNo, //브랜드ID
48
+			width: '10', fixed: false, align: 'center',
49
+			sortable: false, hidden: true
50
+		},
51
+		{
52
+			index: 'ITEM_ID', name: 'itemId',
53
+			label: ITP_MSG_LOCALE.label.itemId, //품목번호
54
+			width: '10', fixed: false, align: 'center',
55
+			sortable: false, hidden: false
56
+		},
57
+		{
58
+			index: 'ITEM_NM', name: 'itemNm',
59
+			label: ITP_MSG_LOCALE.label.itemNm, //품목명
60
+			width: '13', fixed: false, align: 'center',
61
+			sortable: false, hidden: false
62
+		},
63
+		{
64
+			index: 'SPPLY_ID_NM', name: 'spplyIdNm',
65
+			label: ITP_MSG_LOCALE.label.spplyIdNm, //공급업체명
66
+			width: '13', fixed: false, align: 'center',
67
+			sortable: false, hidden: false
68
+		},
69
+		{
70
+			index: 'UNIT', name: 'unit',
71
+			label: ITP_MSG_LOCALE.label.unit, //기본단위
72
+			width: '6', fixed: false, align: 'center',
73
+			sortable: false, hidden: false
74
+		},
75
+		{
76
+			index: 'STDD_QYT', name: 'stddQty',
77
+			label: ITP_MSG_LOCALE.label.stddQty, //기준수량
78
+			width: '15', fixed: false, align: 'center',
79
+			sortable: false, hidden: false
80
+		},
81
+		{
82
+			index: 'CURR', name: 'curr',
83
+			label: ITP_MSG_LOCALE.label.curr, //통화
84
+			width: '6', fixed: false, align: 'center',
85
+			sortable: false, hidden: false
86
+		},
87
+		{
88
+			index: 'UNIT_AMT', name: 'unitAmt',
89
+			label: ITP_MSG_LOCALE.label.unitAmt, //단가
90
+			width: '6', fixed: false, align: 'center',
91
+			sortable: false, hidden: false
92
+		},
93
+		{
94
+			index: 'CONT_STT_DT', name: 'contSttDt',
95
+			label: ITP_MSG_LOCALE.label.contSttDt, //시작일
96
+			width: '15', fixed: false, align: 'center',
97
+			sortable: false, hidden: false
98
+		},
99
+		{
100
+			index: 'CONT_END_DT', name: 'contEndDt',
101
+			label: ITP_MSG_LOCALE.label.contEndDt, //종료일
102
+			width: '6', fixed: false, align: 'center',
103
+			sortable: false, hidden: false
104
+		},
105
+		{
106
+			index: 'LEAD_TIME', name: 'leadTime',
107
+			label: ITP_MSG_LOCALE.label.leadTime, //리드타임 (Day)
108
+			width: '6', fixed: false, align: 'center',
109
+			sortable: false, hidden: false
110
+		},
111
+		{
112
+			index: 'FILE_PATH', name: 'filePath',
113
+			label: ITP_MSG_LOCALE.label.itemFilePath, //단가계약파일
114
+			width: '15', fixed: false, align: 'center',
115
+			sortable: false, hidden: false
116
+		},
117
+		{
118
+			index: 'SYS_REG_DT', name: 'sysRegDt',
119
+			label: ITP_MSG_LOCALE.label.regDt, //등록일
120
+			width: '6', fixed: false, align: 'center',
121
+			sortable: false, hidden: false
122
+		},
123
+		{
124
+			index: 'UNIT_ST_NM', name: 'unitStNm',
125
+			label: ITP_MSG_LOCALE.label.stNm, //상태
126
+			width: '6', fixed: false, align: 'center',
127
+			sortable: false, hidden: false
128
+		},
129
+		{
130
+			index: 'SPPLY_ITEM_ID', name: 'spplyItemId',
131
+			label: ITP_MSG_LOCALE.label.spplyItemId, //공급사품번
132
+			width: '10', fixed: false, align: 'center',
133
+			sortable: false, hidden: false
134
+		}
135
+	]
136
+};
137
+
138
+/*화면공통 Object*/
139
+let pageObj = {
140
+	init: function () {
141
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
142
+		this.ui.init();
143
+		this.event.init();
144
+	},
145
+	brandInfo: {},
146
+	ui: {
147
+		init: function () {
148
+			this.view();
149
+			this.grid();
150
+			this.ready();
151
+		},
152
+		view: function() {
153
+			// 버튼 권한설정
154
+			fn_proc_btn_auth('STINFO05010');
155
+			// 공통코드 표시
156
+			fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO05010_SEARCH_ST_CD');
157
+			fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_STINFO05010_DETAIL_ST_CD');
158
+			fn_make_select(CODE_LIST, 'DSTRBT_COST_UNIT', 'ITP_FORM_STINFO05010_DETAIL_UNIT');
159
+			fn_make_select(CODE_LIST, 'CURR', 'ITP_FORM_STINFO05010_DETAIL_CURR');
160
+
161
+			itemClassLevel.list(1, true);
162
+
163
+			// 조회일자 지정
164
+			$('#ITP_TAB_STINFO05010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
165
+		},
166
+		grid: function() {
167
+			itp_fn_jqgrid_resize(STINFO05010_GRID_ID, STINFO05010_GRID_LIST, 'lg');
168
+			listObj.empty.init();
169
+			itp_fn_fire_window_resize();
170
+		},
171
+		ready: function() {
172
+			listObj.init();
173
+		}
174
+	},
175
+	event: {
176
+		init: function () {
177
+			this.button();
178
+		},
179
+		button: function () {
180
+			// 버튼 클릭 이벤트
181
+			$('button').each(function() {
182
+				var id = $(this).attr('id');
183
+				$(this).on('click', function() {
184
+					switch (id) {
185
+						case 'ITP_BTN_STINFO05010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
186
+						case 'ITP_BTN_STINFO05010_NEWREG'			: listObj.button.create(); 		break;	// 신규등록 버튼
187
+						case 'ITP_BTN_STINFO05010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
188
+						case 'ITP_BTN_STINFO05010_CANCELLIST'		: createObj.button.cancel(); 	break;	// 취소/목록 버튼
189
+						case 'ITP_BTN_STINFO05010_DELETE'			: 								break;	// 삭제 버튼
190
+						case 'ITP_BTN_STINFO05010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
191
+						case 'ITP_FORM_STINFO05010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
192
+						case 'ITP_BTN_STINFO05010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
193
+					}
194
+				});
195
+			});
196
+
197
+		}
198
+	},
199
+	switchScreen: function(mode) {
200
+		if(mode == 'LIST') { // 목록
201
+			$('#ITP_BTN_STINFO05010_MODIFY').hide();
202
+			$('#ITP_BTN_STINFO05010_CANCELLIST').hide();
203
+			$('#ITP_BTN_STINFO05010_DELETE').hide();
204
+			$('#ITP_BTN_STINFO05010_SAVE').hide();
205
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_SRH');
206
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_NEWREG');
207
+
208
+			$('#ITP_AJAX_STINFO05010_LIST_CONTAINER').show();
209
+			$('#ITP_AJAX_STINFO05010_DETAIL_CONTAINER').hide();
210
+			$('#ITP_AJAX_STINFO05010_VIEW_CONTAINER').hide();
211
+		} else if(mode == 'ADD') { // 등록
212
+			$('#ITP_BTN_STINFO05010_SRH').hide();
213
+			$('#ITP_BTN_STINFO05010_MODIFY').hide();
214
+			$('#ITP_BTN_STINFO05010_NEWREG').hide();
215
+			$('#ITP_BTN_STINFO05010_DELETE').hide();
216
+			$('#ITP_BTN_STINFO05010_RESET_PW').hide();
217
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_CANCELLIST');
218
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_SAVE');
219
+
220
+			$('#ITP_AJAX_STINFO05010_LIST_CONTAINER').hide();
221
+			$('#ITP_AJAX_STINFO05010_DETAIL_CONTAINER').show();
222
+			$('#ITP_AJAX_STINFO05010_VIEW_CONTAINER').hide();
223
+			$('#ITP_FORM_STINFO05010_DETAIL_STORE_ID').removeAttr('readonly');
224
+			$('#ITP_FORM_STINFO05010_DETAIL_DUP').removeAttr('disabled');
225
+
226
+			$.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO05010_DETAIL'),function(k) {
227
+				$(this).val('');
228
+			});
229
+
230
+			$('#ITP_FORM_STINFO05010_DETAIL_VIEW_CD').val('C');
231
+			$('#ITP_FORM_STINFO05010_DETAIL .fnStoreNm').text('(자동부여)');
232
+		} else if(mode == 'MODIFY') { // 수정
233
+			$('#ITP_BTN_STINFO05010_SRH').hide();
234
+			$('#ITP_BTN_STINFO05010_MODIFY').hide();
235
+			$('#ITP_BTN_STINFO05010_NEWREG').hide();
236
+			$('#ITP_BTN_STINFO05010_DELETE').hide();
237
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_CANCELLIST');
238
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_SAVE');
239
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_RESET_PW');
240
+
241
+			$('#ITP_AJAX_STINFO05010_LIST_CONTAINER').hide();
242
+			$('#ITP_AJAX_STINFO05010_DETAIL_CONTAINER').show();
243
+			$('#ITP_AJAX_STINFO05010_VIEW_CONTAINER').hide();
244
+			$('#ITP_FORM_STINFO05010_DETAIL_STORE_ID').attr('readonly', true);
245
+			$('#ITP_FORM_STINFO05010_DETAIL_DUP').attr('disabled', true);
246
+			$('#ITP_FORM_STINFO05010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
247
+
248
+			$('#ITP_FORM_STINFO05010_DETAIL_SEARCH_AFFL_SHOP').hide();
249
+			$('#ITP_FORM_STINFO05010_DETAIL_DELETE_AFFL_SHOP').hide();
250
+		} else if(mode == 'VIEW') { // 보기
251
+			$('#ITP_BTN_STINFO05010_SRH').hide();
252
+			$('#ITP_BTN_STINFO05010_NEWREG').hide();
253
+			$('#ITP_BTN_STINFO05010_DELETE').hide();
254
+			$('#ITP_BTN_STINFO05010_SAVE').hide();
255
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_MODIFY');
256
+			fn_show_btn_auth('#ITP_BTN_STINFO05010_CANCELLIST');
257
+
258
+			$('#ITP_AJAX_STINFO05010_LIST_CONTAINER').hide();
259
+			$('#ITP_AJAX_STINFO05010_DETAIL_CONTAINER').hide();
260
+			$('#ITP_AJAX_STINFO05010_VIEW_CONTAINER').show();
261
+		}
262
+	}
263
+};
264
+
265
+/*목록화면 Object*/
266
+let listObj = {
267
+	init: function () {
268
+		this.form();
269
+		this.grid.init();
270
+	},
271
+	itp_STINFO05010_search: false,
272
+	button: {
273
+		search: function() {
274
+			listObj.itp_STINFO05010_search = true;
275
+			let param = $('#ITP_FORM_STINFO05010_SEARCH').serializeObject();
276
+			param.gridSize = $.jgrid.defaults.rowNum;
277
+			param.gridPage = $.jgrid.defaults.page;
278
+			$(STINFO05010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
279
+		},
280
+		create: function() {
281
+			if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
282
+				createObj.init();
283
+			}
284
+		}
285
+	},
286
+	form: function() {
287
+		$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS1').on('change', function() {
288
+			($(this).val() === '') ? itemClassLevel.clear(2, true): itemClassLevel.list(2, true);
289
+		});
290
+		$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS2').on('change', function() {
291
+			($(this).val() === '') ? itemClassLevel.clear(3, true): itemClassLevel.list(3, true);
292
+		});
293
+		$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS3').on('change', function() {
294
+			($(this).val() === '') ? itemClassLevel.clear(4, true): itemClassLevel.list(4, true);
295
+		});
296
+	},
297
+	empty: {
298
+		init: function() {
299
+			var _this = this;
300
+			this.push();
301
+			$(STINFO05010_GRID_EMPTY).on('click', function() {
302
+				_this.back();
303
+				_this.itp_STINFO05010_param.gridSize = $.jgrid.defaults.rowNum;
304
+				$(STINFO05010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO05010_param)}).trigger('reloadGrid');
305
+			});
306
+		},
307
+		itp_STINFO05010_param: {},
308
+		push: function() {
309
+			let param = $('#ITP_FORM_STINFO05010_SEARCH').serializeObject();
310
+			listObj.itp_STINFO05010_param = param;
311
+		},
312
+		back: function() {
313
+			$('#ITP_FORM_STINFO05010_SERVICE_ST_CD').val(this.itp_STINFO05010_param.sitemStCd);
314
+			$('#ITP_FORM_STINFO05010_SEARCH_PODR_PSSBL_DVSN').val(this.itp_STINFO05010_param.contSttDt);
315
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_KIND').val(this.itp_STINFO05010_param.contEndDt);
316
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_TYPE').val(this.itp_STINFO05010_param.sspplyNm);
317
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS1').val(this.itp_STINFO05010_param.sitemClass1);
318
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS2').val(this.itp_STINFO05010_param.sitemClass2);
319
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS3').val(this.itp_STINFO05010_param.sitemClass3);
320
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS4').val(this.itp_STINFO05010_param.sitemClass4);
321
+			$('#ITP_FORM_STINFO05010_SEARCH_ITEM_NM').val(this.itp_STINFO05010_param.sitemNm);
322
+		}
323
+	},
324
+	grid: {
325
+		init: function () {
326
+			// 데이터 없을때
327
+			listObj.empty.push();
328
+			this.search();
329
+		},
330
+		search: function() {
331
+			pageObj.switchScreen('LIST');
332
+			this.unload();
333
+			this.load();
334
+		},
335
+		load: function() {
336
+			let param = $('#ITP_FORM_STINFO05010_SEARCH').serializeObject();
337
+			param.gridSize = $.jgrid.defaults.rowNum;
338
+			param.sbrandId = pageObj.brandInfo.brandId;
339
+
340
+			var option = {
341
+				gridId: STINFO05010_GRID_ID,
342
+				colModel: gridColModel.list,
343
+				param: JSON.stringify(param),
344
+				url: DOMAIN + API_DETAIL_GRID_LIST,
345
+				pager: STINFO05010_GRID_PAGER,
346
+				onCellSelect: function(rowId, cellIdx, cellValue) {
347
+					var cm = $(this).jqGrid('getGridParam', 'colModel');
348
+					var colNm = cm[cellIdx].name;
349
+					if (colNm == 'itemNm') {
350
+						const selectVal = $(this).jqGrid('getCell', rowId, 'brandUnitUnqNo');
351
+						const key = {brandId:pageObj.brandInfo.brandId, brandUnitUnqNo: selectVal, viewCd: 'R'};
352
+						var param = $.param(key);
353
+						viewObj.init(param);
354
+					}
355
+				},
356
+				loadComplete: function(data) {
357
+					console.log(data);
358
+					itp_fn_grid_load_complete(data, STINFO05010_GRID_ID, true, 'number', 'STINFO05010', listObj.itp_STINFO05010_search, listObj.empty, true, data.gridRecords, true);
359
+					var ids = $(STINFO05010_GRID_ID).getDataIDs();
360
+					$.each(ids, function(idx, rowId) {
361
+						$(STINFO05010_GRID_ID).jqGrid('setCell', rowId, 'itemNm', '', ITP_GRID_COL_STYLE.link);
362
+					});
363
+				},
364
+				onPaging: function(action) {
365
+					itp_fn_grid_paging(STINFO05010_GRID_ID, action, param);
366
+				}
367
+			};
368
+			itp_fn_grid_make_remote(option);
369
+		},
370
+		clearData : function() {
371
+			$(STINFO05010_GRID_ID).jqGrid('clearGridData', true);
372
+			$(STINFO05010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
373
+			$(STINFO05010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
374
+			$(STINFO05010_GRID_EMPTY).show();
375
+		},
376
+		unload : function() {
377
+			$.jgrid.gridUnload(STINFO05010_GRID_ID);
378
+		}
379
+	}
380
+};
381
+
382
+/*상세화면 Object*/
383
+let viewObj = {
384
+	init: function (param) {
385
+		this.load(param);
386
+	},
387
+	load: function(param) {
388
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
389
+	},
390
+	callback: function (result) {
391
+		console.log(result);
392
+		pageObj.switchScreen('VIEW');
393
+		$('#ITP_FORM_STINFO05010_VIEW #ITP_FORM_STINFO05010_VIEW_ITEM_ID').val(result.itemId);
394
+		$('#ITP_FORM_STINFO05010_VIEW #ITP_FORM_STINFO05010_VIEW_BRAND_UNIT_UNQ_NO').val(result.brandUnitUnqNo);
395
+		$('#ITP_FORM_STINFO05010_VIEW .fnBrandNm').text(result.brandId);
396
+		$('#ITP_FORM_STINFO05010_VIEW .fnStCd').text(result.unitStNm);
397
+		$('#ITP_FORM_STINFO05010_VIEW .fnItemClassMgntNo').text(result.itemClassMgntNo);
398
+		$('#ITP_FORM_STINFO05010_VIEW .fnItemNm').text(result.itemClassNm);
399
+		$('#ITP_FORM_STINFO05010_VIEW .fnSpplyId').text(result.spplyId);
400
+		$('#ITP_FORM_STINFO05010_VIEW .fnSpplyItemId').text(result.spplyNm);
401
+		$('#ITP_FORM_STINFO05010_VIEW .fnContSttDt').text(result.contSttDt);
402
+		$('#ITP_FORM_STINFO05010_VIEW .fnContEndDt').text(result.contEndDt);
403
+		$('#ITP_FORM_STINFO05010_VIEW .fnLeadTime').text(result.leadTime);
404
+		$('#ITP_FORM_STINFO05010_VIEW .fnUnit').text(result.unit);
405
+		$('#ITP_FORM_STINFO05010_VIEW .fnStddQyt').text(result.stddQty);
406
+		$('#ITP_FORM_STINFO05010_VIEW .fnCurr').text(result.curr);
407
+		$('#ITP_FORM_STINFO05010_VIEW .fnUnitAmt').text(result.unitAmt);
408
+		$('#ITP_FORM_STINFO05010_VIEW .fnStoreSaleStddQty').text(result.storeSaleStddQty);
409
+		$('#ITP_FORM_STINFO05010_VIEW .fnStoreSaleUnitAmt').text(result.storeSaleUnitAmt);
410
+		$('#ITP_FORM_STINFO05010_VIEW .fnRegId').text(result.regId);
411
+		$('#ITP_FORM_STINFO05010_VIEW .fnRegDt').text(result.regDt);
412
+		$('#ITP_FORM_STINFO05010_VIEW .fnChgId').text(result.chgId);
413
+		$('#ITP_FORM_STINFO05010_VIEW .fnChgDt').text(result.chgDt);
414
+
415
+		$.each(result.imageFileNoList, function(index, item) {
416
+			$('#ITP_FORM_STINFO05010_VIEW .fnFilePath').append('<img src=" + item.filePath +" />');
417
+		});
418
+	}
419
+};
420
+
421
+/*수정화면 Object*/
422
+let modifyObj = {
423
+	init: function () {
424
+	},
425
+	button: {
426
+		modify: function (param) {
427
+			itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO05010_DETAIL');
428
+			const selectVal = $('#ITP_FORM_STINFO05010_VIEW_BRAND_UNIT_UNQ_NO').val();
429
+			const key = {brandId:pageObj.brandInfo.brandId, brandUnitUnqNo: selectVal, viewCd: 'R'};
430
+			var param = $.param(key);
431
+			modifyObj.load(param);
432
+		}
433
+	},
434
+	load: function(param) {
435
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
436
+	},
437
+	callback: function (result) {
438
+		console.log(result);
439
+		pageObj.switchScreen('MODIFY');
440
+
441
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_VIEW_CD').val('U');
442
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_ITEM_ID').val(result.itemId);
443
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_BRAND_UNIT_UNQ_NO').val(result.brandUnitUnqNo);
444
+		$('#ITP_FORM_STINFO05010_DETAIL .fnBrandNm').text(result.brandId);
445
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_ST_CD').val(result.unitStCd);
446
+		// $('#ITP_FORM_STINFO05010_DETAIL .fnItemClassMgntNo').text(result.itemId);
447
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_ITEM_CLASS_MGNT_NO').val(result.itemClassMgntNo);
448
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_ITEM_NM').val(result.itemClassNm);
449
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_SPPLY_ID').val(result.spplyId);
450
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_SPPLY_NM').val(result.spplyNm);
451
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_SPPLY_ITEM_ID').val(result.spplyItemId);
452
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_CONT_STT_DT').val(result.contSttDt);
453
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_CONT_END_DT').val(result.contEndDt);
454
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_LEAD_TIME').val(result.leadTime);
455
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_UNIT').val(result.unit);
456
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_STDD_QYT').val(result.stddQty);
457
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_CURR').val(result.curr);
458
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_UNIT_AMT').val(result.unitAmt);
459
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_STORE_SALE_STDD_QTY').val(result.storeSaleStddQty);
460
+		$('#ITP_FORM_STINFO05010_DETAIL #ITP_FORM_STINFO05010_DETAIL_STORE_SALE_UNIT_AMT').val(result.storeSaleUnitAmt);
461
+		$('#ITP_FORM_STINFO05010_DETAIL .fnRegId').text(result.regId);
462
+		$('#ITP_FORM_STINFO05010_DETAIL .fnRegDt').text(result.regDt);
463
+		$('#ITP_FORM_STINFO05010_DETAIL .fnChgId').text(result.chgId);
464
+		$('#ITP_FORM_STINFO05010_DETAIL .fnChgDt').text(result.chgDt);
465
+		$.each(result.imageFileNoList, function(index, item) {
466
+			$('#ITP_FORM_STINFO05010_VIEW .ITEM_IMAGE').append('<img src=" + item.filePath +" />');
467
+		});
468
+	}
469
+};
470
+
471
+/*신규화면 Object*/
472
+let createObj = {
473
+	init: function () {
474
+		pageObj.switchScreen('ADD');
475
+		itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO05010_DETAIL');
476
+		$('#ITP_FORM_STINFO05010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
477
+	},
478
+	button: {
479
+		cancel: function() {
480
+			listObj.grid.search();
481
+		},
482
+		save: function() {
483
+			const formId = '#ITP_FORM_STINFO05010_DETAIL';
484
+			itp_fn_form_clear_validate(null, formId);
485
+			var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
486
+			var vali_userStatCd = itp_fn_form_validate(formId, formId + '_USER_STAT_CD', ['empty'], undefined);
487
+			var vali_userNm = itp_fn_form_validate(formId, formId + '_USER_NM', ['empty'], undefined);
488
+			var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
489
+			var vali_email = itp_fn_form_validate(formId, formId + '_EMAIL', ['empty'], undefined);
490
+			var vali_userPw = true;
491
+			var vali_userPwConfirm = true;
492
+			if (vali_userId && vali_userStatCd && vali_userNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
493
+				if (ITP_FORM_STINFO05010_DETAIL_IS_DUPLICATE) {
494
+					itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
495
+				} else {
496
+					let param = $(formId).serializeObject();
497
+					//console.log(JSON.stringify(param));
498
+					var searhFn = function() {
499
+						ITP_FORM_STINFO05010_DETAIL_IS_WRITING = false;
500
+						listObj.grid.search();
501
+					};
502
+					fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
503
+				}
504
+			}
505
+		}
506
+	}
507
+};
508
+
509
+var itemClassLevel = {
510
+	level: 1,
511
+	keys: function() {
512
+		var keys = {sBrandId:pageObj.brandInfo.brandId, sItemLevel: this.level};
513
+		for(var i=1; i<this.level; i++) {
514
+			var key = 'sItemClass' + i;
515
+			var id = '#ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS' + i;
516
+			keys[key] = $(id + ' option:selected').val();
517
+		}
518
+		return keys;
519
+	},
520
+	list: function(level) {
521
+		this.level = level;
522
+		this.clear(level);
523
+		this.call( $.param(this.keys()));
524
+	},
525
+	call: function(param) {
526
+		fn_ajax_call(API_ITEM_CLASS_LEVEL, param, this.callback, 'GET');
527
+	},
528
+	callback: function(result) {
529
+		// console.log(result);
530
+		var id ='ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS' + itemClassLevel.level;
531
+		fn_make_select_item_class(result.searchList, id, true, '선택');
532
+	},
533
+	clear: function(level, isList) {
534
+		for(var i=level; i<5; i++) {
535
+			var id = 'ITP_FORM_STINFO05010_SEARCH_ITEM_CLASS' + i;
536
+			$('#' + id).find('option').remove();
537
+		}
538
+	}
539
+};

+ 454 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO06010.js

@@ -0,0 +1,454 @@
1
+require(['config'], function() {
2
+	require([
3
+		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
4
+	], function($) {
5
+		pageObj.init();
6
+	});
7
+});
8
+
9
+/********************************************************
10
+ --------------------------------------------------------
11
+ - Object 목록								            -
12
+ --------------------------------------------------------
13
+ * const gridColModel = {}	: 화면 Grid Object			*
14
+ * let pageObj = {}			: 화면공통 Object			*
15
+ * let listObj = {}			: 목록화면 Object			*
16
+ * let viewObj = {}			: 상세화면 Object			*
17
+ * let modifyObj = {}		: 수정화면 Object			*
18
+ * let createObj = {}		: 신규화면 Object			*
19
+ *******************************************************/
20
+
21
+/*화면 변수*/
22
+const STINFO06010_GRID_ID = '#ITP_STINFO06010_jqGrid';
23
+const STINFO06010_GRID_LIST = '#ITP_STINFO06010_jqGrid_list';
24
+const STINFO06010_GRID_PAGER = '#ITP_STINFO06010_jqGridPager';
25
+const STINFO06010_GRID_EMPTY = '#ITP_STINFO06010_jqGridEmpty';
26
+
27
+const STINFO06010_DETAIL_GRID_ID = '#ITP_STINFO06010_DETAIL_jqGrid';
28
+const STINFO06010_DETAIL_GRID_LIST = '#ITP_STINFO06010_DETAIL_jqGrid_list';
29
+const STINFO06010_DETAIL_GRID_PAGER = '#ITP_STINFO06010_DETAIL_jqGridPager';
30
+const STINFO06010_DETAIL_GRID_EMPTY = '#ITP_STINFO06010_DETAIL_jqGridEmpty';
31
+
32
+let STINFO06010_GRID_LAST_ROW_ID;
33
+
34
+/*API URL*/
35
+let API_DETAIL_GRID_LIST 	= '/api/itemunit/store-unit-grid-list';	// 목록
36
+let API_DETAIL_INFO 		= '/api/itemunit/info-storeitemunit';		// 상세
37
+let API_DETAIL_SAVE 		= '/api/itemunit/save-store-itemunit';		// 저장
38
+
39
+/*화면공통 Object*/
40
+let pageObj = {
41
+	init: function () {
42
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
43
+		this.ui.init();
44
+		this.event.init();
45
+	},
46
+	screenMode: 'LIST',
47
+	brandInfo: {},
48
+	ui: {
49
+		init: function () {
50
+			this.view();
51
+			this.grid();
52
+			this.ready();
53
+		},
54
+		view: function() {
55
+			// 버튼 권한설정
56
+			fn_proc_btn_auth('STINFO06010');
57
+
58
+			fn_make_input_common_cd(CODE_LIST, 'CURR', 'ITP_FORM_STINFO05010_DETAIL_CURR', false);
59
+			fn_make_input_common_cd(CODE_LIST, 'UNIT_TARGET_CD', 'ITP_FORM_STINFO05010_DETAIL_UNIT_TARGET_CD', false);
60
+
61
+			console.log('=======> ' + $('#ITP_FORM_STINFO05010_DETAIL_CURR').val());
62
+			console.log('=======> ' + $('#ITP_FORM_STINFO05010_DETAIL_UNIT_TARGET_CD').val());
63
+
64
+			// 조회일자 지정
65
+			$('#ITP_TAB_STINFO06010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
66
+		},
67
+		grid: function() {
68
+			itp_fn_jqgrid_resize(STINFO06010_GRID_ID, STINFO06010_GRID_LIST, 'lg');
69
+			listObj.empty.init();
70
+			itp_fn_fire_window_resize();
71
+		},
72
+		ready: function() {
73
+			listObj.init();
74
+		}
75
+	},
76
+	event: {
77
+		init: function () {
78
+			this.button();
79
+		},
80
+		button: function () {
81
+			// 버튼 클릭 이벤트
82
+			$('button').each(function() {
83
+				var id = $(this).attr('id');
84
+				$(this).on('click', function() {
85
+					switch (id) {
86
+						case 'ITP_BTN_STINFO06010_SRH'				: (this.screenMode === 'List') ? listObj.button.search() : modifyObj.search();		break;	// 조회 버튼 클릭
87
+						case 'ITP_BTN_STINFO06010_NEWREG'			: listObj.button.create(); 		break;	// 신규등록 버튼
88
+						case 'ITP_BTN_STINFO06010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
89
+						case 'ITP_BTN_STINFO06010_CANCELLIST'		: listObj.grid.search(); 		break;	// 취소/목록 버튼
90
+						case 'ITP_BTN_STINFO06010_DELETE'			: 								break;	// 삭제 버튼
91
+						case 'ITP_BTN_STINFO06010_SAVE'				: modifyObj.button.save(); 		break;	// 저장 버튼
92
+					}
93
+				});
94
+			});
95
+
96
+		}
97
+	},
98
+	switchScreen: function(mode) {
99
+		if(mode == 'LIST') { // 목록
100
+			$('#ITP_BTN_STINFO06010_MODIFY').hide();
101
+			$('#ITP_BTN_STINFO06010_CANCELLIST').hide();
102
+			$('#ITP_BTN_STINFO06010_DELETE').hide();
103
+			$('#ITP_BTN_STINFO06010_SAVE').hide();
104
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_SRH');
105
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_NEWREG');
106
+
107
+			$('#ITP_AJAX_STINFO06010_LIST_CONTAINER').show();
108
+			$('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').hide();
109
+			$('#ITP_AJAX_STINFO06010_VIEW_CONTAINER').hide();
110
+		} else if(mode == 'ADD') { // 등록
111
+			$('#ITP_BTN_STINFO06010_SRH').hide();
112
+			$('#ITP_BTN_STINFO06010_MODIFY').hide();
113
+			$('#ITP_BTN_STINFO06010_NEWREG').hide();
114
+			$('#ITP_BTN_STINFO06010_DELETE').hide();
115
+			$('#ITP_BTN_STINFO06010_RESET_PW').hide();
116
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_CANCELLIST');
117
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_SAVE');
118
+
119
+			$('#ITP_AJAX_STINFO06010_LIST_CONTAINER').hide();
120
+			$('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').show();
121
+			$('#ITP_AJAX_STINFO06010_VIEW_CONTAINER').hide();
122
+			$('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').removeAttr('readonly');
123
+			$('#ITP_FORM_STINFO06010_DETAIL_DUP').removeAttr('disabled');
124
+
125
+			$.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO06010_DETAIL'),function(k) {
126
+				$(this).val('');
127
+			});
128
+
129
+			$('#ITP_FORM_STINFO06010_DETAIL_VIEW_CD').val('C');
130
+			$('#ITP_FORM_STINFO06010_DETAIL .fnStoreNm').text('(자동부여)');
131
+		} else if(mode == 'MODIFY') { // 수정
132
+			$('#ITP_BTN_STINFO06010_SRH').hide();
133
+			$('#ITP_BTN_STINFO06010_MODIFY').hide();
134
+			$('#ITP_BTN_STINFO06010_NEWREG').hide();
135
+			$('#ITP_BTN_STINFO06010_DELETE').hide();
136
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_CANCELLIST');
137
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_SAVE');
138
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_RESET_PW');
139
+
140
+			$('#ITP_AJAX_STINFO06010_LIST_CONTAINER').hide();
141
+			$('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').show();
142
+			$('#ITP_AJAX_STINFO06010_VIEW_CONTAINER').hide();
143
+		} else if(mode == 'VIEW') { // 보기
144
+			$('#ITP_BTN_STINFO06010_SRH').hide();
145
+			$('#ITP_BTN_STINFO06010_NEWREG').hide();
146
+			$('#ITP_BTN_STINFO06010_DELETE').hide();
147
+			$('#ITP_BTN_STINFO06010_SAVE').hide();
148
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_MODIFY');
149
+			fn_show_btn_auth('#ITP_BTN_STINFO06010_CANCELLIST');
150
+
151
+			$('#ITP_AJAX_STINFO06010_LIST_CONTAINER').hide();
152
+			$('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').hide();
153
+			$('#ITP_AJAX_STINFO06010_VIEW_CONTAINER').show();
154
+		}
155
+		this.screenMode = mode;
156
+	},
157
+	gridColModel : {
158
+		list: [
159
+			{
160
+				index: 'BRAND_ID', name: 'brandId',
161
+				label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
162
+				width: '10', fixed: false, align: 'center',
163
+				sortable: false, hidden: true
164
+			},
165
+			{
166
+				index: 'BRAND_NM', name: 'brandNm',
167
+				label: ITP_MSG_LOCALE.label.brandNm, //브랜드명
168
+				width: '13', fixed: false, align: 'center',
169
+				sortable: false, hidden: false
170
+			},
171
+			{
172
+				index: 'STORE_ID', name: 'storeId',
173
+				label: ITP_MSG_LOCALE.label.storeId, //매장ID
174
+				width: '10', fixed: false, align: 'center',
175
+				sortable: false, hidden: true
176
+			},
177
+			{
178
+				index: 'STORE_NM', name: 'storeNm',
179
+				label: ITP_MSG_LOCALE.label.storeNm, //매장명
180
+				width: '10', fixed: false, align: 'center',
181
+				sortable: false, hidden: true
182
+			},
183
+			{
184
+				index: 'CONT_STT_DT', name: 'contSttDt',
185
+				label: ITP_MSG_LOCALE.label.contSttDt, //계약시작일
186
+				width: '15', fixed: false, align: 'center',
187
+				sortable: false, hidden: false
188
+			},
189
+			{
190
+				index: 'CONT_END_DT', name: 'contEndDt',
191
+				label: ITP_MSG_LOCALE.label.contEndDt, //계약종료일
192
+				width: '6', fixed: false, align: 'center',
193
+				sortable: false, hidden: false
194
+			},
195
+			{
196
+				index: 'SYS_REG_DTTM', name: 'sysRegDttm',
197
+				label: ITP_MSG_LOCALE.label.sysRegDt, //계약생성일
198
+				width: '6', fixed: false, align: 'center',
199
+				sortable: false, hidden: false
200
+			},
201
+			{
202
+				index: 'ITEM_CNT', name: 'itemCnt',
203
+				label: ITP_MSG_LOCALE.label.itemCnt, //계약품목수
204
+				width: '10', fixed: false, align: 'center',
205
+				sortable: false, hidden: false
206
+			}
207
+		]
208
+	}
209
+};
210
+
211
+/*목록화면 Object*/
212
+let listObj = {
213
+	init: function () {
214
+		this.grid.init();
215
+	},
216
+	itp_STINFO06010_search: false,
217
+	button: {
218
+		search: function() {
219
+			listObj.itp_STINFO06010_search = true;
220
+			let param = $('#ITP_FORM_STINFO06010_SEARCH').serializeObject();
221
+			param.gridSize = $.jgrid.defaults.rowNum;
222
+			param.gridPage = $.jgrid.defaults.page;
223
+			$(STINFO06010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
224
+		},
225
+		create: function() {
226
+			if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
227
+				createObj.init();
228
+			}
229
+		}
230
+	},
231
+	empty: {
232
+		init: function() {
233
+			var _this = this;
234
+			this.push();
235
+			$(STINFO06010_GRID_EMPTY).on('click', function() {
236
+				_this.back();
237
+				_this.itp_STINFO06010_param.gridSize = $.jgrid.defaults.rowNum;
238
+				$(STINFO06010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO06010_param)}).trigger('reloadGrid');
239
+			});
240
+		},
241
+		itp_STINFO06010_param: {},
242
+		push: function() {
243
+			let param = $('#ITP_FORM_STINFO06010_SEARCH').serializeObject();
244
+			listObj.itp_STINFO06010_param = param;
245
+		},
246
+		back: function() {
247
+			$('#ITP_FORM_STINFO06010_SERVICE_ST_CD').val(this.itp_STINFO06010_param.sstorehNm);
248
+		}
249
+	},
250
+	grid: {
251
+		init: function () {
252
+			// 데이터 없을때
253
+			listObj.empty.push();
254
+			this.search();
255
+		},
256
+		search: function() {
257
+			pageObj.switchScreen('LIST');
258
+			this.unload();
259
+			this.load();
260
+		},
261
+		load: function() {
262
+			let param = $('#ITP_FORM_STINFO06010_SEARCH').serializeObject();
263
+			param.gridSize = $.jgrid.defaults.rowNum;
264
+			param.sbrandId = pageObj.brandInfo.brandId;
265
+
266
+			var option = {
267
+				gridId: STINFO06010_GRID_ID,
268
+				colModel: pageObj.gridColModel.list,
269
+				param: JSON.stringify(param),
270
+				url: DOMAIN + API_DETAIL_GRID_LIST,
271
+				pager: STINFO06010_GRID_PAGER,
272
+				onCellSelect: function(rowId, cellIdx, cellValue) {
273
+					var cm = $(this).jqGrid('getGridParam', 'colModel');
274
+					var colNm = cm[cellIdx].name;
275
+					if (colNm == 'contSttDt') {
276
+						const storeId = $(this).jqGrid('getCell', rowId, 'storeId');
277
+						const contSttDt = $(this).jqGrid('getCell', rowId, 'contSttDt');
278
+						const contEndDt = $(this).jqGrid('getCell', rowId, 'contEndDt');
279
+						const key = {brandId:pageObj.brandInfo.brandId, storeId: storeId, contSttDt: contSttDt, contEndDt: contEndDt, viewCd: 'R'};
280
+						var param = $.param(key);
281
+						modifyObj.init(param);
282
+					}
283
+				},
284
+				loadComplete: function(data) {
285
+					console.log(data);
286
+					itp_fn_grid_load_complete(data, STINFO06010_GRID_ID, true, 'number', 'STINFO06010', listObj.itp_STINFO06010_search, listObj.empty, true, data.gridRecords, true);
287
+					var ids = $(STINFO06010_GRID_ID).getDataIDs();
288
+					$.each(ids, function(idx, rowId) {
289
+						$(STINFO06010_GRID_ID).jqGrid('setCell', rowId, 'contSttDt', '', ITP_GRID_COL_STYLE.link);
290
+					});
291
+				},
292
+				onPaging: function(action) {
293
+					itp_fn_grid_paging(STINFO06010_GRID_ID, action, param);
294
+				}
295
+			};
296
+			itp_fn_grid_make_remote(option);
297
+		},
298
+		clearData : function() {
299
+			$(STINFO06010_GRID_ID).jqGrid('clearGridData', true);
300
+			$(STINFO06010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
301
+			$(STINFO06010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
302
+			$(STINFO06010_GRID_EMPTY).show();
303
+		},
304
+		unload : function() {
305
+			$.jgrid.gridUnload(STINFO06010_GRID_ID);
306
+		}
307
+	}
308
+};
309
+
310
+/*수정화면 Object*/
311
+let modifyObj = {
312
+	init: function (param) {
313
+		pageObj.switchScreen('MODIFY');
314
+		this.grid.init(param);
315
+	},
316
+	itp_STINFO06010_search: false,
317
+	search: function() {
318
+		listObj.itp_STINFO06010_search = true;
319
+		let param = $('#ITP_FORM_STINFO06010_DETAIL').serializeObject();
320
+		param.gridSize = $.jgrid.defaults.rowNum;
321
+		param.gridPage = $.jgrid.defaults.page;
322
+		$(STINFO06010_DETAIL_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
323
+	},
324
+	empty: {
325
+		init: function() {
326
+			var _this = this;
327
+			this.push();
328
+			$(STINFO06010_DETAIL_GRID_EMPTY).on('click', function() {
329
+				_this.back();
330
+				_this.itp_STINFO06010_param.gridSize = $.jgrid.defaults.rowNum;
331
+				$(STINFO06010_DETAIL_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO06010_param)}).trigger('reloadGrid');
332
+			});
333
+		},
334
+		itp_STINFO06010_param: {},
335
+		push: function() {
336
+			let param = $('#ITP_FORM_STINFO06010_DETAIL').serializeObject();
337
+			listObj.itp_STINFO06010_param = param;
338
+		},
339
+		back: function() {
340
+		}
341
+	},
342
+	grid: {
343
+		init: function (param) {
344
+			// 데이터 없을때
345
+			listObj.empty.push();
346
+			this.unload();
347
+			this.load(param);
348
+		},
349
+		load: function(param) {
350
+			var option = {
351
+				gridId: STINFO06010_DETAIL_GRID_ID,
352
+				// colModel: pageObj.gridColModel.detail,
353
+				colModel: [
354
+					{
355
+						index: 'BRAND_ID', name: 'brandId',
356
+						label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
357
+						width: '10', fixed: false, align: 'center',
358
+						sortable: false, hidden: true
359
+					},
360
+					{
361
+						index: 'ITEM_ID', name: 'itemId',
362
+						label: ITP_MSG_LOCALE.label.itemId, //품목번호
363
+						width: '10', fixed: false, align: 'center',
364
+						sortable: false, hidden: false
365
+					},
366
+					{
367
+						index: 'ITEM_NM', name: 'itemNm',
368
+						label: ITP_MSG_LOCALE.label.itemNm, //품목명
369
+						width: '13', fixed: false, align: 'center',
370
+						sortable: false, hidden: false
371
+					},
372
+					{
373
+						index: 'CONT_STT_DT', name: 'contSttDt',
374
+						label: ITP_MSG_LOCALE.label.contSttDt, //계약시작일
375
+						width: '15', fixed: false, align: 'center',
376
+						sortable: false, hidden: false
377
+					},
378
+					{
379
+						index: 'CONT_END_DT', name: 'contEndDt',
380
+						label: ITP_MSG_LOCALE.label.contEndDt, //계약종료일
381
+						width: '6', fixed: false, align: 'center',
382
+						sortable: false, hidden: false
383
+					},
384
+					{
385
+						index: 'UNIT', name: 'unit',
386
+						label: ITP_MSG_LOCALE.label.unit, //기본단위
387
+						width: '6', fixed: false, align: 'center',
388
+						sortable: true, editable: true, edittype: 'text',
389
+						editrules: {required: true}
390
+					},
391
+					{
392
+						index: 'STDD_QYT', name: 'stddQty',
393
+						label: ITP_MSG_LOCALE.label.stddQty, //기준수량
394
+						width: '6', fixed: false, align: 'center',
395
+						sortable: true, editable: true, edittype: 'text',
396
+						editrules: {required: true}
397
+					},
398
+					{
399
+						index: 'CURR', name: 'curr',
400
+						label: ITP_MSG_LOCALE.label.curr, //통화
401
+						width: '10', fixed: false, align: 'center',
402
+						sortable: false, editable: true, formatter: 'select', edittype: 'select',
403
+						editoptions: {value: $('#ITP_FORM_STINFO05010_DETAIL_CURR').val()},
404
+						editrules: {required: true}
405
+					},
406
+					{
407
+						index: 'UNIT_AMT', name: 'unitAmt',
408
+						label: ITP_MSG_LOCALE.label.unitAmt, //단가
409
+						width: '10', fixed: false, align: 'center',
410
+						sortable: true, editable: true, edittype: 'text',
411
+						editrules: {required: true}
412
+					},
413
+					{
414
+						index: 'UNIT_TARGET_CD', name: 'unitTargetCd',
415
+						label: ITP_MSG_LOCALE.label.unitTargetCd, //대상여부
416
+						width: '6', fixed: false, align: 'center',
417
+						sortable: false, editable: true, formatter: 'select', edittype: 'select',
418
+						editoptions: {value: $('#ITP_FORM_STINFO05010_DETAIL_UNIT_TARGET_CD').val()},
419
+						editrules: {required: true}
420
+					},
421
+					{
422
+						index: 'SPPLY_UNIT_AMT', name: 'spplyUnitAmt',
423
+						label: ITP_MSG_LOCALE.label.spplyUnitAmt, //공급단가
424
+						width: '6', fixed: false, align: 'center',
425
+						sortable: false, hidden: false
426
+					}
427
+				],
428
+				mtype: 'GET',
429
+				param: param,
430
+				url: DOMAIN + API_DETAIL_INFO,
431
+				loadComplete: function(data) {
432
+					console.log(data);
433
+					itp_fn_grid_load_complete(data, STINFO06010_DETAIL_GRID_ID, false, 'number', 'STINFO06010', modifyObj.itp_STINFO06010_search, modifyObj.empty, true, data.gridRecords, true);
434
+				},
435
+				onCellSelect: function(rowId, cellIdx, cellValue) {
436
+					STINFO06010_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowId, cellIdx, STINFO06010_GRID_LAST_ROW_ID, STINFO06010_DETAIL_GRID_ID, ['itemId']);
437
+				},
438
+				onPaging: function(action) {
439
+					itp_fn_grid_paging(STINFO06010_GRID_ID, action, param);
440
+				}
441
+			};
442
+			itp_fn_grid_make_remote(option);
443
+		},
444
+		clearData : function() {
445
+			$(STINFO06010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
446
+			$(STINFO06010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
447
+			$(STINFO06010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
448
+			$(STINFO06010_DETAIL_GRID_EMPTY).show();
449
+		},
450
+		unload : function() {
451
+			$.jgrid.gridUnload(STINFO06010_DETAIL_GRID_ID);
452
+		}
453
+	}
454
+};

+ 451 - 0
src/main/webapp/js/app/stinfo/ITP_STINFO07010.js

@@ -0,0 +1,451 @@
1
+require(['config'], function() {
2
+	require([
3
+		'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
4
+	], function($) {
5
+		pageObj.init();
6
+	});
7
+});
8
+
9
+/********************************************************
10
+ --------------------------------------------------------
11
+ - Object 목록								            -
12
+ --------------------------------------------------------
13
+ * const gridColModel = {}	: 화면 Grid Object			*
14
+ * let pageObj = {}			: 화면공통 Object			*
15
+ * let listObj = {}			: 목록화면 Object			*
16
+ * let viewObj = {}			: 상세화면 Object			*
17
+ * let modifyObj = {}		: 수정화면 Object			*
18
+ * let createObj = {}		: 신규화면 Object			*
19
+ *******************************************************/
20
+
21
+/*화면 변수*/
22
+const STINFO07010_GRID_ID = '#ITP_STINFO07010_jqGrid';
23
+const STINFO07010_GRID_LIST = '#ITP_STINFO07010_jqGrid_list';
24
+const STINFO07010_GRID_PAGER = '#ITP_STINFO07010_jqGridPager';
25
+const STINFO07010_GRID_EMPTY = '#ITP_STINFO07010_jqGridEmpty';
26
+
27
+let ITP_FORM_STINFO07010_DETAIL_IS_DUPLICATE = false;
28
+let ITP_FORM_STINFO07010_DETAIL_IS_WRITING = false;
29
+
30
+/*API URL*/
31
+let API_DETAIL_GRID_LIST 	= '/api/item/itemclass-grid-list';	    // 목록
32
+let API_DETAIL_INFO 		= '/api/item/info-itemClassMng';		// 상세
33
+let API_DETAIL_SAVE 		= '/api/item/save-itemClassMng';		// 저장
34
+let API_DETAIL_DELETE 		= '/api/item/del-itemClassMng';			// 삭제
35
+let API_ITEM_CLASS_LEVEL	= '/api/item/class-level-list';			//품목분류 level 검색
36
+
37
+/*화면 Grid ColModel*/
38
+const gridColModel = {
39
+	list: [
40
+		{
41
+			index: 'BRAND_ID', name: 'brandId',
42
+			label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
43
+			width: '10', fixed: false, align: 'center',
44
+			sortable: false, hidden: true
45
+		},
46
+		{
47
+			index: 'ITEM_CLASS_MNG_NO', name: 'itemClassMgntNo',
48
+			label: ITP_MSG_LOCALE.label.itemClassMgntNo, //품목분류명
49
+			width: '10', fixed: false, align: 'center',
50
+			sortable: false, hidden: true
51
+		},
52
+		{
53
+			index: 'ITEM_CLASS_NM', name: 'itemClassNm',
54
+			label: ITP_MSG_LOCALE.label.itemClassNm, //품목분류명
55
+			width: '10', fixed: false, align: 'center',
56
+			sortable: false, hidden: false
57
+		},
58
+		{
59
+			index: 'ITEM_CLASS_LEVEL1', name: 'itemClass1',
60
+			label: ITP_MSG_LOCALE.label.itemClassLevel1, //품목분류Level 1
61
+			width: '10', fixed: false, align: 'center',
62
+			sortable: false, hidden: false
63
+		},
64
+		{
65
+			index: 'ITEM_CLASS_LEVEL2', name: 'itemClass2',
66
+			label: ITP_MSG_LOCALE.label.itemClassLevel2, //품목분류Level 2
67
+			width: '13', fixed: false, align: 'center',
68
+			sortable: false, hidden: false
69
+		},
70
+		{
71
+			index: 'ITEM_CLASS_LEVEL3', name: 'itemClass3',
72
+			label: ITP_MSG_LOCALE.label.itemClassLevel3, //품목분류Level 3
73
+			width: '13', fixed: false, align: 'center',
74
+			sortable: false, hidden: false
75
+		},
76
+		{
77
+			index: 'ITEM_CLASS_LEVEL4', name: 'itemClass4',
78
+			label: ITP_MSG_LOCALE.label.itemClassLevel4, //품목분류Level 4
79
+			width: '6', fixed: false, align: 'center',
80
+			sortable: false, hidden: false
81
+		},
82
+		{
83
+			index: 'PRN_SEQ', name: 'prnSeq',
84
+			label: ITP_MSG_LOCALE.label.prnSeq, //출력순번
85
+			width: '15', fixed: false, align: 'center',
86
+			sortable: false, hidden: false
87
+		}
88
+	]
89
+};
90
+
91
+/*화면공통 Object*/
92
+let pageObj = {
93
+	init: function () {
94
+		this.brandInfo = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
95
+		this.ui.init();
96
+		this.event.init();
97
+	},
98
+	brandInfo: {},
99
+	ui: {
100
+		init: function () {
101
+			this.view();
102
+			this.grid();
103
+			this.ready();
104
+		},
105
+		view: function() {
106
+			// 버튼 권한설정
107
+			fn_proc_btn_auth('STINFO07010');
108
+
109
+			// 공통코드 표시
110
+			itemClassLevel.list(1, true);
111
+		},
112
+		grid: function() {
113
+			itp_fn_jqgrid_resize(STINFO07010_GRID_ID, STINFO07010_GRID_LIST, 'lg');
114
+			listObj.empty.init();
115
+			itp_fn_fire_window_resize();
116
+		},
117
+		ready: function() {
118
+			listObj.init();
119
+		}
120
+	},
121
+	event: {
122
+		init: function () {
123
+			this.button();
124
+		},
125
+		button: function () {
126
+			// 버튼 클릭 이벤트
127
+			$('button').each(function() {
128
+				var id = $(this).attr('id');
129
+				$(this).on('click', function() {
130
+					switch (id) {
131
+						case 'ITP_BTN_STINFO07010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
132
+						case 'ITP_BTN_STINFO07010_NEWREG'			: listObj.popup(); 				break;	// 신규등록 버튼
133
+						case 'ITP_BTN_STINFO07010_MODIFY'			: modifyObj.button.modify();	break;	// 수정 버튼
134
+						case 'ITP_BTN_STINFO07010_CANCELLIST'		: createObj.button.cancel(); 	break;	// 취소/목록 버튼
135
+						case 'ITP_BTN_STINFO07010_DELETE'			: 								break;	// 삭제 버튼
136
+						case 'ITP_BTN_STINFO07010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
137
+						case 'ITP_FORM_STINFO07010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
138
+						case 'ITP_BTN_STINFO07010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
139
+					}
140
+				});
141
+			});
142
+
143
+		}
144
+	},
145
+	switchScreen: function(mode) {
146
+		if(mode == 'LIST') { // 목록
147
+			$('#ITP_BTN_STINFO07010_MODIFY').hide();
148
+			$('#ITP_BTN_STINFO07010_CANCELLIST').hide();
149
+			$('#ITP_BTN_STINFO07010_DELETE').hide();
150
+			$('#ITP_BTN_STINFO07010_SAVE').hide();
151
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_SRH');
152
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_NEWREG');
153
+
154
+			$('#ITP_AJAX_STINFO07010_LIST_CONTAINER').show();
155
+			$('#ITP_AJAX_STINFO07010_DETAIL_CONTAINER').hide();
156
+			$('#ITP_AJAX_STINFO07010_VIEW_CONTAINER').hide();
157
+		} else if(mode == 'ADD') { // 등록
158
+			$('#ITP_BTN_STINFO07010_SRH').hide();
159
+			$('#ITP_BTN_STINFO07010_MODIFY').hide();
160
+			$('#ITP_BTN_STINFO07010_NEWREG').hide();
161
+			$('#ITP_BTN_STINFO07010_DELETE').hide();
162
+			$('#ITP_BTN_STINFO07010_RESET_PW').hide();
163
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_CANCELLIST');
164
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_SAVE');
165
+
166
+			$('#ITP_AJAX_STINFO07010_LIST_CONTAINER').hide();
167
+			$('#ITP_AJAX_STINFO07010_DETAIL_CONTAINER').show();
168
+			$('#ITP_AJAX_STINFO07010_VIEW_CONTAINER').hide();
169
+			$('#ITP_FORM_STINFO07010_DETAIL_STORE_ID').removeAttr('readonly');
170
+			$('#ITP_FORM_STINFO07010_DETAIL_DUP').removeAttr('disabled');
171
+
172
+			$.each($('input, select, checkbox, radio, textarea', '#ITP_FORM_STINFO07010_DETAIL'),function(k) {
173
+				$(this).val('');
174
+			});
175
+
176
+			$('#ITP_FORM_STINFO07010_DETAIL_VIEW_CD').val('C');
177
+			$('#ITP_FORM_STINFO07010_DETAIL .fnStoreNm').text('(자동부여)');
178
+		} else if(mode == 'MODIFY') { // 수정
179
+			$('#ITP_BTN_STINFO07010_SRH').hide();
180
+			$('#ITP_BTN_STINFO07010_MODIFY').hide();
181
+			$('#ITP_BTN_STINFO07010_NEWREG').hide();
182
+			$('#ITP_BTN_STINFO07010_DELETE').hide();
183
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_CANCELLIST');
184
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_SAVE');
185
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_RESET_PW');
186
+
187
+			$('#ITP_AJAX_STINFO07010_LIST_CONTAINER').hide();
188
+			$('#ITP_AJAX_STINFO07010_DETAIL_CONTAINER').show();
189
+			$('#ITP_AJAX_STINFO07010_VIEW_CONTAINER').hide();
190
+			$('#ITP_FORM_STINFO07010_DETAIL_STORE_ID').attr('readonly', true);
191
+			$('#ITP_FORM_STINFO07010_DETAIL_DUP').attr('disabled', true);
192
+			$('#ITP_FORM_STINFO07010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
193
+
194
+			$('#ITP_FORM_STINFO07010_DETAIL_SEARCH_AFFL_SHOP').hide();
195
+			$('#ITP_FORM_STINFO07010_DETAIL_DELETE_AFFL_SHOP').hide();
196
+		} else if(mode == 'VIEW') { // 보기
197
+			$('#ITP_BTN_STINFO07010_SRH').hide();
198
+			$('#ITP_BTN_STINFO07010_NEWREG').hide();
199
+			$('#ITP_BTN_STINFO07010_DELETE').hide();
200
+			$('#ITP_BTN_STINFO07010_SAVE').hide();
201
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_MODIFY');
202
+			fn_show_btn_auth('#ITP_BTN_STINFO07010_CANCELLIST');
203
+
204
+			$('#ITP_AJAX_STINFO07010_LIST_CONTAINER').hide();
205
+			$('#ITP_AJAX_STINFO07010_DETAIL_CONTAINER').hide();
206
+			$('#ITP_AJAX_STINFO07010_VIEW_CONTAINER').show();
207
+		}
208
+	}
209
+};
210
+
211
+/*목록화면 Object*/
212
+let listObj = {
213
+	init: function () {
214
+		this.form();
215
+		this.grid.init();
216
+	},
217
+	itp_STINFO07010_search: false,
218
+	button: {
219
+		search: function() {
220
+			listObj.itp_STINFO07010_search = true;
221
+			let param = $('#ITP_FORM_STINFO07010_SEARCH').serializeObject();
222
+			param.gridSize = $.jgrid.defaults.rowNum;
223
+			param.gridPage = $.jgrid.defaults.page;
224
+			$(STINFO07010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
225
+		},
226
+		create: function() {
227
+			if(pageObj.brandInfo && pageObj.brandInfo.brandId !== '') {
228
+				createObj.init();
229
+			}
230
+		}
231
+	},
232
+	form: function() {
233
+		$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS1').on('change', function() {
234
+			($(this).val() === '') ? itemClassLevel.clear(2, true): itemClassLevel.list(2, true);
235
+		});
236
+		$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS2').on('change', function() {
237
+			($(this).val() === '') ? itemClassLevel.clear(3, true): itemClassLevel.list(3, true);
238
+		});
239
+		$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS3').on('change', function() {
240
+			($(this).val() === '') ? itemClassLevel.clear(4, true): itemClassLevel.list(4, true);
241
+		});
242
+	},
243
+	empty: {
244
+		init: function() {
245
+			var _this = this;
246
+			this.push();
247
+			$(STINFO07010_GRID_EMPTY).on('click', function() {
248
+				_this.back();
249
+				_this.itp_STINFO07010_param.gridSize = $.jgrid.defaults.rowNum;
250
+				$(STINFO07010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_STINFO07010_param)}).trigger('reloadGrid');
251
+			});
252
+		},
253
+		itp_STINFO07010_param: {},
254
+		push: function() {
255
+			let param = $('#ITP_FORM_STINFO07010_SEARCH').serializeObject();
256
+			listObj.itp_STINFO07010_param = param;
257
+		},
258
+		back: function() {
259
+			$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS1').val(this.itp_STINFO07010_param.sitemClass1);
260
+			$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS2').val(this.itp_STINFO07010_param.sitemClass2);
261
+			$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS3').val(this.itp_STINFO07010_param.sitemClass3);
262
+			$('#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS4').val(this.itp_STINFO07010_param.sitemClass4);
263
+			$('#ITP_FORM_STINFO07010_SEARCH_ITEM_NM').val(this.itp_STINFO07010_param.sitemNm);
264
+		}
265
+	},
266
+	grid: {
267
+		init: function () {
268
+			// 데이터 없을때
269
+			listObj.empty.push();
270
+			this.search();
271
+		},
272
+		search: function() {
273
+			pageObj.switchScreen('LIST');
274
+			this.unload();
275
+			this.load();
276
+		},
277
+		load: function() {
278
+			let param = $('#ITP_FORM_STINFO07010_SEARCH').serializeObject();
279
+			param.gridSize = $.jgrid.defaults.rowNum;
280
+			param.sbrandId = pageObj.brandInfo.brandId;
281
+
282
+			var option = {
283
+				gridId: STINFO07010_GRID_ID,
284
+				colModel: gridColModel.list,
285
+				param: JSON.stringify(param),
286
+				url: DOMAIN + API_DETAIL_GRID_LIST,
287
+				pager: STINFO07010_GRID_PAGER,
288
+				multiselect: true,
289
+				onCellSelect: function(rowId, cellIdx, cellValue) {
290
+					var cm = $(this).jqGrid('getGridParam', 'colModel');
291
+					var colNm = cm[cellIdx].name;
292
+					if (colNm == 'itemClassNm') {
293
+						const selectVal = $(this).jqGrid('getCell', rowId, 'itemClassMgntNo');
294
+						const key = {brandId:pageObj.brandInfo.brandId, itemClassMgntNo: selectVal, viewCd: 'R'};
295
+						var param = $.param(key);
296
+						viewObj.init(param);
297
+					}
298
+				},
299
+				loadComplete: function(data) {
300
+					console.log(data);
301
+					// itp_fn_grid_load_complete(data, STINFO07010_GRID_ID, true, '', 'STINFO07010', listObj.itp_STINFO07010_search, listObj.empty, true, data.gridRecords, true);
302
+					itp_fn_grid_load_complete(data, STINFO07010_GRID_ID, true, undefined, 'STINFO07010', listObj.itp_STINFO07010_search, listObj.empty, true, data.gridRecords, false);
303
+					var ids = $(STINFO07010_GRID_ID).getDataIDs();
304
+					$.each(ids, function(idx, rowId) {
305
+						$(STINFO07010_GRID_ID).jqGrid('setCell', rowId, 'itemClassNm', '', ITP_GRID_COL_STYLE.link);
306
+					});
307
+				},
308
+				onPaging: function(action) {
309
+					itp_fn_grid_paging(STINFO07010_GRID_ID, action, param);
310
+				}
311
+			};
312
+			itp_fn_grid_make_remote(option);
313
+		},
314
+		clearData : function() {
315
+			$(STINFO07010_GRID_ID).jqGrid('clearGridData', true);
316
+			$(STINFO07010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
317
+			$(STINFO07010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
318
+			$(STINFO07010_GRID_EMPTY).show();
319
+		},
320
+		unload : function() {
321
+			$.jgrid.gridUnload(STINFO07010_GRID_ID);
322
+		}
323
+	},
324
+	popup: function(param) {
325
+		// 팝업
326
+		var popFn = function(rowDataPop) {
327
+			console.log(rowDataPop);
328
+		};
329
+		fn_call_popup('biz', 'BIZPOP_ITEM_CLASS_MANAGE', '#ITP_ASIDE', popFn, param, 'S');
330
+	}
331
+};
332
+
333
+/*수정화면 Object*/
334
+let modifyObj = {
335
+	init: function () {
336
+	},
337
+	button: {
338
+		modify: function (param) {
339
+			itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO07010_DETAIL');
340
+			const selectVal = $('#ITP_FORM_STINFO07010_VIEW_BRAND_UNIT_UNQ_NO').val();
341
+			const key = {brandId:pageObj.brandInfo.brandId, brandUnitUnqNo: selectVal, viewCd: 'R'};
342
+			var param = $.param(key);
343
+			modifyObj.load(param);
344
+		}
345
+	},
346
+	load: function(param) {
347
+		fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
348
+	},
349
+	callback: function (result) {
350
+		console.log(result);
351
+		pageObj.switchScreen('MODIFY');
352
+
353
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_VIEW_CD').val('U');
354
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_ITEM_ID').val(result.itemId);
355
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_BRAND_UNIT_UNQ_NO').val(result.brandUnitUnqNo);
356
+		$('#ITP_FORM_STINFO07010_DETAIL .fnBrandNm').text(result.brandId);
357
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_ST_CD').val(result.unitStCd);
358
+		// $('#ITP_FORM_STINFO07010_DETAIL .fnItemClassMgntNo').text(result.itemId);
359
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_ITEM_CLASS_MGNT_NO').val(result.itemClassMgntNo);
360
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_ITEM_NM').val(result.itemClassNm);
361
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_SPPLY_ID').val(result.spplyId);
362
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_SPPLY_NM').val(result.spplyNm);
363
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_SPPLY_ITEM_ID').val(result.spplyItemId);
364
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_CONT_STT_DT').val(result.contSttDt);
365
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_CONT_END_DT').val(result.contEndDt);
366
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_LEAD_TIME').val(result.leadTime);
367
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_UNIT').val(result.unit);
368
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_STDD_QYT').val(result.stddQty);
369
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_CURR').val(result.curr);
370
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_UNIT_AMT').val(result.unitAmt);
371
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_STORE_SALE_STDD_QTY').val(result.storeSaleStddQty);
372
+		$('#ITP_FORM_STINFO07010_DETAIL #ITP_FORM_STINFO07010_DETAIL_STORE_SALE_UNIT_AMT').val(result.storeSaleUnitAmt);
373
+		$('#ITP_FORM_STINFO07010_DETAIL .fnRegId').text(result.regId);
374
+		$('#ITP_FORM_STINFO07010_DETAIL .fnRegDt').text(result.regDt);
375
+		$('#ITP_FORM_STINFO07010_DETAIL .fnChgId').text(result.chgId);
376
+		$('#ITP_FORM_STINFO07010_DETAIL .fnChgDt').text(result.chgDt);
377
+		$.each(result.imageFileNoList, function(index, item) {
378
+			$('#ITP_FORM_STINFO07010_VIEW .ITEM_IMAGE').append('<img src=" + item.filePath +" />');
379
+		});
380
+	}
381
+};
382
+
383
+/*신규화면 Object*/
384
+let createObj = {
385
+	init: function () {
386
+		pageObj.switchScreen('ADD');
387
+		itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO07010_DETAIL');
388
+		$('#ITP_FORM_STINFO07010_DETAIL_BRAND_ID').val(pageObj.brandInfo.brandId);
389
+	},
390
+	button: {
391
+		cancel: function() {
392
+			listObj.grid.search();
393
+		},
394
+		save: function() {
395
+			const formId = '#ITP_FORM_STINFO07010_DETAIL';
396
+			itp_fn_form_clear_validate(null, formId);
397
+			var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
398
+			var vali_userStatCd = itp_fn_form_validate(formId, formId + '_USER_STAT_CD', ['empty'], undefined);
399
+			var vali_userNm = itp_fn_form_validate(formId, formId + '_USER_NM', ['empty'], undefined);
400
+			var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
401
+			var vali_email = itp_fn_form_validate(formId, formId + '_EMAIL', ['empty'], undefined);
402
+			var vali_userPw = true;
403
+			var vali_userPwConfirm = true;
404
+			if (vali_userId && vali_userStatCd && vali_userNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
405
+				if (ITP_FORM_STINFO07010_DETAIL_IS_DUPLICATE) {
406
+					itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
407
+				} else {
408
+					let param = $(formId).serializeObject();
409
+					//console.log(JSON.stringify(param));
410
+					var searhFn = function() {
411
+						ITP_FORM_STINFO07010_DETAIL_IS_WRITING = false;
412
+						listObj.grid.search();
413
+					};
414
+					fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
415
+				}
416
+			}
417
+		}
418
+	}
419
+};
420
+
421
+var itemClassLevel = {
422
+	level: 1,
423
+	keys: function() {
424
+		var keys = {sBrandId:pageObj.brandInfo.brandId, sItemLevel: this.level};
425
+		for(var i=1; i<this.level; i++) {
426
+			var key = 'sItemClass' + i;
427
+			var id = '#ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS' + i;
428
+			keys[key] = $(id + ' option:selected').val();
429
+		}
430
+		return keys;
431
+	},
432
+	list: function(level) {
433
+		this.level = level;
434
+		this.clear(level);
435
+		this.call( $.param(this.keys()));
436
+	},
437
+	call: function(param) {
438
+		fn_ajax_call(API_ITEM_CLASS_LEVEL, param, this.callback, 'GET');
439
+	},
440
+	callback: function(result) {
441
+		// console.log(result);
442
+		var id ='ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS' + itemClassLevel.level;
443
+		fn_make_select_item_class(result.searchList, id, true, '선택');
444
+	},
445
+	clear: function(level, isList) {
446
+		for(var i=level; i<5; i++) {
447
+			var id = 'ITP_FORM_STINFO07010_SEARCH_ITEM_CLASS' + i;
448
+			$('#' + id).find('option').remove();
449
+		}
450
+	}
451
+};