Merge branch 'main' into zhuhao_dev

# Conflicts:
#	src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
This commit is contained in:
朱浩 2024-10-19 17:21:34 +08:00
commit 6f35ad8a1a
9 changed files with 52 additions and 44 deletions

View File

@ -95,6 +95,7 @@ function createMainWindow() {
frame: false, // 无边框 frame: false, // 无边框
autoHideMenuBar: true, autoHideMenuBar: true,
maximizable: false, maximizable: false,
fullscreen: true,
icon: join(__dirname, '../../resources/logo2.ico'), icon: join(__dirname, '../../resources/logo2.ico'),
...(process.platform === 'linux' ? { icon } : {}), ...(process.platform === 'linux' ? { icon } : {}),
webPreferences: { webPreferences: {

File diff suppressed because one or more lines are too long

View File

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

View File

@ -15,10 +15,11 @@
<!-- 标题 --> <!-- 标题 -->
<el-row style="align-items: center; margin-bottom: 0px; flex: 0 0 auto"> <el-row style="align-items: center; margin-bottom: 0px; flex: 0 0 auto">
<el-col :span="12" style="padding-left: 20px; text-align: left;"> <el-col :span="12" style="padding-left: 20px; text-align: left;">
<div class="unit-top-left" @click="isCollapse = !isCollapse"> <!-- <div class="unit-top-left" @click="isCollapse = !isCollapse"> -->
<i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i> <div class="unit-top-left">
<span>课程目录</span> <!-- <i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i> -->
<i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> <span>作业布置</span>
<!-- <i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> -->
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -909,7 +910,6 @@ watch(() => courseObj.node, (newVal,oldVal) => {
min-height: 100%; min-height: 100%;
} }
.unit-top-left { .unit-top-left {
cursor: pointer;
.icon-xiangzuo { .icon-xiangzuo {
margin-right: 5px; margin-right: 5px;

View File

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

View File

@ -21,7 +21,7 @@
<div v-if="classWorkForm.worktype == '课堂展示'" style="height: 100%; display: flex; flex-direction: column;"> <div v-if="classWorkForm.worktype == '课堂展示'" style="height: 100%; display: flex; flex-direction: column;">
<div style="flex: 0 0 auto;"> <div style="flex: 0 0 auto;">
<el-form-item label="问题"> <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> </el-form-item>
</div> </div>
<div v-loading="boardLoading" class="board-wrap" style="height: 100%; flex: 1; overflow: hidden;"> <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 chooseWorkLists: props.propsformobj.chooseWorkLists?cloneDeep(props.propsformobj.chooseWorkLists):[], // list
fileHomeworkList: props.propsformobj.fileHomeworkList?cloneDeep(props.propsformobj.fileHomeworkList):[], // fileHomeworkList: props.propsformobj.fileHomeworkList?cloneDeep(props.propsformobj.fileHomeworkList):[], //
whiteboardObj: props.propsformobj.whiteboardObj?cloneDeep(props.propsformobj.whiteboardObj):'', // - 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); const boardLoading = ref(false);
@ -637,6 +639,7 @@ const handleClassWorkSave = async () => {
let canvasJson = proxy.$refs.boardref.getCanvasJson() let canvasJson = proxy.$refs.boardref.getCanvasJson()
let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64() let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64()
// //
cform.worktag = classWorkForm.question;
cform.title = classWorkForm.title; cform.title = classWorkForm.title;
cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64}); cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64});
cform.entpcourseworklist = JSON.stringify([{'id':-1, 'score': '10'}]); cform.entpcourseworklist = JSON.stringify([{'id':-1, 'score': '10'}]);
@ -647,12 +650,13 @@ const handleClassWorkSave = async () => {
classWorkForm.worktype = "课堂展示"; classWorkForm.worktype = "课堂展示";
classWorkForm.uniquekey = props.propsformobj.uniquekey, // classWorkForm.uniquekey = props.propsformobj.uniquekey, //
classWorkForm.title = ""; classWorkForm.title = "";
classWorkForm.question = "";
classWorkForm.quizlist = [], // classWorkForm.quizlist = [], //
// //
classWorkForm.chooseWorkLists = []; // list classWorkForm.chooseWorkLists = []; // list
classWorkForm.whiteboardObj = ''; // ? // classWorkForm.whiteboardObj = ''; // ? //
boardLoading.value = false boardLoading.value = false
}) })
} finally { } finally {
@ -838,6 +842,7 @@ const editWork = async (cform) =>{
let canvasJson = proxy.$refs.boardref.getCanvasJson() let canvasJson = proxy.$refs.boardref.getCanvasJson()
let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64() let canvasBase64 = await proxy.$refs.boardref.getCanvasBase64()
cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64}); cform.workcodes = JSON.stringify({json: canvasJson, base64: canvasBase64});
cform.worktag = classWorkForm.question;
} }
else if (classWorkForm.worktype=='常规作业') { else if (classWorkForm.worktype=='常规作业') {
// 1. (, ) // 1. (, )

View File

@ -279,7 +279,7 @@ const getStudentName = id => studentList.value.length && (studentList.value.find
// - // -
const getActive = ind => activeTopic.value != ind const getActive = ind => activeTopic.value != ind
// - // -
const clickInfo = async ind => { const clickInfo = async ind => {
activeTopic.value = activeTopic.value != ind ? ind : 0 activeTopic.value = activeTopic.value != ind ? ind : 0
setTimeout(() => {scrollToElement('collapse-' + ind)}, 300); 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-row style="align-items: center; margin-bottom: 0px; flex: 0 0 auto">
<el-col :span="12" style="padding-left: 20px; text-align: left;"> <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="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> <!-- <i v-if="!isCollapse" class="iconfont icon-xiangzuo" style="color: blue;"></i> -->
<span>课程目录</span> <span>作业设计</span>
<i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> <!-- <i v-if="isCollapse" class="iconfont icon-xiangyou" style="color: blue;"></i> -->
</div> </div>
<div v-else class="unit-top-left"> <div v-else class="unit-top-left">
<i class="iconfont icon-xiangzuo cursor-pointer" style="color: blue;" @click="goBack">返回上页</i> <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 chooseWorkLists: classtaskObj? JSON.parse(classtaskObj).chooseWorkLists : [],// list
fileHomeworkList: classtaskObj? JSON.parse(classtaskObj).fileHomeworkList : [],// list fileHomeworkList: classtaskObj? JSON.parse(classtaskObj).fileHomeworkList : [],// list
whiteboardObj: classtaskObj? JSON.parse(classtaskObj).whiteboardObj : '',// whiteboardObj: classtaskObj? JSON.parse(classtaskObj).whiteboardObj : '',//
question: classtaskObj? JSON.parse(classtaskObj).question : '',//
}) })
@ -113,7 +114,7 @@ const onOpenLeftBook = () => {
proxy.$modal.msgError(`当前为编辑状态不可选择课程!`); proxy.$modal.msgError(`当前为编辑状态不可选择课程!`);
}else{ }else{
// //
isCollapse.value = !isCollapse.value // isCollapse.value = !isCollapse.value
} }
} }
// --- // ---

