feat:合并

This commit is contained in:
lixg
2022-12-20 15:59:59 +08:00
11 changed files with 2908 additions and 2877 deletions

View File

@@ -317,6 +317,7 @@ export default {
textV2: "",
radioV1: "",
time: "",
isClick: false
});
const closeDrawer = () => {
ctx.emit("update:addactiveVisible", false);
@@ -464,6 +465,13 @@ export default {
return message.warning("请输入活动地址");
}
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
let obj = {
activityAddress: state.inputV3, //活动地址
activityDuration: state.inputV2, //活动时长
@@ -489,10 +497,12 @@ export default {
ctx.emit("changeData", false);
message.destroy();
message.success("更新成功");
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error("更新失败");
state.isClick = false;
});
} else {
//新建活动信息
@@ -504,10 +514,12 @@ export default {
closeDrawer();
await updateTask(res);
ctx.emit("changeData", false);
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error("创建失败");
state.isClick = false;
});
}
};

View File

@@ -171,6 +171,7 @@ export default {
time: undefined,
caseId: null,
caseName: "",
isClick: false
});
const closeDrawer = () => {
ctx.emit("update:addcaseVisible", false);
@@ -279,6 +280,12 @@ export default {
message.destroy();
return message.warning("请先选中关卡");
}
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
for (let i = 0; i < state.apiTaskList.length; i++) {
RouterEditTask({
chapterId: props.isactive,
@@ -293,12 +300,20 @@ export default {
ctx.emit("changeData", false);
closeDrawer();
state.addLoading = false;
state.isClick = false;
})
.catch(() => {
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
state.isClick = false;
});
}
} else if (props.isLevel == 2) {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
for (let i = 0; i < state.apiTaskList.length; i++) {
apiTask
.addTask({
@@ -314,13 +329,21 @@ export default {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
state.isClick = false;
});
}
} else if (props.isLevel == 3) {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
for (let i = 0; i < state.apiTaskList.length; i++) {
apiTask
.addTaskTemplate({
@@ -336,10 +359,12 @@ export default {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
state.isClick = false;
});
}
}

View File

@@ -495,6 +495,7 @@ export default {
innerPersion: false,
outPersion: false,
assessmentName: null,
isClick: false
});
const clear = () => {
state.courseName = "";
@@ -643,6 +644,12 @@ export default {
message.destroy();
return message.warning("请输入必填字段");
} else {
if(state.isClick){
message.destroy();
message.error("请勿频繁点击")
return
}
state.isClick = true;
let type = state.onlySign ? "1," : "0,";
let t = state.completeLeave ? "1" : "0";
let p = state.innerPersion ? "1," : "0,";
@@ -681,10 +688,12 @@ export default {
// message.success(`添加成功`);
await updateTask(res);
ctx.emit("changeData", false);
state.isClick = false;
closeDrawer();
})
.catch((e) => {
console.log(e);
state.isClick = false;
message.destroy();
message.error(`添加失败`);
});

View File

@@ -194,6 +194,7 @@ export default {
const state = reactive({
addLoading: false,
workEnclosureAddress: "",
isClick: false
});
const formRef = ref();
@@ -364,29 +365,47 @@ export default {
workName: formState.workName,
workRequirement: formState.workRequirement,
};
if (props.EditWorkId > 0) {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
updateWorkTaskUsing(obj)
.then(async (res) => {
// console.log("添加成功", res);
await updateTask(res);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch((err) => {
message.destroy();
message.error(`添加失败${err}`);
state.isClick = false;
});
} else {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
createWorkTask(obj)
.then(async (res) => {
console.log("添加成功", res);
await updateTask(res);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch((err) => {
message.destroy();
message.error(`添加失败${err}`);
state.isClick = false;
});
}
};

View File

@@ -1,30 +1,18 @@
<template>
<a-drawer
:visible="addinvistVisible"
class="drawerStyle addinvistDrawer"
width="70%"
title="添加评估"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addinvistVisible" class="drawerStyle addinvistDrawer" width="70%" title="添加评估" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑评估</div>
<div v-else class="headerTitle">添加评估</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" />
</div>
<div class="contentMain">
<div class="main">
<div class="main_left">
<AssessmentAll
v-model:assessmentVisible="assessmentVisible"
v-model:assessmentId="assessmentId"
v-model:assessmentName="assessmentName"
/>
<AssessmentAll v-model:assessmentVisible="assessmentVisible" v-model:assessmentId="assessmentId"
v-model:assessmentName="assessmentName" />
</div>
</div>
</div>
@@ -117,6 +105,7 @@ export default {
assessment1: null,
assessmentVisible: false,
titleTag: false,
isClick: false
});
// const getCheckedAss = (ass) => {
// state.assessmentId = ass.assessmentId;
@@ -165,6 +154,12 @@ export default {
message.destroy();
return message.warning("请先选中关卡");
}
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistence({
chapterId: Number(props.isactive),
courseTaskId: l_data_id,
@@ -186,6 +181,7 @@ export default {
}
message.destroy();
message.warning("评估(" + tipStr + ")重复添加");
state.isClick = false;
return;
} else {
RouterEditTask({
@@ -204,17 +200,26 @@ export default {
ctx.emit("changeData", false);
closeDrawer();
state.addLoading = false;
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
state.isClick = false;
});
}
})
.catch((err) => {
console.log(err);
state.isClick = false;
});
} else if (props.isLevel == 2) {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistenceProject({
courseTaskId: l_data_id,
projectId: props.projectId,
@@ -236,6 +241,7 @@ export default {
}
message.destroy();
message.warning("评估(" + tipStr + ")重复添加");
state.isClick = false;
return;
} else {
apiTask
@@ -251,20 +257,29 @@ export default {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
state.isClick = false;
});
}
})
.catch((err) => {
console.log(err);
state.isClick = false;
});
} else if (props.isLevel == 3) {
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistenceProjectTemplate({
courseTaskId: l_data_id,
projectTemplateId: props.projectTemplateId,
stageId: props.chooseStageId || 0,
templateStageId: props.chooseStageId || 0,
type: 11,
}).then((res) => {
console.log(res);
@@ -281,6 +296,7 @@ export default {
}
message.destroy();
message.warning("评估(" + tipStr + ")重复添加");
state.isClick = false;
return;
} else {
addTempTask({
@@ -296,10 +312,12 @@ export default {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
state.isClick = false;
});
}
});
@@ -320,6 +338,7 @@ export default {
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addinvistDrawer {
.drawerMain {
.header {
@@ -328,6 +347,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -336,12 +356,15 @@ export default {
margin-left: 24px;
}
}
.contentMain {
.main {
width: 100%;
.main_left {
padding-right: 30px;
margin-top: 32px;
.main_item {
display: flex;
align-items: center;
@@ -349,6 +372,7 @@ export default {
.fi_input {
margin-right: 20px;
}
.btns {
margin-right: 20px;
padding: 0px 26px 0px 26px;
@@ -362,12 +386,14 @@ export default {
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
width: 15px;
height: 17px;
background-image: url("../../assets/images/courseManage/search0.png");
background-size: 100% 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -376,6 +402,7 @@ export default {
margin-left: 5px;
}
}
.btnsn {
padding: 0px 26px 0px 26px;
height: 38px;
@@ -388,12 +415,14 @@ export default {
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
width: 16px;
height: 18px;
background-image: url("../../assets/images/courseManage/reset1.png");
background-size: 100% 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -403,6 +432,7 @@ export default {
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
@@ -410,16 +440,20 @@ export default {
margin-bottom: 3px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.title {
color: rgba(0, 0, 0, 0.65);
margin-right: 17px;
}
.data {
color: #4ea6ff;
}
.notice_icon {
width: 14px;
height: 14px;
@@ -429,6 +463,7 @@ export default {
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
@@ -447,6 +482,7 @@ export default {
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
@@ -456,6 +492,7 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;

View File

@@ -485,6 +485,7 @@ export default {
switchC2: false,
assessmentVisible: false,
assessmentName: "",
isClick: false
});
const closeDrawer = () => {
ctx.emit("update:addliveVisible", false);
@@ -699,6 +700,13 @@ export default {
message.destroy();
return message.warning("请输入直播公告");
}
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
const regular = /^[+]{0,1}(\d+)$/;
if (!regular.test(state.inputV2)) {
message.destroy();
@@ -749,9 +757,11 @@ export default {
message.success("提交成功");
closeDrawer();
await updateTask(res);
state.isClick = false;
})
.catch((err) => {
console.log(err);
state.isClick = false;
});
} else {
api
@@ -761,8 +771,11 @@ export default {
message.success("提交成功");
await updateTask(res);
closeDrawer();
state.isClick = false;
})
.catch(() => {});
.catch(() => {
state.isClick = false;
});
}
};
const beforeUpload = (file) => {

View File

@@ -1,21 +1,12 @@
<template>
<a-drawer
:visible="addonlineVisible"
class="drawerStyle addonlineDrawer"
width="80%"
title="添加在线"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addonlineVisible" class="drawerStyle addonlineDrawer" width="80%" title="添加在线" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑在线</div>
<div v-else class="headerTitle">添加在线</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" />
</div>
<div class="contentMain">
<div class="main_items">
@@ -23,17 +14,12 @@
<div class="mii_ipt">
<div class="ipt_name"></div>
<div class="fi_input">
<a-input
v-model:value="inputV1"
style="
<a-input v-model:value="inputV1" style="
width: 280px;
height: 40px;
border-radius: 8px;
padding-right: 49px;
"
placeholder="请输入课程名称"
maxlength="20"
/>
" placeholder="请输入课程名称" maxlength="20" />
<div class="inp_num" style="position: absolute; right: 7px">
<span style="color: #c7cbd2">
@@ -93,37 +79,23 @@
<!-- 编辑的表格 -->
<div>
<div>
<a-table
class="ant-table-striped"
:row-class-name="
<a-table class="ant-table-striped" :row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:row-selection="{
" :row-selection="{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:columns="tableDataFunc()"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:pagination="false"
/>
}" :columns="tableDataFunc()" :data-source="tableData" :loading="tableDataTotal === -1 ? true : false"
:pagination="false" />
<div class="tableBox" style="margin-top:85px;">
<div class="pa">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
@change="handelChangePage"
/>
<a-pagination v-if="tableDataTotal > 10" :showSizeChanger="false" showQuickJumper="true"
hideOnSinglePage="true" :pageSize="pageSize" :current="currentPage" :total="tableDataTotal"
class="pagination" @change="handelChangePage" />
</div>
</div>
</div>
</div>
</div></div>
<!-- <div v-else>
<a-table
class="ant-table-striped"
@@ -259,7 +231,8 @@ export default {
tableDataTotal: 0,
pageSize: 10,
choicecourse: true,
ddLoading:false,
ddLoading: false,
isClick: false
});
const ChoiceCourse = () => {
state.choicecourse = false;
@@ -283,7 +256,7 @@ export default {
}
};
//TODO 根据id 获取在线课信息
const getOnlineById=()=>{
const getOnlineById = () => {
}
const tableDataFunc = () => {
@@ -469,10 +442,10 @@ export default {
});
};
const updateTask = () => {
state.addLoading =true;
state.addLoading = true;
if (props.isLevel == 1) {
if(!props.isactive){
state.addLoading =false;
if (!props.isactive) {
state.addLoading = false;
message.destroy();
return message.warning("请先选中关卡");
}
@@ -483,6 +456,12 @@ export default {
l_data_id.push(item["courseId"]);
});
console.log("需要查询的在线课ID", l_data_id);
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistence({
chapterId: Number(props.isactive),
courseTaskId: l_data_id,
@@ -503,7 +482,8 @@ export default {
}
message.destroy();
message.warning("在线课" + tipStr + "重复添加");
state.addLoading =false;
state.isClick = false;
state.addLoading = false;
return;
} else {
state.addOnlineList.map((value) => {
@@ -517,7 +497,7 @@ export default {
type: 1,
})
.then((res) => {
if(res.data.code == 200){
if (res.data.code == 200) {
message.destroy();
message.success(
`${props.edit ? "编辑" : "新增"}关卡任务成功`
@@ -526,19 +506,22 @@ export default {
ctx.emit("changeData", false);
closeDrawer();
state.addLoading = false;
state.isClick = false;
})
.catch(() => {
state.addLoading =false;
state.addLoading = false;
message.destroy();
message.error(
`${props.edit ? "编辑" : "新增"}关卡任务失败`
);
state.isClick = false;
});
});
}
})
.catch((err) => {
console.log(err);
state.isClick = false;
});
} else if (props.isLevel == 2) {
console.log("我是要便利的数据2", state.addOnlineList);
@@ -548,6 +531,12 @@ export default {
p_data_id.push(item["courseId"]);
});
console.log("需要查询的在线课ID", p_data_id);
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistenceProject({
courseTaskId: p_data_id,
projectId: Number(props.projectId),
@@ -568,6 +557,7 @@ export default {
}
message.destroy();
message.warning("在线课" + tipStr + "重复添加");
state.isClick = false;
return;
} else {
state.addOnlineList.map((value) => {
@@ -585,10 +575,12 @@ export default {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
state.isClick = false;
});
});
}
@@ -604,12 +596,18 @@ export default {
p_data_id.push(item["courseId"]);
});
console.log("需要查询的在线课ID", p_data_id);
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
IsExistenceProjectTemplate({
courseTaskId: p_data_id,
projectTemplateId:props.projectTemplateId,
stageId: props.chooseStageId || 0,
projectTemplateId: props.projectTemplateId,
templateStageId: props.chooseStageId || 0,
type: 1,
}).then((res)=>{
}).then((res) => {
console.log("项目中是否包含此在线课了", res);
if (res.data.data.length) {
let strdata = res.data.data;
@@ -623,11 +621,12 @@ export default {
}
message.destroy();
message.warning("在线课" + tipStr + "重复添加");
state.isClick = false;
return;
}else{
} else {
state.addOnlineList.map((value) => {
console.log( props, props.projectTemplateId,props.projectTaskId)
console.log(props, props.projectTemplateId, props.projectTaskId)
addTempTask({
courseId: value.num,
name: value.name,
@@ -637,15 +636,17 @@ export default {
type: 1,
})
.then((res) => {
console.log('新增或者编辑在线课',res)
console.log('新增或者编辑在线课', res)
message.destroy();
message.success(`${props.edit ? "编辑" : "新增"}模板库任务成功`);
ctx.emit("changeData", false);
closeDrawer();
state.isClick = false;
})
.catch(() => {
message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}模板库任务失败`);
state.isClick = false;
});
})
}
@@ -700,6 +701,7 @@ export default {
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addonlineDrawer {
.drawerMain {
.header {
@@ -709,6 +711,7 @@ export default {
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -717,31 +720,38 @@ export default {
margin-left: 24px;
}
}
.contentMain {
padding-right: 12px;
.main_items {
display: flex;
margin-top: 32px;
margin-bottom: 12px;
flex-wrap: wrap;
.mi_ipts {
display: flex;
margin-bottom: 20px;
.mii_ipt {
display: flex;
align-items: center;
margin-right: 24px;
.ipt_name {
white-space: nowrap;
}
}
}
.mi_btns {
display: flex;
margin-left: 38px;
margin-bottom: 20px;
cursor: pointer;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
@@ -752,9 +762,11 @@ export default {
justify-content: center;
margin-left: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -762,48 +774,61 @@ export default {
margin-left: 5px;
}
}
.btn1 {
background: rgb(64, 158, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/search0.png");
}
.btnText {
color: rgb(255, 255, 255);
}
}
.btn2 {
background: rgb(255, 255, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/reset1.png");
}
.btnText {
color: rgb(64, 158, 255);
}
}
.btn1:hover {
background: rgb(255, 255, 255);
.search {
background-image: url("@/assets/images/courseManage/search1.png");
}
.btnText {
color: #4ea6ff;
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("@/assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
@@ -811,9 +836,11 @@ export default {
margin-bottom: 3px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.notice_icon {
width: 14px;
height: 14px;
@@ -823,32 +850,38 @@ export default {
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
}
.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 {
.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 {
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
@@ -859,6 +892,7 @@ export default {
}
}
}
.main_btns {
height: 72px;
width: 100%;
@@ -868,6 +902,7 @@ export default {
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
@@ -877,6 +912,7 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;

View File

@@ -155,6 +155,7 @@ export default {
inputV2: "",
textV1: "",
title: null,
isClick: false
});
const closeDrawer = () => {
ctx.emit("update:addrefVisible", false);
@@ -253,6 +254,14 @@ export default {
return message.warning("请输入合法的链接地址");
}
}
if(state.isClick){
message.destroy();
message.error('请勿频繁点击')
return
}
state.isClick = true;
let obj = {
linkAddress: state.inputV2,
linkDescription: state.textV1,
@@ -266,8 +275,11 @@ export default {
message.success("编辑成功");
await updateTask(res);
ctx.emit("changeData", false);
state.isClick = false;
})
.catch(() => {});
.catch(() => {
state.isClick = false;
});
} else {
api
.createExternalChain(obj)
@@ -275,8 +287,11 @@ export default {
message.success("提交成功");
await updateTask(res);
ctx.emit("changeData", false);
state.isClick = false;
})
.catch(() => {});
.catch(() => {
state.isClick = false;
});
}
};
// 查询任务

View File

@@ -1,19 +1,11 @@
<template>
<a-drawer
:visible="addtestVisible"
class="drawerStyle addtestDrawer"
width="80%"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addtestVisible" class="drawerStyle addtestDrawer" width="80%" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div class="headerTitle">{{ edit ? "编辑" : "添加" }}考试</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2" />
</div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
<div style="display: flex; flex-direction: row; padding-top: 0px">
@@ -39,30 +31,20 @@
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 3px">考试名称</span>
</div>
<div class="btnbox">
<a-input
v-model:value="test.examinationName"
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称"
:maxlength="20"
/>
<a-input v-model:value="test.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=""
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 3px">选择试卷</span>
</div>
@@ -80,11 +62,8 @@
</div>
<!-- 选择面授侧弹窗 -->
<div>
<sel-facet
v-model:selfacetVisible="selfacetvisible"
v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName"
/>
<sel-facet v-model:selfacetVisible="selfacetvisible" v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName" />
</div>
<!-- 选择面授侧弹窗 -->
</div>
@@ -92,41 +71,25 @@
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<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="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
/>
<a-range-picker style="width: 400px; height: 40px; border-radius: 8px" show-time format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime" :placeholder="[' 开始时间', ' 结束时间']" />
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<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="test.examinationDuration"
></a-input-number>
<a-input-number :min="0" :max="300" :precision="0" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="test.examinationDuration"></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span>
</div>
</div>
@@ -135,14 +98,8 @@
<span style="margin-right: 3px">考试说明</span>
</div>
<div class="textarea">
<a-textarea
v-model:value="test.examinationExplain"
placeholder="请输入考试说明"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
<a-textarea v-model:value="test.examinationExplain" placeholder="请输入考试说明" allow-clear show-count
:maxlength="200" :rows="6" />
</div>
</div>
<div class="main_item2">
@@ -153,21 +110,13 @@
<div class="setbox">
<div class="timerbox">
<span>允许重复考试</span>
<a-input-number
:min="-1"
:max="300"
:precision="0"
style="
<a-input-number :min="-1" :max="300" :precision="0" style="
width: 100px;
height: 32px;
border-radius: 8px;
overflow: hidden;
"
v-model:value="test.examinationLimit"
></a-input-number>
<span style="color: #999999; margin-left: 8px"
>,-1表示无限制</span
>
" v-model:value="test.examinationLimit"></a-input-number>
<span style="color: #999999; margin-left: 8px">,-1表示无限制</span>
</div>
</div>
</div>
@@ -178,15 +127,10 @@
<span style="margin-right: 3px">显示答案</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.showAnswers"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio1"
>允许查看
<a-radio-group style="margin-right: 12px" v-model:value="test.showAnswers">
<a-radio v-model:checked="checked" :value="1" @click="cloradio1">允许查看
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio1"
>不允许查看
<a-radio v-model:checked="checked" :value="2" @click="cloradio1">不允许查看
</a-radio>
</a-radio-group>
</div>
@@ -196,15 +140,10 @@
<span style="margin-right: 3px">显示解析</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.showAnalysis"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio2"
>允许查看
<a-radio-group style="margin-right: 12px" v-model:value="test.showAnalysis">
<a-radio v-model:checked="checked" :value="1" @click="cloradio2">允许查看
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio2"
>不允许查看
<a-radio v-model:checked="checked" :value="2" @click="cloradio2">不允许查看
</a-radio>
</a-radio-group>
</div>
@@ -214,15 +153,10 @@
<span style="margin-right: 3px">评分模式</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.scoringModel"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio3"
>最高一次
<a-radio-group style="margin-right: 12px" v-model:value="test.scoringModel">
<a-radio v-model:checked="checked" :value="1" @click="cloradio3">最高一次
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio3"
>最后一次
<a-radio v-model:checked="checked" :value="2" @click="cloradio3">最后一次
</a-radio>
</a-radio-group>
</div>
@@ -232,11 +166,8 @@
<span style="margin-right: 3px">及格线</span>
</div>
<div class="btnbox">
<a-input
v-model:value="test.passLine"
type="number"
style="width: 400px; height: 40px; border-radius: 8px"
/>
<a-input v-model:value="test.passLine" type="number"
style="width: 400px; height: 40px; border-radius: 8px" />
<span style="color: #999999; margin-left: 8px"></span>
</div>
@@ -247,33 +178,14 @@
<span style="margin-right: 3px">试题排列</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.questionArrangement"
>
<a-radio
v-model:checked="checked"
:value="1"
@click="cloradio4"
>试题乱序
<a-radio-group style="margin-right: 12px" v-model:value="test.questionArrangement">
<a-radio v-model:checked="checked" :value="1" @click="cloradio4">试题乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="2"
@click="cloradio4"
>选项乱序
<a-radio v-model:checked="checked" :value="2" @click="cloradio4">选项乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="3"
@click="cloradio4"
>全部乱序
<a-radio v-model:checked="checked" :value="3" @click="cloradio4">全部乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="4"
@click="cloradio4"
>不乱序
<a-radio v-model:checked="checked" :value="4" @click="cloradio4">不乱序
</a-radio>
</a-radio-group>
</div>
@@ -415,6 +327,7 @@ export default {
clearAll();
};
const closeDrawer2 = () => {
state.paperName = "";
state.statechoosedTime = "";
ctx.emit("update:edit", false);
ctx.emit("update:addtestVisible", false);
@@ -522,7 +435,7 @@ export default {
state.EditTestId = res.data.data.examinationId;
if (props.faceLevel) {
state.EditTestId = res.data.data.examinationId;
state.paperName = "";
closeDrawer();
} else {
if (props.isLevel == 1) {
@@ -544,7 +457,7 @@ export default {
console.log("props.edit", props.edit);
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -565,6 +478,7 @@ export default {
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -583,6 +497,7 @@ export default {
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -614,7 +529,7 @@ export default {
const changeOuter = (value) => {
state.isOuter = value;
};
const chooseTest = () => {};
const chooseTest = () => { };
const closeTag = (removedTag) => {
const tags = state.choosedTestList.filter(
(item) => item.key != removedTag
@@ -826,28 +741,33 @@ export default {
}
}
}
.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 {
.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 {
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
@@ -857,6 +777,7 @@ export default {
bottom: 20px;
}
}
.main_btns {
height: 72px;
width: 100%;

View File

@@ -362,7 +362,7 @@ const {
loading: audiLoading,
total: audiTotal
} = useBoeApiPage(AUDIENCE_LIST, audienceName.value, {
init: false,
init: true,
result: res => res.result.audienceList.map(e => ({...e, id: e.id + ''})),
totalPage: res => res.result.totalPage,
total: res => res.result.totalElement
@@ -612,6 +612,7 @@ watch(visiable, () => {
stuSelectKeys.value = []
orgSelectKeys.value = []
auditSelectKeys.value = []
stuData.value = []
selectsData.value = {
stageId: '',
studentList: [],

View File

@@ -1,30 +1,15 @@
<!-- 课件管理页面 -->
<template>
<!-- 预览弹窗 -->
<a-modal
:visible="visible"
title="查看"
:footer="null"
:closable="false"
wrapClassName="modalStyle lookCourseModal"
width="80%"
@cancel="handleCancel"
@ok="handleCancel"
>
<a-modal :visible="visible" title="查看" :footer="null" :closable="false" wrapClassName="modalStyle lookCourseModal"
width="80%" @cancel="handleCancel" @ok="handleCancel">
<div class="modalHeader">
<div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png"
/>
<img style="width: 17px; height: 18px; margin-right: 8px" src="@/assets/images/basicinfo/add.png" />
<span class="headerLeftText">预览</span>
</div>
<div style="margin-right: 57px; cursor: pointer">
<img
@click="handleCancel"
style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png"
/>
<img @click="handleCancel" style="width: 22px; height: 22px" src="@/assets/images/basicinfo/close22.png" />
</div>
</div>
<div class="modalMain">
@@ -35,10 +20,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">课程名称</span>
</div>
@@ -51,27 +33,17 @@
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">封面图</span>
</div>
<img
:src="detail.picUrl"
alt="img"
style="width: 100px; height: 100px"
/>
<img :src="detail.picUrl" alt="img" style="width: 100px; height: 100px" />
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png"
alt="img" />
</div>
<span style="margin-right: 14px">目标人群</span>
</div>
@@ -94,10 +66,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">内容分类</span>
</div>
@@ -130,10 +99,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" />
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
@@ -154,50 +120,25 @@
</div>
</div>
<div class="mbl_items12">
<div
class="i12_box1"
style="position: relative"
v-for="(item, index) in detail.attach"
:key="index"
>
<div class="i12_box1" style="position: relative" v-for="(item, index) in detail.attach" :key="index">
<div class="file_img">
<img
v-if="
<img v-if="
item.indexOf('jpg') !== -1 ||
item.indexOf('jpeg') !== -1 ||
item.indexOf('png') !== -1
"
src="@/assets/images/coursewareManage/pngpic.png"
/>
" src="@/assets/images/coursewareManage/pngpic.png" />
<div v-else>
<img
v-if="item.indexOf('doc') !== -1"
src="@/assets/images/coursewareManage/docpic.png"
/>
<img v-if="item.indexOf('doc') !== -1" src="@/assets/images/coursewareManage/docpic.png" />
<div v-else>
<img
v-if="item.indexOf('xls') !== -1"
src="@/assets/images/coursewareManage/xlspic.png"
/>
<img v-if="item.indexOf('xls') !== -1" src="@/assets/images/coursewareManage/xlspic.png" />
<div v-else>
<img
v-if="item.indexOf('ppt') !== -1"
src="@/assets/images/coursewareManage/pptpic.png"
/>
<img v-if="item.indexOf('ppt') !== -1" src="@/assets/images/coursewareManage/pptpic.png" />
<div v-else>
<img
v-if="item.indexOf('pdf') !== -1"
src="@/assets/images/coursewareManage/pdfpic.png"
/>
<img v-if="item.indexOf('pdf') !== -1" src="@/assets/images/coursewareManage/pdfpic.png" />
<div v-else>
<img
v-if="item.indexOf('zip') !== -1"
src="@/assets/images/coursewareManage/zippic.png"
/>
<img
v-else
src="@/assets/images/coursewareManage/docpic.png"
/>
<img v-if="item.indexOf('zip') !== -1"
src="@/assets/images/coursewareManage/zippic.png" />
<img v-else src="@/assets/images/coursewareManage/docpic.png" />
</div>
</div>
</div>
@@ -207,8 +148,7 @@
<div class="file_detail">
<div class="file_name">
<!-- http://111.231.196.214:12016/7.231.196.214:12016/7-1670486854017.jpg -->
<span
style="
<span style="
color: #6f6f6f;
width: 200px;
display: block;
@@ -218,8 +158,7 @@
position: absolute;
top: 4px;
left: 72px;
"
>
">
{{
item.indexOf("-") !== -1
? item.slice(
@@ -243,7 +182,7 @@
</div>
</div>
</div>
<a :href="item" style="margin-left: 5px">下载</a>
<a :href="item.indexOf('http') !== -1 ? item : locationHref + item" style="margin-left: 5px">下载</a>
</div>
</div>
</div>
@@ -280,7 +219,7 @@ export default defineComponent({
},
detail: {
type: Object,
default: () => {},
default: () => { },
},
},
setup(props, { emit }) {
@@ -412,6 +351,7 @@ export default defineComponent({
],
ceshi: "https://u-pre.boe.com/upload/测试下载ppt2-1671002026755.pptx",
ceshi2: "http://111.231.196.214:12016/测试下载ppt3-1671001683026.pptx",
locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/'
});
// item.slice(
@@ -513,6 +453,7 @@ export default defineComponent({
.lookCourseModal {
.ant-modal {
.ant-modal-content {
// width:1358px !important;
.ant-modal-body {
.modalHeader {
@@ -848,9 +789,11 @@ export default defineComponent({
.fotarea {
width: calc(100% - 150px);
position: relative;
img {
max-width: 100%;
}
.fuwenben {
width: 90%;
height: 20px;