feat:新增关卡路径下 考试和作业的 删除、修改、添加, 增加loading效果

This commit is contained in:
王熙东
2022-11-08 16:56:03 +08:00
parent 1df8bc4f36
commit e14b5a2bce
3 changed files with 168 additions and 73 deletions

View File

@@ -3,7 +3,7 @@
@after-visible-change="afterVisibleChange"> @after-visible-change="afterVisibleChange">
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">{{ EditWorkId ? '编辑' : '添加' }}作业</div> <div class="headerTitle">{{ edit ? '编辑' : '添加' }}作业</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png" <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" /> @click="closeDrawer" />
</div> </div>
@@ -62,16 +62,20 @@
<a-button class="btn2" html-type="submit">确定</a-button> <a-button class="btn2" html-type="submit">确定</a-button>
</div> </div>
</a-form> </a-form>
</div> </div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{display:addLoading?'flex':'none'}">
<a-spin :spinning="addLoading" tip="添加中..." />
</div>
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, ref } from "vue"; import { reactive, ref, toRefs } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { createWorkTask, queryWorkDetailById, updateWorkTaskUsing } from "@/api/indexWork"; import { createWorkTask, queryWorkDetailById, updateWorkTaskUsing } from "@/api/indexWork";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask"; import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
import { storage } from "../../api/storage";
import dayjs from 'dayjs'; import dayjs from 'dayjs';
const rowSelection = ref({ const rowSelection = ref({
@@ -127,6 +131,14 @@ export default {
type: Number, type: Number,
default: null, default: null,
}, },
routerId: {
type: Number,
default: null,
},
isactive: {
type: Number,
default: null,
}
}, },
setup(props, ctx) { setup(props, ctx) {
const formState = reactive({ const formState = reactive({
@@ -134,10 +146,10 @@ export default {
workRequirement: '', workRequirement: '',
choosedTime: '', choosedTime: '',
}); });
const formRef = ref();
const state = reactive({ const state = reactive({
routerId: storage.get("routerId") ? JSON.parse(storage.get("routerId")) : null, addLoading: false,
}) })
const formRef = ref();
let checkWorkName = async (_rule, value) => { let checkWorkName = async (_rule, value) => {
if (!value) { if (!value) {
@@ -227,18 +239,14 @@ export default {
}; };
const updateWork = () => { const updateWork = () => {
state.addLoading = true;
// 如果是关卡页面进入 ---------------------------------
if (props.isLevel) {
myRouterEditTask()
} else { // 任务页面进入------------------------------
if (props.edit) { // 编辑任务 if (props.edit) { // 编辑任务
myUpdateWorkTaskUsing() myUpdateWorkTaskUsing()
} else { // 创建任务 } else { // 创建任务
console.log('创建任务***************'); console.log('创建任务***************');
myCreateWorkTask() myCreateWorkTask()
} }
}
}; };
// 新增任务 // 新增任务
@@ -258,7 +266,13 @@ export default {
"workTag": "" "workTag": ""
} }
createWorkTask(obj).then((res) => { createWorkTask(obj).then((res) => {
myProjectEditTask(res.data.data.workId); if(props.isLevel) {
// 如果是关卡页面进入 ---------------------------------
myRouterEditTask(res.data.data.workId);
}else {
myProjectEditTask(res.data.data.workId);
}
}).catch((err) => { }).catch((err) => {
message.error(`添加失败${err}`) message.error(`添加失败${err}`)
}) })
@@ -281,19 +295,26 @@ export default {
} }
updateWorkTaskUsing(editObj).then((res) => { updateWorkTaskUsing(editObj).then((res) => {
console.log(res); console.log(res);
myProjectEditTask(res.data.data.workId) if(props.isLevel) {
// 如果是关卡页面进入 ---------------------------------
myRouterEditTask(res.data.data.workId);
}else {
myProjectEditTask(res.data.data.workId);
}
}).catch((err) => { }).catch((err) => {
message.error(`编辑失败${err}`) message.error(`编辑失败${err}`)
}) })
} }
// 查询任务 // 查询任务
const queryWork = () => { const queryWork = () => {
state.addLoading = true;
queryWorkDetailById({workId:props.EditWorkId}).then((res) => { queryWorkDetailById({workId:props.EditWorkId}).then((res) => {
console.log(dayjs(res.data.data.submitStartTime).format("YYYY-MM-DD")); console.log(dayjs(res.data.data.submitStartTime).format("YYYY-MM-DD"));
formState.workName = res.data.data.workName; formState.workName = res.data.data.workName;
formState.workRequirement = res.data.data.workRequirement; formState.workRequirement = res.data.data.workRequirement;
formState.choosedTime = [dayjs(res.data.data.submitStartTime, "YYYY-MM-DD"), dayjs(res.data.data.submitEndTime, "YYYY-MM-DD")] formState.choosedTime = [dayjs(res.data.data.submitStartTime, "YYYY-MM-DD"), dayjs(res.data.data.submitEndTime, "YYYY-MM-DD")]
console.log(res); console.log(res);
state.addLoading = false;
}).catch(() => { }).catch(() => {
message.error(`查询失败`) message.error(`查询失败`)
}) })
@@ -306,7 +327,7 @@ export default {
"flag": true, "flag": true,
"name": formState.workName, "name": formState.workName,
"projectId": props.projectId, "projectId": props.projectId,
"projectTaskId": props.projectTaskId || null, "projectTaskId": props.projectTaskId || 0,
"stageId": props.chooseStageId, "stageId": props.chooseStageId,
"type": 4 "type": 4
} }
@@ -314,6 +335,7 @@ export default {
console.log(` 编辑项目成功的打印 ${res}`); console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.edit ? '编辑' : '新增'}阶段任务成功`) message.success(`${props.edit ? '编辑' : '新增'}阶段任务成功`)
ctx.emit("changeData", false); ctx.emit("changeData", false);
state.addLoading = false;
closeDrawer(); closeDrawer();
}).catch(err => { }).catch(err => {
message.error(`${props.edit ? '编辑' : '新增'}阶段任务失败`) message.error(`${props.edit ? '编辑' : '新增'}阶段任务失败`)
@@ -322,24 +344,26 @@ export default {
} }
// 新增编辑或新增关卡任务 // 新增编辑或新增关卡任务
const myRouterEditTask = () => { const myRouterEditTask = (testId) => {
let editObj1 = { let editObj1 = {
"chapterId": 70, "chapterId": props.isactive,
"courseId": 0, "courseId": testId,
"duration": 0, "duration": 30,
"flag": true, "flag": true,
"name": formState.workName, "name": formState.workName,
"routerId": Number(storage.get('routerId')), "routerId": props.routerId,
"routerTaskId": 0, "routerTaskId": props.routerTaskId || 0,
"type": 4 "type": 4
} }
RouterEditTask(editObj1).then(res => { RouterEditTask(editObj1).then(res => {
console.log(` 编辑关卡成功的打印 ${res}`); console.log(` 编辑关卡成功的打印 ${res}`);
message.success(`${props.workId ? '编辑' : '新增'}关卡任务成功`) message.success(`${props.edit ? '编辑' : '新增'}关卡任务成功`)
ctx.emit("changeData", false);
state.addLoading = false;
closeDrawer(); closeDrawer();
}).catch(err => { }).catch(err => {
message.error(`${props.workId ? '编辑' : '新增'}关卡任务失败`) message.error(`${props.edit ? '编辑' : '新增'}关卡任务失败`)
console.log(` 编辑关卡失败的打印 ${err}`); console.log(` 编辑关卡失败的打印 ${err}`);
}) })
} }
@@ -359,7 +383,7 @@ export default {
// layout, // layout,
rules, rules,
updateWork, updateWork,
state, ...toRefs(state)
}; };
}, },
}; };

View File

@@ -8,7 +8,7 @@
> >
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">{{EditTestId ? "编辑" : "添加" }}考试</div> <div class="headerTitle">{{edit ? "编辑" : "添加" }}考试</div>
<img <img
style="width: 29px; height: 29px; cursor: pointer" style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png" src="../../assets/images/basicinfo/close.png"
@@ -194,13 +194,17 @@
</div> </div>
</a-form> </a-form>
</div> </div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{display:addLoading?'flex':'none'}">
<a-spin :spinning="addLoading" tip="添加中..." />
</div>
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, ref } from "vue"; import { reactive, ref, toRefs } from "vue";
import {message} from"ant-design-vue"; import {message} from"ant-design-vue";
import {createExamination,queryExaminationDetailById,updateExamination} from "@/api/indexExam" import {createExamination,queryExaminationDetailById,updateExamination} from "@/api/indexExam"
import { ProjectEditTask } from "@/api/indexTask" import { ProjectEditTask, RouterEditTask } from "@/api/indexTask"
import dayjs from 'dayjs'; import dayjs from 'dayjs';
const rowSelection = ref({ const rowSelection = ref({
@@ -232,18 +236,26 @@ export default {
type: Number, type: Number,
default: -1, default: -1,
}, },
isactive: {
type: Number,
default: null,
},
routerId: {
type: Number,
default: null,
},
projectId: { projectId: {
type: Number, type: Number,
default: null, default: null,
}, },
routerTaskId: {
type: Number,
default: null,
},
chooseStageId: { chooseStageId: {
type: Number, type: Number,
default: null, default: null,
}, },
routerTaskId: {
type: Number,
default: 0,
},
isLevel: { // 是否是关卡页面触发 isLevel: { // 是否是关卡页面触发
type: Boolean, type: Boolean,
default: null, default: null,
@@ -271,6 +283,9 @@ export default {
showAnswers:2, showAnswers:2,
choosedTime:'', choosedTime:'',
}); });
const state = reactive({
addLoading: false,
})
const formRef = ref(); const formRef = ref();
let checkExaminationName = async (_rule, value) => { let checkExaminationName = async (_rule, value) => {
if (!value) { if (!value) {
@@ -421,20 +436,22 @@ export default {
console.log("formState", bool); console.log("formState", bool);
}; };
const queryTest = () => { const queryTest = () => {
state.addLoading = true;
console.log(props.EditTestId); console.log(props.EditTestId);
queryExaminationDetailById({examinationId:props.EditTestId}).then((res) => { queryExaminationDetailById({examinationId:props.EditTestId}).then((res) => {
formState.examinationName = res.data.data.examinationName; formState.examinationName = res.data.data.examinationName;
formState.workRequirement = res.data.data.workRequirement; formState.workRequirement = res.data.data.workRequirement;
formState.examinationDuration = res.data.data.examinationDuration; formState.examinationDuration = res.data.data.examinationDuration;
formState.examinationLimit = res.data.data.examinationLimit || -1; formState.examinationLimit = Number(res.data.data.examinationLimit) || -1;
formState.passLine = res.data.data.passLine; formState.passLine = res.data.data.passLine;
formState.examinationExplain = res.data.data.examinationExplain; formState.examinationExplain = res.data.data.examinationExplain;
formState.questionArrangement = res.data.data.questionArrangement || 1; formState.questionArrangement = Number(res.data.data.questionArrangement) || 1;
formState.scoringModel = res.data.data.scoringModel || 1; formState.scoringModel = Number(res.data.data.scoringModel) || 1;
formState.showAnalysis = res.data.data.showAnalysis || 1; formState.showAnalysis = Number(res.data.data.showAnalysis) || 1;
formState.showAnswers = res.data.data.showAnswers || 1; formState.showAnswers = Number(res.data.data.showAnswers )|| 1;
if(res.data.data.examinationEndTime && res.data.data.examinationStartTime){ if(res.data.data.examinationEndTime && res.data.data.examinationStartTime){
formState.choosedTime= [dayjs(res.data.data.examinationStartTime,"YYYY-MM-DD"),dayjs(res.data.data.examinationEndTime,"YYYY-MM-DD")] formState.choosedTime= [dayjs(res.data.data.examinationStartTime,"YYYY-MM-DD"),dayjs(res.data.data.examinationEndTime,"YYYY-MM-DD")]
state.addLoading = false;
} else { formState.choosedTime=[] } } else { formState.choosedTime=[] }
console.log(res); console.log(res);
}).catch(() => { }).catch(() => {
@@ -442,19 +459,12 @@ export default {
}) })
} }
const updateTest = () => { const updateTest = () => {
state.addLoading = true;
// 如果是关卡页面进入 ---------------------------------
if (props.isLevel) {
//.
} else { // 从任务界面进入
if(props.edit) { // 编辑任务 if(props.edit) { // 编辑任务
myUpdateExamination() myUpdateExamination()
}else { // 创建任务 }else { // 创建任务
myCreateExamination() myCreateExamination()
} }
}
} }
const myUpdateExamination = () => { const myUpdateExamination = () => {
@@ -482,7 +492,12 @@ export default {
} }
updateExamination(obj).then((res)=>{ updateExamination(obj).then((res)=>{
console.log(res); console.log(res);
myProjectEditTask(res.data.data.examinationId) // 如果是关卡页面进入 ---------------------------------
if(props.isLevel) {
myRouterEditTask(res.data.data.examinationId)
}else {
myProjectEditTask(res.data.data.examinationId)
}
}).catch(()=>{ }).catch(()=>{
message.error(`编辑失败`) message.error(`编辑失败`)
}) })
@@ -512,7 +527,11 @@ export default {
"updateUser": 0 "updateUser": 0
} }
createExamination(obj).then((res)=>{ createExamination(obj).then((res)=>{
myProjectEditTask(res.data.data.examinationId) if(props.isLevel) {
myRouterEditTask(res.data.data.examinationId)
}else {
myProjectEditTask(res.data.data.examinationId)
}
}).catch((err)=>{ }).catch((err)=>{
message.error(`添加失败${err}`) message.error(`添加失败${err}`)
}) })
@@ -533,6 +552,7 @@ export default {
console.log(` 编辑项目成功的打印 ${res}`); console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.EditTestId? '编辑' : '新增'}阶段任务成功`) message.success(`${props.EditTestId? '编辑' : '新增'}阶段任务成功`)
ctx.emit("changeData", false); ctx.emit("changeData", false);
state.addLoading = false;
closeDrawer(); closeDrawer();
}).catch(err => { }).catch(err => {
message.error(`${props.EditTestId? '编辑' : '新增'}阶段任务失败`) message.error(`${props.EditTestId? '编辑' : '新增'}阶段任务失败`)
@@ -540,6 +560,30 @@ export default {
}) })
} }
const myRouterEditTask = (testId) => {
let editObj1 = {
"chapterId": props.isactive,
"courseId": testId,
"duration": 30,
"flag": true,
"name": formState.examinationName,
"routerId": props.routerId,
"routerTaskId": props.routerTaskId || 0,
"type": 5
}
RouterEditTask(editObj1).then(res => {
console.log(` 编辑关卡成功的打印 ${res}`);
message.success(`${props.edit ? '编辑' : '新增'}关卡任务成功`)
ctx.emit("changeData", false);
state.addLoading = false;
closeDrawer();
}).catch(err => {
message.error(`${props.edit ? '编辑' : '新增'}关卡任务失败`)
console.log(` 编辑关卡失败的打印 ${err}`);
})
}
const cloradio1 = (value) => { const cloradio1 = (value) => {
if (value != "") { if (value != "") {
formState.showAnswers = ""; formState.showAnswers = "";
@@ -579,6 +623,7 @@ export default {
rules, rules,
updateTest, updateTest,
queryTest, queryTest,
...toRefs(state)
}; };
}, },
}; };

