congzc il y a 1 an
Parent
révision
837db768cd
6 fichiers modifiés avec 78 ajouts et 4 suppressions
  1. +2
    -1
      .env.development
  2. +13
    -0
      src/apis/createVideo.js
  3. +4
    -0
      src/types/auto-imports.d.ts
  4. +9
    -0
      src/types/components.d.ts
  5. +48
    -2
      src/views/createVideo/index.vue
  6. +2
    -1
      src/views/myCreating/index.vue

+ 2
- 1
.env.development Voir le fichier

@@ -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'



+ 13
- 0
src/apis/createVideo.js Voir le fichier

@@ -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
})
}

+ 4
- 0
src/types/auto-imports.d.ts Voir le fichier

@@ -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']>


+ 9
- 0
src/types/components.d.ts Voir le fichier

@@ -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']


+ 48
- 2
src/views/createVideo/index.vue Voir le fichier

@@ -218,7 +218,7 @@
> >
&lt; &lt;
</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() {


+ 2
- 1
src/views/myCreating/index.vue Voir le fichier

@@ -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>


Chargement…
Annuler
Enregistrer