Skip to content
Snippets Groups Projects
Commit b19e9320 authored by YongJae's avatar YongJae
Browse files

Merging conflict

parents 0ff677e3 453c466f
No related branches found
No related tags found
No related merge requests found
Showing
with 583 additions and 192 deletions
This diff is collapsed.
This diff is collapsed.
var express = require('express'); var express = require('express');
var router = express.Router(); var router = express.Router();
var books = require('../data/books.json');
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
var User = require('../models/user'); var User = require('../models/user');
var Book = require('../models/Book');
router.get('/', function(req, res) { router.get('/', function(req, res) {
console.log("=======Book Index======="); console.log("Get start")
res.send(books); Book.find({}, function(err, Books){
}); if(err) res.json({result: false, message: "not found Books"})
res.json(Books);
router.get('/:id', function(req, res) { })
var id = parseInt(req.params.id, 10);
console.log("=======Show Book======= id: " + id);
var book = books.filter(function (book) {
return book.id === id;
});
console.dir(book);
res.send(book);
}); });
router.post('/', function(req, res) { router.post('/', function(req, res) {
let book = req.body; console.log("Post start")
book.buycount = Number(book.buycount); const Book_info = req.body;
book.sellcount = Number(book.sellcount);
book.buycount++;
const bookPath = path.join(__dirname, '..', 'data', 'books.json');
fs.readFile(bookPath, 'utf8', (err, data) => { Book.create(Book_info)
let parsedData = JSON.parse(data); .then(result => {
fs.writeFile(bookPath, JSON.stringify(parsedData), (err)=>{ if(result) res.json({result:true});
if(err) throw err; else res.json({result:false});
console.log('books update complete');
res.send('end');
});
}); });
}); });
......
...@@ -20,12 +20,7 @@ ...@@ -20,12 +20,7 @@
<div class="md-toolbar-row"> <div class="md-toolbar-row">
<md-tabs class="md-primary" style="margin: auto; height: 30px"> <md-tabs class="md-primary" style="margin: auto; height: 30px">
<md-tab id="tab-home" md-label="Home" to="/"></md-tab> <md-tab id="tab-home" md-label="Home" to="/home"></md-tab>
<md-tab
id="tab-dashBoard"
md-label="Dashboard"
to="/dashBoard"
></md-tab>
<md-tab id="tab-profile" md-label="Profile" to="/profile"></md-tab> <md-tab id="tab-profile" md-label="Profile" to="/profile"></md-tab>
<md-tab <md-tab
id="tab-list" id="tab-list"
......
frontend/src/assets/check-icon.png

3.08 KiB

<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
frontend/src/assets/x-512.png

11.9 KiB