View File

@@ -208,9 +208,15 @@
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
<div> <div>
<add-homework <add-homework
flag="0" v-model:addhomeworkVisible="addhomeworkvisible"
:workId="editID" :isLevel=true
v-model:addhomeworkVisible="addhomeworkvisible" @changeData="updateTableData"
v-model:isactive="isactive"
v-model:edit="edit"
v-model:routerId="routerId"
v-model:chooseStageId="chooseStageId"
v-model:EditWorkId="EditWorkId"
v-model:routerTaskId="routerTaskId"
/> />
</div> </div>
<div class="lin"></div> <div class="lin"></div>
@@ -225,10 +231,15 @@
<!-- 添加考试侧弹窗 --> <!-- 添加考试侧弹窗 -->
<div> <div>
<add-test <add-test
:workId="editID"
@clearEditData="clearEditData"
v-model:addtestVisible="addtestvisible" v-model:addtestVisible="addtestvisible"
/> :isLevel=true
@changeData="updateTableData"
v-model:isactive="isactive"
v-model:edit="edit"
v-model:routerId="routerId"
v-model:chooseStageId="chooseStageId"
v-model:EditTestId="EditTestId"
v-model:routerTaskId="routerTaskId" />
</div> </div>
<div class="lin"></div> <div class="lin"></div>
</div> </div>
@@ -501,7 +512,7 @@
margin-right: 25px; margin-right: 25px;
cursor: pointer; cursor: pointer;
" "
@click="decideType(element.lei, element.courseId)" @click="decideType(element.lei, element.courseId,element.id)"
> >
编辑 编辑
</span> </span>
@@ -1058,6 +1069,10 @@ export default {
deleteModal: false, // 删除弹窗 deleteModal: false, // 删除弹窗
deleteID: "", // 要删除的任务的id deleteID: "", // 要删除的任务的id
editID: "", // 要编辑的任务id editID: "", // 要编辑的任务id
EditWorkId:"", // 要编辑的 workid
EditTestId: "",
routerTaskId:"",
stageId:"",
isStudy: 1, isStudy: 1,
cC: false, cC: false,
value1: "", value1: "",
@@ -1138,13 +1153,15 @@ export default {
state.visible = true; state.visible = true;
}; };
// 作业和考试的抽屉 // 作业和考试的抽屉
const showDrawerAddHomework = () => { const showDrawerAddHomework = (id, eleId) => {
state.addhomeworkvisible = true; state.addhomeworkvisible = true;
state.ListChoosedId = 0; state.EditWorkId = id;
state.routerTaskId = eleId;
}; };
const showDrawerAddTest = () => { const showDrawerAddTest = (id,eleId) => {
state.addtestvisible = true; state.addtestvisible = true;
state.ListChoosedId = 0; state.EditTestId = id;
state.routerTaskId = eleId;
}; };
//测试评估投票抽屉 //测试评估投票抽屉
const showDrawerAddEval = () => { const showDrawerAddEval = () => {
@@ -1183,12 +1200,16 @@ export default {
} }
} }
}; };
const getDetail = (index) => { //数据变化
const updateTableData = (data) => {
console.log("添加数据", data);
getDetail();
};
const getDetail = () => {
GetRouterDetail(state.routerId) GetRouterDetail(state.routerId)
.then((res) => { .then((res) => {
state.level = res.data.data.chapterList; state.level = res.data.data.chapterList;
console.log(state.level); if (state.level.length > 0) {
if (index == 0 && state.level.length > 0) {
dataAssignment(state.level[0].chapterId); dataAssignment(state.level[0].chapterId);
state.isactive = state.level[0].chapterId; state.isactive = state.level[0].chapterId;
} }
@@ -1535,7 +1556,7 @@ export default {
document.getElementsByTagName("main")[0].style.background = document.getElementsByTagName("main")[0].style.background =
"rgb(245, 247, 250,1)"; "rgb(245, 247, 250,1)";
document.getElementsByTagName("main")[0].style.boxShadow = "none"; document.getElementsByTagName("main")[0].style.boxShadow = "none";
getDetail(0); getDetail();
}); });
onUnmounted(() => { onUnmounted(() => {
document.getElementsByTagName("main")[0].style.background = "#ffffff"; document.getElementsByTagName("main")[0].style.background = "#ffffff";
@@ -1569,17 +1590,15 @@ export default {
state.editID = ""; state.editID = "";
}; };
const deleteLevelTask = () => { const deleteLevelTask = () => {
deleteStudyTask({ routerTaskIds: state.deleteID }).then((res) => deleteStudyTask({ routerTaskIds: state.deleteID }).then((res) =>{
console.log("删除成功", res) state.deleteModal = false
); message.success('删除成功')
// RouterDeleteTask(state.listChoosedId) getDetail();
// .then((res) => { console.log("删除成功", res)
// console.log(`删除成功${res}`); }).catch((err) =>{
// message.success("删除成功"); message.error('删除失败');
// }) console.log(err);
// .catch((err) => { })
// console.log(`删除失败${err}`);
// });
}; };
const showDrawerAddLive = () => { const showDrawerAddLive = () => {
@@ -1596,7 +1615,7 @@ export default {
// 子组件触发的清空 editid 事件 // 子组件触发的清空 editid 事件
const clearEditData = () => { const clearEditData = () => {
state.editID = ""; state.editID = "";
getDetail(0); getDetail();
}; };
//选择单个任务 //选择单个任务
@@ -1665,6 +1684,7 @@ export default {
console.log(res); console.log(res);
message.destroy(); message.destroy();
message.success("批量删除成功"); message.success("批量删除成功");
getDetail();
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
@@ -1701,12 +1721,17 @@ export default {
state.EditLiveId = id; state.EditLiveId = id;
}; };
//编辑的按钮 //编辑的按钮
const decideType = (type, id) => { const decideType = (type, id, eleId) => {
state.edit = true;
console.log(type, id); console.log(type, id);
if (type == "外链") { if (type == "外链") {
showEditRefDrawer(id); showEditRefDrawer(id);
} else if (type == "直播") { } else if (type == "直播") {
showEditLiveDrawer(id); showEditLiveDrawer(id);
}else if (type == "作业") {
showDrawerAddHomework(id,eleId);
}else if (type == "考试") {
showDrawerAddTest(id,eleId);
} }
}; };
return { return {
@@ -1750,6 +1775,7 @@ export default {
showEditRefDrawer, showEditRefDrawer,
showEditLiveDrawer, showEditLiveDrawer,
decideType, decideType,
updateTableData,
}; };
}, },
}; };