diff --git a/src/api/base/pbApi.ts b/src/api/base/pbApi.ts index a966b47..7a8c71b 100644 --- a/src/api/base/pbApi.ts +++ b/src/api/base/pbApi.ts @@ -55,3 +55,10 @@ export const getXcCourseListApi = async (params: any) => { export const getKyXcCourseListApi = async (params: any) => { return await get("/api/pb/getKyXcCourseList", params); }; + +/** + * 值周巡查接口 - 获取值周排班数据 + */ +export const getZbXcListApi = async (params: any) => { + return await get("/api/pbZb/getZbXcList", params); +}; diff --git a/src/api/base/server.ts b/src/api/base/server.ts index d4b9d33..ba91eb8 100644 --- a/src/api/base/server.ts +++ b/src/api/base/server.ts @@ -149,6 +149,11 @@ export const xsQjFindByIdApi = async (params: any) => { return await get("/api/xsQj/getDetail", params); }; +// 学生请假确认放行 +export const xsQjConfirmReleaseApi = async (params: any) => { + return await post("/api/xsQj/confirmRelease", params); +}; + // 学生请假审批 export const xsQjSpApi = async (params: any) => { return await post("/api/xsQj/sp", params); diff --git a/src/api/base/xcXmApi.ts b/src/api/base/xcXmApi.ts index c9b1bf5..3cb7a34 100644 --- a/src/api/base/xcXmApi.ts +++ b/src/api/base/xcXmApi.ts @@ -41,3 +41,10 @@ export const xcXmFindAllApi = async () => { export const xcXmFindByXcLxApi = async (xcLx: string) => { return await get("/api/xcXm/findByXcLx", { xcLx }); }; + +/** + * 根据排班类型ID查询项目列表 + */ +export const xcXmFindByPbLxIdApi = async (pbLxId: string) => { + return await get("/api/xcXm/findByPbLxId", { pbLxId }); +}; \ No newline at end of file diff --git a/src/api/base/xsQjApi.ts b/src/api/base/xsQjApi.ts new file mode 100644 index 0000000..45858d3 --- /dev/null +++ b/src/api/base/xsQjApi.ts @@ -0,0 +1,61 @@ +import { get, post } from "@/utils/request"; + +/** + * 查询学生请假列表 + */ +export const findXsQjListApi = async (params: any) => { + return await get("/api/xsQj/findPage", params); +}; + +/** + * 根据ID获取学生请假详情 + */ +export const findXsQjByIdApi = async (params: { id: string }) => { + return await get("/api/xsQj/getDetail", params); +}; + +/** + * 学生请假审批 + */ +export const xsQjSpApi = async (params: any) => { + return await post("/api/xsQj/sp", params); +}; + +/** + * 学生请假审批终止 + */ +export const xsQjStopApi = async (params: any) => { + return await post("/api/xsQj/stop", params); +}; + +/** + * 学生请假审批转办 + */ +export const xsQjTransferApi = async (params: any) => { + return await post("/api/xsQj/transfer", params); +}; + +/** + * 学生请假统计 + * @param date 统计日期 格式:yyyy-MM-dd,不传默认当天 + */ +export const xsQjStatisticsApi = async (params?: { date?: string }) => { + return await get("/api/xsQj/statistics", params); +}; + +/** + * 获取学生请假审批流程 + * @param ywId 业务ID + * @param ywType 业务类型 + */ +export const getXsQjApprovalProcessApi = (ywId: string, ywType: string = 'XS_QJ') => { + return get("/api/lcglSp/getByYwIdAndYwType", { ywId, ywType }); +}; + +/** + * 确认放行 + */ +export const confirmReleaseApi = async (params: { id: string; fxjsId: string; fxjsxm: string }) => { + return await post("/api/xsQj/confirmRelease", params); +}; + diff --git a/src/api/base/zbXcApi.ts b/src/api/base/zbXcApi.ts new file mode 100644 index 0000000..7cb5d46 --- /dev/null +++ b/src/api/base/zbXcApi.ts @@ -0,0 +1,37 @@ +import { get, post } from "@/utils/request"; + +/** + * 分页查询值周巡查记录 + */ +export const zbXcFindPageApi = async (params: any) => { + return await get("/api/zbXc/findPage", params); +}; + +/** + * 新增/修改值周巡查记录 + */ +export const zbXcSaveApi = async (params: any) => { + return await post("/api/zbXc/save", params); +}; + +/** + * 删除值周巡查记录 + */ +export const zbXcLogicDeleteApi = async (params: any) => { + return await post("/api/zbXc/logicDelete", params); +}; + +/** + * 根据id查询值周巡查记录 + */ +export const zbXcFindByIdApi = async (params: any) => { + return await get("/api/zbXc/findById", params); +}; + +/** + * 查询全部值周巡查记录 + */ +export const zbXcFindAllApi = async () => { + return await get("/api/zbXc/findAll"); +}; + diff --git a/src/pages.json b/src/pages.json index ff71cf3..ce6d5d0 100644 --- a/src/pages.json +++ b/src/pages.json @@ -706,6 +706,14 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/view/routine/jstxl/index", + "style": { + "navigationBarTitleText": "教师通讯录", + "enablePullDownRefresh": false + } + }, + { "path": "pages/view/homeSchool/parentAddressBook/index", "style": { @@ -863,6 +871,27 @@ "navigationBarTitleText": "课业巡查记录" } }, + { + "path": "pages/view/routine/kefuxuncha/zbList", + "style": { + "navigationBarTitleText": "值周巡查", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/kefuxuncha/zbDetail", + "style": { + "navigationBarTitleText": "值周巡查详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/kefuxuncha/zbRecord", + "style": { + "navigationBarTitleText": "值周巡查记录", + "enablePullDownRefresh": false + } + }, { "path": "pages/base/xs/qj/sp", "style": { @@ -877,6 +906,20 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/base/xs/qj/detailPush", + "style": { + "navigationBarTitleText": "学生请假推送", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/base/xs/qj/statistics", + "style": { + "navigationBarTitleText": "学生请假统计", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/analysis/xs/studentArchive", "style": { diff --git a/src/pages/base/service/index.vue b/src/pages/base/service/index.vue index e8780de..2e4f6d4 100644 --- a/src/pages/base/service/index.vue +++ b/src/pages/base/service/index.vue @@ -544,6 +544,14 @@ const sections = reactive([ permissionKey: "home-dmtj", // 点名统计权限编码 path: "/pages/view/analysis/xk/dmXkList", }, + { + id: "hs6", + icon: "xsqj", + text: "学生请假", + show: true, + permissionKey: "home-xsqj", // 点名统计权限编码 + path: "/pages/base/xs/qj/statistics", + }, ], }, { @@ -583,6 +591,14 @@ const sections = reactive([ permissionKey: "personnel-gzt", // 工资条权限编码 path: "/pages/view/hr/salarySlip/index", }, + { + id: "hr4", + icon: "jstxl", + text: "教师通讯录", + show: true, + permissionKey: "personnel-jstxl", // 教师通讯录权限编码 + path: "/pages/view/routine/jstxl/index", + }, ], }, diff --git a/src/pages/base/xs/qj/detail.vue b/src/pages/base/xs/qj/detail.vue index cbf689d..b57468a 100644 --- a/src/pages/base/xs/qj/detail.vue +++ b/src/pages/base/xs/qj/detail.vue @@ -54,10 +54,10 @@ @@ -66,43 +66,108 @@ diff --git a/src/pages/base/xs/qj/detailPush.vue b/src/pages/base/xs/qj/detailPush.vue new file mode 100644 index 0000000..f3f8c19 --- /dev/null +++ b/src/pages/base/xs/qj/detailPush.vue @@ -0,0 +1,355 @@ + + + + + diff --git a/src/pages/base/xs/qj/sp.vue b/src/pages/base/xs/qj/sp.vue index 9a15b50..96e6407 100644 --- a/src/pages/base/xs/qj/sp.vue +++ b/src/pages/base/xs/qj/sp.vue @@ -4,8 +4,7 @@ - {{ xxtsData.xxzy }} - 学生{{ qjData.xsxm }}的请假申请 + 学生【{{ qjData.xsxm }}】的请假申请 @@ -43,8 +42,16 @@ @@ -61,24 +68,25 @@ import YwConfirm from "@/pages/components/YwConfirm/index.vue"; import { XkTfPageUtils } from "@/utils/xkTfPageUtils"; const { getJs, loginByOpenId } = useUserStore(); -const { getQjData, setXxts, setQjData, getXxts } = useDataStore(); +const dataStore = useDataStore(); +const { setXxts, setQjData } = dataStore; const dbFlag = ref(false); // 从URL参数获取请假ID const qjId = computed(() => { - return getQjData.id || ''; + return (dataStore.qjData as any)?.id || ''; }) const spParams = computed(() => { return { - xxtsId: getXxts.id, + xxtsId: (dataStore.xxts as any)?.id, ywId: qjId.value }; }); -// 请假基础数据 -const qjData = computed(() => getQjData || {}); +// 请假基础数据 - 直接访问 store 的 state,保持响应式 +const qjData = computed(() => (dataStore.qjData || {}) as any); const xxtsData = ref({}) onLoad(async (data: any) => { @@ -93,6 +101,9 @@ onLoad(async (data: any) => { return; } + // 等待下一个 tick 确保响应式更新完成 + await nextTick(); + try { // 优先从后端根据url中的id去查询Xxts const xxtsRes = await xxtsFindByIdApi({ id: data.id }); @@ -108,22 +119,27 @@ onLoad(async (data: any) => { } setXxts(xxts); + // 等待下一个 tick 确保响应式更新完成 + await nextTick(); + // 根据主表ID去查询学生请假信息 const res = await xsQjFindByIdApi({ id: xxts.xxzbId }); const xsQj = res.result || {}; - if (xsQj.spResult != "A" && getXxts && getXxts.dbZt === "A") { + + if (xsQj.spResult != "A" && dataStore.xxts && (dataStore.xxts as any).dbZt === "A") { uni.reLaunch({ url: '/pages/base/xs/qj/detail' }); const flag = await XkTfPageUtils.updateXxts(); } else { - nextTick(() => { - setQjData(xsQj); - }); + setQjData(xsQj); + + // 等待下一个 tick 确保响应式更新完成 + await nextTick(); } } } catch (error) { console.error("获取待办信息失败", error); // 如果获取Xxts失败,回退到原来的逻辑 - const xxtsData = getXxts; + const xxtsData = dataStore.xxts as any; if (xxtsData && xxtsData.dbZt === "B") { setQjData({ id: data.id }); let url = "/pages/base/xs/qj/detail"; @@ -131,9 +147,10 @@ onLoad(async (data: any) => { return; } const res = await xsQjFindByIdApi({ id: data.id }); - nextTick(() => { - setQjData(res.result); - }); + setQjData(res.result); + + // 等待下一个 tick 确保响应式更新完成 + await nextTick(); } } else { dbFlag.value = false; @@ -159,6 +176,7 @@ onLoad(async (data: any) => { font-weight: bold; color: #333; margin-bottom: 10px; + text-align: center; .applicant-name { font-size: 16px; diff --git a/src/pages/base/xs/qj/statistics.vue b/src/pages/base/xs/qj/statistics.vue new file mode 100644 index 0000000..b12949e --- /dev/null +++ b/src/pages/base/xs/qj/statistics.vue @@ -0,0 +1,547 @@ + + + + + + diff --git a/src/pages/components/YwConfirm/index.vue b/src/pages/components/YwConfirm/index.vue index d144427..dafc3ac 100644 --- a/src/pages/components/YwConfirm/index.vue +++ b/src/pages/components/YwConfirm/index.vue @@ -2,7 +2,7 @@ - + @@ -108,7 +108,7 @@ const closeDlg = () => { dlgFlag.value = false; }; -const showTransfer = () => { +const handleShowTransfer = () => { Transferflag.value = true; nextTick(() => { transferRef.value.showDlg(); diff --git a/src/pages/view/routine/jstxl/index.vue b/src/pages/view/routine/jstxl/index.vue new file mode 100644 index 0000000..e98042a --- /dev/null +++ b/src/pages/view/routine/jstxl/index.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/src/pages/view/routine/kefuxuncha/xcPbList.vue b/src/pages/view/routine/kefuxuncha/xcPbList.vue index 5614b73..12f091e 100644 --- a/src/pages/view/routine/kefuxuncha/xcPbList.vue +++ b/src/pages/view/routine/kefuxuncha/xcPbList.vue @@ -264,6 +264,11 @@ const goXc = (pb: any) => { uni.navigateTo({ url: `/pages/view/routine/kefuxuncha/kyXkList`, }); + } else if (pb.xclx === 'C') { + // 值周巡查,跳转到值周巡查列表 + uni.navigateTo({ + url: `/pages/view/routine/kefuxuncha/zbList`, + }); } else { uni.showToast({ title: '未知的巡查类型', diff --git a/src/pages/view/routine/kefuxuncha/xcXkList.vue b/src/pages/view/routine/kefuxuncha/xcXkList.vue index 2ffb707..b9993ec 100644 --- a/src/pages/view/routine/kefuxuncha/xcXkList.vue +++ b/src/pages/view/routine/kefuxuncha/xcXkList.vue @@ -733,11 +733,11 @@ onBeforeUnmount(() => { font-weight: 400; word-break: break-all; - // 上课时间不换行 + // 上课时间允许多行显示 &.study-time { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + white-space: normal; + word-break: break-word; + line-height: 1.5; } } } diff --git a/src/pages/view/routine/kefuxuncha/zbDetail.vue b/src/pages/view/routine/kefuxuncha/zbDetail.vue new file mode 100644 index 0000000..9f4560a --- /dev/null +++ b/src/pages/view/routine/kefuxuncha/zbDetail.vue @@ -0,0 +1,977 @@ +