Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.55 KB | None | 0 0
  1. <template>
  2. <el-dialog title="Edycja fazy"
  3. :visible.sync="isVisible"
  4. width="25%"
  5. class="app-modal">
  6.  
  7. <div class="modal__content">
  8. <el-form ref="stageDto"
  9. :model="stageDto"
  10. label-width="120px">
  11.  
  12. <el-form-item label="Priority" prop="priority">
  13. <el-input-number v-model="stageDto.priority" controls-position="right"
  14. :min="1"
  15. :max="10">
  16.  
  17. </el-input-number>
  18. </el-form-item>
  19.  
  20. <el-form-item label="Probability" prop="probability">
  21. <el-input-number v-model="stageDto.probability"
  22. controls-position="right"
  23. :precision="1"
  24. :step="0.1"
  25. :min="0.0"
  26. :max="1.0">
  27.  
  28. </el-input-number>
  29. </el-form-item>
  30.  
  31. <el-form-item label="Description" prop="description">
  32. <el-input type="textarea" v-model="stageDto.description"></el-input>
  33. </el-form-item>
  34.  
  35. <el-form-item label="Employees">
  36. <el-popover v-for="(involvement,i) in stageDto.assignedInvolvements"
  37. :key="i"
  38. placement="top"
  39. width="300">
  40.  
  41. <div style="text-align: center; margin: 0">
  42. <p>Involvement</p>
  43. <el-slider v-model="involvement.involvement"></el-slider>
  44. </div>
  45. <div style="text-align: center; margin: 0">
  46. <p>Probability</p>
  47. <el-input-number v-model="involvement.probability"
  48. controls-position="left"
  49. :precision="1"
  50. :step="0.1"
  51. :min="0.0"
  52. :max="1.0">
  53.  
  54. </el-input-number>
  55. </div>
  56.  
  57. <div style="text-align: center; margin-top: 10px">
  58. <el-button type="danger"
  59. @click="deleteInvolvement(involvement)">
  60.  
  61. Delete this involvement
  62. </el-button>
  63. </div>
  64.  
  65. <el-button type="success"
  66. size="mini"
  67. round slot="reference">
  68. {{involvement.firstName + ' ' +
  69. involvement.lastName + ' || ' + involvement.probability + '/' +
  70. involvement.involvement +
  71. '%'}}
  72. </el-button>
  73. </el-popover>
  74. </el-form-item>
  75.  
  76. <el-form-item label="Add employees">
  77.  
  78. <el-select v-model="newInvolvements"
  79. multiple
  80. filterable
  81. placeholder="Type employees">
  82.  
  83. <el-option
  84. v-for="item in possibleEmployees"
  85. :key="item.code"
  86. :label="item.firstName + ' ' + item.lastName"
  87. :value="item.code">
  88. </el-option>
  89. </el-select>
  90. </el-form-item>
  91. <el-form-item label="Set changes to:">
  92. <el-select v-model="setChangesToMonth" filterable
  93. placeholder="Type month">
  94. <el-option
  95. v-for="item in changesEndingMonths"
  96. :key="item"
  97. :label="item"
  98. :value="item">
  99. </el-option>
  100. </el-select>
  101. </el-form-item>
  102. <el-form-item>
  103. <el-button type="info" @click="submitForm()">Submit</el-button>
  104. </el-form-item>
  105. </el-form>
  106. </div>
  107. </el-dialog>
  108. </template>
  109.  
  110. <script>
  111. import store from '@/store/store';
  112. import axios from 'axios';
  113. import moment from 'moment';
  114.  
  115. export default {
  116. name: 'AppModal',
  117. data() {
  118. return {
  119. newInvolvements: [],
  120. setChangesToMonth: ''
  121. }
  122. },
  123. methods: {
  124. deleteInvolvement(involvement) {
  125. for (var i = 0; i < this.stageDto.assignedInvolvements.length; i++) {
  126. if (this.stageDto.assignedInvolvements[i] === involvement) {
  127. this.stageDto.assignedInvolvements.splice(i, 1);
  128. }
  129. }
  130. },
  131. async submitForm() {
  132. for (var i = 0; i < this.newInvolvements.length; i++) {
  133. var promise = await axios.get(`/api/employees/${this.newInvolvements[i]}`)
  134. .then(response => {
  135. var involvementDto = {};
  136. involvementDto.involvement = 100;
  137. involvementDto.probability = 1;
  138. involvementDto.firstName = response.data.firstName;
  139. involvementDto.lastName = response.data.lastName;
  140. involvementDto.employeeCode = response.data.code;
  141. this.stageDto.assignedInvolvements.push(involvementDto);
  142. });
  143. }
  144. axios.post(`/api/stages/edit`, store.state.Modal.stageDto);
  145. store.commit('toggleModal');
  146. const phases = await store.dispatch('getProjectPhases', store.state.Modal.projectCode);
  147. store.commit('updatePhases', {
  148. phasesArr: phases,
  149. projectCode: store.state.Modal.projectCode
  150. });
  151.  
  152. var startEditDate = moment(this.stageDto.startDate).add(1, 'day');
  153. var endEditDate = moment(this.stageDto.startDate).set('month', this.setChangesToMonth).add(1, 'month').subtract(1, 'day');
  154. let editedStage = {};
  155. while (startEditDate.isBefore(endEditDate)) {
  156. var p2 = await axios.get(`/api/stages/one/${this.projectCode}?endingAfter=${startEditDate.format('YYYY-MM-DD')}`)
  157. .then(response => {
  158. Object.assign(editedStage, response.data);
  159. for (var i = 0; i < this.stageDto.assignedInvolvements.length; i++) {
  160. console.log('sraka');
  161. if (this.stageDto.assignedInvolvements[i].code === undefined) {
  162. editedStage.assignedInvolvements.push(this.stageDto.assignedInvolvements[i]);
  163. console.log('pedau');
  164. editedStage.assignedInvolvements[i].done = true;
  165. } else {
  166. for (var j = 0; j < editedStage.assignedInvolvements.length; j++) {
  167. if (editedStage.assignedInvolvements[j].firstName === this.stageDto.assignedInvolvements[i].firstName &&
  168. editedStage.assignedInvolvements[j].lastName === this.stageDto.assignedInvolvements[i].lastName) {
  169. console.log('pedau');
  170. editedStage.assignedInvolvements[j].involvement =
  171. this.stageDto.assignedInvolvements[i].involvement;
  172. editedStage.assignedInvolvements[j].probability =
  173. this.stageDto.assignedInvolvements[i].probability;
  174. editedStage.assignedInvolvements[j].employeeCode =
  175. this.stageDto.assignedInvolvements[i].employeeCode;
  176. editedStage.assignedInvolvements[j].done = true;
  177. }
  178. }
  179. }
  180. }
  181. for (var k = 0; k < editedStage.assignedInvolvements.length; k++) {
  182. if (editedStage.assignedInvolvements[k].done === undefined) {
  183. editedStage.assignedInvolvements.splice(k, 1);
  184. }
  185. }
  186. console.log(editedStage.assignedInvolvements);
  187. editedStage.priority = this.stageDto.priority;
  188. editedStage.probability = this.stageDto.probability;
  189. axios.post(`/api/stages/edit`, editedStage);
  190. });
  191. startEditDate.add(1, 'month');
  192. }
  193. this.setChangesToMonth = '';
  194.  
  195. }
  196. },
  197. computed: {
  198. isVisible: {
  199. get: () => store.state.Modal.isVisible,
  200. set: () => store.commit('toggleModal')
  201. },
  202. stageDto: () => store.state.Modal.stageDto,
  203. possibleEmployees: () => store.state.Employees.possibleEmployees,
  204. projectCode: () => store.state.Modal.projectCode,
  205. possibleEmployees: () => store.state.Employees.possibleEmployees,
  206. changesEndingMonths: () => store.state.Modal.monthsForward
  207. }
  208.  
  209. }
  210. </script>
  211.  
  212. <style scoped lang="scss">
  213. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement