调整请假审批和代课的处理
This commit is contained in:
parent
e9efeac6ff
commit
9aa15f7252
@ -1,5 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="lcgl-info">
|
<view class="lcgl-info">
|
||||||
|
<view class="flex-row items-center justify-between mb-15" v-if="showTitle">
|
||||||
|
<view class="dk-title">
|
||||||
|
<BasicTitle line title="审批流程" :isBorder="false" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<!-- 申请人 -->
|
<!-- 申请人 -->
|
||||||
<view class="info-section sqr">
|
<view class="info-section sqr">
|
||||||
<view class="section-title">申请人</view>
|
<view class="section-title">申请人</view>
|
||||||
@ -136,10 +141,12 @@ const { setLcgl } = useDataStore();
|
|||||||
// 接收外部传入属性
|
// 接收外部传入属性
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
ywId: string,
|
ywId: string,
|
||||||
ywType: string
|
ywType: string,
|
||||||
|
showTitle?: boolean
|
||||||
}>(), {
|
}>(), {
|
||||||
ywId: '',
|
ywId: '',
|
||||||
ywType: ''
|
ywType: '',
|
||||||
|
showTitle: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const sqrSp = ref<any>({});
|
const sqrSp = ref<any>({});
|
||||||
|
|||||||
@ -1,222 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="dk-info">
|
|
||||||
<view class="info-card" v-for="(item, index) in dkList" :key="index">
|
|
||||||
<view class="card-header">
|
|
||||||
<text class="applicant-name">{{ item.dktime }}({{ item.xqLabel }})的{{ item.jcmc }}</text>
|
|
||||||
<text v-if="item.jsId === jsId" class="assigned-tag">我的代课</text>
|
|
||||||
</view>
|
|
||||||
<view class="divider"></view>
|
|
||||||
<view class="card-body">
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">排课名称:</text>
|
|
||||||
<text class="value">{{ item.pkMc }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">上课时间:</text>
|
|
||||||
<text class="value">{{ item.startTime }}-{{ item.endTime }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">代课老师:</text>
|
|
||||||
<view class="value">{{ item.jsName }}</view>
|
|
||||||
</view>
|
|
||||||
<!-- <view class="info-row">
|
|
||||||
<text class="label">确认状态:</text>
|
|
||||||
<view class="value">{{ item.statusLabel }}</view>
|
|
||||||
</view> -->
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { findDkPageApi } from "@/api/base/jsQjApi";
|
|
||||||
import { useUserStore } from "@/store/modules/user";
|
|
||||||
import { ref, computed, watch, onMounted } from "vue";
|
|
||||||
|
|
||||||
const { getJs } = useUserStore();
|
|
||||||
|
|
||||||
// 接收外部传入属性
|
|
||||||
const props = withDefaults(
|
|
||||||
defineProps<{
|
|
||||||
qjId?: string;
|
|
||||||
}>(),
|
|
||||||
{
|
|
||||||
qjId: ""
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// 定义emit返回上级
|
|
||||||
const emit = defineEmits(["loadDkList"]);
|
|
||||||
|
|
||||||
// 在数据加载完成后通知父组件
|
|
||||||
const notifyParentLoaded = () => {
|
|
||||||
emit("loadDkList", dkList.value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const jsId = computed(() => getJs.id);
|
|
||||||
|
|
||||||
const wdNameList = ref<string[]>([
|
|
||||||
"周一",
|
|
||||||
"周二",
|
|
||||||
"周三",
|
|
||||||
"周四",
|
|
||||||
"周五",
|
|
||||||
"周六",
|
|
||||||
"周日",
|
|
||||||
]);
|
|
||||||
|
|
||||||
const jsTypeMc: any = {
|
|
||||||
ZAM: "早自习",
|
|
||||||
AM: "上午",
|
|
||||||
PM: "下午",
|
|
||||||
};
|
|
||||||
|
|
||||||
const qrStatus: any = {
|
|
||||||
"wait": "待确认",
|
|
||||||
"approved": "同意",
|
|
||||||
"rejected": "拒绝",
|
|
||||||
};
|
|
||||||
|
|
||||||
const dkList = ref<any>([]);
|
|
||||||
|
|
||||||
watch(
|
|
||||||
() => props.qjId,
|
|
||||||
(newVal, oldVal) => {
|
|
||||||
// 添加回调函数处理逻辑
|
|
||||||
console.log("qjId changed:", newVal, oldVal);
|
|
||||||
if (newVal != oldVal && newVal) {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
const init = async () => {
|
|
||||||
const res: any = await findDkPageApi({
|
|
||||||
qjId: props.qjId,
|
|
||||||
page: 1,
|
|
||||||
rows: 1000,
|
|
||||||
});
|
|
||||||
const rows = (res && (res.rows || res.result || res.data)) || [];
|
|
||||||
dkList.value = rows.map((item: any) => {
|
|
||||||
item.dktime = item.dktime.split(" ")[0];
|
|
||||||
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;
|
|
||||||
});
|
|
||||||
// 排序,将当前教师作为代课教师的代课数据,排在前面,并且添加一个标记
|
|
||||||
dkList.value = dkList.value.sort((a: any, b: any) => {
|
|
||||||
if (a.jsId === jsId.value) {
|
|
||||||
return -1;
|
|
||||||
} else if (b.jsId === jsId.value) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
notifyParentLoaded();
|
|
||||||
};
|
|
||||||
|
|
||||||
// 初始化
|
|
||||||
onMounted(async () => {
|
|
||||||
await init();
|
|
||||||
});
|
|
||||||
|
|
||||||
const getDkList = () => {
|
|
||||||
return dkList.value;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 暴露接口给外部调用
|
|
||||||
defineExpose({
|
|
||||||
getDkList,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.dk-info {
|
|
||||||
background-color: #f5f7fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-card {
|
|
||||||
margin: 15px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
|
|
||||||
.card-header {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
padding: 15px;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.applicant-name {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 添加指派标记样式 */
|
|
||||||
.assigned-tag {
|
|
||||||
background-color: var(--primary-color, #1890ff);;
|
|
||||||
color: white;
|
|
||||||
font-size: 12px;
|
|
||||||
padding: 5px 10px;
|
|
||||||
border-bottom-left-radius: 8px;
|
|
||||||
border-top-right-radius: 8px;
|
|
||||||
font-weight: normal;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
height: 1px;
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body {
|
|
||||||
padding: 15px;
|
|
||||||
|
|
||||||
.info-row {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #999;
|
|
||||||
width: 70px;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.info-column {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #999;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,19 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="info-card">
|
<view class="qj-info">
|
||||||
<view class="card-header">
|
<view class="flex-row items-center justify-between mx-15 mt-15">
|
||||||
<text class="applicant-name" v-if="dbFlag">{{ qjData.xxzy }}</text>
|
<view class="dk-title">
|
||||||
<text class="applicant-name" v-else>教师{{ qjData.jsName }}的请假申请</text>
|
<BasicTitle line title="请假信息" :isBorder="false" />
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="divider"></view>
|
<view class="info-card m-15">
|
||||||
<view class="card-body">
|
<view class="card-header">
|
||||||
<view class="info-row"><text class="label">请假类型:</text><text class="value">{{ qjData.qjlx }}</text></view>
|
<text class="applicant-name" v-if="dbFlag">{{ qjData.xxzy }}</text>
|
||||||
<view class="info-row"><text class="label">开始时间:</text><text class="value">{{ qjData.qjkstime }}</text></view>
|
<text class="applicant-name" v-else>教师{{ qjData.jsName }}的请假申请</text>
|
||||||
<view class="info-row"><text class="label">结束时间:</text><text class="value">{{ qjData.qjjstime }}</text></view>
|
</view>
|
||||||
<view class="info-row"><text class="label">请假时长:</text><text class="value">{{ qjData.qjsc }}</text></view>
|
<view class="card-body">
|
||||||
<view class="info-row"><text class="label">请假事由:</text><text class="value">{{ qjData.qjsy }}</text></view>
|
<view class="info-row"><text class="label">请假类型:</text><text class="value">{{ qjData.qjlx }}</text></view>
|
||||||
<view class="info-row" style="margin-bottom: 0; margin-top: 10px">
|
<view class="info-row"><text class="label">开始时间:</text><text class="value">{{ qjData.qjkstime }}</text></view>
|
||||||
<text class="label">代课方式:</text>
|
<view class="info-row"><text class="label">结束时间:</text><text class="value">{{ qjData.qjjstime }}</text></view>
|
||||||
<text class="value" :class="{ 'no-dk-style': dkfsText === '无须代课' }">{{ dkfsText }}</text>
|
<view class="info-row"><text class="label">请假时长:</text><text class="value">{{ qjData.qjsc }}</text></view>
|
||||||
|
<view class="info-row"><text class="label">请假事由:</text><text class="value">{{ qjData.qjsy }}</text></view>
|
||||||
|
<view class="info-row" style="margin-bottom: 0; margin-top: 10px">
|
||||||
|
<text class="label">代课方式:</text>
|
||||||
|
<text class="value" :class="{ 'no-dk-style': dkfsText === '无须代课' }">{{ dkfsText }}</text>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -102,16 +108,19 @@ defineExpose({
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.info-card {
|
.info-card {
|
||||||
margin: 15px;
|
margin-bottom: 30rpx;
|
||||||
background-color: #fff;
|
padding: 30rpx;
|
||||||
border-radius: 8px;
|
background: #fff;
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
border-radius: 16rpx;
|
||||||
|
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
font-size: 16px;
|
font-size: 32rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
color: #333;
|
color: #333;
|
||||||
padding: 15px;
|
border-bottom: 4rpx solid #007aff;
|
||||||
|
padding-bottom: 10rpx;
|
||||||
|
|
||||||
.applicant-name {
|
.applicant-name {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
|||||||
@ -1,43 +1,34 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="back-f8f8f8">
|
<div class="qj-dk">
|
||||||
<view class="flex-row items-center justify-between py-15">
|
<view class="flex-row items-center justify-between mx-15">
|
||||||
<view class="dk-title">
|
<view class="dk-title">
|
||||||
<BasicTitle line title="代课明细" :isBorder="false" />
|
<BasicTitle line title="代课明细" :isBorder="false" />
|
||||||
</view>
|
</view>
|
||||||
<view @click="getPkkbList">
|
<view @click="getPkkbList" v-if="isEdit">
|
||||||
<BasicIcon type="refreshempty" size="25" />
|
<BasicIcon type="refreshempty" size="25" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="dk-tabs mb-10" v-if="dkList && dkList.length">
|
<view class="dk-edit" v-if="isEdit">
|
||||||
<BasicTabs
|
<view class="dk-tabs mb-10" v-if="dkList && dkList.length">
|
||||||
class="type-tabs"
|
<BasicTabs class="type-tabs" ref="tabsRef" :list="tabList" bar-width="60px" scroll-count="4"
|
||||||
ref="tabsRef"
|
:current="curTabIndex" @change="switchTab" />
|
||||||
:list="tabList"
|
<view class="dk-card" v-if="curTabIndex === 0">
|
||||||
bar-width="60px"
|
<view class="card-body">
|
||||||
scroll-count="4"
|
<view class="info-row">
|
||||||
:current="curTabIndex"
|
<text class="label">代课老师:</text>
|
||||||
@change="switchTab"
|
<view class="value">
|
||||||
/>
|
<BasicJsPicker @change="changeJsByTy" :parent-data="tyDk" :defaultValue="tyDk.dkJsId" :multiple="false"
|
||||||
<view class="dk-card" v-if="curTabIndex === 0">
|
:excludeIds="excludeIds" />
|
||||||
<view class="card-body">
|
</view>
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">代课老师:</text>
|
|
||||||
<view class="value">
|
|
||||||
<BasicJsPicker
|
|
||||||
@change="changeJsByTy"
|
|
||||||
:parent-data="tyDk"
|
|
||||||
:defaultValue="tyDk.dkJsId"
|
|
||||||
:multiple="false"
|
|
||||||
:excludeIds="excludeIds"
|
|
||||||
/>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view v-if="curTabIndex === 1">
|
||||||
<view v-if="curTabIndex === 1">
|
<view class="dk-card">
|
||||||
<view v-for="(item, index) in kmDkList" :key="index">
|
<view class="card-header">
|
||||||
<view class="dk-card" style="margin: 0">
|
<text class="applicant-name">排课信息</text>
|
||||||
<view class="card-body">
|
</view>
|
||||||
|
<view class="card-body" style="margin-bottom: 20rpx" v-for="(item, index) in kmDkList" :key="index">
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="label">排课名称:</text>
|
<text class="label">排课名称:</text>
|
||||||
<text class="value">{{ item.pkMc }}</text>
|
<text class="value">{{ item.pkMc }}</text>
|
||||||
@ -45,29 +36,20 @@
|
|||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="label">代课老师:</text>
|
<text class="label">代课老师:</text>
|
||||||
<view class="value">
|
<view class="value">
|
||||||
<BasicJsPicker
|
<BasicJsPicker @change="changeJsByKm" :parent-data="item" :defaultValue="item.dkJsId"
|
||||||
@change="changeJsByKm"
|
:multiple="false" :excludeIds="excludeIds" />
|
||||||
:parent-data="item"
|
|
||||||
:defaultValue="item.dkJsId"
|
|
||||||
:multiple="false"
|
|
||||||
:excludeIds="excludeIds"
|
|
||||||
/>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view v-if="dkList.length > 0">
|
||||||
<view v-if="dkList.length > 0">
|
<view class="dk-card" v-for="(item, index) in dkList" :key="index">
|
||||||
<view v-for="(item, index) in dkList" :key="index">
|
|
||||||
<view class="dk-card">
|
|
||||||
<view class="card-header">
|
<view class="card-header">
|
||||||
<text class="applicant-name"
|
<text class="applicant-name">{{ item.dktime }}({{ QjPageUtils.wdNameList[item.xq - 1] }})的{{
|
||||||
>{{ item.dktime }}({{ wdNameList[item.xq - 1] }})的{{
|
item.jcmc
|
||||||
item.jcmc
|
}}</text>
|
||||||
}}</text
|
|
||||||
>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="card-body">
|
<view class="card-body">
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
@ -81,38 +63,73 @@
|
|||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="label">代课老师:</text>
|
<text class="label">代课老师:</text>
|
||||||
<view class="value" v-if="curTabIndex === 2">
|
<view class="value" v-if="curTabIndex === 2">
|
||||||
<BasicJsPicker
|
<BasicJsPicker @change="changeJs" :parent-data="item" :defaultValue="item.dkJsId" :multiple="false"
|
||||||
@change="changeJs"
|
:excludeIds="excludeIds" />
|
||||||
:parent-data="item"
|
|
||||||
:defaultValue="item.dkJsId"
|
|
||||||
:multiple="false"
|
|
||||||
:excludeIds="excludeIds"
|
|
||||||
/>
|
|
||||||
</view>
|
</view>
|
||||||
<view v-else>{{ item.dkJsName }}</view>
|
<view v-else>{{ item.dkJsName }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view v-else class="p-15 flex-row-center color-9 font-13 white-bg-color">暂无数据</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else class="p-15 flex-row-center color-9 font-13 white-bg-color"
|
|
||||||
>暂无数据</view
|
<view class="dk-info" v-else>
|
||||||
>
|
<view v-if="dkList && dkList.length">
|
||||||
</view>
|
<view class="dk-card" v-for="(item, index) in dkList" :key="index">
|
||||||
|
<view class="card-header">
|
||||||
|
<text class="applicant-name">{{ item.dktime }}({{ item.xqLabel }})的{{ item.jcmc }}</text>
|
||||||
|
<text v-if="item.jsId === jsId" class="assigned-tag">我的代课</text>
|
||||||
|
</view>
|
||||||
|
<view class="card-body">
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">排课名称:</text>
|
||||||
|
<text class="value">{{ item.pkMc }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">上课时间:</text>
|
||||||
|
<text class="value">{{ item.startTime }}-{{ item.endTime }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">代课老师:</text>
|
||||||
|
<view class="value" v-if="item.dkJsId">{{ item.jsName }}</view>
|
||||||
|
<text class="value no-teacher" v-else>没有选择代课老师</text>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="info-row">
|
||||||
|
<text class="label">确认状态:</text>
|
||||||
|
<view class="value">{{ item.statusLabel }}</view>
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-else-if="isDetail" class="empty-dk">
|
||||||
|
<view>暂无代课信息,等待教科处协调</view>
|
||||||
|
</view>
|
||||||
|
<view v-else class="empty-dk">
|
||||||
|
<view>教科处协调,请点击协调代课按钮</view>
|
||||||
|
<view>如无法协调,请点击转办按钮</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getPkkbByJsRangeTimeApi, findDkPageApi } from "@/api/base/jsQjApi";
|
|
||||||
import BasicJsPicker from "@/components/BasicJsPicker/Picker.vue";
|
import BasicJsPicker from "@/components/BasicJsPicker/Picker.vue";
|
||||||
import { useUserStore } from "@/store/modules/user";
|
import { useUserStore } from "@/store/modules/user";
|
||||||
import { useCommonStore } from "@/store/modules/common";
|
|
||||||
const { getJs } = useUserStore();
|
const { getJs } = useUserStore();
|
||||||
const { getAllJsBasicInfoVo } = useCommonStore();
|
import { QjPageUtils } from "@/utils/qjPageUtils";
|
||||||
|
|
||||||
|
const jsId = computed(() => getJs.id);
|
||||||
|
|
||||||
|
// 定义emit返回上级
|
||||||
|
const emit = defineEmits(["inited"]);
|
||||||
|
|
||||||
// 接收外部传入属性
|
// 接收外部传入属性
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
defineProps<{
|
defineProps<{
|
||||||
data?: any;
|
data?: any;
|
||||||
|
isEdit?: boolean;
|
||||||
|
isDetail?: boolean;
|
||||||
}>(),
|
}>(),
|
||||||
{
|
{
|
||||||
data: () => ({
|
data: () => ({
|
||||||
@ -121,25 +138,11 @@ const props = withDefaults(
|
|||||||
qjkstime: "", // 请假开始时间
|
qjkstime: "", // 请假开始时间
|
||||||
qjjstime: "", // 请假结束时间
|
qjjstime: "", // 请假结束时间
|
||||||
}),
|
}),
|
||||||
|
isEdit: true, // 是否可编辑
|
||||||
|
isDetail: false, // 是否是详情页面
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const wdNameList = ref<string[]>([
|
|
||||||
"周一",
|
|
||||||
"周二",
|
|
||||||
"周三",
|
|
||||||
"周四",
|
|
||||||
"周五",
|
|
||||||
"周六",
|
|
||||||
"周日",
|
|
||||||
]);
|
|
||||||
|
|
||||||
const jsTypeMc: any = {
|
|
||||||
ZAM: "早自习",
|
|
||||||
AM: "上午",
|
|
||||||
PM: "下午",
|
|
||||||
};
|
|
||||||
|
|
||||||
// 代课教师要排除自己
|
// 代课教师要排除自己
|
||||||
const excludeIds = ref<any>([]);
|
const excludeIds = ref<any>([]);
|
||||||
|
|
||||||
@ -168,15 +171,12 @@ const switchTab = (index: number) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getPkkbList = async () => {
|
const getPkkbList = async () => {
|
||||||
// 判断时间是否合法
|
// 获取排课信息
|
||||||
if (!props.data.qjjstime || !props.data.qjkstime) {
|
const newList = await QjPageUtils.getPkkbList(props.data);
|
||||||
|
if (!newList || !newList.length) {
|
||||||
|
console.log("没有排课信息");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const res = await getPkkbByJsRangeTimeApi({
|
|
||||||
jsId: props.data.jsId,
|
|
||||||
startTime: props.data.qjkstime,
|
|
||||||
endTime: props.data.qjjstime,
|
|
||||||
});
|
|
||||||
// 记录原始选课的数据
|
// 记录原始选课的数据
|
||||||
const srcData: any = {};
|
const srcData: any = {};
|
||||||
dkList.value.map((item: any) => {
|
dkList.value.map((item: any) => {
|
||||||
@ -188,26 +188,12 @@ const getPkkbList = async () => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
const kmMap: any = {};
|
const kmMap: any = {};
|
||||||
dkList.value = res.result.map((item: any) => {
|
dkList.value = newList.map((item: any) => {
|
||||||
item.dktime = item.kbtime.split(" ")[0];
|
|
||||||
item.njbjmx = item.bc + item.bjmc;
|
|
||||||
item.jcmc = jsTypeMc[item.jcType] + "第" + item.jc + "节";
|
|
||||||
const key = item.dktime + item.jcType + item.jc;
|
|
||||||
const src = srcData[key];
|
|
||||||
if (src) {
|
|
||||||
item.dkJsId = src.dkJsId;
|
|
||||||
item.dkJsName = src.dkJsName;
|
|
||||||
item.userId = src.userId;
|
|
||||||
} else {
|
|
||||||
item.dkJsId = "";
|
|
||||||
item.dkJsName = "";
|
|
||||||
item.userId = "";
|
|
||||||
}
|
|
||||||
kmMap[item.pkMc] = kmMap[item.pkMc] || {
|
kmMap[item.pkMc] = kmMap[item.pkMc] || {
|
||||||
pkMc: item.pkMc,
|
pkMc: item.pkMc,
|
||||||
};
|
};
|
||||||
return item;
|
return item;
|
||||||
});
|
})
|
||||||
// 将kmMap转换成value对应的数组
|
// 将kmMap转换成value对应的数组
|
||||||
kmDkList.value = Object.values(kmMap);
|
kmDkList.value = Object.values(kmMap);
|
||||||
};
|
};
|
||||||
@ -276,27 +262,9 @@ const validate = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const initDkList = async () => {
|
const initDkList = async () => {
|
||||||
const resJs = await getAllJsBasicInfoVo();
|
const newList = await QjPageUtils.getDkList(props.data.id, props.data.jsId);
|
||||||
const jsList = resJs.result || [];
|
|
||||||
|
|
||||||
const res: any = await findDkPageApi({
|
|
||||||
qjId: props.data.qjId,
|
|
||||||
page: 1,
|
|
||||||
rows: 1000,
|
|
||||||
});
|
|
||||||
const kmMap: any = {};
|
const kmMap: any = {};
|
||||||
const rows = (res && (res.rows || res.result || res.data)) || [];
|
dkList.value = newList.map((item: any) => {
|
||||||
dkList.value = rows.map((item: any) => {
|
|
||||||
item.dktime = item.dktime.split(" ")[0];
|
|
||||||
item.jcmc = jsTypeMc[item.jcType] + "第" + item.jc + "节";
|
|
||||||
const xq: number = item.xq - 1;
|
|
||||||
item.xqLabel = wdNameList.value[xq];
|
|
||||||
const js = jsList.find((js: any) => js.id === item.jsId);
|
|
||||||
if (js) {
|
|
||||||
item.dkJsId = js.id;
|
|
||||||
item.dkJsName = js.jsxm;
|
|
||||||
item.userId = js.userId;
|
|
||||||
}
|
|
||||||
kmMap[item.pkMc] = kmMap[item.pkMc] || {
|
kmMap[item.pkMc] = kmMap[item.pkMc] || {
|
||||||
pkMc: item.pkMc,
|
pkMc: item.pkMc,
|
||||||
};
|
};
|
||||||
@ -312,8 +280,20 @@ const getDkList = () => {
|
|||||||
return dkList.value;
|
return dkList.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 初始化
|
||||||
|
const init = async () => {
|
||||||
|
// 先根据代课初始化
|
||||||
|
await initDkList();
|
||||||
|
// 如果代课列表是空的,则根据排课初始化
|
||||||
|
if (!dkList.value || !dkList.value.length && props.isEdit) {
|
||||||
|
await getPkkbList();
|
||||||
|
}
|
||||||
|
emit("inited", dkList.value);
|
||||||
|
};
|
||||||
|
|
||||||
// 暴露接口给外部调用
|
// 暴露接口给外部调用
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
init,
|
||||||
getPkkbList,
|
getPkkbList,
|
||||||
validate,
|
validate,
|
||||||
getDkList,
|
getDkList,
|
||||||
@ -322,74 +302,170 @@ defineExpose({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.dk-tabs {
|
|
||||||
flex: 1 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dk-card {
|
.dk-card {
|
||||||
background-color: #ffffff;
|
margin-bottom: 30rpx;
|
||||||
border-radius: 8px;
|
padding: 30rpx;
|
||||||
margin-bottom: 15px;
|
background: #fff;
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
|
border-radius: 16rpx;
|
||||||
overflow: hidden;
|
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
|
||||||
}
|
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
padding: 12px 15px;
|
font-size: 32rpx;
|
||||||
border-bottom: 1px solid #f0f0f0;
|
|
||||||
|
|
||||||
.applicant-name {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
border-bottom: 4rpx solid #007aff;
|
||||||
}
|
padding-bottom: 10rpx;
|
||||||
|
|
||||||
.card-body {
|
.applicant-name {
|
||||||
padding: 15px;
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
.info-row {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #666;
|
|
||||||
width: 70px;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
color: #333;
|
||||||
flex: 1;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 20rpx;
|
||||||
|
border: 2rpx solid #eee;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
|
||||||
|
.info-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
.data {
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
width: 70px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.data {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-footer {
|
.dk-edit {
|
||||||
padding: 12px 15px;
|
.dk-tabs {
|
||||||
border-top: 1px solid #f0f0f0;
|
flex: 1 0 1px;
|
||||||
display: flex;
|
}
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #888;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.arrow {
|
.dk-card {
|
||||||
font-size: 16px;
|
margin-bottom: 15px;
|
||||||
color: #ccc;
|
overflow: hidden;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
.label {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
.data {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dk-info {
|
||||||
|
.dk-card {
|
||||||
|
margin: 15px;
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.assigned-tag {
|
||||||
|
background-color: var(--primary-color, #1890ff);
|
||||||
|
color: white;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-bottom-left-radius: 8px;
|
||||||
|
border-top-right-radius: 8px;
|
||||||
|
font-weight: normal;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
.info-row {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
.label {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
&.no-teacher {
|
||||||
|
color: #ff4757;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-column {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.label {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-right: 8px;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -3,7 +3,9 @@
|
|||||||
<view class="p-15">
|
<view class="p-15">
|
||||||
<BasicForm @register="register">
|
<BasicForm @register="register">
|
||||||
<template #dkmx>
|
<template #dkmx>
|
||||||
<JsQjDkEdit :data="formData" ref="dkRef" v-if="formData.dkfs === 0" />
|
<view class="mt-15" v-if="formData.dkfs === 0">
|
||||||
|
<JsQjDkEdit :data="formData" ref="dkRef" />
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<template #spcs>
|
<template #spcs>
|
||||||
<BasicSpCsMgr
|
<BasicSpCsMgr
|
||||||
@ -34,6 +36,7 @@ import { showToast } from "@/utils/uniapp";
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { useUserStore } from "@/store/modules/user";
|
import { useUserStore } from "@/store/modules/user";
|
||||||
import { useDicStore } from "@/store/modules/dic";
|
import { useDicStore } from "@/store/modules/dic";
|
||||||
|
import { QjPageUtils } from "@/utils/qjPageUtils";
|
||||||
|
|
||||||
const { getJs, getUser } = useUserStore();
|
const { getJs, getUser } = useUserStore();
|
||||||
const { findByPid } = useDicStore();
|
const { findByPid } = useDicStore();
|
||||||
@ -217,16 +220,29 @@ const submit = async () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (dkList.length) {
|
if (dkList.length) {
|
||||||
|
let emptyJsList:any = [];
|
||||||
params.dkList = dkList.map((item: any) => {
|
params.dkList = dkList.map((item: any) => {
|
||||||
const newItem = {...item};
|
const newItem = {...item};
|
||||||
newItem.jsId = item.dkJsId || item.jsId;
|
newItem.jsId = item.dkJsId;
|
||||||
newItem.jsName = item.dkJsName || item.jsName;
|
newItem.jsName = item.dkJsName;
|
||||||
|
newItem.userId = item.dkUserId || item.userId;
|
||||||
newItem.pkkbId = item.id;
|
newItem.pkkbId = item.id;
|
||||||
newItem.dktime = item.dktime + " 00:00:00";
|
newItem.dktime = item.dktime + " 00:00:00";
|
||||||
newItem.id = "";
|
newItem.id = "";
|
||||||
newItem.qjId = "";
|
newItem.qjId = "";
|
||||||
|
if (!newItem.jsId) {
|
||||||
|
emptyJsList.push(item);
|
||||||
|
}
|
||||||
return newItem;
|
return newItem;
|
||||||
});
|
});
|
||||||
|
if (emptyJsList.length) {
|
||||||
|
const item = emptyJsList[0];
|
||||||
|
uni.showToast({
|
||||||
|
title: `请选择${item.dktime}(${QjPageUtils.wdNameList[item.xq - 1]})的${item.jcmc}的代课教师`,
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
params.dkList = [];
|
params.dkList = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="leave-list">
|
<view class="qj-list">
|
||||||
<BasicListLayout @register="register" style="position: absolute;">
|
<BasicListLayout @register="register" style="position: absolute;">
|
||||||
<template v-slot="{ data, index }">
|
<template v-slot="{ data, index }">
|
||||||
<view class="leave-card" @click="goToDetail(data)">
|
<view class="leave-card" @click="goToDetail(data)">
|
||||||
@ -63,7 +63,7 @@ const goToDetail = (item: any | null) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.leave-list {
|
.qj-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@ -7,16 +7,13 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 代课信息 -->
|
<!-- 代课信息 -->
|
||||||
<view>
|
<view v-if="qjData && qjData.dkfs === 0 || qjData.dkfs === 1">
|
||||||
<view v-if="!showDkFlag" class="empty-dk">
|
<JsQjDkEdit :data="qjData" :is-edit="false" :is-detail="true" ref="dkRef" />
|
||||||
<view>{{ showDkEmptyLabel }}</view>
|
|
||||||
</view>
|
|
||||||
<JsQjDetailDk v-else :qjId="qjId" @loadDkList="handleDkListLoaded" />
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 审批流程 -->
|
<!-- 审批流程 -->
|
||||||
<view class="mt-15">
|
<view class="mt-15">
|
||||||
<LcglSp :yw-id="qjId" yw-type="JS_QJ" />
|
<LcglSp :yw-id="qjId" yw-type="JS_QJ" :show-title="true" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<template #bottom>
|
<template #bottom>
|
||||||
@ -33,7 +30,7 @@
|
|||||||
import { useDataStore } from "@/store/modules/data";
|
import { useDataStore } from "@/store/modules/data";
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import JsQjDetailInfo from "./components/jsQjDetailInfo.vue";
|
import JsQjDetailInfo from "./components/jsQjDetailInfo.vue";
|
||||||
import JsQjDetailDk from "./components/jsQjDetailDk.vue";
|
import JsQjDkEdit from "./components/jsQjDkEdit.vue";
|
||||||
import LcglSp from "@/components/LcglSp/index.vue";
|
import LcglSp from "@/components/LcglSp/index.vue";
|
||||||
import { onLoad } from "@dcloudio/uni-app";
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
import { QjPageUtils } from "@/utils/qjPageUtils";
|
import { QjPageUtils } from "@/utils/qjPageUtils";
|
||||||
@ -42,27 +39,21 @@ const { getQjData, setQjData, getXxts } = useDataStore();
|
|||||||
|
|
||||||
const dbFlag = ref(false);
|
const dbFlag = ref(false);
|
||||||
const qjId = ref('');
|
const qjId = ref('');
|
||||||
const showDkFlag = ref(false);
|
const qjData = ref<any>({});
|
||||||
const showDkEmptyLabel = ref('');
|
const dkRef = ref<any>(null);
|
||||||
|
|
||||||
const handleQjDataLoaded = (data: any) => {
|
const handleQjDataLoaded = (data: any) => {
|
||||||
data = data || {};
|
data = data || {};
|
||||||
|
const dkfs = typeof (data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2);
|
||||||
|
data.dkfs = dkfs;
|
||||||
setQjData(data);
|
setQjData(data);
|
||||||
|
qjData.value = data;
|
||||||
if (data.spResult && data.spResult != "A" && getXxts && getXxts.dbZt === "A") {
|
if (data.spResult && data.spResult != "A" && getXxts && getXxts.dbZt === "A") {
|
||||||
QjPageUtils.updateXxts();
|
QjPageUtils.updateXxts();
|
||||||
}
|
}
|
||||||
const dkfs = typeof (data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2);
|
nextTick(() => {
|
||||||
const bpmStatus = typeof (data.bpmStatus) === "string" ? parseInt(data.bpmStatus) : (data.bpmStatus || 1);
|
dkRef.value.init();
|
||||||
showDkFlag.value = dkfs === 0 || (dkfs === 1 && bpmStatus > 4);
|
});
|
||||||
if (dkfs === 1) {
|
|
||||||
showDkEmptyLabel.value = "等待教科处协调";
|
|
||||||
} else if (dkfs === 2) {
|
|
||||||
showDkEmptyLabel.value = "无需代课";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleDkListLoaded = (list: any[]) => {
|
|
||||||
// 代课明细数据已由JsQjDetail组件处理
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const goHome = () => {
|
const goHome = () => {
|
||||||
@ -97,13 +88,4 @@ onLoad(async (data) => {
|
|||||||
.qj-detail {
|
.qj-detail {
|
||||||
background-color: #f5f7fa;
|
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;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -7,48 +7,17 @@
|
|||||||
:dbFlag="dbFlag"
|
:dbFlag="dbFlag"
|
||||||
@loadQjData="handleQjDataLoaded"
|
@loadQjData="handleQjDataLoaded"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 代课信息 -->
|
<!-- 代课信息 -->
|
||||||
<view class="dk-info">
|
<view v-if="qjData && qjData.dkfs === 0 || qjData.dkfs === 1">
|
||||||
<view class="section-title">
|
<JsQjDkEdit :data="qjData" :is-edit="false" ref="dkRef" @inited="handleDkInited" />
|
||||||
<text class="title-text">代课信息</text>
|
|
||||||
<view class="title-underline"></view>
|
|
||||||
</view>
|
|
||||||
<view v-if="!showDkFlag && !showPkkbFlag" class="empty-dk">
|
|
||||||
<view>{{ showDkEmptyLabel }}</view>
|
|
||||||
</view>
|
|
||||||
<view v-else-if="showPkkbFlag && !showDkFlag" class="pkkb-list">
|
|
||||||
<view v-for="(item, index) in pkkbList" :key="index" class="pkkb-card">
|
|
||||||
<view class="card-header">
|
|
||||||
<text class="applicant-name">{{ item.dktime }}({{ item.xqLabel }})的{{ item.jcmc }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="divider"></view>
|
|
||||||
<view class="card-body">
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">排课名称:</text>
|
|
||||||
<text class="value">{{ item.pkMc }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">上课时间:</text>
|
|
||||||
<text class="value">{{ item.startTime }}-{{ item.endTime }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">代课老师:</text>
|
|
||||||
<text class="value no-teacher">没有选择代课老师</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<JsQjDetailDk v-else
|
|
||||||
:qjId="qjId"
|
|
||||||
@loadDkList="handleDkListLoaded"
|
|
||||||
/>
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 审批流程 -->
|
<!-- 审批流程 -->
|
||||||
<LcglSp :yw-id="qjId" yw-type="JS_QJ" />
|
<LcglSp :yw-id="qjId" yw-type="JS_QJ" :show-title="true" />
|
||||||
</view>
|
</view>
|
||||||
<template #bottom>
|
<template #bottom>
|
||||||
<YwConfirm
|
<YwConfirm v-if="initedFlag"
|
||||||
:spApi="jsQjSpApi"
|
:spApi="jsQjSpApi"
|
||||||
:stopApi="jsQjStopApi"
|
:stopApi="jsQjStopApi"
|
||||||
:xtDkApi="jsQjXtApi"
|
:xtDkApi="jsQjXtApi"
|
||||||
@ -72,7 +41,7 @@ import { useUserStore } from "@/store/modules/user";
|
|||||||
import { useDataStore } from "@/store/modules/data";
|
import { useDataStore } from "@/store/modules/data";
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import JsQjDetailInfo from "./components/jsQjDetailInfo.vue";
|
import JsQjDetailInfo from "./components/jsQjDetailInfo.vue";
|
||||||
import JsQjDetailDk from "./components/jsQjDetailDk.vue";
|
import JsQjDkEdit from "./components/jsQjDkEdit.vue";
|
||||||
import YwConfirm from "@/pages/components/YwConfirm/index.vue";
|
import YwConfirm from "@/pages/components/YwConfirm/index.vue";
|
||||||
import LcglSp from "@/components/LcglSp/index.vue";
|
import LcglSp from "@/components/LcglSp/index.vue";
|
||||||
import { QjPageUtils } from "@/utils/qjPageUtils";
|
import { QjPageUtils } from "@/utils/qjPageUtils";
|
||||||
@ -83,12 +52,11 @@ const { setQjData, getXxts } = useDataStore();
|
|||||||
|
|
||||||
const dbFlag = ref(false);
|
const dbFlag = ref(false);
|
||||||
const qjId = ref('');
|
const qjId = ref('');
|
||||||
const showDkFlag = ref(false);
|
|
||||||
const showDkEmptyLabel = ref('');
|
|
||||||
const showXtDkButton = ref(false);
|
const showXtDkButton = ref(false);
|
||||||
const showApproveButton = ref(true);
|
const showApproveButton = ref(true);
|
||||||
const pkkbList = ref<any[]>([]);
|
const qjData = ref<any>({});
|
||||||
const showPkkbFlag = ref(false);
|
const dkRef = ref<any>(null);
|
||||||
|
const initedFlag = ref(false);
|
||||||
|
|
||||||
const spParams = computed(() => {
|
const spParams = computed(() => {
|
||||||
return {
|
return {
|
||||||
@ -99,78 +67,30 @@ const spParams = computed(() => {
|
|||||||
|
|
||||||
const handleQjDataLoaded = async (data: any) => {
|
const handleQjDataLoaded = async (data: any) => {
|
||||||
data = data || {};
|
data = data || {};
|
||||||
|
const dkfs = typeof (data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2);
|
||||||
|
data.dkfs = dkfs;
|
||||||
|
qjData.value = data;
|
||||||
setQjData(data);
|
setQjData(data);
|
||||||
if (data.spResult && data.spResult != "A" && getXxts && getXxts.dbZt === "A") {
|
if (data.spResult && data.spResult != "A" && getXxts && getXxts.dbZt === "A") {
|
||||||
uni.reLaunch({ url: '/pages/base/js/qj/detail' });
|
uni.reLaunch({ url: '/pages/base/js/qj/detail' });
|
||||||
QjPageUtils.updateXxts();
|
QjPageUtils.updateXxts();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const dkfs = typeof(data.dkfs) === "string" ? parseInt(data.dkfs) : (data.dkfs || 2);
|
nextTick(() => {
|
||||||
showDkFlag.value = dkfs === 0;
|
dkRef.value.init();
|
||||||
|
});
|
||||||
// 获取排课信息
|
};
|
||||||
await getPkkbData(data);
|
|
||||||
|
// 代课信息初始化完成
|
||||||
if (dkfs === 1) {
|
const handleDkInited = async (dkList: any) => {
|
||||||
showDkEmptyLabel.value = "教科处协调,请点击协调代课按钮\n如无法协调,请点击转办按钮";
|
if (dkList && dkList.length) {
|
||||||
showXtDkButton.value = true; // 显示协调代课按钮
|
showApproveButton.value = true;
|
||||||
showApproveButton.value = false; // 隐藏同意按钮
|
showXtDkButton.value = false;
|
||||||
} else if (dkfs === 2) {
|
} else if (qjData.value.dkfs === 1) {
|
||||||
showDkEmptyLabel.value = "无需代课";
|
showApproveButton.value = false;
|
||||||
showXtDkButton.value = false; // 隐藏协调代课按钮
|
showXtDkButton.value = true;
|
||||||
showApproveButton.value = true; // 显示同意按钮
|
|
||||||
} else {
|
|
||||||
showXtDkButton.value = false; // 其他情况隐藏协调代课按钮
|
|
||||||
showApproveButton.value = true; // 显示同意按钮
|
|
||||||
}
|
}
|
||||||
};
|
initedFlag.value = true;
|
||||||
|
|
||||||
const handleDkListLoaded = (list: any[]) => {
|
|
||||||
// 代课明细数据已由JsQjDetail组件处理
|
|
||||||
};
|
|
||||||
|
|
||||||
// 获取排课信息
|
|
||||||
const getPkkbData = async (data: any) => {
|
|
||||||
if (!data.qjkstime || !data.qjjstime) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const res = await getPkkbByJsRangeTimeApi({
|
|
||||||
jsId: data.jsId,
|
|
||||||
startTime: data.qjkstime,
|
|
||||||
endTime: data.qjjstime,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res && res.result) {
|
|
||||||
pkkbList.value = res.result.map((item: any) => {
|
|
||||||
item.dktime = item.kbtime.split(" ")[0];
|
|
||||||
item.jcmc = getJcMc(item.jcType) + "第" + item.jc + "节";
|
|
||||||
const xq: number = item.xq - 1;
|
|
||||||
item.xqLabel = getWdName(xq);
|
|
||||||
return item;
|
|
||||||
});
|
|
||||||
showPkkbFlag.value = pkkbList.value.length > 0;
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error("获取排课信息失败:", error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 获取节次名称
|
|
||||||
const getJcMc = (jcType: string) => {
|
|
||||||
const jsTypeMc: any = {
|
|
||||||
ZAM: "早自习",
|
|
||||||
AM: "上午",
|
|
||||||
PM: "下午",
|
|
||||||
};
|
|
||||||
return jsTypeMc[jcType] || jcType;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 获取星期名称
|
|
||||||
const getWdName = (xq: number) => {
|
|
||||||
const wdNameList = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
|
|
||||||
return wdNameList[xq] || "";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
onLoad(async (data?: any) => {
|
onLoad(async (data?: any) => {
|
||||||
@ -180,6 +100,11 @@ onLoad(async (data?: any) => {
|
|||||||
}
|
}
|
||||||
qjId.value = ret.qjId;
|
qjId.value = ret.qjId;
|
||||||
dbFlag.value = ret.dbFlag;
|
dbFlag.value = ret.dbFlag;
|
||||||
|
// 初始化标记,如果3秒内没有初始化完成
|
||||||
|
initedFlag.value = false;
|
||||||
|
setTimeout(() => {
|
||||||
|
initedFlag.value = true;
|
||||||
|
}, 3000);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -187,118 +112,4 @@ onLoad(async (data?: any) => {
|
|||||||
.qj-detail {
|
.qj-detail {
|
||||||
background-color: #f5f7fa;
|
background-color: #f5f7fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dk-info {
|
|
||||||
margin: 15px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
padding: 15px 15px 0 15px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
|
|
||||||
.title-text {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-underline {
|
|
||||||
height: 2px;
|
|
||||||
background-color: #007aff;
|
|
||||||
width: 100%;
|
|
||||||
border-radius: 1px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 代课信息内容区域与申请人卡片对齐
|
|
||||||
:deep(.dk-info) {
|
|
||||||
margin: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.info-card) {
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
box-shadow: none;
|
|
||||||
border-bottom: 1px solid #f0f0f0;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-dk {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 50px 15px;
|
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
text-align: center;
|
|
||||||
white-space: pre-line;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pkkb-list {
|
|
||||||
.pkkb-card {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.card-header {
|
|
||||||
padding: 15px;
|
|
||||||
border-bottom: 1px solid #eee;
|
|
||||||
|
|
||||||
.applicant-name {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
height: 1px;
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body {
|
|
||||||
padding: 15px;
|
|
||||||
|
|
||||||
.info-row {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #999;
|
|
||||||
width: 70px;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
&.no-teacher {
|
|
||||||
color: #ff4757;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,83 +1,188 @@
|
|||||||
import { xxtsFindByIdApi, xxtsSaveApi } from "@/api/base/xxtsApi";
|
import { xxtsFindByIdApi, xxtsSaveApi } from "@/api/base/xxtsApi";
|
||||||
import { useUserStore } from "@/store/modules/user";
|
import { useUserStore } from "@/store/modules/user";
|
||||||
import { useDataStore } from "@/store/modules/data";
|
import { useDataStore } from "@/store/modules/data";
|
||||||
|
import { useCommonStore } from "@/store/modules/common";
|
||||||
|
import { findDkPageApi, getPkkbByJsRangeTimeApi } from "@/api/base/jsQjApi";
|
||||||
|
|
||||||
const { loginByOpenId } = useUserStore();
|
const { loginByOpenId } = useUserStore();
|
||||||
const { getQjData, setXxts, setQjData, getXxts } = useDataStore();
|
const { getQjData, setXxts, setQjData, getXxts } = useDataStore();
|
||||||
|
const { getAllJsBasicInfoVo } = useCommonStore();
|
||||||
|
|
||||||
export const QjPageUtils = {
|
// 节数类型名称
|
||||||
// 初始化校验
|
const jsTypeMc:any = {
|
||||||
async init(data?: any) {
|
ZAM: "早自习",
|
||||||
let ret = {
|
AM: "上午",
|
||||||
success: true,
|
PM: "下午",
|
||||||
dbFlag: false,
|
};
|
||||||
qjId: getQjData.id,
|
// 周几名称
|
||||||
};
|
const wdNameList: any =[
|
||||||
if (!data || !data.from || data.from != "db") {
|
"星期一",
|
||||||
return ret;
|
"星期二",
|
||||||
|
"星期三",
|
||||||
|
"星期四",
|
||||||
|
"星期五",
|
||||||
|
"星期六",
|
||||||
|
"星期日",
|
||||||
|
];
|
||||||
|
// 确认状态
|
||||||
|
const qrStatus: any = {
|
||||||
|
"wait": "待确认",
|
||||||
|
"approved": "同意",
|
||||||
|
"rejected": "拒绝",
|
||||||
|
};
|
||||||
|
|
||||||
|
const init = async (data?: any) => {
|
||||||
|
let ret = {
|
||||||
|
success: true,
|
||||||
|
dbFlag: false,
|
||||||
|
qjId: getQjData.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;
|
||||||
|
setXxts(xxts);
|
||||||
|
ret.qjId = xxts.xxzbId;
|
||||||
|
// 检查待办状态
|
||||||
|
if (xxts.dbZt === "B") {
|
||||||
|
// 消息推送状态为B:
|
||||||
|
setQjData({ id: xxts.xxzbId, from: "xxts-B" });
|
||||||
|
if (!data.detailFlag) {
|
||||||
|
url = "/pages/view/hr/jsQj/detail";
|
||||||
|
uni.reLaunch({ url });
|
||||||
|
ret.success = false;
|
||||||
|
} else {
|
||||||
|
ret.success = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: "获取消息推送数据失败",
|
||||||
|
icon: "error",
|
||||||
|
});
|
||||||
|
uni.reLaunch({ url });
|
||||||
|
ret.success = false;
|
||||||
}
|
}
|
||||||
// 从待办过来的,需要从后端获取数据
|
return ret;
|
||||||
ret.dbFlag = true;
|
} catch (error) {
|
||||||
// 检查登录状态
|
console.error("获取待办信息失败", error);
|
||||||
const isLoggedIn = await loginByOpenId(data.openId);
|
// 如果获取Xxts失败,回退到原来的逻辑
|
||||||
if (!isLoggedIn) {
|
const xxtsData = getXxts;
|
||||||
console.log("用户未登录,跳过处理");
|
if (xxtsData && xxtsData.dbZt === "B") {
|
||||||
|
setQjData({ id: data.id });
|
||||||
|
uni.reLaunch({ url });
|
||||||
ret.success = false;
|
ret.success = false;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
let url = "/pages/base/message/index";
|
}
|
||||||
try {
|
};
|
||||||
// 优先从后端根据url中的id去查询Xxts
|
|
||||||
const xxtsRes = await xxtsFindByIdApi({ id: data.id });
|
const updateXxts = async () => {
|
||||||
if (xxtsRes && xxtsRes.result) {
|
// 如果没有查询过消息推送,表示不是从待办进入的,不自动更新,
|
||||||
const xxts = xxtsRes.result;
|
if (!getXxts || !getXxts.id) {
|
||||||
setXxts(xxts);
|
return false;
|
||||||
ret.qjId = xxts.xxzbId;
|
}
|
||||||
// 检查待办状态
|
console.log("更新待办状态:getXxts", getXxts);
|
||||||
if (xxts.dbZt === "B") {
|
// 更新待办状态
|
||||||
// 消息推送状态为B:
|
await xxtsSaveApi({
|
||||||
setQjData({ id: xxts.xxzbId, from: "xxts-B" });
|
id: getXxts.id,
|
||||||
if (!data.detailFlag) {
|
dbZt: "B",
|
||||||
url = "/pages/view/hr/jsQj/detail";
|
});
|
||||||
uni.reLaunch({ url });
|
return true;
|
||||||
ret.success = false;
|
};
|
||||||
} else {
|
|
||||||
ret.success = true;
|
const rebuildDkList = (list: any, jsId: string) => {
|
||||||
}
|
const newList = list.map((item: any) => {
|
||||||
}
|
const dktime = item.dktime || item.kbtime;
|
||||||
} else {
|
item.dktime = dktime.split(" ")[0];
|
||||||
uni.showToast({
|
item.jcmc = jsTypeMc[item.jcType] + "第" + item.jc + "节";
|
||||||
title: "获取消息推送数据失败",
|
const xq: number = item.xq - 1;
|
||||||
icon: "error",
|
item.xqLabel = wdNameList[xq];
|
||||||
});
|
item.statusLabel = qrStatus[item.qrStatus] || "未知";
|
||||||
uni.reLaunch({ url });
|
return item;
|
||||||
ret.success = false;
|
});
|
||||||
}
|
// 排序,将当前教师作为代课教师的代课数据,排在前面,并且添加一个标记
|
||||||
return ret;
|
return newList.sort((a: any, b: any) => {
|
||||||
} catch (error) {
|
if (a.jsId === jsId) {
|
||||||
console.error("获取待办信息失败", error);
|
return -1;
|
||||||
// 如果获取Xxts失败,回退到原来的逻辑
|
} else if (b.jsId === jsId) {
|
||||||
const xxtsData = getXxts;
|
return 1;
|
||||||
if (xxtsData && xxtsData.dbZt === "B") {
|
} else {
|
||||||
setQjData({ id: data.id });
|
return 0;
|
||||||
uni.reLaunch({ url });
|
|
||||||
ret.success = false;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
// 检查待办状态是否需要更新
|
};
|
||||||
async updateXxts() {
|
|
||||||
// 如果没有查询过消息推送,表示不是从待办进入的,不自动更新,
|
const getDkList = async (qjId: string, jsId: string) => {
|
||||||
if (!getXxts || !getXxts.id) {
|
const res: any = await findDkPageApi({
|
||||||
return false;
|
qjId: qjId,
|
||||||
|
page: 1,
|
||||||
|
rows: 1000,
|
||||||
|
});
|
||||||
|
const rows = (res && (res.rows || res.result || res.data)) || [];
|
||||||
|
if (!rows.length) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
const resJs = await getAllJsBasicInfoVo();
|
||||||
|
const jsList = resJs.result || [];
|
||||||
|
const newList = rebuildDkList(rows, jsId);
|
||||||
|
return newList.map((item: any) => {
|
||||||
|
const js = jsList.find((js: any) => js.id === item.jsId);
|
||||||
|
if (js) {
|
||||||
|
item.dkJsId = js.id;
|
||||||
|
item.dkJsName = js.jsxm;
|
||||||
|
item.userId = js.userId;
|
||||||
}
|
}
|
||||||
console.log("更新待办状态:getXxts", getXxts);
|
return item;
|
||||||
// 更新待办状态
|
});
|
||||||
await xxtsSaveApi({
|
};
|
||||||
id: getXxts.id,
|
|
||||||
dbZt: "B",
|
|
||||||
|
// 获取排课信息
|
||||||
|
const getPkkbList = async (data: any) => {
|
||||||
|
if (!data.qjkstime || !data.qjjstime) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await getPkkbByJsRangeTimeApi({
|
||||||
|
jsId: data.jsId,
|
||||||
|
startTime: data.qjkstime,
|
||||||
|
endTime: data.qjjstime,
|
||||||
});
|
});
|
||||||
return true;
|
const rows = (res && (res.rows || res.result)) || [];
|
||||||
},
|
return rebuildDkList(rows, data.jsId);
|
||||||
}
|
} catch (error) {
|
||||||
|
console.error("获取排课信息失败:", error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
export const QjPageUtils = {
|
||||||
|
wdNameList,
|
||||||
|
// 初始化校验
|
||||||
|
init,
|
||||||
|
// 检查待办状态是否需要更新
|
||||||
|
updateXxts,
|
||||||
|
// 重构代课教师列表
|
||||||
|
rebuildDkList,
|
||||||
|
// 获取代课教师列表
|
||||||
|
getDkList,
|
||||||
|
// 获取排课信息
|
||||||
|
getPkkbList
|
||||||
|
};
|
||||||
|
|
||||||
@ -62,6 +62,11 @@ export const interceptor = {
|
|||||||
return JSON.parse(response.data);
|
return JSON.parse(response.data);
|
||||||
}
|
}
|
||||||
if (response.data) {
|
if (response.data) {
|
||||||
|
if (response.data.resultCode === -9998) {
|
||||||
|
uni.reLaunch({
|
||||||
|
url: "/pages/system/login/login",
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.data;
|
return response.data;
|
||||||
} else {
|
} else {
|
||||||
console.log("接口无返回值", response);
|
console.log("接口无返回值", response);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user