瀏覽代碼

창고관리

marseyes 2 年之前
父節點
當前提交
2239801b1d
共有 1 個文件被更改,包括 350 次插入0 次删除
  1. 350 0
      src/main/webapp/js/app/stockmng/ITP_STOCKMNG04010.js

+ 350 - 0
src/main/webapp/js/app/stockmng/ITP_STOCKMNG04010.js

@@ -0,0 +1,350 @@
1
+
2
+const STOCKMNG04010_GRID_ID = '#ITP_STOCKMNG04010_jqGrid';	
3
+const STOCKMNG04010_GRID_LIST = STOCKMNG04010_GRID_ID + '_list';
4
+const STOCKMNG04010_GRID_PAGER = STOCKMNG04010_GRID_ID + 'Pager';
5
+const STOCKMNG04010_GRID_EMPTY = STOCKMNG04010_GRID_ID + 'Empty';
6
+
7
+let ITP_FORM_STOCKMNG04010_IS_WRITING = false;
8
+let ITP_FORM_STOCKMNG04010_IS_DUPLICATE = false;
9
+let STOCKMNG04010_GRID_LAST_ROW_ID;
10
+let STOCKMNG04010_SCH_CODE_CD; //
11
+
12
+let CODE_CODE_SEARCH = '/api/code/code-search'; 
13
+let CODE_SAVE_CODE = '/api/code/save-code'; 
14
+let CODE_INFO_CODE = '/api/code/info-code'; 
15
+let CODE_CHECK_DUPLICATE = '/api/code/check-duplicate'; 
16
+let CODE_DETAIL_GRID_LIST = '/api/code/detail-grid-list'; 
17
+
18
+require(['config'], function() {
19
+	require([
20
+		'jquery'
21
+	], function($) {
22
+		
23
+		// 버튼 권한설정
24
+		fn_proc_btn_auth('STOCKMNG04010');
25
+		
26
+		// 공통코드 표시
27
+		fn_make_select(CODE_LIST, 'CODE_TP_CD', 'ITP_STOCKMNG04010_ADV_SRH_FORM_CODE_TP_CD', true, '전체');
28
+		fn_make_select(CODE_LIST, 'CODE_TP_CD', 'ITP_FORM_STOCKMNG04010_CODE_TYPE', true, '선택');		
29
+		fn_make_select(CODE_LIST, 'USE_YN', 'ITP_STOCKMNG04010_ADV_SRH_FORM_USE_YN', true, '전체');
30
+		fn_make_select(CODE_LIST, 'USE_YN', 'ITP_FORM_STOCKMNG04010_USE_YN', true, '선택');
31
+
32
+		itp_fn_STOCKMNG04010_search();
33
+		itp_fn_jqgrid_resize(STOCKMNG04010_GRID_ID, STOCKMNG04010_GRID_LIST, 'sm');
34
+		itp_fn_STOCKMNG04010_detail_grid.init();
35
+    	itp_fn_fire_window_resize();
36
+
37
+		$('#ITP_BTN_STOCKMNG04010_SRH').on('click', function() {
38
+			itp_fn_STOCKMNG04010_search();
39
+		});
40
+
41
+		$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER').on('click', '.list-group .list-group-item', function() {
42
+			const $this = $(this);
43
+			var itemFn = {
44
+				callBack: function() {
45
+					itp_fn_form_clear_validate(null, '#ITP_FORM_STOCKMNG04010_DETAIL');
46
+					$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER .list-group .list-group-item').removeClass('active');
47
+					$this.addClass('active');
48
+					const codeCd = $this.find('.itp_param_key').text();
49
+					itp_fn_STOCKMNG04010_detail(codeCd);
50
+				}
51
+			};
52
+			if (ITP_FORM_STOCKMNG04010_IS_WRITING || itp_fn_check_grid_is_writing(STOCKMNG04010_GRID_ID)) {
53
+				itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, itemFn, null);
54
+			} else {
55
+				itemFn.callBack();
56
+			}
57
+		});
58
+
59
+		$('#ITP_BTN_STOCKMNG04010_NEW').on('click', function() {
60
+			var newFn = {
61
+    			callBack: function(args) {
62
+					itp_fn_form_clear_validate(null, '#ITP_FORM_STOCKMNG04010_DETAIL');
63
+    				const item = $('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER .list-group .list-group-item');
64
+    				item.removeClass('active');
65
+
66
+					// 코드정보 초기화
67
+					$('#ITP_FORM_STOCKMNG04010_DETAIL input[name=viewCd]').val('C');
68
+					$('#ITP_FORM_STOCKMNG04010_CODE_CD').val('');
69
+					$('#ITP_FORM_STOCKMNG04010_CODE_NM_KR').val('');
70
+					$('#ITP_FORM_STOCKMNG04010_USE_YN').val('');
71
+					$('#ITP_FORM_STOCKMNG04010_CODE_TYPE').val('');
72
+					$('#ITP_FORM_STOCKMNG04010_CODE_CD').removeAttr('readonly');
73
+					$('#ITP_BTN_STOCKMNG04010_DUP').removeAttr('disabled');
74
+					
75
+					// 그리드 초기화
76
+					itp_fn_STOCKMNG04010_detail_grid.clearData();
77
+    			}
78
+    		};
79
+			if (ITP_FORM_STOCKMNG04010_IS_WRITING || itp_fn_check_grid_is_writing(STOCKMNG04010_GRID_ID)) {
80
+				itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, newFn, null);
81
+			} else {
82
+				newFn.callBack();
83
+			}
84
+		});
85
+
86
+		$('#ITP_BTN_STOCKMNG04010_SAVE').on('click', function() {
87
+			const formId = '#ITP_FORM_STOCKMNG04010';
88
+			itp_fn_form_clear_validate(null, formId + '_DETAIL');
89
+			var vali_codeCd = itp_fn_form_validate(formId + '_DETAIL', formId + '_CODE_CD', ['empty'], undefined);
90
+			var vali_useYn = itp_fn_form_validate(formId + '_DETAIL', formId + '_USE_YN', ['empty'], undefined);
91
+			var vali_codeNmKr = itp_fn_form_validate(formId + '_DETAIL', formId + '_CODE_NM_KR', ['empty'], undefined);
92
+			var vali_codeTypeCd = itp_fn_form_validate(formId + '_DETAIL', formId + '_CODE_TYPE', ['empty'], undefined);
93
+
94
+			if (vali_codeCd && vali_useYn && vali_codeNmKr && vali_codeTypeCd) {
95
+				if (ITP_FORM_STOCKMNG04010_IS_DUPLICATE) {
96
+					itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.code, formId + '_CODE_CD');
97
+				} else {
98
+					if (itp_fn_grid_validate_row(STOCKMNG04010_GRID_ID)) {
99
+						let gridInsertData = [];
100
+						let gridUpdateData = [];
101
+						let gridDeleteData = [];
102
+						const rowData = $(STOCKMNG04010_GRID_ID).getRowData();
103
+						const keyValue = $(formId + '_CODE_CD').val();
104
+						$.each(rowData, function(key, value) {
105
+							if (value.viewCd != 'R') {
106
+								value.codeCd = keyValue;
107
+								if (value.viewCd == 'C') {
108
+									gridInsertData.push(value);
109
+								} else if (value.viewCd == 'U') {
110
+									gridUpdateData.push(value);
111
+								} else if (value.viewCd == 'D') {
112
+									gridDeleteData.push(value);
113
+								}
114
+							}
115
+						});
116
+						let param = $(formId + '_DETAIL').serializeObject();
117
+						param.gridInsertData = gridInsertData;
118
+						param.gridUpdateData = gridUpdateData;
119
+						param.gridDeleteData = gridDeleteData;
120
+						//console.log(JSON.stringify(param)); 						
121
+						var searhFn = function() {
122
+							STOCKMNG04010_SCH_CODE_CD = keyValue;
123
+							ITP_FORM_STOCKMNG04010_IS_WRITING = false;
124
+							var keyword = {sCodeNm: $('#ITP_KEYWORD_STOCKMNG04010_INPUT').val()};
125
+							var param = $('#ITP_STOCKMNG04010_ADV_SRH_FORM').serialize() + '&' + $.param(keyword);
126
+							fn_ajax_call(CODE_CODE_SEARCH, param, itp_fn_STOCKMNG04010_search_callback, 'GET');
127
+						};
128
+						fn_ajax_call(CODE_SAVE_CODE, JSON.stringify(param), searhFn, 'POST');						
129
+					};
130
+				}
131
+			}
132
+		});
133
+	});
134
+});
135
+
136
+var itp_fn_STOCKMNG04010_search = function() {
137
+	var searhFn = {
138
+		callBack: function(args) {			
139
+			var sCodeNm = {sCodeNm: $('#ITP_KEYWORD_STOCKMNG04010_INPUT').val()};
140
+			var param = $('#ITP_STOCKMNG04010_ADV_SRH_FORM').serialize() + '&' + $.param(sCodeNm);						
141
+			fn_ajax_call(CODE_CODE_SEARCH, param, itp_fn_STOCKMNG04010_search_callback, 'GET');
142
+		}
143
+	};
144
+	if (ITP_FORM_STOCKMNG04010_IS_WRITING || itp_fn_check_grid_is_writing(STOCKMNG04010_GRID_ID)) {
145
+		itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, searhFn, null);
146
+	} else {
147
+		searhFn.callBack();
148
+	}
149
+};
150
+
151
+var itp_fn_STOCKMNG04010_search_callback = function(result) {
152
+	
153
+	$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group').empty(); // 초기화
154
+	
155
+	$.each(result.searchList, function(index, item) {
156
+		$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group').append($('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER_ROWCOPY').val());
157
+		$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group > .list-group-item:last').find('.fnCodeCd').text(item.codeCd);
158
+		$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group > .list-group-item:last').find('.fnCodeNm').text(item.codeNm);
159
+		$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group > .list-group-item:last').find('.fnCodeTpNm').text(item.codeTpNm);
160
+		if(STOCKMNG04010_SCH_CODE_CD && STOCKMNG04010_SCH_CODE_CD == item.codeCd) {
161
+			$('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER > .list-group > .list-group-item:last').addClass('active');	
162
+		}		
163
+	});
164
+	
165
+	// 첫번째 데이터 상세조회
166
+	if($('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER .list-group .list-group-item').length > 0) {
167
+		if(STOCKMNG04010_SCH_CODE_CD && STOCKMNG04010_SCH_CODE_CD !== undefined) {
168
+			itp_fn_STOCKMNG04010_detail(STOCKMNG04010_SCH_CODE_CD);	
169
+		} else {
170
+			const item = $('#ITP_AJAX_STOCKMNG04010_SRH_CONTAINER .list-group .list-group-item').first();
171
+			const codeCd = item.find('.itp_param_key').text();
172
+			item.addClass('active');
173
+			itp_fn_STOCKMNG04010_detail(codeCd);	
174
+		}	
175
+	}	
176
+};
177
+
178
+var itp_fn_STOCKMNG04010_detail = function(key) {
179
+	var codeCd  = {codeCd: key};
180
+	var param = $.param(codeCd);						
181
+	fn_ajax_call(CODE_INFO_CODE, param, itp_fn_STOCKMNG04010_detail_callback, 'GET');	
182
+};
183
+
184
+var itp_fn_STOCKMNG04010_detail_callback = function(result) {
185
+	// 코드정보 지정
186
+	$('#ITP_FORM_STOCKMNG04010_DETAIL input[name=viewCd]').val('U');
187
+	$('#ITP_FORM_STOCKMNG04010_CODE_CD').val(result.codeCd);
188
+	$('#ITP_FORM_STOCKMNG04010_CODE_NM_KR').val(result.codeNm);
189
+	$('#ITP_FORM_STOCKMNG04010_USE_YN').val(result.useYn);
190
+	$('#ITP_FORM_STOCKMNG04010_CODE_TYPE').val(result.codeTpCd);
191
+	$('#ITP_FORM_STOCKMNG04010_CODE_CD').attr('readonly', true);
192
+	$('#ITP_BTN_STOCKMNG04010_DUP').attr('disabled', true);
193
+
194
+	// 코드 상세리스트 조회	
195
+	const key = {codeCd: result.codeCd, gridSize: $.jgrid.defaults.rowNum};
196
+	itp_fn_STOCKMNG04010_detail_grid.unload();
197
+	itp_fn_STOCKMNG04010_detail_grid.callBack(key);
198
+};
199
+		
200
+var itp_fn_STOCKMNG04010_detail_grid = {
201
+	init: function() {
202
+		ITP_FORM_STOCKMNG04010_IS_WRITING = false;
203
+		ITP_FORM_STOCKMNG04010_IS_DUPLICATE = false;
204
+		
205
+		$('#ITP_FORM_STOCKMNG04010_DETAIL').on('change', 'input, select, textarea', function() {
206
+    		if (!ITP_FORM_STOCKMNG04010_IS_WRITING) {
207
+    			ITP_FORM_STOCKMNG04010_IS_WRITING = true;
208
+    		}
209
+    		if ($(this).attr('id') == 'ITP_FORM_STOCKMNG04010_CODE_CD') {
210
+				ITP_FORM_STOCKMNG04010_IS_DUPLICATE = true;
211
+			}
212
+    	});
213
+
214
+		$('body').on('click', function(e) {
215
+			var gridId = STOCKMNG04010_GRID_ID.replace('#', '');
216
+			itp_fn_grid_reset_selection(e, STOCKMNG04010_GRID_LAST_ROW_ID, gridId, 'STOCKMNG04010');
217
+		});
218
+
219
+		$('#ITP_BTN_STOCKMNG04010_DUP').on('click', function() {
220
+			const formId = '#ITP_FORM_STOCKMNG04010';
221
+			itp_fn_form_clear_validate(null, formId + '_DETAIL');
222
+			var vali_codeCd = itp_fn_form_validate(formId + '_DETAIL', formId + '_CODE_CD', ['empty'], undefined);
223
+			if (vali_codeCd) {
224
+				var dupFn = function(result) {
225
+					if (result.code == 'N') {
226
+						ITP_FORM_STOCKMNG04010_IS_DUPLICATE = false;
227
+					} else {
228
+						ITP_FORM_STOCKMNG04010_IS_DUPLICATE = true;
229
+					}
230
+				};
231
+				const key = {'codeCd':  $(formId + '_CODE_CD').val()};
232
+				const param = $.param(key);
233
+				fn_ajax_call(CODE_CHECK_DUPLICATE, param, dupFn, 'GET');
234
+			}
235
+		});
236
+
237
+		$('#ITP_BTN_STOCKMNG04010_ADDROW').on('click', function() {
238
+			STOCKMNG04010_GRID_LAST_ROW_ID = itp_fn_grid_add_row(STOCKMNG04010_GRID_ID, undefined, ['codeDtlCd'], 'STOCKMNG04010');
239
+		});
240
+
241
+		$('#ITP_BTN_STOCKMNG04010_DELROW').on('click', function() {
242
+		    itp_fn_grid_del_row(STOCKMNG04010_GRID_ID);
243
+		});
244
+	},
245
+	callBack: function(args) {
246
+		$(STOCKMNG04010_GRID_ID).jqGrid({
247
+			colModel: [
248
+				{
249
+					index: 'VIEW_CD', name: 'viewCd',
250
+					label: ITP_MSG_LOCALE.label.viewCd,
251
+					width: '10', fixed: false, align: 'center',
252
+					sortable: false, hidden: true
253
+				},
254
+				{
255
+					index: 'CODE_CD', name: 'codeCd',
256
+					label: ITP_MSG_LOCALE.label.code,
257
+					width: '10', fixed: false, align: 'center',
258
+					sortable: false, hidden: true
259
+				},
260
+				{
261
+					index: 'CODE_DTL_CD', name: 'codeDtlCd',
262
+					label: ITP_MSG_LOCALE.label.codeDtl,
263
+					width: '10', fixed: false, align: 'center',
264
+					sortable: false, editable: false, edittype: 'text',
265
+					editrules: {required: true},
266
+					editoptions: {maxlength: 10}
267
+				},
268
+				{
269
+					index: 'VIEW_NUM', name: 'viewNum',
270
+					label: ITP_MSG_LOCALE.label.orderNo,
271
+					width: '10', fixed: false, align: 'center',
272
+					sortable: true, editable: true, edittype: 'text',
273
+					editrules: {required: true, number: true}
274
+				},
275
+				{
276
+					index: 'CODE_DTL_NM', name: 'codeDtlNm',
277
+					label: ITP_MSG_LOCALE.label.codeNmKo,
278
+					width: '30', fixed: false, align: 'center',
279
+					sortable: false, editable: true, edittype: 'text',
280
+					editrules: {required: true},
281
+					editoptions: {maxlength: 40}
282
+				},
283
+				{
284
+					index: 'CODE_DESC', name: 'codeDesc',
285
+					label: ITP_MSG_LOCALE.label.remark,
286
+					width: '20', fixed: false, align: 'center',
287
+					sortable: false, editable: true, edittype: 'text'
288
+				},
289
+				{
290
+					index: 'USE_YN', name: 'useYn',
291
+					label: ITP_MSG_LOCALE.label.useYn,
292
+					width: '10', fixed: false, align: 'center',
293
+					sortable: false, editable: true, formatter: 'checkbox', edittype: 'checkbox',
294
+					editoptions: {value: 'Y:N', defaultValue: 'Y'},
295
+					editrules: {required: true}
296
+				}
297
+			],
298
+			loadBeforeSend: function(jqXHR) {
299
+			    jqXHR.setRequestHeader('X-AUTH-TOKEN', CONN_KEY);
300
+			},
301
+			postData: JSON.stringify(args),
302
+			url: DOMAIN + CODE_DETAIL_GRID_LIST,
303
+			pager: STOCKMNG04010_GRID_PAGER,
304
+			onCellSelect: function(rowId, cellIdx, cellValue) {
305
+				STOCKMNG04010_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowId, cellIdx, STOCKMNG04010_GRID_LAST_ROW_ID, STOCKMNG04010_GRID_ID, ['codeDtlCd']);
306
+		   	},
307
+			loadComplete: function(data) {
308
+				itp_fn_grid_load_complete(data, STOCKMNG04010_GRID_ID, true, undefined, 'STOCKMNG04010');
309
+		    },
310
+		    loadError: function(jqXHR, textStatus, errorThrown) {
311
+		    	itp_fn_grid_load_error(jqXHR, textStatus, errorThrown);
312
+		    },
313
+		    onPaging: function(action) {
314
+		    	var pagingFn = {
315
+	    			callBack: function(args) {
316
+	    				$(args).trigger('reloadGrid');
317
+	    			}
318
+	    		};
319
+		    	if (itp_fn_check_grid_is_writing(STOCKMNG04010_GRID_ID)) {
320
+		    		itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, pagingFn, STOCKMNG04010_GRID_ID);
321
+		    		return 'stop';
322
+		    	} else {
323
+		    		itp_fn_grid_paging(STOCKMNG04010_GRID_ID, action, args);
324
+		    	}
325
+		    },
326
+		    onSortCol: function(index, columnIndex, sortOrder) {
327
+		    	var sortingFn = {
328
+	    			callBack: function(args) {
329
+	    				$(args).trigger('reloadGrid');
330
+	    			}
331
+	    		};
332
+		    	if (itp_fn_check_grid_is_writing(STOCKMNG04010_GRID_ID)) {
333
+		    		itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, sortingFn, STOCKMNG04010_GRID_ID);
334
+		    		return 'stop';
335
+		    	} else {
336
+		    		itp_fn_grid_sorting(STOCKMNG04010_GRID_ID, index, sortOrder);
337
+		    	}
338
+		    }
339
+		}).navGrid(STOCKMNG04010_GRID_PAGER, ITP_GRID_NAV_DEFAULTS.navGrid);
340
+	},
341
+	clearData : function() {
342
+		$(STOCKMNG04010_GRID_ID).jqGrid('clearGridData', true);
343
+		$(STOCKMNG04010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
344
+		$(STOCKMNG04010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
345
+		$(STOCKMNG04010_GRID_EMPTY).show();
346
+	}, 
347
+	unload : function() {
348
+		$.jgrid.gridUnload(STOCKMNG04010_GRID_ID); 
349
+	}
350
+};