调整请假详情
This commit is contained in:
parent
64d84d7803
commit
aaf1360f03
@ -64,7 +64,7 @@ export const findDkByIdApi = async (params: any) => {
|
|||||||
* 查询代课信息
|
* 查询代课信息
|
||||||
*/
|
*/
|
||||||
export const findDkPageApi = async (params: any) => {
|
export const findDkPageApi = async (params: any) => {
|
||||||
return await get("/api/jsQjDk/findById", params);
|
return await get("/api/jsQjDk/findPage", params);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<view class="info-card">
|
<view class="info-card">
|
||||||
<view class="card-header">
|
<view class="card-header">
|
||||||
<text class="applicant-name" v-if="dbFlag">{{ dbData.dbZy }}</text>
|
<text class="applicant-name" v-if="dbFlag">{{ dbData.dbZy }}</text>
|
||||||
<text class="applicant-name" v-if="dbFlag">学生{{ qjData.xsxm }}的请假申请</text>
|
<text class="applicant-name" v-else>学生{{ qjData.xsxm }}的请假申请</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="divider"></view>
|
<view class="divider"></view>
|
||||||
<view class="card-body">
|
<view class="card-body">
|
||||||
|
|||||||
@ -37,11 +37,11 @@ const { getAllJs } = useCommonStore();
|
|||||||
|
|
||||||
// 接收外部传入属性
|
// 接收外部传入属性
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
defualtValue: any,
|
defualtValue?: any,
|
||||||
parentData: any,
|
parentData?: any,
|
||||||
multiple: boolean,
|
multiple?: boolean,
|
||||||
// 排除id列表
|
// 排除id列表
|
||||||
excludeIds: any
|
excludeIds?: any
|
||||||
}>(), {
|
}>(), {
|
||||||
defualtValue: null,
|
defualtValue: null,
|
||||||
parentData: null,
|
parentData: null,
|
||||||
|
|||||||
226
src/pages/view/hr/jsQj/components/jsQjDetail.vue
Normal file
226
src/pages/view/hr/jsQj/components/jsQjDetail.vue
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
<template>
|
||||||
|
<view class="qj-detail back-f8f8f8">
|
||||||
|
<view class="pt-15">
|
||||||
|
<view class="dk-title pl-15 pr-15">
|
||||||
|
<BasicTitle line title="请假信息" :isBorder="false" />
|
||||||
|
</view>
|
||||||
|
<!-- 请假信息卡片 -->
|
||||||
|
<view class="info-card">
|
||||||
|
<view class="card-header">
|
||||||
|
<text class="applicant-name" v-if="dbFlag">{{ qjData.dbZy }}</text>
|
||||||
|
<text class="applicant-name" v-else>教师{{ qjData.jsName }}的请假申请</text>
|
||||||
|
</view>
|
||||||
|
<view class="divider"></view>
|
||||||
|
<view class="card-body">
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">请假类型:</text>
|
||||||
|
<text class="value">{{ qjData.qjlx }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">开始时间:</text>
|
||||||
|
<text class="value">{{ qjData.qjkstime }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">结束时间:</text>
|
||||||
|
<text class="value">{{ qjData.qjjstime }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">请假时长:</text>
|
||||||
|
<text class="value">{{ qjData.qjsc }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-column">
|
||||||
|
<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">{{ dkfsList[qjData.dkfs] ? dkfsList[qjData.dkfs].text : "" }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="qjData.dkfs != 2">
|
||||||
|
<view class="dk-title pl-15 pr-15">
|
||||||
|
<BasicTitle line title="代课明细" :isBorder="false" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view >
|
||||||
|
<view class="dk-card">
|
||||||
|
<view class="card-body">
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 请假信息卡片 -->
|
||||||
|
<view class="info-card" v-for="(item, index) in dkList" :key="index">
|
||||||
|
<view class="card-header">
|
||||||
|
<text class="applicant-name">{{ item.dktime }}({{ wdNameList[item.xq - 1] }})的{{ item.jcmc }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="divider"></view>
|
||||||
|
<view class="card-body">
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="label">排课名称:</text>
|
||||||
|
<text class="value">{{ item.pkName }}</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>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
<view class="dk-title pl-15 pr-15">
|
||||||
|
<BasicTitle line title="请假流程" :isBorder="false" />
|
||||||
|
</view>
|
||||||
|
<ProgressList :procInstId="qjData.procInstId" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import ProgressList from "./progressList.vue"
|
||||||
|
import { findQjById, findDkPageApi } from "@/api/base/jsQjApi";
|
||||||
|
import { showToast } from "@/utils/uniapp";
|
||||||
|
import { useDicStore } from "@/store/modules/dic";
|
||||||
|
import { update } from "lodash";
|
||||||
|
const { findByPid } = useDicStore();
|
||||||
|
|
||||||
|
// 接收外部传入属性
|
||||||
|
const props = withDefaults(defineProps<{
|
||||||
|
qjId?: string,
|
||||||
|
dbFlag?: boolean
|
||||||
|
}>(), {
|
||||||
|
qjId: "",
|
||||||
|
dbFlag: false
|
||||||
|
});
|
||||||
|
|
||||||
|
const qjData = ref<any>({});
|
||||||
|
|
||||||
|
const wdNameList = ref<string[]>(["周一", "周二", "周三", "周四", "周五", "周六", "周日"]);
|
||||||
|
|
||||||
|
const dkfsList = ref<any>([
|
||||||
|
{ value: 0, text: "自行协调" },
|
||||||
|
{ value: 1, text: "教科处协调" },
|
||||||
|
{ value: 2, text: "无须代课" },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const jsTypeMc: any = {
|
||||||
|
"ZAM": '早自习',
|
||||||
|
"AM": '上午',
|
||||||
|
"PM": '下午',
|
||||||
|
};
|
||||||
|
|
||||||
|
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 = await findQjById({ id: props.qjId });
|
||||||
|
qjData.value = res.result;
|
||||||
|
}
|
||||||
|
// 无需代课,跳过
|
||||||
|
if (qjData.value.dkfs == 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const res:any = await findDkPageApi({ qjId: props.qjId, page: 1, rows: 1000 });
|
||||||
|
dkList.value = res.rows.map((item: any) => {
|
||||||
|
item.dktime = item.dktime.split(" ")[0];
|
||||||
|
item.jcmc = jsTypeMc[item.jcType] + "第" + item.jc + "节";
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 初始化
|
||||||
|
onMounted(async () => {
|
||||||
|
await init();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.qj-detail {
|
||||||
|
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;
|
||||||
|
|
||||||
|
.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;
|
||||||
|
|
||||||
|
.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>
|
||||||
@ -215,7 +215,7 @@ const submit = async () => {
|
|||||||
newItem.jsId = item.dkJsId;
|
newItem.jsId = item.dkJsId;
|
||||||
newItem.jsName = item.dkJsName;
|
newItem.jsName = item.dkJsName;
|
||||||
newItem.pkkbId = item.id;
|
newItem.pkkbId = item.id;
|
||||||
newItem.dktime = item.dktime + " " + item.startTime + ":00";
|
newItem.dktime = item.dktime + " 00:00:00";
|
||||||
newItem.id = "";
|
newItem.id = "";
|
||||||
newItem.qjId = "";
|
newItem.qjId = "";
|
||||||
return newItem;
|
return newItem;
|
||||||
@ -229,6 +229,7 @@ const submit = async () => {
|
|||||||
} else {
|
} else {
|
||||||
params.id = null;
|
params.id = null;
|
||||||
params.jsId = getJs.id;
|
params.jsId = getJs.id;
|
||||||
|
params.jsName = getJs.jsxm;
|
||||||
}
|
}
|
||||||
uni.showLoading({ title: "提交中..." });
|
uni.showLoading({ title: "提交中..." });
|
||||||
await jsQjSqApi(params).then(() => {
|
await jsQjSqApi(params).then(() => {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
<template v-slot="{ data, index }">
|
<template v-slot="{ data, index }">
|
||||||
<view class="leave-card" @click="goToDetail(data)">
|
<view class="leave-card" @click="goToDetail(data)">
|
||||||
<view class="card-header">
|
<view class="card-header">
|
||||||
<text class="applicant-name">{{ data.jsxm }}的请假申请</text>
|
<text class="applicant-name">{{ data.jsName }}的请假申请</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="card-body">
|
<view class="card-body">
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<view class="approval-progress">
|
<view class="approval-progress">
|
||||||
<view class="progress-title">
|
<view class="progress-title">
|
||||||
<!-- <image src="/static/icons/approval.png" class="title-icon"></image> -->
|
<!-- <image src="/static/icons/approval.png" class="title-icon"></image> -->
|
||||||
<text class="applicant-name">审批进度</text>
|
<text class="applicant-name">请假流程进度</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="divider"></view>
|
<view class="divider"></view>
|
||||||
<view class="progress-list">
|
<view class="progress-list">
|
||||||
@ -10,7 +10,7 @@
|
|||||||
<view class="progress-item-row">
|
<view class="progress-item-row">
|
||||||
<view class="item-avatar">
|
<view class="item-avatar">
|
||||||
<image
|
<image
|
||||||
:src="task.avatar || '/static/base/home/11222.png'"
|
:src="task.avatar || '/static/base/home/user-5-line.png'"
|
||||||
class="w-full h-full"
|
class="w-full h-full"
|
||||||
></image>
|
></image>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -1,183 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<BasicLayout>
|
<BasicLayout>
|
||||||
<view class="qj-detail">
|
<JsQjDetail :qjId="qjId" :dbFlag="false" />
|
||||||
<!-- 请假信息卡片 -->
|
|
||||||
<view class="info-card">
|
|
||||||
<view class="card-header">
|
|
||||||
<text class="applicant-name" v-if="dbFlag">{{ dbData.dbZy }}</text>
|
|
||||||
<text class="applicant-name" v-if="dbFlag">学生{{ qjData.xsxm }}的请假申请</text>
|
|
||||||
</view>
|
|
||||||
<view class="divider"></view>
|
|
||||||
<view class="card-body">
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">请假类型:</text>
|
|
||||||
<text class="value">{{ qjData.qjlx }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">开始时间:</text>
|
|
||||||
<text class="value">{{ qjData.qjkstime }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="label">结束时间:</text>
|
|
||||||
<text class="value">{{ qjData.qjjstime }}</text>
|
|
||||||
</view>
|
|
||||||
<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.sflx === 1 ? '是' : '否' }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="info-column">
|
|
||||||
<text class="label">请假事由:</text>
|
|
||||||
<text class="value">{{ qjData.qjsy }}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<template #bottom>
|
|
||||||
<view class="white-bg-color py-5">
|
|
||||||
<view class="flex-row items-center pb-10 pt-5">
|
|
||||||
<u-button
|
|
||||||
text="取消"
|
|
||||||
class="ml-15 mr-7"
|
|
||||||
:plain="true"
|
|
||||||
@click="navigateBack"
|
|
||||||
/>
|
|
||||||
<u-button
|
|
||||||
text="提交"
|
|
||||||
class="mr-15 mr-7"
|
|
||||||
type="primary"
|
|
||||||
@click="submit"
|
|
||||||
/>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
</BasicLayout>
|
</BasicLayout>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onLoad } from "@dcloudio/uni-app";
|
import JsQjDetail from "./components/jsQjDetail.vue";
|
||||||
import { navigateBack } from "@/utils/uniapp";
|
|
||||||
import { findQjById, } from "@/api/base/jsQjApi";
|
|
||||||
import { useDataStore } from "@/store/modules/data";
|
import { useDataStore } from "@/store/modules/data";
|
||||||
const { getData, getDb, setData } = useDataStore();
|
const { getData } = useDataStore();
|
||||||
|
|
||||||
const dbFlag = ref(false);
|
const dbFlag = ref(false);
|
||||||
|
|
||||||
// 请假基础数据
|
const qjId = computed(() => getData.id);
|
||||||
const qjData = computed(() => getData || {});
|
|
||||||
const dbData = computed(() => getDb || {});
|
|
||||||
|
|
||||||
const submit = async () => {
|
|
||||||
navigateBack();
|
|
||||||
};
|
|
||||||
|
|
||||||
onLoad(async (data: any) => {
|
|
||||||
// 从待办过来的,需要从后端获取数据
|
|
||||||
if (data && data.from && data.from == "db") {
|
|
||||||
dbFlag.value = true;
|
|
||||||
const res = await findQjById({ id: data.id });
|
|
||||||
nextTick(() => {
|
|
||||||
setData(res.result);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
dbFlag.value = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.qj-detail {
|
|
||||||
background-color: #f5f7fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-card {
|
|
||||||
margin: 15px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 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;
|
|
||||||
|
|
||||||
.info-row {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #bbb;
|
|
||||||
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: #bbb;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-action {
|
|
||||||
padding: 15px;
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
.back-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 44px;
|
|
||||||
line-height: 44px;
|
|
||||||
background-color: #fff;
|
|
||||||
color: #333;
|
|
||||||
border-radius: 22px;
|
|
||||||
font-size: 16px;
|
|
||||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user