Compare commits

..

42 Commits

Author SHA1 Message Date
朱浩 770a847e91 默认窗口最大化 2024-10-19 17:33:11 +08:00
朱浩 6f35ad8a1a Merge branch 'main' into zhuhao_dev
# Conflicts:
#	src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
2024-10-19 17:21:34 +08:00
zouyf 4e7b9f0a82 Merge pull request 'zouyf_dev' (#341) from zouyf_dev into main
Reviewed-on: #341
2024-10-19 17:20:42 +08:00
qinqing 7b4e6d0b10 Merge pull request 'qinqing_dev' (#340) from qinqing_dev into main
Reviewed-on: #340
2024-10-19 17:20:26 +08:00
qinqing 04d2e47882 Merge branch 'main' into qinqing_dev 2024-10-19 17:20:02 +08:00
“zouyf” 17e8e43ad4 Merge branch 'main' into zouyf_dev
# Conflicts:
#	src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
2024-10-19 17:19:09 +08:00
qinqing ea2de75415 百度OCR识别 2024-10-19 17:18:52 +08:00
“zouyf” 38b17333ab 页面优化 2024-10-19 17:17:16 +08:00
baigl d58dff8731 Merge pull request 'baigl' (#339) from baigl into main
Reviewed-on: #339
2024-10-19 17:15:41 +08:00
白了个白 40d83c4cb3 Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into baigl 2024-10-19 17:14:35 +08:00
白了个白 8ba6e15020 作业管理相关修改 2024-10-19 17:14:09 +08:00
朱浩 bddcf2d4ff BUG修复 2024-10-19 17:01:05 +08:00
lyc 8f91be9a4b Merge pull request '默认全屏' (#338) from lyc-dev into main 2024-10-19 16:59:35 +08:00
lyc 75384c8057 默认全屏 2024-10-19 17:00:09 +08:00
朱浩 bed3ef96a7 Merge branch 'main' into zhuhao_dev 2024-10-19 16:59:30 +08:00
qinqing f5497aa856 Merge pull request 'qinqing_dev' (#337) from qinqing_dev into main
Reviewed-on: #337
2024-10-19 16:59:09 +08:00
qinqing 47329aea75 Merge branch 'main' into qinqing_dev 2024-10-19 16:58:44 +08:00
qinqing 52275e1de6 全连接百度ocr识别 2024-10-19 16:58:04 +08:00
朱浩 6fe5ee5703 Merge branch 'main' into zhuhao_dev
# Conflicts:
#	src/renderer/src/views/classTask/classTaskAssign.vue
#	src/renderer/src/views/classTask/teachClassTask.vue
2024-10-19 16:42:36 +08:00
qinqing 8dba05c0d4 Merge pull request 'qinqing_dev' (#336) from qinqing_dev into main
Reviewed-on: #336
2024-10-19 16:31:45 +08:00
qinqing b4fefdd0cf 文字识别全路径,屏蔽评论批注 2024-10-19 16:29:11 +08:00
lyc e4114bf1b4 考试分析-题目详情-增加灰色背景 2024-10-19 16:12:38 +08:00
lyc 95f94f0c3e Merge pull request '考试分析-题目详情-增加灰色背景' (#335) from lyc-dev into main 2024-10-19 16:12:19 +08:00
lyc 4dbb5d2224 考试分析-题目详情增加关闭按钮 2024-10-19 15:59:20 +08:00
lyc 3430ad75ca Merge pull request '考试分析-题目详情增加关闭按钮' (#334) from lyc-dev into main 2024-10-19 15:59:08 +08:00
baigl 388fc2b2b4 Merge pull request 'baigl' (#333) from baigl into main
Reviewed-on: #333
2024-10-19 15:07:35 +08:00
白了个白 1a671d7dd2 作业批改:session缓存出现莫名缓存数据bug修改 2024-10-19 15:04:51 +08:00
白了个白 0d21b1de53 Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into baigl 2024-10-19 14:38:29 +08:00
“zouyf” 0a2d3f54b7 Merge branch 'main' into zouyf_dev 2024-10-19 14:20:34 +08:00
“zouyf” 45c2e35a66 [作业布置] - 修正[课堂展示]中[问题输入框]的保存 2024-10-19 14:19:46 +08:00
朱浩 68de31c569 Merge branch 'main' into zhuhao_dev 2024-10-18 17:12:22 +08:00
朱浩 45485c04fc BUG修复 2024-10-18 17:11:30 +08:00
zhengdegang e8763793a7 Merge pull request 'zdg' (#332) from zdg into main
Reviewed-on: #332
2024-10-18 17:08:45 +08:00
zdg a3b940f138 Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into zdg 2024-10-18 17:06:14 +08:00
zdg 548442f278 作业推送注释掉im消息发送 2024-10-18 17:06:08 +08:00
朱浩 e02f67e3e5 Merge pull request 'zhuhao_dev' (#331) from zhuhao_dev into main
Reviewed-on: #331
2024-10-18 16:34:01 +08:00
zdg d7f17c253d im 日志 2024-10-18 16:09:55 +08:00
zdg ea6c56a401 Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into zdg 2024-10-18 16:09:24 +08:00
白了个白 2bcf780b7b 1 2024-10-18 10:16:25 +08:00
zdg 6be26f19cd Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into zdg 2024-10-17 09:58:37 +08:00
zdg d40873d198 ppt上课发送多次 2024-10-17 09:55:42 +08:00
qinqing 37652cd803 Merge branch 'main' into qinqing_dev 2024-10-14 17:17:55 +08:00
22 changed files with 206 additions and 273 deletions

View File

@ -15,3 +15,5 @@ VITE_APP_UPLOAD_API = 'https://file.ysaix.com:7868/prod-api'
VITE_APP_RES_FILE_PATH = 'https://file.ysaix.com:7868/src/assets/textbook/booktxt/'
VITE_APP_BUILD_BASE_PATH = 'https://file.ysaix.com:7868/'
VITE_SHOW_DEV_TOOLS = 'true'

View File

@ -17,3 +17,5 @@ VITE_BUILD_COMPRESS = gzip
VITE_APP_RES_FILE_PATH = 'https://prev.ysaix.com:7868/src/assets/textbook/booktxt/'
VITE_APP_BUILD_BASE_PATH = 'https://prev.ysaix.com:7868/'
VITE_SHOW_DEV_TOOLS = 'true'

View File

@ -73,8 +73,7 @@ function createLoginWindow() {
loginWindow.loadFile(join(__dirname, '../renderer/index.html'), { hash: 'login' })
updateInit(loginWindow)
}
loginWindow.webContents.openDevTools()
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') loginWindow.webContents.openDevTools()
loginWindow.once('ready-to-show', () => {
loginWindow.show()
})
@ -128,7 +127,7 @@ function createMainWindow() {
shell.openExternal(details.url)
return { action: 'deny' }
})
mainWindow.webContents.openDevTools()
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') mainWindow.webContents.openDevTools()
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
@ -138,6 +137,7 @@ function createMainWindow() {
// mainWindow.setAlwaysOnTop(true, "screen-saver") // 将窗口设置为顶层窗口
// mainWindow.setVisibleOnAllWorkspaces(true) // 如果窗口在所有工作区都可见
mainWindow.maximize();
// 第三步: 开启remote服务
remote.enable(mainWindow.webContents)
}

File diff suppressed because one or more lines are too long

View File

@ -34,6 +34,7 @@ export const editListItem = (row, courseObj) => {
chooseWorkLists: [],// 设计中的框架梳理list
fileHomeworkList: [],// 设计中的常规作业list
whiteboardObj: '',// 设计中的课堂展示对象
question: '', // 设计中的[课堂展示]的问题
};
console.log('编辑的行', row);
@ -99,7 +100,7 @@ export const editListItem = (row, courseObj) => {
console.log('row.课堂展示', row.workcodes);
const workcodes = JSON.parse(row.workcodes);
classtaskObj.whiteboardObj = JSON.stringify(workcodes.json);
//
classtaskObj.question = row.worktag;
// console.log('课堂展示', classtaskObj);
return resolve(classtaskObj);
}

View File

@ -285,8 +285,11 @@ export class ImChat {
// callback: (data) => {}
}
// console.log('发送消息', option)
this.setConsole('%cim-chat: 发送消息', option)
return this.timChat.TIMMsgSendMessageV2(option)
this.setConsole('%cim-chat: 发送消息【req】', conv_id, msg)
return this.timChat.TIMMsgSendMessageV2(option).then(res => {
this.setConsole('%cim-chat: 发送消息【res】', JSON.stringify(res))
return res
})
}
/**
* @description 发送群消息

View File

@ -138,7 +138,7 @@ export const createWindow = async (type, data) => {
wins_tool.setIgnoreMouseEvents(true, {forward: true}) // 忽略鼠标事件但是事件继续传递给窗口
wins_tool.setAlwaysOnTop(true,'screen-saver') // 将窗口设置为顶层窗口
wins_tool.setVisibleOnAllWorkspaces(true) // 如果窗口在所有工作区都可见
wins_tool.webContents.openDevTools() // 打开调试工具
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') wins_tool.webContents.openDevTools() // 打开调试工具
eventHandles(type, wins_tool) // 事件监听处理
return wins_tool
}
@ -165,7 +165,7 @@ export const createWindow = async (type, data) => {
win.type = type // 唯一标识
win.show()
win.setFullScreen(true) // 设置窗口为全屏
win.webContents.openDevTools() // 打开调试工具
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') win.webContents.openDevTools() // 打开调试工具
eventHandles(type, win) // 事件监听处理
winPdf=win
break

View File

@ -237,7 +237,7 @@ const getStudentClassWorkData = async() => {
// deaddate: tabActive.value === ''? getTomorrow() : EndDate.value,//
// deaddate: EndDate.value,//
// //status: '1', // 1-
// orderby: "deaddate DESC",// TODO deaddate
// orderby: "deaddate DESC",//
// pageSize: 1000,
// })
@ -401,7 +401,8 @@ const onClickItem = (item) => {
clearInterval(pollingST.value)
console.log('防抖开启弹窗')
sessionStore.set('teachClassWorkItem', item); // item
// sessionStore.set('teachClassWorkItem', item); // item
localStorage.setItem('teachClassWorkItem', JSON.stringify(item));
debounceOpenWin();
}

View File

@ -15,10 +15,11 @@
<!-- 标题 -->
<el-row style="align-items: center; margin-bottom: 0px; flex: 0 0 auto">
<el-col :span="12" style="padding-left: 20px; text-align: left;">
<div class="unit-top-left" @click="isCollapse = !isCollapse">
<i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i>
<span>课程目录</span>
<i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i>
<!-- <div class="unit-top-left" @click="isCollapse = !isCollapse"> -->
<div class="unit-top-left">
<!-- <i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i> -->
<span>作业布置</span>
<!-- <i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> -->
</div>
</el-col>
<el-col :span="12">
@ -147,7 +148,7 @@
</template>
</div>
</div>
<!-- TODO 课堂展示 常规作业 预览待开发-->
<!-- TODO 课堂展示 预览待开发-->
<!-- 常规作业包含多个格式图片略缩图展示点击放大其他附件跳转另外弹窗查看 -->
<div v-if="currentTag=='常规作业'" :style="{'padding': '15px', 'overflow': 'auto'}">
<div style="margin: 5px; background-color: white">
@ -476,7 +477,8 @@ const debounceOpenWin = debounce(() => {
//
const onClickItem = (item) => {
console.log('防抖开启弹窗')
sessionStore.set('teachClassWorkItem', item); // item
// sessionStore.set('teachClassWorkItem', item); // item
localStorage.setItem('teachClassWorkItem', JSON.stringify(item));
debounceOpenWin();
}
@ -878,18 +880,20 @@ watch(() => courseObj.node, (newVal,oldVal) => {
</script>
<!--
<style>
.el-table .hidden-row {
display: none !important;
/* color: #ccc !important; */
}
.el-table .father-row {
--el-table-tr-bg-color: #fff;
&#45;&#45;el-table-tr-bg-color: #fff;
}
.el-table .son-row {
--el-table-tr-bg-color: #f0f0f08a;
&#45;&#45;el-table-tr-bg-color: #f0f0f08a;
}
</style>
-->
<style lang="scss" scoped>
.page-classTaskAssign {
@ -906,7 +910,6 @@ watch(() => courseObj.node, (newVal,oldVal) => {
min-height: 100%;
}
.unit-top-left {
cursor: pointer;
.icon-xiangzuo {
margin-right: 5px;

View File

@ -13,7 +13,7 @@
<template #header>
<div style="font-size: 18px; display: flex; flex-wrap: nowrap">
<div style="flex: 1">
{{ classWorkAnalysis.title }}答题情况
{{ classWorkAnalysis.title }}完成情况
<el-tag :type="classWorkAnalysis.workclass" size="large" style="height: 25px">{{
classWorkAnalysis.worktype
}}</el-tag>
@ -33,13 +33,13 @@
v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'quizStats' ? 'success' : ''"
@click="workHandle('quizStats')"
>逐题分析</el-button
>逐题讲评</el-button
>
<el-button
v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'report' ? 'success' : ''"
@click="handleClassOverviewOpen('report')"
>整体分析</el-button
>训练报告</el-button
>
</el-button-group>
</el-row>
@ -141,12 +141,12 @@
</div>
</div>
<!-- 逐题分析 -->
<!-- 逐题讲评 -->
<div v-else-if="classWorkAnalysis.view == 'quizStats'">
<quiz-stats :active-data="classWorkActiveData" />
</div>
<!-- 整体分析-->
<!-- 训练报告-->
<div v-else-if="classWorkAnalysis.view == 'report'" style="overflow-y: scroll">
<!-- <ClassOverview :table-list="overviewData" :eval-id="courseObj.evalid"></ClassOverview> -->
<ClassOverview :table-list="overviewData"></ClassOverview>
@ -193,7 +193,7 @@ const tableRadio = reactive({
const loading_dt_table = ref(false)
const isopen_dtwk_table = ref(false)
// zdg:
// zdg:
const classWorkActiveData = reactive({
quizlist: [], //
studentList: [], // -
@ -217,7 +217,7 @@ const classWorkAnalysisScore = reactive({
// }
// )
const openDialog = (data) => {
console.log(data, '点击的item答题情况')
console.log(data, '点击的item完成情况')
classWorkAnalysis.title = data.uniquekey ? data.uniquekey + '--' : ''
classWorkAnalysis.worktype = data.worktype
@ -467,7 +467,7 @@ const getStudentClassWorkDataDetail = (row) => {
}
})
.catch(() => {
console.log('获取答题情况失败')
console.log('获取完成情况失败')
ElMessage({
type: 'warning',
message: '未获取到答题信息!'
@ -479,7 +479,7 @@ const onClassWorkScoreSubmit = () => {
console.log('批改后返回的方法')
loading_dt_table.value = true
isopen_dtwk_table.value = false
// 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist
// 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist
// -
classWorkAnalysis.classworkdata = []
classWorkAnalysis.activeStudentQuizlist = []
@ -536,7 +536,7 @@ const escapeHtmlQuotes = (str) => {
return result;
}
//#region
//#region
// -
const workHandle = (type) => {
// ui
@ -571,11 +571,11 @@ const getWorkFeedList = async() =>{
//#endregion
//#regin
//#regin
/*
author: yangws
time: 2024-8-06 16:35:33
function: 整体分析的处理
function: 训练报告的处理
*/
const handleClassOverviewOpen = (type) =>{
// ui
@ -643,12 +643,12 @@ const closeDialog = () => {
watch(classWorkAnalysis, (newVal, oldVal) => {
if(newVal.view != 'quizStats'){
console.log('关闭zdg: 定时执行')
clearInterval(classWorkActiveData.timerId) //
clearInterval(classWorkActiveData.timerId) //
}
})
onUnmounted(() => {
clearInterval(classWorkActiveData.timerId) //
clearInterval(classWorkActiveData.timerId) //
})
defineExpose({
@ -656,8 +656,6 @@ defineExpose({
})
</script>
<style src="@/assets/styles/JYStyle.css"></style>
<style scoped lang="scss">
/*:deep(.reserv-date-pick) {
width: 140px;
@ -765,3 +763,4 @@ defineExpose({
overflow-y: auto;
}
</style>
<style src="@/assets/styles/JYStyle.css"></style>

View File

@ -21,7 +21,7 @@
<div v-if="classWorkForm.worktype == '课堂展示'" style="height: 100%; display: flex; flex-direction: column;">
<div style="flex: 0 0 auto;">
<el-form-item label="问题">
<el-input v-model="classWorkForm.title" type="text" placeholder="请输入问题" />
<el-input v-model="classWorkForm.question" type="text" placeholder="请输入问题" />
</el-form-item>
</div>
<div v-loading="boardLoading" class="board-wrap" style="height: 100%; flex: 1; overflow: hidden;">
@ -349,9 +349,11 @@ let classWorkForm = reactive({
chooseWorkLists: props.propsformobj.chooseWorkLists?cloneDeep(props.propsformobj.chooseWorkLists):[], // list
fileHomeworkList: props.propsformobj.fileHomeworkList?cloneDeep(props.propsformobj.fileHomeworkList):[], //
whiteboardObj: props.propsformobj.whiteboardObj?cloneDeep(props.propsformobj.whiteboardObj):'', // -
question: props.propsformobj.question?cloneDeep(props.propsformobj.question):'', // -
}); //
// ---------------------------------------------------
const listWorkType = ref(['习题训练', '框架梳理', '课堂展示', '常规作业']); //
// const listWorkType = ref(['', '', '', '']); //
const listWorkType = ref(['习题训练', '课堂展示', '常规作业']); //
// -------
const boardLoading = ref(false);
@ -637,6 +639,7 @@ const handleClassWorkSave = async () => {
let canvasJson = proxy.$refs.boardref.getCanvasJson()
let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64()
//
cform.worktag = classWorkForm.question;
cform.title = classWorkForm.title;
cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64});
cform.entpcourseworklist = JSON.stringify([{'id':-1, 'score': '10'}]);
@ -647,21 +650,13 @@ const handleClassWorkSave = async () => {
classWorkForm.worktype = "课堂展示";
classWorkForm.uniquekey = props.propsformobj.uniquekey, //
classWorkForm.title = "";
classWorkForm.question = "";
classWorkForm.quizlist = [], //
//
classWorkForm.chooseWorkLists = []; // list
classWorkForm.whiteboardObj = ''; // ? //
// refresh the list
//
// this.getClassWorkAllList();
// TODO
//TODO 3
// this.newWorkSpace = false;
// this.newWorkSpaceEdit = false;
// this.workEdit = false;
boardLoading.value = false
})
} finally {
@ -685,16 +680,6 @@ const handleClassWorkSave = async () => {
classWorkForm.chooseWorkLists = []; // list
classWorkForm.whiteboardObj = ''; // ? //
classWorkForm.fileHomeworkList = []; // list
// refresh the list
//
// this.getClassWorkAllList();
// TODO
//TODO 3
// this.newWorkSpace = false;
// this.newWorkSpaceEdit = false;
// this.workEdit = false;
fileLoading.value = false
})
@ -857,6 +842,7 @@ const editWork = async (cform) =>{
let canvasJson = proxy.$refs.boardref.getCanvasJson()
let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64()
cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64});
cform.worktag = classWorkForm.question;
}
else if (classWorkForm.worktype=='常规作业') {
// 1. (, )

View File

@ -279,7 +279,7 @@ const getStudentName = id => studentList.value.length && (studentList.value.find
// -
const getActive = ind => activeTopic.value != ind
// -
// -
const clickInfo = async ind => {
activeTopic.value = activeTopic.value != ind ? ind : 0
setTimeout(() => {scrollToElement('collapse-' + ind)}, 300);

View File

@ -15,11 +15,11 @@
<!-- 标题 -->
<el-row style="align-items: center; margin-bottom: 0px; flex: 0 0 auto">
<el-col :span="12" style="padding-left: 20px; text-align: left;">
<div v-if="!isOpenLeftBook" class="unit-top-left cursor-pointer" @click="onOpenLeftBook">
<div v-if="!isOpenLeftBook" class="unit-top-left" @click="onOpenLeftBook">
<i v-if="isback" class="iconfont icon-xiangzuo cursor-pointer" style="color: blue;" @click="goBack">返回上页</i>
<i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i>
<span>课程目录</span>
<i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i>
<!-- <i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i> -->
<span>作业设计</span>
<!-- <i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> -->
</div>
<div v-else class="unit-top-left">
<i class="iconfont icon-xiangzuo cursor-pointer" style="color: blue;" @click="goBack">返回上页</i>
@ -69,6 +69,7 @@ const classWorkForm = reactive({
chooseWorkLists: classtaskObj? JSON.parse(classtaskObj).chooseWorkLists : [],// list
fileHomeworkList: classtaskObj? JSON.parse(classtaskObj).fileHomeworkList : [],// list
whiteboardObj: classtaskObj? JSON.parse(classtaskObj).whiteboardObj : '',//
question: classtaskObj? JSON.parse(classtaskObj).question : '',//
})
@ -113,7 +114,7 @@ const onOpenLeftBook = () => {
proxy.$modal.msgError(`当前为编辑状态不可选择课程!`);
}else{
//
isCollapse.value = !isCollapse.value
// isCollapse.value = !isCollapse.value
}
}
// ---

View File

@ -3,7 +3,7 @@
<div class="teachClassTask_header">
<div style="font-size: 18px; display: flex; flex-wrap: nowrap">
<div style="flex: 1">
{{ classWorkAnalysis.title }}答题情况
{{ classWorkAnalysis.title }}完成情况
<el-tag :type="classWorkAnalysis.workclass" size="large" style="height: 25px">{{
classWorkAnalysis.worktype
}}</el-tag>
@ -23,13 +23,13 @@
v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'quizStats' ? 'success' : ''"
@click="workHandle('quizStats')"
>逐题分析</el-button
>逐题讲评</el-button
>
<el-button
v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'report' ? 'success' : ''"
@click="handleClassOverviewOpen('report')"
>整体分析</el-button
>训练报告</el-button
>
</el-button-group>
</div>
@ -131,12 +131,12 @@
</div>
</div>
<!-- 逐题分析 -->
<!-- 逐题讲评 -->
<div v-else-if="classWorkAnalysis.view == 'quizStats'" style="width: 100%;">
<quiz-stats :active-data="classWorkActiveData" style="width: 100%;height: 100%;"/>
</div>
<!-- 整体分析-->
<!-- 训练报告-->
<div v-else-if="classWorkAnalysis.view == 'report'" style="width: 100%;overflow-y: scroll">
<!-- <ClassOverview :table-list="overviewData" :eval-id="courseObj.evalid"></ClassOverview> -->
<ClassOverview :table-list="overviewData" style="width: 100%;"></ClassOverview>
@ -180,7 +180,7 @@ const tableRadio = reactive({
const loading_dt_table = ref(false)
const isopen_dtwk_table = ref(false)
// zdg:
// zdg:
const classWorkActiveData = reactive({
quizlist: [], //
studentList: [], // -
@ -204,7 +204,7 @@ const classWorkAnalysisScore = reactive({
// }
// )
const openDialog = (data) => {
console.log(data, '点击的item答题情况')
console.log(data, '点击的item完成情况')
classWorkAnalysis.title = data.uniquekey ? data.uniquekey + '--' : ''
classWorkAnalysis.worktype = data.worktype
@ -459,7 +459,7 @@ const getStudentClassWorkDataDetail = (row) => {
}
})
.catch(() => {
console.log('获取答题情况失败')
console.log('获取完成情况失败')
ElMessage({
type: 'warning',
message: '未获取到答题信息!'
@ -471,7 +471,7 @@ const onClassWorkScoreSubmit = () => {
console.log('批改后返回的方法')
loading_dt_table.value = true
isopen_dtwk_table.value = false
// 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist
// 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist
// -
classWorkAnalysis.classworkdata = []
classWorkAnalysis.activeStudentQuizlist = []
@ -528,7 +528,7 @@ const escapeHtmlQuotes = (str) => {
return result;
}
//#region
//#region
// -
const workHandle = (type) => {
// ui
@ -563,11 +563,11 @@ const getWorkFeedList = async() =>{
//#endregion
//#regin
//#regin
/*
author: yangws
time: 2024-8-06 16:35:33
function: 整体分析的处理
function: 训练报告的处理
*/
const handleClassOverviewOpen = (type) =>{
// ui
@ -634,8 +634,9 @@ const closeDialog = () => {
onMounted(() => {
// const data = JSON.parse(localStorage.getItem('teachClassWorkItem'));
const data = sessionStore.get('teachClassWorkItem');
const data = JSON.parse(localStorage.getItem('teachClassWorkItem'));
// const data = sessionStore.get('teachClassWorkItem');
// const data = localStorage.getItem('teachClassWorkItem');
console.log(data,'????????????????????' )
if(data){
openDialog(data)
@ -645,20 +646,18 @@ onMounted(() => {
watch(classWorkAnalysis, (newVal, oldVal) => {
if(newVal.view != 'quizStats'){
console.log('关闭zdg: 定时执行')
clearInterval(classWorkActiveData.timerId) //
clearInterval(classWorkActiveData.timerId) //
}
})
onUnmounted(() => {
clearInterval(classWorkActiveData.timerId) //
clearInterval(classWorkActiveData.timerId) //
})
// defineExpose({
// })
</script>
<style src="@/assets/styles/JYStyle.css"></style>
<style scoped lang="scss">
.teachClassTask{
height: 100%;
@ -704,94 +703,6 @@ onUnmounted(() => {
}
}
}
// .clwk_dialog {
// }
// .clwk_dialog {
// display: flex;
// justify-content: center;
// overflow: hidden;
// }
// .clwk_dialog .el-dialog {
// margin: 0 auto !important;
// height: 85%!important;
// overflow: hidden;
// }
// .clwk_dialog .el-dialog__header {
// /* position: absolute;
// top: 0;
// left: 0; */
// width: 100%!important;
// }
// .clwk_dialog .el-dialog__body {
// position: absolute;
// left: 0;
// top: 15px;
// bottom: 1px;
// right:0;
// padding:5px;
// z-index:1;
// display: flex;
// flex-direction: column;
// overflow: hidden;
// /* overflow:hidden;
// overflow-y: auto; */
// }
// .clwk_dialog .el-dialog__footer{
// position: absolute;
// bottom: 10px;
// right: 10px;
// }
// .clwk_dialog .classwork-score{
// overflow-y: auto;
// }
</style>
<style scoped>
/* .clwk_dialog {
display: flex;
justify-content: center;
overflow: hidden;
}
.clwk_dialog .el-dialog {
margin: 0 auto !important;
height: 85%!important;
overflow: hidden;
}
.clwk_dialog .el-dialog__header {
/* position: absolute;
top: 0;
left: 0;
width: 100%!important;
}
.clwk_dialog .el-dialog__body {
position: absolute;
left: 0;
top: 15px;
bottom: 1px;
right:0;
padding:5px;
z-index:1;
display: flex;
flex-direction: column;
overflow: hidden;
/* overflow:hidden;
overflow-y: auto;
}
.clwk_dialog .el-dialog__footer{
position: absolute;
bottom: 10px;
right: 10px;
}
.clwk_dialog .classwork-score{
overflow-y: auto;
} */
</style>
<style src="@/assets/styles/JYStyle.css"></style>

View File

@ -96,7 +96,8 @@ const debounceOpenWin = debounce(() => {
//
const onClickItem = (item) => {
console.log('防抖开启弹窗')
sessionStore.set('teachClassWorkItem', item); // item
// sessionStore.set('teachClassWorkItem', item); // item
localStorage.setItem('teachClassWorkItem', JSON.stringify(item));
debounceOpenWin();
}

View File

@ -19,22 +19,29 @@
<!-- 试题详情 -->
<el-drawer v-model="activeExamInfoDrawer" title="题目详情" :with-header="false" direction="rtl" size="60%">
<el-row class="drawer-main">
<el-col :span="24">
<span>{{activeExam.worktag}}</span>
<span style="margin-left: 4px" v-html="activeExam.titleFormat" ></span>
</el-col>
<el-col :span="24" style="padding: 4px" v-html="activeExam.workdescFormat">
</el-col>
<el-col :span="3" class="drawer-main-col"><em>答案</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.workanswerFormat"></el-col>
<el-col :span="3" class="drawer-main-col"><em>分析</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.method"></el-col>
<el-col :span="3" class="drawer-main-col"><em>解答</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.analyse"></el-col>
<el-col :span="3" class="drawer-main-col" ><em>点评</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.discuss"></el-col>
</el-row>
<div style="height: calc(100% - 50px);">
<el-scrollbar style="background: #e9e9e9;border-radius: 8px;">
<el-row class="drawer-main">
<el-col :span="24">
<span>{{activeExam.worktag}}</span>
<span style="margin-left: 4px" v-html="activeExam.titleFormat" ></span>
</el-col>
<el-col :span="24" style="padding: 4px" v-html="activeExam.workdescFormat">
</el-col>
<el-col :span="3" class="drawer-main-col"><em>答案</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.workanswerFormat"></el-col>
<el-col :span="3" class="drawer-main-col"><em>分析</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.method"></el-col>
<el-col :span="3" class="drawer-main-col"><em>解答</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.analyse"></el-col>
<el-col :span="3" class="drawer-main-col" ><em>点评</em></el-col>
<el-col :span="20" class="drawer-main-col" v-html="activeExam.discuss"></el-col>
</el-row>
</el-scrollbar>
</div>
<div class="drawer-footer">
<el-button type="primary" @click="activeExamInfoDrawer = false">关闭</el-button>
</div>
</el-drawer>
</template>
@ -89,13 +96,17 @@ const showExamAnalyseDrawer = (row) => {
.drawer-main{
margin: 1%;
padding: 1% 2%;
border: 2px dotted;
padding: 2%;
display: flex;
text-align: left;
.drawer-main-col{
padding: 10px 0px;
}
}
.drawer-footer{
padding-top: 15px;
display: flex;
justify-content: flex-end;
box-sizing: border-box;
}
</style>

View File

@ -98,7 +98,7 @@ import FileImage from '@/components/file-image/index.vue'
import { asyncLocalFile } from '@/utils/talkFile'
import { toTimeText } from '@/utils/date'
import { ElMessage, ElMessageBox } from 'element-plus'
import { deleteSmarttalk, updateSmarttalk, getPrepareById } from '@/api/file'
import { deleteSmarttalk, updateSmarttalk, getPrepareById, getSmarttalkPage } from '@/api/file'
import useUserStore from '@/store/modules/user'
import outLink from '@/utils/linkConfig'
import { sessionStore } from '@/utils/store'
@ -208,6 +208,7 @@ export default {
}
if (action === 'cancel'){
//
console.log(obj.bookImg)
if (obj.bookImg) {
//PPT
listEntpcourse({
@ -241,9 +242,20 @@ export default {
}
})
}else {
//APT
this.$emit('on-start-class', item, obj)
done()
console.log(obj)
getSmarttalkPage({fileId: obj.entpcoursefileid}).then(res2=>{
console.log(res2)
//APT
if (res2&&res2.rows.length>0) {
this.$emit('on-start-class', res2.rows[0], obj)
}else {
ElMessage({
message: '该文件未关联PPT无法打开',
type: 'warning'
})
}
done()
})
}
}
if (action === 'close') {

View File

@ -128,7 +128,7 @@ const closeHomework = async() => {
const successHomework = (data)=>{
// console.log('', data)
// im-(app|)
ipcMsgInvoke('im-chat:msg', data, MsgEnum.HEADS.MSG_0016)
// ipcMsgInvoke('im-chat:msg', data, MsgEnum.HEADS.MSG_0016)
}
// change
const changeChapter = async (data)=>{

View File

@ -12,7 +12,7 @@ const props = defineProps({
})
const imChatObj = reactive({imChat:null})
onMounted(() => {
ipcMainHandle() // -ipcMain im
// ipcMainHandle() // -ipcMain im
})
// im-chat
const initImChat = async (timGroupId) => {

View File

@ -105,7 +105,7 @@ const getClassInfo = async () => {
const chat = await imChatRef.value?.initImChat(timGroupId) // im-chat
if (!timGroupId) timGroupId = chat?.timGroupId
if (!timGroupId) return ElMessage.error('房间创建-失败')
classManageApi.startClass(classObj.id, timGroupId) //
if (data.status != '上课中') classManageApi.startClass(classObj.id, timGroupId) //
}
// tab-change
const tabChange = (val) => {
@ -158,7 +158,7 @@ const touchChange = (e) => {
const chatChange = (type, data, ...args) => {
if (type == 'createGroup') { // -
console.log('创建群:', data)
!!data && classManageApi.startClass(classObj.id, data)
// !!data && classManageApi.startClass(classObj.id, data)
} else if (type == 'msg') { // im-chat
if (!data) return // msg message_msg_id
const msgId = (args||[])[0].message_msg_id