Merge remote-tracking branch 'origin/main'

# Conflicts:
#	layouts/default.vue
#	nuxt.config.ts
#	package.json
#	yarn.lock
This commit is contained in:
2024-06-22 01:50:23 +08:00
12 changed files with 363 additions and 17 deletions

View File

@@ -17,8 +17,8 @@ import { trimObject } from '@uniiem/object-trim'
import ModalAuthentication from '~/components/ModalAuthentication.vue'
import NewSessionScreen from '~/components/aigc/chat/NewSessionScreen.vue'
useHead({
title: '聊天 | XSH AI',
useSeoMeta({
title: '聊天',
})
const dayjs = useDayjs()

53
pages/aigc/generation.vue Normal file
View File

@@ -0,0 +1,53 @@
<script setup lang="tsx">
import NavItem from '~/components/ppt/NavItem.vue'
useSeoMeta({
title: '智能生成',
})
</script>
<template>
<div class="w-full flex relative">
<div class="absolute -translate-x-full md:sticky md:translate-x-0 z-10 flex flex-col h-[calc(100vh-4rem)] bg-neutral-100 dark:bg-neutral-900 p-4 w-full md:w-[300px]
border-r border-neutral-200 dark:border-neutral-700 transition-all duration-300 ease-out">
<div class="flex flex-col flex-1 overflow-auto overflow-x-hidden">
<div class="flex flex-col gap-1">
<ClientOnly>
<NavItem
icon="tabler:presentation-analytics"
label="微课视频生成"
to="/aigc/generation/video-generate"
/>
<NavItem
icon="tabler:user-screen"
label="数字讲师"
to="/aigc/generation/digital-teachers"
/>
</ClientOnly>
</div>
</div>
</div>
<LoginNeededContent
content-class="h-[calc(100vh-4rem)] flex-1 bg-white dark:bg-neutral-900"
>
<Transition name="subpage" mode="out-in">
<NuxtPage :page-key="route => route.fullPath"/>
</Transition>
</LoginNeededContent>
</div>
</template>
<style>
.subpage-enter-active,
.subpage-leave-active {
transition: opacity 0.3s;
}
.subpage-enter-from,
.subpage-leave-to {
opacity: 0;
}
</style>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
useSeoMeta({
title: '数字化教师',
})
</script>
<template>
<div class="p-4">
<BubbleTitle title="数字化讲师" subtitle="DIGITAL" />
<GradientDivider />
</div>
</template>
<style scoped>
</style>

View File

@@ -0,0 +1,69 @@
<script setup lang="ts">
useSeoMeta({
title: '课程视频生成',
})
const testItem = {
'id': 1599,
'device_id': 'Test_Device_V3',
'user_id': 1,
'task_id': 'SQOeN1j2heRoQeGGTFh3Tu2WP9kUcz4L',
'create_time': 1713408239,
'token': 'not use',
'progress': 100,
'digital_human_id': 40696,
'complete_time': 1713409821,
'duration': 1578819,
'video_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/75d1e1cee595a7f5758c59289d1a74b9.mp4',
'subtitle_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/a95cfef4524e90f5509a5c248e5c2061.srt',
'video_cover': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/b4161a85573fc09be82fa7cf7dd9abfa.png',
'custom_video': '[]',
'title': '1-2 一键启动零基础快速搭建Keil开发环境实操教程',
'ppt_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/material/2024-04-18/0a8827a1ae32ece196536a19bab1dff5.pptx',
'opening_url': '',
'ending_url': '',
'video_duration': 507,
'message': 'ok',
'speed': 1,
}
const testItem2 = {
'id': 1599,
'device_id': 'Test_Device_V3',
'user_id': 1,
'task_id': 'SQOeN1j2heRoQeGGTFh3Tu2WP9kUcz4L',
'create_time': 1713408239,
'token': 'not use',
'progress': null,
'digital_human_id': 40696,
'complete_time': 1713409821,
'duration': 1578819,
'video_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/75d1e1cee595a7f5758c59289d1a74b9.mp4',
'subtitle_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/a95cfef4524e90f5509a5c248e5c2061.srt',
'video_cover': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/file/2024-04-18/b4161a85573fc09be82fa7cf7dd9abfa.png',
'custom_video': '[]',
'title': '1-2 一键启动零基础快速搭建Keil开发环境实操教程',
'ppt_url': 'https://static-xsh.oss-cn-chengdu.aliyuncs.com/material/2024-04-18/0a8827a1ae32ece196536a19bab1dff5.pptx',
'opening_url': '',
'ending_url': '',
'video_duration': 507,
'message': 'ok',
'speed': 1,
}
</script>
<template>
<div class="p-4">
<BubbleTitle title="我的微课" subtitle="VIDEOS"/>
<GradientDivider/>
<div class="grid grid-cols-3 gap-4">
<PPTGenerationRecord :record="testItem"/>
<PPTGenerationRecord :record="testItem2"/>
</div>
</div>
</template>
<style scoped>
</style>

View File

@@ -12,8 +12,8 @@ import {useHistory} from '~/composables/useHistory';
import {del, set} from 'idb-keyval';
import ReferenceFigureSelector from '~/components/aigc/ReferenceFigureSelector.vue';
useHead({
title: '绘画 | XSH AI',
useSeoMeta({
title: '绘画',
})
const toast = useToast()