@@ -6,5 +6,6 @@ NODE_ENV='development' | |||||
VITE_APP_TITLE = 'Metavatar-PC' | VITE_APP_TITLE = 'Metavatar-PC' | ||||
VITE_APP_PORT = 3000 | VITE_APP_PORT = 3000 | ||||
## VITE_APP_BASE_API = 'https://photo.metavatar.cc/C' | ## VITE_APP_BASE_API = 'https://photo.metavatar.cc/C' | ||||
VITE_APP_BASE_API = 'https://test.metavatar.cc/C' | |||||
# VITE_APP_BASE_API = 'https://test.metavatar.cc/C' | |||||
VITE_APP_BASE_API = 'https://phototest.metavatar.cc/C' | |||||
@@ -188,3 +188,16 @@ export function getModelDetailByIdApi(id) { | |||||
method: 'get' | method: 'get' | ||||
}) | }) | ||||
} | } | ||||
/** | |||||
* @description:文字判断语种 | |||||
* @param {number} id | |||||
* @return data | |||||
*/ | |||||
export function getLanguageApi(data) { | |||||
return request({ | |||||
url: `/api/VoiceLanguage/getLanguage`, | |||||
method: 'POST', | |||||
data | |||||
}) | |||||
} |
@@ -2,6 +2,8 @@ | |||||
export {} | export {} | ||||
declare global { | declare global { | ||||
const EffectScope: typeof import('vue')['EffectScope'] | const EffectScope: typeof import('vue')['EffectScope'] | ||||
const ElMessage: typeof import('element-plus/es')['ElMessage'] | |||||
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] | |||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] | const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] | ||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] | const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] | ||||
const computed: typeof import('vue')['computed'] | const computed: typeof import('vue')['computed'] | ||||
@@ -268,6 +270,8 @@ import { UnwrapRef } from 'vue' | |||||
declare module 'vue' { | declare module 'vue' { | ||||
interface ComponentCustomProperties { | interface ComponentCustomProperties { | ||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']> | readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']> | ||||
readonly ElMessage: UnwrapRef<typeof import('element-plus/es')['ElMessage']> | |||||
readonly ElMessageBox: UnwrapRef<typeof import('element-plus/es')['ElMessageBox']> | |||||
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']> | readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']> | ||||
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']> | readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']> | ||||
readonly computed: UnwrapRef<typeof import('vue')['computed']> | readonly computed: UnwrapRef<typeof import('vue')['computed']> | ||||
@@ -18,10 +18,13 @@ declare module '@vue/runtime-core' { | |||||
ElDropdown: typeof import('element-plus/es')['ElDropdown'] | ElDropdown: typeof import('element-plus/es')['ElDropdown'] | ||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] | ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] | ||||
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] | ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] | ||||
ElForm: typeof import('element-plus/es')['ElForm'] | |||||
ElFormItem: typeof import('element-plus/es')['ElFormItem'] | |||||
ElIcon: typeof import('element-plus/es')['ElIcon'] | ElIcon: typeof import('element-plus/es')['ElIcon'] | ||||
ElInput: typeof import('element-plus/es')['ElInput'] | ElInput: typeof import('element-plus/es')['ElInput'] | ||||
ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] | ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] | ||||
ElOption: typeof import('element-plus/es')['ElOption'] | ElOption: typeof import('element-plus/es')['ElOption'] | ||||
ElPagination: typeof import('element-plus/es')['ElPagination'] | |||||
ElSelect: typeof import('element-plus/es')['ElSelect'] | ElSelect: typeof import('element-plus/es')['ElSelect'] | ||||
ElSwitch: typeof import('element-plus/es')['ElSwitch'] | ElSwitch: typeof import('element-plus/es')['ElSwitch'] | ||||
ElTooltip: typeof import('element-plus/es')['ElTooltip'] | ElTooltip: typeof import('element-plus/es')['ElTooltip'] | ||||
@@ -29,12 +32,18 @@ declare module '@vue/runtime-core' { | |||||
GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default'] | GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default'] | ||||
Hamburger: typeof import('./../components/Hamburger/index.vue')['default'] | Hamburger: typeof import('./../components/Hamburger/index.vue')['default'] | ||||
IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] | IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] | ||||
IEpCloseBold: typeof import('~icons/ep/close-bold')['default'] | |||||
IEpDelete: typeof import('~icons/ep/delete')['default'] | |||||
IEpDocumentAdd: typeof import('~icons/ep/document-add')['default'] | IEpDocumentAdd: typeof import('~icons/ep/document-add')['default'] | ||||
IEpDownload: typeof import('~icons/ep/download')['default'] | |||||
IEpEdit: typeof import('~icons/ep/edit')['default'] | IEpEdit: typeof import('~icons/ep/edit')['default'] | ||||
IEpGoods: typeof import('~icons/ep/goods')['default'] | IEpGoods: typeof import('~icons/ep/goods')['default'] | ||||
IEpLoading: typeof import('~icons/ep/loading')['default'] | |||||
IEpMenu: typeof import('~icons/ep/menu')['default'] | IEpMenu: typeof import('~icons/ep/menu')['default'] | ||||
IEpPhone: typeof import('~icons/ep/phone')['default'] | IEpPhone: typeof import('~icons/ep/phone')['default'] | ||||
IEpSearch: typeof import('~icons/ep/search')['default'] | |||||
IEpUser: typeof import('~icons/ep/user')['default'] | IEpUser: typeof import('~icons/ep/user')['default'] | ||||
IEpVideoPlay: typeof import('~icons/ep/video-play')['default'] | |||||
LangSelect: typeof import('./../components/LangSelect/index.vue')['default'] | LangSelect: typeof import('./../components/LangSelect/index.vue')['default'] | ||||
MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default'] | MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default'] | ||||
MyLoading: typeof import('./../components/myLoading.vue')['default'] | MyLoading: typeof import('./../components/myLoading.vue')['default'] | ||||
@@ -218,7 +218,7 @@ | |||||
> | > | ||||
< | < | ||||
</div> | </div> | ||||
<!-- tab栏 --> | |||||
<!-- tab栏 性别--> | |||||
<p>{{ $t("createVideo.sex") }}</p> | <p>{{ $t("createVideo.sex") }}</p> | ||||
<div class="tab" v-show="showChooseModel"> | <div class="tab" v-show="showChooseModel"> | ||||
<div | <div | ||||
@@ -243,6 +243,7 @@ | |||||
{{ $t("createVideo.female") }} | {{ $t("createVideo.female") }} | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<!-- 横屏竖屏 --> | |||||
<p>{{ $t("createVideo.videoRatio") }}</p> | <p>{{ $t("createVideo.videoRatio") }}</p> | ||||
<div class="tab" v-show="showChooseModel"> | <div class="tab" v-show="showChooseModel"> | ||||
<div | <div | ||||
@@ -267,6 +268,17 @@ | |||||
{{ $t("createVideo.portrait") }} | {{ $t("createVideo.portrait") }} | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<!-- 风格模版 --> | |||||
<!-- <p>{{ $t("createVideo.videoRatio") }}</p> | |||||
<div class="tab" v-show="showChooseModel"> | |||||
<div | |||||
class="tabItem" | |||||
:class="modelTabItemActive3 == -1 ? 'tabItemActive' : ''" | |||||
@click="changeModelStyle(-1)" | |||||
> | |||||
{{ $t("createVideo.all") }} | |||||
</div> | |||||
</div> --> | |||||
<!-- 模版列表 --> | <!-- 模版列表 --> | ||||
<div | <div | ||||
class="modeListBox" | class="modeListBox" | ||||
@@ -460,6 +472,7 @@ | |||||
v-model="language" | v-model="language" | ||||
:placeholder="$t('createVideo.select')" | :placeholder="$t('createVideo.select')" | ||||
style="width: 100%" | style="width: 100%" | ||||
filterable | |||||
> | > | ||||
<el-option | <el-option | ||||
v-for="item in languageOptions" | v-for="item in languageOptions" | ||||
@@ -746,6 +759,7 @@ import { | |||||
saveOrUpdateApi, | saveOrUpdateApi, | ||||
createVideoApi, | createVideoApi, | ||||
getModelDetailByIdApi, | getModelDetailByIdApi, | ||||
getLanguageApi, | |||||
} from "@/apis/createVideo"; | } from "@/apis/createVideo"; | ||||
import { useI18n } from "vue-i18n"; | import { useI18n } from "vue-i18n"; | ||||
import Recorder from "js-audio-recorder"; //mp3插件 | import Recorder from "js-audio-recorder"; //mp3插件 | ||||
@@ -824,6 +838,13 @@ function changeTabVideoType(index) { | |||||
tabVideoType.value | tabVideoType.value | ||||
); | ); | ||||
} | } | ||||
// 模版风格tab | |||||
const modelStyleTabList = ref([]); | |||||
const modelTabItemActive3 = ref(-1); //模版风格tab栏 比例 | |||||
function changeModelStyle(index) { | |||||
modelTabItemActive3.value = index; | |||||
} | |||||
// watch(tabSex, (newVal, oldVal) => { | // watch(tabSex, (newVal, oldVal) => { | ||||
// if (newVal == 0) { | // if (newVal == 0) { | ||||
// getModeList("", modelPageNum.value, modelPageSize.value); | // getModeList("", modelPageNum.value, modelPageSize.value); | ||||
@@ -869,7 +890,7 @@ const title = | |||||
const textareaContent = ref(""); | const textareaContent = ref(""); | ||||
function insertIcon() { | function insertIcon() { | ||||
const textarea = document.getElementById("textInputId"); | const textarea = document.getElementById("textInputId"); | ||||
const icon = "🕗"; // 这里使用了一个星星作为示例图标,你可以替换为你自己的图标 | |||||
const icon = "🕗"; | |||||
// 获取光标位置 | // 获取光标位置 | ||||
const startPos = textarea.selectionStart; | const startPos = textarea.selectionStart; | ||||
const endPos = textarea.selectionEnd; | const endPos = textarea.selectionEnd; | ||||
@@ -887,6 +908,31 @@ function insertIcon() { | |||||
const language = ref(""); //选择的语言 | const language = ref(""); //选择的语言 | ||||
const sound = ref(""); // 选择的声音 | const sound = ref(""); // 选择的声音 | ||||
const soundStyle = ref(""); //选择的风格 | const soundStyle = ref(""); //选择的风格 | ||||
// 输入文字判断语种 | |||||
const getLanguageTimeOut = ref(false); //定时器 | |||||
watch( | |||||
() => textareaContent.value, | |||||
() => { | |||||
clearTimeout(getLanguageTimeOut.value); | |||||
getLanguageTimeOut.value = setTimeout(async () => { | |||||
try { | |||||
const data = { | |||||
paperwork: textareaContent.value, | |||||
}; | |||||
const res = await getLanguageApi(data); | |||||
if (res.code == 200) { | |||||
language.value = res.data.id; | |||||
} | |||||
} catch (error) {} | |||||
}, 1500); | |||||
} | |||||
); | |||||
watch( | |||||
() => language.value, | |||||
() => { | |||||
chooseType(); | |||||
} | |||||
); | |||||
// 语言下拉框内容 | // 语言下拉框内容 | ||||
const languageOptions = ref([]); | const languageOptions = ref([]); | ||||
async function voiceTotal() { | async function voiceTotal() { | ||||
@@ -481,6 +481,7 @@ const checkVideoStatus = async () => { | |||||
// 如果列表中没有生成中的视频,不发送请求 | // 如果列表中没有生成中的视频,不发送请求 | ||||
const intervalId = setInterval(async () => { | const intervalId = setInterval(async () => { | ||||
// && notGenerateList2.value.length == 0; | // && notGenerateList2.value.length == 0; | ||||
console.log(""); | |||||
if (notGenerateList.value.length == 0) { | if (notGenerateList.value.length == 0) { | ||||
return; | return; | ||||
} | } | ||||
@@ -509,7 +510,7 @@ onMounted(() => { | |||||
isLoading.value = true; | isLoading.value = true; | ||||
getPhotoVideoList(pageNum.value, pageSize.value, title.value); | getPhotoVideoList(pageNum.value, pageSize.value, title.value); | ||||
// checkVideoStatus(); | |||||
checkVideoStatus(); | |||||
}); | }); | ||||
//#endregion --------------------------- | //#endregion --------------------------- | ||||
</script> | </script> | ||||