mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-18 23:36:46 +08:00
-- fix 开课选择评估和考试
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
<button class="xkbtn" @click="goResearchmanage">新建评估</button>
|
<button class="xkbtn" style="margin:0" @click="goResearchmanage">新建评估</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main_notice" style="display: none">
|
<div class="main_notice" style="display: none">
|
||||||
|
|||||||
@@ -1,261 +1,89 @@
|
|||||||
<!-- 评估列表 -->
|
|
||||||
<template>
|
<template>
|
||||||
<a-drawer
|
<div @click="openDrawer">
|
||||||
:visible="assessmentVisible"
|
<slot></slot>
|
||||||
class="drawerStyle addinvistDrawer"
|
</div>
|
||||||
width="70%"
|
<a-drawer :visible="visible" class="drawerStyle addinvistDrawer" width="900px" title="添加评估" placement="right">
|
||||||
title="添加评估"
|
|
||||||
placement="right"
|
|
||||||
@after-visible-change="afterVisibleChange"
|
|
||||||
>
|
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div v-if="edit" class="headerTitle">编辑评估</div>
|
<div class="headerTitle">{{assessmentId?'编辑评估':'添加评估'}}</div>
|
||||||
<div v-else class="headerTitle">添加评估</div>
|
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
|
||||||
<img
|
@click="closeDrawer"/>
|
||||||
style="width: 29px; height: 29px; cursor: pointer"
|
|
||||||
src="../../assets/images/basicinfo/close.png"
|
|
||||||
@click="closeDrawer"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="contentMain">
|
<div class="contentMain">
|
||||||
|
<div class="main">
|
||||||
<div class="main_left">
|
<div class="main_left">
|
||||||
<div class="main_item">
|
<AssessmentAll v-model:id="formData.assessmentId" v-model:name="formData.assessmentName"/>
|
||||||
<div class="fi_input">
|
|
||||||
<a-input
|
|
||||||
v-model:value="inputV1"
|
|
||||||
style="width: 424px; height: 40px; border-radius: 8px;"
|
|
||||||
placeholder="请输入评估名称"
|
|
||||||
maxlength="20"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="btns" @click="getAllInvistText">
|
|
||||||
<div class="search"></div>
|
|
||||||
<div class="btnText">搜索</div>
|
|
||||||
</div>
|
|
||||||
<div class="btnsn" @click="resetInvist">
|
|
||||||
<div class="search"></div>
|
|
||||||
<div class="btnText">重置</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="main_table">
|
|
||||||
<a-table
|
|
||||||
style="border: 1px solid #f2f6fe"
|
|
||||||
:columns="tableDataFunc()"
|
|
||||||
:data-source="tableData"
|
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
|
||||||
expandRowByClick="true"
|
|
||||||
@expand="expandTable"
|
|
||||||
:pagination="false"
|
|
||||||
:row-selection="rowSelection"
|
|
||||||
filterMultiple:false
|
|
||||||
/>
|
|
||||||
<div class="tableBox" style="margin-top:85px;">
|
|
||||||
<div class="pa">
|
|
||||||
<a-pagination
|
|
||||||
:showSizeChanger="false"
|
|
||||||
showQuickJumper="true"
|
|
||||||
hideOnSinglePage="true"
|
|
||||||
:pageSize="pageSize"
|
|
||||||
:current="currentPage"
|
|
||||||
:total="tableDataTotal"
|
|
||||||
class="pagination"
|
|
||||||
@change="handelChangePage"
|
|
||||||
/>
|
|
||||||
</div></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_btns">
|
<div class="main_btns">
|
||||||
<button class="btn1" @click="closeDrawer">取消</button>
|
<button class="btn1" @click="closeDrawer">取消</button>
|
||||||
<button class="btn2" @click="submitCheck">确定</button>
|
<button class="btn2" @click="confirm">确定</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import { reactive, toRefs } from "vue";
|
import {defineEmits, defineProps, ref, watch} from "vue";
|
||||||
import * as api from "../../api/indexInvist.js";
|
import {Form, message} from "ant-design-vue";
|
||||||
import dayjs from "dayjs";
|
import AssessmentAll from "@/components/drawers/AssessmentAll.vue";
|
||||||
export default {
|
|
||||||
name: "AssessmentList",
|
const props = defineProps({
|
||||||
// components: {
|
assessmentId: String,
|
||||||
// },
|
assessmentName: String,
|
||||||
props: {
|
})
|
||||||
assessmentVisible: {
|
const visible = ref(false)
|
||||||
type: Boolean,
|
const formData = ref({
|
||||||
default: false,
|
assessmentId: '',
|
||||||
|
assessmentName: '',
|
||||||
|
})
|
||||||
|
const emit = defineEmits({})
|
||||||
|
const rulesRef = ref({
|
||||||
|
assessmentId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择评估',
|
||||||
},
|
},
|
||||||
assessmentId: {
|
],
|
||||||
type: Number,
|
assessmentName: [
|
||||||
default: null,
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请选择评估',
|
||||||
},
|
},
|
||||||
assessmentName: {
|
],
|
||||||
type: String,
|
|
||||||
default: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const state = reactive({
|
|
||||||
assessmentVisible: false,
|
|
||||||
assessment: null,
|
|
||||||
inputV1: "",
|
|
||||||
currentPage: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
tableDataTotal: 0,
|
|
||||||
tableData: [],
|
|
||||||
selectedRowKeys: [],
|
|
||||||
assessmentName:null,
|
|
||||||
assessmentId:null,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const {resetFields, validate} = Form.useForm(formData, rulesRef);
|
||||||
|
watch(props,()=>{
|
||||||
|
formData.value.assessmentId = props.assessmentId
|
||||||
|
formData.value.assessmentName = props.assessmentName
|
||||||
|
})
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
ctx.emit("update:assessmentVisible", false);
|
visible.value = false
|
||||||
|
resetFields()
|
||||||
};
|
};
|
||||||
const afterVisibleChange = (bool) => {
|
|
||||||
console.log("state getAllInvistText", bool);
|
|
||||||
if (props.assessmentVisible) {
|
|
||||||
getAllInvistText();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const tableDataFunc = () => {
|
|
||||||
const columns = [
|
|
||||||
{
|
|
||||||
title: "名称",
|
|
||||||
dataIndex: "name",
|
|
||||||
// width: "30%",
|
|
||||||
key: "name",
|
|
||||||
width: "40%",
|
|
||||||
className: "classify",
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "题数",
|
|
||||||
dataIndex: "num",
|
|
||||||
key: "num",
|
|
||||||
width: "20%",
|
|
||||||
align: "center",
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "创建人",
|
|
||||||
dataIndex: "creator",
|
|
||||||
key: "creator",
|
|
||||||
width: "20%",
|
|
||||||
align: "center",
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "创建时间",
|
|
||||||
dataIndex: "time",
|
|
||||||
key: "time",
|
|
||||||
width: "20%",
|
|
||||||
align: "center",
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
return columns;
|
|
||||||
};
|
|
||||||
const rowSelection = {
|
|
||||||
type: "radio",
|
|
||||||
onSelect: (selectedRows) => {
|
|
||||||
state.assessment = selectedRows;
|
|
||||||
console.log("selectedRows=======", state.assessment);
|
|
||||||
ctx.emit("checkedAss", state.assessment);
|
|
||||||
state.selectedRowKeys = [];
|
|
||||||
|
|
||||||
},
|
async function confirm() {
|
||||||
};
|
await validate().catch(({errorFields}) => {
|
||||||
const submitCheck=()=>{
|
message.warning(errorFields[0].errors.join());
|
||||||
ctx.emit("update:assessmentId", state.assessment.assessmentId);
|
throw Error("数据校验不通过")
|
||||||
ctx.emit("update:assessmentName", state.assessment.name);
|
|
||||||
closeDrawer();
|
|
||||||
}
|
|
||||||
|
|
||||||
const handelChangePage = (page, pageSize) => {
|
|
||||||
state.currentPage = page;
|
|
||||||
state.pageSize = pageSize;
|
|
||||||
getAllInvistText();
|
|
||||||
};
|
|
||||||
const getTableDate = (tableData) => {
|
|
||||||
let data = tableData;
|
|
||||||
let array = [];
|
|
||||||
data.map((value, index) => {
|
|
||||||
let n1 = value.essayQuestionVoList
|
|
||||||
? Number(value.essayQuestionVoList.length)
|
|
||||||
: 0 ;
|
|
||||||
let n2 = value.multipleStemVoList
|
|
||||||
? Number(value.multipleStemVoList.length)
|
|
||||||
: 0;
|
|
||||||
|
|
||||||
let n3 = value.scoringQuestionVoList
|
|
||||||
? Number(value.scoringQuestionVoList.length)
|
|
||||||
: 0;
|
|
||||||
let n4 = value.singleStemVoList
|
|
||||||
? Number(value.singleStemVoList.length)
|
|
||||||
: 0;
|
|
||||||
|
|
||||||
let num = n1 + n2 + n3 +n4;
|
|
||||||
let obj = {
|
|
||||||
key: index,
|
|
||||||
assessmentId: value.assessmentId,
|
|
||||||
num: num,
|
|
||||||
name: value.assessmentName ? value.assessmentName : "-",
|
|
||||||
creator: value.createUserName ? value.createUserName : "-",
|
|
||||||
time: dayjs(value.createTime).format("YYYY-MM-DD HH:mm"),
|
|
||||||
};
|
|
||||||
array.push(obj);
|
|
||||||
});
|
});
|
||||||
(state.selectedRowKeys = []), (state.tableData = array);
|
emit('update:assessmentId', formData.value.assessmentId)
|
||||||
};
|
emit('update:assessmentName', formData.value.assessmentName)
|
||||||
//获取全部评估信息接口
|
closeDrawer()
|
||||||
const getAllInvistText = () => {
|
|
||||||
api
|
|
||||||
.queryAssessmentDetailList({
|
|
||||||
assessmentName: state.inputV1,
|
|
||||||
pageNo: state.currentPage,
|
|
||||||
pageSize: state.pageSize,
|
|
||||||
releaseStatus: 2 ,
|
|
||||||
searchEndTime:"",
|
|
||||||
})
|
|
||||||
.then((res) => {
|
|
||||||
let arr = res.data.data.rows;
|
|
||||||
if (res.status === 200) {
|
|
||||||
// console.log("获取全部评估信息", res.data.data);
|
|
||||||
getTableDate(arr);
|
|
||||||
state.tableDataTotal = Number(res.data.data.total);
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log("获取全部评估信息接口失败", err);
|
|
||||||
// state.createLoading = false;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
//重置评估信息
|
function openDrawer() {
|
||||||
const resetInvist = () => {
|
visible.value = true
|
||||||
state.inputV1 = "";
|
}
|
||||||
getAllInvistText();
|
|
||||||
};
|
defineExpose({openDrawer})
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
afterVisibleChange,
|
|
||||||
closeDrawer,
|
|
||||||
tableDataFunc,
|
|
||||||
rowSelection,
|
|
||||||
getAllInvistText,
|
|
||||||
resetInvist,
|
|
||||||
handelChangePage,
|
|
||||||
submitCheck,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.ant-table-striped :deep(.table-striped) td {
|
.ant-table-striped :deep(.table-striped) td {
|
||||||
background-color: #fafafa !important;
|
background-color: #fafafa !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.addinvistDrawer {
|
.addinvistDrawer {
|
||||||
.drawerMain {
|
.drawerMain {
|
||||||
.header {
|
.header {
|
||||||
@@ -264,6 +92,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.headerTitle {
|
.headerTitle {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -272,18 +101,23 @@ export default {
|
|||||||
margin-left: 24px;
|
margin-left: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.contentMain {
|
.contentMain {
|
||||||
|
.main {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.main_left {
|
.main_left {
|
||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
|
|
||||||
.main_item {
|
.main_item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 32px;
|
|
||||||
.fi_input {
|
.fi_input {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btns {
|
.btns {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
padding: 0px 26px 0px 26px;
|
padding: 0px 26px 0px 26px;
|
||||||
@@ -297,12 +131,14 @@ export default {
|
|||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
background-image: url("../../assets/images/courseManage/search0.png");
|
background-image: url("../../assets/images/courseManage/search0.png");
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -311,6 +147,7 @@ export default {
|
|||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnsn {
|
.btnsn {
|
||||||
padding: 0px 26px 0px 26px;
|
padding: 0px 26px 0px 26px;
|
||||||
height: 38px;
|
height: 38px;
|
||||||
@@ -323,12 +160,14 @@ export default {
|
|||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
background-image: url("../../assets/images/courseManage/reset1.png");
|
background-image: url("../../assets/images/courseManage/reset1.png");
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -338,56 +177,57 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.main_item2 {
|
|
||||||
.pa {
|
.main_notice {
|
||||||
width: 100%;
|
|
||||||
margin: 15px auto;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: space-between;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.main_table {
|
|
||||||
position: relative;
|
|
||||||
padding-bottom: 80px;
|
|
||||||
.ant-checkbox-wrapper {
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: -2px;
|
margin-bottom: 3px;
|
||||||
}
|
height: 40px;
|
||||||
.ant-table-selection-column {
|
background-color: #e9f6fe;
|
||||||
padding: 0px !important;
|
|
||||||
padding-left: 5px !important;
|
.mntc_left {
|
||||||
}
|
|
||||||
.ant-table-thead > tr > th {
|
|
||||||
background-color: rgba(239, 244, 252, 1);
|
|
||||||
}
|
|
||||||
th.h {
|
|
||||||
background-color: #eff4fc !important;
|
|
||||||
}
|
|
||||||
.ant-table-tbody
|
|
||||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
|
||||||
> td {
|
|
||||||
background: #f6f9fd;
|
|
||||||
}
|
|
||||||
.pa {
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
align-items: center;
|
||||||
position: absolute;
|
|
||||||
bottom: 20px;
|
.title {
|
||||||
|
color: rgba(0, 0, 0, 0.65);
|
||||||
|
margin-right: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data {
|
||||||
|
color: #4ea6ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice_icon {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
margin-right: 9px;
|
||||||
|
margin-left: 9px;
|
||||||
|
background-image: url(@/assets/images/coursewareManage/gan.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mntc_right {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.main_btns {
|
.main_btns {
|
||||||
height: 72px;
|
height: 72px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -397,6 +237,7 @@ export default {
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
|||||||
392
src/components/drawers/CommonHomework.vue
Normal file
392
src/components/drawers/CommonHomework.vue
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
<template>
|
||||||
|
<div @click="openDrawer">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
<a-drawer :visible="visible" class="drawerStyle addhomeworkDrawer" width="800" placement="right">
|
||||||
|
<div class="drawerMain">
|
||||||
|
<div class="header">
|
||||||
|
<div class="headerTitle">{{ info.workName ? "编辑" : "添加" }}任务</div>
|
||||||
|
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
|
||||||
|
@click="closeDrawer"/>
|
||||||
|
</div>
|
||||||
|
<div class="contentMain">
|
||||||
|
<div class="main_left">
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">作业名称:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input v-model:value="formData.workName" style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入作业名称" autocomplete="off" show-count :maxlength="20"/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">开始时间:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-range-picker
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
:show-time="{ format: 'hh:mm' }"
|
||||||
|
:disabled-date="disabledDate"
|
||||||
|
v-model:value="dateTime"
|
||||||
|
format="YYYY-MM-DD HH:mm"
|
||||||
|
valueFormat="YYYY/MM/DD HH:mm"
|
||||||
|
@change="timeChange"
|
||||||
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item2">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">作业要求:</span>
|
||||||
|
</div>
|
||||||
|
<div class="textarea">
|
||||||
|
<a-textarea v-model:value="formData.workRequirement" placeholder="请输入作业要求" autocomplete="off"
|
||||||
|
allow-clear :rows="6" show-count :maxlength="200"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="mbl_items">
|
||||||
|
<div class="item_nam">
|
||||||
|
<span style="margin-right: 10px"></span>
|
||||||
|
</div>
|
||||||
|
<div class="item_inp">
|
||||||
|
<FJUpload v-model:value="formData.workEnclosureAddress"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="width:100%;height: 80px;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_btns" style="background:#fff;">
|
||||||
|
<a-button class="btn1" @click="closeDrawer">取消</a-button>
|
||||||
|
<a-button class="btn2" html-type="submit" @click="confirm">确定</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import {defineEmits, defineProps, ref, watch} from "vue";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import FJUpload from "@/components/common/FJUpload";
|
||||||
|
import {Form, message} from "ant-design-vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
info: {}
|
||||||
|
})
|
||||||
|
const visible = ref(false)
|
||||||
|
const initValue = {
|
||||||
|
workName: '',
|
||||||
|
submitStartTime: '',
|
||||||
|
submitEndTime: '',
|
||||||
|
workRequirement: '',
|
||||||
|
workEnclosureAddress: '',
|
||||||
|
}
|
||||||
|
const formData = ref(initValue)
|
||||||
|
const emit = defineEmits({})
|
||||||
|
const dateTime = ref([]);
|
||||||
|
|
||||||
|
const rulesRef = ref({
|
||||||
|
workName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入作业名称',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
submitStartTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入开始时间',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
submitEndTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入结束时间',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
workRequirement: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入作业要求',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const {resetFields, validate} = Form.useForm(formData, rulesRef);
|
||||||
|
|
||||||
|
watch([props, visible], () => {
|
||||||
|
resetFields(props.info)
|
||||||
|
dateTime.value = [props.info?.submitStartTime || '', props.info?.submitEndTime || '']
|
||||||
|
})
|
||||||
|
|
||||||
|
const closeDrawer = () => {
|
||||||
|
visible.value = false
|
||||||
|
resetFields()
|
||||||
|
dateTime.value = []
|
||||||
|
};
|
||||||
|
|
||||||
|
function timeChange(time, timeStr) {
|
||||||
|
formData.value.submitStartTime = timeStr[0]
|
||||||
|
formData.value.submitEndTime = timeStr[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
const disabledDate = (current) => {
|
||||||
|
return current && current < dayjs().startOf('day');
|
||||||
|
};
|
||||||
|
|
||||||
|
async function confirm() {
|
||||||
|
await validate().catch(({errorFields}) => {
|
||||||
|
message.warning(errorFields[0].errors.join());
|
||||||
|
throw Error("数据校验不通过")
|
||||||
|
});
|
||||||
|
emit('update:info', {...formData.value})
|
||||||
|
closeDrawer()
|
||||||
|
}
|
||||||
|
|
||||||
|
function openDrawer() {
|
||||||
|
visible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.ant-table-striped :deep(.table-striped) td {
|
||||||
|
background-color: #fafafa !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.addhomeworkDrawer {
|
||||||
|
.drawerMain {
|
||||||
|
.header {
|
||||||
|
height: 73px;
|
||||||
|
border-bottom: 1px solid #e8e8e8;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
.headerTitle {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 25px;
|
||||||
|
margin-left: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentMain {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.main_left {
|
||||||
|
padding-right: 30px;
|
||||||
|
flex: 1;
|
||||||
|
border-right: 1px solid #e8e8e8;
|
||||||
|
margin-top: 32px;
|
||||||
|
|
||||||
|
.main_item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 32px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
|
||||||
|
.signbox {
|
||||||
|
width: 120px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.sign {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnbox {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.xkbtn {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 130px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-right: 8px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mbl_items {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
.item_nam {
|
||||||
|
width: 100px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.asterisk_icon {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-top: -15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_inp {
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
margin-left: -25px;
|
||||||
|
|
||||||
|
.inp_num {
|
||||||
|
position: absolute;
|
||||||
|
left: 398px;
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main_item2 {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
|
||||||
|
.textarea {
|
||||||
|
width: 373px;
|
||||||
|
|
||||||
|
.ant-input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-textarea-show-count {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-textarea-show-count::after {
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.signbox {
|
||||||
|
width: 120px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.sign {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.kqszbox {
|
||||||
|
.qdqtbox {
|
||||||
|
margin-left: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setbox {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
.timerbox {
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-right: 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnbox2 {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
|
||||||
|
.xkbtn {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 130px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-right: 16px 8px 32px 0;
|
||||||
|
color: #fff;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
margin-left: 124px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main_btns {
|
||||||
|
position: absolute;
|
||||||
|
height: 72px;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
|
.btn1 {
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
border: 1px solid #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #4ea6ff;
|
||||||
|
background-color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn2 {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-left: 15px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
695
src/components/drawers/CommonTest.vue
Normal file
695
src/components/drawers/CommonTest.vue
Normal file
@@ -0,0 +1,695 @@
|
|||||||
|
<template>
|
||||||
|
<div @click="openDrawer">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
<a-drawer
|
||||||
|
:visible="visible"
|
||||||
|
class="drawerStyle addtestDrawer"
|
||||||
|
width="800"
|
||||||
|
placement="right"
|
||||||
|
>
|
||||||
|
<div class="drawerMain">
|
||||||
|
<div class="header">
|
||||||
|
<div class="headerTitle">{{ info.examinationName >= 0 ? "编辑" : "添加" }}考试</div>
|
||||||
|
<img
|
||||||
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
|
src="../../assets/images/basicinfo/close.png"
|
||||||
|
@click="closeDrawer"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex; flex-direction: row; padding-top: 0px; margin-top: 20px; margin-left: 32px;">
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
style="width: 100px; cursor: pointer;"
|
||||||
|
@click="changeOuter(1)"
|
||||||
|
:class="formData.examType === 1 ? 'outer' : 'notOuter'"
|
||||||
|
>
|
||||||
|
系统考试
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
style="width: 100px; cursor: pointer;"
|
||||||
|
@click="changeOuter(2)"
|
||||||
|
:class="formData.examType === 2 ? 'outer' : 'notOuter'"
|
||||||
|
>
|
||||||
|
外部考试
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="formData.examType===1" class="contentMain">
|
||||||
|
<div class="main_left">
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">考试名称:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input
|
||||||
|
v-model:value="formData.examinationName"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入考试名称"
|
||||||
|
:maxlength="20"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">选择试卷:</span>
|
||||||
|
</div>
|
||||||
|
<s-test v-model:id="formData.examinationTestId" v-model:name="formData.examinationTestName">
|
||||||
|
<div class="btnbox">
|
||||||
|
<button class="xkbtn">
|
||||||
|
{{ formData.examinationTestId ? "重选" : "选择" }}试卷
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</s-test>
|
||||||
|
<div v-if="formData.examinationTestId">
|
||||||
|
<a-tag closable color="processing" @close="delTag" :closeIcon="true">
|
||||||
|
<span style="font-size: 14px; line-height: 33px">{{ formData.examinationTestName }}</span>
|
||||||
|
</a-tag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">考试时间:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-range-picker
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
:show-time="{format:'hh:mm'}"
|
||||||
|
:disabled-date="disabledDate"
|
||||||
|
format="YYYY/MM/DD HH:mm"
|
||||||
|
valueFormat="YYYY/MM/DD HH:mm"
|
||||||
|
v-model:value="dateTime"
|
||||||
|
@change="timeChange"
|
||||||
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">考试时长:</span>
|
||||||
|
</div>
|
||||||
|
<div class="select">
|
||||||
|
<a-input-number
|
||||||
|
:min="0"
|
||||||
|
:max="300"
|
||||||
|
:precision="0"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
v-model:value="formData.examinationDuration"
|
||||||
|
></a-input-number>
|
||||||
|
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">及格线:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input
|
||||||
|
v-model:value="formData.passLine"
|
||||||
|
type="number"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<span style="color: #999999; margin-left: 8px">分</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item2">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">考试说明:</span>
|
||||||
|
</div>
|
||||||
|
<div class="textarea">
|
||||||
|
<a-textarea
|
||||||
|
v-model:value="formData.examinationExplain"
|
||||||
|
placeholder="请输入考试说明"
|
||||||
|
allow-clear
|
||||||
|
show-count
|
||||||
|
:maxlength="200"
|
||||||
|
:rows="6"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item2">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px;margin-top: 10px;">考试限制:</span>
|
||||||
|
</div>
|
||||||
|
<div class="kqszbox">
|
||||||
|
<div class="setbox">
|
||||||
|
<div class="timerbox">
|
||||||
|
<span>允许重复考试:</span>
|
||||||
|
<a-input-number
|
||||||
|
:min="-1"
|
||||||
|
:max="300"
|
||||||
|
:precision="0"
|
||||||
|
style="
|
||||||
|
width: 100px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;"
|
||||||
|
v-model:value="formData.examinationLimit"
|
||||||
|
></a-input-number>
|
||||||
|
<span style="color: #999999; margin-left: 8px"
|
||||||
|
>次,-1表示无限制</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">显示答案:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-radio-group
|
||||||
|
style="margin-right: 12px"
|
||||||
|
v-model:value="formData.showAnswers"
|
||||||
|
>
|
||||||
|
<a-radio :value="1">允许查看</a-radio>
|
||||||
|
<a-radio :value="2">不允许查看</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">显示解析:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-radio-group
|
||||||
|
style="margin-right: 12px"
|
||||||
|
v-model:value="formData.showAnalysis"
|
||||||
|
>
|
||||||
|
<a-radio :value="1">允许查看</a-radio>
|
||||||
|
<a-radio :value="2">不允许查看</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">评分模式:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-radio-group
|
||||||
|
style="margin-right: 12px"
|
||||||
|
v-model:value="formData.scoringModel"
|
||||||
|
>
|
||||||
|
<a-radio :value="1">最高一次</a-radio>
|
||||||
|
<a-radio :value="2">最后一次</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">试题排列:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-radio-group
|
||||||
|
style="margin-right: 12px"
|
||||||
|
v-model:value="formData.questionArrangement"
|
||||||
|
>
|
||||||
|
<a-radio :value="1">试题乱序</a-radio>
|
||||||
|
<a-radio :value="2">选项乱序</a-radio>
|
||||||
|
<a-radio :value="3">全部乱序</a-radio>
|
||||||
|
<a-radio :value="4">不乱序</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item" style="height: 20px;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else class="contentMain">
|
||||||
|
<div class="main_left">
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">考试名称:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input
|
||||||
|
v-model:value="formData.examinationName"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入考试名称"
|
||||||
|
:maxlength="20"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">数据来源:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input
|
||||||
|
v-model:value="formData.source"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入数据来源"
|
||||||
|
:maxlength="20"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_item2">
|
||||||
|
<div class="signbox">
|
||||||
|
<span style="margin-right: 3px">考试说明:</span>
|
||||||
|
</div>
|
||||||
|
<div class="textarea">
|
||||||
|
<a-textarea
|
||||||
|
v-model:value="formData.externalExplain"
|
||||||
|
placeholder="请输入考试说明"
|
||||||
|
allow-clear
|
||||||
|
show-count
|
||||||
|
:maxlength="200"
|
||||||
|
:rows="6"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main_btns">
|
||||||
|
<a-button class="btn1" @click="closeDrawer">取消</a-button>
|
||||||
|
<a-button class="btn2" @click="confirm">确定</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import {defineEmits, defineProps, ref, watch} from "vue";
|
||||||
|
import STest from "./SelectTest.vue";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import {Form, message} from "ant-design-vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
info: {}
|
||||||
|
})
|
||||||
|
const visible = ref(false)
|
||||||
|
const initValue = {
|
||||||
|
examinationName: '',
|
||||||
|
examinationTestId: '',
|
||||||
|
examinationStartTime: '',
|
||||||
|
examinationEndTime: '',
|
||||||
|
examinationDuration: '',
|
||||||
|
passLine: '',
|
||||||
|
examType: 1,
|
||||||
|
source: "",
|
||||||
|
showAnswers: 2,
|
||||||
|
showAnalysis: 2,
|
||||||
|
scoringModel: 2,
|
||||||
|
questionArrangement: 4,
|
||||||
|
externalExplain: ""
|
||||||
|
}
|
||||||
|
const formData = ref(initValue)
|
||||||
|
|
||||||
|
const innerRule = {
|
||||||
|
examinationName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入考试名称',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
examinationTestId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入选择试卷',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
examinationStartTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入开始开始时间',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
examinationEndTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入开始结束时间',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
examinationDuration: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入考试时长',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
passLine: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入及格线',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
const outerRule = {
|
||||||
|
examinationName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入考试名称',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
source: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入数据来源',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
const rulesRef = ref(innerRule);
|
||||||
|
|
||||||
|
const emit = defineEmits({})
|
||||||
|
const dateTime = ref([]);
|
||||||
|
const {resetFields, validate} = Form.useForm(formData, rulesRef);
|
||||||
|
|
||||||
|
watch(() => formData.value.examType, () => {
|
||||||
|
formData.value.examType === 1 ? rulesRef.value = innerRule : rulesRef.value = outerRule
|
||||||
|
})
|
||||||
|
|
||||||
|
watch([props, visible], () => {
|
||||||
|
resetFields(props.info)
|
||||||
|
dateTime.value = [props.info?.examinationStartTime || '', props.info?.examinationEndTime || '']
|
||||||
|
})
|
||||||
|
|
||||||
|
const closeDrawer = () => {
|
||||||
|
visible.value = false
|
||||||
|
resetFields()
|
||||||
|
dateTime.value = []
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function timeChange(time, timeStr) {
|
||||||
|
formData.value.examinationStartTime = timeStr[0]
|
||||||
|
formData.value.examinationEndTime = timeStr[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
const disabledDate = (current) => {
|
||||||
|
return current && current < dayjs().startOf('day');
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
async function confirm() {
|
||||||
|
await validate().catch(({errorFields}) => {
|
||||||
|
message.warning(errorFields[0].errors.join());
|
||||||
|
throw Error("数据校验不通过")
|
||||||
|
});
|
||||||
|
emit('update:info', {...formData.value})
|
||||||
|
closeDrawer()
|
||||||
|
}
|
||||||
|
|
||||||
|
function openDrawer() {
|
||||||
|
visible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const delTag = () => {
|
||||||
|
formData.value.examinationTestId = '';
|
||||||
|
formData.value.examinationTestName = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeOuter(v) {
|
||||||
|
formData.value.examType = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.ant-table-striped :deep(.table-striped) td {
|
||||||
|
background-color: #fafafa !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outer {
|
||||||
|
background-color: #4ea6ff;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #a09292;
|
||||||
|
height: 36px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notOuter {
|
||||||
|
color: #000;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #a09292;
|
||||||
|
background: #fff;
|
||||||
|
margin-right: 10px;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag-style {
|
||||||
|
color: rgb(113, 113, 237);
|
||||||
|
background-color: #d7d1f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.addtestDrawer {
|
||||||
|
.drawerMain {
|
||||||
|
.header {
|
||||||
|
height: 73px;
|
||||||
|
border-bottom: 1px solid #e8e8e8;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
.headerTitle {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 25px;
|
||||||
|
margin-left: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentMain {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.main_left {
|
||||||
|
padding-right: 30px;
|
||||||
|
flex: 1;
|
||||||
|
border-right: 1px solid #e8e8e8;
|
||||||
|
|
||||||
|
.main_item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 32px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
|
||||||
|
.signbox {
|
||||||
|
width: 120px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.sign {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnbox {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.xkbtn {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 130px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-right: 8px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main_item2 {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
|
||||||
|
.textarea {
|
||||||
|
width: 400px;
|
||||||
|
|
||||||
|
.ant-input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-textarea-show-count {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-textarea-show-count::after {
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.signbox {
|
||||||
|
width: 120px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.sign {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.kqszbox {
|
||||||
|
.qdqtbox {
|
||||||
|
margin-left: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setbox {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
|
||||||
|
.timerbox {
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-right: 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnbox2 {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
|
||||||
|
.xkbtn {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 130px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-right: 16px;
|
||||||
|
color: #fff;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main_table {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 80px;
|
||||||
|
|
||||||
|
.ant-checkbox-wrapper {
|
||||||
|
align-items: center;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-selection-column {
|
||||||
|
padding: 0px !important;
|
||||||
|
padding-left: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-thead > tr > th {
|
||||||
|
background-color: rgba(239, 244, 252, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
th.h {
|
||||||
|
background-color: #eff4fc !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-tbody
|
||||||
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
|
> td {
|
||||||
|
background: #f6f9fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pa {
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main_btns {
|
||||||
|
height: 72px;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
|
.btn1 {
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
border: 1px solid #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #4ea6ff;
|
||||||
|
background-color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn2 {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 0;
|
||||||
|
margin-left: 15px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -953,7 +953,9 @@
|
|||||||
<div v-if="checked4" class="cstm_items main_item">
|
<div v-if="checked4" class="cstm_items main_item">
|
||||||
<div class="signbox"></div>
|
<div class="signbox"></div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" @click="showAssessment">选择评估</button>
|
<AssessmentList v-model:assessmentName="assessmentName" v-model:assessmentId="assessmentId">
|
||||||
|
<button class="xkbtn" @click="showAssessment" style="margin-bottom: 0;margin-top: 0">选择评估</button>
|
||||||
|
</AssessmentList>
|
||||||
<div v-if="assessmentId > 0">
|
<div v-if="assessmentId > 0">
|
||||||
<a-tag closable @close="removePG" color="processing">
|
<a-tag closable @close="removePG" color="processing">
|
||||||
<span style="font-size: 14px; line-height: 33px">
|
<span style="font-size: 14px; line-height: 33px">
|
||||||
@@ -961,54 +963,40 @@
|
|||||||
</span>
|
</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
<AssessmentList
|
|
||||||
v-model:assessmentVisible="assessmentVisible"
|
|
||||||
v-model:assessmentName="assessmentName"
|
|
||||||
:assessmentId="assessmentId"
|
|
||||||
@checkedAss="getCheckedAss"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cstm_items main_item">
|
<div class="cstm_items main_item">
|
||||||
<div class="signbox"></div>
|
<div class="signbox"></div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" @click="showDrawerAddHomework">
|
<add-homework v-model:info="workInfo">
|
||||||
|
<button class="xkbtn" style="margin-bottom: 0;margin-top: 0">
|
||||||
配置作业
|
配置作业
|
||||||
</button>
|
</button>
|
||||||
<div v-if="EditWorkId > 0">
|
</add-homework>
|
||||||
|
<div v-if="workInfo.workName">
|
||||||
<a-tag closable @close="logW" color="processing">
|
<a-tag closable @close="logW" color="processing">
|
||||||
<span style="font-size: 14px; line-height: 33px">
|
<span style="font-size: 14px; line-height: 33px">
|
||||||
{{ workName }}
|
{{ workInfo.workName }}
|
||||||
</span>
|
</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
<add-homework
|
|
||||||
v-model:addhomeworkVisible="addhomeworkvisible"
|
|
||||||
@getWork="getWork"
|
|
||||||
:faceLevel="true"
|
|
||||||
v-model:EditWorkId="EditWorkId"
|
|
||||||
v-model:workName="workName"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cstm_items main_item">
|
<div class="cstm_items main_item">
|
||||||
<div class="signbox"></div>
|
<div class="signbox"></div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" @click="showDrawerAddTest">配置考试</button>
|
<add-test v-model:info="examInfo">
|
||||||
<div v-if="EditTestId > 0">
|
<button class="xkbtn" style="margin-bottom: 0;margin-top: 0">配置考试</button>
|
||||||
|
</add-test>
|
||||||
|
<div v-if="examInfo.examinationName">
|
||||||
<a-tag closable @close="logT" color="processing">
|
<a-tag closable @close="logT" color="processing">
|
||||||
<span style="font-size: 14px; line-height: 33px">
|
<span style="font-size: 14px; line-height: 33px">
|
||||||
{{ testName }}
|
{{ examInfo.examinationName }}
|
||||||
</span>
|
</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
<add-test
|
|
||||||
v-model:addtestVisible="addtestvisible"
|
|
||||||
v-model:EditTestId="EditTestId"
|
|
||||||
v-model:testName="testName"
|
|
||||||
:faceLevel="true"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
<!--
|
||||||
@@ -1036,7 +1024,7 @@
|
|||||||
</a-checkbox>
|
</a-checkbox>
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div class="cstm_items items_fj">
|
<div class="cstm_items items_fj" style="height:80px">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<span style="margin-right: 3px"></span>
|
<span style="margin-right: 3px"></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -1503,15 +1491,11 @@ import {
|
|||||||
computed,
|
computed,
|
||||||
} from "vue";
|
} from "vue";
|
||||||
|
|
||||||
import * as api from "../../api/indexInvist.js";
|
|
||||||
import * as apis from "../../api/indexTaskManage";
|
import * as apis from "../../api/indexTaskManage";
|
||||||
import {message} from "ant-design-vue";
|
import {message} from "ant-design-vue";
|
||||||
import {useRouter, useRoute} from "vue-router";
|
import {useRouter, useRoute} from "vue-router";
|
||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
||||||
// import StuAdd from "../../components/drawers/StuAdd";
|
|
||||||
// import OwnPower from "../../components/drawers/OwnPower.vue";
|
|
||||||
// import Corpowerlist from "../../components/drawers/CorPowerlist.vue";
|
|
||||||
import addOnlineCourse from "../../components/Modals/addOnlineCourse.vue";
|
import addOnlineCourse from "../../components/Modals/addOnlineCourse.vue";
|
||||||
|
|
||||||
import ProjOwnerShip from "../../components/drawers/ProjectOwn";
|
import ProjOwnerShip from "../../components/drawers/ProjectOwn";
|
||||||
@@ -1550,11 +1534,11 @@ import SeeModal from "./components/seeModal.vue";
|
|||||||
import CourseModal from "./courseModal.vue";
|
import CourseModal from "./courseModal.vue";
|
||||||
import * as moment from "moment";
|
import * as moment from "moment";
|
||||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
||||||
import {codeUrl, toDate} from "../../api/method";
|
import {codeUrl, toDate} from "@/api/method";
|
||||||
import {queryWorkDetailById} from "@/api/indexWork";
|
import {queryWorkDetailById} from "@/api/indexWork";
|
||||||
import {queryExaminationDetailById} from "@/api/indexExam";
|
import {queryExaminationDetailById} from "@/api/indexExam";
|
||||||
import AddHomework from "../../components/drawers/AddHomework.vue";
|
import AddHomework from "../../components/drawers/CommonHomework.vue";
|
||||||
import AddTest from "../../components/drawers/AddTest.vue";
|
import AddTest from "../../components/drawers/CommonTest.vue";
|
||||||
import TableStudent from "@/components/student/TableStudent";
|
import TableStudent from "@/components/student/TableStudent";
|
||||||
import FJUpload from "@/components/common/FJUpload";
|
import FJUpload from "@/components/common/FJUpload";
|
||||||
import {updateStudent} from "@/api/indexProjStu";
|
import {updateStudent} from "@/api/indexProjStu";
|
||||||
@@ -1562,7 +1546,6 @@ import {useStore} from "vuex";
|
|||||||
import DropDown from "@/components/common/DropDown";
|
import DropDown from "@/components/common/DropDown";
|
||||||
import {checkPer} from "@/utils/utils";
|
import {checkPer} from "@/utils/utils";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
// import { commonExport } from '@/utils/commonExcel'
|
|
||||||
|
|
||||||
//列表表格
|
//列表表格
|
||||||
const columns1 = [
|
const columns1 = [
|
||||||
@@ -2171,6 +2154,8 @@ export default defineComponent({
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
workInfo:{},
|
||||||
|
examInfo:{},
|
||||||
tableLoading: false,
|
tableLoading: false,
|
||||||
//新加
|
//新加
|
||||||
stuColumns: [
|
stuColumns: [
|
||||||
@@ -3193,13 +3178,11 @@ export default defineComponent({
|
|||||||
const showDrawerAddTest = () => {
|
const showDrawerAddTest = () => {
|
||||||
state.addtestvisible = true;
|
state.addtestvisible = true;
|
||||||
};
|
};
|
||||||
const logW = (e) => {
|
const logW = () => {
|
||||||
state.EditWorkId = null;
|
state.workInfo = {}
|
||||||
console.log(e);
|
|
||||||
};
|
};
|
||||||
const logT = (e) => {
|
const logT = () => {
|
||||||
state.EditTestId = 0;
|
state.examInfo = {}
|
||||||
console.log(e);
|
|
||||||
};
|
};
|
||||||
const removePG = () => {
|
const removePG = () => {
|
||||||
console.log("11111");
|
console.log("11111");
|
||||||
@@ -3670,13 +3653,7 @@ export default defineComponent({
|
|||||||
startTime = dayjs(state.xjkkinputV3[0]).format('YYYY-MM-DD HH:mm') //parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
|
startTime = dayjs(state.xjkkinputV3[0]).format('YYYY-MM-DD HH:mm') //parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
|
||||||
endTime = dayjs(state.xjkkinputV3[1]).format('YYYY-MM-DD HH:mm') //parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
|
endTime = dayjs(state.xjkkinputV3[1]).format('YYYY-MM-DD HH:mm') //parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
|
||||||
}
|
}
|
||||||
// console.log("state.validate", state.validate);
|
const offName = await validateName({ name: state.xjkkinputV1, type: 5 ,id:state.offcoursePlanId}).then(res => {
|
||||||
|
|
||||||
// if (!state.validate) {
|
|
||||||
// message.destroy();
|
|
||||||
// return message.warning("该开课名称已存在");
|
|
||||||
// }
|
|
||||||
const offName = await validateName({ name: state.xjkkinputV1, type: 5 }).then(res => {
|
|
||||||
console.log(res,res.data.data);
|
console.log(res,res.data.data);
|
||||||
return res.data.data === 1;
|
return res.data.data === 1;
|
||||||
});
|
});
|
||||||
@@ -3706,6 +3683,8 @@ const offName = await validateName({ name: state.xjkkinputV1, type: 5 }).then(re
|
|||||||
// signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否
|
// signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否
|
||||||
teacherId: state.member.value,
|
teacherId: state.member.value,
|
||||||
teacher: state.member.name,
|
teacher: state.member.name,
|
||||||
|
workInfo: state.workInfo,//提交的作业信息
|
||||||
|
examInfo: state.examInfo//提交的考试信息
|
||||||
};
|
};
|
||||||
console.log(postData);
|
console.log(postData);
|
||||||
const checkList = [
|
const checkList = [
|
||||||
@@ -3735,30 +3714,14 @@ const offName = await validateName({ name: state.xjkkinputV1, type: 5 }).then(re
|
|||||||
state.offcourseId = item.offcourseId;
|
state.offcourseId = item.offcourseId;
|
||||||
state.offcoursePlanId = item.id;
|
state.offcoursePlanId = item.id;
|
||||||
|
|
||||||
if (item.evaluateId) {
|
|
||||||
api
|
|
||||||
.queryAppraiseDetailById({assessmentId: item.evaluateId})
|
|
||||||
.then((res) => {
|
|
||||||
state.assessmentName = res.data.data.assessmentName;
|
|
||||||
})
|
|
||||||
.catch();
|
|
||||||
}
|
|
||||||
if (item.homeWorkId) {
|
if (item.homeWorkId) {
|
||||||
queryWorkDetailById({workId: item.homeWorkId}).then((res) => {
|
queryWorkDetailById({workId: item.homeWorkId}).then((res) => state.workInfo = res.data.data);
|
||||||
state.workName = res.data.data.workName;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
if (item.testId) {
|
if (item.testId) {
|
||||||
queryExaminationDetailById({examinationId: item.testId}).then(
|
queryExaminationDetailById({examinationId: item.testId}).then((res) => state.examInfo = res.data.data);
|
||||||
(res) => {
|
|
||||||
state.testName = res.data.data.examinationName;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("res");
|
|
||||||
console.log("获取面授课开课详情", item);
|
console.log("获取面授课开课详情", item);
|
||||||
|
|
||||||
state.xjkkinputV2 = item.address;
|
state.xjkkinputV2 = item.address;
|
||||||
state.checked1 = item.applyFlag === 1 ? true : false;
|
state.checked1 = item.applyFlag === 1 ? true : false;
|
||||||
let arrss = item.attach.split(",");
|
let arrss = item.attach.split(",");
|
||||||
@@ -3781,7 +3744,8 @@ const offName = await validateName({ name: state.xjkkinputV1, type: 5 }).then(re
|
|||||||
(state.comLeave =
|
(state.comLeave =
|
||||||
item.completeType.split(",")[1] == "1" ? true : false),
|
item.completeType.split(",")[1] == "1" ? true : false),
|
||||||
(state.checked4 = item.evalFlag === 1 ? true : false);
|
(state.checked4 = item.evalFlag === 1 ? true : false);
|
||||||
state.assessmentId = String(item.evaluateId);
|
state.assessmentName = item.assessmentName;
|
||||||
|
state.assessmentId = String(item.assessmentId);
|
||||||
state.EditTestId = Number(item.testId);
|
state.EditTestId = Number(item.testId);
|
||||||
state.EditWorkId = String(item.homeWorkId);
|
state.EditWorkId = String(item.homeWorkId);
|
||||||
state.xjkkinputV1 = item.name;
|
state.xjkkinputV1 = item.name;
|
||||||
@@ -4675,7 +4639,6 @@ const offName = await validateName({ name: state.xjkkinputV1, type: 5 }).then(re
|
|||||||
};
|
};
|
||||||
const disabledDate = (current) => {
|
const disabledDate = (current) => {
|
||||||
// Can not select days before today and today
|
// Can not select days before today and today
|
||||||
console.log("1111", dayjs().endOf("day"));
|
|
||||||
return current && current < dayjs().startOf("day");
|
return current && current < dayjs().startOf("day");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user