修改bug

This commit is contained in:
yangjun 2024-08-08 09:47:20 +08:00
parent 2d327ea307
commit 440470d9e4
15 changed files with 1095 additions and 510 deletions

View File

@ -7,17 +7,23 @@
<a-col :span="24">
<a-row>
<a-col :lg="24" :xs="18">
<div style="width:100%;background: #fff;font-size: 18px;font-weight: bold;margin-top:10px;padding: 10px;">课程名称{{kcxxInfo.kcmc}}</div>
<div style="width:100%;background: #fff;font-size: 18px;font-weight: bold;margin-top:10px;padding: 10px;">
<a-button type="primary" @click="toggleCollapsed">
<MenuUnfoldOutlined v-if="collapsed" />
<MenuUnfoldOutlined v-else />
</a-button>
课程名称{{kcxxInfo.kcmc}}</div>
</a-col>
<a-col :lg="0" :xs="6">
<dqxqkcMenu/>
</a-col>
</a-row>
</a-col>
<a-col :lg="5" :xs="0">
<dqxqkcMenu/>
<a-col :lg="spanlg" :xs="0">
<dqxqkcMenu ref="dqxqkcMenuTag"/>
</a-col>
<a-col :lg="19" :xs="24">
<a-col :lg="spanlt" :xs="24">
<RouterView/>
</a-col>
</a-row>
@ -35,12 +41,14 @@
import { useRouter } from 'vue-router';
import { MenuUnfoldOutlined } from '@ant-design/icons-vue';
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';
import dqxqkcMenu from '/@/views/site/renKeJiaoCheng/checkKecheng/dqxqkcMenu.vue';
import dqxqkc from '/@/views/site/renKeJiaoCheng/checkKecheng/dqxqkc.vue';
const maxClassName = ref<any>({});
const dqxqkcMenuTag = ref();
const selectedKeys = ref<string[]>([]);
//
const { currentRoute } = useRouter();
@ -48,8 +56,22 @@
const { rwbh,xqxn } = query;//
let router = useRouter();
const kcxxInfo = ref<string>('');
const spanlg = ref<number>(5);
const spanlt = ref<number>(19);
const collapsed = ref<any>(false);
function toggleCollapsed() {
collapsed.value = !collapsed.value;
dqxqkcMenuTag.value.toggleCollapsed();
if(collapsed.value){
spanlg.value = 1;
spanlt.value = 23;
}else{
spanlg.value = 5;
spanlt.value = 19;
}
}
//
onMounted(() => {
// console.log('rwbh:',rwbh);

View File

@ -5,21 +5,34 @@
<a-menu
v-model:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
style="width: 98%;min-height: calc(100vh - 225px);margin: 10px 0;"
style="width: 98%; min-height: calc(100vh - 225px); margin: 10px 0"
mode="inline"
:inline-collapsed="collapsed"
>
<a-menu-item key="sub0">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('gonggao')">通知公告</span>
</a-menu-item>
<a-sub-menu key="sub1">
<template #icon>
<PieChartOutlined />
</template>
<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-sub-menu>
<a-menu-item key="sub2">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('dqzy')">课程作业</span>
</a-menu-item>
<a-menu-item key="sub21">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('kcjc')">课程测验</span>
</a-menu-item>
<!-- <a-sub-menu key="sub2">
@ -28,18 +41,27 @@
<a-menu-item key="5" @click="getGzt('kcjc')">课程测验</a-menu-item>
</a-sub-menu> -->
<a-sub-menu key="sub3">
<template #icon>
<PieChartOutlined />
</template>
<template #title>教学工具</template>
<a-menu-item key="6" @click="getGzt('dcwj')">问卷调查</a-menu-item>
<a-menu-item key="7" @click="getGzt('gongju')">到课识别率</a-menu-item>
<a-menu-item key="8" @click="getGzt('zycd')">作业存档</a-menu-item>
</a-sub-menu>
<a-menu-item key="sub4">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('yiykzyk')">教学资源库</span>
</a-menu-item>
<!-- <a-menu-item key="sub5">
<span @click="getGzt('jxzyk')">教学资源库</span>
</a-menu-item> -->
<a-menu-item key="sub6">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('tlq')">讨论区</span>
</a-menu-item>
<!-- <a-menu-item key="sub3">
@ -56,12 +78,7 @@
</a-menu>
</a-col>
<a-col :lg="0" :xs="24">
<a-menu
v-model:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
style="width: 98%;margin: 10px 0;"
mode="horizontal"
>
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 98%; margin: 10px 0" mode="horizontal">
<a-sub-menu key="min0">
<template #icon>
<!-- <SettingOutlined /> -->
@ -106,13 +123,12 @@
</template>
<script lang="ts" setup>
import { ref, onMounted, unref } from 'vue';
import { ref, onMounted, unref,defineExpose } from 'vue';
import { getUserSf, getSysConfig } from '/@/views/site/utils/index';
import { defHttp } from '/@/utils/http/axios';
import { useRouter } from 'vue-router';
import { MailOutlined, AppstoreOutlined, SettingOutlined,MenuUnfoldOutlined } from '@ant-design/icons-vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined, MenuUnfoldOutlined,PieChartOutlined } from '@ant-design/icons-vue';
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';
@ -121,6 +137,7 @@
const maxClassName = ref<any>({});
const selectedKeys = ref<string[]>(['sub0']);
const openKeys = ref<string[]>(['sub0']);
const collapsed = ref<any>(false);
//
const { currentRoute } = useRouter();
const { query } = unref(currentRoute);
@ -130,34 +147,39 @@
function getGzt(zytype) {
var param = { rwbh, xqxn, type };
// console.log(`🚀 ~ getGzt ~ type:`, zytype)
var href = "/zy/dqkcDqzy";
var href = '/zy/dqkcDqzy';
if (zytype == 'dqzy') {
href = "/zy/dqkcDqzy";
href = '/zy/dqkcDqzy';
} else if (zytype == 'dcwj') {
href = "/zy/dcwjWenjuan";
href = '/zy/dcwjWenjuan';
} else if (zytype == 'lszy') {
href = "/zy/dqkcLszy";
href = '/zy/dqkcLszy';
} else if (zytype == 'gonggao') {
href = "/zy/tuGonggao";
href = '/zy/tuGonggao';
} else if (zytype == 'kcjs') {
href = "/zy/dqkcDetail";
href = '/zy/dqkcDetail';
} else if (zytype == 'kcjc') {
href = "/zy/ceshiWenjuan";
href = '/zy/ceshiWenjuan';
} else if (zytype == 'gongju') {
href = "/zy/dqkcGongju";
href = '/zy/dqkcGongju';
} else if (zytype == 'yiykzyk') {
href = "/zy/yiykzyk";
href = '/zy/yiykzyk';
} else if (zytype == 'jxzyk') {
href = "/zy/dqkcJxzyk";
href = '/zy/dqkcJxzyk';
} else if (zytype == 'tlq') {
href = "/zy/dqkcTlq";
href = '/zy/dqkcTlq';
} else if (zytype == 'zycd') {
href = "/zy/dqkcCdxx";
href = '/zy/dqkcCdxx';
}
router.push({ path: href, query: { rwbh, xqxn, type, teano } });
}
function toggleCollapsed() {
collapsed.value = !collapsed.value;
openKeys.value = collapsed.value ? [] : selectedKeys.value;
}
function gotoPageByName(name) {
router.push({ name, query: { rwbh, xqxn, type, teano } });
}
@ -167,6 +189,9 @@
// console.log('rwbh:',rwbh);
});
defineExpose({
toggleCollapsed
});
</script>
<style lang="less" scoped>
#siteMain {
@ -190,7 +215,7 @@
}
.ant-layout-footer {
line-height: 1.5;
background: #FFF;
background: #fff;
}
.ant-layout-sider {
color: #fff;
@ -206,6 +231,6 @@
}
}
.ant-menu-overflow {
flex-direction: row-reverse
flex-direction: row-reverse;
}
</style>

