Commit 400397ec authored by Choi Ga Young's avatar Choi Ga Young
Browse files

Merge remote-tracking branch 'origin/on_submit' into rkyoung7

parents 4e10c469 7ebd7f6e
...@@ -9,6 +9,10 @@ const Nav = styled.nav` ...@@ -9,6 +9,10 @@ const Nav = styled.nav`
a { a {
color: #ffffff; color: #ffffff;
} }
& .logoutBtn:hover {
text-decoration: underline;
}
` `
function Menu() { function Menu() {
...@@ -35,7 +39,6 @@ function Menu() { ...@@ -35,7 +39,6 @@ function Menu() {
<Link to="/notice" className="nav-link">공지사항</Link> <Link to="/notice" className="nav-link">공지사항</Link>
</li> </li>
<li className="nav-item"> <li className="nav-item">
{console.log(name)}
<Link to="/home" className="nav-link">대관 현황</Link> <Link to="/home" className="nav-link">대관 현황</Link>
</li> </li>
<li className="nav-item"> <li className="nav-item">
...@@ -59,9 +62,13 @@ function Menu() { ...@@ -59,9 +62,13 @@ function Menu() {
대관 확인/취소(관리자)</Link> 대관 확인/취소(관리자)</Link>
</li> </li>
</ul> </ul>
<div> <div className="h-100 mr-3">
<div>{name} 안녕하세요.</div> <div className="text-white text-right font-weight-light"><small>{name} 안녕하세요</small></div>
<button onClick={logout} type="button">로그아웃</button> <div className="text-white text-right font-weight-light"><small>
<Link to={{
pathname: `/change/${localStorage.getItem('_id')}`,
state: { id: localStorage.getItem('_id') },
}}>비밀번호 변경</Link> / <span className="logoutBtn" onClick={logout} >로그아웃</span></small></div>
</div> </div>
</div> </div>
</Nav> </Nav>
......
...@@ -21,6 +21,30 @@ function Apply(props) { ...@@ -21,6 +21,30 @@ function Apply(props) {
}} />; }} />;
} }
function time(starttime) {
console.log(starttime)
if (starttime == 21) {
return (<Field as="select" name="usetime">
<option value="">이용시간을 선택하세요</option>
<option value="1">1시간</option>
</Field>)
}
if (starttime == 20) {
return (<Field as="select" name="usetime">
<option value="">이용시간을 선택하세요</option>
<option value="1">1시간</option>
<option value="2">2시간</option>
</Field>)
}
return (<Field as="select" name="usetime">
<option value="">이용시간을 선택하세요</option>
<option value="1">1시간</option>
<option value="2">2시간</option>
<option value="3">3시간</option>
</Field>)
}
function getUser() { function getUser() {
axios.get(`/users/${props.match.params.id}`, { axios.get(`/users/${props.match.params.id}`, {
headers: { authorization: localStorage.getItem('token') }, headers: { authorization: localStorage.getItem('token') },
...@@ -44,7 +68,8 @@ function Apply(props) { ...@@ -44,7 +68,8 @@ function Apply(props) {
initialValues={{ initialValues={{
_id: `${props.match.params.id}`, _id: `${props.match.params.id}`,
date: '', date: '',
time: '', starttime: '',
usetime: '',
room: '', room: '',
reason: '', reason: '',
students: [ students: [
...@@ -56,8 +81,6 @@ function Apply(props) { ...@@ -56,8 +81,6 @@ function Apply(props) {
validationSchema={Yup.object({ validationSchema={Yup.object({
date: Yup.string() date: Yup.string()
.required('날짜를 입력해주세요.'), .required('날짜를 입력해주세요.'),
time: Yup.string()
.required('시간을 입력해주세요.'),
room: Yup.string() room: Yup.string()
.required('강의실 번호를 입력해주세요.'), .required('강의실 번호를 입력해주세요.'),
reason: Yup.string() reason: Yup.string()
...@@ -92,7 +115,6 @@ function Apply(props) { ...@@ -92,7 +115,6 @@ function Apply(props) {
isSubmitting, isSubmitting,
}) => ( }) => (
<div className="row justify-content-center align-items-center"> <div className="row justify-content-center align-items-center">
{console.log(user)}
<form onSubmit={handleSubmit} className="col-sm-3"> <form onSubmit={handleSubmit} className="col-sm-3">
<div className="form-group mb-4"> <div className="form-group mb-4">
<label>대표자</label> <label>대표자</label>
...@@ -102,27 +124,37 @@ function Apply(props) { ...@@ -102,27 +124,37 @@ function Apply(props) {
<label>신청날짜</label> <label>신청날짜</label>
<input <input
className={(touched.date && errors.date ? 'form-control is-invalid' : "form-control")} className={(touched.date && errors.date ? 'form-control is-invalid' : "form-control")}
type="number" type="text"
name="date" name="date"
{...getFieldProps('date')} {...getFieldProps('date')}
placeholder="2020mmdd" placeholder="yyyy-mm-dd"
/> />
{touched.date && errors.date ? ( {touched.date && errors.date ? (
<div className="invalid-feedback text-left">{errors.date}</div> <div className="invalid-feedback text-left">{errors.date}</div>
) : null} ) : null}
</div> </div>
<div className="form-group mb-4">
<label>이용시작시간</label>
<Field as="select" name="starttime">
<option value="">이용시작시간</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
</Field>
</div>
<div className="form-group mb-4"> <div className="form-group mb-4">
<label>이용시간</label> <label>이용시간</label>
<input {time(values.starttime)}
className={(touched.time && errors.time ? 'form-control is-invalid' : "form-control")}
type="text"
name="time"
{...getFieldProps('time')}
placeholder="ex) 11:00~14:00"
/>
{touched.time && errors.time ? (
<div className="invalid-feedback text-left">{errors.time}</div>
) : null}
</div> </div>
<div className="form-group mb-4"> <div className="form-group mb-4">
<label>강의실</label> <label>강의실</label>
......
...@@ -8,7 +8,7 @@ function Check(props) { ...@@ -8,7 +8,7 @@ function Check(props) {
useEffect(() => { useEffect(() => {
getReserve(); getReserve();
}, []) }, [])
function getReserve() { function getReserve() {
axios.get(`/reserves/${props.match.params.id}`, { axios.get(`/reserves/${props.match.params.id}`, {
headers: { authorization: localStorage.getItem('token') }, headers: { authorization: localStorage.getItem('token') },
...@@ -56,10 +56,10 @@ function Check(props) { ...@@ -56,10 +56,10 @@ function Check(props) {
return ( return (
<tr key={index}> <tr key={index}>
<td>{reserve.date}</td> <td>{reserve.date}</td>
<td>{reserve.time}</td> <td>{reserve.starttime}~{(Number(reserve.starttime) + reserve.usetime)}</td>
<td>{reserve.room}</td> <td>{reserve.room}</td>
<td>{reserve.num}</td> <td>{reserve.num}</td>
<td>{reserve.approve?"사용허가":"글쎄..."}</td> <td>{reserve.approve ? "사용허가" : "글쎄..."}</td>
<td> <td>
<button onClick={() => remove(index)} className="btn btn-danger"> <button onClick={() => remove(index)} className="btn btn-danger">
취소 취소
......
...@@ -10,10 +10,6 @@ function Home() { ...@@ -10,10 +10,6 @@ function Home() {
home home
<button><Link to="/login">로그인</Link></button> <button><Link to="/login">로그인</Link></button>
<button><Link to="/signup">회원가입</Link></button> <button><Link to="/signup">회원가입</Link></button>
<button><Link to={{
pathname: `/change/${localStorage.getItem('_id')}`,
state: { id: localStorage.getItem('_id') },
}}>비밀번호 수정</Link></button>
</div> </div>
</div> </div>
) )
......
...@@ -109,7 +109,7 @@ function Login() { ...@@ -109,7 +109,7 @@ function Login() {
<div className={mobile ? "mob-head" : ""}> <div className={mobile ? "mob-head" : ""}>
<img className={mobile ? "mob-img" : "img-fluid"} src={Logo} /> <img className={mobile ? "mob-img" : "img-fluid"} src={Logo} />
<div className={"d-flex " + (mobile ? "align-items-center" : "justify-content-center")}> <div className={"d-flex " + (mobile ? "align-items-center" : "justify-content-center")}>
<h1 className="font-weight-bold text-white">고려대학교<br />대관 서비스</h1> <h1 className="font-weight-bold text-white text-center">고려대학교<br/>대관 서비스</h1>
</div> </div>
</div> </div>
</Asd> </Asd>
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import Menu from '../Components/Menu'; import Menu from '../Components/Menu';
import axios from 'axios'; import axios from 'axios';
import styled from 'styled-components';
function Notice() { function Notice() {
const [notices, setNotices] = useState([]); const [notices, setNotices] = useState([]);
...@@ -9,6 +10,19 @@ function Notice() { ...@@ -9,6 +10,19 @@ function Notice() {
getNotice(); getNotice();
}, []); }, []);
function dateForm(day) {
const post_day = new Date(day);
let year = post_day.getFullYear();
let month = post_day.getMonth() + 1;
let date = post_day.getDate();
month = month < 10 ? '0' + month : month;
date = date < 10 ? '0' + date : date;
const new_date = year + "-" + month + "-" + date;
return new_date
}
function getNotice() { function getNotice() {
axios.get(`/notices`) axios.get(`/notices`)
.then(res => { .then(res => {
...@@ -25,13 +39,32 @@ function Notice() { ...@@ -25,13 +39,32 @@ function Notice() {
return ( return (
<div> <div>
<Menu /> <Menu />
<div className="container"> <div className="container-fluid">
<div className="row"> <div className="row justify-content-center vw-100 vh-90">
<div className="col-12"> <div className="col-md-7 col-12">
{notices.map((notice) => <div>{notice.notice_title}</div>)}
<h2 className="p-3 border-bottom">공지사항</h2>
<div id="accordion w-90 pt-1">
{notices.map((notice, index) =>
<div className="card">
<div className="card-header collapsed card-link w-100 row m-0 p-1" id={"Hnotice_" + index} data-toggle="collapse" href={"#notice_" + index}>
<div>
<div className="col-6 p-0">{notice.notice_title}</div>
<div className="col-3 p-0 text-center">{notice.notice_author}</div>
<div className="col-3 p-0 text-right">{dateForm(notice.post_date)}</div>
</div>
</div>
<div id={"notice_" + index} aria-labelledby={"Hnotice_" + index} className="collapse" data-parent="#accordion">
<div className="card-body">{notice.notice_content}</div>
</div>
</div>
)}
</div>
</div> </div>
</div> </div >
</div> </div >
</div> </div>
) )
} }
......
...@@ -2,8 +2,8 @@ import React from 'react'; ...@@ -2,8 +2,8 @@ import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker'; import * as serviceWorker from './serviceWorker';
import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'; import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom';
// import 'bootstrap'; import 'bootstrap';
// import 'bootstrap/dist/css/bootstrap.css'; import 'bootstrap/dist/css/bootstrap.css';
import axios from 'axios'; import axios from 'axios';
import { PrivateRoute } from './Components/PrivateRoute'; import { PrivateRoute } from './Components/PrivateRoute';
......
...@@ -11,9 +11,11 @@ router.post('/', function (req, res, next) { ...@@ -11,9 +11,11 @@ router.post('/', function (req, res, next) {
const reserve = new Reserve({ const reserve = new Reserve({
user: req.body._id, user: req.body._id,
date: req.body.date, date: req.body.date,
time: req.body.time, starttime: Number(req.body.starttime),
usetime: Number(req.body.usetime),
start: `${req.body.date}T`+`${req.body.starttime}:00:00`,
end: `${req.body.date}T`+`${Number(req.body.starttime)+Number(req.body.usetime)}:00:00`,
room: req.body.room, room: req.body.room,
name: req.body.name,
reason: req.body.reason, reason: req.body.reason,
students: req.body.students, students: req.body.students,
approve: req.body.approve, approve: req.body.approve,
...@@ -35,6 +37,7 @@ router.post('/', function (req, res, next) { ...@@ -35,6 +37,7 @@ router.post('/', function (req, res, next) {
router.get('/:_id', function (req, res, next) { router.get('/:_id', function (req, res, next) {
console.log('/reserves get req.params', req.params) console.log('/reserves get req.params', req.params)
Reserve.find({ user: req.params._id }, function (err, reserve) { Reserve.find({ user: req.params._id }, function (err, reserve) {
console.log('id.name',reserve)
if (err) return res.status(500).json({ error: err }); if (err) return res.status(500).json({ error: err });
console.log('reserve list', reserve) console.log('reserve list', reserve)
res.status(201).json(reserve); res.status(201).json(reserve);
......
...@@ -11,15 +11,20 @@ const reserveSchema = new Schema({ ...@@ -11,15 +11,20 @@ const reserveSchema = new Schema({
date: { date: {
type: String, type: String,
}, },
time: { starttime: {
type: Number,
},
usetime: {
type: Number,
},
start: {
type: String, type: String,
}, },
room: { end: {
type: String, type: String,
}, },
name: { //대표자 이름 room: {
type: String, type: String,
}, },
...@@ -39,8 +44,6 @@ const reserveSchema = new Schema({ ...@@ -39,8 +44,6 @@ const reserveSchema = new Schema({
num: { num: {
type: Number, type: Number,
}, },
}); });
module.exports = mongoose.model('Reserve', reserveSchema); module.exports = mongoose.model('Reserve', reserveSchema);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment