[jichoi]
08-08
240808 최정임
@291bbab5e53d5ead753e9969a10a160d401332de
--- client/resources/css/style.css
+++ client/resources/css/style.css
... | ... | @@ -1046,4 +1046,22 @@ |
1046 | 1046 |
min-height: 20rem; |
1047 | 1047 |
} |
1048 | 1048 |
.dropbox p{line-height: 20rem;} |
1049 |
+ |
|
1050 |
+ |
|
1051 |
+ /* 단원 버튼 */ |
|
1052 |
+ .unit-pagination button { |
|
1053 |
+ font-size: 3rem; |
|
1054 |
+ font-family: 'Pretendard-Regular'; |
|
1055 |
+ padding: 5px 30px; |
|
1056 |
+ border: #FFD56B 3px solid; |
|
1057 |
+ border-radius: 10px; |
|
1058 |
+ color: #331600; |
|
1059 |
+ background-color: #FFF3D7 |
|
1060 |
+} |
|
1061 |
+ |
|
1062 |
+ .unit-pagination .selected-btn { |
|
1063 |
+ background-color: #FFBA08; |
|
1064 |
+ color: #fff; |
|
1065 |
+ font-family: 'Pretendard-Bold'; |
|
1066 |
+} |
|
1049 | 1067 |
/* ------------------------선생님 --------------------- */(파일 끝에 줄바꿈 문자 없음) |
--- client/views/layout/Side_t.vue
+++ client/views/layout/Side_t.vue
... | ... | @@ -33,9 +33,10 @@ |
33 | 33 |
<details> |
34 | 34 |
<summary>교재 관리</summary> |
35 | 35 |
<router-link to="/textbook.page" class="tpt">홈</router-link> |
36 |
- <router-link to="/Board.page" class="tpt">게시판</router-link> |
|
37 |
- <router-link to="/Board.page" class="tpt">학생목록</router-link> |
|
38 |
- <router-link to="/Board.page" class="tpt">교재</router-link> |
|
36 |
+ <router-link to="/TextList.page" class="tpt">지문</router-link> |
|
37 |
+ <router-link to="/QuestionList.page" class="tpt">문제</router-link> |
|
38 |
+ <router-link to="/VocaList.page" class="tpt">단어장</router-link> |
|
39 |
+ <router-link to="/ExamList.page" class="tpt">평가</router-link> |
|
39 | 40 |
</details> |
40 | 41 |
</div> |
41 | 42 |
</div> |
--- client/views/pages/teacher/C_TextBookDetail.vue
+++ client/views/pages/teacher/C_TextBookDetail.vue
... | ... | @@ -1,13 +1,13 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="title-box flex justify-between mb40"> |
3 |
- <p class="title">A반</p> |
|
3 |
+ <p class="title">A교재</p> |
|
4 | 4 |
<select name="" id=""> |
5 |
- <option value="">A 교재</option> |
|
5 |
+ <option value="">A 반</option> |
|
6 | 6 |
</select> |
7 | 7 |
</div> |
8 | 8 |
<div class="board-wrap"> |
9 | 9 |
<label for="" class="title2">단원</label> |
10 |
- <div class="table-pagination flex mt10"> |
|
10 |
+ <div class="unit-pagination flex mt10" style="gap: 10px;"> |
|
11 | 11 |
<button class="selected-btn">1</button> |
12 | 12 |
<button>2</button> |
13 | 13 |
<button>3</button> |
--- client/views/pages/teacher/ExamInsert.vue
+++ client/views/pages/teacher/ExamInsert.vue
... | ... | @@ -1,6 +1,6 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="title-box flex justify-between mb40"> |
3 |
- <p class="title">문제 등록 페이지</p> |
|
3 |
+ <p class="title">평가 등록</p> |
|
4 | 4 |
</div> |
5 | 5 |
<!-- <label for="" class="title1">문제 리스트</label> |
6 | 6 |
<table class="mt20 mb100"> |
... | ... | @@ -27,24 +27,62 @@ |
27 | 27 |
<label for="" class="title1">상세 내용</label> |
28 | 28 |
<div class="board-wrap mt20"> |
29 | 29 |
<div class="flex align-center mb20"> |
30 |
- <label for="" class="title2">문제</label> |
|
31 |
- <input type="text" class="data-wrap"> |
|
30 |
+ <label for="" class="title2">단원</label> |
|
31 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
32 |
+ <option value="bbsTtl">제목</option> |
|
33 |
+ <option value="bbsCnt">내용</option> |
|
34 |
+ <option value="userNm">작성자</option> |
|
35 |
+ <option value="bbsCls">카테고리</option> |
|
36 |
+ </select> |
|
37 |
+ </div> |
|
38 |
+ <div class="flex align-center mb20"> |
|
39 |
+ <label for="" class="title2">평가 유형</label> |
|
40 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
41 |
+ <option value="bbsTtl">제목</option> |
|
42 |
+ <option value="bbsCnt">내용</option> |
|
43 |
+ <option value="userNm">작성자</option> |
|
44 |
+ <option value="bbsCls">카테고리</option> |
|
45 |
+ </select> |
|
32 | 46 |
</div> |
33 | 47 |
|
34 | 48 |
<hr> |
35 |
- <div class="flex align-center"> |
|
36 |
- <label for="" class="title2">내용</label> |
|
37 |
- <textarea name="" id="" class="data-wrap"></textarea> |
|
38 |
- </div> |
|
39 |
- <hr> |
|
40 | 49 |
<div class="flex align-center mb20"> |
41 |
- <label for="" class="title2">첨부파일</label> |
|
42 |
- <input type="file" ref="fileInput" @change="handleFileUpload" /> |
|
50 |
+ <label for="" class="title2">문제 1</label> |
|
51 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
52 |
+ <option value="bbsTtl">제목</option> |
|
53 |
+ <option value="bbsCnt">내용</option> |
|
54 |
+ <option value="userNm">작성자</option> |
|
55 |
+ <option value="bbsCls">카테고리</option> |
|
56 |
+ </select> |
|
43 | 57 |
</div> |
44 |
- <div class="flex align-center"> |
|
45 |
- <label for="" class="title2">답</label> |
|
46 |
- <input type="text" class="data-wrap"> |
|
58 |
+ <div class="flex align-center mb20"> |
|
59 |
+ <label for="" class="title2">문제 2</label> |
|
60 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
61 |
+ <option value="bbsTtl">제목</option> |
|
62 |
+ <option value="bbsCnt">내용</option> |
|
63 |
+ <option value="userNm">작성자</option> |
|
64 |
+ <option value="bbsCls">카테고리</option> |
|
65 |
+ </select> |
|
47 | 66 |
</div> |
67 |
+ <div class="flex align-center mb20"> |
|
68 |
+ <label for="" class="title2">문제 3</label> |
|
69 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
70 |
+ <option value="bbsTtl">제목</option> |
|
71 |
+ <option value="bbsCnt">내용</option> |
|
72 |
+ <option value="userNm">작성자</option> |
|
73 |
+ <option value="bbsCls">카테고리</option> |
|
74 |
+ </select> |
|
75 |
+ </div> |
|
76 |
+ <div class="flex align-center mb20"> |
|
77 |
+ <label for="" class="title2">문제 4</label> |
|
78 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
79 |
+ <option value="bbsTtl">제목</option> |
|
80 |
+ <option value="bbsCnt">내용</option> |
|
81 |
+ <option value="userNm">작성자</option> |
|
82 |
+ <option value="bbsCls">카테고리</option> |
|
83 |
+ </select> |
|
84 |
+ </div> |
|
85 |
+ |
|
48 | 86 |
</div> |
49 | 87 |
<div class="flex justify-between mt50"> |
50 | 88 |
<button type="button" title="글쓰기" class="new-btn" @click="goToPage('C_ExamList')"> |
--- client/views/pages/teacher/Home.vue
+++ client/views/pages/teacher/Home.vue
... | ... | @@ -75,6 +75,7 @@ |
75 | 75 |
} |
76 | 76 |
}, |
77 | 77 |
methods: { |
78 |
+ |
|
78 | 79 |
goToPage(page, sclsId) { |
79 | 80 |
//console.log(`sclsId : ${sclsId}`); // 쿼리 확인 |
80 | 81 |
this.$router.push({ name: page , query : {sclsId : sclsId}}); |
--- client/views/pages/teacher/TextBookDetail.vue
+++ client/views/pages/teacher/TextBookDetail.vue
... | ... | @@ -2,17 +2,10 @@ |
2 | 2 |
<div class="title-box flex justify-between mb40"> |
3 | 3 |
<p class="title">A교재</p> |
4 | 4 |
<select name="" id=""> |
5 |
- <option value="">A 교재</option> |
|
5 |
+ <option value="">1단원</option> |
|
6 | 6 |
</select> |
7 | 7 |
</div> |
8 | 8 |
<div class="board-wrap"> |
9 |
- <label for="" class="title2">단원</label> |
|
10 |
- <div class="table-pagination flex mt10"> |
|
11 |
- <button class="selected-btn">1</button> |
|
12 |
- <button>2</button> |
|
13 |
- <button>3</button> |
|
14 |
- </div> |
|
15 |
- <hr> |
|
16 | 9 |
<div class="mb20 "> |
17 | 10 |
<div class="flex justify-between mb30 align-center"> |
18 | 11 |
<label for="" class="title1">지문</label> |
--- client/views/pages/teacher/TextList.vue
+++ client/views/pages/teacher/TextList.vue
... | ... | @@ -1,10 +1,16 @@ |
1 | 1 |
<template> |
2 |
- <div class="title-box flex justify-between mb40"> |
|
2 |
+ <div class="title-box flex justify-between mb40 myplan"> |
|
3 | 3 |
<p class="title">지문</p> |
4 | 4 |
<select name="" id=""> |
5 |
- <option value="">1단원</option> |
|
5 |
+ <option value="">A 교재</option> |
|
6 | 6 |
</select> |
7 | 7 |
</div> |
8 |
+ <label for="" class="title2">단원</label> |
|
9 |
+ <div class="unit-pagination flex mt10" style="gap: 10px;"> |
|
10 |
+ <button class="selected-btn">1</button> |
|
11 |
+ <button>2</button> |
|
12 |
+ <button>3</button> |
|
13 |
+ </div> |
|
8 | 14 |
<div class="search-wrap flex justify-end mb20"> |
9 | 15 |
<select name="" id="" class="mr10 data-wrap"> |
10 | 16 |
<option value="">전체</option> |
--- client/views/pages/teacher/VocaDetail.vue
+++ client/views/pages/teacher/VocaDetail.vue
... | ... | @@ -1,60 +1,98 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="title-box flex justify-between mb40"> |
3 |
- <p class="title">지문 등록</p> |
|
3 |
+ <p class="title">단어장 등록</p> |
|
4 | 4 |
</div> |
5 |
- <div class="board-wrap"> |
|
6 |
- <div class="flex align-center mb20"> |
|
7 |
- <label for="" class="title2">제목</label> |
|
8 |
- <input type="text" class="data-wrap"> |
|
9 |
- </div> |
|
10 |
- <div class="flex align-center"> |
|
11 |
- <label for="" class="title2">URL</label> |
|
12 |
- <input type="text" class="data-wrap"> |
|
13 |
- </div> |
|
14 |
- <hr> |
|
15 |
- <div class="flex align-center"> |
|
16 |
- <label for="" class="title2">스크립트</label> |
|
17 |
- <textarea name="" id="" class="data-wrap"></textarea> |
|
18 |
- </div> |
|
5 |
+ <div class="board-wrap"> |
|
6 |
+ <div class="flex align-center mb20"> |
|
7 |
+ <label for="" class="title2">지문</label> |
|
8 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
9 |
+ <option value="bbsTtl">제목</option> |
|
10 |
+ <option value="bbsCnt">내용</option> |
|
11 |
+ <option value="userNm">작성자</option> |
|
12 |
+ <option value="bbsCls">카테고리</option> |
|
13 |
+ </select> |
|
19 | 14 |
</div> |
20 |
- <div class="flex justify-between mt50"> |
|
21 |
- <button type="button" title="글쓰기" class="new-btn" @click="goToPage('TextList')"> |
|
22 |
- 목록 |
|
23 |
- </button> |
|
24 |
- <div class="flex"> |
|
25 |
- <button type="button" title="글쓰기" class="new-btn mr10" > |
|
26 |
- 취소 |
|
15 |
+ <div class="flex align-center"> |
|
16 |
+ <label for="" class="title2">단어 목록</label> |
|
17 |
+ <div class="flex-column" style="gap: 10px;"> |
|
18 |
+ <div class="flex align-center" style="gap: 10px;"> |
|
19 |
+ <input type="text" class="data-wrap" placeholder="영어"> |
|
20 |
+ <input type="text" class="data-wrap" placeholder="한글"> |
|
21 |
+ <button type="button" @click="addThesis"> |
|
22 |
+ <img src="../../../resources/img/btn39_120t_normal.png" alt=""> |
|
23 |
+ |
|
27 | 24 |
</button> |
28 |
- <button type="button" title="글쓰기" class="new-btn" > |
|
29 |
- 등록 |
|
25 |
+ </div> |
|
26 |
+ <div class="flex align-center " style="gap: 10px;" v-for="(thesis, index) in thesised" :key="thesis.id"> |
|
27 |
+ <input type="text" class="data-wrap" placeholder="영어"> |
|
28 |
+ <input type="text" class="data-wrap" placeholder="한글"> |
|
29 |
+ <button type="button" @click="removeThesis(thesis.id)"> |
|
30 |
+ <img src="../../../resources/img/btn38_120t_normal.png" alt=""> |
|
30 | 31 |
</button> |
31 |
- </div> |
|
32 |
+ |
|
33 |
+ </div> |
|
34 |
+ </div> |
|
35 |
+ |
|
32 | 36 |
</div> |
37 |
+ </div> |
|
38 |
+ <div class="flex justify-between mt50"> |
|
39 |
+ <button type="button" title="글쓰기" class="new-btn" @click="goToPage('TextList')"> |
|
40 |
+ 목록 |
|
41 |
+ </button> |
|
42 |
+ <div class="flex"> |
|
43 |
+ <button type="button" title="글쓰기" class="new-btn mr10"> |
|
44 |
+ 취소 |
|
45 |
+ </button> |
|
46 |
+ <button type="button" title="글쓰기" class="new-btn"> |
|
47 |
+ 수정 |
|
48 |
+ </button> |
|
49 |
+ </div> |
|
50 |
+ </div> |
|
33 | 51 |
</template> |
34 | 52 |
|
35 | 53 |
<script> |
36 | 54 |
import SvgIcon from '@jamescoyle/vue-icon'; |
37 |
-import { mdiMagnify} from '@mdi/js'; |
|
55 |
+import { mdiMagnify, mdiPlusCircleOutline, mdiWindowClose } from '@mdi/js'; |
|
38 | 56 |
|
39 | 57 |
|
40 | 58 |
export default { |
41 |
- data () { |
|
59 |
+ data() { |
|
42 | 60 |
return { |
61 |
+ thesised: [], |
|
62 |
+ mdiPlusCircleOutline: mdiPlusCircleOutline, |
|
43 | 63 |
mdiMagnify: mdiMagnify, |
64 |
+ mdiWindowClose: mdiWindowClose, |
|
44 | 65 |
} |
45 | 66 |
}, |
46 | 67 |
methods: { |
68 |
+ // 논문실적 버튼 추가 |
|
69 |
+ addThesis() { |
|
70 |
+ // 고유 ID로 현재 시간의 타임스탬프를 사용 |
|
71 |
+ const uniqueId = Date.now(); |
|
72 |
+ this.thesised.push({ |
|
73 |
+ id: uniqueId, // 고유 ID 추가 |
|
74 |
+ |
|
75 |
+ }); |
|
76 |
+ }, |
|
77 |
+ removeThesis(thesisId) { |
|
78 |
+ // ID를 기준으로 교육 정보 객체를 찾아서 삭제 |
|
79 |
+ const index = this.thesised.findIndex(thesis => thesis.id === thesisId); |
|
80 |
+ if (index !== -1) { |
|
81 |
+ this.thesised.splice(index, 1); |
|
82 |
+ } |
|
83 |
+ }, |
|
84 |
+ // |
|
47 | 85 |
goToPage(page) { |
48 |
- this.$router.push({ name: page }); |
|
49 |
- }, |
|
86 |
+ this.$router.push({ name: page }); |
|
87 |
+ }, |
|
50 | 88 |
}, |
51 | 89 |
watch: { |
52 | 90 |
|
53 | 91 |
}, |
54 | 92 |
computed: { |
55 |
- |
|
93 |
+ |
|
56 | 94 |
}, |
57 |
- components:{ |
|
95 |
+ components: { |
|
58 | 96 |
SvgIcon |
59 | 97 |
}, |
60 | 98 |
mounted() { |
--- client/views/pages/teacher/VocaInsert.vue
+++ client/views/pages/teacher/VocaInsert.vue
... | ... | @@ -1,60 +1,98 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="title-box flex justify-between mb40"> |
3 |
- <p class="title">지문 등록</p> |
|
3 |
+ <p class="title">단어장 등록</p> |
|
4 | 4 |
</div> |
5 |
- <div class="board-wrap"> |
|
6 |
- <div class="flex align-center mb20"> |
|
7 |
- <label for="" class="title2">제목</label> |
|
8 |
- <input type="text" class="data-wrap"> |
|
9 |
- </div> |
|
10 |
- <div class="flex align-center"> |
|
11 |
- <label for="" class="title2">URL</label> |
|
12 |
- <input type="text" class="data-wrap"> |
|
13 |
- </div> |
|
14 |
- <hr> |
|
15 |
- <div class="flex align-center"> |
|
16 |
- <label for="" class="title2">스크립트</label> |
|
17 |
- <textarea name="" id="" class="data-wrap"></textarea> |
|
18 |
- </div> |
|
5 |
+ <div class="board-wrap"> |
|
6 |
+ <div class="flex align-center mb20"> |
|
7 |
+ <label for="" class="title2">지문</label> |
|
8 |
+ <select v-model="selectedSearchOption" class="mr10 data-wrap"> |
|
9 |
+ <option value="bbsTtl">제목</option> |
|
10 |
+ <option value="bbsCnt">내용</option> |
|
11 |
+ <option value="userNm">작성자</option> |
|
12 |
+ <option value="bbsCls">카테고리</option> |
|
13 |
+ </select> |
|
19 | 14 |
</div> |
20 |
- <div class="flex justify-between mt50"> |
|
21 |
- <button type="button" title="글쓰기" class="new-btn" @click="goToPage('TextList')"> |
|
22 |
- 목록 |
|
23 |
- </button> |
|
24 |
- <div class="flex"> |
|
25 |
- <button type="button" title="글쓰기" class="new-btn mr10" > |
|
26 |
- 취소 |
|
15 |
+ <div class="flex align-center"> |
|
16 |
+ <label for="" class="title2">단어 목록</label> |
|
17 |
+ <div class="flex-column" style="gap: 10px;"> |
|
18 |
+ <div class="flex align-center" style="gap: 10px;"> |
|
19 |
+ <input type="text" class="data-wrap" placeholder="영어"> |
|
20 |
+ <input type="text" class="data-wrap" placeholder="한글"> |
|
21 |
+ <button type="button" @click="addThesis"> |
|
22 |
+ <img src="../../../resources/img/btn39_120t_normal.png" alt=""> |
|
23 |
+ |
|
27 | 24 |
</button> |
28 |
- <button type="button" title="글쓰기" class="new-btn" > |
|
29 |
- 등록 |
|
25 |
+ </div> |
|
26 |
+ <div class="flex align-center " style="gap: 10px;" v-for="(thesis, index) in thesised" :key="thesis.id"> |
|
27 |
+ <input type="text" class="data-wrap" placeholder="영어"> |
|
28 |
+ <input type="text" class="data-wrap" placeholder="한글"> |
|
29 |
+ <button type="button" @click="removeThesis(thesis.id)"> |
|
30 |
+ <img src="../../../resources/img/btn38_120t_normal.png" alt=""> |
|
30 | 31 |
</button> |
31 |
- </div> |
|
32 |
+ |
|
33 |
+ </div> |
|
34 |
+ </div> |
|
35 |
+ |
|
32 | 36 |
</div> |
37 |
+ </div> |
|
38 |
+ <div class="flex justify-between mt50"> |
|
39 |
+ <button type="button" title="글쓰기" class="new-btn" @click="goToPage('TextList')"> |
|
40 |
+ 목록 |
|
41 |
+ </button> |
|
42 |
+ <div class="flex"> |
|
43 |
+ <button type="button" title="글쓰기" class="new-btn mr10"> |
|
44 |
+ 취소 |
|
45 |
+ </button> |
|
46 |
+ <button type="button" title="글쓰기" class="new-btn"> |
|
47 |
+ 등록 |
|
48 |
+ </button> |
|
49 |
+ </div> |
|
50 |
+ </div> |
|
33 | 51 |
</template> |
34 | 52 |
|
35 | 53 |
<script> |
36 | 54 |
import SvgIcon from '@jamescoyle/vue-icon'; |
37 |
-import { mdiMagnify} from '@mdi/js'; |
|
55 |
+import { mdiMagnify, mdiPlusCircleOutline, mdiWindowClose } from '@mdi/js'; |
|
38 | 56 |
|
39 | 57 |
|
40 | 58 |
export default { |
41 |
- data () { |
|
59 |
+ data() { |
|
42 | 60 |
return { |
61 |
+ thesised: [], |
|
62 |
+ mdiPlusCircleOutline: mdiPlusCircleOutline, |
|
43 | 63 |
mdiMagnify: mdiMagnify, |
64 |
+ mdiWindowClose: mdiWindowClose, |
|
44 | 65 |
} |
45 | 66 |
}, |
46 | 67 |
methods: { |
68 |
+ // 논문실적 버튼 추가 |
|
69 |
+ addThesis() { |
|
70 |
+ // 고유 ID로 현재 시간의 타임스탬프를 사용 |
|
71 |
+ const uniqueId = Date.now(); |
|
72 |
+ this.thesised.push({ |
|
73 |
+ id: uniqueId, // 고유 ID 추가 |
|
74 |
+ |
|
75 |
+ }); |
|
76 |
+ }, |
|
77 |
+ removeThesis(thesisId) { |
|
78 |
+ // ID를 기준으로 교육 정보 객체를 찾아서 삭제 |
|
79 |
+ const index = this.thesised.findIndex(thesis => thesis.id === thesisId); |
|
80 |
+ if (index !== -1) { |
|
81 |
+ this.thesised.splice(index, 1); |
|
82 |
+ } |
|
83 |
+ }, |
|
84 |
+ // |
|
47 | 85 |
goToPage(page) { |
48 |
- this.$router.push({ name: page }); |
|
49 |
- }, |
|
86 |
+ this.$router.push({ name: page }); |
|
87 |
+ }, |
|
50 | 88 |
}, |
51 | 89 |
watch: { |
52 | 90 |
|
53 | 91 |
}, |
54 | 92 |
computed: { |
55 |
- |
|
93 |
+ |
|
56 | 94 |
}, |
57 |
- components:{ |
|
95 |
+ components: { |
|
58 | 96 |
SvgIcon |
59 | 97 |
}, |
60 | 98 |
mounted() { |
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?