修改页面流程

This commit is contained in:
yangjun 2024-08-08 22:11:15 +08:00
parent 440470d9e4
commit 257abab94b
9 changed files with 337 additions and 233 deletions

View File

@ -23,8 +23,12 @@ export const plugins = [
'advlist anchor autolink autosave code codesample directionality fullscreen hr insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus template textpattern visualblocks visualchars wordcount image',
];
export const toolbar =
'fullscreen code preview | undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent lineheight|subscript superscript blockquote| numlist bullist checklist | forecolor backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | insertfile image media pageembed link anchor codesample insertdatetime hr| a11ycheck ltr rtl';
// export const toolbar =
// 'fullscreen code preview | undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent lineheight|subscript superscript blockquote| numlist bullist checklist | forecolor backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | insertfile image media pageembed link anchor codesample insertdatetime hr| a11ycheck ltr rtl';
export const toolbar =
'bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent lineheight| numlist bullist checklist | forecolor backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | insertfile image media pageembed link anchor codesample insertdatetime hr| a11ycheck ltr rtl';
// fullscreen code preview | undo redo |
export const simplePlugins = ['lists image link media table textcolor wordcount contextmenu fullscreen'];

View File

@ -9,14 +9,14 @@
<div class="rjkcBodyDiv">
<div class="kcmcDiv">
<!-- <a-badge :offset="[10|0]" :count="item.dbtxType" :title="'您有'+item.dbtxType+'条提醒信息'"> -->
<a-badge
<!-- <a-badge
:dot="item.dbtxType > 0 ? true : false"
:offset="[5 | 0]"
:numberStyle="{ backgroundColor: '#f00', width: '10px', height: '10px' }"
:title="'您有' + item.dbtxType + '条提醒信息'"
>
> -->
<span style="font-size: 20px">{{ item.kcmc }}</span>
</a-badge>
<!-- </a-badge> -->
</div>
<div class="skddDiv">{{ item.skdd }}</div>
<!-- <div class="skddDiv">教课周次{{ item.jkzc }}</div> -->

View File

