Compare commits

..

No commits in common. "2f496b8b8c128db3a68684fb3a645ccb173607ce" and "359fb74a995bda1b5b18f0f3c91615d188686817" have entirely different histories.

6 changed files with 413 additions and 308 deletions

View File

@ -642,17 +642,6 @@ 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

@ -1416,8 +1416,6 @@ function handleCallYinyong(record) {
var zyid = zyInfo.value.id;//id var zyid = zyInfo.value.id;//id
var createBy = zyInfo.value.createBy;//id var createBy = zyInfo.value.createBy;//id
var rwbh = zyInfo.value.rwbh;//id var rwbh = zyInfo.value.rwbh;//id
var kcmc = zyInfo.value.kcmc;//id
var xkrs = zyInfo.value.xkrs;//id
record.id = zyid; record.id = zyid;
record.sort = zysort; record.sort = zysort;
record.atype = "6";// record.atype = "6";//
@ -1426,16 +1424,14 @@ function handleCallYinyong(record) {
zyInfo.value = record; zyInfo.value = record;
zyInfo.value.createBy = createBy zyInfo.value.createBy = createBy
zyInfo.value.rwbh = rwbh zyInfo.value.rwbh = rwbh
zyInfo.value.xkrs = xkrs;
zyInfo.value.kcmc = kcmc;
console.log('😠', zyInfo); console.log('😠', zyInfo);
// defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId', params: { id: yyzyid } }).then((res) => { defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId', params: { id: yyzyid } }).then((res) => {
// console.log('🥴', res); console.log('🥴', res);
// tiganData.value = res; tiganData.value = res;
// console.log('🧞1111111111', tiganData.value); console.log('🧞1111111111', tiganData.value);
// }); });
} }

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" class="ccsz-main"> <a-form-item layout="inline" style="margin-left: 100px">
<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-if="formData.pyContent || formData.pyFilePath"> <a-col v-show="formData.pyContent || formData.pyFilePath|| formData.score">
<div class="wrapper-back"> <div class="wrapper-back">
<div class="wrapper-title">批阅信息</div> <div class="wrapper-title">批阅信息</div>
<a-row> <a-row>
@ -96,6 +96,9 @@
<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>
@ -155,8 +158,12 @@ 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);
@ -166,6 +173,7 @@ 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']);
@ -283,11 +291,61 @@ 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
})
}
}); });
} }
@ -385,30 +443,11 @@ 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,11 +2,20 @@
<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 :span="12"> <a-col :push="leftSpan - 1" :span="0" :lg="{ span: 1 }">
<div v-if="showType=='1'"> <!-- <a-button style="margin-left: 28px;" type="primary" @click="changeSpan" size="small">{{ leftSpan == 12? '放大' : '缩小' }}</a-button> -->
<iframe id="pdfPreviewIframe" :src="ylurl" frameborder="0" width="100%" height="550px" scrolling="auto"></iframe> <img v-show="leftSpan == 12" @click="changeSpan" style="width: 25px;margin-left: 50px;cursor: pointer;"
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-else-if="showType=='2'"> <div v-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>
@ -16,24 +25,18 @@
<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-else-if="showType=='3'"> <div v-if="showType == '3'">
<div class="video-container"> <div class="video-container">
<video <video ref="videoPlayer" :controls="controls" :autoplay="autoplay" :loop="loop" :src="videoUrl"
ref="videoPlayer" @loadedmetadata="playVideoInFullscreen">
: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 :span="12"> <a-col :xs="24" :lg="rightSpan">
<a-row> <a-row>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="作业名称"> <a-form-item label="作业名称">
@ -45,6 +48,11 @@
{{ 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>
@ -57,7 +65,8 @@
</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="`上传批阅附件`" style="background: #ededed; " :forceAcceptVerify="true" ></j-upload> <j-upload v-model:value="formData.pyFilePath" maxCount="1" :text="`上传批阅附件`"
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">
@ -86,7 +95,12 @@
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: () => { } },
@ -105,7 +119,7 @@ import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
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>('0'); const showType = ref<string>('1');
const ylurl = ref<string>(''); const ylurl = ref<string>('');
const rotationAngle = ref(0); const rotationAngle = ref(0);
const zyInfo = ref<any>({}); const zyInfo = ref<any>({});
@ -118,7 +132,23 @@ const videoOpen = ref<boolean>(false);
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 = {
@ -182,6 +212,8 @@ function rotateImage2() {
* 编辑 * 编辑
*/ */
function edit(record) { function edit(record) {
record_.value = record
showType.value = '1';
formData.pyContent = '' formData.pyContent = ''
nextTick(() => { nextTick(() => {
resetFields(); resetFields();
@ -193,32 +225,71 @@ function rotateImage2() {
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); // var file = getFileAccessHttpUrl(record.filePath);
ylurl.value = file; // ylurl.value = file;
let wpsType = "w";
if (filetype == 'jpg' || filetype == 'png' || filetype == 'jpeg' || filetype == 'xls' || filetype == 'xlsx' || filetype == 'text') { if (filetype == 'jpg' || filetype == 'png' || filetype == 'jpeg' || filetype == 'xls' || filetype == 'xlsx' || filetype == 'text') {
showType.value = '2'; showType.value = '2';
}else if(filetype=='doc' || filetype=='docx' || filetype=='pdf'){ var file = getFileAccessHttpUrl(record.filePath);
ylurl.value = file;
} else if (filetype == 'doc' || filetype == 'docx') {
showType.value = '1'; showType.value = '1';
var file2 = getFileAccessHttpUrl(record.pdfPath); wpsType = "w";
let url2 = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(file2); } else if (filetype == 'pdf') {
ylurl.value = url2; 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";
} 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 = () => {
@ -376,28 +447,38 @@ function handleVideo(three){
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; /* 设置容器高度 */ /* 设置容器宽度 */
overflow: hidden; /* 隐藏溢出的部分 */ height: auto;
/* 设置容器高度 */
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%; /* 最大高度为容器高度 */ /* 最大宽度为容器宽度 */
object-fit: contain; /* 保持图片内容不失真 */ max-height: 100%;
transform: rotate(90deg); /* 假设图片已经旋转90度 */ /* 最大高度为容器高度 */
object-fit: contain;
/* 保持图片内容不失真 */
transform: rotate(90deg);
/* 假设图片已经旋转90度 */
} }
</style> </style>