102 lines
2.6 KiB
Vue
Raw Normal View History

<template>
2025-07-26 21:29:04 +08:00
<BasicLayout>
2025-08-29 01:27:54 +08:00
<view class="qj-detail">
2025-09-05 17:46:43 +08:00
<!-- 请假信息 -->
<JsQjDetailInfo
:qjId="qjId"
:dbFlag="dbFlag"
@loadQjData="handleQjDataLoaded"
/>
2025-09-05 17:46:43 +08:00
<!-- 代课信息 -->
<view class="dk-info">
<view v-if="!showDkFlag" class="empty-dk">
<view>{{ showDkEmptyLabel }}</view>
</view>
<JsQjDetailDk v-else
2025-09-05 17:46:43 +08:00
:qjId="qjId"
@loadDkList="handleDkListLoaded"
/>
</view>
2025-08-29 01:27:54 +08:00
2025-09-05 17:46:43 +08:00
<!-- 审批流程 -->
<LcglSp :yw-id="qjId" yw-type="JS_QJ" />
2025-08-29 01:27:54 +08:00
</view>
2025-07-26 21:29:04 +08:00
<template #bottom>
2025-09-22 22:20:00 +08:00
<YwConfirm :spApi="jsQjSpApi" :stopApi="jsQjStopApi" :xtDkApi="jsQjXtApi"
2025-09-22 22:30:46 +08:00
:transferApi="jsQjTransferApi" :params="spParams" :showXt="true" />
2025-07-26 21:29:04 +08:00
</template>
</BasicLayout>
</template>
<script setup lang="ts">
2025-08-29 01:27:54 +08:00
import { onLoad } from "@dcloudio/uni-app";
2025-09-22 22:20:00 +08:00
import { jsQjSpApi, jsQjStopApi, jsQjTransferApi, jsQjXtApi } from "@/api/base/jsQjApi";
2025-07-27 23:37:02 +08:00
import { useUserStore } from "@/store/modules/user";
2025-08-29 01:27:54 +08:00
import { useDataStore } from "@/store/modules/data";
import { ref } from "vue";
2025-09-05 17:46:43 +08:00
import JsQjDetailInfo from "./components/jsQjDetailInfo.vue";
import JsQjDetailDk from "./components/jsQjDetailDk.vue";
import YwConfirm from "@/pages/components/YwConfirm/index.vue";
import LcglSp from "@/components/LcglSp/index.vue";
import { QjPageUtils } from "@/utils/qjPageUtils";
2025-08-29 01:27:54 +08:00
const { getJs } = useUserStore();
const { setData, getXxts } = useDataStore();
2025-09-05 17:46:43 +08:00
const dbFlag = ref(false);
2025-08-29 01:27:54 +08:00
const qjId = ref('');
const showDkFlag = ref(false);
const showDkEmptyLabel = ref('');
2025-07-26 21:29:04 +08:00
const spParams = computed(() => {
return {
xxtsId: getXxts.id,
ywId: qjId.value
};
2025-08-29 01:27:54 +08:00
});
2025-07-26 21:29:04 +08:00
2025-08-29 01:27:54 +08:00
const handleQjDataLoaded = (data: any) => {
data = data || {};
2025-09-22 18:11:59 +08:00
setData(data);
if (data.spResult != "A" && getXxts && getXxts.dbZt === "A") {
uni.reLaunch({ url: '/pages/base/xs/qj/detail' });
}
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 = "无需代课";
}
2025-07-27 23:37:02 +08:00
};
2025-08-29 01:27:54 +08:00
const handleDkListLoaded = (list: any[]) => {
// 代课明细数据已由JsQjDetail组件处理
2025-07-27 23:37:02 +08:00
};
2025-08-29 01:27:54 +08:00
onLoad(async (data?: any) => {
const ret = await QjPageUtils.init(data);
if (!ret || !ret.success) {
return;
}
qjId.value = ret.qjId;
dbFlag.value = ret.dbFlag;
});
2025-07-26 21:29:04 +08:00
</script>
2025-07-27 23:37:02 +08:00
2025-08-29 01:27:54 +08:00
<style lang="scss" scoped>
.qj-detail {
background-color: #f5f7fa;
2025-07-27 23:37:02 +08:00
}
2025-08-29 01:27:54 +08:00
.empty-dk {
2025-08-29 01:27:54 +08:00
margin: 15px;
background-color: #fff;
border-radius: 8px;
padding: 50px 15px;
2025-08-29 01:27:54 +08:00
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
text-align: center;
2025-07-27 23:37:02 +08:00
}
</style>