修改bug

This commit is contained in:
yangjun 2024-08-03 08:57:53 +08:00
parent 93b0a26f70
commit b4a7b8f07e
9 changed files with 443 additions and 275 deletions

View File

@ -89,3 +89,33 @@ export function downloadByUrl({ url, target = '_blank', fileName }: { url: strin
openWindow(url, { target });
return true;
}
export function openByUrl({ url, target = '_blank', fileName }: { url: string; target?: TargetContext; fileName?: string }): boolean {
const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1;
if (/(iP)/g.test(window.navigator.userAgent)) {
console.error('Your browser does not support download!');
return false;
}
if (isChrome || isSafari) {
const link = document.createElement('a');
link.href = url;
link.target = target;
if (link.download !== undefined) {
link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length);
}
if (document.createEvent) {
const e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
link.dispatchEvent(e);
return true;
}
}
openWindow(url, { target });
return true;
}

View File

@ -14,7 +14,7 @@
<a-sub-menu key="sub1">
<template #title>教学内容</template>
<a-menu-item key="1" @click="getGzt('kcjs')">课程简介</a-menu-item>
<a-menu-item key="3" @click="gotoPageByName('jiaoXueDanYuanNeiRong')">教学单元内容</a-menu-item>
<a-menu-item key="3" @click="gotoPageByName('jiaoXueDanYuanNeiRong')">教学单元</a-menu-item>
</a-sub-menu>
<a-menu-item key="sub2">
<span @click="getGzt('dqzy')">课程作业</span>
@ -75,7 +75,7 @@
<span @click="getGzt('kcjs')">课程简介</span>
</a-menu-item>
<a-menu-item key="sub2">
<span @click="gotoPageByName('jiaoXueDanYuanNeiRong')">教学单元内容</span>
<span @click="gotoPageByName('jiaoXueDanYuanNeiRong')">教学单元</span>
</a-menu-item>
<a-menu-item key="sub3">
<span @click="getGzt('dqzy')">课程作业</span>

View File

@ -11,7 +11,7 @@
<template #title>教学内容</template>
<a-menu-item key="1" @click="getGzt('kcjs')">课程简介</a-menu-item>
<a-menu-item key="2" @click="getGzt('gonggao')">通知公告</a-menu-item>
<a-menu-item key="3" @click="getGzt('jxdynr')">教学单元内容</a-menu-item>
<a-menu-item key="3" @click="getGzt('jxdynr')">教学单元</a-menu-item>
</a-sub-menu>
<a-sub-menu key="sub2">
<template #title>作业/测验</template>

View File

