浏览代码

메뉴명 수정

whakdo963 2 年之前
父节点
当前提交
1b2feaef0b

+ 50 - 37
bin/src/main/webapp/app/oper/OPER04010.html

@@ -36,7 +36,7 @@
36 36
 										</div>
37 37
 										<div class="col-xs-2 itp_ip itp_noMar">
38 38
 											<select id="ITP_FORM_OPER04010_SEARCH_USE_ST_CD" class="form-control itp_input" name="suseStatCd"></select>
39
-										</div>									
39
+										</div>
40 40
 									</div>
41 41
 								</form>
42 42
 							</div>
@@ -62,98 +62,111 @@
62 62
 									<h4 class="itp_form_tit">영업담당자정보</h4>
63 63
 									<div class="itp_form_in">
64 64
 										<div class="form-group">
65
-											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
65
+											<label class="col-xs-2 itp_lb">영업담당자ID</label>
66 66
 											<div class="col-xs-4 itp_ip">
67
-												<div class="col-xs-5 itp_in">
68
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_NM" class="form-control itp_input" name="salesUserNm" value="" maxlength="40">
67
+												<div class="col-xs-6 itp_in">
68
+													<div class="input-group">
69
+														<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_ID" class="form-control itp_input" name="saleMgrId" value="" maxlength="10" >
70
+														<span class="input-group-btn">
71
+														<button id="ITP_FORM_OPER04010_DETAIL_DUP" class="btn btn-default btn-sm itp_btn SHOW" type="button" disabled><i class="glyphicon glyphicon-ok"></i></button>
72
+													</span>
73
+													</div>
69 74
 												</div>
70 75
 											</div>
71 76
 											<label class="col-xs-2 itp_lb">상태(*)</label>
72 77
 											<div class="col-xs-4 itp_ip">
73 78
 												<div class="col-xs-5 itp_in">
74
-													<select id="ITP_FORM_OPER04010_DETAIL_USE_STAT_CD" class="form-control itp_input" name="useStatCd"></select>
79
+													<select id="ITP_FORM_OPER04010_DETAIL_USE_STAT_CD" class="form-control itp_input" name="stCd"></select>
75 80
 												</div>
76 81
 											</div>
77 82
 										</div>
78 83
 										<div class="form-group">
79
-											<label class="col-xs-2 itp_lb">영업담당자ID</label>
84
+											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
80 85
 											<div class="col-xs-4 itp_ip">
81
-												<div class="col-xs-6 itp_in">
82
-													<div class="input-group">
83
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_ID" class="form-control itp_input" name="salesUserId" value="" maxlength="10" >
84
-													<span class="input-group-btn">
85
-														<button id="ITP_FORM_OPER04010_DETAIL_DUP" class="btn btn-default btn-sm itp_btn SHOW" type="button" disabled><i class="glyphicon glyphicon-ok"></i></button>
86
-													</span>
87
-													</div>
86
+												<div class="col-xs-5 itp_in">
87
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_NM" class="form-control itp_input" name="saleMgrNm" value="" maxlength="40">
88 88
 												</div>
89 89
 											</div>
90 90
 											<label class="col-xs-2 itp_lb">영업타입</label>
91 91
 											<div class="col-xs-4 itp_ip">
92 92
 												<div class="col-xs-5 itp_in">
93
-													<select id="ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD" class="form-control itp_input" name="salesTypeCd"></select>
93
+													<select id="ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD" class="form-control itp_input" name="saleType"></select>
94 94
 												</div>
95 95
 											</div>
96 96
 										</div>
97 97
 										
98 98
 										<div class="form-group">
99
-											<label class="col-xs-2 itp_lb">비밀번호(초기-전화번호)</label>
99
+											<label class="col-xs-2 itp_lb">전화번호(*)</label>
100 100
 											<div class="col-xs-4 itp_ip">
101 101
 												<div class="col-xs-5 itp_in">
102
-													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW" class="form-control itp_input" name="userPw" value="" disabled>
102
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_TEL_NO" class="form-control itp_input" name="rprstTelNo" value="">
103 103
 												</div>
104
-												<button type="button" id="ITP_BTN_OPER04010_RESET_PW" class="btn btn-danger btn-xs PWC" style="margin: 3px 0px 0px 3px;">비밀번호 초기화</button>
105 104
 											</div>
106
-											<label class="col-xs-2 itp_lb">대표연락처(*)</label>
105
+											<label class="col-xs-2 itp_lb">FAX</label>
107 106
 											<div class="col-xs-4 itp_ip">
108 107
 												<div class="col-xs-5 itp_in">
109
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_TEL_NO" class="form-control itp_input" name="telNo" value="">
108
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_FAX_NO" class="form-control itp_input" name="rprstFaxNo" value="">
110 109
 												</div>
111
-											</div>		
110
+											</div>
112 111
 										</div>
113 112
 										<div class="form-group">
114
-											<label class="col-xs-2 itp_lb">FAX</label>
113
+											<label class="col-xs-2 itp_lb">비밀번호(*)</label>
115 114
 											<div class="col-xs-4 itp_ip">
116 115
 												<div class="col-xs-5 itp_in">
117
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_FAX_NO" class="form-control itp_input" name="faxNo" value="">
116
+													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW" class="form-control itp_input" name="pswd" value="">
118 117
 												</div>
118
+												<button type="button" id="ITP_BTN_OPER04010_RESET_PW" class="btn btn-danger btn-xs PWC" style="margin: 3px 0px 0px 3px;">비밀번호 초기화</button>
119 119
 											</div>
120 120
 											<label class="col-xs-2 itp_lb">이메일(*)</label>
121 121
 											<div class="col-xs-4 itp_ip">
122 122
 												<div class="col-xs-5 itp_in">
123
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_EMAIL" class="form-control itp_input" name="email" value="">
123
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_EMAIL" class="form-control itp_input" name="rprstEmai" value="">
124 124
 												</div>
125 125
 											</div>											
126
-										</div>					
126
+										</div>
127
+										<div class="form-group">
128
+											<label class="col-xs-2 itp_lb">비밀번호 확인</label>
129
+											<div class="col-xs-4 itp_ip">
130
+												<div class="col-xs-5 itp_in">
131
+													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW_CONFIRM" class="form-control itp_input" value="">
132
+												</div>
133
+											</div>
134
+											<label class="col-xs-2 itp_lb"></label>
135
+											<div class="col-xs-4 itp_ip">
136
+												<div class="col-xs-5 itp_in">
137
+												</div>
138
+											</div>
139
+										</div>
127 140
 									</div>									
128 141
 									<div class="itp_form_in">
129
-										<div class="form-group">
142
+										<div class="form-group border">
130 143
 											<label class="col-xs-2 itp_lb">주소(*)</label>
131 144
 											<div class="col-xs-10 itp_ip">
132 145
 												<div class="col-xs-1 itp_in">
133
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipno" value="" maxlength="6" readonly placeholder="우편번호">													
146
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipNo" value="" maxlength="6" readonly placeholder="우편번호">
134 147
 												</div>
135 148
 												<div class="col-xs-1 itp_in">
136 149
 												<button type="button" id="ITP_FORM_OPER04010_DETAIL_ADRES_SCH" class="btn btn-primary btn-xs SHOW" style="margin: 3px 0px 0px 3px;">&nbsp;&nbsp;주소검색&nbsp;&nbsp;</button>
137 150
 												</div>
138 151
 												<div class="col-xs-4 itp_in" style="margin-right: 5px;">
139
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES" class="form-control itp_input" name="adres" value="" readonly placeholder="기본주소">													
152
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES" class="form-control itp_input" name="addr1" value="" readonly placeholder="기본주소">
140 153
 												</div>
141 154
 												<div class="col-xs-4 itp_in">
142
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES_DTL" class="form-control itp_input" name="adresDtl" value="" placeholder="상세주소">													
155
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES_DTL" class="form-control itp_input" name="addr2" value="" placeholder="상세주소">
143 156
 												</div>
144 157
 												
145 158
 												<!-- 주소 맵 -->
146 159
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS" value="" />
147 160
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS" value="" />
148
-												<input type="hidden" name="salesUserLat" id="ITP_FORM_OPER04010_DETAIL_LAT" value="" />
149
-												<input type="hidden" name="salesUserLng" id="ITP_FORM_OPER04010_DETAIL_LNG" value="" />
161
+												<input type="hidden" name="latX" id="ITP_FORM_OPER04010_DETAIL_LAT" value="" />
162
+												<input type="hidden" name="longY" id="ITP_FORM_OPER04010_DETAIL_LNG" value="" />
150 163
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_HJ_DONG" value="" />
151 164
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_BJ_DONG" value="" />
152 165
 												<div id="ITP_FORM_OPER04010_DETAIL_MAP" style="width:700px; height:400px; margin-top:35px;"></div>
153 166
 											</div>
154 167
 										</div>
155 168
 									</div>
156
-									<div class="itp_form_in">
169
+									<div class="itp_form_in itp_modify_dt">
157 170
 										<div class="form-group border">
158 171
 											<label class="col-xs-2 itp_lb">등록일시</label>
159 172
 											<div class="col-xs-4 itp_ip">
@@ -175,15 +188,15 @@
175 188
 						<div class="col-xs-12">
176 189
 							<form id="ITP_FORM_OPER04010_VIEW" class="form-horizontal">
177 190
 								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_VIEW_CD" name="viewCd" value="R">
178
-								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_SALES_USER_ID" name="salesUserId" value="">
191
+								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_SALE_MGR_ID" name="saleMgrId" value="">
179 192
 					
180 193
 								<section class="itp_form_sec">
