diff --git a/src/pages/view/hr/jsQj/components/jsQjDetailDk.vue b/src/pages/view/hr/jsQj/components/jsQjDetailDk.vue index 2c978c6..9ccf8fe 100644 --- a/src/pages/view/hr/jsQj/components/jsQjDetailDk.vue +++ b/src/pages/view/hr/jsQj/components/jsQjDetailDk.vue @@ -19,6 +19,10 @@ 代课老师: {{ item.jsName }} + + 确认状态: + {{ item.statusLabel }} + @@ -67,6 +71,12 @@ const jsTypeMc: any = { PM: "下午", }; +const qrStatus: any = { + "wait": "待确认", + "approved": "同意", + "rejected": "拒绝", +}; + const dkList = ref([]); watch( @@ -92,6 +102,7 @@ const init = async () => { item.jcmc = jsTypeMc[item.jcType] + "第" + item.jc + "节"; const xq: number = item.xq - 1; item.xqLabel = wdNameList.value[xq]; + item.statusLabel = qrStatus[item.qrStatus] || "未知"; return item; }); // 排序,将当前教师作为代课教师的代课数据,排在前面,并且添加一个标记 diff --git a/src/pages/view/hr/jsQj/detail.vue b/src/pages/view/hr/jsQj/detail.vue index d12316d..140249e 100644 --- a/src/pages/view/hr/jsQj/detail.vue +++ b/src/pages/view/hr/jsQj/detail.vue @@ -23,8 +23,11 @@ - - + + {{ showDkEmptyLabel }} + + @@ -54,24 +57,18 @@ import ProgressList from "./components/progressList.vue"; const { getData, setData } = useDataStore(); -const tabList = ref([{ name: "请假信息", id: "tab-qj" }]); +const tabList = ref([ + { name: "请假信息", id: "tab-qj" }, + { name: "代课信息", id: "tab-dk" }, + { name: "审批流程", id: "tab-sp" } +]); const curTabIndex = ref(0); const dbFlag = ref(false); const qjId = computed(() => getData.id); -const showDkTab = ref(false); +const showDkFlag = ref(false); +const showDkEmptyLabel = ref(''); -// 构建Tab列表 -const rebuildTabList = (showDk: boolean) => { - // 构建Tab列表 - tabList.value = [ - { name: "请假信息", id: "tab-qj" }, - ]; - if (showDk) { - tabList.value.push({ name: "代课信息", id: "tab-dk" }); - } - tabList.value.push({ name: "审批流程", id: "tab-sp" }); -}; // 切换Tab const switchTab = (index: number) => { @@ -80,8 +77,15 @@ const switchTab = (index: number) => { const handleQjDataLoaded = (data: any) => { setData(data); - showDkTab.value = !!(data && data.dkfs != 2); - rebuildTabList(showDkTab.value); + data = data || {}; + const dkfs = typeof(data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2); + const bpmStatus = typeof(data.bpmStatus) === "string" ? parseInt(data.bpmStatus) : (data.bpmStatus || 1); + showDkFlag.value = dkfs === 0 || (dkfs === 1 && bpmStatus > 4); + if (dkfs === 1) { + showDkEmptyLabel.value = "等待教科处协调"; + } else if (dkfs === 2) { + showDkEmptyLabel.value = "无需代课"; + } }; const handleDkListLoaded = (list: any[]) => { @@ -101,4 +105,12 @@ const goHome = () => { background-color: #f5f7fa; } +.empty-dk { + margin: 15px; + background-color: #fff; + border-radius: 8px; + padding: 50px 15px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); + text-align: center; +} diff --git a/src/pages/view/hr/jsQj/dkQr.vue b/src/pages/view/hr/jsQj/dkQr.vue index b97dfc2..2d6628b 100644 --- a/src/pages/view/hr/jsQj/dkQr.vue +++ b/src/pages/view/hr/jsQj/dkQr.vue @@ -1,289 +1,212 @@ + \ No newline at end of file diff --git a/src/pages/view/hr/jsQj/jwcQr.vue b/src/pages/view/hr/jsQj/jwcQr.vue index c146a13..37e92b2 100644 --- a/src/pages/view/hr/jsQj/jwcQr.vue +++ b/src/pages/view/hr/jsQj/jwcQr.vue @@ -74,14 +74,14 @@ import { navigateBack } from "@/utils/uniapp"; import { jsQjJwcQrApi } from "@/api/base/jsQjApi"; import { useUserStore } from "@/store/modules/user"; import { useDataStore } from "@/store/modules/data"; -import { ref, computed } from "vue"; -import { xxtsFindByIdApi } from "@/api/base/server"; +import { ref } from "vue"; import JsQjDetailInfo from "./components/jsQjDetailInfo.vue"; import JsQjDetailDk from "./components/jsQjDetailDk.vue"; import ProgressList from "./components/progressList.vue"; +import { QjPageUtils } from "@/utils/qjPageUtils"; -const { getJs, loginByOpenId } = useUserStore(); -const { getData, setXxts, setData, getXxts } = useDataStore(); +const { getJs } = useUserStore(); +const { setData } = useDataStore(); const tabList = ref([{ name: "请假信息", id: "tab-qj" }]); const curTabIndex = ref(0); @@ -162,50 +162,12 @@ const handleReject = async () => { }; onLoad(async (data?: any) => { - // 从待办过来的,需要从后端获取数据 - console.log(data); - if (data && data.from && data.from == "db") { - dbFlag.value = true; - - // 检查登录状态 - const isLoggedIn = await loginByOpenId(data.openId); - if (!isLoggedIn) { - console.log("用户未登录,跳过处理"); - return; - } - - try { - // 优先从后端根据url中的id去查询Xxts - const xxtsRes = await xxtsFindByIdApi({ id: data.id }); - if (xxtsRes && xxtsRes.result) { - const xxts = xxtsRes.result; - // 检查待办状态 - if (xxts.dbZt === "B") { - setData({ id: xxts.xxzbId }); - let url = "/pages/view/hr/jsQj/detail"; - uni.navigateTo({ url }); - return; - } - setXxts(xxts); - qjId.value = xxts.xxzbId; - } - } catch (error) { - console.error("获取待办信息失败", error); - // 如果获取Xxts失败,回退到原来的逻辑 - const xxtsData = getXxts; - if (xxtsData && xxtsData.dbZt === "B") { - setData({ id: data.id }); - let url = "/pages/view/hr/jsQj/detail"; - uni.navigateTo({ url }); - return; - } - qjId.value = data.id; - } - } else { - dbFlag.value = false; - // 直接加载请假详情 - qjId.value = getData.id || ''; + const ret = await QjPageUtils.init(data); + if (!ret || !ret.success) { + return; } + qjId.value = ret.qjId; + dbFlag.value = ret.dbFlag; }); diff --git a/src/pages/view/hr/jsQj/jwcXt.vue b/src/pages/view/hr/jsQj/jwcXt.vue index 677f829..7566990 100644 --- a/src/pages/view/hr/jsQj/jwcXt.vue +++ b/src/pages/view/hr/jsQj/jwcXt.vue @@ -1,366 +1,176 @@ + + + + - - - - - - 选择代课教师 - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pages/view/hr/jsQj/sp.vue b/src/pages/view/hr/jsQj/sp.vue index 968a104..5235b6b 100644 --- a/src/pages/view/hr/jsQj/sp.vue +++ b/src/pages/view/hr/jsQj/sp.vue @@ -23,8 +23,11 @@ - - + + {{ showDkEmptyLabel }} + + @@ -56,21 +59,26 @@ import { navigateBack } from "@/utils/uniapp"; import { jsQjSpApi } from "@/api/base/jsQjApi"; import { useUserStore } from "@/store/modules/user"; import { useDataStore } from "@/store/modules/data"; -import { ref, computed } from "vue"; -import { xxtsFindByIdApi } from "@/api/base/server"; +import { ref } from "vue"; import JsQjDetailInfo from "./components/jsQjDetailInfo.vue"; import JsQjDetailDk from "./components/jsQjDetailDk.vue"; import ProgressList from "./components/progressList.vue"; +import { QjPageUtils } from "@/utils/qjPageUtils"; -const { getJs, loginByOpenId } = useUserStore(); -const { getData, setXxts, setData, getXxts } = useDataStore(); +const { getJs } = useUserStore(); +const { setData } = useDataStore(); -const tabList = ref([{ name: "请假信息", id: "tab-qj" }]); +const tabList = ref([ + { name: "请假信息", id: "tab-qj" }, + { name: "代课信息", id: "tab-dk" }, + { name: "审批流程", id: "tab-sp" } +]); const curTabIndex = ref(0); const dbFlag = ref(false); const qjId = ref(''); -const showDkTab = ref(false); +const showDkFlag = ref(false); +const showDkEmptyLabel = ref(''); const [register, { getValue }] = useForm({ schema: [ @@ -90,7 +98,7 @@ const [register, { getValue }] = useForm({ }, }, { - field: "spYj", + field: "spRemark", label: "审批说明", component: "BasicInput", required: true, @@ -105,18 +113,6 @@ const [register, { getValue }] = useForm({ ], }); -// 构建Tab列表 -const rebuildTabList = (showDk: boolean) => { - // 构建Tab列表 - tabList.value = [ - { name: "请假信息", id: "tab-qj" }, - ]; - if (showDk) { - tabList.value.push({ name: "代课信息", id: "tab-dk" }); - } - tabList.value.push({ name: "审批流程", id: "tab-sp" }); -}; - // 切换Tab const switchTab = (index: number) => { curTabIndex.value = index; @@ -124,8 +120,14 @@ const switchTab = (index: number) => { const handleQjDataLoaded = (data: any) => { setData(data); - showDkTab.value = !!(data && data.dkfs != 2); - rebuildTabList(showDkTab.value); + data = data || {}; + const dkfs = typeof(data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2); + showDkFlag.value = dkfs === 0; + if (dkfs === 1) { + showDkEmptyLabel.value = "审批同意后由教科处协调"; + } else if (dkfs === 2) { + showDkEmptyLabel.value = "无需代课"; + } }; const handleDkListLoaded = (list: any[]) => { @@ -135,7 +137,7 @@ const handleDkListLoaded = (list: any[]) => { const submit = async () => { try { const formData = await getValue(); - if (!formData.spStatus || !formData.spYj) { + if (!formData.spStatus || !formData.spRemark) { uni.showToast({ title: '请填写完整的审批信息', icon: 'none' @@ -147,7 +149,7 @@ const submit = async () => { qjId: qjId.value, jsId: getJs.id, spStatus: formData.spStatus, - spYj: formData.spYj, + spRemark: formData.spRemark, }; uni.showLoading({ @@ -161,11 +163,9 @@ const submit = async () => { title: '审批提交成功', icon: 'success' }); - setTimeout(() => { - navigateBack(); - }, 1500); - + uni.reLaunch({ url: '/pages/base/message/index' }); + }, 1000); } catch (error) { uni.hideLoading(); uni.showToast({ @@ -177,50 +177,12 @@ const submit = async () => { }; onLoad(async (data?: any) => { - // 从待办过来的,需要从后端获取数据 - console.log(data); - if (data && data.from && data.from == "db") { - dbFlag.value = true; - - // 检查登录状态 - const isLoggedIn = await loginByOpenId(data.openId); - if (!isLoggedIn) { - console.log("用户未登录,跳过处理"); - return; - } - - try { - // 优先从后端根据url中的id去查询Xxts - const xxtsRes = await xxtsFindByIdApi({ id: data.id }); - if (xxtsRes && xxtsRes.result) { - const xxts = xxtsRes.result; - // 检查待办状态 - if (xxts.dbZt === "B") { - setData({ id: xxts.xxzbId }); - let url = "/pages/view/hr/jsQj/detail"; - uni.navigateTo({ url }); - return; - } - setXxts(xxts); - qjId.value = xxts.xxzbId; - } - } catch (error) { - console.error("获取待办信息失败", error); - // 如果获取Xxts失败,回退到原来的逻辑 - const xxtsData = getXxts; - if (xxtsData && xxtsData.dbZt === "B") { - setData({ id: data.id }); - let url = "/pages/view/hr/jsQj/detail"; - uni.navigateTo({ url }); - return; - } - qjId.value = data.id; - } - } else { - dbFlag.value = false; - // 直接加载请假详情 - qjId.value = getData.id || ''; + const ret = await QjPageUtils.init(data); + if (!ret || !ret.success) { + return; } + qjId.value = ret.qjId; + dbFlag.value = ret.dbFlag; }); @@ -229,34 +191,12 @@ onLoad(async (data?: any) => { background-color: #f5f7fa; } -.info-card { +.empty-dk { margin: 15px; background-color: #fff; border-radius: 8px; - padding: 15px; + padding: 50px 15px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); - - .card-header { - font-size: 16px; - font-weight: bold; - color: #333; - margin-bottom: 10px; - - .applicant-name { - font-size: 16px; - font-weight: bold; - color: #333; - } - } - - .divider { - height: 1px; - background-color: #eee; - margin-bottom: 15px; - } - - .card-body { - padding: 15px; - } + text-align: center; } diff --git a/src/pages/view/routine/xk/dm.vue b/src/pages/view/routine/xk/dm.vue index 045a51b..4861d71 100644 --- a/src/pages/view/routine/xk/dm.vue +++ b/src/pages/view/routine/xk/dm.vue @@ -147,7 +147,7 @@ const mediaData = ref({ photoList: [], videoList: [] }); -const dmPsRef = ref(null); +const dmPsRef = ref(null); const now = dayjs(); let wDay = now.day(); diff --git a/src/pages/view/routine/xk/dmIndex.vue b/src/pages/view/routine/xk/dmIndex.vue index 41df944..9d185b2 100644 --- a/src/pages/view/routine/xk/dmIndex.vue +++ b/src/pages/view/routine/xk/dmIndex.vue @@ -240,6 +240,8 @@ const goDm = (xkkc: any) => { } else { msg = "上课时间未到,无法点名"; } + // TODO: 测试阶段,默认都可以点名,不计算时间 + dmFlag = true; if (dmFlag) { setData(xkkc); uni.navigateTo({ diff --git a/src/utils/qjPageUtils.ts b/src/utils/qjPageUtils.ts new file mode 100644 index 0000000..3da8fde --- /dev/null +++ b/src/utils/qjPageUtils.ts @@ -0,0 +1,64 @@ +import { xxtsFindByIdApi } from "@/api/base/server"; +import { useUserStore } from "@/store/modules/user"; +import { useDataStore } from "@/store/modules/data"; + +const { loginByOpenId } = useUserStore(); +const { getData, setXxts, setData, getXxts } = useDataStore(); + +export const QjPageUtils = { + async init(data?: any) { + let ret = { + success: true, + dbFlag: false, + qjId: getData.id, + }; + if (!data || !data.from || data.from != "db") { + return ret; + } + // 从待办过来的,需要从后端获取数据 + ret.dbFlag = true; + // 检查登录状态 + const isLoggedIn = await loginByOpenId(data.openId); + if (!isLoggedIn) { + console.log("用户未登录,跳过处理"); + ret.success = false; + return ret; + } + let url = "/pages/base/message/index"; + try { + // 优先从后端根据url中的id去查询Xxts + const xxtsRes = await xxtsFindByIdApi({ id: data.id }); + if (xxtsRes && xxtsRes.result) { + const xxts = xxtsRes.result; + // 检查待办状态 + if (xxts.dbZt === "B") { + setData({ id: xxts.xxzbId }); + url = "/pages/view/hr/jsQj/detail"; + uni.reLaunch({ url }); + ret.success = false; + } else { + setXxts(xxts); + ret.qjId = xxts.xxzbId; + } + } else { + uni.showToast({ + title: "获取消息推送数据失败", + icon: "error", + }); + uni.reLaunch({ url }); + ret.success = false; + } + return ret; + } catch (error) { + console.error("获取待办信息失败", error); + // 如果获取Xxts失败,回退到原来的逻辑 + const xxtsData = getXxts; + if (xxtsData && xxtsData.dbZt === "B") { + setData({ id: data.id }); + uni.reLaunch({ url }); + ret.success = false; + return ret; + } + } + } +} \ No newline at end of file