@ -31,7 +31,7 @@
<div style="font-size: 18px; font-weight: bold">{{ item.title }}</div>
</a-col>
<a-col :span="24" class="zyCon">作业时间{{ dayjs(item.startTime).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</a-col>
<a-col :span="24" class="zyCon">互评时间<span v-if="item.xshpkg == '1'">{{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</span><span v-else>未设置互评</span></a-col>
<a-col :span="24" class="zyCon">互评时间<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="24" class="zyCon">
<span style="text-align: left;width:50%;display: block;float:left;">作业得分{{ item.stuscore ? item.stuscore : '未评' }}</span>
<span style="text-align: right;width:50%;display: block;float:left;" class="wpopen" v-if="handleSfkshp(item)" @click="handleHpfs(item)">互评分数:{{ item.xshpfs ? item.xshpfs : '未评' }}</span>

View File

@ -5,13 +5,13 @@ d<template>
<a-col :span="24"><span class="title">课程作业次数设置</span><a-divider /></a-col>
<div class="tishi">温馨提示设置完成后您也可以在课程教学过程中随时根据实际情况进行调整</div>
<div class="work-img">
<img class="work-img-img" src="../../../assets/images/homework.png" />
<img class="work-img-img" src="../../../assets/images/homework.png" />
</div>
<a-col :span="24" style="text-align: center; color: #494b56;">
<a-col :span="24" style="text-align: center; color: #494b56">
<div>老师您好</div>
<div>请根据课程目标及课程教学大纲的要求</div>
<div>设置学生修完本课程需要完成的作业次数及每次作业在期末成绩中所占的比例</div>
<div style="margin-top: 30px" class="ant-btn buttonClass"><a @click="handleShowType(1)" >设置作业次数</a></div>
<div style="margin-top: 30px" class="ant-btn buttonClass"><a @click="handleShowType(1)">设置作业次数</a></div>
</a-col>
</a-row>
</div>
@ -20,9 +20,9 @@ d<template>
<a-col :span="24"><span class="title">课程作业次数设置</span><a-divider /></a-col>
<a-col :span="24" style="padding: 0 0 0 30px">
<a-row>
<a-col :span="18" style="margin-top:5px">
<span style="color: #777777;">学生修完本课程需要完成的作业次数</span>
<a-input-number style="width: 30%" v-model:value="zycs" @change="handleZycs" :max="100" /><span style="margin-left:5px;"></span>
<a-col :span="18" style="margin-top: 5px">
<span style="color: #777777">学生修完本课程需要完成的作业次数</span>
<a-input-number style="width: 30%" v-model:value="zycs" @change="handleZycs" :max="100" /><span style="margin-left: 5px"></span>
</a-col>
<a-col :span="6" style="text-align: right; padding: 5px 0 0 0">
<a @click="handleAddZycs" class="ant-btn buttonClass mar-right20"><Icon icon="ant-design:file-add-outlined" />新增作业</a>
@ -50,9 +50,9 @@ d<template>
</a-col>
<a-col :span="24" style="margin-top: 30px; font-size: 18px">
<div style="text-align: center">
<a-button class="buttonClass" @click="handleBatchAdd" ><Icon icon="ant-design:save-outlined" />保存</a-button>
<a-button class="buttonClass" @click="handleBatchAdd"><Icon icon="ant-design:save-outlined" />保存</a-button>
<a-divider type="vertical" />
<a-button class="buttonClass" @click="reloadZy"><Icon icon="ant-design:import-outlined" />返回</a-button>
<a-button class="buttonClass" @click="reloadZy"><Icon icon="ant-design:export-outlined" />返回</a-button>
</div>
</a-col>
</a-row>
@ -68,175 +68,188 @@ d<template>
<a-row>
<a-col :span="24">
<div class="region">
<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-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-form-item>
</a-col>
<a-col :span="24" style="padding: 0 20px" v-if="dataKhnr.length > 0">
<a-table :columns="columnsKhnr" rowKey="id" :data-source="dataKhnr" :pagination="false" />
</a-col>
<a-col :span="24">
<a-form-item label="作业截止时间" v-bind="validateInfos.endTime">
<a-date-picker
placeholder="请选择作业截止时间"
v-model:value="zyInfo.endTime"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="作业发布时间" v-bind="validateInfos.startTime">
<a-date-picker
placeholder="请选择作业发布时间"
v-model:value="zyInfo.startTime"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</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)"><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>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="评分标准" layout="inline">
<a-form-item label="是否允许学生查看" :labelCol="labelCol2" :wrapperCol="wrapperCol2" style="margin-top:-1px; margin-left:-17px">
<j-dict-select-tag type="radio" v-model:value="zyInfo.sturead" dictCode="yn" placeholder="请选择评分标准是否允许学生查看" />
<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-form-item>
<a-form-item label="" v-if="zyInfo.sturead == '1'">
<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>
</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-form-item>
</a-form-item>
</a-col>
</a-col>
<a-col :span="24" style="padding: 0 20px" v-if="dataKhnr.length > 0">
<a-table :columns="columnsKhnr" rowKey="id" :data-source="dataKhnr" :pagination="false" />
</a-col>
<a-col :span="24">
<a-form-item label="作业截止时间" v-bind="validateInfos.endTime">
<a-date-picker
placeholder="请选择作业截止时间"
v-model:value="zyInfo.endTime"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="作业发布时间" v-bind="validateInfos.startTime">
<a-date-picker
placeholder="请选择作业发布时间"
v-model:value="zyInfo.startTime"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</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)"><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>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="评分标准" layout="inline">
<a-form-item
label="是否允许学生查看"
:labelCol="labelCol2"
:wrapperCol="wrapperCol2"
style="margin-top: -1px; margin-left: -17px"
>
<j-dict-select-tag type="radio" v-model:value="zyInfo.sturead" dictCode="yn" placeholder="请选择评分标准是否允许学生查看" />
</a-form-item>
<a-form-item label="" v-if="zyInfo.sturead == '1'">
<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>
</a-form-item>
</a-form-item>
</a-col>
</div>
</a-col>
<a-col :span="24">
<div class="region">
<div class="region-title">学生互评</div>
<a-form-item label="学生互评">
<div class="tishi" v-if="zyInfo.xshpkg == '1'">温馨提示每份作业至少互评3次每个学生互评5份作业</div>
<j-dict-select-tag
type="radio"
v-model:value="zyInfo.xshpkg"
dictCode="yn"
placeholder="请选择是否允许学生查看"
style="margin-top: 15px"
@change="handleXshpkg"
/>
<div v-if="zyInfo.xshpkg == '1'">
<!-- <a-form-item label="设置互评人数" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin-top: 20px">
<div class="region-title">学生互评</div>
<a-form-item label="学生互评">
<div class="tishi" v-if="zyInfo.xshpkg == '1'">温馨提示每份作业至少互评3次每个学生互评5份作业</div>
<j-dict-select-tag
type="radio"
v-model:value="zyInfo.xshpkg"
dictCode="yn"
placeholder="请选择是否允许学生查看"
style="margin-top: 15px"
@change="handleXshpkg"
/>
<div v-if="zyInfo.xshpkg == '1'">
<!-- <a-form-item label="设置互评人数" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin-top: 20px">
<a-input-number v-model:value="zyInfo.xshprsq" placeholder="请设置互评人数" style="width: 60%" :max="100" :min="0">
<template #addonAfter></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 :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>
</a-form-item>
<a-form-item label="是否允许学生看到互评成绩" :labelCol="labelCol4" :wrapperCol="wrapperCol4" style="margin-top: 20px;margin-left:-10px">
<a-radio-group v-model:value="zyInfo.xssfck">
<a-radio :value="'1'" style="margin-top: 5px">(匿名)</a-radio>
<a-radio :value="'0'" style="margin-top: 5px"></a-radio>
</a-radio-group>
<!-- <j-dict-select-tag
<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 :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>
</a-form-item>
<a-form-item
label="是否允许学生看到互评成绩"
:labelCol="labelCol4"
:wrapperCol="wrapperCol4"
style="margin-top: 20px; margin-left: -10px"
>
<a-radio-group v-model:value="zyInfo.xssfck">
<a-radio :value="'1'" style="margin-top: 5px">(匿名)</a-radio>
<a-radio :value="'0'" style="margin-top: 5px"></a-radio>
</a-radio-group>
<!-- <j-dict-select-tag
type="radio"
v-model:value="zyInfo.xshpkg"
dictCode="yn"
placeholder="请选择是否允许学生查看"
style="margin-top: 15px"
/> -->
</a-form-item>
<a-form-item label="互评开始时间" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<a-date-picker
placeholder="请选择互评开始时间"
v-model:value="zyInfo.xshpkssj"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
<a-form-item label="互评结束时间" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<a-date-picker
placeholder="请选择互评结束时间"
v-model:value="zyInfo.xshpjssj"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
</div>
</a-form-item>
</a-form-item>
<a-form-item label="互评开始时间" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<a-date-picker
placeholder="请选择互评开始时间"
v-model:value="zyInfo.xshpkssj"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
<a-form-item label="互评结束时间" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<a-date-picker
placeholder="请选择互评结束时间"
v-model:value="zyInfo.xshpjssj"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
/>
</a-form-item>
</div>
</a-form-item>
</div>
</a-col>
<a-col :span="24">
<div class="region">
<div class="region-title">查重设置</div>
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin:-1px;margin-left:-10px">
<div class="region">
<div class="region-title">查重设置</div>
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin: -1px; margin-left: -10px">
<a-input-number
v-model:value="zyInfo.wwtgl"
placeholder="请输入检测通过率"
style="width: 50%"
:max="100"
:min="0"
:disabled="editDisabled">
:disabled="editDisabled"
>
<template #addonAfter> % </template>
</a-input-number>
</a-form-item>
<a-form-item label="比对库设置" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin-left:-10px">
<div style="padding:5px 0">维普</div>
<div style="display: flex; flex-direction: column;">
<a-checkbox v-model:checked="zyInfo.wwcc" :disabled="editDisabled" style="margin-left:8px">
<span class="bled-countenance">维普资源库查重</span><br />
<span class="bled-countenance2">中文科技期刊数据库硕博学位论文库高校特色论文库互联网数据资源/互联网文档资源</span>
</a-checkbox>
<a-checkbox v-model:checked="zyInfo.xncc" :disabled="editDisabled">
<span class="bled-countenance">学校作业库查重</span><br /><span class="bled-countenance2">历届学生提供的作业库内查重</span>
</a-checkbox>
<a-checkbox v-model:checked="zyInfo.nwcc" :disabled="editDisabled">
<span class="bled-countenance">本次作业查重</span><br /><span class="bled-countenance2">本次学生提交的作业间查重</span>
</a-checkbox>
<a-form-item label="比对库设置" :labelCol="labelCol3" :wrapperCol="wrapperCol3" style="margin-left: -10px">
<div style="padding: 5px 0">维普</div>
<div style="display: flex; flex-direction: column">
<a-checkbox v-model:checked="zyInfo.wwcc" :disabled="editDisabled" style="margin-left: 8px">
<span class="bled-countenance">维普资源库查重</span><br />
<span class="bled-countenance2">中文科技期刊数据库硕博学位论文库高校特色论文库互联网数据资源/互联网文档资源</span>
</a-checkbox>
<a-checkbox v-model:checked="zyInfo.xncc" :disabled="editDisabled">
<span class="bled-countenance">学校作业库查重</span><br /><span class="bled-countenance2">历届学生提供的作业库内查重</span>
</a-checkbox>
<a-checkbox v-model:checked="zyInfo.nwcc" :disabled="editDisabled">
<span class="bled-countenance">本次作业查重</span><br /><span class="bled-countenance2">本次学生提交的作业间查重</span>
</a-checkbox>
</div>
<div style="padding:5px 0">AIGC</div>
<div style="padding: 5px 0">AIGC</div>
<div>
<a-checkbox v-model:checked="zyInfo.aigccc" style="margin-left: 8px" :disabled="editDisabled">
<span class="bled-countenance">AIGC查重</span><br /><span class="bled-countenance2">检测作业是否部分或全部由AI模型生成</span>
</a-checkbox>
<span class="bled-countenance">AIGC查重</span><br /><span class="bled-countenance2"
>检测作业是否部分或全部由AI模型生成</span
>
</a-checkbox>
</div>
</a-form-item>
</div>
</a-form-item>
</div>
</a-col>
<a-col :span="24" style="text-align: left;margin-top:10px; margin-bottom: 40px; margin-left:140px;">
<a-col :span="24" style="text-align: left; margin-top: 10px; margin-bottom: 40px; margin-left: 140px">
<a-button type="primary" @click="submitForm">保存</a-button>
<a-button type="primary" @click="reloadZy" style="margin-left: 15px">返回</a-button>
</a-col>
@ -246,17 +259,23 @@ d<template>
</a-row>
</a-spin>
</div>
<div v-show="showType == 3">
<div v-show="showType == 3" style="overflow-y: auto">
<a-row>
<a-col :span="24"><span class="title">作业详情页</span><a-divider /></a-col>
<a-col :span="24">
<a-col :span="24"
><span class="title">作业详情页</span>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="reloadZy" style="float: right; margin-right: 8px"> 返回</a-button>
<a-divider
/></a-col>
<a-col :span="24" style="overflow: hidden">
<!--查询区域-->
<div class="sear-distance">
<div style="background:#fffbf2; padding:15px;">
<div style="background: #fffbf2; padding: 15px">
<span class="tishi">
温馨提示<br />
1非高峰期预计30分钟内返回检测结果高峰期预计时间会更长请您耐心等待 <br />
2点击互评分数可查看同学间互评作业详情<br />
2点击互评分数可查看同学间互评作业详情
<span style="color:#18a689; cursor: pointer;" @click="handleHpsf">预览互评算法</span>
<br />
3点击最高查重率可分别查看学生维普作业库查重学校作业库查重本次作业查重AIGC查重相似率<br />
4学生上传的课程作业全部存档<br />
</span>
@ -278,15 +297,15 @@ d<template>
<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>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" style="margin-left: 8px"> 导出</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="batchHandleFabu" style="margin-left: 8px">一键发布评分</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="reloadZy" style="margin-left: 8px"> 返回</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="batchHandleFabu" style="margin-left: 8px"
>一键发布评分</a-button
>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
@ -294,9 +313,9 @@ d<template>
<div v-if="record.alltgl">
<span v-if="record.filePath">
<template v-if="record.zgccl && record.zgccl != '0'">
<span v-if="record.zgccl <= record.alltgl" title="通过" style="color: #36b395" @click="handleViewInfo(record)">{{
record.zgccl
}}</span>
<span v-if="record.zgccl <= record.alltgl" title="通过" style="color: #36b395; cursor: pointer" @click="handleViewInfo(record)">
{{ record.zgccl }}
</span>
<span v-else title="未通过" style="color: red" @click="handleViewInfo(record)">{{ record.zgccl }}</span>
</template>
<template v-else>查重中</template>
@ -307,6 +326,11 @@ d<template>
<span>未设置查重</span>
</div>
</template>
<template #xshpfsaction="{ record }">
<span style="color: #36b395; cursor: pointer" @click="handleXshpfs(record)">
{{ record.xshpfs }}
</span>
</template>
<template #htmlSlot="{ text }">
<div v-html="text"></div>
@ -317,8 +341,11 @@ d<template>
</div>
<div v-if="showType == 4">
<a-row>
<a-col :span="24"><span class="title">查重相似度详情</span><a-divider /></a-col>
<a-col><a-button type="primary" @click="handleShowType(3)">返回</a-button></a-col>
<a-col :span="24"
><span class="title">查重相似度详情</span>
<a-button type="primary" @click="handleShowType(3)" style="float: right; margin-right: 8px"><Icon icon="ant-design:export-outlined" />返回</a-button>
<a-divider
/></a-col>
<a-col :span="24">
<a-table :columns="columnsCcjg" :data-source="tableCcjgData" :pagination="false">
<template #bodyCell="{ column, record }">
@ -332,45 +359,79 @@ d<template>
</a-col>
</a-row>
</div>
<div v-if="showType == 5">
<a-row>
<a-col :span="24"
><span class="title">学生互评详情</span>
<a-button type="primary" @click="handleShowType(3)" style="float: right; margin-right: 8px"><Icon icon="ant-design:export-outlined" />返回</a-button>
<a-divider
/></a-col>
<a-col :span="24">
<a-table :columns="columnsXshp" :data-source="tableXshpData" :pagination="false"> </a-table>
</a-col>
</a-row>
</div>
<div v-if="showType == 999">
<a-row>
<a-col :span="24"><span class="title">布置作业</span><a-divider /></a-col>
<a-col :span="24" style="text-align: right; margin-top:5px">
<a-col :span="24" style="text-align: right; margin-top: 5px">
<a @click="handleShowType(1)" class="ant-btn buttonClass"><Icon icon="ant-design:edit-outlined" />修改课程作业次数</a>
<a-divider type="vertical" />
<a @click="handleAddOne" class="ant-btn buttonClass mar-right20"><Icon icon="ant-design:file-add-outlined" />新增作业</a>
</a-col>
<a-col :span="24">
<a-row style="padding:10px;">
<a-col :lg="12" v-for="(item, index) in tableData" style="padding:0 5px 5px 5px;" :key="index">
<a-card :title="'第' + item.sort + '次作业(占比' + item.score + '%)'" v-if="!item.endTime" class="cardClass" bodyStyle="background: #fff;" >
<template #extra><span style="color:#ff8710;font-weight: bold;"><Icon icon="ant-design:setting-outlined" /> 待设置</span> </template>
<a-row style="padding: 10px">
<a-col :lg="12" v-for="(item, index) in tableData" style="padding: 0 5px 5px 5px" :key="index">
<a-card
:title="'第' + item.sort + '次作业(占比' + item.score + '%)'"
v-if="!item.endTime"
class="cardClass"
bodyStyle="background: #fff;"
>
<template #extra
><span style="color: #ff8710; font-weight: bold"><Icon icon="ant-design:setting-outlined" /> 待设置</span>
</template>
<p class="sznrClass">尚未布置作业题目及具体要求</p>
<div style="text-align: right;">
<div style="text-align: right">
<a @click="handleEdit(item, false)">设置作业内容及要求</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
</div>
</a-card>
<a-card :title="'第' + item.sort + '次作业(占比' + item.score + '%)'" v-if="item.endTime && item.zyStatus == '1'" class="cardClass" bodyStyle="background: #fff;">
<template #extra><span style="color:#02aa56;font-weight: bold;"><Icon icon="ant-design:check-outlined" />已发布</span> </template>
<a-card
:title="'第' + item.sort + '次作业(占比' + item.score + '%)'"
v-if="item.endTime && item.zyStatus == '1'"
class="cardClass"
bodyStyle="background: #fff;"
>
<template #extra
><span style="color: #02aa56; font-weight: bold"><Icon icon="ant-design:check-outlined" />已发布</span>
</template>
<div class="ellip-title">
<span class="ellipsis elli-title" :title="item.title">作业名称{{ item.title }}</span>
<a class="button-zhta" @click="openXkrs(item)">{{ item.xkxs }}人选课</a>
</div>
<div style="width: 100%; ">
<div style="width: 100%">
<div class="ellip-word">作业发布时间{{ item.startTime ? dayjs(item.startTime).format('YYYY.MM.DD HH:mm') : '未设置' }}</div>
<div class="ellip-word">作业截止时间{{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</div>
</div>
<div style="width: 100%; display: flex">
<div class="data-suggest zuanqu" @click="handleZyxx(item, '1')"><span>{{ item.wtjnum }}</span><span>未提交</span></div>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '2')"><span>{{ item.ytjnum }}</span><span>已提交</span></div>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '3')"><span>{{ item.wpynum }}</span><span>未评阅</span></div>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '4')"><span>{{ item.ypynum }}</span><span>已评阅</span></div>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '1')"
><span>{{ item.wtjnum }}</span><span>未提交</span></div
>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '2')"
><span>{{ item.ytjnum }}</span><span>已提交</span></div
>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '3')"
><span>{{ item.wpynum }}</span><span>未评阅</span></div
>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '4')"
><span>{{ item.ypynum }}</span><span>已评阅</span></div
>
</div>
<div style="text-align: right; margin-top:10px; margin-bottom:-10px; width: 100%">
<div style="text-align: right; margin-top: 10px; margin-bottom: -10px; width: 100%">
<a @click="handleEdit(item, true)">编辑作业</a>
<a-divider type="vertical" />
<a @click="handleZyxx(item, '')">查看作业</a>
@ -378,18 +439,25 @@ d<template>
<a @click="handleDelete(item)">删除</a>
</div>
</a-card>
<a-card :title="'第' + item.sort + '次作业(占比' + item.score + '%)'" v-if="item.endTime && item.zyStatus == '0'" class="cardClass" bodyStyle="background: #fff;">
<template #extra><span style="color:#ff8710;font-weight: bold;"><Icon icon="ant-design:send-outlined" />待发布</span> </template>
<a-card
:title="'第' + item.sort + '次作业(占比' + item.score + '%)'"
v-if="item.endTime && item.zyStatus == '0'"
class="cardClass"
bodyStyle="background: #fff;"
>
<template #extra
><span style="color: #ff8710; font-weight: bold"><Icon icon="ant-design:send-outlined" />待发布</span>
</template>
<div class="ellip-title">
<span class="ellipsis elli-title" :title="item.title">作业名称{{ item.title }}</span>
<a class="button-zhta" @click="openXkrs(item)">{{ item.xkxs }}人选课</a>
</div>
<div style="width: 100%; ">
<div style="width: 100%">
<div class="ellip-word">作业发布时间{{ item.startTime ? dayjs(item.startTime).format('YYYY.MM.DD HH:mm') : '未设置' }}</div>
<div class="ellip-word">作业截止时间{{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</div>
</div>
<div style="height: 45px">&nbsp;</div>
<div style="text-align: right; margin-top: 30px;">
<div style="text-align: right; margin-top: 30px">
<a @click="handleEdit(item, false)">编辑作业</a>
<a-divider type="vertical" />
<a @click="handleFabu(item)">发布作业</a>
@ -438,6 +506,7 @@ import { newlist, getExportUrl, batchFabu } from '/@/views/zy/zyInfoStudent/ZyIn
import { downloadFile } from '/@/utils/common/renderUtils';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { useGlobSetting } from '/@/hooks/setting';
import { openByUrl } from '/@/utils/file/download';
import SzybStudentModal from '/@/views/zy/zyInfoStudent/components/SzybStudentModal.vue';
import ZyInfoStudentScoreModal from '/@/views/zy/zyInfoStudent/components/ZyInfoStudentScoreModal.vue';
@ -478,6 +547,7 @@ const queryType = ref<string>('');
const dataKhnr = ref<any>([]);
const tableCcjgData = ref<any>([]);
const tableXshpData = ref<any>([]);
const rowSelectionKhnr = ref<any>([]);
const SzybStudentModalpage = ref();
@ -489,7 +559,7 @@ const ZyInfoStudentModalPage = ref();
const XxhbbksListModalPage = ref();
const registerEditModal = ref();
const registerDetialModal = ref();
const pdfUrl = ref('/downPath/ylhpsf.pdf');
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
@ -497,13 +567,13 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
columns: newcolumns,
canResize: false,
useSearchForm: false,
pagination: {
current: 1,
pageSize: 1000,
},
pagination: {
current: 1,
pageSize: 10,
},
actionColumn: {
width: '300px',
// fixed: 'right',
fixed: 'right',
},
showTableSetting: true,
defSort: {
@ -535,6 +605,15 @@ function handleXshpkg(record) {
console.log('👨‍👧‍👦', record);
}
//
function handleHpsf(){
// openByUrl({url:'/downPath/ylhpsf.pdf',target: '_blank',fileName:'.pdf'})
// window.open(pdfUrl.value, '_blank');
// window.open(require('../../../downPath/ylhpsf.pdf'), '_blank');
window.open(baseApiUrl+'/temp/ylhpsf.pdf');
}
//
function handleViewInfo(record) {
defHttp.get({ url: '/zyCcjg/zyCcjg/ccjglist', params: { zyStuId: record.id } }).then((res) => {
@ -543,6 +622,17 @@ function handleViewInfo(record) {
});
handleShowType(4);
}
//
function handleXshpfs(record) {
defHttp.get({ url: '/zyInfoStudentHp/zyInfoStudentHp/list', params: { zyStuId: record.id, pageSize: -1 } }).then((res) => {
console.log('🤦‍♀️', res);
tableXshpData.value = res.records;
console.log('😒', res.records);
console.log('👨‍🦰', tableXshpData.value);
});
handleShowType(5);
}
//
function handleOpenLwxx(record) {
window.open(record.paperviewurl, '_blank');
@ -625,9 +715,20 @@ function yulanFile(record) {
}
//
function handleBohui(record: Recordable) {
defHttp.post({ url: '/zyInfoStudent/zyInfoStudent/editBohui', params: { id: record.id } }).then((res) => {
handleSuccess();
});
createConfirm({
iconType: 'warning',
title: '驳回',
content: '您确定驳回此作业吗,驳回后需要学生重新提交?',
okText: '确认',
cancelText: '取消',
onOk: () => {
defHttp.post({ url: '/zyInfoStudent/zyInfoStudent/editBohui', params: { id: record.id } }).then((res) => {
handleSuccess();
});
},
});
}
//
function handleScore(record: Recordable) {
@ -807,8 +908,8 @@ function handleBatchAdd() {
if (sfjx == 1) {
return;
}
if(cjbfb>100){
createMessage.error('本次作业占期末总成绩的百分比不得超过100%,当前作业总百分比为:'+cjbfb+'%');
if (cjbfb > 100) {
createMessage.error('本次作业占期末总成绩的百分比不得超过100%,当前作业总百分比为:' + cjbfb + '%');
return;
}
@ -955,8 +1056,8 @@ async function submitForm() {
var xshpjssjTimestamp = Date.parse(xshpjssj);
if (xshpkssjTimestamp > xshpjssjTimestamp) {
createMessage.warning('互评开始时间不能大于互评结束时间!');
confirmLoading.value = false;
return;
confirmLoading.value = false;
return;
}
}
@ -972,15 +1073,14 @@ async function submitForm() {
}
}
if(xshpkssj && startTime){
if (xshpkssj && endTime) {
var endTimestamp = Date.parse(xshpkssj);
var startTimestamp = Date.parse(startTime);
var startTimestamp = Date.parse(endTime);
if (endTimestamp < startTimestamp) {
createMessage.warning('互评开始间不能大于作业发布时间!');
createMessage.warning('互评开始间不能小于作业截止时间!');
confirmLoading.value = false;
return;
}
}
await saveOrUpdate(model, isUpdate.value)
@ -1064,6 +1164,39 @@ const columnsCcjg = [
},
];
const columnsXshp = [
{
title: '序号',
dataIndex: 'no',
key: 'no',
customRender: (text) => {
return text.index + 1;
},
width: 80,
},
{
title: '学生姓名',
dataIndex: 'stuName',
key: 'stuName',
},
{
title: '学生学号',
dataIndex: 'stuId',
key: 'stuId',
},
{
title: '互评时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title: '互评分数',
dataIndex: 'stuScore',
key: 'stuScore',
},
];
const columnsKhnr = [
{
title: '序号',
@ -1136,32 +1269,28 @@ function handleDetail(record: Recordable) {
//
function handleZyxx(record, type) {
if(type == '1'){
if(!record.wtjnum || record.wtjnum == '0'){
createMessage.error("当前人数为0不能进行查询")
if (type == '1') {
if (!record.wtjnum || record.wtjnum == '0') {
createMessage.error('当前人数为0不能进行查询');
return;
}
}else if(type == '2'){
if(!record.ytjnum || record.ytjnum == '0'){
createMessage.error("当前人数为0不能进行查询")
} else if (type == '2') {
if (!record.ytjnum || record.ytjnum == '0') {
createMessage.error('当前人数为0不能进行查询');
return;
}
}else if(type == '3'){
if(!record.wpynum || record.wpynum == '0'){
createMessage.error("当前人数为0不能进行查询")
} else if (type == '3') {
if (!record.wpynum || record.wpynum == '0') {
createMessage.error('当前人数为0不能进行查询');
return;
}
}else if(type == '4'){
if(!record.ypynum || record.ypynum == '0'){
createMessage.error("当前人数为0不能进行查询")
} else if (type == '4') {
if (!record.ypynum || record.ypynum == '0') {
createMessage.error('当前人数为0不能进行查询');
return;
}
}
zyInfo.value = record;
handleShowType(3);
queryType.value = type;
@ -1353,15 +1482,15 @@ onMounted(() => {
white-space: nowrap; /* 确保文本在一行内显示 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
}
.ellip-title{
.ellip-title {
display: flex;
justify-content: space-between;
}
.elli-title{
.elli-title {
font-size: 16px;
font-weight: bold;
font-weight: bold;
}
.ellip-word{
.ellip-word {
font-size: 14px;
color: #666666;
}
@ -1375,81 +1504,80 @@ onMounted(() => {
text-align: center;
width: 25%;
margin-right: 3px;
padding:8px 3px;
padding: 8px 3px;
border-radius: 5px;
background: #f7f7f7;
margin-top: 10px;
}
.data-suggest span:nth-child(1){
.data-suggest span:nth-child(1) {
font-size: 16px;
font-weight: bold;
}
.data-suggest span:nth-child(2){
.data-suggest span:nth-child(2) {
font-size: 12px;
}
.work-img{
.work-img {
width: 100%;
display: flex;
justify-content: center;
margin-top:80px;
margin-top: 80px;
margin-bottom: 30px;
}
.work-img-img{
width:180px;
height:139px;
.work-img-img {
width: 180px;
height: 139px;
}
.buttonClass{
background: #1ab394;
font-weight: 600;
color: #fff;
border-radius: 3px;
border: none;
}
.mar-right20{
margin-right: 14px;
}
.button-zhta{
color:#666666;
cursor: pointer;
}
.button-zhta:hover {
.buttonClass {
background: #1ab394;
font-weight: 600;
color: #fff;
border-radius: 3px;
border: none;
}
.mar-right20 {
margin-right: 14px;
}
.button-zhta {
color: #666666;
cursor: pointer;
}
.button-zhta:hover {
cursor: pointer;
color: #18a689;
}
.sear-distance{
padding:0 10px;
.sear-distance {
padding: 0 10px;
}
.ant-form-item {
box-sizing: border-box;
margin:10px 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: tnum;
/* margin-bottom: 24px; */
vertical-align: top;
box-sizing: border-box;
margin: 10px 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: tnum;
/* margin-bottom: 24px; */
vertical-align: top;
}
.bled-countenance{
color:#333333;
.bled-countenance {
color: #333333;
}
.bled-countenance2{
color:#999999;
.bled-countenance2 {
color: #999999;
font-size: 12px;
}
.region{
margin:5px 10px;
padding-bottom:20px;
background:#fff;
border-radius: 5px;
.region {
margin: 5px 10px;
padding-bottom: 20px;
background: #fff;
border-radius: 5px;
}
.region-title{
font-size:16px;
.region-title {
font-size: 16px;
color: #029c88;
padding:8px 20px;
padding: 8px 20px;
border-left: 5px solid #029c88;
margin-bottom: 20px;
}

View File

@ -41,7 +41,7 @@
<div v-html="formData.pfbz"></div>
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :span="24" v-if="formData.wwtgl">
<a-form-item label="查重设置" layout="inline">
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<span style="padding: 7px 20px"></span>

View File

@ -91,6 +91,7 @@ export const newcolumns: BasicColumn[] = [
align: "center",
dataIndex: 'xshpfs',
sorter: true,
slots: { customRender: 'xshpfsaction' },
},
{
title: '绩效分',

View File

@ -5,9 +5,19 @@
<!-- <a-col :span="24">
<span style="margin-left: 8%;line-height:60px;">预设作业分值{{zyInfo.score?zyInfo.score+"分 评分不能高于预设分值":'未设置 评分不能高于100分'}}</span>
</a-col> -->
<a-col :span="24" style="margin-top: 40px;">
<a-col :span="24">
<a-form-item label="作业名称">
{{zyInfo.title}}
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="学生姓名">
{{formData.studentName}}
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="评分" v-bind="validateInfos.score">
<a-input-number v-model:value="formData.score" :max="100" :min="0" :disabled="disabled" style="width:100%;" @change="handleJyfz" ></a-input-number>
<a-input-number v-model:value="formData.score" :min="0" :disabled="disabled" style="width:100%;" @change="handleJyfz" ></a-input-number>
</a-form-item>
</a-col>
</a-row>
@ -75,12 +85,12 @@
if(parseInt(record) > 100){
createMessage.warning('评分不能超过100分!');
formData.score = 100;
formData.score = '';
}
if(parseInt(record) < 0){
createMessage.warning('评分不能低于0分!');
formData.score = 0;
formData.score = '';
}
}

View File

@ -14,7 +14,6 @@
v-model:value="formData.stuScore"
placeholder="请输入评分"
:min="0"
:max="100"
style="width: 300px"
:disabled="disabled"
@change="handleScoreChange"