mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Merge branch '139_demandeur' of gitlab.com:Chill-Projet/chill-bundles into 139_demandeur
This commit is contained in:
commit
016baf1ac9
@ -13,9 +13,9 @@
|
|||||||
div#header-accompanying_course-name {
|
div#header-accompanying_course-name {
|
||||||
background: none repeat scroll 0 0 #718596;
|
background: none repeat scroll 0 0 #718596;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
padding-top: 1em;
|
h1 {
|
||||||
padding-bottom: 1em;
|
margin: 0.4em 0;
|
||||||
|
}
|
||||||
span {
|
span {
|
||||||
a {
|
a {
|
||||||
color: white;
|
color: white;
|
||||||
@ -54,3 +54,10 @@ div.subheader {
|
|||||||
color: grey;
|
color: grey;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
ul.record_actions {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -32,18 +32,19 @@ export default {
|
|||||||
PersonsAssociated,
|
PersonsAssociated,
|
||||||
Requestor,
|
Requestor,
|
||||||
SocialIssue,
|
SocialIssue,
|
||||||
Referrer,
|
//Referrer, //fait foirer socialissues
|
||||||
Resources,
|
Resources,
|
||||||
Comment,
|
Comment,
|
||||||
Confirm,
|
Confirm,
|
||||||
},
|
},
|
||||||
computed: mapState([
|
computed: mapState([
|
||||||
'accompanyingCourse'
|
'accompanyingCourse', 'socialIssueOptions'
|
||||||
])
|
])
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
div#accompanying-course {
|
||||||
h1 {
|
h1 {
|
||||||
margin: 1.5em 0;
|
margin: 1.5em 0;
|
||||||
}
|
}
|
||||||
@ -53,10 +54,16 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
&:before {
|
&:before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: "\f192";
|
/*
|
||||||
|
content: "\f192"; //circle-dot
|
||||||
|
content: "\f1dd"; //paragraph
|
||||||
|
content: "\f292"; //hashtag
|
||||||
|
content: "\f069"; //asterisk
|
||||||
|
*/
|
||||||
|
content: "\f142"; //ellipsis-v
|
||||||
font-family: "ForkAwesome";
|
font-family: "ForkAwesome";
|
||||||
color: #718596ab;
|
color: #718596ab;
|
||||||
left: -28px;
|
left: -22px;
|
||||||
top: 4px;
|
top: 4px;
|
||||||
}
|
}
|
||||||
a[name^="section"] {
|
a[name^="section"] {
|
||||||
@ -91,4 +98,5 @@ export default {
|
|||||||
table {
|
table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -146,6 +146,25 @@ const postResource = (id, payload, method) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Endpoint to Add/remove SocialIssue
|
||||||
|
*/
|
||||||
|
const postSocialIssue = (id, body, method) => {
|
||||||
|
//console.log('api body and method', body, method);
|
||||||
|
const url = `/api/1.0/person/accompanying-course/${id}/socialissue.json`;
|
||||||
|
return fetch(url, {
|
||||||
|
method: method,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json;charset=utf-8'
|
||||||
|
},
|
||||||
|
body: JSON.stringify(body)
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
if (response.ok) { return response.json(); }
|
||||||
|
throw Error('Error with request resource response');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getAccompanyingCourse,
|
getAccompanyingCourse,
|
||||||
patchAccompanyingCourse,
|
patchAccompanyingCourse,
|
||||||
@ -154,4 +173,5 @@ export {
|
|||||||
postParticipation,
|
postParticipation,
|
||||||
postRequestor,
|
postRequestor,
|
||||||
postResource,
|
postResource,
|
||||||
|
postSocialIssue
|
||||||
};
|
};
|
||||||
|
@ -20,9 +20,11 @@
|
|||||||
|
|
||||||
<teleport to="#header-accompanying_course-name #banner-status">
|
<teleport to="#header-accompanying_course-name #banner-status">
|
||||||
<div v-if="accompanyingCourse.step === 'DRAFT'">
|
<div v-if="accompanyingCourse.step === 'DRAFT'">
|
||||||
|
<a href="#bottom">
|
||||||
<span class="badge badge-secondary">
|
<span class="badge badge-secondary">
|
||||||
{{ $t('course.step.draft') }}
|
{{ $t('course.step.draft') }}
|
||||||
</span>
|
</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<div>
|
<div>
|
||||||
@ -43,20 +45,26 @@
|
|||||||
</teleport>
|
</teleport>
|
||||||
|
|
||||||
<teleport to="#header-accompanying_course-details #banner-social-issues">
|
<teleport to="#header-accompanying_course-details #banner-social-issues">
|
||||||
<div class="grid-4">{{ $t('social_issue.title') }}</div>
|
<div class="grid-12">
|
||||||
<div class="grid-4">_</div>
|
<social-issues
|
||||||
<div class="grid-4">_</div>
|
v-for="issue in accompanyingCourse.socialIssues"
|
||||||
|
v-bind:key="issue.id"
|
||||||
|
v-bind:issue="issue">
|
||||||
|
</social-issues>
|
||||||
|
</div>
|
||||||
</teleport>
|
</teleport>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ToggleFlags from './ToggleFlags';
|
import ToggleFlags from './Banner/ToggleFlags';
|
||||||
|
import SocialIssues from './Banner/SocialIssues.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Banner',
|
name: 'Banner',
|
||||||
components: {
|
components: {
|
||||||
ToggleFlags
|
ToggleFlags,
|
||||||
|
SocialIssues
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
accompanyingCourse() {
|
accompanyingCourse() {
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<span class="badge badge-secondary">{{ issue.text }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "SocialIssues",
|
||||||
|
props: ['issue']
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
span.badge {
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
</style>
|
@ -8,17 +8,17 @@
|
|||||||
</div-->
|
</div-->
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
<form @submit.prevent="submitform">
|
||||||
|
|
||||||
|
<label for="content">{{ $t('comment.label') }}</label>
|
||||||
|
|
||||||
<div v-if="initialComment">
|
<div v-if="initialComment">
|
||||||
créé par {{ initialComment.creator.text }}
|
{{ $t('comment.created_by', [
|
||||||
le {{ $d(initialComment.createdAt.datetime, 'long') }}
|
initialComment.creator.text,
|
||||||
<div v-if="initialComment.updatedAt.datetime !== initialComment.createdAt.datetime">
|
$d(initialComment.createdAt.datetime, 'long')
|
||||||
modifié par {{ initialComment.updatedBy.text }}
|
]) }}
|
||||||
le {{ $d(initialComment.updatedAt.datetime, 'long') }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form @submit.prevent="submitform">
|
|
||||||
<label for="content">{{ $t('comment.label') }}</label>
|
|
||||||
<textarea
|
<textarea
|
||||||
name="content"
|
name="content"
|
||||||
v-bind:placeholder="$t('comment.content')"
|
v-bind:placeholder="$t('comment.content')"
|
||||||
@ -27,6 +27,7 @@
|
|||||||
ckeditor="ckeditor"
|
ckeditor="ckeditor"
|
||||||
v-model="content">
|
v-model="content">
|
||||||
</textarea>
|
</textarea>
|
||||||
|
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
<li>
|
||||||
<button type="submit" class="sc-button bt-save">{{ $t('action.save') }}</button>
|
<button type="submit" class="sc-button bt-save">{{ $t('action.save') }}</button>
|
||||||
@ -38,6 +39,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex';
|
import { mapState } from 'vuex';
|
||||||
import PersonItem from "./PersonItem.vue"
|
import PersonItem from "./PersonsAssociated/PersonItem.vue"
|
||||||
import AddPersons from 'ChillPersonAssets/vuejs/_components/AddPersons.vue'
|
import AddPersons from 'ChillPersonAssets/vuejs/_components/AddPersons.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -54,6 +54,9 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<label>{{ $t('requestor.counter') }}</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<add-persons v-if="accompanyingCourse.requestor === null"
|
<add-persons v-if="accompanyingCourse.requestor === null"
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex';
|
import { mapState } from 'vuex';
|
||||||
import AddPersons from 'ChillPersonAssets/vuejs/_components/AddPersons.vue';
|
import AddPersons from 'ChillPersonAssets/vuejs/_components/AddPersons.vue';
|
||||||
import ResourceItem from './ResourceItem.vue';
|
import ResourceItem from './Resources/ResourceItem.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Resources',
|
name: 'Resources',
|
||||||
|
@ -3,18 +3,20 @@
|
|||||||
<h2><a name="section-30"></a>{{ $t('social_issue.title') }}</h2>
|
<h2><a name="section-30"></a>{{ $t('social_issue.title') }}</h2>
|
||||||
|
|
||||||
<div class="my-4">
|
<div class="my-4">
|
||||||
<!--label for="selectIssues">{{ $t('social_issue.label') }}</label-->
|
<!--label for="field">{{ $t('social_issue.label') }}</label
|
||||||
|
-->
|
||||||
<VueMultiselect
|
<VueMultiselect
|
||||||
name="selectIssues"
|
name="field"
|
||||||
v-model="selected"
|
|
||||||
track-by="id"
|
|
||||||
label="text"
|
|
||||||
:placeholder="$t('social_issue.label')"
|
|
||||||
:multiple="true"
|
|
||||||
:searchable="true"
|
|
||||||
:close-on-select="false"
|
:close-on-select="false"
|
||||||
:allow-empty="true"
|
:allow-empty="true"
|
||||||
:show-labels="false"
|
:show-labels="false"
|
||||||
|
track-by="id"
|
||||||
|
label="text"
|
||||||
|
:multiple="true"
|
||||||
|
:searchable="false"
|
||||||
|
:placeholder="$t('social_issue.label')"
|
||||||
|
@update:model-value="updateSocialIssues"
|
||||||
|
:model-value="value"
|
||||||
:options="options">
|
:options="options">
|
||||||
</VueMultiselect>
|
</VueMultiselect>
|
||||||
</div>
|
</div>
|
||||||
@ -23,38 +25,56 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import VueMultiselect from 'vue-multiselect'
|
import VueMultiselect from 'vue-multiselect';
|
||||||
import { getSocialIssues } from '../api'
|
import { getSocialIssues } from '../api';
|
||||||
|
import { mapState } from 'vuex';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "SocialIssue",
|
name: "SocialIssue",
|
||||||
components: { VueMultiselect },
|
components: { VueMultiselect },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selected: null,
|
|
||||||
options: []
|
options: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapState({
|
||||||
|
value: state => state.accompanyingCourse.socialIssues,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getOptions();
|
this.getOptions();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getOptions() {
|
getOptions() {
|
||||||
getSocialIssues().then(socialIssues => new Promise((resolve, reject) => {
|
getSocialIssues().then(elements => new Promise((resolve, reject) => {
|
||||||
console.log('socialIssues', socialIssues);
|
console.log('get socialIssues', elements.results);
|
||||||
this.options = socialIssues.results;
|
this.options = elements.results;
|
||||||
resolve();
|
resolve();
|
||||||
})).catch(error => this.$store.commit('catchError', error));
|
})).catch(error => this.$store.commit('catchError', error));
|
||||||
},
|
},
|
||||||
|
updateSocialIssues(value) {
|
||||||
|
this.$store.dispatch('updateSocialIssues', this.transformValue(value));
|
||||||
|
},
|
||||||
|
transformValue(updated) {
|
||||||
|
let stored = this.value;
|
||||||
|
let added = updated.filter(x => stored.indexOf(x) === -1).shift();
|
||||||
|
let removed = stored.filter(x => updated.indexOf(x) === -1).shift();
|
||||||
|
let method = (typeof removed === 'undefined') ? 'POST' : 'DELETE';
|
||||||
|
let changed = (typeof removed === 'undefined') ? added : removed;
|
||||||
|
let body = { type: "social_issue", id: changed.id };
|
||||||
|
//console.log('body', body);
|
||||||
|
console.log('@@@ CHANGED', method, changed.text);
|
||||||
|
let payload = updated;
|
||||||
|
return { payload, body, method };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style src="vue-multiselect/dist/vue-multiselect.css"></style>
|
<style src="vue-multiselect/dist/vue-multiselect.css"></style>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss">
|
||||||
div.vue-component > div {
|
span.multiselect__tag {
|
||||||
//margin: 3em;
|
background: #e2793d;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -39,6 +39,7 @@ const appMessages = {
|
|||||||
title: "Demandeur",
|
title: "Demandeur",
|
||||||
add_requestor: "Ajouter un demandeur",
|
add_requestor: "Ajouter un demandeur",
|
||||||
is_anonymous: "Le demandeur est anonyme",
|
is_anonymous: "Le demandeur est anonyme",
|
||||||
|
counter: "Il n'y a pas encore de demandeur",
|
||||||
type: "Type",
|
type: "Type",
|
||||||
person_id: "id",
|
person_id: "id",
|
||||||
text: "Dénomination",
|
text: "Dénomination",
|
||||||
@ -57,7 +58,10 @@ const appMessages = {
|
|||||||
label: "Choisir les problématiques sociales",
|
label: "Choisir les problématiques sociales",
|
||||||
},
|
},
|
||||||
referrer: {
|
referrer: {
|
||||||
title: "Référent",
|
title: "Référent du parcours",
|
||||||
|
label: "Vous pouvez choisir un TMS ou vous assigner directement comme référent",
|
||||||
|
assign_me: "M'assigner comme référent",
|
||||||
|
placeholder: "Choisir un TMS",
|
||||||
},
|
},
|
||||||
resources: {
|
resources: {
|
||||||
title: "Interlocuteurs privilégiés",
|
title: "Interlocuteurs privilégiés",
|
||||||
@ -69,7 +73,8 @@ const appMessages = {
|
|||||||
comment: {
|
comment: {
|
||||||
title: "Observations",
|
title: "Observations",
|
||||||
label: "Ajout d'une note",
|
label: "Ajout d'une note",
|
||||||
content: "Rédigez une première note..."
|
content: "Rédigez une première note...",
|
||||||
|
created_by: "créé par {0}, le {1}"
|
||||||
},
|
},
|
||||||
confirm: {
|
confirm: {
|
||||||
title: "Confirmation",
|
title: "Confirmation",
|
||||||
|
@ -5,7 +5,8 @@ import { getAccompanyingCourse,
|
|||||||
confirmAccompanyingCourse,
|
confirmAccompanyingCourse,
|
||||||
postParticipation,
|
postParticipation,
|
||||||
postRequestor,
|
postRequestor,
|
||||||
postResource } from '../api';
|
postResource,
|
||||||
|
postSocialIssue } from '../api';
|
||||||
|
|
||||||
const debug = process.env.NODE_ENV !== 'production';
|
const debug = process.env.NODE_ENV !== 'production';
|
||||||
const id = window.accompanyingCourseId;
|
const id = window.accompanyingCourseId;
|
||||||
@ -74,9 +75,12 @@ let initPromise = getAccompanyingCourse(id)
|
|||||||
state.accompanyingCourse.confidential = value;
|
state.accompanyingCourse.confidential = value;
|
||||||
},
|
},
|
||||||
postFirstComment(state, comment) {
|
postFirstComment(state, comment) {
|
||||||
console.log('### mutation: postFirstComment', comment);
|
//console.log('### mutation: postFirstComment', comment);
|
||||||
state.accompanyingCourse.initialComment = comment;
|
state.accompanyingCourse.initialComment = comment;
|
||||||
},
|
},
|
||||||
|
updateSocialIssues(state, value) {
|
||||||
|
state.accompanyingCourse.socialIssues = value;
|
||||||
|
},
|
||||||
confirmAccompanyingCourse(state, response) {
|
confirmAccompanyingCourse(state, response) {
|
||||||
//console.log('### mutation: confirmAccompanyingCourse: response', response);
|
//console.log('### mutation: confirmAccompanyingCourse: response', response);
|
||||||
state.accompanyingCourse.step = response.step;
|
state.accompanyingCourse.step = response.step;
|
||||||
@ -145,7 +149,7 @@ let initPromise = getAccompanyingCourse(id)
|
|||||||
})).catch((error) => { commit('catchError', error) });
|
})).catch((error) => { commit('catchError', error) });
|
||||||
},
|
},
|
||||||
toggleIntensity({ commit }, payload) {
|
toggleIntensity({ commit }, payload) {
|
||||||
console.log(payload);
|
//console.log(payload);
|
||||||
patchAccompanyingCourse(id, { type: "accompanying_period", intensity: payload })
|
patchAccompanyingCourse(id, { type: "accompanying_period", intensity: payload })
|
||||||
.then(course => new Promise((resolve, reject) => {
|
.then(course => new Promise((resolve, reject) => {
|
||||||
commit('toggleIntensity', course.intensity);
|
commit('toggleIntensity', course.intensity);
|
||||||
@ -167,16 +171,24 @@ let initPromise = getAccompanyingCourse(id)
|
|||||||
})).catch((error) => { commit('catchError', error) });
|
})).catch((error) => { commit('catchError', error) });
|
||||||
},
|
},
|
||||||
postFirstComment({ commit }, payload) {
|
postFirstComment({ commit }, payload) {
|
||||||
console.log('## action: postFirstComment: payload', payload);
|
//console.log('## action: postFirstComment: payload', payload);
|
||||||
patchAccompanyingCourse(id, { type: "accompanying_period", initialComment: payload })
|
patchAccompanyingCourse(id, { type: "accompanying_period", initialComment: payload })
|
||||||
.then(course => new Promise((resolve, reject) => {
|
.then(course => new Promise((resolve, reject) => {
|
||||||
commit('postFirstComment', course.initialComment);
|
commit('postFirstComment', course.initialComment);
|
||||||
resolve();
|
resolve();
|
||||||
})).catch((error) => { commit('catchError', error) });
|
})).catch((error) => { commit('catchError', error) });
|
||||||
},
|
},
|
||||||
|
updateSocialIssues({ commit }, { payload, body, method }) {
|
||||||
|
//console.log('## action: payload', { payload, body, method });
|
||||||
|
postSocialIssue(id, body, method)
|
||||||
|
.then(response => new Promise((resolve, reject) => {
|
||||||
|
console.log('response', response);
|
||||||
|
commit('updateSocialIssues', payload);
|
||||||
|
resolve();
|
||||||
|
})).catch((error) => { commit('catchError', error) });
|
||||||
|
},
|
||||||
confirmAccompanyingCourse({ commit }) {
|
confirmAccompanyingCourse({ commit }) {
|
||||||
console.log('## action: confirmAccompanyingCourse');
|
//console.log('## action: confirmAccompanyingCourse');
|
||||||
confirmAccompanyingCourse(id)
|
confirmAccompanyingCourse(id)
|
||||||
.then(response => new Promise((resolve, reject) => {
|
.then(response => new Promise((resolve, reject) => {
|
||||||
commit('confirmAccompanyingCourse', response);
|
commit('confirmAccompanyingCourse', response);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user