Browse Source

fixed #160

ali 3 năm trước cách đây
mục cha
commit
4d9c3d0093

+ 1 - 0
src/api/models/Project.js

@@ -9,6 +9,7 @@ export default class ProjectAPI extends APIRepository {
       base: '/lma/projects',
       attendanceSheetsList: '/lma/projects/attendance_sheets',
       byId: (id) => '/lma/projects/' + id,
+      projectAndCurrentUserAttendanceSheet: (id) => '/lma/projects/' + id + '/project_and_current_user_attendance_sheet',
       attendanceSheets: (id) => '/lma/projects/' + id + '/attendance_sheets'
     }
     this.CacheList = {

+ 4 - 0
src/models/Project.js

@@ -11,6 +11,10 @@ class Project extends Model {
       { key: 'type' },
       { key: 'beginning_doing_period' },
       { key: 'ending_doing_period' },
+      {
+        key: 'project_attendance_sheets',
+        default: []
+      },
       { key: 'classroom' },
       {
         key: 'classroom_info',

+ 4 - 0
src/models/ProjectAttendanceSheets.js

@@ -12,6 +12,10 @@ class ProjectAttendanceSheets extends Model {
       { key: 'answer_attachment' },
       { key: 'creation_time' },
       { key: 'last_modification_time' },
+      {
+        key: 'project_attendance_sheets',
+        default: []
+      },
       { key: 'owner' },
       {
         key: 'owner_info',

+ 28 - 2
src/pages/User/Profile/projectInfo.vue

@@ -22,10 +22,20 @@
                :after-load-input-data="afterLoadProject">
     <template #after-form-builder>
       <q-separator class="q-my-lg" />
-      <entity-create ref="entityCreate"
+      <entity-create v-if="(!currentUserAttendanceSheet || currentUserAttendanceSheet.answer_status === 'NOT_SENT')"
+                     ref="entityCreate"
                      v-model:value="attendanceSheetsInputs"
                      :api="attendanceSheetsApi"
                      :default-layout="false" />
+      <entity-show v-if="currentUserAttendanceSheet && currentUserAttendanceSheet.answer_status !== 'NOT_SENT'"
+                   v-model:value="attendanceSheetsShowInputs"
+                   title="پاسخ کاربر"
+                   :loaded-data="currentUserAttendanceSheet"
+                   :default-layout="false"
+                   :show-expand-button="false"
+                   :show-edit-button="false"
+                   :show-index-button="false"
+                   :show-reload-button="false" />
     </template>
   </entity-show>
 </template>
@@ -40,6 +50,7 @@ import BtnControl from 'src/components/Control/btn.vue'
 import Breadcrumbs from 'src/components/Widgets/Breadcrumbs/Breadcrumbs.vue'
 import ContentsSelector from 'src/components/FormBuilderCustumComponents/ContentsSelector/ContentsSelector.vue'
 import { FormBuilderAssist } from 'quasar-form-builder'
+import { ProjectAttendanceSheets } from 'src/models/ProjectAttendanceSheets'
 
 const BtnControlComp = shallowRef(BtnControl)
 const ContentsSelectorComp = shallowRef(ContentsSelector)
@@ -58,8 +69,9 @@ export default {
       projectLoaded: false,
       classroomLoaded: false,
       project: new Project(),
+      projectAttendanceSheets: new ProjectAttendanceSheets(),
       classroom: new Classroom(),
-      api: APIGateway.project.APIAdresses.byId(projectId),
+      api: APIGateway.project.APIAdresses.projectAndCurrentUserAttendanceSheet(projectId),
       inputs: [
         { type: 'input', name: 'title', responseKey: 'title', label: 'عنوان پروژه', placeholder: ' ', col: 'col-md-6 col-12' },
         {
@@ -87,10 +99,23 @@ export default {
         { type: 'file', name: 'answer_attachment', label: 'فای ضمیمه', placeholder: ' ', col: 'col-md-4 col-12' },
         { type: BtnControlComp, name: 'btn', responseKey: 'btn', label: 'ارسال پروژه', placeholder: ' ', atClick: () => {}, col: 'col-12' },
         { type: 'hidden', name: 'project', value: projectId }
+      ],
+
+      attendanceSheetsShowInputs: [
+        { type: 'separator', name: 'space', label: 'انجام پروژه', className: 'custom-separator', col: 'col-12' },
+        { type: 'inputEditor', name: 'answer_text', label: 'متن پاسخ', placeholder: ' ', col: 'col-12' },
+        { type: 'file', name: 'answer_attachment', label: 'فای ضمیمه', placeholder: ' ', col: 'col-md-4 col-12' }
       ]
     }
   },
   computed: {
+    currentUserAttendanceSheet () {
+      if (!this.projectAttendanceSheets?.project_attendance_sheets || this.projectAttendanceSheets.project_attendance_sheets.length === 0) {
+        return null
+      }
+
+      return this.projectAttendanceSheets.project_attendance_sheets[0]
+    },
     projectAndClassroomLoaded () {
       return this.projectLoaded && this.classroomLoaded
     }
@@ -150,6 +175,7 @@ export default {
     },
     afterLoadProject (data) {
       this.project = new Project(data)
+      this.projectAttendanceSheets = new ProjectAttendanceSheets(data)
       this.projectLoaded = true
     },
     reloadProject () {