WIP: Try vue #244
@ -27,6 +27,7 @@ import ru.ulstu.user.service.UserService;
|
||||
import java.io.IOException;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -131,9 +132,11 @@ public class PaperService {
|
||||
paper.setUpdateDate(new Date());
|
||||
paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines()));
|
||||
paper.setReferences(saveOrCreateReferences(paperDto.getReferences()));
|
||||
paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream()
|
||||
.filter(f -> !f.isDeleted())
|
||||
.collect(toList())));
|
||||
if (paperDto.getFiles() != null) {
|
||||
paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream()
|
||||
.filter(f -> !f.isDeleted())
|
||||
.collect(toList())));
|
||||
}
|
||||
paper.getAuthors().clear();
|
||||
if (paperDto.getAuthorIds() != null && !paperDto.getAuthorIds().isEmpty()) {
|
||||
paperDto.getAuthorIds().forEach(authorIds -> paper.getAuthors().add(userService.findById(authorIds)));
|
||||
@ -142,7 +145,9 @@ public class PaperService {
|
||||
}
|
||||
|
||||
private List<Reference> saveOrCreateReferences(List<ReferenceDto> references) {
|
||||
return references
|
||||
return references == null
|
||||
? Collections.emptyList()
|
||||
: references
|
||||
.stream()
|
||||
.filter(reference -> !reference.getDeleted())
|
||||
.map(reference -> reference.getId() != null ? updateReference(reference) : createReference(reference))
|
||||
@ -182,16 +187,20 @@ public class PaperService {
|
||||
Paper.PaperStatus oldStatus = paper.getStatus();
|
||||
Set<User> oldAuthors = new HashSet<>(paper.getAuthors());
|
||||
|
||||
for (FileDataDto file : paperDto.getFiles().stream()
|
||||
.filter(f -> f.isDeleted() && f.getId() != null)
|
||||
.collect(toList())) {
|
||||
fileService.delete(file.getId());
|
||||
if (paperDto.getFiles() != null) {
|
||||
for (FileDataDto file : paperDto.getFiles().stream()
|
||||
.filter(f -> f.isDeleted() && f.getId() != null)
|
||||
.collect(toList())) {
|
||||
fileService.delete(file.getId());
|
||||
}
|
||||
}
|
||||
paperRepository.save(copyFromDto(paper, paperDto));
|
||||
for (ReferenceDto referenceDto : paperDto.getReferences().stream()
|
||||
.filter(f -> f.getDeleted() && f.getId() != null)
|
||||
.collect(toList())) {
|
||||
referenceRepository.deleteById(referenceDto.getId());
|
||||
if (paperDto.getReferences() != null) {
|
||||
for (ReferenceDto referenceDto : paperDto.getReferences().stream()
|
||||
.filter(f -> f.getDeleted() && f.getId() != null)
|
||||
.collect(toList())) {
|
||||
referenceRepository.deleteById(referenceDto.getId());
|
||||
}
|
||||
}
|
||||
eventService.updatePaperDeadlines(paper);
|
||||
|
||||
|
@ -56,8 +56,22 @@
|
||||
});
|
||||
}
|
||||
|
||||
function axiosPut(url, data, resolv, reject) {
|
||||
axios.put(url, JSON.stringify(data), axiosConfig)
|
||||
.then(function (result) {
|
||||
errorHandler(result, resolv, reject);
|
||||
})
|
||||
.catch(function (error) {
|
||||
setTimeout(function () {
|
||||
throw Error(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
get: axiosGet,
|
||||
post: axiosPost
|
||||
post: axiosPost,
|
||||
put: axiosPut
|
||||
};
|
||||
});
|
@ -9,8 +9,7 @@
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form name="paperform" id="paper-form" method="post"
|
||||
action="/papers/paper">
|
||||
<form @submit.prevent="savePaper">
|
||||
<div class="row">
|
||||
<div class="col-md-7 col-sm-12">
|
||||
<nav>
|
||||
@ -28,7 +27,8 @@
|
||||
aria-labelledby="nav-main-tab">
|
||||
<div class="form-group">
|
||||
<label for="title">Название:</label>
|
||||
<input class="form-control" id="title" type="text" :value="paper.title"
|
||||
<input class="form-control" id="title" type="text"
|
||||
:value="paper.title"
|
||||
placeholder="Название статьи"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -149,6 +149,15 @@
|
||||
if (date) {
|
||||
return moment(String(new Date(date))).format('DD.MM.YYYY hh:mm')
|
||||
}
|
||||
},
|
||||
savePaper: function (event) {
|
||||
if (this.$route.query.id && Number.isInteger(parseInt(this.$route.query.id)) && parseInt(this.$route.query.id) != 0) {
|
||||
axiosEx.put(appConfig.paper, this.paper);
|
||||
} else {
|
||||
axiosEx.post(appConfig.paper, this.paper);
|
||||
}
|
||||
this.$store.dispatch("addSuccessMessage", "Статья успешно сохранена!");
|
||||
event.preventDefault();
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user