2023-04-03 01:00:37 +04:00
|
|
|
|
<template>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
<div class="text-center m-3">
|
|
|
|
|
<p class="h3"> Ваша заявка: </p>
|
2023-05-14 01:50:44 +04:00
|
|
|
|
<p class=""> Дата: {{ this.request == null ? '' : this.request['date']}} </p>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
<div class="h4">
|
|
|
|
|
Специализация:
|
|
|
|
|
<button class="btn btn-secondary dropdown-toggle" type="button" id="examResult" data-bs-toggle="dropdown" aria-expanded="false">
|
2023-05-14 01:50:44 +04:00
|
|
|
|
{{ specialization == null ? '' : specialization['title'] ?? specialization }}
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="examResult">
|
|
|
|
|
<li v-for="spec in specializations">
|
2023-04-29 14:20:44 +04:00
|
|
|
|
<a class="dropdown-item" href="#" v-on:click="specialization=spec ">{{ spec['title'] ?? ''}}</a>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="h4">
|
|
|
|
|
Форма обучения:
|
|
|
|
|
<button class="btn btn-secondary dropdown-toggle" type="button" id="examResult" data-bs-toggle="dropdown" aria-expanded="false">
|
2023-05-14 01:50:44 +04:00
|
|
|
|
{{ educationForm == null ? '' : educationForm['title'] ?? educationForm}}
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="examResult">
|
|
|
|
|
<li v-for="form in forms">
|
2023-04-29 14:20:44 +04:00
|
|
|
|
<a class="dropdown-item" href="#" v-on:click="educationForm=form ">{{ form['title'] ?? ''}}</a>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<p class='h6 mt-3'>Закрепленные результаты:</p>
|
|
|
|
|
<ul class='text-start ms-5'>
|
|
|
|
|
<li v-for='result in results'>
|
|
|
|
|
<p>
|
2023-04-29 14:20:44 +04:00
|
|
|
|
Предмет: {{ result['title'] ?? ''}}
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</p>
|
|
|
|
|
<p>
|
2023-04-29 14:20:44 +04:00
|
|
|
|
Результат: {{ result['result'] ?? ''}}
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</p>
|
|
|
|
|
<p>
|
2023-05-14 01:50:44 +04:00
|
|
|
|
<button @click="deleteResultClick(result)" type="button" class="btn btn-danger ms-3" >
|
2023-04-04 00:41:27 +04:00
|
|
|
|
Удалить
|
|
|
|
|
</button>
|
|
|
|
|
</p>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
2023-04-29 14:20:44 +04:00
|
|
|
|
<p class="h6"> Добавить ваши результаты к заявке </p>
|
|
|
|
|
<!-- <div class="dropdown">
|
2023-04-04 00:41:27 +04:00
|
|
|
|
<button class="btn btn-secondary dropdown-toggle" type="button" id="examResult" data-bs-toggle="dropdown" aria-expanded="false">
|
|
|
|
|
<div v-if="selectedExamResult == null" >Выберите результат</div>
|
|
|
|
|
<div v-else>{{ selectedExamResult['title'] }}: {{ selectedExamResult['result'] }} </div>
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="examResult">
|
|
|
|
|
<li v-for="result in allResults">
|
|
|
|
|
<a class="dropdown-item" href="#" v-on:click="selectedExamResult=result ">{{ result['title'] + ': ' + result['result']}}</a>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<button type="button" @click="addResultToRequest" class="btn btn-success p-3 ms-5"> Добавить </button>
|
2023-04-29 14:20:44 +04:00
|
|
|
|
</div> -->
|
2023-05-14 01:50:44 +04:00
|
|
|
|
<div v-if="allResults != null && allResults.length>0">
|
2023-04-29 14:20:44 +04:00
|
|
|
|
<div v-for="res in allResults" >
|
|
|
|
|
<p>
|
|
|
|
|
<span class="me-4">{{res['title'] ?? '' }}: {{ res['result'] ?? '' }} баллов</span>
|
|
|
|
|
<button class="btn btn-info" @click="addResultToRequest(res)">Добавить</button>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<button type="button" @click="saveRequest" class="btn btn-primary p-3 ps-5 pe-5 mt-5">Сохранить</button>
|
2023-04-03 01:00:37 +04:00
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
2023-04-04 00:41:27 +04:00
|
|
|
|
import axios from 'axios'
|
2023-04-03 01:00:37 +04:00
|
|
|
|
export default {
|
2023-04-04 00:41:27 +04:00
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
requestId: -1,
|
|
|
|
|
request: null,
|
|
|
|
|
educationForm: null,
|
|
|
|
|
specialization: null,
|
|
|
|
|
results: [],
|
|
|
|
|
allResults: [],
|
|
|
|
|
selectedExamResult: null,
|
|
|
|
|
specializations: [],
|
|
|
|
|
forms: []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
methods: {
|
2023-05-14 01:50:44 +04:00
|
|
|
|
async deleteResultClick(res) {
|
|
|
|
|
|
|
|
|
|
if (localStorage.getItem('db') == 'mongo'){
|
|
|
|
|
for(const oldres of this.results){
|
|
|
|
|
if (res['title'] == oldres['title']) {
|
|
|
|
|
const index = this.results.indexOf(oldres)
|
|
|
|
|
this.results.splice(index, 1)
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
await this.saveRequest(false)
|
|
|
|
|
window.location.reload()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-04 00:41:27 +04:00
|
|
|
|
let data = JSON.stringify({
|
|
|
|
|
"request_id": this.requestId,
|
2023-05-14 01:50:44 +04:00
|
|
|
|
"exam_result_id": res['id']
|
2023-04-04 00:41:27 +04:00
|
|
|
|
});
|
|
|
|
|
|
2023-05-14 01:50:44 +04:00
|
|
|
|
|
|
|
|
|
|
2023-04-04 00:41:27 +04:00
|
|
|
|
let config = {
|
|
|
|
|
method: 'delete',
|
|
|
|
|
maxBodyLength: Infinity,
|
|
|
|
|
url: 'http://127.0.0.1:8080/api/request_examresult',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
|
},
|
|
|
|
|
data : data
|
|
|
|
|
};
|
|
|
|
|
|
2023-05-14 01:50:44 +04:00
|
|
|
|
await axios.request(config)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
.then((response) => {
|
|
|
|
|
console.log(JSON.stringify(response.data));
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.log(error);
|
|
|
|
|
});
|
|
|
|
|
window.location.reload()
|
|
|
|
|
},
|
|
|
|
|
|
2023-04-29 14:20:44 +04:00
|
|
|
|
async addResultToRequest(res) {
|
2023-04-04 00:41:27 +04:00
|
|
|
|
const axios = require('axios');
|
2023-05-14 01:50:44 +04:00
|
|
|
|
|
|
|
|
|
if (localStorage.getItem('db') == 'mongo'){
|
|
|
|
|
console.log(res)
|
|
|
|
|
// добавление результата к заявке
|
|
|
|
|
this.results.push(res)
|
|
|
|
|
await this.saveRequest(false)
|
|
|
|
|
window.location.reload()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-04 00:41:27 +04:00
|
|
|
|
console.log('Save new result')
|
|
|
|
|
console.log(this.requestId)
|
2023-04-29 14:20:44 +04:00
|
|
|
|
console.log(res)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
var request_result_pairs = (await axios.get('http://127.0.0.1:8080/api/request_examresult/' + this.requestId)).data
|
|
|
|
|
for (const pair of request_result_pairs) {
|
2023-04-29 14:20:44 +04:00
|
|
|
|
if (pair['request_id'] == this.requestId && pair['exam_result_id']==res['id']) {
|
2023-04-04 00:41:27 +04:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let data = JSON.stringify({
|
|
|
|
|
"request_id": this.requestId,
|
2023-04-29 14:20:44 +04:00
|
|
|
|
"exam_result_id": res['id']
|
2023-04-04 00:41:27 +04:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let config = {
|
|
|
|
|
method: 'post',
|
|
|
|
|
maxBodyLength: Infinity,
|
|
|
|
|
url: 'http://127.0.0.1:8080/api/request_examresult',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
|
},
|
|
|
|
|
data : data
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
axios.request(config)
|
|
|
|
|
.then((response) => {
|
|
|
|
|
console.log(JSON.stringify(response.data));
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.log(error);
|
|
|
|
|
});
|
|
|
|
|
window.location.reload()
|
|
|
|
|
},
|
|
|
|
|
|
2023-05-14 01:50:44 +04:00
|
|
|
|
async saveRequest(withPush) {
|
2023-04-04 00:41:27 +04:00
|
|
|
|
const axios = require('axios');
|
2023-05-14 01:50:44 +04:00
|
|
|
|
|
|
|
|
|
if (localStorage.getItem('db') == 'mongo'){
|
|
|
|
|
|
|
|
|
|
let data = JSON.stringify({
|
|
|
|
|
"id": this.requestId,
|
2023-05-14 15:26:22 +04:00
|
|
|
|
"education_form": this.educationForm['title'] ?? this.educationForm,
|
|
|
|
|
"specialization": this.specialization['title'] ?? this.specialization,
|
2023-05-14 01:50:44 +04:00
|
|
|
|
"exam_results": this.results,
|
|
|
|
|
"date": this.request['date'],
|
|
|
|
|
"abitur_id": localStorage.getItem('abiturId')
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let config = {
|
|
|
|
|
method: 'put',
|
|
|
|
|
maxBodyLength: Infinity,
|
|
|
|
|
url: 'http://127.0.0.1:8080/api/request',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
|
},
|
|
|
|
|
data : data
|
|
|
|
|
};
|
|
|
|
|
|
2023-05-14 15:26:22 +04:00
|
|
|
|
await axios.request(config)
|
2023-05-14 01:50:44 +04:00
|
|
|
|
.then((response) => {
|
|
|
|
|
console.log(JSON.stringify(response.data));
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.log(error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (withPush == false) return
|
|
|
|
|
this.$router.push(
|
|
|
|
|
{
|
|
|
|
|
name: "AbiturMain",
|
|
|
|
|
params: {
|
|
|
|
|
abiturId: localStorage.getItem('abiturId')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-04 00:41:27 +04:00
|
|
|
|
let data = JSON.stringify({
|
|
|
|
|
"id": this.requestId,
|
|
|
|
|
"education_form_id": this.educationForm['id'],
|
|
|
|
|
"specialization_id": this.specialization['id'],
|
|
|
|
|
"date": this.request['date']
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let config = {
|
|
|
|
|
method: 'put',
|
|
|
|
|
maxBodyLength: Infinity,
|
|
|
|
|
url: 'http://127.0.0.1:8080/api/request',
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
|
},
|
|
|
|
|
data : data
|
|
|
|
|
};
|
|
|
|
|
|
2023-05-14 15:26:22 +04:00
|
|
|
|
await axios.request(config)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
.then((response) => {
|
|
|
|
|
console.log(JSON.stringify(response.data));
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.log(error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.$router.push(
|
|
|
|
|
{
|
|
|
|
|
name: "AbiturMain",
|
|
|
|
|
params: {
|
|
|
|
|
abiturId: this.request['abitur_id']
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
2023-04-29 14:20:44 +04:00
|
|
|
|
async created() {
|
2023-04-04 00:41:27 +04:00
|
|
|
|
// получаем заявку
|
|
|
|
|
this.requestId = this.$route.params.requestId
|
2023-04-29 14:20:44 +04:00
|
|
|
|
console.log(this.requestId)
|
2023-05-14 01:50:44 +04:00
|
|
|
|
if (localStorage.getItem('db') == 'mongo'){
|
|
|
|
|
this.request = (await axios.get('http://127.0.0.1:8080/api/request/' + this.requestId)).data
|
|
|
|
|
console.log('mongo')
|
|
|
|
|
console.log(this.request)
|
|
|
|
|
console.log(this.request['date'])
|
|
|
|
|
this.educationForm = this.request['education_form']
|
|
|
|
|
this.specialization = this.request['specialization']
|
|
|
|
|
|
|
|
|
|
var request_result_pairs = this.request['exam_results']
|
|
|
|
|
for(const pair of request_result_pairs) {
|
|
|
|
|
this.results.push(pair)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var allResults = (await axios.get('http://127.0.0.1:8080/api/examresult/abitur/' + localStorage.getItem('abiturId'))).data
|
|
|
|
|
|
|
|
|
|
var flag = true;
|
|
|
|
|
for (const allRes of allResults) {
|
|
|
|
|
flag = true;
|
|
|
|
|
for(const res of this.results) {
|
2023-05-14 22:29:28 +04:00
|
|
|
|
if (allRes['title'] == res['title']) {flag = false}
|
2023-05-14 01:50:44 +04:00
|
|
|
|
}
|
|
|
|
|
if (flag) {
|
|
|
|
|
this.allResults.push(allRes)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//specs and forms
|
|
|
|
|
this.specializations = (await axios.get('http://127.0.0.1:8080/api/specialization')).data
|
|
|
|
|
this.forms = (await axios.get('http://127.0.0.1:8080/api/educationform')).data
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
console.log('pgsql')
|
2023-04-29 14:20:44 +04:00
|
|
|
|
this.request = (await axios.get('http://127.0.0.1:8080/api/request/' + this.requestId)).data
|
|
|
|
|
console.log(this.request)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
// получаем ее специализацию и форму обучения
|
|
|
|
|
this.educationForm = (await axios.get('http://127.0.0.1:8080/api/educationform/' + this.request['education_form_id'])).data
|
2023-04-29 14:20:44 +04:00
|
|
|
|
//console.log(this.educationForm)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
this.specialization = (await axios.get('http://127.0.0.1:8080/api/specialization/' + this.request['specialization_id'])).data
|
|
|
|
|
console.log(this.specialization)
|
|
|
|
|
//получаем закрепленные за заявкой результаты
|
|
|
|
|
var request_result_pairs = (await axios.get('http://127.0.0.1:8080/api/request_examresult/' + this.requestId)).data
|
|
|
|
|
for(const pair of request_result_pairs) {
|
2023-04-29 14:20:44 +04:00
|
|
|
|
//console.log(pair)
|
|
|
|
|
this.results.push((await axios.get('http://127.0.0.1:8080/api/examresult/' + pair['exam_result_id'])).data)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
}
|
2023-04-29 14:20:44 +04:00
|
|
|
|
// console.log(this.results)
|
2023-04-04 00:41:27 +04:00
|
|
|
|
//получаем все результаты абитуриента
|
2023-04-29 14:20:44 +04:00
|
|
|
|
var allResults = (await axios.get('http://127.0.0.1:8080/api/examresult/abitur/' + this.request['abitur_id'])).data
|
|
|
|
|
//console.log(allResults)
|
|
|
|
|
//
|
|
|
|
|
var flag = true;
|
|
|
|
|
for (const allRes of allResults) {
|
|
|
|
|
flag = true;
|
|
|
|
|
for(const res of this.results) {
|
|
|
|
|
if (allRes['id'] == res['id'])
|
|
|
|
|
flag = false
|
|
|
|
|
}
|
|
|
|
|
if (flag) {
|
|
|
|
|
this.allResults.push(allRes)
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-04 00:41:27 +04:00
|
|
|
|
// получаем все формы обучения и специализации
|
|
|
|
|
this.specializations = (await axios.get('http://127.0.0.1:8080/api/specialization')).data
|
|
|
|
|
this.forms = (await axios.get('http://127.0.0.1:8080/api/educationform')).data
|
2023-04-29 14:20:44 +04:00
|
|
|
|
|
2023-04-04 00:41:27 +04:00
|
|
|
|
}
|
2023-04-03 01:00:37 +04:00
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="">
|
|
|
|
|
|
|
|
|
|
</style>
|