修改bug

This commit is contained in:
yangjun 2024-08-12 09:14:57 +08:00
parent de53921ebb
commit 171c2e6aef
12 changed files with 1093 additions and 232 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

@ -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')
}
/**

View File

@ -14,6 +14,7 @@
</a-col>
</a-row>
</div>
<div v-if="showType == 1">
<a-row>
<a-col :span="24"><span class="title">课程测验次数设置</span><a-divider /></a-col>
@ -56,11 +57,12 @@
</a-col>
</a-row>
</div>
<div v-if="showType == 2">
<a-spin :spinning="confirmLoading">
<a-row>
<a-col :span="24">
<span class="title">编辑作业</span> - <span class="title2">布置作业设置第{{ zyInfo.sort }}作业内容及要求</span>
<span class="title">编辑测验</span> - <span class="title2">布置测验设置第{{ zyInfo.sort }}测验内容及要求</span>
<a-divider />
</a-col>
<a-col :span="24">
@ -71,7 +73,7 @@
<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="请输入作业题目" :disabled="editDisabled"></a-input>
<a-input v-model:value="zyInfo.title" placeholder="请输入测验题目" :disabled="editDisabled"></a-input>
</a-form-item>
</a-col>
<!-- <a-col :span="24">
@ -99,7 +101,7 @@
<a-popover title="温馨提示">
<template #content>
<p
>填写测验开始时间作业在指定时间进行发布如未填写测验开始时间则布置完成作业后可手动点击发布作业进行作业发布</p
>填写测验开始时间测验在指定时间进行发布如未填写测验开始时间则布置完成测验后可手动点击发布测验进行测验发布</p
>
</template>
<Icon
@ -112,9 +114,9 @@
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="作业截止时间" v-bind="validateInfos.endTime">
<a-form-item label="测验结束时间" v-bind="validateInfos.endTime">
<a-date-picker
placeholder="请选择作业截止时间"
placeholder="请选择测验结束时间"
v-model:value="zyInfo.endTime"
:disabled-date="disabledDate"
:show-time="{ format: 'YYYY-MM-DD HH:mm' }"
@ -128,25 +130,37 @@
<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" style="width: 100%" :disabled="!editDisabled">温馨提示点击可编辑描述</div>
</a-form-item>
</a-col>
</div>
</a-col>
<a-col :span="24">
<a-row style="height: calc(80vh)">
<a-row style="min-height: 100px">
<a-col :span="4" style="padding: 10px">
<a-card title="可选题型" style="height: 300px; border: 1px solid #e8e8e8">
<p><a-button type="primary" preIcon="ant-design:check-circle-outlined" @click="addTigan(3)">单选</a-button></p>
<p><a-button type="primary" preIcon="ant-design:check-square-outlined" @click="addTigan(4)">多选</a-button></p>
<p><a-button type="primary" preIcon="ant-design:check-square-outlined" @click="addTigan(5)">填空</a-button></p>
<p
><a-button type="primary" preIcon="ant-design:check-circle-outlined" @click="addTigan(3)" :disabled="editDisabled"
>单选</a-button
></p
>
<p
><a-button type="primary" preIcon="ant-design:check-square-outlined" @click="addTigan(4)" :disabled="editDisabled"
>多选</a-button
></p
>
<p
><a-button type="primary" preIcon="ant-design:check-square-outlined" @click="addTigan(5)" :disabled="editDisabled"
>填空</a-button
></p
>
</a-card>
<a-card title="引用题库">
<p><a-button type="primary" @click="handleYylx('0')">我的题库</a-button></p>
<p><a-button type="primary" @click="handleYylx('1')">公有题库</a-button></p>
<p><a-button type="primary" @click="handleYylx('0')" :disabled="editDisabled">我的题库</a-button></p>
<p><a-button type="primary" @click="handleYylx('1')" :disabled="editDisabled">公有题库</a-button></p>
</a-card>
</a-col>
<a-col :span="20" style="overflow-y: scroll; height: calc(80vh)">
<a-col :span="20" style="overflow-y: scroll; min-height: 100px">
<draggable @end="end" v-model="tiganData" item-key="id">
<template #item="{ index, element: item }">
<div>
@ -161,27 +175,44 @@
:bordered="false"
:style="{ width: handinpwei(item.wjTitle) }"
:auto-size="{ minRows: 1, maxRows: 5 }"
:disabled="editDisabled"
/>
<span style="color: #c2bfbf">[单选]</span>
</template>
<template #extra>
<a-tooltip placement="topLeft" title="题目分数" v-if="isShow">
<a-select style="width: 120px" v-model:value="item.wjScore" placeholder="请选择分数" v-if="item.wjSfqh == '0'">
<a-select
style="width: 120px"
v-model:value="item.wjScore"
placeholder="请选择分数"
v-if="item.wjSfqh == '0'"
:disabled="editDisabled"
>
<a-select-option value="5">5</a-select-option>
<a-select-option value="4">4</a-select-option>
<a-select-option value="3">3</a-select-option>
<a-select-option value="2">2</a-select-option>
<a-select-option value="1">1</a-select-option>
</a-select>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e">自定义分数</span>
<a-input-number v-model:value="item.wjScore" style="width: 120px" v-if="item.wjSfqh == '1'"></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e">返回</span>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e" :disabled="editDisabled"
>自定义分数</span
>
<a-input-number
v-model:value="item.wjScore"
style="width: 120px"
v-if="item.wjSfqh == '1'"
:disabled="editDisabled"
></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e" :disabled="editDisabled"
>返回</span
>
</a-tooltip>
<a-tooltip placement="topRight" title="删除此题"
><Icon
icon="ant-design:delete-outlined"
style="cursor: pointer; font-size: 20px; margin: 10px"
@click="handleDelTigan(item, index)"
v-if="!editDisabled"
/></a-tooltip>
</template>
<a-row v-if="isShow">
@ -195,6 +226,7 @@
v-model:value="tmxx.itemTitle"
:style="{ width: handinpwei(tmxx.itemTitle) }"
:bordered="false"
:disabled="editDisabled"
/>
<span style="color: #ecb646" v-if="item.itemSelected == tmxx.itemIndex">(正确答案)</span>
<a-tooltip placement="topLeft" title="在下方添加新的选项"
@ -202,12 +234,14 @@
icon="ant-design:plus-circle-outlined"
style="cursor: pointer; margin: 5px; font-size: 20px; color: #1890ff"
@click="handleAddTmxx(tmxx, index, item.wjxWjxxTmxxList)"
v-if="!editDisabled"
/></a-tooltip>
<a-tooltip placement="topLeft" title="删除选项"
><Icon
icon="ant-design:minus-circle-outlined"
style="cursor: pointer; margin: 5px; font-size: 20px; color: #1890ff"
@click="handleRemTmxx(tmxx, index, item.wjxWjxxTmxxList)"
v-if="!editDisabled"
/></a-tooltip>
</a-radio>
</div>
@ -225,33 +259,50 @@
:bordered="false"
:style="{ width: handinpwei(item.wjTitle) }"
:auto-size="{ minRows: 1, maxRows: 5 }"
:disabled="editDisabled"
/>
<span style="color: #c2bfbf">[多选]</span>
</template>
<template #extra>
<a-tooltip placement="topLeft" title="题目分数" v-if="isShow">
<a-select style="width: 120px" v-model:value="item.wjScore" placeholder="请选择分数" v-if="item.wjSfqh == '0'">
<a-select
style="width: 120px"
v-model:value="item.wjScore"
placeholder="请选择分数"
v-if="item.wjSfqh == '0'"
:disabled="editDisabled"
>
<a-select-option value="5">5</a-select-option>
<a-select-option value="4">4</a-select-option>
<a-select-option value="3">3</a-select-option>
<a-select-option value="2">2</a-select-option>
<a-select-option value="1">1</a-select-option>
</a-select>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e">自定义分数</span>
<a-input-number v-model:value="item.wjScore" style="width: 120px" v-if="item.wjSfqh == '1'"></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e">返回</span>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e" :disabled="editDisabled"
>自定义分数</span
>
<a-input-number
v-model:value="item.wjScore"
style="width: 120px"
v-if="item.wjSfqh == '1'"
:disabled="editDisabled"
></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e" :disabled="editDisabled"
>返回</span
>
</a-tooltip>
<a-tooltip placement="topRight" title="删除此题"
><Icon
icon="ant-design:delete-outlined"
style="cursor: pointer; font-size: 20px; margin: 10px"
@click="handleDelTigan(item, index)"
v-if="!editDisabled"
/></a-tooltip>
</template>
<a-row v-if="isShow">
<a-col :span="24" style="color: darkgrey; font-size: 13px"> 选中即为正确答案 </a-col>
</a-row>
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" :disabled="!isShow">
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" :disabled="!isShow" @change="handleChecked">
<a-row>
<a-col :span="24" v-for="(tmxx, index) in item.wjxWjxxTmxxList" :key="index">
<!-- -{{item.itemSelected}}-{{tmxx.itemIndex}} -->
@ -261,6 +312,7 @@
v-model:value="tmxx.itemTitle"
:bordered="false"
:style="{ width: handinpwei(tmxx.itemTitle) }"
:disabled="editDisabled"
/></a-checkbox>
<span style="color: #ecb646" v-if="cheGrp(item.itemSelected, tmxx.itemIndex)">(正确答案)</span>
<a-tooltip placement="topLeft" title="在下方添加新的选项"
@ -268,12 +320,14 @@
icon="ant-design:plus-circle-outlined"
style="cursor: pointer; margin: 5px; font-size: 20px; color: #1890ff"
@click="handleAddTmxx(tmxx, index, item.wjxWjxxTmxxList)"
v-if="!editDisabled"
/></a-tooltip>
<a-tooltip placement="topLeft" title="删除选项"
><Icon
icon="ant-design:minus-circle-outlined"
style="cursor: pointer; margin: 5px; font-size: 20px; color: #1890ff"
@click="handleRemTmxx(tmxx, index, item.wjxWjxxTmxxList)"
v-if="!editDisabled"
/></a-tooltip>
</a-col>
</a-row>
@ -291,27 +345,44 @@
:bordered="false"
:style="{ width: handinpwei(item.wjTitle) }"
:auto-size="{ minRows: 1, maxRows: 5 }"
:disabled="editDisabled"
/>
<span style="color: #c2bfbf">[填空]</span>
</template>
<template #extra>
<a-tooltip placement="topLeft" title="题目分数" v-if="isShow">
<a-select style="width: 120px" v-model:value="item.wjScore" placeholder="请选择分数" v-if="item.wjSfqh == '0'">
<a-select
style="width: 120px"
v-model:value="item.wjScore"
placeholder="请选择分数"
v-if="item.wjSfqh == '0'"
:disabled="editDisabled"
>
<a-select-option value="5">5</a-select-option>
<a-select-option value="4">4</a-select-option>
<a-select-option value="3">3</a-select-option>
<a-select-option value="2">2</a-select-option>
<a-select-option value="1">1</a-select-option>
</a-select>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e">自定义分数</span>
<a-input-number v-model:value="item.wjScore" style="width: 120px" v-if="item.wjSfqh == '1'"></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e">返回</span>
<span v-if="item.wjSfqh == '0'" @click="handleQiehuan(item, '1')" style="color: #9e9e9e" :disabled="editDisabled"
>自定义分数</span
>
<a-input-number
v-model:value="item.wjScore"
style="width: 120px"
v-if="item.wjSfqh == '1'"
:disabled="editDisabled"
></a-input-number>
<span v-if="item.wjSfqh == '1'" @click="handleQiehuan(item, '0')" style="color: #9e9e9e" :disabled="editDisabled"
>返回</span
>
</a-tooltip>
<a-tooltip placement="topRight" title="删除此题"
><Icon
icon="ant-design:delete-outlined"
style="cursor: pointer; font-size: 20px; margin: 10px"
@click="handleDelTigan(item, index)"
v-if="!editDisabled"
/></a-tooltip>
</template>
<a-row v-if="isShow">
@ -322,6 +393,7 @@
:bordered="false"
style="width: 100%"
:auto-size="{ minRows: 1, maxRows: 5 }"
:disabled="editDisabled"
/>
</a-col>
</a-row>
@ -339,7 +411,7 @@
</a-col>
<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="submitForm" v-if="!editDisabled">保存</a-button>
<a-button type="primary" @click="reloadZy" style="margin-left: 15px">返回</a-button>
</a-col>
</a-row>
@ -349,6 +421,105 @@
</a-spin>
</div>
<div v-if="showType == 3">
<a-row>
<a-col :span="24">
<a-row>
<a-col :span="20">
<span class="title">统计分析</span>
</a-col>
<a-col :span="4" style="text-align: right">
<a-button class="buttonClass" @click="reloadZy"><Icon icon="ant-design:export-outlined" />返回</a-button>
</a-col>
</a-row>
<a-divider />
</a-col>
<a-col :span="24">
<a-row>
<a-col :span="12" class="tjfx-col"> 测验名称{{ zyInfo.title }} </a-col>
<a-col :span="12" class="tjfx-col">
测验时间{{ dayjs(zyInfo.startTime).format('MM.DD HH:mm') }} ~ {{ dayjs(zyInfo.endTime).format('MM.DD HH:mm') }}
</a-col>
<a-col :span="8" class="tjfx-col"> 总人数{{ zyInfo.xkrs }} </a-col>
<a-col :span="8" class="tjfx-col"> 已完成人数{{ zyInfo.ywcrs }} </a-col>
<a-col :span="8" class="tjfx-col"> 未完成人数{{ zyInfo.wwcrs }} </a-col>
<a-col :span="24">
<div class="region-title">基本信息</div>
</a-col>
<a-col :span="24" v-for="(item, index) in tiganData" :key="index">
<div style="width: 100%">
<!-- 单选题 -->
<div style="width: 100%" v-if="item.wjType == 3">
<!-- <span style="text-align: left;width: 50%;font-weight: bold;font-size: 18px;padding: 20px;">单选题</span> -->
<!-- <span class="tjfx-zql">正确率15%</span> -->
<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 v-if="zyInfo.atype == 6">
<span style="margin-left: 40px">[单选题]</span>
<span style="margin-left: 40px">题目分值 {{ item.wjScore }} </span>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<div style="width: 100%" v-for="(tmxx, index2) in item.wjxWjxxTmxxList" :key="index2">
<a-radio :value="tmxx.itemIndex + ``" style="width: 100%; margin-bottom: 5px">
<span v-html="tmxx.itemTitle" style="width: 80%; font-size: 16px; color: #000"></span>
<span v-if="tmxx.itemSelected == 'true'" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(正确答案)</span>
<span class="tjfx-xzrs">选择人数{{ tmxx.num }}</span>
</a-radio>
</div>
</a-radio-group>
</a-card>
</div>
<!-- 多选题 -->
<div style="width: 100%" v-else-if="item.wjType == 4">
<!-- <span style="text-align: left;width: 50%;font-weight: bold;font-size: 18px;padding: 20px;">多选题</span> -->
<!-- <span class="tjfx-zql">正确率15%</span> -->
<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 v-if="zyInfo.atype == 6">
<span style="margin-left: 40px">[多选题]</span>
<span style="margin-left: 40px">题目分值 {{ item.wjScore }} </span>
</template>
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<a-row>
<a-col :span="24" v-for="(tmxx, index2) in item.wjxWjxxTmxxList" :key="index2">
<a-checkbox :value="tmxx.itemIndex" style="width: 100%; margin-bottom: 5px">
<span v-html="tmxx.itemTitle" style="width: 80%; font-size: 16px; color: #000"></span>
<span v-if="tmxx.itemSelected == 'true'" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(正确答案)</span>
<span class="tjfx-xzrs">选择人数{{ tmxx.num }}</span>
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</a-card>
</div>
<!-- 填空题 -->
<div style="width: 100%" v-else-if="item.wjType == 5">
<!-- <span style="text-align: left;width: 50%;font-weight: bold;font-size: 18px;padding: 20px;">填空题</span> -->
<!-- <span class="tjfx-zql">正确率15%</span> -->
<a-card>
<template #title>
<span>{{ index + 1 }}</span><span v-html="item.wjTitle" style="white-space: pre-wrap; word-wrap: break-word" />
<span v-if="item.wjAnswer" style="color: #9e9e9e; margin-left: 30px; font-size: 12px">(正确答案:{{ item.wjAnswer }})</span>
<span class="tjfx-xzrs" style="color: #9e9e9e">选择人数{{ item.num }}</span>
</template>
<template #extra v-if="zyInfo.atype == 6">
<span style="margin-left: 40px">[填空题]</span>
<span style="margin-left: 40px">题目分值 {{ item.wjScore }} </span>
</template>
</a-card>
</div>
<div v-else> 无对应类型 </div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
<div v-if="showType == 999">
<a-row>
<a-col :span="24"><span class="title">布置测验</span><a-divider /></a-col>
@ -360,84 +531,213 @@
<a-col :span="24">
<a-row style="padding: 10px">
<a-col :lg="24" v-for="(item, index) in tableData" style="padding: 0 5px 5px 5px" :key="index">
<a-card
:title="'11第' + item.sort + '次测验(占比' + item.score + '%)'"
v-if="!item.endTime"
class="cardClass"
bodyStyle="background: #fff;"
>
<!-- :title="'11第' + item.sort + '次测验(占比' + item.score + '%)'" -->
<!-- class="cardClass" -->
<a-card v-if="!item.endTime" bodyStyle="background: #fff;">
<template #title>{{item.sort}}次测验暂未设置测验信息 </template>
<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">
<a @click="handleEdit(item, false)">设置测验内容及要求</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
</div>
<!-- <p class="sznrClass">尚未布置测验题目及具体要求</p> -->
<a-row>
<a-col :span="12">
<span style="margin-left: 10px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent> <Icon icon="ant-design:setting-outlined" />设计测验 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, false)">设置测验</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, false)">修改题目</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, true)">测验详情</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />发送问卷 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">链接&二维码</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />测验结果 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">测验结果</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">统计分析</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
</a-col>
<a-col :span="12">
<div style="text-align: right">
<a @click="handleEdit(item, false)">设置测验内容及要求</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
</div>
</a-col>
</a-row>
</a-card>
<a-card
:title="'12第' + item.sort + '次测验(占比' + item.score + '%)'"
v-if="item.endTime && item.qpublish == '1'"
class="cardClass"
bodyStyle="background: #fff;"
>
<template #extra
><span style="color: #02aa56; font-weight: bold"><Icon icon="ant-design:check-outlined" />已发布</span>
<a-card v-if="item.endTime && item.qpublish == '1'" bodyStyle="background: #fff;">
<template #title>
<span>{{item.sort}}次测验{{ item.title }}</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.xkrs }}人选课</a>
</div>
<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="handleDjjgs(item, '0')"
><span>{{ item.wwcrs }}</span><span>待提交</span></div
>
<div class="data-suggest zuanqu" @click="handleDjjgs(item, '1')"
><span>{{ item.ywcrs }}</span><span>已提交</span></div
>
</div>
<div style="text-align: right; margin-top: 10px; margin-bottom: -10px; width: 100%">
<!-- <a @click="handleEdit(item, true)" v-if="item.ytjnum > 0">编辑测验</a>
<a @click="handleChehui(item)" v-if="item.ytjnum == 0">撤回测验</a>
<a-divider type="vertical" />
<a @click="handleZyxx(item, '')">批阅测验</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)" v-if="item.ytjnum == '0'">删除</a> -->
</div>
<template #extra>
<span>ID:{{ item.id }}</span>
<span style="margin-left: 10px; color: #02aa56; font-weight: bold"><Icon icon="ant-design:check-outlined" />已发布</span>
<span style="margin-left: 10px">{{ dayjs(item.endTime).format('MM.DD HH:mm') }}</span>
</template>
<a-row>
<a-col :span="12">
<span style="margin-left: 10px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent> <Icon icon="ant-design:setting-outlined" />设计测验 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">设置测验</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">修改题目</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">测验详情</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />发送问卷 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;">链接&二维码</a>
<!-- <QrCode :value="qrCodeUrl" class="enter-x flex justify-center xl:justify-start" :width="280" /> -->
<QrCode :value="goewm(item)" class="enter-x flex justify-center xl:justify-start" :width="280" />
<span
>链接<a-input :value="goewm(item)" disabled style="width: 200px"></a-input>
<a-button @click="copyToClipboard(item)">复制</a-button>
</span>
<!-- -->
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />测验结果 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" @click="handleDjjgs(item, '')">测验结果</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleTjfx(item)">统计分析</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
</a-col>
<a-col :span="12">
<div style="text-align: right">
<a @click="handleEdit(item, true)" v-if="item.ytjnum > 0">编辑测验</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)" v-if="item.ytjnum == '0'">删除</a>
</div>
</a-col>
</a-row>
</a-card>
<a-card
:title="'13第' + item.sort + '次测验(占比' + item.score + '%)'"
v-if="item.endTime && item.qpublish == '0'"
class="cardClass"
bodyStyle="background: #fff;"
>
<template #extra
><span style="color: #ff8710; font-weight: bold"><Icon icon="ant-design:send-outlined" />待发布</span>
<a-card v-if="item.endTime && item.qpublish == '0'" bodyStyle="background: #fff;">
<template #title>
<span>{{item.sort}}次测验{{ item.title }}</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 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">
<a @click="handleEdit(item, false)">编辑测验</a>
<a-divider type="vertical" />
<a @click="handleFabu(item)">发布测验</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
</div>
<template #extra>
<span>ID:{{ item.id }}</span>
<span style="margin-left: 10px; color: #ff8710; font-weight: bold"><Icon icon="ant-design:send-outlined" />待发布</span>
<span style="margin-left: 10px">{{ dayjs(item.endTime).format('MM.DD HH:mm') }}</span>
</template>
<a-row>
<a-col :span="12">
<span style="margin-left: 10px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />设计测验 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, false)">设置测验</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, false)">修改题目</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleEdit(item, true)">测验详情</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />发送问卷 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">链接&二维码</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
<span style="margin-left: 30px">
<a-dropdown>
<a class="ant-dropdown-link" @click.prevent><Icon icon="ant-design:setting-outlined" />测验结果 </a>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">测验结果</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" disabled style="color: #9e9e9e">统计分析</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
</a-col>
<a-col :span="12">
<div style="text-align: right">
<a @click="handleEdit(item, false)">编辑测验</a>
<a-divider type="vertical" />
<a @click="handleFabu(item)">发布测验</a>
<a-divider type="vertical" />
<a @click="handleDelete(item)">删除</a>
</div>
</a-col>
</a-row>
</a-card>
</a-col>
</a-row>
@ -466,12 +766,17 @@ import { getValueType } from '/@/utils';
import JEditor from '/@/components/Form/src/jeecg/components/JEditor.vue';
import { useUserStore } from '/@/store/modules/user';
import draggable from 'vuedraggable';
import { QrCode } from '/@/components/Qrcode/index';
import { useGlobSetting } from '/@/hooks/setting';
import WjxWjxxTmlbDjjgsModal from '/@/views/kc/wjxWjxx/components/WjxWjxxTmlbDjjgsModal.vue';
import XxhbbksListModal from '/@/views/kc/xxhbbks/XxhbbksListModal.vue';
import KcTeachingUnitContentOneListModal from '/@/views/zy/zyInfo/zyCheckZcjc/KcTeachingUnitContentOneListModal.vue';
import YinyongTikuListModal from '/@/views/kc/wjxWjxxTmlb/YinyongTikuListModal.vue';
import YinyongTikuDcListModal from '/@/views/kc/wjxWjxxTmlb/YinyongTikuDcListModal.vue';
import { create } from 'sortablejs';
const globSetting = useGlobSetting();
//
const { currentRoute } = useRouter();
@ -505,15 +810,16 @@ const tiganData = ref<any>([]);
const isShow = ref<boolean>(false);
const mainId = ref<string>('');
const wjLeixing = ref<string>('6');
const qrCodeUrl = ref<string>('');
//
//
const disabledDate = (current: Dayjs) => {
return current && current < dayjs().subtract(1, 'days').endOf('day');
};
//
const validatorRules = {
title: [{ required: true, message: '请输入作业名称!' }],
title: [{ required: true, message: '请输入测验名称!' }],
endTime: [{ required: true, message: '请输入结束时间!' }],
};
const { resetFields, validate, validateInfos } = useForm(zyInfo, validatorRules, { immediate: true });
@ -544,6 +850,41 @@ const wrapperCol4 = reactive({
sm: { span: 12 },
});
//
function handleTjfx(record) {
console.log('🥺', record);
zyInfo.value = record;
defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/getTmxxPeop', params: { id: record.id } }).then((res) => {
tiganData.value = res;
});
handleShowType(3);
}
function handleChecked(record) {
console.log('👙', record);
record = record + '';
console.log('🙃', record);
}
function goewm(record) {
var baseUrl = window.location.origin;
var url = baseUrl + '/site/studentDjcy?cytitle=' + record.title + '&cyid=' + record.id + '&cyatype=' + record.atype + '&sfzd=0&sfbs=xs';
return url;
}
async function copyToClipboard(record) {
try {
var baseUrl = window.location.origin;
var url = baseUrl + '/site/studentDjcy?cytitle=' + record.title + '&cyid=' + record.id + '&cyatype=' + record.atype + '&sfzd=0&sfbs=xs';
await navigator.clipboard.writeText(url);
createMessage.success('内容已复制到剪贴板');
console.log('内容已复制到剪贴板');
} catch (err) {
console.error('复制到剪贴板失败:', err);
}
}
//
function handleQiehuan(record, type) {
console.log(`🚀 ~ handleQiehuan ~ type:`, type);
@ -663,6 +1004,7 @@ function handleAddTmxx(record, index, list) {
list.push({ itemTitle: null, itemIndex: parseInt(itemIndex) + 1 });
}
//
function handleRemTmxx(record, index, list) {
if (list.length <= 2) {
@ -671,11 +1013,13 @@ function handleRemTmxx(record, index, list) {
list.splice(index, 1);
}
}
//
function handleDelTigan(record, index) {
tiganData.value.splice(index, 1);
}
//
function handinpwei(value) {
if (!value) {
return '20rem';
@ -689,6 +1033,7 @@ function handinpwei(value) {
}
}
}
//
function addTigan(type) {
console.log('😸', type);
@ -715,10 +1060,12 @@ function addTigan(type) {
{ itemTitle: null, itemIndex: '2' },
],
};
console.log('💇‍♀️', params);
list.push(params);
console.log('👩‍🔬', list);
tiganData.value = [...list];
} else if (type == 4) {
let chk= '';
let chk = '';
if (isShow.value) {
chk = '1,2';
}
@ -795,7 +1142,7 @@ function handleFabu(record: Recordable) {
okText: '确认',
cancelText: '取消',
onOk: () => {
defHttp.get({ url: '/wjxWjxx/wjxWjxx/fbwj', params: { id: record.id, wjlx: wjLeixing } }).then((res) => {
defHttp.get({ url: '/wjxWjxx/wjxWjxx/fbwj', params: { id: record.id, wjlx: wjLeixing.value } }).then((res) => {
reloadZy();
});
},
@ -815,7 +1162,7 @@ function handleZycs() {
rwbh: rwbh,
xqxn: xqxn,
createBy: teano,
atype: wjLeixing,
atype: wjLeixing.value,
});
}
} else if (changeZycs < dataList.length) {
@ -971,13 +1318,79 @@ async function submitForm() {
var endTimestamp = Date.parse(endTime);
var startTimestamp = Date.parse(startTime);
if (endTimestamp < startTimestamp) {
createMessage.warning('作业发布时间不能大于作业截止时间!');
createMessage.warning('测验发布时间不能大于测验结束时间!');
confirmLoading.value = false;
return;
}
}
const data = tiganData.value;
const values = Object.assign([], data);
if(values.length>0){
var sfjx = "1";
for(let i=0;i<values.length;i++){
let param = values[i];
values[i].itemSelected = param.itemSelected+"";
if(!param.wjTitle){
createMessage.error('请填写题目信息');
sfjx = "0";
confirmLoading.value = false;
return;
}
if(isShow.value){
if(!param.wjScore){
createMessage.error('请填写题目分数');
sfjx = "0";
confirmLoading.value = false;
return;
}
}
var wjType = param.wjType;
if(wjType != 5){
var itemlist = param.wjxWjxxTmxxList;
for(let j=0;j < itemlist.length; j++){
if(!itemlist[j].itemTitle){
createMessage.error('请填写选项信息');
sfjx = "0";
confirmLoading.value = false;
return;
}
}
if(isShow.value){
var zqda = values[i].itemSelected;
if(!zqda||zqda=='NaN'||zqda=='undefined'){
createMessage.error('请选择正确答案');
sfjx = "0";
confirmLoading.value = false;
return;
}
}
}else{
if(isShow.value){
var wjAnswer = values[i].wjAnswer;
if(!wjAnswer||wjAnswer=='NaN'||wjAnswer=='undefined'){
createMessage.error('请选择正确答案');
sfjx = "0";
confirmLoading.value = false;
return;
}
}
}
}
if(sfjx=='0'){
return;
}
}else{
createMessage.error('至少创建一个试题');
}
model.list = values;
console.log('😨', model);
confirmLoading.value = false;
@ -999,6 +1412,7 @@ async function submitForm() {
* 编辑事件
*/
function handleEdit(record, type) {
console.log('🤲', record);
if (!type) {
isShow.value = true;
} else {
@ -1020,16 +1434,14 @@ function handleEdit(record, type) {
zyInfo.value = record;
dataKhnr.value = [];
mainId.value = record.id;
var kcnr = zyInfo.value.kcnr;
if (kcnr) {
defHttp.get({ url: '/teachingunitcontent/kcTeachingUnitContentOne/getAllList', params: { id: kcnr } }).then((res) => {
dataKhnr.value = res;
});
}
defHttp.get({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId', params: { id: record.id } }).then((res) => {
tiganData.value = res;
});
handleShowType(2);
}
//
//
function handleZyyqShow(type) {
console.log('👯', type);
if (type == 1) {
@ -1045,7 +1457,7 @@ function reloadZy() {
queryParamZy.value.pageSize = pageSize.value;
queryParamZy.value.rwbh = rwbh;
queryParamZy.value.xqxn = xqxn;
queryParamZy.value.atype = wjLeixing;
queryParamZy.value.atype = wjLeixing.value;
defHttp.get({ url: '/wjxWjxx/wjxWjxx/list', params: queryParamZy.value }).then((res) => {
total.value = res.total;
pageNo.value = res.pages;
@ -1067,7 +1479,7 @@ async function handleDelete(record) {
createConfirm({
iconType: 'warning',
title: '删除',
content: '您已经对作业的内容和要求进行了设置,如果继续删除,内容和要求将一并删除,确认进行删除吗?',
content: '您已经对测验的内容和要求进行了设置,如果继续删除,内容和要求将一并删除,确认进行删除吗?',
okText: '确认',
cancelText: '取消',
onOk: () => {
@ -1078,9 +1490,10 @@ async function handleDelete(record) {
deleteOne({ id: record.id }, reloadZy);
}
}
//
function handleAddOne() {
defHttp.post({ url: '/wjxWjxx/wjxWjxx/addOne', params: { rwbh, xqxn, atype: wjLeixing } }).then((res) => {
defHttp.post({ url: '/wjxWjxx/wjxWjxx/addOne', params: { rwbh, xqxn, atype: wjLeixing.value } }).then((res) => {
reloadZy();
});
}
@ -1115,6 +1528,7 @@ function handleCheckZcjcSuccess(record) {
dataKhnr.value = [];
}
}
/**
* 学生答卷列表
*/
@ -1122,6 +1536,7 @@ function handleDjjgs(record: Recordable, flag) {
WjxWjxxTmlbDjjgsModalPage.value.disableSubmit = true;
WjxWjxxTmlbDjjgsModalPage.value.edit(record, flag);
}
/**
* 获取选课人数
*/
@ -1296,4 +1711,27 @@ onMounted(() => {
border-left: 5px solid #029c88;
margin-bottom: 20px;
}
.tjfx-col {
font-size: 16px;
padding: 8px 20px;
line-height: 25px;
}
.tjfx-title {
width: 90%;
float: left;
}
.tjfx-type {
width: 10%;
float: left;
}
.tjfx-xzrs {
margin-left: 30px;
font-size: 12px;
}
.tjfx-zql {
text-align: right;
width: 50%;
font-size: 16px;
padding: 20px;
}
</style>

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

@ -17,7 +17,7 @@
</a-menu-item>
<a-menu-item key="sub1">
<template #icon>
<PieChartOutlined />
<BarChartOutlined />
</template>
<span @click="getGzt('kcjs')">课程简介</span>
<!-- <template #title>教学内容</template>
@ -26,13 +26,13 @@
</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>
</a-menu-item>
@ -110,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

@ -17,7 +17,7 @@
</a-menu-item>
<a-menu-item key="sub2">
<template #icon>
<PieChartOutlined />
<BarChartOutlined />
</template>
<span @click="getGzt('kcjs')">课程简介</span>
</a-menu-item>
@ -31,13 +31,13 @@
</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="sub7">
<template #icon>
<PieChartOutlined />
<AppstoreAddOutlined />
</template>
<span @click="getGzt('kcjc')">课程测验</span>
</a-menu-item>
@ -73,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>
@ -106,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

@ -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">
@ -21,19 +21,29 @@
</a-form>
</div> -->
<a-row>
<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: #e6f8f4">
<a-col :span="24" style="height:40px; line-height:40px; padding-left:15px; color:#333; overflow: hidden;" >
<!-- <div style="font-size: 18px;font-weight: bold;" class="ellipsis">{{item.title}}</div> -->
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业(本次作业在期末成绩中的占比:{{item.zyzb}}%)</div>
</a-col>
<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: #e6f8f4">
<a-col :span="24" style="height: 40px; line-height: 40px; padding-left: 15px; color: #333; overflow: hidden">
<!-- <div style="font-size: 18px;font-weight: bold;" class="ellipsis">{{item.title}}</div> -->
<div style="font-size: 18px; font-weight: bold">{{ item.sort }}次作业(本次作业在期末成绩中的占比:{{ 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,71 +484,71 @@ 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 {
background: linear-gradient(90deg, #cdf0e9, #edfaf7);
cursor: pointer;
font-size: 16px;
font-weight: 700;
text-indent:20px;
text-indent: 20px;
padding: 5px 15px;
border-radius:0 30px 30px 0;
border-radius: 0 30px 30px 0;
}
</style>

View File

@ -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

@ -32,6 +32,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>
@ -195,6 +196,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){