fix:修改面授课签到时间范围

This commit is contained in:
lixg
2022-12-18 11:05:31 +08:00
parent fed53be26a
commit 15f3dcccf9
5 changed files with 158 additions and 134 deletions

View File

@@ -42,8 +42,7 @@
class="btn"
style="margin-right: 20px"
:style="{
background:
data.signFlag || !isAllowSign ? '#999' : 'rgb(57, 146, 249)',
background: data.signFlag ? '#999' : 'rgb(57, 146, 249)',
}"
@click="signClick"
>{{ data.signFlag ? "已签到" : "签到" }}
@@ -226,10 +225,10 @@
</template>
<script setup>
import { computed, reactive, toRefs, watch } from "vue";
import { computed, reactive, toRefs, watch, onUnmounted } from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import { request, useRequest } from "@/api/request";
import { STU_OFFCOURSE_DETAIL } from "@/api/api";
import { STU_OFFCOURSE_DETAIL, TASK_BROADCAST_SIGN } from "@/api/api";
import { useRoute, useRouter } from "vue-router";
import { useUserInfo } from "@/api/utils";
import { ElMessage } from "element-plus";
@@ -263,56 +262,45 @@ let timer = null;
//判断能否签到
function isSignClick() {
timer = setInterval(() => {
let beginTime = new Date(data.value.planDto.beginTime).getTime();
let endTime = !data.value.planDto.afterStart
? new Date(data.value.planDto.endTime).getTime()
: new Date(data.value.planDto.beginTime).getTime();
let nowTime = new Date().getTime();
if (data.value.planDto.beforeStart && data.value.planDto.afterStart) {
//有开始前有开始后
let beginTime =
new Date(data.value.planDto.beginTime).getTime() -
data.value.planDto.beforeStart * 60 * 1000;
let endTime =
new Date(data.value.planDto.beginTime).getTime() +
data.value.planDto.afterStart * 60 * 1000;
let nowTime = new Date().getTime();
if (nowTime < endTime && nowTime > beginTime) {
state.isAllowSign = true;
} else {
state.isAllowSign = false;
}
} else if (
!data.value.planDto.beforeStart &&
!data.value.planDto.afterStart
) {
//开始前开始后都没有
state.isAllowSign = true;
beginTime = beginTime - data.value.planDto.beforeStart * 60 * 1000;
endTime = endTime + data.value.planDto.afterStart * 60 * 1000;
console.log("1111");
} else if (
data.value.planDto.beforeStart &&
!data.value.planDto.afterStart
) {
//只有开始前无开始后
let beginTime =
new Date(data.value.planDto.beginTime).getTime() -
data.value.planDto.beforeStart * 60 * 1000;
let nowTime = new Date().getTime();
if (nowTime > beginTime) {
state.isAllowSign = true;
} else {
state.isAllowSign = false;
}
beginTime = beginTime - data.value.planDto.beforeStart * 60 * 1000;
console.log("11112222");
} else if (
!data.value.planDto.beforeStart &&
data.value.planDto.afterStart
) {
//无开始前有开始后
let endTime =
new Date(data.value.planDto.beginTime).getTime() +
data.value.planDto.afterStart * 60 * 1000;
let nowTime = new Date().getTime();
if (nowTime < endTime) {
state.isAllowSign = true;
} else {
state.isAllowSign = false;
}
endTime = endTime + data.value.planDto.afterStart * 60 * 1000;
console.log("1111333");
}
console.log("isAllowSign", state.isAllowSign);
if (nowTime < endTime && nowTime > beginTime) {
state.isAllowSign = true;
} else {
state.isAllowSign = false;
}
// console.log(
// "isAllowSign",
// state.isAllowSign,
// nowTime,
// endTime,
// beginTime,
// nowTime < endTime,
// nowTime > beginTime
// );
}, 1000);
}
isSignClick();
@@ -322,13 +310,20 @@ const signClick = () => {
if (data.value.signFlag) {
return;
}
console.log("data.signFlag", data.value.signFlag);
if (!isAllowSign) {
// console.log(
// "data.signFlag",
// data.value.signFlag,
// state.isAllowSign,
// !state.isAllowSign
// );
if (!state.isAllowSign) {
// console.log("data.signFlag", data.value.signFlag, isAllowSign);
ElMessage.info("未在签到范围内");
return;
}
data.value.signFlag = 1;
ElMessage.info("签到成功");
console.log("courseId", courseId, taskId, type);
request(TASK_BROADCAST_SIGN, { courseId: courseId, taskId, type });
};
@@ -368,6 +363,12 @@ function toExamItem(obj) {
window.open(import.meta.env.VITE_BOE_EXAM_DETAIL_URL + obj.examinationTestId); //测评
// router.push({ path: import.meta.env.VITE_BOE_EXAM_DETAIL_URL+ obj.examinationTestId });
}
onUnmounted(() => {
if (timer) {
clearInterval(timer);
}
});
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->