@ -5,7 +5,7 @@
</div>
<a-tabs v-model:activeKey="activeKey" style="padding: 10px;">
<a-tab-pane key="1" tab="未读">
<a-tab-pane key="1" tab="待办">
<div style="width: 100%; text-align: right; ">
<RouterLink target='_blank' to="/site/studentWeiduMore">查看更多</RouterLink>
</div>
@ -30,7 +30,7 @@
<a-tab-pane key="2" force-render >
<template #tab>
<span style="color: black;">
</span>
</template>
<div style="width: 100%; text-align: right; ">
@ -111,11 +111,12 @@ function loaddata(){
}
function openKecheng(record){
console.log(`🚀 ~ openKecheng ~ record:`, record)
defHttp.post({ url: '/zyDbtx/zyDbtx/deleteById',params:{id:record.id} }).then((res) => {
loaddata()
});
//0 1 2 3 4 9
if(record.type=='9'||record.type=='4'||record.type=='1'){
defHttp.post({ url: '/zyDbtx/zyDbtx/deleteById',params:{id:record.id} }).then((res) => {
loaddata()
});
}
var url = "/stuzy/studentMain";
if(record.type=='0'||record.type=='1'){//+
url = "/stuzy/studentDqzy";

View File

@ -33,19 +33,20 @@
height: 70px;
"
>
<a-badge :dot="item.dbtxType != null" :offset="[5 | 0]" :numberStyle="{ backgroundColor: '#f00', width: '10px', height: '10px' }">
<span>{{ item.kcmc }}</span>
</a-badge>
<!-- <a-badge :dot="item.dbtxType != null" :offset="[5 | 0]" :numberStyle="{ backgroundColor: '#f00', width: '10px', height: '10px' }"> -->
<span class="ellipsis">{{ item.kcmc }}</span>
<!-- </a-badge> -->
</div>
</div>
<a-divider style="margin: 0px; color: #eef1f2" />
<div class="ellipsis" :title="item.sksj">{{item.sksj}}</div>
<div style="padding: 20px; font-weight: 600">
<a-row>
<a-col :span="24">
<div style="font-size: 16px; margin-top: 0px; padding: 0px; height: 45px; color: #0e6393">{{ item.skdd }}</div>
</a-col>
<a-col :span="24" style="text-align: center">
<span style="font-size: 16px; margin-top: 0px; padding: 0px; height: 45px; width: 50%; float: left; overflow: hidden">{{
<span style="font-size: 16px; margin-top: 0px; padding: 0px; height: 45px; width: 50%; float: left; overflow: hidden" class="ellipsis" :title="item.skjs">{{
item.skjs
}}</span>
<span style="font-size: 16px; margin-top: 0px; padding: 0px; height: 45px; width: 50%; float: right"
@ -104,11 +105,11 @@ function loaddata() {
function openKecheng(record) {
console.log(`🚀 ~ openKecheng ~ record:`, record);
defHttp.post({ url: '/zyDbtx/zyDbtx/deleteByRwbhCreate', params: { rwbh: record.rwbh, fbr: record.jgh } }).then((res) => {
loaddata();
});
var url = '/stuzy/StudentGonggaoList?rwbh=' + record.rwbh + '&xqxn=' + record.xqxn + '&teano=' + record.jgh;
var jgh = record.jgh.split(",")[0];
// defHttp.post({ url: '/zyDbtx/zyDbtx/deleteByRwbhCreate', params: { rwbh: record.rwbh, fbr: jgh } }).then((res) => {
// loaddata();
// });
var url = '/stuzy/StudentGonggaoList?rwbh=' + record.rwbh + '&xqxn=' + record.xqxn ;
window.open(url, '_blank');
}
</script>
@ -128,4 +129,10 @@ function openKecheng(record) {
font-weight: 600;
height: 30px;
}
.ellipsis {
overflow: hidden; /* 确保超出容器的内容被裁剪 */
white-space: nowrap; /* 确保文本在一行内显示 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
}
</style>

View File

@ -30,122 +30,40 @@
<div v-html="text"></div>
</template>
<!--省市区字段回显插槽-->
<template #zzdfaction="{ text, record }">
<a-popover title="得分情况">
<template #content>
<p>作业得分{{ record.stuscore&&item.scoreFabu=='1' ? record.stuscore : '未评' }}</p>
<p v-if="record.jxfs">互评奖励{{ record.jxfs&&item.scoreFabu=='1' ? record.jxfs : '未评' }}</p>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ record.zzdf&&item.scoreFabu=='1' ? record.zzdf : '未评' }}</span>
</div>
</a-popover>
</template>
<template #wwsftgaction="{ text, record }">
<span v-if="record.wwcc == '0'">-</span>
<span v-else>
<template v-if="record.wwfilestateid == '3'">
<span :title="record.wwmessage ? record.wwmessage : '暂无原因,请联系管理员'" style="color: red">检测失败</span>
<template #zgcclgaction="{ text, record }">
<a-popover title="查重情况">
<template #content>
<a-row style="width:350px;">
<a-col :span="12">
<span class="zyCon-word">维普资源库查重</span>{{ getCctype(record, '1') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">本次作业查重</span>{{ getCctype(record, '2') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">学校作业库查重</span>{{ getCctype(record, '4') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">Aigc查重</span>{{ getCctype(record, '3') }}
</a-col>
</a-row>
</template>
<template v-else>
<span
v-if="text == '通过'"
style="color: green; padding: 5px 15px; cursor: pointer"
title="通过(点击可查看对比结果)"
@click="handleYulan(record.wwpaperviewurl)"
>{{ record.wwxsl }}%</span
>
<span
v-else-if="text == '未通过'"
style="color: red; padding: 5px 15px; cursor: pointer"
title="未通过(点击可查看对比结果)"
@click="handleYulan(record.wwpaperviewurl)"
>{{ record.wwxsl }}%</span
>
<span v-else-if="text && text.indexOf('失败') > -1" style="color: red; padding: 5px 15px; cursor: pointer" :title="text">{{ text }}</span>
<span v-else>
<span v-if="record.filePath">检测中</span>
<span v-else>未提交</span>
</span>
</template>
</span>
</template>
<template #nwsftgaction="{ text, record }">
<span v-if="record.nwcc == '0'">-</span>
<span v-else>
<template v-if="record.zyfilestateid == '3'">
<span :title="record.zymessage ? record.zymessage : '暂无原因,请联系管理员'" style="color: red">检测失败</span>
</template>
<template v-else>
<span
v-if="text == '通过'"
style="color: green; padding: 5px 15px; cursor: pointer"
title="通过(点击可查看对比结果)"
@click="handleYulan(record.zypaperviewurl)"
>{{ record.nwxsl }}%</span
>
<span
v-else-if="text == '未通过'"
style="color: red; padding: 5px 15px; cursor: pointer"
title="未通过(点击可查看对比结果)"
@click="handleYulan(record.zypaperviewurl)"
>{{ record.nwxsl }}%</span
>
<span v-else-if="text && text.indexOf('失败') > -1" style="color: red; padding: 5px 15px; cursor: pointer" :title="text">{{ text }}</span>
<span v-else>
<span v-if="record.filePath">检测中</span>
<span v-else>未提交</span>
</span>
</template>
</span>
</template>
<template #aigcsftgaction="{ text, record }">
<span v-if="record.aigccc == '0'">-</span>
<span v-else>
<template v-if="record.aigcfilestateid == '3'">
<span :title="record.aigcmessage ? record.aigcmessage : '暂无原因,请联系管理员'" style="color: red">检测失败</span>
</template>
<template v-else>
<span
v-if="text == '通过'"
style="color: green; padding: 5px 15px; cursor: pointer"
title="通过(点击可查看对比结果)"
@click="handleYulan(record.aigcpaperviewurl)"
>{{ record.aigcxsl }}%</span
>
<span
v-else-if="text == '未通过'"
style="color: red; padding: 5px 15px; cursor: pointer"
title="未通过(点击可查看对比结果)"
@click="handleYulan(record.aigcpaperviewurl)"
>{{ record.aigcxsl }}%</span
>
<span v-else-if="text && text.indexOf('失败') > -1" style="color: red; padding: 5px 15px; cursor: pointer" :title="text">{{ text }}</span>
<span v-else>
<span v-if="record.filePath">检测中</span>
<span v-else>未提交</span>
</span>
</template>
</span>
</template>
<template #xnsftgaction="{ text, record }">
<span v-if="record.xncc == '0'">-</span>
<span v-else>
<template v-if="record.xxfilestateid == '3'">
<span :title="record.xxmessage ? record.xxmessage : '暂无原因,请联系管理员'" style="color: red">检测失败</span>
</template>
<template v-else>
<span
v-if="text == '通过'"
style="color: green; padding: 5px 15px; cursor: pointer"
title="通过(点击可查看对比结果)"
@click="handleYulan(record.xxpaperviewurl)"
>{{ record.xnxsl }}%</span
>
<span
v-else-if="text == '未通过'"
style="color: red; padding: 5px 15px; cursor: pointer"
title="未通过(点击可查看对比结果)"
@click="handleYulan(record.xxpaperviewurl)"
>{{ record.xnxsl }}%</span
>
<span v-else-if="text && text.indexOf('失败') > -1" style="color: red; padding: 5px 15px; cursor: pointer" :title="text">{{ text }}</span>
<span v-else>
<span v-if="record.filePath">检测中</span>
<span v-else>未提交</span>
</span>
</template>
</span>
<div class="Score-List-row">
<span class="List-row-number">{{ record.zgccl&&record.zgccl!='0'?record.zgccl:'-' }}</span>
</div>
</a-popover>
</template>
</BasicTable>
<!-- 表单区域 -->
@ -254,6 +172,69 @@ function handleDetail(record: Recordable) {
registerModal.value.edit(record);
}
function getCctype(record, type) {
var text = '-';
if (type == '1') {
if (record.wwcc == 'true') {
if (record.wwxsl) {
text = record.wwxsl + '%';
} else if (record.wwsftg && record.wwsftg.indexOf('失败') != -1) {
text = '失败';
} else if (record.stuFilePath) {
text = '检测中';
} else {
text = '待提交';
}
} else {
text = '不查重';
}
} else if (type == '2') {
if (record.nwcc == 'true') {
if (record.nwxsl) {
text = record.nwxsl + '%';
} else if (record.nwsftg && record.nwsftg.indexOf('失败') != -1) {
text = '失败';
} else if (record.stuFilePath) {
text = '检测中';
} else {
text = '待提交';
}
} else {
text = '不查重';
}
} else if (type == '3') {
if (record.aigccc == 'true') {
if (record.aigcxsl) {
text = record.aigcxsl + '%';
} else if (record.aigcsftg && record.aigcsftg.indexOf('失败') != -1) {
text = '失败';
} else if (record.stuFilePath) {
text = '检测中';
} else {
text = '待提交';
}
} else {
text = '不查重';
}
} else if (type == '4') {
if (record.xncc == 'true') {
if (record.xnxsl) {
text = record.xnxsl + '%';
} else if (record.xnsftg && record.xnsftg.indexOf('失败') != -1) {
text = '失败';
} else if (record.stuFilePath) {
text = '检测中';
} else {
text = '待提交';
}
} else {
text = '不查重';
}
}
return text;
}
//
function handleShangchuan(record) {
let timestamp = new Date().getTime();

View File

@ -25,13 +25,13 @@
<div style="width: 100%; height:40px;border-radius: 10px 10px 0 0; background-color: #cdf5ed">
<a-col :span="24" style="height:40px; line-height:40px; padding-left:15px; color:#333; overflow: hidden;" >
<!-- <div style="font-size: 18px;font-weight: bold;" class="ellipsis">{{item.title}}</div> -->
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业</div>
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业(本次作业在期末成绩中的占比:{{item.zyzb}}%)</div>
</a-col>
</div>
<a-card style="height:165px; border: 1px solid #eeeeee">
<div class="rotate" :style="classFun(item)">{{ callText(item) }}</div>
<a-row style="top: -60px; position: relative">
<a-col :span="24" class="zytitle" :title="item.title">{{ item.title }}</a-col>
<a-col :span="24" class="zytitle" :title="item.title" @click="handleDetail(item)">{{ item.title }}</a-col>
<a-col :span="12" class="zyCon"><span class="zyCon-word">作业时间</span>{{ dayjs(item.startTime).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</a-col>
<a-col :span="12" class="zyCon"><span class="zyCon-word">互评时间</span><span v-if="item.xshpkg == '1'">{{ dayjs(item.xshpkssj).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.xshpjssj).format('YYYY.MM.DD HH:mm') }}</span><span v-else>未设置互评</span></a-col>
<a-col :span="12" class="zyCon Score-List">
@ -49,23 +49,37 @@
</div> -->
<a-popover title="得分情况">
<template #content>
<p>作业得分{{ item.stuscore ? item.stuscore : '未评' }}</p>
<p v-if="item.jxfs">互评奖励{{ item.jxfs ? item.jxfs : '未评' }}</p>
<p>作业得分{{ item.stuscore&&item.scoreFabu=='1' ? item.stuscore : '未评' }}</p>
<p v-if="item.jxfs">互评奖励{{ item.jxfs&&item.scoreFabu=='1' ? item.jxfs : '未评' }}</p>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zzdf ? item.zzdf : '未评' }}</span>
<span class="List-row-number">{{ item.zzdf&&item.scoreFabu=='1' ? item.zzdf : '未评' }}</span>
<span class="List-row-word">总分</span>
</div>
</a-popover>
<a-popover title="查重情况">
<template #content>
<p><span class="zyCon-word">维普资源库查重</span>{{ getCctype(item, '1') }}</p>
<a-row style="width:350px;">
<a-col :span="12">
<span class="zyCon-word">维普资源库查重</span>{{ getCctype(item, '1') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">本次作业查重</span>{{ getCctype(item, '2') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">学校作业库查重</span>{{ getCctype(item, '4') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">Aigc查重</span>{{ getCctype(item, '3') }}
</a-col>
</a-row>
<!-- <p><span class="zyCon-word">维普资源库查重</span>{{ getCctype(item, '1') }}</p>
<p><span class="zyCon-word">本次作业查重</span>{{ getCctype(item, '2') }}</p>
<p><span class="zyCon-word">学校作业库查重</span>{{ getCctype(item, '4') }}</p>
<p><span class="zyCon-word">Aigc查重</span>{{ getCctype(item, '3') }}</p>
<p><span class="zyCon-word">Aigc查重</span>{{ getCctype(item, '3') }}</p> -->
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zgccl?item.zgccl:'-' }}</span>
<span class="List-row-number">{{ item.zgccl&&item.zgccl!='0'?item.zgccl:'-' }}</span>
<span class="List-row-word">查重率</span>
</div>
</a-popover>
@ -340,18 +354,6 @@ function handleShangchuan(record) {
ZyInfoStudentModalPage.value.disableSubmit = false;
var param = { id: record.stuId, zyfj: record.filePath };
ZyInfoStudentModalPage.value.edit(param);
// createConfirm({
// iconType: 'warning',
// title: '',
// content: '',
// okText: '',
// cancelText: '',
// onOk: () => {
// ZyInfoStudentModalPage.value.disableSubmit = false;
// var param = {id:record.stuId,zyfj:record.filePath}
// ZyInfoStudentModalPage.value.edit(param);
// }
// });
}
//
@ -404,8 +406,8 @@ function reload() {
queryParam.value.xqxn = xqxn;
queryParam.value.teano = teano;
queryParam.value.zyStatus = '1,2,3,4';
queryParam.value.column = 'createTime';
queryParam.value.order = 'desc';
// queryParam.value.column = 'sort';
// queryParam.value.order = 'desc';
defHttp.get({ url: '/zyInfo/zyInfo/stuList', params: queryParam.value }).then((res) => {
// console.log(`🚀 ~ defHttp.get ~ res:`, res)
total.value = res.total;
@ -508,6 +510,7 @@ onMounted(() => {
margin-right: 10px;
}
.zytitle{
cursor: pointer;
font-size: 16px;
font-weight: 700;
overflow: hidden; /* 确保超出容器的内容被裁剪 */

View File

@ -1,4 +1,4 @@
d<template>
<template>
<div style="background: #fafafa; height: calc(100vh - 225px); overflow-y: auto; margin: 10px 0; padding: 8px 0 0 0">
<div v-if="showType == 0">
<a-row>
@ -34,7 +34,7 @@ d<template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'score'">
<span>
<a-input-number v-model:value="record.score" :max="100"> <template #addonAfter> % </template></a-input-number>
<a-input-number v-model:value="record.score" :min="0" :max="100"> <template #addonAfter> % </template></a-input-number>
</span>
</template>
<template v-else-if="column.key === 'lstitle'">
@ -60,9 +60,14 @@ d<template>
<div v-if="showType == 2">
<a-spin :spinning="confirmLoading">
<a-row>
<a-col :span="24"
><span class="title">布置作业设置第{{ zyInfo.sort }}次作业内容及要求</span><a-divider
/></a-col>
<a-col :span="24">
<!-- <a-breadcrumb>
<a-breadcrumb-item>编辑作业</a-breadcrumb-item>
<a-breadcrumb-item>布置作业设置第{{ zyInfo.sort }}次作业内容及要求</a-breadcrumb-item>
</a-breadcrumb> -->
<span class="title">编辑作业</span> - <span class="title2">布置作业设置第{{ zyInfo.sort }}次作业内容及要求</span>
<a-divider />
</a-col>
<a-col :span="24">
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row>
@ -71,13 +76,13 @@ d<template>
<div class="region-title">基本信息</div>
<a-col :span="24">
<a-form-item label="作业题目" v-bind="validateInfos.title">
<a-input v-model:value="zyInfo.title" placeholder="请输入作业题目"></a-input>
<a-input v-model:value="zyInfo.title" placeholder="请输入作业题目" :disabled="editDisabled"></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="考察内容" v-bind="validateInfos.kcnr">
<a-textarea v-model:value="zyInfo.kcnr" placeholder="请输入描述" hidden></a-textarea>
<a-button type="primary" @click="handleKcnr">选择</a-button>
<a-button type="primary" @click="handleKcnr" :disabled="editDisabled">选择</a-button>
</a-form-item>
</a-col>
<a-col :span="24" style="padding: 0 20px" v-if="dataKhnr.length > 0">
@ -106,21 +111,36 @@ d<template>
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
style="width: 90%"
:disabled="editDisabled"
/>
<span>
<a-popover title="温馨提示">
<template #content>
<p
>填写作业发布时间则作业在指定时间进行发布如未填写作业发布时间则布置完成作业后可手动点击发布作业进行作业发布</p
>
</template>
<Icon
icon="ant-design:question-circle-outlined"
:size="20"
style="float: right; margin-top: 5px; color: #029c88; margin-right: 19px"
/>
</a-popover>
</span>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="作业要求" v-bind="validateInfos.content">
<j-editor v-model:value="zyInfo.content" v-if="zyyqShow" @blur="handleZyyqShow(0)" />
<div style="color: #777777" v-html="zyInfo.content" v-if="!zyyqShow"></div>
<div @click="handleZyyqShow(1)" class="tishi">温馨提示点击可编辑作业要求</div>
<div @click="handleZyyqShow(1)" class="tishi" :disabled="editDisabled">温馨提示点击可编辑作业要求</div>
<!-- <div @click="handleZyyqShow(1)"><span style="cursor: pointer; color: #18a689">温馨提示点击可编辑作业要求</span></div> -->
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="参考资料" v-bind="validateInfos.filePath">
<j-upload v-model:value="zyInfo.filePath"></j-upload>
<j-upload v-model:value="zyInfo.filePath" :disabled="editDisabled"></j-upload>
</a-form-item>
</a-col>
<a-col :span="24">
@ -131,12 +151,18 @@ d<template>
:wrapperCol="wrapperCol2"
style="margin-top: -1px; margin-left: -17px"
>
<j-dict-select-tag type="radio" v-model:value="zyInfo.sturead" dictCode="yn" placeholder="请选择评分标准是否允许学生查看" />
<j-dict-select-tag
type="radio"
v-model:value="zyInfo.sturead"
dictCode="yn"
placeholder="请选择评分标准是否允许学生查看"
:disabled="editDisabled"
/>
</a-form-item>
<a-form-item label="">
<j-editor v-model:value="zyInfo.pfbz" v-if="pfbzShow" @blur="handlePfbzShow(0)" />
<div v-html="zyInfo.pfbz" v-if="!pfbzShow"></div>
<div class="tishi" @click="handlePfbzShow(1)">温馨提示点击可编辑评分标准</div>
<div class="tishi" @click="handlePfbzShow(1)" :disabled="editDisabled">温馨提示点击可编辑评分标准</div>
</a-form-item>
</a-form-item>
</a-col>
@ -146,13 +172,16 @@ d<template>
<div class="region">
<div class="region-title">学生互评</div>
<a-form-item label="学生互评">
<div class="tishi" v-if="zyInfo.xshpkg == '1'">温馨提示每份作业至少互评3次每个学生互评5份作业</div>
<div class="tishi" v-if="zyInfo.xshpkg == '1'"
>每份作业至少互评三次每个学生互评五份作业按时完成互评任务的学生可额外获得最终分数的2%作为互评奖励互评作业质量高的学生可额外获得最终分数的5%作为互评奖励</div
>
<j-dict-select-tag
type="radio"
v-model:value="zyInfo.xshpkg"
dictCode="yn"
placeholder="请选择是否允许学生查看"
style="margin-top: 15px"
:disabled="editDisabled"
@change="handleXshpkg"
/>
<div v-if="zyInfo.xshpkg == '1'">
@ -162,7 +191,7 @@ d<template>
</a-input-number>
</a-form-item> -->
<a-form-item label="互评成绩" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin-top: 20px; margin-left: -30px">
<a-radio-group v-model:value="zyInfo.sfzzcj" style="width: 100%" size="default">
<a-radio-group v-model:value="zyInfo.sfzzcj" style="width: 100%" size="default" :disabled="editDisabled">
<a-radio :value="'1'" style="width: 100%; margin-bottom: 5px">互评成绩为最终成绩</a-radio>
<a-radio :value="'0'" style="width: 100%; margin-bottom: 5px">互评成绩作为教师评分的参考成绩</a-radio>
</a-radio-group>
@ -264,24 +293,22 @@ d<template>
<div v-show="showType == 3" style="overflow-y: auto">
<a-row>
<a-col :span="24"
><span class="title">作业详情页</span>
><span class="title">批阅作业</span> - <span class="title2">作业详情页</span>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="reloadZy" style="float: right; margin-right: 8px"> 返回</a-button>
<a-popover title="温馨提示">
<template #content>
<p>1非高峰期预计30分钟内返回检测结果高峰期预计时间会更长请您耐心等待</p>
<p>2点击互评分数可查看同学间互评作业详情</p>
<p>3点击最高查重率可分别查看学生维普作业库查重学校作业库查重本次作业查重AIGC查重相似率</p>
<p>4学生上传的课程作业全部存档</p>
</template>
<Icon icon="ant-design:question-circle-outlined" :size="30" style="float: right; margin-right: 8px; color: #029c88" />
</a-popover>
<a-divider
/></a-col>
<a-col :span="24" style="overflow: hidden">
<!--查询区域-->
<div class="sear-distance">
<div style="background: #fffbf2; padding: 15px">
<span class="tishi">
温馨提示<br />
1非高峰期预计30分钟内返回检测结果高峰期预计时间会更长请您耐心等待 <br />
2点击互评分数可查看同学间互评作业详情
<br />
3点击最高查重率可分别查看学生维普作业库查重学校作业库查重本次作业查重AIGC查重相似率<br />
4学生上传的课程作业全部存档<br />
</span>
</div>
<a-form @keyup.enter.native="searchQueryZyxq" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="12">
@ -294,6 +321,18 @@ d<template>
<j-input placeholder="请输入学生学号" v-model:value="queryParam.createBy"></j-input>
</a-form-item>
</a-col>
<a-col :lg="12">
<a-form-item label="作业状态">
<!-- <j-input placeholder="请输入学生学号" v-model:value="queryParam.createBy"></j-input> -->
<a-select v-model:value="queryType" style="width: 100%">
<a-select-option value="">全部</a-select-option>
<a-select-option value="1">待提交</a-select-option>
<a-select-option value="2">已提交</a-select-option>
<a-select-option value="5">待评阅</a-select-option>
<a-select-option value="4">已评阅</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="24">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQueryZyxq">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
@ -321,12 +360,20 @@ d<template>
</template>
<template v-else>查重中</template>
</span>
<span v-else> 未提交 </span>
<span v-else> </span>
</div>
<div v-else>
<span>未设置查重</span>
<span></span>
</div>
</template>
<template #scoreaction="{ record }">
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu == '1'">
{{ record.score }}
</span>
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu != '1'">
<a-input v-model:value="record.score" style="width: 90%" @blur="handleChangeScore(record)" />
</span>
</template>
<template #xshpfsaction="{ record }">
<span style="color: #36b395; cursor: pointer" @click="handleXshpfs(record)">
{{ record.xshpfs }}
@ -343,7 +390,7 @@ d<template>
<div v-if="showType == 4">
<a-row>
<a-col :span="24"
><span class="title">查重相似度详情</span>
><span class="title">批阅作业</span> - <span class="title2">作业详情页</span> - <span class="title2">查重相似度详情</span>
<a-button type="primary" @click="handleShowType(3)" style="float: right; margin-right: 8px"
><Icon icon="ant-design:export-outlined" />返回</a-button
>
@ -365,7 +412,7 @@ d<template>
<div v-if="showType == 5">
<a-row>
<a-col :span="24"
><span class="title">学生互评详情</span>
><span class="title">批阅作业</span> - <span class="title2">作业详情页</span> - <span class="title2">学生互评详情</span>
<a-button type="primary" @click="handleShowType(3)" style="float: right; margin-right: 8px"
><Icon icon="ant-design:export-outlined" />返回</a-button
>
@ -437,7 +484,8 @@ d<template>
</div>
<div style="text-align: right; margin-top: 10px; margin-bottom: -10px; width: 100%">
<a @click="handleEdit(item, true)">编辑作业</a>
<a @click="handleEdit(item, true)" v-if="item.ytjnum > 0">编辑作业</a>
<a @click="handleChehui(item)" v-if="item.ytjnum == 0">撤回作业</a>
<a-divider type="vertical" />
<a @click="handleZyxx(item, '')">批阅作业</a>
<a-divider type="vertical" />
@ -577,7 +625,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
pageSize: 10,
},
actionColumn: {
width: '300px',
width: '170px',
fixed: 'right',
},
showTableSetting: true,
@ -623,6 +671,26 @@ function handleViewInfo(record) {
});
handleShowType(4);
}
//
function handleChangeScore(record) {
console.log('👯', record);
var score = record.score;
console.log('👝', score);
console.log('👝', isNaN(score));
if (isNaN(score)) {
createMessage.error('请输入正确的评分1');
return;
} else if (parseInt(score) > 100 || parseInt(score) < 0) {
createMessage.error('请输入正确的评分2');
return;
}
defHttp.post({ url: '/zyInfoStudent/zyInfoStudent/editFabu', params: { id: record.id, score: record.score } }).then((res) => {
console.log('😮', res);
handleSuccess();
});
}
//
function handleXshpfs(record) {
defHttp.get({ url: '/zyInfoStudentHp/zyInfoStudentHp/list', params: { zyStuId: record.id, pageSize: -1 } }).then((res) => {
@ -776,14 +844,14 @@ function getTableAction(record) {
label: '驳回',
onClick: handleBohui.bind(null, record),
},
{
label: record.score ? '修改评分' : '评分',
onClick: handleScore.bind(null, record),
},
{
label: '发布评分',
onClick: handleScoreFabu.bind(null, record),
},
// {
// label: record.score ? '' : '',
// onClick: handleScore.bind(null, record),
// },
// {
// label: '',
// onClick: handleScoreFabu.bind(null, record),
// },
{
label: '下载',
onClick: handleDown.bind(null, record.filePath),
@ -892,8 +960,12 @@ function handleBatchAdd() {
return;
}
for (var i = 0; i < list.length; i++) {
console.log('🥵', list);
var score = list[i].score;
if (score == null || score == '') {
console.log('👨‍❤️‍💋‍👨', !score);
console.log('🤖', score == null);
console.log('🤖', score+"" == '');
if (score == null || score+"" == '') {
createMessage.error('第' + (i + 1) + '次作业占期末总成绩的百分比不能为空!');
sfjx = 1;
break;
@ -1035,7 +1107,7 @@ async function submitForm() {
console.log('🚶‍♂️', model);
if (wwtgl) {
if ((wwcc == false && xncc == false && nwcc == false && aigccc == false) || (!wwcc && !xncc && !nwcc && !aigccc)) {
createMessage.warning('您设置了检测通过率,但您没设置查重方式,请先设置查重方式');
createMessage.warning('您设置了检测通过率,但您没有设置查重比对库,请先设置查重比对库!');
confirmLoading.value = false;
return;
}
@ -1043,7 +1115,7 @@ async function submitForm() {
} else {
console.log('22222222222', wwtgl, wwcc, xncc, aigccc);
if (wwcc == true || xncc == true || nwcc == true || aigccc == true || wwcc == 'true' || xncc == 'true' || nwcc == 'true' || aigccc == 'true') {
createMessage.warning('您设置了查重方式,但您没设置检测通过率,请先设置检测通过率');
createMessage.warning('您设置了查重比对库,但您没设置检测通过率,请先设置检测通过率');
confirmLoading.value = false;
return;
}
@ -1055,7 +1127,7 @@ async function submitForm() {
var xshpkssjTimestamp = Date.parse(xshpkssj);
var xshpjssjTimestamp = Date.parse(xshpjssj);
if (xshpkssjTimestamp > xshpjssjTimestamp) {
createMessage.warning('互评开始时间不能大于互评结束时间!');
createMessage.warning('作业截止时间不能大于互评结束时间!');
confirmLoading.value = false;
return;
}
@ -1236,11 +1308,31 @@ function handleAdd() {
registerModal.value.add();
}
function handleChehui(record) {
createConfirm({
iconType: 'warning',
title: '撤回作业',
content: '您确认撤回此次作业吗?',
okText: '确认',
cancelText: '取消',
onOk: () => {
defHttp
.post({
url: '/zyInfo/zyInfo/editChehui',
params: { id: record.id },
})
.then((res) => {
createMessage.success(res.message);
handleSuccess2();
});
},
});
}
/**
* 编辑事件
*/
function handleEdit(record, type) {
console.log('👩🎓1111111', record);
if (!record.sturead) {
record.sturead = '1';
}
@ -1253,15 +1345,12 @@ function handleEdit(record, type) {
if (!record.xssfck) {
record.xssfck = '1';
}
console.log('💂2222222', record);
editDisabled.value = type;
zyInfo.value = record;
console.log('😔3333333', zyInfo.value);
dataKhnr.value = [];
var kcnr = zyInfo.value.kcnr;
if (kcnr) {
defHttp.get({ url: '/teachingunitcontent/kcTeachingUnitContentOne/getAllList', params: { id: kcnr } }).then((res) => {
console.log('🤦‍♀️', res);
dataKhnr.value = res;
});
}
@ -1447,6 +1536,9 @@ onMounted(() => {
margin-left: 20px;
font-size: 18px;
}
.title2 {
font-size: 18px;
}
.ant-divider-horizontal {
display: flex;
clear: both;

View File

@ -73,18 +73,22 @@ export const newcolumns: BasicColumn[] = [
align: "center",
dataIndex: 'studentName',
sorter: true,
width: 100,
},
{
title: '学生学号',
align: "center",
dataIndex: 'createBy',
sorter: true,
width: 100,
},
{
title: '教师评分',
align: "center",
dataIndex: 'score',
slots: { customRender: 'scoreaction' },
sorter: true,
width: 100,
},
{
title: '互评分数',
@ -92,11 +96,13 @@ export const newcolumns: BasicColumn[] = [
dataIndex: 'xshpfs',
sorter: true,
slots: { customRender: 'xshpfsaction' },
width: 100,
},
{
title: '互评奖励',
align: "center",
dataIndex: 'jxzf',
width: 100,
},
// {
// title: '绩效分2',
@ -109,6 +115,7 @@ export const newcolumns: BasicColumn[] = [
align: "center",
dataIndex: 'zzdf',
sorter: true,
width: 100,
},
{
@ -117,6 +124,7 @@ export const newcolumns: BasicColumn[] = [
dataIndex: 'zgccl',
// sorter: true,
slots: { customRender: 'zgcclaction' },
width: 100,
},
@ -182,7 +190,8 @@ export const columnsStu: BasicColumn[] = [
{
title: '评分',
align: "center",
dataIndex: 'stuscore',
dataIndex: 'zzdf',
slots: { customRender: 'zzdfaction' },
// sorter: true,
},
// {
@ -192,33 +201,40 @@ export const columnsStu: BasicColumn[] = [
// // sorter: true,
// },
{
title: '网络查重',
title: '查重',
align: "center",
dataIndex: 'wwsftg',
slots: { customRender: 'wwsftgaction' },
// sorter: true,
},
{
title: '作业查重',
align: "center",
dataIndex: 'nwsftg',
slots: { customRender: 'nwsftgaction' },
// sorter: true,
},
{
title: 'Aigc查重',
align: "center",
dataIndex: 'aigcsftg',
slots: { customRender: 'aigcsftgaction' },
// sorter: true,
},
{
title: '校内查重',
align: "center",
dataIndex: 'xnsftg',
slots: { customRender: 'xnsftgaction' },
dataIndex: 'zgccl',
slots: { customRender: 'zgcclgaction' },
// sorter: true,
},
// {
// title: '网络查重',
// align: "center",
// dataIndex: 'wwsftg',
// slots: { customRender: 'wwsftgaction' },
// // sorter: true,
// },
// {
// title: '作业查重',
// align: "center",
// dataIndex: 'nwsftg',
// slots: { customRender: 'nwsftgaction' },
// // sorter: true,
// },
// {
// title: 'Aigc查重',
// align: "center",
// dataIndex: 'aigcsftg',
// slots: { customRender: 'aigcsftgaction' },
// // sorter: true,
// },
// {
// title: '校内查重',
// align: "center",
// dataIndex: 'xnsftg',
// slots: { customRender: 'xnsftgaction' },
// // sorter: true,
// },
];
//列表数据

View File

@ -25,7 +25,7 @@
{{zyInfo.startTime}}
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :span="24" v-if="zyInfo.content">
<a-form-item label="作业要求" >
<div v-html="zyInfo.content"></div>
</a-form-item>
@ -38,10 +38,10 @@
<a-col :span="24" v-show="zyInfo.sturead=='1' && zyInfo.pfbz">
<a-form-item label="评分标准" layout="inline">
<div v-html="zyInfo.pfbz"></div>
<div v-html="zyInfo.pfbz" style="margin-top: 5px;"></div>
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :span="24" v-if="zyInfo.wwtgl">
<a-form-item label="查重设置" layout="inline">
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<span style="padding: 7px 20px"></span>