Compare commits
42 Commits
6de43cbab3
...
770a847e91
Author | SHA1 | Date |
---|---|---|
朱浩 | 770a847e91 | |
朱浩 | 6f35ad8a1a | |
zouyf | 4e7b9f0a82 | |
qinqing | 7b4e6d0b10 | |
qinqing | 04d2e47882 | |
“zouyf” | 17e8e43ad4 | |
qinqing | ea2de75415 | |
“zouyf” | 38b17333ab | |
baigl | d58dff8731 | |
白了个白 | 40d83c4cb3 | |
白了个白 | 8ba6e15020 | |
朱浩 | bddcf2d4ff | |
lyc | 8f91be9a4b | |
lyc | 75384c8057 | |
朱浩 | bed3ef96a7 | |
qinqing | f5497aa856 | |
qinqing | 47329aea75 | |
qinqing | 52275e1de6 | |
朱浩 | 6fe5ee5703 | |
qinqing | 8dba05c0d4 | |
qinqing | b4fefdd0cf | |
lyc | e4114bf1b4 | |
lyc | 95f94f0c3e | |
lyc | 4dbb5d2224 | |
lyc | 3430ad75ca | |
baigl | 388fc2b2b4 | |
白了个白 | 1a671d7dd2 | |
白了个白 | 0d21b1de53 | |
“zouyf” | 0a2d3f54b7 | |
“zouyf” | 45c2e35a66 | |
朱浩 | 68de31c569 | |
朱浩 | 45485c04fc | |
zhengdegang | e8763793a7 | |
zdg | a3b940f138 | |
zdg | 548442f278 | |
朱浩 | e02f67e3e5 | |
zdg | d7f17c253d | |
zdg | ea6c56a401 | |
白了个白 | 2bcf780b7b | |
zdg | 6be26f19cd | |
zdg | d40873d198 | |
qinqing | 37652cd803 |
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 发送群消息
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
:collapse="isCollapse"
|
||||
>
|
||||
<!--左侧 教材 目录-->
|
||||
<div v-if="!isCollapse" style="height: 100%;overflow: hidden;">
|
||||
<div v-if="!isCollapse" style="height: 100%;overflow: hidden;">
|
||||
<ChooseTextbook @change-book="getData" @node-click="getData" />
|
||||
</div>
|
||||
</el-menu>
|
||||
|
@ -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">
|
||||
|
@ -33,7 +34,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
<!-- 作业类型:内容 -->
|
||||
<div style="flex: 1;overflow: hidden;">
|
||||
<div style="flex: 1;overflow: hidden;">
|
||||
<el-table
|
||||
ref="taskTable"
|
||||
v-loading="loading"
|
||||
|
@ -139,7 +140,7 @@
|
|||
<div style="color: silver; display: flex;align-items: center;">
|
||||
<div style="flex: 1;">{{ _item.worktype }}</div>
|
||||
<div style="flex: 1;">分值:{{ _item.score }}</div>
|
||||
<div style="display: flex;align-items: center;flex: 1;justify-content: flex-end;">
|
||||
<div style="display: flex;align-items: center;flex: 1;justify-content: flex-end;">
|
||||
<el-button @click="prevRead(_item)">预览</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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">
|
||||
|
@ -187,7 +188,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-else>
|
||||
<div v-if="workConfObj.teachFileList.length > 0">
|
||||
<div style="margin: 10px 0;text-align: left; margin: auto 0; cursor: pointer;">
|
||||
<span style="color: #409eff" @click="openFile">预览其他类型附件!</span>
|
||||
|
@ -219,7 +220,7 @@
|
|||
|
||||
<!-- 已推送历史 -->
|
||||
<el-dialog v-model="pushRecordsOpen" title="推送历史记录" width="80%" append-to-body>
|
||||
<div style="flex: 1;overflow: hidden; min-height: 400px;">
|
||||
<div style="flex: 1;overflow: hidden; min-height: 400px;">
|
||||
<el-table
|
||||
ref="pushRecordsRef"
|
||||
:data="pushRecordsList"
|
||||
|
@ -286,7 +287,7 @@
|
|||
<prevReadMsgDialog ref="prevReadMsgDialogRef" :bookobj="courseObj"/>
|
||||
<!-- 其他附件预览框 acceptParams-->
|
||||
<prevReadImgFileDialog ref="prevReadImgFileDialogRef"/>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -308,7 +309,7 @@ import SetHomework from '@/components/set-homework/index.vue'
|
|||
import {sessionStore} from '@/utils/store'
|
||||
import {createWindow} from '@/utils/tool'
|
||||
import { useToolState } from '@/store/modules/tool'
|
||||
import {throttle,debounce } from '@/utils/comm'
|
||||
import {throttle,debounce } from '@/utils/comm'
|
||||
|
||||
|
||||
const toolState = useToolState();
|
||||
|
@ -342,7 +343,7 @@ const courseObj = reactive({
|
|||
})
|
||||
|
||||
const taskList = ref([]); // 作业列表
|
||||
const loading = ref(false);
|
||||
const loading = ref(false);
|
||||
const pushRecordsList = ref([]); // 作业推送历史
|
||||
const pushRecordsOpen = ref(false); // 推送历史记录弹窗
|
||||
const pushRecordsLoading = ref(false); // 推送历史记录loading
|
||||
|
@ -414,7 +415,7 @@ const initHomeWork = async()=> {
|
|||
}
|
||||
/**
|
||||
* 查看推送历史
|
||||
*
|
||||
*
|
||||
*/
|
||||
const queryPushRecords = (row) => {
|
||||
// 获取已推送历史
|
||||
|
@ -437,7 +438,7 @@ const queryPushRecords = (row) => {
|
|||
// if (res.rows[i].worktype == '学习目标定位') {
|
||||
// res.rows[i].workclass = 'success';
|
||||
// res.rows[i].workcodesList = JSON.parse(res.rows[i].workcodes);
|
||||
// } else
|
||||
// } else
|
||||
// 课标研读 目标设定 教材研读 框架梳理 学科定位 TODO 后续接入在添加
|
||||
if (res.rows[i].worktype == '课堂展示') {
|
||||
res.rows[i].workclass = 'primary';
|
||||
|
@ -476,11 +477,12 @@ 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();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 删除按钮操作 TODO 待完善
|
||||
* */
|
||||
const handleDelete =() => {
|
||||
|
@ -618,8 +620,8 @@ const handleWorkTitleEdit = (row, index, type) => {
|
|||
};
|
||||
|
||||
/**
|
||||
* 作业内容-查看详情
|
||||
* */
|
||||
* 作业内容-查看详情
|
||||
* */
|
||||
const handleWorkEdit = (row, index) =>{
|
||||
console.log(row, index)
|
||||
workEdit.value = true
|
||||
|
@ -637,7 +639,7 @@ const handleWorkTitleEdit = (row, index, type) => {
|
|||
if ( res.data==null || res.data==undefined ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
res.data.worktype = '框架梳理';
|
||||
res.data.score = listCourseWork[0].score;
|
||||
|
||||
|
@ -706,7 +708,7 @@ const handleWorkTitleEdit = (row, index, type) => {
|
|||
};
|
||||
/**
|
||||
* 作业内容-前往作业设计 编辑页面
|
||||
* @param row
|
||||
* @param row
|
||||
*/
|
||||
const handleWorkEditItem = (row) => {
|
||||
editListItem(row, courseObj).then((obj) => {
|
||||
|
@ -778,11 +780,11 @@ const handleTaskAssignToAllClass = () => {
|
|||
*/
|
||||
const handleNewClassWorkDialog = () => {
|
||||
// 打开作业设计页面
|
||||
router.push({
|
||||
router.push({
|
||||
path: '/newClassTask',
|
||||
query: {
|
||||
isBack: true,
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
--el-table-tr-bg-color: #fff;
|
||||
}
|
||||
.el-table .son-row {
|
||||
--el-table-tr-bg-color: #f0f0f08a;
|
||||
--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;
|
||||
|
@ -934,4 +937,4 @@ watch(() => courseObj.node, (newVal,oldVal) => {
|
|||
}
|
||||
}
|
||||
</style>
|
||||
<style src="@/assets/styles/JYStyle.css"></style>
|
||||
<style src="@/assets/styles/JYStyle.css"></style>
|
||||
|
|
|
@ -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
|
||||
// 1、清空答题情况的两个table数据,- 左侧学生列表:classWorkAnalysis.classworkdata;- 右侧学生回答题目列表:classWorkAnalysis.activeStudentQuizlist
|
||||
// 1、清空完成情况的两个table数据,- 左侧学生列表: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>
|
||||
|
|
|
@ -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;">
|
||||
|
@ -29,7 +29,7 @@
|
|||
<whiteboard ref="boardref" :height="mainHeight - 150" :isShowSave="false" :data="classWorkForm.whiteboardObj"/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="el-form-work-list">
|
||||
<div v-else class="el-form-work-list">
|
||||
<el-form-item label="作业资源:" class="el-form-work-list">
|
||||
<!-- 左侧作业资源 -->
|
||||
<el-col :span="15" class="work-left">
|
||||
|
@ -54,7 +54,7 @@
|
|||
</el-col>
|
||||
<el-col :span="11">
|
||||
<el-form-item label="知识点" label-width="70">
|
||||
<el-cascader
|
||||
<el-cascader
|
||||
v-model="entpCourseWorkQueryParams.point"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
|
@ -80,8 +80,8 @@
|
|||
<el-col :span="15">
|
||||
<el-form-item label="关键词" label-width="70">
|
||||
<el-input
|
||||
v-model="entpCourseWorkQueryParams.keyWord"
|
||||
style="width: 70%" type="text"
|
||||
v-model="entpCourseWorkQueryParams.keyWord"
|
||||
style="width: 70%" type="text"
|
||||
placeholder="请输入关键词"
|
||||
/>
|
||||
<el-button @click="handleQueryParamFromEntpCourseWork(1)"><el-icon><Search /></el-icon> 查找</el-button>
|
||||
|
@ -89,7 +89,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
<!-- 习题表格 -->
|
||||
<div class="middle" >
|
||||
<div class="middle" >
|
||||
<el-table :data="workResource.entpCourseWorkList" style="width: 100%; height: 100%;">
|
||||
<el-table-column type="index" width="60" />
|
||||
<el-table-column align="left" >
|
||||
|
@ -119,10 +119,10 @@
|
|||
<!-- 分页 这里不用-->
|
||||
<!-- <div style="height: 55px;">
|
||||
<pagination
|
||||
v-show="entpCourseWorkTotal > 0"
|
||||
v-model:page="paginationParams.pageNum"
|
||||
v-show="entpCourseWorkTotal > 0"
|
||||
v-model:page="paginationParams.pageNum"
|
||||
v-model:limit="paginationParams.pageSize"
|
||||
:total="entpCourseWorkTotal"
|
||||
:total="entpCourseWorkTotal"
|
||||
:style="{ position: 'relative', 'margin-top': '5px' }"
|
||||
@pagination="getPaginationList" />
|
||||
</div> -->
|
||||
|
@ -189,7 +189,7 @@
|
|||
<el-form-item label="分值">
|
||||
<el-input-number v-model="item.score" :min="1" :max="100" size="small"></el-input-number >
|
||||
</el-form-item>
|
||||
<div style="display: flex;align-items: center;flex: 1;justify-content: flex-end;">
|
||||
<div style="display: flex;align-items: center;flex: 1;justify-content: flex-end;">
|
||||
<el-button @click="prevRead(item)">预览</el-button>
|
||||
<el-button type="danger" @click="deleteClassWorkAddOfResource(item)">删除</el-button>
|
||||
</div>
|
||||
|
@ -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);
|
||||
|
@ -362,7 +364,7 @@ const fileLoading = ref(false); // 常规作业loading
|
|||
* 作业类型切换
|
||||
*/
|
||||
const changeFormType = (val) => {
|
||||
classWorkForm.worktype = val;
|
||||
classWorkForm.worktype = val;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -371,7 +373,7 @@ const changeFormType = (val) => {
|
|||
* @param {*} queryType
|
||||
* 1 - 按条件查询
|
||||
* 2 - 按关键词查询
|
||||
*/
|
||||
*/
|
||||
const handleQueryParamFromEntpCourseWork = (queryType) => {
|
||||
// 确保更改了搜索参数后从第一页开始查询
|
||||
// this.paginationParams = {pageNum: 1,pageSize: 10}; 分页这里展示弃用了
|
||||
|
@ -410,7 +412,7 @@ const handleQueryFromEntpCourseWork= (queryType) => {
|
|||
keyword: entpCourseWorkQueryParams.keyWord && entpCourseWorkQueryParams.keyWord !== '' ? entpCourseWorkQueryParams.keyWord:'',
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 分页参数
|
||||
// pageNum: paginationParams.pageNum,
|
||||
// pageSize: paginationParams.pageSize,
|
||||
|
@ -420,7 +422,7 @@ const handleQueryFromEntpCourseWork= (queryType) => {
|
|||
// // [初中+政治]需改为[初中+道德与法治]
|
||||
// queryForm.edusubject = '道德与法治';
|
||||
// }
|
||||
|
||||
|
||||
listEntpcourseworkNew(queryForm).then(entpcourseworkres => {
|
||||
// if (queryType == 1 && this.entpCourseWorkQueryParams.worktype == '主观题') {
|
||||
// // 因菁优网题型因学科而不固定, 故非常规题重定义定为【主观题】
|
||||
|
@ -431,7 +433,7 @@ const handleQueryFromEntpCourseWork= (queryType) => {
|
|||
// } else {
|
||||
// workResource.entpCourseWorkList = entpcourseworkres.rows;
|
||||
// }
|
||||
|
||||
|
||||
if(entpcourseworkres.data&&entpcourseworkres.data.length>0){
|
||||
workResource.entpCourseWorkList = entpcourseworkres.data;
|
||||
workResource.entpCourseWorkTotal = entpcourseworkres.data.length;
|
||||
|
@ -509,7 +511,7 @@ const getEntpCourseWorkPointList = () => {
|
|||
/**
|
||||
* 添加资源
|
||||
* @param fromsrc - 试题来源
|
||||
* @param entpcourseworkid
|
||||
* @param entpcourseworkid
|
||||
*/
|
||||
const handleClassWorkQuizAdd = (fromsrc, entpcourseworkid) => {
|
||||
var exist = false;
|
||||
|
@ -608,11 +610,11 @@ const handleClassWorkSave = async () => {
|
|||
uniquekey: classWorkForm.uniquekey,// 作业名称、编码
|
||||
classid: 0,
|
||||
classcourseid: 0,
|
||||
entpcourseid: chapterId, // 这个字段很特别
|
||||
entpcourseid: chapterId, // 这个字段很特别
|
||||
slideid: 0,
|
||||
title: classWorkForm.title, // 作业说明?
|
||||
workcodes: JSON.stringify(classWorkForm.workcodes), // 作业内容?
|
||||
edusubject: userStore.edusubject, // 学科 语文 数学
|
||||
edusubject: userStore.edusubject, // 学科 语文 数学
|
||||
evalid: props.bookobj.levelSecondId, //userStore.evalid, // // 单元下的课ID
|
||||
edustage: userStore.edustage, // 学段 年纪 高中,初中,小学
|
||||
status: '10', //2024-09-11 作业布置分离后的 新模版数据; 之前老版本为空
|
||||
|
@ -628,16 +630,17 @@ const handleClassWorkSave = async () => {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (classWorkForm.worktype === "课堂展示") {
|
||||
boardLoading.value = true
|
||||
let canvasJson = proxy.$refs.boardref.getCanvasJson()
|
||||
let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64()
|
||||
// 课堂展示提交内容
|
||||
cform.title = classWorkForm.title;
|
||||
cform.worktag = classWorkForm.question;
|
||||
cform.title = classWorkForm.title;
|
||||
cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64});
|
||||
cform.entpcourseworklist = JSON.stringify([{'id':-1, 'score': '10'}]);
|
||||
try {
|
||||
|
@ -647,27 +650,19 @@ 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 {
|
||||
boardLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(classWorkForm.worktype === "常规作业"){
|
||||
fileLoading.value = true
|
||||
cform.workcodes = JSON.stringify(classWorkForm.fileHomeworkList);
|
||||
|
@ -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
|
||||
})
|
||||
|
@ -725,7 +710,7 @@ const handleClassWorkSave = async () => {
|
|||
}
|
||||
console.log(cform,'提交的数据');
|
||||
if(cform.entpcourseworklist == '') return ElMessage({ type: 'warning', message: '请先添加作业资源!'});
|
||||
|
||||
|
||||
addClassworkReturnId(cform).then(workres => {
|
||||
ElMessage({ type: 'success', message: '作业设计成功!'});
|
||||
// 重置提交表单
|
||||
|
@ -743,7 +728,7 @@ const handleClassWorkSave = async () => {
|
|||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if(props.isback){
|
||||
// 其他页面进入的 返回上一页
|
||||
router.back();
|
||||
|
@ -782,20 +767,20 @@ const editWork = async (cform) =>{
|
|||
|
||||
// 根据作业类型分类处理
|
||||
if (classWorkForm.worktype=='习题训练'){
|
||||
|
||||
|
||||
// 1.判断当前添加的作业是否与原来不同(跟父组件传来的值对比)
|
||||
let needUplEval = false;
|
||||
if (classWorkForm.quizlist.length != props.propsformobj.quizlist.length) {
|
||||
needUplEval = true;
|
||||
}else {
|
||||
// 只要有一个不一致则说明需要更新
|
||||
needUplEval = classWorkForm.quizlist.some(cur =>
|
||||
!props.propsformobj.quizlist.some(last =>
|
||||
needUplEval = classWorkForm.quizlist.some(cur =>
|
||||
!props.propsformobj.quizlist.some(last =>
|
||||
last.id === cur.id && last.score === cur.score
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// 2.需要重新更新eval的数据
|
||||
if (needUplEval) {
|
||||
// 说明: 因试题分值也需修改, 故无法通过按钮的增长删除来处理, 故将原作业全部删除后再重新添加
|
||||
|
@ -806,7 +791,7 @@ const editWork = async (cform) =>{
|
|||
arrEvalids.push(element.id);
|
||||
});
|
||||
const ids = arrEvalids.join(',');
|
||||
|
||||
|
||||
// 2.2.删除原作业
|
||||
const delRes = await delClassworkeval(ids);
|
||||
|
||||
|
@ -837,8 +822,8 @@ const editWork = async (cform) =>{
|
|||
needUplEval = true;
|
||||
}else {
|
||||
// 只要有一个不一致则说明需要更新
|
||||
needUplEval = classWorkForm.chooseWorkLists.some(cur =>
|
||||
!props.propsformobj.chooseWorkLists.some(last =>
|
||||
needUplEval = classWorkForm.chooseWorkLists.some(cur =>
|
||||
!props.propsformobj.chooseWorkLists.some(last =>
|
||||
last.id === cur.id && last.score === cur.score
|
||||
)
|
||||
);
|
||||
|
@ -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.更新作业任务下的课堂展示内容 (这里未做校验, 直接将当前文件对象更新过去)
|
||||
|
@ -902,15 +888,15 @@ watch(() => props.bookobj.levelSecondId, (newVal) => {
|
|||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.top, .bottom {
|
||||
flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.middle {
|
||||
flex: 1;
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
@ -937,8 +923,8 @@ watch(() => props.bookobj.levelSecondId, (newVal) => {
|
|||
|
||||
.work-right {
|
||||
height: 100%;
|
||||
padding: 0 0 0 5px;
|
||||
overflow: auto;
|
||||
padding: 0 0 0 5px;
|
||||
overflow: auto;
|
||||
line-height: 26px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
@ -949,19 +935,19 @@ watch(() => props.bookobj.levelSecondId, (newVal) => {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.choose-work-title{
|
||||
font-size: 1.2em;
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
margin-right: 5px
|
||||
}
|
||||
|
||||
.choose-work-content{
|
||||
width: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
flex-direction: column;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
:deep(.el-form-item__label){
|
||||
width: 50px !important;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
:collapse="isCollapse"
|
||||
>
|
||||
<!--左侧 教材 目录-->
|
||||
<div v-if="!isCollapse" style="height: 100%;overflow: hidden;">
|
||||
<div v-if="!isCollapse" style="height: 100%;overflow: hidden;">
|
||||
<ChooseTextbook @change-book="getData" @node-click="getData" />
|
||||
</div>
|
||||
</el-menu>
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
// 返回上一页---返回布置页面
|
||||
|
|
|
@ -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
|
||||
// 1、清空答题情况的两个table数据,- 左侧学生列表:classWorkAnalysis.classworkdata;- 右侧学生回答题目列表:classWorkAnalysis.activeStudentQuizlist
|
||||
// 1、清空完成情况的两个table数据,- 左侧学生列表: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
|
||||
|
@ -633,9 +633,10 @@ 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>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -14,7 +14,7 @@
|
|||
</template>
|
||||
</el-popover>
|
||||
<div style="margin-top: 7px"> <el-icon><ArrowRight /></el-icon> </div>
|
||||
|
||||
|
||||
<el-popover disabled placement="top-start" title="考点分析" trigger="hover" content="勾画、圈点,添加标记等,整理出本课的重点与难点,用于老师讲解和学生自主预习">
|
||||
<template #reference>
|
||||
<el-button-group>
|
||||
|
@ -24,7 +24,7 @@
|
|||
</template>
|
||||
</el-popover>
|
||||
<div style="margin-top: 7px"> <el-icon><ArrowRight /></el-icon> </div>
|
||||
|
||||
|
||||
<el-popover disabled placement="top-start" title="模拟命题" trigger="hover" content="勾画、圈点,添加标记等,整理出本课的重点与难点,用于老师讲解和学生自主预习">
|
||||
<template #reference>
|
||||
<el-button-group>
|
||||
|
@ -51,15 +51,15 @@
|
|||
<examReview
|
||||
:loading="loading"
|
||||
:listExamQuestion="listExamQuestion"
|
||||
v-if="curTask.viewkey=='真题回顾' "
|
||||
v-if="curTask.viewkey=='真题回顾' "
|
||||
/>
|
||||
|
||||
<pointAnalysis
|
||||
v-else-if="curTask.viewkey=='考点分析' "
|
||||
<pointAnalysis
|
||||
v-else-if="curTask.viewkey=='考点分析' "
|
||||
/>
|
||||
|
||||
<examMocks
|
||||
v-else
|
||||
<examMocks
|
||||
v-else
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -88,9 +88,9 @@ const sourceStore = useResoureStore();
|
|||
const viewportHeight = ref(0);
|
||||
const viewportWidth = ref(0);
|
||||
// 当前选中的章节或单元
|
||||
const curNode = ref({});
|
||||
// 试题集合
|
||||
const listExamQuestion = ref([]);
|
||||
const curNode = ref({});
|
||||
// 试题集合
|
||||
const listExamQuestion = ref([]);
|
||||
const loading = ref(false);
|
||||
const curTask = reactive({
|
||||
viewkey: '真题回顾',
|
||||
|
@ -299,4 +299,4 @@ onMounted(() => {
|
|||
}
|
||||
</style>
|
||||
|
||||
<style src="@/assets/styles/JYStyle.css"></style>
|
||||
<style src="@/assets/styles/JYStyle.css"></style>
|
||||
|
|
|
@ -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') {
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
:item="item"
|
||||
:index="index"
|
||||
@on-set="openSet"
|
||||
@on-reSet="openReSet"
|
||||
@on-reSet="openReSet"
|
||||
@on-delhomework="delhomework"
|
||||
>
|
||||
</file-list-item>
|
||||
|
@ -657,7 +657,7 @@ export default {
|
|||
this.$refs['reservDialog'].openDialog()
|
||||
},
|
||||
|
||||
// 打开外部链接
|
||||
// 打开外部链接
|
||||
// handleOutLink(key) {
|
||||
// if (key == 'homeWork') {
|
||||
// this.isOpenHomework = true
|
||||
|
@ -689,11 +689,11 @@ export default {
|
|||
// 前往作业设计页面
|
||||
goNewClassTask(){
|
||||
// router.push({ path: '/newClassTask' });
|
||||
this.$router.push({
|
||||
this.$router.push({
|
||||
path: '/newClassTask',
|
||||
query: {
|
||||
isBack: true,
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getWeekday1(date) {
|
||||
|
@ -730,7 +730,7 @@ export default {
|
|||
}
|
||||
});
|
||||
//---------------------
|
||||
// 暂时弃用 外链 新窗口打开标识
|
||||
// 暂时弃用 外链 新窗口打开标识
|
||||
// this.isOpenHomework = true;
|
||||
// // key 对应的 linkConfig.js 外部链接配置
|
||||
// let configObj = outLink()['homeWork']
|
||||
|
|
|
@ -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)=>{
|
||||
|
|
|
@ -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) => {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue