feat:合并

This commit is contained in:
lixg
2023-01-09 15:55:53 +08:00
6 changed files with 219 additions and 51 deletions

View File

@@ -22,3 +22,12 @@ export const QueryAssessmentManageMessage = (obj) => http.post('/admin/assessmen
// 评估管理评估详情查看
export const QueryAssessmentDetail = (obj) => http.post('/admin/assessment/manage/queryAssessmentDetail', obj)
// 下载中心
export const DownLoadList = (obj) => http.get('/admin/download/page', {params: obj})
// 下载中心容量查询
export const DownLoadTotalSize = (obj) => http.get('/admin/download/totalSize', {params: obj})
// 下载中心删除
export const RemoveDownLoadHomeWork = (obj) => http.get('/admin/download/del', {params: obj})

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -29,7 +29,7 @@
v-for="(values, index) in questionListArr"
:key="index">
<!-- 单项选择 -->
<div v-if="values[0].questionType==1" class="assessbox" style="margin-top: 30px">
<div v-if="values.questionType==1" class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">单选</div>
@@ -37,18 +37,18 @@
<div class="box1" style="margin-left: 64px">
<div class="asstype">题干</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
{{values[0]?.singleStemName}}
{{values?.singleStemName}}
</div>
</div>
<div v-for="(iitem,indexs) in values" :key="indexs">
<div class="box1" style="margin-left: 55px; margin-top: 20px">
<div class="asstype">选择{{indexs+1}}</div>
<div>
<div class="box1" v-for="(itteems, indexss) in values.assessmentSingleChoiceVoList" style="margin-left: 55px; margin-top: 20px" :key="indexss">
<div class="asstype">选择{{indexss+1}}</div>
<div style="display:flex;justify-content:center;align-items:center;">
<div v-if="iitem.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
</div>
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
{{iitem.singleOptionName}}
{{itteems.singleOptionName}}
</div>
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
</div>
@@ -56,7 +56,7 @@
<div style="margin-bottom:30px;"></div>
</div>
<!-- 多项选择 -->
<div v-if="values[0].questionType==2" class="assessbox" style="margin-top: 30px">
<div v-if="values.questionType==2" class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">多选</div>
@@ -64,18 +64,18 @@
<div class="box1" style="margin-left: 64px">
<div class="asstype">题干</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
{{values[0]?.multipleStemName}}
{{values?.multipleStemName}}
</div>
</div>
<div v-for="(iitem,indexs) in values" :key="indexs">
<div class="box1" style="margin-left: 55px; margin-top: 20px">
<div class="asstype">选择{{indexs+1}}</div>
<div>
<div class="box1" v-for="(itteems, indexss) in values.multipleChoiceVoList" style="margin-left: 55px; margin-top: 20px" :key="indexss">
<div class="asstype">选择{{indexss+1}}</div>
<div style="display:flex;justify-content:center;align-items:center;">
<div v-if="iitem.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
</div>
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
{{iitem.multipleOptionName}}
{{itteems.multipleOptionName}}
</div>
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
</div>
@@ -83,7 +83,7 @@
<div style="margin-bottom:30px;"></div>
</div>
<!-- 问答题 -->
<div v-if="values[0].questionType==3" class="assessbox" style="margin-top: 30px">
<div v-if="values.questionType==3" class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">问答题</div>
@@ -91,7 +91,7 @@
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
{{values[0]?.assessmentQaTitle}}
{{values?.assessmentQaTitle}}
</div>
</div>
<div
@@ -100,12 +100,12 @@
>
<div class="asstype">描述</div>
<div style="color: rgba(51, 51, 51, 1); font-size: 14px">
{{ values[0]?.assessmentQaDescribe }}
{{ values?.assessmentQaDescribe }}
</div>
</div>
</div>
<!-- 评分题 -->
<div v-if="values[0].questionType==4" class="assessbox" style="margin-top: 30px">
<div v-if="values.questionType==4" class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">评分题</div>
@@ -113,13 +113,13 @@
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
{{values[0]?.assessmentScTitle}}{{ values[0]?.assessmentMinScore }}{{ values[0]?.assessmentMaxScore }}
{{values?.assessmentScTitle}}
</div>
</div>
<div class="lastbox">
<div class="sorcetext">非常不满意</div>
<div class="sorcebox" v-for="(iittem, index) in [1,2,3,4,5,6,7,8,9,10]" :key="index">
<div :class="index+1 == values[0].selectAnswer ? 'numbox' : 'numbox1'">{{ iittem }}</div>
<div v-if="iittem >= values.assessmentMinScore && iittem <= values.assessmentMaxScore" :class="index+1 == values.selectAnswer ? 'numbox' : 'numbox1'">{{ iittem }}</div>
</div>
<div class="sorcetext">非常满意</div>
</div>
@@ -200,8 +200,14 @@ export default {
}).then(res=>{
console.log(res)
if(res.data.code==200){
let qarr = [res.data.data.assessmentEssayQuestionDtoList, res.data.data.assessmentMultipleChoiceDtoList,res.data.data.assessmentScoringQuestionDtoList,res.data.data.assessmentSingleChoiceDtoList]
let newarr = formateArr(qarr).sort((a, b) => { return a[0].orderNumber - b[0].orderNumber})
let qarr = [res.data.data.essayQuestionVoList, res.data.data.multipleStemVoList,res.data.data.scoringQuestionVoList,res.data.data.singleStemVoList]
let allArr = []
for(let i=0;i<qarr.length;i++){
for(let j=0;j<qarr[i].length;j++){
allArr.push(qarr[i][j])
}
}
let newarr = formateArr(allArr).sort((a, b) => { return a.orderNumber - b.orderNumber})
state.questionListArr = newarr
console.log('我是经过排序后的题目',newarr)
}

View File

@@ -26,13 +26,13 @@
/>
</div>
<div class="btns">
<div class="btn1">
<div class="btn1" @click="searchDownloadList">
<div class="img1">
<img src="../assets/images/courseManage/search0.png" />
</div>
<div class="wz">搜索</div>
</div>
<div class="btn2">
<div class="btn2" @click="reseatDownloadList">
<div class="img2">
<img src="../assets/images/courseManage/reset1.png" />
</div>
@@ -53,17 +53,21 @@
"
>
<div>当前容量:</div>
<div>55.01MB / 2GB</div>
<div>{{formatCapacity(capacity)}} / 2GB</div>
</div>
<a-progress :percent="40" :width="200" :show-info="false" :stroke-color="{
'0%': '#45B058',
'100%': '#45B058',
<a-progress :percent="countCMB" :width="200" :show-info="false" :stroke-color="{
'0%': countCMB>2?'#FF0000 ':'#45B058',
'100%': countCMB>2?'#FF0000 ':'#45B058',
}" />
<div v-if="countCMB>2" style="color:rgba(255, 116, 116, 1);font-size:12px;">容量已满,请删除文件</div>
</div>
</div>
<!-- 文件容器 -->
<div style="display:flex;flex-wrap:wrap;">
<div v-for="(values, index) in homeWorkList" class="zipcontainer" :key="index">
<div v-if="homeWorkList.length==0" style="width:100%;height:500px;display:flex;justify-content:center;align-items:center;border:1px solid #d9d9d9;border-radius: 8px;margin-top: 60px;">
<img src="../assets/images/courseManage/downloadnodata.png" />
</div>
<div v-else v-for="(values, index) in homeWorkList" class="zipcontainer" :key="index">
<!-- 单个文件 -->
<div v-if="values" class="item">
<div class="itemup">
@@ -71,56 +75,159 @@
<div class="cent">
<div class="zip"></div>
<div class="ziprit">
<div class="textop">作业名称</div>
<div class="textop">{{values.name}}</div>
<div class="texdown">
<div class="timemanag" style="margin-top: 12px">
2022-08-08 10:30:30 管理员
{{values.createTime?values.createTime:'-'}} {{values.createName?values.createName:'-'}}
</div>
<div class="timemanag">来源管理者进阶-腾飞班Z1</div>
<div class="timemanag">来源:{{values.source?values.source:'-'}}</div>
</div>
</div>
</div>
</div>
<div class="itemdown">
<div class="download" @click="downLoadFile">下载</div>
<div class="delete" @click="removeFile">删除</div>
<div class="download" @click="downLoadFile(values)">下载</div>
<div class="delete" @click="removeFile(values)">删除</div>
</div>
</div>
</div>
</div>
<div style="width:100%;margin-top: 90px;display: flex;justify-content: center;align-items: center;">
<!-- 分页 -->
<a-pagination
v-if="total>10"
:showSizeChanger="false"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="total"
class="pagination"
@change="changePaginationStu"
/>
</div>
</div>
</template>
<script>
import { toRefs, reactive } from "vue";
import { message } from "ant-design-vue";
import * as api from "@/api/indexTaskManage";
export default {
name: "DownLoad",
setup() {
const state = reactive({
name: "",
homeWorkList: []
homeWorkList: [],
currentPage: 1,
pageSize: 12,
total: 0,
capacity: 0,
countCMB: 0,
locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/'
});
function getData() {
state.homeWorkList = [1,2,3,4,5,6]
api.DownLoadList({
current:state.currentPage,
name: state.name,
size: state.pageSize
}).then(res=>{
console.log(res)
if(res.data.code==200){
state.homeWorkList = res.data.data.records;
state.total = res.data.data.total;
}
}).catch(err=>{
console.log(err)
})
}
// 获取可下载数据
getData()
// 下载文件
function downLoadFile() {
function getDownLoadTotalSize() {
api.DownLoadTotalSize().then(res=>{
console.log(res)
if(res.data.code==200){
state.capacity = res.data.data;
}else{
state.capacity = 0;
}
}).catch(err=>{
console.log(err)
})
}
// 获取当前用户容量
getDownLoadTotalSize()
// 格式化容量显示
function formatCapacity(data) {
let num = Number(data);
let CMB = (num / 1048576).toFixed(2);
let countCMB = (num / 1048576*1024).toFixed(2);
state.countCMB = countCMB;
if(CMB%1024>1){
CMB = (CMB/1024).toFixed(2) + 'GB';
}else{
CMB = CMB + 'MB';
}
console.log(CMB)
return CMB
}
// 下载文件
function downLoadFile(data) {
console.log(data)
window.open(state.locationHref + data.url)
}
// 删除文件
function removeFile() {
function removeFile(data) {
console.log(data)
api.RemoveDownLoadHomeWork({
id:data.id
}).then(res=>{
console.log(res)
if(res.data.code==200){
message.destroy()
message.success("删除成功")
getData()
}
}).catch(err=>{
console.log(err)
message.destroy()
message.error("删除失败")
})
}
// 搜索
function searchDownloadList() {
getData()
}
// 重置
function reseatDownloadList() {
state.name = "";
state.currentPage = 1;
getData()
}
// 分页
//分页
const changePaginationStu = (page) => {
state.currentPage = page;
getData();
};
return {
...toRefs(state),
downLoadFile,
removeFile
removeFile,
changePaginationStu,
searchDownloadList,
reseatDownloadList,
formatCapacity
};
},
};

View File

@@ -93,10 +93,10 @@
</div>
<div class="btns">
<!-- 2022-11-30注释 后面放开 -->
<!-- <div class="btn btn3" @click="openMessage">
<div class="btn btn3" @click="openMessage" style="margin-right:14px;">
<div class="search"></div>
<div class="btnText">导出</div>
</div> -->
</div>
<div class="btn btn3" @click="of_hShow">
<div class="search"></div>
<div class="btnText">新建课程</div>
@@ -964,6 +964,7 @@
:closable="false"
wrapClassName="modalStyle onlmanageModal"
width="80%"
@cancel="om_exit"
>
<div class="modalHeader">
<div class="headerLeft">
@@ -1099,6 +1100,10 @@
<div class="search"></div>
<div class="btnText">搜索</div>
</div>
<div class="btn btn2" @click="reseatSearchTable3">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
</div>
</div>
<div class="bm_table" style="margin-bottom: 20px">
@@ -2307,7 +2312,6 @@ import {
detail,
detailPlan,
handle,
exportP,
deletePlan,
planList,
editPlan,
@@ -4136,6 +4140,14 @@ export default defineComponent({
state.manageStuLoading = true;
getCourseStudentList();
};
const reseatSearchTable3 = () => {
state.currentPage222 = 1;
state.gl_inputV2 = "";
state.gl_selectV2 = undefined;
state.manageStuLoading = true;
getCourseStudentList();
}
// const getTableDate33 = async () => {
// let datas = state.tableData2;
// let res = await listReview({
@@ -4438,6 +4450,8 @@ export default defineComponent({
};
const om_exit = () => {
state.gl_selectV2 = undefined;
state.gl_inputV2 = "";
state.om_1 = false;
state.faceManageTab = "1";
};
@@ -4934,7 +4948,12 @@ export default defineComponent({
);
endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000);
}
exportP({
window.open(
`${process.env.VUE_APP_PROXY_URL}admin/offcourse/export?pageNo=${state.currentPage1}&pageSize=${state.pageSize1}&auditStatus=${state.auditStatus?state.auditStatus:""}&categoryId=${state.categoryId?state.categoryId:""}&projectName=${state.projectName?state.projectName:""}&name=${state.name?state.name:""}&createName=${state.createName?state.createName:""}&endTime=${endTime?endTime:""}&beginTime=${startTime?startTime:""}`
);
{/* exportP({
pageNo: state.currentPage1,
pageSize: state.pageSize1,
auditStatus: state.auditStatus,
@@ -4948,7 +4967,7 @@ export default defineComponent({
if (res.data.code === 200) {
message.success("导出成功");
}
});
}); */}
};
//获取教师
const getTea = async () => {
@@ -5259,7 +5278,7 @@ export default defineComponent({
console.log("开课管理学员搜索参数", {
pageNo: state.currentPage222,
pageSize: 10,
status: state.gl_selectV2 ? state.gl_selectV2 : "",
status: state.gl_selectV2,
studentName: state.gl_inputV2,
id: state.currentFaceId,
});
@@ -5267,7 +5286,7 @@ export default defineComponent({
.GetCourseStudent({
pageNo: state.currentPage222,
pageSize: 10,
status: state.gl_selectV2 ? state.gl_selectV2 : "",
status: state.gl_selectV2,
studentName: state.gl_inputV2,
id: state.currentFaceId,
})
@@ -5511,6 +5530,7 @@ export default defineComponent({
handleRestTable,
handleSearchTable2,
handleSearchTable3,
reseatSearchTable3,
handleGuan22,
handleStart,
handleCopyP,
@@ -6879,6 +6899,26 @@ export default defineComponent({
color: #ffffff;
}
}
.btn2 {
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/reset1.png");
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("@/assets/images/coursewareManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
}

View File

@@ -52,7 +52,7 @@
<div class="up down">
<div class="header">
<div class="text">学员情况</div>
<div class="btn btn2">
<div class="btn btn2" @click="exportStudentInfo">
<div class="img2"></div>
<div class="wz">导出信息</div>
</div>
@@ -152,6 +152,11 @@ export default {
getInfoDate();
// 导出学员信息
function exportStudentInfo() {
window.open(`${process.env.VUE_APP_PROXY_URL}admin/assessment/manage/exportAssessmentMessage?assessmentId=${state.basicInfo.assessmentId}`)
}
//分页
const changePaginationStu = (page) => {
state.evalStuListLoading = true;
@@ -327,7 +332,8 @@ export default {
},
],
showassess,
changePaginationStu
changePaginationStu,
exportStudentInfo
};
},
};