

250318 방선주 영주 포탈 페이지 제거
@7c0cd30ef9551884558033ebab81c371371eb670
--- client/views/component/autoSearch/AutoSearch.vue
+++ client/views/component/autoSearch/AutoSearch.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div> |
3 | 3 |
<label for="" class="item-title mb5">{{ titleName }}</label> |
4 | 4 |
<div style="position: relative"> |
5 |
- <input type="text" v-model="inputValue" @input="handleInputChange" placeholder="거래처를 입력하세요" |
|
5 |
+ <input type="text" v-model="inputValue" @input="handleInputChange" placeholder="입력하세요" |
|
6 | 6 |
class="full-input" /> |
7 | 7 |
<Icon :path="mdiMagnify" size="1.2" class="search-icon" /> |
8 | 8 |
<ul class="auto-list" v-if="accountResults.length > 0"> |
--- client/views/component/companyInfo/BplcInsert.vue
... | ... | @@ -1,261 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div class="flex justify-between align-center no-gutters"> | |
10 | - <p class="summary-style pl10">관내사업장</p> | |
11 | - <div class="gd-1"> | |
12 | - <button | |
13 | - :class="{ | |
14 | - 'large-btn': true, | |
15 | - 'blue-border-btn': pageRole == 'adm', | |
16 | - 'green-border-btn': pageRole == 'government', | |
17 | - }" | |
18 | - @click="fnDataAdd" | |
19 | - > | |
20 | - 추가 | |
21 | - </button> | |
22 | - </div> | |
23 | - </div> | |
24 | - </summary> | |
25 | - <div class="pt10 pb10"> | |
26 | - <div | |
27 | - v-for="(bplc, index) in data" | |
28 | - :key="index" | |
29 | - v-show="bplc['useYn'] == 'Y'" | |
30 | - > | |
31 | - <table class="form-table"> | |
32 | - <colgroup> | |
33 | - <col width="50%" /> | |
34 | - <col width="50%" /> | |
35 | - </colgroup> | |
36 | - <tr> | |
37 | - <td> | |
38 | - <div class="gd-12 pr0"> | |
39 | - <label | |
40 | - :class="{ | |
41 | - 'form-title mb10': true, | |
42 | - 'point-font2': pageRole == 'adm', | |
43 | - 'point-font': pageRole == 'government', | |
44 | - }" | |
45 | - > | |
46 | - 사업장명 | |
47 | - </label> | |
48 | - <input | |
49 | - type="text" | |
50 | - class="full-input" | |
51 | - v-model="bplc.bplcNm" | |
52 | - ref="bplcNm" | |
53 | - placeholder="사업장명을 입력하세요." | |
54 | - /> | |
55 | - </div> | |
56 | - </td> | |
57 | - <td> | |
58 | - <div class="gd-12 pl0"> | |
59 | - <label | |
60 | - :class="{ | |
61 | - 'form-title mb10': true, | |
62 | - 'point-font2': pageRole == 'adm', | |
63 | - 'point-font': pageRole == 'government', | |
64 | - }" | |
65 | - > | |
66 | - 주생산품 | |
67 | - </label> | |
68 | - <input | |
69 | - type="text" | |
70 | - class="full-input" | |
71 | - v-model="bplc.mainPrdt" | |
72 | - ref="mainPrdt" | |
73 | - placeholder="주생산품을 입력하세요." | |
74 | - /> | |
75 | - </div> | |
76 | - </td> | |
77 | - </tr> | |
78 | - <tr> | |
79 | - <td> | |
80 | - <div class="gd-12 pr0"> | |
81 | - <label | |
82 | - :class="{ | |
83 | - 'form-title mb10': true, | |
84 | - 'point-font2': pageRole == 'adm', | |
85 | - 'point-font': pageRole == 'government', | |
86 | - }" | |
87 | - > | |
88 | - 주소 | |
89 | - </label> | |
90 | - <input | |
91 | - type="text" | |
92 | - class="full-input" | |
93 | - v-model="bplc.bplcAddr" | |
94 | - ref="bplcAddr" | |
95 | - placeholder="주소를 입력하세요." | |
96 | - /> | |
97 | - </div> | |
98 | - </td> | |
99 | - <td> | |
100 | - <div class="gd-12 pl0"> | |
101 | - <label | |
102 | - :class="{ | |
103 | - 'form-title mb10': true, | |
104 | - 'point-font2': pageRole == 'adm', | |
105 | - 'point-font': pageRole == 'government', | |
106 | - }" | |
107 | - > | |
108 | - 대지면적 | |
109 | - </label> | |
110 | - <div class="flex"> | |
111 | - <div class="gd-6 pl0"> | |
112 | - <input | |
113 | - type="text" | |
114 | - class="full-input" | |
115 | - v-model.trim="bplc.bplcSiar" | |
116 | - ref="bplcSiar" | |
117 | - placeholder="대지면적을 입력하세요." | |
118 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
119 | - /> | |
120 | - </div> | |
121 | - <div class="gd-6 pr0"> | |
122 | - <select | |
123 | - class="full-input" | |
124 | - v-model="bplc.bplcSiarUnit" | |
125 | - ref="bplcSiarUnit" | |
126 | - > | |
127 | - <option value="">대지면적단위를 선택하세요</option> | |
128 | - <option | |
129 | - v-for="(item, idx) in codeList" | |
130 | - :key="idx" | |
131 | - :value="item.cd" | |
132 | - > | |
133 | - {{ item.cdNm }} | |
134 | - </option> | |
135 | - </select> | |
136 | - </div> | |
137 | - </div> | |
138 | - </div> | |
139 | - </td> | |
140 | - </tr> | |
141 | - <tr> | |
142 | - <td> | |
143 | - <div class="gd-12 pr0"> | |
144 | - <label | |
145 | - :class="{ | |
146 | - 'form-title mb10': true, | |
147 | - 'point-font2': pageRole == 'adm', | |
148 | - 'point-font': pageRole == 'government', | |
149 | - }" | |
150 | - > | |
151 | - 공장면적 | |
152 | - </label> | |
153 | - <div class="flex"> | |
154 | - <div class="gd-6 pl0"> | |
155 | - <input | |
156 | - type="text" | |
157 | - class="full-input" | |
158 | - v-model.trim="bplc.fctryArea" | |
159 | - ref="fctryArea" | |
160 | - placeholder="공장면적을 입력하세요." | |
161 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
162 | - /> | |
163 | - </div> | |
164 | - <div class="gd-6 pr0"> | |
165 | - <select | |
166 | - class="full-input" | |
167 | - v-model="bplc.fctryAreaUnit" | |
168 | - ref="fctryAreaUnit" | |
169 | - > | |
170 | - <option value="">공장면적단위를 선택하세요</option> | |
171 | - <option | |
172 | - v-for="(item, idx) in codeList" | |
173 | - :key="idx" | |
174 | - :value="item.cd" | |
175 | - > | |
176 | - {{ item.cdNm }} | |
177 | - </option> | |
178 | - </select> | |
179 | - </div> | |
180 | - </div> | |
181 | - </div> | |
182 | - </td> | |
183 | - <td> | |
184 | - <div class="gd-12 pl0"> | |
185 | - <label | |
186 | - :class="{ | |
187 | - 'form-title mb10': true, | |
188 | - 'point-font2': pageRole == 'adm', | |
189 | - 'point-font': pageRole == 'government', | |
190 | - }" | |
191 | - > | |
192 | - 종업원수 | |
193 | - </label> | |
194 | - <input | |
195 | - type="text" | |
196 | - class="full-input" | |
197 | - v-model="bplc.wrkrCnt" | |
198 | - ref="wrkrCnt" | |
199 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
200 | - placeholder="종업원수를 입력하세요." | |
201 | - /> | |
202 | - </div> | |
203 | - </td> | |
204 | - </tr> | |
205 | - </table> | |
206 | - <div class="flex justify-end align-center no-gutters"> | |
207 | - <div class="gd-1" v-show="index != 0"> | |
208 | - <button class="large-btn red-border-btn" @click="fnDataDel(index)"> | |
209 | - 삭제 | |
210 | - </button> | |
211 | - </div> | |
212 | - </div> | |
213 | - </div> | |
214 | - </div> | |
215 | - </details> | |
216 | -</template> | |
217 | - | |
218 | -<script> | |
219 | -export default { | |
220 | - props: { | |
221 | - pageId: { | |
222 | - type: String, | |
223 | - }, | |
224 | - data: { | |
225 | - type: Array, | |
226 | - }, | |
227 | - pageRole: { | |
228 | - type: String, | |
229 | - default: "government", | |
230 | - }, | |
231 | - codeList: { | |
232 | - type: Array, | |
233 | - }, | |
234 | - }, | |
235 | - methods: { | |
236 | - // 표 추가 | |
237 | - fnDataAdd() { | |
238 | - this.data.push({ | |
239 | - bplcId: null, | |
240 | - entId: this.pageId, | |
241 | - bplcNm: null, | |
242 | - mainPrdt: null, | |
243 | - bplcAddr: null, | |
244 | - bplcSiar: null, | |
245 | - bplcSiarUnit: "", | |
246 | - fctryArea: null, | |
247 | - fctryAreaUnit: "", | |
248 | - wrkrCnt: null, | |
249 | - useYn: "Y", | |
250 | - }); | |
251 | - }, | |
252 | - // 표 삭제 | |
253 | - fnDataDel(idx) { | |
254 | - var isDelete = confirm("삭제하시겠습니까?"); | |
255 | - if (isDelete) { | |
256 | - this.data[idx].useYn = "N"; | |
257 | - } | |
258 | - }, | |
259 | - }, | |
260 | -}; | |
261 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/BplcView.vue
... | ... | @@ -1,126 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <p class="summary-style pl10">관내사업장</p> | |
10 | - </summary> | |
11 | - <div class="pt10 pb10"> | |
12 | - <table class="form-table2 mb10"> | |
13 | - <colgroup> | |
14 | - <col width="15%" /> | |
15 | - </colgroup> | |
16 | - <tbody> | |
17 | - <tr> | |
18 | - <th | |
19 | - :class="{ | |
20 | - 'point-font2': pageRole == 'adm', | |
21 | - 'point-font': pageRole == 'government', | |
22 | - }" | |
23 | - > | |
24 | - 사업장명 | |
25 | - </th> | |
26 | - <td v-for="(bplc, index) of data" :key="index"> | |
27 | - {{ bplc.bplcNm }} | |
28 | - </td> | |
29 | - </tr> | |
30 | - <tr> | |
31 | - <th | |
32 | - :class="{ | |
33 | - 'point-font2': pageRole == 'adm', | |
34 | - 'point-font': pageRole == 'government', | |
35 | - }" | |
36 | - > | |
37 | - 주생산품 | |
38 | - </th> | |
39 | - <td v-for="(bplc, index) of data" :key="index"> | |
40 | - {{ bplc.mainPrdt }} | |
41 | - </td> | |
42 | - </tr> | |
43 | - <tr> | |
44 | - <th | |
45 | - :class="{ | |
46 | - 'point-font2': pageRole == 'adm', | |
47 | - 'point-font': pageRole == 'government', | |
48 | - }" | |
49 | - > | |
50 | - 주소 | |
51 | - </th> | |
52 | - <td v-for="(bplc, index) of data" :key="index"> | |
53 | - {{ bplc.bplcAddr }} | |
54 | - </td> | |
55 | - </tr> | |
56 | - <tr> | |
57 | - <th | |
58 | - :class="{ | |
59 | - 'point-font2': pageRole == 'adm', | |
60 | - 'point-font': pageRole == 'government', | |
61 | - }" | |
62 | - > | |
63 | - 대지면적 | |
64 | - </th> | |
65 | - <td v-for="(bplc, index) of data" :key="index"> | |
66 | - {{ bplc.bplcSiar }} | |
67 | - <template v-for="(item, idx) in codeList" :key="idx"> | |
68 | - <span v-if="item.cd == bplc.bplcSiarUnit"> | |
69 | - {{ item.cdNm }} | |
70 | - </span> | |
71 | - </template> | |
72 | - </td> | |
73 | - </tr> | |
74 | - <tr> | |
75 | - <th | |
76 | - :class="{ | |
77 | - 'point-font2': pageRole == 'adm', | |
78 | - 'point-font': pageRole == 'government', | |
79 | - }" | |
80 | - > | |
81 | - 공장면적 | |
82 | - </th> | |
83 | - <td v-for="(bplc, index) of data" :key="index"> | |
84 | - {{ bplc.fctryArea }} | |
85 | - <template v-for="(item, idx) in codeList" :key="idx"> | |
86 | - <span v-if="item.cd == bplc.fctryAreaUnit"> | |
87 | - {{ item.cdNm }} | |
88 | - </span> | |
89 | - </template> | |
90 | - </td> | |
91 | - </tr> | |
92 | - <tr> | |
93 | - <th | |
94 | - :class="{ | |
95 | - 'point-font2': pageRole == 'adm', | |
96 | - 'point-font': pageRole == 'government', | |
97 | - }" | |
98 | - > | |
99 | - 종업원수 | |
100 | - </th> | |
101 | - <td v-for="(bplc, index) of data" :key="index"> | |
102 | - {{ bplc.wrkrCnt != null ? bplc.wrkrCnt + " 명" : "0 명" }} | |
103 | - </td> | |
104 | - </tr> | |
105 | - </tbody> | |
106 | - </table> | |
107 | - </div> | |
108 | - </details> | |
109 | -</template> | |
110 | - | |
111 | -<script> | |
112 | -export default { | |
113 | - props: { | |
114 | - data: { | |
115 | - type: Array, | |
116 | - }, | |
117 | - pageRole: { | |
118 | - type: String, | |
119 | - default: "government", | |
120 | - }, | |
121 | - codeList: { | |
122 | - type: Array, | |
123 | - }, | |
124 | - }, | |
125 | -}; | |
126 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/EntInfoInsert.vue
... | ... | @@ -1,413 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <p class="summary-style pl10">기본정보</p> | |
10 | - </summary> | |
11 | - <div class="pt10 pb10"> | |
12 | - <table class="form-table"> | |
13 | - <colgroup> | |
14 | - <col width="50%" /> | |
15 | - <col width="50%" /> | |
16 | - </colgroup> | |
17 | - <tr> | |
18 | - <td> | |
19 | - <div class="gd-12 pl0"> | |
20 | - <label | |
21 | - :class="{ | |
22 | - 'form-title mb10': true, | |
23 | - 'point-font2': pageRole == 'adm', | |
24 | - 'point-font': pageRole == 'government', | |
25 | - }" | |
26 | - > | |
27 | - 기업명 | |
28 | - </label> | |
29 | - <div class="flex"> | |
30 | - <div class="gd-9 pl0"> | |
31 | - <input | |
32 | - type="text" | |
33 | - class="full-input" | |
34 | - ref="entNm" | |
35 | - v-model="entInfoVO['entNm']" | |
36 | - placeholder="기업명을 입력하세요." | |
37 | - /> | |
38 | - </div> | |
39 | - <div class="gd-3 pr0"> | |
40 | - <button | |
41 | - type="button" | |
42 | - :class="{ | |
43 | - 'large-btn': true, | |
44 | - 'blue-border-btn': pageRole == 'adm', | |
45 | - 'green-border-btn': pageRole == 'government', | |
46 | - }" | |
47 | - @click="fnSearch" | |
48 | - > | |
49 | - 조회 | |
50 | - </button> | |
51 | - </div> | |
52 | - </div> | |
53 | - </div> | |
54 | - </td> | |
55 | - <td> | |
56 | - <div class="gd-12 pr0"> | |
57 | - <label | |
58 | - :class="{ | |
59 | - 'form-title mb10': true, | |
60 | - 'point-font2': pageRole == 'adm', | |
61 | - 'point-font': pageRole == 'government', | |
62 | - }" | |
63 | - > | |
64 | - 사업자번호 | |
65 | - </label> | |
66 | - <input | |
67 | - type="text" | |
68 | - class="full-input" | |
69 | - ref="brno" | |
70 | - v-model.trim="entInfoVO['brno']" | |
71 | - maxlength="10" | |
72 | - placeholder="사업자번호를 입력하세요." | |
73 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
74 | - /> | |
75 | - </div> | |
76 | - </td> | |
77 | - </tr> | |
78 | - <tr> | |
79 | - <td> | |
80 | - <div class="gd-12 pl0"> | |
81 | - <label | |
82 | - :class="{ | |
83 | - 'form-title mb10': true, | |
84 | - 'point-font2': pageRole == 'adm', | |
85 | - 'point-font': pageRole == 'government', | |
86 | - }" | |
87 | - > | |
88 | - 대표자명 | |
89 | - </label> | |
90 | - <input | |
91 | - type="text" | |
92 | - class="full-input" | |
93 | - ref="rprsvNm" | |
94 | - v-model="entInfoVO['rprsvNm']" | |
95 | - placeholder="대표자명을 입력하세요." | |
96 | - /> | |
97 | - </div> | |
98 | - </td> | |
99 | - <td> | |
100 | - <div class="flex gd-12 pr0"> | |
101 | - <div class="gd-6 pl0"> | |
102 | - <label | |
103 | - for="" | |
104 | - :class="{ | |
105 | - 'form-title mb10': true, | |
106 | - 'point-font2': pageRole == 'adm', | |
107 | - 'point-font': pageRole == 'government', | |
108 | - }" | |
109 | - > | |
110 | - 기업신용 | |
111 | - </label> | |
112 | - <input | |
113 | - type="text" | |
114 | - class="full-input" | |
115 | - ref="entCrdt" | |
116 | - v-model="entInfoVO['entCrdt']" | |
117 | - placeholder="기업신용을 입력하세요." | |
118 | - /> | |
119 | - </div> | |
120 | - <div class="gd-6 pr0"> | |
121 | - <label | |
122 | - for="" | |
123 | - :class="{ | |
124 | - 'form-title mb10': true, | |
125 | - 'point-font2': pageRole == 'adm', | |
126 | - 'point-font': pageRole == 'government', | |
127 | - }" | |
128 | - > | |
129 | - 설립일 | |
130 | - </label> | |
131 | - <input | |
132 | - type="date" | |
133 | - class="full-input" | |
134 | - ref="fndnDt" | |
135 | - v-model="entInfoVO['fndnDt']" | |
136 | - /> | |
137 | - </div> | |
138 | - </div> | |
139 | - </td> | |
140 | - </tr> | |
141 | - <tr> | |
142 | - <td> | |
143 | - <div class="gd-12 pl0"> | |
144 | - <label | |
145 | - :class="{ | |
146 | - 'form-title mb10': true, | |
147 | - 'point-font2': pageRole == 'adm', | |
148 | - 'point-font': pageRole == 'government', | |
149 | - }" | |
150 | - > | |
151 | - 표준산업분류 코드 | |
152 | - </label> | |
153 | - <div class="flex"> | |
154 | - <div class="gd-6 pl0"> | |
155 | - <input | |
156 | - type="text" | |
157 | - class="full-input" | |
158 | - ref="ksicUpCd" | |
159 | - v-model.trim="entInfoVO['ksicUpCd']" | |
160 | - placeholder="상위분류를 입력하세요." | |
161 | - /> | |
162 | - </div> | |
163 | - <div class="gd-6 pr0"> | |
164 | - <input | |
165 | - type="text" | |
166 | - class="full-input" | |
167 | - ref="ksicCd" | |
168 | - v-model.trim="entInfoVO['ksicCd']" | |
169 | - placeholder="하위분류를 입력하세요." | |
170 | - /> | |
171 | - </div> | |
172 | - </div> | |
173 | - </div> | |
174 | - </td> | |
175 | - <td> | |
176 | - <div class="gd-12 pr0"> | |
177 | - <label | |
178 | - :class="{ | |
179 | - 'form-title mb10': true, | |
180 | - 'point-font2': pageRole == 'adm', | |
181 | - 'point-font': pageRole == 'government', | |
182 | - }" | |
183 | - > | |
184 | - 표준산업분류 | |
185 | - </label> | |
186 | - <input | |
187 | - type="text" | |
188 | - class="full-input" | |
189 | - ref="ksicNm" | |
190 | - v-model="entInfoVO['ksicNm']" | |
191 | - placeholder="표준사업분류를 입력하세요." | |
192 | - /> | |
193 | - </div> | |
194 | - </td> | |
195 | - </tr> | |
196 | - <tr> | |
197 | - <td> | |
198 | - <div class="gd-12 pl0"> | |
199 | - <label | |
200 | - :class="{ | |
201 | - 'form-title mb10': true, | |
202 | - 'point-font2': pageRole == 'adm', | |
203 | - 'point-font': pageRole == 'government', | |
204 | - }" | |
205 | - > | |
206 | - 주요제품 | |
207 | - </label> | |
208 | - <input | |
209 | - type="text" | |
210 | - class="full-input" | |
211 | - ref="mainPrdct" | |
212 | - v-model="entInfoVO['mainPrdct']" | |
213 | - placeholder="주요제품을 입력하세요." | |
214 | - /> | |
215 | - </div> | |
216 | - </td> | |
217 | - <td> | |
218 | - <div class="gd-12 pr0"> | |
219 | - <label | |
220 | - :class="{ | |
221 | - 'form-title mb10': true, | |
222 | - 'point-font2': pageRole == 'adm', | |
223 | - 'point-font': pageRole == 'government', | |
224 | - }" | |
225 | - > | |
226 | - 폐업여부 | |
227 | - </label> | |
228 | - <div class="flex"> | |
229 | - <div class="gd-6 flex align-center pl0"> | |
230 | - <input | |
231 | - type="radio" | |
232 | - class="mr5" | |
233 | - name="clsbizYn" | |
234 | - id="clsbizYnFalse" | |
235 | - v-model="entInfoVO['clsbizYn']" | |
236 | - value="N" | |
237 | - /> | |
238 | - <label for="clsbizYnFalse">운영중</label> | |
239 | - </div> | |
240 | - <div class="gd-6 flex align-center pr0"> | |
241 | - <input | |
242 | - type="radio" | |
243 | - class="mr5" | |
244 | - name="clsbizYn" | |
245 | - id="clsbizYnTrue" | |
246 | - v-model="entInfoVO['clsbizYn']" | |
247 | - value="Y" | |
248 | - /> | |
249 | - <label for="clsbizYnTrue">폐업</label> | |
250 | - </div> | |
251 | - </div> | |
252 | - </div> | |
253 | - </td> | |
254 | - </tr> | |
255 | - <tr> | |
256 | - <td> | |
257 | - <div class="gd-12 pl0"> | |
258 | - <label | |
259 | - :class="{ | |
260 | - 'form-title mb10': true, | |
261 | - 'point-font2': pageRole == 'adm', | |
262 | - 'point-font': pageRole == 'government', | |
263 | - }" | |
264 | - > | |
265 | - 고용인원수 | |
266 | - </label> | |
267 | - <input | |
268 | - type="text" | |
269 | - class="full-input" | |
270 | - ref="mainPrdct" | |
271 | - v-model="entInfoVO['mainPrdct']" | |
272 | - placeholder="고용인원수를 입력하세요." | |
273 | - /> | |
274 | - </div> | |
275 | - </td> | |
276 | - <td> | |
277 | - <div class="gd-12 pr0"> | |
278 | - <label | |
279 | - :class="{ | |
280 | - 'form-title mb10': true, | |
281 | - 'point-font2': pageRole == 'adm', | |
282 | - 'point-font': pageRole == 'government', | |
283 | - }" | |
284 | - > | |
285 | - 소재지 | |
286 | - </label> | |
287 | - <div class="flex"> | |
288 | - <div class="gd-6 pl0"> | |
289 | - <select name="" id="" class="full-input"> | |
290 | - <option value="">행정구역을 선택하세요.</option> | |
291 | - <option value="">강원특별자치도</option> | |
292 | - <option value="">경기도</option> | |
293 | - <option value="">경상남도</option> | |
294 | - <option value="">경상북도</option> | |
295 | - <option value="">광주광역시</option> | |
296 | - <option value="">대구광역시</option> | |
297 | - <option value="">대전광역시</option> | |
298 | - <option value="">부산광역시</option> | |
299 | - <option value="">서울특별시</option> | |
300 | - <option value="">세종특별자치시</option> | |
301 | - <option value="">울산광역시</option> | |
302 | - <option value="">인천광역시</option> | |
303 | - <option value="">전라남도</option> | |
304 | - <option value="">전북특별자치도</option> | |
305 | - <option value="">제주특별자치도</option> | |
306 | - <option value="">충청남도</option> | |
307 | - <option value="">충청북도</option> | |
308 | - </select> | |
309 | - </div> | |
310 | - <div class="gd-6 pr0"> | |
311 | - <input | |
312 | - type="text" | |
313 | - class="full-input" | |
314 | - ref="mainPrdct" | |
315 | - v-model="entInfoVO['mainPrdct']" | |
316 | - placeholder="시, 군, 구를 입력하세요. ex)영주시" | |
317 | - /> | |
318 | - </div> | |
319 | - </div> | |
320 | - </div> | |
321 | - </td> | |
322 | - </tr> | |
323 | - <tr> | |
324 | - <td colspan="2"> | |
325 | - <label | |
326 | - :class="{ | |
327 | - 'form-title mb10': true, | |
328 | - 'point-font2': pageRole == 'adm', | |
329 | - 'point-font': pageRole == 'government', | |
330 | - }" | |
331 | - > | |
332 | - 주소 | |
333 | - </label> | |
334 | - <input | |
335 | - type="text" | |
336 | - class="full-input" | |
337 | - ref="mainPrdct" | |
338 | - v-model="entInfoVO['mainPrdct']" | |
339 | - placeholder="나머지 주소를 입력하세요." | |
340 | - /> | |
341 | - </td> | |
342 | - <td></td> | |
343 | - </tr> | |
344 | - </table> | |
345 | - </div> | |
346 | - </details> | |
347 | - | |
348 | - <!-- 기업명 조회 --> | |
349 | - <Modal :showModal="isOpen"> | |
350 | - <template v-slot:header> | |
351 | - <div | |
352 | - :class="{ | |
353 | - 'box-title': true, | |
354 | - 'point-font2': pageRole == 'adm', | |
355 | - 'point-font': pageRole == 'government', | |
356 | - }" | |
357 | - > | |
358 | - <p>기업정보 조회</p> | |
359 | - </div> | |
360 | - <button class="close-btn" @click="fnDownloadModalClose">X</button> | |
361 | - </template> | |
362 | - <table class="form-table2 mb10"> | |
363 | - <colgroup> | |
364 | - <col style="width: 30%" /> | |
365 | - <col /> | |
366 | - </colgroup> | |
367 | - <thead> | |
368 | - <tr> | |
369 | - <th>기업명</th> | |
370 | - <th>사업자번호</th> | |
371 | - <th>대표자명</th> | |
372 | - <th>비고</th> | |
373 | - </tr> | |
374 | - </thead> | |
375 | - <tbody> | |
376 | - <tr v-for="(item, index) of list" :key="index"> | |
377 | - <td>{{ item.entNm }}</td> | |
378 | - <td class="text-ct">{{ item.brno }}</td> | |
379 | - <td class="text-ct">{{ item.rprsvNm }}</td> | |
380 | - <td class="text-ct"> | |
381 | - <button | |
382 | - type="button" | |
383 | - :class="{ | |
384 | - 'large-btn': true, | |
385 | - 'blue-border-btn': pageRole == 'adm', | |
386 | - 'green-border-btn': pageRole == 'government', | |
387 | - }" | |
388 | - @click="fnModalInsert(item)" | |
389 | - > | |
390 | - 이동 | |
391 | - </button> | |
392 | - </td> | |
393 | - </tr> | |
394 | - </tbody> | |
395 | - </table> | |
396 | - <template v-slot:footer> | |
397 | - <div class="gd-2"></div> | |
398 | - <div class="gd-8"> | |
399 | - <PaginationButton | |
400 | - v-model:currentPage="search.currentPage" | |
401 | - :pagination="search" | |
402 | - :click="fnViewList" | |
403 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
404 | - /> | |
405 | - </div> | |
406 | - <div class="gd-2"></div> | |
407 | - </template> | |
408 | - </Modal> | |
409 | -</template> | |
410 | - | |
411 | -<script> | |
412 | -export default {}; | |
413 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/FnstmInsert.vue
... | ... | @@ -1,137 +0,0 @@ |
1 | -<template> | |
2 | - <tr> | |
3 | - <td> | |
4 | - <div class="gd-12 pl0 pr0"> | |
5 | - <label | |
6 | - :class="{ | |
7 | - mb10: true, | |
8 | - 'point-font2': pageRole == 'adm', | |
9 | - 'point-font': pageRole == 'government', | |
10 | - }" | |
11 | - > | |
12 | - 재무제표 첨부파일 | |
13 | - </label> | |
14 | - <div class="flex"> | |
15 | - <div class="gd-10 pl0"> | |
16 | - <div class="filebox"> | |
17 | - <input | |
18 | - class="upload-name full-input" | |
19 | - v-model="fileList" | |
20 | - placeholder="첨부파일이 없습니다." | |
21 | - disabled | |
22 | - /> | |
23 | - </div> | |
24 | - <div> | |
25 | - <div | |
26 | - v-for="(file, index) of data" | |
27 | - :key="index" | |
28 | - class="file-wrap flex justify-between align-center border pd10 mt10" | |
29 | - > | |
30 | - <p v-if="file['fileId'] != null"> | |
31 | - {{ file.fileNm }}.{{ file.extnNm }} | |
32 | - </p> | |
33 | - <p v-else>{{ file.name }}</p> | |
34 | - <button class="icon-btn pd0" @click="fnFileDelete(file, index)"> | |
35 | - <svg-icon type="mdi" :width="15" :height="15" :path="path" /> | |
36 | - </button> | |
37 | - </div> | |
38 | - </div> | |
39 | - </div> | |
40 | - <div class="gd-2 pr0"> | |
41 | - <label | |
42 | - for="file" | |
43 | - :class="{ | |
44 | - 'large-btn text-ct cursor': true, | |
45 | - 'blue-border-btn': pageRole == 'adm', | |
46 | - 'green-border-btn': pageRole == 'government', | |
47 | - }" | |
48 | - > | |
49 | - 파일찾기 | |
50 | - </label> | |
51 | - <input | |
52 | - type="file" | |
53 | - id="file" | |
54 | - ref="file" | |
55 | - @change="fnFileInsert" | |
56 | - multiple | |
57 | - style="display: none" | |
58 | - /> | |
59 | - </div> | |
60 | - </div> | |
61 | - </div> | |
62 | - </td> | |
63 | - </tr> | |
64 | -</template> | |
65 | - | |
66 | -<script> | |
67 | -import { mdiClose } from "@mdi/js"; | |
68 | - | |
69 | -export default { | |
70 | - props: { | |
71 | - data: { | |
72 | - type: Array, | |
73 | - }, | |
74 | - pageRole: { | |
75 | - type: String, | |
76 | - default: "government", | |
77 | - }, | |
78 | - }, | |
79 | - data() { | |
80 | - return { | |
81 | - path: mdiClose, | |
82 | - fileList: null, | |
83 | - }; | |
84 | - }, | |
85 | - methods: { | |
86 | - // 파일 목록 | |
87 | - fnFileList() { | |
88 | - let list = ""; | |
89 | - this.data.map((file, index) => { | |
90 | - if (index != 0) { | |
91 | - list += ", "; | |
92 | - } | |
93 | - if (file.fileId != null) { | |
94 | - list += file.fileNm + "." + file.extnNm; | |
95 | - } else { | |
96 | - list += file.name; | |
97 | - } | |
98 | - }); | |
99 | - this.fileList = list; | |
100 | - }, | |
101 | - | |
102 | - // 등록 | |
103 | - fnFileInsert() { | |
104 | - const files = this.$refs.file.files; | |
105 | - // 파일 용량 제한 | |
106 | - for (let file of files) { | |
107 | - let fileSize = file.size / 100000; | |
108 | - if (fileSize > 200) { | |
109 | - alert("파일은 개당 최대 200MB까지 등록할 수 있습니다."); | |
110 | - return; | |
111 | - } | |
112 | - } | |
113 | - for (let file of files) { | |
114 | - this.data.push(file); | |
115 | - } | |
116 | - this.$emit("fnFileModify", "cre", files); | |
117 | - this.$refs.file.value = ""; | |
118 | - }, | |
119 | - | |
120 | - // 삭제 | |
121 | - fnFileDelete(file, index) { | |
122 | - if (file.fileId != null) { | |
123 | - this.$emit("fnFileModify", "del", file); | |
124 | - } | |
125 | - this.data.splice(index, 1); | |
126 | - }, | |
127 | - }, | |
128 | - watch: { | |
129 | - data: { | |
130 | - deep: true, | |
131 | - handler() { | |
132 | - this.fnFileList(); | |
133 | - }, | |
134 | - }, | |
135 | - }, | |
136 | -}; | |
137 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/IvstDscsnDetail.vue
... | ... | @@ -1,324 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <template v-if="pageNm == 'entInfo'"> | |
10 | - <p class="summary-style pl10">투자상담</p> | |
11 | - </template> | |
12 | - <template v-else> | |
13 | - <p class="summary-style pl10">기본정보</p> | |
14 | - </template> | |
15 | - </summary> | |
16 | - <div class="pt10 pb10"> | |
17 | - <table class="form-table2 mb10"> | |
18 | - <colgroup> | |
19 | - <col width="15%" /> | |
20 | - <col width="35%" /> | |
21 | - <col width="15%" /> | |
22 | - <col width="35%" /> | |
23 | - </colgroup> | |
24 | - <tr> | |
25 | - <th | |
26 | - :class="{ | |
27 | - 'point-font2': pageRole == 'adm', | |
28 | - 'point-font': pageRole == 'government', | |
29 | - }" | |
30 | - > | |
31 | - 상담요지 | |
32 | - </th> | |
33 | - <td colspan="3"> | |
34 | - {{ ivstDscsnVO["dscsnOtln"] }} | |
35 | - </td> | |
36 | - </tr> | |
37 | - <tr> | |
38 | - <th | |
39 | - :class="{ | |
40 | - 'point-font2': pageRole == 'adm', | |
41 | - 'point-font': pageRole == 'government', | |
42 | - }" | |
43 | - > | |
44 | - 제목 | |
45 | - </th> | |
46 | - <td colspan="3"> | |
47 | - {{ ivstDscsnVO["ttl"] }} | |
48 | - </td> | |
49 | - </tr> | |
50 | - <tr> | |
51 | - <th | |
52 | - :class="{ | |
53 | - 'point-font2': pageRole == 'adm', | |
54 | - 'point-font': pageRole == 'government', | |
55 | - }" | |
56 | - > | |
57 | - 일시 | |
58 | - </th> | |
59 | - <td colspan="3"> | |
60 | - {{ ivstDscsnVO["dt"] }} | |
61 | - </td> | |
62 | - </tr> | |
63 | - <tr> | |
64 | - <th | |
65 | - :class="{ | |
66 | - 'point-font2': pageRole == 'adm', | |
67 | - 'point-font': pageRole == 'government', | |
68 | - }" | |
69 | - > | |
70 | - 장소 | |
71 | - </th> | |
72 | - <td colspan="3"> | |
73 | - {{ ivstDscsnVO["plc"] }} | |
74 | - </td> | |
75 | - </tr> | |
76 | - <tr> | |
77 | - <th | |
78 | - :class="{ | |
79 | - 'point-font2': pageRole == 'adm', | |
80 | - 'point-font': pageRole == 'government', | |
81 | - }" | |
82 | - > | |
83 | - 기업명 | |
84 | - </th> | |
85 | - <td colspan="3"> | |
86 | - <span class="mr10">{{ ivstDscsnVO["entNm"] }}</span> | |
87 | - | |
88 | - <button | |
89 | - v-show="pageNm != 'entInfo'" | |
90 | - class="small-btn darkg-border-btn" | |
91 | - @click="fnMove(ivstDscsnVO.entId)" | |
92 | - > | |
93 | - 기업정보 보기 | |
94 | - </button> | |
95 | - </td> | |
96 | - </tr> | |
97 | - <tr> | |
98 | - <th | |
99 | - :class="{ | |
100 | - 'point-font2': pageRole == 'adm', | |
101 | - 'point-font': pageRole == 'government', | |
102 | - }" | |
103 | - > | |
104 | - 참석자 | |
105 | - </th> | |
106 | - <td colspan="3"> | |
107 | - {{ ivstDscsnVO["prtpnt"] }} | |
108 | - </td> | |
109 | - </tr> | |
110 | - <tr> | |
111 | - <th | |
112 | - :class="{ | |
113 | - 'point-font2': pageRole == 'adm', | |
114 | - 'point-font': pageRole == 'government', | |
115 | - }" | |
116 | - > | |
117 | - 상담공무원 | |
118 | - </th> | |
119 | - <td colspan="3"> | |
120 | - {{ ivstDscsnVO["dscsnPbofc"] }} | |
121 | - </td> | |
122 | - </tr> | |
123 | - <tr> | |
124 | - <th | |
125 | - :class="{ | |
126 | - 'point-font2': pageRole == 'adm', | |
127 | - 'point-font': pageRole == 'government', | |
128 | - }" | |
129 | - > | |
130 | - 주요내용 | |
131 | - </th> | |
132 | - <td colspan="3"> | |
133 | - {{ ivstDscsnVO["mainCn"] }} | |
134 | - </td> | |
135 | - </tr> | |
136 | - <tr> | |
137 | - <th | |
138 | - :class="{ | |
139 | - 'point-font2': pageRole == 'adm', | |
140 | - 'point-font': pageRole == 'government', | |
141 | - }" | |
142 | - > | |
143 | - 첨부파일 | |
144 | - </th> | |
145 | - <td colspan="3"> | |
146 | - <div v-if="ivstDscsnVO['fileMngId'] != null"> | |
147 | - <div v-for="(file, index) of ivstDscsnVO.fileList" :key="index"> | |
148 | - <div @click="downloadFile(file)"> | |
149 | - {{ file["fileNm"] }}.{{ file["extnNm"] }} | |
150 | - </div> | |
151 | - </div> | |
152 | - </div> | |
153 | - <p v-else class="data-none">등록된 첨부파일이 없습니다.</p> | |
154 | - </td> | |
155 | - </tr> | |
156 | - <template v-if="pageNm == 'entInfo'"> | |
157 | - <tr> | |
158 | - <th | |
159 | - :class="{ | |
160 | - 'point-font2': pageRole == 'adm', | |
161 | - 'point-font': pageRole == 'government', | |
162 | - }" | |
163 | - > | |
164 | - 입주의향 | |
165 | - </th> | |
166 | - <td> | |
167 | - <span v-show="ivstDscsnVO['mvnInten'] == 0">의향없음</span> | |
168 | - <span v-show="ivstDscsnVO['mvnInten'] == 1">의향있음</span> | |
169 | - <span v-show="ivstDscsnVO['mvnInten'] == 2">검토중</span> | |
170 | - </td> | |
171 | - </tr> | |
172 | - <tr> | |
173 | - <th | |
174 | - :class="{ | |
175 | - 'point-font2': pageRole == 'adm', | |
176 | - 'point-font': pageRole == 'government', | |
177 | - }" | |
178 | - > | |
179 | - MOU의향 | |
180 | - </th> | |
181 | - <td> | |
182 | - <span v-show="ivstDscsnVO['mouInten'] == 0">의향없음</span> | |
183 | - <span v-show="ivstDscsnVO['mouInten'] == 1">의향있음</span> | |
184 | - <span v-show="ivstDscsnVO['mouInten'] == 2">검토중</span> | |
185 | - </td> | |
186 | - </tr> | |
187 | - </template> | |
188 | - <template v-else> | |
189 | - <tr> | |
190 | - <th | |
191 | - :class="{ | |
192 | - 'point-font2': pageRole == 'adm', | |
193 | - 'point-font': pageRole == 'government', | |
194 | - }" | |
195 | - > | |
196 | - 입주의향 | |
197 | - </th> | |
198 | - <td> | |
199 | - <span v-show="ivstDscsnVO['mvnInten'] == 0">의향없음</span> | |
200 | - <span v-show="ivstDscsnVO['mvnInten'] == 1">의향있음</span> | |
201 | - <span v-show="ivstDscsnVO['mvnInten'] == 2">검토중</span> | |
202 | - </td> | |
203 | - </tr> | |
204 | - <tr> | |
205 | - <th | |
206 | - :class="{ | |
207 | - 'point-font2': pageRole == 'adm', | |
208 | - 'point-font': pageRole == 'government', | |
209 | - }" | |
210 | - > | |
211 | - MOU의향 | |
212 | - </th> | |
213 | - <td> | |
214 | - <span v-show="ivstDscsnVO['mouInten'] == 0">의향없음</span> | |
215 | - <span v-show="ivstDscsnVO['mouInten'] == 1">의향있음</span> | |
216 | - <span v-show="ivstDscsnVO['mouInten'] == 2">검토중</span> | |
217 | - </td> | |
218 | - </tr> | |
219 | - </template> | |
220 | - </table> | |
221 | - </div> | |
222 | - </details> | |
223 | - | |
224 | - <!-- 검토사항 --> | |
225 | - <RvwMttrList | |
226 | - :data="ivstDscsnVO" | |
227 | - :pageNm="pageNm" | |
228 | - :pageId="pageId" | |
229 | - :pageAuth="pageAuth" | |
230 | - :pageRole="pageRole" | |
231 | - :entId="this.ivstDscsnVO.entId" | |
232 | - @fnIvstDscsnView="fnViewDetail" | |
233 | - /> | |
234 | -</template> | |
235 | - | |
236 | -<script> | |
237 | -import defaultAxios from "../../../resources/js/defaultAxios"; | |
238 | -import RvwMttrList from "./RvwMttrList.vue"; | |
239 | - | |
240 | -// api | |
241 | -import { ivstDscsnDetailProc } from "../../../resources/api/ivstDscsn"; | |
242 | - | |
243 | -export default { | |
244 | - components: { | |
245 | - RvwMttrList: RvwMttrList, | |
246 | - }, | |
247 | - props: { | |
248 | - pageNm: { | |
249 | - type: String, | |
250 | - default: null, | |
251 | - }, | |
252 | - pageId: { | |
253 | - type: String, | |
254 | - }, | |
255 | - pageAuth: { | |
256 | - type: String, | |
257 | - }, | |
258 | - pageRole: { | |
259 | - type: String, | |
260 | - }, | |
261 | - }, | |
262 | - data() { | |
263 | - return { | |
264 | - ivstDscsnVO: {}, | |
265 | - }; | |
266 | - }, | |
267 | - created() { | |
268 | - this.fnViewDetail(); | |
269 | - }, | |
270 | - methods: { | |
271 | - // axios: 조회(상세) | |
272 | - async fnViewDetail() { | |
273 | - // 데이터 세팅 | |
274 | - const data = { ivstDscsnId: this.pageId }; | |
275 | - // 실행 | |
276 | - try { | |
277 | - const response = await ivstDscsnDetailProc(data); | |
278 | - this.ivstDscsnVO = response.data.data; | |
279 | - this.$emit("fnSaveVO", this.ivstDscsnVO); | |
280 | - } catch (error) { | |
281 | - const errorData = error.response.data; | |
282 | - if (errorData.message != null && errorData.message != "") { | |
283 | - alert(error.response.data.message); | |
284 | - } else { | |
285 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
286 | - } | |
287 | - } | |
288 | - }, | |
289 | - // axios: 첨부파일 다운로드 | |
290 | - async downloadFile(file) { | |
291 | - try { | |
292 | - const response = await defaultAxios({ | |
293 | - url: "/sys/file/fileDownload.json", // URL 경로 확인 | |
294 | - method: "post", | |
295 | - headers: { | |
296 | - "Content-Type": "application/json; charset=UTF-8", | |
297 | - Authorization: this.$store.state.authorization, | |
298 | - }, | |
299 | - data: file.fileId, | |
300 | - responseType: "blob", | |
301 | - }); | |
302 | - const url = window.URL.createObjectURL(new Blob([response.data])); | |
303 | - const link = document.createElement("a"); | |
304 | - link.href = url; | |
305 | - link.setAttribute("download", file.fileNm + "." + file.extnNm); | |
306 | - document.body.appendChild(link); | |
307 | - link.click(); | |
308 | - document.body.removeChild(link); | |
309 | - window.URL.revokeObjectURL(url); | |
310 | - } catch (error) { | |
311 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
312 | - } | |
313 | - }, | |
314 | - | |
315 | - // 기업 정보로 이동 | |
316 | - fnMove(entId) { | |
317 | - this.$router.push({ | |
318 | - path: this.$store.state.userType + "/companyInfo/view.page", | |
319 | - query: { pageId: entId }, | |
320 | - }); | |
321 | - }, | |
322 | - }, | |
323 | -}; | |
324 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/IvstDscsnList.vue
... | ... | @@ -1,250 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <p class="summary-style pl10">상담내역</p> | |
10 | - </summary> | |
11 | - <div class="pt10 pb10"> | |
12 | - <ListTable | |
13 | - :colgroup="colgroup" | |
14 | - :thead="thead" | |
15 | - :tbody="tbody" | |
16 | - :className="pageRole == 'adm' ? 'admin-list' : 'consulting-table'" | |
17 | - @listClick="fnModalOpen" | |
18 | - /> | |
19 | - <div class="flex justify-end no-gutters"> | |
20 | - <div class="gd-1"></div> | |
21 | - <div class="gd-10"> | |
22 | - <PaginationButton | |
23 | - v-model:currentPage="search['currentPage']" | |
24 | - :pagination="search" | |
25 | - :click="fnViewList" | |
26 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
27 | - /> | |
28 | - </div> | |
29 | - <div class="gd-1"> | |
30 | - <button | |
31 | - :class="{ | |
32 | - 'large-btn': true, | |
33 | - 'blue-btn point-font2': pageRole == 'adm', | |
34 | - 'green-btn point-font': pageRole == 'government', | |
35 | - }" | |
36 | - @click="fnInsert" | |
37 | - v-if="pageAuth.regAuthrt == 'Y'" | |
38 | - > | |
39 | - 등록 | |
40 | - </button> | |
41 | - </div> | |
42 | - </div> | |
43 | - </div> | |
44 | - </details> | |
45 | - | |
46 | - <!-- 상담내역 상세 모달 --> | |
47 | - <Modal className="medium-modal" :showModal="isOpen"> | |
48 | - <template v-slot:header> | |
49 | - <div | |
50 | - :class="{ | |
51 | - 'box-title': true, | |
52 | - 'point-font2': pageRole == 'adm', | |
53 | - 'point-font': pageRole == 'government', | |
54 | - }" | |
55 | - > | |
56 | - <p>투자상담</p> | |
57 | - </div> | |
58 | - <button class="close-btn" @click="fnModalClose">X</button> | |
59 | - </template> | |
60 | - | |
61 | - <!-- 투자상담 --> | |
62 | - <IvstDscsnDetail | |
63 | - :pageNm="pageNm" | |
64 | - :pageId="ivstDscsnId" | |
65 | - :pageAuth="pageAuth" | |
66 | - :pageRole="pageRole" | |
67 | - :entId="pageId" | |
68 | - /> | |
69 | - | |
70 | - <template v-slot:footer> | |
71 | - <div v-if="pageAuth.mdfcnAuthrt == 'Y'" class="gd-3 pd0 mr10"> | |
72 | - <button | |
73 | - :class="{ | |
74 | - 'large-btn': true, | |
75 | - 'blue-border-btn': pageRole == 'adm', | |
76 | - 'green-border-btn point-font': pageRole == 'government', | |
77 | - }" | |
78 | - @click="fnModalUpdate" | |
79 | - > | |
80 | - 수정 | |
81 | - </button> | |
82 | - </div> | |
83 | - <div v-if="pageAuth.delAuthrt == 'Y'" class="gd-3 pd0"> | |
84 | - <button | |
85 | - :class="{ | |
86 | - 'large-btn': true, | |
87 | - 'red-border-btn': pageRole == 'adm', | |
88 | - 'red-border-btn point-font': pageRole == 'government', | |
89 | - }" | |
90 | - @click="fnModalDelete" | |
91 | - > | |
92 | - 삭제 | |
93 | - </button> | |
94 | - </div> | |
95 | - </template> | |
96 | - </Modal> | |
97 | -</template> | |
98 | - | |
99 | -<script> | |
100 | -import ListTable from "../table/ListTable.vue"; | |
101 | -import PaginationButton from "../pagination/PaginationButton.vue"; | |
102 | -import Modal from "../modal/Modal.vue"; | |
103 | -import { defaultSearchParams } from "../../../resources/js/defaultSearchParams"; | |
104 | -import IvstDscsnDetail from "./IvstDscsnDetail.vue"; | |
105 | - | |
106 | -// API | |
107 | -import { | |
108 | - ivstDscsnListProc, | |
109 | - ivstDscsnDetailProc, | |
110 | - ivstDscsnDeleteProc, | |
111 | -} from "../../../resources/api/ivstDscsn"; | |
112 | - | |
113 | -export default { | |
114 | - components: { | |
115 | - ListTable: ListTable, | |
116 | - PaginationButton: PaginationButton, | |
117 | - Modal: Modal, | |
118 | - IvstDscsnDetail: IvstDscsnDetail, | |
119 | - }, | |
120 | - props: { | |
121 | - data: { | |
122 | - type: Object, | |
123 | - }, | |
124 | - pageNm: { | |
125 | - type: String, | |
126 | - default: null, | |
127 | - }, | |
128 | - pageId: { | |
129 | - type: String, | |
130 | - }, | |
131 | - pageAuth: { | |
132 | - type: Object, | |
133 | - }, | |
134 | - pageRole: { | |
135 | - type: String, | |
136 | - default: "government", | |
137 | - }, | |
138 | - }, | |
139 | - data() { | |
140 | - return { | |
141 | - colgroup: ["15%", "70%", "15%"], | |
142 | - thead: ["NO", "제목", "등록일"], | |
143 | - tbody: [], | |
144 | - search: { ...defaultSearchParams }, | |
145 | - list: [], | |
146 | - // 팝업 | |
147 | - isOpen: false, | |
148 | - ivstDscsnView: {}, | |
149 | - ivstDscsnId: null, | |
150 | - }; | |
151 | - }, | |
152 | - created() { | |
153 | - this.fnViewList(); | |
154 | - }, | |
155 | - methods: { | |
156 | - // axios: 조회(목록) | |
157 | - async fnViewList() { | |
158 | - // 데이터 세팅 | |
159 | - let data = this.search; | |
160 | - data.cateId = "ent_id"; | |
161 | - data.cateValue = this.pageId; | |
162 | - // 실행 | |
163 | - try { | |
164 | - const response = await ivstDscsnListProc(data); | |
165 | - this.list = response.data.data.list; | |
166 | - this.search = response.data.data.pagination; | |
167 | - this.makeTbody(); | |
168 | - } catch (error) { | |
169 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
170 | - } | |
171 | - }, | |
172 | - // tbody 생성 | |
173 | - makeTbody() { | |
174 | - this.tbody = []; | |
175 | - this.tbody = this.list.map((ivstDscsn, idx) => ({ | |
176 | - id: | |
177 | - this.search.totalRecordCount - | |
178 | - idx - | |
179 | - (this.search.currentPage - 1) * this.search.recordSize, | |
180 | - ttl: ivstDscsn.ttl, | |
181 | - regDt: ivstDscsn.regDt, | |
182 | - })); | |
183 | - }, | |
184 | - | |
185 | - // 등록 | |
186 | - fnInsert() { | |
187 | - this.$router.push({ | |
188 | - path: this.pageRole + "/companyInvest/insert.page", | |
189 | - query: { | |
190 | - entId: this.data["entId"], | |
191 | - entNm: this.data["entNm"], | |
192 | - }, | |
193 | - }); | |
194 | - }, | |
195 | - | |
196 | - // 모달 열기 | |
197 | - fnModalOpen(idx) { | |
198 | - this.isOpen = true; | |
199 | - this.ivstDscsnView = this.list[idx]; | |
200 | - this.ivstDscsnId = this.list[idx].ivstDscsnId; | |
201 | - }, | |
202 | - // 모달 닫기 | |
203 | - fnModalClose() { | |
204 | - this.isOpen = false; | |
205 | - this.fnViewList(); | |
206 | - }, | |
207 | - | |
208 | - // axios: 모달 조회(상세) | |
209 | - async fnDetail(idx) { | |
210 | - // 데이터 세팅 | |
211 | - let data = { ivstDscsnId: this.list[idx]["ivstDscsnId"] }; | |
212 | - // 실행 | |
213 | - try { | |
214 | - const response = await ivstDscsnDetailProc(data); | |
215 | - this.ivstDscsnView = response.data.data; | |
216 | - } catch (error) { | |
217 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
218 | - } | |
219 | - }, | |
220 | - | |
221 | - // axios: 모달 삭제 | |
222 | - async fnModalDelete() { | |
223 | - var isDelete = confirm("해당 투자상담을 삭제하시겠습니까?"); | |
224 | - if (!isDelete) { | |
225 | - return; | |
226 | - } | |
227 | - // 데이터 세팅 | |
228 | - let data = this.ivstDscsnView; | |
229 | - data.useYn = "N"; | |
230 | - // 실행 | |
231 | - try { | |
232 | - const response = await ivstDscsnDeleteProc(data); | |
233 | - alert(response.data["message"]); | |
234 | - this.fnViewList(); // 상담내역 재조회 | |
235 | - this.$emit("fnEntInfoView"); | |
236 | - this.fnModalClose(); | |
237 | - } catch (error) { | |
238 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
239 | - } | |
240 | - }, | |
241 | - // 모달 수정 | |
242 | - fnModalUpdate() { | |
243 | - this.$router.push({ | |
244 | - path: this.pageRole + "/companyInvest/insert.page", | |
245 | - query: { pageId: this.ivstDscsnView["ivstDscsnId"] }, | |
246 | - }); | |
247 | - }, | |
248 | - }, | |
249 | -}; | |
250 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/companyInfo/RvwMttrDetail.vue
... | ... | @@ -1,293 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <p class="summary-style pl10">기본정보</p> | |
10 | - </summary> | |
11 | - <div class="pt10 pb10"> | |
12 | - <table class="form-table2 mb10"> | |
13 | - <colgroup> | |
14 | - <col width="15%" /> | |
15 | - <col width="85%" /> | |
16 | - </colgroup> | |
17 | - <tr> | |
18 | - <th | |
19 | - :class="{ | |
20 | - 'point-font2': pageRole == 'adm', | |
21 | - 'point-font': pageRole == 'government', | |
22 | - }" | |
23 | - > | |
24 | - 기업명 | |
25 | - </th> | |
26 | - <td colspan="3"> | |
27 | - <span class="mr10"> {{ rvwMttrVO["entNm"] }}</span> | |
28 | - <button | |
29 | - v-show="pageNm != 'entInfo'" | |
30 | - class="small-btn darkg-border-btn" | |
31 | - @click="fnMove(rvwMttrVO.entId)" | |
32 | - > | |
33 | - 기업정보 보기 | |
34 | - </button> | |
35 | - </td> | |
36 | - </tr> | |
37 | - <tr> | |
38 | - <th | |
39 | - :class="{ | |
40 | - 'point-font2': pageRole == 'adm', | |
41 | - 'point-font': pageRole == 'government', | |
42 | - }" | |
43 | - > | |
44 | - 투자상담명 | |
45 | - </th> | |
46 | - <td>{{ rvwMttrVO["ttl"] }}</td> | |
47 | - </tr> | |
48 | - <tr> | |
49 | - <th | |
50 | - :class="{ | |
51 | - 'point-font2': pageRole == 'adm', | |
52 | - 'point-font': pageRole == 'government', | |
53 | - }" | |
54 | - > | |
55 | - 유형 | |
56 | - </th> | |
57 | - <td>{{ rvwMttrVO.type }}</td> | |
58 | - </tr> | |
59 | - <tr> | |
60 | - <th | |
61 | - :class="{ | |
62 | - 'point-font2': pageRole == 'adm', | |
63 | - 'point-font': pageRole == 'government', | |
64 | - }" | |
65 | - > | |
66 | - 접수자 | |
67 | - </th> | |
68 | - <td> | |
69 | - {{ rvwMttrVO["clrNm"] }} | |
70 | - </td> | |
71 | - </tr> | |
72 | - <tr> | |
73 | - <th | |
74 | - :class="{ | |
75 | - 'point-font2': pageRole == 'adm', | |
76 | - 'point-font': pageRole == 'government', | |
77 | - }" | |
78 | - > | |
79 | - 접수일자 | |
80 | - </th> | |
81 | - <td>{{ rvwMttrVO["rcptDt"] }}</td> | |
82 | - </tr> | |
83 | - <tr> | |
84 | - <th | |
85 | - :class="{ | |
86 | - 'point-font2': pageRole == 'adm', | |
87 | - 'point-font': pageRole == 'government', | |
88 | - }" | |
89 | - > | |
90 | - 첨부파일 | |
91 | - </th> | |
92 | - <td> | |
93 | - <template v-if="this.pageAuth.fileDwnldAuthrt == 'Y'"> | |
94 | - <template | |
95 | - v-if="rvwMttrVO.fileList != null && rvwMttrVO.fileList != ''" | |
96 | - > | |
97 | - <ul v-for="(item, idx) in rvwMttrVO.fileList" :key="idx"> | |
98 | - <li @click="downloadFile(item)"> | |
99 | - {{ item.fileNm + "." + item.extnNm }} | |
100 | - </li> | |
101 | - </ul> | |
102 | - </template> | |
103 | - <p v-else class="data-none">등록된 첨부파일이 없습니다.</p> | |
104 | - </template> | |
105 | - </td> | |
106 | - </tr> | |
107 | - </table> | |
108 | - <div class="gd-12 pd0"> | |
109 | - <label for="" class="point-font mb10" style="font-size: 1.6rem"> | |
110 | - 접수내용 | |
111 | - </label> | |
112 | - <textarea | |
113 | - name="" | |
114 | - id="" | |
115 | - class="content" | |
116 | - :value="rvwMttrVO['rcptCn']" | |
117 | - disabled | |
118 | - ></textarea> | |
119 | - </div> | |
120 | - </div> | |
121 | - </details> | |
122 | - <details open class="form-table-style mb30"> | |
123 | - <summary | |
124 | - :class="{ | |
125 | - 'point-font2': pageRole == 'adm', | |
126 | - 'point-font': pageRole == 'government', | |
127 | - }" | |
128 | - > | |
129 | - <p class="summary-style pl10">진행단계 및 지원방안</p> | |
130 | - </summary> | |
131 | - <div class="pt10 pb10"> | |
132 | - <template | |
133 | - v-if=" | |
134 | - rvwMttrVO.prgrsList != null && | |
135 | - rvwMttrVO.prgrsList.length > 0 && | |
136 | - rvwMttrVO.prgrsList[0].picId != null | |
137 | - " | |
138 | - > | |
139 | - <div v-for="(prgrs, index) of rvwMttrVO.prgrsList" :key="index"> | |
140 | - <table class="form-table2 mb10"> | |
141 | - <colgroup> | |
142 | - <col width="15%" /> | |
143 | - <col width="85%" /> | |
144 | - </colgroup> | |
145 | - <tr> | |
146 | - <th | |
147 | - :class="{ | |
148 | - 'point-font2': pageRole == 'adm', | |
149 | - 'point-font': pageRole == 'government', | |
150 | - }" | |
151 | - > | |
152 | - 담당자 | |
153 | - </th> | |
154 | - <td>{{ prgrs["picNm"] }}</td> | |
155 | - </tr> | |
156 | - <tr> | |
157 | - <th | |
158 | - :class="{ | |
159 | - 'point-font2': pageRole == 'adm', | |
160 | - 'point-font': pageRole == 'government', | |
161 | - }" | |
162 | - > | |
163 | - 진행단계 | |
164 | - </th> | |
165 | - <td> | |
166 | - <span v-show="prgrs['prgrsCrs'] == 0">접수전</span> | |
167 | - <span v-show="prgrs['prgrsCrs'] == 1">처리중</span> | |
168 | - <span v-show="prgrs['prgrsCrs'] == 2">완료</span> | |
169 | - </td> | |
170 | - </tr> | |
171 | - <tr> | |
172 | - <th | |
173 | - :class="{ | |
174 | - 'point-font2': pageRole == 'adm', | |
175 | - 'point-font': pageRole == 'government', | |
176 | - }" | |
177 | - > | |
178 | - 진행날짜 | |
179 | - </th> | |
180 | - <td>{{ prgrs["prgrsDt"] }}</td> | |
181 | - </tr> | |
182 | - </table> | |
183 | - <div class="gd-12 pd0"> | |
184 | - <label for="" class="point-font mb10" style="font-size: 1.6rem"> | |
185 | - 지원방안 | |
186 | - </label> | |
187 | - <textarea | |
188 | - class="content" | |
189 | - v-model="prgrs['sprtMthd']" | |
190 | - disabled | |
191 | - ></textarea> | |
192 | - </div> | |
193 | - </div> | |
194 | - </template> | |
195 | - <div v-else> | |
196 | - <table class="form-table2 mb10"> | |
197 | - <tbody> | |
198 | - <tr> | |
199 | - <td class="text-ct data-none"> | |
200 | - 등록된 정보가 존재하지 않습니다. | |
201 | - </td> | |
202 | - </tr> | |
203 | - </tbody> | |
204 | - </table> | |
205 | - </div> | |
206 | - </div> | |
207 | - </details> | |
208 | -</template> | |
209 | - | |
210 | -<script> | |
211 | -import defaultAxios from "../../../resources/js/defaultAxios"; | |
212 | - | |
213 | -// api | |
214 | -import { rvwMttrDetailProc } from "../../../resources/api/rvwMttr"; | |
215 | - | |
216 | -export default { | |
217 | - props: { | |
218 | - pageNm: { | |
219 | - type: String, | |
220 | - default: null, | |
221 | - }, | |
222 | - pageId: { | |
223 | - type: String, | |
224 | - }, | |
225 | - }, | |
226 | - data() { | |
227 | - return { | |
228 | - pageRole: this.$store.state.userType, | |
229 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
230 | - | |
231 | - rvwMttrVO: {}, | |
232 | - rvwMttrTypeList: [], | |
233 | - }; | |
234 | - }, | |
235 | - created() { | |
236 | - this.axiosViewDetail(); | |
237 | - }, | |
238 | - methods: { | |
239 | - // axios: 조회(상세) | |
240 | - async axiosViewDetail() { | |
241 | - // 데이터 세팅 | |
242 | - const data = { rvwMttrId: this.pageId }; | |
243 | - // 실행 | |
244 | - try { | |
245 | - const response = await rvwMttrDetailProc(data); | |
246 | - this.rvwMttrVO = response.data.data.rvwMttrVO; | |
247 | - this.rvwMttrTypeList = response.data.data.rvwMttrTypeList; | |
248 | - this.$emit("fnSaveVO", this.rvwMttrVO, this.rvwMttrTypeList); | |
249 | - } catch (error) { | |
250 | - const errorData = error.response.data; | |
251 | - if (errorData.message != null && errorData.message != "") { | |
252 | - alert(error.response.data.message); | |
253 | - } else { | |
254 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
255 | - } | |
256 | - } | |
257 | - }, | |
258 | - | |
259 | - // 기업 정보로 이동 | |
260 | - fnMove(entId) { | |
261 | - this.$router.push({ | |
262 | - path: this.$store.state.userType + "/companyInfo/view.page", | |
263 | - query: { pageId: entId }, | |
264 | - }); | |
265 | - }, | |
266 | - // axios: 첨부파일 다운로드 | |
267 | - async downloadFile(file) { | |
268 | - try { | |
269 | - const response = await defaultAxios({ | |
270 | - url: "/sys/file/fileDownload.json", // URL 경로 확인 | |
271 | - method: "post", | |
272 | - headers: { | |
273 | - "Content-Type": "application/json; charset=UTF-8", | |
274 | - Authorization: this.$store.state.authorization, | |
275 | - }, | |
276 | - data: file.fileId, | |
277 | - responseType: "blob", | |
278 | - }); | |
279 | - const url = window.URL.createObjectURL(new Blob([response.data])); | |
280 | - const link = document.createElement("a"); | |
281 | - link.href = url; | |
282 | - link.setAttribute("download", file.fileNm + "." + file.extnNm); | |
283 | - document.body.appendChild(link); | |
284 | - link.click(); | |
285 | - document.body.removeChild(link); | |
286 | - window.URL.revokeObjectURL(url); | |
287 | - } catch (error) { | |
288 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
289 | - } | |
290 | - }, | |
291 | - }, | |
292 | -}; | |
293 | -</script> |
--- client/views/component/companyInfo/RvwMttrList.vue
... | ... | @@ -1,242 +0,0 @@ |
1 | -<template> | |
2 | - <details open class="form-table-style mb30"> | |
3 | - <summary | |
4 | - :class="{ | |
5 | - 'point-font2': pageRole == 'adm', | |
6 | - 'point-font': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <p class="summary-style pl10">검토사항내역</p> | |
10 | - </summary> | |
11 | - <div class="pt10 pb10"> | |
12 | - <ListTable | |
13 | - :colgroup="colgroup" | |
14 | - :thead="thead" | |
15 | - :tbody="tbody" | |
16 | - :className="pageRole == 'adm' ? 'admin-list' : 'review-table'" | |
17 | - @listClick="fnModalOpen" | |
18 | - /> | |
19 | - <div class="flex justify-end no-gutters"> | |
20 | - <div :class="pageNm == 'entInfo' ? 'gd-2' : 'gd-1'"></div> | |
21 | - <div :class="pageNm == 'entInfo' ? 'gd-8' : 'gd-10'"> | |
22 | - <PaginationButton | |
23 | - v-model:currentPage="search['currentPage']" | |
24 | - :pagination="search" | |
25 | - :click="fnViewList" | |
26 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
27 | - /> | |
28 | - </div> | |
29 | - <div :class="pageNm == 'entInfo' ? 'gd-2' : 'gd-1'"> | |
30 | - <button | |
31 | - :class="{ | |
32 | - 'large-btn': true, | |
33 | - 'blue-btn': pageRole == 'adm', | |
34 | - 'green-btn point-font': pageRole == 'government', | |
35 | - }" | |
36 | - @click="fnInsert" | |
37 | - v-if="pageAuth.regAuthrt == 'Y'" | |
38 | - > | |
39 | - 등록 | |
40 | - </button> | |
41 | - </div> | |
42 | - </div> | |
43 | - </div> | |
44 | - </details> | |
45 | - | |
46 | - <Modal className="medium-modal" :showModal="isOpen"> | |
47 | - <template v-slot:header> | |
48 | - <div | |
49 | - :class="{ | |
50 | - 'box-title': true, | |
51 | - 'point-font2': pageRole == 'adm', | |
52 | - 'point-font': pageRole == 'government', | |
53 | - }" | |
54 | - > | |
55 | - <p>검토사항</p> | |
56 | - </div> | |
57 | - <button class="close-btn" @click="fnModalClose">X</button> | |
58 | - </template> | |
59 | - | |
60 | - <!-- 검토사항 --> | |
61 | - <RvwMttrDetail :pageNm="pageNm" :pageId="rvwMttrView.rvwMttrId" /> | |
62 | - | |
63 | - <template v-slot:footer> | |
64 | - <div v-if="pageAuth.mdfcnAuthrt == 'Y'" class="gd-3 pd0 mr10"> | |
65 | - <button | |
66 | - :class="{ | |
67 | - 'large-btn': true, | |
68 | - 'blue-border-btn': pageRole == 'adm', | |
69 | - 'green-border-btn': pageRole == 'government', | |
70 | - }" | |
71 | - @click="fnModalUpdate" | |
72 | - > | |
73 | - 수정 | |
74 | - </button> | |
75 | - </div> | |
76 | - <div v-if="pageAuth.delAuthrt == 'Y'" class="gd-3 pd0"> | |
77 | - <button class="large-btn red-border-btn" @click="fnModalDelete"> | |
78 | - 삭제 | |
79 | - </button> | |
80 | - </div> | |
81 | - </template> | |
82 | - </Modal> | |
83 | -</template> | |
84 | - | |
85 | -<script> | |
86 | -// Component | |
87 | -import ListTable from "../table/ListTable.vue"; | |
88 | -import PaginationButton from "../pagination/PaginationButton.vue"; | |
89 | -import Modal from "../modal/Modal.vue"; | |
90 | -import RvwMttrDetail from "./RvwMttrDetail.vue"; | |
91 | - | |
92 | -// Resources | |
93 | -import { defaultSearchParams } from "../../../resources/js/defaultSearchParams"; | |
94 | - | |
95 | -// API | |
96 | -import { | |
97 | - rvwMttrListProc, | |
98 | - rvwMttrDeleteProc, | |
99 | -} from "../../../resources/api/rvwMttr"; | |
100 | - | |
101 | -export default { | |
102 | - components: { | |
103 | - ListTable: ListTable, | |
104 | - PaginationButton: PaginationButton, | |
105 | - Modal: Modal, | |
106 | - RvwMttrDetail: RvwMttrDetail, | |
107 | - }, | |
108 | - props: { | |
109 | - data: { | |
110 | - type: Object, | |
111 | - }, | |
112 | - pageNm: { | |
113 | - type: String, | |
114 | - default: null, | |
115 | - }, | |
116 | - pageId: { | |
117 | - type: String, | |
118 | - }, | |
119 | - pageAuth: { | |
120 | - type: Object, | |
121 | - }, | |
122 | - pageRole: { | |
123 | - type: String, | |
124 | - default: "government", | |
125 | - }, | |
126 | - entId: { | |
127 | - type: String, | |
128 | - }, | |
129 | - }, | |
130 | - data() { | |
131 | - return { | |
132 | - colgroup: ["5%", "10%", "15%", "40%", "15%", "15%"], | |
133 | - thead: ["NO", "형태", "기업명", "투자상담명", "진행단계", "등록일"], | |
134 | - tbody: [], | |
135 | - search: { ...defaultSearchParams }, | |
136 | - list: [], | |
137 | - // 팝업 | |
138 | - isOpen: false, | |
139 | - rvwMttrView: {}, | |
140 | - rvwMttrTypeList: [], | |
141 | - }; | |
142 | - }, | |
143 | - created() { | |
144 | - this.fnViewList(); | |
145 | - }, | |
146 | - methods: { | |
147 | - // axios: 모달 조회(목록) | |
148 | - async fnViewList() { | |
149 | - // 데이터 세팅 | |
150 | - let data = this.search; | |
151 | - data.cateId = "ivst_dscsn_id"; | |
152 | - data.cateValue = this.pageId; | |
153 | - // 실행 | |
154 | - try { | |
155 | - const response = await rvwMttrListProc(data); | |
156 | - this.list = response.data.data.list; | |
157 | - this.search = response.data.data.pagination; | |
158 | - this.rvwMttrTypeList = response.data.data.rvwMttrTypeList; | |
159 | - this.makeTbody(); | |
160 | - } catch (error) { | |
161 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
162 | - } | |
163 | - }, | |
164 | - // tbody 생성 | |
165 | - makeTbody() { | |
166 | - this.tbody = []; | |
167 | - this.tbody = this.list.map((rvwMttr, idx) => ({ | |
168 | - id: | |
169 | - this.search.totalRecordCount - | |
170 | - idx - | |
171 | - (this.search.currentPage - 1) * this.search.recordSize, | |
172 | - type: rvwMttr.type, | |
173 | - entNm: rvwMttr.entNm, | |
174 | - ttl: rvwMttr.ttl, | |
175 | - nowPrgrsCrs: | |
176 | - rvwMttr.nowPrgrsCrs == "0" | |
177 | - ? "접수전" | |
178 | - : rvwMttr.nowPrgrsCrs == "1" | |
179 | - ? "처리중" | |
180 | - : rvwMttr.nowPrgrsCrs == "2" | |
181 | - ? "완료" | |
182 | - : "-", | |
183 | - regDt: rvwMttr.regDt, | |
184 | - })); | |
185 | - }, | |
186 | - | |
187 | - // 모달 등록 | |
188 | - fnInsert() { | |
189 | - this.$router.push({ | |
190 | - path: this.pageRole + "/companyReview/insert.page", | |
191 | - query: { | |
192 | - entId: this.entId, | |
193 | - ivstDscsnId: this.data["ivstDscsnId"], | |
194 | - ttl: this.data["ttl"], | |
195 | - }, | |
196 | - }); | |
197 | - }, | |
198 | - | |
199 | - // 모달 열기 | |
200 | - fnModalOpen(index) { | |
201 | - this.isOpen = true; | |
202 | - this.rvwMttrView = this.list[index]; | |
203 | - }, | |
204 | - // 모달 닫기 | |
205 | - fnModalClose() { | |
206 | - this.isOpen = false; | |
207 | - this.fnViewList(); | |
208 | - }, | |
209 | - | |
210 | - // axios: 모달 삭제 | |
211 | - async fnModalDelete() { | |
212 | - var isDelete = confirm("해당 검토사항을 삭제하시겠습니까?"); | |
213 | - if (!isDelete) { | |
214 | - return; | |
215 | - } | |
216 | - // 데이터 세팅 | |
217 | - const data = this.rvwMttrView; | |
218 | - data.useYn = "N"; | |
219 | - // 실행 | |
220 | - try { | |
221 | - const response = await rvwMttrDeleteProc(data); | |
222 | - alert(response.data["message"]); | |
223 | - this.fnViewList(); // 검토사항 재조회 | |
224 | - this.$emit("fnIvstDscsnView"); | |
225 | - this.fnModalClose(); | |
226 | - } catch (error) { | |
227 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
228 | - } | |
229 | - }, | |
230 | - // 모달 수정 | |
231 | - fnModalUpdate() { | |
232 | - this.$router.push({ | |
233 | - path: this.pageRole + "/companyReview/insert.page", | |
234 | - query: { | |
235 | - pageId: this.rvwMttrView["rvwMttrId"], | |
236 | - entId: this.rvwMttrView.entId, | |
237 | - }, | |
238 | - }); | |
239 | - }, | |
240 | - }, | |
241 | -}; | |
242 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/index.html
+++ client/views/index.html
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
6 | 6 |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
7 | 7 |
<meta name="description" content="Node Vue Web"> |
8 |
- <link rel="icon" href="../client/favicon.ico" /> |
|
8 |
+ <!-- <link rel="icon" href="../client/favicon.ico" /> --> |
|
9 | 9 |
|
10 | 10 |
<!-- 공통css --> |
11 | 11 |
<link rel="stylesheet" href="../client/resources/lib/swiper/swiper-bundle.min.css"> |
... | ... | @@ -36,7 +36,7 @@ |
36 | 36 |
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script> |
37 | 37 |
<script src="../client/resources/lib/swiper/swiper-element-bundle.min.js"></script> |
38 | 38 |
<script type="text/javascript" charset="utf-8" src="../client/ckeditor/build/ckeditor.js"></script> |
39 |
- <title>영주시 투자유치 플랫폼</title> |
|
39 |
+ <title>takensoft cms</title> |
|
40 | 40 |
</head> |
41 | 41 |
<body> |
42 | 42 |
<div id="root"></div> |
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
... | ... | @@ -9,29 +9,8 @@ |
9 | 9 |
</div> |
10 | 10 |
</div> |
11 | 11 |
<div v-else v-cloak class="user-wrap relative"> |
12 |
- <UserHeader |
|
13 |
- v-if=" |
|
14 |
- this.$route.path.startsWith('/company') || |
|
15 |
- this.$route.path.startsWith('/government') |
|
16 |
- " |
|
17 |
- /> |
|
18 | 12 |
<div class="main-warp"> |
19 | 13 |
<router-view /> |
20 |
- </div> |
|
21 |
- <div class="quick-menu" v-show="$route.path !== '/' && !otherWindow"> |
|
22 |
- <ul> |
|
23 |
- <li> |
|
24 |
- <a href="/"> |
|
25 |
- <div class="mb10" style="width: 10rem"> |
|
26 |
- <img |
|
27 |
- src="/client/resources/img/quick.png" |
|
28 |
- alt="메인으로 바로가기" |
|
29 |
- /> |
|
30 |
- </div> |
|
31 |
- <p class="detail-bold orange text-ct">메인으로</p> |
|
32 |
- </a> |
|
33 |
- </li> |
|
34 |
- </ul> |
|
35 | 14 |
</div> |
36 | 15 |
</div> |
37 | 16 |
</template> |
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
... | ... | @@ -1,28 +1,14 @@ |
1 | 1 |
import { createWebHistory, createRouter } from "vue-router"; |
2 | 2 |
import store from "./AppStore"; |
3 | 3 |
|
4 |
-// 공통페이지 |
|
5 |
-import Intro from "./user/intro/Intro.vue"; |
|
6 |
- |
|
7 |
-// 기업 |
|
8 |
-import IntroduceSelectList from "./user/company/introduce/IntroduceSelectList.vue"; |
|
9 |
-import Enroll from "./user/company/consulting/Enroll.vue"; |
|
10 |
- |
|
11 | 4 |
// 관리자 |
12 | 5 |
import CommonSelectList from "./adm/boardManagement/template/commonTemplate/CommonSelectList.vue"; |
13 | 6 |
import CommonSelectListOne from "./adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue"; |
14 | 7 |
|
15 | 8 |
const beforeRoutes = [ |
16 | 9 |
/* 메인화면 */ |
17 |
- { path: "/", name: "Intro", component: Intro }, |
|
18 |
- // 기업 |
|
19 |
- { |
|
20 |
- path: "/company", |
|
21 |
- children: [ |
|
22 |
- { path: "introduceSelectList.page", name: "IntroduceSelectList", component: IntroduceSelectList }, |
|
23 |
- { path: "consulting.page", name: "Enroll", component: Enroll }, |
|
24 |
- ], |
|
25 |
- }, |
|
10 |
+ // { path: "/", name: "", component: }, |
|
11 |
+ |
|
26 | 12 |
// 관리자 |
27 | 13 |
{ |
28 | 14 |
path: "/adm", |
... | ... | @@ -149,11 +135,7 @@ |
149 | 135 |
store.commit('setUserType', null) |
150 | 136 |
} else if (to.path.startsWith('/adm')) { |
151 | 137 |
store.commit('setUserType', 'adm'); |
152 |
- } else if (to.path.startsWith('/company')) { |
|
153 |
- store.commit('setUserType', 'company'); |
|
154 |
- } else if (to.path.startsWith('/government')) { |
|
155 |
- store.commit('setUserType', 'government'); |
|
156 |
- } |
|
138 |
+ } |
|
157 | 139 |
|
158 | 140 |
if (to.path === '/login.page') { |
159 | 141 |
store.commit('setPath', to.path); |
... | ... | @@ -164,8 +146,8 @@ |
164 | 146 |
const mbrAuth = store.state.roles.map(auth => auth.authority); // 사용자 권한 정보 |
165 | 147 |
const pageAuth = mergeAuth(mbrAuth, to.meta); |
166 | 148 |
sessionStorage.setItem("redirect", to.fullPath); |
167 |
- // 메인 페이지 or 기업 페이지 or 로그인 페이지 |
|
168 |
- if (to.path === '/' || to.path.startsWith('/company/') || to.path.includes('/login.page') || to.path.startsWith('/cmmn/') || to.path.includes('/searchId.page') || to.path.includes('/resetPswd.page')) { |
|
149 |
+ // 메인 페이지 or 로그인 페이지 |
|
150 |
+ if (to.path === '/' || to.path.includes('/login.page') || to.path.startsWith('/cmmn/') || to.path.includes('/searchId.page') || to.path.includes('/resetPswd.page')) { |
|
169 | 151 |
let path = to.path; |
170 | 152 |
// 게시판일 경우 .page로 끝나는 경로가 있으므로 마지막 '/' 이전 경로로 설정 |
171 | 153 |
if (to.path.includes('BBS_MNG')) { |
... | ... | @@ -176,8 +158,6 @@ |
176 | 158 |
store.commit('setPageAuth', pageAuth); |
177 | 159 |
if (path.includes('/main.page')) { |
178 | 160 |
await cntnStatsSave(null, mbrAuth); // 메인 페이지 접속 시 사용자 접속 통계 증가 |
179 |
- } else if (path.startsWith('/company/')) { |
|
180 |
- await cntnStatsSave(to.meta.typeId, mbrAuth); // 기업 페이지의 각 종류(게시판, 콘텐츠)에 맞는 통계 증가 |
|
181 | 161 |
} |
182 | 162 |
next(); |
183 | 163 |
} else if (isLogin) { |
--- client/views/pages/login/Login.vue
+++ client/views/pages/login/Login.vue
... | ... | @@ -117,7 +117,7 @@ |
117 | 117 |
url == "/searchId.page" || |
118 | 118 |
url == "/resetPswd.page" |
119 | 119 |
) { |
120 |
- this.$router.push({ path: "/government/main.page" }); |
|
120 |
+ this.$router.push({ path: "/main.page" }); |
|
121 | 121 |
} else { |
122 | 122 |
this.$router.push({ path: url }); |
123 | 123 |
} |
--- client/views/pages/user/company/consulting/Enroll.vue
... | ... | @@ -1,307 +0,0 @@ |
1 | -<template> | |
2 | - <div class="consulting-page content-page"> | |
3 | - <div class="content pt50 pb50"> | |
4 | - <div class=" w1400"> | |
5 | - <div class="page-title point-font mb10"> | |
6 | - <p>온라인상담신청</p> | |
7 | - </div> | |
8 | - <div> | |
9 | - <p class="essential text-rg"><span class="mr10">*</span>필수입력</p> | |
10 | - </div> | |
11 | - <table class="form-table mb30"> | |
12 | - <colgroup> | |
13 | - <col width="10%" /> | |
14 | - <col width="40%" /> | |
15 | - <col width="10%" /> | |
16 | - <col width="40%" /> | |
17 | - </colgroup> | |
18 | - <tbody> | |
19 | - <tr> | |
20 | - <th class="point-font"> | |
21 | - <span>기업명</span> | |
22 | - </th> | |
23 | - <td> | |
24 | - <input | |
25 | - type="text" | |
26 | - class="full-input" | |
27 | - ref="entNm" | |
28 | - v-model="entDscsnAplyVO['entNm']" | |
29 | - placeholder="기업명을 입력하세요." | |
30 | - /> | |
31 | - </td> | |
32 | - <th class="point-font"> | |
33 | - <span>성명</span> | |
34 | - </th> | |
35 | - <td> | |
36 | - <input | |
37 | - type="text" | |
38 | - class="full-input" | |
39 | - ref="aplcntNm" | |
40 | - v-model="entDscsnAplyVO['aplcntNm']" | |
41 | - placeholder="성명을 입력하세요." | |
42 | - /> | |
43 | - </td> | |
44 | - </tr> | |
45 | - <tr> | |
46 | - <th class="point-font"> | |
47 | - <span>연락처</span> | |
48 | - </th> | |
49 | - <td> | |
50 | - <input | |
51 | - type="text" | |
52 | - class="full-input" | |
53 | - ref="telno" | |
54 | - v-model="entDscsnAplyVO['telno']" | |
55 | - oninput="this.value = this.value.replace(/[^0-9.]/g, '')" | |
56 | - minlength="10" | |
57 | - maxlength="11" | |
58 | - placeholder="연락 가능한 휴대폰 번호를 입력하세요.(숫자만)" | |
59 | - /> | |
60 | - </td> | |
61 | - <th class="point-font"> | |
62 | - <span>이메일</span> | |
63 | - </th> | |
64 | - <td> | |
65 | - <input | |
66 | - type="text" | |
67 | - class="full-input" | |
68 | - ref="eml" | |
69 | - v-model="entDscsnAplyVO['eml']" | |
70 | - placeholder="이메일을 입력하세요." | |
71 | - /> | |
72 | - </td> | |
73 | - </tr> | |
74 | - <tr class="border-top"> | |
75 | - <th colspan="4" class="text-lf point-font"> | |
76 | - <span>내용</span> | |
77 | - </th> | |
78 | - </tr> | |
79 | - <tr> | |
80 | - <td colspan="4"> | |
81 | - <textarea | |
82 | - name="" | |
83 | - id="" | |
84 | - class="content" | |
85 | - ref="aplyCn" | |
86 | - v-model="entDscsnAplyVO['aplyCn']" | |
87 | - placeholder="내용을 입력하세요." | |
88 | - /> | |
89 | - </td> | |
90 | - </tr> | |
91 | - <tr class="border-top"> | |
92 | - <td colspan="4"> | |
93 | - <div class="gd-12 pl0 pr0"> | |
94 | - <label class="mb10 point-font">첨부파일</label> | |
95 | - <div class="flex"> | |
96 | - <div class="gd-10 pl0"> | |
97 | - <div class="filebox"> | |
98 | - <input | |
99 | - class="upload-name full-input" | |
100 | - v-model="viewFiles" | |
101 | - placeholder="첨부파일이 없습니다." | |
102 | - readonly | |
103 | - /> | |
104 | - </div> | |
105 | - <div> | |
106 | - <div | |
107 | - v-for="(file, index) of fileList" | |
108 | - :key="index" | |
109 | - class="file-wrap flex justify-between align-center border pd10 mt10" | |
110 | - > | |
111 | - <p v-if="file['fileId'] != null"> | |
112 | - {{ file.fileNm }}.{{ file.extnNm }} | |
113 | - </p> | |
114 | - <p v-else>{{ file.name }}</p> | |
115 | - <button | |
116 | - class="icon-btn pd0" | |
117 | - @click="fnFileDelete(file, index)" | |
118 | - > | |
119 | - <svg-icon | |
120 | - type="mdi" | |
121 | - :width="15" | |
122 | - :height="15" | |
123 | - :path="path" | |
124 | - /> | |
125 | - </button> | |
126 | - </div> | |
127 | - </div> | |
128 | - </div> | |
129 | - <div class="gd-2 pr0"> | |
130 | - <label | |
131 | - for="file" | |
132 | - class="large-btn text-ct cursor green-border-btn" | |
133 | - > | |
134 | - 파일찾기 | |
135 | - </label> | |
136 | - <input | |
137 | - type="file" | |
138 | - id="file" | |
139 | - ref="file" | |
140 | - @change="fnFileInsert" | |
141 | - multiple | |
142 | - style="display: none" | |
143 | - /> | |
144 | - </div> | |
145 | - </div> | |
146 | - </div> | |
147 | - </td> | |
148 | - </tr> | |
149 | - </tbody> | |
150 | - </table> | |
151 | - <div class="flex justify-end no-gutters"> | |
152 | - <div class="gd-2"> | |
153 | - <button class="large-btn green-btn point-font" @click="fnInsert"> | |
154 | - 상담신청 | |
155 | - </button> | |
156 | - </div> | |
157 | - </div> | |
158 | - </div> | |
159 | - </div> | |
160 | - </div> | |
161 | -</template> | |
162 | - | |
163 | -<script> | |
164 | -import defaultAxios from "../../../../../resources/js/defaultAxios"; | |
165 | -import defaultFileSystem from "../../../../../resources/js/defaultFileSystem"; | |
166 | -// API | |
167 | -import { entDscsnAplyDetailProc } from "../../../../../resources/api/entDscsnAply"; | |
168 | -export default { | |
169 | - mixins: [defaultFileSystem], | |
170 | - data() { | |
171 | - return { | |
172 | - entDscsnAplyVO: {}, | |
173 | - }; | |
174 | - }, | |
175 | - created() { | |
176 | - this.fnViewDetail(); | |
177 | - }, | |
178 | - methods: { | |
179 | - // axios: 조회(상세) | |
180 | - async fnViewDetail() { | |
181 | - // 데이터 세팅 | |
182 | - const data = { entDscsnAplyId: null }; | |
183 | - // 실행 | |
184 | - try { | |
185 | - const response = await entDscsnAplyDetailProc(data); | |
186 | - this.entDscsnAplyVO = response.data.data; | |
187 | - } catch (error) { | |
188 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
189 | - } | |
190 | - }, | |
191 | - | |
192 | - // 상담신청 | |
193 | - fnInsert() { | |
194 | - // 유효성 검사 | |
195 | - if (this.valiadtion() == false) { | |
196 | - return; | |
197 | - } | |
198 | - // 데이터 세팅 | |
199 | - let data = this.entDscsnAplyVO; | |
200 | - data.insertFileList = this.insertFileList; | |
201 | - data.deleteFileList = this.deleteFileList; | |
202 | - // 실행 | |
203 | - defaultAxios({ | |
204 | - url: "/sys/entDscsnAply/insertProc.file", | |
205 | - method: "post", | |
206 | - headers: { | |
207 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
208 | - Authorization: this.$store.state.authorization, | |
209 | - }, | |
210 | - data: data, | |
211 | - }) | |
212 | - .then((response) => { | |
213 | - alert(response.data["message"]); | |
214 | - this.fnViewDetail(); | |
215 | - this.viewFiles = null; | |
216 | - this.fileList = []; | |
217 | - this.insertFileList = []; | |
218 | - this.deleteFileList = []; | |
219 | - }) | |
220 | - .catch((error) => { | |
221 | - const errorData = error.response.data; | |
222 | - if (errorData.message != null && errorData.message != "") { | |
223 | - alert(error.response.data.message); | |
224 | - } else { | |
225 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
226 | - } | |
227 | - }); | |
228 | - }, | |
229 | - // 유효성 검사 | |
230 | - valiadtion() { | |
231 | - if ( | |
232 | - this.entDscsnAplyVO["entNm"] == null || | |
233 | - this.entDscsnAplyVO["entNm"] == "" | |
234 | - ) { | |
235 | - alert("기업명을 입력해주세요."); | |
236 | - this.$refs.entNm.focus(); | |
237 | - return false; | |
238 | - } | |
239 | - | |
240 | - if ( | |
241 | - this.entDscsnAplyVO["aplcntNm"] == null || | |
242 | - this.entDscsnAplyVO["aplcntNm"] == "" | |
243 | - ) { | |
244 | - alert("성명을 입력해주세요."); | |
245 | - this.$refs.aplcntNm.focus(); | |
246 | - return false; | |
247 | - } | |
248 | - | |
249 | - if ( | |
250 | - this.entDscsnAplyVO["telno"] == null || | |
251 | - this.entDscsnAplyVO["telno"] == "" | |
252 | - ) { | |
253 | - alert("연락처를 입력해주세요."); | |
254 | - this.$refs.telno.focus(); | |
255 | - return false; | |
256 | - } else if ( | |
257 | - this.entDscsnAplyVO["telno"].length < 7 || | |
258 | - this.entDscsnAplyVO["telno"].length > 11 | |
259 | - ) { | |
260 | - alert("유효하지 않은 연락처입니다."); | |
261 | - this.$refs.telno.focus(); | |
262 | - return false; | |
263 | - } | |
264 | - | |
265 | - if ( | |
266 | - this.entDscsnAplyVO["eml"] == null || | |
267 | - this.entDscsnAplyVO["eml"] == "" | |
268 | - ) { | |
269 | - alert("이메일을 입력해주세요."); | |
270 | - this.$refs.eml.focus(); | |
271 | - return false; | |
272 | - } | |
273 | - if (!this.emlCheck(this.entDscsnAplyVO["eml"])) { | |
274 | - alert("유효하지 않은 이메일입니다."); | |
275 | - this.$refs.eml.focus(); | |
276 | - return false; | |
277 | - } | |
278 | - | |
279 | - if ( | |
280 | - this.entDscsnAplyVO["aplyCn"] == null || | |
281 | - this.entDscsnAplyVO["aplyCn"] == "" | |
282 | - ) { | |
283 | - alert("내용을 입력해주세요."); | |
284 | - this.$refs.aplyCn.focus(); | |
285 | - return false; | |
286 | - } | |
287 | - }, | |
288 | - // 이메일 형식 검사 | |
289 | - emlCheck(eml_address) { | |
290 | - let eml_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; | |
291 | - if (!eml_regex.test(eml_address)) { | |
292 | - return false; | |
293 | - } else { | |
294 | - return true; | |
295 | - } | |
296 | - }, | |
297 | - }, | |
298 | - watch: { | |
299 | - fileList: { | |
300 | - deep: true, | |
301 | - handler() { | |
302 | - this.fnFileList(); | |
303 | - }, | |
304 | - }, | |
305 | - }, | |
306 | -}; | |
307 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/company/introduce/IntroduceSelectList.vue
... | ... | @@ -1,47 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb10"> | |
5 | - <p>국가산단 투자유치 소개</p> | |
6 | - </div> | |
7 | - <ListTable :colgroup="colgroup" :thead="thead" :tbody="tbody" /> | |
8 | - </div> | |
9 | - </div> | |
10 | -</template> | |
11 | - | |
12 | -<script> | |
13 | -import ListTable from "../../../../component/table/ListTable.vue"; | |
14 | -export default { | |
15 | - data() { | |
16 | - return { | |
17 | - colgroup: ["15%", "70%", "15%"], | |
18 | - thead: ["NO", "제목", "등록일"], | |
19 | - tbody: [ | |
20 | - { | |
21 | - id: 1, | |
22 | - title: "시스템 점검 안내", | |
23 | - date: "2023-04-03", | |
24 | - }, | |
25 | - { | |
26 | - id: 2, | |
27 | - title: "신규 서비스 출시", | |
28 | - date: "2023-04-01", | |
29 | - }, | |
30 | - { | |
31 | - id: 3, | |
32 | - title: "휴무 안내", | |
33 | - date: "2023-04-08", | |
34 | - }, | |
35 | - ], | |
36 | - }; | |
37 | - }, | |
38 | - methods: {}, | |
39 | - watch: {}, | |
40 | - computed: {}, | |
41 | - components: { | |
42 | - ListTable: ListTable, | |
43 | - }, | |
44 | - mounted() { | |
45 | - }, | |
46 | -}; | |
47 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/company/main/Main.vue
... | ... | @@ -1,73 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content relative co-main-page" style="height: 100vh"> | |
3 | - <img | |
4 | - src="/client/resources/img/background2.png" | |
5 | - alt="조감도" | |
6 | - class="background-img" | |
7 | - /> | |
8 | - </div> | |
9 | -</template> | |
10 | - | |
11 | -<script> | |
12 | -// API | |
13 | -import { sysListByPageProc } from "../../../../../resources/api/popup"; | |
14 | - | |
15 | -export default { | |
16 | - data() { | |
17 | - return { | |
18 | - popupList: [], | |
19 | - }; | |
20 | - }, | |
21 | - created() { | |
22 | - // 쿠키 초기화 | |
23 | - const today = new Date(); | |
24 | - let tomorrow = new Date(today.setDate(today.getDate() + 1)); | |
25 | - tomorrow.setHours(0, 0, 0, 0); | |
26 | - tomorrow = new Date(tomorrow); | |
27 | - if (this.$cookies.get("popup") == null) { | |
28 | - this.$cookies.set("popup", [], tomorrow); | |
29 | - } | |
30 | - | |
31 | - this.fnPopupList(); | |
32 | - }, | |
33 | - methods: { | |
34 | - // 팝업조회(상세) | |
35 | - async fnPopupList() { | |
36 | - let data = { | |
37 | - pageType: this.$store.state.userType, | |
38 | - }; | |
39 | - try { | |
40 | - const response = await sysListByPageProc(data); | |
41 | - let popupList = response.data.data; | |
42 | - if (popupList != null && popupList.length > 0) { | |
43 | - this.fnShowPopup(popupList); | |
44 | - } | |
45 | - } catch (error) { | |
46 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
47 | - } | |
48 | - }, | |
49 | - // 팝업 표시 | |
50 | - fnShowPopup(popupList) { | |
51 | - for (let popup of popupList) { | |
52 | - let count = false; | |
53 | - const popupCookies = this.$cookies.get("popup"); | |
54 | - if (popupCookies.length > 0) { | |
55 | - for (let cookie of popupCookies) { | |
56 | - if (popup.popupId == cookie) { | |
57 | - count = true; | |
58 | - } | |
59 | - } | |
60 | - } | |
61 | - if (!count) { | |
62 | - let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; | |
63 | - window.open( | |
64 | - "/cmmn/popup.page?popupId=" + popup.popupId, | |
65 | - "_blank", | |
66 | - size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" | |
67 | - ); | |
68 | - } | |
69 | - } | |
70 | - }, | |
71 | - }, | |
72 | -}; | |
73 | -</script> |
--- client/views/pages/user/company/notice/noticeSelectList.vue
... | ... | @@ -1,53 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb10"> | |
5 | - <p>공지사항</p> | |
6 | - </div> | |
7 | - <ListTable :colgroup="colgroup" :thead="thead" :tbody="tbody" /> | |
8 | - </div> | |
9 | - </div> | |
10 | -</template> | |
11 | - | |
12 | -<script> | |
13 | -import ListTable from '../../../../component/table/ListTable.vue'; | |
14 | -export default { | |
15 | - data() { | |
16 | - return { | |
17 | - colgroup: ["15%", "70%", "15%"], | |
18 | - thead: ["NO", "제목", "등록일"], | |
19 | - tbody: [ | |
20 | - { | |
21 | - "id": 1, | |
22 | - "title": "시스템 점검 안내", | |
23 | - "date": "2023-04-03", | |
24 | - }, | |
25 | - { | |
26 | - "id": 2, | |
27 | - "title": "신규 서비스 출시", | |
28 | - "date": "2023-04-01", | |
29 | - }, | |
30 | - { | |
31 | - "id": 3, | |
32 | - "title": "휴무 안내", | |
33 | - "date": "2023-04-08", | |
34 | - } | |
35 | - ] | |
36 | - } | |
37 | - }, | |
38 | - methods: { | |
39 | - | |
40 | - }, | |
41 | - watch: { | |
42 | - | |
43 | - }, | |
44 | - computed: { | |
45 | - | |
46 | - }, | |
47 | - components: { | |
48 | - 'ListTable': ListTable | |
49 | - }, | |
50 | - mounted() { | |
51 | - } | |
52 | -} | |
53 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/company/notice/noticeSelectListOne.vue
... | ... | @@ -1,24 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <SelectListOne /> | |
5 | - </div> | |
6 | - </div> | |
7 | -</template> | |
8 | - | |
9 | -<script> | |
10 | -import SelectListOne from "../../../../component/table/SelectListOne.vue"; | |
11 | -export default { | |
12 | - data() { | |
13 | - return {}; | |
14 | - }, | |
15 | - methods: {}, | |
16 | - watch: {}, | |
17 | - computed: {}, | |
18 | - components: { | |
19 | - SelectListOne: SelectListOne, | |
20 | - }, | |
21 | - mounted() { | |
22 | - }, | |
23 | -}; | |
24 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/community/notice/NoticeInsert.vue
... | ... | @@ -1,110 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>기업정보</p> | |
6 | - </div> | |
7 | - <table class="form-table mb30"> | |
8 | - <colgroup> | |
9 | - <col width="10%" /> | |
10 | - <col width="90%" /> | |
11 | - </colgroup> | |
12 | - <tbody> | |
13 | - <tr> | |
14 | - <th class="point-font text-lf"> | |
15 | - <span>제목</span> | |
16 | - </th> | |
17 | - <td><input type="text" class="full-input" placeholder="제목을 입력하세요."></td> | |
18 | - </tr> | |
19 | - <tr class="border-top"> | |
20 | - <th colspan="4" class="text-lf point-font"> | |
21 | - <span>내용</span> | |
22 | - </th> | |
23 | - </tr> | |
24 | - <tr> | |
25 | - <td colspan="4"> | |
26 | - <textarea name="" id="" class="content" placeholder="내용을 입력하세요."></textarea> | |
27 | - </td> | |
28 | - </tr> | |
29 | - <tr class="border-top"> | |
30 | - <th class="point-font text-lf"> | |
31 | - 첨부파일 | |
32 | - </th> | |
33 | - <td colspan="3"> | |
34 | - <div class="flex align-center"> | |
35 | - <div class="gd-10"> | |
36 | - <div class="filebox"> | |
37 | - <input class="upload-name full-input" v-model="fileName" | |
38 | - placeholder="첨부파일이 없습니다." disabled> | |
39 | - </div> | |
40 | - </div> | |
41 | - <div class="gd-2"> | |
42 | - <label for="file" class="large-btn green-border-btn text-ct">파일찾기</label> | |
43 | - <input type="file" id="file" @change="handleFileChange"> | |
44 | - </div> | |
45 | - </div> | |
46 | - </td> | |
47 | - </tr> | |
48 | - </tbody> | |
49 | - </table> | |
50 | - <div class="flex justify-end align-center no-gutters"> | |
51 | - <div class="gd-2 mr10"> | |
52 | - <button class="large-btn green-btn">등록</button> | |
53 | - </div> | |
54 | - <div class="gd-2"> | |
55 | - <button class="large-btn gray-btn">취소</button> | |
56 | - </div> | |
57 | - </div> | |
58 | - | |
59 | - </div> | |
60 | - </div> | |
61 | -</template> | |
62 | - | |
63 | -<script> | |
64 | - | |
65 | -export default { | |
66 | - data() { | |
67 | - return { | |
68 | - colgroup: ["5%", "50%", "15%", "15%", "15%"], | |
69 | - thead: ["NO", "기업명", "대표자", "기업상태", "입주의향"], | |
70 | - tbody: [ | |
71 | - { | |
72 | - "id": 1, | |
73 | - "company": "a기업", | |
74 | - "name": "홍길동", | |
75 | - "satus": "정상", | |
76 | - "whether ": "N", | |
77 | - }, | |
78 | - { | |
79 | - "id": 2, | |
80 | - "company": "a기업", | |
81 | - "name": "홍길동", | |
82 | - "satus": "정상", | |
83 | - "whether ": "N", | |
84 | - }, | |
85 | - { | |
86 | - "id": 3, | |
87 | - "company": "a기업", | |
88 | - "name": "홍길동", | |
89 | - "satus": "정상", | |
90 | - "whether ": "N", | |
91 | - }, | |
92 | - ] | |
93 | - } | |
94 | - }, | |
95 | - methods: { | |
96 | - | |
97 | - }, | |
98 | - watch: { | |
99 | - | |
100 | - }, | |
101 | - computed: { | |
102 | - | |
103 | - }, | |
104 | - components: { | |
105 | - | |
106 | - }, | |
107 | - mounted() { | |
108 | - } | |
109 | -} | |
110 | -</script> |
--- client/views/pages/user/government/community/notice/NoticeSelectList.vue
... | ... | @@ -1,66 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb10"> | |
5 | - <p>공지사항</p> | |
6 | - </div> | |
7 | - <ListTable :colgroup="colgroup" :thead="thead" :tbody="tbody" /> | |
8 | - <div class="flex justify-between align-center no-gutters"> | |
9 | - <div class="gd-2"></div> | |
10 | - <div class="gd-8"> | |
11 | - <PaginationButton /> | |
12 | - </div> | |
13 | - <div class="gd-2"> | |
14 | - <button | |
15 | - class="large-btn green-btn point-font" | |
16 | - v-if="pageAuth.regAuthrt == 'Y'" | |
17 | - > | |
18 | - 등록 | |
19 | - </button> | |
20 | - </div> | |
21 | - </div> | |
22 | - </div> | |
23 | - </div> | |
24 | -</template> | |
25 | - | |
26 | -<script> | |
27 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
28 | -import ListTable from "../../../../../component/table/ListTable.vue"; | |
29 | -export default { | |
30 | - data() { | |
31 | - return { | |
32 | - // 페이지 권한 객체 | |
33 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, | |
34 | - | |
35 | - colgroup: ["15%", "70%", "15%"], | |
36 | - thead: ["NO", "제목", "등록일"], | |
37 | - tbody: [ | |
38 | - { | |
39 | - id: 1, | |
40 | - title: "시스템 점검 안내", | |
41 | - date: "2023-04-03", | |
42 | - }, | |
43 | - { | |
44 | - id: 2, | |
45 | - title: "신규 서비스 출시", | |
46 | - date: "2023-04-01", | |
47 | - }, | |
48 | - { | |
49 | - id: 3, | |
50 | - title: "휴무 안내", | |
51 | - date: "2023-04-08", | |
52 | - }, | |
53 | - ], | |
54 | - }; | |
55 | - }, | |
56 | - methods: {}, | |
57 | - watch: {}, | |
58 | - computed: {}, | |
59 | - components: { | |
60 | - ListTable: ListTable, | |
61 | - PaginationButton: PaginationButton, | |
62 | - }, | |
63 | - mounted() { | |
64 | - }, | |
65 | -}; | |
66 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/community/notice/NoticeSelectListOne.vue
... | ... | @@ -1,24 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <SelectListOne /> | |
5 | - </div> | |
6 | - </div> | |
7 | -</template> | |
8 | - | |
9 | -<script> | |
10 | -import SelectListOne from "../../../../../component/table/SelectListOne.vue"; | |
11 | -export default { | |
12 | - data() { | |
13 | - return {}; | |
14 | - }, | |
15 | - methods: {}, | |
16 | - watch: {}, | |
17 | - computed: {}, | |
18 | - components: { | |
19 | - SelectListOne: SelectListOne, | |
20 | - }, | |
21 | - mounted() { | |
22 | - }, | |
23 | -}; | |
24 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/companyInfo/companyConsult/CompanyConsultSelectList.vue
... | ... | @@ -1,199 +0,0 @@ |
1 | -<template> | |
2 | - <div :class="{ 'content pt50 pb50': pageRole == 'government' }"> | |
3 | - <div :class="{ 'w1400 ': pageRole == 'government' }"> | |
4 | - <div | |
5 | - :class="{ | |
6 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
7 | - 'page-title point-font mb30': pageRole == 'government', | |
8 | - }" | |
9 | - > | |
10 | - <p>온라인상담</p> | |
11 | - </div> | |
12 | - <div class="search-bar mb15"> | |
13 | - <div class="flex justify-end align-center no-gutters"> | |
14 | - <div class="gd-6 mr10"> | |
15 | - <div class="border"> | |
16 | - <select class="border-none gd-3" v-model="search.cateValue"> | |
17 | - <option value="">진행상태 전체</option> | |
18 | - <option value="N">접수전</option> | |
19 | - <option value="I">접수</option> | |
20 | - <!-- | |
21 | - <option value="S">미배정</option> | |
22 | - <option value="E">완료</option> | |
23 | - <option value="C">변경요청</option> | |
24 | - --> | |
25 | - </select> | |
26 | - <input | |
27 | - type="text" | |
28 | - class="full-input border-none gd-9 condition-input" | |
29 | - v-model="search.searchText" | |
30 | - v-on:keyup.enter="fnViewList" | |
31 | - placeholder="기업명을 입력하세요." | |
32 | - /> | |
33 | - </div> | |
34 | - </div> | |
35 | - <div class="flex gd-3"> | |
36 | - <div class="gd-6 pr0"> | |
37 | - <button | |
38 | - :class="{ | |
39 | - 'large-btn': true, | |
40 | - 'blue-border-btn': pageRole == 'adm', | |
41 | - 'green-border-btn': pageRole == 'government', | |
42 | - }" | |
43 | - @click="fnViewList" | |
44 | - > | |
45 | - 검색 | |
46 | - </button> | |
47 | - </div> | |
48 | - <div class="gd-6 pr0"> | |
49 | - <button class="large-btn darkg-border-btn" @click="fnSearchReset"> | |
50 | - <svg-icon type="mdi" :path="refreshPath" /> | |
51 | - 초기화 | |
52 | - </button> | |
53 | - </div> | |
54 | - </div> | |
55 | - </div> | |
56 | - </div> | |
57 | - <ListTable | |
58 | - :colgroup="colgroup" | |
59 | - :thead="thead" | |
60 | - :tbody="tbody" | |
61 | - :className="pageRole == 'adm' ? 'admin-list cmmn-table' : 'online-consulting-table cmmn-table'" | |
62 | - @listClick="fnViewDetail" | |
63 | - /> | |
64 | - <div class="flex justify-between align-center no-gutters"> | |
65 | - <div class="gd-2"></div> | |
66 | - <div class="gd-8"> | |
67 | - <PaginationButton | |
68 | - v-model:currentPage="search.currentPage" | |
69 | - :pagination="search" | |
70 | - :click="fnViewList" | |
71 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
72 | - /> | |
73 | - </div> | |
74 | - <div class="gd-2"></div> | |
75 | - </div> | |
76 | - </div> | |
77 | - </div> | |
78 | -</template> | |
79 | - | |
80 | -<script> | |
81 | -import { toRaw } from "vue"; | |
82 | -import { mdiRefresh } from "@mdi/js"; | |
83 | - | |
84 | -// COMPONENET | |
85 | -import ListTable from "../../../../../component/table/ListTable.vue"; | |
86 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
87 | - | |
88 | -// RESOURCES | |
89 | -import queryParams from "../../../../../../resources/js/queryParams"; | |
90 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
91 | - | |
92 | -// API | |
93 | -import { entDscsnAplylistProc } from "../../../../../../resources/api/entDscsnAply"; | |
94 | - | |
95 | -export default { | |
96 | - mixins: [queryParams], | |
97 | - components: { | |
98 | - ListTable: ListTable, | |
99 | - PaginationButton: PaginationButton, | |
100 | - }, | |
101 | - data() { | |
102 | - return { | |
103 | - refreshPath: mdiRefresh, | |
104 | - | |
105 | - pageRole: this.$store.state.userType, // 유저 권한 | |
106 | - | |
107 | - search: { ...defaultSearchParams }, | |
108 | - list: [], | |
109 | - | |
110 | - // TABLE | |
111 | - colgroup: ["5%", "35%", "15%", "15%", "15%", "15%"], | |
112 | - thead: ["NO", "기업명", "등록일", "담당자", "진행상태", "조치일자"], | |
113 | - tbody: [], | |
114 | - }; | |
115 | - }, | |
116 | - created() { | |
117 | - this.resotreQueryParams("queryParams"); | |
118 | - this.fnViewList(); | |
119 | - }, | |
120 | - computed: { | |
121 | - routerPaths() { | |
122 | - return { | |
123 | - list: this.$store.state.path + "/list.page", | |
124 | - view: this.$store.state.path + "/view.page", | |
125 | - insert: this.$store.state.path + "/insert.page", | |
126 | - }; | |
127 | - }, | |
128 | - }, | |
129 | - methods: { | |
130 | - // axios: 조회(목록) | |
131 | - async fnViewList() { | |
132 | - // 데이터 세팅 | |
133 | - const data = this.search; | |
134 | - this.saveQueryParams("queryParams", this.search); // 검색조건 저장 | |
135 | - // 실행 | |
136 | - try { | |
137 | - const response = await entDscsnAplylistProc(toRaw(data)); | |
138 | - this.list = response.data.data.list; | |
139 | - this.search = response.data.data.pagination; | |
140 | - this.makeTbody(); | |
141 | - } catch (error) { | |
142 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
143 | - } | |
144 | - }, | |
145 | - | |
146 | - // 조회(상세) | |
147 | - fnViewDetail(idx) { | |
148 | - this.$router.push({ | |
149 | - path: this.routerPaths.view, | |
150 | - query: { pageId: this.list[idx].entDscsnAplyId }, | |
151 | - }); | |
152 | - }, | |
153 | - | |
154 | - // tbody 생성 | |
155 | - makeTbody() { | |
156 | - this.tbody = []; | |
157 | - this.tbody = this.list.map((listItem, index) => ({ | |
158 | - id: this.fnBoardNo(index), | |
159 | - entNm: listItem.entNm, | |
160 | - regDt: listItem.regDt, | |
161 | - mbrNm: listItem.mbrNm, | |
162 | - prcsStts: this.fnPrcsSttsKr(listItem.prcsStts), | |
163 | - actnDt: listItem.actnDt, | |
164 | - })); | |
165 | - }, | |
166 | - fnBoardNo(index) { | |
167 | - let totalRecordCount = this.search.totalRecordCount; | |
168 | - let currentPage = this.search.currentPage; | |
169 | - let pageSize = this.search.pageSize; | |
170 | - return totalRecordCount - index - (currentPage - 1) * pageSize; | |
171 | - }, | |
172 | - fnPrcsSttsKr(data) { | |
173 | - let result = ""; | |
174 | - switch (data) { | |
175 | - case "N": | |
176 | - result = "접수전"; | |
177 | - break; | |
178 | - case "I": | |
179 | - result = "접수"; | |
180 | - break; | |
181 | - case "E": | |
182 | - case "C": | |
183 | - result = ""; | |
184 | - break; | |
185 | - default: | |
186 | - result = "미배정"; | |
187 | - break; | |
188 | - } | |
189 | - return result; | |
190 | - }, | |
191 | - | |
192 | - // 검색 초기화 | |
193 | - fnSearchReset() { | |
194 | - this.search = { ...defaultSearchParams }; | |
195 | - this.fnViewList(); | |
196 | - }, | |
197 | - }, | |
198 | -}; | |
199 | -</script> |
--- client/views/pages/user/government/companyInfo/companyConsult/CompanyConsultSelectListOne.vue
... | ... | @@ -1,500 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>온라인상담</p> | |
21 | - </div> | |
22 | - <details open class="form-table-style mb30"> | |
23 | - <summary | |
24 | - :class="{ | |
25 | - 'point-font2': pageRole == 'adm', | |
26 | - 'point-font': pageRole == 'government', | |
27 | - }" | |
28 | - > | |
29 | - <p class="summary-style pl10">신청내용</p> | |
30 | - </summary> | |
31 | - <div class="pt10 pb10"> | |
32 | - <table class="form-table2 mb10"> | |
33 | - <colgroup> | |
34 | - <col width="15%" /> | |
35 | - <col width="35%" /> | |
36 | - <col width="15%" /> | |
37 | - <col width="35%" /> | |
38 | - </colgroup> | |
39 | - <tr> | |
40 | - <th | |
41 | - :class="{ | |
42 | - 'point-font2': pageRole == 'adm', | |
43 | - 'point-font': pageRole == 'government', | |
44 | - }" | |
45 | - > | |
46 | - 기업명 | |
47 | - </th> | |
48 | - <td>{{ entDscsnAply.entNm }}</td> | |
49 | - <th | |
50 | - :class="{ | |
51 | - 'point-font2': pageRole == 'adm', | |
52 | - 'point-font': pageRole == 'government', | |
53 | - }" | |
54 | - > | |
55 | - 성명 | |
56 | - </th> | |
57 | - <td>{{ entDscsnAply.aplcntNm }}</td> | |
58 | - </tr> | |
59 | - <tr> | |
60 | - <th | |
61 | - :class="{ | |
62 | - 'point-font2': pageRole == 'adm', | |
63 | - 'point-font': pageRole == 'government', | |
64 | - }" | |
65 | - > | |
66 | - 연락처 | |
67 | - </th> | |
68 | - <td>{{ entDscsnAply.telno }}</td> | |
69 | - <th | |
70 | - :class="{ | |
71 | - 'point-font2': pageRole == 'adm', | |
72 | - 'point-font': pageRole == 'government', | |
73 | - }" | |
74 | - > | |
75 | - 이메일 | |
76 | - </th> | |
77 | - <td>{{ entDscsnAply.eml }}</td> | |
78 | - </tr> | |
79 | - <tr> | |
80 | - <th | |
81 | - :class="{ | |
82 | - 'point-font2': pageRole == 'adm', | |
83 | - 'point-font': pageRole == 'government', | |
84 | - }" | |
85 | - > | |
86 | - 첨부파일 | |
87 | - </th> | |
88 | - <td colspan="3"> | |
89 | - <div v-if="entDscsnAply['fileMngId'] != null"> | |
90 | - <div | |
91 | - v-for="(file, index) of entDscsnAply.fileList" | |
92 | - :key="index" | |
93 | - > | |
94 | - <div class="cusor" @click="downloadFile(file)"> | |
95 | - {{ file.fileNm }}.{{ file.extnNm }} | |
96 | - </div> | |
97 | - </div> | |
98 | - </div> | |
99 | - <p v-else class="data-none">등록된 첨부파일이 없습니다.</p> | |
100 | - </td> | |
101 | - </tr> | |
102 | - </table> | |
103 | - <div class="gd-12 pd0 pb10"> | |
104 | - <label | |
105 | - for="" | |
106 | - :class="{ | |
107 | - mb10: true, | |
108 | - 'point-font2': pageRole == 'adm', | |
109 | - 'point-font': pageRole == 'government', | |
110 | - }" | |
111 | - style="font-size: 1.6rem" | |
112 | - > | |
113 | - 내용 | |
114 | - </label> | |
115 | - <textarea | |
116 | - class="content" | |
117 | - :value="entDscsnAply['aplyCn']" | |
118 | - disabled | |
119 | - ></textarea> | |
120 | - </div> | |
121 | - <table class="form-table2 mb10"> | |
122 | - <colgroup> | |
123 | - <col width="15%" /> | |
124 | - <col width="35%" /> | |
125 | - <col width="15%" /> | |
126 | - <col width="35%" /> | |
127 | - </colgroup> | |
128 | - <tr> | |
129 | - <th | |
130 | - :class="{ | |
131 | - 'point-font2': pageRole == 'adm', | |
132 | - 'point-font': pageRole == 'government', | |
133 | - }" | |
134 | - > | |
135 | - 담당자 | |
136 | - </th> | |
137 | - <td> | |
138 | - <div | |
139 | - v-if=" | |
140 | - pageRole == 'adm' && (prcsStts == null || prcsStts == '') | |
141 | - " | |
142 | - class="flex align-center no-gutters" | |
143 | - > | |
144 | - <div class="gd-9 mr10"> | |
145 | - <input | |
146 | - type="text" | |
147 | - class="full-input" | |
148 | - ref="clr" | |
149 | - v-model="entDscsnAply['mbrNm']" | |
150 | - placeholder="담당자를 선택하세요." | |
151 | - readonly | |
152 | - /> | |
153 | - </div> | |
154 | - <div class="gd-2"> | |
155 | - <button | |
156 | - class="large-btn blue-border-btn" | |
157 | - @click="fnModalOpen('접수자')" | |
158 | - > | |
159 | - 찾기 | |
160 | - </button> | |
161 | - </div> | |
162 | - </div> | |
163 | - <template v-else> | |
164 | - {{ entDscsnAply.mbrNm }} | |
165 | - </template> | |
166 | - </td> | |
167 | - <th | |
168 | - :class="{ | |
169 | - 'point-font2': pageRole == 'adm', | |
170 | - 'point-font': pageRole == 'government', | |
171 | - }" | |
172 | - > | |
173 | - 조치일자 | |
174 | - </th> | |
175 | - <td>{{ entDscsnAply.actnDt }}</td> | |
176 | - </tr> | |
177 | - <!-- <tr> | |
178 | - <th | |
179 | - :class="{ | |
180 | - 'point-font2': pageRole == 'adm', | |
181 | - 'point-font': pageRole == 'government', | |
182 | - }" | |
183 | - > | |
184 | - 안내 | |
185 | - </th> | |
186 | - <td colspan="3"> | |
187 | - 접수 후 기업 정보 및 투자 상담을 진행하여 주시기 바랍니다. | |
188 | - </td> | |
189 | - </tr> --> | |
190 | - </table> | |
191 | - </div> | |
192 | - </details> | |
193 | - | |
194 | - <!-- 하단 버튼 --> | |
195 | - <div class="flex justify-end align-center no-gutters"> | |
196 | - <div class="gd-1"> | |
197 | - <button | |
198 | - :class="{ | |
199 | - 'large-btn': true, | |
200 | - 'blue-border-btn': pageRole == 'adm', | |
201 | - 'green-border-btn': pageRole == 'government', | |
202 | - }" | |
203 | - @click="fnPrev" | |
204 | - > | |
205 | - 목록 | |
206 | - </button> | |
207 | - </div> | |
208 | - <div | |
209 | - class="gd-1 ml10" | |
210 | - v-if="pageRole == 'adm' && (prcsStts == null || prcsStts == '')" | |
211 | - > | |
212 | - <button | |
213 | - :class="{ | |
214 | - 'large-btn': true, | |
215 | - 'blue-btn': pageRole == 'adm', | |
216 | - 'green-btn': pageRole == 'government', | |
217 | - }" | |
218 | - @click="fnAssignment" | |
219 | - > | |
220 | - 배정 | |
221 | - </button> | |
222 | - </div> | |
223 | - <div | |
224 | - class="gd-1 ml10" | |
225 | - v-show=" | |
226 | - pageRole == 'government' && | |
227 | - pageAuth.mdfcnAuthrt == 'Y' && | |
228 | - entDscsnAply.actnPic == $store.state.mbrId && | |
229 | - prcsStts == 'N' | |
230 | - " | |
231 | - > | |
232 | - <button | |
233 | - :class="{ | |
234 | - 'large-btn': true, | |
235 | - 'blue-btn': pageRole == 'adm', | |
236 | - 'green-btn': pageRole == 'government', | |
237 | - }" | |
238 | - @click="fnAccept" | |
239 | - > | |
240 | - 접수 | |
241 | - </button> | |
242 | - </div> | |
243 | - </div> | |
244 | - </div> | |
245 | - | |
246 | - <!-- 모달: 찾기 --> | |
247 | - <Modal :showModal="isOpen"> | |
248 | - <template v-slot:header> | |
249 | - <div | |
250 | - class=" " | |
251 | - :class="{ | |
252 | - 'box-title': true, | |
253 | - 'point-font2': pageRole == 'adm', | |
254 | - 'point-font': pageRole == 'government', | |
255 | - }" | |
256 | - > | |
257 | - <p>담당자 선택</p> | |
258 | - </div> | |
259 | - <button class="close-btn" @click="fnModalClose">X</button> | |
260 | - </template> | |
261 | - <div | |
262 | - :class="{ | |
263 | - 'admin-style': pageRole == 'adm', | |
264 | - '': pageRole == 'government', | |
265 | - }" | |
266 | - > | |
267 | - <table class="form-table2 mb10"> | |
268 | - <colgroup> | |
269 | - <col width="75%" /> | |
270 | - <col width="25%" /> | |
271 | - </colgroup> | |
272 | - <thead> | |
273 | - <tr> | |
274 | - <th class="text-ct">이름</th> | |
275 | - <th class="text-ct">비고</th> | |
276 | - </tr> | |
277 | - </thead> | |
278 | - <tr v-for="(item, index) of list" :key="index"> | |
279 | - <td>{{ item.name }}</td> | |
280 | - <td> | |
281 | - <button | |
282 | - type="button" | |
283 | - :class="{ | |
284 | - 'large-btn': true, | |
285 | - 'blue-btn': pageRole == 'adm', | |
286 | - 'green-btn': pageRole == 'government', | |
287 | - }" | |
288 | - @click="fnMbrSelect(item)" | |
289 | - > | |
290 | - 선택 | |
291 | - </button> | |
292 | - </td> | |
293 | - </tr> | |
294 | - </table> | |
295 | - </div> | |
296 | - <template v-slot:footer> | |
297 | - <div class="gd-2"></div> | |
298 | - <div class="gd-8"> | |
299 | - <PaginationButton | |
300 | - :currentPage="search.currentPage" | |
301 | - :pagination="search" | |
302 | - :click="fnViewMbrList" | |
303 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
304 | - /> | |
305 | - </div> | |
306 | - <div class="gd-2"></div> | |
307 | - </template> | |
308 | - </Modal> | |
309 | - </div> | |
310 | -</template> | |
311 | - | |
312 | -<script> | |
313 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
314 | -import Modal from "../../../../../component/modal/Modal.vue"; | |
315 | - | |
316 | -// COMPONENT | |
317 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
318 | - | |
319 | -// RESOURCES | |
320 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
321 | - | |
322 | -// API | |
323 | -import { | |
324 | - entDscsnAplyDetailProc, | |
325 | - entDscsnAplyUpdate, | |
326 | -} from "../../../../../../resources/api/entDscsnAply"; | |
327 | -import { mbrListProc } from "../../../../../../resources/api/mbrInfo"; | |
328 | - | |
329 | -export default { | |
330 | - components: { Modal, PaginationButton }, | |
331 | - data() { | |
332 | - return { | |
333 | - // 페이지 권한 객체 | |
334 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, | |
335 | - pageRole: this.$store.state.userType, | |
336 | - | |
337 | - // id | |
338 | - pageId: this.$route.query.pageId, | |
339 | - | |
340 | - // 상세 조회 정보 담는 객체 | |
341 | - entDscsnAply: {}, | |
342 | - fileList: [], | |
343 | - prcsStts: null, | |
344 | - | |
345 | - isOpen: false, | |
346 | - isMbrId: false, | |
347 | - | |
348 | - // 모달 객체 | |
349 | - list: [], | |
350 | - search: { ...defaultSearchParams }, | |
351 | - }; | |
352 | - }, | |
353 | - created() { | |
354 | - this.fnViewDetail(); | |
355 | - this.fnViewMbrList(); | |
356 | - }, | |
357 | - computed: { | |
358 | - routerPaths() { | |
359 | - return { | |
360 | - list: this.$store.state.path + "/list.page", | |
361 | - view: this.$store.state.path + "/view.page", | |
362 | - insert: this.$store.state.path + "/insert.page", | |
363 | - }; | |
364 | - }, | |
365 | - }, | |
366 | - methods: { | |
367 | - // axios: 기업상담신청 상세 조회 | |
368 | - async fnViewDetail() { | |
369 | - // 데이터 세팅 | |
370 | - const data = { entDscsnAplyId: this.pageId }; | |
371 | - // 실행 | |
372 | - try { | |
373 | - const response = await entDscsnAplyDetailProc(data); | |
374 | - this.entDscsnAply = response.data.data; | |
375 | - this.prcsStts = response.data.data.prcsStts; | |
376 | - } catch (error) { | |
377 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
378 | - } | |
379 | - }, | |
380 | - // axios: 첨부파일 다운로드 | |
381 | - async downloadFile(file) { | |
382 | - try { | |
383 | - const response = await defaultAxios({ | |
384 | - url: "/sys/file/fileDownload.json", // URL 경로 확인 | |
385 | - method: "post", | |
386 | - headers: { | |
387 | - "Content-Type": "application/json; charset=UTF-8", | |
388 | - Authorization: this.$store.state.authorization, | |
389 | - }, | |
390 | - data: file.fileId, | |
391 | - responseType: "blob", | |
392 | - }); | |
393 | - const url = window.URL.createObjectURL(new Blob([response.data])); | |
394 | - const link = document.createElement("a"); | |
395 | - link.href = url; | |
396 | - link.setAttribute("download", file.fileNm + "." + file.extnNm); | |
397 | - document.body.appendChild(link); | |
398 | - link.click(); | |
399 | - document.body.removeChild(link); | |
400 | - window.URL.revokeObjectURL(url); | |
401 | - } catch (error) { | |
402 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
403 | - } | |
404 | - }, | |
405 | - | |
406 | - // axios: 사용자 목록 조회 | |
407 | - async fnViewMbrList() { | |
408 | - // 데이터 삽입 | |
409 | - let data = this.search; | |
410 | - data.cateId = "authrt_cd"; | |
411 | - data.cateValue = "ROLE_USER"; | |
412 | - // 실행 | |
413 | - try { | |
414 | - const response = await mbrListProc(data); | |
415 | - let dataList = []; | |
416 | - for (let mbr of response.data.data.list) { | |
417 | - dataList.push({ | |
418 | - name: mbr.mbrNm, | |
419 | - id: mbr.mbrId, | |
420 | - }); | |
421 | - } | |
422 | - this.list = dataList; | |
423 | - this.search = response.data.data.pagination; | |
424 | - } catch (error) { | |
425 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
426 | - } | |
427 | - }, | |
428 | - | |
429 | - // 모달 열기 | |
430 | - fnModalOpen() { | |
431 | - this.isOpen = true; | |
432 | - }, | |
433 | - | |
434 | - // 모달 닫기 | |
435 | - fnModalClose() { | |
436 | - this.isOpen = false; | |
437 | - }, | |
438 | - | |
439 | - // 모달 등록 | |
440 | - fnMbrSelect(data) { | |
441 | - this.entDscsnAply.mbrNm = data.name; | |
442 | - this.entDscsnAply.actnPic = data.id; | |
443 | - this.fnModalClose(); | |
444 | - }, | |
445 | - | |
446 | - // 목록 | |
447 | - fnPrev() { | |
448 | - this.$router.push({ | |
449 | - path: this.routerPaths.list, | |
450 | - }); | |
451 | - }, | |
452 | - | |
453 | - // 배정 | |
454 | - fnAssignment() { | |
455 | - if ( | |
456 | - this.entDscsnAply.mbrNm == null || | |
457 | - this.entDscsnAply.mbrNm == "" || | |
458 | - this.entDscsnAply.actnPic == null || | |
459 | - this.entDscsnAply.actnPic == "" | |
460 | - ) { | |
461 | - alert("담당자를 선택하세요."); | |
462 | - return; | |
463 | - } | |
464 | - this.entDscsnAply.prcsStts = "N"; | |
465 | - this.fnUpdate(); | |
466 | - }, | |
467 | - // 접수 | |
468 | - fnAccept() { | |
469 | - const isAgree = confirm("접수 하시겠습니까?"); | |
470 | - if (!isAgree) { | |
471 | - return; | |
472 | - } | |
473 | - this.entDscsnAply.prcsStts = "I"; | |
474 | - this.fnUpdate(); | |
475 | - }, | |
476 | - // axios: 수정 | |
477 | - async fnUpdate() { | |
478 | - // 데이터 세팅 | |
479 | - let data = this.entDscsnAply; | |
480 | - if (this.pageRole == "adm") { | |
481 | - if (this.entDscsnAply.prcsStts == "C") { | |
482 | - data.prcsStts = "N"; | |
483 | - } | |
484 | - } | |
485 | - try { | |
486 | - const response = await entDscsnAplyUpdate(data); | |
487 | - alert(response.data.message); | |
488 | - location.reload(); | |
489 | - } catch (error) { | |
490 | - const errorData = error.response.data; | |
491 | - if (errorData.message != null && errorData.message != "") { | |
492 | - alert(error.response.data.message); | |
493 | - } else { | |
494 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
495 | - } | |
496 | - } | |
497 | - }, | |
498 | - }, | |
499 | -}; | |
500 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInfo/CompanyInfoInsert.vue
... | ... | @@ -1,977 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>기업관리</p> | |
21 | - </div> | |
22 | - | |
23 | - <!-- 기본정보 --> | |
24 | - <details open class="form-table-style mb30"> | |
25 | - <summary | |
26 | - :class="{ | |
27 | - 'point-font2': pageRole == 'adm', | |
28 | - 'point-font': pageRole == 'government', | |
29 | - }" | |
30 | - > | |
31 | - <p class="summary-style pl10">기본정보</p> | |
32 | - </summary> | |
33 | - <div class="pt10 pb10"> | |
34 | - <table class="form-table"> | |
35 | - <colgroup> | |
36 | - <col width="50%" /> | |
37 | - <col width="50%" /> | |
38 | - </colgroup> | |
39 | - <tr> | |
40 | - <td> | |
41 | - <div class="gd-12 pl0"> | |
42 | - <label | |
43 | - :class="{ | |
44 | - 'form-title mb10': true, | |
45 | - 'point-font2': pageRole == 'adm', | |
46 | - 'point-font': pageRole == 'government', | |
47 | - }" | |
48 | - > | |
49 | - 기업명 | |
50 | - </label> | |
51 | - <div class="flex"> | |
52 | - <div class="gd-9 pl0"> | |
53 | - <input | |
54 | - type="text" | |
55 | - class="full-input" | |
56 | - ref="entNm" | |
57 | - v-model="entInfoVO.entNm" | |
58 | - placeholder="기업명을 입력하세요." | |
59 | - /> | |
60 | - </div> | |
61 | - <div class="gd-3 pr0"> | |
62 | - <button | |
63 | - type="button" | |
64 | - :class="{ | |
65 | - 'large-btn': true, | |
66 | - 'blue-border-btn': pageRole == 'adm', | |
67 | - 'green-border-btn': pageRole == 'government', | |
68 | - }" | |
69 | - @click="fnSearch" | |
70 | - > | |
71 | - 조회 | |
72 | - </button> | |
73 | - </div> | |
74 | - </div> | |
75 | - </div> | |
76 | - </td> | |
77 | - <td> | |
78 | - <div class="gd-12 pr0"> | |
79 | - <label | |
80 | - :class="{ | |
81 | - 'form-title mb10': true, | |
82 | - 'point-font2': pageRole == 'adm', | |
83 | - 'point-font': pageRole == 'government', | |
84 | - }" | |
85 | - > | |
86 | - 사업자번호 | |
87 | - </label> | |
88 | - <input | |
89 | - type="text" | |
90 | - class="full-input" | |
91 | - ref="brno" | |
92 | - v-model.trim="entInfoVO.brno" | |
93 | - maxlength="10" | |
94 | - placeholder="사업자번호를 입력하세요." | |
95 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
96 | - /> | |
97 | - </div> | |
98 | - </td> | |
99 | - </tr> | |
100 | - <tr> | |
101 | - <td> | |
102 | - <div class="gd-12 pl0"> | |
103 | - <label | |
104 | - :class="{ | |
105 | - 'form-title mb10': true, | |
106 | - 'point-font2': pageRole == 'adm', | |
107 | - 'point-font': pageRole == 'government', | |
108 | - }" | |
109 | - > | |
110 | - 대표자명 | |
111 | - </label> | |
112 | - <input | |
113 | - type="text" | |
114 | - class="full-input" | |
115 | - ref="rprsvNm" | |
116 | - v-model="entInfoVO.rprsvNm" | |
117 | - placeholder="대표자명을 입력하세요." | |
118 | - /> | |
119 | - </div> | |
120 | - </td> | |
121 | - <td> | |
122 | - <div class="gd-12 pr0"> | |
123 | - <label | |
124 | - :class="{ | |
125 | - 'form-title mb10': true, | |
126 | - 'point-font2': pageRole == 'adm', | |
127 | - 'point-font': pageRole == 'government', | |
128 | - }" | |
129 | - > | |
130 | - 소재지 | |
131 | - </label> | |
132 | - <div class="flex"> | |
133 | - <div class="gd-6 pl0"> | |
134 | - <select class="full-input" v-model="entInfoVO.lctnAdmdsp"> | |
135 | - <option value="">행정구역을 선택하세요.</option> | |
136 | - <option | |
137 | - v-for="(code, index) of lctnCodeList" | |
138 | - :key="index" | |
139 | - :value="code.cd" | |
140 | - > | |
141 | - {{ code.cdNm }} | |
142 | - </option> | |
143 | - </select> | |
144 | - </div> | |
145 | - <div class="gd-6 pr0"> | |
146 | - <input | |
147 | - type="text" | |
148 | - class="full-input" | |
149 | - ref="lctnSsg" | |
150 | - v-model="entInfoVO.lctnSsg" | |
151 | - placeholder="시, 군, 구를 입력하세요. ex)영주시" | |
152 | - /> | |
153 | - </div> | |
154 | - </div> | |
155 | - </div> | |
156 | - </td> | |
157 | - </tr> | |
158 | - <tr> | |
159 | - <td> | |
160 | - <div class="gd-12 pl0"> | |
161 | - <label | |
162 | - :class="{ | |
163 | - 'form-title mb10': true, | |
164 | - 'point-font2': pageRole == 'adm', | |
165 | - 'point-font': pageRole == 'government', | |
166 | - }" | |
167 | - > | |
168 | - 대지면적 | |
169 | - </label> | |
170 | - <div class="flex"> | |
171 | - <div class="gd-6 pl0"> | |
172 | - <input | |
173 | - type="text" | |
174 | - class="full-input" | |
175 | - ref="bplcSiar" | |
176 | - v-model="entInfoVO.bplcSiar" | |
177 | - placeholder="대지면적을 입력하세요." | |
178 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
179 | - /> | |
180 | - </div> | |
181 | - <div class="gd-6 pr0"> | |
182 | - <select | |
183 | - class="full-input" | |
184 | - ref="bplcSiarUnit" | |
185 | - v-model="entInfoVO.bplcSiarUnit" | |
186 | - > | |
187 | - <option value="">대지면적단위를 선택하세요</option> | |
188 | - <option | |
189 | - v-for="(item, idx) in bplcCodeList" | |
190 | - :key="idx" | |
191 | - :value="item.cd" | |
192 | - > | |
193 | - {{ item.cdNm }} | |
194 | - </option> | |
195 | - </select> | |
196 | - </div> | |
197 | - </div> | |
198 | - </div> | |
199 | - </td> | |
200 | - <td> | |
201 | - <div class="gd-12 pr0"> | |
202 | - <label | |
203 | - :class="{ | |
204 | - 'form-title mb10': true, | |
205 | - 'point-font2': pageRole == 'adm', | |
206 | - 'point-font': pageRole == 'government', | |
207 | - }" | |
208 | - > | |
209 | - 공장면적 | |
210 | - </label> | |
211 | - <div class="flex"> | |
212 | - <div class="gd-6 pl0"> | |
213 | - <input | |
214 | - type="text" | |
215 | - class="full-input" | |
216 | - ref="fctryArea" | |
217 | - v-model="entInfoVO.fctryArea" | |
218 | - placeholder="공장면적을 입력하세요." | |
219 | - oninput="this.value = this.value.replace(/[^0-9]/g, '')" | |
220 | - /> | |
221 | - </div> | |
222 | - <div class="gd-6 pr0"> | |
223 | - <select | |
224 | - class="full-input" | |
225 | - ref="fctryAreaUnit" | |
226 | - v-model="entInfoVO.fctryAreaUnit" | |
227 | - > | |
228 | - <option value="">공장면적단위를 선택하세요</option> | |
229 | - <option | |
230 | - v-for="(item, idx) in bplcCodeList" | |
231 | - :key="idx" | |
232 | - :value="item.cd" | |
233 | - > | |
234 | - {{ item.cdNm }} | |
235 | - </option> | |
236 | - </select> | |
237 | - </div> | |
238 | - </div> | |
239 | - </div> | |
240 | - </td> | |
241 | - </tr> | |
242 | - <tr> | |
243 | - <td> | |
244 | - <div class="gd-12 pl0"> | |
245 | - <label | |
246 | - :class="{ | |
247 | - 'form-title mb10': true, | |
248 | - 'point-font2': pageRole == 'adm', | |
249 | - 'point-font': pageRole == 'government', | |
250 | - }" | |
251 | - > | |
252 | - 표준산업분류 코드 | |
253 | - </label> | |
254 | - <div class="flex"> | |
255 | - <div class="gd-6 pl0"> | |
256 | - <input | |
257 | - type="text" | |
258 | - class="full-input" | |
259 | - ref="ksicUpCd" | |
260 | - v-model.trim="entInfoVO.ksicUpCd" | |
261 | - placeholder="상위분류를 입력하세요." | |
262 | - /> | |
263 | - </div> | |
264 | - <div class="gd-6 pr0"> | |
265 | - <input | |
266 | - type="text" | |
267 | - class="full-input" | |
268 | - ref="ksicCd" | |
269 | - v-model.trim="entInfoVO.ksicCd" | |
270 | - placeholder="하위분류를 입력하세요." | |
271 | - /> | |
272 | - </div> | |
273 | - </div> | |
274 | - </div> | |
275 | - </td> | |
276 | - <td> | |
277 | - <div class="gd-12 pr0"> | |
278 | - <label | |
279 | - :class="{ | |
280 | - 'form-title mb10': true, | |
281 | - 'point-font2': pageRole == 'adm', | |
282 | - 'point-font': pageRole == 'government', | |
283 | - }" | |
284 | - > | |
285 | - 표준산업분류 | |
286 | - </label> | |
287 | - <input | |
288 | - type="text" | |
289 | - class="full-input" | |
290 | - ref="ksicNm" | |
291 | - v-model="entInfoVO.ksicNm" | |
292 | - placeholder="표준사업분류를 입력하세요." | |
293 | - /> | |
294 | - </div> | |
295 | - </td> | |
296 | - </tr> | |
297 | - <tr> | |
298 | - <td> | |
299 | - <div class="gd-12 pl0"> | |
300 | - <label | |
301 | - :class="{ | |
302 | - 'form-title mb10': true, | |
303 | - 'point-font2': pageRole == 'adm', | |
304 | - 'point-font': pageRole == 'government', | |
305 | - }" | |
306 | - > | |
307 | - 주요제품 | |
308 | - </label> | |
309 | - <input | |
310 | - type="text" | |
311 | - class="full-input" | |
312 | - ref="mainPrdct" | |
313 | - v-model="entInfoVO.mainPrdct" | |
314 | - placeholder="주요제품을 입력하세요." | |
315 | - /> | |
316 | - </div> | |
317 | - </td> | |
318 | - <td> | |
319 | - <div class="flex gd-12 pr0"> | |
320 | - <div class="gd-6 pl0"> | |
321 | - <label | |
322 | - for="" | |
323 | - :class="{ | |
324 | - 'form-title mb10': true, | |
325 | - 'point-font2': pageRole == 'adm', | |
326 | - 'point-font': pageRole == 'government', | |
327 | - }" | |
328 | - > | |
329 | - 기업신용 | |
330 | - </label> | |
331 | - <input | |
332 | - type="text" | |
333 | - class="full-input" | |
334 | - ref="entCrdt" | |
335 | - v-model="entInfoVO.entCrdt" | |
336 | - placeholder="기업신용을 입력하세요." | |
337 | - /> | |
338 | - </div> | |
339 | - <div class="gd-6 pr0"> | |
340 | - <label | |
341 | - for="" | |
342 | - :class="{ | |
343 | - 'form-title mb10': true, | |
344 | - 'point-font2': pageRole == 'adm', | |
345 | - 'point-font': pageRole == 'government', | |
346 | - }" | |
347 | - > | |
348 | - 설립일 | |
349 | - </label> | |
350 | - <input | |
351 | - type="date" | |
352 | - class="full-input" | |
353 | - ref="fndnDt" | |
354 | - v-model="entInfoVO.fndnDt" | |
355 | - /> | |
356 | - </div> | |
357 | - </div> | |
358 | - </td> | |
359 | - </tr> | |
360 | - <tr> | |
361 | - <td> | |
362 | - <div class="gd-12 pl0"> | |
363 | - <label | |
364 | - :class="{ | |
365 | - 'form-title mb10': true, | |
366 | - 'point-font2': pageRole == 'adm', | |
367 | - 'point-font': pageRole == 'government', | |
368 | - }" | |
369 | - > | |
370 | - 고용인원수 | |
371 | - </label> | |
372 | - <input | |
373 | - type="text" | |
374 | - class="full-input" | |
375 | - ref="wrkrCnt" | |
376 | - v-model="entInfoVO.wrkrCnt" | |
377 | - placeholder="고용인원수를 입력하세요." | |
378 | - /> | |
379 | - </div> | |
380 | - </td> | |
381 | - <td> | |
382 | - <div class="gd-12 pr0"></div> | |
383 | - </td> | |
384 | - </tr> | |
385 | - </table> | |
386 | - </div> | |
387 | - </details> | |
388 | - | |
389 | - <!-- 기업명 조회 --> | |
390 | - <Modal className="small-modal" :showModal="isOpen"> | |
391 | - <template v-slot:header> | |
392 | - <div | |
393 | - :class="{ | |
394 | - 'box-title': true, | |
395 | - 'point-font2': pageRole == 'adm', | |
396 | - 'point-font': pageRole == 'government', | |
397 | - }" | |
398 | - > | |
399 | - <p>기업정보 조회</p> | |
400 | - </div> | |
401 | - <button class="close-btn" @click="fnModalClose">X</button> | |
402 | - </template> | |
403 | - <!-- 검색 --> | |
404 | - <div class="search-bar flex mb15"> | |
405 | - <div class="border gd-9 pl0"> | |
406 | - <input | |
407 | - type="text" | |
408 | - class="full-input border-none" | |
409 | - v-model="search.searchText" | |
410 | - v-on:keyup.enter="fnViewList" | |
411 | - placeholder="기업명을 입력하세요." | |
412 | - /> | |
413 | - </div> | |
414 | - <div class="gd-3 pr0"> | |
415 | - <button | |
416 | - :class="{ | |
417 | - 'large-btn': true, | |
418 | - 'blue-border-btn': pageRole == 'adm', | |
419 | - 'green-border-btn': pageRole == 'government', | |
420 | - }" | |
421 | - @click="fnViewList" | |
422 | - > | |
423 | - 검색 | |
424 | - </button> | |
425 | - </div> | |
426 | - </div> | |
427 | - <!-- 목록 --> | |
428 | - <table class="form-table2 mb10"> | |
429 | - <colgroup> | |
430 | - <col style="width: 70%" /> | |
431 | - <col /> | |
432 | - </colgroup> | |
433 | - <thead> | |
434 | - <tr> | |
435 | - <th>기업명</th> | |
436 | - <th>비고</th> | |
437 | - </tr> | |
438 | - </thead> | |
439 | - <tbody> | |
440 | - <tr v-for="(item, index) of list" :key="index"> | |
441 | - <td>{{ item.entNm }}</td> | |
442 | - <td class="text-ct"> | |
443 | - <button | |
444 | - type="button" | |
445 | - :class="{ | |
446 | - 'large-btn': true, | |
447 | - 'blue-border-btn': pageRole == 'adm', | |
448 | - 'green-border-btn': pageRole == 'government', | |
449 | - }" | |
450 | - @click="fnMove(item)" | |
451 | - > | |
452 | - 이동 | |
453 | - </button> | |
454 | - </td> | |
455 | - </tr> | |
456 | - </tbody> | |
457 | - </table> | |
458 | - <template v-slot:footer> | |
459 | - <div class="gd-2"></div> | |
460 | - <div class="gd-8"> | |
461 | - <PaginationButton | |
462 | - v-model:currentPage="search.currentPage" | |
463 | - :pagination="search" | |
464 | - :click="fnViewList" | |
465 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
466 | - /> | |
467 | - </div> | |
468 | - <div class="gd-2"></div> | |
469 | - </template> | |
470 | - </Modal> | |
471 | - | |
472 | - <!-- 세부정보 --> | |
473 | - <details open class="form-table-style mb30"> | |
474 | - <summary | |
475 | - :class="{ | |
476 | - 'point-font2': pageRole == 'adm', | |
477 | - 'point-font': pageRole == 'government', | |
478 | - }" | |
479 | - > | |
480 | - <p class="summary-style pl10">세부정보</p> | |
481 | - </summary> | |
482 | - <div class="pt10 pb10"> | |
483 | - <table class="form-table"> | |
484 | - <tr> | |
485 | - <td> | |
486 | - <div class="gd-12 pl0 pr0"> | |
487 | - <label | |
488 | - for="" | |
489 | - :class="{ | |
490 | - mb10: true, | |
491 | - 'point-font2': pageRole == 'adm', | |
492 | - 'point-font': pageRole == 'government', | |
493 | - }" | |
494 | - > | |
495 | - 비고 | |
496 | - </label> | |
497 | - <textarea | |
498 | - name="" | |
499 | - id="" | |
500 | - class="content" | |
501 | - v-model="entInfoVO.rmrk" | |
502 | - placeholder="내용을 입력하세요." | |
503 | - ></textarea> | |
504 | - </div> | |
505 | - </td> | |
506 | - </tr> | |
507 | - <!-- 재무제표 --> | |
508 | - <FnstmInsert | |
509 | - :data="entInfoVO.fileList" | |
510 | - :pageRole="pageRole" | |
511 | - @fnFileModify="fnFileModify" | |
512 | - /> | |
513 | - </table> | |
514 | - </div> | |
515 | - </details> | |
516 | - | |
517 | - <!-- 관내사업장 --> | |
518 | - <BplcInsert | |
519 | - :pageId="pageId" | |
520 | - :data="entInfoVO.bplcList" | |
521 | - :codeList="bplcCodeList" | |
522 | - :pageRole="pageRole" | |
523 | - ref="bplcInput" | |
524 | - /> | |
525 | - | |
526 | - <!-- 하단버튼 --> | |
527 | - <div class="flex justify-end align-center no-gutters"> | |
528 | - <div class="gd-1 mr10"> | |
529 | - <button | |
530 | - :class="{ | |
531 | - 'large-btn': true, | |
532 | - 'blue-btn': pageRole == 'adm', | |
533 | - 'green-btn': pageRole == 'government', | |
534 | - }" | |
535 | - @click="fnUpsert" | |
536 | - > | |
537 | - {{ pageId == null ? "등록" : "수정" }} | |
538 | - </button> | |
539 | - </div> | |
540 | - <div class="gd-1"> | |
541 | - <button class="large-btn gray-btn" @click="fnPrev">취소</button> | |
542 | - </div> | |
543 | - </div> | |
544 | - </div> | |
545 | - </div> | |
546 | -</template> | |
547 | - | |
548 | -<script> | |
549 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
550 | - | |
551 | -// COMPONENT | |
552 | -import Modal from "../../../../../component/modal/Modal.vue"; | |
553 | -import BplcInsert from "../../../../../component/companyInfo/BplcInsert.vue"; | |
554 | -import FnstmInsert from "../../../../../component/companyInfo/FnstmInsert.vue"; | |
555 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
556 | - | |
557 | -// JS | |
558 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
559 | - | |
560 | -// API | |
561 | -import { entInfoDetailProc } from "../../../../../../resources/api/entInfo"; | |
562 | -import { entInfoListProc } from "../../../../../../resources/api/entInfo"; | |
563 | - | |
564 | -export default { | |
565 | - components: { | |
566 | - BplcInsert: BplcInsert, | |
567 | - FnstmInsert: FnstmInsert, | |
568 | - PaginationButton: PaginationButton, | |
569 | - Modal: Modal, | |
570 | - }, | |
571 | - data() { | |
572 | - return { | |
573 | - pageId: this.$route.query.pageId, // 페이지 아이디 | |
574 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
575 | - pageRole: this.$store.state.userType, // 유저 권한 | |
576 | - | |
577 | - // 기업명 조회 모달 | |
578 | - isOpen: false, | |
579 | - list: [], | |
580 | - search: { ...defaultSearchParams }, | |
581 | - | |
582 | - entInfoVO: {}, | |
583 | - bplcCodeList: [], | |
584 | - lctnCodeList: [], | |
585 | - | |
586 | - // 파일 업로드 | |
587 | - fileList: [], | |
588 | - insertFileList: [], | |
589 | - deleteFileList: [], | |
590 | - | |
591 | - brno: null, | |
592 | - }; | |
593 | - }, | |
594 | - computed: { | |
595 | - routerPaths() { | |
596 | - return { | |
597 | - list: this.$store.state.path + "/list.page", | |
598 | - view: this.$store.state.path + "/view.page", | |
599 | - insert: this.$store.state.path + "/insert.page", | |
600 | - }; | |
601 | - }, | |
602 | - }, | |
603 | - created() { | |
604 | - this.fnViewDetail(); | |
605 | - }, | |
606 | - methods: { | |
607 | - // axios: 조회(상세) | |
608 | - async fnViewDetail() { | |
609 | - // 데이터 세팅 | |
610 | - const data = { entId: this.pageId }; | |
611 | - // 실행 | |
612 | - try { | |
613 | - const response = await entInfoDetailProc(data); | |
614 | - this.entInfoVO = response.data.data.entInfoVO; | |
615 | - this.bplcCodeList = response.data.data.bplcCodeList; | |
616 | - this.lctnCodeList = response.data.data.lctnCodeList; | |
617 | - this.fileList = response.data.data.entInfoVO.fileList; | |
618 | - this.brno = this.entInfoVO.brno; | |
619 | - | |
620 | - // 설립일 기본값 추가 | |
621 | - let today = new Date().toISOString().substring(0, 10); | |
622 | - if (this.entInfoVO.fndnDt == null) { | |
623 | - this.entInfoVO.fndnDt = today; | |
624 | - } | |
625 | - } catch (error) { | |
626 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
627 | - } | |
628 | - }, | |
629 | - | |
630 | - // 파일 목록 수정 | |
631 | - fnFileModify(key, file) { | |
632 | - if (key == "cre") { | |
633 | - this.insertFileList = [...this.insertFileList, ...Array.from(file)]; | |
634 | - } else if (key == "del") { | |
635 | - this.deleteFileList.push(file); | |
636 | - } | |
637 | - }, | |
638 | - | |
639 | - // 등록 및 수정 | |
640 | - fnUpsert() { | |
641 | - // 기업정보 유효성 검사 | |
642 | - if (this.valiadtion() == false) { | |
643 | - return; | |
644 | - } | |
645 | - | |
646 | - // 관내사업장 유효성 검사 | |
647 | - if (this.bplcValiadtion() == false) { | |
648 | - return; | |
649 | - } | |
650 | - | |
651 | - // 데이터 세팅 | |
652 | - this.entInfoVO.deleteFileList = this.deleteFileList; | |
653 | - | |
654 | - let formData = new FormData(); | |
655 | - const paramsToBlob = new Blob([JSON.stringify(this.entInfoVO)], { | |
656 | - type: "application/json; charset=UTF-8", | |
657 | - }); | |
658 | - formData.append("entInfoVO", paramsToBlob); | |
659 | - if (this.insertFileList.length > 0) { | |
660 | - for (const file of this.insertFileList) { | |
661 | - formData.append("insertFileList", file); | |
662 | - } | |
663 | - } | |
664 | - | |
665 | - defaultAxios({ | |
666 | - url: | |
667 | - this.pageId == null | |
668 | - ? "/government/entInfo/insertProc.file" | |
669 | - : "/government/entInfo/updateProc.file", | |
670 | - method: "post", | |
671 | - headers: { | |
672 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
673 | - Authorization: this.$store.state.authorization, | |
674 | - }, | |
675 | - data: formData, | |
676 | - }) | |
677 | - .then((response) => { | |
678 | - alert(response.data["message"]); | |
679 | - this.$router.push({ | |
680 | - path: this.routerPaths["view"], | |
681 | - query: { | |
682 | - pageId: | |
683 | - this.pageId == null ? response.data.data.entId : this.pageId, | |
684 | - }, | |
685 | - }); | |
686 | - }) | |
687 | - .catch((error) => { | |
688 | - const errorData = error.response.data; | |
689 | - if (errorData.message != null && errorData.message != "") { | |
690 | - alert(error.response.data.message); | |
691 | - } else { | |
692 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
693 | - } | |
694 | - }); | |
695 | - }, | |
696 | - | |
697 | - // 기업정보 유효성 검사 | |
698 | - valiadtion() { | |
699 | - if (this.entInfoVO["entNm"] == null || this.entInfoVO["entNm"] == "") { | |
700 | - alert("기업명을 입력해주세요."); | |
701 | - this.$refs.entNm.focus(); | |
702 | - return false; | |
703 | - } | |
704 | - | |
705 | - if (this.entInfoVO["brno"] == null || this.entInfoVO["brno"] == "") { | |
706 | - alert("사업자번호를 입력해주세요."); | |
707 | - this.$refs.brno.focus(); | |
708 | - return false; | |
709 | - } | |
710 | - if (this.entInfoVO["brno"].length < 10) { | |
711 | - alert("사업자번호는 10자리로 입력해주세요."); | |
712 | - this.$refs.brno.focus(); | |
713 | - return false; | |
714 | - } | |
715 | - | |
716 | - if ( | |
717 | - this.entInfoVO["rprsvNm"] == null || | |
718 | - this.entInfoVO["rprsvNm"] == "" | |
719 | - ) { | |
720 | - alert("대표자명을 입력해주세요."); | |
721 | - this.$refs.rprsvNm.focus(); | |
722 | - return false; | |
723 | - } | |
724 | - | |
725 | - if ( | |
726 | - this.entInfoVO["lctnAdmdsp"] == null || | |
727 | - this.entInfoVO["lctnAdmdsp"] == "" | |
728 | - ) { | |
729 | - alert("소재지 행정구역을 선택해주세요."); | |
730 | - return false; | |
731 | - } | |
732 | - if ( | |
733 | - this.entInfoVO["lctnSsg"] == null || | |
734 | - this.entInfoVO["lctnSsg"] == "" | |
735 | - ) { | |
736 | - alert("소재지 시, 군, 구를 입력해주세요."); | |
737 | - this.$refs.lctnSsg.focus(); | |
738 | - return false; | |
739 | - } | |
740 | - | |
741 | - if ( | |
742 | - this.entInfoVO["bplcSiar"] == null || | |
743 | - this.entInfoVO["bplcSiar"] == "" || | |
744 | - this.entInfoVO["bplcSiar"] < 1 | |
745 | - ) { | |
746 | - alert("대지면적을 입력해주세요."); | |
747 | - this.$refs.bplcSiar.focus(); | |
748 | - return false; | |
749 | - } | |
750 | - if ( | |
751 | - this.entInfoVO["bplcSiarUnit"] == null || | |
752 | - this.entInfoVO["bplcSiarUnit"] == "" || | |
753 | - this.entInfoVO["bplcSiarUnit"] < 1 | |
754 | - ) { | |
755 | - alert("대지면적단위를 선택해주세요."); | |
756 | - return false; | |
757 | - } | |
758 | - | |
759 | - if ( | |
760 | - this.entInfoVO["fctryArea"] == null || | |
761 | - this.entInfoVO["fctryArea"] == "" || | |
762 | - this.entInfoVO["fctryArea"] < 1 | |
763 | - ) { | |
764 | - alert("공장면적을 입력해주세요."); | |
765 | - this.$refs.fctryArea.focus(); | |
766 | - return false; | |
767 | - } | |
768 | - if ( | |
769 | - this.entInfoVO["fctryAreaUnit"] == null || | |
770 | - this.entInfoVO["fctryAreaUnit"] == "" || | |
771 | - this.entInfoVO["fctryAreaUnit"] < 1 | |
772 | - ) { | |
773 | - alert("공장면적단위를 선택해주세요."); | |
774 | - return false; | |
775 | - } | |
776 | - | |
777 | - if ( | |
778 | - this.entInfoVO["ksicUpCd"] == null || | |
779 | - this.entInfoVO["ksicUpCd"] == "" | |
780 | - ) { | |
781 | - alert("표준산업분류 코드를 입력해주세요."); | |
782 | - this.$refs.ksicUpCd.focus(); | |
783 | - return false; | |
784 | - } | |
785 | - if (this.entInfoVO["ksicCd"] == null || this.entInfoVO["ksicCd"] == "") { | |
786 | - alert("표준산업분류 코드를 입력해주세요."); | |
787 | - this.$refs.ksicCd.focus(); | |
788 | - return false; | |
789 | - } | |
790 | - | |
791 | - if (this.entInfoVO["ksicNm"] == null || this.entInfoVO["ksicNm"] == "") { | |
792 | - alert("표준산업분류를 입력해주세요."); | |
793 | - this.$refs.ksicNm.focus(); | |
794 | - return false; | |
795 | - } | |
796 | - | |
797 | - if ( | |
798 | - this.entInfoVO["mainPrdct"] == null || | |
799 | - this.entInfoVO["mainPrdct"] == "" | |
800 | - ) { | |
801 | - alert("주요제품을 입력해주세요."); | |
802 | - this.$refs.mainPrdct.focus(); | |
803 | - return false; | |
804 | - } | |
805 | - | |
806 | - if ( | |
807 | - this.entInfoVO["entCrdt"] == null || | |
808 | - this.entInfoVO["entCrdt"] == "" | |
809 | - ) { | |
810 | - alert("기업신용을 입력해주세요."); | |
811 | - this.$refs.entCrdt.focus(); | |
812 | - return false; | |
813 | - } | |
814 | - | |
815 | - if (this.entInfoVO["fndnDt"] == null || this.entInfoVO["fndnDt"] == "") { | |
816 | - alert("설립일을 입력해주세요."); | |
817 | - this.$refs.fndnDt.focus(); | |
818 | - return false; | |
819 | - } | |
820 | - | |
821 | - if ( | |
822 | - this.entInfoVO["wrkrCnt"] == null || | |
823 | - this.entInfoVO["wrkrCnt"] == "" || | |
824 | - this.entInfoVO["wrkrCnt"] < 1 | |
825 | - ) { | |
826 | - alert("고용인원수를 입력해주세요."); | |
827 | - this.$refs.wrkrCnt.focus(); | |
828 | - return false; | |
829 | - } | |
830 | - | |
831 | - return true; | |
832 | - }, | |
833 | - // 관내사업장 유효성 검사 | |
834 | - bplcValiadtion() { | |
835 | - const bplcRefs = this.$refs.bplcInput; | |
836 | - for (let i = 0; i < this.entInfoVO.bplcList.length; i++) { | |
837 | - if (this.entInfoVO.bplcList[i].useYn == "Y") { | |
838 | - if ( | |
839 | - this.entInfoVO.bplcList[i]["bplcNm"] == null || | |
840 | - this.entInfoVO.bplcList[i]["bplcNm"] == "" | |
841 | - ) { | |
842 | - alert("사업장명을 입력해주세요."); | |
843 | - bplcRefs.$refs.bplcNm[i].focus(); | |
844 | - return false; | |
845 | - } | |
846 | - if ( | |
847 | - this.entInfoVO.bplcList[i]["mainPrdt"] == null || | |
848 | - this.entInfoVO.bplcList[i]["mainPrdt"] == "" | |
849 | - ) { | |
850 | - alert("주생산품을 입력해주세요."); | |
851 | - bplcRefs.$refs.mainPrdt[i].focus(); | |
852 | - return false; | |
853 | - } | |
854 | - if ( | |
855 | - this.entInfoVO.bplcList[i]["bplcAddr"] == null || | |
856 | - this.entInfoVO.bplcList[i]["bplcAddr"] == "" | |
857 | - ) { | |
858 | - alert("주소를 입력해주세요."); | |
859 | - bplcRefs.$refs.bplcAddr[i].focus(); | |
860 | - return false; | |
861 | - } | |
862 | - if ( | |
863 | - this.entInfoVO.bplcList[i]["bplcSiar"] == null || | |
864 | - this.entInfoVO.bplcList[i]["bplcSiar"] == "" | |
865 | - ) { | |
866 | - alert("대지면적을 입력해주세요."); | |
867 | - bplcRefs.$refs.bplcSiar[i].focus(); | |
868 | - return false; | |
869 | - } | |
870 | - if ( | |
871 | - this.entInfoVO.bplcList[i]["bplcSiarUnit"] == null || | |
872 | - this.entInfoVO.bplcList[i]["bplcSiarUnit"] == "" | |
873 | - ) { | |
874 | - alert("대지면적 단위를 입력해주세요."); | |
875 | - bplcRefs.$refs.bplcSiarUnit[i].focus(); | |
876 | - return false; | |
877 | - } | |
878 | - if ( | |
879 | - this.entInfoVO.bplcList[i]["fctryArea"] == null || | |
880 | - this.entInfoVO.bplcList[i]["fctryArea"] == "" | |
881 | - ) { | |
882 | - alert("공장면적을 입력해주세요."); | |
883 | - bplcRefs.$refs.fctryArea[i].focus(); | |
884 | - return false; | |
885 | - } | |
886 | - if ( | |
887 | - this.entInfoVO.bplcList[i]["fctryAreaUnit"] == null || | |
888 | - this.entInfoVO.bplcList[i]["fctryAreaUnit"] == "" | |
889 | - ) { | |
890 | - alert("공장면적 단위를 입력해주세요."); | |
891 | - bplcRefs.$refs.fctryAreaUnit[i].focus(); | |
892 | - return false; | |
893 | - } | |
894 | - if ( | |
895 | - this.entInfoVO.bplcList[i]["wrkrCnt"] == null || | |
896 | - (this.entInfoVO.bplcList[i]["wrkrCnt"] == "" && | |
897 | - typeof this.entInfoVO.bplcList[i]["wrkrCnt"] != "number") | |
898 | - ) { | |
899 | - alert("종업원수를 입력해주세요."); | |
900 | - bplcRefs.$refs.wrkrCnt[i].focus(); | |
901 | - return false; | |
902 | - } | |
903 | - } | |
904 | - } | |
905 | - }, | |
906 | - | |
907 | - // 취소 | |
908 | - fnPrev() { | |
909 | - let isCheck = confirm("작성을 취소하시겠습니까?"); | |
910 | - if (!isCheck) { | |
911 | - return; | |
912 | - } | |
913 | - if (this.pageId) { | |
914 | - this.$router.push({ | |
915 | - path: this.routerPaths["view"], | |
916 | - query: { | |
917 | - pageId: this.pageId, | |
918 | - }, | |
919 | - }); | |
920 | - } else { | |
921 | - this.$router.push({ | |
922 | - path: this.routerPaths["list"], | |
923 | - }); | |
924 | - } | |
925 | - }, | |
926 | - | |
927 | - // 기업명 조회 | |
928 | - fnSearch() { | |
929 | - this.search.searchType = "ent_nm"; | |
930 | - this.search.searchText = this.entInfoVO.entNm; | |
931 | - this.fnViewList(); | |
932 | - this.isOpen = true; | |
933 | - }, | |
934 | - // 모달 닫기 | |
935 | - fnModalClose() { | |
936 | - this.isOpen = false; | |
937 | - this.search = { ...defaultSearchParams }; | |
938 | - }, | |
939 | - | |
940 | - // axios: 조회(목록) | |
941 | - async fnViewList() { | |
942 | - // 데이터 세팅 | |
943 | - let data = this.search; | |
944 | - // 실행 | |
945 | - try { | |
946 | - const response = await entInfoListProc(data); | |
947 | - this.list = response.data.data.list; | |
948 | - this.search = response.data.data.pagination; | |
949 | - } catch (error) { | |
950 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
951 | - } | |
952 | - }, | |
953 | - // 이동 | |
954 | - fnMove(data) { | |
955 | - let isCheck = confirm("작성을 취소하시겠습니까?"); | |
956 | - if (!isCheck) { | |
957 | - return; | |
958 | - } | |
959 | - this.$router.push({ | |
960 | - path: this.routerPaths["view"], | |
961 | - query: { | |
962 | - pageId: data["entId"], | |
963 | - }, | |
964 | - }); | |
965 | - }, | |
966 | - }, | |
967 | - watch: { | |
968 | - "entInfoVO.brno"(newValue) { | |
969 | - if (this.pageId != null) { | |
970 | - if (this.brno != newValue) { | |
971 | - this.entInfoVO.isBrnoChange = true; | |
972 | - } | |
973 | - } | |
974 | - }, | |
975 | - }, | |
976 | -}; | |
977 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInfo/CompanyInfoSelectList.vue
... | ... | @@ -1,379 +0,0 @@ |
1 | -<template> | |
2 | - <div :class="{ 'content pt50 pb50': pageRole == 'government' }"> | |
3 | - <div :class="{ 'w1400 ': pageRole == 'government' }"> | |
4 | - <div | |
5 | - :class="{ | |
6 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
7 | - 'page-title point-font mb30': pageRole == 'government', | |
8 | - }" | |
9 | - > | |
10 | - <p>기업관리</p> | |
11 | - </div> | |
12 | - <div | |
13 | - class="search-bar pd30 mb15 radius" | |
14 | - style="background-color: #f8f8f8" | |
15 | - > | |
16 | - <div class="flex"> | |
17 | - <div class="gd-2 pd0"> | |
18 | - <select | |
19 | - class="full-select border-none" | |
20 | - v-model="search['mvnInten']" | |
21 | - > | |
22 | - <option value="">입주의향 전체</option> | |
23 | - <option value="0">입주의향 없음</option> | |
24 | - <option value="1">입주의향 있음</option> | |
25 | - <option value="2">입주의향 검토중</option> | |
26 | - </select> | |
27 | - </div> | |
28 | - <div class="gd-2 pr0"> | |
29 | - <select | |
30 | - class="full-select border-none" | |
31 | - v-model="search['mouInten']" | |
32 | - > | |
33 | - <option value="">MOU의향 전체</option> | |
34 | - <option value="0">MOU의향 없음</option> | |
35 | - <option value="1">MOU의향 있음</option> | |
36 | - <option value="2">MOU의향 검토중</option> | |
37 | - </select> | |
38 | - </div> | |
39 | - <div class="flex gd-8 pd0"> | |
40 | - <div class="gd-9 flex pr0"> | |
41 | - <div class="gd-3 pr0"> | |
42 | - <select | |
43 | - class="border-none full-select" | |
44 | - v-model="search['searchType']" | |
45 | - > | |
46 | - <option value="">전체</option> | |
47 | - <option value="ent_nm">기업명</option> | |
48 | - <option value="rprsv_nm">대표자</option> | |
49 | - </select> | |
50 | - </div> | |
51 | - <div class="gd-9 pr0"> | |
52 | - <input | |
53 | - type="text" | |
54 | - class="border-none full-input" | |
55 | - v-model="search['searchText']" | |
56 | - v-on:keyup.enter="fnViewList" | |
57 | - /> | |
58 | - </div> | |
59 | - </div> | |
60 | - <div class="flex gd-3 pd0"> | |
61 | - <div class="gd-6 pr0"> | |
62 | - <button | |
63 | - :class="{ | |
64 | - 'large-btn': true, | |
65 | - 'blue-border-btn': pageRole == 'adm', | |
66 | - 'green-border-btn': pageRole == 'government', | |
67 | - }" | |
68 | - @click="fnViewList" | |
69 | - > | |
70 | - 검색 | |
71 | - </button> | |
72 | - </div> | |
73 | - <div class="gd-6 pr0"> | |
74 | - <button | |
75 | - class="large-btn darkg-border-btn" | |
76 | - @click="fnSearchReset" | |
77 | - > | |
78 | - <svg-icon type="mdi" :path="refreshPath" /> | |
79 | - 초기화 | |
80 | - </button> | |
81 | - </div> | |
82 | - </div> | |
83 | - </div> | |
84 | - </div> | |
85 | - </div> | |
86 | - <ListTable | |
87 | - :colgroup="colgroup" | |
88 | - :thead="thead" | |
89 | - :tbody="tbody" | |
90 | - :className=" | |
91 | - pageRole == 'adm' ? 'admin-list cmmn-table' : 'info-table cmmn-table' | |
92 | - " | |
93 | - @listClick="fnViewDetail" | |
94 | - /> | |
95 | - <div class="flex justify-between align-center no-gutters"> | |
96 | - <div class="gd-1"> | |
97 | - <button | |
98 | - v-if="pageAuth.regAuthrt == 'Y'" | |
99 | - :class="{ | |
100 | - 'large-btn': true, | |
101 | - 'blue-border-btn': pageRole == 'adm', | |
102 | - 'green-border-btn': pageRole == 'government', | |
103 | - }" | |
104 | - @click="fnDownloadModalOpen" | |
105 | - > | |
106 | - 다운로드 | |
107 | - </button> | |
108 | - </div> | |
109 | - <div class="gd-10"> | |
110 | - <PaginationButton | |
111 | - v-model:currentPage="search['currentPage']" | |
112 | - :pagination="search" | |
113 | - :click="fnViewList" | |
114 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
115 | - /> | |
116 | - </div> | |
117 | - <div class="gd-1"> | |
118 | - <button | |
119 | - v-if="pageAuth.regAuthrt == 'Y'" | |
120 | - :class="{ | |
121 | - 'large-btn': true, | |
122 | - 'blue-btn': pageRole == 'adm', | |
123 | - 'green-btn point-font': pageRole == 'government', | |
124 | - }" | |
125 | - @click="fnInsert" | |
126 | - > | |
127 | - 등록 | |
128 | - </button> | |
129 | - </div> | |
130 | - </div> | |
131 | - </div> | |
132 | - </div> | |
133 | - | |
134 | - <!-- 다운로드 --> | |
135 | - <Modal className="small-modal" :showModal="isOpen"> | |
136 | - <template v-slot:header> | |
137 | - <div | |
138 | - :class="{ | |
139 | - 'box-title': true, | |
140 | - 'point-font2': pageRole == 'adm', | |
141 | - 'point-font': pageRole == 'government', | |
142 | - }" | |
143 | - > | |
144 | - <p>기업관리 엑셀 다운로드</p> | |
145 | - </div> | |
146 | - <button class="close-btn" @click="fnDownloadModalClose">X</button> | |
147 | - </template> | |
148 | - | |
149 | - <table class="form-table2"> | |
150 | - <colgroup> | |
151 | - <col style="width: 30%" /> | |
152 | - <col /> | |
153 | - </colgroup> | |
154 | - <thead> | |
155 | - <tr> | |
156 | - <th>분류</th> | |
157 | - <th>내용</th> | |
158 | - </tr> | |
159 | - </thead> | |
160 | - <tbody> | |
161 | - <tr> | |
162 | - <th>입주의향</th> | |
163 | - <td> | |
164 | - <select class="full-select" v-model="downloadKey.mvnInten"> | |
165 | - <option value="">전체</option> | |
166 | - <option value="0">없음</option> | |
167 | - <option value="1">있음</option> | |
168 | - <option value="2">검토중</option> | |
169 | - </select> | |
170 | - </td> | |
171 | - </tr> | |
172 | - <tr> | |
173 | - <th>MOU의향</th> | |
174 | - <td> | |
175 | - <select class="full-select" v-model="downloadKey.mouInten"> | |
176 | - <option value="">전체</option> | |
177 | - <option value="0">없음</option> | |
178 | - <option value="1">있음</option> | |
179 | - <option value="2">검토중</option> | |
180 | - </select> | |
181 | - </td> | |
182 | - </tr> | |
183 | - <tr> | |
184 | - <th>상위업종코드</th> | |
185 | - <td> | |
186 | - <select class="full-select" v-model="downloadKey.ksicUpCd"> | |
187 | - <option value="">전체</option> | |
188 | - <option | |
189 | - v-for="(code, index) of ksicUpCdList" | |
190 | - :key="index" | |
191 | - :value="code" | |
192 | - > | |
193 | - {{ code }} | |
194 | - </option> | |
195 | - </select> | |
196 | - </td> | |
197 | - </tr> | |
198 | - </tbody> | |
199 | - </table> | |
200 | - <template v-slot:footer> | |
201 | - <div class="gd-3 pd0"> | |
202 | - <button | |
203 | - :class="{ | |
204 | - 'large-btn': true, | |
205 | - 'blue-border-btn': pageRole == 'adm', | |
206 | - 'green-border-btn': pageRole == 'government', | |
207 | - }" | |
208 | - @click="fnDownload" | |
209 | - v-if="pageAuth.mdfcnAuthrt == 'Y'" | |
210 | - > | |
211 | - 다운로드 | |
212 | - </button> | |
213 | - </div> | |
214 | - </template> | |
215 | - </Modal> | |
216 | -</template> | |
217 | - | |
218 | -<script> | |
219 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
220 | -import ListTable from "../../../../../component/table/ListTable.vue"; | |
221 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
222 | -import { toRaw } from "vue"; | |
223 | -import queryParams from "../../../../../../resources/js/queryParams"; | |
224 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
225 | -import { mdiRefresh } from "@mdi/js"; | |
226 | -import Modal from "../../../../../component/modal/Modal.vue"; | |
227 | - | |
228 | -// api | |
229 | -import { entInfoListProc } from "../../../../../../resources/api/entInfo"; | |
230 | - | |
231 | -export default { | |
232 | - mixins: [queryParams], | |
233 | - components: { | |
234 | - ListTable: ListTable, | |
235 | - PaginationButton: PaginationButton, | |
236 | - Modal: Modal, | |
237 | - }, | |
238 | - data() { | |
239 | - return { | |
240 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
241 | - pageRole: this.$store.state.userType, // 유저 권한 | |
242 | - | |
243 | - colgroup: ["5%", "65%", "20%", "20%"], | |
244 | - thead: ["NO", "기업명", "대표자", "입주의향"], | |
245 | - tbody: [], | |
246 | - search: { ...defaultSearchParams }, | |
247 | - list: [], | |
248 | - | |
249 | - refreshPath: mdiRefresh, | |
250 | - | |
251 | - isOpen: false, | |
252 | - ksicUpCdList: [], | |
253 | - | |
254 | - downloadKey: { | |
255 | - mvnInten: "", | |
256 | - mouInten: "", | |
257 | - ksicUpCd: "", | |
258 | - }, | |
259 | - }; | |
260 | - }, | |
261 | - created() { | |
262 | - this.resotreQueryParams("queryParams"); | |
263 | - this.fnViewList(); | |
264 | - }, | |
265 | - computed: { | |
266 | - routerPaths() { | |
267 | - return { | |
268 | - list: this.$store.state.path + "/list.page", | |
269 | - view: this.$store.state.path + "/view.page", | |
270 | - insert: this.$store.state.path + "/insert.page", | |
271 | - }; | |
272 | - }, | |
273 | - }, | |
274 | - methods: { | |
275 | - // axios: 조회(목록) | |
276 | - async fnViewList() { | |
277 | - // 데이터 세팅 | |
278 | - let data = this.search; | |
279 | - this.saveQueryParams("queryParams", this.search); // 검색조건 저장 | |
280 | - // 실행 | |
281 | - try { | |
282 | - const response = await entInfoListProc(toRaw(data)); | |
283 | - this.list = response.data.data.list; | |
284 | - this.search = response.data.data.pagination; | |
285 | - this.ksicUpCdList = response.data.data.ksicUpCdList; | |
286 | - this.makeTbody(); | |
287 | - } catch (error) { | |
288 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
289 | - } | |
290 | - }, | |
291 | - // tbody 생성 | |
292 | - makeTbody() { | |
293 | - this.tbody = []; | |
294 | - this.tbody = this.list.map((entInfo, idx) => ({ | |
295 | - id: | |
296 | - this.search.totalRecordCount - | |
297 | - idx - | |
298 | - (this.search.currentPage - 1) * this.search.recordSize, | |
299 | - entNm: entInfo.entNm, | |
300 | - rprsvNm: entInfo.rprsvNm, | |
301 | - mvnInten: | |
302 | - entInfo.mvnInten == 0 | |
303 | - ? "의향없음" | |
304 | - : entInfo.mvnInten == 1 | |
305 | - ? "의향있음" | |
306 | - : entInfo.mvnInten == 2 | |
307 | - ? "검토중" | |
308 | - : "-", | |
309 | - })); | |
310 | - }, | |
311 | - | |
312 | - // 조회(상세) | |
313 | - fnViewDetail(idx) { | |
314 | - this.$router.push({ | |
315 | - path: this.routerPaths.view, | |
316 | - query: { pageId: this.list[idx].entId }, | |
317 | - }); | |
318 | - }, | |
319 | - | |
320 | - // 검색 초기화 | |
321 | - fnSearchReset() { | |
322 | - this.search = { ...defaultSearchParams }; | |
323 | - this.fnViewList(); | |
324 | - }, | |
325 | - | |
326 | - // 등록 | |
327 | - fnInsert() { | |
328 | - this.$router.push({ | |
329 | - path: this.routerPaths.insert, | |
330 | - }); | |
331 | - }, | |
332 | - | |
333 | - fnDownloadModalOpen() { | |
334 | - this.isOpen = true; | |
335 | - }, | |
336 | - fnDownloadModalClose() { | |
337 | - this.isOpen = false; | |
338 | - }, | |
339 | - | |
340 | - // 다운로드 | |
341 | - fnDownload() { | |
342 | - // 실행 | |
343 | - defaultAxios({ | |
344 | - url: "/government/entInfo/excelDownloadAll.json", | |
345 | - method: "post", | |
346 | - headers: { | |
347 | - "Content-Type": "application/json; charset=UTF-8", | |
348 | - Authorization: this.$store.state.authorization, | |
349 | - }, | |
350 | - data: this.downloadKey, | |
351 | - responseType: "blob", | |
352 | - }) | |
353 | - .then((response) => { | |
354 | - const url = window.URL.createObjectURL( | |
355 | - new Blob([response.data], { | |
356 | - type: response.headers["content-type"], | |
357 | - }) | |
358 | - ); | |
359 | - | |
360 | - let today = new Date().toISOString().substring(2, 10); | |
361 | - today = today.replace(/[^0-9]/g, ""); | |
362 | - | |
363 | - const link = document.createElement("a"); | |
364 | - link.href = url; | |
365 | - link.setAttribute("download", `[기업정보]전체목록_${today}.xlsx`); | |
366 | - document.body.appendChild(link); | |
367 | - link.click(); | |
368 | - document.body.removeChild(link); | |
369 | - window.URL.revokeObjectURL(url); | |
370 | - | |
371 | - this.fnDownloadModalClose(); | |
372 | - }) | |
373 | - .catch((error) => { | |
374 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
375 | - }); | |
376 | - }, | |
377 | - }, | |
378 | -}; | |
379 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInfo/CompanyInfoSelectListOne.vue
... | ... | @@ -1,610 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>기업관리</p> | |
21 | - </div> | |
22 | - <details open class="form-table-style mb30"> | |
23 | - <summary | |
24 | - :class="{ | |
25 | - 'point-font2': pageRole == 'adm', | |
26 | - 'point-font': pageRole == 'government', | |
27 | - }" | |
28 | - > | |
29 | - <p class="summary-style pl10">기본정보</p> | |
30 | - </summary> | |
31 | - <div class="pt10 pb10"> | |
32 | - <table class="form-table2"> | |
33 | - <colgroup> | |
34 | - <col width="15%" /> | |
35 | - <col width="85%" /> | |
36 | - </colgroup> | |
37 | - <tr> | |
38 | - <th | |
39 | - :class="{ | |
40 | - 'point-font2': pageRole == 'adm', | |
41 | - 'point-font': pageRole == 'government', | |
42 | - }" | |
43 | - > | |
44 | - 기업명 | |
45 | - </th> | |
46 | - <td>{{ entInfoVO.entNm }}</td> | |
47 | - </tr> | |
48 | - <tr> | |
49 | - <th | |
50 | - :class="{ | |
51 | - 'point-font2': pageRole == 'adm', | |
52 | - 'point-font': pageRole == 'government', | |
53 | - }" | |
54 | - > | |
55 | - 사업자번호 | |
56 | - </th> | |
57 | - <td>{{ entInfoVO.brno }}</td> | |
58 | - </tr> | |
59 | - <tr> | |
60 | - <th | |
61 | - :class="{ | |
62 | - 'point-font2': pageRole == 'adm', | |
63 | - 'point-font': pageRole == 'government', | |
64 | - }" | |
65 | - > | |
66 | - 대표자명 | |
67 | - </th> | |
68 | - <td>{{ entInfoVO.rprsvNm }}</td> | |
69 | - </tr> | |
70 | - <tr> | |
71 | - <th | |
72 | - :class="{ | |
73 | - 'point-font2': pageRole == 'adm', | |
74 | - 'point-font': pageRole == 'government', | |
75 | - }" | |
76 | - > | |
77 | - 소재지 | |
78 | - </th> | |
79 | - <td> | |
80 | - <div v-for="(code, index) of lctnCodeList" :key="index"> | |
81 | - <span v-show="code.cd == entInfoVO.lctnAdmdsp"> | |
82 | - {{ code.cdNm }} | |
83 | - {{ entInfoVO.lctnSsg }} | |
84 | - </span> | |
85 | - </div> | |
86 | - </td> | |
87 | - </tr> | |
88 | - <tr> | |
89 | - <th | |
90 | - :class="{ | |
91 | - 'point-font2': pageRole == 'adm', | |
92 | - 'point-font': pageRole == 'government', | |
93 | - }" | |
94 | - > | |
95 | - 대지면적 | |
96 | - </th> | |
97 | - <td> | |
98 | - {{ entInfoVO.bplcSiar }} | |
99 | - <template v-for="(code, idx) in bplcCodeList" :key="idx"> | |
100 | - <span v-if="code.cd == entInfoVO.bplcSiarUnit"> | |
101 | - {{ code.cdNm }} | |
102 | - </span> | |
103 | - </template> | |
104 | - </td> | |
105 | - </tr> | |
106 | - <tr> | |
107 | - <th | |
108 | - :class="{ | |
109 | - 'point-font2': pageRole == 'adm', | |
110 | - 'point-font': pageRole == 'government', | |
111 | - }" | |
112 | - > | |
113 | - 공장면적 | |
114 | - </th> | |
115 | - <td> | |
116 | - {{ entInfoVO.fctryArea }} | |
117 | - <template v-for="(code, idx) in bplcCodeList" :key="idx"> | |
118 | - <span v-if="code.cd == entInfoVO.fctryAreaUnit"> | |
119 | - {{ code.cdNm }} | |
120 | - </span> | |
121 | - </template> | |
122 | - </td> | |
123 | - </tr> | |
124 | - <tr> | |
125 | - <th | |
126 | - :class="{ | |
127 | - 'point-font2': pageRole == 'adm', | |
128 | - 'point-font': pageRole == 'government', | |
129 | - }" | |
130 | - > | |
131 | - 표준산업분류 | |
132 | - </th> | |
133 | - <td> | |
134 | - ({{ entInfoVO.ksicUpCd }}{{ entInfoVO.ksicCd }}) | |
135 | - {{ entInfoVO.ksicNm }} | |
136 | - </td> | |
137 | - </tr> | |
138 | - <tr> | |
139 | - <th | |
140 | - :class="{ | |
141 | - 'point-font2': pageRole == 'adm', | |
142 | - 'point-font': pageRole == 'government', | |
143 | - }" | |
144 | - > | |
145 | - 주요제품 | |
146 | - </th> | |
147 | - <td>{{ entInfoVO.mainPrdct }}</td> | |
148 | - </tr> | |
149 | - <tr> | |
150 | - <th | |
151 | - :class="{ | |
152 | - 'point-font2': pageRole == 'adm', | |
153 | - 'point-font': pageRole == 'government', | |
154 | - }" | |
155 | - > | |
156 | - 기업신용 | |
157 | - </th> | |
158 | - <td>{{ entInfoVO.entCrdt }}</td> | |
159 | - </tr> | |
160 | - <tr> | |
161 | - <th | |
162 | - :class="{ | |
163 | - 'point-font2': pageRole == 'adm', | |
164 | - 'point-font': pageRole == 'government', | |
165 | - }" | |
166 | - > | |
167 | - 설립일 | |
168 | - </th> | |
169 | - <td>{{ entInfoVO.fndnDt }}</td> | |
170 | - </tr> | |
171 | - <tr> | |
172 | - <th | |
173 | - :class="{ | |
174 | - 'point-font2': pageRole == 'adm', | |
175 | - 'point-font': pageRole == 'government', | |
176 | - }" | |
177 | - > | |
178 | - 고용인원수 | |
179 | - </th> | |
180 | - <td>{{ entInfoVO.wrkrCnt }}</td> | |
181 | - </tr> | |
182 | - </table> | |
183 | - </div> | |
184 | - </details> | |
185 | - <details open class="form-table-style mb30"> | |
186 | - <summary | |
187 | - :class="{ | |
188 | - 'point-font2': pageRole == 'adm', | |
189 | - 'point-font': pageRole == 'government', | |
190 | - }" | |
191 | - > | |
192 | - <p class="summary-style pl10">세부정보</p> | |
193 | - </summary> | |
194 | - <div class="pt10 pb10"> | |
195 | - <table class="form-table2 mb10"> | |
196 | - <colgroup> | |
197 | - <col width="15%" /> | |
198 | - <col width="35%" /> | |
199 | - <col width="15%" /> | |
200 | - <col width="35%" /> | |
201 | - </colgroup> | |
202 | - <tr> | |
203 | - <th | |
204 | - :class="{ | |
205 | - 'point-font2': pageRole == 'adm', | |
206 | - 'point-font': pageRole == 'government', | |
207 | - }" | |
208 | - > | |
209 | - 상담유무 | |
210 | - </th> | |
211 | - <td colspan="3"> | |
212 | - <span v-if="isIvstDscsn">Y</span> | |
213 | - <span v-else>N</span> | |
214 | - </td> | |
215 | - </tr> | |
216 | - <tr v-show="isIvstDscsn"> | |
217 | - <th | |
218 | - :class="{ | |
219 | - 'point-font2': pageRole == 'adm', | |
220 | - 'point-font': pageRole == 'government', | |
221 | - }" | |
222 | - > | |
223 | - 입주의향 | |
224 | - </th> | |
225 | - <td> | |
226 | - <span v-show="entInfoVO['mvnInten'] == 0">의향없음</span> | |
227 | - <span v-show="entInfoVO['mvnInten'] == 1">의향있음</span> | |
228 | - <span v-show="entInfoVO['mvnInten'] == 2">검토중</span> | |
229 | - </td> | |
230 | - </tr> | |
231 | - <tr v-show="isIvstDscsn"> | |
232 | - <th | |
233 | - :class="{ | |
234 | - 'point-font2': pageRole == 'adm', | |
235 | - 'point-font': pageRole == 'government', | |
236 | - }" | |
237 | - > | |
238 | - MOU의향 | |
239 | - </th> | |
240 | - <td> | |
241 | - <span v-show="entInfoVO['mouInten'] == 0">의향없음</span> | |
242 | - <span v-show="entInfoVO['mouInten'] == 1">의향있음</span> | |
243 | - <span v-show="entInfoVO['mouInten'] == 2">검토중</span> | |
244 | - </td> | |
245 | - </tr> | |
246 | - <tr> | |
247 | - <th | |
248 | - :class="{ | |
249 | - 'point-font2': pageRole == 'adm', | |
250 | - 'point-font': pageRole == 'government', | |
251 | - }" | |
252 | - > | |
253 | - 재무제표 첨부파일 | |
254 | - </th> | |
255 | - <td> | |
256 | - <template | |
257 | - v-if="entInfoVO.fileList != null && entInfoVO.fileList != ''" | |
258 | - > | |
259 | - <ul v-for="(item, idx) in entInfoVO.fileList" :key="idx"> | |
260 | - <li @click="downloadFile(item)"> | |
261 | - {{ item.fileNm + "." + item.extnNm }} | |
262 | - </li> | |
263 | - </ul> | |
264 | - </template> | |
265 | - <p v-else class="data-none">등록된 첨부파일이 없습니다.</p> | |
266 | - </td> | |
267 | - </tr> | |
268 | - </table> | |
269 | - <div class="gd-12 pd0"> | |
270 | - <label for="" class="point-font mb10" style="font-size: 1.6rem"> | |
271 | - 비고 | |
272 | - </label> | |
273 | - <textarea | |
274 | - class="content" | |
275 | - :value="entInfoVO['rmrk']" | |
276 | - disabled | |
277 | - ></textarea> | |
278 | - </div> | |
279 | - </div> | |
280 | - </details> | |
281 | - | |
282 | - <!-- 관내사업장 --> | |
283 | - <BplcView | |
284 | - :data="entInfoVO.bplcList" | |
285 | - :codeList="bplcCodeList" | |
286 | - :pageRole="pageRole" | |
287 | - /> | |
288 | - | |
289 | - <!-- 상담내역 --> | |
290 | - <IvstDscsnList | |
291 | - :data="entInfoVO" | |
292 | - :pageNm="pageNm" | |
293 | - :pageId="pageId" | |
294 | - :pageAuth="pageAuth" | |
295 | - :pageRole="pageRole" | |
296 | - @fnEntInfoView="fnViewDetail" | |
297 | - /> | |
298 | - | |
299 | - <!-- 하단 버튼 --> | |
300 | - <div class="flex justify-between align-center no-gutters"> | |
301 | - <div class="gd-6"> | |
302 | - <div v-if="pageAuth.fileDwnldAuthrt == 'Y'" class="gd-3 pl0"> | |
303 | - <button | |
304 | - :class="{ | |
305 | - 'large-btn': true, | |
306 | - 'blue-border-btn': pageRole == 'adm', | |
307 | - 'green-border-btn': pageRole == 'government', | |
308 | - }" | |
309 | - @click="fnDownload" | |
310 | - > | |
311 | - 다운로드 | |
312 | - </button> | |
313 | - </div> | |
314 | - </div> | |
315 | - <div class="flex justify-end gd-6 no-gutters"> | |
316 | - <div class="gd-2 ml10"> | |
317 | - <button class="large-btn gray-border-btn" @click="fnPrev"> | |
318 | - 목록 | |
319 | - </button> | |
320 | - </div> | |
321 | - <div v-if="pageAuth.mdfcnAuthrt == 'Y'" class="gd-2 ml10"> | |
322 | - <button | |
323 | - :class="{ | |
324 | - 'large-btn': true, | |
325 | - 'blue-border-btn': pageRole == 'adm', | |
326 | - 'green-border-btn': pageRole == 'government', | |
327 | - }" | |
328 | - @click="fnUpdate" | |
329 | - > | |
330 | - 수정 | |
331 | - </button> | |
332 | - </div> | |
333 | - <div v-if="pageAuth.delAuthrt == 'Y'" class="gd-2 ml10"> | |
334 | - <button class="large-btn red-border-btn" @click="fnDelete"> | |
335 | - 삭제 | |
336 | - </button> | |
337 | - </div> | |
338 | - </div> | |
339 | - </div> | |
340 | - </div> | |
341 | - </div> | |
342 | -</template> | |
343 | - | |
344 | -<script> | |
345 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
346 | -import BplcView from "../../../../../component/companyInfo/BplcView.vue"; | |
347 | -import IvstDscsnList from "../../../../../component/companyInfo/IvstDscsnList.vue"; | |
348 | - | |
349 | -// api | |
350 | -import { | |
351 | - entInfoDetailProc, | |
352 | - entInfoDeleteProc, | |
353 | -} from "../../../../../../resources/api/entInfo"; | |
354 | - | |
355 | -export default { | |
356 | - components: { | |
357 | - BplcView: BplcView, | |
358 | - IvstDscsnList: IvstDscsnList, | |
359 | - }, | |
360 | - data() { | |
361 | - return { | |
362 | - pageNm: "entInfo", // 페이지 이름 | |
363 | - pageId: this.$route.query.pageId, // 페이지 아이디 | |
364 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
365 | - pageRole: this.$store.state.userType, // 유저 권한 | |
366 | - | |
367 | - // 기업정보 | |
368 | - entInfoVO: {}, | |
369 | - isIvstDscsn: false, | |
370 | - | |
371 | - // 면적 단위 | |
372 | - bplcCodeList: [], | |
373 | - // 행정구역 | |
374 | - lctnCodeList: [], | |
375 | - }; | |
376 | - }, | |
377 | - computed: { | |
378 | - routerPaths() { | |
379 | - return { | |
380 | - list: this.$store.state.path + "/list.page", | |
381 | - view: this.$store.state.path + "/view.page", | |
382 | - insert: this.$store.state.path + "/insert.page", | |
383 | - }; | |
384 | - }, | |
385 | - }, | |
386 | - created() { | |
387 | - this.fnViewDetail(); | |
388 | - }, | |
389 | - methods: { | |
390 | - // axios: 조회(상세) | |
391 | - async fnViewDetail() { | |
392 | - // 데이터 세팅 | |
393 | - const data = { entId: this.pageId }; | |
394 | - // 실행 | |
395 | - try { | |
396 | - const response = await entInfoDetailProc(data); | |
397 | - this.entInfoVO = response.data.data.entInfoVO; | |
398 | - this.bplcCodeList = response.data.data.bplcCodeList; | |
399 | - this.lctnCodeList = response.data.data.lctnCodeList; | |
400 | - // 상담유무 삽입 | |
401 | - if ( | |
402 | - this.entInfoVO.mvnInten != null && | |
403 | - this.entInfoVO.mouInten != null | |
404 | - ) { | |
405 | - this.isIvstDscsn = true; | |
406 | - } | |
407 | - } catch (error) { | |
408 | - const errorData = error.response.data; | |
409 | - if (errorData.message != null && errorData.message != "") { | |
410 | - alert(error.response.data.message); | |
411 | - } else { | |
412 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
413 | - } | |
414 | - } | |
415 | - }, | |
416 | - // 첨부파일 다운로드 로직 | |
417 | - async downloadFile(file) { | |
418 | - if (this.pageAuth.fileDwnldAuthrt != "Y") { | |
419 | - alert("다운로드 권한이 없습니다."); | |
420 | - return; | |
421 | - } | |
422 | - try { | |
423 | - const response = await defaultAxios({ | |
424 | - url: "/sys/file/fileDownload.json", // URL 경로 확인 | |
425 | - method: "post", | |
426 | - headers: { | |
427 | - "Content-Type": "application/json; charset=UTF-8", | |
428 | - Authorization: this.$store.state.authorization, | |
429 | - }, | |
430 | - data: file.fileId, | |
431 | - responseType: "blob", | |
432 | - }); | |
433 | - const url = window.URL.createObjectURL(new Blob([response.data])); | |
434 | - const link = document.createElement("a"); | |
435 | - link.href = url; | |
436 | - link.setAttribute("download", file.fileNm + "." + file.extnNm); | |
437 | - document.body.appendChild(link); | |
438 | - link.click(); | |
439 | - document.body.removeChild(link); | |
440 | - window.URL.revokeObjectURL(url); | |
441 | - } catch (error) { | |
442 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
443 | - } | |
444 | - }, | |
445 | - | |
446 | - // 수정 | |
447 | - fnUpdate() { | |
448 | - this.$router.push({ | |
449 | - path: this.routerPaths.insert, | |
450 | - query: { pageId: this.pageId }, | |
451 | - }); | |
452 | - }, | |
453 | - // 코드명 찾기 | |
454 | - fnFindCdNm(list, code) { | |
455 | - let result = null; | |
456 | - for (let item of list) { | |
457 | - if (item.cd == code) { | |
458 | - result = item.cdNm; | |
459 | - } | |
460 | - } | |
461 | - return result; | |
462 | - }, | |
463 | - // 다운로드 | |
464 | - fnDownload() { | |
465 | - // 데이터 세팅 | |
466 | - let entInfo = { | |
467 | - entNm: this.entInfoVO.entNm, | |
468 | - brno: this.entInfoVO.brno, | |
469 | - rprsvNm: this.entInfoVO.rprsvNm, | |
470 | - lctn: | |
471 | - this.fnFindCdNm(this.lctnCodeList, this.entInfoVO.lctnAdmdsp) + | |
472 | - " " + | |
473 | - this.entInfoVO.lctnSsg, | |
474 | - bplcSiar: | |
475 | - this.entInfoVO.bplcSiar + | |
476 | - this.fnFindCdNm(this.bplcCodeList, this.entInfoVO.bplcSiarUnit), | |
477 | - fctryArea: | |
478 | - this.entInfoVO.fctryArea + | |
479 | - this.fnFindCdNm(this.bplcCodeList, this.entInfoVO.fctryAreaUnit), | |
480 | - ksic: | |
481 | - "(" + | |
482 | - this.entInfoVO.ksicUpCd + | |
483 | - this.entInfoVO.ksicCd + | |
484 | - ") " + | |
485 | - this.entInfoVO.ksicNm, | |
486 | - mainPrdct: this.entInfoVO.mainPrdct, | |
487 | - entCrdt: this.entInfoVO.entCrdt, | |
488 | - fndnDt: this.entInfoVO.fndnDt, | |
489 | - wrkrCnt: this.entInfoVO.wrkrCnt, | |
490 | - isIvstDscsn: | |
491 | - this.isIvstDscsn == true | |
492 | - ? "Y" | |
493 | - : this.isIvstDscsn == false | |
494 | - ? "N" | |
495 | - : null, | |
496 | - mvnInten: this.fnChangeInten(this.entInfoVO.mvnInten), | |
497 | - mouInten: this.fnChangeInten(this.entInfoVO.mouInten), | |
498 | - rmrk: this.entInfoVO.rmrk, | |
499 | - }; | |
500 | - let bplcList = []; | |
501 | - for (let bplc of this.entInfoVO.bplcList) { | |
502 | - let bplcsiar = | |
503 | - bplc.bplcSiar + this.fnFindCdNm(this.bplcCodeList, bplc.bplcSiarUnit); | |
504 | - let fctryArea = | |
505 | - bplc.fctryArea + | |
506 | - this.fnFindCdNm(this.bplcCodeList, bplc.fctryAreaUnit); | |
507 | - bplcList.push({ | |
508 | - bplcNm: bplc.bplcNm, | |
509 | - mainPrdt: bplc.mainPrdt, | |
510 | - bplcAddr: bplc.bplcAddr, | |
511 | - bplcSiar: bplcsiar, | |
512 | - fctryArea: fctryArea, | |
513 | - wrkrCnt: bplc.wrkrCnt, | |
514 | - }); | |
515 | - } | |
516 | - // 폼데이터 | |
517 | - var formData = new FormData(); | |
518 | - const entInfoToBlob = new Blob([JSON.stringify(entInfo)], { | |
519 | - type: "application/json; charset=UTF-8", | |
520 | - }); | |
521 | - formData.append("entInfo", entInfoToBlob); | |
522 | - const bplcListToBlob = new Blob([JSON.stringify(bplcList)], { | |
523 | - type: "application/json; charset=UTF-8", | |
524 | - }); | |
525 | - formData.append("bplcList", bplcListToBlob); | |
526 | - // 실행 | |
527 | - defaultAxios({ | |
528 | - url: "/government/entInfo/excelDownload.json", | |
529 | - method: "post", | |
530 | - headers: { | |
531 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
532 | - Authorization: this.$store.state.authorization, | |
533 | - }, | |
534 | - data: formData, | |
535 | - responseType: "blob", | |
536 | - }) | |
537 | - .then((response) => { | |
538 | - const url = window.URL.createObjectURL( | |
539 | - new Blob([response.data], { | |
540 | - type: response.headers["content-type"], | |
541 | - }) | |
542 | - ); | |
543 | - | |
544 | - let today = new Date().toISOString().substring(2, 10); | |
545 | - today = today.replace(/[^0-9]/g, ""); | |
546 | - | |
547 | - const link = document.createElement("a"); | |
548 | - link.href = url; | |
549 | - link.setAttribute( | |
550 | - "download", | |
551 | - `[기업정보]${this.entInfoVO.entNm}_${today}.xlsx` | |
552 | - ); | |
553 | - document.body.appendChild(link); | |
554 | - link.click(); | |
555 | - document.body.removeChild(link); | |
556 | - window.URL.revokeObjectURL(url); | |
557 | - }) | |
558 | - .catch((error) => { | |
559 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
560 | - }); | |
561 | - }, | |
562 | - // 의향 표기 변경 | |
563 | - fnChangeInten(inten) { | |
564 | - let result = null; | |
565 | - switch (inten) { | |
566 | - case "0": | |
567 | - result = "의향없음"; | |
568 | - break; | |
569 | - case "1": | |
570 | - result = "의향있음"; | |
571 | - break; | |
572 | - case "2": | |
573 | - result = "검토중"; | |
574 | - break; | |
575 | - } | |
576 | - return result; | |
577 | - }, | |
578 | - | |
579 | - // 목록 | |
580 | - fnPrev() { | |
581 | - this.$router.push({ | |
582 | - path: this.routerPaths.list, | |
583 | - }); | |
584 | - }, | |
585 | - | |
586 | - // axios: 삭제 | |
587 | - async fnDelete() { | |
588 | - var isDelete = confirm("해당 기업정보를 삭제하시겠습니까?"); | |
589 | - if (!isDelete) { | |
590 | - return; | |
591 | - } | |
592 | - // 데이터 세팅 | |
593 | - const data = { entId: this.pageId }; | |
594 | - // 실행 | |
595 | - try { | |
596 | - const response = await entInfoDeleteProc(data); | |
597 | - alert(response.data.message); | |
598 | - this.fnPrev(); | |
599 | - } catch (error) { | |
600 | - const errorData = error.response.data; | |
601 | - if (errorData.message != null && errorData.message != "") { | |
602 | - alert(error.response.data.message); | |
603 | - } else { | |
604 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
605 | - } | |
606 | - } | |
607 | - }, | |
608 | - }, | |
609 | -}; | |
610 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInvest/CompanyInvestInsert.vue
... | ... | @@ -1,790 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>투자상담</p> | |
21 | - </div> | |
22 | - <details open class="form-table-style mb30"> | |
23 | - <summary | |
24 | - :class="{ | |
25 | - 'point-font2': pageRole == 'adm', | |
26 | - 'point-font': pageRole == 'government', | |
27 | - }" | |
28 | - > | |
29 | - <p class="summary-style pl10">기본정보</p> | |
30 | - </summary> | |
31 | - <div class="pt10 pb10"> | |
32 | - <table class="form-table"> | |
33 | - <colgroup> | |
34 | - <col width="50%" /> | |
35 | - <col width="50%" /> | |
36 | - </colgroup> | |
37 | - <tr> | |
38 | - <td> | |
39 | - <div class="gd-12 pl0"> | |
40 | - <label | |
41 | - for="ttl" | |
42 | - :class="{ | |
43 | - 'form-title mb10': true, | |
44 | - 'point-font2': pageRole == 'adm', | |
45 | - 'point-font': pageRole == 'government', | |
46 | - }" | |
47 | - > | |
48 | - 상담요지 | |
49 | - </label> | |
50 | - <div class="flex align-center"> | |
51 | - <div class="gd-6 pl0"> | |
52 | - <select | |
53 | - class="full-input" | |
54 | - v-model="dscsnOtln.select" | |
55 | - @change="fnChangeSelect" | |
56 | - > | |
57 | - <option value="">상담요지를 선택하세요.</option> | |
58 | - <option value="투자협의">투자협의</option> | |
59 | - <option value="건의사항">건의사항</option> | |
60 | - <option value="self">직접입력</option> | |
61 | - </select> | |
62 | - </div> | |
63 | - <div class="gd-6 pr0" v-show="dscsnOtln.select == 'self'"> | |
64 | - <input | |
65 | - type="text" | |
66 | - class="full-input" | |
67 | - ref="detail" | |
68 | - v-model="dscsnOtln.detail" | |
69 | - placeholder="상담요지를 직접 입력하세요." | |
70 | - /> | |
71 | - </div> | |
72 | - </div> | |
73 | - </div> | |
74 | - </td> | |
75 | - </tr> | |
76 | - <tr> | |
77 | - <td> | |
78 | - <div class="gd-12 pl0"> | |
79 | - <label | |
80 | - for="ttl" | |
81 | - :class="{ | |
82 | - 'form-title mb10': true, | |
83 | - 'point-font2': pageRole == 'adm', | |
84 | - 'point-font': pageRole == 'government', | |
85 | - }" | |
86 | - > | |
87 | - 제목 | |
88 | - </label> | |
89 | - <input | |
90 | - type="text" | |
91 | - id="ttl" | |
92 | - class="full-input" | |
93 | - ref="ttl" | |
94 | - v-model="ivstDscsnVO['ttl']" | |
95 | - placeholder="제목을 입력하세요." | |
96 | - /> | |
97 | - </div> | |
98 | - </td> | |
99 | - <td> | |
100 | - <div class="gd-12 pr0"> | |
101 | - <label | |
102 | - for="dt" | |
103 | - :class="{ | |
104 | - 'form-title mb10': true, | |
105 | - 'point-font2': pageRole == 'adm', | |
106 | - 'point-font': pageRole == 'government', | |
107 | - }" | |
108 | - > | |
109 | - 일시 | |
110 | - </label> | |
111 | - <input | |
112 | - type="date" | |
113 | - id="dt" | |
114 | - class="half-input" | |
115 | - style="display: block" | |
116 | - ref="dt" | |
117 | - v-model="ivstDscsnVO['dt']" | |
118 | - /> | |
119 | - </div> | |
120 | - </td> | |
121 | - </tr> | |
122 | - <tr> | |
123 | - <td> | |
124 | - <div class="gd-12 pl0"> | |
125 | - <label | |
126 | - for="plc" | |
127 | - :class="{ | |
128 | - 'form-title mb10': true, | |
129 | - 'point-font2': pageRole == 'adm', | |
130 | - 'point-font': pageRole == 'government', | |
131 | - }" | |
132 | - > | |
133 | - 장소 | |
134 | - </label> | |
135 | - <input | |
136 | - type="text" | |
137 | - id="plc" | |
138 | - class="full-input" | |
139 | - ref="plc" | |
140 | - v-model="ivstDscsnVO['plc']" | |
141 | - placeholder="장소를 입력하세요." | |
142 | - /> | |
143 | - </div> | |
144 | - </td> | |
145 | - <td> | |
146 | - <div class="gd-12 pr0"> | |
147 | - <label | |
148 | - for="entNm" | |
149 | - :class="{ | |
150 | - 'form-title mb10': true, | |
151 | - 'point-font2': pageRole == 'adm', | |
152 | - 'point-font': pageRole == 'government', | |
153 | - }" | |
154 | - > | |
155 | - 기업명 | |
156 | - </label> | |
157 | - <div class="flex align-center no-gutters"> | |
158 | - <div class="gd-9 mr10"> | |
159 | - <input | |
160 | - type="text" | |
161 | - id="entNm" | |
162 | - class="full-input" | |
163 | - ref="entNm" | |
164 | - v-model="ivstDscsnVO['entNm']" | |
165 | - placeholder="기업명을 선택하세요." | |
166 | - readonly | |
167 | - /> | |
168 | - </div> | |
169 | - <div class="gd-2"> | |
170 | - <button | |
171 | - :class="{ | |
172 | - 'large-btn': true, | |
173 | - 'blue-border-btn': pageRole == 'adm', | |
174 | - 'green-border-btn': pageRole == 'government', | |
175 | - }" | |
176 | - @click="fnModalOpen" | |
177 | - > | |
178 | - 찾기 | |
179 | - </button> | |
180 | - </div> | |
181 | - </div> | |
182 | - </div> | |
183 | - </td> | |
184 | - </tr> | |
185 | - <tr> | |
186 | - <td> | |
187 | - <div class="gd-12 pl0"> | |
188 | - <label | |
189 | - for="prtpnt" | |
190 | - :class="{ | |
191 | - mb10: true, | |
192 | - 'point-font2': pageRole == 'adm', | |
193 | - 'point-font': pageRole == 'government', | |
194 | - }" | |
195 | - >참석자</label | |
196 | - > | |
197 | - <input | |
198 | - type="text" | |
199 | - id="prtpnt" | |
200 | - class="full-input" | |
201 | - v-model="ivstDscsnVO['prtpnt']" | |
202 | - placeholder="참석자를 입력하세요." | |
203 | - /> | |
204 | - </div> | |
205 | - </td> | |
206 | - <td> | |
207 | - <div class="gd-12 pr0"> | |
208 | - <label | |
209 | - for="dscsnPbofc" | |
210 | - :class="{ | |
211 | - 'form-title mb10': true, | |
212 | - 'point-font2': pageRole == 'adm', | |
213 | - 'point-font': pageRole == 'government', | |
214 | - }" | |
215 | - > | |
216 | - 상담공무원 | |
217 | - </label> | |
218 | - <input | |
219 | - type="text" | |
220 | - id="dscsnPbofc" | |
221 | - class="full-input" | |
222 | - ref="dscsnPbofc" | |
223 | - v-model="ivstDscsnVO['dscsnPbofc']" | |
224 | - placeholder="상담공무원을 입력하세요." | |
225 | - /> | |
226 | - </div> | |
227 | - </td> | |
228 | - </tr> | |
229 | - <tr> | |
230 | - <td colspan="2"> | |
231 | - <div class="gd-12 pl0 pr0"> | |
232 | - <label | |
233 | - for="" | |
234 | - :class="{ | |
235 | - mb10: true, | |
236 | - 'point-font2': pageRole == 'adm', | |
237 | - 'point-font': pageRole == 'government', | |
238 | - }" | |
239 | - >주요내용</label | |
240 | - > | |
241 | - <textarea | |
242 | - name="" | |
243 | - id="" | |
244 | - class="mainCn" | |
245 | - v-model="ivstDscsnVO['mainCn']" | |
246 | - placeholder="내용을 입력하세요." | |
247 | - ></textarea> | |
248 | - </div> | |
249 | - </td> | |
250 | - </tr> | |
251 | - <tr> | |
252 | - <td colspan="2"> | |
253 | - <div class="gd-12 pl0 pr0"> | |
254 | - <label | |
255 | - for="" | |
256 | - :class="{ | |
257 | - mb10: true, | |
258 | - 'point-font2': pageRole == 'adm', | |
259 | - 'point-font': pageRole == 'government', | |
260 | - }" | |
261 | - > | |
262 | - 첨부파일 | |
263 | - </label> | |
264 | - <div class="flex"> | |
265 | - <div class="gd-10 pl0"> | |
266 | - <div class="filebox"> | |
267 | - <input | |
268 | - class="upload-name full-input" | |
269 | - v-model="viewFiles" | |
270 | - placeholder="첨부파일이 없습니다." | |
271 | - readonly | |
272 | - /> | |
273 | - </div> | |
274 | - <div> | |
275 | - <div | |
276 | - v-for="(file, index) of fileList" | |
277 | - :key="index" | |
278 | - class="file-wrap flex justify-between align-center border pd10 mt10" | |
279 | - > | |
280 | - <p v-if="file['fileId'] != null"> | |
281 | - {{ file.fileNm }}.{{ file.extnNm }} | |
282 | - </p> | |
283 | - <p v-else>{{ file.name }}</p> | |
284 | - <button | |
285 | - class="icon-btn pd0" | |
286 | - @click="fnFileDelete(file, index)" | |
287 | - > | |
288 | - <svg-icon | |
289 | - type="mdi" | |
290 | - :width="15" | |
291 | - :height="15" | |
292 | - :path="path" | |
293 | - /> | |
294 | - </button> | |
295 | - </div> | |
296 | - </div> | |
297 | - </div> | |
298 | - <div class="gd-2 pr0"> | |
299 | - <label | |
300 | - for="file" | |
301 | - :class="{ | |
302 | - 'large-btn text-ct cursor': true, | |
303 | - 'blue-border-btn': pageRole == 'adm', | |
304 | - 'green-border-btn': pageRole == 'government', | |
305 | - }" | |
306 | - > | |
307 | - 파일찾기 | |
308 | - </label> | |
309 | - <input | |
310 | - type="file" | |
311 | - id="file" | |
312 | - ref="file" | |
313 | - @change="fnFileInsert" | |
314 | - multiple | |
315 | - style="display: none" | |
316 | - /> | |
317 | - </div> | |
318 | - </div> | |
319 | - </div> | |
320 | - </td> | |
321 | - </tr> | |
322 | - <tr> | |
323 | - <td> | |
324 | - <div class="gd-12 pl0"> | |
325 | - <label | |
326 | - for="" | |
327 | - :class="{ | |
328 | - mb10: true, | |
329 | - 'point-font2': pageRole == 'adm', | |
330 | - 'point-font': pageRole == 'government', | |
331 | - }" | |
332 | - > | |
333 | - 입주의향 | |
334 | - </label> | |
335 | - <div class="flex"> | |
336 | - <div class="gd-4 pl0 flex align-center"> | |
337 | - <input | |
338 | - class="mr5" | |
339 | - type="radio" | |
340 | - name="mvnInten" | |
341 | - id="mvnIntenTrue" | |
342 | - v-model="ivstDscsnVO['mvnInten']" | |
343 | - value="1" | |
344 | - /> | |
345 | - <label for="mvnIntenTrue">의향있음</label> | |
346 | - </div> | |
347 | - <div class="gd-4 pl0 flex align-center"> | |
348 | - <input | |
349 | - class="mr5" | |
350 | - type="radio" | |
351 | - name="mvnInten" | |
352 | - id="mvnIntenHalf" | |
353 | - v-model="ivstDscsnVO['mvnInten']" | |
354 | - value="2" | |
355 | - /> | |
356 | - <label for="mvnIntenHalf">검토중</label> | |
357 | - </div> | |
358 | - <div class="gd-4 pl0 flex align-center"> | |
359 | - <input | |
360 | - class="mr5" | |
361 | - type="radio" | |
362 | - name="mvnInten" | |
363 | - id="mvnIntenFalse" | |
364 | - v-model="ivstDscsnVO['mvnInten']" | |
365 | - value="0" | |
366 | - /> | |
367 | - <label for="mvnIntenFalse">의향없음</label> | |
368 | - </div> | |
369 | - </div> | |
370 | - </div> | |
371 | - </td> | |
372 | - <td> | |
373 | - <div class="gd-12 pr0"> | |
374 | - <label | |
375 | - for="" | |
376 | - :class="{ | |
377 | - mb10: true, | |
378 | - 'point-font2': pageRole == 'adm', | |
379 | - 'point-font': pageRole == 'government', | |
380 | - }" | |
381 | - > | |
382 | - MOU의향 | |
383 | - </label> | |
384 | - <div class="flex"> | |
385 | - <div class="gd-4 pl0 flex align-center"> | |
386 | - <input | |
387 | - class="mr5" | |
388 | - type="radio" | |
389 | - name="mouInten" | |
390 | - id="mouIntenTrue" | |
391 | - v-model="ivstDscsnVO['mouInten']" | |
392 | - value="1" | |
393 | - /> | |
394 | - <label for="mouIntenTrue">의향있음</label> | |
395 | - </div> | |
396 | - <div class="gd-4 pl0 flex align-center"> | |
397 | - <input | |
398 | - class="mr5" | |
399 | - type="radio" | |
400 | - name="mouInten" | |
401 | - id="mouIntenHalf" | |
402 | - v-model="ivstDscsnVO['mouInten']" | |
403 | - value="2" | |
404 | - /> | |
405 | - <label for="mouIntenHalf">검토중</label> | |
406 | - </div> | |
407 | - <div class="gd-4 pl0 flex align-center"> | |
408 | - <input | |
409 | - class="mr5" | |
410 | - type="radio" | |
411 | - name="mouInten" | |
412 | - id="mouIntenFalse" | |
413 | - v-model="ivstDscsnVO['mouInten']" | |
414 | - value="0" | |
415 | - /> | |
416 | - <label for="mouIntenFalse">의향없음</label> | |
417 | - </div> | |
418 | - </div> | |
419 | - </div> | |
420 | - </td> | |
421 | - </tr> | |
422 | - </table> | |
423 | - </div> | |
424 | - </details> | |
425 | - <div class="flex justify-end align-center no-gutters"> | |
426 | - <div class="gd-1 mr10"> | |
427 | - <button | |
428 | - :class="{ | |
429 | - 'large-btn': true, | |
430 | - 'blue-btn': pageRole == 'adm', | |
431 | - 'green-btn': pageRole == 'government', | |
432 | - }" | |
433 | - @click="fnUpsert" | |
434 | - > | |
435 | - {{ pageId == null ? "등록" : "수정" }} | |
436 | - </button> | |
437 | - </div> | |
438 | - <div class="gd-1"> | |
439 | - <button class="large-btn gray-btn" @click="fnPrev">취소</button> | |
440 | - </div> | |
441 | - </div> | |
442 | - <!-- 모달: 기업명 --> | |
443 | - <Modal :showModal="isOpen"> | |
444 | - <template v-slot:header> | |
445 | - <div | |
446 | - :class="{ | |
447 | - 'box-title': true, | |
448 | - 'point-font2': pageRole == 'adm', | |
449 | - 'point-font': pageRole == 'government', | |
450 | - }" | |
451 | - > | |
452 | - <p>기업명</p> | |
453 | - </div> | |
454 | - <button class="close-btn" @click="fnModalClose">X</button> | |
455 | - </template> | |
456 | - <!-- 검색 --> | |
457 | - <div class="search-bar mb15"> | |
458 | - <div class="flex"> | |
459 | - <div class="border gd-9 pl0"> | |
460 | - <input | |
461 | - type="text" | |
462 | - class="full-input border-none condition-input" | |
463 | - v-model="search['searchText']" | |
464 | - v-on:keyup.enter="fnModalViewList" | |
465 | - placeholder="검색어를 입력하세요." | |
466 | - /> | |
467 | - </div> | |
468 | - <div class="gd-3 pr0"> | |
469 | - <button | |
470 | - :class="{ | |
471 | - 'large-btn': true, | |
472 | - 'blue-border-btn': pageRole == 'adm', | |
473 | - 'green-border-btn': pageRole == 'government', | |
474 | - }" | |
475 | - @click="fnModalViewList" | |
476 | - > | |
477 | - 검색 | |
478 | - </button> | |
479 | - </div> | |
480 | - </div> | |
481 | - </div> | |
482 | - <!-- 목록 --> | |
483 | - <table class="form-table2 mb10"> | |
484 | - <colgroup> | |
485 | - <col width="60%" /> | |
486 | - <col width="35%" /> | |
487 | - </colgroup> | |
488 | - <thead> | |
489 | - <tr> | |
490 | - <th class="text-ct">제목</th> | |
491 | - <th class="text-ct">비고</th> | |
492 | - </tr> | |
493 | - </thead> | |
494 | - <tr v-for="(entInfo, index) of entInfolist" :key="index"> | |
495 | - <td>{{ entInfo.entNm }}</td> | |
496 | - <td> | |
497 | - <button | |
498 | - type="button" | |
499 | - :class="{ | |
500 | - 'large-btn': true, | |
501 | - 'blue-border-btn': pageRole == 'adm', | |
502 | - 'green-border-btn point-font': pageRole == 'government', | |
503 | - }" | |
504 | - @click="fnModalInsert(entInfo)" | |
505 | - > | |
506 | - 선택 | |
507 | - </button> | |
508 | - </td> | |
509 | - </tr> | |
510 | - </table> | |
511 | - <template v-slot:footer> | |
512 | - <div class="gd-2"></div> | |
513 | - <div class="gd-8"> | |
514 | - <PaginationButton | |
515 | - v-model:currentPage="search['currentPage']" | |
516 | - :pagination="search" | |
517 | - :click="fnModalViewList" | |
518 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
519 | - /> | |
520 | - </div> | |
521 | - <div class="gd-2"></div> | |
522 | - </template> | |
523 | - </Modal> | |
524 | - </div> | |
525 | - </div> | |
526 | -</template> | |
527 | - | |
528 | -<script> | |
529 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
530 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
531 | -import defaultFileSystem from "../../../../../../resources/js/defaultFileSystem"; | |
532 | -// COMPONENT | |
533 | -import Modal from "../../../../../component/modal/Modal.vue"; | |
534 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
535 | -// API | |
536 | -import { ivstDscsnDetailProc } from "../../../../../../resources/api/ivstDscsn"; | |
537 | -import { entInfoListProc } from "../../../../../../resources/api/entInfo"; | |
538 | - | |
539 | -export default { | |
540 | - mixins: [defaultFileSystem], | |
541 | - components: { | |
542 | - Modal: Modal, | |
543 | - PaginationButton: PaginationButton, | |
544 | - }, | |
545 | - data() { | |
546 | - return { | |
547 | - pageRole: this.$store.state.userType, // 유저 권한 | |
548 | - pageId: this.$route.query.pageId, // 페이지 아이디 | |
549 | - | |
550 | - ivstDscsnVO: {}, | |
551 | - | |
552 | - // 검색 정보 담는 객체 | |
553 | - search: { ...defaultSearchParams }, | |
554 | - | |
555 | - // 모달 객체 | |
556 | - isOpen: false, | |
557 | - entInfolist: [], | |
558 | - | |
559 | - dscsnOtln: { | |
560 | - select: null, | |
561 | - detail: null, | |
562 | - }, | |
563 | - }; | |
564 | - }, | |
565 | - created() { | |
566 | - this.fnViewDetail(); | |
567 | - }, | |
568 | - computed: { | |
569 | - routerPaths() { | |
570 | - return { | |
571 | - list: this.$store.state.path + "/list.page", | |
572 | - view: this.$store.state.path + "/view.page", | |
573 | - insert: this.$store.state.path + "/insert.page", | |
574 | - }; | |
575 | - }, | |
576 | - }, | |
577 | - methods: { | |
578 | - // axios: 투자상담 조회(상세) | |
579 | - async fnViewDetail() { | |
580 | - // 데이터 세팅 | |
581 | - const data = { ivstDscsnId: this.pageId }; | |
582 | - // 실행 | |
583 | - try { | |
584 | - const response = await ivstDscsnDetailProc(data); | |
585 | - this.ivstDscsnVO = response.data.data; | |
586 | - // 기업정보 기본값 추가 | |
587 | - if (this.ivstDscsnVO.ivstDscsnId == null) { | |
588 | - this.ivstDscsnVO.entId = this.$route.query.entId; | |
589 | - this.ivstDscsnVO.entNm = this.$route.query.entNm; | |
590 | - } | |
591 | - // 일시 기본값 추가 | |
592 | - let today = new Date().toISOString().substring(0, 10); | |
593 | - if (this.ivstDscsnVO.dt == null) { | |
594 | - this.ivstDscsnVO.dt = today; | |
595 | - } | |
596 | - // 상담요지 포멧 변경 | |
597 | - let dscsnOtln = this.ivstDscsnVO.dscsnOtln; | |
598 | - if ( | |
599 | - dscsnOtln != "" && | |
600 | - dscsnOtln != "투자협의" && | |
601 | - dscsnOtln != "건의사항" | |
602 | - ) { | |
603 | - this.dscsnOtln.select = "self"; | |
604 | - this.dscsnOtln.detail = this.ivstDscsnVO.dscsnOtln; | |
605 | - } else { | |
606 | - this.dscsnOtln.select = this.ivstDscsnVO.dscsnOtln; | |
607 | - } | |
608 | - this.fileList = response.data.data.fileList; | |
609 | - } catch (error) { | |
610 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
611 | - } | |
612 | - }, | |
613 | - | |
614 | - // 모달 열기 | |
615 | - fnModalOpen() { | |
616 | - this.isOpen = true; | |
617 | - this.fnModalViewList(); | |
618 | - }, | |
619 | - // axios: 모달 데이터 조회(기업정보) | |
620 | - async fnModalViewList() { | |
621 | - // 데이터 세팅 | |
622 | - let data = this.search; | |
623 | - // 실행 | |
624 | - try { | |
625 | - const response = await entInfoListProc(data); | |
626 | - this.entInfolist = response.data["data"]["list"]; | |
627 | - this.search = response.data["data"]["pagination"]; | |
628 | - } catch (error) { | |
629 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
630 | - } | |
631 | - }, | |
632 | - // 모달 선택 | |
633 | - fnModalInsert(data) { | |
634 | - // 객체 삽입 | |
635 | - this.ivstDscsnVO["entId"] = data["entId"]; | |
636 | - this.ivstDscsnVO["entNm"] = data["entNm"]; | |
637 | - // 모달 닫기 | |
638 | - this.fnModalClose(); | |
639 | - }, | |
640 | - // 모달 닫기 | |
641 | - fnModalClose() { | |
642 | - this.isOpen = false; | |
643 | - this.search = { ...defaultSearchParams }; | |
644 | - }, | |
645 | - | |
646 | - // 등록 및 수정 | |
647 | - fnUpsert() { | |
648 | - // 유효성 검사 | |
649 | - if (this.valiadtion() == false) { | |
650 | - return; | |
651 | - } | |
652 | - // 데이터 세팅 | |
653 | - let data = this.ivstDscsnVO; | |
654 | - // 상담요지 포멧 변경 | |
655 | - if (this.dscsnOtln.select == "self") { | |
656 | - data.dscsnOtln = this.dscsnOtln.detail; | |
657 | - } else { | |
658 | - data.dscsnOtln = this.dscsnOtln.select; | |
659 | - } | |
660 | - // 실행 | |
661 | - defaultAxios({ | |
662 | - url: | |
663 | - this.pageId == null | |
664 | - ? "/government/ivstDscsn/insertProc.file" | |
665 | - : "/government/ivstDscsn/updateProc.file", | |
666 | - method: "post", | |
667 | - headers: { | |
668 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
669 | - Authorization: this.$store.state.authorization, | |
670 | - }, | |
671 | - data: data, | |
672 | - }) | |
673 | - .then((response) => { | |
674 | - alert(response.data["message"]); | |
675 | - this.$router.push({ | |
676 | - path: this.routerPaths["view"], | |
677 | - query: { | |
678 | - pageId: | |
679 | - this.pageId == null | |
680 | - ? response.data.data.ivstDscsnId | |
681 | - : this.pageId, | |
682 | - }, | |
683 | - }); | |
684 | - }) | |
685 | - .catch((error) => { | |
686 | - const errorData = error.response.data; | |
687 | - if (errorData.message != null && errorData.message != "") { | |
688 | - alert(error.response.data.message); | |
689 | - } else { | |
690 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
691 | - } | |
692 | - }); | |
693 | - }, | |
694 | - // 유효성 검사 | |
695 | - valiadtion() { | |
696 | - if (this.ivstDscsnVO["ttl"] == null || this.ivstDscsnVO["ttl"] == "") { | |
697 | - alert("제목을 입력해주세요."); | |
698 | - this.$refs.ttl.focus(); | |
699 | - return false; | |
700 | - } | |
701 | - | |
702 | - if (this.ivstDscsnVO["dt"] == null || this.ivstDscsnVO["dt"] == "") { | |
703 | - alert("일시를 입력해주세요."); | |
704 | - this.$refs.dt.focus(); | |
705 | - return false; | |
706 | - } | |
707 | - | |
708 | - if (this.ivstDscsnVO["plc"] == null || this.ivstDscsnVO["plc"] == "") { | |
709 | - alert("장소를 입력해주세요."); | |
710 | - this.$refs.plc.focus(); | |
711 | - return false; | |
712 | - } | |
713 | - | |
714 | - if ( | |
715 | - this.ivstDscsnVO["entNm"] == null || | |
716 | - this.ivstDscsnVO["entNm"] == "" | |
717 | - ) { | |
718 | - alert("기업명을 입력해주세요."); | |
719 | - this.$refs.entNm.focus(); | |
720 | - return false; | |
721 | - } | |
722 | - | |
723 | - if ( | |
724 | - this.ivstDscsnVO["dscsnPbofc"] == null || | |
725 | - this.ivstDscsnVO["dscsnPbofc"] == "" | |
726 | - ) { | |
727 | - alert("상담공무원을 입력해주세요."); | |
728 | - this.$refs.dscsnPbofc.focus(); | |
729 | - return false; | |
730 | - } | |
731 | - | |
732 | - if (this.dscsnOtln.select == null || this.dscsnOtln.select == "") { | |
733 | - alert("상담요지를 선택해주세요."); | |
734 | - return false; | |
735 | - } | |
736 | - if (this.dscsnOtln.select == "self") { | |
737 | - if (this.dscsnOtln.detail == null || this.dscsnOtln.detail == "") { | |
738 | - alert("상담요지를 입력해주세요."); | |
739 | - this.$refs.detail.focus(); | |
740 | - return false; | |
741 | - } | |
742 | - } | |
743 | - | |
744 | - return true; | |
745 | - }, | |
746 | - | |
747 | - // 첨부파일 등록 | |
748 | - fnFileInsert() { | |
749 | - this.files = this.$refs.file.files; | |
750 | - this.fileList = [...this.fileList, ...Array.from(this.files)]; | |
751 | - this.ivstDscsnVO.insertFileList = [ | |
752 | - ...this.ivstDscsnVO.insertFileList, | |
753 | - ...Array.from(this.files), | |
754 | - ]; | |
755 | - this.$refs.file.value = ""; | |
756 | - }, | |
757 | - // 첨부파일 삭제 | |
758 | - fnFileDelete(file, index) { | |
759 | - if (file["fileId"] != null) { | |
760 | - this.ivstDscsnVO.deleteFileList.push(file); | |
761 | - } | |
762 | - this.fileList.splice(index, 1); | |
763 | - this.ivstDscsnVO.insertFileList.splice(index, 1); | |
764 | - }, | |
765 | - | |
766 | - // 취소 | |
767 | - fnPrev() { | |
768 | - let isCheck = confirm("작성을 취소하시겠습니까?"); | |
769 | - if (!isCheck) { | |
770 | - return; | |
771 | - } | |
772 | - if (this.pageId != null) { | |
773 | - this.$router.push({ | |
774 | - path: this.routerPaths["view"], | |
775 | - query: { pageId: this.pageId }, | |
776 | - }); | |
777 | - } else { | |
778 | - this.$router.push({ | |
779 | - path: this.routerPaths["list"], | |
780 | - }); | |
781 | - } | |
782 | - }, | |
783 | - | |
784 | - // 상담요지 변경 | |
785 | - fnChangeSelect() { | |
786 | - this.dscsnOtln.detail = null; | |
787 | - }, | |
788 | - }, | |
789 | -}; | |
790 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInvest/CompanyInvestSelectList.vue
... | ... | @@ -1,213 +0,0 @@ |
1 | -<template> | |
2 | - <div :class="{ 'content pt50 pb50': pageRole == 'government' }"> | |
3 | - <div :class="{ content: true, 'w1400 ': pageRole == 'government' }"> | |
4 | - <div | |
5 | - :class="{ | |
6 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
7 | - 'page-title point-font mb30': pageRole == 'government', | |
8 | - }" | |
9 | - > | |
10 | - <p>투자상담</p> | |
11 | - </div> | |
12 | - <div class="search-bar pd30 mb15 radius" style="background-color: #f8f8f8"> | |
13 | - <div class="flex"> | |
14 | - <div class="gd-2 pd0"> | |
15 | - <select | |
16 | - class="full-select border-none" | |
17 | - v-model="search['mvnInten']" | |
18 | - > | |
19 | - <option value="">입주의향(전체)</option> | |
20 | - <option value="0">없음</option> | |
21 | - <option value="1">있음</option> | |
22 | - <option value="2">검토중</option> | |
23 | - </select> | |
24 | - </div> | |
25 | - <div class="gd-2 pr0"> | |
26 | - <select | |
27 | - class="full-select border-none" | |
28 | - v-model="search['mouInten']" | |
29 | - > | |
30 | - <option value="">MOU의향(전체)</option> | |
31 | - <option value="0">없음</option> | |
32 | - <option value="1">있음</option> | |
33 | - <option value="2">검토중</option> | |
34 | - </select> | |
35 | - </div> | |
36 | - <div class="flex gd-8 pd0"> | |
37 | - <div class="gd-9 flex pr0"> | |
38 | - <div class="gd-3 pr0"> | |
39 | - <select | |
40 | - class="border-none full-select" | |
41 | - v-model="search['searchType']" | |
42 | - > | |
43 | - <option value="">전체</option> | |
44 | - <option value="ent_nm">기업명</option> | |
45 | - <option value="rprsv_nm">대표자</option> | |
46 | - </select> | |
47 | - </div> | |
48 | - <div class="gd-9 pr0"> | |
49 | - <input | |
50 | - type="text" | |
51 | - class="border-none full-input" | |
52 | - v-model="search['searchText']" | |
53 | - v-on:keyup.enter="fnViewList" | |
54 | - /> | |
55 | - </div> | |
56 | - </div> | |
57 | - <div class="flex gd-3 pd0"> | |
58 | - <div class="gd-6 pr0"> | |
59 | - <button | |
60 | - :class="{ | |
61 | - 'large-btn': true, | |
62 | - 'blue-border-btn': pageRole == 'adm', | |
63 | - 'green-border-btn': pageRole == 'government', | |
64 | - }" | |
65 | - @click="fnViewList" | |
66 | - > | |
67 | - 검색 | |
68 | - </button> | |
69 | - </div> | |
70 | - <div class="gd-6 pr0"> | |
71 | - <button | |
72 | - class="large-btn darkg-border-btn" | |
73 | - @click="fnSearchReset" | |
74 | - > | |
75 | - <svg-icon type="mdi" :path="refreshPath" /> | |
76 | - 초기화 | |
77 | - </button> | |
78 | - </div> | |
79 | - </div> | |
80 | - </div> | |
81 | - </div> | |
82 | - </div> | |
83 | - <ListTable | |
84 | - :colgroup="colgroup" | |
85 | - :thead="thead" | |
86 | - :tbody="tbody" | |
87 | - :className="pageRole == 'adm' ? 'admin-list cmmn-table2' : 'cmmn-table2'" | |
88 | - @listClick="fnViewDetail" | |
89 | - /> | |
90 | - <div class="flex justify-between align-center no-gutters"> | |
91 | - <div class="gd-2"></div> | |
92 | - <div class="gd-8"> | |
93 | - <PaginationButton | |
94 | - v-model:currentPage="search['currentPage']" | |
95 | - :pagination="search" | |
96 | - :click="fnViewList" | |
97 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
98 | - /> | |
99 | - </div> | |
100 | - <div class="gd-1"> | |
101 | - <button | |
102 | - v-if="pageRole == 'adm' && pageAuth.regAuthrt == 'Y'" | |
103 | - class="large-btn blue-btn" | |
104 | - @click="fnInsert" | |
105 | - > | |
106 | - 등록 | |
107 | - </button> | |
108 | - </div> | |
109 | - </div> | |
110 | - </div> | |
111 | - </div> | |
112 | -</template> | |
113 | - | |
114 | -<script> | |
115 | -import ListTable from "../../../../../component/table/ListTable.vue"; | |
116 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
117 | -import { toRaw } from "vue"; | |
118 | -import queryParams from "../../../../../../resources/js/queryParams"; | |
119 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
120 | -import { mdiRefresh } from "@mdi/js"; | |
121 | - | |
122 | -// api | |
123 | -import { ivstDscsnListProc } from "../../../../../../resources/api/ivstDscsn"; | |
124 | - | |
125 | -export default { | |
126 | - mixins: [queryParams], | |
127 | - components: { | |
128 | - ListTable: ListTable, | |
129 | - PaginationButton: PaginationButton, | |
130 | - }, | |
131 | - data() { | |
132 | - return { | |
133 | - // 페이지 권한 | |
134 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, | |
135 | - // 유저 권한 | |
136 | - pageRole: this.$store.state.userType, | |
137 | - | |
138 | - colgroup: ["5%", "20%", "50%", "15%"], | |
139 | - thead: ["NO", "기업명", "제목", "등록일"], | |
140 | - tbody: [], | |
141 | - search: { ...defaultSearchParams }, | |
142 | - list: [], | |
143 | - | |
144 | - refreshPath: mdiRefresh, | |
145 | - }; | |
146 | - }, | |
147 | - created() { | |
148 | - this.resotreQueryParams("queryParams"); | |
149 | - this.fnViewList(); | |
150 | - }, | |
151 | - computed: { | |
152 | - routerPaths() { | |
153 | - return { | |
154 | - list: this.$store.state.path + "/list.page", | |
155 | - view: this.$store.state.path + "/view.page", | |
156 | - insert: this.$store.state.path + "/insert.page", | |
157 | - }; | |
158 | - }, | |
159 | - }, | |
160 | - methods: { | |
161 | - // axios: 조회(목록) | |
162 | - async fnViewList() { | |
163 | - // 데이터 세팅 | |
164 | - const data = this.search; | |
165 | - this.saveQueryParams("queryParams", this.search); // 검색조건 저장 | |
166 | - // 실행 | |
167 | - try { | |
168 | - const response = await ivstDscsnListProc(toRaw(data)); | |
169 | - this.list = response.data["data"]["list"]; | |
170 | - this.search = response.data["data"]["pagination"]; | |
171 | - this.makeTbody(); | |
172 | - } catch (error) { | |
173 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
174 | - } | |
175 | - }, | |
176 | - | |
177 | - // 등록 | |
178 | - fnInsert() { | |
179 | - this.$router.push({ | |
180 | - path: this.routerPaths["insert"], | |
181 | - }); | |
182 | - }, | |
183 | - | |
184 | - // 조회(상세) | |
185 | - fnViewDetail(idx) { | |
186 | - this.$router.push({ | |
187 | - path: this.routerPaths["view"], | |
188 | - query: { pageId: this.list[idx]["ivstDscsnId"] }, | |
189 | - }); | |
190 | - }, | |
191 | - | |
192 | - // tbody 생성 | |
193 | - makeTbody() { | |
194 | - this.tbody = []; | |
195 | - this.tbody = this.list.map((ivstDscsn, idx) => ({ | |
196 | - id: | |
197 | - this.search.totalRecordCount - | |
198 | - idx - | |
199 | - (this.search.currentPage - 1) * this.search.recordSize, | |
200 | - entNm: ivstDscsn.entNm, | |
201 | - ttl: ivstDscsn.ttl, | |
202 | - regDt: ivstDscsn.regDt, | |
203 | - })); | |
204 | - }, | |
205 | - | |
206 | - // 검색 초기화 | |
207 | - fnSearchReset() { | |
208 | - this.search = { ...defaultSearchParams }; | |
209 | - this.fnViewList(); | |
210 | - }, | |
211 | - }, | |
212 | -}; | |
213 | -</script> |
--- client/views/pages/user/government/companyInfo/companyInvest/CompanyInvestSelectListOne.vue
... | ... | @@ -1,218 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>투자상담</p> | |
21 | - </div> | |
22 | - | |
23 | - <!-- 투자상담 --> | |
24 | - <IvstDscsnDetail | |
25 | - :pageId="pageId" | |
26 | - :pageAuth="pageAuth" | |
27 | - :pageRole="pageRole" | |
28 | - @fnSaveVO="fnSaveVO" | |
29 | - /> | |
30 | - | |
31 | - <div class="flex justify-between align-center no-gutters"> | |
32 | - <div class="gd-6"> | |
33 | - <div v-if="pageAuth.fileDwnldAuthrt == 'Y'" class="gd-3 pl0"> | |
34 | - <button | |
35 | - :class="{ | |
36 | - 'large-btn': true, | |
37 | - 'blue-border-btn': pageRole == 'adm', | |
38 | - 'green-border-btn': pageRole == 'government', | |
39 | - }" | |
40 | - @click="fnDownload" | |
41 | - > | |
42 | - 다운로드 | |
43 | - </button> | |
44 | - </div> | |
45 | - </div> | |
46 | - <div class="flex justify-end gd-6 no-gutters"> | |
47 | - <div class="gd-2 ml10"> | |
48 | - <button class="large-btn gray-border-btn" @click="fnPrev"> | |
49 | - 목록 | |
50 | - </button> | |
51 | - </div> | |
52 | - <div v-if="pageAuth.mdfcnAuthrt == 'Y'" class="gd-2 ml10"> | |
53 | - <button | |
54 | - :class="{ | |
55 | - 'large-btn': true, | |
56 | - 'blue-border-btn': pageRole == 'adm', | |
57 | - 'green-border-btn': pageRole == 'government', | |
58 | - }" | |
59 | - @click="fnUpdate" | |
60 | - > | |
61 | - 수정 | |
62 | - </button> | |
63 | - </div> | |
64 | - <div v-if="pageAuth.delAuthrt == 'Y'" class="gd-2 ml10"> | |
65 | - <button class="large-btn red-border-btn" @click="fnDelete"> | |
66 | - 삭제 | |
67 | - </button> | |
68 | - </div> | |
69 | - </div> | |
70 | - </div> | |
71 | - </div> | |
72 | - </div> | |
73 | -</template> | |
74 | - | |
75 | -<script> | |
76 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
77 | -import IvstDscsnDetail from "../../../../../component/companyInfo/IvstDscsnDetail.vue"; | |
78 | - | |
79 | -// api | |
80 | -import { ivstDscsnDeleteProc } from "../../../../../../resources/api/ivstDscsn"; | |
81 | - | |
82 | -export default { | |
83 | - components: { | |
84 | - IvstDscsnDetail: IvstDscsnDetail, | |
85 | - }, | |
86 | - data() { | |
87 | - return { | |
88 | - pageId: this.$route.query.pageId, // 페이지 아이디 | |
89 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
90 | - pageRole: this.$store.state.userType, // 유저 권한 | |
91 | - | |
92 | - colgroup: ["5%", "10%", "15%", "40%", "15%", "15%"], | |
93 | - thead: ["NO", "형태", "기업명", "투자상담명", "진행단계", "등록일"], | |
94 | - tbody: [], | |
95 | - ivstDscsnVO: {}, | |
96 | - }; | |
97 | - }, | |
98 | - computed: { | |
99 | - routerPaths() { | |
100 | - return { | |
101 | - list: this.$store.state.path + "/list.page", | |
102 | - view: this.$store.state.path + "/view.page", | |
103 | - insert: this.$store.state.path + "/insert.page", | |
104 | - }; | |
105 | - }, | |
106 | - }, | |
107 | - methods: { | |
108 | - // 투자상담 객체 저장 | |
109 | - fnSaveVO(data) { | |
110 | - this.ivstDscsnVO = data; | |
111 | - }, | |
112 | - // 다운로드 | |
113 | - fnDownload() { | |
114 | - const vm = this; | |
115 | - // 데이터 세팅 | |
116 | - let data = { | |
117 | - dscsnOtln: this.ivstDscsnVO.dscsnOtln, | |
118 | - ttl: this.ivstDscsnVO.ttl, | |
119 | - dt: this.ivstDscsnVO.dt, | |
120 | - plc: this.ivstDscsnVO.plc, | |
121 | - entNm: this.ivstDscsnVO.entNm, | |
122 | - prtpnt: this.ivstDscsnVO.prtpnt, | |
123 | - dscsnPbofc: this.ivstDscsnVO.dscsnPbofc, | |
124 | - mainCn: this.ivstDscsnVO.mainCn, | |
125 | - mvnInten: this.fnChangeInten(this.ivstDscsnVO.mvnInten), | |
126 | - mouInten: this.fnChangeInten(this.ivstDscsnVO.mouInten), | |
127 | - }; | |
128 | - // 실행 | |
129 | - defaultAxios({ | |
130 | - url: "/government/ivstDscsn/excelDownload.json", | |
131 | - method: "post", | |
132 | - headers: { | |
133 | - "Content-Type": "application/json; charset=UTF-8", | |
134 | - Authorization: vm.$store.state.authorization, | |
135 | - }, | |
136 | - data: data, | |
137 | - responseType: "blob", | |
138 | - }) | |
139 | - .then((response) => { | |
140 | - const url = window.URL.createObjectURL( | |
141 | - new Blob([response.data], { | |
142 | - type: response.headers["content-type"], | |
143 | - }) | |
144 | - ); | |
145 | - const link = document.createElement("a"); | |
146 | - link.href = url; | |
147 | - link.setAttribute( | |
148 | - "download", | |
149 | - `[투자상담]${vm.ivstDscsnVO["ttl"]}.xlsx` | |
150 | - ); | |
151 | - document.body.appendChild(link); | |
152 | - link.click(); | |
153 | - document.body.removeChild(link); | |
154 | - window.URL.revokeObjectURL(url); | |
155 | - }) | |
156 | - .catch((error) => { | |
157 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
158 | - }); | |
159 | - }, | |
160 | - // 의향 표기 변경 | |
161 | - fnChangeInten(inten) { | |
162 | - let result = null; | |
163 | - switch (inten) { | |
164 | - case "0": | |
165 | - result = "의향없음"; | |
166 | - break; | |
167 | - case "1": | |
168 | - result = "의향있음"; | |
169 | - break; | |
170 | - case "2": | |
171 | - result = "검토중"; | |
172 | - break; | |
173 | - } | |
174 | - return result; | |
175 | - }, | |
176 | - | |
177 | - // 수정 | |
178 | - fnUpdate() { | |
179 | - this.$router.push({ | |
180 | - path: this.routerPaths["insert"], | |
181 | - query: { pageId: this.pageId }, | |
182 | - }); | |
183 | - }, | |
184 | - | |
185 | - // 목록 | |
186 | - fnPrev() { | |
187 | - this.$router.push({ | |
188 | - path: this.routerPaths["list"], | |
189 | - }); | |
190 | - }, | |
191 | - | |
192 | - // axios: 삭제 | |
193 | - async fnDelete() { | |
194 | - var isDelete = confirm("해당 투자상담을 삭제하시겠습니까?"); | |
195 | - if (!isDelete) { | |
196 | - return; | |
197 | - } | |
198 | - // 데이터 세팅 | |
199 | - const data = { | |
200 | - ivstDscsnId: this.pageId, | |
201 | - }; | |
202 | - // 실행 | |
203 | - try { | |
204 | - const response = await ivstDscsnDeleteProc(data); | |
205 | - alert(response.data["message"]); | |
206 | - this.fnPrev(); | |
207 | - } catch (error) { | |
208 | - const errorData = error.response.data; | |
209 | - if (errorData.message != null && errorData.message != "") { | |
210 | - alert(error.response.data.message); | |
211 | - } else { | |
212 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
213 | - } | |
214 | - } | |
215 | - }, | |
216 | - }, | |
217 | -}; | |
218 | -</script> |
--- client/views/pages/user/government/companyInfo/companyReview/CompanyReviewInsert.vue
... | ... | @@ -1,901 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>검토사항</p> | |
21 | - </div> | |
22 | - <details open class="form-table-style mb30"> | |
23 | - <summary | |
24 | - :class="{ | |
25 | - 'point-font2': pageRole == 'adm', | |
26 | - 'point-font': pageRole == 'government', | |
27 | - }" | |
28 | - > | |
29 | - <p class="summary-style pl10">기본정보</p> | |
30 | - </summary> | |
31 | - <div class="pt10 pb10"> | |
32 | - <table class="form-table"> | |
33 | - <colgroup> | |
34 | - <col width="50%" /> | |
35 | - <col width="50%" /> | |
36 | - </colgroup> | |
37 | - <tr> | |
38 | - <td> | |
39 | - <div class="gd-12 pl0"> | |
40 | - <label | |
41 | - for="" | |
42 | - :class="{ | |
43 | - 'form-title mb10': true, | |
44 | - 'point-font2': pageRole == 'adm', | |
45 | - 'point-font': pageRole == 'government', | |
46 | - }" | |
47 | - > | |
48 | - 투자상담명 | |
49 | - </label> | |
50 | - <div class="flex align-center no-gutters"> | |
51 | - <div class="gd-9 mr10"> | |
52 | - <input | |
53 | - type="text" | |
54 | - class="full-input" | |
55 | - ref="ttl" | |
56 | - v-model="rvwMttrVO['ttl']" | |
57 | - placeholder="투자상담명을 선택하세요." | |
58 | - readonly | |
59 | - /> | |
60 | - </div> | |
61 | - <div class="gd-2"> | |
62 | - <button | |
63 | - :class="{ | |
64 | - 'large-btn': true, | |
65 | - 'blue-border-btn': pageRole == 'adm', | |
66 | - 'green-border-btn': pageRole == 'government', | |
67 | - }" | |
68 | - @click="fnModalOpen('투자상담명')" | |
69 | - > | |
70 | - 찾기 | |
71 | - </button> | |
72 | - </div> | |
73 | - </div> | |
74 | - </div> | |
75 | - </td> | |
76 | - <td> | |
77 | - <div class="gd-12 pr0"> | |
78 | - <label | |
79 | - for="ttl" | |
80 | - :class="{ | |
81 | - 'form-title mb10': true, | |
82 | - 'point-font2': pageRole == 'adm', | |
83 | - 'point-font': pageRole == 'government', | |
84 | - }" | |
85 | - > | |
86 | - 유형 | |
87 | - </label> | |
88 | - <div class="flex align-center"> | |
89 | - <div class="gd-6 pl0"> | |
90 | - <select | |
91 | - class="full-input" | |
92 | - v-model="dscsnOtln.select" | |
93 | - @change="fnChangeSelect" | |
94 | - > | |
95 | - <option value="">유형을 선택하세요.</option> | |
96 | - <option value="투자협의">투자협의</option> | |
97 | - <option value="건의사항">건의사항</option> | |
98 | - <option value="self">직접입력</option> | |
99 | - </select> | |
100 | - </div> | |
101 | - <div class="gd-6 pr0" v-show="dscsnOtln.select == 'self'"> | |
102 | - <input | |
103 | - type="text" | |
104 | - class="full-input" | |
105 | - ref="detail" | |
106 | - v-model="dscsnOtln.detail" | |
107 | - placeholder="유형을 직접 입력하세요." | |
108 | - /> | |
109 | - </div> | |
110 | - </div> | |
111 | - </div> | |
112 | - </td> | |
113 | - </tr> | |
114 | - <tr> | |
115 | - <td> | |
116 | - <div class="gd-12 pl0"> | |
117 | - <label | |
118 | - for="" | |
119 | - :class="{ | |
120 | - 'form-title mb10': true, | |
121 | - 'point-font2': pageRole == 'adm', | |
122 | - 'point-font': pageRole == 'government', | |
123 | - }" | |
124 | - > | |
125 | - 접수자 | |
126 | - </label> | |
127 | - <div class="flex align-center no-gutters"> | |
128 | - <div class="gd-9 mr10"> | |
129 | - <input | |
130 | - type="text" | |
131 | - class="full-input" | |
132 | - ref="clr" | |
133 | - v-model="rvwMttrVO['clrNm']" | |
134 | - placeholder="접수자를 선택하세요." | |
135 | - readonly | |
136 | - /> | |
137 | - </div> | |
138 | - <div class="gd-2"> | |
139 | - <button | |
140 | - :class="{ | |
141 | - 'large-btn': true, | |
142 | - 'blue-border-btn': pageRole == 'adm', | |
143 | - 'green-border-btn': pageRole == 'government', | |
144 | - }" | |
145 | - @click="fnModalOpen('접수자')" | |
146 | - > | |
147 | - 찾기 | |
148 | - </button> | |
149 | - </div> | |
150 | - </div> | |
151 | - </div> | |
152 | - </td> | |
153 | - <td> | |
154 | - <div class="gd-12 pr0"> | |
155 | - <label | |
156 | - for="" | |
157 | - :class="{ | |
158 | - 'form-title mb10': true, | |
159 | - 'point-font2': pageRole == 'adm', | |
160 | - 'point-font': pageRole == 'government', | |
161 | - }" | |
162 | - > | |
163 | - 접수일자 | |
164 | - </label> | |
165 | - <input | |
166 | - type="date" | |
167 | - class="half-input" | |
168 | - style="display: block" | |
169 | - ref="rcptDt" | |
170 | - v-model="rvwMttrVO['rcptDt']" | |
171 | - /> | |
172 | - </div> | |
173 | - </td> | |
174 | - </tr> | |
175 | - <tr> | |
176 | - <td colspan="2"> | |
177 | - <div class="gd-12 pl0"> | |
178 | - <label | |
179 | - for="" | |
180 | - :class="{ | |
181 | - 'form-title mb10': true, | |
182 | - 'point-font2': pageRole == 'adm', | |
183 | - 'point-font': pageRole == 'government', | |
184 | - }" | |
185 | - > | |
186 | - 접수내용 | |
187 | - </label> | |
188 | - <textarea | |
189 | - class="content" | |
190 | - ref="rcptCn" | |
191 | - v-model="rvwMttrVO['rcptCn']" | |
192 | - placeholder="접수내용을 입력하세요." | |
193 | - ></textarea> | |
194 | - </div> | |
195 | - </td> | |
196 | - </tr> | |
197 | - <tr> | |
198 | - <td colspan="2"> | |
199 | - <div class="gd-12 pl0 pr0"> | |
200 | - <label | |
201 | - :class="{ | |
202 | - mb10: true, | |
203 | - 'point-font2': pageRole == 'adm', | |
204 | - 'point-font': pageRole == 'government', | |
205 | - }" | |
206 | - > | |
207 | - 첨부파일 | |
208 | - </label> | |
209 | - <div class="flex"> | |
210 | - <div class="gd-10 pl0"> | |
211 | - <div class="filebox"> | |
212 | - <input | |
213 | - class="upload-name full-input" | |
214 | - v-model="viewFiles" | |
215 | - placeholder="첨부파일이 없습니다." | |
216 | - readonly | |
217 | - /> | |
218 | - </div> | |
219 | - <div> | |
220 | - <div | |
221 | - v-for="(file, index) of fileList" | |
222 | - :key="index" | |
223 | - class="file-wrap flex justify-between align-center border pd10 mt10" | |
224 | - > | |
225 | - <p v-if="file['fileId'] != null"> | |
226 | - {{ file.fileNm }}.{{ file.extnNm }} | |
227 | - </p> | |
228 | - <p v-else>{{ file.name }}</p> | |
229 | - <button | |
230 | - class="icon-btn pd0" | |
231 | - @click="fnFileDelete(file, index)" | |
232 | - > | |
233 | - <svg-icon | |
234 | - type="mdi" | |
235 | - :width="15" | |
236 | - :height="15" | |
237 | - :path="path" | |
238 | - /> | |
239 | - </button> | |
240 | - </div> | |
241 | - </div> | |
242 | - </div> | |
243 | - <div class="gd-2 pr0"> | |
244 | - <label | |
245 | - for="file" | |
246 | - :class="{ | |
247 | - 'large-btn text-ct cursor': true, | |
248 | - 'blue-border-btn': pageRole == 'adm', | |
249 | - 'green-border-btn': pageRole == 'government', | |
250 | - }" | |
251 | - > | |
252 | - 파일찾기 | |
253 | - </label> | |
254 | - <input | |
255 | - type="file" | |
256 | - id="file" | |
257 | - ref="file" | |
258 | - @change="fnFileInsert" | |
259 | - multiple | |
260 | - style="display: none" | |
261 | - /> | |
262 | - </div> | |
263 | - </div> | |
264 | - </div> | |
265 | - </td> | |
266 | - </tr> | |
267 | - </table> | |
268 | - </div> | |
269 | - </details> | |
270 | - <details open class="form-table-style mb30"> | |
271 | - <summary | |
272 | - :class="{ | |
273 | - 'point-font2': pageRole == 'adm', | |
274 | - 'point-font': pageRole == 'government', | |
275 | - }" | |
276 | - > | |
277 | - <div class="flex justify-between align-center no-gutters"> | |
278 | - <p class="summary-style pl10">진행단계 및 지원방안</p> | |
279 | - <div class="gd-1" v-if="isActive"> | |
280 | - <button | |
281 | - :class="{ | |
282 | - 'large-btn': true, | |
283 | - 'blue-border-btn': pageRole == 'adm', | |
284 | - 'green-border-btn': pageRole == 'government', | |
285 | - }" | |
286 | - @click="fnTableAdd" | |
287 | - > | |
288 | - 추가 | |
289 | - </button> | |
290 | - </div> | |
291 | - </div> | |
292 | - </summary> | |
293 | - <div class="pt10 pb10"> | |
294 | - <div v-for="(prgrs, index) of rvwMttrVO.prgrsList" :key="index"> | |
295 | - <table class="form-table"> | |
296 | - <colgroup> | |
297 | - <col width="50%" /> | |
298 | - <col width="50%" /> | |
299 | - </colgroup> | |
300 | - <tr> | |
301 | - <td> | |
302 | - <div class="gd-12 pl0"> | |
303 | - <label for="" class="point-font mb10">담당자</label> | |
304 | - <div class="flex align-center no-gutters"> | |
305 | - <div class="gd-9 mr10"> | |
306 | - <input | |
307 | - type="text" | |
308 | - class="full-input" | |
309 | - ref="picId" | |
310 | - v-model="prgrs['picNm']" | |
311 | - placeholder="담당자를 선택하세요." | |
312 | - readonly | |
313 | - /> | |
314 | - </div> | |
315 | - <div class="gd-2"> | |
316 | - <button | |
317 | - :class="{ | |
318 | - 'large-btn': true, | |
319 | - 'blue-border-btn': pageRole == 'adm', | |
320 | - 'green-border-btn': pageRole == 'government', | |
321 | - }" | |
322 | - @click="fnModalOpen('담당자', index)" | |
323 | - > | |
324 | - 찾기 | |
325 | - </button> | |
326 | - </div> | |
327 | - </div> | |
328 | - </div> | |
329 | - </td> | |
330 | - <td> | |
331 | - <div class="gd-12 pr0"> | |
332 | - <label for="" class="point-font mb10">진행단계</label> | |
333 | - <select | |
334 | - class="full-select" | |
335 | - ref="prgrsCrs" | |
336 | - v-model="prgrs['prgrsCrs']" | |
337 | - @change="fnChangePrgrsCrs()" | |
338 | - > | |
339 | - <option value="">진행단계를 선택하세요.</option> | |
340 | - <option value="0">접수전</option> | |
341 | - <option value="1">처리중</option> | |
342 | - <option value="2">완료</option> | |
343 | - </select> | |
344 | - </div> | |
345 | - </td> | |
346 | - </tr> | |
347 | - <tr> | |
348 | - <td colspan="2"> | |
349 | - <div class="gd-12 pl0"> | |
350 | - <label for="" class="point-font mb10">진행날짜</label> | |
351 | - <input | |
352 | - type="date" | |
353 | - class="half-input" | |
354 | - style="display: block" | |
355 | - ref="prgrsDt" | |
356 | - v-model="prgrs['prgrsDt']" | |
357 | - /> | |
358 | - </div> | |
359 | - </td> | |
360 | - </tr> | |
361 | - <tr> | |
362 | - <td colspan="2"> | |
363 | - <div class="gd-12 pl0"> | |
364 | - <label for="" class="point-font mb10">지원방향</label> | |
365 | - <textarea | |
366 | - class="content" | |
367 | - ref="sprtMthd" | |
368 | - v-model="prgrs['sprtMthd']" | |
369 | - placeholder="지원방향을 입력하세요." | |
370 | - ></textarea> | |
371 | - </div> | |
372 | - </td> | |
373 | - </tr> | |
374 | - </table> | |
375 | - <div class="flex justify-end align-center no-gutters"> | |
376 | - <div class="gd-1" v-show="index != 0"> | |
377 | - <button | |
378 | - class="large-btn red-border-btn" | |
379 | - @click="fnTableDelete(index)" | |
380 | - > | |
381 | - 삭제 | |
382 | - </button> | |
383 | - </div> | |
384 | - </div> | |
385 | - </div> | |
386 | - </div> | |
387 | - </details> | |
388 | - <div class="flex justify-end align-center no-gutters"> | |
389 | - <div class="gd-1 mr10"> | |
390 | - <button | |
391 | - :class="{ | |
392 | - 'large-btn': true, | |
393 | - 'blue-btn': pageRole == 'adm', | |
394 | - 'green-btn': pageRole == 'government', | |
395 | - }" | |
396 | - @click="fnUpsert" | |
397 | - > | |
398 | - {{ pageId == null ? "등록" : "수정" }} | |
399 | - </button> | |
400 | - </div> | |
401 | - <div class="gd-1"> | |
402 | - <button class="large-btn gray-btn" @click="fnPrev">취소</button> | |
403 | - </div> | |
404 | - </div> | |
405 | - <!-- 모달: 찾기 --> | |
406 | - <Modal :showModal="isOpen"> | |
407 | - <template v-slot:header> | |
408 | - <div | |
409 | - :class="{ | |
410 | - 'box-title': true, | |
411 | - 'point-font2': pageRole == 'adm', | |
412 | - 'point-font': pageRole == 'government', | |
413 | - }" | |
414 | - > | |
415 | - <p>{{ modal["title"] }}</p> | |
416 | - </div> | |
417 | - <button class="close-btn" @click="fnModalClose">X</button> | |
418 | - </template> | |
419 | - <!-- 검색 --> | |
420 | - <div class="search-bar mb15"> | |
421 | - <div class="flex"> | |
422 | - <div class="border gd-9 pl0"> | |
423 | - <input | |
424 | - type="text" | |
425 | - class="full-input border-none condition-input" | |
426 | - v-model="search['searchText']" | |
427 | - v-on:keyup.enter="fnModalViewList" | |
428 | - placeholder="검색어를 입력하세요." | |
429 | - /> | |
430 | - </div> | |
431 | - <div class="gd-3 pr0"> | |
432 | - <button | |
433 | - :class="{ | |
434 | - 'large-btn': true, | |
435 | - 'blue-border-btn': pageRole == 'adm', | |
436 | - 'green-border-btn': pageRole == 'government', | |
437 | - }" | |
438 | - @click="fnModalViewList" | |
439 | - > | |
440 | - 검색 | |
441 | - </button> | |
442 | - </div> | |
443 | - </div> | |
444 | - </div> | |
445 | - <!-- 목록 --> | |
446 | - <table class="form-table2 mb10"> | |
447 | - <colgroup> | |
448 | - <col width="60%" /> | |
449 | - <col width="40%" /> | |
450 | - </colgroup> | |
451 | - <thead> | |
452 | - <tr> | |
453 | - <th class="text-ct">내용</th> | |
454 | - <th class="text-ct">비고</th> | |
455 | - </tr> | |
456 | - </thead> | |
457 | - <tr v-for="(item, index) of modal['list']" :key="index"> | |
458 | - <td>{{ item["name"] }}</td> | |
459 | - <td> | |
460 | - <button | |
461 | - type="button" | |
462 | - :class="{ | |
463 | - 'large-btn': true, | |
464 | - 'blue-border-btn': pageRole == 'adm', | |
465 | - 'green-border-btn point-font': pageRole == 'government', | |
466 | - }" | |
467 | - @click="fnModalInsert(item)" | |
468 | - > | |
469 | - 선택 | |
470 | - </button> | |
471 | - </td> | |
472 | - </tr> | |
473 | - </table> | |
474 | - <template v-slot:footer> | |
475 | - <div class="gd-2"></div> | |
476 | - <div class="gd-8"> | |
477 | - <PaginationButton | |
478 | - v-model:currentPage="search['currentPage']" | |
479 | - :pagination="search" | |
480 | - :click="fnModalViewList" | |
481 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
482 | - /> | |
483 | - </div> | |
484 | - <div class="gd-2"></div> | |
485 | - </template> | |
486 | - </Modal> | |
487 | - </div> | |
488 | - </div> | |
489 | -</template> | |
490 | - | |
491 | -<script> | |
492 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
493 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
494 | -import defaultFileSystem from "../../../../../../resources/js/defaultFileSystem"; | |
495 | -// COMPONENT | |
496 | -import Modal from "../../../../../component/modal/Modal.vue"; | |
497 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
498 | -// API | |
499 | -import { rvwMttrDetailProc } from "../../../../../../resources/api/rvwMttr"; | |
500 | -import { ivstDscsnListProc } from "../../../../../../resources/api/ivstDscsn"; | |
501 | -import { mbrListProc } from "../../../../../../resources/api/mbrInfo"; | |
502 | - | |
503 | -export default { | |
504 | - mixins: [defaultFileSystem], | |
505 | - components: { | |
506 | - Modal: Modal, | |
507 | - PaginationButton: PaginationButton, | |
508 | - }, | |
509 | - data() { | |
510 | - return { | |
511 | - pageRole: this.$store.state.userType, // 유저 권한 | |
512 | - pageId: this.$route.query.pageId, // 페이지 아이디 | |
513 | - | |
514 | - rvwMttrVO: {}, | |
515 | - rvwMttrTypeList: [], | |
516 | - | |
517 | - // 검색 정보 담는 객체 | |
518 | - search: { ...defaultSearchParams }, | |
519 | - | |
520 | - // 모달 객체 | |
521 | - isOpen: false, | |
522 | - modal: { | |
523 | - title: null, | |
524 | - index: null, | |
525 | - list: [], | |
526 | - }, | |
527 | - | |
528 | - // 모달 데이터 (투자상담) | |
529 | - ivstDscsnList: [], | |
530 | - | |
531 | - // 모달 데이터 (접수자/담당자) | |
532 | - mbrSearch: [], | |
533 | - | |
534 | - // 진행단계 추가 가능 여부 | |
535 | - isActive: true, | |
536 | - | |
537 | - dscsnOtln: { | |
538 | - select: null, | |
539 | - detail: null, | |
540 | - }, | |
541 | - }; | |
542 | - }, | |
543 | - created() { | |
544 | - this.fnViewDetail(); | |
545 | - }, | |
546 | - computed: { | |
547 | - routerPaths() { | |
548 | - return { | |
549 | - list: this.$store.state.path + "/list.page", | |
550 | - view: this.$store.state.path + "/view.page", | |
551 | - insert: this.$store.state.path + "/insert.page", | |
552 | - }; | |
553 | - }, | |
554 | - }, | |
555 | - methods: { | |
556 | - // axios: 검토사항 조회(상세) | |
557 | - async fnViewDetail() { | |
558 | - // 데이터 삽입 | |
559 | - let data = { | |
560 | - rvwMttrId: this.pageId, | |
561 | - ivstDscsnId: this.$route.query.ivstDscsnId, | |
562 | - ttl: this.$route.query.ttl, | |
563 | - }; | |
564 | - // 실행 | |
565 | - try { | |
566 | - const response = await rvwMttrDetailProc(data); | |
567 | - this.rvwMttrVO = response.data.data.rvwMttrVO; | |
568 | - this.rvwMttrTypeList = response.data.data.rvwMttrTypeList; | |
569 | - this.fileList = response.data.data.rvwMttrVO.fileList; | |
570 | - | |
571 | - let today = new Date().toISOString().substring(0, 10); | |
572 | - | |
573 | - let dscsnOtln = this.rvwMttrVO.type; | |
574 | - if ( | |
575 | - dscsnOtln != "" && | |
576 | - dscsnOtln != "투자협의" && | |
577 | - dscsnOtln != "건의사항" | |
578 | - ) { | |
579 | - this.dscsnOtln.select = "self"; | |
580 | - this.dscsnOtln.detail = this.rvwMttrVO.type; | |
581 | - } else { | |
582 | - this.dscsnOtln.select = this.rvwMttrVO.type; | |
583 | - } | |
584 | - | |
585 | - // 기본정보 | |
586 | - if (this.rvwMttrVO.rvwMttrId == null) { | |
587 | - this.rvwMttrVO.clr = this.$store.state.mbrId; | |
588 | - this.rvwMttrVO.clrNm = this.$store.state.mbrNm; | |
589 | - this.rvwMttrVO.rcptDt = today; | |
590 | - } | |
591 | - // 진행단계 | |
592 | - if (this.rvwMttrVO.prgrsList[0].rvwMttrPrgrsId == null) { | |
593 | - this.rvwMttrVO.prgrsList[0].picId = this.$store.state.mbrId; | |
594 | - this.rvwMttrVO.prgrsList[0].picNm = this.$store.state.mbrNm; | |
595 | - this.rvwMttrVO.prgrsList[0].prgrsDt = today; | |
596 | - } | |
597 | - // 진행단계 완료 여부 | |
598 | - this.fnChangePrgrsCrs(); | |
599 | - } catch (error) { | |
600 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
601 | - } | |
602 | - }, | |
603 | - | |
604 | - // 모달 열기 | |
605 | - fnModalOpen(type, index) { | |
606 | - this.isOpen = true; | |
607 | - this.modal["title"] = type; | |
608 | - this.modal["index"] = index; | |
609 | - this.fnModalViewList(); | |
610 | - }, | |
611 | - fnModalViewList() { | |
612 | - const type = this.modal["title"]; | |
613 | - const index = this.modal["index"]; | |
614 | - if (type == "투자상담명") { | |
615 | - this.axiosIvstDscsnList(); | |
616 | - } else if (type == "접수자" || type == "담당자") { | |
617 | - this.axiosMbrList(type, index); | |
618 | - } | |
619 | - }, | |
620 | - // 모달 선택 | |
621 | - fnModalInsert(data) { | |
622 | - if (data["type"] == "ivstDscsn") { | |
623 | - this.rvwMttrVO["ivstDscsnId"] = data["id"]; | |
624 | - this.rvwMttrVO["ttl"] = data["name"]; | |
625 | - if (this.rvwMttrVO.rcptCn == null || this.rvwMttrVO.rcptCn == "") { | |
626 | - this.rvwMttrVO.rcptCn = data.mainCn; | |
627 | - } | |
628 | - } else if (data["type"] == "clr") { | |
629 | - this.rvwMttrVO["clr"] = data["id"]; | |
630 | - this.rvwMttrVO["clrNm"] = data["name"]; | |
631 | - } else if (data["type"] == "picId") { | |
632 | - let index = data["index"]; | |
633 | - this.rvwMttrVO.prgrsList[index]["picId"] = data["id"]; | |
634 | - this.rvwMttrVO.prgrsList[index]["picNm"] = data["name"]; | |
635 | - } | |
636 | - this.fnModalClose(); | |
637 | - }, | |
638 | - // 모달 닫기 | |
639 | - fnModalClose() { | |
640 | - this.isOpen = false; | |
641 | - this.modal = { | |
642 | - title: null, | |
643 | - index: null, | |
644 | - list: [], | |
645 | - }; | |
646 | - this.search = { ...defaultSearchParams }; | |
647 | - }, | |
648 | - // axios: 모달 데이터 조회(투자상담) | |
649 | - async axiosIvstDscsnList() { | |
650 | - // 데이터 삽입 | |
651 | - let data = this.search; | |
652 | - data.searchType = "ttl"; | |
653 | - // 실행 | |
654 | - try { | |
655 | - const response = await ivstDscsnListProc(data); | |
656 | - let dataList = []; | |
657 | - for (let item of response.data["data"]["list"]) { | |
658 | - dataList.push({ | |
659 | - type: "ivstDscsn", | |
660 | - name: item["ttl"], | |
661 | - id: item["ivstDscsnId"], | |
662 | - mainCn: item["mainCn"], | |
663 | - }); | |
664 | - } | |
665 | - this.modal["list"] = dataList; | |
666 | - this.search = response.data["data"]["pagination"]; | |
667 | - } catch (error) { | |
668 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
669 | - } | |
670 | - }, | |
671 | - // axios: 모달 데이터 조회(접수자/담당자) | |
672 | - async axiosMbrList(type, index) { | |
673 | - // 데이터 삽입 | |
674 | - let data = { ...this.search, authrtCd: "" }; | |
675 | - data.searchType = "mbr_nm"; | |
676 | - // 실행 | |
677 | - try { | |
678 | - const response = await mbrListProc(data); | |
679 | - let dataList = []; | |
680 | - if (type == "접수자") { | |
681 | - for (let item of response.data.data.list) { | |
682 | - dataList.push({ | |
683 | - type: "clr", | |
684 | - name: item["mbrNm"], | |
685 | - id: item["mbrId"], | |
686 | - }); | |
687 | - } | |
688 | - } else if (type == "담당자") { | |
689 | - for (let item of response.data.data.list) { | |
690 | - dataList.push({ | |
691 | - type: "picId", | |
692 | - name: item["mbrNm"], | |
693 | - id: item["mbrId"], | |
694 | - index: index, | |
695 | - }); | |
696 | - } | |
697 | - } | |
698 | - this.modal["list"] = dataList; | |
699 | - this.search = response.data["data"]["pagination"]; | |
700 | - } catch (error) { | |
701 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
702 | - } | |
703 | - }, | |
704 | - | |
705 | - // 진행단계 추가 | |
706 | - fnTableAdd() { | |
707 | - this.rvwMttrVO.prgrsList.push({ | |
708 | - rvwMttrId: this.pageId, | |
709 | - picId: this.$store.state.mbrId, | |
710 | - picNm: this.$store.state.mbrNm, | |
711 | - prgrsCrs: "", | |
712 | - prgrsDt: new Date().toISOString().substring(0, 10), | |
713 | - sprtMthd: null, | |
714 | - rgtr: null, | |
715 | - regDt: null, | |
716 | - mdfr: null, | |
717 | - mdfcnDt: null, | |
718 | - }); | |
719 | - }, | |
720 | - // 진행단계 삭제 | |
721 | - fnTableDelete(index) { | |
722 | - var isDelete = confirm("해당 진행단계 및 지원방안을 삭제하시겠습니까?"); | |
723 | - if (isDelete) { | |
724 | - this.rvwMttrVO.deleteList.push(this.rvwMttrVO.prgrsList[index]); | |
725 | - this.rvwMttrVO.prgrsList.splice(index, 1); | |
726 | - } else { | |
727 | - return; | |
728 | - } | |
729 | - }, | |
730 | - // 진행단계 완료 | |
731 | - fnChangePrgrsCrs() { | |
732 | - this.isActive = true; | |
733 | - for (let prgrs of this.rvwMttrVO.prgrsList) { | |
734 | - if (prgrs.prgrsCrs == 2) { | |
735 | - this.isActive = false; | |
736 | - return; | |
737 | - } | |
738 | - } | |
739 | - }, | |
740 | - | |
741 | - // 유효성 검사 | |
742 | - valiadtion() { | |
743 | - if (this.rvwMttrVO["ttl"] == null || this.rvwMttrVO["ttl"] == "") { | |
744 | - alert("투자상담명을 선택해주세요."); | |
745 | - this.$refs.ttl.focus(); | |
746 | - return false; | |
747 | - } | |
748 | - | |
749 | - if (this.dscsnOtln.select == null || this.dscsnOtln.select == "") { | |
750 | - alert("유형을 선택해주세요."); | |
751 | - return false; | |
752 | - } | |
753 | - if (this.dscsnOtln.select == "self") { | |
754 | - if (this.dscsnOtln.detail == null || this.dscsnOtln.detail == "") { | |
755 | - alert("유형을 입력해주세요."); | |
756 | - this.$refs.detail.focus(); | |
757 | - return false; | |
758 | - } | |
759 | - } | |
760 | - | |
761 | - if (this.rvwMttrVO["clrNm"] == null || this.rvwMttrVO["clrNm"] == "") { | |
762 | - alert("접수자를 선택해주세요."); | |
763 | - this.$refs.clr.focus(); | |
764 | - return false; | |
765 | - } | |
766 | - | |
767 | - if (this.rvwMttrVO["rcptDt"] == null || this.rvwMttrVO["rcptDt"] == "") { | |
768 | - alert("접수일자를 선택해주세요."); | |
769 | - this.$refs.rcptDt.focus(); | |
770 | - return false; | |
771 | - } | |
772 | - | |
773 | - if (this.rvwMttrVO["rcptCn"] == null || this.rvwMttrVO["rcptCn"] == "") { | |
774 | - alert("접수내용을 입력해주세요."); | |
775 | - this.$refs.rcptCn.focus(); | |
776 | - return false; | |
777 | - } | |
778 | - | |
779 | - if (this.rvwMttrVO.prgrsList.length > 0) { | |
780 | - for (let i = 0; i < this.rvwMttrVO.prgrsList.length; i++) { | |
781 | - if ( | |
782 | - this.rvwMttrVO.prgrsList[i].prgrsCrs == null || | |
783 | - this.rvwMttrVO.prgrsList[i].prgrsCrs == "" | |
784 | - ) { | |
785 | - alert("진행단계를 입력해주세요."); | |
786 | - this.$refs.prgrsCrs[i].focus(); | |
787 | - return false; | |
788 | - } | |
789 | - if ( | |
790 | - this.rvwMttrVO.prgrsList[i].prgrsDt == null || | |
791 | - this.rvwMttrVO.prgrsList[i].prgrsDt == "" | |
792 | - ) { | |
793 | - alert("진행날짜를 입력해주세요."); | |
794 | - this.$refs.prgrsDt[i].focus(); | |
795 | - return false; | |
796 | - } | |
797 | - if ( | |
798 | - this.rvwMttrVO.prgrsList[i].sprtMthd == null || | |
799 | - this.rvwMttrVO.prgrsList[i].sprtMthd == "" | |
800 | - ) { | |
801 | - alert("지원방향을 입력해주세요."); | |
802 | - this.$refs.sprtMthd[i].focus(); | |
803 | - return false; | |
804 | - } | |
805 | - } | |
806 | - } | |
807 | - return true; | |
808 | - }, | |
809 | - // axios: 등록 | |
810 | - async fnUpsert() { | |
811 | - // 유효성 검사 | |
812 | - if (this.valiadtion() == false) { | |
813 | - return; | |
814 | - } | |
815 | - // 상담요지 포멧 변경 | |
816 | - let data = this.rvwMttrVO; | |
817 | - if (this.dscsnOtln.select == "self") { | |
818 | - data.type = this.dscsnOtln.detail; | |
819 | - } else { | |
820 | - data.type = this.dscsnOtln.select; | |
821 | - } | |
822 | - data.deleteFileList = this.deleteFileList; | |
823 | - // 데이터 세팅 | |
824 | - let formData = new FormData(); | |
825 | - const paramsToBlob = new Blob([JSON.stringify(data)], { | |
826 | - type: "application/json; charset=UTF-8", | |
827 | - }); | |
828 | - formData.append("rvwMttrVO", paramsToBlob); | |
829 | - if (this.insertFileList.length > 0) { | |
830 | - for (const file of this.insertFileList) { | |
831 | - formData.append("insertFileList", file); | |
832 | - } | |
833 | - } | |
834 | - // 실행 | |
835 | - defaultAxios({ | |
836 | - url: | |
837 | - this.pageId == null | |
838 | - ? "/government/rvwMttr/insertProc.file" | |
839 | - : "/government/rvwMttr/updateProc.file", | |
840 | - method: "post", | |
841 | - headers: { | |
842 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
843 | - Authorization: this.$store.state.authorization, | |
844 | - }, | |
845 | - data: formData, | |
846 | - }) | |
847 | - .then((response) => { | |
848 | - alert(response.data["message"]); | |
849 | - this.$router.push({ | |
850 | - path: this.routerPaths["view"], | |
851 | - query: { | |
852 | - pageId: | |
853 | - this.pageId == null | |
854 | - ? response.data.data.rvwMttrId | |
855 | - : this.pageId, | |
856 | - }, | |
857 | - }); | |
858 | - }) | |
859 | - .catch((error) => { | |
860 | - const errorData = error.response.data; | |
861 | - if (errorData.message != null && errorData.message != "") { | |
862 | - alert(error.response.data.message); | |
863 | - } else { | |
864 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
865 | - } | |
866 | - }); | |
867 | - }, | |
868 | - | |
869 | - // 취소 | |
870 | - fnPrev() { | |
871 | - let isCheck = confirm("작성을 취소하시겠습니까?"); | |
872 | - if (!isCheck) { | |
873 | - return; | |
874 | - } | |
875 | - if (this.pageId != null) { | |
876 | - this.$router.push({ | |
877 | - path: this.routerPaths["view"], | |
878 | - query: { pageId: this.pageId }, | |
879 | - }); | |
880 | - } else { | |
881 | - this.$router.push({ | |
882 | - path: this.routerPaths["list"], | |
883 | - }); | |
884 | - } | |
885 | - }, | |
886 | - | |
887 | - // 상담요지 변경 | |
888 | - fnChangeSelect() { | |
889 | - this.dscsnOtln.detail = null; | |
890 | - }, | |
891 | - }, | |
892 | - watch: { | |
893 | - fileList: { | |
894 | - deep: true, | |
895 | - handler() { | |
896 | - this.fnFileList(); | |
897 | - }, | |
898 | - }, | |
899 | - }, | |
900 | -}; | |
901 | -</script> |
--- client/views/pages/user/government/companyInfo/companyReview/CompanyReviewSelectList.vue
... | ... | @@ -1,230 +0,0 @@ |
1 | -<template> | |
2 | - <div :class="{ 'content pt50 pb50': pageRole == 'government' }"> | |
3 | - <div :class="{ content: true, 'w1400 ': pageRole == 'government' }"> | |
4 | - <div | |
5 | - :class="{ | |
6 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
7 | - 'page-title point-font mb30': pageRole == 'government', | |
8 | - }" | |
9 | - > | |
10 | - <p>검토사항</p> | |
11 | - </div> | |
12 | - | |
13 | - <div class="search-bar pd30 mb15" style="background-color: #f8f8f8"> | |
14 | - <div class="flex"> | |
15 | - <div class="gd-2 pd0"> | |
16 | - <select class="full-select border-none" v-model="search['type']"> | |
17 | - <option value="">형태(전체)</option> | |
18 | - <option | |
19 | - v-for="(item, idx) in rvwMttrTypeList" | |
20 | - :key="idx" | |
21 | - :value="item.cd" | |
22 | - > | |
23 | - {{ item.cdNm }} | |
24 | - </option> | |
25 | - </select> | |
26 | - </div> | |
27 | - <div class="gd-2 pr0"> | |
28 | - <select | |
29 | - class="full-select border-none" | |
30 | - v-model="search['prgrsCrs']" | |
31 | - > | |
32 | - <option value="">진행단계(전체)</option> | |
33 | - <option value="0">접수전</option> | |
34 | - <option value="1">처리중</option> | |
35 | - <option value="2">완료</option> | |
36 | - </select> | |
37 | - </div> | |
38 | - <div class="flex gd-8 pd0"> | |
39 | - <div class="gd-9 flex pr0"> | |
40 | - <div class="gd-3 pr0"> | |
41 | - <select | |
42 | - class="border-none full-select" | |
43 | - v-model="search['searchType']" | |
44 | - > | |
45 | - <option value="">전체</option> | |
46 | - <option value="ent_nm">기업명</option> | |
47 | - <option value="ttl">투자상담명</option> | |
48 | - </select> | |
49 | - </div> | |
50 | - <div class="gd-9 pr0"> | |
51 | - <input | |
52 | - type="text" | |
53 | - class="border-none full-input" | |
54 | - v-model="search['searchText']" | |
55 | - v-on:keyup.enter="fnViewList" | |
56 | - /> | |
57 | - </div> | |
58 | - </div> | |
59 | - <div class="flex gd-3 pd0"> | |
60 | - <div class="gd-6 pr0"> | |
61 | - <button | |
62 | - :class="{ | |
63 | - 'large-btn': true, | |
64 | - 'blue-border-btn': pageRole == 'adm', | |
65 | - 'green-border-btn': pageRole == 'government', | |
66 | - }" | |
67 | - @click="fnViewList" | |
68 | - > | |
69 | - 검색 | |
70 | - </button> | |
71 | - </div> | |
72 | - <div class="gd-6 pr0"> | |
73 | - <button | |
74 | - class="large-btn darkg-border-btn" | |
75 | - @click="fnSearchReset" | |
76 | - > | |
77 | - <svg-icon type="mdi" :path="refreshPath" /> | |
78 | - 초기화 | |
79 | - </button> | |
80 | - </div> | |
81 | - </div> | |
82 | - </div> | |
83 | - </div> | |
84 | - </div> | |
85 | - <ListTable | |
86 | - :colgroup="colgroup" | |
87 | - :thead="thead" | |
88 | - :tbody="tbody" | |
89 | - :className="pageRole == 'adm' ? 'admin-list review-table' : null" | |
90 | - @listClick="fnViewDetail" | |
91 | - /> | |
92 | - <div class="flex justify-between align-center no-gutters"> | |
93 | - <div class="gd-1"></div> | |
94 | - <div class="gd-10"> | |
95 | - <PaginationButton | |
96 | - v-model:currentPage="search['currentPage']" | |
97 | - :pagination="search" | |
98 | - :click="fnViewList" | |
99 | - :className="pageRole == 'adm' ? 'admin-pagination' : null" | |
100 | - /> | |
101 | - </div> | |
102 | - <div class="gd-1"> | |
103 | - <button | |
104 | - :class="{ | |
105 | - 'large-btn': true, | |
106 | - 'blue-btn': pageRole == 'adm', | |
107 | - 'green-btn point-font': pageRole == 'government', | |
108 | - }" | |
109 | - @click="fnInsert" | |
110 | - v-if="pageAuth.regAuthrt == 'Y'" | |
111 | - > | |
112 | - 등록 | |
113 | - </button> | |
114 | - </div> | |
115 | - </div> | |
116 | - </div> | |
117 | - </div> | |
118 | -</template> | |
119 | - | |
120 | -<script> | |
121 | -import ListTable from "../../../../../component/table/ListTable.vue"; | |
122 | -import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; | |
123 | -import { toRaw } from "vue"; | |
124 | -import queryParams from "../../../../../../resources/js/queryParams"; | |
125 | -import { defaultSearchParams } from "../../../../../../resources/js/defaultSearchParams"; | |
126 | -import { mdiRefresh } from "@mdi/js"; | |
127 | - | |
128 | -// api | |
129 | -import { rvwMttrListProc } from "../../../../../../resources/api/rvwMttr"; | |
130 | - | |
131 | -export default { | |
132 | - mixins: [queryParams], | |
133 | - components: { | |
134 | - ListTable: ListTable, | |
135 | - PaginationButton: PaginationButton, | |
136 | - }, | |
137 | - data() { | |
138 | - return { | |
139 | - // 페이지 권한 | |
140 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, | |
141 | - // 유저 권한 | |
142 | - pageRole: this.$store.state.userType, | |
143 | - | |
144 | - colgroup: ["5%", "15%", "15%", "35%", "15%", "15%"], | |
145 | - thead: ["NO", "형태", "기업명", "투자상담명", "진행단계", "등록일"], | |
146 | - tbody: [], | |
147 | - search: { ...defaultSearchParams }, | |
148 | - list: [], | |
149 | - rvwMttrTypeList: [], | |
150 | - | |
151 | - refreshPath: mdiRefresh, | |
152 | - }; | |
153 | - }, | |
154 | - created() { | |
155 | - this.resotreQueryParams("queryParams"); | |
156 | - this.fnViewList(); | |
157 | - }, | |
158 | - computed: { | |
159 | - routerPaths() { | |
160 | - return { | |
161 | - list: this.$store.state.path + "/list.page", | |
162 | - view: this.$store.state.path + "/view.page", | |
163 | - insert: this.$store.state.path + "/insert.page", | |
164 | - }; | |
165 | - }, | |
166 | - }, | |
167 | - methods: { | |
168 | - // axios: 조회(목록) | |
169 | - async fnViewList() { | |
170 | - // 데이터 세팅 | |
171 | - const data = this.search; | |
172 | - this.saveQueryParams("queryParams", this.search); // 검색조건 저장 | |
173 | - // 실행 | |
174 | - try { | |
175 | - const response = await rvwMttrListProc(toRaw(data)); | |
176 | - this.list = response.data["data"]["list"]; | |
177 | - this.search = response.data["data"]["pagination"]; | |
178 | - this.rvwMttrTypeList = response.data["data"]["rvwMttrTypeList"]; | |
179 | - this.makeTbody(); | |
180 | - } catch (error) { | |
181 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
182 | - } | |
183 | - }, | |
184 | - | |
185 | - // 등록 | |
186 | - fnInsert() { | |
187 | - this.$router.push({ | |
188 | - path: this.routerPaths["insert"], | |
189 | - }); | |
190 | - }, | |
191 | - | |
192 | - // 조회(상세) | |
193 | - fnViewDetail(idx) { | |
194 | - this.$router.push({ | |
195 | - path: this.routerPaths["view"], | |
196 | - query: { pageId: this.list[idx]["rvwMttrId"] }, | |
197 | - }); | |
198 | - }, | |
199 | - | |
200 | - // tbody 생성 | |
201 | - makeTbody() { | |
202 | - this.tbody = []; | |
203 | - this.tbody = this.list.map((companyReview, idx) => ({ | |
204 | - id: | |
205 | - this.search.totalRecordCount - | |
206 | - idx - | |
207 | - (this.search.currentPage - 1) * this.search.recordSize, | |
208 | - type: companyReview.type, | |
209 | - entNm: companyReview.entNm, | |
210 | - ttl: companyReview.ttl, | |
211 | - nowPrgrsCrs: | |
212 | - companyReview.nowPrgrsCrs == "0" | |
213 | - ? "접수전" | |
214 | - : companyReview.nowPrgrsCrs == "1" | |
215 | - ? "처리중" | |
216 | - : companyReview.nowPrgrsCrs == "2" | |
217 | - ? "완료" | |
218 | - : "-", | |
219 | - regDt: companyReview.regDt, | |
220 | - })); | |
221 | - }, | |
222 | - | |
223 | - // 검색 초기화 | |
224 | - fnSearchReset() { | |
225 | - this.search = { ...defaultSearchParams }; | |
226 | - this.fnViewList(); | |
227 | - }, | |
228 | - }, | |
229 | -}; | |
230 | -</script> |
--- client/views/pages/user/government/companyInfo/companyReview/CompanyReviewSelectListOne.vue
... | ... | @@ -1,240 +0,0 @@ |
1 | -<template> | |
2 | - <div | |
3 | - :class="{ | |
4 | - content: true, | |
5 | - 'admin-style overflow-y': pageRole == 'adm', | |
6 | - 'pt50 pb50': pageRole == 'government', | |
7 | - }" | |
8 | - > | |
9 | - <div | |
10 | - :class="{ | |
11 | - 'w1400 ': pageRole == 'government', | |
12 | - }" | |
13 | - > | |
14 | - <div | |
15 | - :class="{ | |
16 | - 'admin-page-title point-font2 mb30': pageRole == 'adm', | |
17 | - 'page-title point-font mb30': pageRole == 'government', | |
18 | - }" | |
19 | - > | |
20 | - <p>검토사항</p> | |
21 | - </div> | |
22 | - | |
23 | - <CompanyReview :pageId="pageId" @fnSaveVO="fnSaveVO" /> | |
24 | - | |
25 | - <div class="flex justify-between align-center no-gutters"> | |
26 | - <div class="gd-6"> | |
27 | - <div v-if="pageAuth.fileDwnldAuthrt == 'Y'" class="gd-3 pl0"> | |
28 | - <button | |
29 | - :class="{ | |
30 | - 'large-btn': true, | |
31 | - 'blue-border-btn': pageRole == 'adm', | |
32 | - 'green-border-btn': pageRole == 'government', | |
33 | - }" | |
34 | - @click="fnDownload" | |
35 | - > | |
36 | - 다운로드 | |
37 | - </button> | |
38 | - </div> | |
39 | - </div> | |
40 | - <div class="flex justify-end gd-6 no-gutters"> | |
41 | - <div class="gd-2 ml10"> | |
42 | - <button class="large-btn gray-border-btn" @click="fnPrev"> | |
43 | - 목록 | |
44 | - </button> | |
45 | - </div> | |
46 | - <div v-if="pageAuth.mdfcnAuthrt == 'Y'" class="gd-2 ml10"> | |
47 | - <button | |
48 | - :class="{ | |
49 | - 'large-btn': true, | |
50 | - 'blue-border-btn': pageRole == 'adm', | |
51 | - 'green-border-btn': pageRole == 'government', | |
52 | - }" | |
53 | - @click="fnUpdate" | |
54 | - > | |
55 | - 수정 | |
56 | - </button> | |
57 | - </div> | |
58 | - <div v-if="pageAuth.delAuthrt == 'Y'" class="gd-2 ml10"> | |
59 | - <button class="large-btn red-border-btn" @click="fnDelete"> | |
60 | - 삭제 | |
61 | - </button> | |
62 | - </div> | |
63 | - </div> | |
64 | - </div> | |
65 | - </div> | |
66 | - </div> | |
67 | -</template> | |
68 | - | |
69 | -<script> | |
70 | -import defaultAxios from "../../../../../../resources/js/defaultAxios"; | |
71 | -import CompanyReview from "../../../../../component/companyInfo/RvwMttrDetail.vue"; | |
72 | - | |
73 | -// api | |
74 | -import { rvwMttrDeleteProc } from "../../../../../../resources/api/rvwMttr"; | |
75 | - | |
76 | -export default { | |
77 | - components: { | |
78 | - CompanyReview: CompanyReview, | |
79 | - }, | |
80 | - data() { | |
81 | - return { | |
82 | - // 페이지 아이디 | |
83 | - pageId: this.$route.query.pageId, | |
84 | - // 페이지 권한 | |
85 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, | |
86 | - // 유저 권한 | |
87 | - pageRole: this.$store.state.userType, | |
88 | - | |
89 | - rvwMttrVO: {}, | |
90 | - rvwMttrTypeList: [], | |
91 | - }; | |
92 | - }, | |
93 | - computed: { | |
94 | - routerPaths() { | |
95 | - return { | |
96 | - list: this.$store.state.path + "/list.page", | |
97 | - view: this.$store.state.path + "/view.page", | |
98 | - insert: this.$store.state.path + "/insert.page", | |
99 | - }; | |
100 | - }, | |
101 | - }, | |
102 | - methods: { | |
103 | - // 검토사항 객체 저장 | |
104 | - fnSaveVO(data, list) { | |
105 | - this.rvwMttrVO = data; | |
106 | - this.rvwMttrTypeList = list; | |
107 | - }, | |
108 | - | |
109 | - // 다운로드 | |
110 | - async fnDownload() { | |
111 | - // 데이터 세팅 | |
112 | - let rvwMttr = { | |
113 | - entNm: this.rvwMttrVO.entNm, | |
114 | - ttl: this.rvwMttrVO.ttl, | |
115 | - type: this.fnChangeType(this.rvwMttrTypeList, this.rvwMttrVO.type), | |
116 | - clrNm: this.rvwMttrVO.clrNm, | |
117 | - rcptDt: this.rvwMttrVO.rcptDt, | |
118 | - rcptCn: this.rvwMttrVO.rcptCn, | |
119 | - }; | |
120 | - let prgrsList = []; | |
121 | - for (let prgrs of this.rvwMttrVO.prgrsList) { | |
122 | - prgrsList.push({ | |
123 | - picNm: prgrs.picNm, | |
124 | - prgrsCrs: this.fnChangePrgrsCrs(prgrs.prgrsCrs), | |
125 | - prgrsDt: prgrs.prgrsDt, | |
126 | - sprtMthd: prgrs.sprtMthd, | |
127 | - }); | |
128 | - } | |
129 | - // 폼데이터 | |
130 | - var formData = new FormData(); | |
131 | - const rvwMttrToBlob = new Blob([JSON.stringify(rvwMttr)], { | |
132 | - type: "application/json; charset=UTF-8", | |
133 | - }); | |
134 | - formData.append("rvwMttr", rvwMttrToBlob); | |
135 | - const prgrsListToBlob = new Blob([JSON.stringify(prgrsList)], { | |
136 | - type: "application/json; charset=UTF-8", | |
137 | - }); | |
138 | - formData.append("prgrsList", prgrsListToBlob); | |
139 | - // 실행 | |
140 | - try { | |
141 | - const response = await defaultAxios({ | |
142 | - url: "/government/rvwMttr/excelDownload.file", | |
143 | - method: "post", | |
144 | - headers: { | |
145 | - "Content-Type": "multipart/form-data; charset=UTF-8", | |
146 | - Authorization: this.$store.state.authorization, | |
147 | - }, | |
148 | - data: formData, | |
149 | - responseType: "blob", | |
150 | - }); | |
151 | - | |
152 | - const url = window.URL.createObjectURL(new Blob([response.data])); | |
153 | - | |
154 | - let today = new Date().toISOString().substring(2, 10); | |
155 | - today = today.replace(/[^0-9]/g, ""); | |
156 | - | |
157 | - const link = document.createElement("a"); | |
158 | - link.href = url; | |
159 | - link.setAttribute( | |
160 | - "download", | |
161 | - `[검토사항]${this.rvwMttrVO["ttl"]}_${today}.xlsx` | |
162 | - ); | |
163 | - document.body.appendChild(link); | |
164 | - link.click(); | |
165 | - document.body.removeChild(link); | |
166 | - window.URL.revokeObjectURL(url); | |
167 | - } catch (error) { | |
168 | - alert("파일 다운로드 중 오류가 발생했습니다."); | |
169 | - } | |
170 | - }, | |
171 | - // 유형 표기 변경 | |
172 | - fnChangeType(typeList, type) { | |
173 | - let result = null; | |
174 | - for (let typeItem of typeList) { | |
175 | - if (type == typeItem.getCd) { | |
176 | - result = typeItem.getCdNm; | |
177 | - } | |
178 | - } | |
179 | - return result; | |
180 | - }, | |
181 | - // 진행단계 표기 변경 | |
182 | - fnChangePrgrsCrs(prgrsCrs) { | |
183 | - let result = null; | |
184 | - switch (prgrsCrs) { | |
185 | - case "0": | |
186 | - result = "접수전"; | |
187 | - break; | |
188 | - case "1": | |
189 | - result = "처리중"; | |
190 | - break; | |
191 | - case "2": | |
192 | - result = "완료"; | |
193 | - break; | |
194 | - } | |
195 | - return result; | |
196 | - }, | |
197 | - | |
198 | - // 수정 | |
199 | - fnUpdate() { | |
200 | - this.$router.push({ | |
201 | - path: this.routerPaths["insert"], | |
202 | - query: { pageId: this.pageId }, | |
203 | - }); | |
204 | - }, | |
205 | - | |
206 | - // 목록 | |
207 | - fnPrev() { | |
208 | - this.$router.push({ | |
209 | - path: this.routerPaths["list"], | |
210 | - }); | |
211 | - }, | |
212 | - | |
213 | - // axios: 삭제 | |
214 | - async fnDelete() { | |
215 | - // 확인 | |
216 | - var isDelete = confirm("해당 검토사항을 삭제하시겠습니까?"); | |
217 | - if (!isDelete) { | |
218 | - return; | |
219 | - } | |
220 | - | |
221 | - // 데이터 세팅 | |
222 | - const data = { rvwMttrId: this.pageId }; | |
223 | - | |
224 | - // 실행 | |
225 | - try { | |
226 | - const response = await rvwMttrDeleteProc(data); | |
227 | - alert(response.data["message"]); // axios 결과 | |
228 | - this.fnPrev(); // 목록으로 이동 | |
229 | - } catch (error) { | |
230 | - const errorData = error.response.data; | |
231 | - if (errorData.message != null && errorData.message != "") { | |
232 | - alert(error.response.data.message); | |
233 | - } else { | |
234 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
235 | - } | |
236 | - } | |
237 | - }, | |
238 | - }, | |
239 | -}; | |
240 | -</script> |
--- client/views/pages/user/government/main/Main.vue
... | ... | @@ -1,460 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content main "> | |
3 | - <div class="w1400"> | |
4 | - <!-- 공지사항 및 배너 --> | |
5 | - <div class="community-zone flex mb30"> | |
6 | - <div class="visual-zone gd-8 pl0"> | |
7 | - <div class="swiper-container"> | |
8 | - <div class="swiper-wrapper"> | |
9 | - <div class="swiper-slide" v-for="(item, index) in visualSlides" :key="index"> | |
10 | - <img :src="item.img" :alt="item.alt" /> | |
11 | - </div> | |
12 | - </div> | |
13 | - </div> | |
14 | - <div class="swiper-pagination"></div> | |
15 | - <div class="swiper-button-prev button"></div> | |
16 | - <div class="swiper-button-next button"></div> | |
17 | - </div> | |
18 | - <div class="gd-4 pr0 "> | |
19 | - | |
20 | - <!-- 검색창 --> | |
21 | - <div class="community-zone mb20"> | |
22 | - <div class="box-out-title flex justify-between align-center"> | |
23 | - | |
24 | - </div> | |
25 | - <div class="search-bar text-ct user-search-bar" tabindex="0"> | |
26 | - <div class="box"> | |
27 | - <p>통합검색</p> | |
28 | - <div class="bar"></div> | |
29 | - <input type="text" class="search-input" placeholder="검색어를 입력하세요." v-model="search.searchText" | |
30 | - @keyup.enter="totalSearch" /> | |
31 | - <button class="icon-button search-button" @click="totalSearch"> | |
32 | - <svg-icon type="mdi" :path="this.$iconPath()" class="search-icon"></svg-icon> | |
33 | - </button> | |
34 | - </div> | |
35 | - </div> | |
36 | - </div> | |
37 | - <div class=""> | |
38 | - | |
39 | - <div class="box-out-title flex justify-between align-center"> | |
40 | - <p>공지사항(목록형)</p> | |
41 | - <router-link to="/government/BBS_MNG_000000000000027/list.page" class=" flex align-center"> | |
42 | - <p class="mr5">바로가기</p> | |
43 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
44 | - </router-link> | |
45 | - </div> | |
46 | - <div class="box"> | |
47 | - <div class="tab-nav mb15"> | |
48 | - <ul class="flex align-center" style="gap: 30px;"> | |
49 | - <li v-for="(item, idx) in codeList" :key="idx" :value="item.cd" :class="{ | |
50 | - ' ': true, | |
51 | - activeTab: activeTab === item.cd, | |
52 | - }" @click="showTab(item.cd)"> | |
53 | - <p>{{ item.cdNm }}</p> | |
54 | - </li> | |
55 | - </ul> | |
56 | - </div> | |
57 | - <div class="tab-content"> | |
58 | - <div> | |
59 | - <div class="list_news flex justify-between" style="gap: 20px;"> | |
60 | - <ul> | |
61 | - <li class="leli"> | |
62 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
63 | - <span>2025.01.08</span> | |
64 | - </li> | |
65 | - <li class="leli"> | |
66 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
67 | - <span>2025.01.08</span> | |
68 | - </li> | |
69 | - <li class="leli"> | |
70 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
71 | - <span>2025.01.08</span> | |
72 | - </li> | |
73 | - </ul> | |
74 | - <ul> | |
75 | - <li class="leli"> | |
76 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
77 | - <span>2025.01.08</span> | |
78 | - </li> | |
79 | - <li class="leli"> | |
80 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
81 | - <span>2025.01.08</span> | |
82 | - </li> | |
83 | - <li class="leli"> | |
84 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
85 | - <span>2025.01.08</span> | |
86 | - </li> | |
87 | - </ul> | |
88 | - </div> | |
89 | - </div> | |
90 | - </div> | |
91 | - | |
92 | - </div> | |
93 | - </div> | |
94 | - | |
95 | - </div> | |
96 | - | |
97 | - | |
98 | - </div> | |
99 | - <!-- 바로가기 --> | |
100 | - <div class="community-zone mb20"> | |
101 | - <div class="box-out-title flex justify-between align-center"> | |
102 | - <p>바로가기</p> | |
103 | - </div> | |
104 | - <ul class="quick-link"> | |
105 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
106 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
107 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
108 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
109 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
110 | - </ul> | |
111 | - </div> | |
112 | - | |
113 | - | |
114 | - <!-- 배너 --> | |
115 | - <div class="community-zone mb30"> | |
116 | - <div class="best_service"> | |
117 | - <h4><span>BEST1</span><strong>대제목</strong> 1</h4> | |
118 | - <div class="service_wrap"> | |
119 | - <div class="left_cont best1"> | |
120 | - <a href="#"><img src="../../../../../../client/resources/img/img1.png" alt=""></a> | |
121 | - <div class="txt"> | |
122 | - <span class="label_tag etc_tag">키워드</span> | |
123 | - <h5>부제목</h5> | |
124 | - <div class="sub_info">배너내용</div> | |
125 | - <div class="point_info"><strong>배너내용 강조</strong></div> | |
126 | - </div> | |
127 | - | |
128 | - <!-- <div class="btn_set"> | |
129 | - <a href="" class="btn_small btn_bg_blue">신청하기</a> | |
130 | - | |
131 | - </div> --> | |
132 | - </div> | |
133 | - <div class="right_cont"> | |
134 | - <ul class="product_list"> | |
135 | - <li> | |
136 | - <div class="pdt_info"> | |
137 | - <strong class="pdt_name">제목</strong> | |
138 | - <span class="label_tag blue_tag">키워드</span> | |
139 | - <div class="pdt_simple_info"> | |
140 | - 내용 | |
141 | - </div> | |
142 | - <a href="" class="btn_small btn_bg_green">바로가기</a> | |
143 | - </div> | |
144 | - </li> | |
145 | - <li> | |
146 | - <div class="pdt_info"> | |
147 | - <strong class="pdt_name">제목</strong> | |
148 | - <span class="label_tag blue_tag">키워드</span> | |
149 | - <div class="pdt_simple_info">내용 | |
150 | - </div> | |
151 | - <a href="" class="btn_small btn_bg_green">바로가기</a> | |
152 | - </div> | |
153 | - </li> | |
154 | - <li> | |
155 | - <div class="pdt_info"> | |
156 | - <strong class="pdt_name">제목</strong><span class="label_tag green_tag">키워드</span><span | |
157 | - class="label_tag blue_tag">키워드</span> | |
158 | - <div class="pdt_simple_info">내용</div> | |
159 | - <a href="" class="btn_small btn_bg_blue">신청하기</a> | |
160 | - </div> | |
161 | - </li> | |
162 | - </ul> | |
163 | - </div> | |
164 | - </div> | |
165 | - </div> | |
166 | - </div> | |
167 | - | |
168 | - <!-- 카드뉴스 --> | |
169 | - <div class="cardnews-zone mb30"> | |
170 | - <div class=" "> | |
171 | - <div class="box-out-title flex justify-between align-center"> | |
172 | - <p>카드뉴스</p> | |
173 | - | |
174 | - </div> | |
175 | - <div class="swiper-container"> | |
176 | - <ul class="swiper-wrapper search-list"> | |
177 | - <li class="li box swiper-slide" v-for="(item, index) in slides" :key="index" > | |
178 | - <a :href="item.link"> | |
179 | - <div class="img-wrap" :class="item.imgClass"> | |
180 | - <img :src="item.img" :alt="item.alt" /> | |
181 | - </div> | |
182 | - <div class="conts-wrap"> | |
183 | - <h4 class="tit">{{ item.title }}</h4> | |
184 | - <p class="desc">{{ item.description }}</p> | |
185 | - <div class="full-input flex justify-end"> | |
186 | - <div class="btn-wrap flex align-center"> | |
187 | - <p class="mr5">바로가기</p> | |
188 | - <svg-icon type="mdi" :width="15" :height="15" | |
189 | - :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
190 | - </div> | |
191 | - </div> | |
192 | - </div> | |
193 | - </a> | |
194 | - </li> | |
195 | - </ul> | |
196 | - </div> | |
197 | - <div class="swiper-button-prev button"></div> | |
198 | - <div class="swiper-button-next button"></div> | |
199 | - | |
200 | - </div> | |
201 | - </div> | |
202 | - | |
203 | - <!-- 배너존 --> | |
204 | - <div class="chart-zone mb30"> | |
205 | - <div class="box-out-title flex justify-between align-center"> | |
206 | - <p>배너</p> | |
207 | - </div> | |
208 | - <div class="banner-zone"> | |
209 | - <div class="banner_txt"> | |
210 | - <span>해당페이지</span> | |
211 | - <!-- 230808 문구 수정 --> | |
212 | - <span class="b_txt"><strong>해당페이지</strong>을 이용해 보세요.</span> | |
213 | - <!-- // 230808 문구 수정 --> | |
214 | - </div> | |
215 | - <a href="" class="btn_link" title="새창열림">바로 체험하기</a> | |
216 | - </div> | |
217 | - </div> | |
218 | - | |
219 | - </div> | |
220 | - </div> | |
221 | -</template> | |
222 | - | |
223 | -<script> | |
224 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
225 | -import store from "../../../AppStore"; | |
226 | - | |
227 | -// 통합검색 관련 | |
228 | -import queryParams from "../../../../../resources/js/queryParams"; | |
229 | -import { defaultTotalSearchParams } from "../../../../../resources/js/defaultTotalSearchParams.js"; | |
230 | - | |
231 | -// API | |
232 | -import { governmentMainProc } from "../../../../../resources/api/main"; | |
233 | -import { sysListByPageProc } from "../../../../../resources/api/popup"; | |
234 | -import { findFiveNotice } from "../../../../../resources/api/bbsCn"; | |
235 | -import Swiper from 'swiper'; | |
236 | - | |
237 | -export default { | |
238 | - name: 'SwiperComponent', | |
239 | - mixins: [queryParams], | |
240 | - components: { | |
241 | - ClusteredColumnChart: ClusteredColumnChart, | |
242 | - }, | |
243 | - data() { | |
244 | - return { | |
245 | - visualSlides: [ | |
246 | - { img: 'https://via.placeholder.com/600x300?text=Slide+1', alt: 'Slide 1' }, | |
247 | - { img: 'https://via.placeholder.com/600x300?text=Slide+2', alt: 'Slide 2' }, | |
248 | - { img: 'https://via.placeholder.com/600x300?text=Slide+3', alt: 'Slide 3' }, | |
249 | - ], | |
250 | - slides: [ | |
251 | - { | |
252 | - img: 'https://via.placeholder.com/600x300?text=Slide+1', | |
253 | - alt: 'Slide 1', | |
254 | - title: '컴포넌트 1', | |
255 | - description: '디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드', | |
256 | - link: 'component/component_02_01.html', | |
257 | - imgClass: 'main_1' // 각 슬라이드에 고유한 클래스 적용 | |
258 | - }, | |
259 | - { | |
260 | - img: 'https://via.placeholder.com/600x300?text=Slide+2', | |
261 | - alt: 'Slide 2', | |
262 | - title: '컴포넌트 2', | |
263 | - description: '두 번째 컴포넌트 설명', | |
264 | - link: 'component/component_02_02.html', | |
265 | - imgClass: 'main_2' | |
266 | - }, | |
267 | - { | |
268 | - img: 'https://via.placeholder.com/600x300?text=Slide+3', | |
269 | - alt: 'Slide 3', | |
270 | - title: '컴포넌트 3', | |
271 | - description: '세 번째 컴포넌트 설명', | |
272 | - link: 'component/component_02_03.html', | |
273 | - imgClass: 'main_3' | |
274 | - } | |
275 | - ], | |
276 | - search: { ...defaultTotalSearchParams }, | |
277 | - mbrId: store.state.mbrId || null, // 사용자 아이디 | |
278 | - roles: store.state.roles.map((auth) => auth.authority) || [], // 사용자 권한 | |
279 | - menuType: store.state.userType || null, // 메뉴 타입 | |
280 | - | |
281 | - // 공지사항 top5 | |
282 | - noticeTop5: [], | |
283 | - | |
284 | - // 검색조건 | |
285 | - codeList: [], | |
286 | - activeTab: "categoryTab", | |
287 | - searchKeyword: "day", | |
288 | - | |
289 | - // 통계 | |
290 | - chartData: [], | |
291 | - | |
292 | - popupList: [], | |
293 | - | |
294 | - // 기업정보 | |
295 | - companyInfoList: [], | |
296 | - }; | |
297 | - }, | |
298 | - created() { | |
299 | - // 쿠키 초기화 | |
300 | - const today = new Date(); | |
301 | - let tomorrow = new Date(today.setDate(today.getDate() + 1)); | |
302 | - tomorrow.setHours(0, 0, 0, 0); | |
303 | - tomorrow = new Date(tomorrow); | |
304 | - if (this.$cookies.get("popup") == null) { | |
305 | - this.$cookies.set("popup", [], tomorrow); | |
306 | - } | |
307 | - | |
308 | - this.fnPopupList(); | |
309 | - this.fnCompanyInfo(); | |
310 | - this.fnFiveNotice(); | |
311 | - }, | |
312 | - methods: { | |
313 | - | |
314 | - | |
315 | - showTab: function (tabName) { | |
316 | - this.activeTab = tabName; | |
317 | - this.searchKeyword = "day"; | |
318 | - this.fnCompanyInfo(); | |
319 | - }, | |
320 | - | |
321 | - // 통합검색 | |
322 | - totalSearch() { | |
323 | - if (this.search.searchText === "") { | |
324 | - alert("검색어를 입력해주세요."); | |
325 | - return; | |
326 | - } | |
327 | - this.search.mbrId = this.mbrId; | |
328 | - this.search.roles = this.roles; | |
329 | - this.search.menuType = this.menuType; | |
330 | - this.saveQueryParams("totalSearchQueryParams", this.search); // 검색조건 저장 | |
331 | - this.$router.push({ | |
332 | - path: "/government/search.page", | |
333 | - }); | |
334 | - }, | |
335 | - | |
336 | - // 통계 조회 | |
337 | - async fnCompanyInfo() { | |
338 | - let data = { | |
339 | - activeTab: this.activeTab, | |
340 | - searchKeyword: this.searchKeyword, | |
341 | - }; | |
342 | - try { | |
343 | - const response = await governmentMainProc(data); | |
344 | - this.codeList = response.data.data.codeList; | |
345 | - this.chartData = response.data.data.governmentStats; | |
346 | - this.companyInfoList = response.data.data.companyInfo; | |
347 | - } catch (error) { | |
348 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
349 | - } | |
350 | - }, | |
351 | - | |
352 | - // 기업정보 상세 조회 | |
353 | - fnCompanyInfoViewDetail(entId) { | |
354 | - this.$router.push({ | |
355 | - path: "/government/companyInfo/view.page", | |
356 | - query: { pageId: entId }, | |
357 | - }); | |
358 | - }, | |
359 | - | |
360 | - // 팝업조회(상세) | |
361 | - async fnPopupList() { | |
362 | - let data = { | |
363 | - pageType: this.$store.state.userType, | |
364 | - }; | |
365 | - try { | |
366 | - const response = await sysListByPageProc(data); | |
367 | - let popupList = response.data.data; | |
368 | - if (popupList != null && popupList.length > 0) { | |
369 | - this.fnShowPopup(popupList); | |
370 | - } | |
371 | - } catch (error) { | |
372 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
373 | - } | |
374 | - }, | |
375 | - // 팝업 표시 | |
376 | - fnShowPopup(popupList) { | |
377 | - for (let popup of popupList) { | |
378 | - let count = false; | |
379 | - const popupCookies = this.$cookies.get("popup"); | |
380 | - if (popupCookies.length > 0) { | |
381 | - for (let cookie of popupCookies) { | |
382 | - if (popup.popupId == cookie) { | |
383 | - count = true; | |
384 | - } | |
385 | - } | |
386 | - } | |
387 | - if (!count) { | |
388 | - let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; | |
389 | - window.open( | |
390 | - "/cmmn/popup.page?popupId=" + popup.popupId, | |
391 | - "_blank", | |
392 | - size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" | |
393 | - ); | |
394 | - } | |
395 | - } | |
396 | - }, | |
397 | - | |
398 | - // 공지사항 최신 5개 조회 | |
399 | - async fnFiveNotice() { | |
400 | - try { | |
401 | - const params = { | |
402 | - bbsMngId: "BBS_MNG_000000000000004", | |
403 | - }; | |
404 | - const response = await findFiveNotice(params); | |
405 | - this.noticeTop5 = response.data.data; | |
406 | - } catch (error) { | |
407 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
408 | - } | |
409 | - }, | |
410 | - // 공지사항 상세페이지 이동 | |
411 | - fnNoticeViewDetail(bbsId) { | |
412 | - this.$router.push({ | |
413 | - path: "/government/BBS_MNG_000000000000004/view.page", | |
414 | - query: { | |
415 | - pageId: bbsId, | |
416 | - }, | |
417 | - }); | |
418 | - }, | |
419 | - stopAutoplay() { | |
420 | - if (this.visualSlide) { | |
421 | - this.visualSlide.autoplay.stop(); | |
422 | - } | |
423 | - }, | |
424 | - // 자동 슬라이드 전환 시작하기 | |
425 | - startAutoplay() { | |
426 | - if (this.visualSlide) { | |
427 | - this.visualSlide.autoplay.start(); | |
428 | - this.visualSlide.update(); | |
429 | - } | |
430 | - }, | |
431 | - }, | |
432 | - mounted() { | |
433 | - // Swiper 인스턴스 초기화 | |
434 | - this.visualSlide = new Swiper('.visual-zone .swiper-container', { | |
435 | - loop: true, // 슬라이드 반복 여부 | |
436 | - autoplay: { | |
437 | - delay: 2500, // 2.5초마다 자동으로 슬라이드 전환 | |
438 | - disableOnInteraction: false, // 사용자가 슬라이드 조작 후에도 자동 전환 유지 | |
439 | - }, | |
440 | - pagination: { | |
441 | - el: '.swiper-pagination', // 페이지네이션 요소 | |
442 | - clickable: true, // 페이지네이션 클릭 가능 | |
443 | - }, | |
444 | - navigation: { | |
445 | - nextEl: '.swiper-button-next', // 다음 버튼 | |
446 | - prevEl: '.swiper-button-prev', // 이전 버튼 | |
447 | - }, | |
448 | - }); | |
449 | - this.cardnewsSlide = new Swiper('.cardnews-zone .swiper-container', { | |
450 | - loop: true, // 슬라이드 반복 여부 | |
451 | - slidesPerView: 3, // 한 번에 보여줄 슬라이드 개수 | |
452 | - spaceBetween: 25, | |
453 | - navigation: { | |
454 | - nextEl: '.swiper-button-next', // 다음 버튼 | |
455 | - prevEl: '.swiper-button-prev', // 이전 버튼 | |
456 | - }, | |
457 | - }); | |
458 | - } | |
459 | -}; | |
460 | -</script> |
--- client/views/pages/user/government/main/Main_v0.vue
... | ... | @@ -1,299 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class="w1400"> | |
4 | - <div class="search-bar mb30"> | |
5 | - <input | |
6 | - type="text" | |
7 | - class="full-input search-input" | |
8 | - placeholder="검색어를 입력하세요." | |
9 | - v-model="search.searchText" | |
10 | - @keyup.enter="totalSearch" | |
11 | - /> | |
12 | - <button class="icon-button search-button" @click="totalSearch"> | |
13 | - <svg-icon | |
14 | - type="mdi" | |
15 | - :path="this.$iconPath()" | |
16 | - class="search-icon" | |
17 | - ></svg-icon> | |
18 | - </button> | |
19 | - </div> | |
20 | - <div class="chart-zone mb30"> | |
21 | - <div class="box"> | |
22 | - <div class="tab-nav mb15"> | |
23 | - <ul class="flex justify-between align-center"> | |
24 | - <li | |
25 | - v-for="(item, idx) in codeList" | |
26 | - :key="idx" | |
27 | - :value="item.cd" | |
28 | - :class="{ | |
29 | - 'point-font gd-4': true, | |
30 | - activeTab: activeTab === item.cd, | |
31 | - }" | |
32 | - @click="showTab(item.cd)" | |
33 | - > | |
34 | - <p class="pd15">{{ item.cdNm }}</p> | |
35 | - </li> | |
36 | - </ul> | |
37 | - </div> | |
38 | - <div class="tab-content"> | |
39 | - <div> | |
40 | - <div class="flex justify-end align-center no-gutters mb15"> | |
41 | - <div class="select-label gd-1 text-rg mr10">기간</div> | |
42 | - <div class="gd-2"> | |
43 | - <select | |
44 | - class="full-select" | |
45 | - v-model="searchKeyword" | |
46 | - @change="fnCompanyInfo" | |
47 | - > | |
48 | - <option value="day">일별</option> | |
49 | - <option value="month">월별</option> | |
50 | - <option value="year">연도별</option> | |
51 | - </select> | |
52 | - </div> | |
53 | - </div> | |
54 | - <div class="chart-wrap" ref="chartdiv"> | |
55 | - <ClusteredColumnChart | |
56 | - :chartData="chartData" | |
57 | - columnX="stats_date" | |
58 | - /> | |
59 | - </div> | |
60 | - </div> | |
61 | - </div> | |
62 | - </div> | |
63 | - </div> | |
64 | - <div class="community-zone flex"> | |
65 | - <div class="gd-6 pl0"> | |
66 | - <div class="box"> | |
67 | - <div class="box-inner-title flex justify-between align-center"> | |
68 | - <p>공지사항</p> | |
69 | - <router-link | |
70 | - to="/government/BBS_MNG_000000000000027/list.page" | |
71 | - class="shortcuts flex align-center" | |
72 | - > | |
73 | - <p class="mr5">바로가기</p> | |
74 | - <svg-icon | |
75 | - type="mdi" | |
76 | - :width="15" | |
77 | - :height="15" | |
78 | - :path="this.$iconPath('mdiArrowRight')" | |
79 | - ></svg-icon> | |
80 | - </router-link> | |
81 | - </div> | |
82 | - <ul class="item-list" v-if="noticeTop5.length > 0"> | |
83 | - <li | |
84 | - v-for="(notice, idx) in noticeTop5" | |
85 | - :key="idx" | |
86 | - class="flex justify-between align-center pt5 pl15 cursor" | |
87 | - @click="fnNoticeViewDetail(notice.bbsId)" | |
88 | - > | |
89 | - <p>{{ notice.bbsNm }}</p> | |
90 | - <p>{{ notice.regDt }}</p> | |
91 | - </li> | |
92 | - </ul> | |
93 | - <div v-else> | |
94 | - <p class="data-none text-ct">등록된 정보가 존재하지 않습니다.</p> | |
95 | - </div> | |
96 | - </div> | |
97 | - </div> | |
98 | - <div class="gd-6 pr0"> | |
99 | - <div class="box"> | |
100 | - <div class="box-inner-title flex justify-between align-center"> | |
101 | - <p>기업정보</p> | |
102 | - <router-link | |
103 | - to="/government/companyInfo/list.page" | |
104 | - class="shortcuts flex align-center" | |
105 | - > | |
106 | - <p class="mr5">바로가기</p> | |
107 | - <svg-icon | |
108 | - type="mdi" | |
109 | - :width="15" | |
110 | - :height="15" | |
111 | - :path="this.$iconPath('mdiArrowRight')" | |
112 | - ></svg-icon> | |
113 | - </router-link> | |
114 | - </div> | |
115 | - <ul class="item-list" v-if="companyInfoList.length > 0"> | |
116 | - <li | |
117 | - v-for="(item, idx) in companyInfoList" | |
118 | - :key="idx" | |
119 | - class="flex justify-between align-center pt5 pl15 cursor" | |
120 | - @click="fnCompanyInfoViewDetail(item.entId)" | |
121 | - > | |
122 | - <p>{{ item.entNm }}</p> | |
123 | - <p>{{ item.regDt }}</p> | |
124 | - </li> | |
125 | - </ul> | |
126 | - <div v-else> | |
127 | - <p class="data-none text-ct">등록된 정보가 존재하지 않습니다.</p> | |
128 | - </div> | |
129 | - </div> | |
130 | - </div> | |
131 | - </div> | |
132 | - </div> | |
133 | - </div> | |
134 | -</template> | |
135 | - | |
136 | -<script> | |
137 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
138 | -import store from "../../../AppStore"; | |
139 | - | |
140 | -// 통합검색 관련 | |
141 | -import queryParams from "../../../../../resources/js/queryParams"; | |
142 | -import { defaultTotalSearchParams } from "../../../../../resources/js/defaultTotalSearchParams.js"; | |
143 | - | |
144 | -// API | |
145 | -import { governmentMainProc } from "../../../../../resources/api/main"; | |
146 | -import { sysListByPageProc } from "../../../../../resources/api/popup"; | |
147 | -import { findFiveNotice } from "../../../../../resources/api/bbsCn"; | |
148 | - | |
149 | -export default { | |
150 | - mixins: [queryParams], | |
151 | - components: { | |
152 | - ClusteredColumnChart: ClusteredColumnChart, | |
153 | - }, | |
154 | - data() { | |
155 | - return { | |
156 | - search: { ...defaultTotalSearchParams }, | |
157 | - mbrId: store.state.mbrId || null, // 사용자 아이디 | |
158 | - roles: store.state.roles.map((auth) => auth.authority) || [], // 사용자 권한 | |
159 | - menuType: store.state.userType || null, // 메뉴 타입 | |
160 | - | |
161 | - // 공지사항 top5 | |
162 | - noticeTop5: [], | |
163 | - | |
164 | - // 검색조건 | |
165 | - codeList: [], | |
166 | - activeTab: "categoryTab", | |
167 | - searchKeyword: "day", | |
168 | - | |
169 | - // 통계 | |
170 | - chartData: [], | |
171 | - | |
172 | - popupList: [], | |
173 | - | |
174 | - // 기업정보 | |
175 | - companyInfoList: [], | |
176 | - }; | |
177 | - }, | |
178 | - created() { | |
179 | - // 쿠키 초기화 | |
180 | - const today = new Date(); | |
181 | - let tomorrow = new Date(today.setDate(today.getDate() + 1)); | |
182 | - tomorrow.setHours(0, 0, 0, 0); | |
183 | - tomorrow = new Date(tomorrow); | |
184 | - if (this.$cookies.get("popup") == null) { | |
185 | - this.$cookies.set("popup", [], tomorrow); | |
186 | - } | |
187 | - | |
188 | - this.fnPopupList(); | |
189 | - this.fnCompanyInfo(); | |
190 | - this.fnFiveNotice(); | |
191 | - }, | |
192 | - methods: { | |
193 | - showTab: function (tabName) { | |
194 | - this.activeTab = tabName; | |
195 | - this.searchKeyword = "day"; | |
196 | - this.fnCompanyInfo(); | |
197 | - }, | |
198 | - | |
199 | - // 통합검색 | |
200 | - totalSearch() { | |
201 | - if (this.search.searchText === "") { | |
202 | - alert("검색어를 입력해주세요."); | |
203 | - return; | |
204 | - } | |
205 | - this.search.mbrId = this.mbrId; | |
206 | - this.search.roles = this.roles; | |
207 | - this.search.menuType = this.menuType; | |
208 | - this.saveQueryParams("totalSearchQueryParams", this.search); // 검색조건 저장 | |
209 | - this.$router.push({ | |
210 | - path: "/government/search.page", | |
211 | - }); | |
212 | - }, | |
213 | - | |
214 | - // 통계 조회 | |
215 | - async fnCompanyInfo() { | |
216 | - let data = { | |
217 | - activeTab: this.activeTab, | |
218 | - searchKeyword: this.searchKeyword, | |
219 | - }; | |
220 | - try { | |
221 | - const response = await governmentMainProc(data); | |
222 | - this.codeList = response.data.data.codeList; | |
223 | - this.chartData = response.data.data.governmentStats; | |
224 | - this.companyInfoList = response.data.data.companyInfo; | |
225 | - } catch (error) { | |
226 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
227 | - } | |
228 | - }, | |
229 | - | |
230 | - // 기업정보 상세 조회 | |
231 | - fnCompanyInfoViewDetail(entId) { | |
232 | - this.$router.push({ | |
233 | - path: "/government/companyInfo/view.page", | |
234 | - query: { pageId: entId }, | |
235 | - }); | |
236 | - }, | |
237 | - | |
238 | - // 팝업조회(상세) | |
239 | - async fnPopupList() { | |
240 | - let data = { | |
241 | - pageType: this.$store.state.userType, | |
242 | - }; | |
243 | - try { | |
244 | - const response = await sysListByPageProc(data); | |
245 | - let popupList = response.data.data; | |
246 | - if (popupList != null && popupList.length > 0) { | |
247 | - this.fnShowPopup(popupList); | |
248 | - } | |
249 | - } catch (error) { | |
250 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
251 | - } | |
252 | - }, | |
253 | - // 팝업 표시 | |
254 | - fnShowPopup(popupList) { | |
255 | - for (let popup of popupList) { | |
256 | - let count = false; | |
257 | - const popupCookies = this.$cookies.get("popup"); | |
258 | - if (popupCookies.length > 0) { | |
259 | - for (let cookie of popupCookies) { | |
260 | - if (popup.popupId == cookie) { | |
261 | - count = true; | |
262 | - } | |
263 | - } | |
264 | - } | |
265 | - if (!count) { | |
266 | - let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; | |
267 | - window.open( | |
268 | - "/cmmn/popup.page?popupId=" + popup.popupId, | |
269 | - "_blank", | |
270 | - size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" | |
271 | - ); | |
272 | - } | |
273 | - } | |
274 | - }, | |
275 | - | |
276 | - // 공지사항 최신 5개 조회 | |
277 | - async fnFiveNotice() { | |
278 | - try { | |
279 | - const params = { | |
280 | - bbsMngId: "BBS_MNG_000000000000004", | |
281 | - }; | |
282 | - const response = await findFiveNotice(params); | |
283 | - this.noticeTop5 = response.data.data; | |
284 | - } catch (error) { | |
285 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
286 | - } | |
287 | - }, | |
288 | - // 공지사항 상세페이지 이동 | |
289 | - fnNoticeViewDetail(bbsId) { | |
290 | - this.$router.push({ | |
291 | - path: "/government/BBS_MNG_000000000000004/view.page", | |
292 | - query: { | |
293 | - pageId: bbsId, | |
294 | - }, | |
295 | - }); | |
296 | - }, | |
297 | - }, | |
298 | -}; | |
299 | -</script> |
--- client/views/pages/user/government/main/Main_v1.vue
... | ... | @@ -1,415 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content main "> | |
3 | - <div class="w1400"> | |
4 | - | |
5 | - <!-- 메인비쥬얼 슬라이드--> | |
6 | - <div class="community-zone mb30"> | |
7 | - <div class="box-out-title flex justify-between align-center"> | |
8 | - <p>메인비주얼</p> | |
9 | - <router-link to="/government/BBS_MNG_000000000000027/list.page" class=" flex align-center"> | |
10 | - <p class="mr5">바로가기</p> | |
11 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
12 | - </router-link> | |
13 | - </div> | |
14 | - <div class="gall-zone"> | |
15 | - <div class="swiper-container"> | |
16 | - <div class="swiper-wrapper"> | |
17 | - <div class="swiper-slide" v-for="(item, index) in slides" :key="index"> | |
18 | - <img :src="item.img" :alt="item.alt" /> | |
19 | - </div> | |
20 | - </div> | |
21 | - <div class="swiper-pagination"></div> | |
22 | - <div class="swiper-button-next"></div> | |
23 | - <div class="swiper-button-prev"></div> | |
24 | - </div> | |
25 | - </div> | |
26 | - </div> | |
27 | - <!-- 바로가기 --> | |
28 | - <div class="community-zone mb30"> | |
29 | - <div class="box-out-title flex justify-between align-center"> | |
30 | - <p>바로가기</p> | |
31 | - </div> | |
32 | - <ul class="quick-link"> | |
33 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
34 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
35 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
36 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
37 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
38 | - </ul> | |
39 | - </div> | |
40 | - <!-- 검색창 --> | |
41 | - <div class="community-zone mb30"> | |
42 | - <div class="box-out-title flex justify-between align-center"> | |
43 | - <p>통합검색</p> | |
44 | - </div> | |
45 | - <div class="search-bar text-ct"> | |
46 | - <div class="box"> | |
47 | - <input type="text" class="search-input" placeholder="검색어를 입력하세요." v-model="search.searchText" | |
48 | - @keyup.enter="totalSearch" /> | |
49 | - <button class="icon-button search-button" @click="totalSearch"> | |
50 | - <svg-icon type="mdi" :path="this.$iconPath()" class="search-icon"></svg-icon> | |
51 | - </button> | |
52 | - </div> | |
53 | - </div> | |
54 | - </div> | |
55 | - | |
56 | - <!-- 카드뉴스 --> | |
57 | - <div class="community-zone mb30"> | |
58 | - <div class=" "> | |
59 | - <div class="box-out-title flex justify-between align-center"> | |
60 | - <p>카드뉴스</p> | |
61 | - <router-link to="/government/BBS_MNG_000000000000027/list.page" class="shortcuts flex align-center"> | |
62 | - <p class="mr5">바로가기</p> | |
63 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
64 | - </router-link> | |
65 | - </div> | |
66 | - | |
67 | - <ul class="search-list"> | |
68 | - <li class="li box"> | |
69 | - <a href="component/component_02_01.html"> | |
70 | - <div class="img-wrap main_1"></div> | |
71 | - <div class="conts-wrap"> | |
72 | - <h4 class="tit">컴포넌트</h4> | |
73 | - <p class="desc">디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드</p> | |
74 | - <div class="full-input flex justify-end"> | |
75 | - <div class="btn-wrap flex align-center"> | |
76 | - <p class="mr5">바로가기</p> | |
77 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
78 | - </div> | |
79 | - </div> | |
80 | - </div> | |
81 | - </a> | |
82 | - </li> | |
83 | - <li class="li box"> | |
84 | - <a href="global/global_01.html"> | |
85 | - <div class="img-wrap main_2"></div> | |
86 | - <div class="conts-wrap"> | |
87 | - <h4 class="tit">기본 패턴</h4> | |
88 | - <p class="desc">핵심 서비스에서 공통으로 사용되는 과업을 기반으로 일관성있는 경험을 위한 기본 패턴 가이드</p> | |
89 | - <div class="full-input flex justify-end"> | |
90 | - <div class="btn-wrap flex align-center"> | |
91 | - <p class="mr5">바로가기</p> | |
92 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
93 | - </div> | |
94 | - </div> | |
95 | - </div> | |
96 | - </a> | |
97 | - </li> | |
98 | - <li class="li box"> | |
99 | - <a href="service/service_01_01.html"> | |
100 | - <div class="img-wrap main_3"></div> | |
101 | - <div class="conts-wrap"> | |
102 | - <h4 class="tit">서비스 패턴</h4> | |
103 | - <p class="desc">공공웹·앱에서 제공하는 핵심서비스에 대한 사용자 플로우 와 사용자 경험 설계의 가이드</p> | |
104 | - <div class="full-input flex justify-end"> | |
105 | - <div class="btn-wrap flex align-center"> | |
106 | - <p class="mr5">바로가기</p> | |
107 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
108 | - </div> | |
109 | - </div> | |
110 | - </div> | |
111 | - </a> | |
112 | - </li> | |
113 | - </ul> | |
114 | - </div> | |
115 | - </div> | |
116 | - | |
117 | - <!-- 탭존 --> | |
118 | - <div class="chart-zone mb30"> | |
119 | - <div class="box-out-title flex justify-between align-center"> | |
120 | - <p>탭메뉴</p> | |
121 | - </div> | |
122 | - <div class="box"> | |
123 | - <div class="tab-nav mb15"> | |
124 | - <ul class="flex justify-between align-center"> | |
125 | - <li v-for="(item, idx) in codeList" :key="idx" :value="item.cd" :class="{ | |
126 | - ' gd-4': true, | |
127 | - activeTab: activeTab === item.cd, | |
128 | - }" @click="showTab(item.cd)"> | |
129 | - <p class="pd15">{{ item.cdNm }}</p> | |
130 | - </li> | |
131 | - </ul> | |
132 | - </div> | |
133 | - <div class="tab-content"> | |
134 | - <div> | |
135 | - <div class="flex justify-end align-center no-gutters mb15"> | |
136 | - <div class="select-label gd-1 text-rg mr10">기간</div> | |
137 | - <div class="gd-2"> | |
138 | - <select class="full-select" v-model="searchKeyword" @change="fnCompanyInfo"> | |
139 | - <option value="day">일별</option> | |
140 | - <option value="month">월별</option> | |
141 | - <option value="year">연도별</option> | |
142 | - </select> | |
143 | - </div> | |
144 | - </div> | |
145 | - <div class="chart-wrap" ref="chartdiv"> | |
146 | - <ClusteredColumnChart :chartData="chartData" columnX="stats_date" /> | |
147 | - </div> | |
148 | - </div> | |
149 | - </div> | |
150 | - </div> | |
151 | - </div> | |
152 | - <!-- 공지사항 및 배너 --> | |
153 | - <div class="community-zone flex justify-between mb50"> | |
154 | - <div class="gd-6 pl0"> | |
155 | - <div class="box-out-title flex justify-between align-center"> | |
156 | - <p>공지사항(목록형)</p> | |
157 | - <router-link to="/government/BBS_MNG_000000000000027/list.page" class=" flex align-center"> | |
158 | - <p class="mr5">바로가기</p> | |
159 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
160 | - </router-link> | |
161 | - </div> | |
162 | - <div class="box"> | |
163 | - <div class="list_news clearfix"> | |
164 | - <ul> | |
165 | - <li class="leli"> | |
166 | - <a href="/cop/bbs/BBSMSTR_000000000462/selectBoardArticle.do?nttId=B00000385086yu8gY8wc7ml1" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
167 | - <span>2025.01.08</span> | |
168 | - </li> | |
169 | - <li class="leli"> | |
170 | - <a href="/cop/bbs/BBSMSTR_000000000462/selectBoardArticle.do?nttId=B00000385086yu8gY8wc7ml1" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
171 | - <span>2025.01.08</span> | |
172 | - </li> | |
173 | - <li class="leli"> | |
174 | - <a href="/cop/bbs/BBSMSTR_000000000462/selectBoardArticle.do?nttId=B00000385086yu8gY8wc7ml1" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
175 | - <span>2025.01.08</span> | |
176 | - </li> | |
177 | - </ul> | |
178 | - </div> | |
179 | - </div> | |
180 | - </div> | |
181 | - <div class="gd-6 pr0"> | |
182 | - <div class="box-out-title flex justify-between align-center"> | |
183 | - <p>배너</p> | |
184 | - <router-link to="/government/companyInfo/list.page" class=" flex align-center"> | |
185 | - <p class="mr5">바로가기</p> | |
186 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
187 | - </router-link> | |
188 | - </div> | |
189 | - <div class="box"> | |
190 | - | |
191 | - <div class="banner-zone"> | |
192 | - <div class="swiper-container"> | |
193 | - <div class="swiper-wrapper"> | |
194 | - <div class="swiper-slide" v-for="(item, index) in slides" :key="index"> | |
195 | - <img :src="item.img" :alt="item.alt" /> | |
196 | - </div> | |
197 | - </div> | |
198 | - | |
199 | - <!-- <button @click="startAutoplay" type="button" class="button play" data-control="play" style="display: none;"><span>분야별 정보 슬라이드 재생</span></button> | |
200 | - <button @click="stopAutoplay" type="button" class="button stop hidden" data-control="stop" style=""><span>분야별 정보 슬라이드 정지</span></button> --> | |
201 | - </div> | |
202 | - <div class="swiper-pagination"></div> | |
203 | - <div class="swiper-button-prev button"></div> | |
204 | - <div class="swiper-button-next button"></div> | |
205 | - </div> | |
206 | - </div> | |
207 | - </div> | |
208 | - </div> | |
209 | - </div> | |
210 | - </div> | |
211 | -</template> | |
212 | - | |
213 | -<script> | |
214 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
215 | -import store from "../../../AppStore"; | |
216 | - | |
217 | -// 통합검색 관련 | |
218 | -import queryParams from "../../../../../resources/js/queryParams"; | |
219 | -import { defaultTotalSearchParams } from "../../../../../resources/js/defaultTotalSearchParams.js"; | |
220 | - | |
221 | -// API | |
222 | -import { governmentMainProc } from "../../../../../resources/api/main"; | |
223 | -import { sysListByPageProc } from "../../../../../resources/api/popup"; | |
224 | -import { findFiveNotice } from "../../../../../resources/api/bbsCn"; | |
225 | -import Swiper from 'swiper'; | |
226 | - | |
227 | -export default { | |
228 | - name: 'SwiperComponent', | |
229 | - mixins: [queryParams], | |
230 | - components: { | |
231 | - ClusteredColumnChart: ClusteredColumnChart, | |
232 | - }, | |
233 | - data() { | |
234 | - return { | |
235 | - slides: [ | |
236 | - { img: 'https://via.placeholder.com/600x300?text=Slide+1', alt: 'Slide 1' }, | |
237 | - { img: 'https://via.placeholder.com/600x300?text=Slide+2', alt: 'Slide 2' }, | |
238 | - { img: 'https://via.placeholder.com/600x300?text=Slide+3', alt: 'Slide 3' }, | |
239 | - ], | |
240 | - search: { ...defaultTotalSearchParams }, | |
241 | - mbrId: store.state.mbrId || null, // 사용자 아이디 | |
242 | - roles: store.state.roles.map((auth) => auth.authority) || [], // 사용자 권한 | |
243 | - menuType: store.state.userType || null, // 메뉴 타입 | |
244 | - | |
245 | - // 공지사항 top5 | |
246 | - noticeTop5: [], | |
247 | - | |
248 | - // 검색조건 | |
249 | - codeList: [], | |
250 | - activeTab: "categoryTab", | |
251 | - searchKeyword: "day", | |
252 | - | |
253 | - // 통계 | |
254 | - chartData: [], | |
255 | - | |
256 | - popupList: [], | |
257 | - | |
258 | - // 기업정보 | |
259 | - companyInfoList: [], | |
260 | - }; | |
261 | - }, | |
262 | - created() { | |
263 | - // 쿠키 초기화 | |
264 | - const today = new Date(); | |
265 | - let tomorrow = new Date(today.setDate(today.getDate() + 1)); | |
266 | - tomorrow.setHours(0, 0, 0, 0); | |
267 | - tomorrow = new Date(tomorrow); | |
268 | - if (this.$cookies.get("popup") == null) { | |
269 | - this.$cookies.set("popup", [], tomorrow); | |
270 | - } | |
271 | - | |
272 | - this.fnPopupList(); | |
273 | - this.fnCompanyInfo(); | |
274 | - this.fnFiveNotice(); | |
275 | - }, | |
276 | - methods: { | |
277 | - | |
278 | - | |
279 | - showTab: function (tabName) { | |
280 | - this.activeTab = tabName; | |
281 | - this.searchKeyword = "day"; | |
282 | - this.fnCompanyInfo(); | |
283 | - }, | |
284 | - | |
285 | - // 통합검색 | |
286 | - totalSearch() { | |
287 | - if (this.search.searchText === "") { | |
288 | - alert("검색어를 입력해주세요."); | |
289 | - return; | |
290 | - } | |
291 | - this.search.mbrId = this.mbrId; | |
292 | - this.search.roles = this.roles; | |
293 | - this.search.menuType = this.menuType; | |
294 | - this.saveQueryParams("totalSearchQueryParams", this.search); // 검색조건 저장 | |
295 | - this.$router.push({ | |
296 | - path: "/government/search.page", | |
297 | - }); | |
298 | - }, | |
299 | - | |
300 | - // 통계 조회 | |
301 | - async fnCompanyInfo() { | |
302 | - let data = { | |
303 | - activeTab: this.activeTab, | |
304 | - searchKeyword: this.searchKeyword, | |
305 | - }; | |
306 | - try { | |
307 | - const response = await governmentMainProc(data); | |
308 | - this.codeList = response.data.data.codeList; | |
309 | - this.chartData = response.data.data.governmentStats; | |
310 | - this.companyInfoList = response.data.data.companyInfo; | |
311 | - } catch (error) { | |
312 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
313 | - } | |
314 | - }, | |
315 | - | |
316 | - // 기업정보 상세 조회 | |
317 | - fnCompanyInfoViewDetail(entId) { | |
318 | - this.$router.push({ | |
319 | - path: "/government/companyInfo/view.page", | |
320 | - query: { pageId: entId }, | |
321 | - }); | |
322 | - }, | |
323 | - | |
324 | - // 팝업조회(상세) | |
325 | - async fnPopupList() { | |
326 | - let data = { | |
327 | - pageType: this.$store.state.userType, | |
328 | - }; | |
329 | - try { | |
330 | - const response = await sysListByPageProc(data); | |
331 | - let popupList = response.data.data; | |
332 | - if (popupList != null && popupList.length > 0) { | |
333 | - this.fnShowPopup(popupList); | |
334 | - } | |
335 | - } catch (error) { | |
336 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
337 | - } | |
338 | - }, | |
339 | - // 팝업 표시 | |
340 | - fnShowPopup(popupList) { | |
341 | - for (let popup of popupList) { | |
342 | - let count = false; | |
343 | - const popupCookies = this.$cookies.get("popup"); | |
344 | - if (popupCookies.length > 0) { | |
345 | - for (let cookie of popupCookies) { | |
346 | - if (popup.popupId == cookie) { | |
347 | - count = true; | |
348 | - } | |
349 | - } | |
350 | - } | |
351 | - if (!count) { | |
352 | - let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; | |
353 | - window.open( | |
354 | - "/cmmn/popup.page?popupId=" + popup.popupId, | |
355 | - "_blank", | |
356 | - size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" | |
357 | - ); | |
358 | - } | |
359 | - } | |
360 | - }, | |
361 | - | |
362 | - // 공지사항 최신 5개 조회 | |
363 | - async fnFiveNotice() { | |
364 | - try { | |
365 | - const params = { | |
366 | - bbsMngId: "BBS_MNG_000000000000004", | |
367 | - }; | |
368 | - const response = await findFiveNotice(params); | |
369 | - this.noticeTop5 = response.data.data; | |
370 | - } catch (error) { | |
371 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
372 | - } | |
373 | - }, | |
374 | - // 공지사항 상세페이지 이동 | |
375 | - fnNoticeViewDetail(bbsId) { | |
376 | - this.$router.push({ | |
377 | - path: "/government/BBS_MNG_000000000000004/view.page", | |
378 | - query: { | |
379 | - pageId: bbsId, | |
380 | - }, | |
381 | - }); | |
382 | - }, | |
383 | - stopAutoplay() { | |
384 | - if (this.swiperInstance) { | |
385 | - this.swiperInstance.autoplay.stop(); | |
386 | - } | |
387 | - }, | |
388 | - // 자동 슬라이드 전환 시작하기 | |
389 | - startAutoplay() { | |
390 | - if (this.swiperInstance) { | |
391 | - this.swiperInstance.autoplay.start(); | |
392 | - this.swiperInstance.update(); | |
393 | - } | |
394 | - }, | |
395 | - }, | |
396 | - mounted() { | |
397 | - // Swiper 인스턴스 초기화 | |
398 | - this.swiperInstance = new Swiper('.swiper-container', { | |
399 | - loop: true, // 슬라이드 반복 여부 | |
400 | - autoplay: { | |
401 | - delay: 2500, // 2.5초마다 자동으로 슬라이드 전환 | |
402 | - disableOnInteraction: false, // 사용자가 슬라이드 조작 후에도 자동 전환 유지 | |
403 | - }, | |
404 | - pagination: { | |
405 | - el: '.swiper-pagination', // 페이지네이션 요소 | |
406 | - clickable: true, // 페이지네이션 클릭 가능 | |
407 | - }, | |
408 | - navigation: { | |
409 | - nextEl: '.swiper-button-next', // 다음 버튼 | |
410 | - prevEl: '.swiper-button-prev', // 이전 버튼 | |
411 | - }, | |
412 | - }); | |
413 | - } | |
414 | -}; | |
415 | -</script> |
--- client/views/pages/user/government/main/Main_v2.vue
... | ... | @@ -1,460 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content main "> | |
3 | - <div class="w1400"> | |
4 | - <!-- 공지사항 및 배너 --> | |
5 | - <div class="community-zone flex mb30"> | |
6 | - <div class="visual-zone gd-8 pl0"> | |
7 | - <div class="swiper-container"> | |
8 | - <div class="swiper-wrapper"> | |
9 | - <div class="swiper-slide" v-for="(item, index) in visualSlides" :key="index"> | |
10 | - <img :src="item.img" :alt="item.alt" /> | |
11 | - </div> | |
12 | - </div> | |
13 | - </div> | |
14 | - <div class="swiper-pagination"></div> | |
15 | - <div class="swiper-button-prev button"></div> | |
16 | - <div class="swiper-button-next button"></div> | |
17 | - </div> | |
18 | - <div class="gd-4 pr0 "> | |
19 | - | |
20 | - <!-- 검색창 --> | |
21 | - <div class="community-zone mb20"> | |
22 | - <div class="box-out-title flex justify-between align-center"> | |
23 | - | |
24 | - </div> | |
25 | - <div class="search-bar text-ct" tabindex="0"> | |
26 | - <div class="box"> | |
27 | - <p>통합검색</p> | |
28 | - <div class="bar"></div> | |
29 | - <input type="text" class="search-input" placeholder="검색어를 입력하세요." v-model="search.searchText" | |
30 | - @keyup.enter="totalSearch" /> | |
31 | - <button class="icon-button search-button" @click="totalSearch"> | |
32 | - <svg-icon type="mdi" :path="this.$iconPath()" class="search-icon"></svg-icon> | |
33 | - </button> | |
34 | - </div> | |
35 | - </div> | |
36 | - </div> | |
37 | - <div class=""> | |
38 | - | |
39 | - <div class="box-out-title flex justify-between align-center"> | |
40 | - <p>공지사항(목록형)</p> | |
41 | - <router-link to="/government/BBS_MNG_000000000000027/list.page" class=" flex align-center"> | |
42 | - <p class="mr5">바로가기</p> | |
43 | - <svg-icon type="mdi" :width="15" :height="15" :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
44 | - </router-link> | |
45 | - </div> | |
46 | - <div class="box"> | |
47 | - <div class="tab-nav mb15"> | |
48 | - <ul class="flex align-center" style="gap: 30px;"> | |
49 | - <li v-for="(item, idx) in codeList" :key="idx" :value="item.cd" :class="{ | |
50 | - ' ': true, | |
51 | - activeTab: activeTab === item.cd, | |
52 | - }" @click="showTab(item.cd)"> | |
53 | - <p>{{ item.cdNm }}</p> | |
54 | - </li> | |
55 | - </ul> | |
56 | - </div> | |
57 | - <div class="tab-content"> | |
58 | - <div> | |
59 | - <div class="list_news flex justify-between" style="gap: 20px;"> | |
60 | - <ul> | |
61 | - <li class="leli"> | |
62 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
63 | - <span>2025.01.08</span> | |
64 | - </li> | |
65 | - <li class="leli"> | |
66 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
67 | - <span>2025.01.08</span> | |
68 | - </li> | |
69 | - <li class="leli"> | |
70 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
71 | - <span>2025.01.08</span> | |
72 | - </li> | |
73 | - </ul> | |
74 | - <ul> | |
75 | - <li class="leli"> | |
76 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
77 | - <span>2025.01.08</span> | |
78 | - </li> | |
79 | - <li class="leli"> | |
80 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
81 | - <span>2025.01.08</span> | |
82 | - </li> | |
83 | - <li class="leli"> | |
84 | - <a href="" title="천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)">천안청년센터 이음 매니저 채용 공고(청년인턴, 청년도전지원사업)</a> | |
85 | - <span>2025.01.08</span> | |
86 | - </li> | |
87 | - </ul> | |
88 | - </div> | |
89 | - </div> | |
90 | - </div> | |
91 | - | |
92 | - </div> | |
93 | - </div> | |
94 | - | |
95 | - </div> | |
96 | - | |
97 | - | |
98 | - </div> | |
99 | - <!-- 바로가기 --> | |
100 | - <div class="community-zone mb20"> | |
101 | - <div class="box-out-title flex justify-between align-center"> | |
102 | - <p>바로가기</p> | |
103 | - </div> | |
104 | - <ul class="quick-link"> | |
105 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
106 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
107 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
108 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
109 | - <li><a href="/yeyak.do" target="_blank" title="새창열림" class="link"><i class="icon n1"></i>통합예약</a></li> | |
110 | - </ul> | |
111 | - </div> | |
112 | - | |
113 | - | |
114 | - <!-- 배너 --> | |
115 | - <div class="community-zone mb30"> | |
116 | - <div class="best_service"> | |
117 | - <h4><span>BEST1</span><strong>대제목</strong> 1</h4> | |
118 | - <div class="service_wrap"> | |
119 | - <div class="left_cont best1"> | |
120 | - <a href="#"><img src="../../../../../../client/resources/img/img1.png" alt=""></a> | |
121 | - <div class="txt"> | |
122 | - <span class="label_tag etc_tag">키워드</span> | |
123 | - <h5>부제목</h5> | |
124 | - <div class="sub_info">배너내용</div> | |
125 | - <div class="point_info"><strong>배너내용 강조</strong></div> | |
126 | - </div> | |
127 | - | |
128 | - <!-- <div class="btn_set"> | |
129 | - <a href="" class="btn_small btn_bg_blue">신청하기</a> | |
130 | - | |
131 | - </div> --> | |
132 | - </div> | |
133 | - <div class="right_cont"> | |
134 | - <ul class="product_list"> | |
135 | - <li> | |
136 | - <div class="pdt_info"> | |
137 | - <strong class="pdt_name">제목</strong> | |
138 | - <span class="label_tag blue_tag">키워드</span> | |
139 | - <div class="pdt_simple_info"> | |
140 | - 내용 | |
141 | - </div> | |
142 | - <a href="" class="btn_small btn_bg_green">바로가기</a> | |
143 | - </div> | |
144 | - </li> | |
145 | - <li> | |
146 | - <div class="pdt_info"> | |
147 | - <strong class="pdt_name">제목</strong> | |
148 | - <span class="label_tag blue_tag">키워드</span> | |
149 | - <div class="pdt_simple_info">내용 | |
150 | - </div> | |
151 | - <a href="" class="btn_small btn_bg_green">바로가기</a> | |
152 | - </div> | |
153 | - </li> | |
154 | - <li> | |
155 | - <div class="pdt_info"> | |
156 | - <strong class="pdt_name">제목</strong><span class="label_tag green_tag">키워드</span><span | |
157 | - class="label_tag blue_tag">키워드</span> | |
158 | - <div class="pdt_simple_info">내용</div> | |
159 | - <a href="" class="btn_small btn_bg_blue">신청하기</a> | |
160 | - </div> | |
161 | - </li> | |
162 | - </ul> | |
163 | - </div> | |
164 | - </div> | |
165 | - </div> | |
166 | - </div> | |
167 | - | |
168 | - <!-- 카드뉴스 --> | |
169 | - <div class="cardnews-zone mb30"> | |
170 | - <div class=" "> | |
171 | - <div class="box-out-title flex justify-between align-center"> | |
172 | - <p>카드뉴스</p> | |
173 | - | |
174 | - </div> | |
175 | - <div class="swiper-container"> | |
176 | - <ul class="swiper-wrapper search-list"> | |
177 | - <li class="li box swiper-slide" v-for="(item, index) in slides" :key="index" > | |
178 | - <a :href="item.link"> | |
179 | - <div class="img-wrap" :class="item.imgClass"> | |
180 | - <img :src="item.img" :alt="item.alt" /> | |
181 | - </div> | |
182 | - <div class="conts-wrap"> | |
183 | - <h4 class="tit">{{ item.title }}</h4> | |
184 | - <p class="desc">{{ item.description }}</p> | |
185 | - <div class="full-input flex justify-end"> | |
186 | - <div class="btn-wrap flex align-center"> | |
187 | - <p class="mr5">바로가기</p> | |
188 | - <svg-icon type="mdi" :width="15" :height="15" | |
189 | - :path="this.$iconPath('mdiArrowRight')"></svg-icon> | |
190 | - </div> | |
191 | - </div> | |
192 | - </div> | |
193 | - </a> | |
194 | - </li> | |
195 | - </ul> | |
196 | - </div> | |
197 | - <div class="swiper-button-prev button"></div> | |
198 | - <div class="swiper-button-next button"></div> | |
199 | - | |
200 | - </div> | |
201 | - </div> | |
202 | - | |
203 | - <!-- 배너존 --> | |
204 | - <div class="chart-zone mb30"> | |
205 | - <div class="box-out-title flex justify-between align-center"> | |
206 | - <p>배너</p> | |
207 | - </div> | |
208 | - <div class="banner-zone"> | |
209 | - <div class="banner_txt"> | |
210 | - <span>해당페이지</span> | |
211 | - <!-- 230808 문구 수정 --> | |
212 | - <span class="b_txt"><strong>해당페이지</strong>을 이용해 보세요.</span> | |
213 | - <!-- // 230808 문구 수정 --> | |
214 | - </div> | |
215 | - <a href="" class="btn_link" title="새창열림">바로 체험하기</a> | |
216 | - </div> | |
217 | - </div> | |
218 | - | |
219 | - </div> | |
220 | - </div> | |
221 | -</template> | |
222 | - | |
223 | -<script> | |
224 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
225 | -import store from "../../../AppStore"; | |
226 | - | |
227 | -// 통합검색 관련 | |
228 | -import queryParams from "../../../../../resources/js/queryParams"; | |
229 | -import { defaultTotalSearchParams } from "../../../../../resources/js/defaultTotalSearchParams.js"; | |
230 | - | |
231 | -// API | |
232 | -import { governmentMainProc } from "../../../../../resources/api/main"; | |
233 | -import { sysListByPageProc } from "../../../../../resources/api/popup"; | |
234 | -import { findFiveNotice } from "../../../../../resources/api/bbsCn"; | |
235 | -import Swiper from 'swiper'; | |
236 | - | |
237 | -export default { | |
238 | - name: 'SwiperComponent', | |
239 | - mixins: [queryParams], | |
240 | - components: { | |
241 | - ClusteredColumnChart: ClusteredColumnChart, | |
242 | - }, | |
243 | - data() { | |
244 | - return { | |
245 | - visualSlides: [ | |
246 | - { img: 'https://via.placeholder.com/600x300?text=Slide+1', alt: 'Slide 1' }, | |
247 | - { img: 'https://via.placeholder.com/600x300?text=Slide+2', alt: 'Slide 2' }, | |
248 | - { img: 'https://via.placeholder.com/600x300?text=Slide+3', alt: 'Slide 3' }, | |
249 | - ], | |
250 | - slides: [ | |
251 | - { | |
252 | - img: 'https://via.placeholder.com/600x300?text=Slide+1', | |
253 | - alt: 'Slide 1', | |
254 | - title: '컴포넌트 1', | |
255 | - description: '디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드디지털 정부서비스 UI를 구성하는 공통 요소 기반으로 일관성 있는 구현이 용이한 컴포넌트 가이드', | |
256 | - link: 'component/component_02_01.html', | |
257 | - imgClass: 'main_1' // 각 슬라이드에 고유한 클래스 적용 | |
258 | - }, | |
259 | - { | |
260 | - img: 'https://via.placeholder.com/600x300?text=Slide+2', | |
261 | - alt: 'Slide 2', | |
262 | - title: '컴포넌트 2', | |
263 | - description: '두 번째 컴포넌트 설명', | |
264 | - link: 'component/component_02_02.html', | |
265 | - imgClass: 'main_2' | |
266 | - }, | |
267 | - { | |
268 | - img: 'https://via.placeholder.com/600x300?text=Slide+3', | |
269 | - alt: 'Slide 3', | |
270 | - title: '컴포넌트 3', | |
271 | - description: '세 번째 컴포넌트 설명', | |
272 | - link: 'component/component_02_03.html', | |
273 | - imgClass: 'main_3' | |
274 | - } | |
275 | - ], | |
276 | - search: { ...defaultTotalSearchParams }, | |
277 | - mbrId: store.state.mbrId || null, // 사용자 아이디 | |
278 | - roles: store.state.roles.map((auth) => auth.authority) || [], // 사용자 권한 | |
279 | - menuType: store.state.userType || null, // 메뉴 타입 | |
280 | - | |
281 | - // 공지사항 top5 | |
282 | - noticeTop5: [], | |
283 | - | |
284 | - // 검색조건 | |
285 | - codeList: [], | |
286 | - activeTab: "categoryTab", | |
287 | - searchKeyword: "day", | |
288 | - | |
289 | - // 통계 | |
290 | - chartData: [], | |
291 | - | |
292 | - popupList: [], | |
293 | - | |
294 | - // 기업정보 | |
295 | - companyInfoList: [], | |
296 | - }; | |
297 | - }, | |
298 | - created() { | |
299 | - // 쿠키 초기화 | |
300 | - const today = new Date(); | |
301 | - let tomorrow = new Date(today.setDate(today.getDate() + 1)); | |
302 | - tomorrow.setHours(0, 0, 0, 0); | |
303 | - tomorrow = new Date(tomorrow); | |
304 | - if (this.$cookies.get("popup") == null) { | |
305 | - this.$cookies.set("popup", [], tomorrow); | |
306 | - } | |
307 | - | |
308 | - this.fnPopupList(); | |
309 | - this.fnCompanyInfo(); | |
310 | - this.fnFiveNotice(); | |
311 | - }, | |
312 | - methods: { | |
313 | - | |
314 | - | |
315 | - showTab: function (tabName) { | |
316 | - this.activeTab = tabName; | |
317 | - this.searchKeyword = "day"; | |
318 | - this.fnCompanyInfo(); | |
319 | - }, | |
320 | - | |
321 | - // 통합검색 | |
322 | - totalSearch() { | |
323 | - if (this.search.searchText === "") { | |
324 | - alert("검색어를 입력해주세요."); | |
325 | - return; | |
326 | - } | |
327 | - this.search.mbrId = this.mbrId; | |
328 | - this.search.roles = this.roles; | |
329 | - this.search.menuType = this.menuType; | |
330 | - this.saveQueryParams("totalSearchQueryParams", this.search); // 검색조건 저장 | |
331 | - this.$router.push({ | |
332 | - path: "/government/search.page", | |
333 | - }); | |
334 | - }, | |
335 | - | |
336 | - // 통계 조회 | |
337 | - async fnCompanyInfo() { | |
338 | - let data = { | |
339 | - activeTab: this.activeTab, | |
340 | - searchKeyword: this.searchKeyword, | |
341 | - }; | |
342 | - try { | |
343 | - const response = await governmentMainProc(data); | |
344 | - this.codeList = response.data.data.codeList; | |
345 | - this.chartData = response.data.data.governmentStats; | |
346 | - this.companyInfoList = response.data.data.companyInfo; | |
347 | - } catch (error) { | |
348 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
349 | - } | |
350 | - }, | |
351 | - | |
352 | - // 기업정보 상세 조회 | |
353 | - fnCompanyInfoViewDetail(entId) { | |
354 | - this.$router.push({ | |
355 | - path: "/government/companyInfo/view.page", | |
356 | - query: { pageId: entId }, | |
357 | - }); | |
358 | - }, | |
359 | - | |
360 | - // 팝업조회(상세) | |
361 | - async fnPopupList() { | |
362 | - let data = { | |
363 | - pageType: this.$store.state.userType, | |
364 | - }; | |
365 | - try { | |
366 | - const response = await sysListByPageProc(data); | |
367 | - let popupList = response.data.data; | |
368 | - if (popupList != null && popupList.length > 0) { | |
369 | - this.fnShowPopup(popupList); | |
370 | - } | |
371 | - } catch (error) { | |
372 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
373 | - } | |
374 | - }, | |
375 | - // 팝업 표시 | |
376 | - fnShowPopup(popupList) { | |
377 | - for (let popup of popupList) { | |
378 | - let count = false; | |
379 | - const popupCookies = this.$cookies.get("popup"); | |
380 | - if (popupCookies.length > 0) { | |
381 | - for (let cookie of popupCookies) { | |
382 | - if (popup.popupId == cookie) { | |
383 | - count = true; | |
384 | - } | |
385 | - } | |
386 | - } | |
387 | - if (!count) { | |
388 | - let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; | |
389 | - window.open( | |
390 | - "/cmmn/popup.page?popupId=" + popup.popupId, | |
391 | - "_blank", | |
392 | - size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" | |
393 | - ); | |
394 | - } | |
395 | - } | |
396 | - }, | |
397 | - | |
398 | - // 공지사항 최신 5개 조회 | |
399 | - async fnFiveNotice() { | |
400 | - try { | |
401 | - const params = { | |
402 | - bbsMngId: "BBS_MNG_000000000000004", | |
403 | - }; | |
404 | - const response = await findFiveNotice(params); | |
405 | - this.noticeTop5 = response.data.data; | |
406 | - } catch (error) { | |
407 | - alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); | |
408 | - } | |
409 | - }, | |
410 | - // 공지사항 상세페이지 이동 | |
411 | - fnNoticeViewDetail(bbsId) { | |
412 | - this.$router.push({ | |
413 | - path: "/government/BBS_MNG_000000000000004/view.page", | |
414 | - query: { | |
415 | - pageId: bbsId, | |
416 | - }, | |
417 | - }); | |
418 | - }, | |
419 | - stopAutoplay() { | |
420 | - if (this.visualSlide) { | |
421 | - this.visualSlide.autoplay.stop(); | |
422 | - } | |
423 | - }, | |
424 | - // 자동 슬라이드 전환 시작하기 | |
425 | - startAutoplay() { | |
426 | - if (this.visualSlide) { | |
427 | - this.visualSlide.autoplay.start(); | |
428 | - this.visualSlide.update(); | |
429 | - } | |
430 | - }, | |
431 | - }, | |
432 | - mounted() { | |
433 | - // Swiper 인스턴스 초기화 | |
434 | - this.visualSlide = new Swiper('.visual-zone .swiper-container', { | |
435 | - loop: true, // 슬라이드 반복 여부 | |
436 | - autoplay: { | |
437 | - delay: 2500, // 2.5초마다 자동으로 슬라이드 전환 | |
438 | - disableOnInteraction: false, // 사용자가 슬라이드 조작 후에도 자동 전환 유지 | |
439 | - }, | |
440 | - pagination: { | |
441 | - el: '.swiper-pagination', // 페이지네이션 요소 | |
442 | - clickable: true, // 페이지네이션 클릭 가능 | |
443 | - }, | |
444 | - navigation: { | |
445 | - nextEl: '.swiper-button-next', // 다음 버튼 | |
446 | - prevEl: '.swiper-button-prev', // 이전 버튼 | |
447 | - }, | |
448 | - }); | |
449 | - this.cardnewsSlide = new Swiper('.cardnews-zone .swiper-container', { | |
450 | - loop: true, // 슬라이드 반복 여부 | |
451 | - slidesPerView: 3, // 한 번에 보여줄 슬라이드 개수 | |
452 | - spaceBetween: 25, | |
453 | - navigation: { | |
454 | - nextEl: '.swiper-button-next', // 다음 버튼 | |
455 | - prevEl: '.swiper-button-prev', // 이전 버튼 | |
456 | - }, | |
457 | - }); | |
458 | - } | |
459 | -}; | |
460 | -</script> |
--- client/views/pages/user/government/myPage/myInfo/MyInfoInsert.vue
... | ... | @@ -1,28 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>내 정보 관리</p> | |
6 | - </div> | |
7 | - | |
8 | - <UserInfoInsert :pageId="pageId" /> | |
9 | - </div> | |
10 | - </div> | |
11 | -</template> | |
12 | - | |
13 | -<script> | |
14 | -// COMPONENETS | |
15 | -import UserInfoInsert from "../../../../../component/userInfo/UserInfoInsert.vue"; | |
16 | - | |
17 | -export default { | |
18 | - components: { | |
19 | - UserInfoInsert, | |
20 | - }, | |
21 | - data() { | |
22 | - return { | |
23 | - pageId: this.$store.state.mbrId, // 페이지 아이디 | |
24 | - pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 | |
25 | - }; | |
26 | - }, | |
27 | -}; | |
28 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/myPage/myInfo/MyInfoView.vue
... | ... | @@ -1,27 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>내 정보</p> | |
6 | - </div> | |
7 | - | |
8 | - <UserInfoView :pageId="pageId" /> | |
9 | - </div> | |
10 | - </div> | |
11 | -</template> | |
12 | - | |
13 | -<script> | |
14 | -// COMPONENETS | |
15 | -import UserInfoView from "../../../../../component/userInfo/UserInfoView.vue"; | |
16 | - | |
17 | -export default { | |
18 | - components: { | |
19 | - UserInfoView, | |
20 | - }, | |
21 | - data() { | |
22 | - return { | |
23 | - pageId: this.$store.state.mbrId, // 페이지 아이디 | |
24 | - }; | |
25 | - }, | |
26 | -}; | |
27 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/searchPage/SearchPage.vue
... | ... | @@ -1,367 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class="w1400"> | |
4 | - <div class="search-bar mb30 user-search-bar"> | |
5 | - <input type="text" class="full-input search-input" placeholder="검색어를 입력하세요." v-model="inputSearchText" @keyup.enter="totalSearch"/> | |
6 | - <button class="icon-button search-button" @click="totalSearch"> | |
7 | - <svg-icon type="mdi" :path="this.$iconPath()" class="search-icon"></svg-icon> | |
8 | - </button> | |
9 | - </div> | |
10 | - <div class="search-content"> | |
11 | - <p class="mb30 box-title"><strong>{{ search.searchText }}</strong>에 대한 <strong class="red-text">총 {{ totalCount }}</strong>건의 검색결과를 | |
12 | - 찾았습니다.</p> | |
13 | - <ul> | |
14 | - <li class="mb30" v-for="(item, idx) in pageList" :key="idx"> | |
15 | - <div class="border background radius pd10"> | |
16 | - <p class="chart-title">{{ item.fullMenuNm }} ({{ item.totalListCount }}건)</p> | |
17 | - </div> | |
18 | - <ul class="mb10"> | |
19 | - <li class="pd10 border-b" v-for="(subItem, subIdx) in item.previewList" @click="fnView(item, subItem)" style="cursor: pointer;" :key="subIdx"> | |
20 | - <div class="flex justify-start align-center mb10"> | |
21 | - <div v-if="subItem.title != null && subItem.title != ''" class="gd-10"> | |
22 | - <p class="detail-bold ">{{ subItem.title }}</p> | |
23 | - </div> | |
24 | - <div v-else class="gd-10"> | |
25 | - <p class="detail-bold ">Q.</p> | |
26 | - </div> | |
27 | - <div class="gd-2"> | |
28 | - <p class="date-text text-rg">{{ subItem.regDt }}</p> | |
29 | - </div> | |
30 | - </div> | |
31 | - <div class="content-warp gd-12"> | |
32 | - <p class="date-text">{{ subItem.content }}</p> | |
33 | - </div> | |
34 | - </li> | |
35 | - </ul> | |
36 | - <div v-show="item.totalListCount > 5" class="flex justify-end align-center no-gutters"> | |
37 | - <div class="gd-1"> | |
38 | - <button class="large-btn darkg-border-btn" @click="fnViewList(item)" style="cursor: pointer;">더보기 <svg-icon type="mdi" | |
39 | - :path="path"></svg-icon></button> | |
40 | - </div> | |
41 | - </div> | |
42 | - </li> | |
43 | - <!-- <li class="mb30"> | |
44 | - <div class="border background radius pd10"> | |
45 | - <p class="chart-title">기업정보(메뉴명)</p> | |
46 | - </div> | |
47 | - <ul class="mb10"> | |
48 | - <li class="pd10 border-b"> | |
49 | - <div class="flex justify-start align-center mb10"> | |
50 | - <div class="gd-10"> | |
51 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
52 | - </div> | |
53 | - <div class="gd-2"> | |
54 | - <p class="date-text text-rg">2024-05-02</p> | |
55 | - </div> | |
56 | - </div> | |
57 | - <div class="content-warp gd-12"> | |
58 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
59 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
60 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
61 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
62 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
63 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
64 | - </div> | |
65 | - </li> | |
66 | - <li class="pd10 border-b"> | |
67 | - <div class="flex justify-start align-center mb10"> | |
68 | - <div class="gd-10"> | |
69 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
70 | - </div> | |
71 | - <div class="gd-2"> | |
72 | - <p class="date-text text-rg">2024-05-02</p> | |
73 | - </div> | |
74 | - </div> | |
75 | - <div class="content-warp gd-12"> | |
76 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
77 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
78 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
79 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
80 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
81 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
82 | - </div> | |
83 | - </li> | |
84 | - <li class="pd10 border-b"> | |
85 | - <div class="flex justify-start align-center mb10"> | |
86 | - <div class="gd-10"> | |
87 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
88 | - </div> | |
89 | - <div class="gd-2"> | |
90 | - <p class="date-text text-rg">2024-05-02</p> | |
91 | - </div> | |
92 | - </div> | |
93 | - <div class="content-warp gd-12"> | |
94 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
95 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
96 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
97 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
98 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
99 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
100 | - </div> | |
101 | - </li> | |
102 | - <li class="pd10 border-b"> | |
103 | - <div class="flex justify-start align-center mb10"> | |
104 | - <div class="gd-10"> | |
105 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
106 | - </div> | |
107 | - <div class="gd-2"> | |
108 | - <p class="date-text text-rg">2024-05-02</p> | |
109 | - </div> | |
110 | - </div> | |
111 | - <div class="content-warp gd-12"> | |
112 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
113 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
114 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
115 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
116 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
117 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
118 | - </div> | |
119 | - </li> | |
120 | - <li class="pd10 border-b"> | |
121 | - <div class="flex justify-start align-center mb10"> | |
122 | - <div class="gd-10"> | |
123 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
124 | - </div> | |
125 | - <div class="gd-2"> | |
126 | - <p class="date-text text-rg">2024-05-02</p> | |
127 | - </div> | |
128 | - </div> | |
129 | - <div class="content-warp gd-12"> | |
130 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
131 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
132 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
133 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
134 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
135 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
136 | - </div> | |
137 | - </li> | |
138 | - </ul> | |
139 | - <div class="flex justify-end align-center no-gutters"> | |
140 | - <div class="gd-1"> | |
141 | - <button class="large-btn darkg-border-btn">더보기 <svg-icon type="mdi" | |
142 | - :path="path"></svg-icon></button> | |
143 | - </div> | |
144 | - </div> | |
145 | - </li> | |
146 | - <li class="mb30"> | |
147 | - <div class="border background radius pd10"> | |
148 | - <p class="chart-title">기업정보(메뉴명)</p> | |
149 | - </div> | |
150 | - <ul class="mb10"> | |
151 | - <li class="pd10 border-b"> | |
152 | - <div class="flex justify-start align-center mb10"> | |
153 | - <div class="gd-10"> | |
154 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
155 | - </div> | |
156 | - <div class="gd-2"> | |
157 | - <p class="date-text text-rg">2024-05-02</p> | |
158 | - </div> | |
159 | - </div> | |
160 | - <div class="content-warp gd-12"> | |
161 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
162 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
163 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
164 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
165 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
166 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
167 | - </div> | |
168 | - </li> | |
169 | - <li class="pd10 border-b"> | |
170 | - <div class="flex justify-start align-center mb10"> | |
171 | - <div class="gd-10"> | |
172 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
173 | - </div> | |
174 | - <div class="gd-2"> | |
175 | - <p class="date-text text-rg">2024-05-02</p> | |
176 | - </div> | |
177 | - </div> | |
178 | - <div class="content-warp gd-12"> | |
179 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
180 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
181 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
182 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
183 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
184 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
185 | - </div> | |
186 | - </li> | |
187 | - <li class="pd10 border-b"> | |
188 | - <div class="flex justify-start align-center mb10"> | |
189 | - <div class="gd-10"> | |
190 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
191 | - </div> | |
192 | - <div class="gd-2"> | |
193 | - <p class="date-text text-rg">2024-05-02</p> | |
194 | - </div> | |
195 | - </div> | |
196 | - <div class="content-warp gd-12"> | |
197 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
198 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
199 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
200 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
201 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
202 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
203 | - </div> | |
204 | - </li> | |
205 | - <li class="pd10 border-b"> | |
206 | - <div class="flex justify-start align-center mb10"> | |
207 | - <div class="gd-10"> | |
208 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
209 | - </div> | |
210 | - <div class="gd-2"> | |
211 | - <p class="date-text text-rg">2024-05-02</p> | |
212 | - </div> | |
213 | - </div> | |
214 | - <div class="content-warp gd-12"> | |
215 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
216 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
217 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
218 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
219 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
220 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
221 | - </div> | |
222 | - </li> | |
223 | - <li class="pd10 border-b"> | |
224 | - <div class="flex justify-start align-center mb10"> | |
225 | - <div class="gd-10"> | |
226 | - <p class="detail-bold ">검색내용에 대한 제목</p> | |
227 | - </div> | |
228 | - <div class="gd-2"> | |
229 | - <p class="date-text text-rg">2024-05-02</p> | |
230 | - </div> | |
231 | - </div> | |
232 | - <div class="content-warp gd-12"> | |
233 | - <p class="date-text">수행방법 8 2. 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) | |
234 | - 네이버 이슈 9 2) 네이버 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 | |
235 | - 분석 21 1) 네이버 21 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어수행방법 8 2. | |
236 | - 인터넷 검색어‘한옥기술’빅데이터 분석 9 1) 네이버 뉴스‘한옥기술’검색어의 주요 이슈 9 2) 네이버 이슈 9 2) 네이버 | |
237 | - 블로그‘한옥기술’검색어의 주요 이슈 16 3) 한옥기술의 인식 변화 20 3. 인터넷 검색어‘한옥 건축비’빅데이터 분석 21 1) 네이버21 | |
238 | - 1) 네이버 뉴스‘한옥 건축비’검색어의 주요 이슈 21 2) 네이버 블로그‘한옥 건축비’검색어</p> | |
239 | - </div> | |
240 | - </li> | |
241 | - </ul> | |
242 | - <div class="flex justify-end align-center no-gutters"> | |
243 | - <div class="gd-1"> | |
244 | - <button class="large-btn darkg-border-btn">더보기 <svg-icon type="mdi" | |
245 | - :path="path"></svg-icon></button> | |
246 | - </div> | |
247 | - </div> | |
248 | - </li> --> | |
249 | - </ul> | |
250 | - </div> | |
251 | - </div> | |
252 | - </div> | |
253 | -</template> | |
254 | - | |
255 | -<script> | |
256 | -import { toRaw } from 'vue' | |
257 | -import store from "../../../AppStore"; | |
258 | -import { mdiArrowRightDropCircleOutline } from '@mdi/js'; | |
259 | -import queryParams from '../../../../../resources/js/queryParams'; | |
260 | -import { defaultTotalSearchParams } from "../../../../../resources/js/defaultTotalSearchParams.js" | |
261 | -import { searchAll } from "../../../../../resources/api/search.js"; | |
262 | - | |
263 | -import { defaultSearchParams } from "../../../../../resources/js/defaultSearchParams.js" | |
264 | - | |
265 | -export default { | |
266 | - mixins: [queryParams], | |
267 | - data() { | |
268 | - return { | |
269 | - path: mdiArrowRightDropCircleOutline, | |
270 | - search: { ...defaultTotalSearchParams }, | |
271 | - pageSearch: { ...defaultSearchParams }, | |
272 | - mbrId: store.state.mbrId || null, // 사용자 아이디 | |
273 | - roles: store.state.roles.map(auth => auth.authority) || [], // 사용자 권한 | |
274 | - menuType: store.state.userType || null, // 메뉴 타입 | |
275 | - inputSearchText: '', | |
276 | - totalCount: 0, | |
277 | - menuCount: 0, | |
278 | - menuList: [], | |
279 | - pageCount: 0, | |
280 | - pageList: [], | |
281 | - | |
282 | - } | |
283 | - }, | |
284 | - created() { | |
285 | - this.resotreQueryParams('totalSearchQueryParams'); | |
286 | - this.checkSearchText(); | |
287 | - }, | |
288 | - methods: { | |
289 | - // 검색어 확인 | |
290 | - checkSearchText() { | |
291 | - if(this.search.searchText !== "") { | |
292 | - this.inputSearchText = this.search.searchText; | |
293 | - this.totalSearch(); | |
294 | - } | |
295 | - }, | |
296 | - | |
297 | - // 통합 검색 | |
298 | - async totalSearch() { | |
299 | - if(this.search.searchText === "") { | |
300 | - alert("검색어를 입력해주세요."); | |
301 | - return; | |
302 | - } | |
303 | - this.search.searchText = this.inputSearchText | |
304 | - this.search.mbrId = this.mbrId; | |
305 | - this.search.roles = this.roles; | |
306 | - this.search.menuType = this.menuType; | |
307 | - this.saveQueryParams('totalSearchQueryParams', this.search); // 검색조건 저장 | |
308 | - try { | |
309 | - const res = await searchAll(toRaw(this.search)); | |
310 | - this.menuCount = res.data.data.menuCount; | |
311 | - this.menuList = res.data.data.menuList; | |
312 | - this.pageCount = res.data.data.pageCount; | |
313 | - this.pageList = res.data.data.pageList; | |
314 | - this.totalCount = this.menuCount + this.pageCount; | |
315 | - } catch (error) { | |
316 | - alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); | |
317 | - } | |
318 | - }, | |
319 | - | |
320 | - // 메뉴 목록으로 이동 | |
321 | - fnViewList(item) { | |
322 | - this.$router.push({ | |
323 | - path: item.routerUrl | |
324 | - }); | |
325 | - }, | |
326 | - | |
327 | - // 메뉴 상세 조회로 이동 | |
328 | - fnView(item, subItem) { | |
329 | - let menuPath = null; | |
330 | - if(item.routerUrl.includes('.page')) { | |
331 | - const lastSlashIndex = item.routerUrl.lastIndexOf('/'); // 마지막 '/' 인덱스 | |
332 | - menuPath = item.routerUrl.substring(0, lastSlashIndex) ; // 마지막 '/' 이전 경로 | |
333 | - } | |
334 | - | |
335 | - // 페이지 검색 조건 저장 | |
336 | - this.pageSearch.searchText = this.search.searchText; | |
337 | - this.saveQueryParams('queryParams', this.pageSearch); // 검색조건 저장 | |
338 | - | |
339 | - // 일반 검색 결과 | |
340 | - if(subItem.title != null && subItem.title != '') { | |
341 | - this.$router.push({ | |
342 | - path: menuPath + '/view.page', | |
343 | - query: { | |
344 | - pageId: subItem.pageId | |
345 | - }, | |
346 | - }); | |
347 | - } | |
348 | - // 질의형 검색 결과 | |
349 | - else { | |
350 | - this.$router.push({ | |
351 | - path: item.routerUrl | |
352 | - }); | |
353 | - } | |
354 | - }, | |
355 | - }, | |
356 | - watch: { | |
357 | - | |
358 | - }, | |
359 | - computed: { | |
360 | - | |
361 | - }, | |
362 | - components: { | |
363 | - }, | |
364 | - mounted() { | |
365 | - } | |
366 | -} | |
367 | -</script> |
--- client/views/pages/user/government/statistics/StatisticsByCategory.vue
... | ... | @@ -1,203 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>분류별 통계</p> | |
6 | - </div> | |
7 | - <div class="pt10 pb10"> | |
8 | - <div class="chart-zone mb30"> | |
9 | - <div class="box"> | |
10 | - <div class="flex justify-between aling-center no-gutters mb30"> | |
11 | - <div class="gd-6 flex justify-start align-center"> | |
12 | - <div class="gd-4 pl0"> | |
13 | - <input | |
14 | - type="date" | |
15 | - class="full-input" | |
16 | - v-model="searchDate.startDt" | |
17 | - @change="validateDate($event, 'startDt')" | |
18 | - /> | |
19 | - </div> | |
20 | - <div>-</div> | |
21 | - <div class="gd-4"> | |
22 | - <input | |
23 | - type="date" | |
24 | - class="full-input" | |
25 | - v-model="searchDate.endDt" | |
26 | - @change="validateDate($event, 'endDt')" | |
27 | - /> | |
28 | - </div> | |
29 | - <div class="gd-2"> | |
30 | - <button | |
31 | - class="large-btn green-border-btn" | |
32 | - @click="statisticsList" | |
33 | - > | |
34 | - 조회 | |
35 | - </button> | |
36 | - </div> | |
37 | - </div> | |
38 | - </div> | |
39 | - <div class="chart-wrap" ref="chartdiv" v-if="chartData.length > 0"> | |
40 | - <ClusteredColumnChart :chartData="chartData" columnX="분류명" /> | |
41 | - </div> | |
42 | - </div> | |
43 | - </div> | |
44 | - <div class="statistics-table-wrap"> | |
45 | - <table class="form-table2 statistics-table mb10"> | |
46 | - <template v-if="statistics.length > 0"> | |
47 | - <colgroup> | |
48 | - <col | |
49 | - v-for="(key, index) of thead" | |
50 | - :key="index" | |
51 | - :width="100 / (thead.length + 1) + '%'" | |
52 | - /> | |
53 | - <col :width="100 / (thead.length + 1) + '%'" /> | |
54 | - </colgroup> | |
55 | - <thead> | |
56 | - <tr> | |
57 | - <th | |
58 | - v-for="(key, index) of thead" | |
59 | - :key="index" | |
60 | - > | |
61 | - {{ key }} | |
62 | - </th> | |
63 | - <th class="point-font">비고</th> | |
64 | - </tr> | |
65 | - </thead> | |
66 | - <tbody> | |
67 | - <tr v-for="(tr, index) of statistics" :key="index"> | |
68 | - <template v-for="(key, idx) of thead" :key="idx"> | |
69 | - <th v-if="idx < 2" > | |
70 | - {{ tr[key] }} | |
71 | - </th> | |
72 | - <template v-else> | |
73 | - <td class="text-rg" v-if="idx != 0"> | |
74 | - {{ tr[key] }} | |
75 | - </td> | |
76 | - </template> | |
77 | - </template> | |
78 | - <td>등록건수대비</td> | |
79 | - </tr> | |
80 | - </tbody> | |
81 | - </template> | |
82 | - <template v-else> | |
83 | - <tbody> | |
84 | - <tr> | |
85 | - <td class="text-ct data-none"> | |
86 | - 등록된 정보가 존재하지 않습니다. | |
87 | - </td> | |
88 | - </tr> | |
89 | - </tbody> | |
90 | - </template> | |
91 | - </table> | |
92 | - </div> | |
93 | - </div> | |
94 | - </div> | |
95 | - </div> | |
96 | -</template> | |
97 | - | |
98 | -<script> | |
99 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
100 | -import statisticsDate from "../../../../../resources/js/defaultDateParams"; | |
101 | - | |
102 | -// API | |
103 | -import { categoryStatistics } from "../../../../../resources/api/statistics"; | |
104 | - | |
105 | -export default { | |
106 | - mixins: [statisticsDate], | |
107 | - components: { | |
108 | - ClusteredColumnChart: ClusteredColumnChart, | |
109 | - }, | |
110 | - data() { | |
111 | - return { | |
112 | - // 데이터 객체 | |
113 | - mapping: { | |
114 | - ksic_up_cd: "상위분류명", | |
115 | - ksic_cd: "하위분류명", | |
116 | - ent_cnt: "기업등록수", | |
117 | - id_cnt: "상담신청수", | |
118 | - mvn_cnt: "투자의향", | |
119 | - mou_cnt: "MOU의향", | |
120 | - }, | |
121 | - thead: [], | |
122 | - statistics: [], | |
123 | - chartData: [], | |
124 | - }; | |
125 | - }, | |
126 | - created() { | |
127 | - this.thead = Object.values(this.mapping); | |
128 | - this.statisticsList(); | |
129 | - }, | |
130 | - methods: { | |
131 | - // 분류별 통계 | |
132 | - async statisticsList() { | |
133 | - // 유효성 검사 | |
134 | - if (this.searchDate.startDt == null || this.searchDate.startDt == "") { | |
135 | - alert("시작일을 선택하세요."); | |
136 | - this.searchDate.startDt = null; | |
137 | - return; | |
138 | - } | |
139 | - if (this.searchDate.endDt == null || this.searchDate.endDt == "") { | |
140 | - alert("종료일을 선택하세요."); | |
141 | - this.searchDate.endDt = null; | |
142 | - return; | |
143 | - } | |
144 | - // 데이터 세팅 | |
145 | - let data = this.searchDate; | |
146 | - // 실행 | |
147 | - try { | |
148 | - const response = await categoryStatistics(data); | |
149 | - if (response.data.data.length > 0) { | |
150 | - this.fnConvertData(response.data.data); | |
151 | - } else { | |
152 | - this.statistics = []; | |
153 | - this.chartData = []; | |
154 | - } | |
155 | - } catch (error) { | |
156 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
157 | - } | |
158 | - }, | |
159 | - // 데이터 가공 | |
160 | - fnConvertData(datas) { | |
161 | - const mapping = this.mapping; | |
162 | - let newDatas = []; | |
163 | - for (let data of datas) { | |
164 | - let newData = {}; | |
165 | - for (let th of this.thead) { | |
166 | - let key = Object.keys(mapping).find((key) => mapping[key] === th); | |
167 | - newData[th] = data[key]; | |
168 | - } | |
169 | - newDatas.push(newData); | |
170 | - } | |
171 | - this.fnConvertChart(newDatas); | |
172 | - this.fnConvertTable(newDatas); | |
173 | - }, | |
174 | - // 차트 데이터 가공 | |
175 | - fnConvertChart(datas) { | |
176 | - let dataList = []; | |
177 | - for (let data of datas) { | |
178 | - const { 상위분류명, 하위분류명, 비고, ...chart } = data; | |
179 | - chart["분류명"] = data["상위분류명"] + data["하위분류명"]; | |
180 | - dataList.push(chart); | |
181 | - } | |
182 | - this.chartData = dataList; | |
183 | - }, | |
184 | - // 표 데이터 가공 | |
185 | - fnConvertTable(datas) { | |
186 | - let dataList = []; | |
187 | - for (let data of datas) { | |
188 | - let total = data[this.thead[2]]; | |
189 | - data[this.thead[2]] = total.toLocaleString("ko-KR") + "건"; | |
190 | - this.thead.map((th, idx) => { | |
191 | - if (idx > 2 && idx != this.thead.length) { | |
192 | - let number = data[th].toLocaleString("ko-KR"); | |
193 | - let percent = Math.round((data[th] / total) * 100); | |
194 | - data[th] = number + "건 (" + percent + "%)"; | |
195 | - } | |
196 | - }); | |
197 | - dataList.push(data); | |
198 | - } | |
199 | - this.statistics = dataList; | |
200 | - }, | |
201 | - }, | |
202 | -}; | |
203 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/statistics/StatisticsByConsultation.vue
... | ... | @@ -1,167 +0,0 @@ |
1 | -<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>상담신청 통계</p> | |
6 | - </div> | |
7 | - <div class="pt10 pb10"> | |
8 | - <div class="chart-zone mb30"> | |
9 | - <div class="box"> | |
10 | - <div class="flex justify-between aling-center no-gutters mb30"> | |
11 | - <div class="gd-6 flex justify-start align-center"> | |
12 | - <div class="gd-4 pl0"> | |
13 | - <input type="date" class="full-input" v-model="searchDate.startDt" | |
14 | - @change="validateDate($event, 'startDt')" /> | |
15 | - </div> | |
16 | - <div>-</div> | |
17 | - <div class="gd-4"> | |
18 | - <input type="date" class="full-input" v-model="searchDate.endDt" | |
19 | - @change="validateDate($event, 'endDt')" /> | |
20 | - </div> | |
21 | - <div class="gd-2"> | |
22 | - <button class="large-btn green-border-btn" @click="statisticsList"> | |
23 | - 조회 | |
24 | - </button> | |
25 | - </div> | |
26 | - </div> | |
27 | - </div> | |
28 | - <div class="chart-wrap" ref="chartdiv" v-if="chartData.length > 0"> | |
29 | - <ClusteredColumnChart :chartData="chartData" columnX="날짜" /> | |
30 | - </div> | |
31 | - </div> | |
32 | - </div> | |
33 | - <div class="statistics-table-wrap"> | |
34 | - <table class="form-table2 statistics-table mb10"> | |
35 | - <template v-if="statistics.length > 0"> | |
36 | - <colgroup> | |
37 | - <col v-for="(key, index) of thead" :key="index" :width="100 / thead.length + '%'" /> | |
38 | - </colgroup> | |
39 | - <thead> | |
40 | - <tr> | |
41 | - <th v-for="(key, index) of thead" :key="index" > | |
42 | - {{ key }} | |
43 | - </th> | |
44 | - </tr> | |
45 | - </thead> | |
46 | - <tbody> | |
47 | - <tr v-for="(tr, index) of statistics" :key="index"> | |
48 | - <template v-for="(key, idx) of thead" :key="idx"> | |
49 | - <th v-if="idx == 0" > | |
50 | - {{ tr[key] }} | |
51 | - </th> | |
52 | - <td v-else-if="idx != 0 && idx < 3" class="text-ct"> | |
53 | - {{ tr[key] }} | |
54 | - </td> | |
55 | - <td v-else class="text-rg"> | |
56 | - {{ tr[key].toLocaleString("ko-KR") }} | |
57 | - </td> | |
58 | - </template> | |
59 | - </tr> | |
60 | - </tbody> | |
61 | - </template> | |
62 | - <template v-else> | |
63 | - <tbody> | |
64 | - <tr> | |
65 | - <td class="text-ct data-none"> | |
66 | - 등록된 정보가 존재하지 않습니다. | |
67 | - </td> | |
68 | - </tr> | |
69 | - </tbody> | |
70 | - </template> | |
71 | - </table> | |
72 | - </div> | |
73 | - </div> | |
74 | - </div> | |
75 | - </div> | |
76 | -</template> | |
77 | - | |
78 | -<script> | |
79 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
80 | -import statisticsDate from "../../../../../resources/js/defaultDateParams"; | |
81 | - | |
82 | -// API | |
83 | -import { consultationStatistics } from "../../../../../resources/api/statistics"; | |
84 | - | |
85 | -export default { | |
86 | - mixins: [statisticsDate], | |
87 | - components: { | |
88 | - ClusteredColumnChart: ClusteredColumnChart, | |
89 | - }, | |
90 | - data() { | |
91 | - return { | |
92 | - // 데이터 객체 | |
93 | - mapping: { | |
94 | - years: "연도", | |
95 | - months: "월", | |
96 | - days: "일", | |
97 | - aply_cnt: "상담신청 건수", | |
98 | - complete_cnt: "상담실시 건수", | |
99 | - }, | |
100 | - thead: [], | |
101 | - statistics: [], | |
102 | - chartData: [], | |
103 | - }; | |
104 | - }, | |
105 | - created() { | |
106 | - this.thead = Object.values(this.mapping); | |
107 | - | |
108 | - this.statisticsList(); | |
109 | - }, | |
110 | - methods: { | |
111 | - // 분류별 통계 | |
112 | - async statisticsList() { | |
113 | - // 유효성 검사 | |
114 | - if (this.searchDate.startDt == null || this.searchDate.startDt == "") { | |
115 | - alert("시작일을 선택하세요."); | |
116 | - this.searchDate.startDt = null; | |
117 | - return; | |
118 | - } | |
119 | - if (this.searchDate.endDt == null || this.searchDate.endDt == "") { | |
120 | - alert("종료일을 선택하세요."); | |
121 | - this.searchDate.endDt = null; | |
122 | - return; | |
123 | - } | |
124 | - // 데이터 세팅 | |
125 | - let data = this.searchDate; | |
126 | - // 실행 | |
127 | - try { | |
128 | - const response = await consultationStatistics(data); | |
129 | - if (response.data.data.length > 0) { | |
130 | - this.fnConvertData(response.data.data); | |
131 | - } else { | |
132 | - this.statistics = []; | |
133 | - this.chartData = []; | |
134 | - } | |
135 | - } catch (error) { | |
136 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
137 | - } | |
138 | - }, | |
139 | - | |
140 | - // 데이터 가공 | |
141 | - fnConvertData(datas) { | |
142 | - const mapping = this.mapping; | |
143 | - let newDatas = []; | |
144 | - for (let data of datas) { | |
145 | - let newData = {}; | |
146 | - for (let th of this.thead) { | |
147 | - let key = Object.keys(mapping).find((key) => mapping[key] === th); | |
148 | - newData[th] = data[key]; | |
149 | - } | |
150 | - newDatas.push(newData); | |
151 | - } | |
152 | - this.statistics = newDatas; | |
153 | - this.fnConvertChart(newDatas); | |
154 | - }, | |
155 | - // 차트 데이터 가공 | |
156 | - fnConvertChart(datas) { | |
157 | - let dataList = []; | |
158 | - for (let data of datas) { | |
159 | - data["날짜"] = data["연도"] + "-" + data["월"] + "-" + data["일"]; | |
160 | - const { 연도, 월, 일, ...chart } = data; | |
161 | - dataList.push(chart); | |
162 | - } | |
163 | - this.chartData = dataList; | |
164 | - }, | |
165 | - }, | |
166 | -}; | |
167 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/government/statistics/StatisticsByReview.vue
... | ... | @@ -1,169 +0,0 @@ |
1 | -tr<template> | |
2 | - <div class="content pt50 pb50"> | |
3 | - <div class=" w1400"> | |
4 | - <div class="page-title point-font mb30"> | |
5 | - <p>검토사항 통계</p> | |
6 | - </div> | |
7 | - <div class="pt10 pb10"> | |
8 | - <div class="chart-zone mb30"> | |
9 | - <div class="box"> | |
10 | - <div class="flex justify-between aling-center no-gutters mb30"> | |
11 | - <div class="gd-6 flex justify-start align-center"> | |
12 | - <div class="gd-4 pl0"> | |
13 | - <input type="date" class="full-input" v-model="searchDate.startDt" | |
14 | - @change="validateDate($event, 'startDt')" /> | |
15 | - </div> | |
16 | - <div>-</div> | |
17 | - <div class="gd-4"> | |
18 | - <input type="date" class="full-input" v-model="searchDate.endDt" | |
19 | - @change="validateDate($event, 'endDt')" /> | |
20 | - </div> | |
21 | - <div class="gd-2"> | |
22 | - <button class="large-btn green-border-btn" @click="statisticsList"> | |
23 | - 조회 | |
24 | - </button> | |
25 | - </div> | |
26 | - </div> | |
27 | - </div> | |
28 | - <div class="chart-wrap" ref="chartdiv" v-if="statistics.length > 0"> | |
29 | - <ClusteredColumnChart :chartData="statistics" columnX="구분" /> | |
30 | - </div> | |
31 | - </div> | |
32 | - </div> | |
33 | - <div class="statistics-table-wrap"> | |
34 | - <table class="form-table2 statistics-table mb10"> | |
35 | - <template v-if="statistics.length > 0"> | |
36 | - <colgroup> | |
37 | - <col v-for="(key, index) of thead" :key="index" :width="100 / thead.length + '%'" /> | |
38 | - </colgroup> | |
39 | - <thead> | |
40 | - <tr> | |
41 | - <th v-for="(key, index) of thead" :key="index" > | |
42 | - {{ key }} | |
43 | - </th> | |
44 | - </tr> | |
45 | - </thead> | |
46 | - <tbody> | |
47 | - <tr v-for="(tr, index) of statistics" :key="index"> | |
48 | - <template v-for="(key, idx) of thead" :key="idx"> | |
49 | - <th v-if="idx == 0" > | |
50 | - {{ tr[key] }} | |
51 | - </th> | |
52 | - <td v-else class="text-rg"> | |
53 | - {{ tr[key].toLocaleString("ko-KR") }} | |
54 | - </td> | |
55 | - </template> | |
56 | - </tr> | |
57 | - </tbody> | |
58 | - </template> | |
59 | - <template v-else> | |
60 | - <tbody> | |
61 | - <tr> | |
62 | - <td class="text-ct data-none"> | |
63 | - 등록된 정보가 존재하지 않습니다. | |
64 | - </td> | |
65 | - </tr> | |
66 | - </tbody> | |
67 | - </template> | |
68 | - </table> | |
69 | - </div> | |
70 | - </div> | |
71 | - </div> | |
72 | - </div> | |
73 | -</template> | |
74 | - | |
75 | -<script> | |
76 | -import ClusteredColumnChart from "../../../../component/chart/ClusteredColumnChart.vue"; | |
77 | -import statisticsDate from "../../../../../resources/js/defaultDateParams"; | |
78 | - | |
79 | -// API | |
80 | -import { rvwMttrStatistics } from "../../../../../resources/api/statistics"; | |
81 | - | |
82 | -export default { | |
83 | - mixins: [statisticsDate], | |
84 | - components: { | |
85 | - ClusteredColumnChart: ClusteredColumnChart, | |
86 | - }, | |
87 | - data() { | |
88 | - return { | |
89 | - // 데이터 객체 | |
90 | - mapping: { | |
91 | - type: "구분", | |
92 | - count: "횟수", | |
93 | - before: "접수전", | |
94 | - progress: "처리중", | |
95 | - complete: "완료", | |
96 | - }, | |
97 | - thead: [], | |
98 | - statistics: [], | |
99 | - rvwMttrTypeList: [], | |
100 | - }; | |
101 | - }, | |
102 | - created() { | |
103 | - this.thead = Object.values(this.mapping); | |
104 | - | |
105 | - this.statisticsList(); | |
106 | - }, | |
107 | - methods: { | |
108 | - // 분류별 통계 | |
109 | - async statisticsList() { | |
110 | - // 유효성 검사 | |
111 | - if (this.searchDate.startDt == null || this.searchDate.startDt == "") { | |
112 | - alert("시작일을 선택하세요."); | |
113 | - this.searchDate.startDt = null; | |
114 | - return; | |
115 | - } | |
116 | - if (this.searchDate.endDt == null || this.searchDate.endDt == "") { | |
117 | - alert("종료일을 선택하세요."); | |
118 | - this.searchDate.endDt = null; | |
119 | - return; | |
120 | - } | |
121 | - // 데이터 세팅 | |
122 | - let data = this.searchDate; | |
123 | - // 실행 | |
124 | - try { | |
125 | - const response = await rvwMttrStatistics(data); | |
126 | - this.statistics = []; | |
127 | - this.rvwMttrTypeList = response.data.data.rvwMttrTypeList; | |
128 | - if (response.data.data.statisticsList.length > 0) { | |
129 | - this.fnConvertData(response.data.data.statisticsList); | |
130 | - } else { | |
131 | - this.statistics = []; | |
132 | - this.chartData = []; | |
133 | - } | |
134 | - } catch (error) { | |
135 | - alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); | |
136 | - } | |
137 | - }, | |
138 | - | |
139 | - // 데이터 가공 | |
140 | - fnConvertData(datas) { | |
141 | - const mapping = this.mapping; | |
142 | - let newDatas = []; | |
143 | - for (let data of datas) { | |
144 | - let newData = {}; | |
145 | - for (let th of this.thead) { | |
146 | - let key = Object.keys(mapping).find((key) => mapping[key] === th); | |
147 | - if (key == "type") { | |
148 | - newData[th] = this.fnFindType(data[key]); | |
149 | - } else { | |
150 | - newData[th] = data[key]; | |
151 | - } | |
152 | - } | |
153 | - newDatas.push(newData); | |
154 | - } | |
155 | - this.statistics = newDatas; | |
156 | - }, | |
157 | - // 유형 찾기 | |
158 | - fnFindType(type) { | |
159 | - let result = null; | |
160 | - for (let item of this.rvwMttrTypeList) { | |
161 | - if (type == item.cd) { | |
162 | - result = item.cdNm; | |
163 | - } | |
164 | - } | |
165 | - return result; | |
166 | - }, | |
167 | - }, | |
168 | -}; | |
169 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/user/intro/Intro.vue
... | ... | @@ -1,50 +0,0 @@ |
1 | -<template> | |
2 | - <div class="intro-page page"> | |
3 | - <div class="w1400 content flex-column justify-center"> | |
4 | - <div class="big-logo mb60"> | |
5 | - <img src="/client/resources/img/logo.png" alt="" /> | |
6 | - </div> | |
7 | - <ul class="user-division flex"> | |
8 | - <li class="gd-6 pl0 cursor" @click="goToPage('company')"> | |
9 | - <div | |
10 | - class="division-item content pink flex-column align-center justify-center" | |
11 | - style="background-color: var(--sky-pink)" | |
12 | - > | |
13 | - <p class="text-ct">기업 전용</p> | |
14 | - <img src="/client/resources/img/sam.png" alt="" /> | |
15 | - </div> | |
16 | - </li> | |
17 | - <li class="gd-6 pr0 cursor" @click="goToPage('government')"> | |
18 | - <div | |
19 | - class="division-item content green flex-column align-center justify-center" | |
20 | - style="background-color: var(--sky-green)" | |
21 | - > | |
22 | - <p class="text-ct">공무원 전용</p> | |
23 | - <img src="/client/resources/img/hong.png" alt="" /> | |
24 | - </div> | |
25 | - </li> | |
26 | - </ul> | |
27 | - </div> | |
28 | - </div> | |
29 | -</template> | |
30 | - | |
31 | -<script> | |
32 | -export default { | |
33 | - data() { | |
34 | - return {}; | |
35 | - }, | |
36 | - methods: { | |
37 | - goToPage(pageType) { | |
38 | - this.$store.commit("setUserType", pageType); | |
39 | - this.$router.push({ | |
40 | - path: `/${pageType}/main.page`, | |
41 | - params: { menuType: pageType }, | |
42 | - }); | |
43 | - }, | |
44 | - }, | |
45 | - watch: {}, | |
46 | - computed: {}, | |
47 | - components: {}, | |
48 | - mounted() {}, | |
49 | -}; | |
50 | -</script> |
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?