From 08fea8a1f1c9b6964cb51a658817ceb3da534f56 Mon Sep 17 00:00:00 2001 From: ywyonui Date: Fri, 20 Jun 2025 18:38:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=82=B9=E5=90=8D=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/base/server.ts | 5 + src/api/system/config/index.ts | 6 + src/pages.json | 16 +- src/pages/base/groupTeaching/dmXkList.vue | 525 ++++++++++++++++++ .../{studentRollCall.vue => dmXkkcDetail.vue} | 63 ++- .../groupTeaching/{zhujiao.vue => xkList.vue} | 112 ++-- .../{zhujiaoDetails.vue => xkkcDetail.vue} | 82 +-- src/pages/base/service/index.vue | 72 +-- 8 files changed, 715 insertions(+), 166 deletions(-) create mode 100644 src/api/system/config/index.ts create mode 100644 src/pages/base/groupTeaching/dmXkList.vue rename src/pages/base/groupTeaching/{studentRollCall.vue => dmXkkcDetail.vue} (86%) rename src/pages/base/groupTeaching/{zhujiao.vue => xkList.vue} (81%) rename src/pages/base/groupTeaching/{zhujiaoDetails.vue => xkkcDetail.vue} (71%) diff --git a/src/api/base/server.ts b/src/api/base/server.ts index 47822ba..7908ec9 100644 --- a/src/api/base/server.ts +++ b/src/api/base/server.ts @@ -41,6 +41,11 @@ export const fractionRuleApi1 = async () => { ); }; +// 查询教师信息 +export const jsdfindJsByPhoneApi = async (params: any) => { + return await get("/api/js/findJsByPhone", params); +}; + // 选课列表 export const jsdXkListApi = async (params: any) => { return await get("/mobile/js/xk/list", params); diff --git a/src/api/system/config/index.ts b/src/api/system/config/index.ts new file mode 100644 index 0000000..3e9f696 --- /dev/null +++ b/src/api/system/config/index.ts @@ -0,0 +1,6 @@ +import { get, post } from "@/utils/request"; + +//字典接口 +export const dmBeforeMinuteApi = async () => { + return await get("/api/comConfig/getDmBeforeMinute"); +}; \ No newline at end of file diff --git a/src/pages.json b/src/pages.json index 72ef592..6711c53 100644 --- a/src/pages.json +++ b/src/pages.json @@ -385,16 +385,16 @@ } }, { - "path": "pages/base/groupTeaching/zhujiao", + "path": "pages/base/groupTeaching/xkList", "style": { - "navigationBarTitleText": "zhujiao", + "navigationBarTitleText": "选课列表", "enablePullDownRefresh": false } }, { - "path": "pages/base/groupTeaching/zhujiaoDetails", + "path": "pages/base/groupTeaching/xkkcDetail", "style": { - "navigationBarTitleText": "zhujiaoDetails" + "navigationBarTitleText": "选课课程详情" } }, { @@ -412,7 +412,13 @@ } }, { - "path": "pages/base/groupTeaching/studentRollCall", + "path": "pages/base/groupTeaching/dmXkList", + "style": { + "navigationBarTitleText": "选课列表" + } + }, + { + "path": "pages/base/groupTeaching/dmXkkcDetail", "style": { "navigationBarTitleText": "学生点名", "enablePullDownRefresh": false diff --git a/src/pages/base/groupTeaching/dmXkList.vue b/src/pages/base/groupTeaching/dmXkList.vue new file mode 100644 index 0000000..0d544d9 --- /dev/null +++ b/src/pages/base/groupTeaching/dmXkList.vue @@ -0,0 +1,525 @@ + + + + + diff --git a/src/pages/base/groupTeaching/studentRollCall.vue b/src/pages/base/groupTeaching/dmXkkcDetail.vue similarity index 86% rename from src/pages/base/groupTeaching/studentRollCall.vue rename to src/pages/base/groupTeaching/dmXkkcDetail.vue index 22b7204..86afac4 100644 --- a/src/pages/base/groupTeaching/studentRollCall.vue +++ b/src/pages/base/groupTeaching/dmXkkcDetail.vue @@ -47,13 +47,13 @@ - {{ xs.xm }} + {{ xs.xsxm }} { }; // 获取学生状态选项 -const fetchStatusOptions = async () => { +const loadStatusOptions = async () => { try { // 假设字典表中考勤状态的pid为763939514,根据实际情况修改 const res = await dicApi({pid: 763939514}); @@ -177,9 +177,45 @@ const fetchStatusOptions = async () => { } }; +const loadXsList = async () => { + const res = await jsdXkXsListApi({ + xkkcId: xkkc.value.id + }); + if (res && res.resultCode === 1) { + xsList.value = res.result || []; + let sd = 0; + let qj = 0; + let qq = 0; + // 循环统计状态对应的人数 + for (let i = 0; i < xsList.value.length; i++) { + const xs = xsList.value[i]; + switch (xs.xszt) { + case "正常": + sd++; + break; + case "请假": + qj++; + break; + case "缺勤": + qq++; + break; + default: + break; + } + } + numInfo.value = { + zg: xsList.value.length, + yd: xsList.value.length - qj, + sd: sd, + qj: qj, + qq: qj + }; + } +}; + // 打开状态选择器 -const openStatusPicker = (student: any) => { - curXs.value = student; +const openStatusPicker = (xs: any) => { + curXs.value = xs; statusPickerVisible.value = true; }; @@ -187,12 +223,12 @@ const openStatusPicker = (student: any) => { const confirmStatus = (e: any) => { if (curXs.value && e.value && e.value[0]) { const selectedStatus = statusOptions.value.find( - (option: any) => option.value === e.value[0] + (option: any) => option.value === e.value[0].value ); if (selectedStatus) { // 更新当前学生状态 - curXs.value.status = selectedStatus.text; + curXs.value.xszt = selectedStatus.text; } } statusPickerVisible.value = false; @@ -215,7 +251,13 @@ const contactParent = (student: any) => { }; // 提交数据 -const submit = () => { +const submit = async () => { + const res = await jsdXkdmListApi({ + jsId: js.value.id, + xkkcId: xkkc.value.id, + dmtime: now, + xkdmList: xsList.value + }); uni.showToast({ title: "提交成功", icon: "success", @@ -223,8 +265,9 @@ const submit = () => { }; // 页面加载时获取状态选项 -onMounted(() => { - fetchStatusOptions(); +onMounted(async () => { + await loadXsList(); + await loadStatusOptions(); }); diff --git a/src/pages/base/groupTeaching/zhujiao.vue b/src/pages/base/groupTeaching/xkList.vue similarity index 81% rename from src/pages/base/groupTeaching/zhujiao.vue rename to src/pages/base/groupTeaching/xkList.vue index 8a5159f..3282d34 100644 --- a/src/pages/base/groupTeaching/zhujiao.vue +++ b/src/pages/base/groupTeaching/xkList.vue @@ -45,7 +45,6 @@ 详情 - 点名 @@ -98,7 +97,6 @@ import dayjs from "dayjs"; const { getJs } = useUserStore(); const { getData, setData } = useDataStore(); -const { sign_file } = getData; const wdNameList = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]; @@ -119,29 +117,24 @@ onMounted(() => { }); // 加载课程列表 -const loadCourseList = () => { +const loadCourseList = async () => { uni.showLoading({ title: "加载中...", }); - jsdXkListApi({ + const res = await jsdXkListApi({ jsId: getJs.id - }) - .then((res) => { - if (res.resultCode == 1) { - if (res.result && res.result.length) { - xkList.value = res.result; - switchXk(res.result[0]); - } else { - xkList.value = []; - xkData.value = {}; - xkkcList.value = []; - } - uni.hideLoading(); - } - }) - .catch(() => { - uni.hideLoading(); - }); + }); + if (res.resultCode == 1) { + if (res.result && res.result.length) { + xkList.value = res.result; + switchXk(res.result[0]); + } else { + xkList.value = []; + xkData.value = {}; + xkkcList.value = []; + } + } + uni.hideLoading(); }; // 显示选课选择器 @@ -155,43 +148,26 @@ function clickShowXkSelector() { function switchXk(xk: any) { xkData.value = xk; xkkcList.value = xk.xkkcs; - const now = dayjs(); - let wDay = now.day(); - if (wDay === 0) { - wDay = 7; - } - let mDay = now.date(); - const strDate = now.format('YYYY-MM-DD') + ' '; - for (let i = 0; i < xk.xkkcs.length; i++) { - let xkkc = xk.xkkcs[i]; - xkkc.dmFlag = false; - // 判断周期 - switch (xkkc.skzqlx) { - case '每天': - xkkc.dmFlag = true; - break; - case '每周': - const daysOfWeek = xkkc.skzq.split(',').map(Number); - xkkc.dmFlag = daysOfWeek.includes(wDay); - // 从wdNameList读取daysOfWeek对应的周几 - xkkc.skzqmc = daysOfWeek.map((day: number) => wdNameList[day - 1]).join(','); - break; - case '每月': - const daysOfMonth = xkkc.skzq.split(',').map(Number); - xkkc.dmFlag = daysOfMonth.includes(mDay); - // 从根据编号加 - xkkc.skzqmc = daysOfMonth.map((day: number) => day + "号").join(','); - break; - } - // 判断日期是否合格 - if (xkkc.dmFlag) { - // 解析上课时间 - const startTime = dayjs(strDate + xkkc.skkstime, 'YYYY-MM-DD HH:mm:ss'); - const endTime = dayjs(strDate + xkkc.skjstime, 'YYYY-MM-DD HH:mm:ss'); - xkkc.dmFlag = now.isBefore(endTime) && now.isAfter(startTime) - } - } - showXkFlag.value = false; + showXkFlag.value = false; + for (let i = 0; i < xk.xkkcs.length; i++) { + let xkkc = xk.xkkcs[i]; + // 判断周期 + switch (xkkc.skzqlx) { + case '每天': + xkkc.skzqmc = "每天"; + break; + case '每周': + const daysOfWeek = xkkc.skzq.split(',').map(Number); + // 从wdNameList读取daysOfWeek对应的周几 + xkkc.skzqmc = daysOfWeek.map((day: number) => wdNameList[day - 1]).join(','); + break; + case '每月': + const daysOfMonth = xkkc.skzq.split(',').map(Number); + // 从根据编号加 + xkkc.skzqmc = daysOfMonth.map((day: number) => day + "号").join(','); + break; + } + } // 显示切换成功提示 uni.showToast({ title: `已切换到${xk.xkmc}`, @@ -203,20 +179,10 @@ function switchXk(xk: any) { const goDetail = (xkkc: any) => { setData(xkkc); uni.navigateTo({ - url: `/pages/base/groupTeaching/zhujiaoDetails`, + url: `/pages/base/groupTeaching/xkkcDetail`, }); }; -// 跳转到点名 -const goDm = (xkkc: any) => { - setData(xkkc); - uni.navigateTo({ - url: `/pages/base/groupTeaching/studentRollCall`, - }); -}; - - - // 页面卸载前清除定时器 onBeforeUnmount(() => { }); @@ -355,14 +321,6 @@ onBeforeUnmount(() => { color: #2879ff; font-size: 14px; } - - .dm-btn { - flex: 1 0 1px; - display: inline-block; - color: #2879ff; - font-size: 14px; - text-align: right; - } } .course-info-item { diff --git a/src/pages/base/groupTeaching/zhujiaoDetails.vue b/src/pages/base/groupTeaching/xkkcDetail.vue similarity index 71% rename from src/pages/base/groupTeaching/zhujiaoDetails.vue rename to src/pages/base/groupTeaching/xkkcDetail.vue index 7146c32..393b29f 100644 --- a/src/pages/base/groupTeaching/zhujiaoDetails.vue +++ b/src/pages/base/groupTeaching/xkkcDetail.vue @@ -1,44 +1,46 @@