View File

@ -3,7 +3,7 @@
<div class="teachClassTask_header"> <div class="teachClassTask_header">
<div style="font-size: 18px; display: flex; flex-wrap: nowrap"> <div style="font-size: 18px; display: flex; flex-wrap: nowrap">
<div style="flex: 1"> <div style="flex: 1">
{{ classWorkAnalysis.title }}答题情况 {{ classWorkAnalysis.title }}完成情况
<el-tag :type="classWorkAnalysis.workclass" size="large" style="height: 25px">{{ <el-tag :type="classWorkAnalysis.workclass" size="large" style="height: 25px">{{
classWorkAnalysis.worktype classWorkAnalysis.worktype
}}</el-tag> }}</el-tag>
@ -23,13 +23,13 @@
v-if="classWorkAnalysis.row.worktype == '习题训练'" v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'quizStats' ? 'success' : ''" :type="classWorkAnalysis.view == 'quizStats' ? 'success' : ''"
@click="workHandle('quizStats')" @click="workHandle('quizStats')"
>逐题分析</el-button >逐题讲评</el-button
> >
<el-button <el-button
v-if="classWorkAnalysis.row.worktype == '习题训练'" v-if="classWorkAnalysis.row.worktype == '习题训练'"
:type="classWorkAnalysis.view == 'report' ? 'success' : ''" :type="classWorkAnalysis.view == 'report' ? 'success' : ''"
@click="handleClassOverviewOpen('report')" @click="handleClassOverviewOpen('report')"
>整体分析</el-button >训练报告</el-button
> >
</el-button-group> </el-button-group>
</div> </div>
@ -131,12 +131,12 @@
</div> </div>
</div> </div>
<!-- 逐题分析 --> <!-- 逐题讲评 -->
<div v-else-if="classWorkAnalysis.view == 'quizStats'" style="width: 100%;"> <div v-else-if="classWorkAnalysis.view == 'quizStats'" style="width: 100%;">
<quiz-stats :active-data="classWorkActiveData" style="width: 100%;height: 100%;"/> <quiz-stats :active-data="classWorkActiveData" style="width: 100%;height: 100%;"/>
</div> </div>
<!-- 整体分析--> <!-- 训练报告-->
<div v-else-if="classWorkAnalysis.view == 'report'" style="width: 100%;overflow-y: scroll"> <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" :eval-id="courseObj.evalid"></ClassOverview> -->
<ClassOverview :table-list="overviewData" style="width: 100%;"></ClassOverview> <ClassOverview :table-list="overviewData" style="width: 100%;"></ClassOverview>
@ -180,7 +180,7 @@ const tableRadio = reactive({
const loading_dt_table = ref(false) const loading_dt_table = ref(false)
const isopen_dtwk_table = ref(false) const isopen_dtwk_table = ref(false)
// zdg: // zdg:
const classWorkActiveData = reactive({ const classWorkActiveData = reactive({
quizlist: [], // quizlist: [], //
studentList: [], // - studentList: [], // -
@ -204,7 +204,7 @@ const classWorkAnalysisScore = reactive({
// } // }
// ) // )
const openDialog = (data) => { const openDialog = (data) => {
console.log(data, '点击的item答题情况') console.log(data, '点击的item完成情况')
classWorkAnalysis.title = data.uniquekey ? data.uniquekey + '--' : '' classWorkAnalysis.title = data.uniquekey ? data.uniquekey + '--' : ''
classWorkAnalysis.worktype = data.worktype classWorkAnalysis.worktype = data.worktype
@ -459,7 +459,7 @@ const getStudentClassWorkDataDetail = (row) => {
} }
}) })
.catch(() => { .catch(() => {
console.log('获取答题情况失败') console.log('获取完成情况失败')
ElMessage({ ElMessage({
type: 'warning', type: 'warning',
message: '未获取到答题信息!' message: '未获取到答题信息!'
@ -471,7 +471,7 @@ const onClassWorkScoreSubmit = () => {
console.log('批改后返回的方法') console.log('批改后返回的方法')
loading_dt_table.value = true loading_dt_table.value = true
isopen_dtwk_table.value = false isopen_dtwk_table.value = false
// 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist // 1table- classWorkAnalysis.classworkdata- classWorkAnalysis.activeStudentQuizlist
// - // -
classWorkAnalysis.classworkdata = [] classWorkAnalysis.classworkdata = []
classWorkAnalysis.activeStudentQuizlist = [] classWorkAnalysis.activeStudentQuizlist = []
@ -528,7 +528,7 @@ const escapeHtmlQuotes = (str) => {
return result; return result;
} }
//#region //#region
// - // -
const workHandle = (type) => { const workHandle = (type) => {
// ui // ui
@ -563,11 +563,11 @@ const getWorkFeedList = async() =>{
//#endregion //#endregion
//#regin //#regin
/* /*
author: yangws author: yangws
time: 2024-8-06 16:35:33 time: 2024-8-06 16:35:33
function: 整体分析的处理 function: 训练报告的处理
*/ */
const handleClassOverviewOpen = (type) =>{ const handleClassOverviewOpen = (type) =>{
// ui // ui
@ -646,12 +646,12 @@ onMounted(() => {
watch(classWorkAnalysis, (newVal, oldVal) => { watch(classWorkAnalysis, (newVal, oldVal) => {
if(newVal.view != 'quizStats'){ if(newVal.view != 'quizStats'){
console.log('关闭zdg: 定时执行') console.log('关闭zdg: 定时执行')
clearInterval(classWorkActiveData.timerId) // clearInterval(classWorkActiveData.timerId) //
} }
}) })
onUnmounted(() => { onUnmounted(() => {
clearInterval(classWorkActiveData.timerId) // clearInterval(classWorkActiveData.timerId) //
}) })
// defineExpose({ // defineExpose({