<template> <template>
<div>
<div class="select">
<multiselect
style="float: left; marginLeft: 15%; width: 20%;"
v-model="grade"
:options="option1"
></multiselect>
<multiselect
style="float: left; marginLeft: 0.5%; width: 20%;"
v-model="major"
:options="option2"
></multiselect>
<multiselect
style="float: left; marginLeft: 0.5%; width: 20%;"
v-model="type"
:options="option3"
></multiselect>
</div>
<md-button
class="md-raised"
color="#999"
style="float: left; marginLeft: 1%; width: 2%; marginTop:0.1%"
v-on:click="Search"
>검색</md-button>
<!-- ==================================================================== -->
<div v-if="SearchResult === true">
<div v-for="Book in Books" :key="Book.id">
<md-card
style="width: 50%; margin: 4px;marginTop:100px; display: inline-block; vertical-align: top;"
>
<md-card-header>
<md-card-header-text>
<div class="md-title">
{{Book.title}}
<br />
<br />
</div>
<div class="md-subhead" style="text-align:left;font-weight: bold;">
# 학년: {{Book.grade}}
<br />
# 전공: {{Book.major}}
<br />
# 세부사항: {{Book.type}}
<br />
# 매물: {{Book.stock}}
</div>
</md-card-header-text>
<md-card-media md-medium>
<img v-bind:src="Book.src" />
</md-card-media>
</md-card-header>
<md-card-actions>
<md-button class="md-raised md-accent">Sell</md-button>
<md-button class="md-raised md-primary">Buy Now</md-button>
</md-card-actions>
</md-card>
</div>
</div>
<!-- ============================================= -->
<div>
<md-speed-dial :class="bottomPosition" style="marginRight:20%; marginBottom:8%">
<md-button class="md-fab md-primary" v-on:click="active = true">
<img src="../assets/icon-add.svg" />
</md-button>
</md-speed-dial>
</div>
<!-- =============서포터즈 submit 양식 ================== -->
<div> <div>
<div class = 'select'> <md-dialog :md-active.sync="active" style="width : 500px; height: 1000px ">
<multiselect style="float: left; marginLeft: 20%; width: 20%;" <md-dialog-title>서포터즈 신청</md-dialog-title>
v-model="grade" <md-field class="select">
:options="option1"> <label>책제목</label>
</multiselect> <md-input v-model="submit.title"></md-input>
<multiselect style="float: left; marginLeft: 0.5%; width: 20%;" </md-field>
v-model="major" <md-field class="select">
:options="option2"> <label>학년</label>
</multiselect> <md-input v-model="submit.grade"></md-input>
<multiselect style="float: left; marginLeft: 0.5%; width: 20%;" </md-field>
v-model="type" <md-field class="select">
:options="option3"> <label>학과</label>
</multiselect> <md-input v-model="submit.major"></md-input>
<v-btn color = "#999" style="float: left; marginLeft: 1%; " v-on:click='Search'>검색</v-btn> </md-field>
</div> <md-field class="select">
<div v-if = "SearchResult === true"> <label>사진</label>
<div v-for="Book in Books" :key="Book.id"> <md-input v-model="submit.src"></md-input>
<md-card style = "width: 50%; margin: 4px;marginTop:100px; display: inline-block; vertical-align: top;"> </md-field>
<md-card-header> <md-dialog-actions>
<md-card-header-text> <md-button class="md-primary" v-on:click="active = false">Close</md-button>
<div class="md-title">{{Book.title}}<br><br></div> <md-button class="md-primary" v-on:click="Register">Submit</md-button>
<div class="md-subhead" style = "text-align:left;font-weight: bold;"># 학년: {{Book.grade}}<br># 전공: {{Book.major}}<br># 세부사항: {{Book.type}} </md-dialog-actions>
<br># 매물: {{Book.stock}} </md-dialog>
</div> <!-- ============================================== -->
</md-card-header-text> </div>
<md-card-media md-medium> </div>
<img v-bind:src="Book.src">
</md-card-media>
</md-card-header>
<md-card-actions>
<md-button class="md-raised md-accent">Sell</md-button>
<md-button class="md-raised md-primary">Buy Now</md-button>
</md-card-actions>
</md-card>
</div>
</div>
</div>
</template> </template>
<script> <script>
import Vue from 'vue' import Vue from 'vue'
import VueMaterial from 'vue-material' import VueMaterial from 'vue-material'
...@@ -52,6 +110,8 @@ export default { ...@@ -52,6 +110,8 @@ export default {
name: 'MaterialIcons', name: 'MaterialIcons',
data() { data() {
return { return {
bottomPosition: 'md-bottom-right',
active : false,
SearchResult : false, SearchResult : false,
grade: null, grade: null,
major: null, major: null,
...@@ -59,39 +119,26 @@ export default { ...@@ -59,39 +119,26 @@ export default {
option1: ['1학년','2학년','3학년','4학년'], option1: ['1학년','2학년','3학년','4학년'],
option2: ['소프트웨어학과','미디어학과','경제학과'], option2: ['소프트웨어학과','미디어학과','경제학과'],
option3: ['전공 필수', '전공 선택', '교양선택','기초과목'], option3: ['전공 필수', '전공 선택', '교양선택','기초과목'],
Books : [ Books : [
{ ],
id : "1", submit:{
title: 'C programming', title : "",
grade : '1학년', grade: "",
major : '소프트웨어학과', major : "",
type : '전공필수', src : "",
stock : '4개', }
src : 'http://image.yes24.com/momo/TopCate1057/MidCate003/105623688.jpg',
},
{
id : "2",
title : '미시경제학 원론',
grade : '2학년',
major : '경제학과',
type : '전공필수',
stock : '3개',
src : 'http://image.yes24.com/momo/TopCate1278/MidCate006/127759061.jpg'
},
{
id : "3",
title : '방송 시스템과 영상 제작',
grade : '3학년',
major : '미디어',
type : '전공선택',
stock : '10개',
src : 'http://bimage.interpark.com/goods_image/9/1/3/0/211969130g.jpg'
},
]
}; };
}, },
created() {
this
.$http
.get('/api/books')
.then(response => {
this.Books = response.data;
console.log("Success")
console.log(this.Books)
})
},
methods:{ methods:{
Search: function(){ Search: function(){
if(this.grade !== null && this.major !== null && this.type !== null) if(this.grade !== null && this.major !== null && this.type !== null)
...@@ -104,8 +151,19 @@ export default { ...@@ -104,8 +151,19 @@ export default {
alert("검색할 카테고리를 전부 입력해주세요") alert("검색할 카테고리를 전부 입력해주세요")
} }
} },
Register(){
this.$http
.post("/api/books", this.submit)
.then(res => {
console.log("Sumit Success");
})
.catch(err => {
console.log("Submit failed");
});
this.active = false;
} }
}
}; };
</script> </script>
...@@ -119,9 +177,13 @@ html,body { ...@@ -119,9 +177,13 @@ html,body {
justify-content: center; justify-content: center;
} }
.search {
margin-Bottom: 0.5%;
}
.select { .select {
text-align: center; text-align: center;
margin-Top: 2%;
} }
.button{ .button{
margin-top: 70px; margin-top: 70px;
......
<template>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Majorbook</title>
</head>
<body>
<h1>my page 1</h1>
<button>수정하기</button>
</body>
</html>
</template>
...@@ -2,20 +2,24 @@ ...@@ -2,20 +2,24 @@
<div> <div>
<div class="md-layout" style="display: block; color:#F6F6F6"> <div class="md-layout" style="display: block; color:#F6F6F6">
<div class="md-layout-item"> <div class="md-layout-item">
<img src="../../static/img/img2.jpg" /> <Hotlist />
</div> </div>
<div class="md-layout-item" style="backgroundColor:#F2CB61; height:30px;">이용방법</div> <div class="md-layout-item" style="backgroundColor:#F2CB61;">home</div>
<div class="md-layout-item" style="backgroundColor:#353535;">Implemented by 202-WebSysDesign</div> <div class="md-layout-item" style="backgroundColor:#353535;">Implemented by 202-WebSysDesign</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import Hotlist from "./home_hotlist/HotList";
export default { export default {
data() { data() {
return {}; return {};
}, },
components: {
Hotlist
},
methods: {} methods: {}
}; };
</script> </script>
...@@ -61,11 +65,7 @@ h1 { ...@@ -61,11 +65,7 @@ h1 {
} }
.section { .section {
height: 500px; height: 110%;
}
img {
height: 100%;
width: 100%; width: 100%;
} }
......
<template>
<div>
<md-table v-model="searched" md-sort="name" md-sort-order="asc" md-card md-fixed-header>
<md-table-toolbar>
<div class="md-toolbar-section-start" style="min-height: 100px"></div>
<md-field md-clearable class="md-toolbar-section-end" style="max-width: 300px;">
<md-input placeholder="책 이름으로 검색" v-model="search" @input="searchOnTable" />
</md-field>
</md-table-toolbar>
<md-table-empty-state md-label="No Result" :md-description="`해당 이름으로 된 책이 없습니다.`">
<md-button class="md-primary md-raised" @click="newUser">판매 등록하기</md-button>
</md-table-empty-state>
<md-table-row slot="md-table-row" slot-scope="{ item }" style="margin-top:100px">
<md-table-cell md-label="판매순위" md-sort-by="id" md-numeric>
{{
item.id
}}
</md-table-cell>
<md-table-cell md-label="전공" md-sort-by="name">
{{
item.name
}}
</md-table-cell>
<md-table-cell md-label="책이름" md-sort-by="email">
{{
item.email
}}
</md-table-cell>
<md-table-cell>
<md-button class="md-primary md-raised">구매</md-button>
</md-table-cell>
<md-table-cell>
<md-button class="md-raised md-accent">판매</md-button>
</md-table-cell>
</md-table-row>
</md-table>
</div>
</template>
<script>
const toLower = text => {
return text.toString().toLowerCase();
};
const searchByName = (items, term) => {
if (term) {
return items.filter(item => toLower(item.name).includes(toLower(term)));
}
return items;
};
export default {
name: "TableSearch",
data: () => ({
search: null,
searched: [],
users: [
{
id: 1,
name: "Shawna Dubbin",
email: "sdubbin0@geocities.com",
gender: "Male",
title: "Assistant Media Planner"
},
{
id: 2,
name: "Odette Demageard",
email: "odemageard1@spotify.com",
gender: "Female",
title: "Account Coordinator"
},
{
id: 3,
name: "Vera Taleworth",
email: "vtaleworth2@google.ca",
gender: "Male",
title: "Community Outreach Specialist"
},
{
id: 4,
name: "Lonnie Izkovitz",
email: "lizkovitz3@youtu.be",
gender: "Female",
title: "Operator"
},
{
id: 5,
name: "Thatcher Stave",
email: "tstave4@reference.com",
gender: "Male",
title: "Software Test Engineer III"
},
{
id: 6,
name: "Karim Chipping",
email: "kchipping5@scribd.com",
gender: "Female",
title: "Safety Technician II"
},
{
id: 7,
name: "Helge Holyard",
email: "hholyard6@howstuffworks.com",
gender: "Female",
title: "Internal Auditor"
},
{
id: 8,
name: "Rod Titterton",
email: "rtitterton7@nydailynews.com",
gender: "Male",
title: "Technical Writer"
},
{
id: 9,
name: "Gawen Applewhite",
email: "gapplewhite8@reverbnation.com",
gender: "Female",
title: "GIS Technical Architect"
},
{
id: 10,
name: "Nero Mulgrew",
email: "nmulgrew9@plala.or.jp",
gender: "Female",
title: "Staff Scientist"
},
{
id: 11,
name: "Cybill Rimington",
email: "crimingtona@usnews.com",
gender: "Female",
title: "Assistant Professor"
},
{
id: 12,
name: "Maureene Eggleson",
email: "megglesonb@elpais.com",
gender: "Male",
title: "Recruiting Manager"
},
{
id: 13,
name: "Cortney Caulket",
email: "ccaulketc@cbsnews.com",
gender: "Male",
title: "Safety Technician IV"
},
{
id: 14,
name: "Selig Swynfen",
email: "sswynfend@cpanel.net",
gender: "Female",
title: "Environmental Specialist"
},
{
id: 15,
name: "Ingar Raggles",
email: "iragglese@cbc.ca",
gender: "Female",
title: "VP Sales"
},
{
id: 16,
name: "Karmen Mines",
email: "kminesf@topsy.com",
gender: "Male",
title: "Administrative Officer"
},
{
id: 17,
name: "Salome Judron",
email: "sjudrong@jigsy.com",
gender: "Male",
title: "Staff Scientist"
},
{
id: 18,
name: "Clarinda Marieton",
email: "cmarietonh@theatlantic.com",
gender: "Male",
title: "Paralegal"
},
{
id: 19,
name: "Paxon Lotterington",
email: "plotteringtoni@netvibes.com",
gender: "Female",
title: "Marketing Assistant"
},
{
id: 20,
name: "Maura Thoms",
email: "mthomsj@webeden.co.uk",
gender: "Male",
title: "Actuary"
}
]
}),
methods: {
newUser() {
window.alert("판매 등록을 클릭했습니다.");
},
searchOnTable() {
this.searched = searchByName(this.users, this.search);
}
},
created() {
this.searched = this.users;
}
};
</script>
<style lang="scss" scoped>
.md-field {
max-width: 500px;
}
</style>
<template>
<div>
<div class="md-layout" style="display: block; color:#F6F6F6">
<div class="md-layout-item">
<img src="../../static/img/img2.jpg" />
</div>
<div class="md-layout-item" style="backgroundColor:#F2CB61; height:30px;">이윤구</div>
</div>
</div>
</template>
\ No newline at end of file
<template> <template>
<!DOCTYPE html> <html lang="en">
<html lang="en"> <body>
<head> <section id="section1">
<meta charset="UTF-8" /> <buylist />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> </section>
<title>Majorbook</title> <section id="section2">
</head> <sellist />
<body> </section>
<h1>My Page-2</h1> <aside>
dfsd <profiledit />
<button>수정하기</button> </aside>
</body> </body>
</html> </html>
</template> </template>
<script>
import buylist from "./profilecomponent/buylist"
import sellist from "./profilecomponent/sellist"
import profiledit from "./profilecomponent/profiledit"
export default {
data() {
return {};
},
components: {
buylist,
profiledit,
sellist
},
methods: {
checked () {
return true;
}
}
};
</script>
<style lang="css" scoped>
* {
text-align: center;
max-width: 100%;
min-height: 100%;
}
#section1 {
float: left;
width: 50%;
height: 300px;
margin-right: auto;
padding-right: auto;
border-style: groove;
}
#section2 {
float: right;
width: 50%;
height: 300px;
margin-right: auto;
padding-right: auto;
border-style: groove;
}
aside {
float: left;
width: 50%;
height: 300px;
margin-right: auto;
padding-right: auto;
background-color: white;
border-style: groove;
}
</style>
\ No newline at end of file
<template>
<div class="viewport" style="overflow: auto;">
<md-toolbar :md-elevation="1" style="height : 30px" class="md-title">
<span>Buylist</span>
</md-toolbar>
<md-list class="md-double-line" style="height : 230px">
<md-list-item>
<md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16">
<img src="../../assets/book-open-flat.png" />
</md-button>
<div class="md-list-item-text">
<span>&nbsp;&nbsp;책 제목</span>
<span>&nbsp;&nbsp;구매 대기중</span>
</div>
<md-button class="md-icon-button md-raised md-accent">
<img src="../../assets/x-512.png" />
</md-button>
<md-button class="md-icon-button md-raised md-primary">
<img src="../../assets/check-icon.png" />
</md-button>
</md-list-item>
<md-divider></md-divider>
</md-list>
</div>
</template>
<script>
import Vue from 'vue'
import VueMaterial from 'vue-material'
import Multiselect from 'vue-multiselect'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'
Vue.use(VueMaterial)
export default {
name: 'SubheaderExample'
}
</script>
<style lang="scss" scoped>
.viewport {
width: 100%;
display: inline-block;
vertical-align: top;
}
</style>
\ No newline at end of file
<template>
<div class="viewport" style="overflow: auto;">
<md-toolbar :md-elevation="1" style="height : 30px" class="md-title">
<span>Profile 수정</span>
</md-toolbar>
<div style="margin-top:17%; display:inline-block">
<md-chip class="md-primary" md-clickable>회원 정보 수정</md-chip>
</div>
</div>
</template>
<script>
import Vue from 'vue'
import VueMaterial from 'vue-material'
import Multiselect from 'vue-multiselect'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'
Vue.use(VueMaterial)
export default {
name: 'SubheaderExample'
}
</script>
<style lang="scss" scoped>
.viewport {
width: 100%;
display: inline-block;
vertical-align: top;
}
</style>
\ No newline at end of file
<template>
<div class="viewport" style="overflow: auto;">
<md-toolbar :md-elevation="1" style="height : 30px" class="md-title">
<span>sellist</span>
</md-toolbar>
<md-list class="md-double-line" style="height : 230px">
<md-list-item>
<md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16">
<img src="../../assets/book-open-flat.png" />
</md-button>
<div class="md-list-item-text">
<span>&nbsp;&nbsp;책 제목</span>
<span>&nbsp;&nbsp;판매중</span>
</div>
<md-button class="md-icon-button md-raised md-accent">
<img src="../../assets/x-512.png" />
</md-button>
<md-button class="md-icon-button md-raised md-primary">
<img src="../../assets/check-icon.png" />
</md-button>
</md-list-item>
<md-divider></md-divider>
</md-list>
</div>
</template>
<script>
import Vue from 'vue'
import VueMaterial from 'vue-material'
import Multiselect from 'vue-multiselect'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'
Vue.use(VueMaterial)
export default {
name: 'SubheaderExample'
}
</script>
<style lang="scss" scoped>
.viewport {
width: 100%;
display: inline-block;
vertical-align: top;
}
</style>
\ No newline at end of file
...@@ -2,7 +2,7 @@ import Vue from "vue"; ...@@ -2,7 +2,7 @@ import Vue from "vue";
import Router from "vue-router"; import Router from "vue-router";
Vue.use(Router); Vue.use(Router);
import home from "@/components/home"; import home from "@/components/home";
import dashBoard from "@/components/dashBoard"; import mainpage from "@/components/mainpage";
import profile from "@/components/profile"; import profile from "@/components/profile";
import BookSearchPage from "@/components/BookSearchPage"; import BookSearchPage from "@/components/BookSearchPage";
import Login from "@/components/login/Login"; import Login from "@/components/login/Login";
...@@ -14,14 +14,15 @@ export default new Router({ ...@@ -14,14 +14,15 @@ export default new Router({
routes: [ routes: [
{ {
path: "/", path: "/",
name: "home", name: "mainpage",
component: home component: mainpage
}, },
{ {
path: "/dashBoard", path: "/home",
name: "dashBoard", name: "home",
component: dashBoard component: home
}, },
{ {
path: "/profile", path: "/profile",
name: "profile", name: "profile",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment