1
0
mirror of https://github.com/robonen/metr.git synced 2026-03-20 10:54:41 +00:00

6 Commits

Author SHA1 Message Date
dabimarie
2496867d21 Add PasswordAccept 2022-06-06 18:35:12 +07:00
dabimarie
c887a05c0b Add RecoveryNewPassword 2022-06-06 18:33:51 +07:00
Konstantin Vinokurov
99ef740a03 Merge pull request #16 from robonen/Backend_1.0
Offer search
2022-06-02 23:02:45 +07:00
Konstantin Vinokurov
a067507f59 Merge pull request #15 from robonen/Frontend_1.0
Frontend 1.0
2022-06-02 23:02:21 +07:00
Konstantin Vinokurov
d916977fc8 Vue, back edited,added 2022-06-02 23:00:58 +07:00
Konstantin Vinokurov
4bfe25d887 +Vue +edited backend 2022-06-02 23:00:42 +07:00
9 changed files with 127 additions and 19 deletions

View File

@@ -37,7 +37,7 @@ h1, h2, h3, h4, h5, h6 {
/* Intro */ /* Intro */
.intro { .intro {
width: 100%; width: 100%;
height: 100vh; min-height: 100vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content:center; justify-content:center;

View File

@@ -242,7 +242,15 @@ h1, h2, h3, h4, h5, h6 {
margin: 1% 0; margin: 1% 0;
} }
.rewiew__comment{
padding-left: 10px;
}
.review__stars { .review__stars {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.user__stat{
padding-right: 10px;
}

View File

@@ -22,8 +22,8 @@ export default {
computed: { computed: {
...mapGetters({ user: 'user' }), ...mapGetters({ user: 'user' }),
name() { name() {
return this.user.last_name && this.user.first_name && this.user.middle_name return this.user.last_name && this.user.first_name
? `${this.user.last_name} ${this.user.first_name} ${this.user.middle_name}` ? `${this.user.last_name} ${this.user.first_name} ${this.user.middle_name ?? ''}`
: 'Не указано'; : 'Не указано';
} }
} }

View File

@@ -20,7 +20,7 @@
<div class="about__describtions"> <div class="about__describtions">
<div class="descriptions__name"> <div class="descriptions__name">
<h4>Название для объявления:</h4> <h4>Название для объявления:</h4>
<input type="text" size="40" v-model.trim="offer.name"> <input type="text" size="40" placeholder="Пример: Просторная квартира на Елисеевке" v-model.trim="offer.name">
</div> </div>
<div class="descriptions__name"> <div class="descriptions__name">
<h4>Тип:</h4> <h4>Тип:</h4>
@@ -32,11 +32,11 @@
</div> </div>
<div class="descriptions__address"> <div class="descriptions__address">
<h4>Адрес:</h4> <h4>Адрес:</h4>
<input type="text" size="40" v-model.trim="offer.location"> <input type="text" size="40" placeholder="Пример: Комарино 12, д. 3" v-model.trim="offer.location">
</div> </div>
<div class="descriptions__price"> <div class="descriptions__price">
<h4>Цена:</h4> <h4>Цена:</h4>
<input type="text" size="40" v-model.number="offer.price"> <input type="text" size="40" placeholder="Пример: '1200000'" v-model.number="offer.price">
</div> </div>
<div class="descriptions__flats"> <div class="descriptions__flats">
<h4>Кол-во комнат:</h4> <h4>Кол-во комнат:</h4>
@@ -49,11 +49,12 @@
</div> </div>
<div class="descriptions__square"> <div class="descriptions__square">
<h4>Площадь:</h4> <h4>Площадь:</h4>
<input type="text" size="40" v-model.number="offer.space"> <input type="text" size="40" placeholder="Пример: '45'" v-model.number="offer.space">
</div> </div>
<div class="descriptions__text"> <div class="descriptions__text">
<h4>Описание:</h4> <h4>Описание:</h4>
<input type="text" size="40" v-model.trim="offer.description"> <!-- <input type="text" size="40" v-model.trim="offer.description">-->
<textarea placeholder="Описание" class="descriptions__textarea" v-model.trim="offer.description"></textarea>
</div> </div>
</div> </div>
<button @click="action">Отправить</button> <button @click="action">Отправить</button>
@@ -263,12 +264,28 @@ export default {
margin-top: 1%; margin-top: 1%;
} }
.descriptions__textarea{
background-color: rgb(201, 233, 252);
border-radius: 5px;
border-color: white;
box-shadow: none;
border: 1px solid rgb(83, 110, 136);
width: 100%;
height: 100px;
font-size: 0.8em;
}
.about__describtions input { .about__describtions input {
background-color: rgb(201, 233, 252); background-color: rgb(201, 233, 252);
border-radius: 5px; border-radius: 5px;
border-color: white; border-color: white;
box-shadow: none; box-shadow: none;
border: 1px solid rgb(83, 110, 136); border: 1px solid rgb(83, 110, 136);
font-size: 0.8em;
} }
.about__describtions h4 { .about__describtions h4 {
@@ -278,5 +295,6 @@ export default {
.descriptions__text input { .descriptions__text input {
width: 100%; width: 100%;
height: 100px; height: 100px;
} }
</style> </style>

View File

@@ -30,10 +30,8 @@
</div> </div>
<div class="header__search"> <div class="header__search">
<div class="search"> <div class="search">
<div class="search__block"> <input text="" class="search__block" placeholder="Поиск" v-model.trim="query" @keydown.enter="search">
<div class="search__img" @click.prevent="search">
</div>
<div class="search__img">
<a class="nav__link" href="#"> <a class="nav__link" href="#">
<img src="@/assets/images/search.jpg" alt=""> <img src="@/assets/images/search.jpg" alt="">
</a> </a>
@@ -59,10 +57,24 @@
<script> <script>
export default { export default {
name: "TheHeader" name: "TheHeader",
data() {
return {
query: '',
};
},
methods: {
search() {
this.$router.push({
path: '/catalog',
query: { q: this.query },
})
}
},
} }
</script> </script>
<style scoped> <style scoped>
/* Container */ /* Container */
.container { .container {
@@ -137,7 +149,8 @@ export default {
width: 300px; width: 300px;
height: 40px; height: 40px;
margin: 0; margin: 0;
padding-top: 20px;
font-size: 1em;
background: white; background: white;
border: 1px solid black; border: 1px solid black;

View File

@@ -133,10 +133,23 @@ export default {
const offers = await offerService.filter(this.sortParams); const offers = await offerService.filter(this.sortParams);
this.offers = offers.data.data; this.offers = offers.data.data;
}, },
async addSearchParam(value) {
if (!value || !value.q) {
this.sortParams = this.sortParams.filter((e) => e.name !== 'search');
this.reloadOffers();
return;
}
await this.addSortParam('search', value.q);
}
}, },
async mounted() { async mounted() {
const offers = await offerService.all(); await this.addSearchParam(this.$route.query);
this.offers = offers.data.data; },
watch: {
'$route.query'(value) {
this.addSearchParam(value);
}
} }
} }
</script> </script>

View File

@@ -75,9 +75,9 @@
</div> </div>
<div class="reviews__blocks"> <div class="reviews__blocks">
<div v-if="offer?.user?.feedback" class="review" v-for="(review, i) in offer.user.feedback" :key="i"> <div v-if="offer?.user?.feedback" class="review" v-for="(review, i) in offer.user.feedback" :key="i">
<div class="review__avatar"> <!-- <div class="review__avatar">-->
<img src="@/assets/images/forcomment.png" alt=""> <!-- <img src="@/assets/images/forcomment.png" alt="">-->
</div> <!-- </div>-->
<div class="rewiew__comment"> <div class="rewiew__comment">
<h5>{{ review.comment }}</h5> <h5>{{ review.comment }}</h5>
</div> </div>

View File

@@ -0,0 +1,30 @@
<template>
<div class="container">
<div class="logo">
<div class="logoMetr">
</div>
</div>
<div class="title">
<h2>Восстановление пароля</h2>
</div>
<form action="" method="get" class="form__example">
<div class="form__example">
<label for="name"></label>
<input class="login" type="text" name="name" id="name" placeholder="Новый пароль" required>
</div>
<div class="form__example">
<label for="email"></label>
<input class="login" type="email" name="email" id="email" placeholder="Подтвердите пароль" required>
</div>
<div class="form__example">
<input class="form__input" type="submit" value="Сохранить пароль">
</div>
</form>
</div>
</template>
<script>
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,26 @@
<template>
<div class="container">
<div class="logo">
<div class="logoMetr">
</div>
</div>
<div class="title">
<h2>Восстановление пароля</h2>
</div>
<form action="" method="get" class="form__example">
<div class="form__example">
<label for="name"></label>
<input class="login" type="text" name="name" id="name" placeholder="Введите код подтверждения" required>
</div>
<div class="form__example">
<input class="form__input" type="submit" value="Принять">
</div>
</form>
</div>
</template>
<script>
</script>
<style scoped>
</style>