Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
live-management-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haojie
live-management-web
Commits
daf04614
Commit
daf04614
authored
Sep 08, 2023
by
haojie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增ai换脸页面
parent
aebc5461
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
594 additions
and
60 deletions
+594
-60
src/assets/svg/home/faceTransplant.svg
+16
-0
src/components/Customizable/index.tsx
+49
-40
src/components/MultipleUpload/index.tsx
+14
-1
src/components/cardTwo.vue
+2
-0
src/constants/token.ts
+20
-0
src/hooks/useNotify.ts
+41
-0
src/pages/faceTransplant/components/header.vue
+138
-0
src/pages/faceTransplant/components/record.vue
+122
-0
src/pages/faceTransplant/index.vue
+108
-0
src/pages/home/components/myDigtalPeople.vue
+2
-1
src/pages/home/index.vue
+7
-0
src/router/tool.ts
+5
-0
src/store/modules/navbar.ts
+40
-15
src/utils/command.ts
+0
-1
src/utils/request.ts
+1
-1
src/utils/tool.ts
+29
-1
No files found.
src/assets/svg/home/faceTransplant.svg
0 → 100644
View file @
daf04614
<svg
width=
"40"
height=
"40"
viewBox=
"0 0 40 40"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<g
clip-path=
"url(#clip0_1711_146)"
>
<rect
width=
"40"
height=
"40"
fill=
"url(#pattern0)"
/>
</g>
<defs>
<pattern
id=
"pattern0"
patternContentUnits=
"objectBoundingBox"
width=
"1"
height=
"1"
>
<use
xlink:href=
"#image0_1711_146"
transform=
"scale(0.00195312)"
/>
</pattern>
<clipPath
id=
"clip0_1711_146"
>
<rect
width=
"40"
height=
"40"
fill=
"white"
/>
</clipPath>
<image
id=
"image0_1711_146"
width=
"512"
height=
"512"
xlink:href=
"data:image/png;base64,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"
/>
</defs>
</svg>
\ No newline at end of file
src/components/Customizable/index.tsx
View file @
daf04614
...
@@ -271,52 +271,61 @@ export default defineComponent({
...
@@ -271,52 +271,61 @@ export default defineComponent({
{
props
.
icon
}
{
props
.
icon
}
<
span
>
{
props
.
label
}
</
span
>
<
span
>
{
props
.
label
}
</
span
>
</
div
>
</
div
>
<
div
class=
"izable-page-upload-box"
>
{
slots
.
header
?
(
{
enableV2Vocal
()
?
(
slots
.
header
()
<
MultipleUpload
)
:
(
v
-
model=
{
files
.
value
}
<
div
class=
"izable-page-upload-box"
>
v
-
model
:
audioTotolTime=
{
audioTotolTime
.
value
}
label=
{
'选择音频'
}
config=
{
ossConfig
.
value
}
accept=
{
props
.
accept
}
></
MultipleUpload
>
)
:
(
<
Upload
v
-
model=
{
file
.
value
}
uploadInfo=
{
props
.
uploadInfo
}
accept=
{
props
.
accept
}
config=
{
ossConfig
.
value
}
></
Upload
>
)
}
<
div
class=
{
[
'upload-box-footer'
,
enableV2Vocal
()
?
'upload-box-footer-v2'
:
''
]
}
>
{
enableV2Vocal
()
?
(
{
enableV2Vocal
()
?
(
<
div
class=
"upload-total-time-box"
>
<
MultipleUpload
<
div
class=
"label"
>
上传的音频文件时间总和需要达到
{
audioMinTime
.
value
/
60
}
分钟以上
</
div
>
v
-
model=
{
files
.
value
}
<
div
class=
"value"
>
v
-
model
:
audioTotolTime=
{
audioTotolTime
.
value
}
<
span
class=
"current-total"
>
{
computedTotalTime
.
value
}
/
</
span
>
label=
{
'选择音频'
}
<
span
class=
"role-total"
>
{
transformTime
(
audioMinTime
.
value
)
}
</
span
>
config=
{
ossConfig
.
value
}
</
div
>
accept=
{
props
.
accept
}
</
div
>
></
MultipleUpload
>
)
:
(
)
:
(
''
<
Upload
v
-
model=
{
file
.
value
}
uploadInfo=
{
props
.
uploadInfo
}
accept=
{
props
.
accept
}
config=
{
ossConfig
.
value
}
></
Upload
>
)
}
)
}
<
div
class=
"footer-buttons"
>
<
div
class=
{
[
'upload-box-footer'
,
enableV2Vocal
()
?
'upload-box-footer-v2'
:
''
]
}
>
<
Button
theme=
"opacity"
onClick=
{
reset
}
>
{
enableV2Vocal
()
?
(
重置
<
div
class=
"upload-total-time-box"
>
</
Button
>
<
div
class=
"label"
>
上传的音频文件时间总和需要达到
{
audioMinTime
.
value
/
60
}
分钟以上
</
div
>
<
Button
theme=
"green"
onClick=
{
submit
}
>
<
div
class=
"value"
>
生成
<
span
class=
"current-total"
>
{
computedTotalTime
.
value
}
/
</
span
>
</
Button
>
<
span
class=
"role-total"
>
{
transformTime
(
audioMinTime
.
value
)
}
</
span
>
</
div
>
</
div
>
)
:
(
''
)
}
<
div
class=
"footer-buttons"
>
<
Button
theme=
"opacity"
onClick=
{
reset
}
>
重置
</
Button
>
<
Button
theme=
"green"
onClick=
{
submit
}
>
生成
</
Button
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
)
}
<
div
class=
"izable-page-tabs"
>
{
slots
.
default
?.()
}
</
div
>
<
div
class=
"izable-page-tabs"
>
{
slots
.
default
?.()
}
</
div
>
<
Dialog
{
slots
.
header
?
(
v
-
model
:
value=
{
taskName
.
value
}
''
dialogInfo=
{
props
.
dialogInfo
}
)
:
(
v
-
model=
{
nameDialog
.
value
}
<
Dialog
onConfirm=
{
onConfirm
}
v
-
model
:
value=
{
taskName
.
value
}
></
Dialog
>
dialogInfo=
{
props
.
dialogInfo
}
v
-
model=
{
nameDialog
.
value
}
onConfirm=
{
onConfirm
}
></
Dialog
>
)
}
</
div
>
</
div
>
);
);
},
},
...
...
src/components/MultipleUpload/index.tsx
View file @
daf04614
...
@@ -15,6 +15,19 @@ export default defineComponent({
...
@@ -15,6 +15,19 @@ export default defineComponent({
type
:
Array
,
type
:
Array
,
default
:
[],
default
:
[],
},
},
mode
:
{
type
:
String
,
default
:
'1'
,
},
modeInfo
:
{
type
:
Object
as
any
,
default
:
{
label1
:
'选择需要换脸的视频'
,
label2
:
'或拖视频到此处上传'
,
icon
:
''
,
buttonLabel
:
'选择视频'
,
},
},
// 是否截取视频第一针
// 是否截取视频第一针
firstFrame
:
{
firstFrame
:
{
type
:
Boolean
,
type
:
Boolean
,
...
@@ -317,7 +330,7 @@ export default defineComponent({
...
@@ -317,7 +330,7 @@ export default defineComponent({
draggable=
{
true
}
draggable=
{
true
}
>
>
<
div
class=
"custom-upload-click-box"
ref=
{
uploadRef
}
>
<
div
class=
"custom-upload-click-box"
ref=
{
uploadRef
}
>
<
TButton
class=
"custom-chose-file"
>
{
props
.
label
}
</
TButton
>
{
props
.
mode
==
'1'
?
<
TButton
class=
"custom-chose-file"
>
{
props
.
label
}
</
TButton
>
:
<
div
></
div
>
}
</
div
>
</
div
>
</
TUpload
>
</
TUpload
>
);
);
...
...
src/components/cardTwo.vue
View file @
daf04614
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
}"
}"
>
>
<div
class=
"custom-card-two-image"
>
<div
class=
"custom-card-two-image"
>
<!-- v-lazy="img" -->
<img
alt=
""
:src=
"img"
/>
<img
alt=
""
:src=
"img"
/>
<div
v-show=
"showHover"
:class=
"['hover']"
>
<div
v-show=
"showHover"
:class=
"['hover']"
>
<slot
name=
"hover"
></slot>
<slot
name=
"hover"
></slot>
...
@@ -27,6 +28,7 @@
...
@@ -27,6 +28,7 @@
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
ref
}
from
'vue'
;
import
{
ref
}
from
'vue'
;
import
ChangeName
from
'@/components/changeName.vue'
;
import
ChangeName
from
'@/components/changeName.vue'
;
import
{
vLazy
}
from
'@/utils/command'
;
const
props
=
withDefaults
(
const
props
=
withDefaults
(
defineProps
<
{
defineProps
<
{
id
:
string
|
number
;
id
:
string
|
number
;
...
...
src/constants/token.ts
View file @
daf04614
...
@@ -106,6 +106,13 @@ export const getRoutes = () => {
...
@@ -106,6 +106,13 @@ export const getRoutes = () => {
component
:
()
=>
import
(
'@/pages/createAction/index'
),
component
:
()
=>
import
(
'@/pages/createAction/index'
),
meta
:
{
title
:
'snowhome'
,
keepAlive
:
true
},
meta
:
{
title
:
'snowhome'
,
keepAlive
:
true
},
},
},
// ai换脸
{
path
:
routerConfig
.
faceTransplant
.
path
,
name
:
routerConfig
.
faceTransplant
.
name
,
component
:
()
=>
import
(
'@/pages/faceTransplant/index.vue'
),
meta
:
{
title
:
'snowhome'
,
keepAlive
:
true
},
},
];
];
}
}
};
};
...
@@ -143,6 +150,9 @@ export const audioAccept = 'wav,mpeg,mp3';
...
@@ -143,6 +150,9 @@ export const audioAccept = 'wav,mpeg,mp3';
// 视频上传格式限制
// 视频上传格式限制
export
const
videoAccept
=
'mp4'
;
export
const
videoAccept
=
'mp4'
;
// 图片上传格式限制
export
const
imageAccept
=
'png,jpg,jpeg'
;
// 音频切割间隔时长
// 音频切割间隔时长
export
const
audioSplitDuration
=
300
;
export
const
audioSplitDuration
=
300
;
...
@@ -158,3 +168,13 @@ export const getTestUuid = () => {
...
@@ -158,3 +168,13 @@ export const getTestUuid = () => {
return
false
;
return
false
;
}
}
};
};
// navigation各个路由的label
export
const
navigationLabels
=
{
createLive
:
'直播创建'
,
imageCustomization
:
'形象定制'
,
vocalCustomization
:
'声音定制'
,
createInteract
:
'互动回答'
,
createAction
:
'动作创建'
,
faceTransplant
:
'智能换脸'
,
};
src/hooks/useNotify.ts
0 → 100644
View file @
daf04614
import
{
onMounted
,
ref
}
from
'vue'
;
import
{
NotifyPlugin
}
from
'tdesign-vue-next'
;
import
{
injectWindow
}
from
'@/utils/pyqt'
;
export
default
function
()
{
const
notifyStatus
=
ref
(
false
);
// 通知
const
notify
=
ref
({
title
:
''
,
content
:
''
,
duration
:
0
,
closeBtn
:
true
,
});
const
showNotifyPlugin
=
(
status
:
boolean
=
true
)
=>
{
// 已经创建就不能再创建了
if
(
notifyStatus
.
value
)
{
return
;
}
notifyStatus
.
value
=
status
;
if
(
status
)
{
NotifyPlugin
(
'info'
,
notify
.
value
);
}
else
{
// 销毁
NotifyPlugin
.
closeAll
();
}
};
const
changeNotifyPlugin
=
()
=>
{
notify
.
value
.
title
=
'你好啊'
;
};
onMounted
(()
=>
{
// 注入通知方法
injectWindow
(
'showNotifyPlugin'
,
showNotifyPlugin
);
injectWindow
(
'changeNotifyPlugin'
,
changeNotifyPlugin
);
});
return
{
showNotifyPlugin
,
changeNotifyPlugin
,
};
}
src/pages/faceTransplant/components/header.vue
0 → 100644
View file @
daf04614
<
template
>
<div
class=
"face-transplant-header"
>
<div
class=
"face-transplant-upload"
>
<div
class=
"upload"
>
<Upload
class=
"face-transplant-reset-upload"
v-model=
"videoFile"
:config=
"ossConfig"
:accept=
"videoAccept"
:uploadInfo=
"videoUploadInfo"
></Upload>
</div>
<div
class=
"divide"
>
+
</div>
<div
class=
"upload"
>
<Upload
class=
"face-transplant-reset-upload"
v-model=
"imageFile"
:config=
"ossConfig"
:accept=
"imageAccept"
:uploadInfo=
"imageUploadInfo"
></Upload>
</div>
</div>
<div
class=
"face-transplant-footer"
>
<Button
theme=
"opacity"
class=
"face-transplant-footer-reset"
>
重置
</Button>
<Button
theme=
"green"
class=
"face-transplant-create"
@
click=
"openDialog"
>
生成
</Button>
</div>
<ConfirmDialog
v-model=
"confirmDialogVisible"
title=
"确定生成吗?"
@
confirm=
"confirm"
></ConfirmDialog>
</div>
</
template
>
<
script
lang=
"tsx"
setup
>
import
ConfirmDialog
from
'@/components/ConfirmDialog.vue'
;
import
Button
from
'@/components/Button.vue'
;
import
Upload
from
'@/components/upload'
;
import
{
videoAccept
,
imageAccept
}
from
'@/constants/token'
;
import
{
getUploadConfig
}
from
'@/service/Common'
;
import
{
onMounted
,
ref
}
from
'vue'
;
const
videoUploadInfo
=
{
label1
:
'选择需要换脸的视频'
,
label2
:
'或拖视频到此处上传'
,
buttonLabel
:
'选择视频'
,
successIcon
:
''
,
successButtonLabel
:
'替换视频'
,
};
const
imageUploadInfo
=
{
label1
:
'选择需要换脸的图片'
,
label2
:
'或将图片拖拽到此处上传'
,
buttonLabel
:
'选择图片'
,
successIcon
:
''
,
successButtonLabel
:
'替换图片'
,
};
const
ossConfig
=
ref
({});
// 弹窗状态
const
confirmDialogVisible
=
ref
(
false
);
// 视频文件
const
videoFile
=
ref
(
''
);
// 图片文件
const
imageFile
=
ref
(
''
);
const
getConfig
=
async
()
=>
{
ossConfig
.
value
=
await
getUploadConfig
();
};
const
openDialog
=
()
=>
{
confirmDialogVisible
.
value
=
true
;
};
// 确定生成
const
confirm
=
async
()
=>
{
try
{
//
}
catch
(
e
)
{
console
.
log
(
e
);
}
};
onMounted
(()
=>
{
// 获取上传配置
getConfig
();
});
</
script
>
<
style
lang=
"less"
>
@import
'@/style/variables.less'
;
.face-transplant-header
{
height
:
650px
;
border-radius
:
6px
;
background
:
#303030
;
box-shadow
:
0px
0px
8px
0px
rgba
(
0
,
0
,
0
,
0.04
);
display
:
flex
;
flex-direction
:
column
;
.face-transplant-upload
{
padding
:
30px
;
flex
:
1
;
display
:
flex
;
align-items
:
center
;
.divide
{
font-size
:
60px
;
font-weight
:
bold
;
color
:
white
;
padding
:
0
12px
;
}
.upload
{
flex
:
1
;
.face-transplant-reset-upload
{
background-color
:
transparent
;
border
:
2px
dashed
#9f9f9f
;
height
:
500px
;
}
}
}
.face-transplant-footer
{
height
:
60px
;
border-top
:
1px
solid
#9f9f9f
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
padding
:
0
20px
;
.t-button
{
font-weight
:
700
;
font-size
:
@
size-14
;
width
:
76px
;
}
.face-transplant-footer-reset
{
color
:
#9f9f9f
;
border-color
:
#9f9f9f
;
}
.face-transplant-create
{
margin-left
:
20px
;
}
}
}
</
style
>
src/pages/faceTransplant/components/record.vue
0 → 100644
View file @
daf04614
<
template
>
<div
class=
"face-transplant-record"
>
<div
class=
"record-items"
v-for=
"item in list"
:key=
"item.id"
>
<div
class=
"left"
>
<img
:src=
"item.cover_url"
alt=
""
/>
</div>
<div
class=
"center"
>
<div
class=
"name"
>
名称:
<span>
{{
item
.
name
}}
</span>
</div>
<div
class=
"create"
>
创建时间:
<span>
{{
item
.
created_at
}}
</span>
</div>
<div
class=
"download-box"
>
<Button
theme=
"green"
:class=
"['download-button', item.audit_status != 3 ? 'download-button__disabled' : '']"
@
click=
"onDownloadVideo(item)"
>
下载
</Button
>
</div>
</div>
<CustomizationStatus
:status=
"item.audit_status"
></CustomizationStatus>
</div>
</div>
</
template
>
<
script
lang=
"tsx"
setup
>
import
CustomizationStatus
from
'@/components/CustomizationStatus'
;
import
Button
from
'@/components/Button.vue'
;
import
{
callPyjsInWindow
}
from
'@/utils/pyqt'
;
import
{
downloadMp4
}
from
'@/utils/tool'
;
// import useNotify from '@/hooks/useNotify';
// const { showNotifyPlugin } = useNotify();
const
props
=
withDefaults
(
defineProps
<
{
list
?:
any
[];
loading
:
boolean
;
}
>
(),
{
list
:
()
=>
[],
},
);
// 下载视频
const
onDownloadVideo
=
(
item
:
any
)
=>
{
if
(
item
.
audit_status
!=
3
)
{
return
;
}
// 通知python下载视频
let
url
=
'http://yunyi-live.oss-cn-hangzhou.aliyuncs.com/upload/1/2023-08-22c130e428-cab2-4e1e-8904-88054d84bc1b.mp4'
;
callPyjsInWindow
(
'downloadVideo'
,
url
);
downloadMp4
(
url
);
};
</
script
>
<
style
lang=
"less"
>
@import
'@/style/variables.less'
;
.face-transplant-record
{
border-radius
:
0px
6px
0px
0px
;
background
:
#303030
;
box-shadow
:
0px
0px
8px
0px
rgba
(
0
,
0
,
0
,
0.04
);
min-height
:
200px
;
padding
:
20px
;
&
>
:not(:first-child)
{
margin-top
:
12px
;
}
.record-items
{
border-radius
:
6px
;
background
:
#1e1e1e
;
height
:
150px
;
display
:
flex
;
align-items
:
center
;
padding
:
0
60px
;
.left
{
width
:
250px
;
height
:
120px
;
img
{
border-radius
:
8px
;
width
:
200px
;
height
:
100%
;
object-fit
:
contain
;
}
}
.center
{
padding-left
:
30px
;
flex
:
1
;
color
:
#fff
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-around
;
.name
{
font-size
:
@
size-18
;
}
.create
{
font-size
:
@
size-16
;
}
}
.download-box
{
.download-button
{
height
:
28px
!important
;
font-weight
:
700
;
font-size
:
@
size-14
;
width
:
76px
;
}
.download-button__disabled
{
background
:
#6a6a6a
;
color
:
#9f9f9f
;
border-color
:
#6a6a6a
;
--ripple-color
:
transparent
!important
;
cursor
:
not-allowed
;
}
}
}
}
</
style
>
src/pages/faceTransplant/index.vue
0 → 100644
View file @
daf04614
<
template
>
<div
class=
""
>
<Customizable
:video=
"true"
:submit=
"submit"
:icon=
"getIcon()"
:uploadInfo=
"uploadInfo"
:dialogInfo=
"dialogInfo"
:label=
"navigationLabels.faceTransplant"
>
<template
#
header
>
<Header></Header>
</
template
>
<CustomTabs
v-model=
"currentTab"
theme=
"dark2"
class=
"custom-tabs-flex"
>
<CustomTabPanel
name=
"1"
label=
"生成记录"
>
<Record
:list=
"personList.list"
:loading=
"loading"
></Record>
</CustomTabPanel>
</CustomTabs>
</Customizable>
</div>
</template>
<
script
lang=
"tsx"
>
export
default
{
name
:
routerConfig
.
ImageCustomization
.
name
,
};
</
script
>
<
script
lang=
"tsx"
setup
>
import
{
navigationLabels
}
from
'@/constants/token'
;
import
Header
from
'./components/header.vue'
;
import
Record
from
'./components/record.vue'
;
import
CustomTabs
from
'@/components/CustomTabs'
;
import
CustomTabPanel
from
'@/components/CustomTabPanel'
;
import
Customizable
from
'@/components/Customizable'
;
import
PersonSvg
from
'@/assets/svg/home/faceTransplant.svg'
;
import
{
onMounted
,
ref
,
reactive
}
from
'vue'
;
import
{
customizedImageSubmission
}
from
'@/utils/api/userApi'
;
import
{
show_message
}
from
'@/utils/tool'
;
import
routerConfig
from
'@/router/tool'
;
import
{
useStore
}
from
'vuex'
;
import
{
jumpPageAddNavigation
}
from
'@/router/jump'
;
import
{
getDigitalPeopleList
}
from
'@/service/Common'
;
const
{
addNavigation
}
=
jumpPageAddNavigation
();
const
store
=
useStore
();
const
currentTab
=
ref
(
'1'
);
// 子组件loading
const
loading
=
ref
(
false
);
const
personList
=
reactive
({
list
:
[],
});
const
imgs
=
{
success
:
new
URL
(
'../../assets/svg/upload/success2.svg'
,
import
.
meta
.
url
).
href
,
};
const
dialogInfo
=
{
title
:
navigationLabels
.
faceTransplant
,
inputLabel
:
'数字人名称'
,
placeholder
:
'请输入数字人名称'
,
};
const
getIcon
=
()
=>
{
return
<
PersonSvg
><
/PersonSvg>
;
};
const
uploadInfo
=
{
label1
:
'选择视频'
,
label2
:
'或拖视频到此处上传'
,
buttonLabel
:
'选择视频'
,
successIcon
:
imgs
.
success
,
successButtonLabel
:
'替换视频'
,
};
// 获取我的数字人列表
const
getList
=
async
()
=>
{
loading
.
value
=
true
;
let
res
=
await
getDigitalPeopleList
();
personList
.
list
=
res
.
myList
;
loading
.
value
=
false
;
};
const
submit
=
async
(
params
:
any
)
=>
{
try
{
let
res
:
any
=
await
customizedImageSubmission
(
params
);
if
(
res
.
code
==
0
)
{
show_message
(
'提交成功'
,
'success'
);
// 更新记录
getList
();
return
true
;
}
}
catch
(
e
)
{
console
.
log
(
e
);
}
};
onMounted
(()
=>
{
addNavigation
(
routerConfig
.
faceTransplant
.
path
);
// 获取数字人列表
getList
();
});
</
script
>
<
style
lang=
"less"
></
style
>
src/pages/home/components/myDigtalPeople.vue
View file @
daf04614
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
>
>
</
template
>
</
template
>
<div
class=
"digtal-people-hover-tool"
>
<div
class=
"digtal-people-hover-tool"
>
<
Button
size=
"13"
theme=
"dark"
@
click=
"onEdit(item)"
>
编辑
</Button
>
<
!-- <Button size="13" theme="dark" @click="onEdit(item)">编辑</Button> --
>
<Button
size=
"13"
theme=
"dark"
@
click=
"downLoadVideo(item)"
>
下载
</Button>
<Button
size=
"13"
theme=
"dark"
@
click=
"downLoadVideo(item)"
>
下载
</Button>
<Button
size=
"13"
theme=
"dark"
@
click=
"onDelete(item)"
>
删除
</Button>
<Button
size=
"13"
theme=
"dark"
@
click=
"onDelete(item)"
>
删除
</Button>
</div>
</div>
...
@@ -278,6 +278,7 @@ watch(
...
@@ -278,6 +278,7 @@ watch(
.digtal-people-hover-tool
{
.digtal-people-hover-tool
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
align-items
:
flex-end
;
align-items
:
flex-end
;
margin-bottom
:
20px
;
margin-bottom
:
20px
;
}
}
...
...
src/pages/home/index.vue
View file @
daf04614
...
@@ -106,6 +106,7 @@ const imgs = {
...
@@ -106,6 +106,7 @@ const imgs = {
speaking
:
new
URL
(
'../../assets/svg/home/speaking.svg'
,
import
.
meta
.
url
).
href
,
speaking
:
new
URL
(
'../../assets/svg/home/speaking.svg'
,
import
.
meta
.
url
).
href
,
interaction
:
new
URL
(
'../../assets/svg/home/interaction.svg'
,
import
.
meta
.
url
).
href
,
interaction
:
new
URL
(
'../../assets/svg/home/interaction.svg'
,
import
.
meta
.
url
).
href
,
action
:
new
URL
(
'../../assets/svg/home/action.svg'
,
import
.
meta
.
url
).
href
,
action
:
new
URL
(
'../../assets/svg/home/action.svg'
,
import
.
meta
.
url
).
href
,
faceTransplant
:
new
URL
(
'../../assets/svg/home/faceTransplant.svg'
,
import
.
meta
.
url
).
href
,
};
};
const
toolList
=
[
const
toolList
=
[
{
{
...
@@ -132,6 +133,12 @@ const toolList = [
...
@@ -132,6 +133,12 @@ const toolList = [
path
:
routerConfig
.
createAction
.
path
,
path
:
routerConfig
.
createAction
.
path
,
name
:
routerConfig
.
createAction
.
name
,
name
:
routerConfig
.
createAction
.
name
,
},
},
{
label
:
'智能换脸'
,
icon
:
imgs
.
faceTransplant
,
path
:
routerConfig
.
faceTransplant
.
path
,
name
:
routerConfig
.
faceTransplant
.
name
,
},
];
];
// 跳转到创建直播页面
// 跳转到创建直播页面
...
...
src/router/tool.ts
View file @
daf04614
...
@@ -48,4 +48,9 @@ export default {
...
@@ -48,4 +48,9 @@ export default {
path
:
'/createAction'
,
path
:
'/createAction'
,
name
:
'createAction'
,
name
:
'createAction'
,
},
},
// ai换脸
faceTransplant
:
{
path
:
'/faceTransplant'
,
name
:
'faceTransplant'
,
},
};
};
src/store/modules/navbar.ts
View file @
daf04614
...
@@ -2,6 +2,7 @@ import routerConfig from '@/router/tool';
...
@@ -2,6 +2,7 @@ import routerConfig from '@/router/tool';
import
{
createLiveRouteKey
}
from
'@/constants/token'
;
import
{
createLiveRouteKey
}
from
'@/constants/token'
;
import
{
getSiteRouter
}
from
'@/config/site'
;
import
{
getSiteRouter
}
from
'@/config/site'
;
import
router
from
'@/router'
;
import
router
from
'@/router'
;
import
{
navigationLabels
}
from
'@/constants/token'
;
const
imgs
=
{
const
imgs
=
{
home
:
new
URL
(
'../../assets/svg/home/home.svg'
,
import
.
meta
.
url
).
href
,
home
:
new
URL
(
'../../assets/svg/home/home.svg'
,
import
.
meta
.
url
).
href
,
...
@@ -10,6 +11,7 @@ const imgs = {
...
@@ -10,6 +11,7 @@ const imgs = {
speak
:
new
URL
(
'../../assets/svg/home/speaking.svg'
,
import
.
meta
.
url
).
href
,
speak
:
new
URL
(
'../../assets/svg/home/speaking.svg'
,
import
.
meta
.
url
).
href
,
interaction
:
new
URL
(
'../../assets/svg/home/interaction.svg'
,
import
.
meta
.
url
).
href
,
interaction
:
new
URL
(
'../../assets/svg/home/interaction.svg'
,
import
.
meta
.
url
).
href
,
action
:
new
URL
(
'../../assets/svg/home/action.svg'
,
import
.
meta
.
url
).
href
,
action
:
new
URL
(
'../../assets/svg/home/action.svg'
,
import
.
meta
.
url
).
href
,
faceTransplant
:
new
URL
(
'../../assets/svg/home/faceTransplant.svg'
,
import
.
meta
.
url
).
href
,
};
};
const
filterKeepAlive
=
()
=>
{
const
filterKeepAlive
=
()
=>
{
...
@@ -31,6 +33,40 @@ const filterKeepAlive = () => {
...
@@ -31,6 +33,40 @@ const filterKeepAlive = () => {
return
list
;
return
list
;
};
};
// 导航列表
const
navigationList
=
[
{
path
:
routerConfig
.
createLive
.
path
,
icon
:
imgs
.
live
,
label
:
navigationLabels
.
createLive
,
},
{
path
:
routerConfig
.
ImageCustomization
.
path
,
icon
:
imgs
.
person
,
label
:
navigationLabels
.
imageCustomization
,
},
{
path
:
routerConfig
.
VocalCustomization
.
path
,
icon
:
imgs
.
speak
,
label
:
navigationLabels
.
vocalCustomization
,
},
{
path
:
routerConfig
.
createInteract
.
path
,
icon
:
imgs
.
interaction
,
label
:
navigationLabels
.
createInteract
,
},
{
path
:
routerConfig
.
createAction
.
path
,
icon
:
imgs
.
action
,
label
:
navigationLabels
.
createAction
,
},
{
path
:
routerConfig
.
faceTransplant
.
path
,
icon
:
imgs
.
faceTransplant
,
label
:
navigationLabels
.
faceTransplant
,
},
];
const
state
=
{
const
state
=
{
version
:
'v1'
,
version
:
'v1'
,
navbarList
:
[],
navbarList
:
[],
...
@@ -52,21 +88,10 @@ const mutations = {
...
@@ -52,21 +88,10 @@ const mutations = {
// 替换
// 替换
state
.
navbarList
[
index
].
query
=
info
.
query
;
state
.
navbarList
[
index
].
query
=
info
.
query
;
}
else
{
}
else
{
if
(
info
.
path
==
routerConfig
.
createLive
.
path
)
{
let
currentInfo
=
navigationList
.
find
((
item
:
any
)
=>
item
.
path
==
info
.
path
);
info
.
icon
=
imgs
.
live
;
if
(
currentInfo
)
{
info
.
label
=
'直播创建'
;
info
.
icon
=
currentInfo
.
icon
;
}
else
if
(
info
.
path
==
routerConfig
.
ImageCustomization
.
path
)
{
info
.
label
=
currentInfo
.
label
;
info
.
icon
=
imgs
.
person
;
info
.
label
=
'形象定制'
;
}
else
if
(
info
.
path
==
routerConfig
.
VocalCustomization
.
path
)
{
info
.
icon
=
imgs
.
speak
;
info
.
label
=
'声音定制'
;
}
else
if
(
info
.
path
==
routerConfig
.
createInteract
.
path
)
{
info
.
icon
=
imgs
.
interaction
;
info
.
label
=
'互动回答'
;
}
else
if
(
info
.
path
==
routerConfig
.
createAction
.
path
)
{
info
.
icon
=
imgs
.
action
;
info
.
label
=
'动作创建'
;
}
}
state
.
navbarList
.
push
(
info
);
state
.
navbarList
.
push
(
info
);
}
}
...
...
src/utils/command.ts
View file @
daf04614
export
const
vLazy
=
(
el
:
HTMLImageElement
,
image
:
any
)
=>
{
export
const
vLazy
=
(
el
:
HTMLImageElement
,
image
:
any
)
=>
{
el
.
src
=
'https://cdn.staticaly.com/gh/1024huijia/QingChunMeizi@master/loading.5e3wpezjapc0.gif'
;
// 使用obaesrve监听图片是否在可视区域内
// 使用obaesrve监听图片是否在可视区域内
const
observe
=
new
IntersectionObserver
((
entries
)
=>
{
const
observe
=
new
IntersectionObserver
((
entries
)
=>
{
entries
.
forEach
((
entry
)
=>
{
entries
.
forEach
((
entry
)
=>
{
...
...
src/utils/request.ts
View file @
daf04614
...
@@ -8,7 +8,7 @@ const error_messaage = '请求错误';
...
@@ -8,7 +8,7 @@ const error_messaage = '请求错误';
const
getBaseUrl
=
async
()
=>
{
const
getBaseUrl
=
async
()
=>
{
if
(
isDev
())
{
if
(
isDev
())
{
return
'http://156.247.11.21:93'
;
//
return 'http://156.247.11.21:93';
return
''
;
return
''
;
}
}
// 默认线上地址
// 默认线上地址
...
...
src/utils/tool.ts
View file @
daf04614
...
@@ -366,7 +366,35 @@ export const getFile = (url: string) => {
...
@@ -366,7 +366,35 @@ export const getFile = (url: string) => {
});
});
};
};
// 用户下载文件
// 下载单个MP4
export
const
downloadMp4
=
async
(
url
:
string
,
name
:
string
=
''
)
=>
{
if
(
!
url
)
{
return
;
}
try
{
const
res
:
Blob
=
await
request
.
get
(
url
,
{
responseType
:
'blob'
,
});
downloadFile
(
URL
.
createObjectURL
(
res
),
name
);
}
catch
(
e
)
{
show_message
(
'下载失败'
,
'error'
);
console
.
log
(
e
);
}
};
// a标签下载文件
export
const
downloadFile
=
(
url
:
string
,
name
:
string
=
''
)
=>
{
// 通过链接获取文件后缀
const
suffix
=
getFileSuffixInUrl
(
url
);
const
a
=
document
.
createElement
(
'a'
);
a
.
href
=
url
;
a
.
download
=
`
${
name
?
name
:
'example'
}
.
${
suffix
}
`
;
document
.
body
.
appendChild
(
a
);
a
.
click
();
document
.
body
.
removeChild
(
a
);
};
// 用户下载文件压缩包
// export const downloadFiles = (list: string[]) => {
// export const downloadFiles = (list: string[]) => {
// let zip = new JSZip();
// let zip = new JSZip();
// const promises = [];
// const promises = [];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment