
--- client/resources/css/admin.css
+++ client/resources/css/admin.css
... | ... | @@ -154,7 +154,7 @@ |
154 | 154 |
.admin-wrap, |
155 | 155 |
.content-box { |
156 | 156 |
width: 100%; |
157 |
- height: 100%; |
|
157 |
+ height: 100vh; |
|
158 | 158 |
font-size: 1.3rem; |
159 | 159 |
} |
160 | 160 |
|
--- client/resources/css/common.css
+++ client/resources/css/common.css
... | ... | @@ -470,4 +470,8 @@ |
470 | 470 |
.text-info{ |
471 | 471 |
color: red; |
472 | 472 |
padding: 1rem 0; |
473 |
+} |
|
474 |
+ |
|
475 |
+.cursor{ |
|
476 |
+ cursor: pointer; |
|
473 | 477 |
}(파일 끝에 줄바꿈 문자 없음) |
--- client/resources/css/reset.css
+++ client/resources/css/reset.css
... | ... | @@ -2,16 +2,14 @@ |
2 | 2 |
|
3 | 3 |
@font-face { |
4 | 4 |
font-family: "SBAggroB"; |
5 |
- src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/SBAggroB.woff") |
|
6 |
- format("woff"); |
|
5 |
+ src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/SBAggroB.woff") format("woff"); |
|
7 | 6 |
/* font-weight: normal; */ |
8 | 7 |
font-style: normal; |
9 | 8 |
} |
10 | 9 |
|
11 | 10 |
@font-face { |
12 | 11 |
font-family: "Pretendard-Regular"; |
13 |
- src: url("https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff") |
|
14 |
- format("woff"); |
|
12 |
+ src: url("https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff") format("woff"); |
|
15 | 13 |
font-weight: 400; |
16 | 14 |
font-style: normal; |
17 | 15 |
} |
... | ... | @@ -35,14 +33,20 @@ |
35 | 33 |
html { |
36 | 34 |
font-size: 10px; |
37 | 35 |
width: 100%; |
38 |
- height: 100%; |
|
36 |
+ min-height: 100vh; |
|
39 | 37 |
font-family: "Pretendard-Regular"; |
38 |
+ -ms-user-select: none; |
|
39 |
+ -moz-user-select: -moz-none; |
|
40 |
+ -webkit-user-select: none; |
|
41 |
+ -khtml-user-select: none; |
|
42 |
+ user-select: none; |
|
40 | 43 |
} |
41 | 44 |
|
42 | 45 |
body, |
43 | 46 |
#root { |
44 | 47 |
width: 100%; |
45 |
- height: 100%; |
|
48 |
+ min-height: 100vh; |
|
49 |
+ position: relative; |
|
46 | 50 |
} |
47 | 51 |
|
48 | 52 |
ul, |
... | ... | @@ -76,7 +80,7 @@ |
76 | 80 |
|
77 | 81 |
input[type="text"], |
78 | 82 |
input[type="password"], |
79 |
-input[type="date"], |
|
83 |
+input[type="date"], |
|
80 | 84 |
input[type="month"] { |
81 | 85 |
width: 100%; |
82 | 86 |
padding: 10px; |
... | ... | @@ -96,9 +100,11 @@ |
96 | 100 |
border-radius: 5px; |
97 | 101 |
margin-bottom: 10px; |
98 | 102 |
} |
99 |
-details > div { |
|
103 |
+ |
|
104 |
+details>div { |
|
100 | 105 |
padding: 10px; |
101 | 106 |
} |
107 |
+ |
|
102 | 108 |
summary { |
103 | 109 |
padding: 10px; |
104 | 110 |
font-size: 1.4rem; |
... | ... | @@ -112,5 +118,4 @@ |
112 | 118 |
input[type='date']:focus::before, |
113 | 119 |
input[type='date']:valid::before { |
114 | 120 |
display: none; |
115 |
-} |
|
116 |
- |
|
121 |
+}(파일 끝에 줄바꿈 문자 없음) |
--- client/resources/css/responsive.css
+++ client/resources/css/responsive.css
... | ... | @@ -257,6 +257,10 @@ |
257 | 257 |
.notice-search input:nth-child(2) { |
258 | 258 |
width: 100%; |
259 | 259 |
} |
260 |
+ |
|
261 |
+ .main-history-box{ |
|
262 |
+ grid-template-columns: 1fr; |
|
263 |
+ } |
|
260 | 264 |
/* 기술문서 */ |
261 | 265 |
.tech-report { |
262 | 266 |
flex-direction: column; |
+++ client/views/component/loading/LoadingSpinner.vue
... | ... | @@ -0,0 +1,114 @@ |
1 | +<template> | |
2 | + <div v-if="isLoading" class="loading-overlay"> | |
3 | + <div class="loading-wrap"> | |
4 | + <div class="loading"> | |
5 | + <span></span> | |
6 | + <span></span> | |
7 | + <span></span> | |
8 | + <span></span> | |
9 | + <span></span> | |
10 | + </div> | |
11 | + </div> | |
12 | + </div> | |
13 | +</template> | |
14 | + | |
15 | +<script> | |
16 | + | |
17 | +export default { | |
18 | + data() { | |
19 | + return { | |
20 | + | |
21 | + }; | |
22 | + }, | |
23 | + methods: {}, | |
24 | + watch: {}, | |
25 | + computed: { | |
26 | + isLoading() { | |
27 | + return this.$store.state.isLoading; | |
28 | + } | |
29 | + }, | |
30 | + mounted() { | |
31 | + | |
32 | + }, | |
33 | + beforeDestroy() { | |
34 | + | |
35 | + }, | |
36 | +}; | |
37 | + | |
38 | +</script> | |
39 | + | |
40 | +<style scoped> | |
41 | +.loading-overlay { | |
42 | + position: absolute; | |
43 | + top: 0; | |
44 | + left: 0; | |
45 | + width: 100%; | |
46 | + height: 100%; | |
47 | + background-color: rgba(0, 0, 0, 0.1); | |
48 | + z-index: 1; | |
49 | +} | |
50 | + | |
51 | +.loading-wrap { | |
52 | + display: flex; | |
53 | + align-items: center; | |
54 | + justify-content: center; | |
55 | + height: 100vh; | |
56 | +} | |
57 | + | |
58 | +.loading { | |
59 | + --speed-of-animation: 0.9s; | |
60 | + --gap: 6px; | |
61 | + --first-color: #4c86f9; | |
62 | + --second-color: #49a84c; | |
63 | + --third-color: #f6bb02; | |
64 | + --fourth-color: #f6bb02; | |
65 | + --fifth-color: #2196f3; | |
66 | + display: flex; | |
67 | + justify-content: center; | |
68 | + align-items: center; | |
69 | + width: 100px; | |
70 | + gap: 6px; | |
71 | + height: 100px; | |
72 | + position: fixed; | |
73 | +} | |
74 | + | |
75 | +.loading span { | |
76 | + width: 4px; | |
77 | + height: 50px; | |
78 | + background: var(--first-color); | |
79 | + animation: scale var(--speed-of-animation) ease-in-out infinite; | |
80 | +} | |
81 | + | |
82 | +.loading span:nth-child(2) { | |
83 | + background: var(--second-color); | |
84 | + animation-delay: -0.8s; | |
85 | +} | |
86 | + | |
87 | +.loading span:nth-child(3) { | |
88 | + background: var(--third-color); | |
89 | + animation-delay: -0.7s; | |
90 | +} | |
91 | + | |
92 | +.loading span:nth-child(4) { | |
93 | + background: var(--fourth-color); | |
94 | + animation-delay: -0.6s; | |
95 | +} | |
96 | + | |
97 | +.loading span:nth-child(5) { | |
98 | + background: var(--fifth-color); | |
99 | + animation-delay: -0.5s; | |
100 | +} | |
101 | + | |
102 | +@keyframes scale { | |
103 | + | |
104 | + 0%, | |
105 | + 40%, | |
106 | + 100% { | |
107 | + transform: scaleY(0.05); | |
108 | + } | |
109 | + | |
110 | + 20% { | |
111 | + transform: scaleY(1); | |
112 | + } | |
113 | +} | |
114 | +</style> |
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
... | ... | @@ -29,6 +29,7 @@ |
29 | 29 |
</div> |
30 | 30 |
</div> |
31 | 31 |
</div> |
32 |
+ <LoadingSpinner /> |
|
32 | 33 |
</template> |
33 | 34 |
|
34 | 35 |
<script> |
... | ... | @@ -39,6 +40,7 @@ |
39 | 40 |
import Footer from '../layout/Footer.vue'; |
40 | 41 |
import AdminHeader from '../layout/AdminHeader.vue'; |
41 | 42 |
import AdminMenu from '../layout/AdminMenu.vue'; |
43 |
+import LoadingSpinner from "../component/loading/LoadingSpinner.vue"; |
|
42 | 44 |
import { debounce } from 'lodash' |
43 | 45 |
|
44 | 46 |
const App = { |
... | ... | @@ -171,6 +173,7 @@ |
171 | 173 |
'Menu': Menu, |
172 | 174 |
'AdminMenu': AdminMenu, |
173 | 175 |
'Footer': Footer, |
176 |
+ 'LoadingSpinner': LoadingSpinner |
|
174 | 177 |
}, |
175 | 178 |
mounted() { |
176 | 179 |
//vue router에게 페이지 변경 요청을 하여, router가 페이지 변경 전, 실행되는 훅(이벤트) |
... | ... | @@ -286,6 +289,4 @@ |
286 | 289 |
justify-content: center; |
287 | 290 |
align-items: center; |
288 | 291 |
} |
289 |
- |
|
290 |
- |
|
291 | 292 |
</style> |
--- client/views/pages/AppStore.js
+++ client/views/pages/AppStore.js
... | ... | @@ -1,26 +1,24 @@ |
1 |
-import { createStore } from 'vuex'; |
|
1 |
+import { createStore } from "vuex"; |
|
2 | 2 |
|
3 |
- |
|
4 |
-export default createStore ({ |
|
5 |
- state: { |
|
6 |
- loginUser: null, |
|
7 |
- key:null, |
|
8 |
- // isLogin: false, |
|
3 |
+export default createStore({ |
|
4 |
+ state: { |
|
5 |
+ loginUser: null, |
|
6 |
+ key: null, |
|
7 |
+ isLoading: false, |
|
8 |
+ }, |
|
9 |
+ getters: { |
|
10 |
+ getLoginUser: function () {}, |
|
11 |
+ getKey: function () {}, |
|
12 |
+ }, |
|
13 |
+ mutations: { |
|
14 |
+ setLoginUser: function (state, newValue) { |
|
15 |
+ state.loginUser = newValue; |
|
9 | 16 |
}, |
10 |
- getters: { |
|
11 |
- getLoginUser: function () { |
|
12 |
- |
|
13 |
- }, |
|
14 |
- getKey: function () { |
|
15 |
- |
|
16 |
- } |
|
17 |
+ setKey: function (state, newValue) { |
|
18 |
+ state.key = newValue; |
|
17 | 19 |
}, |
18 |
- mutations: { |
|
19 |
- setLoginUser: function (state, newValue) { |
|
20 |
- state.loginUser = newValue; |
|
21 |
- }, |
|
22 |
- setKey: function (state, newValue) { |
|
23 |
- state.key = newValue; |
|
24 |
- } |
|
25 |
- } |
|
26 |
-});(파일 끝에 줄바꿈 문자 없음) |
|
20 |
+ setLoading(state, newValue) { |
|
21 |
+ state.isLoading = newValue; |
|
22 |
+ }, |
|
23 |
+ }, |
|
24 |
+}); |
--- client/views/pages/admin/databook/DataSelectOne.vue
+++ client/views/pages/admin/databook/DataSelectOne.vue
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 |
<table class="selectone-table "> |
12 | 12 |
<colgroup> |
13 | 13 |
<col width="15%" /> |
14 |
- <col width="85%" /> |
|
14 |
+ <col width="85%" /> |
|
15 | 15 |
</colgroup> |
16 | 16 |
<tbody> |
17 | 17 |
<tr> |
... | ... | @@ -23,7 +23,7 @@ |
23 | 23 |
<span v-else class="category-zone">가이드라인</span> |
24 | 24 |
</p> |
25 | 25 |
<p class="flex-end write-info"><span class="writer">작성자</span> |
26 |
- <span>{{ post.rgtr_id}}</span> |
|
26 |
+ <span>{{ post.rgtr_id }}</span> |
|
27 | 27 |
<span class="view">조회수</span> |
28 | 28 |
<span>{{ post.view_cnt }}</span> |
29 | 29 |
</p> |
... | ... | @@ -77,8 +77,8 @@ |
77 | 77 |
<div v-show="isDeleteModalOpen" class="modal-wrapper"> |
78 | 78 |
<div class="modal-container admin-alert"> |
79 | 79 |
<div class="modal-content-monthly alert-modal"> |
80 |
- <p>해당 자료를 삭제하시겠습니까?</p> |
|
81 |
- </div> |
|
80 |
+ <p>해당 자료를 삭제하시겠습니까?</p> |
|
81 |
+ </div> |
|
82 | 82 |
<div class="modal-end"> |
83 | 83 |
<button class="dark-gray-btn small-btn" @click="closeDeleteModal()">취소</button> |
84 | 84 |
<button class="blue-btn small-btn" @click="postDelete">확인</button> |
... | ... | @@ -152,10 +152,10 @@ |
152 | 152 |
'Content-Type': "application/json; charset=UTF-8", |
153 | 153 |
}, |
154 | 154 |
data: { |
155 |
- 'post_id': vm.route.query.post_id, |
|
156 |
- 'file_id': vm.route.query.file_id, |
|
157 |
- 'bbs_id': vm.route.query.bbs_id |
|
158 |
- } |
|
155 |
+ 'post_id': vm.route.query.post_id, |
|
156 |
+ 'file_id': vm.route.query.file_id, |
|
157 |
+ 'bbs_id': vm.route.query.bbs_id |
|
158 |
+ } |
|
159 | 159 |
}).then(function (response) { |
160 | 160 |
vm.prevPost = response.data.postSelectOne.prevPost; |
161 | 161 |
vm.post = response.data.postSelectOne.post; |
... | ... | @@ -274,9 +274,9 @@ |
274 | 274 |
alert("게시글 상세보기 조회 오류, 관리자에게 문의하세요."); |
275 | 275 |
}) |
276 | 276 |
}, |
277 |
- |
|
277 |
+ |
|
278 | 278 |
postSelectListPage: function () { |
279 |
- this.$router.push({ path: '/adm/dataSelectList.page', query:{'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort}}); |
|
279 |
+ this.$router.push({ path: '/adm/dataSelectList.page', query: { 'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort } }); |
|
280 | 280 |
}, |
281 | 281 |
|
282 | 282 |
postUpdatePage: function () { |
--- client/views/pages/user/Data/DataOne.vue
+++ client/views/pages/user/Data/DataOne.vue
... | ... | @@ -11,13 +11,15 @@ |
11 | 11 |
<tr> |
12 | 12 |
<td class="title-zone" colspan="2"> |
13 | 13 |
<p class="flex"><span class="post-title">{{ post.post_title }}</span> |
14 |
- <span class="category-zone" v-if="post.ctgry_nm === 'policy'">정책자료</span> |
|
15 |
- <span class="category-zone" v-else-if="post.ctgry_nm === 'research'">연구자료</span> |
|
16 |
- <span class="category-zone" v-else>가이드라인</span></p> |
|
14 |
+ <span class="category-zone" v-if="post.ctgry_nm === 'policy'">정책자료</span> |
|
15 |
+ <span class="category-zone" v-else-if="post.ctgry_nm === 'research'">연구자료</span> |
|
16 |
+ <span class="category-zone" v-else>가이드라인</span> |
|
17 |
+ </p> |
|
17 | 18 |
<div class="flex-end write-info"> |
18 |
- <p><span class="writer">작성자 </span><span>{{ post.rgtr_id }}</span> |
|
19 |
- <span class="view">조회수 </span><span>{{ post.view_cnt }}</span></p> |
|
20 |
- </div> |
|
19 |
+ <p><span class="writer">작성자 </span><span>{{ post.rgtr_id }}</span> |
|
20 |
+ <span class="view">조회수 </span><span>{{ post.view_cnt }}</span> |
|
21 |
+ </p> |
|
22 |
+ </div> |
|
21 | 23 |
</td> |
22 | 24 |
</tr> |
23 | 25 |
<tr> |
... | ... | @@ -32,7 +34,7 @@ |
32 | 34 |
<label>첨부된 파일이 없습니다.</label> |
33 | 35 |
</div> |
34 | 36 |
<ul v-else v-for="(item, idx) in fileList" :key="idx"> |
35 |
- <li @click="downloadFile(item)">{{ item.real_file_nm }}</li> |
|
37 |
+ <li @click="downloadFile(item)" class="cursor">{{ item.real_file_nm }}</li> |
|
36 | 38 |
</ul> |
37 | 39 |
</td> |
38 | 40 |
</tr> |
... | ... | @@ -45,7 +47,7 @@ |
45 | 47 |
<span> |
46 | 48 |
<span v-if="nextPost" @click="movePost(nextPost)" class="sub-content-title"> |
47 | 49 |
{{ nextPost.post_title }} |
48 |
- </span> |
|
50 |
+ </span> |
|
49 | 51 |
<span v-else class="sub-content-title">다음글이 없습니다.</span> |
50 | 52 |
</span> |
51 | 53 |
</li> |
... | ... | @@ -53,7 +55,7 @@ |
53 | 55 |
<span> |
54 | 56 |
<span v-if="prevPost" @click="movePost(prevPost)" class="sub-content-title"> |
55 | 57 |
{{ prevPost.post_title }} |
56 |
- </span> |
|
58 |
+ </span> |
|
57 | 59 |
<span v-else class="sub-content-title">이전글이 없습니다.</span> |
58 | 60 |
</span> |
59 | 61 |
</li> |
... | ... | @@ -114,7 +116,7 @@ |
114 | 116 |
}, |
115 | 117 |
methods: { |
116 | 118 |
postSelectListPage: function () { |
117 |
- this.$router.push({ path: '/Data.page',query:{'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort} }); |
|
119 |
+ this.$router.push({ path: '/Data.page', query: { 'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort } }); |
|
118 | 120 |
window.scrollTo({ |
119 | 121 |
top: 0, |
120 | 122 |
behavior: 'smooth' |
... | ... | @@ -129,9 +131,11 @@ |
129 | 131 |
hearder: { |
130 | 132 |
'Content-Type': "application/json; charset=UTF-8", |
131 | 133 |
}, |
132 |
- data: { 'post_id': vm.route.query.post_id, |
|
133 |
- 'file_id': vm.route.query.file_id, |
|
134 |
- 'bbs_id': vm.route.query.bbs_id } |
|
134 |
+ data: { |
|
135 |
+ 'post_id': vm.route.query.post_id, |
|
136 |
+ 'file_id': vm.route.query.file_id, |
|
137 |
+ 'bbs_id': vm.route.query.bbs_id |
|
138 |
+ } |
|
135 | 139 |
}).then(function (response) { |
136 | 140 |
vm.prevPost = response.data.postSelectOne.prevPost; |
137 | 141 |
vm.post = response.data.postSelectOne.post; |
... | ... | @@ -188,6 +192,7 @@ |
188 | 192 |
responseType: 'blob', |
189 | 193 |
data: `file_path=${encodeURIComponent(path)}` |
190 | 194 |
}).then((response) => { |
195 |
+ this.$store.commit('setLoading', true); |
|
191 | 196 |
const blob = new Blob([response.data]); |
192 | 197 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
193 | 198 |
|
... | ... | @@ -207,7 +212,7 @@ |
207 | 212 |
item.post_id = vm.post.post_id; |
208 | 213 |
item.bbs_id = vm.post.bbs_id; |
209 | 214 |
item.ctgry_nm = vm.post.ctgry_nm; |
210 |
- |
|
215 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
211 | 216 |
axios({ |
212 | 217 |
url: '/statistics/fileLogInsert.json', |
213 | 218 |
method: 'post', |
... | ... | @@ -215,16 +220,16 @@ |
215 | 220 |
'Content-Type': "application/json; charset=UTF-8", |
216 | 221 |
}, |
217 | 222 |
data: item |
218 |
- }).then(function(response){ |
|
223 |
+ }).then(function (response) { |
|
219 | 224 |
vm.$router.go(0); |
220 | 225 |
}) |
221 |
- |
|
226 |
+ |
|
222 | 227 |
}).catch(function (error) { |
223 | 228 |
alert('파일 다운로드 실패, 다시 시도해주세요.'); |
224 | 229 |
}); |
225 | 230 |
}, |
226 | 231 |
|
227 |
- movePost : function (post1) { |
|
232 |
+ movePost: function (post1) { |
|
228 | 233 |
const vm = this; |
229 | 234 |
axios({ |
230 | 235 |
url: '/post/postSelectOne.json', |
... | ... | @@ -232,15 +237,17 @@ |
232 | 237 |
hearder: { |
233 | 238 |
'Content-Type': "application/json; charset=UTF-8", |
234 | 239 |
}, |
235 |
- data: { 'post_id': post1.post_id, |
|
236 |
- 'file_id': post1.file_id, |
|
237 |
- 'bbs_id': post1.bbs_id } |
|
240 |
+ data: { |
|
241 |
+ 'post_id': post1.post_id, |
|
242 |
+ 'file_id': post1.file_id, |
|
243 |
+ 'bbs_id': post1.bbs_id |
|
244 |
+ } |
|
238 | 245 |
}).then(function (response) { |
239 | 246 |
vm.prevPost = response.data.postSelectOne.prevPost; |
240 | 247 |
vm.post = response.data.postSelectOne.post; |
241 | 248 |
vm.nextPost = response.data.postSelectOne.nextPost; |
242 | 249 |
vm.fileList = response.data.selectFileList; |
243 |
- |
|
250 |
+ |
|
244 | 251 |
|
245 | 252 |
vm.getViewer(vm.post.post_content) |
246 | 253 |
}).catch(function (error) { |
--- client/views/pages/user/Data/TechnologyOne.vue
+++ client/views/pages/user/Data/TechnologyOne.vue
... | ... | @@ -136,16 +136,16 @@ |
136 | 136 |
thumbnailFileList: [], |
137 | 137 |
attachFileList: [], |
138 | 138 |
src: null, |
139 |
- item:{} |
|
139 |
+ item: {} |
|
140 | 140 |
} |
141 | 141 |
}, |
142 | 142 |
methods: { |
143 | 143 |
postSelectListPage() { |
144 |
- this.$router.push({path:'/Technology.page', query: {'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort}}), |
|
145 |
- window.scrollTo({ |
|
146 |
- top: 0, |
|
147 |
- behavior: 'smooth' |
|
148 |
- }) |
|
144 |
+ this.$router.push({ path: '/Technology.page', query: { 'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry, 'sort': this.$route.query.sort } }), |
|
145 |
+ window.scrollTo({ |
|
146 |
+ top: 0, |
|
147 |
+ behavior: 'smooth' |
|
148 |
+ }) |
|
149 | 149 |
}, |
150 | 150 |
|
151 | 151 |
postSelectOne: function () { |
... | ... | @@ -226,6 +226,8 @@ |
226 | 226 |
responseType: 'blob', |
227 | 227 |
data: `file_path=${encodeURIComponent(path)}` |
228 | 228 |
}).then((response) => { |
229 |
+ |
|
230 |
+ this.$store.commit('setLoading', true); |
|
229 | 231 |
const blob = new Blob([response.data]); |
230 | 232 |
|
231 | 233 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -246,7 +248,7 @@ |
246 | 248 |
vm.item = vm.post |
247 | 249 |
vm.item.file_id = vm.attachFileList[0].file_id; |
248 | 250 |
vm.item.file_sn = vm.attachFileList[0].file_sn; |
249 |
- |
|
251 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
250 | 252 |
axios({ |
251 | 253 |
url: '/statistics/fileLogInsert.json', |
252 | 254 |
method: 'post', |
... | ... | @@ -254,7 +256,7 @@ |
254 | 256 |
'Content-Type': "application/json; charset=UTF-8", |
255 | 257 |
}, |
256 | 258 |
data: vm.item |
257 |
- }).then(function(response){ |
|
259 |
+ }).then(function (response) { |
|
258 | 260 |
vm.$router.go(0); |
259 | 261 |
}) |
260 | 262 |
|
--- client/views/pages/user/community/NoticeOne.vue
+++ client/views/pages/user/community/NoticeOne.vue
... | ... | @@ -12,9 +12,10 @@ |
12 | 12 |
<td class="title-zone" colspan="2"> |
13 | 13 |
<p><span class="post-title">{{ post.post_title }}</span></p> |
14 | 14 |
<div class="flex-end write-info"> |
15 |
- <p> <span class="writer">작성자 </span><span> {{ post.rgtr_id }}</span> |
|
16 |
- <span class="view">작성일자 </span><span> {{ yyyymmdd(post.reg_dt)}}</span> |
|
17 |
- <span class="view">조회수 </span><span> {{ post.view_cnt }}</span></p> |
|
15 |
+ <p> <span class="writer">작성자 </span><span> {{ post.rgtr_id }}</span> |
|
16 |
+ <span class="view">작성일자 </span><span> {{ yyyymmdd(post.reg_dt) }}</span> |
|
17 |
+ <span class="view">조회수 </span><span> {{ post.view_cnt }}</span> |
|
18 |
+ </p> |
|
18 | 19 |
</div> |
19 | 20 |
</td> |
20 | 21 |
</tr> |
... | ... | @@ -30,7 +31,7 @@ |
30 | 31 |
<label>첨부된 파일이 없습니다.</label> |
31 | 32 |
</div> |
32 | 33 |
<ul v-else v-for="(item, idx) in fileList" :key="idx"> |
33 |
- <li @click="downloadFile(item)">{{ item.real_file_nm }}</li> |
|
34 |
+ <li @click="downloadFile(item)" class="cursor">{{ item.real_file_nm }}</li> |
|
34 | 35 |
</ul> |
35 | 36 |
</td> |
36 | 37 |
</tr> |
... | ... | @@ -39,21 +40,21 @@ |
39 | 40 |
<div class="article-list"> |
40 | 41 |
<ul> |
41 | 42 |
<li><span class="next">다음글</span> |
42 |
- <span> |
|
43 |
- <span v-if="nextPost" @click="movePost(nextPost)" class="sub-content-title"> |
|
44 |
- {{ nextPost.post_title }} |
|
45 |
- </span> |
|
46 |
- <span v-else class="sub-content-title">다음글이 없습니다.</span> |
|
47 |
- </span> |
|
48 |
- </li> |
|
49 |
- <li><span class="prev">이전글</span> |
|
50 |
- <span> |
|
51 |
- <span v-if="prevPost" @click="movePost(prevPost)" class="sub-content-title"> |
|
52 |
- {{ prevPost.post_title }} |
|
53 |
- </span> |
|
54 |
- <span v-else class="sub-content-title">이전글이 없습니다.</span> |
|
55 |
- </span> |
|
56 |
- </li> |
|
43 |
+ <span> |
|
44 |
+ <span v-if="nextPost" @click="movePost(nextPost)" class="sub-content-title"> |
|
45 |
+ {{ nextPost.post_title }} |
|
46 |
+ </span> |
|
47 |
+ <span v-else class="sub-content-title">다음글이 없습니다.</span> |
|
48 |
+ </span> |
|
49 |
+ </li> |
|
50 |
+ <li><span class="prev">이전글</span> |
|
51 |
+ <span> |
|
52 |
+ <span v-if="prevPost" @click="movePost(prevPost)" class="sub-content-title"> |
|
53 |
+ {{ prevPost.post_title }} |
|
54 |
+ </span> |
|
55 |
+ <span v-else class="sub-content-title">이전글이 없습니다.</span> |
|
56 |
+ </span> |
|
57 |
+ </li> |
|
57 | 58 |
</ul> |
58 | 59 |
</div> |
59 | 60 |
<div class="btn-wrap"> |
... | ... | @@ -63,7 +64,7 @@ |
63 | 64 |
</div> |
64 | 65 |
</div> |
65 | 66 |
</template> |
66 |
- |
|
67 |
+ |
|
67 | 68 |
<script> |
68 | 69 |
import axios from 'axios'; |
69 | 70 |
import COMMON_UTIL from '../../../../resources/js/commonUtil.js'; |
... | ... | @@ -122,9 +123,11 @@ |
122 | 123 |
hearder: { |
123 | 124 |
'Content-Type': "application/json; charset=UTF-8", |
124 | 125 |
}, |
125 |
- data: { 'post_id': vm.route.query.post_id, |
|
126 |
- 'file_id': vm.route.query.file_id, |
|
127 |
- 'bbs_id': vm.route.query.bbs_id } |
|
126 |
+ data: { |
|
127 |
+ 'post_id': vm.route.query.post_id, |
|
128 |
+ 'file_id': vm.route.query.file_id, |
|
129 |
+ 'bbs_id': vm.route.query.bbs_id |
|
130 |
+ } |
|
128 | 131 |
}).then(function (response) { |
129 | 132 |
vm.prevPost = response.data.postSelectOne.prevPost; |
130 | 133 |
vm.post = response.data.postSelectOne.post; |
... | ... | @@ -180,6 +183,7 @@ |
180 | 183 |
responseType: 'blob', |
181 | 184 |
data: `file_path=${encodeURIComponent(path)}` |
182 | 185 |
}).then((response) => { |
186 |
+ this.$store.commit('setLoading', true); |
|
183 | 187 |
const blob = new Blob([response.data]); |
184 | 188 |
|
185 | 189 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -199,7 +203,7 @@ |
199 | 203 |
|
200 | 204 |
item.post_id = vm.post.post_id; |
201 | 205 |
item.bbs_id = vm.post.bbs_id; |
202 |
- |
|
206 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
203 | 207 |
axios({ |
204 | 208 |
url: '/statistics/fileLogInsert.json', |
205 | 209 |
method: 'post', |
... | ... | @@ -207,7 +211,7 @@ |
207 | 211 |
'Content-Type': "application/json; charset=UTF-8", |
208 | 212 |
}, |
209 | 213 |
data: item |
210 |
- }).then(function(response){ |
|
214 |
+ }).then(function (response) { |
|
211 | 215 |
vm.$router.go(0); |
212 | 216 |
}) |
213 | 217 |
|
... | ... | @@ -217,10 +221,10 @@ |
217 | 221 |
}, |
218 | 222 |
|
219 | 223 |
postSelectListPage: function () { |
220 |
- this.$router.push({ path: '/Notice.page', query: {'page': this.$route.query.page, 'sort': this.$route.query.sort} }); |
|
224 |
+ this.$router.push({ path: '/Notice.page', query: { 'page': this.$route.query.page, 'sort': this.$route.query.sort } }); |
|
221 | 225 |
}, |
222 | 226 |
|
223 |
- movePost : function (post1) { |
|
227 |
+ movePost: function (post1) { |
|
224 | 228 |
const vm = this; |
225 | 229 |
axios({ |
226 | 230 |
url: '/post/postSelectOne.json', |
... | ... | @@ -228,15 +232,17 @@ |
228 | 232 |
hearder: { |
229 | 233 |
'Content-Type': "application/json; charset=UTF-8", |
230 | 234 |
}, |
231 |
- data: { 'post_id': post1.post_id, |
|
232 |
- 'file_id': post1.file_id, |
|
233 |
- 'bbs_id': post1.bbs_id } |
|
235 |
+ data: { |
|
236 |
+ 'post_id': post1.post_id, |
|
237 |
+ 'file_id': post1.file_id, |
|
238 |
+ 'bbs_id': post1.bbs_id |
|
239 |
+ } |
|
234 | 240 |
}).then(function (response) { |
235 | 241 |
vm.prevPost = response.data.postSelectOne.prevPost; |
236 | 242 |
vm.post = response.data.postSelectOne.post; |
237 | 243 |
vm.nextPost = response.data.postSelectOne.nextPost; |
238 | 244 |
vm.fileList = response.data.selectFileList; |
239 |
- |
|
245 |
+ |
|
240 | 246 |
|
241 | 247 |
vm.getViewer(vm.post.post_content) |
242 | 248 |
}).catch(function (error) { |
... | ... | @@ -256,4 +262,3 @@ |
256 | 262 |
}, |
257 | 263 |
} |
258 | 264 |
</script> |
259 |
- |
--- client/views/pages/user/community/WgcommunityOne.vue
+++ client/views/pages/user/community/WgcommunityOne.vue
... | ... | @@ -15,16 +15,21 @@ |
15 | 15 |
<p class="flex detail-title"> |
16 | 16 |
<span class="post-title">{{ post.post_title }}</span> |
17 | 17 |
<span v-if="post.ctgry_nm === 'WG1'" class="category-zone">(WG1)교육과정 표준체계</span> |
18 |
- <span v-else-if="post.ctgry_nm === 'WG2'" class="category-zone">(WG2)맞춤학습지원 기능</span> |
|
18 |
+ <span v-else-if="post.ctgry_nm === 'WG2'" class="category-zone">(WG2)맞춤학습지원 |
|
19 |
+ 기능</span> |
|
19 | 20 |
<span v-else-if="post.ctgry_nm === 'WG3'" class="category-zone">(WG3)접근성/UDL</span> |
20 |
- <span v-else-if="post.ctgry_nm === 'WG4'" class="category-zone">(WG4)클라우드 보안인증</span> |
|
21 |
+ <span v-else-if="post.ctgry_nm === 'WG4'" class="category-zone">(WG4)클라우드 |
|
22 |
+ 보안인증</span> |
|
21 | 23 |
<span v-else-if="post.ctgry_nm === 'WG5'" class="category-zone">(WG5)통합인증체계</span> |
22 | 24 |
<span v-else-if="post.ctgry_nm === 'WG6'" |
23 | 25 |
class="category-zone">(WG6)학습이력데이터/통합대시보드</span> |
24 |
- <span v-else-if="post.ctgry_nm === 'WG7'" class="category-zone">(WG7)AI 트레이닝 데이터</span> |
|
25 |
- <span v-else-if="post.ctgry_nm === 'WG8'" class="category-zone">(WG8)국가수준 학습분석</span> |
|
26 |
+ <span v-else-if="post.ctgry_nm === 'WG7'" class="category-zone">(WG7)AI 트레이닝 |
|
27 |
+ 데이터</span> |
|
28 |
+ <span v-else-if="post.ctgry_nm === 'WG8'" class="category-zone">(WG8)국가수준 |
|
29 |
+ 학습분석</span> |
|
26 | 30 |
<span v-else-if="post.ctgry_nm === 'WG9'" class="category-zone">(WG9)학교 인프라</span> |
27 |
- <span v-else-if="post.ctgry_nm === 'WG10'" class="category-zone">(WG10)서비스 품질관리</span> |
|
31 |
+ <span v-else-if="post.ctgry_nm === 'WG10'" class="category-zone">(WG10)서비스 |
|
32 |
+ 품질관리</span> |
|
28 | 33 |
<span v-else class="category-zone">(WG11)서비스 정책</span> |
29 | 34 |
</p> |
30 | 35 |
<p class="flex-end write-info"> |
... | ... | @@ -47,7 +52,7 @@ |
47 | 52 |
<label>첨부된 파일이 없습니다.</label> |
48 | 53 |
</div> |
49 | 54 |
<ul v-else v-for="(item, idx) in fileList" :key="idx"> |
50 |
- <li @click="downloadFile(item)">{{ item.real_file_nm }}</li> |
|
55 |
+ <li @click="downloadFile(item)" class="cursor">{{ item.real_file_nm }}</li> |
|
51 | 56 |
</ul> |
52 | 57 |
</td> |
53 | 58 |
</tr> |
... | ... | @@ -195,6 +200,7 @@ |
195 | 200 |
responseType: 'blob', |
196 | 201 |
data: `file_path=${encodeURIComponent(path)}` |
197 | 202 |
}).then((response) => { |
203 |
+ this.$store.commit('setLoading', true); |
|
198 | 204 |
const blob = new Blob([response.data]); |
199 | 205 |
|
200 | 206 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -215,7 +221,7 @@ |
215 | 221 |
item.post_id = vm.post.post_id; |
216 | 222 |
item.bbs_id = vm.post.bbs_id; |
217 | 223 |
item.ctgry_nm = vm.post.ctgry_nm; |
218 |
- |
|
224 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
219 | 225 |
axios({ |
220 | 226 |
url: '/statistics/fileLogInsert.json', |
221 | 227 |
method: 'post', |
... | ... | @@ -264,7 +270,7 @@ |
264 | 270 |
}, |
265 | 271 |
|
266 | 272 |
postSelectListPage() { |
267 |
- this.$router.push({ path: 'Wgcommunity.page',query:{'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry} }); |
|
273 |
+ this.$router.push({ path: 'Wgcommunity.page', query: { 'page': this.$route.query.page, 'ctgry': this.$route.query.ctgry } }); |
|
268 | 274 |
}, |
269 | 275 |
}, |
270 | 276 |
watch: {}, |
--- client/views/pages/user/mypage/Info.vue
+++ client/views/pages/user/mypage/Info.vue
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 |
</div> |
36 | 36 |
<div> |
37 | 37 |
<p class="info-th">메일 구독서비스</p> |
38 |
- <span>{{ user.subscribe == false ? '미구독' : '구독'}}</span> |
|
38 |
+ <span>{{ user.subscribe == false ? '미구독' : '구독' }}</span> |
|
39 | 39 |
</div> |
40 | 40 |
|
41 | 41 |
</section> |
... | ... | @@ -66,7 +66,8 @@ |
66 | 66 |
</div> |
67 | 67 |
<div> |
68 | 68 |
<p>주소</p> |
69 |
- <span>[{{ company.company_zip }}] {{ company.company_addr }} {{ company.company_daddr }}</span> |
|
69 |
+ <span>[{{ company.company_zip }}] {{ company.company_addr }} {{ company.company_daddr |
|
70 |
+ }}</span> |
|
70 | 71 |
</div> |
71 | 72 |
<div> |
72 | 73 |
<p>홈페이지</p> |
... | ... | @@ -133,7 +134,7 @@ |
133 | 134 |
</section> |
134 | 135 |
<section class="info-sec-bt"> |
135 | 136 |
<!-- <router-link to="/infosub.page"> --> |
136 |
- <button class="blue-btn" @click="infoUpdate">수정하기</button> |
|
137 |
+ <button class="blue-btn" @click="infoUpdate">수정하기</button> |
|
137 | 138 |
<!-- </router-link> --> |
138 | 139 |
</section> |
139 | 140 |
|
... | ... | @@ -170,15 +171,15 @@ |
170 | 171 |
</div> |
171 | 172 |
</div> |
172 | 173 |
<div v-if="isModalOpen" class="modal-wrapper"> |
173 |
- <div class="modal-container admin-alert"> |
|
174 |
- <p class="modal-text"> |
|
175 |
- 승인 대기 중입니다. 이후 내정보 수정이 가능합니다. |
|
176 |
- </p> |
|
177 |
- <div class="modal-end"> |
|
178 |
- <button class="dark-gray-btn" @click="closeModal()" style="width:100%">닫기</button> |
|
179 |
- </div> |
|
180 |
- </div> |
|
181 |
- </div> |
|
174 |
+ <div class="modal-container admin-alert"> |
|
175 |
+ <p class="modal-text"> |
|
176 |
+ 승인 대기 중입니다. 이후 내정보 수정이 가능합니다. |
|
177 |
+ </p> |
|
178 |
+ <div class="modal-end"> |
|
179 |
+ <button class="dark-gray-btn" @click="closeModal()" style="width:100%">닫기</button> |
|
180 |
+ </div> |
|
181 |
+ </div> |
|
182 |
+ </div> |
|
182 | 183 |
</div> |
183 | 184 |
</template> |
184 | 185 |
|
... | ... | @@ -228,20 +229,20 @@ |
228 | 229 |
subscribe: null, |
229 | 230 |
}, |
230 | 231 |
presentPwd: null, |
231 |
- changePwd : null, |
|
232 |
- changePwdCheck : null, |
|
233 |
- isModalOpen:false |
|
232 |
+ changePwd: null, |
|
233 |
+ changePwdCheck: null, |
|
234 |
+ isModalOpen: false |
|
234 | 235 |
} |
235 | 236 |
}, |
236 | 237 |
methods: { |
237 | 238 |
openModal: function () { |
238 |
- this.isModalOpen = true; |
|
239 |
- }, |
|
239 |
+ this.isModalOpen = true; |
|
240 |
+ }, |
|
240 | 241 |
|
241 |
- closeModal: function () { |
|
242 |
- this.isModalOpen = false; |
|
243 |
- this.modalType = null; |
|
244 |
- }, |
|
242 |
+ closeModal: function () { |
|
243 |
+ this.isModalOpen = false; |
|
244 |
+ this.modalType = null; |
|
245 |
+ }, |
|
245 | 246 |
|
246 | 247 |
openModal1() { |
247 | 248 |
this.showpwchange2 = true; |
... | ... | @@ -280,7 +281,7 @@ |
280 | 281 |
const isUserLogin = this.store.state.loginUser; |
281 | 282 |
if (isUserLogin.create_account_approval === 'N') { |
282 | 283 |
this.isModalOpen = true; |
283 |
- } else{ |
|
284 |
+ } else { |
|
284 | 285 |
this.$router.push('/Infosub.page'); |
285 | 286 |
} |
286 | 287 |
}, |
... | ... | @@ -348,6 +349,7 @@ |
348 | 349 |
responseType: 'blob', |
349 | 350 |
data: `file_path=${encodeURIComponent(path)}` |
350 | 351 |
}).then((response) => { |
352 |
+ this.$store.commit('setLoading', true); |
|
351 | 353 |
const blob = new Blob([response.data]); |
352 | 354 |
|
353 | 355 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -364,7 +366,7 @@ |
364 | 366 |
a.click(); |
365 | 367 |
window.URL.revokeObjectURL(url); |
366 | 368 |
} |
367 |
- |
|
369 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
368 | 370 |
this.$router.go(0); |
369 | 371 |
|
370 | 372 |
}).catch(function (error) { |
... | ... | @@ -373,19 +375,19 @@ |
373 | 375 |
}, |
374 | 376 |
|
375 | 377 |
|
376 |
- checkPwd: function() { |
|
378 |
+ checkPwd: function () { |
|
377 | 379 |
const vm = this; |
378 | 380 |
let passwordRegex = /^[A-Za-z0-9]{6,20}$/; |
379 |
- if (vm.changePwd == null){ |
|
381 |
+ if (vm.changePwd == null) { |
|
380 | 382 |
alert("변경할 비밀번호를 입력해주세요.") |
381 | 383 |
return; |
382 |
- } else if(vm.changePwdCheck == null) { |
|
384 |
+ } else if (vm.changePwdCheck == null) { |
|
383 | 385 |
alert("비밀번호 확인을 입력해주세요.") |
384 | 386 |
return; |
385 | 387 |
} else if (vm.changePwd !== vm.changePwdCheck) { |
386 | 388 |
alert("비밀번호가 불일치합니다."); |
387 |
- return; |
|
388 |
- } else if(!passwordRegex.test(vm.changePwd)){ |
|
389 |
+ return; |
|
390 |
+ } else if (!passwordRegex.test(vm.changePwd)) { |
|
389 | 391 |
alert('비밀번호는 6~20자의 영문, 숫자만 사용 가능합니다.') |
390 | 392 |
return; |
391 | 393 |
} |
... | ... | @@ -414,7 +416,7 @@ |
414 | 416 |
}, |
415 | 417 |
data: user |
416 | 418 |
}).then(function (response) { |
417 |
- if(response.data == 1){ |
|
419 |
+ if (response.data == 1) { |
|
418 | 420 |
vm.changePassword() |
419 | 421 |
} else { |
420 | 422 |
alert("현재 비밀번호가 일치하지 않습니다."); |
... | ... | @@ -424,7 +426,7 @@ |
424 | 426 |
}); |
425 | 427 |
}, |
426 | 428 |
|
427 |
- changePassword: function() { |
|
429 |
+ changePassword: function () { |
|
428 | 430 |
const vm = this; |
429 | 431 |
|
430 | 432 |
var iv = vm.store.state.key.iv; |
... | ... | @@ -450,14 +452,14 @@ |
450 | 452 |
}, |
451 | 453 |
data: user |
452 | 454 |
}).then(function (response) { |
453 |
- if(response.data == 1){ |
|
455 |
+ if (response.data == 1) { |
|
454 | 456 |
alert('비밀번호 변경에 성공하였습니다.') |
455 | 457 |
vm.changePwd = null; |
456 | 458 |
vm.presentPwd = null; |
457 | 459 |
vm.changePwdCheck = null; |
458 | 460 |
vm.closeModal2() |
459 | 461 |
} else { |
460 |
- alert('비밀번호 변경에 실패하였습니다.') |
|
462 |
+ alert('비밀번호 변경에 실패하였습니다.') |
|
461 | 463 |
} |
462 | 464 |
}).catch(function (error) { |
463 | 465 |
alert("비밀번호 변경 오류, 관리자에게 문의해주세요.") |
... | ... | @@ -478,6 +480,3 @@ |
478 | 480 |
} |
479 | 481 |
} |
480 | 482 |
</script> |
481 |
- |
|
482 |
- |
|
483 |
- |
--- client/views/pages/user/mypage/Infosub.vue
+++ client/views/pages/user/mypage/Infosub.vue
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 |
로고 수정하기 |
70 | 70 |
</div> |
71 | 71 |
<input type="file" accept="image/*" name="logoImg" id="logoImg" ref="logoImg" |
72 |
- @change="logoUpload" style="display: none;" /> |
|
72 |
+ @change="logoUpload" style="display: none;" /> |
|
73 | 73 |
</section> |
74 | 74 |
<div> |
75 | 75 |
<p>사업자등록번호</p> |
... | ... | @@ -84,23 +84,25 @@ |
84 | 84 |
<p>우리회사 키워드</p> |
85 | 85 |
</div> |
86 | 86 |
<div> |
87 |
- <p v-show="checkedKeywords.length < 3" class="item-style err-text" style="color: red;">최소 |
|
87 |
+ <p v-show="checkedKeywords.length < 3" class="item-style err-text" style="color: red;"> |
|
88 |
+ 최소 |
|
88 | 89 |
3개 ~ 최대 6개를 선택해주세요. |
89 | 90 |
</p> |
90 |
- <p v-show="checkedKeywords.length == 6" class="item-style err-text" style="color: red;">최대 |
|
91 |
+ <p v-show="checkedKeywords.length == 6" class="item-style err-text" style="color: red;"> |
|
92 |
+ 최대 |
|
91 | 93 |
6개까지 입니다.</p> |
92 | 94 |
<div class=" keyword-wrap" style="padding: 1rem 0;"> |
93 | 95 |
<ul> |
94 |
- |
|
96 |
+ |
|
95 | 97 |
<li v-for="(keyword, index) in keywords" :key="index"> |
96 | 98 |
<!-- <input type="checkbox" :id="keyword.name" v-model="keyword.checked" |
97 | 99 |
class="keyword-label" :disabled="isCheckboxDisabled(index)" |
98 | 100 |
style="display: none;" /> --> |
99 | 101 |
<input type="checkbox" :id="keyword.name" v-model="keyword.checked" |
100 |
- class="keyword-label" style="display: none;"/> |
|
102 |
+ class="keyword-label" style="display: none;" /> |
|
101 | 103 |
<label :for="keyword.name" class="keyword">{{ keyword.name }}</label> |
102 | 104 |
</li> |
103 |
- |
|
105 |
+ |
|
104 | 106 |
</ul> |
105 | 107 |
</div> |
106 | 108 |
|
... | ... | @@ -109,7 +111,8 @@ |
109 | 111 |
|
110 | 112 |
<div> |
111 | 113 |
<p>한줄소개</p> |
112 |
- <span><input type="text" name="" id="" v-model="company.company_simple_info" ref="company_simple_info"></span> |
|
114 |
+ <span><input type="text" name="" id="" v-model="company.company_simple_info" |
|
115 |
+ ref="company_simple_info"></span> |
|
113 | 116 |
|
114 | 117 |
</div> |
115 | 118 |
<div class="join-sec1 joinsub0-1"> |
... | ... | @@ -125,17 +128,20 @@ |
125 | 128 |
<input type="text" v-model="company['company_addr']" placeholder="주소" readonly /> |
126 | 129 |
</div> |
127 | 130 |
<div> |
128 |
- <input type="text" v-model="company['company_daddr']" placeholder="상세주소" ref="company_daddr" /> |
|
131 |
+ <input type="text" v-model="company['company_daddr']" placeholder="상세주소" |
|
132 |
+ ref="company_daddr" /> |
|
129 | 133 |
</div> |
130 | 134 |
</div> |
131 | 135 |
</div> |
132 | 136 |
<div> |
133 | 137 |
<p>홈페이지</p> |
134 |
- <span><input type="text" name="" id="" v-model="company.company_hp_url" ref="company_hp_url"></span> |
|
138 |
+ <span><input type="text" name="" id="" v-model="company.company_hp_url" |
|
139 |
+ ref="company_hp_url"></span> |
|
135 | 140 |
</div> |
136 | 141 |
<div> |
137 | 142 |
<p>대표전화</p> |
138 |
- <span><input type="text" name="" id="" v-model="company.company_telno" ref="company_telno"></span> |
|
143 |
+ <span><input type="text" name="" id="" v-model="company.company_telno" |
|
144 |
+ ref="company_telno"></span> |
|
139 | 145 |
|
140 | 146 |
</div> |
141 | 147 |
<div class="info-sec-summary"> |
... | ... | @@ -176,10 +182,10 @@ |
176 | 182 |
<span class="matchingbox-img"> |
177 | 183 |
<label for="file-input" class="file-input" @click="openCardFileInput"> |
178 | 184 |
<img :src="cardPreview || 'http://localhost:8080' + cardFile.file_path + '/' + cardFile.file_nm + '.' + cardFile.file_extn_nm" |
179 |
- width="100%" alt=""> |
|
185 |
+ width="100%" alt=""> |
|
180 | 186 |
</label> |
181 |
- <input type="file" accept="image/*" name="imgFile" id="businessCardImg" ref="businessCardImg" |
|
182 |
- @change="businessCardUpload" style="display: none;" /></span> |
|
187 |
+ <input type="file" accept="image/*" name="imgFile" id="businessCardImg" |
|
188 |
+ ref="businessCardImg" @change="businessCardUpload" style="display: none;" /></span> |
|
183 | 189 |
</div> |
184 | 190 |
</section> |
185 | 191 |
|
... | ... | @@ -187,10 +193,10 @@ |
187 | 193 |
|
188 | 194 |
<section class="info-sec-bt"> |
189 | 195 |
<!-- <router-link to="/info.page"> --> |
190 |
- <button class="gray-btn" @click="goToInfoPage">이전</button> |
|
191 |
- <!-- <button class="blue-btn" @click="updateUser">저장하기</button> --> |
|
192 |
- <button class="blue-btn" v-if="user.user_auth == 'company'" @click="companyUpdate">저장하기</button> |
|
193 |
- <button class="blue-btn" v-if="user.user_auth === 'common'" @click="updateUser">저장하기</button> |
|
196 |
+ <button class="gray-btn" @click="goToInfoPage">이전</button> |
|
197 |
+ <!-- <button class="blue-btn" @click="updateUser">저장하기</button> --> |
|
198 |
+ <button class="blue-btn" v-if="user.user_auth == 'company'" @click="companyUpdate">저장하기</button> |
|
199 |
+ <button class="blue-btn" v-if="user.user_auth === 'common'" @click="updateUser">저장하기</button> |
|
194 | 200 |
<!-- </router-link> --> |
195 | 201 |
</section> |
196 | 202 |
</div> |
... | ... | @@ -246,7 +252,7 @@ |
246 | 252 |
oEditors: [], |
247 | 253 |
// 키워드 배열 |
248 | 254 |
// keywords: ['#수학', '#영어', '#정보', '#초등', '#중등', '#고등', '#AI튜터', '#블록코딩', '#패턴인식', '#대시보드', '#학습분석', '#보편적학습설계', '#클라우드', '#AI보조교사', '#음성인식', '#학습맵', '#맞춤형콘텐츠'], |
249 |
- keywords:[], |
|
255 |
+ keywords: [], |
|
250 | 256 |
selectedKeywords: [], |
251 | 257 |
checkedKeywords: [], |
252 | 258 |
originalSubscribe: null, |
... | ... | @@ -319,7 +325,7 @@ |
319 | 325 |
data: { 'user_id': vm.user.user_id } |
320 | 326 |
}).then(function (response) { |
321 | 327 |
vm.company = response.data.result |
322 |
- |
|
328 |
+ |
|
323 | 329 |
const selectedKeywordList = response.data.result.keyword; |
324 | 330 |
const selectedKeywords = selectedKeywordList.split('#').filter(keyword => keyword !== '').map(keyword => '#' + keyword); |
325 | 331 |
vm.selectedKeywords = selectedKeywords; |
... | ... | @@ -357,6 +363,7 @@ |
357 | 363 |
responseType: 'blob', |
358 | 364 |
data: `file_path=${encodeURIComponent(path)}` |
359 | 365 |
}).then((response) => { |
366 |
+ this.$store.commit('setLoading', true); |
|
360 | 367 |
const blob = new Blob([response.data]); |
361 | 368 |
|
362 | 369 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -373,7 +380,7 @@ |
373 | 380 |
a.click(); |
374 | 381 |
window.URL.revokeObjectURL(url); |
375 | 382 |
} |
376 |
- |
|
383 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
377 | 384 |
this.$router.go(0); |
378 | 385 |
|
379 | 386 |
}).catch(function (error) { |
... | ... | @@ -386,7 +393,7 @@ |
386 | 393 |
if (this.initializedEditors[idx]) { |
387 | 394 |
return; |
388 | 395 |
} |
389 |
- |
|
396 |
+ |
|
390 | 397 |
// 스마트 에디터 적용 |
391 | 398 |
const oEditors = vm.oEditors; |
392 | 399 |
nhn.husky.EZCreator.createInIFrame({ |
... | ... | @@ -417,14 +424,14 @@ |
417 | 424 |
}); |
418 | 425 |
vm.initializedEditors[idx] = true; |
419 | 426 |
}, |
420 |
- |
|
421 |
- updateUser : function(){ |
|
422 |
- if(!this.validationCheckForUser()){ |
|
423 |
- return |
|
424 |
- } |
|
425 |
- |
|
427 |
+ |
|
428 |
+ updateUser: function () { |
|
429 |
+ if (!this.validationCheckForUser()) { |
|
430 |
+ return |
|
431 |
+ } |
|
432 |
+ |
|
426 | 433 |
const vm = this; |
427 |
- |
|
434 |
+ |
|
428 | 435 |
var iv = vm.store.state.key.iv; |
429 | 436 |
var salt = vm.store.state.key.salt; |
430 | 437 |
var passPhrase = vm.store.state.key.ENC_KEY; |
... | ... | @@ -448,11 +455,11 @@ |
448 | 455 |
'Content-Type': 'application/json; charset=UTF-8', |
449 | 456 |
}, |
450 | 457 |
data: data |
451 |
- }).then(function(response) { |
|
452 |
- if(response.data == 1){ |
|
453 |
- if(vm.originalSubscribe != vm.user.subscribe && vm.originalSubscribe == true){ |
|
458 |
+ }).then(function (response) { |
|
459 |
+ if (response.data == 1) { |
|
460 |
+ if (vm.originalSubscribe != vm.user.subscribe && vm.originalSubscribe == true) { |
|
454 | 461 |
vm.subscDelete() |
455 |
- } else if(vm.originalSubscribe != vm.user.subscribe && vm.originalSubscribe == false) { |
|
462 |
+ } else if (vm.originalSubscribe != vm.user.subscribe && vm.originalSubscribe == false) { |
|
456 | 463 |
vm.subscInsert() |
457 | 464 |
} else { |
458 | 465 |
alert("회원정보 수정이 완료되었습니다.") |
... | ... | @@ -466,7 +473,7 @@ |
466 | 473 |
}); |
467 | 474 |
}, |
468 | 475 |
|
469 |
- subscInsert : function() { |
|
476 |
+ subscInsert: function () { |
|
470 | 477 |
const vm = this; |
471 | 478 |
|
472 | 479 |
var iv = vm.store.state.key.iv; |
... | ... | @@ -492,16 +499,16 @@ |
492 | 499 |
}, |
493 | 500 |
data: data |
494 | 501 |
}).then(function (response) { |
495 |
- if(response.data == 1){ |
|
502 |
+ if (response.data == 1) { |
|
496 | 503 |
alert("회원정보 수정이 완료되었습니다.") |
497 | 504 |
vm.$router.push('/info.page'); |
498 |
- } |
|
505 |
+ } |
|
499 | 506 |
}).catch(function (error) { |
500 | 507 |
alert('구독 신청 오류, 관리자에게 문의해주세요.'); |
501 | 508 |
}); |
502 | 509 |
}, |
503 | 510 |
|
504 |
- subscDelete : function() { |
|
511 |
+ subscDelete: function () { |
|
505 | 512 |
const vm = this; |
506 | 513 |
|
507 | 514 |
var iv = vm.store.state.key.iv; |
... | ... | @@ -525,23 +532,23 @@ |
525 | 532 |
}, |
526 | 533 |
data: data |
527 | 534 |
}).then(function (response) { |
528 |
- if(response.data == 1){ |
|
535 |
+ if (response.data == 1) { |
|
529 | 536 |
alert("회원정보 수정이 완료되었습니다.") |
530 | 537 |
vm.$router.push('/info.page'); |
531 |
- } |
|
538 |
+ } |
|
532 | 539 |
}).catch(function (error) { |
533 | 540 |
alert('구독 취소 오류, 관리자에게 문의해주세요.'); |
534 | 541 |
}); |
535 | 542 |
}, |
536 | 543 |
|
537 |
- emailDuplicateCheck : function() { |
|
544 |
+ emailDuplicateCheck: function () { |
|
538 | 545 |
let emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; |
539 |
- if(!emailRegex.test(this.user.user_eml)){ |
|
546 |
+ if (!emailRegex.test(this.user.user_eml)) { |
|
540 | 547 |
alert('이메일 형식이 올바르지 않습니다.') |
541 | 548 |
this.$refs.user_eml.focus(); |
542 |
- return ; |
|
549 |
+ return; |
|
543 | 550 |
} |
544 |
- |
|
551 |
+ |
|
545 | 552 |
const vm = this; |
546 | 553 |
|
547 | 554 |
var iv = vm.store.state.key.iv; |
... | ... | @@ -561,23 +568,23 @@ |
561 | 568 |
url: '/user/userEmlCheck.json', |
562 | 569 |
method: 'post', |
563 | 570 |
headers: { |
564 |
- 'Content-Type' : 'application/json; charset=UTF-8', |
|
571 |
+ 'Content-Type': 'application/json; charset=UTF-8', |
|
565 | 572 |
}, |
566 | 573 |
data: data |
567 |
- }).then(function(response) { |
|
568 |
- if(response.data == false){ |
|
574 |
+ }).then(function (response) { |
|
575 |
+ if (response.data == false) { |
|
569 | 576 |
vm.emlDuplicateChecked = false; |
570 | 577 |
alert("사용할 수 없는 이메일입니다.") |
571 | 578 |
} else { |
572 | 579 |
vm.emlDuplicateChecked = true; |
573 | 580 |
alert("사용가능한 이메일입니다.") |
574 | 581 |
} |
575 |
- }).catch(function(error){ |
|
582 |
+ }).catch(function (error) { |
|
576 | 583 |
alert('이메일 중복확인 오류, 관리자에게 문의해주세요.'); |
577 | 584 |
}); |
578 | 585 |
}, |
579 | 586 |
|
580 |
- showKeywordList : function(selectedKeywords) { |
|
587 |
+ showKeywordList: function (selectedKeywords) { |
|
581 | 588 |
const vm = this; |
582 | 589 |
axios({ |
583 | 590 |
url: "/keyword/keywordList.json", |
... | ... | @@ -588,7 +595,7 @@ |
588 | 595 |
}).then(function (response) { |
589 | 596 |
vm.keywords = response.data.map(item => { |
590 | 597 |
return { |
591 |
- name: item.keyword_nm, |
|
598 |
+ name: item.keyword_nm, |
|
592 | 599 |
checked: (selectedKeywords && selectedKeywords.includes(item.keyword_nm)) ? true : false |
593 | 600 |
}; |
594 | 601 |
}); |
... | ... | @@ -597,15 +604,15 @@ |
597 | 604 |
}); |
598 | 605 |
}, |
599 | 606 |
|
600 |
- //로고 이미지 등록 |
|
601 |
- logoUpload: function (e) { |
|
607 |
+ //로고 이미지 등록 |
|
608 |
+ logoUpload: function (e) { |
|
602 | 609 |
const vm = this; |
603 | 610 |
|
604 | 611 |
const MAX_WIDTH = 340; |
605 | 612 |
const MAX_HEIGHT = 120; |
606 | 613 |
|
607 | 614 |
for (const file of e.target.files) { |
608 |
- |
|
615 |
+ |
|
609 | 616 |
var reader = new FileReader(); |
610 | 617 |
reader.onload = function (e) { |
611 | 618 |
var img = new Image(); |
... | ... | @@ -617,14 +624,14 @@ |
617 | 624 |
// 정해진 크기보다 큰 경우 경고창 표시 |
618 | 625 |
if (width > MAX_WIDTH || height > MAX_HEIGHT) { |
619 | 626 |
alert("로고 이미지 크기는 최대 " + MAX_WIDTH + "x" + MAX_HEIGHT + "입니다."); |
620 |
- vm.$refs.logoImg.value= ''; |
|
627 |
+ vm.$refs.logoImg.value = ''; |
|
621 | 628 |
} else { |
622 | 629 |
vm.logoPreview = reader.result; |
623 | 630 |
vm.file.append('logo_img', file); |
624 | 631 |
vm.deleteFileList.push(vm.logoFile); |
625 |
- const fileItem = { file, file_ty: 'logo'}; |
|
632 |
+ const fileItem = { file, file_ty: 'logo' }; |
|
626 | 633 |
vm.insertFileList.push(fileItem); |
627 |
- } |
|
634 |
+ } |
|
628 | 635 |
}; |
629 | 636 |
}; |
630 | 637 |
reader.readAsDataURL(file); |
... | ... | @@ -640,7 +647,7 @@ |
640 | 647 |
const MAX_HEIGHT = 614; |
641 | 648 |
|
642 | 649 |
for (const file of e.target.files) { |
643 |
- |
|
650 |
+ |
|
644 | 651 |
var reader = new FileReader(); |
645 | 652 |
reader.onload = function () { |
646 | 653 |
var img = new Image(); |
... | ... | @@ -656,7 +663,7 @@ |
656 | 663 |
} else { |
657 | 664 |
vm.cardPreview = reader.result; |
658 | 665 |
vm.file.append('business_card_img', file); |
659 |
- const fileItem = { file, file_ty: 'card'}; |
|
666 |
+ const fileItem = { file, file_ty: 'card' }; |
|
660 | 667 |
vm.insertFileList.push(fileItem); |
661 | 668 |
vm.deleteFileList.push(vm.cardFile); |
662 | 669 |
} |
... | ... | @@ -674,29 +681,29 @@ |
674 | 681 |
// vm.file.append('company_profile', file); |
675 | 682 |
// } |
676 | 683 |
const file = e.target.files[0]; |
677 |
- if(file){ |
|
684 |
+ if (file) { |
|
678 | 685 |
vm.proFile.real_file_nm = file.name; |
679 |
- vm.file.append('company_profile',file) |
|
686 |
+ vm.file.append('company_profile', file) |
|
680 | 687 |
vm.isProFileChanged = true; |
681 |
- const fileItem = { file, file_ty: 'profile'}; |
|
688 |
+ const fileItem = { file, file_ty: 'profile' }; |
|
682 | 689 |
vm.insertFileList.push(fileItem); |
683 | 690 |
vm.deleteFileList.push(vm.proFile); |
684 | 691 |
} |
685 | 692 |
}, |
686 |
- |
|
693 |
+ |
|
687 | 694 |
openlogoFileInput() { |
688 | 695 |
this.$refs.logoImg.click(); |
689 | 696 |
}, |
690 | 697 |
|
691 |
- openProFileInput(){ |
|
698 |
+ openProFileInput() { |
|
692 | 699 |
this.$refs.companyProfile.click(); |
693 | 700 |
}, |
694 |
- |
|
701 |
+ |
|
695 | 702 |
openCardFileInput() { |
696 | 703 |
this.$refs.businessCardImg.click(); |
697 | 704 |
}, |
698 | 705 |
|
699 |
- companyUpdate: function() { |
|
706 |
+ companyUpdate: function () { |
|
700 | 707 |
if (!this.validationCheckForUser() || !this.validationCheckForCompany()) { |
701 | 708 |
return; |
702 | 709 |
} |
... | ... | @@ -708,23 +715,23 @@ |
708 | 715 |
for (let i = 0; i < fields.length; i++) { |
709 | 716 |
let idx = i + 1; |
710 | 717 |
|
711 |
- oEditors.getById["smart"+idx].exec("UPDATE_CONTENTS_FIELD", []); |
|
712 |
- vm.company[fields[i]] = document.getElementById("smart"+idx).value; |
|
718 |
+ oEditors.getById["smart" + idx].exec("UPDATE_CONTENTS_FIELD", []); |
|
719 |
+ vm.company[fields[i]] = document.getElementById("smart" + idx).value; |
|
713 | 720 |
} |
714 | 721 |
|
715 | 722 |
//키워드 바인딩 |
716 | 723 |
vm.company['keyword'] = vm.checkedKeywords.join(''); |
717 |
- |
|
724 |
+ |
|
718 | 725 |
axios({ |
719 | 726 |
url: '/company/companyUpdate.json', |
720 | 727 |
method: 'post', |
721 | 728 |
headers: { |
722 |
- 'Content-Type' : 'application/json; charset=UTF-8', |
|
729 |
+ 'Content-Type': 'application/json; charset=UTF-8', |
|
723 | 730 |
}, |
724 | 731 |
data: vm.company |
725 |
- }).then(function(response) { |
|
726 |
- if(response.data == 1){ |
|
727 |
- if(vm.insertFileList.length > 0){ |
|
732 |
+ }).then(function (response) { |
|
733 |
+ if (response.data == 1) { |
|
734 |
+ if (vm.insertFileList.length > 0) { |
|
728 | 735 |
vm.commonFileUpdate() |
729 | 736 |
} else { |
730 | 737 |
vm.updateUser() |
... | ... | @@ -732,12 +739,12 @@ |
732 | 739 |
} else { |
733 | 740 |
alert('회원정보 수정에 실패하였습니다.') |
734 | 741 |
} |
735 |
- }).catch(function(error){ |
|
742 |
+ }).catch(function (error) { |
|
736 | 743 |
alert('회원정보 수정 오류, 관리자에게 문의해주세요.'); |
737 | 744 |
}); |
738 | 745 |
}, |
739 |
- |
|
740 |
- commonFileUpdate : function() { |
|
746 |
+ |
|
747 |
+ commonFileUpdate: function () { |
|
741 | 748 |
const vm = this; |
742 | 749 |
let formData = new FormData(); |
743 | 750 |
|
... | ... | @@ -756,7 +763,7 @@ |
756 | 763 |
}, |
757 | 764 |
data: formData |
758 | 765 |
}).then(function (response) { |
759 |
- if(response.data > 0 ){ |
|
766 |
+ if (response.data > 0) { |
|
760 | 767 |
vm.updateUser(); |
761 | 768 |
} else { |
762 | 769 |
alert('회원정보 수정에 실패하였습니다.') |
... | ... | @@ -767,26 +774,26 @@ |
767 | 774 |
}, |
768 | 775 |
|
769 | 776 |
//일반회원 유효성 검사 |
770 |
- validationCheckForUser : function(){ |
|
777 |
+ validationCheckForUser: function () { |
|
771 | 778 |
//이메일 |
772 |
- if(this.user.user_eml === null || this.user.user_eml === ''){ |
|
779 |
+ if (this.user.user_eml === null || this.user.user_eml === '') { |
|
773 | 780 |
alert('이메일은 필수값입니다.') |
774 | 781 |
this.$refs.user_eml.focus(); |
775 | 782 |
return false; |
776 | 783 |
} |
777 |
- if(!this.emlDuplicateChecked){ |
|
784 |
+ if (!this.emlDuplicateChecked) { |
|
778 | 785 |
alert('이메일 중복체크는 필수입니다.') |
779 | 786 |
this.$refs.user_eml.focus(); |
780 | 787 |
return false; |
781 |
- } |
|
782 |
- |
|
788 |
+ } |
|
789 |
+ |
|
783 | 790 |
//담당자명 |
784 | 791 |
let userNmRegex = /^[가-힣a-zA-Z\s]*$/; |
785 |
- if(this.user.user_nm === null || this.user.user_nm === ''){ |
|
792 |
+ if (this.user.user_nm === null || this.user.user_nm === '') { |
|
786 | 793 |
alert('이름은 필수값입니다.') |
787 | 794 |
this.$refs.user_nm.focus(); |
788 | 795 |
return false; |
789 |
- } else if(!userNmRegex.test(this.user.user_nm)){ |
|
796 |
+ } else if (!userNmRegex.test(this.user.user_nm)) { |
|
790 | 797 |
alert('특수문자와 숫자는 입력하실 수 없습니다.') |
791 | 798 |
this.$refs.user_nm.focus() |
792 | 799 |
return false; |
... | ... | @@ -795,27 +802,27 @@ |
795 | 802 |
return true; |
796 | 803 |
}, |
797 | 804 |
|
798 |
- validationCheckForCompany : function(){ |
|
805 |
+ validationCheckForCompany: function () { |
|
799 | 806 |
//키워드 |
800 |
- if(this.checkedKeywords.length < 3 || this.checkedKeywords.length > 6){ |
|
807 |
+ if (this.checkedKeywords.length < 3 || this.checkedKeywords.length > 6) { |
|
801 | 808 |
alert('키워드는 최소 3개에서 최대 6개를 선택해주세요.') |
802 | 809 |
return false; |
803 | 810 |
} |
804 |
- |
|
811 |
+ |
|
805 | 812 |
//한줄소개 |
806 |
- if(this.company.company_simple_info === null || this.company.company_simple_info === ''){ |
|
813 |
+ if (this.company.company_simple_info === null || this.company.company_simple_info === '') { |
|
807 | 814 |
alert('기업 한줄 소개는 필수값입니다.') |
808 | 815 |
this.$refs.company_simple_info.focus(); |
809 | 816 |
return false; |
810 | 817 |
} |
811 |
- |
|
818 |
+ |
|
812 | 819 |
//기업주소 |
813 |
- if(this.company.company_zip === null || this.company.company_zip === '' || |
|
820 |
+ if (this.company.company_zip === null || this.company.company_zip === '' || |
|
814 | 821 |
this.company.company_addr === null || this.company.company_addr === '' || |
815 |
- this.company.company_daddr === null || this.company.company_daddr === ''){ |
|
816 |
- alert('기업 주소를 입력해주세요.') |
|
817 |
- this.$refs.company_daddr.focus(); |
|
818 |
- return false; |
|
822 |
+ this.company.company_daddr === null || this.company.company_daddr === '') { |
|
823 |
+ alert('기업 주소를 입력해주세요.') |
|
824 |
+ this.$refs.company_daddr.focus(); |
|
825 |
+ return false; |
|
819 | 826 |
} |
820 | 827 |
|
821 | 828 |
//기업홈페이지 |
... | ... | @@ -829,16 +836,16 @@ |
829 | 836 |
alert("홈페이지 주소는 http:// 또는 https://로 시작해야합니다."); |
830 | 837 |
this.$refs.company_hp_url.focus(); |
831 | 838 |
return false; |
832 |
- } |
|
839 |
+ } |
|
833 | 840 |
} |
834 | 841 |
|
835 | 842 |
//대표전화 |
836 | 843 |
let telRegex = /^[0-9]*$/; |
837 |
- if(this.company.company_telno === null || this.company.company_telno === ''){ |
|
844 |
+ if (this.company.company_telno === null || this.company.company_telno === '') { |
|
838 | 845 |
alert('대표전화번호 입력은 필수입니다.') |
839 | 846 |
this.$refs.company_telno.focus(); |
840 | 847 |
return false; |
841 |
- } else if(!telRegex.test(this.company.company_telno)){ |
|
848 |
+ } else if (!telRegex.test(this.company.company_telno)) { |
|
842 | 849 |
alert('대표전화번호는 숫자만 입력할 수 있습니다.') |
843 | 850 |
this.$refs.company_telno.focus(); |
844 | 851 |
return false; |
... | ... | @@ -847,14 +854,14 @@ |
847 | 854 |
return true; |
848 | 855 |
}, |
849 | 856 |
|
850 |
- goToInfoPage: function() { |
|
857 |
+ goToInfoPage: function () { |
|
851 | 858 |
this.$router.push('/info.page'); |
852 | 859 |
} |
853 | 860 |
}, |
854 | 861 |
watch: { |
855 | 862 |
'user.user_eml': { |
856 |
- handler: function(newVal, oldVal) { |
|
857 |
- if(this.originalEmail !== newVal) { |
|
863 |
+ handler: function (newVal, oldVal) { |
|
864 |
+ if (this.originalEmail !== newVal) { |
|
858 | 865 |
this.emlDuplicateChecked = false; |
859 | 866 |
} |
860 | 867 |
}, |
... | ... | @@ -863,8 +870,8 @@ |
863 | 870 |
|
864 | 871 |
keywords: { |
865 | 872 |
handler() { |
866 |
- this.checkedKeywords = this.keywords.filter(keyword => keyword.checked).map(keyword => keyword.name); |
|
867 |
- |
|
873 |
+ this.checkedKeywords = this.keywords.filter(keyword => keyword.checked).map(keyword => keyword.name); |
|
874 |
+ |
|
868 | 875 |
if (this.checkedKeywords.length > 6) { |
869 | 876 |
alert('최대 6개까지만 선택 가능합니다.'); |
870 | 877 |
let removedKeywords = this.checkedKeywords.splice(6); |
... | ... | @@ -886,7 +893,3 @@ |
886 | 893 |
} |
887 | 894 |
} |
888 | 895 |
</script> |
889 |
- |
|
890 |
- |
|
891 |
- |
|
892 |
- |
--- client/views/pages/user/networking/MatchingOne.vue
+++ client/views/pages/user/networking/MatchingOne.vue
... | ... | @@ -256,6 +256,7 @@ |
256 | 256 |
responseType: 'blob', |
257 | 257 |
data: `file_path=${encodeURIComponent(path)}` |
258 | 258 |
}).then((response) => { |
259 |
+ this.$store.commit('setLoading', true); |
|
259 | 260 |
const blob = new Blob([response.data]); |
260 | 261 |
|
261 | 262 |
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); |
... | ... | @@ -274,7 +275,7 @@ |
274 | 275 |
} |
275 | 276 |
|
276 | 277 |
let company_id = vm.company.company_id; |
277 |
- |
|
278 |
+ this.$store.commit('setLoading', false); // 로딩 종료 |
|
278 | 279 |
axios({ |
279 | 280 |
url: '/statistics/profileLogInsert.json', |
280 | 281 |
method: 'post', |
... | ... | @@ -312,9 +313,9 @@ |
312 | 313 |
// }); |
313 | 314 |
// }, |
314 | 315 |
|
315 |
- downloadProurl(){ |
|
316 |
+ downloadProurl() { |
|
316 | 317 |
const url = this.company.company_hp_url; |
317 |
- window.open(url, '_blank'); |
|
318 |
+ window.open(url, '_blank'); |
|
318 | 319 |
}, |
319 | 320 |
|
320 | 321 |
openPickListMadal() { |
... | ... | @@ -428,7 +429,7 @@ |
428 | 429 |
}, |
429 | 430 |
|
430 | 431 |
companySelectListPage() { |
431 |
- this.$router.push({path: '/Matching.page', query: {'page': this.$route.query.page}}); |
|
432 |
+ this.$router.push({ path: '/Matching.page', query: { 'page': this.$route.query.page } }); |
|
432 | 433 |
}, |
433 | 434 |
}, |
434 | 435 |
watch: { |
... | ... | @@ -451,4 +452,3 @@ |
451 | 452 |
} |
452 | 453 |
} |
453 | 454 |
</script> |
454 |
- |
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?