JLBA202505130001_关于吉林银行新建AI智能培训系统的需求_合并冲突

This commit is contained in:
田岩
2026-03-09 17:22:40 +08:00
7 changed files with 126 additions and 15 deletions
+2 -1
View File
@@ -5,7 +5,8 @@ ENV = 'development'
#VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001'
#VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7003'
# DEV
@@ -222,7 +222,7 @@
// 方法
const uploadNow = (limit = 4) => {
if(!isImg.value){
if(isImg.value || fileList.value === 0){
upload(limit)
}else{
common.show('','是否清空当前表情并重新添加?').then((res) => {
@@ -302,7 +302,8 @@
imgIdList: fileList.value, // 发表图片ID列表,文件ID集
bbsGrade: bbsGrade.value, // 综合评分(最高10分)
bbsTag: bbsTag.value, // 评价标签 (SUG 建议 ASK 提问 )
bbsContent: value.value // 评价内容
bbsContent: value.value, // 评价内容
imgTyp: isImg.value? '01':'02'
}
publishCrsEvaluation(_params).then((res) => {
const loadingDuration = Date.now() - loadingStartTime;
+86
View File
@@ -0,0 +1,86 @@
<template>
<view
v-html="videoHtml"
id="dom-video"
class="dom-video"
/>
</template>
<script>
export default {
name: "sqVideo",
props: {
src: {
type: String,
required: true
},
controls: {
type: Boolean,
default: false
},
autoplay: {
type: Boolean,
default: false
},
muted: {
type: Boolean,
default: false
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: 'auto'
},
borderRadius: {
type: String,
default: '0px'
},
loop: {
type: Boolean,
default: false
},
poster: {
type: String,
default: ''
}
},
data() {
return {
videoHtml:'',
randomStr: Math.floor(Math.random() * 1000) + '-' + Math.floor(Math.random() * 1000)
}
},
mounted() {
this.initVideoHtml()
},
methods: {
// 初始化视频
initVideoHtml() {
this.videoHtml = `<video
src="${this.src}"
id="dom-html-video_${this.randomNum}"
class="dom-html-video"
${this.autoplay ? 'autoplay' : ''}
${this.loop ? 'loop' : ''}
${this.controls ? 'controls' : ''}
${this.muted ? 'muted' : ''}
${this.poster ? 'poster="' + this.poster + '"' : ''}
preload="auto"
playsinline
webkit-playsinline
width="100%"
height="100%"
style="object-fit: contain;padding:0;border-radius:${this.borderRadius}"
>
<source src="${this.src}" type="video/mp4">
<source src="${this.src}" type="video/ogg">
<source src="${this.src}" type="video/webm">
</video>
`
},
}
}
</script>
@@ -1,8 +1,15 @@
<template>
<uni-popup ref="PopupRef" class="popup" mask-background-color="rgba(0,0,0,.2)" @change="changeShow">
<view class="overlay-box" @click="playEnded" v-if="fileType === 'video'">
<video class="video-cont-center" :id="`video`+ fileId" ref="playerRef" v-if="showModel && fileUrlShow"
:src="fileUrlShow +'&type=.mp4'" :controls="true" @error="playError" @ended="playEnded" object-fit="contain"></video>
<video class="video-cont-center" :id="`video`+ fileId" ref="playerRef" v-if="fileUrlShow"
:src="fileUrlShow"
:header="{
summary: token
}"
:controls="true" @error="playError" @ended="playEnded" object-fit="contain"></video>
<!-- <IVideo class="video-cont-bottom" :id="`ivideo`+ fileId" ref="iplayerRef"
:src="fileUrlShow"
:controls="true"></IVideo> -->
</view>
<view class="overlay-box" @click="playEnded" @touchmove.stop v-if="fileType === 'image'">
<movable-area scale-area class="detail-movable">
@@ -42,10 +49,12 @@
import {
getToken
} from '@/common/common.js'
import IVideo from './i-video.vue'
export default {
name: "video-preview",
components: {
imagePreviewVue
imagePreviewVue,
IVideo
},
props: {
// fileId:{
@@ -98,6 +107,9 @@
isBase() {
return this.storageStore?.getIsBase
},
token() {
return getToken()
}
},
watch: {
fileId: {
@@ -316,6 +328,14 @@
left: 50%;
transform: translate(-50%, -50%);
}
.overlay-box .video-cont-bottom {
width: 100vw;
max-height: 100%;
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
}
.overlay-box {
position: fixed;
+5 -3
View File
@@ -341,9 +341,11 @@
isGettingPermission.value = false
}, 1000)
unref(recordObjCom).stop();
setTimeout(() => {
closeModel()
}, 300)
if(!transVoiceIng.value){
setTimeout(() => {
closeModel()
}, 300)
}
} else {
isGettingPermission.value = false
closeModel();
@@ -30,7 +30,7 @@
<view class="img_div pic-cell">
<image-preview
v-for="img in item.imgIdList"
@click="showPicture(item.imgIdList, img)"
@click="showPicture(item.imgIdList, img,item)"
:src="img"
class="pic-item"
mode="scaleToFill"
@@ -223,7 +223,8 @@
};
// 大图展示
const showPicture = (urls, item) => {
const showPicture = (urls, item, itemInfo) => {
if(itemInfo.imgTyp === '02') return
const base_url = get_base_url();
const current = urls.findIndex((res) => item === res);
if (current === -1) {
@@ -231,7 +232,6 @@
}
const token = getToken()
const urlsList = urls.map((res) => base_url + res+'?tk='+ token);
console.log(urlsList, current);
uni.previewImage({
current: current || 0,
urls: urlsList,
+4 -3
View File
@@ -868,9 +868,10 @@
// #ifdef APP-PLUS
isIos = plus.os.name == 'iOS';
// #endif
return isIos || keyBoardIsHide.value
? 0 + 'px'
: parseInt(keyboardHeight.value) + parseInt(bottomHeight.value) + 'px';
return 0 + 'px'
// return isIos || keyBoardIsHide.value
// ? 0 + 'px'
// : parseInt(keyboardHeight.value) + parseInt(bottomHeight.value) + 'px';
});
const changeAppHeightBottom = (height) => {
//#ifdef APP-PLUS