View File

@ -7,17 +7,23 @@
<a-col :span="24">
<a-row>
<a-col :lg="24" :xs="18">
<div style="width:100%;background: #fff;font-size: 18px;font-weight: bold;margin-top:10px;padding: 10px;">课程名称{{kcxxInfo.kcmc}}</div>
<div style="width:100%;background: #fff;font-size: 18px;font-weight: bold;margin-top:10px;padding: 10px;">
<a-button type="primary" @click="toggleCollapsed">
<MenuUnfoldOutlined v-if="collapsed" />
<MenuUnfoldOutlined v-else />
</a-button>
课程名称{{kcxxInfo.kcmc}}</div>
</a-col>
<a-col :lg="0" :xs="6">
<studentMenu/>
</a-col>
</a-row>
</a-col>
<a-col :lg="5" :xs="0">
<studentMenu/>
<a-col :lg="spanlg" :xs="0">
<studentMenu ref="dqxqkcMenuTag"/>
</a-col>
<a-col :lg="19" :xs="24">
<a-col :lg="spanlt" :xs="24">
<RouterView/>
</a-col>
@ -40,6 +46,7 @@
import { getUserSf,getSysConfig } from '/@/views/site/utils/index';
import { defHttp } from '/@/utils/http/axios';
import { useRouter } from 'vue-router';
import { MenuUnfoldOutlined } from '@ant-design/icons-vue';
import headerPage from '/@/views/site/common/header.vue';
@ -49,13 +56,28 @@
const maxClassName = ref<any>({});
const selectedKeys = ref<string[]>([]);
const kcxxInfo = ref<string>('');
const dqxqkcMenuTag = ref();
//
const { currentRoute } = useRouter();
const { query } = unref(currentRoute);
const { rwbh,xqxn } = query;//
let router = useRouter();
const spanlg = ref<number>(5);
const spanlt = ref<number>(19);
const collapsed = ref<any>(false);
function toggleCollapsed() {
collapsed.value = !collapsed.value;
dqxqkcMenuTag.value.toggleCollapsed();
if(collapsed.value){
spanlg.value = 1;
spanlt.value = 23;
}else{
spanlg.value = 5;
spanlt.value = 19;
}
}
//
onMounted(() => {
defHttp.get({ url: '/ktgl/kcKechengbiao/getKcxxByRwbhXqxn', params: { rwbh: rwbh,xqxn:xqxn } }).then((res) => {

View File

@ -3,26 +3,40 @@
<a-row>
<a-col :lg="24" :xs="{ span: 0 }">
<a-menu
v-model:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
style="width: 98%;min-height: calc(100vh - 225px); margin: 10px 0;"
mode="inline"
:inline-collapsed="collapsed"
>
<a-menu-item key="sub1">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('tzgg')">通知公告</span>
</a-menu-item>
<a-sub-menu key="sub2">
<template #icon>
<PieChartOutlined />
</template>
<template #title>课程内容</template>
<a-menu-item key="1" @click="getGzt('kcjs')">课程简介</a-menu-item>
<!-- <a-menu-item key="2" @click="getGzt('tzgg')">通知公告</a-menu-item> -->
<a-menu-item key="3" @click="getGzt('stuJiaoXueDanYuanNeiRong')">教学单元</a-menu-item>
</a-sub-menu>
<a-menu-item key="sub4">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('dqzy')">课程作业</span>
</a-menu-item>
<!-- <a-menu-item key="sub8">
<span @click="getGzt('zyhp')">作业互评</span>
</a-menu-item> -->
<a-menu-item key="sub7">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('kcjc')">课程测验</span>
</a-menu-item>
<!-- <a-sub-menu key="sub4">
@ -31,9 +45,15 @@
<a-menu-item key="5" @click="getGzt('kcjc')">课程测验</a-menu-item>
</a-sub-menu> -->
<a-menu-item key="sub5">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('dcwj')">问卷调查</span>
</a-menu-item>
<a-menu-item key="sub6">
<template #icon>
<PieChartOutlined />
</template>
<span @click="getGzt('tlq')">讨论区</span>
</a-menu-item>
</a-menu>
@ -79,7 +99,7 @@
</template>
<script lang="ts" setup>
import { ref, onMounted, unref } from 'vue';
import { ref, onMounted, unref ,defineExpose } from 'vue';
import { getUserSf,getSysConfig } from '/@/views/site/utils/index';
import { defHttp } from '/@/utils/http/axios';
@ -89,15 +109,18 @@
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';
import dqxqkc from '/@/views/site/renKeJiaoCheng/checkKecheng/dqxqkc.vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined,MenuUnfoldOutlined } from '@ant-design/icons-vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined, MenuUnfoldOutlined,PieChartOutlined } from '@ant-design/icons-vue';
const maxClassName = ref<any>({});
const selectedKeys = ref<string[]>([]);
const openKeys = ref<string[]>(['sub0']);
//
const { currentRoute } = useRouter();
const { query } = unref(currentRoute);
const { rwbh,xqxn,type,teano } = query;//
let router = useRouter();
const collapsed = ref<any>(false);
function getGzt(zytype){
@ -125,10 +148,17 @@
router.push({path:href,query: {rwbh,xqxn,type,teano}});
}
function toggleCollapsed() {
collapsed.value = !collapsed.value;
openKeys.value = collapsed.value ? [] : selectedKeys.value;
}
//
onMounted(() => {
console.log('rwbh:',rwbh);
});
defineExpose({
toggleCollapsed
});
</script>
<style lang="less" scoped>

View File

@ -21,20 +21,21 @@
</a-form>
</div> -->
<a-row>
<a-col :span="12" v-for="(item, index) in tableData" :key="index" style="padding: 0px 0px 5px 5px; border-radius: 10px; overflow: hidden;">
<a-col :span="24" v-for="(item, index) in tableData" :key="index" style="padding: 0px 0px 5px 5px; border-radius: 10px; overflow: hidden;">
<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;" :title="item.title">
<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.title }}</div>
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业</div>
</a-col>
</div>
<a-card style="height:310px; border: 1px solid #eeeeee">
<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="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="24" 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="24" class="zyCon Score-List">
<div class="Score-List-row">
<a-col :span="24" class="zytitle" :title="item.title">{{ 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">
<!-- <div class="Score-List-row">
<span class="List-row-number">{{ item.stuscore ? item.stuscore : '未评' }}</span>
<span class="List-row-word">作业得分</span>
</div>
@ -45,21 +46,43 @@
<div class="Score-List-row" v-if="handleSfkshp(item)">
<span class="List-row-number">{{ item.jxfs ? item.jxfs : '未评' }}</span>
<span class="List-row-word">互评奖励</span>
</div>
</div> -->
<a-popover title="得分情况">
<template #content>
<p>作业得分{{ item.stuscore ? item.stuscore : '未评' }}</p>
<p v-if="item.jxfs">互评奖励{{ item.jxfs ? item.jxfs : '未评' }}</p>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zzdf ? 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>
<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>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zgccl?item.zgccl:'-' }}</span>
<span class="List-row-word">查重率</span>
</div>
</a-popover>
<!-- <div class="Score-List-row">
<span class="List-row-number">{{ item.zgccl?item.zgccl:'-' }}</span>
<span class="List-row-word">查重率</span>
</div> -->
</a-col>
<a-col :span="24" class="zyCon">
<!-- <a-col :span="24" class="zyCon">
<div style="float: left" class="wpopen" :title="item.wwsftg" @click="handleOpenCcjg(item, '0')"><span class="zyCon-word">维普资源库查重</span>{{ getCctype(item, '1') }}</div>
<div style="float: right" class="wpopen" :title="item.nwsftg" @click="handleOpenCcjg(item, '1')"><span class="zyCon-word">本次作业查重</span>{{ getCctype(item, '2') }}</div>
</a-col>
<a-col :span="24" class="zyCon">
<div style="float: left" class="wpopen" :title="item.xnsftg" @click="handleOpenCcjg(item, '3')"><span class="zyCon-word">学校作业库查重</span>{{ getCctype(item, '4') }}</div>
<div style="float: right" class="wpopen" :title="item.aigcsftg" @click="handleOpenCcjg(item, '2')"><span class="zyCon-word">Aigc查重</span>{{ getCctype(item, '3') }}</div>
</a-col>
<a-col :span="24" style="text-align: center; margin-top:12px; border-top: 1px solid #f6f6f6; padding-top:15px">
</a-col> -->
<a-col :span="12" style="text-align: center; margin-top:12px; border-top: 1px solid #f6f6f6; padding-top:15px">
<a-button class="zyCon-button" type="primary" @click="handleDetail(item)">
详情
</a-button>
@ -72,7 +95,7 @@
<a-button class="zyCon-button" type="primary" @click="handlePreview(item)" v-if="item.stuFilePath">
预览
</a-button>
<a-button class="zyCon-button" type="primary" @click="handleHuping(item)" v-if="handleSfkshp(item)">
<a-button class="zyCon-button" type="primary" @click="handleHuping(item)" v-if="handleSfkshp(item)==1 || handleSfkshp(item)==2" :disabled="handleSfkshp(item)!=1" :title="handleSfkshp(item)==1?'':'未到互评时间或已过互评时间'">
互评
</a-button>
</a-col>
@ -198,9 +221,12 @@ function handleSfkshp(record) {
var xshpjssj = new Date(record.xshpjssj);
var nowTime = new Date();
if (record.stuFilePath && sfkshp == '1' && nowTime.getTime() >= xshpkssj.getTime() && nowTime.getTime() <= xshpjssj.getTime()) {
return true;
return 1;
}else if(record.stuFilePath && sfkshp == '1'){
return 2
}else{
return 3;
}
return false;
}
function handleHuping(record) {
@ -439,8 +465,8 @@ onMounted(() => {
color: #fff;
padding: 10px;
position: relative;
top: -60px;
right: -183px;
top: -68px;
right: -400px;
text-align: center;
font-size: 12px;
}
@ -457,7 +483,7 @@ onMounted(() => {
}
.Score-List-row{
display: flex;
width: 25%;
width: 50%;
flex-direction:column;
margin-right: 10px;
justify-content: center;
@ -481,4 +507,11 @@ onMounted(() => {
.zyCon-button{
margin-right: 10px;
}
.zytitle{
font-size: 16px;
font-weight: 700;
overflow: hidden; /* 确保超出容器的内容被裁剪 */
white-space: nowrap; /* 确保文本在一行内显示 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
}
</style>

View File

@ -93,6 +93,7 @@ d<template>
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm"
style="width: 100%"
@change="handleEndTime"
/>
</a-form-item>
</a-col>
@ -113,7 +114,7 @@ d<template>
<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" v-if="zyInfo.xshpkg == '1'">温馨提示点击可编辑作业要求</div>
<div @click="handleZyyqShow(1)" class="tishi">温馨提示点击可编辑作业要求</div>
<!-- <div @click="handleZyyqShow(1)"><span style="cursor: pointer; color: #18a689">温馨提示点击可编辑作业要求</span></div> -->
</a-form-item>
</a-col>
@ -123,7 +124,7 @@ d<template>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="评分标准" layout="inline">
<a-form-item label="评分标准" layout="inline" v-bind="validateInfos.pfbz">
<a-form-item
label="是否允许学生查看"
:labelCol="labelCol2"
@ -132,7 +133,7 @@ d<template>
>
<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'">
<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>
@ -144,7 +145,6 @@ d<template>
<a-col :span="24">
<div class="region">
<div class="region-title">学生互评</div>
<div style="float:right;margin-right:8px;" v-if="zyInfo.xshpkg == '1'"><span style="color:#18a689; cursor: pointer;" @click="handleHpsf">预览互评算法</span></div>
<a-form-item label="学生互评">
<div class="tishi" v-if="zyInfo.xshpkg == '1'">温馨提示每份作业至少互评3次每个学生互评5份作业</div>
<j-dict-select-tag
@ -185,7 +185,7 @@ d<template>
style="margin-top: 15px"
/> -->
</a-form-item>
<a-form-item label="互评开始时间" :labelCol="labelCol2" :wrapperCol="wrapperCol2">
<a-form-item label="互评开始时间" :labelCol="labelCol2" :wrapperCol="wrapperCol2" hidden>
<a-date-picker
placeholder="请选择互评开始时间"
v-model:value="zyInfo.xshpkssj"
@ -251,7 +251,7 @@ d<template>
</a-form-item>
</div>
</a-col>
<a-col :span="24" style="text-align: center; margin-top: 10px; margin-bottom: 40px; ">
<a-col :span="24" style="text-align: center; margin-top: 10px; margin-bottom: 40px">
<a-button type="primary" @click="submitForm">保存</a-button>
<a-button type="primary" @click="reloadZy" style="margin-left: 15px">返回</a-button>
</a-col>
@ -276,7 +276,6 @@ d<template>
温馨提示<br />
1非高峰期预计30分钟内返回检测结果高峰期预计时间会更长请您耐心等待 <br />
2点击互评分数可查看同学间互评作业详情
<span style="color:#18a689; cursor: pointer;" @click="handleHpsf">预览互评算法</span>
<br />
3点击最高查重率可分别查看学生维普作业库查重学校作业库查重本次作业查重AIGC查重相似率<br />
4学生上传的课程作业全部存档<br />
@ -345,7 +344,9 @@ d<template>
<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-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">
@ -365,7 +366,9 @@ d<template>
<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-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">
@ -384,7 +387,7 @@ d<template>
</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-col :lg="24" 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"
@ -411,7 +414,7 @@ d<template>
><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>
<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%">
@ -420,13 +423,13 @@ d<template>
</div>
<div style="width: 100%; display: flex">
<div class="data-suggest zuanqu" @click="handleZyxx(item, '1')"
><span>{{ item.wtjnum }}</span><span>提交</span></div
><span>{{ item.wtjnum }}</span><span>提交</span></div
>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '2')"
<!-- <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, '5')"
><span>{{ item.dpynum }}</span><span>评阅</span></div
>
<div class="data-suggest zuanqu" @click="handleZyxx(item, '4')"
><span>{{ item.ypynum }}</span><span>已评阅</span></div
@ -436,9 +439,9 @@ d<template>
<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>
<a @click="handleZyxx(item, '')">批阅作业</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
<a @click="handleDelete(item)" v-if="item.ytjnum == '0'">删除</a>
</div>
</a-card>
<a-card
@ -451,7 +454,7 @@ d<template>
><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>
<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%">
@ -607,15 +610,11 @@ 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 handleEndTime(record) {
console.log('👽', record);
zyInfo.value.xshpkssj = record;
}
//
function handleViewInfo(record) {
defHttp.get({ url: '/zyCcjg/zyCcjg/ccjglist', params: { zyStuId: record.id } }).then((res) => {
@ -717,8 +716,6 @@ function yulanFile(record) {
}
//
function handleBohui(record: Recordable) {
createConfirm({
iconType: 'warning',
title: '驳回',
@ -834,6 +831,7 @@ async function batchHandleFabu() {
const validatorRules = {
title: [{ required: true, message: '请输入作业名称!' }],
endTime: [{ required: true, message: '请输入结束时间!' }],
pfbz: [{ required: true, message: '请输入评分标准!' }],
};
const { resetFields, validate, validateInfos } = useForm(zyInfo, validatorRules, { immediate: true });
const labelCol = reactive({
@ -857,10 +855,10 @@ const wrapperCol3 = reactive({
sm: { span: 20 },
});
const labelCol4 = reactive({
sm: { span: 8 },
sm: { span: 10 },
});
const wrapperCol4 = reactive({
sm: { span: 14 },
sm: { span: 12 },
});
//
function handleZyyqShow(type) {
@ -1242,9 +1240,23 @@ function handleAdd() {
* 编辑事件
*/
function handleEdit(record, type) {
console.log('👩🎓1111111', record);
if (!record.sturead) {
record.sturead = '1';
}
if (!record.xshpkg) {
record.xshpkg = '1';
}
if (!record.sfzzcj) {
record.sfzzcj = '1';
}
if (!record.xssfck) {
record.xssfck = '1';
}
console.log('💂2222222', record);
editDisabled.value = type;
console.log('👨‍👨‍👧‍👧', editDisabled);
zyInfo.value = record;
console.log('😔3333333', zyInfo.value);
dataKhnr.value = [];
var kcnr = zyInfo.value.kcnr;
if (kcnr) {
@ -1269,7 +1281,7 @@ function handleDetail(record: Recordable) {
registerDetialModal.value.edit(record);
}
//
//
function handleZyxx(record, type) {
if (type == '1') {
if (!record.wtjnum || record.wtjnum == '0') {
@ -1291,6 +1303,11 @@ function handleZyxx(record, type) {
createMessage.error('当前人数为0不能进行查询');
return;
}
} else if (type == '4') {
if (!record.dpynum || record.dpynum == '0') {
createMessage.error('当前人数为0不能进行查询');
return;
}
}
zyInfo.value = record;
@ -1450,7 +1467,7 @@ onMounted(() => {
min-height: 200px;
}
.sznrClass {
line-height: 126px;
line-height: 40px;
text-align: center;
}
.ant-card {

View File

@ -34,6 +34,7 @@
</a-col>
<a-col :span="24" v-if="formData.filePath">
<a-form-item label="参考资料">
<span>{{ lastString(formData.filePath) }}</span>
<a-button type="primary" style="margin-left: 10px" @click="downLoad(formData.filePath)">下载</a-button>
</a-form-item>
</a-col>
@ -49,14 +50,7 @@
<a-form-item layout="inline" style="margin-left: 100px">
<a-form-item label="检测通过率" :labelCol="labelCol3" :wrapperCol="wrapperCol3">
<span style="padding: 7px 20px"></span>
<a-input-number
v-model:value="formData.wwtgl"
placeholder="检测通过率"
style="width: 60%"
:max="100"
:min="0"
disabled
>
<a-input-number v-model:value="formData.wwtgl" placeholder="检测通过率" style="width: 60%" :max="100" :min="0" disabled>
<template #addonAfter> % </template>
</a-input-number>
</a-form-item>
@ -131,7 +125,7 @@
import { useRouter } from 'vue-router';
import dayjs, { Dayjs } from 'dayjs';
import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
import {getFileAccessHttpUrl} from "/@/utils/common/compUtils";
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { downloadFile } from '/@/utils/common/renderUtils';
//
@ -141,7 +135,7 @@
const props = defineProps({
formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true }
formBpm: { type: Boolean, default: true },
});
const formRef = ref();
const useForm = Form.useForm;
@ -171,7 +165,6 @@
// const labelCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 3 } });
// const wrapperCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 20 } });
const labelCol2 = reactive({
sm: { span: 10 },
});
@ -188,18 +181,18 @@
const confirmLoading = ref<boolean>(false);
//
const validatorRules = {
title: [{ required: true, message: '请输入作业名称!'},],
title: [{ required: true, message: '请输入作业名称!' }],
// zyType: [{ required: true, message: '!'},],
startTime: [{ required: true, message: '请输入开始时间!'},],
endTime: [{ required: true, message: '请输入结束时间!'},],
wwcc: [{ required: true, message: '请输入外网是否查重!'},],
wwtgl: [{ required: false}, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'},],
nwcc: [{ required: true, message: '请输入内网查重!'},],
nwtgl: [{ required: false}, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'},],
aigccc: [{ required: true, message: '请输入aigc查重!'},],
aigctgl: [{ required: false}, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'},],
xncc: [{ required: true, message: '请输入aigc查重!'},],
xntgl: [{ required: false}, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'},],
startTime: [{ required: true, message: '请输入开始时间!' }],
endTime: [{ required: true, message: '请输入结束时间!' }],
wwcc: [{ required: true, message: '请输入外网是否查重!' }],
wwtgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
nwcc: [{ required: true, message: '请输入内网查重!' }],
nwtgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
aigccc: [{ required: true, message: '请输入aigc查重!' }],
aigctgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
xncc: [{ required: true, message: '请输入aigc查重!' }],
xntgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
};
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
const disabledDate = (current: Dayjs) => {
@ -217,7 +210,6 @@
return props.formDisabled;
});
const columnsKhnr = [
{
title: '序号',
@ -251,7 +243,6 @@ const columnsKhnr = [
}
}
/**
* 新增
*/
@ -271,6 +262,12 @@ const columnsKhnr = [
});
}
function lastString(record) {
console.log('😓', record);
const parts = record.split('/');
console.log('🧔', parts);
return parts[parts.length - 1];
}
/**
* 提交数据
*/
@ -386,12 +383,13 @@ function handleKcnr(kcnr) {
border-radius: 10px;
margin-top: 10px;
padding-top: 15px;
width: 100%;
}
.wrapper-title {
font-size: 18px;
border-left: 4px solid #1ab394;
font-weight: bold;
padding-left: 20PX;
padding-left: 20px;
margin-bottom: 20px;
}
</style>

View File

@ -0,0 +1,336 @@
<template>
<a-spin :spinning="confirmLoading">
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row>
<a-col :span="24">
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row>
<div class="wrapper-back">
<div class="wrapper-title">评分标准</div>
<a-col :span="24" v-show="formData.sturead == '1' && formData.pfbz">
<a-form-item label="评分标准" layout="inline">
<div class="spanb-word" v-html="formData.pfbz"></div>
</a-form-item>
</a-col>
</div>
</a-row>
</a-form>
</a-col>
<!-- <a-col :span="24">
<span class="spana">作业分值{{formData.score?formData.score:'未填写'}}</span>
</a-col>
<a-col :span="24">
<span class="spana">描述
<span v-if="formData.content">
{{formData.content}}
</span>
<span v-else>暂无内容</span>
</span>
</a-col>
<a-col :span="12">
<span class="spana">附件
<span v-if="formData.filePath">
<a-button :ghost="true" type="primary" preIcon="ant-design:download" size="small" @click="downloadFile(formData.filePath)"> 下载 </a-button>
</span>
<span v-else>暂无内容</span>
</span>
</a-col>
<a-col :span="12">
<span class="spana">上传时间{{formData.startTime}} ~ {{formData.endTime}}</span>
</a-col>
<a-col :span="12">
<span class="spana">是否网络查重{{formData.wwcc=='0'?'否':'是'}}</span> <span class="spanb">网络通过率{{formData.wwtgl?formData.wwtgl+"%":'未配置'}}</span>
</a-col>
<a-col :span="12">
<span class="spana">是否课程内查重{{formData.nwcc=='0'?'否':'是'}}</span> <span class="spanb">网络通过率{{formData.nwtgl?formData.nwtgl+"%":'未配置'}}</span>
</a-col>
<a-col :span="12">
<span class="spana">Aigc是否查重{{formData.aigccc=='0'?'否':'是'}}</span> <span class="spanb">网络通过率{{formData.aigctgl?formData.aigctgl+"%":'未配置'}}</span>
</a-col>
<a-col :span="12">
<span class="spana">是否校内查重{{formData.xncc=='0'?'否':'是'}}</span> <span class="spanb">网络通过率{{formData.xntgl?formData.xntgl+"%":'未配置'}}</span>
</a-col> -->
</a-row>
</a-form>
</a-spin>
</template>
<script lang="ts" setup>
import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted, unref } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { getValueType } from '/@/utils';
import { saveOrUpdate } from '../ZyInfo.api';
import { Form } from 'ant-design-vue';
import { useRouter } from 'vue-router';
import dayjs, { Dayjs } from 'dayjs';
import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { downloadFile } from '/@/utils/common/renderUtils';
//
const { currentRoute } = useRouter();
const { query } = unref(currentRoute);
const { rwbh } = query; //
const props = defineProps({
formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true },
});
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const dataKhnr = ref<any>([]);
const formData = reactive<Record<string, any>>({
id: '',
title: '',
zyType: '0',
content: '',
filePath: '',
startTime: '',
endTime: '',
wwcc: '0',
wwtgl: undefined,
nwcc: '0',
nwtgl: undefined,
aigccc: '0',
aigctgl: undefined,
rwbh: '',
xncc: '0',
xntgl: undefined,
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
// const labelCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 3 } });
// const wrapperCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 20 } });
const labelCol2 = reactive({
sm: { span: 10 },
});
const wrapperCol2 = reactive({
sm: { span: 10 },
});
const labelCol3 = reactive({
sm: { span: 4 },
});
const wrapperCol3 = reactive({
sm: { span: 20 },
});
const confirmLoading = ref<boolean>(false);
//
const validatorRules = {
title: [{ required: true, message: '请输入作业名称!' }],
// zyType: [{ required: true, message: '!'},],
startTime: [{ required: true, message: '请输入开始时间!' }],
endTime: [{ required: true, message: '请输入结束时间!' }],
wwcc: [{ required: true, message: '请输入外网是否查重!' }],
wwtgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
nwcc: [{ required: true, message: '请输入内网查重!' }],
nwtgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
aigccc: [{ required: true, message: '请输入aigc查重!' }],
aigctgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
xncc: [{ required: true, message: '请输入aigc查重!' }],
xntgl: [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }],
};
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
const disabledDate = (current: Dayjs) => {
return current && current < dayjs().subtract(1, 'days').endOf('day');
};
//
const disabled = computed(() => {
if (props.formBpm === true) {
if (props.formData.disabled === false) {
return false;
} else {
return true;
}
}
return props.formDisabled;
});
const columnsKhnr = [
{
title: '序号',
dataIndex: 'no',
key: 'no',
customRender: (text) => {
return text.index + 1;
},
width: 80,
},
{
title: '章次',
dataIndex: 'title',
key: 'title',
},
{
title: '节次',
dataIndex: 'twoTitle',
key: 'twoTitle',
},
];
function downLoad(file) {
if (file) {
let url = getFileAccessHttpUrl(file);
if (url) {
window.open(url);
}
} else {
createMessage.warning('暂无文件或文件上传中');
}
}
/**
* 新增
*/
function add() {
edit({ rwbh });
}
/**
* 编辑
*/
function edit(record) {
nextTick(() => {
resetFields();
//
Object.assign(formData, record);
handleKcnr(formData.kcnr);
});
}
function lastString(record) {
console.log('😓', record);
const parts = record.split('/');
console.log('🧔', parts);
return parts[parts.length - 1];
}
/**
* 提交数据
*/
async function submitForm() {
//
await validate();
confirmLoading.value = true;
const isUpdate = ref<boolean>(false);
//
let model = formData;
if (model.id) {
isUpdate.value = true;
}
//
for (let data in model) {
//
if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data);
//
if (valueType === 'string') {
model[data] = model[data].join(',');
}
}
}
if (model.wwcc == '1') {
if (!model.wwtgl) {
createMessage.warning('网络通过率不能为空');
confirmLoading.value = false;
return;
}
}
if (model.nwcc == '1') {
if (!model.nwtgl) {
createMessage.warning('内网通过率不能为空');
confirmLoading.value = false;
return;
}
}
if (model.aigccc == '1') {
if (!model.aigctgl) {
createMessage.warning('AIGC通过率不能为空');
confirmLoading.value = false;
return;
}
}
if (model.xncc == '1') {
if (!model.xntgl) {
createMessage.warning('校内通过率不能为空');
confirmLoading.value = false;
return;
}
}
await saveOrUpdate(model, isUpdate.value)
.then((res) => {
if (res.success) {
createMessage.success(res.message);
emit('ok');
} else {
createMessage.warning(res.message);
}
})
.finally(() => {
confirmLoading.value = false;
});
}
//
function handleKcnr(kcnr) {
if (kcnr) {
defHttp.get({ url: '/teachingunitcontent/kcTeachingUnitContentOne/getAllList', params: { id: kcnr } }).then((res) => {
console.log('🤦‍♀️', res);
dataKhnr.value = res;
});
} else {
dataKhnr.value = [];
}
}
defineExpose({
add,
edit,
submitForm,
});
</script>
<style lang="less" scoped>
.antd-modal-form {
min-height: 300px !important;
overflow-y: auto;
padding: 24px 24px 24px 24px;
}
.spanSm {
top: -22px;
position: inherit;
padding: 0 0 0 164px;
color: #a9a9a9;
}
.spana {
margin-left: 30px;
line-height: 30px;
}
.spanb {
margin-left: 30px;
line-height: 30px;
}
.spanb-word {
color: #999999;
}
.wrapper-back {
background: #f7f7f7;
border-radius: 10px;
margin-top: 10px;
padding-top: 15px;
width: 100%;
}
.wrapper-title {
font-size: 18px;
border-left: 4px solid #1ab394;
font-weight: bold;
padding-left: 20px;
margin-bottom: 20px;
}
</style>

View File

@ -0,0 +1,75 @@
<template>
<a-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<ZyInfoForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></ZyInfoForm>
</a-modal>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import ZyInfoForm from './ZyInfoPfbzForm.vue'
const title = ref<string>('');
const width = ref<number>(1000);
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
/**
* 新增
*/
function add() {
title.value = '新增';
visible.value = true;
nextTick(() => {
registerForm.value.add();
});
}
/**
* 编辑
* @param record
*/
function edit(record) {
title.value = disableSubmit.value ? '详情' : '编辑';
visible.value = true;
nextTick(() => {
registerForm.value.edit(record);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback() {
handleCancel();
emit('success');
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
add,
edit,
disableSubmit,
});
</script>
<style>
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>

View File

@ -87,7 +87,7 @@ export const newcolumns: BasicColumn[] = [
sorter: true,
},
{
title: '学生评分',
title: '互评分数',
align: "center",
dataIndex: 'xshpfs',
sorter: true,

View File

@ -5,7 +5,7 @@
<div class="jeecg-basic-table-form-con tainer">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="8" :sm="24">
<!-- <a-col :lg="8" :sm="24">
<a-form-item label="作业名称">
<a-input placeholder="请输入作业名称" v-model:value="queryParam.zytitle"></a-input>
</a-form-item>
@ -14,11 +14,12 @@
<a-form-item label="学生姓名">
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.studentName"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="8" :md="8" :sm="24">
<span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" @click="handleZyxxDetail" style="margin-left: 8px;;">作业信息</a-button>
</a-col> -->
<a-col :span="24" style="text-align: right;">
<span style="overflow: hidden" class="table-page-search-submitButtons">
<!-- <a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button> -->
<a-button type="primary" @click="handleZyxxDetail" style="margin-right: 8px;;">作业信息</a-button>
<a-button type="primary" @click="handlePfbz" style="margin-right: 8px;;" v-if="zyInfo.sturead == '1' && zyInfo.pfbz">评分标准</a-button>
</span>
</a-col>
</a-row>
@ -53,12 +54,13 @@
<!-- 表单区域 -->
<ZyInfoStudentHpModal ref="registerModal" @success="handleSuccess"></ZyInfoStudentHpModal>
<ZyInfoDetailModal ref="registerZyxxModal" @success="handleSuccess"></ZyInfoDetailModal>
<ZyInfoPfbzModal ref="registerPfbzModal" @success="handleSuccess"></ZyInfoPfbzModal>
<ZyInfoStudentHpOneModal ref="registerOneModal" @success="handleSuccess"></ZyInfoStudentHpOneModal>
</div>
</template>
<script lang="ts" name="zyInfoStudentHp-zyInfoStudentHp" setup>
import { ref, reactive, unref,defineExpose } from 'vue';
import { ref, reactive, unref,defineExpose,onMounted } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, columnsZyhp } from './ZyInfoStudentHp.data';
@ -66,6 +68,7 @@ import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, getHpxxList }
import { downloadFile } from '/@/utils/common/renderUtils';
import ZyInfoStudentHpModal from './components/ZyInfoStudentHpModal.vue';
import ZyInfoDetailModal from '/@/views/zy/zyInfo/components/ZyInfoDetailModal.vue';
import ZyInfoPfbzModal from '/@/views/zy/zyInfo/components/ZyInfoPfbzModal.vue';
import ZyInfoStudentHpOneModal from '/@/views/zy/zyInfoStudentHp/components/ZyInfoStudentHpOneModal.vue';
import { defHttp } from '/@/utils/http/axios';
import { JInput } from '/@/components/Form';
@ -87,6 +90,8 @@ const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const registerZyxxModal = ref();
const registerOneModal = ref();
const registerPfbzModal = ref();
const zyInfo = ref<any>({});
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
@ -142,6 +147,15 @@ function handleAdd() {
registerModal.value.add();
}
function handlePfbz(){
// defHttp.get({ url: '/zyInfo/zyInfo/queryById', params: { id: mainId } }).then((res) => {
// console.log('😒', res);
// registerPfbzModal.value.disableSubmit = true;
// registerPfbzModal.value.edit(res);
// });
registerPfbzModal.value.disableSubmit = true;
registerPfbzModal.value.edit(zyInfo.value);
}
/**
* 编辑事件
*/
@ -186,11 +200,13 @@ function handleSuccess() {
}
function handleZyxxDetail(record: Recordable) {
defHttp.get({ url: '/zyInfo/zyInfo/queryById', params: { id: mainId } }).then((res) => {
console.log('😒', res);
// defHttp.get({ url: '/zyInfo/zyInfo/queryById', params: { id: mainId } }).then((res) => {
// console.log('😒', res);
// registerZyxxModal.value.disableSubmit = true;
// registerZyxxModal.value.edit(res);
// });
registerZyxxModal.value.disableSubmit = true;
registerZyxxModal.value.edit(res);
});
registerZyxxModal.value.edit(zyInfo.value);
}
/**
@ -238,6 +254,18 @@ function getDropDownAction(record) {
];
}
function getZyinfo(){
defHttp.get({ url: '/zyInfo/zyInfo/queryById', params: { id: mainId } }).then((res) => {
zyInfo.value = res;
});
}
onMounted(() => {
getZyinfo();
});
/**
* 查询
*/

View File

@ -1,6 +1,6 @@
<template>
<div>
<div style="width:100%;text-align: right;"><a-button type="primary" @click="handleZyxxDetail" style="margin-left: 8px;;">作业信息</a-button></div>
<div style="width:100%;text-align: right;"><a-button type="primary" @click="handleZyxxDetail" style="margin-right: 8px;;">作业信息</a-button></div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--操作栏-->

View File

@ -1,10 +1,11 @@
<template>
<div>
<!--查询区域-->
<!-- <div class="jeecg-basic-table-form-container"> -->
<div class="jeecg-basic-table-form-container">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="8" :sm="24">
<!-- <a-col :lg="8" :sm="24">
<a-form-item label="作业名称">
<a-input placeholder="请输入作业名称" v-model:value="queryParam.zytitle"></a-input>
</a-form-item>
@ -19,6 +20,12 @@
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" @click="handleZyxxDetail" style="margin-left: 8px;;">作业信息</a-button>
</span>
</a-col> -->
<a-col :span="24" style="text-align: right">
<span style="overflow: hidden" class="table-page-search-submitButtons">
<!-- <a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button> -->
<a-button type="primary" @click="handleZyxxDetail" style="margin-right: 8px;;">作业信息</a-button>
</span>
</a-col>
</a-row>
</a-form>

View File

@ -2,8 +2,7 @@
<div style="background: #fff; margin: 10px 0;padding:10px;">
<div style="width:100%;">
<a-row>
<a-col :span="12" style="text-align: left;"><span style="color:#18a689; cursor: pointer;" @click="handleHpsf">预览互评算法</span></a-col>
<a-col :span="12" style="text-align: right;"><a-button type="primary" @click="handleback">返回</a-button></a-col>
<a-col :span="24" style="text-align: right;"><a-button type="primary" @click="handleback">返回</a-button></a-col>
</a-row>
</div>
<a-tabs v-model:activeKey="activeKey" @change="handleChange">
@ -51,13 +50,6 @@ function handleChange(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 handleback(){
var href = "/stuzy/studentDqzy";
router.push({path:href,query: {rwbh,xqxn,type,teano}});

View File

@ -2,14 +2,13 @@
<a-spin :spinning="confirmLoading">
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row>
<a-col :span="24" v-show="formData.sturead == '1' && formData.pfbz">
<!-- <a-col :span="24" v-show="formData.sturead == '1' && formData.pfbz">
<a-form-item label="评分标准" layout="inline">
<div v-html="formData.pfbz" style="margin-top: 5px"></div>
</a-form-item>
</a-col>
</a-col> -->
<a-col :span="24">
<a-form-item label="评分" v-bind="validateInfos.stuScore">
<div style="width: 100%; padding: 5px 10px; font-size: 14px; color: darkgrey">说明评分范围0-100之间;</div>
<a-input-number
v-model:value="formData.stuScore"
placeholder="请输入评分"
@ -18,6 +17,7 @@
:disabled="disabled"
@change="handleScoreChange"
></a-input-number>
<div style="width: 100%; padding: 5px 10px; font-size: 14px; color: darkgrey">说明评分范围0-100之间;</div>
</a-form-item>
</a-col>
</a-row>