
+++ client/resources/img/component/ex_img.png
Binary file is not shown |
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
... | ... | @@ -14,6 +14,7 @@ |
14 | 14 |
import bn014 from "../pages/Business/Bn014.vue"; //출고등록 (내수) |
15 | 15 |
import bn015 from "../pages/Business/Bn015.vue"; //공정등록 (타발) |
16 | 16 |
import bn016 from "../pages/Business/Bn016.vue"; //공정등록 (검수) |
17 |
+import bn017 from "../pages/Business/Bn017.vue"; //컬러이미지 예시 |
|
17 | 18 |
|
18 | 19 |
|
19 | 20 |
|
... | ... | @@ -34,6 +35,7 @@ |
34 | 35 |
{ path: "/bn014.page", name: "bn014", component: bn014 }, //출고등록 (내수) |
35 | 36 |
{ path: "/bn015.page", name: "bn015", component: bn015 }, //공정등록 (타발) |
36 | 37 |
{ path: "/bn016.page", name: "bn016", component: bn016 }, //공정등록 (검수) |
38 |
+ { path: "/bn017.page", name: "bn017", component: bn017 }, //컬러이미지 예시 |
|
37 | 39 |
|
38 | 40 |
|
39 | 41 |
]; |
+++ client/views/pages/Business/Bn017.vue
... | ... | @@ -0,0 +1,753 @@ |
1 | +<template> | |
2 | + <div class=""> | |
3 | + <img src="../../../resources/img/component/ex_img.png" alt="" > | |
4 | + </div> | |
5 | + | |
6 | + | |
7 | +</template> | |
8 | + | |
9 | +<script> | |
10 | +import axios from "axios"; | |
11 | +import Autocomplete from '../component/Autocomplete.vue'; | |
12 | +import AutocompleteList from '../component/AutocompleteList.vue'; | |
13 | +import SvgIcon from '@jamescoyle/vue-icon'; | |
14 | +import { mdiArrowRightBold, mdiArrowLeftBold, mdiClose } from '@mdi/js'; | |
15 | + | |
16 | + | |
17 | +export default { | |
18 | + name: "#tabs", | |
19 | + data() { | |
20 | + return { | |
21 | + currentTab: 0, | |
22 | + tabs:['NO1','NO2','NO3','NO4','NO5'], | |
23 | + tabList:['1','2','3','4','5','6','7','8','9','10','11'], | |
24 | + mdiArrowRightBold: mdiArrowRightBold, | |
25 | + mdiArrowLeftBold: mdiArrowLeftBold, | |
26 | + mdiClose: mdiClose, | |
27 | + popupOpen: false, | |
28 | + popupOpen2: false, | |
29 | + selectedIndex: null, | |
30 | + selectedIndexPopup: null, | |
31 | + selectedIndexPopup2: null, | |
32 | + selectedListIndex: null, | |
33 | + | |
34 | + // 인서트 업데이트 구분 | |
35 | + isInsert: false, | |
36 | + | |
37 | + selectedList: { | |
38 | + CUSTCD: "", | |
39 | + CUSTNM: "", | |
40 | + }, | |
41 | + lists: [], | |
42 | + items: { | |
43 | + REMARK: "", | |
44 | + resbody: [] | |
45 | + }, | |
46 | + popupItems: [], | |
47 | + selectedPopupItems: [], | |
48 | + selectedCompany: { | |
49 | + COMPCD: "", | |
50 | + SANAME: "" | |
51 | + }, | |
52 | + selectClient: { | |
53 | + CUSTCD: "", | |
54 | + JSNAME: "", | |
55 | + ITEMCD: "", | |
56 | + ITEMNM: "", | |
57 | + YNUSAG: "" | |
58 | + }, | |
59 | + selectPopupClient: { | |
60 | + CUSTCD: "", | |
61 | + JSNAME: "", | |
62 | + ITEMCD: "", | |
63 | + ITEMNM: "", | |
64 | + }, | |
65 | + compResult: [], | |
66 | + itemResult: [], | |
67 | + selectedStartDate: "", | |
68 | + selectedEndDate: "", | |
69 | + selectOption: false, | |
70 | + selectedOrder: "", | |
71 | + | |
72 | + firstExec: true, | |
73 | + saleList: [], | |
74 | + }; | |
75 | + }, | |
76 | + methods: { | |
77 | + focusOnAutocomplete() { | |
78 | + this.$refs.autocomplete.$el.querySelector('input').focus(); | |
79 | + }, | |
80 | + focusOnAutocomplete3() { | |
81 | + this.$refs.autocomplete3.$el.querySelector('input').focus(); | |
82 | + }, | |
83 | + focusOnAutocompleteList() { | |
84 | + this.$refs.autocompleteList.$el.querySelector('input').focus(); | |
85 | + }, | |
86 | + focusOnNextInput() { | |
87 | + this.$refs.nextInput.focus(); | |
88 | + }, | |
89 | + focusOnPopAutocomplete() { | |
90 | + this.$refs.autocomplete2.$el.querySelector('input').focus(); | |
91 | + }, | |
92 | + focusOnPopAutocompleteList() { | |
93 | + this.$refs.autocompleteList2.$el.querySelector('input').focus(); | |
94 | + }, | |
95 | + focusOnNextPopInput() { | |
96 | + this.$refs.nextPopInput.focus(); | |
97 | + }, | |
98 | + openPopup() { | |
99 | + this.popupOpen = true; | |
100 | + this.searchSelOrder(); | |
101 | + }, | |
102 | + openPopup2() { | |
103 | + this.popupOpen2 = true; | |
104 | + this.searchSelOrder(); | |
105 | + }, | |
106 | + closePopup() { | |
107 | + this.popupOpen = false; | |
108 | + this.popupOpen2 = false; | |
109 | + | |
110 | + }, | |
111 | + selectRowPopup(index) { | |
112 | + this.selectedIndexPopup = index; | |
113 | + }, | |
114 | + selectRowPopup2(index) { | |
115 | + this.selectedIndexPopup2 = index; | |
116 | + }, | |
117 | + selectRow(index) { | |
118 | + this.selectedIndex = index; | |
119 | + }, | |
120 | + selectList(list, index) { | |
121 | + this.selectedList = list; | |
122 | + this.selectedListIndex = index; | |
123 | + this.isInsert = false; | |
124 | + this.selectedOrder = ""; | |
125 | + this.searchDetailOrder(); | |
126 | + }, | |
127 | + | |
128 | + // 초기화 메소드 | |
129 | + resetForm() { | |
130 | + // 거래처 및 품목 관련 정보 초기화 | |
131 | + this.selectClient.CUSTCD = ''; // 거래처 코드 초기화 | |
132 | + this.selectClient.ITEMCD = ''; // 품목 코드 초기화 | |
133 | + | |
134 | + if (this.$refs.autocomplete) { | |
135 | + this.$refs.autocomplete.resetAutocomplete(); | |
136 | + } | |
137 | + if (this.$refs.autocompleteList) { | |
138 | + this.$refs.autocompleteList.resetAutocompleteList(); | |
139 | + } | |
140 | + | |
141 | + // 발주기간 초기화 | |
142 | + this.getDaysOfMonth(); | |
143 | + | |
144 | + }, | |
145 | + | |
146 | + // 입력창 초기화 | |
147 | + resetOrder() { | |
148 | + this.items = { | |
149 | + ORDDAT: "", | |
150 | + ORDNOX: "", | |
151 | + REMARK: "", | |
152 | + resbody: [] | |
153 | + }; | |
154 | + if (this.$refs.autocomplete3) { | |
155 | + this.$refs.autocomplete3.resetAutocomplete(); | |
156 | + } | |
157 | + this.selectedList = { | |
158 | + CUSTCD: "", | |
159 | + CUSTNM: "", | |
160 | + }; | |
161 | + this.selectedPopupItems = []; | |
162 | + this.selectedOrder = null; | |
163 | + this.isInsert = true; | |
164 | + this.getOneOfMonth(); | |
165 | + }, | |
166 | + // 공통 - 사업장목록 | |
167 | + searchCompany() { | |
168 | + const vm = this; | |
169 | + axios({ | |
170 | + url: "https://jv.ajinpaper.app/Common/comp_cm.do", | |
171 | + method: "post", | |
172 | + }).then(function (response) { | |
173 | + vm.selectedCompany = response.data.resultData[0]; | |
174 | + }).catch(function (error) { | |
175 | + console.log(error); | |
176 | + }); | |
177 | + }, | |
178 | + | |
179 | + // 거래처 검색에서 데이터 가져오기 | |
180 | + handleResultSelected(result, identifier) { | |
181 | + if (identifier === 'search') { | |
182 | + this.selectClient.CUSTCD = result.CUSTCD; | |
183 | + } else if (identifier === 'popup') { | |
184 | + this.selectPopupClient.CUSTCD = result.CUSTCD; | |
185 | + this.selectPopupClient.JSNAME = result.JSNAME; | |
186 | + } else if (identifier === 'post') { | |
187 | + this.selectedList.CUSTCD = result.CUSTCD; | |
188 | + } | |
189 | + }, | |
190 | + // 공통 품목에서 데이터 가져오기 | |
191 | + handleItemSelected(result, identifier) { | |
192 | + if (identifier === 'search') { | |
193 | + this.selectClient.ITEMCD = result.ITEMCD; | |
194 | + this.selectClient.ITEMNM = result.ITEMNM; | |
195 | + } else if (identifier === 'popup') { | |
196 | + this.selectPopupClient.ITEMCD = result.ITEMCD; | |
197 | + this.selectPopupClient.ITEMNM = result.ITEMNM; | |
198 | + } | |
199 | + }, | |
200 | + // 거래처 코드 입력 시 거래처 아이디 가져오기 | |
201 | + lookupJSNAME(custcd, type) { | |
202 | + const matchedClient = this.compResult.find(client => client.CUSTCD === custcd); | |
203 | + if (matchedClient) { | |
204 | + if (type === "search") { | |
205 | + this.$refs.autocomplete.search = matchedClient.JSNAME; | |
206 | + } else if (type === "popup") { | |
207 | + this.$refs.autocomplete2.search = matchedClient.JSNAME; | |
208 | + } else if (type === "post") { | |
209 | + this.$refs.autocomplete3.search = matchedClient.JSNAME; | |
210 | + } | |
211 | + } else { | |
212 | + if (type === "search") { | |
213 | + this.$refs.autocomplete.search = ""; | |
214 | + } else if (type === "popup") { | |
215 | + this.$refs.autocomplete2.search = ""; | |
216 | + } else if (type === "post") { | |
217 | + this.$refs.autocomplete3.search = ""; | |
218 | + } | |
219 | + } | |
220 | + }, | |
221 | + // 품목 코드 입력 시 품목 아이디 가져오기 | |
222 | + lookupITEMNM(itemcd, type) { | |
223 | + const lowerItemcd = itemcd.toLowerCase(); | |
224 | + const matchedItem = this.itemResult.find(client => client.ITEMCD.toLowerCase() === lowerItemcd); | |
225 | + | |
226 | + if (matchedItem) { | |
227 | + if (type === "search") { | |
228 | + this.$refs.autocompleteList.searchList = matchedItem.ITEMNM; | |
229 | + } else if (type === "popup") { | |
230 | + this.$refs.autocompleteList2.searchList = matchedItem.ITEMNM; | |
231 | + } | |
232 | + } else { | |
233 | + if (type === "search") { | |
234 | + this.$refs.autocompleteList.searchList = ""; | |
235 | + } else if (type === "popup") { | |
236 | + this.$refs.autocompleteList2.searchList = ""; | |
237 | + } | |
238 | + } | |
239 | + }, | |
240 | + | |
241 | + compResults(results) { | |
242 | + this.compResult = results; | |
243 | + }, | |
244 | + itemResults(results) { | |
245 | + this.itemResult = results; | |
246 | + }, | |
247 | + | |
248 | + // 출고등록 – 출고 내역 조회 | |
249 | + searchOrder() { | |
250 | + const vm = this; | |
251 | + let formattedStartDate = "" | |
252 | + let formattedEndDate = "" | |
253 | + if (vm.selectedStartDate.trim() && vm.selectedEndDate.trim()) { | |
254 | + let startParts = vm.selectedStartDate.split('-'); | |
255 | + formattedStartDate = startParts[0] + startParts[1] + startParts[2]; | |
256 | + | |
257 | + let endParts = vm.selectedEndDate.split('-'); | |
258 | + formattedEndDate = endParts[0] + endParts[1] + endParts[2]; | |
259 | + } else { | |
260 | + alert("출고 내역 조회 오류 : 출고기간을 지정해주세요 !"); | |
261 | + return; | |
262 | + } | |
263 | + axios({ | |
264 | + url: "https://jv.ajinpaper.app/SD/sale_list_tot.do", | |
265 | + method: "post", | |
266 | + data: { | |
267 | + compcd: vm.selectedCompany.COMPCD, | |
268 | + custcd: vm.selectClient.CUSTCD, | |
269 | + itemcd: vm.selectClient.ITEMCD, | |
270 | + stdate: formattedStartDate, | |
271 | + endate: formattedEndDate, | |
272 | + }, | |
273 | + }).then(function (response) { | |
274 | + console.log(response); | |
275 | + if (response.data.resultData.length === 0) { | |
276 | + if (!vm.firstExec) { | |
277 | + alert("조회된 데이터가 없습니다!"); | |
278 | + } | |
279 | + vm.firstExec = false; | |
280 | + return; | |
281 | + } | |
282 | + | |
283 | + vm.lists = response.data.resultData; | |
284 | + vm.firstExec = false; | |
285 | + }).catch(function (error) { | |
286 | + console.log(error); | |
287 | + vm.firstExec = false; | |
288 | + }); | |
289 | + }, | |
290 | + | |
291 | + // 출고등록 – 출고 상세 조회 | |
292 | + searchDetailOrder() { | |
293 | + const vm = this; | |
294 | + axios({ | |
295 | + url: "https://jv.ajinpaper.app/SD/sale_list_detail.do", | |
296 | + method: "post", | |
297 | + data: { | |
298 | + compcd: vm.selectedCompany.COMPCD, | |
299 | + chdate: vm.selectedList.CHDATE, | |
300 | + chnoxx: vm.selectedList.CHNOXX, | |
301 | + }, | |
302 | + }).then(function (response) { | |
303 | + console.log(response); | |
304 | + if (response.data.resultData.resbody) { | |
305 | + vm.items = response.data.resultData; | |
306 | + } else { | |
307 | + vm.resetOrder(); | |
308 | + } | |
309 | + }).catch(function (error) { | |
310 | + console.log(error); | |
311 | + }); | |
312 | + }, | |
313 | + | |
314 | + // 출고등록 – 출고 대상 조회 | |
315 | + searchSelOrder() { | |
316 | + const vm = this; | |
317 | + axios({ | |
318 | + url: "https://jv.ajinpaper.app/SD/sale_sel_tot.do", | |
319 | + method: "post", | |
320 | + data: { | |
321 | + itemcd: vm.selectPopupClient.ITEMCD, | |
322 | + }, | |
323 | + }).then(function (response) { | |
324 | + console.log(response); | |
325 | + if (response.data.resultData.length === 0) { | |
326 | + alert("조회된 데이터가 없습니다!"); | |
327 | + return; | |
328 | + } | |
329 | + | |
330 | + vm.popupItems = response.data.resultData; | |
331 | + vm.filterPopupItems(); | |
332 | + }).catch(function (error) { | |
333 | + console.log(error); | |
334 | + }); | |
335 | + }, | |
336 | + | |
337 | + // 출고등록 – 출고구분 | |
338 | + searchSaleList() { | |
339 | + const vm = this; | |
340 | + var itemUrl = "https://jv.ajinpaper.app/SD/sale_gubun_list.do?value="; | |
341 | + | |
342 | + axios({ | |
343 | + url: itemUrl, | |
344 | + method: "post", | |
345 | + }).then(function (response) { | |
346 | + vm.saleList = response.data.resultData; | |
347 | + }).catch(function (error) { | |
348 | + console.log(error); | |
349 | + }); | |
350 | + }, | |
351 | + | |
352 | + // 출고 등록 - 출고 내역 저장 | |
353 | + insertOrder() { | |
354 | + const vm = this; | |
355 | + | |
356 | + if (vm.isInsert === false) { | |
357 | + alert("초기화 시켜주세요!") | |
358 | + return; | |
359 | + } | |
360 | + | |
361 | + if (!vm.items.CHDATE) { | |
362 | + alert("출고 일자를 정해주세요!") | |
363 | + return; | |
364 | + } | |
365 | + | |
366 | + if (!vm.selectedList.CUSTCD) { | |
367 | + alert("거래처를 정해주세요!") | |
368 | + return; | |
369 | + } | |
370 | + const hasInvalid = vm.items.resbody.some(item => { | |
371 | + return !item.ORDQTY || !item.NAPDAT; | |
372 | + }); | |
373 | + | |
374 | + if (hasInvalid) { | |
375 | + alert('발주수량 또는 최종납기일이 비어 있습니다.'); | |
376 | + return; | |
377 | + } | |
378 | + const reqbody = vm.items.resbody.map(item => { | |
379 | + const newItem = {}; | |
380 | + for (const key in item) { | |
381 | + const lowerKey = key.toLowerCase(); | |
382 | + if (key !== 'orddat') { | |
383 | + if (key === 'ORDQTY') { | |
384 | + newItem[lowerKey] = Number(item[key]); | |
385 | + } else { | |
386 | + newItem[lowerKey] = item[key]; | |
387 | + } | |
388 | + } | |
389 | + } | |
390 | + return newItem; | |
391 | + }); | |
392 | + | |
393 | + axios({ | |
394 | + url: "", | |
395 | + method: "post", | |
396 | + data: { | |
397 | + newynx: 'Y', | |
398 | + compcd: vm.selectedCompany.COMPCD, | |
399 | + orddat: vm.items.ORDDAT, | |
400 | + custcd: vm.selectedList.CUSTCD, | |
401 | + remark: vm.items.REMARK, | |
402 | + reqbody: reqbody | |
403 | + }, | |
404 | + }).then(function (response) { | |
405 | + console.log("저장 결과 : " + response); | |
406 | + if (response.data.resultCode === 200) { | |
407 | + const orderInfo = response.data.resultData.ORDERINFO; | |
408 | + const orderDate = orderInfo.substring(0, 8); | |
409 | + const orderNum = orderInfo.substring(8); | |
410 | + | |
411 | + const formattedDate = `${orderDate.substring(0, 4)}-${orderDate.substring(4, 6)}-${orderDate.substring(6, 8)}`; | |
412 | + | |
413 | + vm.selectedList.ORDDAT = orderDate; | |
414 | + vm.selectedList.ORDNOX = orderNum; | |
415 | + vm.selectedStartDate = formattedDate; | |
416 | + vm.selectedEndDate = formattedDate; | |
417 | + vm.searchDetailOrder(); | |
418 | + | |
419 | + vm.searchOrder(); | |
420 | + alert("항목이 성공적으로 신규 입력되었습니다."); | |
421 | + } else { | |
422 | + alert("신규 입력에 실패했습니다."); | |
423 | + | |
424 | + } | |
425 | + }).catch(function (error) { | |
426 | + alert("신규 입력에 실패했습니다."); | |
427 | + console.log(error); | |
428 | + }); | |
429 | + }, | |
430 | + // 발주 등록(제품) - 발주 내역 수정 | |
431 | + updateOrder() { | |
432 | + const vm = this; | |
433 | + if (vm.items.ORDNOX === "") { | |
434 | + alert("수정할 데이터를 정해주세요!") | |
435 | + return; | |
436 | + } | |
437 | + | |
438 | + if (!vm.items.ORDDAT) { | |
439 | + alert("발주 일자를 정해주세요!") | |
440 | + return; | |
441 | + } | |
442 | + | |
443 | + if (!vm.selectedList.CUSTCD) { | |
444 | + alert("거래처를 정해주세요!") | |
445 | + return; | |
446 | + } | |
447 | + const hasInvalid = vm.items.resbody.some(item => { | |
448 | + return !item.ORDQTY || !item.NAPDAT; | |
449 | + }); | |
450 | + | |
451 | + if (hasInvalid) { | |
452 | + alert('발주수량 또는 최종납기일이 비어 있습니다.'); | |
453 | + return; | |
454 | + } | |
455 | + | |
456 | + const reqbody = (() => { | |
457 | + let maxSeq = 0; // seqxxx를 넣기 위한 작업 | |
458 | + vm.items.resbody.forEach(item => { | |
459 | + if (item.SEQXXX && item.SEQXXX > maxSeq) { | |
460 | + maxSeq = item.SEQXXX; | |
461 | + } | |
462 | + }); | |
463 | + | |
464 | + return vm.items.resbody.map(item => { | |
465 | + const newItem = {}; | |
466 | + const excludedKeys = ['custcd', 'ordnox', 'compcd', 'orddat']; // 제외할 키를 지정 | |
467 | + const defaultKeys = ['divdat', 'kukexx']; | |
468 | + | |
469 | + for (const key in item) { | |
470 | + const lowerKey = key.toLowerCase(); | |
471 | + if (!excludedKeys.includes(lowerKey)) { | |
472 | + if (key === 'ORDQTY') { | |
473 | + newItem[lowerKey] = Number(item[key]); | |
474 | + } else { | |
475 | + newItem[lowerKey] = item[key]; | |
476 | + } | |
477 | + | |
478 | + } | |
479 | + } | |
480 | + defaultKeys.forEach(defaultKey => { | |
481 | + if (!(defaultKey in newItem)) { | |
482 | + newItem[defaultKey] = ''; | |
483 | + } | |
484 | + }); | |
485 | + | |
486 | + // seqxxx 처리 | |
487 | + if (!('seqxxx' in newItem)) { | |
488 | + maxSeq += 1; | |
489 | + newItem['seqxxx'] = maxSeq; | |
490 | + } | |
491 | + | |
492 | + return newItem; | |
493 | + }); | |
494 | + })(); | |
495 | + | |
496 | + axios({ | |
497 | + url: "", | |
498 | + method: "post", | |
499 | + data: { | |
500 | + newynx: 'N', | |
501 | + compcd: vm.selectedCompany.COMPCD, | |
502 | + orddat: vm.items.ORDDAT, | |
503 | + ordnox: vm.items.ORDNOX, | |
504 | + custcd: vm.selectedList.CUSTCD, | |
505 | + remark: vm.items.REMARK, | |
506 | + reqbody: reqbody | |
507 | + }, | |
508 | + }).then(function (response) { | |
509 | + console.log("수정 결과 : " + response); | |
510 | + if (response.data.resultCode === 200) { | |
511 | + vm.searchDetailOrder(); | |
512 | + alert("항목이 성공적으로 수정되었습니다."); | |
513 | + } else { | |
514 | + alert("항목 수정에 실패했습니다."); | |
515 | + } | |
516 | + | |
517 | + }).catch(function (error) { | |
518 | + alert("항목 수정에 실패했습니다."); | |
519 | + console.log(error); | |
520 | + }); | |
521 | + }, | |
522 | + // 발주 등록(제품) - 발주 상세 삭제 | |
523 | + deleteDetailOrder() { | |
524 | + const vm = this; | |
525 | + if (!vm.selectedOrder) { | |
526 | + alert("삭제할 제품을 선택해주세요!"); | |
527 | + return; | |
528 | + } | |
529 | + axios({ | |
530 | + url: "", | |
531 | + method: "post", | |
532 | + data: { | |
533 | + compcd: vm.selectedCompany.COMPCD, | |
534 | + orddat: vm.items.ORDDAT, | |
535 | + ordnox: vm.items.ORDNOX, | |
536 | + seqxxx: vm.selectedOrder, | |
537 | + }, | |
538 | + }).then(function (response) { | |
539 | + console.log(response); | |
540 | + if (response.data.resultCode === 200) { | |
541 | + vm.searchDetailOrder(); | |
542 | + vm.searchOrder(); | |
543 | + alert("항목이 성공적으로 삭제되었습니다."); | |
544 | + } else { | |
545 | + alert("항목 삭제에 실패했습니다."); | |
546 | + } | |
547 | + }).catch(function (error) { | |
548 | + alert("항목 삭제에 실패했습니다."); | |
549 | + console.log(error); | |
550 | + }); | |
551 | + }, | |
552 | + | |
553 | + // 팝업 데이터 왼쪽에서 오른쪽으로 이동시키기 | |
554 | + moveToSelectedItems() { | |
555 | + if (this.selectedIndexPopup !== null && this.popupItems[this.selectedIndexPopup]) { | |
556 | + if (this.selectedPopupItems.length < 15) { | |
557 | + let selectedItem = this.popupItems.splice(this.selectedIndexPopup, 1)[0]; | |
558 | + this.selectedPopupItems.push(selectedItem); | |
559 | + this.selectedIndexPopup = null; | |
560 | + this.selectedPopupItems = [...this.selectedPopupItems.sort((a, b) => a.ITEMCD.localeCompare(b.ITEMCD))]; | |
561 | + } else { | |
562 | + alert("최대 15개의 품목만 선택할 수 있습니다."); | |
563 | + } | |
564 | + } | |
565 | + }, | |
566 | + // 팝업 데이터 오른쪽에서 왼쪽으로 이동시키기 | |
567 | + moveToPopupItems() { | |
568 | + if (this.selectedIndexPopup2 !== null && this.selectedPopupItems[this.selectedIndexPopup2]) { | |
569 | + let selectedItem = this.selectedPopupItems.splice(this.selectedIndexPopup2, 1)[0]; | |
570 | + this.popupItems.push(selectedItem); | |
571 | + this.selectedIndexPopup2 = null; | |
572 | + } | |
573 | + this.popupItems = [...this.popupItems.sort((a, b) => a.ITEMCD.localeCompare(b.ITEMCD))]; | |
574 | + | |
575 | + }, | |
576 | + // 팝업 데이터 저장 | |
577 | + saveSelectItem() { | |
578 | + this.selectedPopupItems.forEach(item => { | |
579 | + const isExist = this.items.resbody.some(resItem => resItem.ITEMCD === item.ITEMCD); | |
580 | + | |
581 | + // 동일한 ITEMCD를 가진 항목이 없으면 새 항목을 추가 | |
582 | + if (!isExist) { | |
583 | + this.items.resbody.push(item); | |
584 | + } | |
585 | + }); | |
586 | + this.selectedPopupItems = []; | |
587 | + this.closePopup(); | |
588 | + | |
589 | + }, | |
590 | + filterPopupItems() { | |
591 | + this.selectedPopupItems = [...this.items.resbody]; | |
592 | + | |
593 | + this.popupItems = this.popupItems.filter(popupItem => { | |
594 | + return !this.selectedPopupItems.some(selectedItem => selectedItem.ITEMCD === popupItem.ITEMCD); | |
595 | + }); | |
596 | + }, | |
597 | + // 삭제할 발주 지정 | |
598 | + uncheckOrder(seqxxx) { | |
599 | + if (this.selectedOrder === seqxxx) { | |
600 | + this.selectedOrder = null; | |
601 | + } else { | |
602 | + this.selectedOrder = seqxxx; | |
603 | + } | |
604 | + }, | |
605 | + // 발주기간 시작 날짜 지정 | |
606 | + getDaysOfMonth() { | |
607 | + var date = new Date(); | |
608 | + | |
609 | + var today = date.getFullYear() + "-"; | |
610 | + var firstday = date.getFullYear() + "-"; | |
611 | + var todayMonth = date.getMonth() + 1; | |
612 | + if (todayMonth < 10) { | |
613 | + today += "0"; | |
614 | + firstday += "0"; | |
615 | + } | |
616 | + today += todayMonth + "-"; | |
617 | + var todayDate = date.getDate(); | |
618 | + if (todayDate < 10) { | |
619 | + today += "0"; | |
620 | + } | |
621 | + today += todayDate; | |
622 | + | |
623 | + firstday += todayMonth + "-01"; | |
624 | + | |
625 | + this.selectedStartDate = firstday; | |
626 | + this.selectedEndDate = today; | |
627 | + }, | |
628 | + // 발주날짜 시작 날짜 지정 | |
629 | + getOneOfMonth() { | |
630 | + var date = new Date(); | |
631 | + | |
632 | + this.items.ORDDAT = date.getFullYear(); | |
633 | + var todayMonth = date.getMonth() + 1; | |
634 | + if (todayMonth < 10) { | |
635 | + this.items.ORDDAT += "0"; | |
636 | + } | |
637 | + this.items.ORDDAT += todayMonth + "01"; | |
638 | + }, | |
639 | + // 조회 결과로 나오는 발주일 하이픈 추가 | |
640 | + formatDATE(dateStr) { | |
641 | + if (dateStr) { | |
642 | + const year = dateStr.substring(0, 4); | |
643 | + const month = dateStr.substring(4, 6); | |
644 | + const day = dateStr.substring(6, 8); | |
645 | + | |
646 | + return `${year}-${month}-${day}`; | |
647 | + } | |
648 | + return ''; | |
649 | + }, | |
650 | + parseDATE(formatDate) { | |
651 | + if (formatDate) { | |
652 | + const parts = formatDate.split('-'); | |
653 | + return parts.join(''); | |
654 | + } | |
655 | + return ''; | |
656 | + }, | |
657 | + updateNAPDAT(index, formatDate) { | |
658 | + this.items.resbody[index].NAPDAT = this.parseDATE(formatDate); | |
659 | + }, | |
660 | + }, | |
661 | + watch: { | |
662 | + 'selectClient.CUSTCD'(newVal) { | |
663 | + if (newVal) { | |
664 | + this.lookupJSNAME(newVal, "search"); | |
665 | + } | |
666 | + }, | |
667 | + 'selectPopupClient.CUSTCD'(newVal) { | |
668 | + if (newVal) { | |
669 | + this.lookupJSNAME(newVal, "popup"); | |
670 | + } | |
671 | + }, | |
672 | + 'selectedList.CUSTCD'(newVal) { | |
673 | + if (newVal) { | |
674 | + this.lookupJSNAME(newVal, "post"); | |
675 | + } | |
676 | + }, | |
677 | + | |
678 | + 'selectClient.ITEMCD'(newVal) { | |
679 | + if (newVal) { | |
680 | + this.lookupITEMNM(newVal, "search"); | |
681 | + } | |
682 | + }, | |
683 | + 'selectPopupClient.ITEMCD'(newVal) { | |
684 | + if (newVal) { | |
685 | + this.lookupITEMNM(newVal, "popup"); | |
686 | + } | |
687 | + }, | |
688 | + }, | |
689 | + computed: { | |
690 | + // 입력창의 발주일 하이픈 조정 | |
691 | + formattedCHDATE: { | |
692 | + get() { | |
693 | + if (this.items.CHDATE && this.items.CHDATE.length === 8) { | |
694 | + return `${this.items.CHDATE.substring(0, 4)}-${this.items.CHDATE.substring(4, 6)}-${this.items.CHDATE.substring(6, 8)}`; | |
695 | + } | |
696 | + return this.items.CHDATE; | |
697 | + }, | |
698 | + set(newValue) { | |
699 | + this.items.CHDATE = newValue.replace(/-/g, ''); | |
700 | + } | |
701 | + }, | |
702 | + | |
703 | + }, | |
704 | + components: { | |
705 | + Autocomplete, | |
706 | + AutocompleteList, | |
707 | + SvgIcon | |
708 | + }, | |
709 | + mounted() { | |
710 | + this.searchCompany(); | |
711 | + this.getDaysOfMonth(); | |
712 | + this.getOneOfMonth(); | |
713 | + this.searchOrder(); | |
714 | + }, | |
715 | + | |
716 | +}; | |
717 | +</script> | |
718 | +<style scoped> | |
719 | +input[ type="text"] { | |
720 | + width: 100%; | |
721 | + padding-left: 5px; | |
722 | +} | |
723 | + | |
724 | +select { | |
725 | + width: 50%; | |
726 | +} | |
727 | + | |
728 | +label { | |
729 | + margin-left: 10px; | |
730 | + vertical-align: middle; | |
731 | +} | |
732 | + | |
733 | +p { | |
734 | + word-break: keep-all; | |
735 | + | |
736 | +} | |
737 | + | |
738 | +th { | |
739 | + padding: 5px; | |
740 | + word-break: keep-all; | |
741 | +} | |
742 | +.active{ | |
743 | + color:var(--white) !important; | |
744 | + background-color: var(--mainblue) !important; | |
745 | +} | |
746 | + | |
747 | +.input-title { | |
748 | + font-size: 1.2rem; | |
749 | + font-weight: 500; | |
750 | +} | |
751 | + | |
752 | + | |
753 | +</style>(No newline at end of file) |
--- node_modules/.package-lock.json
+++ node_modules/.package-lock.json
... | ... | @@ -3176,6 +3176,77 @@ |
3176 | 3176 |
"punycode": "^2.1.0" |
3177 | 3177 |
} |
3178 | 3178 |
}, |
3179 |
+ "node_modules/url-loader": { |
|
3180 |
+ "version": "4.1.1", |
|
3181 |
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", |
|
3182 |
+ "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", |
|
3183 |
+ "dependencies": { |
|
3184 |
+ "loader-utils": "^2.0.0", |
|
3185 |
+ "mime-types": "^2.1.27", |
|
3186 |
+ "schema-utils": "^3.0.0" |
|
3187 |
+ }, |
|
3188 |
+ "engines": { |
|
3189 |
+ "node": ">= 10.13.0" |
|
3190 |
+ }, |
|
3191 |
+ "funding": { |
|
3192 |
+ "type": "opencollective", |
|
3193 |
+ "url": "https://opencollective.com/webpack" |
|
3194 |
+ }, |
|
3195 |
+ "peerDependencies": { |
|
3196 |
+ "file-loader": "*", |
|
3197 |
+ "webpack": "^4.0.0 || ^5.0.0" |
|
3198 |
+ }, |
|
3199 |
+ "peerDependenciesMeta": { |
|
3200 |
+ "file-loader": { |
|
3201 |
+ "optional": true |
|
3202 |
+ } |
|
3203 |
+ } |
|
3204 |
+ }, |
|
3205 |
+ "node_modules/url-loader/node_modules/ajv": { |
|
3206 |
+ "version": "6.12.6", |
|
3207 |
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", |
|
3208 |
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", |
|
3209 |
+ "dependencies": { |
|
3210 |
+ "fast-deep-equal": "^3.1.1", |
|
3211 |
+ "fast-json-stable-stringify": "^2.0.0", |
|
3212 |
+ "json-schema-traverse": "^0.4.1", |
|
3213 |
+ "uri-js": "^4.2.2" |
|
3214 |
+ }, |
|
3215 |
+ "funding": { |
|
3216 |
+ "type": "github", |
|
3217 |
+ "url": "https://github.com/sponsors/epoberezkin" |
|
3218 |
+ } |
|
3219 |
+ }, |
|
3220 |
+ "node_modules/url-loader/node_modules/ajv-keywords": { |
|
3221 |
+ "version": "3.5.2", |
|
3222 |
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", |
|
3223 |
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", |
|
3224 |
+ "peerDependencies": { |
|
3225 |
+ "ajv": "^6.9.1" |
|
3226 |
+ } |
|
3227 |
+ }, |
|
3228 |
+ "node_modules/url-loader/node_modules/json-schema-traverse": { |
|
3229 |
+ "version": "0.4.1", |
|
3230 |
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", |
|
3231 |
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" |
|
3232 |
+ }, |
|
3233 |
+ "node_modules/url-loader/node_modules/schema-utils": { |
|
3234 |
+ "version": "3.3.0", |
|
3235 |
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", |
|
3236 |
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", |
|
3237 |
+ "dependencies": { |
|
3238 |
+ "@types/json-schema": "^7.0.8", |
|
3239 |
+ "ajv": "^6.12.5", |
|
3240 |
+ "ajv-keywords": "^3.5.2" |
|
3241 |
+ }, |
|
3242 |
+ "engines": { |
|
3243 |
+ "node": ">= 10.13.0" |
|
3244 |
+ }, |
|
3245 |
+ "funding": { |
|
3246 |
+ "type": "opencollective", |
|
3247 |
+ "url": "https://opencollective.com/webpack" |
|
3248 |
+ } |
|
3249 |
+ }, |
|
3179 | 3250 |
"node_modules/util-deprecate": { |
3180 | 3251 |
"version": "1.0.2", |
3181 | 3252 |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |
--- package-lock.json
+++ package-lock.json
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 |
"file-loader": "^6.2.0", |
19 | 19 |
"fs": "^0.0.1-security", |
20 | 20 |
"new-line": "^1.1.1", |
21 |
+ "url-loader": "^4.1.1", |
|
21 | 22 |
"vue": "^3.3.4", |
22 | 23 |
"vue-loader": "^17.2.2", |
23 | 24 |
"vue-router": "^4.2.4", |
... | ... | @@ -3213,6 +3214,77 @@ |
3213 | 3214 |
"punycode": "^2.1.0" |
3214 | 3215 |
} |
3215 | 3216 |
}, |
3217 |
+ "node_modules/url-loader": { |
|
3218 |
+ "version": "4.1.1", |
|
3219 |
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", |
|
3220 |
+ "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", |
|
3221 |
+ "dependencies": { |
|
3222 |
+ "loader-utils": "^2.0.0", |
|
3223 |
+ "mime-types": "^2.1.27", |
|
3224 |
+ "schema-utils": "^3.0.0" |
|
3225 |
+ }, |
|
3226 |
+ "engines": { |
|
3227 |
+ "node": ">= 10.13.0" |
|
3228 |
+ }, |
|
3229 |
+ "funding": { |
|
3230 |
+ "type": "opencollective", |
|
3231 |
+ "url": "https://opencollective.com/webpack" |
|
3232 |
+ }, |
|
3233 |
+ "peerDependencies": { |
|
3234 |
+ "file-loader": "*", |
|
3235 |
+ "webpack": "^4.0.0 || ^5.0.0" |
|
3236 |
+ }, |
|
3237 |
+ "peerDependenciesMeta": { |
|
3238 |
+ "file-loader": { |
|
3239 |
+ "optional": true |
|
3240 |
+ } |
|
3241 |
+ } |
|
3242 |
+ }, |
|
3243 |
+ "node_modules/url-loader/node_modules/ajv": { |
|
3244 |
+ "version": "6.12.6", |
|
3245 |
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", |
|
3246 |
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", |
|
3247 |
+ "dependencies": { |
|
3248 |
+ "fast-deep-equal": "^3.1.1", |
|
3249 |
+ "fast-json-stable-stringify": "^2.0.0", |
|
3250 |
+ "json-schema-traverse": "^0.4.1", |
|
3251 |
+ "uri-js": "^4.2.2" |
|
3252 |
+ }, |
|
3253 |
+ "funding": { |
|
3254 |
+ "type": "github", |
|
3255 |
+ "url": "https://github.com/sponsors/epoberezkin" |
|
3256 |
+ } |
|
3257 |
+ }, |
|
3258 |
+ "node_modules/url-loader/node_modules/ajv-keywords": { |
|
3259 |
+ "version": "3.5.2", |
|
3260 |
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", |
|
3261 |
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", |
|
3262 |
+ "peerDependencies": { |
|
3263 |
+ "ajv": "^6.9.1" |
|
3264 |
+ } |
|
3265 |
+ }, |
|
3266 |
+ "node_modules/url-loader/node_modules/json-schema-traverse": { |
|
3267 |
+ "version": "0.4.1", |
|
3268 |
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", |
|
3269 |
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" |
|
3270 |
+ }, |
|
3271 |
+ "node_modules/url-loader/node_modules/schema-utils": { |
|
3272 |
+ "version": "3.3.0", |
|
3273 |
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", |
|
3274 |
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", |
|
3275 |
+ "dependencies": { |
|
3276 |
+ "@types/json-schema": "^7.0.8", |
|
3277 |
+ "ajv": "^6.12.5", |
|
3278 |
+ "ajv-keywords": "^3.5.2" |
|
3279 |
+ }, |
|
3280 |
+ "engines": { |
|
3281 |
+ "node": ">= 10.13.0" |
|
3282 |
+ }, |
|
3283 |
+ "funding": { |
|
3284 |
+ "type": "opencollective", |
|
3285 |
+ "url": "https://opencollective.com/webpack" |
|
3286 |
+ } |
|
3287 |
+ }, |
|
3216 | 3288 |
"node_modules/util-deprecate": { |
3217 | 3289 |
"version": "1.0.2", |
3218 | 3290 |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |
... | ... | @@ -5934,6 +6006,50 @@ |
5934 | 6006 |
"punycode": "^2.1.0" |
5935 | 6007 |
} |
5936 | 6008 |
}, |
6009 |
+ "url-loader": { |
|
6010 |
+ "version": "4.1.1", |
|
6011 |
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", |
|
6012 |
+ "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", |
|
6013 |
+ "requires": { |
|
6014 |
+ "loader-utils": "^2.0.0", |
|
6015 |
+ "mime-types": "^2.1.27", |
|
6016 |
+ "schema-utils": "^3.0.0" |
|
6017 |
+ }, |
|
6018 |
+ "dependencies": { |
|
6019 |
+ "ajv": { |
|
6020 |
+ "version": "6.12.6", |
|
6021 |
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", |
|
6022 |
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", |
|
6023 |
+ "requires": { |
|
6024 |
+ "fast-deep-equal": "^3.1.1", |
|
6025 |
+ "fast-json-stable-stringify": "^2.0.0", |
|
6026 |
+ "json-schema-traverse": "^0.4.1", |
|
6027 |
+ "uri-js": "^4.2.2" |
|
6028 |
+ } |
|
6029 |
+ }, |
|
6030 |
+ "ajv-keywords": { |
|
6031 |
+ "version": "3.5.2", |
|
6032 |
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", |
|
6033 |
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", |
|
6034 |
+ "requires": {} |
|
6035 |
+ }, |
|
6036 |
+ "json-schema-traverse": { |
|
6037 |
+ "version": "0.4.1", |
|
6038 |
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", |
|
6039 |
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" |
|
6040 |
+ }, |
|
6041 |
+ "schema-utils": { |
|
6042 |
+ "version": "3.3.0", |
|
6043 |
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", |
|
6044 |
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", |
|
6045 |
+ "requires": { |
|
6046 |
+ "@types/json-schema": "^7.0.8", |
|
6047 |
+ "ajv": "^6.12.5", |
|
6048 |
+ "ajv-keywords": "^3.5.2" |
|
6049 |
+ } |
|
6050 |
+ } |
|
6051 |
+ } |
|
6052 |
+ }, |
|
5937 | 6053 |
"util-deprecate": { |
5938 | 6054 |
"version": "1.0.2", |
5939 | 6055 |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |
--- package.json
+++ package.json
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 |
"file-loader": "^6.2.0", |
14 | 14 |
"fs": "^0.0.1-security", |
15 | 15 |
"new-line": "^1.1.1", |
16 |
+ "url-loader": "^4.1.1", |
|
16 | 17 |
"vue": "^3.3.4", |
17 | 18 |
"vue-loader": "^17.2.2", |
18 | 19 |
"vue-router": "^4.2.4", |
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?