@@ -179,7 +181,7 @@ const onCreateCourseSubmit = async (event: FormSubmitEvent
)
-
+
-
+
@@ -147,7 +148,7 @@ const onCreateCourseGreenSubmit = async (event: FormSubmitEvent
-
+
{
v-if="!hide"
:class="{
[activeClass]: active,
- 'hover:bg-neutral-200': !active,
+ 'hover:bg-neutral-200 dark:hover:bg-neutral-800': !active,
}"
:to="to"
- class="px-4 py-3 flex items-center gap-2 rounded-lg transition cursor-pointer"
+ class="px-4 py-3 flex justify-between items-center rounded-lg transition cursor-pointer"
>
-
- {{ label }}
+
+
+
+ {{ label }}
+
+
+
diff --git a/layouts/default.vue b/layouts/default.vue
index b4b2017..a999aae 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -17,18 +17,20 @@ const isDark = computed({
})
const links = [
+ {
+ label: '分身制课',
+ icon: 'tabler:books',
+ to: '/generation',
+ },
+ {
+ label: '聊天',
+ icon: 'tabler:message-chatbot',
+ to: '/aigc/chat',
+ },
{
label: '绘画',
icon: 'i-tabler-brush',
- to: '/',
- }, {
- label: '聊天',
- icon: 'i-tabler-message-2',
- to: '/aigc/chat',
- }, {
- label: 'PPT',
- icon: 'i-tabler-file-type-ppt',
- to: '/aigc/generation',
+ to: '/aigc/draw',
},
]
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 6d3aace..a06c922 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -21,6 +21,15 @@ export default defineNuxtConfig({
'nuxt-driver.js',
],
+ routeRules: {
+ '/': {
+ redirect: {
+ to: '/generation',
+ statusCode: 302,
+ },
+ },
+ },
+
icon: {
provider: 'iconify',
serverBundle: false,
diff --git a/pages/aigc/draw/index.vue b/pages/aigc/draw/index.vue
new file mode 100644
index 0000000..905a664
--- /dev/null
+++ b/pages/aigc/draw/index.vue
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {defaultFormState.file = file}"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ generating ? '生成中' : '生成' }}
+
+
+ 生成即代表您同意用户许可协议
+
+
+
+
+
+
+
+
+
+
{defaultFormState.file = file}">
+
+
+
+
+
+
删除后无法恢复,确定删除?
+
+
+ 取消
+
+ {
+ history.text2img.splice(k, 1)
+ del(result.fid)
+ close()
+ }">
+ 仍然删除
+
+
+
+
+
+
+
+
+
+
所有图片均为 AI 生成,服务器不会保存任何图像,数据仅保存在浏览器本地
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/aigc/generation.vue b/pages/generation.vue
similarity index 88%
rename from pages/aigc/generation.vue
rename to pages/generation.vue
index 66a1fb1..d780b1a 100644
--- a/pages/aigc/generation.vue
+++ b/pages/generation.vue
@@ -5,37 +5,37 @@ useSeoMeta({
title: '智能生成',
})
-const navList: {
+const navList = ref<{
label: string
icon: string
to: string
admin?: boolean
-}[] = [
+}[]>([
{
label: '微课视频生成',
icon: 'tabler:presentation-analytics',
- to: '/aigc/generation/course',
+ to: '/generation/course',
},
{
label: '绿幕视频生成',
icon: 'i-tabler-video',
- to: '/aigc/generation/green-screen',
+ to: '/generation/green-screen',
},
{
- label: '数字人管理',
- icon: 'i-tabler-video',
- to: '/aigc/generation/green-screen',
+ label: '用户管理',
+ icon: 'tabler:users',
+ to: '/generation/admin/users',
admin: true,
},
-]
+])
const route = useRoute()
const router = useRouter()
const loginState = useLoginState()
onMounted(() => {
- if (route.fullPath === '/aigc/generation') {
- router.push('/aigc/generation/course')
+ if (route.fullPath === '/generation') {
+ router.replace('/generation/course')
}
})
diff --git a/pages/generation/admin/users.vue b/pages/generation/admin/users.vue
new file mode 100644
index 0000000..2ae2a91
--- /dev/null
+++ b/pages/generation/admin/users.vue
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
+ 本账号数字人
+
+
+ 刷新
+
+
+
+
+
+
+
+ 每页显示:
+
+
+
+
+
+
+
+ 显示列
+
+
+
+
+
+
+
+
+
+ {{ row.sex === 0 ? '' : row.sex === 1 ? '男' : '女' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 数字人授权管理
+ {{ viewingUser?.username }} (UID:{{ viewingUser?.id }})
+
+
+
+
+ 新增授权
+
+
+
+
+
+
+ 撤销授权
+
+
+
+
+
+
+
+
+ onDigitalHumansSelected(digitalHumans as DigitalHumanItem[])"
+ />
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/aigc/generation/course.vue b/pages/generation/course.vue
similarity index 100%
rename from pages/aigc/generation/course.vue
rename to pages/generation/course.vue
diff --git a/pages/aigc/generation/green-screen.vue b/pages/generation/green-screen.vue
similarity index 100%
rename from pages/aigc/generation/green-screen.vue
rename to pages/generation/green-screen.vue
diff --git a/pages/index.vue b/pages/index.vue
index 263681e..796e491 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -1,413 +1,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {defaultFormState.file = file}"
- text="选择参考图片" text-on-select="已选择参考图"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ generating ? '生成中' : '生成' }}
-
-
- 生成即代表您同意用户许可协议
-
-
-
-
-
-
-
-
-
-
{defaultFormState.file = file}">
-
-
-
-
-
-
删除后无法恢复,确定删除?
-
-
- 取消
-
- {
- history.text2img.splice(k, 1)
- del(result.fid)
- close()
- }">
- 仍然删除
-
-
-
-
-
-
-
-
-
-
所有图片均为 AI 生成,服务器不会保存任何图像,数据仅保存在浏览器本地
-
-
-
+
+ Homepage is still WIP
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 5a1abd9..c715cff 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -61,5 +61,11 @@ export default
>{
{
pattern: /^bg-/,
},
+ {
+ pattern: /^from-/,
+ },
+ {
+ pattern: /^to-/,
+ },
],
}
diff --git a/typings/types.d.ts b/typings/types.d.ts
index 908b881..dbb164f 100644
--- a/typings/types.d.ts
+++ b/typings/types.d.ts
@@ -17,6 +17,12 @@ interface PagedData {
items: T[]
}
+interface PagedDataRequest {
+ page?: number
+ perpage?: number
+ to_user_id?: number
+}
+
interface UserSchema {
id: number
username: string
@@ -79,6 +85,12 @@ namespace req {
mobile: string
sms_code: string
}
+
+ interface UserList {
+ page?: number
+ perpage?: number
+ is_verify: boolean
+ }
}
namespace file {