
--- SQL
+++ SQL
... | ... | @@ -154,7 +154,7 @@ |
154 | 154 |
RESULT_CNT INTEGER, |
155 | 155 |
ERROR_CNT INTEGER, |
156 | 156 |
ERROR_NM CHARACTER VARYING NULL, |
157 |
- MANAGE_RULE_ID INTEGER REFERENCES MANAGE_RULE(MANAGE_RULE_ID) ON DELETE CASCADE, |
|
157 |
+ MANAGE_RULE_ID INTEGER REFERENCES MANAGE_RULE(MANAGE_RULE_ID) ON DELETE CASCADE |
|
158 | 158 |
); |
159 | 159 |
|
160 | 160 |
|
--- client/views/pages/result/ExecRuleResult.vue
+++ client/views/pages/result/ExecRuleResult.vue
... | ... | @@ -124,8 +124,7 @@ |
124 | 124 |
</tr> |
125 | 125 |
</thead> |
126 | 126 |
<tbody> |
127 |
- <tr |
|
128 |
- v-for="(item, index) in manageResultList" :key="index" @dblclick="tableSelect()"> |
|
127 |
+ <tr v-for="(item, index) in manageResultList" :key="index" @dblclick="tableSelect(index)"> |
|
129 | 128 |
<td> |
130 | 129 |
{{ |
131 | 130 |
index + 1 + (searchData.currentPage - 1) * searchData.perPage |
... | ... | @@ -148,13 +147,8 @@ |
148 | 147 |
<th colspan="12">총 {{ rowTotalCount }}건</th> |
149 | 148 |
</tfoot> |
150 | 149 |
</table> |
151 |
- <PaginationButton |
|
152 |
- v-model:currentPage="searchData.currentPage" |
|
153 |
- :perPage="searchData.perPage" |
|
154 |
- :totalCount="rowTotalCount" |
|
155 |
- :maxRange="5" |
|
156 |
- :click = "handlePageClick" |
|
157 |
- /> |
|
150 |
+ <PaginationButton v-model:currentPage="searchData.currentPage" :perPage="searchData.perPage" |
|
151 |
+ :totalCount="rowTotalCount" :maxRange="5" :click="handlePageClick" /> |
|
158 | 152 |
</div> |
159 | 153 |
</div> |
160 | 154 |
</div> |
... | ... | @@ -162,7 +156,7 @@ |
162 | 156 |
<div class="modal-container" style="height: 60%"> |
163 | 157 |
<div class="modal-title"> |
164 | 158 |
<div class="flex justify-between align-center"> |
165 |
- <h1>{{ null }}컬럼오류데이터조회</h1> |
|
159 |
+ <h1>{{ selectedResultName }} 컬럼오류데이터조회</h1> |
|
166 | 160 |
<button class="close-btn" @click="closeModal">X</button> |
167 | 161 |
</div> |
168 | 162 |
</div> |
... | ... | @@ -171,9 +165,9 @@ |
171 | 165 |
<li id="tab01" v-show="activeTab === 'tab1'"> |
172 | 166 |
<table class="list-table"> |
173 | 167 |
<colgroup> |
174 |
- <col style="width: 5%" /> |
|
175 |
- <col style="width: 85%" /> |
|
176 |
- <col style="width: " /> |
|
168 |
+ <col style="width: 20%" /> |
|
169 |
+ <col style="width: 40%" /> |
|
170 |
+ <col style="width: 40" /> |
|
177 | 171 |
</colgroup> |
178 | 172 |
<thead> |
179 | 173 |
<tr> |
... | ... | @@ -181,15 +175,14 @@ |
181 | 175 |
<th>오류 데이터</th> |
182 | 176 |
<th>건수</th> |
183 | 177 |
</tr> |
184 |
- <tbody> |
|
185 |
- <tr> |
|
186 |
- <!-- v-for자리 --> |
|
187 |
- <td>1</td> |
|
188 |
- <td>test_error</td> |
|
189 |
- <td>15</td> |
|
190 |
- </tr> |
|
191 |
- </tbody> |
|
192 | 178 |
</thead> |
179 |
+ <tbody> |
|
180 |
+ <tr v-for="(item, index) in manageResultDetail" :key="index"> |
|
181 |
+ <td>{{ index + 1 }}</td> |
|
182 |
+ <td>{{ item.error_data }}</td> |
|
183 |
+ <td>{{ item.error_data_cnt }}</td> |
|
184 |
+ </tr> |
|
185 |
+ </tbody> |
|
193 | 186 |
</table> |
194 | 187 |
</li> |
195 | 188 |
<li id="tab01" v-show="activeTab === 'tab1'"></li> |
... | ... | @@ -216,8 +209,10 @@ |
216 | 209 |
searchPath: mdiMagnify, |
217 | 210 |
inputValue: null, |
218 | 211 |
|
219 |
- //SELECT한 데이터 저장 리스트 |
|
220 | 212 |
manageResultList: [], |
213 |
+ manageResultDetail: [], |
|
214 |
+ selectedResultName: null, |
|
215 |
+ |
|
221 | 216 |
//옵션리스트 |
222 | 217 |
dbmsOption: [], |
223 | 218 |
schemaOption: [], |
... | ... | @@ -271,7 +266,7 @@ |
271 | 266 |
selectExecResult: function () { |
272 | 267 |
const vm = this; |
273 | 268 |
if (vm.$checkLogin() == true) { |
274 |
- return; |
|
269 |
+ return; |
|
275 | 270 |
} |
276 | 271 |
axios({ |
277 | 272 |
url: "selectExecResult.json", |
... | ... | @@ -347,8 +342,38 @@ |
347 | 342 |
}); |
348 | 343 |
}, |
349 | 344 |
|
350 |
- tableSelect: function () { |
|
351 |
- this.isModalOpen = true; |
|
345 |
+ tableSelect: function (index) { |
|
346 |
+ const vm = this; |
|
347 |
+ vm.isModalOpen = true; |
|
348 |
+ vm.selectedResultName = vm.manageResultList[index].column_nm; |
|
349 |
+ vm.manageResultDetail = []; |
|
350 |
+ |
|
351 |
+ const error_nm = this.manageResultList[index].error_nm; |
|
352 |
+ const error_nm_array = error_nm || []; |
|
353 |
+ |
|
354 |
+ function findErrorDataIndex(error_data, manageResultDetail) { |
|
355 |
+ for (let i = 0; i < manageResultDetail.length; i++) { |
|
356 |
+ if (manageResultDetail[i].error_data === error_data) { |
|
357 |
+ return i; |
|
358 |
+ } |
|
359 |
+ } |
|
360 |
+ return -1; |
|
361 |
+ } |
|
362 |
+ |
|
363 |
+ for (let i = 0; i < error_nm_array.length; i++) { |
|
364 |
+ const error_data = error_nm_array[i]; |
|
365 |
+ const errorDataIndex = findErrorDataIndex(error_data, vm.manageResultDetail); |
|
366 |
+ if (errorDataIndex !== -1) { |
|
367 |
+ vm.manageResultDetail[errorDataIndex].error_data_cnt++; |
|
368 |
+ } else { |
|
369 |
+ vm.manageResultDetail.push({ |
|
370 |
+ error_data: error_data, |
|
371 |
+ error_data_cnt: 1 |
|
372 |
+ }); |
|
373 |
+ } |
|
374 |
+ } |
|
375 |
+ |
|
376 |
+ console.log(manageResultDetail); |
|
352 | 377 |
}, |
353 | 378 |
|
354 | 379 |
// 탭 변경 |
... | ... | @@ -360,7 +385,7 @@ |
360 | 385 |
}, |
361 | 386 |
|
362 | 387 |
//페이지네이션 클릭 이벤트 |
363 |
- handlePageClick() {}, |
|
388 |
+ handlePageClick() { }, |
|
364 | 389 |
|
365 | 390 |
//검색버튼을 눌렀을 시 |
366 | 391 |
setPage: function () { |
... | ... | @@ -402,7 +427,8 @@ |
402 | 427 |
</script> |
403 | 428 |
|
404 | 429 |
<style scoped> |
405 |
-.execRuleResultTable tr td select, input { |
|
406 |
- width: 100%; |
|
430 |
+.execRuleResultTable tr td select, |
|
431 |
+input { |
|
432 |
+ width: 100%; |
|
407 | 433 |
} |
408 | 434 |
</style> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?