|
@@ -8,7 +8,6 @@ const { t } = useI18n();
|
|
|
const mainStore = useMainStore();
|
|
|
const mainStoreRef = storeToRefs(mainStore);
|
|
|
const videos = mainStoreRef.readVideos;
|
|
|
-console.log('videos',videos);
|
|
|
|
|
|
const headers = [
|
|
|
{
|
|
@@ -24,11 +23,15 @@ const headers = [
|
|
|
align: "left",
|
|
|
},
|
|
|
{
|
|
|
- title: t("download"),
|
|
|
+ title: t("preview"),
|
|
|
key: "id",
|
|
|
},
|
|
|
];
|
|
|
|
|
|
+function previewVideo(name: String) {
|
|
|
+ window.open(`http://172.104.93.163:30080/${name}.mp4`);
|
|
|
+}
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
await mainStore.actionGetVideos();
|
|
|
});
|
|
@@ -42,17 +45,35 @@ onMounted(async () => {
|
|
|
</v-toolbar-title>
|
|
|
</v-toolbar>
|
|
|
<v-data-table :headers="headers" :items="videos">
|
|
|
+ <template v-slot:item.progress_state="{ item }">
|
|
|
+ <span v-if="item.raw.progress_state === 'completed'">
|
|
|
+ <v-icon icon="check_circle" color="success" />
|
|
|
+ 完成
|
|
|
+ </span>
|
|
|
+ <span v-else-if="item.raw.progress_state === 'waiting'">
|
|
|
+ <v-icon icon="pending" color="warning" />
|
|
|
+ 等待中
|
|
|
+ </span>
|
|
|
+ <span v-else-if="item.raw.progress_state === 'processing'">
|
|
|
+ <v-progress-circular
|
|
|
+ indeterminate
|
|
|
+ color="info"
|
|
|
+ style="width: 20px"
|
|
|
+ ></v-progress-circular>
|
|
|
+ 處理中
|
|
|
+ </span>
|
|
|
+ <span v-else>
|
|
|
+ <v-icon icon="warning" color="error" />
|
|
|
+ 失敗
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
<template v-slot:item.id="{ item }">
|
|
|
<v-btn
|
|
|
flat
|
|
|
- :to="{
|
|
|
- name: 'main-admin-users-edit',
|
|
|
- params: { id: item.columns.id },
|
|
|
- }"
|
|
|
:disabled="item.raw.progress_state !== 'completed'"
|
|
|
+ @click="previewVideo(item.raw.stored_file_name)"
|
|
|
>
|
|
|
- {{ item.progress_state }}
|
|
|
- <v-icon icon="file_download" />
|
|
|
+ <v-icon icon="play_circle" />
|
|
|
</v-btn>
|
|
|
</template>
|
|
|
</v-data-table>
|