add WorksapceApi.fetchAttachedFileAsMediaData

This commit is contained in:
Zhigang Wang 2024-06-09 14:38:29 -07:00
parent 38291b3087
commit 385631ee06
2 changed files with 54 additions and 96 deletions

View File

@ -1,43 +1,22 @@
<template> <template>
<div class="request-hub"> <div class="request-hub">
<div <div v-for="(group, index) in requestGroups" :key="index" class="request-invitations" :id="group.name">
v-for="(group, index) in requestGroups"
:key="index"
class="request-invitations"
:id="group.name"
>
<div v-if="group.data" class="accordion" id="request-invitation-container"> <div v-if="group.data" class="accordion" id="request-invitation-container">
<div <div v-for="(request, index) in group.data" :key="index" :id="request.id" class="accordion-item my-3">
v-for="(request, index) in group.data"
:key="index"
:id="request.id"
class="accordion-item my-3"
>
<h2 class="accordion-header"> <h2 class="accordion-header">
<button <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
class="accordion-button collapsed" :data-bs-target="'#collapse' + index" aria-expanded="false" :aria-controls="'collapse' + index">
type="button"
data-bs-toggle="collapse"
:data-bs-target="'#collapse' + index"
aria-expanded="false"
:aria-controls="'collapse' + index"
>
<div class="request-content-container"> <div class="request-content-container">
<div class="request-content-issuer-container"> <div class="request-content-issuer-container">
<label class="request-content-label" for="request-content-issuer-box" <label class="request-content-label" for="request-content-issuer-box">Issuer</label>
>Issuer</label
>
<div class="request-content-box" id="request-content-issuer-box"> <div class="request-content-box" id="request-content-issuer-box">
<span class="request-content-issuer-text"> <span class="request-content-issuer-text">
{{ request.issuer_profile.first_name }} {{ request.issuer_profile.first_name }}
{{ request.issuer_profile.last_name }}</span {{ request.issuer_profile.last_name }}</span>
>
</div> </div>
</div> </div>
<div class="request-content-title-container"> <div class="request-content-title-container">
<label class="request-content-label" for="request-content-title-box" <label class="request-content-label" for="request-content-title-box">Request</label>
>Request</label
>
<div class="request-content-box" id="request-content-title-box"> <div class="request-content-box" id="request-content-title-box">
<span class="request-content-title-text"> {{ request.title }}</span> <span class="request-content-title-text"> {{ request.title }}</span>
</div> </div>
@ -61,102 +40,59 @@
</div> </div>
</button> </button>
</h2> </h2>
<div <div :id="'collapse' + index" class="accordion-collapse collapse"
:id="'collapse' + index" data-bs-parent="#request-invitation-container">
class="accordion-collapse collapse"
data-bs-parent="#request-invitation-container"
>
<div class="accordion-body"> <div class="accordion-body">
<div class="request-description-container"> <div class="request-description-container">
<button class="make-proposal-button" type="button" @click="Propose(request)"> <button class="make-proposal-button" type="button" @click="Propose(request)">
Propose Propose
</button> </button>
<div class="request-description-content" v-html="request.content"></div> <div class="request-description-content" v-html="request.content"></div>
<div v-for="(document_id, index) in request.document_ids" :key="document_id"> <div v-for="(file, index) in request.attached_files" :key="index">
<a :href="getDocumentDownloadLink(document_id)" download>file-{{ index }}</a> <button @click="previewAttachedFile(request.id, file.document_id)">{{ file.file_name }}</button>
</div> </div>
</div> </div>
<div class="issuer-profile-container"> <div class="issuer-profile-container">
<label class="issuer-profile-label" for="issuer-achievement-container" <label class="issuer-profile-label" for="issuer-achievement-container">Issuer profile</label>
>Issuer profile</label
>
<div class="issuer-achievement-container" id="issuer-achievement-container"> <div class="issuer-achievement-container" id="issuer-achievement-container">
<div class="issuer-achievement-isssuer-container"> <div class="issuer-achievement-isssuer-container">
<label <label class="issuer-achievement-label" for="issuer-achievement-isssuer-content-div">Name</label>
class="issuer-achievement-label" <div class="issuer-achievement-content-container" id="issuer-achievement-isssuer-content-div">
for="issuer-achievement-isssuer-content-div"
>Name</label
>
<div
class="issuer-achievement-content-container"
id="issuer-achievement-isssuer-content-div"
>
<span class="issuer-achievement-issuer-text"> <span class="issuer-achievement-issuer-text">
{{ request.issuer_profile.first_name }} {{ request.issuer_profile.first_name }}
{{ request.issuer_profile.last_name }}</span {{ request.issuer_profile.last_name }}</span>
>
</div> </div>
</div> </div>
<div class="issuer-achievement-stay-container"> <div class="issuer-achievement-stay-container">
<label <label class="issuer-achievement-label" for="issuer-achievement-stay-content-div">Stay on
class="issuer-achievement-label" Freeleaps</label>
for="issuer-achievement-stay-content-div" <div class="issuer-achievement-content-container" id="issuer-achievement-stay-content-div">
>Stay on Freeleaps</label
>
<div
class="issuer-achievement-content-container"
id="issuer-achievement-stay-content-div"
>
<span class="issuer-achievement-stay-content-text"> <span class="issuer-achievement-stay-content-text">
{{ request.issuer_achievement.activeness.days_of_staying_on }} day(s)</span {{ request.issuer_achievement.activeness.days_of_staying_on }} day(s)</span>
>
</div> </div>
</div> </div>
<div class="issuer-achievement-paid-container"> <div class="issuer-achievement-paid-container">
<label <label class="issuer-achievement-label" for="issuer-achievement-paid-content-div">Total
class="issuer-achievement-label" payment</label>
for="issuer-achievement-paid-content-div" <div class="issuer-achievement-content-container" id="issuer-achievement-stay-content-div">
>Total payment</label
>
<div
class="issuer-achievement-content-container"
id="issuer-achievement-stay-content-div"
>
<span class="issuer-achievement-paid-content-text"> <span class="issuer-achievement-paid-content-text">
{{ request.issuer_achievement.issuer.spending.total }} {{ request.issuer_achievement.issuer.spending.total }}
{{ request.issuer_achievement.issuer.spending.currency }}</span {{ request.issuer_achievement.issuer.spending.currency }}</span>
>
</div> </div>
</div> </div>
<div class="issuer-achievement-deposit-container"> <div class="issuer-achievement-deposit-container">
<label <label class="issuer-achievement-label" for="issuer-achievement-deposit-content-div">Deposit</label>
class="issuer-achievement-label" <div class="issuer-achievement-content-container" id="issuer-achievement-deposit-content-div">
for="issuer-achievement-deposit-content-div"
>Deposit</label
>
<div
class="issuer-achievement-content-container"
id="issuer-achievement-deposit-content-div"
>
<span class="issuer-achievement-deposit-content-text"> <span class="issuer-achievement-deposit-content-text">
{{ request.issuer_achievement.issuer.deposit.available }} {{ request.issuer_achievement.issuer.deposit.available }}
{{ request.issuer_achievement.issuer.deposit.currency }}</span {{ request.issuer_achievement.issuer.deposit.currency }}</span>
>
</div> </div>
</div> </div>
<div class="issuer-achievement-credit-container"> <div class="issuer-achievement-credit-container">
<label <label class="issuer-achievement-label" for="issuer-achievement-credit-content-div">Credit</label>
class="issuer-achievement-label" <div class="issuer-achievement-content-container" id="issuer-achievement-credit-content-div">
for="issuer-achievement-credit-content-div"
>Credit</label
>
<div
class="issuer-achievement-content-container"
id="issuer-achievement-credit-content-div"
>
<span class="issuer-achievement-credit-content-text"> <span class="issuer-achievement-credit-content-text">
{{ request.issuer_achievement.activeness.credit }}</span {{ request.issuer_achievement.activeness.credit }}</span>
>
</div> </div>
</div> </div>
</div> </div>
@ -170,7 +106,7 @@
</template> </template>
<script> <script>
import { RequestHubApi, DateUtils, requestHubUtils } from '../../../utils/index' import { RequestHubApi, WorksapceApi, DateUtils, requestHubUtils } from '../../../utils/index'
import { proposingModelEnum } from '../../../types/index' import { proposingModelEnum } from '../../../types/index'
export default { export default {
name: 'RequestHub', name: 'RequestHub',
@ -202,8 +138,15 @@ export default {
getDateFromFulltimeString(fulltime) { getDateFromFulltimeString(fulltime) {
return DateUtils.FromJsonToDateString(fulltime) return DateUtils.FromJsonToDateString(fulltime)
}, },
getDocumentDownloadLink(document_id) { previewAttachedFile(request_id, document_id) {
return '/api/v1/document/download/' + document_id WorksapceApi.fetchAttachedFileAsMediaData(request_id, document_id).then(response => {
let media_data = response.data
console.log(media_data)
//TODO: navigate to the preview page
}).catch((error) => {
this.mnx_backendErrorHandler(error)
}
)
} }
} }
} }

View File

@ -319,6 +319,21 @@ class WorksapceApi {
}) })
return request return request
} }
static fetchAttachedFileAsMediaData(request_id, document_id) {
let jwt = userUtils.getJwtToken()
const request = backendAxios.post(
'/api/workspace/request/fetch-attached-file-as-media-data',
{
request_id: request_id,
document_id: document_id
},
{
headers: { Authorization: `Bearer ${jwt}` }
}
)
return request
}
} }
export { WorksapceApi } export { WorksapceApi }