181 194
 									<h4 class="itp_form_tit">영업담당자정보</h4>
182 195
 									<div class="itp_form_in">
183 196
 										<div class="form-group">
184
-											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
197
+											<label class="col-xs-2 itp_lb">영업담당자ID</label>
185 198
 											<div class="col-xs-4 itp_ip">
186
-												<div class="col-xs-5 itp_in fnSalesUserNm"></div>
199
+												<div class="col-xs-5 itp_in fnSalesUserId"></div>
187 200
 											</div>
188 201
 											<label class="col-xs-2 itp_lb">상태</label>
189 202
 											<div class="col-xs-4 itp_ip">
@@ -191,11 +204,11 @@
191 204
 											</div>
192 205
 										</div>
193 206
 										<div class="form-group">
194
-											<label class="col-xs-2 itp_lb">영업담당자ID</label>
207
+											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
195 208
 											<div class="col-xs-4 itp_ip">
196
-												<div class="col-xs-5 itp_in fnSalesUserId"></div>
209
+												<div class="col-xs-5 itp_in fnSalesUserNm"></div>
197 210
 											</div>
198
-											<label class="col-xs-2 itp_lb">형태</label>
211
+											<label class="col-xs-2 itp_lb">영업타입</label>
199 212
 											<div class="col-xs-4 itp_ip">
200 213
 												<div class="col-xs-5 itp_in fnSalesTypeNm"></div>
201 214
 											</div>

+ 1 - 1
bin/src/main/webapp/app/stinfo/STINFO01010.html

@@ -29,7 +29,7 @@
29 29
 											</select>
30 30
 										</div>
31 31
 										<div class="col-xs-6 itp_ip">
32
-											<input type="text" id="ITP_FORM_STINFO01010_SEARCH_BRAND_NM" class="form-control itp_input" name="brandNm" placeholder="브랜드명" />
32
+											<input type="text" id="ITP_FORM_STINFO01010_SEARCH_BRAND_NM" class="form-control itp_input" name="sbrandNm" placeholder="브랜드명" />
33 33
 										</div>
34 34
 									</div>
35 35
 								</form>

+ 1 - 1
bin/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="ST_CD">
22
+											<select id="ITP_FORM_STINFO04010_SERVICE_ST_CD" class="form-control itp_input" name="serviceStCd">
23 23
 											</select>	
24 24
 										</div>
25 25
 										<div class="col-xs-2 itp_ip itp_noMar">

+ 569 - 0
bin/src/main/webapp/js/app/oper/ITP_OPER04010.js

