数字督察一体化平台-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

159 lines
4.7 KiB

<template>
<el-tabs v-model="activeName">
<el-tab-pane name="todo">
<template #label>
<el-badge :value="myTodoTotal" v-if="myTodoTotal">
<span class="tab-nav-title">我的待办</span>
</el-badge>
<span class="tab-nav-title" v-else>我的待办</span>
</template>
<div v-loading="loading" class="pt-20">
<home-work-my-todo :data="todos" @update="getList" />
</div>
</el-tab-pane>
<el-tab-pane name="second">
<template #label>
<el-badge :value="todoToExpires.length" v-if="todoToExpires.length">
<span class="tab-nav-title">即将到期</span>
</el-badge>
<span class="tab-nav-title" v-else>即将到期</span>
</template>
<div v-loading="loading" class="mt-20">
<home-work-my-todo :data="todoToExpires" @update="getList" />
</div>
</el-tab-pane>
<el-tab-pane name="third">
<template #label>
<span class="tab-nav-title">我的收藏</span>
</template>
<div v-loading="loading" class="mt-20">
<home-work-my-fav />
</div>
</el-tab-pane>
<el-tab-pane name="comfort">
<template #label>
<el-badge :value="myComfortTotal" v-if="comforts.length">
<span class="tab-nav-title">抚慰申请</span>
</el-badge>
<span class="tab-nav-title" v-else>抚慰申请</span>
</template>
<div v-loading="comfortLoading" class="pt-20">
<home-work-my-comfort :data="comforts" @update="getComfortList" />
</div>
</el-tab-pane>
<el-tab-pane name="alarm">
<template #label>
<el-badge :value="myAlarmTotal" v-if="alarms.length">
<span class="tab-nav-title">通知提醒</span>
</el-badge>
<span class="tab-nav-title" v-else>通知提醒</span>
</template>
<div v-loading="alarmLoading" class="pt-20">
<home-work-my-alarm :data="alarms" @update="getAlarmList" />
</div>
</el-tab-pane>
<el-tab-pane name="countersign">
<template #label>
<el-badge :value="countersignTodos.length" v-if="countersignTodos.length">
<span class="tab-nav-title">会签提醒</span>
</el-badge>
<span class="tab-nav-title" v-else>会签提醒</span>
</template>
<div v-loading="loading" class="pt-20">
<home-work-my-countersign :data="countersignTodos" @update="getList" />
</div>
</el-tab-pane>
</el-tabs>
</template>
<script setup>
import {listTodoCountersign, listTodos} from "@/api/work";
import {
alarmNotificationPageByTodo
} from "@/api/work/alarm";
import {
listComfortTodos
} from "@/api/rightsComfort/comfort";
const activeName = "todo";
const myTodoTotal = ref(0)
const todos = ref([])
const todoToExpires = ref([])
const alarms = ref([])
const myAlarmTotal = ref(0)
const loading = ref(true)
const countersignTodos = ref([]);
function getList() {
loading.value = true
listTodos({
current: 1,
size: 100,
}).then((data) => {
todos.value = data.records;
myTodoTotal.value = data.total
todoToExpires.value = data.records.filter(item => item.remainingDuration < 43200)
loading.value = false
});
listTodoCountersign({
current: 1,
size: 100,
}).then((data) => {
countersignTodos.value = data.records;
});
}
const alarmLoading = ref(false)
function getAlarmList() {
alarmLoading.value = true
alarmNotificationPageByTodo({
current: 1,
size: 100,
}).then((data) => {
alarms.value = data.records;
myAlarmTotal.value = data.total
alarmLoading.value = false
});
}
const myComfortTotal = ref(0)
const comfortLoading = ref(false)
const comforts = ref([])
function getComfortList() {
comfortLoading.value = true
listComfortTodos({
current: 1,
size: 100,
}).then((data) => {
comforts.value = data.records;
myComfortTotal.value = data.total
comfortLoading.value = false
});
}
onMounted(() => {
getList();
getAlarmList();
getComfortList();
});
</script>
<style lang="scss" scoped>
.tab-nav-title {
font-size: 24px;
}
:deep() {
.tab-nav-title_second {
font-size: 18px;
}
.el-tabs__nav-wrap {
overflow: visible;
.el-tabs__nav-scroll {
overflow: visible;
}
}
.el-tabs__header {
margin-bottom: 0;
}
}
</style>