diff --git a/src/components/Nav.vue b/src/components/Nav.vue index d0d749e85a1781d9994e8523348ec7f2044633ae..89e86a4a72c86b91c0f1157cfa8c17e741b5b130 100644 --- a/src/components/Nav.vue +++ b/src/components/Nav.vue @@ -17,12 +17,7 @@ <router-link to='/login' v-if="isLogin === false">로그인</router-link><br> <router-link to='/mypage' v-if="isLogin == true">마이 페이지</router-link><br><br> <router-link to='/club' v-if="isLogin == true">동아리 구경</router-link><br><br> - <div style="list-style:none;" v-if="isLogin == true">내 동아리 - {{clublist}} - <li v-for= "club in clublist"> - <router-link :to="{name: 'club_page',params:{clubId:club.club}}">{{club.clubname}}</router-link> - </li> - </div><br> + <router-link to='/myclub' v-if="isLogin == true">내 동아리</router-link><br><br> <div @click="$store.dispatch('logout')"> <router-link to='/' v-if="isLogin == true">로그아웃</router-link><br><br> </div> @@ -46,10 +41,6 @@ export default { ...mapState(['userInfo']) }, async created(){ - let uid = this.userInfo.uid - const res = await axios.get(`http://jnhonlinux.ddns.net:3000/joinedClub/user/${uid}`) - this.clublist = res.data.result - console.log(this.clublist) const res2 = await axios.get('http://jnhonlinux.ddns.net:3000/club') this.club = res2.data.result } diff --git a/src/components/NavClub.vue b/src/components/NavClub.vue index b2a20d4654bd19a6d49f669ab89d25e3c3843fc5..883b23ac28dc96f27a689101c3a550c590bb2cf0 100644 --- a/src/components/NavClub.vue +++ b/src/components/NavClub.vue @@ -3,7 +3,6 @@ <div id="clubMenu"> <router-link :to="{path:`/club_page/${club[0].id}`}">홈페이지</router-link> | <router-link :to="{path:`/club_post/${club[0].id}`}">활동일지 </router-link> | - <button @click="post()">자게</button> <router-link :to="{path:`/club_free/${club[0].id}`}">자유게시판 </router-link> | <router-link :to="{path:`/club_manage/${club[0].id}`}">회원 관리</router-link> | <router-link :to="{path:`/club_join/${club[0].id}`}">가입신청</router-link> @@ -32,20 +31,7 @@ export default { this.club = res.data.result }, methods:{ - post(){ - let id = this.$route.params.clubId; - axios.post(`http://jnhonlinux.ddns.net:3000/freeBoard/${id}`,{ - uid: this.userInfo.uid - }).then(res=>{ - console.log(res.data) - if(res.data.success == true){ - router.push(`/club_free/${id}`) - } else { - alert('Not User'); - } - }) - - } + } } </script> diff --git a/src/router/index.js b/src/router/index.js index c71852a1696fbdfbaa5cb130234d17a5ee6de7b7..d8a4929ea5a07448fa1b958ebcb33b0fb0d209f2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -41,6 +41,12 @@ const routes = [ component: () => import(/* webpackChunkName: "about" */ "../views/SignUp.vue") }, + { + path: '/myclub', + name: 'myclub', + component: () => + import(/* webpackChunkName: "about" */ "../views/left_bar/Myclub.vue") + }, { path: "/mypage", name: "mypage", @@ -97,6 +103,12 @@ const routes = [ component: () => import(/* webpackChunkName: "about" */ "../views/Post_Free.vue") }, + { + path: "/notice_write/:clubId", + name: "notice_write", + component: () => + import(/* webpackChunkName: "about" */ "../views/notice_write.vue") + }, { path: "/club_join/:clubId", name: "club_join", @@ -126,7 +138,20 @@ const routes = [ name: "free", component: () => import(/* webpackChunkName: "about" */ "../views/Free.vue") + }, + { + path: "/notice/one/:clubId/:noticeId", + name: "notice", + component: () => + import(/* webpackChunkName: "about" */ "../views/notice.vue") + }, + { + path: "/introduce/:clubId", + name: "introduce", + component: () => + import(/* webpackChunkName: "about" */ "../views/introduce.vue") } + ] const router = new VueRouter({ diff --git a/src/views/Board.vue b/src/views/Board.vue index 83b296d172aaeed42a6cbf279bc757a764f78fbc..f3b962316bb27a646028d4dc6ac13f14c6c737a8 100644 --- a/src/views/Board.vue +++ b/src/views/Board.vue @@ -21,7 +21,9 @@ export default { }, data(){ return{ - club:[], + club:[{ + id:'', + }], board:[{ title:'' }] diff --git a/src/views/Free.vue b/src/views/Free.vue index 2077d4f40a02991324985966ecda3034ecb39ef3..a3d1d6ccba76b2f215380c101a07f0d44be86e63 100644 --- a/src/views/Free.vue +++ b/src/views/Free.vue @@ -21,7 +21,9 @@ export default { }, data(){ return{ - club:[], + club:[{ + id:'', + }], free:[{ title:'' }] diff --git a/src/views/applymember.vue b/src/views/applymember.vue index 8d37015e057ced8cfd218f0a373db47a31daafab..deb2c5d87b161ef278836577d4395625dc2d0d28 100644 --- a/src/views/applymember.vue +++ b/src/views/applymember.vue @@ -20,14 +20,22 @@ <script> import NavClub from '@/components/NavClub.vue' export default { - name: 'club_detail', + name: 'applymember', components: { 'NavClub': NavClub }, data(){ return { - club:[], - member:[] + club:[{ + id:'', + }], + member:[{ + name:'', + department:'', + sid:'', + email:'', + phone:'' + }] } }, async created(){ @@ -35,9 +43,8 @@ export default { const res = await this.$http.get(`http://jnhonlinux.ddns.net:3000/club/${id}`) this.club = res.data.result let uid = this.$route.params.uid - const res2 = await this.$http.get(`http://jnhonlinux.ddns.net:3000/users/${uid}`) - this.member = res2.data - + const res2 = await this.$http.get(`http://jnhonlinux.ddns.net:3000/joinedClub/detail/${uid}`) + this.member = res2.data.result } } diff --git a/src/views/club_Detail.vue b/src/views/club_Detail.vue index 8d37015e057ced8cfd218f0a373db47a31daafab..47a20a00c2cab30bd7c60694b09df87e83356800 100644 --- a/src/views/club_Detail.vue +++ b/src/views/club_Detail.vue @@ -26,8 +26,12 @@ export default { }, data(){ return { - club:[], - member:[] + club:[{ + id:'', + }], + member:[{ + name:'', + }] } }, async created(){ diff --git a/src/views/club_top_bar/club_Manage.vue b/src/views/club_top_bar/club_Manage.vue index 75135b732160bad8863a5d14773ebd80db594c2e..b6e78f1cbe9cd80d595dd9d402094cc68bb3bde3 100644 --- a/src/views/club_top_bar/club_Manage.vue +++ b/src/views/club_top_bar/club_Manage.vue @@ -11,9 +11,10 @@ </div> <h3>가입 신청자 목록</h3> <div class="waitmember"> - <div v-for="clubmem in applymember"> - <h3 style="display:inline">이름: {{clubmem.user}}</h3> - <button><router-link :to="{name:'applymember', params:{clubId: `${club[0].id}`, uid:clubmem.user}}">자세히</router-link></button> + <div v-for="applymem in applymember"> + <h3 style="display:inline">이름: {{applymem.user}}</h3> + {{applymem}} + <button><router-link :to="{name:'applymember', params:{clubId: `${club[0].id}`, uid: applymem.user}}">자세히</router-link></button> </div> <!--관리자만 볼 수 있도록 가입 신청 대기자들 목록 표시--> </div> diff --git a/src/views/club_top_bar/club_Page.vue b/src/views/club_top_bar/club_Page.vue index 5ee9c51cce22b0963f56be82dd1fc87a7fd73937..9b46a2235165957f3b64ac2d420118eb61a68d11 100644 --- a/src/views/club_top_bar/club_Page.vue +++ b/src/views/club_top_bar/club_Page.vue @@ -1,21 +1,25 @@ <!--동아리 내에서 메인 화면--> <template> <div class="clubView"> - <NavClub id="navClub">가나다</NavClub> + <NavClub id="navClub"></NavClub> <h1>{{club[0].name}}</h1> {{club[0].logo}} <hr/> <div> - <h1>소개</h1> - {{club[0].produce}} + <h1>소개</h1> + {{club[0].introduce}} + <router-link :to="{path:`/introduce/${club[0].id}`}">수정하기</router-link> </div> <hr/> - <div> - <h1>공지사항</h1> - <div v-for="notice in noticeBoard"> - 작성자: {{notice}} + <h1>공지사항</h1> + <div v-for="notice in noticeBoard" class="board"> + <router-link :to="{ name: 'notice', params: {clubId: `${club[0].id}`, noticeId: notice.id}}"> + <div class="boardlist"> + {{notice.writer}} ㅣ {{notice.title}} ㅣ {{notice.date}} + </div> + </router-link> </div> - </div> + <router-link :to="{path:`/notice_write/${club[0].id}`}">글쓰기</router-link> </div> </template> diff --git a/src/views/introduce.vue b/src/views/introduce.vue new file mode 100644 index 0000000000000000000000000000000000000000..80d94c4a1f504e5cab3b74502c0f89ffc668ff36 --- /dev/null +++ b/src/views/introduce.vue @@ -0,0 +1,71 @@ +<!--활동 일지 글 쓸 때--> +<template> + <div class="posting"> + <NavClub id="navClub"></NavClub> + <h2>동아리 소개 글 수정</h2> + <div class="board"> + <h4>소개</h4> + <textarea style="resize:none;" cols="60" rows="13" v-model="introduce" placeholder="소개글을 수정하세요." class="content" required></textarea> + </div> + <br> + <button @click="cancel">취소</button> + <button @click="post">완료</button> + </div> +</template> +<script> +import router from "../router/index" +import NavClub from '@/components/NavClub.vue' +import axios from "axios" +import {mapState} from "vuex" +export default { + components: { + 'NavClub': NavClub + }, + data(){ + return { + club:[{ + id:'', + }], + introduce:'', + + } + }, + methods: { + post(){ + if(this.introduce != ''){ + let id = this.$route.params.clubId; + axios.post(`http://jnhonlinux.ddns.net:3000/club/${id}/introduce`, { + introduce: this.introduce + }) + router.push(`/club_page/${id}`) + } + if(this.introduce == ''){ + alert("내용을 써주세요.") + } + }, + cancel(){ + let id = this.$route.params.clubId; + router.push(`/club_page/${id}`) + } + }, + async created() { + let id = this.$route.params.clubId; + const res = await this.$http.get(`http://jnhonlinux.ddns.net:3000/club/${id}`) + this.club = res.data.result + }, + computed:{ + ...mapState(['userInfo']) + } +} +</script> +<style scoped> +.board { + display:inline-block; + margin-top: 15px; + padding-top: 15px; + border: 1px solid #000; +} +.content { + margin-left: 15px; +} +</style> \ No newline at end of file diff --git a/src/views/left_bar/Myclub.vue b/src/views/left_bar/Myclub.vue new file mode 100644 index 0000000000000000000000000000000000000000..b9a30977dd70d1e14b5da36b18a7867a3b46864e --- /dev/null +++ b/src/views/left_bar/Myclub.vue @@ -0,0 +1,35 @@ +<template> + <div> + <div v-for = "club in clublist" class="clubImage"> + <router-link :to="{path:`/club_page/${club.club}`,params:{clubId:club.club}}"> + <div> + <h3>{{club.clubname}}</h3> + </div> + </router-link> + </div> + </div> +</template> + +<script> +import axios from "axios" +import {mapState} from "vuex" +export default { + data(){ + return { + club:[], + clublist:[] + } + }, + computed:{ + ...mapState(['userInfo']) + }, + async created(){ + let uid = this.userInfo.uid + const res2 = await axios.get('http://jnhonlinux.ddns.net:3000/club') + this.club = res2.data.result + const res = await axios.get(`http://jnhonlinux.ddns.net:3000/joinedClub/user/${uid}`) + this.clublist = res.data.result + } + +} +</script> \ No newline at end of file diff --git a/src/views/left_bar/club.vue b/src/views/left_bar/club.vue index 17002dfa6179b896d82c6c437fa8a5d1ec11afe4..a4e395594fcc5563cfda72c2b1e96441940c23a5 100644 --- a/src/views/left_bar/club.vue +++ b/src/views/left_bar/club.vue @@ -29,7 +29,7 @@ <router-link :to="{path:`/club_page/${club.id}`,params:{clubId:club.id}}"> <div> <h3>{{club.name}}</h3> - <p>{{club.detail}}</p> + <p>{{club.introduce}}</p> </div> </router-link> </div> @@ -62,6 +62,9 @@ export default { return ele.name.match(this.search) }) } + this.clublist.filter(ele => { + return ele.isClub == true + }) if(this.selected == 'content' && this.search != ''){ return this.clublist.filter((ele)=>{ return ele.detail.match(this.search) diff --git a/src/views/notice.vue b/src/views/notice.vue new file mode 100644 index 0000000000000000000000000000000000000000..1f0f0b92272c6755ced585d99abb6df2a923f0bd --- /dev/null +++ b/src/views/notice.vue @@ -0,0 +1,40 @@ +<!--공지사항에서 게시글 눌렀을 때--> +<template> + <div class="board"> + <NavClub id="navClub"></NavClub> + <div> + 제목: {{notice[0].title}}<br> + 내용: {{notice[0].content}}<br> + 글쓴이: {{notice[0].writer}}<br> + 작성 날짜: {{notice[0].date}}<br> + </div> + <router-link :to="{path:`/club_page/${club[0].id}`}">뒤로 가기</router-link> + </div> +</template> + +<script> +import axios from "axios" +import NavClub from '@/components/NavClub.vue' +export default { + components: { + 'NavClub': NavClub + }, + data(){ + return{ + club:[], + notice:[{ + title:'' + }] + } + }, + async created(){ + let id = this.$route.params.clubId; + const res = await this.$http.get(`http://jnhonlinux.ddns.net:3000/club/${id}`) + this.club = res.data.result + let nid = this.$route.params.noticeId; + const notice = await this.$http.get(`http://jnhonlinux.ddns.net:3000/noticeBoard/one/${id}/${nid}`) + this.notice = notice.data.result + } + +} +</script> \ No newline at end of file diff --git a/src/views/notice_write.vue b/src/views/notice_write.vue new file mode 100644 index 0000000000000000000000000000000000000000..9aef030d63d2a00db1e42073f9c18b06f3626443 --- /dev/null +++ b/src/views/notice_write.vue @@ -0,0 +1,84 @@ +<!--활동 일지 글 쓸 때--> +<template> + <div class="posting"> + <NavClub id="navClub"></NavClub> + <h2>공지사항</h2> + <div class="board"> + <h4 style="display:inline">제목:</h4> + <input type="text" class="content" v-model="title" required> + <h4>내용</h4> + <textarea style="resize:none;" cols="60" rows="13" v-model="content" placeholder="공지사항을 작성하세요." class="content" required></textarea> + </div> + <br> + <button @click="cancel">취소</button> + <button @click="post">게시</button> + </div> +</template> +<script> +import router from "../router/index" +import NavClub from '@/components/NavClub.vue' +import axios from "axios" +import {mapState} from "vuex" +export default { + components: { + 'NavClub': NavClub + }, + data(){ + return { + club:[{ + id:'', + }], + title:'', + content:'', + + } + }, + methods: { + post(){ + if(this.title != '' && this.content != ''){ + let id = this.$route.params.clubId; + axios.post(`http://jnhonlinux.ddns.net:3000/noticeBoard/${id}`, { + title: this.title, + content: this.content, + writer: this.userInfo.name, + // c_id: this.club[0].id + }) + router.push(`/club_page/${id}`) + } + + if(this.title == '' && this.content != ''){ + alert("제목을 써주세요.") + } + if(this.title != '' && this.content == ''){ + alert("내용을 써주세요.") + } + if(this.title == '' && this.content == ''){ + alert("제목과 내용을 써주세요.") + } + }, + cancel(){ + let id = this.$route.params.clubId; + router.push(`/club_page/${id}`) + } + }, + async created() { + let id = this.$route.params.clubId; + const res = await this.$http.get(`http://jnhonlinux.ddns.net:3000/club/${id}`) + this.club = res.data.result + }, + computed:{ + ...mapState(['userInfo']) + } +} +</script> +<style scoped> +.board { + display:inline-block; + margin-top: 15px; + padding-top: 15px; + border: 1px solid #000; +} +.content { + margin-left: 15px; +} +</style> \ No newline at end of file