|
@@ -1,7 +1,146 @@
|
|
|
<script setup lang='ts'>
|
|
|
+import request from '~/request'
|
|
|
+import { showFailToast, showSuccessToast, showDialog } from 'vant';
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+
|
|
|
+function onClickLeft() {
|
|
|
+ router.back()
|
|
|
+}
|
|
|
+
|
|
|
+const form = reactive({
|
|
|
+ // axa_sycj_zdysyid_v2: undefined,
|
|
|
+ axi_name: undefined,
|
|
|
+ mode: '2',
|
|
|
+ file: undefined,
|
|
|
+ axi_rxcj_spwj_v2: undefined,
|
|
|
+})
|
|
|
+function onSubmit() {
|
|
|
+ request({
|
|
|
+ url: '/aimooc/xnszr_img/add',
|
|
|
+ data: {
|
|
|
+ aimooc_xnszr_audio: {
|
|
|
+ axi_is_system: 2,
|
|
|
+ axi_name: form.axi_name,
|
|
|
+ axi_rxcj_spwj_v2: form.axi_rxcj_spwj_v2,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).then((res: any) => {
|
|
|
+ const info = res.data.one_info
|
|
|
+ console.log('info : ', info)
|
|
|
+ if (res?.code === '1') {
|
|
|
+ showDialog({
|
|
|
+ title: '提示',
|
|
|
+ message: '提交成功',
|
|
|
+ confirmButtonText: '返回首页',
|
|
|
+ }).then(() => {
|
|
|
+ router.back()
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ showDialog({
|
|
|
+ title: '提示',
|
|
|
+ message: res?.msg,
|
|
|
+ confirmButtonText: '重新提交',
|
|
|
+ }).then(() => {
|
|
|
+ onSubmit()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // router.back()
|
|
|
+ })
|
|
|
+};
|
|
|
+
|
|
|
+function afterRead(file: any) {
|
|
|
+ file.status = 'uploading';
|
|
|
+ file.message = '上传中...';
|
|
|
+ console.log('文件类型 : ', file.file.type)
|
|
|
+ // form.axi_rxcj_spwj_v2 = file.content
|
|
|
+ request({
|
|
|
+ url: '/upload/main/file',
|
|
|
+ data: {
|
|
|
+ filedata: file.file
|
|
|
+ },
|
|
|
+ transformRequest: [
|
|
|
+ function (data: any) {
|
|
|
+ const formData = new FormData();
|
|
|
+ Object.keys(data).forEach(key => formData.append(key, data[key]))
|
|
|
+ return formData;
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ }).then((res: any) => {
|
|
|
+ console.log('res : ', res)
|
|
|
+ if (res?.code === '1') {
|
|
|
+ form.axi_rxcj_spwj_v2 = res.data.url
|
|
|
+ file.status = 'finished';
|
|
|
+ file.message = '上传成功';
|
|
|
+ } else {
|
|
|
+ showFailToast(res?.msg)
|
|
|
+ file.status = 'failed';
|
|
|
+ file.message = '上传失败';
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function changeMode(name: string) {
|
|
|
+ if (form.axi_rxcj_spwj_v2) {
|
|
|
+ form.file = undefined
|
|
|
+ form.axi_rxcj_spwj_v2 = undefined
|
|
|
+ }
|
|
|
+ if (name === '2') {
|
|
|
+ try {
|
|
|
+ navigator?.mediaDevices
|
|
|
+ ?.getUserMedia({ video: true })
|
|
|
+ ?.catch(() => {
|
|
|
+ showDialog({
|
|
|
+ title: '提示',
|
|
|
+ message: '请在设置中打开相机权限,如果已经打开依然提示说明您的浏览器不支持',
|
|
|
+ });
|
|
|
+ form.mode = '1'
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ showDialog({
|
|
|
+ title: '提示',
|
|
|
+ message: '请在设置中打开相机权限,如果已经打开依然提示说明您的浏览器不支持',
|
|
|
+ });
|
|
|
+ form.mode = '1'
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <div></div>
|
|
|
+ <van-nav-bar title="选择人像采集模式" left-arrow @click-left="onClickLeft"></van-nav-bar>
|
|
|
+ <div class="flex-auto py-4 ">
|
|
|
+ <van-form class="h-full flex flex-col" @submit="onSubmit">
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field v-model="form.axi_name" name="请输入数字人名称" label="数字人名称" placeholder=""
|
|
|
+ :rules="[{ required: true, message: '数字人名称不能为空' }]" />
|
|
|
+ <van-field name="请选择人像采集模式" label="人像采集模式">
|
|
|
+ <template #input>
|
|
|
+ <van-radio-group v-model="form.mode" @change="changeMode">
|
|
|
+ <van-radio name="2">已有录制,上传视频</van-radio>
|
|
|
+ <van-radio class="mt-14px" name="1">手机录制</van-radio>
|
|
|
+ </van-radio-group>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <van-field v-if="form.mode === '1'" name="录制视频" label="录制视频" :rules="[{ required: true, message: '录制视频不能为空' }]">
|
|
|
+ <template #input>
|
|
|
+ <van-uploader v-model="form.file" :max-count="1" accept="video/*" capture="user" :after-read="afterRead" />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <van-field v-if="form.mode === '2'" name="上传视频" label="上传视频" :rules="[{ required: true, message: '上传视频不能为空' }]">
|
|
|
+ <template #input>
|
|
|
+ <van-uploader v-model="form.file" :max-count="1" accept="video/*" :after-read="afterRead" />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+
|
|
|
+ </van-cell-group>
|
|
|
+ <div class="px-4 mt-20">
|
|
|
+ <van-button block type="primary" native-type="submit">
|
|
|
+ 提交
|
|
|
+ </van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+ </div>
|
|
|
</template>
|