修改bug

This commit is contained in:
yangjun 2025-01-06 08:54:25 +08:00
parent c1c10ed4fe
commit 2f496b8b8c
5 changed files with 296 additions and 405 deletions

View File

@ -642,6 +642,17 @@ function uploadFn(customRequestData) {
let fileSize = file.size; let fileSize = file.size;
let uploadPromiseList = []; let uploadPromiseList = [];
console.log("🚀 ~ uploadFn ~ fileSize:", fileSize)
if(fileSize>1024*1024*20){
let jjj = {success:false,code:0,message:'文件大小不能超过200M请重新上传',result:null,timestamp:new Date().getTime()}
setTimeout(() => {
onError(jjj, jjj, file);
}, 1000);
return;
}
if (fileSize <= chunkSize) { if (fileSize <= chunkSize) {
let formData = new FormData(); let formData = new FormData();
Object.keys(data).forEach((key) => { Object.keys(data).forEach((key) => {

View File

@ -175,11 +175,11 @@
function handleChangeCheckCode() { function handleChangeCheckCode() {
formData.inputCode = ''; formData.inputCode = '';
//TODO mock //TODO mock
randCodeData.checkKey = 1629428467008; //new Date().getTime(); // randCodeData.checkKey = 1629428467008; //new Date().getTime();
getCodeInfo(randCodeData.checkKey).then((res) => { // getCodeInfo(randCodeData.checkKey).then((res) => {
randCodeData.randCodeImage = res; // randCodeData.randCodeImage = res;
randCodeData.requestCodeSuccess = true; // randCodeData.requestCodeSuccess = true;
}); // });
} }
/** /**

View File

@ -199,11 +199,11 @@
function handleChangeCheckCode() { function handleChangeCheckCode() {
formData.inputCode = ''; formData.inputCode = '';
randCodeData.checkKey = 1629428467008; // randCodeData.checkKey = 1629428467008;
getCodeInfo(randCodeData.checkKey).then((res) => { // getCodeInfo(randCodeData.checkKey).then((res) => {
randCodeData.randCodeImage = res; // randCodeData.randCodeImage = res;
randCodeData.requestCodeSuccess = true; // randCodeData.requestCodeSuccess = true;
}); // });
} }
/** /**

View File

@ -47,7 +47,7 @@
</div> </div>
<a-col :span="24" v-if="formData.wwtgl" class="wrapper-back"> <a-col :span="24" v-if="formData.wwtgl" class="wrapper-back">
<div class="wrapper-title">查重设置</div> <div class="wrapper-title">查重设置</div>
<a-form-item layout="inline" style="margin-left: 100px"> <a-form-item layout="inline" class="ccsz-main">
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3"> <a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<span style="padding: 7px 10px"></span> <span style="padding: 7px 10px"></span>
<a-input-number v-model:value="formData.wwtgl" placeholder="检测通过率" style="width: 60%" :max="100" :min="0" disabled> <a-input-number v-model:value="formData.wwtgl" placeholder="检测通过率" style="width: 60%" :max="100" :min="0" disabled>
@ -81,7 +81,7 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col v-show="formData.pyContent || formData.pyFilePath|| formData.score"> <a-col v-if="formData.pyContent || formData.pyFilePath">
<div class="wrapper-back"> <div class="wrapper-back">
<div class="wrapper-title">批阅信息</div> <div class="wrapper-title">批阅信息</div>
<a-row> <a-row>
@ -96,9 +96,6 @@
<a-button type="primary" style="margin-left: 10px" @click="downLoad(formData.pyFilePath)">下载</a-button> <a-button type="primary" style="margin-left: 10px" @click="downLoad(formData.pyFilePath)">下载</a-button>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-show="showType == '1'">
<div class="wps-iframe" id="wpsiframeid" style="width:100%;height: 500px;"></div>
</a-col>
</a-row> </a-row>
</div> </div>
</a-col> </a-col>
@ -158,12 +155,8 @@ import { useRouter } from 'vue-router';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue'; import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import WebOfficeSDK from '/@/views/zy/zyInfoStudent/components/wpsApi/web-office-sdk-solution-v2.0.7.es'
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
// //
const { currentRoute } = useRouter(); const { currentRoute } = useRouter();
const { query } = unref(currentRoute); const { query } = unref(currentRoute);
@ -173,7 +166,6 @@ const props = defineProps({
formData: { type: Object, default: () => {} }, formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true }, formBpm: { type: Boolean, default: true },
}); });
const showType = ref<string>('0');
const formRef = ref(); const formRef = ref();
const useForm = Form.useForm; const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']); const emit = defineEmits(['register', 'ok']);
@ -291,61 +283,11 @@ function add() {
* 编辑 * 编辑
*/ */
function edit(record) { function edit(record) {
console.log("🚀 ~ edit ~ record:", record)
nextTick(() => { nextTick(() => {
resetFields(); resetFields();
// //
Object.assign(formData, record); Object.assign(formData, record);
handleKcnr(formData.kcnr); handleKcnr(formData.kcnr);
const parts = record.stuFilePath.split('.');
const filetype = parts[parts.length - 1];
console.log(`🚀 ~ nextTick ~ filetype:`, filetype)
let wpsType = "w";
if(filetype=='doc' || filetype=='docx'){
showType.value = '1';
wpsType = "w";
}else if(filetype=='pdf'){
showType.value = '1';
wpsType = "f";
}else if(filetype=='ppt' || filetype=='pptx' ){
showType.value = '1';
wpsType = "p";
}else if(filetype=='xls' || filetype=='xlsx' ){
showType.value = '1';
wpsType = "s";
}
if(showType.value == '1'){
const element = document.getElementById('wpsiframeid');
console.log('userStore.getUserInfo',userStore.getUserInfo)
formData.id = '1863389832580046849';
//
element.innerHTML = '';
const jssdk = WebOfficeSDK.init({
officeType: wpsType,
appId: 'SX20241118WSUGQN',
// fileId: formData.stuId,
fileId: formData.id,
mount:document.querySelector('.wps-iframe'),
commonOptions: {
isShowDocMap: false, //
isShowTopArea: false, //
isShowHeader: false, //
isBrowserViewFullscreen: true, //
isIframeViewFullscreen: true, // iframe
acceptVisualViewportResizeEvent: true // WebOffice VisualViewport
},
wordOptions: {
isShowDocMap: false, //
isBestScale: true, //
isShowBottomStatusBar: false, //
},
token: userStore.getUserInfo.username
})
}
}); });
} }
@ -443,11 +385,30 @@ defineExpose({
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
//
@media (max-width: 768px) {
.ccsz-main{}
.antd-modal-form {
min-height: 300px !important;
overflow-y: auto;
padding: 5px 5px 5px 5px;
}
}
//
@media (min-width: 769px) {
.ccsz-main{
margin-left: 100px;
}
.antd-modal-form { .antd-modal-form {
min-height: 300px !important; min-height: 300px !important;
overflow-y: auto; overflow-y: auto;
padding: 24px 24px 24px 24px; padding: 24px 24px 24px 24px;
} }
}
.spanSm { .spanSm {
top: -22px; top: -22px;
position: inherit; position: inherit;

View File

@ -2,20 +2,11 @@
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row> <a-row>
<a-col :push="leftSpan - 1" :span="0" :lg="{ span: 1 }"> <a-col :span="12">
<!-- <a-button style="margin-left: 28px;" type="primary" @click="changeSpan" size="small">{{ leftSpan == 12? '放大' : '缩小' }}</a-button> --> <div v-if="showType=='1'">
<img v-show="leftSpan == 12" @click="changeSpan" style="width: 25px;margin-left: 50px;cursor: pointer;" <iframe id="pdfPreviewIframe" :src="ylurl" frameborder="0" width="100%" height="550px" scrolling="auto"></iframe>
src="/resource/img/toright.png" />
<img v-show="leftSpan != 12" @click="changeSpan" style="width: 25px;margin-left: 50px;cursor: pointer;"
src="/resource/img/toleft.png" />
</a-col>
</a-row>
<a-row>
<a-col :xs="24" :lg="leftSpan">
<div v-show="showType == '1'">
<div class="wps-iframe" id="wpsiframeid" style="width:100%;height: 500px;"></div>
</div> </div>
<div v-if="showType == '2'"> <div v-else-if="showType=='2'">
<div style="padding: 10px 20px;"> <div style="padding: 10px 20px;">
<a-button type="primary" @click="rotateImage">顺时针旋转</a-button> <a-button type="primary" @click="rotateImage">顺时针旋转</a-button>
<a-button type="primary" @click="rotateImage2" style="margin-left: 20px;">逆时针旋转</a-button> <a-button type="primary" @click="rotateImage2" style="margin-left: 20px;">逆时针旋转</a-button>
@ -25,18 +16,24 @@
<img :src="ylurl" :style="{ transform: 'rotate(' + rotationAngle + 'deg)' }" class="rotated-image"/> <img :src="ylurl" :style="{ transform: 'rotate(' + rotationAngle + 'deg)' }" class="rotated-image"/>
</div> </div>
</div> </div>
<div v-if="showType == '3'"> <div v-else-if="showType=='3'">
<div class="video-container"> <div class="video-container">
<video ref="videoPlayer" :controls="controls" :autoplay="autoplay" :loop="loop" :src="videoUrl" <video
@loadedmetadata="playVideoInFullscreen"> ref="videoPlayer"
:controls="controls"
:autoplay="autoplay"
:loop="loop"
:src="videoUrl"
@loadedmetadata="playVideoInFullscreen"
>
</video> </video>
</div> </div>
</div> </div>
<!-- <div v-else> <div v-else>
<a-button type="primary">下载文件</a-button> <a-button type="primary">下载文件</a-button>
</div> --> </div>
</a-col> </a-col>
<a-col :xs="24" :lg="rightSpan"> <a-col :span="12">
<a-row> <a-row>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="作业名称"> <a-form-item label="作业名称">
@ -48,11 +45,6 @@
{{formData.studentName}} {{formData.studentName}}
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24">
<a-form-item label="学生学号">
{{ formData.createBy }}
</a-form-item>
</a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="评分" v-bind="validateInfos.score"> <a-form-item label="评分" v-bind="validateInfos.score">
<a-input-number v-model:value="formData.score" style="width: 100%" placeholder="请填写评分" ></a-input-number> <a-input-number v-model:value="formData.score" style="width: 100%" placeholder="请填写评分" ></a-input-number>
@ -65,8 +57,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="批阅附件" v-bind="validateInfos.pyFilePath"> <a-form-item label="批阅附件" v-bind="validateInfos.pyFilePath">
<j-upload v-model:value="formData.pyFilePath" maxCount="1" :text="`上传批阅附件`" <j-upload v-model:value="formData.pyFilePath" maxCount="1" :text="`上传批阅附件`" style="background: #ededed; " :forceAcceptVerify="true" ></j-upload>
style="background: #ededed; " :forceAcceptVerify="true"></j-upload>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" style="text-align: center;" v-if="disabled"> <a-col :span="24" style="text-align: center;" v-if="disabled">
@ -95,12 +86,7 @@ import JEditor from '/@/components/Form/src/jeecg/components/JEditor.vue';
import { useGlobSetting } from '/@/hooks/setting'; import { useGlobSetting } from '/@/hooks/setting';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { getToken } from '/@/utils/auth'; import { getToken } from '/@/utils/auth';
import WebOfficeSDK from './wpsApi/web-office-sdk-solution-v2.0.7.es'
import { useUserStore } from '/@/store/modules/user';
const leftSpan = ref(12)
const rightSpan = ref(12)
const userStore = useUserStore();
const props = defineProps({ const props = defineProps({
formDisabled: { type: Boolean, default: false }, formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: ()=>{} }, formData: { type: Object, default: ()=>{} },
@ -119,7 +105,7 @@ const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } }); const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
const confirmLoading = ref<boolean>(false); const confirmLoading = ref<boolean>(false);
const showType = ref<string>('1'); const showType = ref<string>('0');
const ylurl = ref<string>(''); const ylurl = ref<string>('');
const rotationAngle = ref(0); const rotationAngle = ref(0);
const zyInfo = ref<any>({}); const zyInfo = ref<any>({});
@ -132,23 +118,7 @@ const controls = ref(true);
const autoplay = ref(false) const autoplay = ref(false)
const loop = ref(false); const loop = ref(false);
const videoUrl = ref<String>(''); const videoUrl = ref<String>('');
const jssdkInfo = ref<any>({});
const record_ = ref(null)
function changeSpan() {
console.log('leftSpan', leftSpan.value)
console.log('rightSpan', rightSpan.value)
if (leftSpan.value == 12) {
leftSpan.value = 18
rightSpan.value = 6
} else {
leftSpan.value = 12
rightSpan.value = 12
}
console.log('leftSpan--》', leftSpan.value)
console.log('rightSpan--》', rightSpan.value)
edit(record_.value)
}
// //
const validatorRules = { const validatorRules = {
@ -212,8 +182,6 @@ function add() {
* 编辑 * 编辑
*/ */
function edit(record) { function edit(record) {
record_.value = record
showType.value = '1';
formData.pyContent = '' formData.pyContent = ''
nextTick(() => { nextTick(() => {
resetFields(); resetFields();
@ -225,72 +193,33 @@ function edit(record) {
const parts = record.filePath.split('.'); const parts = record.filePath.split('.');
const filetype = parts[parts.length - 1]; const filetype = parts[parts.length - 1];
console.log(`🚀 ~ nextTick ~ filetype:`, filetype) console.log(`🚀 ~ nextTick ~ filetype:`, filetype)
// var file = getFileAccessHttpUrl(record.filePath);
// ylurl.value = file;
let wpsType = "w";
if (filetype == 'jpg' || filetype == 'png' || filetype == 'jpeg' || filetype == 'xls' || filetype == 'xlsx' || filetype == 'text') {
showType.value = '2';
var file = getFileAccessHttpUrl(record.filePath); var file = getFileAccessHttpUrl(record.filePath);
ylurl.value = file; ylurl.value = file;
} else if (filetype == 'doc' || filetype == 'docx') { if(filetype=='jpg' || filetype=='png' || filetype=='jpeg' || filetype=='xls' || filetype=='xlsx' || filetype=='text' ){
showType.value = '2';
}else if(filetype=='doc' || filetype=='docx' || filetype=='pdf'){
showType.value = '1'; showType.value = '1';
wpsType = "w"; var file2 = getFileAccessHttpUrl(record.pdfPath);
} else if (filetype == 'pdf') { let url2 = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(file2);
showType.value = '1'; ylurl.value = url2;
wpsType = "f";
} else if (filetype == 'ppt' || filetype == 'pptx') {
showType.value = '1';
wpsType = "p";
} else if (filetype == 'xls' || filetype == 'xlsx') {
showType.value = '1';
wpsType = "s";
}else if(filetype=='mp4'|| filetype=='avi'|| filetype=='mp3'|| filetype=='wav'){ }else if(filetype=='mp4'|| filetype=='avi'|| filetype=='mp3'|| filetype=='wav'){
showType.value = '3'; showType.value = '3';
let url = getFileAccessHttpUrl(record.filePath); let url = getFileAccessHttpUrl(record.filePath);
console.log('视频预览-----》',url); console.log('视频预览-----》',url);
// videoOpen.value = true; // videoOpen.value = true;
videoUrl.value = url; videoUrl.value = url;
}else{ }else{
showType.value = '0'; showType.value = '0';
} }
// //
Object.assign(formData, record); Object.assign(formData, record);
formData.id = '1863389832580046849';
console.log("🚀 ~ nextTick ~ formData.id:", formData.id)
if (showType.value == '1') {//
const element = document.getElementById('wpsiframeid');
//
element.innerHTML = '';
const jssdk = WebOfficeSDK.init({
officeType: wpsType,
appId: 'SX20241118WSUGQN',
fileId: formData.id,
mount: document.querySelector('.wps-iframe'),
commonOptions: {
isShowDocMap: false, //
// isShowTopArea: false, //
// isShowHeader: false, //
isBrowserViewFullscreen: true, //
isIframeViewFullscreen: true, // iframe
acceptVisualViewportResizeEvent: true // WebOffice VisualViewport
},
wordOptions: {
isShowDocMap: false, //
isBestScale: true, //
isShowBottomStatusBar: false, //
},
token: userStore.getUserInfo.username
})
}
}); });
console.log("🚀 ~ nextTick ~ userStore.getUserInfo.id:", userStore.getUserInfo.id)
console.log("🚀 ~ nextTick ~ userStore.getUserInfo.id:", userStore.getUserInfo.id)
console.log("🚀 ~ nextTick ~ userStore.getUserInfo.id:", userStore.getUserInfo.id)
} }
// -------------------------------------------------------- // --------------------------------------------------------
const playVideo = () => { const playVideo = () => {
videoPlayer.value.play(); videoPlayer.value.play();
@ -447,38 +376,28 @@ defineExpose({
overflow-y: auto; overflow-y: auto;
padding: 24px 24px 24px 24px; padding: 24px 24px 24px 24px;
} }
.video-container { .video-container {
text-align: center; text-align: center;
} }
video { video {
display: block; display: block;
max-width: 100%; max-width: 100%; /* 确保视频宽度不超过其容器宽度 */
/* 确保视频宽度不超过其容器宽度 */
} }
.image-container { .image-container {
padding: 10px; padding: 10px;
width: 100%; width:100%; /* 设置容器宽度 */
/* 设置容器宽度 */ height: auto; /* 设置容器高度 */
height: auto; overflow: hidden; /* 隐藏溢出的部分 */
/* 设置容器高度 */
overflow: hidden;
/* 隐藏溢出的部分 */
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.rotated-image { .rotated-image {
max-width: 100%; max-width: 100%; /* 最大宽度为容器宽度 */
/* 最大宽度为容器宽度 */ max-height: 100%; /* 最大高度为容器高度 */
max-height: 100%; object-fit: contain; /* 保持图片内容不失真 */
/* 最大高度为容器高度 */ transform: rotate(90deg); /* 假设图片已经旋转90度 */
object-fit: contain;
/* 保持图片内容不失真 */
transform: rotate(90deg);
/* 假设图片已经旋转90度 */
} }
</style> </style>