Merge branch 'main' of http://27.128.240.72:3000/zhuhao/AIx_Smarttalk into yangws
This commit is contained in:
commit
688f200d43
|
@ -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_RES_FILE_PATH = 'https://file.ysaix.com:7868/src/assets/textbook/booktxt/'
|
||||||
|
|
||||||
VITE_APP_BUILD_BASE_PATH = 'https://file.ysaix.com:7868/'
|
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_RES_FILE_PATH = 'https://prev.ysaix.com:7868/src/assets/textbook/booktxt/'
|
||||||
|
|
||||||
VITE_APP_BUILD_BASE_PATH = 'https://prev.ysaix.com:7868/'
|
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' })
|
loginWindow.loadFile(join(__dirname, '../renderer/index.html'), { hash: 'login' })
|
||||||
updateInit(loginWindow)
|
updateInit(loginWindow)
|
||||||
}
|
}
|
||||||
|
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') loginWindow.webContents.openDevTools()
|
||||||
loginWindow.webContents.openDevTools()
|
|
||||||
loginWindow.once('ready-to-show', () => {
|
loginWindow.once('ready-to-show', () => {
|
||||||
loginWindow.show()
|
loginWindow.show()
|
||||||
})
|
})
|
||||||
|
@ -96,7 +95,6 @@ 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: {
|
||||||
|
@ -129,7 +127,7 @@ function createMainWindow() {
|
||||||
shell.openExternal(details.url)
|
shell.openExternal(details.url)
|
||||||
return { action: 'deny' }
|
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']) {
|
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
|
||||||
mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
|
mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
|
||||||
|
@ -139,6 +137,7 @@ function createMainWindow() {
|
||||||
|
|
||||||
// mainWindow.setAlwaysOnTop(true, "screen-saver") // 将窗口设置为顶层窗口
|
// mainWindow.setAlwaysOnTop(true, "screen-saver") // 将窗口设置为顶层窗口
|
||||||
// mainWindow.setVisibleOnAllWorkspaces(true) // 如果窗口在所有工作区都可见
|
// mainWindow.setVisibleOnAllWorkspaces(true) // 如果窗口在所有工作区都可见
|
||||||
|
mainWindow.maximize();
|
||||||
// 第三步: 开启remote服务
|
// 第三步: 开启remote服务
|
||||||
remote.enable(mainWindow.webContents)
|
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
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ export const createWindow = async (type, data) => {
|
||||||
wins_tool.setIgnoreMouseEvents(true, {forward: true}) // 忽略鼠标事件但是事件继续传递给窗口
|
wins_tool.setIgnoreMouseEvents(true, {forward: true}) // 忽略鼠标事件但是事件继续传递给窗口
|
||||||
wins_tool.setAlwaysOnTop(true,'screen-saver') // 将窗口设置为顶层窗口
|
wins_tool.setAlwaysOnTop(true,'screen-saver') // 将窗口设置为顶层窗口
|
||||||
wins_tool.setVisibleOnAllWorkspaces(true) // 如果窗口在所有工作区都可见
|
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) // 事件监听处理
|
eventHandles(type, wins_tool) // 事件监听处理
|
||||||
return wins_tool
|
return wins_tool
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ export const createWindow = async (type, data) => {
|
||||||
win.type = type // 唯一标识
|
win.type = type // 唯一标识
|
||||||
win.show()
|
win.show()
|
||||||
win.setFullScreen(true) // 设置窗口为全屏
|
win.setFullScreen(true) // 设置窗口为全屏
|
||||||
win.webContents.openDevTools() // 打开调试工具
|
if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') win.webContents.openDevTools() // 打开调试工具
|
||||||
eventHandles(type, win) // 事件监听处理
|
eventHandles(type, win) // 事件监听处理
|
||||||
winPdf=win
|
winPdf=win
|
||||||
break
|
break
|
||||||
|
|
|
@ -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">
|
||||||
|
@ -879,18 +880,20 @@ watch(() => courseObj.node, (newVal,oldVal) => {
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!--
|
||||||
<style>
|
<style>
|
||||||
.el-table .hidden-row {
|
.el-table .hidden-row {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
/* color: #ccc !important; */
|
/* color: #ccc !important; */
|
||||||
}
|
}
|
||||||
.el-table .father-row {
|
.el-table .father-row {
|
||||||
--el-table-tr-bg-color: #fff;
|
--el-table-tr-bg-color: #fff;
|
||||||
}
|
}
|
||||||
.el-table .son-row {
|
.el-table .son-row {
|
||||||
--el-table-tr-bg-color: #f0f0f08a;
|
--el-table-tr-bg-color: #f0f0f08a;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
-->
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.page-classTaskAssign {
|
.page-classTaskAssign {
|
||||||
|
@ -907,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;
|
||||||
|
|
|
@ -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
|
||||||
// 1、清空答题情况的两个table数据,- 左侧学生列表:classWorkAnalysis.classworkdata;- 右侧学生回答题目列表:classWorkAnalysis.activeStudentQuizlist
|
// 1、清空完成情况的两个table数据,- 左侧学生列表: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({
|
||||||
|
@ -656,8 +656,6 @@ defineExpose({
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style src="@/assets/styles/JYStyle.css"></style>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
/*:deep(.reserv-date-pick) {
|
/*:deep(.reserv-date-pick) {
|
||||||
width: 140px;
|
width: 140px;
|
||||||
|
@ -765,3 +763,4 @@ defineExpose({
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
</style>
|
</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 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,6 +650,7 @@ 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 = [], // 作业习题列表内容
|
||||||
|
|
||||||
// 情况选择的资源缓存
|
// 情况选择的资源缓存
|
||||||
|
@ -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.更新作业任务下的课堂展示内容 (这里未做校验, 直接将当前文件对象更新过去)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 返回上一页---返回布置页面
|
// 返回上一页---返回布置页面
|
||||||
|
|
|
@ -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 :active-data="classWorkActiveData" :table-list="overviewData" style="width: 100%;"></ClassOverview>
|
<ClassOverview :active-data="classWorkActiveData" :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
|
||||||
// 1、清空答题情况的两个table数据,- 左侧学生列表:classWorkAnalysis.classworkdata;- 右侧学生回答题目列表:classWorkAnalysis.activeStudentQuizlist
|
// 1、清空完成情况的两个table数据,- 左侧学生列表: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,20 +646,18 @@ 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({
|
||||||
// })
|
// })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style src="@/assets/styles/JYStyle.css"></style>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.teachClassTask{
|
.teachClassTask{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -705,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>
|
||||||
|
|
||||||
<style scoped>
|
<style src="@/assets/styles/JYStyle.css"></style>
|
||||||
/* .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>
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ import FileImage from '@/components/file-image/index.vue'
|
||||||
import { asyncLocalFile } from '@/utils/talkFile'
|
import { asyncLocalFile } from '@/utils/talkFile'
|
||||||
import { toTimeText } from '@/utils/date'
|
import { toTimeText } from '@/utils/date'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
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 useUserStore from '@/store/modules/user'
|
||||||
import outLink from '@/utils/linkConfig'
|
import outLink from '@/utils/linkConfig'
|
||||||
import { sessionStore } from '@/utils/store'
|
import { sessionStore } from '@/utils/store'
|
||||||
|
@ -208,6 +208,7 @@ export default {
|
||||||
}
|
}
|
||||||
if (action === 'cancel'){
|
if (action === 'cancel'){
|
||||||
// 继续上课
|
// 继续上课
|
||||||
|
console.log(obj.bookImg)
|
||||||
if (obj.bookImg) {
|
if (obj.bookImg) {
|
||||||
//PPT
|
//PPT
|
||||||
listEntpcourse({
|
listEntpcourse({
|
||||||
|
@ -241,9 +242,20 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}else {
|
}else {
|
||||||
//APT
|
console.log(obj)
|
||||||
this.$emit('on-start-class', item, obj)
|
getSmarttalkPage({fileId: obj.entpcoursefileid}).then(res2=>{
|
||||||
done()
|
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') {
|
if (action === 'close') {
|
||||||
|
|
|
@ -291,6 +291,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
addAiPPT(item) {
|
addAiPPT(item) {
|
||||||
this.currentFileList.unshift(item.resData)
|
this.currentFileList.unshift(item.resData)
|
||||||
|
KjListItem.methods.openFileWin(item.resData);
|
||||||
this.pptDialog = false
|
this.pptDialog = false
|
||||||
},
|
},
|
||||||
// test() {
|
// test() {
|
||||||
|
|
Loading…
Reference in New Issue