Compare commits

..

No commits in common. "09df401cf16227f6872735faff80c7269aa39167" and "6de59fabfa15fa0fc8994df52dfb7321528d9666" have entirely different histories.

9 changed files with 98 additions and 159 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "aix-win", "name": "aix-win",
"version": "2.1.30", "version": "2.1.28",
"description": "", "description": "",
"main": "./out/main/index.js", "main": "./out/main/index.js",
"author": "上海交大重庆人工智能研究院", "author": "上海交大重庆人工智能研究院",

View File

@ -24,13 +24,6 @@ export const getPrepareById = (id) => {
}) })
} }
export const addFileToKj = (id) => {
return request({
url: '/smarttalk/file/addFileToKj/' + id,
method: 'get'
})
}
export function deleteSmarttalk(id) { export function deleteSmarttalk(id) {
return request({ return request({
url: '/smarttalk/file/' + id, url: '/smarttalk/file/' + id,
@ -60,14 +53,3 @@ export const moveSmarttalk = (params) => {
params params
}) })
} }
export const addFileToPrepareThird = (data) => {
return request({
url: '/smarttalk/file/addFileToPrepareThird',
method: 'post',
headers: {
'Content-Type': 'multipart/form-data'
},
data
})
}

View File

@ -55,7 +55,6 @@
<el-col :span="11"> <el-col :span="11">
<el-form-item label="知识点" label-width="70"> <el-form-item label="知识点" label-width="70">
<el-cascader <el-cascader
disabled
v-model="entpCourseWorkQueryParams.point" v-model="entpCourseWorkQueryParams.point"
clearable clearable
style="width: 100%" style="width: 100%"
@ -91,12 +90,7 @@
</el-row> </el-row>
<!-- 习题表格 --> <!-- 习题表格 -->
<div class="infinite-list-wrapper" > <div class="infinite-list-wrapper" >
<el-table <!-- <el-table :data="workResource.entpCourseWorkList" style="width: 100%; height: 100%;">
:data="workResource.entpCourseWorkList"
style="width: 100%; height: 100%;"
v-loading="pageParams.loading"
ref="tableRef"
>
<el-table-column type="index" width="60" /> <el-table-column type="index" width="60" />
<el-table-column align="left" > <el-table-column align="left" >
<template #header> <template #header>
@ -120,18 +114,22 @@
<el-button type="primary" @click="handleClassWorkQuizAdd('entpcourseworklist', scope.row.id)">添加</el-button> <el-button type="primary" @click="handleClassWorkQuizAdd('entpcourseworklist', scope.row.id)">添加</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table> -->
<ul
<!-- <ul
v-infinite-scroll="pageLoad" v-infinite-scroll="pageLoad"
class="infinite-list" class="infinite-list"
infinite-scroll-immediate="false" infinite-scroll-immediate="false"
infinite-scroll-distance='100' infinite-scroll-distance='1'
infinite-scroll-delay="1000" infinite-scroll-delay="1000"
:infinite-scroll-disabled="pageDisabled" :infinite-scroll-disabled="pageDisabled"
> >
<li v-for="(item,index) in workResource.entpCourseWorkList" :key="item" class="infinite-list-item"> <li v-for="(item,index) in workResource.entpCourseWorkList" :key="item" class="infinite-list-item">
<div align="left" style="width: 100%;" > <div align="left" style="width: 100%;" >
<!-- <template #header>
<div style="display: flex">
<div style="align-items: center;">题目内容</div>
</div>
</template> -->
<div @click="showExamAnalyseDrawer(item)"> <div @click="showExamAnalyseDrawer(item)">
<div> <div>
<span style="width: 20px;">{{ index +1 }}. </span> <span style="width: 20px;">{{ index +1 }}. </span>
@ -157,18 +155,18 @@
description="未找到相关试题" description="未找到相关试题"
style="width: 100%; height: 200px; margin-top: 20px;" style="width: 100%; height: 200px; margin-top: 20px;"
></el-empty> ></el-empty>
</div> --> </div>
</div> </div>
<!-- 分页 这里不用--> <!-- 分页 这里不用-->
<div style="height: 55px;"> <!-- <div style="height: 55px;">
<el-pagination <pagination
v-show="pageParams.total > 0" v-show="entpCourseWorkTotal > 0"
v-model:page="paginationParams.pageNum" v-model:page="paginationParams.pageNum"
v-model:limit="paginationParams.pageSize" v-model:limit="paginationParams.pageSize"
:total="pageParams.total" :total="entpCourseWorkTotal"
:style="{ position: 'relative', 'margin-top': '5px' }" :style="{ position: 'relative', 'margin-top': '5px' }"
@change="getPaginationList" /> @pagination="getPaginationList" />
</div> </div> -->
</div> </div>
<!-- 非习题训练常规作业 --> <!-- 非习题训练常规作业 -->
<div v-if="classWorkForm.worktype!='习题训练'"> <div v-if="classWorkForm.worktype!='习题训练'">
@ -278,7 +276,6 @@ import { onMounted, ref, nextTick, watch, reactive, getCurrentInstance, computed
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { cloneDeep } from 'lodash' import { cloneDeep } from 'lodash'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { Search } from '@element-plus/icons-vue'
import {listEntpcoursework, listEntpcourseworkNew, getEntpcoursework} from '@/api/education/entpCourseWork' import {listEntpcoursework, listEntpcourseworkNew, getEntpcoursework} from '@/api/education/entpCourseWork'
import { addClassworkReturnId } from '@/api/teaching/classwork' import { addClassworkReturnId } from '@/api/teaching/classwork'
@ -287,7 +284,6 @@ import { listEvaluation } from '@/api/subject'
import { listEntpcoursefile } from '@/api/education/entpcoursefile' import { listEntpcoursefile } from '@/api/education/entpcoursefile'
import { listKnowledgePoint } from "@/api/knowledge/knowledgePoint"; import { listKnowledgePoint } from "@/api/knowledge/knowledgePoint";
import { useGetHomework } from '@/hooks/useGetHomework' import { useGetHomework } from '@/hooks/useGetHomework'
import { processList } from '@/hooks/useProcessList' import { processList } from '@/hooks/useProcessList'
import { getCurrentTime } from '@/utils/date' import { getCurrentTime } from '@/utils/date'
@ -413,15 +409,15 @@ const fileLoading = ref(false); // 常规作业loading
// //
// const BASE_LIMIT_COUT = 50; // const BASE_LIMIT_COUT = 50; //
// const pageNoMore = computed( () => { const pageNoMore = computed( () => {
// if (pageParams.value.total < 1) { if (pageParams.value.total < 1) {
// return false; return false;
// } }
// let count = BASE_LIMIT_COUT >= pageParams.value.total ? pageParams.value.total : pageParams.value.originCount+BASE_LIMIT_COUT; let count = BASE_LIMIT_COUT >= pageParams.value.total ? pageParams.value.total : pageParams.value.originCount+BASE_LIMIT_COUT;
// return workResource.entpCourseWorkList.length >= count; return workResource.entpCourseWorkList.length >= count;
// }); });
// const pageDisabled = computed(() => pageParams.value.loading || pageNoMore.value); const pageDisabled = computed(() => pageParams.value.loading || pageNoMore.value);
const pageParams = ref({ const pageParams = ref({
loading: false, // loading: false, //
originCount: 0, // originCount: 0, //
@ -501,7 +497,7 @@ function Apis(key) {
// //
yearStr: entpCourseWorkQueryParams.yearStr !== '-1' ? entpCourseWorkQueryParams.yearStr:'', yearStr: entpCourseWorkQueryParams.yearStr !== '-1' ? entpCourseWorkQueryParams.yearStr:'',
// //
thirdId: entpCourseWorkQueryParams.point && entpCourseWorkQueryParams.point.length > 0 ? entpCourseWorkQueryParams.point[0]:'', thirdId: entpCourseWorkQueryParams.point.length > 0 ? entpCourseWorkQueryParams.point[0]:'',
// //
keyword: entpCourseWorkQueryParams.keyWord && entpCourseWorkQueryParams.keyWord !== '' ? entpCourseWorkQueryParams.keyWord:'', keyword: entpCourseWorkQueryParams.keyWord && entpCourseWorkQueryParams.keyWord !== '' ? entpCourseWorkQueryParams.keyWord:'',
@ -512,8 +508,10 @@ function Apis(key) {
}) })
} }
const handleQueryFromEntpCourseWork= async (queryType) => { const handleQueryFromEntpCourseWork= async (queryType) => {
pageParams.value.loading = true; pageParams.value.loading = true;
// ( warn: ) // ( warn: )
// if (this.courseObj.edusubject=='' && this.courseObj.edustage=='') { // if (this.courseObj.edusubject=='' && this.courseObj.edustage=='') {
// // [+][+] // // [+][+]
@ -521,16 +519,16 @@ const handleQueryFromEntpCourseWork= async (queryType) => {
// } // }
client(t('任务1', 1500)).then(res => { client(t('任务1', 1500)).then(res => {
//console.log("",res); console.log("请求返回",res);
// if(paginationParams.pageNum == 1){ if(paginationParams.pageNum == 1){
// workResource.entpCourseWorkList = []; workResource.entpCourseWorkList = [];
// workResource.entpCourseWorkTotal = 0; workResource.entpCourseWorkTotal = 0;
// // //
// // pageParams.value.loading = false; // pageParams.value.loading = false;
// // pageParams.value.isFirst = true; // pageParams.value.isFirst = true;
// // pageParams.value.originCount = 0; // pageParams.value.originCount = 0;
// } }
const data = res.data || []; const data = res.data || [];
if(data && data.length>0){ if(data && data.length>0){
// workResource.entpCourseWorkList = entpcourseworkres.data; // workResource.entpCourseWorkList = entpcourseworkres.data;
@ -544,21 +542,22 @@ const handleQueryFromEntpCourseWork= async (queryType) => {
// //
processList(data); processList(data);
//workResource.entpCourseWorkList.push(...data); workResource.entpCourseWorkList.push(...data);
workResource.entpCourseWorkList = data;
// //
if (pageParams.value.isFirst) { if (pageParams.value.isFirst) {
pageParams.value.isFirst = false; pageParams.value.isFirst = false;
pageParams.value.originCount = workResource.entpCourseWorkList.length; pageParams.value.originCount = workResource.entpCourseWorkList.length;
pageParams.value.total = parseInt(res.msg); pageParams.value.total = parseInt(res.msg);
paginationParams.pageNum = Math.ceil(parseInt(res.msg)/paginationParams.pageSize);
//console.log('first->', pageParams.value, paginationParams);
} }
} }
pageParams.value.loading = false; pageParams.value.loading = false;
}); });
//const entpcourseworkres = await listEntpcourseworkNew(queryForm);
// const data = entpcourseworkres.data;
} }
// //
@ -978,15 +977,6 @@ const showExamAnalyseDrawer = (row) => {
}) })
} }
const tableRef = ref();
const getPaginationList = ( page, limit ) => {
paginationParams.pageNum = page;
paginationParams.pageSize = limit;
//console.log(page, limit)
handleQueryFromEntpCourseWork(0);
//
tableRef.value.setScrollTop(0);
}
const pageLoad = async() => { const pageLoad = async() => {
console.log("加载中...") console.log("加载中...")

View File

@ -179,7 +179,7 @@ const classWorkAnalysis = reactive({
entpcourseworklistarray: [], // ID entpcourseworklistarray: [], // ID
}) })
const tableRadio = reactive({ const tableRadio = reactive({
value: 1, // value: '1', //
list: [], // list list: [], // list
num1: 0, // num1: 0, //
num0: 0 // num0: 0 //
@ -219,7 +219,7 @@ const openDialog = (data, isInit=true) => {
classWorkAnalysis.workclass = data.workclass classWorkAnalysis.workclass = data.workclass
// //
tableRadio.list = [] tableRadio.list = []
tableRadio.value = 1 tableRadio.value = '1'
tableRadio.num0 = 0 tableRadio.num0 = 0
tableRadio.num1 = 0 tableRadio.num1 = 0
@ -401,7 +401,7 @@ const getClassWorkStudentList = (rowId) => {
tableRadio.list = tableRadio.list =
classWorkAnalysis.classworkdata && classWorkAnalysis.classworkdata &&
classWorkAnalysis.classworkdata.filter((item) => item.finishtimelength != '0') classWorkAnalysis.classworkdata.filter((item) => item.finishtimelength != '0')
tableRadio.value = 1 tableRadio.value = '1'
tableRadio.num0 = classWorkAnalysis.classworkdata.length - tableRadio.list.length tableRadio.num0 = classWorkAnalysis.classworkdata.length - tableRadio.list.length
tableRadio.num1 = tableRadio.list.length tableRadio.num1 = tableRadio.list.length
// //
@ -417,7 +417,7 @@ const getClassWorkStudentList = (rowId) => {
*/ */
const teacherCriticism = ()=>{ const teacherCriticism = ()=>{
// list // list
if(tableRadio.value == 1 && classWorkAnalysis.worktype == '习题训练'){ if(tableRadio.value == '1'&& classWorkAnalysis.worktype == '习题训练'){
// //
tableRadio.list = tableRadio.list.map((item) => { tableRadio.list = tableRadio.list.map((item) => {
return { return {
@ -572,16 +572,16 @@ const tableRadioChange = (e) => {
isopen_dtwk_table.value = false; isopen_dtwk_table.value = false;
console.log(e,'??????') console.log(e,'??????')
console.log("学生列表:", classWorkAnalysis.classworkdata) console.log("学生列表:", classWorkAnalysis.classworkdata)
if(e==1){ if(e=='1'){
tableRadio.list = classWorkAnalysis.classworkdata.filter(item => item.finishtimelength != '0') tableRadio.list = classWorkAnalysis.classworkdata.filter(item => item.finishtimelength != '0')
tableRadio.value = 1; tableRadio.value = '1';
tableRadio.num0 = classWorkAnalysis.classworkdata.length - tableRadio.list.length; tableRadio.num0 = classWorkAnalysis.classworkdata.length - tableRadio.list.length;
tableRadio.num1 = tableRadio.list.length; tableRadio.num1 = tableRadio.list.length;
// //
teacherCriticism(); teacherCriticism();
}else if(e==0){ }else if(e=='0'){
tableRadio.list = classWorkAnalysis.classworkdata.filter(item => item.finishtimelength == '0') tableRadio.list = classWorkAnalysis.classworkdata.filter(item => item.finishtimelength == '0')
tableRadio.value = 0; tableRadio.value = '0';
tableRadio.num0 = tableRadio.list.length; tableRadio.num0 = tableRadio.list.length;
tableRadio.num1 = classWorkAnalysis.classworkdata.length - tableRadio.list.length; tableRadio.num1 = classWorkAnalysis.classworkdata.length - tableRadio.list.length;
} }

View File

@ -48,7 +48,7 @@
const nodeClick = (data) => { const nodeClick = (data) => {
getNodeInfo.value = { getNodeInfo.value = {
textbookId:data.node.rootid, textbookId:data.node.rootid,
cataList:getFullObj(data.node) bookList:getFullObj(data.node)
} }
console.log(getNodeInfo.value,'log') console.log(getNodeInfo.value,'log')
} }

View File

@ -126,12 +126,6 @@
<span>下载</span> <span>下载</span>
</el-button> </el-button>
</div> </div>
<div v-if="item.fileSuffix === 'ppt' || item.fileSuffix === 'pptx'" class="item-popover-item">
<el-button text @click="adToKj(item)">
<i class="iconfont icon-jiahao"></i>
<span>加入课件</span>
</el-button>
</div>
<div class="item-popover-item"> <div class="item-popover-item">
<el-button text @click="moveSmarttalkFun(item)"> <el-button text @click="moveSmarttalkFun(item)">
<el-icon> <el-icon>
@ -159,7 +153,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, addFileToKj } from '@/api/file' import { deleteSmarttalk, updateSmarttalk, getPrepareById } 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'
@ -189,14 +183,6 @@ export default {
} }
}, },
methods: { methods: {
adToKj(item) {
addFileToKj(item.id).then(res=>{
console.log(res)
item.fileFlag = "课件"
},error=>{
console.log(error)
})
},
editTalk(item) { editTalk(item) {
console.log(item,this.userInfo,'this.userInfo') console.log(item,this.userInfo,'this.userInfo')
ElMessageBox.prompt('请输入新的名称', '重命名', { ElMessageBox.prompt('请输入新的名称', '重命名', {

View File

@ -2,6 +2,7 @@
<div v-loading="isLoading" class="page-resource flex"> <div v-loading="isLoading" class="page-resource flex">
<ChooseTextbook @node-click="nodeClick" /> <ChooseTextbook @node-click="nodeClick" />
<div class="page-center-wrap"> <div class="page-center-wrap">
<el-button @click="openChapter" type="primary">打开章节</el-button>
<el-tabs v-model="activeAptTab" style="height: 100%;"> <el-tabs v-model="activeAptTab" style="height: 100%;">
<el-tab-pane label="教学课件" name="教学课件" class="prepare-center-jxkj"> <el-tab-pane label="教学课件" name="教学课件" class="prepare-center-jxkj">
<div class="prepare-center-header"> <div class="prepare-center-header">
@ -140,6 +141,8 @@
<!-- 上课配置 --> <!-- 上课配置 -->
<class-start ref="calssRef" @close="closeChange"/> <class-start ref="calssRef" @close="closeChange"/>
<PptDialog @add-success="addAiPPT" :currentNode="currentNode" :uploadData="uploadData" v-model="pptDialog"/> <PptDialog @add-success="addAiPPT" :currentNode="currentNode" :uploadData="uploadData" v-model="pptDialog"/>
<!-- 章节弹窗 -->
<TreeLog ref="treelogRef"/>
<!-- <button @click="test">test</button> --> <!-- <button @click="test">test</button> -->
</template> </template>
<script setup> <script setup>
@ -793,6 +796,11 @@ export default {
'&reservId=' + '&reservId=' +
id id
}) })
},
//
openChapter(){
//
this.$refs.treelogRef.openDialog()
} }
} }
} }

View File

@ -18,17 +18,21 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row class="resoure-btns"> <!-- 第三方资源筛选-->
<!-- <el-row class="resoure-btns" v-if="isThird">
<el-col :span="24" class="query-row flex"> <el-col :span="24" class="query-row flex">
<div class="flex row-left"> <div class="flex row-left">
<!-- 第三方资源筛选--> <el-button v-for="item in coursewareTypeList" :key="item.id"
<el-select v-if="isThird" v-model="sourceStore.thirdQuery.type" @change="sourceStore.thirdChangeType" :type="sourceStore.thirdQuery.type == item.value ? 'primary' : ''" round
style="width: 110px"> @click="sourceStore.thirdChangeType(item.value)">
<el-option v-for="item in coursewareTypeList" :key="item.value" :label="item.label" {{item.label }}
:value="item.value" /> </el-button>
</el-select> </div>
</el-col>
<el-select v-else v-model="sourceStore.query.fileSuffix" @change="sourceStore.changeSuffix" </el-row> -->
<el-row class="resoure-btns">
<el-col :span="24" class="query-row flex">
<div class="flex row-left"> <el-select v-model="sourceStore.query.fileSuffix" @change="sourceStore.changeSuffix"
style="width: 110px"> style="width: 110px">
<el-option v-for="item in sourceStore.resourceFormatList" :key="item.value" :label="item.label" <el-option v-for="item in sourceStore.resourceFormatList" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />

View File

@ -50,10 +50,6 @@
</div> </div>
</div> </div>
</div> </div>
<el-button v-loading="item.loading" size="small" plain round type="primary" @click.stop="openChapter(item)">
<i class="iconfont icon-jiahao"></i>
备课</el-button
>
</li> </li>
</ul> </ul>
</el-scrollbar> </el-scrollbar>
@ -70,27 +66,25 @@
/> />
</div> </div>
<FilePreview ref="thirdPreview" v-model="isViewImg"></FilePreview> <FilePreview ref="thirdPreview" v-model="isViewImg"></FilePreview>
<TreeLog ref="treelogRef" @onsuccess="addToPrepare"/>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { ElMessage } from 'element-plus' // import { ElMessage, ElMessageBox } from 'element-plus'
import { Clock,View,Folder } from '@element-plus/icons-vue' import { Clock,View,Folder,Search } from '@element-plus/icons-vue'
import FileImage from '@/components/file-image/index.vue' import FileImage from '@/components/file-image/index.vue'
import FilePreview from '@/components/thirdFile-preview/index.vue' import FilePreview from '@/components/thirdFile-preview/index.vue'
import useUserStore from '@/store/modules/user'
import useResoureStore from '../store' import useResoureStore from '../store'
import { addFileToPrepareThird } from '@/api/file'
import TreeLog from '@/views/prepare/components/treeLog.vue'
const userstore = useUserStore()
const sourceStore = useResoureStore() const sourceStore = useResoureStore()
// const userInfo = userstore.user
// //
const isViewImg = ref(false) const isViewImg = ref(false)
const thirdPreview = ref() const thirdPreview = ref()
const treelogRef = ref()
const currentItem = ref()
// change // change
const handleSizeChange = (limit) => { const handleSizeChange = (limit) => {
@ -120,31 +114,6 @@ const handleRow = (item) => {
isViewImg.value = true isViewImg.value = true
thirdPreview.value.init(item.itemId) thirdPreview.value.init(item.itemId)
} }
const openChapter = (item)=>{
currentItem.value = item
//
treelogRef.value.openDialog()
}
const addToPrepare = (data) => {
console.log(data)
let chapterArr = []
for (let i = 0; i < data.cataList.length; i++) {
chapterArr.push({id: data.cataList[i].id,name: data.cataList[i].title})
}
let postData = {
itemId: currentItem.value.itemId,
textBookId: data.textbookId,
chapter: JSON.stringify(chapterArr)
}
currentItem.value.loading = true
addFileToPrepareThird(postData).then((res) => {
currentItem.value.loading = false
console.log(res)
if (res.code === 200) {
ElMessage.success("加入备课成功")
}
})
}
</script> </script>
<style lang="scss"> <style lang="scss">