@@ -0,0 +1,569 @@
1
+/********************************************************
2
+ --------------------------------------------------------
3
+ - Object 목록								            -
4
+ --------------------------------------------------------
5
+ * let kakaoMap = {}		: kakaoMap Object			*
6
+ * const gridColModel = {}	: 화면 Grid Object			*
7
+ * let pageObj = {}			: 화면공통 Object			*
8
+ * let listObj = {}			: 목록화면 Object			*
9
+ * let viewObj = {}			: 상세화면 Object			*
10
+ * let modifyObj = {}		: 수정화면 Object			*
11
+ * let createObj = {}		: 신규화면 Object			*
12
+ *******************************************************/
13
+
14
+/*화면 변수*/
15
+const OPER04010_GRID_ID     = '#ITP_OPER04010_jqGrid';
16
+const OPER04010_GRID_LIST   = '#ITP_OPER04010_jqGrid_list';
17
+const OPER04010_GRID_PAGER  = '#ITP_OPER04010_jqGridPager';
18
+const OPER04010_GRID_EMPTY  = '#ITP_OPER04010_jqGridEmpty';
19
+
20
+let ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = false;
21
+let ITP_FORM_OPER04010_DETAIL_IS_WRITING = false;
22
+
23
+/*API URL*/
24
+let SALES_USER_GRID_LIST        = '/api/srep/detail-grid-list';
25
+let SALES_USER_INFO             = '/api/srep/info-salemgr';
26
+let SALES_USER_SAVE             = '/api/srep/save-salemgr';
27
+let SALES_USER_CHECK_DUPLICATE  = '/api/srep/check-duplicate';
28
+let USER_INTI_USERPW            = '/api/srep/inti-salemgrpw';
29
+
30
+let kakaoMap = {
31
+    init: function(id, locate) {
32
+        this.load(id, locate);
33
+    },
34
+    geocoder: null,
35
+    schDetailAddrFromCoords: function(coords, callback) {
36
+        // 좌표로 법정동 상세 주소 정보를 요청합니다
37
+        if(this.geocoder) {
38
+            this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
39
+        }
40
+    },
41
+    getMap: function(id) {
42
+        var mapContainer = document.getElementById(id), // 지도를 표시할 div
43
+            mapOption = {
44
+                center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
45
+                level: 3, // 지도의 확대 레벨
46
+                mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
47
+            };
48
+
49
+        // 지도를 생성한다
50
+        var map = new kakao.maps.Map(mapContainer, mapOption);
51
+
52
+        // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
53
+        map.setZoomable(false);
54
+
55
+        // 지도에 확대 축소 컨트롤을 생성한다
56
+        //var zoomControl = new kakao.maps.ZoomControl();
57
+
58
+        // 지도의 우측에 확대 축소 컨트롤을 추가한다
59
+        //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
60
+
61
+        return map;
62
+    },
63
+    marker: function(map, coords) {
64
+        // 지도에 마커를 생성하고 표시한다
65
+        marker = new kakao.maps.Marker({
66
+            position: coords, // 마커의 좌표
67
+            map: map // 마커를 표시할 지도 객체
68
+        });
69
+    },
70
+    load: function(id, locate) {
71
+        var _this = this;
72
+        kakao.maps.load(function() {
73
+            var map = _this.getMap(id);
74
+            // 주소-좌표 변환 객체를 생성합니다
75
+            _this.geocoder = new kakao.maps.services.Geocoder();
76
+            if( !locate || locate.length == 0 ) {
77
+                // 지도에 마커를 생성하고 표시한다
78
+                _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
79
+            } else {
80
+                // 주소로 좌표를 검색합니다
81
+                _this.geocoder.addressSearch(locate, function(result, status) {
82
+                    // 정상적으로 검색이 완료됐으면
83
+                    if (status === kakao.maps.services.Status.OK) {
84
+
85
+                        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
86
+                        if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
87
+                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = result[0].y;
88
+                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = result[0].x;
89
+                        }
90
+
91
+                        // 결과값으로 받은 위치를 마커로 표시합니다
92
+                        _this.marker(map, coords);
93
+
94
+                        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
95
+                        map.setCenter(coords);
96
+                    } else {
97
+                        _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
98
+                    }
99
+                });
100
+            }
101
+
102
+            if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
103
+                _this.listener.drag(map);
104
+            }
105
+        });
106
+    },
107
+    listener: {
108
+        drag: function(map) {
109
+            var _this = this;
110
+            // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
111
+            kakao.maps.event.addListener(map, 'drag', function () {
112
+                kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
113
+                    if (status === kakao.maps.services.Status.OK) {
114
+
115
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
116
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
117
+                        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();
118
+                        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() ;
119
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = map.getCenter().getLat();
120
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = map.getCenter().getLng();
121
+
122
+                        // 마커를 클릭한 위치에 표시합니다
123
+                        marker.setPosition(map.getCenter());
124
+                        marker.setMap(map);
125
+                    }
126
+                });
127
+                /* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
128
+                console.log(message); */
129
+            });
130
+        }
131
+    }
132
+};
133
+
134
+/*화면 Grid Object*/
135
+const gridColModel = {
136
+    list: [
137
+        {
138
+            index: 'SALE_MGR_ID', name: 'saleMgrId',
139
+            label: '영업담당자ID',
140
+            width: '6', fixed: false, align: 'center',
141
+            sortable: false, hidden: false
142
+        },
143
+        {
144
+            index: 'SALE_MGR_NM', name: 'saleMgrNm',
145
+            label: '영업담당자명',
146
+            width: '10', fixed: false, align: 'center',
147
+            sortable: false, hidden: false
148
+        },
149
+        {
150
+            index: 'SALES_TYPE_NM', name: 'salesTypeNm',
151
+            label: '영업타입',
152
+            width: '6', fixed: false, align: 'center',
153
+            sortable: false, hidden: false
154
+        },
155
+        {
156
+            index: 'ST_NM', name: 'stNm',
157
+            label: '상태',
158
+            width: '6', fixed: false, align: 'center',
159
+            sortable: false, hidden: false
160
+        },
161
+        {
162
+            index: 'REG_DT', name: 'regDt',
163
+            label: '가입일자',
164
+            width: '8', fixed: false, align: 'center',
165
+            sortable: false, hidden: false
166
+        }
167
+    ]
168
+};
169
+
170
+require(['config'], function() {
171
+    require([
172
+        'kakao.postcode',
173
+        'kakao.maps'
174
+    ], function($) {
175
+        pageObj.init();
176
+    });
177
+});
178
+
179
+/*화면공통 Object*/
180
+let pageObj = {
181
+    init: function () {
182
+        this.ui.init();
183
+        this.event.init();
184
+    },
185
+    ui: {
186
+        init: function () {
187
+            this.view();
188
+            this.grid();
189
+            this.ready();
190
+        },
191
+        view: function() {
192
+            // 버튼 권한설정
193
+            fn_proc_btn_auth('OPER04010');
194
+            // 공통코드 표시
195
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_OPER04010_SEARCH_USE_STAT_CD');
196
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_OPER04010_DETAIL_USE_STAT_CD', true, '선택');
197
+            fn_make_select(CODE_LIST, 'SALE_TYPE', 'ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD', true, '선택');
198
+
199
+            // 조회일자 지정
200
+            $('#ITP_TAB_OPER04010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
201
+        },
202
+        grid: function() {
203
+            itp_fn_jqgrid_resize(OPER04010_GRID_ID, OPER04010_GRID_LIST, 'lg');
204
+            listObj.empty.init();
205
+            itp_fn_fire_window_resize();
206
+        },
207
+        ready: function() {
208
+            listObj.init();
209
+        }
210
+    },
211
+    event: {
212
+        init: function () {
213
+            this.button();
214
+        },
215
+        button: function () {
216
+            // 버튼 클릭 이벤트
217
+            $('button').each(function() {
218
+                var id = $(this).attr('id');
219
+                $(this).on('click', function() {
220
+                    switch (id) {
221
+                        case 'ITP_BTN_OPER04010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
222
+                        case 'ITP_BTN_OPER04010_NEWREG'				: listObj.button.create(); 		break;	// 신규등록 버튼
223
+                        case 'ITP_BTN_OPER04010_MODIFY'				: modifyObj.button.modify();	break;	// 수정 버튼
224
+                        case 'ITP_BTN_OPER04010_CANCELLIST'			: listObj.search(); 	        break;	// 취소/목록 버튼
225
+                        case 'ITP_BTN_OPER04010_DELETE'				: 								break;	// 삭제 버튼
226
+                        case 'ITP_BTN_OPER04010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
227
+                        case 'ITP_BTN_OPER04010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
228
+                        case 'ITP_FORM_OPER04010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
229
+                        case 'ITP_FORM_OPER04010_DETAIL_ADRES_SCH'	: createObj.button.address();	break;	// 신규등록 주소 찾기
230
+                    }
231
+                });
232
+            });
233
+        }
234
+    },
235
+    switchScreen: function(mode) {
236
+        if(mode == 'LIST') { // 목록
237
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
238
+            $('#ITP_BTN_OPER04010_CANCELLIST').hide();
239
+            $('#ITP_BTN_OPER04010_DELETE').hide();
240
+            $('#ITP_BTN_OPER04010_SAVE').hide();
241
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SRH');
242
+            fn_show_btn_auth('#ITP_BTN_OPER04010_NEWREG');
243
+
244
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').show();
245
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').hide();
246
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
247
+        } else if(mode == 'ADD') { // 등록
248
+            ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = true;
249
+
250
+            $('#ITP_BTN_OPER04010_SRH').hide();
251
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
252
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
253
+            $('#ITP_BTN_OPER04010_DELETE').hide();
254
+            $('#ITP_BTN_OPER04010_RESET_PW').hide();
255
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
256
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SAVE');
257
+
258
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
259
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').show();
260
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
261
+            $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').removeAttr('readonly');
262
+            $('#ITP_FORM_OPER04010_DETAIL_DUP').removeAttr('disabled');
263
+
264
+            $('.itp_modify_dt').hide();
265
+
266
+            var formId = '#ITP_FORM_OPER04010_DETAIL';
267
+            $(formId).find('input[type=text]').each(function() {
268
+                $(this).attr('id') === 'ITP_FORM_OPER04010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
269
+            });
270
+            $(formId).find('select').each(function() {
271
+                $(this).val('').prop('selected', true);
272
+            });
273
+        } else if(mode == 'MODIFY') { // 수정
274
+            $('#ITP_BTN_OPER04010_SRH').hide();
275
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
276
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
277
+            $('#ITP_BTN_OPER04010_DELETE').hide();
278
+            fn_show_btn_auth('#ITP_BTN_OPER04010_RESET_PW');
279
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
280
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SAVE');
281
+
282
+            $('.itp_modify_dt').show();
283
+
284
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
285
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').show();
286
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
287
+            $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').attr('readonly', true);
288
+            $('#ITP_FORM_OPER04010_DETAIL_DUP').attr('disabled', true);
289
+        } else if(mode == 'VIEW') { // 보기
290
+            $('#ITP_BTN_OPER04010_SRH').hide();
291
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
292
+            $('#ITP_BTN_OPER04010_DELETE').hide();
293
+            $('#ITP_BTN_OPER04010_SAVE').hide();
294
+            fn_show_btn_auth('#ITP_BTN_OPER04010_MODIFY');
295
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
296
+
297
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
298
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').hide();
299
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').show();
300
+        }
301
+    }
302
+};
303
+
304
+/*목록화면 Object*/
305
+let listObj = {
306
+    init: function () {
307
+        this.search();
308
+    },
309
+    itp_OPER04010_param: {},
310
+    itp_OPER04010_search: false,
311
+    button: {
312
+        search: function() {
313
+            listObj.itp_OPER04010_search = true;
314
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
315
+            param.gridSize = $.jgrid.defaults.rowNum;
316
+            param.gridPage = $.jgrid.defaults.page;
317
+            $(OPER04010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
318
+        },
319
+        create: function() {
320
+            pageObj.switchScreen('ADD');
321
+            itp_fn_form_clear_validate(null, '#ITP_FORM_OPER04010_DETAIL');
322
+            kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', $('#ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').val());
323
+        }
324
+    },
325
+    search: function() {
326
+        pageObj.switchScreen('LIST');
327
+        this.grid.init();
328
+    },
329
+    grid: {
330
+        init: function () {
331
+            this.unload();
332
+            this.load();
333
+        },
334
+        colModel: gridColModel.list,
335
+        load: function() {
336
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
337
+            param.gridSize = $.jgrid.defaults.rowNum;
338
+
339
+            var option = {
340
+                gridId: OPER04010_GRID_ID,
341
+                colModel: gridColModel.list,
342
+                param: JSON.stringify(param),
343
+                url: DOMAIN + SALES_USER_GRID_LIST,
344
+                pager: OPER04010_GRID_PAGER,
345
+                onCellSelect: function(rowId, cellIdx, cellValue) {
346
+                    var cm = $(this).jqGrid('getGridParam', 'colModel');
347
+                    var colNm = cm[cellIdx].name;
348
+                    if (colNm == 'saleMgrId') {
349
+                        const saleMgrIdVal = $(this).jqGrid('getCell', rowId, 'saleMgrId');
350
+                        const key = {saleMgrId: saleMgrIdVal, viewCd: 'R'};
351
+                        var param = $.param(key);
352
+                        viewObj.init(param);
353
+                    }
354
+                },
355
+                loadComplete: function(data) {
356
+                    console.log(data);
357
+                    itp_fn_grid_load_complete(data, OPER04010_GRID_ID, true, 'number', 'OPER04010', listObj.itp_OPER04010_search, listObj.empty, true, data.gridRecords, true);
358
+                    var ids = $(OPER04010_GRID_ID).getDataIDs();
359
+                    $.each(ids, function(idx, rowId) {
360
+                        $(OPER04010_GRID_ID).jqGrid('setCell', rowId, 'saleMgrId', '', ITP_GRID_COL_STYLE.link);
361
+                    });
362
+                },
363
+                onPaging: function(action) {
364
+                    itp_fn_grid_paging(OPER04010_GRID_ID, action, param);
365
+                }
366
+            };
367
+            itp_fn_grid_make_remote(option);
368
+        },
369
+        reload : function() {
370
+        },
371
+        clearData : function() {
372
+            $(OPER04010_GRID_ID).jqGrid('clearGridData', true);
373
+            $(OPER04010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
374
+            $(OPER04010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
375
+            $(OPER04010_GRID_EMPTY).show();
376
+        },
377
+        unload : function() {
378
+            $.jgrid.gridUnload(OPER04010_GRID_ID);
379
+        }
380
+    },
381
+    empty: {
382
+        init: function() {
383
+            var _this = this;
384
+            this.push();
385
+            $(OPER04010_GRID_EMPTY).on('click', function() {
386
+                _this.back();
387
+                listObj.itp_OPER04010_param.gridSize = $.jgrid.defaults.rowNum;
388
+                $(OPER04010_GRID_ID).setGridParam({'postData': JSON.stringify(listObj.itp_OPER04010_param)}).trigger('reloadGrid');
389
+            });
390
+        },
391
+        push: function() {
392
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
393
+            listObj.itp_OPER04010_param = param;
394
+        },
395
+        back: function() {
396
+            $('#ITP_FORM_OPER04010_DEVI_TP_CD').val(listObj.itp_OPER04010_param.deviTpCd);
397
+            $('#ITP_FORM_OPER04010_ORDER_YN').val(listObj.itp_OPER04010_param.orderYn);
398
+            $('#ITP_FORM_OPER04010_ADT_AUTH_CD').val(listObj.itp_OPER04010_param.adtAuthCd);
399
+            $('#ITP_FORM_OPER04010_EMAIL_RCV_YN').val(listObj.itp_OPER04010_param.emailRcvYn);
400
+            $('#ITP_FORM_OPER04010_SMS_RCV_YN').val(listObj.itp_OPER04010_param.smsRcvYn);
401
+            $('#ITP_FORM_OPER04010_MEMB_EXIT_DT').val(listObj.itp_OPER04010_param.membExitDt);
402
+            $('#ITP_FORM_OPER04010_FROM_DT').val(listObj.itp_OPER04010_param.fromDt);
403
+            $('#ITP_FORM_OPER04010_TO_DT').val(listObj.itp_OPER04010_param.toDt);
404
+            $('#ITP_FORM_OPER04010_KEYWORD').val(listObj.itp_OPER04010_param.keyword);
405
+        }
406
+    }
407
+};
408
+
409
+/*상세화면 Object*/
410
+let viewObj = {
411
+    init: function (param) {
412
+        this.load(param);
413
+    },
414
+    load: function(param) {
415
+        fn_ajax_call(SALES_USER_INFO, param, this.callback, 'GET');
416
+    },
417
+    callback: function (result) {
418
+        console.log(result);
419
+        pageObj.switchScreen('VIEW');
420
+        $('#ITP_FORM_OPER04010_VIEW #ITP_FORM_OPER04010_VIEW_SALE_MGR_ID').val(result.saleMgrId);
421
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesUserId').text(result.saleMgrId);
422
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesUserNm').text(result.saleMgrNm);
423
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesTypeCd').text(result.salesType);
424
+        $('#ITP_FORM_OPER04010_VIEW .fnUseStatCd').text(result.stCd);
425
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesTypeNm').text(result.saleTypeNm);
426
+        $('#ITP_FORM_OPER04010_VIEW .fnUseStatNm').text(result.stNm);
427
+        $('#ITP_FORM_OPER04010_VIEW .fnTelNo').text(result.rprstTelNo);
428
+        $('#ITP_FORM_OPER04010_VIEW .fnFaxNo').text(result.rprstFaxNo);
429
+        $('#ITP_FORM_OPER04010_VIEW .fnEmail').text(result.rprstEmal);
430
+        $('#ITP_FORM_OPER04010_VIEW .fnAddress').text('('+ result.zipNo + ') ' + result.addr1 + ' ' + result.addr2);
431
+
432
+        $('#ITP_FORM_OPER04010_VIEW .fnAddDt').text(result.sysRegDttm);
433
+        $('#ITP_FORM_OPER04010_VIEW .fnChgDt').text(result.sysChgDttm);
434
+
435
+        var adres = result.addr1 + ' ' + result.addr2;
436
+        kakaoMap.init('ITP_FORM_OPER04010_VIEW_MAP', adres);
437
+    }
438
+};
439
+
440
+/*수정화면 Object*/
441
+let modifyObj = {
442
+    init: function (param) {
443
+    },
444
+    button: {
445
+        modify: function (param) {
446
+            itp_fn_form_clear_validate(null, '#ITP_FORM_OPER04010_DETAIL');
447
+            const saleMgrIdVal = $('#ITP_FORM_OPER04010_VIEW_SALE_MGR_ID').val();
448
+            const key = {saleMgrId: saleMgrIdVal, viewCd: 'R'};
449
+            var param = $.param(key);
450
+            modifyObj.load(param);
451
+        }
452
+    },
453
+    load: function(param) {
454
+        fn_ajax_call(SALES_USER_INFO, param, this.callback, 'GET');
455
+    },
456
+    callback: function (result) {
457
+        console.log(result);
458
+        pageObj.switchScreen('MODIFY');
459
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_VIEW_CD').val('U');
460
+
461
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_USER_NM').val(result.saleMgrNm);
462
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD').val(result.saleType);
463
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_USE_STAT_CD').val(result.stCd);
464
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').val(result.saleMgrId);
465
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_TYPE_NM').val(result.saleTypeNm);
466
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_USE_STAT_NM').val(result.stNm);
467
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_TEL_NO').val(result.rprstTelNo);
468
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_FAX_NO').val(result.rprstFaxNo);
469
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_EMAIL').val(result.rprstEmal);
470
+
471
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ZIPNO').val(result.zipNo);
472
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ADRES').val(result.addr1);
473
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ADRES_DTL').val(result.addr2);
474
+
475
+        $('#ITP_FORM_OPER04010_DETAIL .fnAddDt').text(result.sysRegDttm);
476
+        $('#ITP_FORM_OPER04010_DETAIL .fnChgDt').text(result.sysChgDttm);
477
+
478
+        kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', $('#ITP_FORM_OPER04010_DETAIL_ADRES').val());
479
+    }
480
+};
481
+
482
+/*신규화면 Object*/
483
+let createObj = {
484
+    init: function () {
485
+    },
486
+    button: {
487
+        duplicate: function() {
488
+            const formId = '#ITP_FORM_OPER04010_DETAIL';
489
+            itp_fn_form_clear_validate(null, formId + '_DETAIL');
490
+            var vali_salesUserId = itp_fn_form_validate(formId + '_DETAIL', formId + '_SALES_USER_ID', ['empty'], undefined);
491
+            if (vali_salesUserId) {
492
+                var dupFn = function(result) {
493
+                    if (result.code == 'N') {
494
+                        ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = false;
495
+                    } else {
496
+                        ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = true;
497
+                    }
498
+                };
499
+                const key = {'saleMgrId':  $(formId + '_SALES_USER_ID').val()};
500
+                const param = $.param(key);
501
+                fn_ajax_call(SALES_USER_CHECK_DUPLICATE, param, dupFn, 'GET');
502
+            }
503
+        },
504
+        resetPass: function() {
505
+            var resetPwFn = {
506
+                callBack: function(args) {
507
+                    const key = {'saleMgrId':  $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').val()};
508
+                    const param = $.param(key);
509
+                    fn_ajax_call(USER_INTI_USERPW, param, undefined, 'GET');
510
+                }
511
+            };
512
+            itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.askResetUserPw, resetPwFn, null);
513
+        },
514
+        address: function() {
515
+            new daum.Postcode({
516
+                oncomplete: function(data) {
517
+                    // 전체주소 리턴
518
+                    console.log(data);
519
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ZIPNO').value = data.zonecode;
520
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = data.roadAddress;
521
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = !!data.autoJibunAddress ? data.autoJibunAddress : data.jibunAddress;
522
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').value = data.roadAddress;
523
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_HJ_DONG').value = !!data.hname ? data.hname : data.bname;
524
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_BJ_DONG').value = data.bname;
525
+
526
+                    kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', data.roadAddress);
527
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES_DTL').focus();
528
+                }
529
+            }).open();
530
+        },
531
+        save: function() {
532
+            const formId = '#ITP_FORM_OPER04010_DETAIL';
533
+            itp_fn_form_clear_validate(null, formId);
534
+            var vali_salesUserId = itp_fn_form_validate(formId, formId + '_SALES_USER_ID', ['empty'], undefined);
535
+            var vali_salesTypeCd = itp_fn_form_validate(formId, formId + '_SALES_TYPE_CD', ['empty'], undefined);
536
+            var vali_useStatCd = itp_fn_form_validate(formId, formId + '_USE_STAT_CD', ['empty'], undefined);
537
+            var vali_salesUserNm = itp_fn_form_validate(formId, formId + '_SALES_USER_NM', ['empty'], undefined);
538
+            var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
539
+            var vali_email = itp_fn_form_validate(formId, formId + 'EMAIL', ['empty'], undefined);
540
+
541
+            var vali_userPw = true;
542
+            var vali_userPwConfirm = true;
543
+            if($('#ITP_FORM_OPER04010_DETAIL_VIEW_CD').val() == 'C') { // 신규
544
+                vali_userPw = itp_fn_form_validate(formId, formId + '_USER_PW', ['empty'], undefined);
545
+                vali_userPwConfirm = itp_fn_form_validate(formId, formId + '_USER_PW_CONFIRM', ['empty'], undefined);
546
+            }
547
+
548
+            if (vali_salesUserId && vali_salesTypeCd && vali_useStatCd && vali_salesUserNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
549
+
550
+                if($('#ITP_FORM_OPER04010_DETAIL_ZIPNO').val() == '' || $('#ITP_FORM_OPER04010_DETAIL_ADRES').val() == '') {
551
+                    itp_fn_modal_alert('주소 검색을 통해 회사 주소를 입력하세요.');
552
+                    return;
553
+                }
554
+
555
+                if (ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE) {
556
+                    itp_fn_modal_duplicate('영업담당자 ID 중복체크를 해주세요.', formId + '_SALES_USER_ID');
557
+                } else {
558
+                    let param = $(formId).serializeObject();
559
+                    var searhFn = function() {
560
+                        ITP_FORM_OPER04010_DETAIL_IS_WRITING = false;
561
+                        listObj.search();
562
+                    };
563
+                    console.log(JSON.stringify(param));
564
+                    fn_ajax_call(SALES_USER_SAVE, JSON.stringify(param), searhFn, 'POST');
565
+                }
566
+            }
567
+        }
568
+    }
569
+};

+ 4 - 0
bin/src/main/webapp/js/app/templage.js

@@ -54,6 +54,10 @@ let pageObj = {
54 54
     },
55 55
     event: {
56 56
         init: function () {
57
+            this.button();
58
+        },
59
+        button: function () {
60
+            // 버튼 클릭 이벤트
57 61
         }
58 62
     },
59 63
     switchScreen: function(mode) {

+ 50 - 37
src/main/webapp/app/oper/OPER04010.html

@@ -36,7 +36,7 @@
36 36
 										</div>
37 37
 										<div class="col-xs-2 itp_ip itp_noMar">
38 38
 											<select id="ITP_FORM_OPER04010_SEARCH_USE_ST_CD" class="form-control itp_input" name="suseStatCd"></select>
39
-										</div>									
39
+										</div>
40 40
 									</div>
41 41
 								</form>
42 42
 							</div>
@@ -62,98 +62,111 @@
62 62
 									<h4 class="itp_form_tit">영업담당자정보</h4>
63 63
 									<div class="itp_form_in">
64 64
 										<div class="form-group">
65
-											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
65
+											<label class="col-xs-2 itp_lb">영업담당자ID</label>
66 66
 											<div class="col-xs-4 itp_ip">
67
-												<div class="col-xs-5 itp_in">
68
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_NM" class="form-control itp_input" name="salesUserNm" value="" maxlength="40">
67
+												<div class="col-xs-6 itp_in">
68
+													<div class="input-group">
69
+														<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_ID" class="form-control itp_input" name="saleMgrId" value="" maxlength="10" >
70
+														<span class="input-group-btn">
71
+														<button id="ITP_FORM_OPER04010_DETAIL_DUP" class="btn btn-default btn-sm itp_btn SHOW" type="button" disabled><i class="glyphicon glyphicon-ok"></i></button>
72
+													</span>
73
+													</div>
69 74
 												</div>
70 75
 											</div>
71 76
 											<label class="col-xs-2 itp_lb">상태(*)</label>
72 77
 											<div class="col-xs-4 itp_ip">
73 78
 												<div class="col-xs-5 itp_in">
74
-													<select id="ITP_FORM_OPER04010_DETAIL_USE_STAT_CD" class="form-control itp_input" name="useStatCd"></select>
79
+													<select id="ITP_FORM_OPER04010_DETAIL_USE_STAT_CD" class="form-control itp_input" name="stCd"></select>
75 80
 												</div>
76 81
 											</div>
77 82
 										</div>
78 83
 										<div class="form-group">
79
-											<label class="col-xs-2 itp_lb">영업담당자ID</label>
84
+											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
80 85
 											<div class="col-xs-4 itp_ip">
81
-												<div class="col-xs-6 itp_in">
82
-													<div class="input-group">
83
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_ID" class="form-control itp_input" name="salesUserId" value="" maxlength="10" >
84
-													<span class="input-group-btn">
85
-														<button id="ITP_FORM_OPER04010_DETAIL_DUP" class="btn btn-default btn-sm itp_btn SHOW" type="button" disabled><i class="glyphicon glyphicon-ok"></i></button>
86
-													</span>
87
-													</div>
86
+												<div class="col-xs-5 itp_in">
87
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_SALES_USER_NM" class="form-control itp_input" name="saleMgrNm" value="" maxlength="40">
88 88
 												</div>
89 89
 											</div>
90 90
 											<label class="col-xs-2 itp_lb">영업타입</label>
91 91
 											<div class="col-xs-4 itp_ip">
92 92
 												<div class="col-xs-5 itp_in">
93
-													<select id="ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD" class="form-control itp_input" name="salesTypeCd"></select>
93
+													<select id="ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD" class="form-control itp_input" name="saleType"></select>
94 94
 												</div>
95 95
 											</div>
96 96
 										</div>
97 97
 										
98 98
 										<div class="form-group">
99
-											<label class="col-xs-2 itp_lb">비밀번호(초기-전화번호)</label>
99
+											<label class="col-xs-2 itp_lb">전화번호(*)</label>
100 100
 											<div class="col-xs-4 itp_ip">
101 101
 												<div class="col-xs-5 itp_in">
102
-													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW" class="form-control itp_input" name="userPw" value="" disabled>
102
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_TEL_NO" class="form-control itp_input" name="rprstTelNo" value="">
103 103
 												</div>
104
-												<button type="button" id="ITP_BTN_OPER04010_RESET_PW" class="btn btn-danger btn-xs PWC" style="margin: 3px 0px 0px 3px;">비밀번호 초기화</button>
105 104
 											</div>
106
-											<label class="col-xs-2 itp_lb">대표연락처(*)</label>
105
+											<label class="col-xs-2 itp_lb">FAX</label>
107 106
 											<div class="col-xs-4 itp_ip">
108 107
 												<div class="col-xs-5 itp_in">
109
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_TEL_NO" class="form-control itp_input" name="telNo" value="">
108
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_FAX_NO" class="form-control itp_input" name="rprstFaxNo" value="">
110 109
 												</div>
111
-											</div>		
110
+											</div>
112 111
 										</div>
113 112
 										<div class="form-group">
114
-											<label class="col-xs-2 itp_lb">FAX</label>
113
+											<label class="col-xs-2 itp_lb">비밀번호(*)</label>
115 114
 											<div class="col-xs-4 itp_ip">
116 115
 												<div class="col-xs-5 itp_in">
117
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_FAX_NO" class="form-control itp_input" name="faxNo" value="">
116
+													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW" class="form-control itp_input" name="pswd" value="">
118 117
 												</div>
118
+												<button type="button" id="ITP_BTN_OPER04010_RESET_PW" class="btn btn-danger btn-xs PWC" style="margin: 3px 0px 0px 3px;">비밀번호 초기화</button>
119 119
 											</div>
120 120
 											<label class="col-xs-2 itp_lb">이메일(*)</label>
121 121
 											<div class="col-xs-4 itp_ip">
122 122
 												<div class="col-xs-5 itp_in">
123
-													<input type="text" id="ITP_FORM_OPER04010_DETAIL_EMAIL" class="form-control itp_input" name="email" value="">
123
+													<input type="text" id="ITP_FORM_OPER04010_DETAIL_EMAIL" class="form-control itp_input" name="rprstEmai" value="">
124 124
 												</div>
125 125
 											</div>											
126
-										</div>					
126
+										</div>
127
+										<div class="form-group">
128
+											<label class="col-xs-2 itp_lb">비밀번호 확인</label>
129
+											<div class="col-xs-4 itp_ip">
130
+												<div class="col-xs-5 itp_in">
131
+													<input type="password" id="ITP_FORM_OPER04010_DETAIL_USER_PW_CONFIRM" class="form-control itp_input" value="">
132
+												</div>
133
+											</div>
134
+											<label class="col-xs-2 itp_lb"></label>
135
+											<div class="col-xs-4 itp_ip">
136
+												<div class="col-xs-5 itp_in">
137
+												</div>
138
+											</div>
139
+										</div>
127 140
 									</div>									
128 141
 									<div class="itp_form_in">
129
-										<div class="form-group">
142
+										<div class="form-group border">
130 143
 											<label class="col-xs-2 itp_lb">주소(*)</label>
131 144
 											<div class="col-xs-10 itp_ip">
132 145
 												<div class="col-xs-1 itp_in">
133
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipno" value="" maxlength="6" readonly placeholder="우편번호">													
146
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipNo" value="" maxlength="6" readonly placeholder="우편번호">
134 147
 												</div>
135 148
 												<div class="col-xs-1 itp_in">
136 149
 												<button type="button" id="ITP_FORM_OPER04010_DETAIL_ADRES_SCH" class="btn btn-primary btn-xs SHOW" style="margin: 3px 0px 0px 3px;">&nbsp;&nbsp;주소검색&nbsp;&nbsp;</button>
137 150
 												</div>
138 151
 												<div class="col-xs-4 itp_in" style="margin-right: 5px;">
139
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES" class="form-control itp_input" name="adres" value="" readonly placeholder="기본주소">													
152
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES" class="form-control itp_input" name="addr1" value="" readonly placeholder="기본주소">
140 153
 												</div>
141 154
 												<div class="col-xs-4 itp_in">
142
-												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES_DTL" class="form-control itp_input" name="adresDtl" value="" placeholder="상세주소">													
155
+												<input type="text" id="ITP_FORM_OPER04010_DETAIL_ADRES_DTL" class="form-control itp_input" name="addr2" value="" placeholder="상세주소">
143 156
 												</div>
144 157
 												
145 158
 												<!-- 주소 맵 -->
146 159
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS" value="" />
147 160
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS" value="" />
148
-												<input type="hidden" name="salesUserLat" id="ITP_FORM_OPER04010_DETAIL_LAT" value="" />
149
-												<input type="hidden" name="salesUserLng" id="ITP_FORM_OPER04010_DETAIL_LNG" value="" />
161
+												<input type="hidden" name="latX" id="ITP_FORM_OPER04010_DETAIL_LAT" value="" />
162
+												<input type="hidden" name="longY" id="ITP_FORM_OPER04010_DETAIL_LNG" value="" />
150 163
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_HJ_DONG" value="" />
151 164
 												<input type="hidden" id="ITP_FORM_OPER04010_DETAIL_BJ_DONG" value="" />
152 165
 												<div id="ITP_FORM_OPER04010_DETAIL_MAP" style="width:700px; height:400px; margin-top:35px;"></div>
153 166
 											</div>
154 167
 										</div>
155 168
 									</div>
156
-									<div class="itp_form_in">
169
+									<div class="itp_form_in itp_modify_dt">
157 170
 										<div class="form-group border">
158 171
 											<label class="col-xs-2 itp_lb">등록일시</label>
159 172
 											<div class="col-xs-4 itp_ip">
@@ -175,15 +188,15 @@
175 188
 						<div class="col-xs-12">
176 189
 							<form id="ITP_FORM_OPER04010_VIEW" class="form-horizontal">
177 190
 								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_VIEW_CD" name="viewCd" value="R">
178
-								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_SALES_USER_ID" name="salesUserId" value="">
191
+								<input type="hidden" id="ITP_FORM_OPER04010_VIEW_SALE_MGR_ID" name="saleMgrId" value="">
179 192
 					
180 193
 								<section class="itp_form_sec">
181 194
 									<h4 class="itp_form_tit">영업담당자정보</h4>
182 195
 									<div class="itp_form_in">
183 196
 										<div class="form-group">
184
-											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
197
+											<label class="col-xs-2 itp_lb">영업담당자ID</label>
185 198
 											<div class="col-xs-4 itp_ip">
186
-												<div class="col-xs-5 itp_in fnSalesUserNm"></div>
199
+												<div class="col-xs-5 itp_in fnSalesUserId"></div>
187 200
 											</div>
188 201
 											<label class="col-xs-2 itp_lb">상태</label>
189 202
 											<div class="col-xs-4 itp_ip">
@@ -191,11 +204,11 @@
191 204
 											</div>
192 205
 										</div>
193 206
 										<div class="form-group">
194
-											<label class="col-xs-2 itp_lb">영업담당자ID</label>
207
+											<label class="col-xs-2 itp_lb">영업담당자명(*)</label>
195 208
 											<div class="col-xs-4 itp_ip">
196
-												<div class="col-xs-5 itp_in fnSalesUserId"></div>
209
+												<div class="col-xs-5 itp_in fnSalesUserNm"></div>
197 210
 											</div>
198
-											<label class="col-xs-2 itp_lb">형태</label>
211
+											<label class="col-xs-2 itp_lb">영업타입</label>
199 212
 											<div class="col-xs-4 itp_ip">
200 213
 												<div class="col-xs-5 itp_in fnSalesTypeNm"></div>
201 214
 											</div>

+ 1 - 1
src/main/webapp/app/stinfo/STINFO01010.html

@@ -29,7 +29,7 @@
29 29
 											</select>
30 30
 										</div>
31 31
 										<div class="col-xs-6 itp_ip">
32
-											<input type="text" id="ITP_FORM_STINFO01010_SEARCH_BRAND_NM" class="form-control itp_input" name="brandNm" placeholder="브랜드명" />
32
+											<input type="text" id="ITP_FORM_STINFO01010_SEARCH_BRAND_NM" class="form-control itp_input" name="sbrandNm" placeholder="브랜드명" />
33 33
 										</div>
34 34
 									</div>
35 35
 								</form>

+ 1 - 1
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="ST_CD">
22
+											<select id="ITP_FORM_STINFO04010_SERVICE_ST_CD" class="form-control itp_input" name="serviceStCd">
23 23
 											</select>	
24 24
 										</div>
25 25
 										<div class="col-xs-2 itp_ip itp_noMar">

+ 569 - 0
src/main/webapp/js/app/oper/ITP_OPER04010.js

@@ -0,0 +1,569 @@
1
+/********************************************************
2
+ --------------------------------------------------------
3
+ - Object 목록								            -
4
+ --------------------------------------------------------
5
+ * let kakaoMap = {}		: kakaoMap Object			*
6
+ * const gridColModel = {}	: 화면 Grid Object			*
7
+ * let pageObj = {}			: 화면공통 Object			*
8
+ * let listObj = {}			: 목록화면 Object			*
9
+ * let viewObj = {}			: 상세화면 Object			*
10
+ * let modifyObj = {}		: 수정화면 Object			*
11
+ * let createObj = {}		: 신규화면 Object			*
12
+ *******************************************************/
13
+
14
+/*화면 변수*/
15
+const OPER04010_GRID_ID     = '#ITP_OPER04010_jqGrid';
16
+const OPER04010_GRID_LIST   = '#ITP_OPER04010_jqGrid_list';
17
+const OPER04010_GRID_PAGER  = '#ITP_OPER04010_jqGridPager';
18
+const OPER04010_GRID_EMPTY  = '#ITP_OPER04010_jqGridEmpty';
19
+
20
+let ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = false;
21
+let ITP_FORM_OPER04010_DETAIL_IS_WRITING = false;
22
+
23
+/*API URL*/
24
+let SALES_USER_GRID_LIST        = '/api/srep/detail-grid-list';
25
+let SALES_USER_INFO             = '/api/srep/info-salemgr';
26
+let SALES_USER_SAVE             = '/api/srep/save-salemgr';
27
+let SALES_USER_CHECK_DUPLICATE  = '/api/srep/check-duplicate';
28
+let USER_INTI_USERPW            = '/api/srep/inti-salemgrpw';
29
+
30
+let kakaoMap = {
31
+    init: function(id, locate) {
32
+        this.load(id, locate);
33
+    },
34
+    geocoder: null,
35
+    schDetailAddrFromCoords: function(coords, callback) {
36
+        // 좌표로 법정동 상세 주소 정보를 요청합니다
37
+        if(this.geocoder) {
38
+            this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
39
+        }
40
+    },
41
+    getMap: function(id) {
42
+        var mapContainer = document.getElementById(id), // 지도를 표시할 div
43
+            mapOption = {
44
+                center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
45
+                level: 3, // 지도의 확대 레벨
46
+                mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
47
+            };
48
+
49
+        // 지도를 생성한다
50
+        var map = new kakao.maps.Map(mapContainer, mapOption);
51
+
52
+        // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
53
+        map.setZoomable(false);
54
+
55
+        // 지도에 확대 축소 컨트롤을 생성한다
56
+        //var zoomControl = new kakao.maps.ZoomControl();
57
+
58
+        // 지도의 우측에 확대 축소 컨트롤을 추가한다
59
+        //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
60
+
61
+        return map;
62
+    },
63
+    marker: function(map, coords) {
64
+        // 지도에 마커를 생성하고 표시한다
65
+        marker = new kakao.maps.Marker({
66
+            position: coords, // 마커의 좌표
67
+            map: map // 마커를 표시할 지도 객체
68
+        });
69
+    },
70
+    load: function(id, locate) {
71
+        var _this = this;
72
+        kakao.maps.load(function() {
73
+            var map = _this.getMap(id);
74
+            // 주소-좌표 변환 객체를 생성합니다
75
+            _this.geocoder = new kakao.maps.services.Geocoder();
76
+            if( !locate || locate.length == 0 ) {
77
+                // 지도에 마커를 생성하고 표시한다
78
+                _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
79
+            } else {
80
+                // 주소로 좌표를 검색합니다
81
+                _this.geocoder.addressSearch(locate, function(result, status) {
82
+                    // 정상적으로 검색이 완료됐으면
83
+                    if (status === kakao.maps.services.Status.OK) {
84
+
85
+                        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
86
+                        if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
87
+                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = result[0].y;
88
+                            document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = result[0].x;
89
+                        }
90
+
91
+                        // 결과값으로 받은 위치를 마커로 표시합니다
92
+                        _this.marker(map, coords);
93
+
94
+                        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
95
+                        map.setCenter(coords);
96
+                    } else {
97
+                        _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
98
+                    }
99
+                });
100
+            }
101
+
102
+            if(id === 'ITP_FORM_OPER04010_DETAIL_MAP') {
103
+                _this.listener.drag(map);
104
+            }
105
+        });
106
+    },
107
+    listener: {
108
+        drag: function(map) {
109
+            var _this = this;
110
+            // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
111
+            kakao.maps.event.addListener(map, 'drag', function () {
112
+                kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
113
+                    if (status === kakao.maps.services.Status.OK) {
114
+
115
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = result[0].address.address_name ;
116
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
117
+                        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();
118
+                        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() ;
119
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LAT').value = map.getCenter().getLat();
120
+                        document.getElementById('ITP_FORM_OPER04010_DETAIL_LNG').value = map.getCenter().getLng();
121
+
122
+                        // 마커를 클릭한 위치에 표시합니다
123
+                        marker.setPosition(map.getCenter());
124
+                        marker.setMap(map);
125
+                    }
126
+                });
127
+                /* 	var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
128
+                console.log(message); */
129
+            });
130
+        }
131
+    }
132
+};
133
+
134
+/*화면 Grid Object*/
135
+const gridColModel = {
136
+    list: [
137
+        {
138
+            index: 'SALE_MGR_ID', name: 'saleMgrId',
139
+            label: '영업담당자ID',
140
+            width: '6', fixed: false, align: 'center',
141
+            sortable: false, hidden: false
142
+        },
143
+        {
144
+            index: 'SALE_MGR_NM', name: 'saleMgrNm',
145
+            label: '영업담당자명',
146
+            width: '10', fixed: false, align: 'center',
147
+            sortable: false, hidden: false
148
+        },
149
+        {
150
+            index: 'SALES_TYPE_NM', name: 'salesTypeNm',
151
+            label: '영업타입',
152
+            width: '6', fixed: false, align: 'center',
153
+            sortable: false, hidden: false
154
+        },
155
+        {
156
+            index: 'ST_NM', name: 'stNm',
157
+            label: '상태',
158
+            width: '6', fixed: false, align: 'center',
159
+            sortable: false, hidden: false
160
+        },
161
+        {
162
+            index: 'REG_DT', name: 'regDt',
163
+            label: '가입일자',
164
+            width: '8', fixed: false, align: 'center',
165
+            sortable: false, hidden: false
166
+        }
167
+    ]
168
+};
169
+
170
+require(['config'], function() {
171
+    require([
172
+        'kakao.postcode',
173
+        'kakao.maps'
174
+    ], function($) {
175
+        pageObj.init();
176
+    });
177
+});
178
+
179
+/*화면공통 Object*/
180
+let pageObj = {
181
+    init: function () {
182
+        this.ui.init();
183
+        this.event.init();
184
+    },
185
+    ui: {
186
+        init: function () {
187
+            this.view();
188
+            this.grid();
189
+            this.ready();
190
+        },
191
+        view: function() {
192
+            // 버튼 권한설정
193
+            fn_proc_btn_auth('OPER04010');
194
+            // 공통코드 표시
195
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_OPER04010_SEARCH_USE_STAT_CD');
196
+            fn_make_select(CODE_LIST, 'ST_CD', 'ITP_FORM_OPER04010_DETAIL_USE_STAT_CD', true, '선택');
197
+            fn_make_select(CODE_LIST, 'SALE_TYPE', 'ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD', true, '선택');
198
+
199
+            // 조회일자 지정
200
+            $('#ITP_TAB_OPER04010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
201
+        },
202
+        grid: function() {
203
+            itp_fn_jqgrid_resize(OPER04010_GRID_ID, OPER04010_GRID_LIST, 'lg');
204
+            listObj.empty.init();
205
+            itp_fn_fire_window_resize();
206
+        },
207
+        ready: function() {
208
+            listObj.init();
209
+        }
210
+    },
211
+    event: {
212
+        init: function () {
213
+            this.button();
214
+        },
215
+        button: function () {
216
+            // 버튼 클릭 이벤트
217
+            $('button').each(function() {
218
+                var id = $(this).attr('id');
219
+                $(this).on('click', function() {
220
+                    switch (id) {
221
+                        case 'ITP_BTN_OPER04010_SRH'				: listObj.button.search();		break;	// 조회 버튼 클릭
222
+                        case 'ITP_BTN_OPER04010_NEWREG'				: listObj.button.create(); 		break;	// 신규등록 버튼
223
+                        case 'ITP_BTN_OPER04010_MODIFY'				: modifyObj.button.modify();	break;	// 수정 버튼
224
+                        case 'ITP_BTN_OPER04010_CANCELLIST'			: listObj.search(); 	        break;	// 취소/목록 버튼
225
+                        case 'ITP_BTN_OPER04010_DELETE'				: 								break;	// 삭제 버튼
226
+                        case 'ITP_BTN_OPER04010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
227
+                        case 'ITP_BTN_OPER04010_RESET_PW'			: createObj.button.resetPass();	break;	// 상세:비밀번호 초기화
228
+                        case 'ITP_FORM_OPER04010_DETAIL_DUP'		: createObj.button.duplicate();	break;	// 중복체크
229
+                        case 'ITP_FORM_OPER04010_DETAIL_ADRES_SCH'	: createObj.button.address();	break;	// 신규등록 주소 찾기
230
+                    }
231
+                });
232
+            });
233
+        }
234
+    },
235
+    switchScreen: function(mode) {
236
+        if(mode == 'LIST') { // 목록
237
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
238
+            $('#ITP_BTN_OPER04010_CANCELLIST').hide();
239
+            $('#ITP_BTN_OPER04010_DELETE').hide();
240
+            $('#ITP_BTN_OPER04010_SAVE').hide();
241
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SRH');
242
+            fn_show_btn_auth('#ITP_BTN_OPER04010_NEWREG');
243
+
244
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').show();
245
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').hide();
246
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
247
+        } else if(mode == 'ADD') { // 등록
248
+            ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = true;
249
+
250
+            $('#ITP_BTN_OPER04010_SRH').hide();
251
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
252
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
253
+            $('#ITP_BTN_OPER04010_DELETE').hide();
254
+            $('#ITP_BTN_OPER04010_RESET_PW').hide();
255
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
256
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SAVE');
257
+
258
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
259
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').show();
260
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
261
+            $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').removeAttr('readonly');
262
+            $('#ITP_FORM_OPER04010_DETAIL_DUP').removeAttr('disabled');
263
+
264
+            $('.itp_modify_dt').hide();
265
+
266
+            var formId = '#ITP_FORM_OPER04010_DETAIL';
267
+            $(formId).find('input[type=text]').each(function() {
268
+                $(this).attr('id') === 'ITP_FORM_OPER04010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
269
+            });
270
+            $(formId).find('select').each(function() {
271
+                $(this).val('').prop('selected', true);
272
+            });
273
+        } else if(mode == 'MODIFY') { // 수정
274
+            $('#ITP_BTN_OPER04010_SRH').hide();
275
+            $('#ITP_BTN_OPER04010_MODIFY').hide();
276
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
277
+            $('#ITP_BTN_OPER04010_DELETE').hide();
278
+            fn_show_btn_auth('#ITP_BTN_OPER04010_RESET_PW');
279
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
280
+            fn_show_btn_auth('#ITP_BTN_OPER04010_SAVE');
281
+
282
+            $('.itp_modify_dt').show();
283
+
284
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
285
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').show();
286
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').hide();
287
+            $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').attr('readonly', true);
288
+            $('#ITP_FORM_OPER04010_DETAIL_DUP').attr('disabled', true);
289
+        } else if(mode == 'VIEW') { // 보기
290
+            $('#ITP_BTN_OPER04010_SRH').hide();
291
+            $('#ITP_BTN_OPER04010_NEWREG').hide();
292
+            $('#ITP_BTN_OPER04010_DELETE').hide();
293
+            $('#ITP_BTN_OPER04010_SAVE').hide();
294
+            fn_show_btn_auth('#ITP_BTN_OPER04010_MODIFY');
295
+            fn_show_btn_auth('#ITP_BTN_OPER04010_CANCELLIST');
296
+
297
+            $('#ITP_AJAX_OPER04010_LIST_CONTAINER').hide();
298
+            $('#ITP_AJAX_OPER04010_DETAIL_CONTAINER').hide();
299
+            $('#ITP_AJAX_OPER04010_VIEW_CONTAINER').show();
300
+        }
301
+    }
302
+};
303
+
304
+/*목록화면 Object*/
305
+let listObj = {
306
+    init: function () {
307
+        this.search();
308
+    },
309
+    itp_OPER04010_param: {},
310
+    itp_OPER04010_search: false,
311
+    button: {
312
+        search: function() {
313
+            listObj.itp_OPER04010_search = true;
314
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
315
+            param.gridSize = $.jgrid.defaults.rowNum;
316
+            param.gridPage = $.jgrid.defaults.page;
317
+            $(OPER04010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
318
+        },
319
+        create: function() {
320
+            pageObj.switchScreen('ADD');
321
+            itp_fn_form_clear_validate(null, '#ITP_FORM_OPER04010_DETAIL');
322
+            kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', $('#ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').val());
323
+        }
324
+    },
325
+    search: function() {
326
+        pageObj.switchScreen('LIST');
327
+        this.grid.init();
328
+    },
329
+    grid: {
330
+        init: function () {
331
+            this.unload();
332
+            this.load();
333
+        },
334
+        colModel: gridColModel.list,
335
+        load: function() {
336
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
337
+            param.gridSize = $.jgrid.defaults.rowNum;
338
+
339
+            var option = {
340
+                gridId: OPER04010_GRID_ID,
341
+                colModel: gridColModel.list,
342
+                param: JSON.stringify(param),
343
+                url: DOMAIN + SALES_USER_GRID_LIST,
344
+                pager: OPER04010_GRID_PAGER,
345
+                onCellSelect: function(rowId, cellIdx, cellValue) {
346
+                    var cm = $(this).jqGrid('getGridParam', 'colModel');
347
+                    var colNm = cm[cellIdx].name;
348
+                    if (colNm == 'saleMgrId') {
349
+                        const saleMgrIdVal = $(this).jqGrid('getCell', rowId, 'saleMgrId');
350
+                        const key = {saleMgrId: saleMgrIdVal, viewCd: 'R'};
351
+                        var param = $.param(key);
352
+                        viewObj.init(param);
353
+                    }
354
+                },
355
+                loadComplete: function(data) {
356
+                    console.log(data);
357
+                    itp_fn_grid_load_complete(data, OPER04010_GRID_ID, true, 'number', 'OPER04010', listObj.itp_OPER04010_search, listObj.empty, true, data.gridRecords, true);
358
+                    var ids = $(OPER04010_GRID_ID).getDataIDs();
359
+                    $.each(ids, function(idx, rowId) {
360
+                        $(OPER04010_GRID_ID).jqGrid('setCell', rowId, 'saleMgrId', '', ITP_GRID_COL_STYLE.link);
361
+                    });
362
+                },
363
+                onPaging: function(action) {
364
+                    itp_fn_grid_paging(OPER04010_GRID_ID, action, param);
365
+                }
366
+            };
367
+            itp_fn_grid_make_remote(option);
368
+        },
369
+        reload : function() {
370
+        },
371
+        clearData : function() {
372
+            $(OPER04010_GRID_ID).jqGrid('clearGridData', true);
373
+            $(OPER04010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
374
+            $(OPER04010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
375
+            $(OPER04010_GRID_EMPTY).show();
376
+        },
377
+        unload : function() {
378
+            $.jgrid.gridUnload(OPER04010_GRID_ID);
379
+        }
380
+    },
381
+    empty: {
382
+        init: function() {
383
+            var _this = this;
384
+            this.push();
385
+            $(OPER04010_GRID_EMPTY).on('click', function() {
386
+                _this.back();
387
+                listObj.itp_OPER04010_param.gridSize = $.jgrid.defaults.rowNum;
388
+                $(OPER04010_GRID_ID).setGridParam({'postData': JSON.stringify(listObj.itp_OPER04010_param)}).trigger('reloadGrid');
389
+            });
390
+        },
391
+        push: function() {
392
+            let param = $('#ITP_FORM_OPER04010_SEARCH').serializeObject();
393
+            listObj.itp_OPER04010_param = param;
394
+        },
395
+        back: function() {
396
+            $('#ITP_FORM_OPER04010_DEVI_TP_CD').val(listObj.itp_OPER04010_param.deviTpCd);
397
+            $('#ITP_FORM_OPER04010_ORDER_YN').val(listObj.itp_OPER04010_param.orderYn);
398
+            $('#ITP_FORM_OPER04010_ADT_AUTH_CD').val(listObj.itp_OPER04010_param.adtAuthCd);
399
+            $('#ITP_FORM_OPER04010_EMAIL_RCV_YN').val(listObj.itp_OPER04010_param.emailRcvYn);
400
+            $('#ITP_FORM_OPER04010_SMS_RCV_YN').val(listObj.itp_OPER04010_param.smsRcvYn);
401
+            $('#ITP_FORM_OPER04010_MEMB_EXIT_DT').val(listObj.itp_OPER04010_param.membExitDt);
402
+            $('#ITP_FORM_OPER04010_FROM_DT').val(listObj.itp_OPER04010_param.fromDt);
403
+            $('#ITP_FORM_OPER04010_TO_DT').val(listObj.itp_OPER04010_param.toDt);
404
+            $('#ITP_FORM_OPER04010_KEYWORD').val(listObj.itp_OPER04010_param.keyword);
405
+        }
406
+    }
407
+};
408
+
409
+/*상세화면 Object*/
410
+let viewObj = {
411
+    init: function (param) {
412
+        this.load(param);
413
+    },
414
+    load: function(param) {
415
+        fn_ajax_call(SALES_USER_INFO, param, this.callback, 'GET');
416
+    },
417
+    callback: function (result) {
418
+        console.log(result);
419
+        pageObj.switchScreen('VIEW');
420
+        $('#ITP_FORM_OPER04010_VIEW #ITP_FORM_OPER04010_VIEW_SALE_MGR_ID').val(result.saleMgrId);
421
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesUserId').text(result.saleMgrId);
422
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesUserNm').text(result.saleMgrNm);
423
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesTypeCd').text(result.salesType);
424
+        $('#ITP_FORM_OPER04010_VIEW .fnUseStatCd').text(result.stCd);
425
+        $('#ITP_FORM_OPER04010_VIEW .fnSalesTypeNm').text(result.saleTypeNm);
426
+        $('#ITP_FORM_OPER04010_VIEW .fnUseStatNm').text(result.stNm);
427
+        $('#ITP_FORM_OPER04010_VIEW .fnTelNo').text(result.rprstTelNo);
428
+        $('#ITP_FORM_OPER04010_VIEW .fnFaxNo').text(result.rprstFaxNo);
429
+        $('#ITP_FORM_OPER04010_VIEW .fnEmail').text(result.rprstEmal);
430
+        $('#ITP_FORM_OPER04010_VIEW .fnAddress').text('('+ result.zipNo + ') ' + result.addr1 + ' ' + result.addr2);
431
+
432
+        $('#ITP_FORM_OPER04010_VIEW .fnAddDt').text(result.sysRegDttm);
433
+        $('#ITP_FORM_OPER04010_VIEW .fnChgDt').text(result.sysChgDttm);
434
+
435
+        var adres = result.addr1 + ' ' + result.addr2;
436
+        kakaoMap.init('ITP_FORM_OPER04010_VIEW_MAP', adres);
437
+    }
438
+};
439
+
440
+/*수정화면 Object*/
441
+let modifyObj = {
442
+    init: function (param) {
443
+    },
444
+    button: {
445
+        modify: function (param) {
446
+            itp_fn_form_clear_validate(null, '#ITP_FORM_OPER04010_DETAIL');
447
+            const saleMgrIdVal = $('#ITP_FORM_OPER04010_VIEW_SALE_MGR_ID').val();
448
+            const key = {saleMgrId: saleMgrIdVal, viewCd: 'R'};
449
+            var param = $.param(key);
450
+            modifyObj.load(param);
451
+        }
452
+    },
453
+    load: function(param) {
454
+        fn_ajax_call(SALES_USER_INFO, param, this.callback, 'GET');
455
+    },
456
+    callback: function (result) {
457
+        console.log(result);
458
+        pageObj.switchScreen('MODIFY');
459
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_VIEW_CD').val('U');
460
+
461
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_USER_NM').val(result.saleMgrNm);
462
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_TYPE_CD').val(result.saleType);
463
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_USE_STAT_CD').val(result.stCd);
464
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').val(result.saleMgrId);
465
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_SALES_TYPE_NM').val(result.saleTypeNm);
466
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_USE_STAT_NM').val(result.stNm);
467
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_TEL_NO').val(result.rprstTelNo);
468
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_FAX_NO').val(result.rprstFaxNo);
469
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_EMAIL').val(result.rprstEmal);
470
+
471
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ZIPNO').val(result.zipNo);
472
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ADRES').val(result.addr1);
473
+        $('#ITP_FORM_OPER04010_DETAIL #ITP_FORM_OPER04010_DETAIL_ADRES_DTL').val(result.addr2);
474
+
475
+        $('#ITP_FORM_OPER04010_DETAIL .fnAddDt').text(result.sysRegDttm);
476
+        $('#ITP_FORM_OPER04010_DETAIL .fnChgDt').text(result.sysChgDttm);
477
+
478
+        kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', $('#ITP_FORM_OPER04010_DETAIL_ADRES').val());
479
+    }
480
+};
481
+
482
+/*신규화면 Object*/
483
+let createObj = {
484
+    init: function () {
485
+    },
486
+    button: {
487
+        duplicate: function() {
488
+            const formId = '#ITP_FORM_OPER04010_DETAIL';
489
+            itp_fn_form_clear_validate(null, formId + '_DETAIL');
490
+            var vali_salesUserId = itp_fn_form_validate(formId + '_DETAIL', formId + '_SALES_USER_ID', ['empty'], undefined);
491
+            if (vali_salesUserId) {
492
+                var dupFn = function(result) {
493
+                    if (result.code == 'N') {
494
+                        ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = false;
495
+                    } else {
496
+                        ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE = true;
497
+                    }
498
+                };
499
+                const key = {'saleMgrId':  $(formId + '_SALES_USER_ID').val()};
500
+                const param = $.param(key);
501
+                fn_ajax_call(SALES_USER_CHECK_DUPLICATE, param, dupFn, 'GET');
502
+            }
503
+        },
504
+        resetPass: function() {
505
+            var resetPwFn = {
506
+                callBack: function(args) {
507
+                    const key = {'saleMgrId':  $('#ITP_FORM_OPER04010_DETAIL_SALES_USER_ID').val()};
508
+                    const param = $.param(key);
509
+                    fn_ajax_call(USER_INTI_USERPW, param, undefined, 'GET');
510
+                }
511
+            };
512
+            itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.askResetUserPw, resetPwFn, null);
513
+        },
514
+        address: function() {
515
+            new daum.Postcode({
516
+                oncomplete: function(data) {
517
+                    // 전체주소 리턴
518
+                    console.log(data);
519
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ZIPNO').value = data.zonecode;
520
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES').value = data.roadAddress;
521
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_LOTS_ADDRESS').value = !!data.autoJibunAddress ? data.autoJibunAddress : data.jibunAddress;
522
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_STREET_ADDRESS').value = data.roadAddress;
523
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_HJ_DONG').value = !!data.hname ? data.hname : data.bname;
524
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_BJ_DONG').value = data.bname;
525
+
526
+                    kakaoMap.init('ITP_FORM_OPER04010_DETAIL_MAP', data.roadAddress);
527
+                    document.getElementById('ITP_FORM_OPER04010_DETAIL_ADRES_DTL').focus();
528
+                }
529
+            }).open();
530
+        },
531
+        save: function() {
532
+            const formId = '#ITP_FORM_OPER04010_DETAIL';
533
+            itp_fn_form_clear_validate(null, formId);
534
+            var vali_salesUserId = itp_fn_form_validate(formId, formId + '_SALES_USER_ID', ['empty'], undefined);
535
+            var vali_salesTypeCd = itp_fn_form_validate(formId, formId + '_SALES_TYPE_CD', ['empty'], undefined);
536
+            var vali_useStatCd = itp_fn_form_validate(formId, formId + '_USE_STAT_CD', ['empty'], undefined);
537
+            var vali_salesUserNm = itp_fn_form_validate(formId, formId + '_SALES_USER_NM', ['empty'], undefined);
538
+            var vali_telNo = itp_fn_form_validate(formId, formId + '_TEL_NO', ['empty'], undefined);
539
+            var vali_email = itp_fn_form_validate(formId, formId + 'EMAIL', ['empty'], undefined);
540
+
541
+            var vali_userPw = true;
542
+            var vali_userPwConfirm = true;
543
+            if($('#ITP_FORM_OPER04010_DETAIL_VIEW_CD').val() == 'C') { // 신규
544
+                vali_userPw = itp_fn_form_validate(formId, formId + '_USER_PW', ['empty'], undefined);
545
+                vali_userPwConfirm = itp_fn_form_validate(formId, formId + '_USER_PW_CONFIRM', ['empty'], undefined);
546
+            }
547
+
548
+            if (vali_salesUserId && vali_salesTypeCd && vali_useStatCd && vali_salesUserNm && vali_userPw && vali_userPwConfirm && vali_telNo && vali_email) {
549
+
550
+                if($('#ITP_FORM_OPER04010_DETAIL_ZIPNO').val() == '' || $('#ITP_FORM_OPER04010_DETAIL_ADRES').val() == '') {
551
+                    itp_fn_modal_alert('주소 검색을 통해 회사 주소를 입력하세요.');
552
+                    return;
553
+                }
554
+
555
+                if (ITP_FORM_OPER04010_DETAIL_IS_DUPLICATE) {
556
+                    itp_fn_modal_duplicate('영업담당자 ID 중복체크를 해주세요.', formId + '_SALES_USER_ID');
557
+                } else {
558
+                    let param = $(formId).serializeObject();
559
+                    var searhFn = function() {
560
+                        ITP_FORM_OPER04010_DETAIL_IS_WRITING = false;
561
+                        listObj.search();
562
+                    };
563
+                    console.log(JSON.stringify(param));
564
+                    fn_ajax_call(SALES_USER_SAVE, JSON.stringify(param), searhFn, 'POST');
565
+                }
566
+            }
567
+        }
568
+    }
569
+};

+ 4 - 0
src/main/webapp/js/app/templage.js

@@ -54,6 +54,10 @@ let pageObj = {
54 54
     },
55 55
     event: {
56 56
         init: function () {
57
+            this.button();
58
+        },
59
+        button: function () {
60
+            // 버튼 클릭 이벤트
57 61
         }
58 62
     },
59 63
     switchScreen: function(mode) {