Compare commits

..

4 Commits

Author SHA1 Message Date
yangjun da07058a18 Merge branch 'master' of http://47.115.223.229:8888/yangjun/dbsd_kczx
# Conflicts:
#	src/views/zy/zyInfo/StudentZyInfoList.vue
2024-08-12 09:15:49 +08:00
yangjun 171c2e6aef 修改bug 2024-08-12 09:14:57 +08:00
yangjun de53921ebb Merge branch 'master' of http://47.115.223.229:8888/yangjun/dbsd_kczx 2024-08-09 14:08:31 +08:00
yangjun 60c1035645 修改流程 2024-08-09 14:08:22 +08:00
17 changed files with 2309 additions and 159 deletions

View File

@ -243,6 +243,15 @@ const site: AppRouteModule = {
title: '讨论区',
},
},
{
path: 'studentDjcy',
name: 'studentDjcy',
component: () => import('/@/views/kc/wjxWjxx/components/WjxWjxxTmlbDjV2Form.vue'),
meta: {
// affix: true,
title: '课程测验',
},
},
],
};

View File

@ -74,7 +74,7 @@ const zuoye: AppRouteModule = {
{
path: 'ceshiWenjuan',
name: 'ceshiWenjuan',
component: () => import('/@/views/kc/wjxCswj/WjxCswjMainList.vue'),
component: () => import('/@/views/kc/wjxCswj/WjxCywjV2List.vue'),
meta: {
title: '测试问卷',
},

View File

@ -121,8 +121,11 @@
createMessage.error('答卷时间已过!');
return;
}
WjxWjxxTmlbDjModalPage.value.disableSubmit = false;
WjxWjxxTmlbDjModalPage.value.edit(record,false,"6",'xs');
// WjxWjxxTmlbDjModalPage.value.disableSubmit = false;
// WjxWjxxTmlbDjModalPage.value.edit(record,false,"6",'xs');
// cytitle, cyid, cyatype, sfzd, sfbs
var url ="/site/studentDjcy?cytitle="+record.title+"&cyid="+record.id+"&cyatype=6&sfzd=0&sfbs=xs";
window.open(url,'_blank')
}
/**

File diff suppressed because it is too large Load Diff

View File

@ -12,13 +12,13 @@
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">单选题</div>
<a-card >
<template #title>
<span>{{index+1}}</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"></span>
<span>{{index+1}}</span><span v-html="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"></span>
</template>
<template #extra>
<span style="margin-left: 40px;" v-if="isShow">题目分值 {{item.wjScore}} </span>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="disabled">
<div style="width: 100%" v-for="(tmxx,index) in item.wjxWjxxTmxxList">
<div style="width: 100%" v-for="(tmxx,index) in item.wjxWjxxTmxxList" :key="index">
<a-radio :value="tmxx.itemIndex+``" style="width: 100%;margin-bottom: 5px;">
<span v-html:value="tmxx.itemTitle" style="width:80%;font-size: 16px;"></span>
</a-radio>
@ -31,14 +31,14 @@
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">多选题</div>
<a-card >
<template #title>
<span>{{index+1}}</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
<span>{{index+1}}</span><span v-html="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
</template>
<template #extra>
<span style="margin-left: 40px;" v-if="isShow">题目分值 {{item.wjScore}} </span>
</template>
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="disabled">
<a-row>
<a-col :span="24" v-for="(tmxx,index) in item.wjxWjxxTmxxList">
<a-col :span="24" v-for="(tmxx,index) in item.wjxWjxxTmxxList" :key="index">
<a-checkbox :value="tmxx.itemIndex" style="width: 100%;margin-bottom: 5px;">
<span v-html:value="tmxx.itemTitle" style="width:80%;font-size: 16px;"></span>
</a-checkbox>
@ -52,7 +52,7 @@
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">填空题</div>
<a-card >
<template #title>
<span>{{index+1}}</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
<span>{{index+1}}</span><span v-html="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
</template>
<template #extra>
<span style="margin-left: 40px;" v-if="isShow">题目分值 {{item.wjScore}} </span>

View File

@ -0,0 +1,331 @@
<template>
<div id="siteMain">
<div id="maxSite">
<a-layout>
<!-- 页头 -->
<headerPage />
<!-- 主体部分 -->
<a-layout-content>
<a-spin :spinning="confirmLoading" v-if="showType == 1">
<a-row style="min-height: calc(80vh)">
<a-col :span="24" style="overflow-y: scroll">
<div style="text-align: center; width: 100%; font-weight: bold; font-size: 20px"> {{ title }}</div>
<!-- 题干信息 -->
<div style="width: 100%" v-for="(item, index) in tiganData" :key="index">
<!-- 单选题 -->
<div style="width: 100%" v-if="item.wjType == 3">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px">单选题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word"></span>
</template>
<template #extra>
<span style="margin-left: 40px" v-if="isShow">题目分值 {{ item.wjScore }} </span>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="disabled">
<div style="width: 100%" v-for="(tmxx, index) in item.wjxWjxxTmxxList" :key="index">
<a-radio :value="tmxx.itemIndex + ``" style="width: 100%; margin-bottom: 5px">
<span v-html="tmxx.itemTitle" style="width: 80%; font-size: 16px"></span>
</a-radio>
</div>
</a-radio-group>
</a-card>
</div>
<!-- 多选题 -->
<div style="width: 100%" v-else-if="item.wjType == 4">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px">多选题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
</template>
<template #extra>
<span style="margin-left: 40px" v-if="isShow">题目分值 {{ item.wjScore }} </span>
</template>
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="disabled">
<a-row>
<a-col :span="24" v-for="(tmxx, index) in item.wjxWjxxTmxxList" :key="index">
<a-checkbox :value="tmxx.itemIndex" style="width: 100%; margin-bottom: 5px">
<span v-html="tmxx.itemTitle" style="width: 80%; font-size: 16px"></span>
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</a-card>
</div>
<!-- 多选题 -->
<div style="width: 100%" v-else-if="item.wjType == 5">
<div style="text-align: left; width: 100%; font-weight: bold; font-size: 18px">填空题</div>
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
</template>
<template #extra>
<span style="margin-left: 40px" v-if="isShow">题目分值 {{ item.wjScore }} </span>
</template>
<a-row>
<a-col :span="24">
<a-textarea
placeholder="请填写答案"
v-model:value="item.wjAnswer"
style="width: 100%"
:auto-size="{ minRows: 2, maxRows: 5 }"
:disabled="disabled"
/>
</a-col>
</a-row>
</a-card>
</div>
<div v-else> 无对应类型 </div>
</div>
</a-col>
<a-col :span="24" style="text-align: center">
<a-button type="primary" @click="submitForm">提交</a-button>
</a-col>
</a-row>
</a-spin>
<div v-if="showType == 2" style="width: 100%; text-align: center;min-height: 500px;">
<div style="margin-top: 200px;"
>您已提交了测验请勿重复提交<a-button
type="primary"
@click="
() => {
router.push({ path: '/site/index' });
}
"
>返回</a-button
>
</div>
</div>
<div v-if="showType == 3" style="width: 100%; text-align: center;min-height: 500px;">
<div style="margin-top: 200px;"
>提交成功请返回首页<a-button
type="primary"
@click="
() => {
router.push({ path: '/site/index' });
}
"
>返回</a-button
>
</div>
</div>
<!-- <div v-if="showType == 3" style="width: 100%; text-align: center">
<div style="margin-top: 300px"
>提交成功请返回首页<a-button
type="primary"
@click="
() => {
router.push({ path: '/site/index' });
}
"
>返回</a-button
>
</div>
</div> -->
</a-layout-content>
<!-- 页尾 -->
<footerPage />
</a-layout>
</div>
</div>
</template>
<script lang="ts" name="wjxWjxx-add" setup>
import { ref, nextTick, unref, defineExpose, onMounted } from 'vue';
import { Icon } from '/@/components/Icon';
import { useMessage } from '/@/hooks/web/useMessage';
import { defHttp } from '/@/utils/http/axios';
import { queryWjxWjxxTmxxListByMainId, queryDataById, saveOrUpdate, djtj } from '/@/views/kc/wjxWjxxTmlb/WjxWjxxTmlb.api';
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';
const title = ref<string>('');
const mainId = ref<string>('');
const isShow = ref<boolean>(false);
const disabled = ref<boolean>(false);
const confirmLoading = ref<boolean>(false);
const tiganData = ref<any>([]);
const tmxxPar = ref<any>({});
const showType = ref<number>(1);
// const openTime = ref<string>('');
const { createMessage } = useMessage();
import { useRouter } from 'vue-router';
import { def } from '@vue/shared';
const emit = defineEmits(['ok', 'closeLoading']);
//
const { currentRoute } = useRouter();
const router = useRouter();
const { query } = unref(currentRoute);
const { rwbh, xqxn, type, teano, cytitle, cyid, cyatype, sfzd, sfbs } = query; //
//
function edit(record, isDisabled, type, flag) {
console.log('👨‍👨‍👦', record, isDisabled, type, flag);
// openTime.value = getCurrentTimeFormat();
tiganData.value = [];
disabled.value = isDisabled;
if (type == '6') {
isShow.value = true;
} else if (type == '1') {
isShow.value = false;
}
title.value = record.title;
mainId.value = record.id;
if (flag == 'ls') {
defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId', params: { id: record.id } }).then((res) => {
// console.log(`🚀 ~ defHttp.get ~ res:`, res)
let list = res;
for (let i = 0; i < list.length; i++) {
let par = list[i];
if (disabled.value) {
if (par.wjType == 4) {
let lssj = par.itemSelected.split(',');
const numArray = lssj.map((str) => parseInt(str));
list[i].itemSelected = numArray;
}
}
}
tiganData.value = res;
});
} else {
defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/queryDjByMainId', params: { id: record.id } }).then((res) => {
tiganData.value = res;
});
}
}
//
async function submitForm() {
const data = tiganData.value;
// console.log(`🚀 ~ submitForm ~ data:`, data)
const values = Object.assign([], data);
for (let i = 0; i < values.length; i++) {
let param = values[i];
if (param.wjType == 3 || param.wjType == 4) {
if (param.itemSelected == null) {
emit('closeLoading');
createMessage.warning('有题目没有作答,请检查试卷,完成所有作答!');
return;
}
values[i].itemSelected = param.itemSelected + '';
} else if (param.wjType == 5) {
if (param.wjAnswer == null || param.wjAnswer == '') {
emit('closeLoading');
createMessage.warning('有题目没有作答,请检查试卷,完成所有作答!');
return;
}
}
// values[i].openTime = openTime.value;
}
const isUpdate = false;
console.log('👨‍🚒', values);
showType.value = 3;
//
await djtj(values, isUpdate);
}
function getCurrentTimeFormat() {
const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1;
const day = now.getDate();
const hour = now.getHours();
const minute = now.getMinutes();
const second = now.getSeconds();
return `${year}-${padZero(month)}-${padZero(day)} ${padZero(hour)}:${padZero(minute)}:${padZero(second)}`;
}
function padZero(num) {
return num < 10 ? `0${num}` : `${num}`;
}
//
onMounted(() => {
//
defHttp.get({ url: '/wjxWjxx/wjxWjxx/querySfdtById', params: { id: cyid } }).then((res) => {
console.log('🎅', res);
var num = res.num;
console.log('🧛', num);
if(num && parseInt(num)>0){
showType.value = 2;
}else{
showType.value = 1;
edit({ id: cyid, title: cytitle }, false, cyatype, sfbs);
}
});
});
defineExpose({
edit,
submitForm,
});
</script>
<style lang="less" scoped>
/deep/span.ant-radio + * {
width: 100%;
}
/deep/.ant-checkbox-wrapper {
box-sizing: border-box;
margin: 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;
display: inline-flex;
align-items: baseline;
line-height: unset;
cursor: pointer;
width: 80%;
}
/deep/.ant-checkbox + span {
padding-right: 8px;
padding-left: 8px;
width: 100%;
}
#siteMain {
// font-size: ;
// height: 100%;
background: #f3f3f4;
#maxSite {
//
max-width: 1170px;
//
margin: 0 auto;
.rowGutter {
margin-top: 1rem;
margin-bottom: 1rem;
}
.ant-layout-header {
color: #fff;
background: #1ab394;
}
.ant-layout-footer {
line-height: 1.5;
background: #fff;
}
.ant-layout-sider {
color: #fff;
line-height: 120px;
background: #3ba0e9;
}
.ant-layout-content {
min-height: 120px;
color: #000;
line-height: 120px;
background: #f3f3f4;
}
.dictBox :deep(.ant-select) {
width: 100%;
}
}
}
</style>

View File

@ -89,6 +89,7 @@
fixed:'right'
},
beforeFetch: (params) => {
params.column = '',params.order = '';//
return Object.assign(params, queryParam.value);
},
},

View File

@ -89,6 +89,8 @@
fixed:'right'
},
beforeFetch: (params) => {
params.column = '',params.order = '';//
return Object.assign(params, queryParam.value);
},
},

View File

@ -31,7 +31,7 @@
</a-row>
</div>
</a-card>
<a-card>
<!-- <a-card>
<div>
<span style="float: left; line-height: 30px; font-size: 18px; font-weight: bold">教学大纲</span>
<span style="width: 300px; float: left">
@ -118,7 +118,7 @@
<span style="float: left">往届学生评价</span>
</div>
<studentPjjgTeaList :queryParam="{ pageSize: 3, ...tkzjParam, kcbh: '' }" style="max-height: 106px" />
</a-card>
</a-card> -->
</div>
<div v-if="!showYl">
<div>

View File

@ -15,32 +15,28 @@
</template>
<span @click="getGzt('gonggao')">通知公告</span>
</a-menu-item>
<a-sub-menu key="sub1">
<a-menu-item key="sub1">
<template #icon>
<PieChartOutlined />
<BarChartOutlined />
</template>
<template #title>教学内容</template>
<span @click="getGzt('kcjs')">课程简介</span>
<!-- <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="3" @click="gotoPageByName('jiaoXueDanYuanNeiRong')">教学单元</a-menu-item> -->
</a-menu-item >
<a-menu-item key="sub2">
<template #icon>
<PieChartOutlined />
<SnippetsOutlined />
</template>
<span @click="getGzt('dqzy')">课程作业</span>
</a-menu-item>
<a-menu-item key="sub21">
<template #icon>
<PieChartOutlined />
<AppstoreAddOutlined />
</template>
<span @click="getGzt('kcjc')">测验</span>
<span @click="getGzt('kcjc')">测验</span>
</a-menu-item>
<!-- <a-sub-menu key="sub2">
<template #title>作业/测验</template>
<a-menu-item key="4" @click="getGzt('dqzy')">课程作业</a-menu-item>
<a-menu-item key="5" @click="getGzt('kcjc')">课程测验</a-menu-item>
</a-sub-menu> -->
<a-sub-menu key="sub3">
<!-- <a-sub-menu key="sub3">
<template #icon>
<PieChartOutlined />
</template>
@ -55,26 +51,12 @@
</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">
<span @click="getGzt('dqwj')">问卷调查</span>
</a-menu-item> -->
<!-- <a-sub-menu key="sub3">
<template #title>问卷管理</template>
<a-menu-item key="6" @click="getGzt('dqwj')">当前问卷</a-menu-item>
<a-menu-item key="7">历史问卷</a-menu-item>
</a-sub-menu> -->
<!-- <a-menu-item key="sub5">
<span @click="getGzt('gongju')">教学工具</span>
</a-menu-item> -->
</a-menu-item> -->
</a-menu>
</a-col>
<a-col :lg="0" :xs="24">
@ -128,7 +110,7 @@ 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,PieChartOutlined } from '@ant-design/icons-vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined, MenuUnfoldOutlined,PieChartOutlined,BarChartOutlined,SnippetsOutlined,AppstoreAddOutlined } from '@ant-design/icons-vue';
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';

View File

@ -44,7 +44,7 @@
<div style="margin-top: 5px;">{{index2+1}}{{item.content}}</div>
</a-col>
<a-col :span="2" style="text-align:right">
<a-button type="primary" @click="openKecheng(item)" style="margin-left:10px;"></a-button>
<a-button type="primary" @click="openKecheng(item)" style="margin-left:10px;"></a-button>
</a-col>
</a-row>
</a-col>

View File

@ -15,36 +15,33 @@
</template>
<span @click="getGzt('tzgg')">通知公告</span>
</a-menu-item>
<a-sub-menu key="sub2">
<a-menu-item key="sub2">
<template #icon>
<BarChartOutlined />
</template>
<span @click="getGzt('kcjs')">课程简介</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-sub-menu> -->
<a-menu-item key="sub4">
<template #icon>
<PieChartOutlined />
<SnippetsOutlined />
</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 />
<AppstoreAddOutlined />
</template>
<span @click="getGzt('kcjc')">课程测验</span>
</a-menu-item>
<!-- <a-sub-menu key="sub4">
<template #title>作业/测验</template>
<a-menu-item key="4" @click="getGzt('dqzy')">课程作业</a-menu-item>
<a-menu-item key="5" @click="getGzt('kcjc')">课程测验</a-menu-item>
</a-sub-menu> -->
<a-menu-item key="sub5">
<!-- <a-menu-item key="sub5">
<template #icon>
<PieChartOutlined />
</template>
@ -55,7 +52,7 @@
<PieChartOutlined />
</template>
<span @click="getGzt('tlq')">讨论区</span>
</a-menu-item>
</a-menu-item> -->
</a-menu>
</a-col>
<a-col :lg="0" :xs="{ span: 24 }" style="text-align: right;">
@ -76,21 +73,21 @@
<a-menu-item key="min2">
<span @click="getGzt('kcjs')">课程简介</span>
</a-menu-item>
<a-menu-item key="min3">
<!-- <a-menu-item key="min3">
<span @click="getGzt('stuJiaoXueDanYuanNeiRong')">教学单元</span>
</a-menu-item>
</a-menu-item> -->
<a-menu-item key="min4">
<span @click="getGzt('dqzy')">课程作业</span>
</a-menu-item>
<a-menu-item key="min5">
<span @click="getGzt('kcjc')">课程测验</span>
</a-menu-item>
<a-menu-item key="min6">
<!-- <a-menu-item key="min6">
<span @click="getGzt('dcwj')">问卷调查</span>
</a-menu-item>
<a-menu-item key="min7">
<span @click="getGzt('tlq')">讨论区</span>
</a-menu-item>
</a-menu-item> -->
</a-sub-menu>
</a-menu>
</a-col>
@ -109,7 +106,7 @@
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,PieChartOutlined } from '@ant-design/icons-vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined, MenuUnfoldOutlined,PieChartOutlined,BarChartOutlined,SnippetsOutlined,AppstoreAddOutlined } from '@ant-design/icons-vue';
const maxClassName = ref<any>({});

View File

@ -8,7 +8,7 @@
</a-row>
</div>
</a-card>
<a-card>
<!-- <a-card>
<div>
<span style="float: left;line-height: 30px; font-size: 18px; font-weight: bold;">教学大纲</span>
<span style="width:300px;float: left;margin-top: 3px;">
@ -65,9 +65,9 @@
<span style="float: left;">往届学生评价</span>
</div>
<studentPjjgTeaList :queryParam="{ pageSize: 3, ...tkzjParam,kcbh:'' }" style="max-height: 106px;"/>
</a-card>
<ZyCjwtModal ref="ZyCjwtModalPage" @success="handleCjwtOk" />
<ZyJxdgListModal ref="ZyJxdgListModalPage" />
</a-card> -->
<!-- <ZyCjwtModal ref="ZyCjwtModalPage" @success="handleCjwtOk" />
<ZyJxdgListModal ref="ZyJxdgListModalPage" /> -->
</div>
</template>

View File

@ -33,11 +33,11 @@
<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>
<p>作业得分{{ record.stuscore&&record.scoreFabu=='1' ? record.stuscore : '未评' }}</p>
<p v-if="record.jxfs">互评奖励{{ record.jxfs&&record.scoreFabu=='1' ? record.jxfs : '未评' }}</p>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ record.zzdf&&item.scoreFabu=='1' ? record.zzdf : '未评' }}</span>
<span class="List-row-number">{{ record.zzdf&&record.scoreFabu=='1' ? record.zzdf : '未评' }}</span>
</div>
</a-popover>
</template>
@ -47,16 +47,16 @@
<template #content>
<a-row style="width:350px;">
<a-col :span="12">
<span class="zyCon-word">维普资源库查重</span>{{ getCctype(record, '1') }}
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(record, '0')">维普资源库查重</span>{{ getCctype(record, '1') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">本次作业查重</span>{{ getCctype(record, '2') }}
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(record, '1')">本次作业查重</span>{{ getCctype(record, '2') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">学校作业库查重</span>{{ getCctype(record, '4') }}
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(record, '3')">学校作业库查重</span>{{ getCctype(record, '4') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word">Aigc查重</span>{{ getCctype(record, '3') }}
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(record, '2')">Aigc查重</span>{{ getCctype(record, '3') }}
</a-col>
</a-row>
</template>
@ -173,6 +173,54 @@ function handleDetail(record: Recordable) {
}
function handleOpenCcjg(record, type) {
console.log('🤷', record);
var text = '0';
if (type == '0') {
if (record.wwcc == 'true') {
text = '1';
} else {
text = '0';
}
} else if (type == '1') {
if (record.nwcc == 'true') {
text = '1';
} else {
text = '0';
}
} else if (type == '2') {
if (record.aigccc == 'true') {
text = '1';
} else {
text = '0';
}
} else if (type == '3') {
if (record.xncc == 'true') {
text = '1';
} else {
text = '0';
}
}
if (text == '0') {
createMessage.error('此项不查重,请更换查询');
return;
}
defHttp.get({ url: '/zyCcjg/zyCcjg/getCcjg', params: { zyStuId: record.stuId, ccType: type } }).then((res) => {
console.log('🧙‍♂️', res);
if(res){
var url = res.paperviewurl;
if (url) {
window.open(url, '_blank');
} else {
createMessage.error('当前暂无结果');
}
}else{
createMessage.error('当前暂无结果');
}
});
}
function getCctype(record, type) {
var text = '-';
if (type == '1') {

View File

@ -1,5 +1,5 @@
<template>
<div style="background: #fff; overflow-y: auto; overflow-x: hidden; margin: 10px 5px">
<div style="background: #fff; overflow-y: auto; overflow-x: hidden; margin: 10px 5px">
<!--查询区域-->
<!-- <div class="jeecg-basic-table-form-container">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
@ -28,12 +28,22 @@
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业(本次作业在期末成绩中的占比:{{item.zyzb}}%)</div>
</a-col>
</div>
<a-card style="height:240px; border: 1px solid #eeeeee">
<a-card style="height: 240px; 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" @click="handleDetail(item)"><span class="zytitle-back">{{ item.title }}</span></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="24" class="zytitle" :title="item.title" @click="handleDetail(item)"
><span class="zytitle-back">{{ item.title }}</span></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>
@ -47,42 +57,45 @@
<span class="List-row-number">{{ item.jxfs ? item.jxfs : '未评' }}</span>
<span class="List-row-word">互评奖励</span>
</div> -->
<a-popover title="得分情况">
<template #content>
<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.scoreFabu=='1' ? item.zzdf : '未评' }}</span>
<span class="List-row-word">总分</span>
</div>
</a-popover>
<a-popover title="查重情况">
<template #content>
<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>
<a-popover title="得分情况">
<template #content>
<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.scoreFabu == '1' ? item.zzdf : '未评' }}</span>
<span class="List-row-word">总分</span>
</div>
</a-popover>
<a-popover title="查重情况">
<template #content>
<a-row style="width: 350px">
<a-col :span="12">
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(item, '0')">维普资源库查重</span
>{{ getCctype(item, '1') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(item, '1')">本次作业查重</span
>{{ getCctype(item, '2') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(item, '3')">学校作业库查重</span
>{{ getCctype(item, '4') }}
</a-col>
<a-col :span="12">
<span class="zyCon-word" style="cursor: pointer" @click="handleOpenCcjg(item, '2')">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> -->
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zgccl&&item.zgccl!='0'?item.zgccl:'-' }}</span>
<span class="List-row-word">查重率</span>
</div>
</a-popover>
</template>
<div class="Score-List-row">
<span class="List-row-number">{{ item.zgccl && item.zgccl != '0' ? 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>
@ -96,20 +109,19 @@
<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: left; border-top: 1px solid #f6f6f6; padding-top:10px">
<a-button class="zyCon-button" type="primary" @click="handleDetail(item)">
详情
</a-button>
<a-button class="zyCon-button" type="primary" @click="handleShangchuan(item)" v-if="!item.stuFilePath">
上传
</a-button>
<a-button class="zyCon-button" type="primary" @click="handleDownload(item)" v-if="item.stuFilePath">
下载
</a-button>
<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)==1 || handleSfkshp(item)==2" :disabled="handleSfkshp(item)!=1" :title="handleSfkshp(item)==1?'':'未到互评时间或已过互评时间'">
<a-col :span="24" style="text-align: left; border-top: 1px solid #f6f6f6; padding-top: 10px">
<a-button class="zyCon-button" type="primary" @click="handleDetail(item)"> 详情 </a-button>
<a-button class="zyCon-button" type="primary" @click="handleShangchuan(item)" v-if="!item.stuFilePath"> 上传 </a-button>
<a-button class="zyCon-button" type="primary" @click="handleDownload(item)" v-if="item.stuFilePath"> 下载 </a-button>
<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) == 1 || handleSfkshp(item) == 2"
:disabled="handleSfkshp(item) != 1"
:title="handleSfkshp(item) == 1 ? '' : '未到互评时间或已过互评时间'"
>
互评
</a-button>
</a-col>
@ -118,7 +130,13 @@
</a-col>
<a-col :span="24">
<div v-show="tableData.length > 0">
<a-pagination v-model="current" :total="total" @change="handlePageChange" :pageSize="pageSize" style="text-align: right; margin-top:5px; margin-bottom:10px" />
<a-pagination
v-model="current"
:total="total"
@change="handlePageChange"
:pageSize="pageSize"
style="text-align: right; margin-top: 5px; margin-bottom: 10px"
/>
</div>
<div v-show="tableData.length == 0">
<a-empty />
@ -182,13 +200,14 @@ const wrapperCol = reactive({
sm: { span: 16 },
});
function handleHpfs(record){
function handleHpfs(record) {
var href = '/stuzy/zyhpDetail';
router.push({ path: href, query: { rwbh, xqxn, type, teano, zyStuId: record.stuId, mainId: record.id } });
}
function handleOpenCcjg(record, type) {
var text = "0";
console.log('🤷', record);
var text = '0';
if (type == '0') {
if (record.wwcc == 'true') {
text = '1';
@ -214,17 +233,23 @@ function handleOpenCcjg(record, type) {
text = '0';
}
}
if(text == '0'){
createMessage.error("此项不查重,请更换查询");
if (text == '0') {
createMessage.error('此项不查重,请更换查询');
return;
}
defHttp.get({ url: '/zyCcjg/zyCcjg/getCcjg', params: { zyStuId: record.stuId, ccType: type } }).then((res) => {
console.log('🧙‍♂️', res);
if(res){
var url = res.paperviewurl;
if(url){
if (url) {
window.open(url, '_blank');
} else {
createMessage.error('当前暂无结果');
}
}else{
createMessage.error("当前暂无结果");
createMessage.error('当前暂无结果');
}
});
}
@ -236,9 +261,9 @@ function handleSfkshp(record) {
var nowTime = new Date();
if (record.stuFilePath && sfkshp == '1' && nowTime.getTime() >= xshpkssj.getTime() && nowTime.getTime() <= xshpjssj.getTime()) {
return 1;
}else if(record.stuFilePath && sfkshp == '1'){
return 2
}else{
} else if (record.stuFilePath && sfkshp == '1') {
return 2;
} else {
return 3;
}
}
@ -459,68 +484,76 @@ onMounted(() => {
}
.zyCon {
line-height: 30px;
color: #999;
color: #999;
}
.rotate {
transform: rotate(45deg);
background: linear-gradient(90deg, #93d861, #8ddc53, #35C495);
background: linear-gradient(90deg, #93d861, #8ddc53, #35c495);
color: #fff;
padding:17px 10px 10px 10px;
padding: 17px 10px 10px 10px;
position: relative;
top: -68px;
right: -400px;
text-align: center;
font-size: 12px;
}
.wpopen:hover{
.wpopen:hover {
cursor: pointer;
color:#18a689;
color: #18a689;
}
.zyCon-word{
.zyCon-word {
color: #333;
}
.Score-List{
.Score-List {
display: flex;
padding: 10px 0;
}
.Score-List-row{
.Score-List-row {
display: flex;
width: 50%;
flex-direction:column;
flex-direction: column;
margin-right: 10px;
justify-content: center;
text-align: center;
background: #f7f7f7;
padding: 10px 0;
}
.List-row-number{
font-weight: bold;
.List-row-number {
font-weight: bold;
font-size: 18px;
color: #ffa200;
}
.Score-List-row :hover{
.Score-List-row :hover {
color: #1ab394;
cursor: pointer;
}
.List-row-word{
.List-row-word {
color: #999;
font-size: 12px;
font-size: 12px;
}
.zyCon-button{
.zyCon-button {
margin-right: 10px;
}
.zytitle{
.zytitle {
overflow: hidden; /* 确保超出容器的内容被裁剪 */
white-space: nowrap; /* 确保文本在一行内显示 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
margin-left: -24px;
margin-top:5px;
margin-bottom:8px;
margin-top: 5px;
margin-bottom: 8px;
}
.zytitle-back{
.zytitle-back {
cursor: pointer;
font-size: 16px;
font-weight: 700;
<<<<<<< .mine
text-indent: 20px;
padding: 5px 15px;
border-radius: 0 30px 30px 0;
=======
margin-left:24px;
>>>>>>> .theirs
}
</style>

View File

@ -79,7 +79,7 @@
<a-input v-model:value="zyInfo.title" placeholder="请输入作业题目" :disabled="editDisabled"></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<!-- <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" :disabled="editDisabled">选择</a-button>
@ -87,7 +87,7 @@
</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> -->
<a-col :span="24">
<a-form-item label="作业截止时间" v-bind="validateInfos.endTime">
<a-date-picker
@ -134,7 +134,7 @@
<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" :disabled="editDisabled">温馨提示点击可编辑作业要求</div>
<div @click="handleZyyqShow(1)" class="tishi" v-if="!editDisabled">温馨提示点击可编辑作业要求</div>
<!-- <div @click="handleZyyqShow(1)"><span style="cursor: pointer; color: #18a689">温馨提示点击可编辑作业要求</span></div> -->
</a-form-item>
</a-col>
@ -162,7 +162,7 @@
<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)" :disabled="editDisabled">温馨提示点击可编辑评分标准</div>
<div class="tishi" @click="handlePfbzShow(1)" v-if="!editDisabled">温馨提示点击可编辑评分标准</div>
</a-form-item>
</a-form-item>
</a-col>
@ -367,10 +367,10 @@
</div>
</template>
<template #scoreaction="{ record }">
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu == '1'">
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu == '1' || !record.filePath">
{{ record.score }}
</span>
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu != '1'">
<span style="color: #36b395; cursor: pointer" v-if="record.scoreFabu != '1' && record.filePath">
<a-input v-model:value="record.score" style="width: 90%" @blur="handleChangeScore(record)" />
</span>
</template>

View File

@ -34,6 +34,7 @@
</a-col>
<a-col :span="24" v-if="zyInfo.filePath">
<a-form-item label="参考资料" >
<span>{{ lastString(formData.filePath) }}</span>
<a-button type="primary" style="margin-left: 10px" @click="downLoad(zyInfo.filePath)">下载</a-button>
</a-form-item>
</a-col>
@ -207,6 +208,12 @@ const columnsKhnr = [
},
];
function lastString(record) {
console.log('😓', record);
const parts = record.split('/');
console.log('🧔', parts);
return parts[parts.length - 1];
}
//
function handleKcnr(kcnr) {
if(kcnr){