feat(待办列表): 添加国家励志奖学金审核和学生返校审核选项

在jwc-undo.vue、fdy-undo.vue和xw-undo.vue组件中新增了国家励志奖学金审核和学生返校审核的待办事项,以满足不同角色的审核需求
This commit is contained in:
2025-08-17 22:35:35 +08:00
parent 8106d07ac3
commit 958a5a4078
3 changed files with 166 additions and 135 deletions

View File

@@ -86,6 +86,19 @@ export default {
value: 0, value: 0,
url: "/survey/leave/fdy" url: "/survey/leave/fdy"
}, },
{
// 宁博
label: "辅导员·学生返校审核",
name: "return",
value: 0,
url: "/survey/return/fdy"
},
{
label: "辅导员·国家励志奖学金审核",
name: "knzzgl",
value: 0,
url: "/hard/gl/fdy"
}
], ],

View File

@@ -80,6 +80,13 @@ export default {
value: 0, value: 0,
url: "hard/tufa/xg" url: "hard/tufa/xg"
}, },
// 宁博
{
label: "学工·国家励志奖学金审核",
name: "knzzgl",
value: 0,
url: "/hard/gl/xg"
}
] ]
} }

View File

@@ -1,176 +1,187 @@
<template> <template>
<div> <div>
<div class="six-action-container"> <div class="six-action-container">
<div style="padding: 1rem;" class="six-action-item" v-for="(v, i) in taskList" :key="i"> <div
<div class="bubble" style="padding: 1rem"
:style="{ backgroundImage: `url(${require('@/assets/index_bg/' + (i + 1) + '.png')})` }"> class="six-action-item"
<div class="act-text"> v-for="(v, i) in taskList"
<div class="title"> :key="i"
{{ v.label }}·待办 >
</div> <div
<div class="todo"> class="bubble"
{{ v.value }} :style="{
</div> backgroundImage: `url(${require('@/assets/index_bg/' +
</div> (i + 1) +
<div class="bg-to" @click="toRoute(v.url)">更多</div> '.png')})`,
</div> }"
>
<div class="act-text">
<div class="title">{{ v.label }}·待办</div>
<div class="todo">
{{ v.value }}
</div> </div>
</div>
<div class="bg-to" @click="toRoute(v.url)">更多</div>
</div> </div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { countXwUnDo as countUndo } from "@/api/stuCQS/good/apply"; import { countXwUnDo as countUndo } from "@/api/stuCQS/good/apply";
import { isEmpty } from "@/api/helpFunc"; import { isEmpty } from "@/api/helpFunc";
import { checkPermi } from "@/utils/permission"; import { checkPermi } from "@/utils/permission";
export default { export default {
name: "xw-undo", name: "xw-undo",
data() { data() {
return { return {
hasPrem:false, hasPrem: false,
taskList: [ taskList: [
{ {
label: "学务·评优评先审核", label: "学务·评优评先审核",
name: "good", name: "good",
value: 0, value: 0,
url: "/stuGood/about-good/xw", url: "/stuGood/about-good/xw",
}, },
{ {
label: "学务·静湖之星审核", label: "学务·静湖之星审核",
name: "lake", name: "lake",
value: 0, value: 0,
url: "/stuGood/about-lake/xw", url: "/stuGood/about-lake/xw",
}, },
{ {
label: "学务·优秀毕业生审核", label: "学务·优秀毕业生审核",
name: "biye", name: "biye",
value: 0, value: 0,
url: "/stuGood/good-graduate/xw", url: "/stuGood/good-graduate/xw",
}, },
{ {
label: "学务·困难认定审核", label: "学务·困难认定审核",
name: "kn", name: "kn",
value: 0, value: 0,
url: "/hard/pks/xw", url: "/hard/pks/xw",
}, },
{ {
label: "学务·助学金审核", label: "学务·助学金审核",
name: "zx", name: "zx",
value: 0, value: 0,
url: "/hard/zxj/xw", url: "/hard/zxj/xw",
}, },
{ {
label: "学务·宿舍管理审核", label: "学务·宿舍管理审核",
name: "dms", name: "dms",
value: 0, value: 0,
url: "/dormitory/stuDormitoryManage/work", url: "/dormitory/stuDormitoryManage/work",
},
{
label: "学务·任务管理审核",
name: "rwgl",
value: 0,
url: "/task/todo",
},
{
label: "学务·困难资助审核",
name: "knzz",
value: 0,
url: "hard/tufa/xw"
},
],
}
},
created() {
if (checkPermi(['home:xw:undo1'])) {
this.countUndo();
this.hasPrem = true;
}
},
methods: {
async countUndo() {
let res = await countUndo();
if (res.code == 200) {
let data = [...res.data];
this.taskList.map(x => {
let temp = data.filter(y => y.startsWith(x.name));
if (!isEmpty(temp)) {
let result = temp[0].split("-")[1];
x.value = result;
}
});
}
}, },
toRoute(url) { {
if (!isEmpty(url)) { label: "学务·任务管理审核",
this.$router.push(url); name: "rwgl",
} value: 0,
url: "/task/todo",
}, },
{
label: "学务·困难资助审核",
name: "knzz",
value: 0,
url: "hard/tufa/xw",
},
// 宁博
{
label: "学务·国家励志奖学金审核",
name: "knzzgl",
value: 0,
url: "/hard/gl/xw",
},
],
};
},
created() {
if (checkPermi(["home:xw:undo1"])) {
this.countUndo();
this.hasPrem = true;
} }
},
methods: {
async countUndo() {
let res = await countUndo();
if (res.code == 200) {
let data = [...res.data];
this.taskList.map((x) => {
let temp = data.filter((y) => y.startsWith(x.name));
if (!isEmpty(temp)) {
let result = temp[0].split("-")[1];
x.value = result;
}
});
}
},
} toRoute(url) {
if (!isEmpty(url)) {
this.$router.push(url);
}
},
},
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.six-action-container { .six-action-container {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.six-action-item { .six-action-item {
flex-basis: 33.33%; flex-basis: 33.33%;
} }
.bubble { .bubble {
overflow: hidden; overflow: hidden;
margin: 0 auto; margin: 0 auto;
width: 100%; width: 100%;
height: 170px; height: 170px;
border-radius: 1rem; border-radius: 1rem;
// background-image: linear-gradient(120deg, rgb(134, 233, 98) 0%, rgb(45, 175, 92) 100%); // background-image: linear-gradient(120deg, rgb(134, 233, 98) 0%, rgb(45, 175, 92) 100%);
position: relative; position: relative;
background-size: cover; background-size: cover;
min-width: 250px; min-width: 250px;
} }
.act-text { .act-text {
width: 100%; width: 100%;
z-index: 2; z-index: 2;
margin: 1rem; margin: 1rem;
.title {
text-align: left;
font-size: 1.25rem;
color: #fff;
}
.title { .todo {
text-align: left; margin-top: 1rem;
font-size: 1.25rem; font-size: 6rem;
color: #fff; color: #fff;
} }
.todo {
margin-top: 1rem;
font-size: 6rem;
color: #fff;
}
} }
.bg-to { .bg-to {
cursor: pointer; cursor: pointer;
z-index: 3; z-index: 3;
position: absolute; position: absolute;
bottom: 5%; bottom: 5%;
right: 3%; right: 3%;
margin-top: 10px; margin-top: 10px;
color: white; color: white;
} }
.six-action-item:hover, .six-action-item:hover,
.fast-act:hover { .fast-act:hover {
cursor: pointer; cursor: pointer;
transform: scale(1.1); transform: scale(1.1);
} }
</style> </style>