From 3f83dd68a9d15a06176c34dc04643059386eecc3 Mon Sep 17 00:00:00 2001 From: huangzhe <3451701311@qq.com> Date: Tue, 19 Aug 2025 10:05:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=87=BD=E6=95=B0=E6=8A=BD?= =?UTF-8?q?=E7=A6=BB=EF=BC=8C=E4=BC=98=E5=8C=96=E7=95=8C=E9=9D=A2=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 抽离出提示语内容 现在提示语可随着选择的时间自由变动 --- src/views/courselibrary/CoursewareManage.vue | 44 +++++++++----------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 4d630252..67c27054 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -803,7 +803,7 @@

面授开始前x分钟至面授时间开始后x分钟,允许进行签到。

- +
@@ -1419,7 +1419,7 @@ import DropDown from "@/components/common/DropDown"; import { checkPer, checkOwner } from "@/utils/utils"; import dayjs from "dayjs"; import { duration } from "moment"; -import { DeleteOutlined, DownOutlined ,QuestionCircleOutlined } from "@ant-design/icons-vue"; +import { DeleteOutlined, DownOutlined, QuestionCircleOutlined } from "@ant-design/icons-vue"; //列表表格 const moreLine = (item) => { @@ -5062,9 +5062,23 @@ export default defineComponent({ }; /** - * 提示签到时间的范围 + * 提示签到时间的范围提示语 */ - const signDateTimeRange = ref("默认"); + const signDateTimeRange = computed(() => { + const classStartTime = dayjs(state.xjkkinputV3[0]) + const classEndTime = dayjs(state.xjkkinputV3[1]) + const endSignTime = dayjs(classEndTime.add(1, "day").format("YYYY-MM-DD")).subtract(1, "second").format("YYYY-MM-DD HH:mm:ss") + const startSignTime = dayjs(classStartTime.format("YYYY-MM-DD")).format("YYYY-MM-DD HH:mm:ss") + + if (signDateTimeType.value === signTimeSection.NoLimit) { + return `( 当前时间 至 ${endSignTime} )` + } else if (signDateTimeType.value === signTimeSection.OpenDay) { + return `( ${startSignTime} 至 ${endSignTime} )` + } else if (signDateTimeType.value === signTimeSection.Custom) { + return "" + } + return "" + }) function resetSignDateTime() { signDateTimeType.value = 0; @@ -5107,20 +5121,15 @@ export default defineComponent({ signDateTimeType.value = type; if (type === signTimeSection.NoLimit) { // 如果不限制,那么就是从当前时间开始,到课程结束时间结束 - signDateTimeRange.value = `( 当前时间 至 ${endSignTime} )`; - const diffStartTime = (dayjs(classStartTime).diff(dayjs(), "minute")) state.beforeValue = diffStartTime <= 0 ? 0 : diffStartTime state.afterValue = (dayjs(endSignTime).diff(classEndTime, "minute")) console.log("before value, after value", state.beforeValue, state.afterValue) } else if (type === signTimeSection.OpenDay) { // 如果限制在开课时间,选项签到规则是课程创建的“面授时间”的起始时间至开课当日23时59分。 - signDateTimeRange.value = `( ${startSignTime} 至 ${endSignTime} )`; state.afterStartValue = (dayjs(endSignTime).diff(classEndTime, "minute")) state.beforeValue = (dayjs(classStartTime).diff(startSignTime, "minute")) console.log("before value, after value", state.beforeValue, state.afterStartValue) - } else if (type === signTimeSection.Custom) { - signDateTimeRange.value = ""; } /** @@ -5135,8 +5144,8 @@ export default defineComponent({ /** * 根据考勤开始前和考勤开始后的时间,切换签到时间类型 - * @param before - * @param after + * @param before {number} + * @param after {number} */ function switchSignDateTimeType(before, after) { signDateTimeType.value = 0 @@ -5150,28 +5159,15 @@ export default defineComponent({ const isLastSecond = dayjs(end).add(after, "minute").format("HH:mm:ss") === "23:59:00" const isFirstSecond = dayjs(start).subtract(before, "minute").format("HH:mm:ss") === "00:00:00" console.log("isLastSecond", isLastSecond, "isFirstSecond", isFirstSecond); - console.log(dayjs(end).add(after, "minute").format("HH:mm:ss")); - console.log(dayjs(start).subtract(before, "minute").format("HH:mm:ss")); - - // 面授开课时间 - const classStartTime = dayjs(state.xjkkinputV3[0]) - // 面授结束时间 - const classEndTime = dayjs(state.xjkkinputV3[1]) - const endSignTime = dayjs(dayjs(classEndTime).add(1, "day").format("YYYY-MM-DD")).subtract(1, "second").format("YYYY-MM-DD HH:mm:ss") - const startSignTime = dayjs(dayjs(classStartTime).format("YYYY-MM-DD")).format("YYYY-MM-DD HH:mm:ss") if (isLastSecond) { if (isFirstSecond) { signDateTimeType.value = signTimeSection.OpenDay - signDateTimeRange.value = `( ${startSignTime} 至 ${endSignTime} )`; } else { signDateTimeType.value = signTimeSection.NoLimit - signDateTimeRange.value = `( 当前时间 至 ${endSignTime} )`; } } else { signDateTimeType.value = signTimeSection.Custom - // state.beforeValue = before - // state.afterValue = after } } // window.dayjs = dayjs; From 6d2d1164294226e5c7fe154341f96d79950b3703 Mon Sep 17 00:00:00 2001 From: huangzhe <3451701311@qq.com> Date: Wed, 20 Aug 2025 08:41:22 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=AD=BE?= =?UTF-8?q?=E5=88=B0=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/courselibrary/CoursewareManage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 67c27054..9add9c13 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -766,7 +766,7 @@
-
+
签到时间
@@ -838,7 +838,7 @@
- 是否允许未报名的学员扫码签到、扫码评估 + 允许所有学员扫码签到和评估(未勾选仅支持报名学员进行扫码签到和评估)
From 7000e3aa8c3fa00cea50cbebc81e57e2efc99065 Mon Sep 17 00:00:00 2001 From: huangzhe <3451701311@qq.com> Date: Tue, 26 Aug 2025 19:44:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E5=BD=93=E9=80=89=E6=8B=A9=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=20?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=8A=8A=E8=BE=93=E5=85=A5=E6=A1=86=E7=BD=AE?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/courselibrary/CoursewareManage.vue | 32 ++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 9add9c13..ea5e1836 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -1373,6 +1373,7 @@ import ProjPowerList from "../../components/drawers/ProjPowerList"; import ProjCheckShip from "../../components/drawers/ProjCheckPower"; import AssessmentList from "../../components/drawers/AssessmentList.vue"; import dialog from "@/utils/dialog"; +import {nextTick} from "vue" // import { queryAssessmentDetailList } from "@/api/indexResearch"; import { list, @@ -2610,6 +2611,23 @@ export default defineComponent({ codeType: null, //二维码类型 }); + let RENDER_SINGLE = true + + watch(()=>state.cstm_hs, (value)=> { + !value && (RENDER_SINGLE = true) + console.log(value, "cstm_hs"); + }) + watch(()=>[state.xjkkinputV3], (value)=>{ + // 避免初次渲染造成数据异常, 因为上面不是 props 传递进来的 + // 所以不得已作此处理 + if (RENDER_SINGLE) { + RENDER_SINGLE = false + return + } + console.log(value, "---------------") + nextTick(handleSelectSignDateTime) + }, {deep: true}) + const nums = ref(0); watch(durationText, (val) => { nums.value++; @@ -3641,6 +3659,16 @@ export default defineComponent({ }; //保存开课 const handleSureStu = async () => { + // 检测开课前后的数值是否正确 + if ( !(isNumber(state.afterStartValue) && isNumber(state.beforeValue))) { + if(!(state.afterStartValue === null && state.beforeValue === null)) { + message.warning("开始前或开始后数值有误,请重新填写") + return + } + } + function isNumber(value){ + return typeof value === 'number' && !isNaN(value); + } if (editBeginClass.value) { message.info("讲师费已进入审批阶段,无法编辑"); return; @@ -5123,8 +5151,8 @@ export default defineComponent({ // 如果不限制,那么就是从当前时间开始,到课程结束时间结束 const diffStartTime = (dayjs(classStartTime).diff(dayjs(), "minute")) state.beforeValue = diffStartTime <= 0 ? 0 : diffStartTime - state.afterValue = (dayjs(endSignTime).diff(classEndTime, "minute")) - console.log("before value, after value", state.beforeValue, state.afterValue) + state.afterStartValue = (dayjs(endSignTime).diff(classEndTime, "minute")) + console.log("before value, after value", state.beforeValue, state.afterStartValue) } else if (type === signTimeSection.OpenDay) { // 如果限制在开课时间,选项签到规则是课程创建的“面授时间”的起始时间至开课当日23时59分。 state.afterStartValue = (dayjs(endSignTime).diff(classEndTime, "minute"))