feat(delivery): refine base service integrations
This commit is contained in:
@@ -223,7 +223,7 @@
|
||||
<p>凭证仅可领取一次,领取后服务端立即销毁明文。</p>
|
||||
<el-button type="warning" :loading="credentialRevealing" @click="revealDeliveryCredential(selectedDeliveryTask)">领取一次性凭证</el-button>
|
||||
</template>
|
||||
<p v-else-if="consumedCredentialTasks.has(selectedDeliveryTask.id)">该任务的一次性凭证已领取或不可用,平台不再提供明文密码。</p>
|
||||
<p v-else-if="['finished', 'register_failed'].includes(selectedDeliveryTask.status)">该任务的一次性凭证已领取或不可用,平台不再提供明文密码。</p>
|
||||
<p v-else>仅交付成功的任务提供一次性凭证。</p>
|
||||
</div>
|
||||
</template>
|
||||
@@ -266,7 +266,6 @@ const deliveryDetailVisible = ref(false)
|
||||
const selectedDeliveryTask = ref<DeliveryTask>()
|
||||
const revealedCredentials = ref<DeploymentCredential[]>([])
|
||||
const credentialRevealing = ref(false)
|
||||
const consumedCredentialTasks = ref<Set<string>>(new Set())
|
||||
|
||||
const containerServices = ref<ContainerWorkload[]>([])
|
||||
const containerSummary = ref<ContainerServiceSummary>({ ...emptyContainerServiceSummary })
|
||||
@@ -354,32 +353,40 @@ function deliveryTasksForService(serviceName: string) {
|
||||
}
|
||||
|
||||
function credentialEligible(task: DeliveryTask) {
|
||||
return ['finished', 'register_failed'].includes(task.status) && !consumedCredentialTasks.value.has(task.id)
|
||||
return ['finished', 'register_failed'].includes(task.status) && Boolean(task.credential_available)
|
||||
}
|
||||
|
||||
function credentialStatusText(task: DeliveryTask) {
|
||||
if (consumedCredentialTasks.value.has(task.id)) return '已领取'
|
||||
return credentialEligible(task) ? '可领取' : '不提供'
|
||||
if (credentialEligible(task)) return '可领取'
|
||||
if (['finished', 'register_failed'].includes(task.status)) return '已领取'
|
||||
return '不提供'
|
||||
}
|
||||
|
||||
function credentialStatusClass(task: DeliveryTask) {
|
||||
if (consumedCredentialTasks.value.has(task.id)) return 'tag-green'
|
||||
return credentialEligible(task) ? 'tag-amber' : ''
|
||||
}
|
||||
|
||||
function markCredentialUnavailable(taskID: string) {
|
||||
const task = deliveryRecords.value.find((item) => item.id === taskID)
|
||||
if (task) task.credential_available = false
|
||||
if (selectedDeliveryTask.value?.id === taskID) {
|
||||
selectedDeliveryTask.value.credential_available = false
|
||||
}
|
||||
}
|
||||
|
||||
async function revealDeliveryCredential(task: DeliveryTask) {
|
||||
credentialRevealing.value = true
|
||||
try {
|
||||
const items = await deliveryApi.revealCredentials(task.id)
|
||||
if (items.length === 0) {
|
||||
consumedCredentialTasks.value.add(task.id)
|
||||
markCredentialUnavailable(task.id)
|
||||
ElMessage.warning('该任务没有可领取的凭证')
|
||||
return
|
||||
}
|
||||
revealedCredentials.value = items
|
||||
consumedCredentialTasks.value.add(task.id)
|
||||
markCredentialUnavailable(task.id)
|
||||
} catch (error) {
|
||||
consumedCredentialTasks.value.add(task.id)
|
||||
markCredentialUnavailable(task.id)
|
||||
ElMessage.error(error instanceof Error ? error.message : '凭证领取失败')
|
||||
} finally {
|
||||
credentialRevealing.value = false
|
||||
|
||||
Reference in New Issue
Block a user