解决所有bug 优化table内容

This commit is contained in:
2026-01-21 18:43:39 +08:00
parent 9984200814
commit 7f0280ec8a
80 changed files with 5202 additions and 744 deletions

View File

@@ -7,7 +7,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -34,18 +33,61 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="userName" label="学号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="awards" label="获奖信息" show-overflow-tooltip align="center" min-width="200" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="学号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="awards" label="获奖信息" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Medal /></el-icon>
<span style="margin-left: 4px">获奖信息</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.awards" size="small" type="warning" effect="light">
{{ scope.row.awards }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="awardTime" label="获奖时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">获奖时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.awardTime || scope.row.month, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -123,7 +165,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj, importExcel } from "/@/api/stuwork/activityawards";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { UploadFilled } from '@element-plus/icons-vue'
import { UploadFilled, List, Trophy, CreditCard, Avatar, Medal, Calendar, EditPen, Setting } from '@element-plus/icons-vue'
import FormDialog from './form.vue'
// 定义变量内容

View File

@@ -7,7 +7,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -27,25 +26,58 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="remarks" label="活动说明" show-overflow-tooltip align="center" min-width="300" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="活动说明" show-overflow-tooltip align="center" min-width="300">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">活动说明</span>
</template>
</el-table-column>
<el-table-column prop="maxSub" label="活动兼报数" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">活动兼报数</span>
</template>
<template #default="scope">
<span>{{ scope.row.maxSub || '-' }}</span>
<el-tag v-if="scope.row.maxSub" size="small" type="success" effect="plain">
{{ scope.row.maxSub }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">开始时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="结束时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">结束时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -135,7 +167,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj, importSub } from "/@/api/stuwork/activityinfo";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { UploadFilled } from '@element-plus/icons-vue'
import { UploadFilled, List, Trophy, Document, UserFilled, Calendar, Setting } from '@element-plus/icons-vue'
import FormDialog from './form.vue'
import DetailDialog from './detail.vue'

View File

@@ -45,27 +45,70 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="subTitle" label="子项目名称" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="projectDescription" label="项目描述" show-overflow-tooltip align="center" min-width="200" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="subTitle" label="子项目名称" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">子项目名称</span>
</template>
</el-table-column>
<el-table-column prop="projectDescription" label="项目描述" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Files /></el-icon>
<span style="margin-left: 4px">项目描述</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">开始时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">结束时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="maxNum" label="报名人数限制" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">报名人数限制</span>
</template>
<template #default="scope">
<span>{{ scope.row.maxNum !== undefined && scope.row.maxNum !== null ? scope.row.maxNum : '-' }}</span>
<el-tag v-if="scope.row.maxNum !== undefined && scope.row.maxNum !== null" size="small" type="success" effect="plain">
{{ scope.row.maxNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="活动说明" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">活动说明</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="活动说明" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -93,6 +136,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj, getActivityInfoList } from "/@/api/stuwork/activityinfosub";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { List, Trophy, Document, Files, Calendar, UserFilled, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -76,17 +76,70 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="subTitle" label="子项目" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="remarks" label="项目描述" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="userName" label="学号/工号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="deptName" label="学院名称" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="activityTheme" label="活动主题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="subTitle" label="子项目" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">子项目</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="项目描述" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Files /></el-icon>
<span style="margin-left: 4px">项目描述</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="学号/工号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号/工号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院名称" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院名称</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系电话</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -113,6 +166,7 @@ import { reactive, ref, onMounted, computed } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj, exportExcel, getActivityInfoList, getActivityInfoSubList } from "/@/api/stuwork/activityinfosubsignup";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { List, Trophy, Document, Files, CreditCard, Avatar, OfficeBuilding, Grid, UserFilled, Phone, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -31,7 +31,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -51,15 +50,39 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="category" label="考核项名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="type" label="考核类型" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="category" label="考核项名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">考核项名称</span>
</template>
</el-table-column>
<el-table-column prop="type" label="考核类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">考核类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="info" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -97,6 +120,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj } from "/@/api/stuwork/assessmentcategory";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Document, Collection, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -24,7 +24,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -44,13 +43,52 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="categoryName" label="考核项" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="pointName" label="指标名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="standard" label="评分标准" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="score" label="默认扣分值" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="categoryName" label="考核项" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">考核项</span>
</template>
</el-table-column>
<el-table-column prop="pointName" label="指标名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">指标名称</span>
</template>
</el-table-column>
<el-table-column prop="standard" label="评分标准" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Reading /></el-icon>
<span style="margin-left: 4px">评分标准</span>
</template>
</el-table-column>
<el-table-column prop="score" label="默认扣分值" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Minus /></el-icon>
<span style="margin-left: 4px">默认扣分值</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" type="danger" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -88,6 +126,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj } from "/@/api/stuwork/assessmentpoint";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Document, Trophy, Reading, Minus, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -81,23 +81,73 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="themeName" label="活动主题" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="author" label="主持人" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">主持人</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="themeName" label="活动主题" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="author" label="主持人" show-overflow-tooltip align="center" />
<el-table-column prop="activityTime" label="活动时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">活动时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.activityTime || scope.row.recordDate || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="address" label="活动地点" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="attendNum" label="参加人数" show-overflow-tooltip align="center" />
<el-table-column prop="address" label="活动地点" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">活动地点</span>
</template>
</el-table-column>
<el-table-column prop="attendNum" label="参加人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">参加人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.attendNum" size="small" type="success" effect="plain">
{{ scope.row.attendNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="attachment" label="活动图片" show-overflow-tooltip align="center" width="100">
<template #default="scope">
<el-button
@@ -127,6 +177,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -167,6 +221,7 @@ import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, Grid, Trophy, User, Location, UserFilled, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -91,11 +91,39 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip />
<el-table-column prop="virtualClassNo" label="班号" show-overflow-tooltip />
<el-table-column type="index" label="序号" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip>
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="virtualClassNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -131,6 +159,7 @@ import { queryAllSchoolYear } from '/@/api/basic/basicyear'
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, Calendar, Clock, Grid, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -59,29 +59,87 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" />
<el-table-column prop="parentPhoneA" label="家长联系电话1" show-overflow-tooltip align="center" />
<el-table-column prop="parentPhoneB" label="家长联系电话2" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系电话</span>
</template>
</el-table-column>
<el-table-column prop="parentPhoneA" label="家长联系电话1" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">家长联系电话1</span>
</template>
</el-table-column>
<el-table-column prop="parentPhoneB" label="家长联系电话2" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">家长联系电话2</span>
</template>
</el-table-column>
<el-table-column prop="stuStatus" label="学生状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">学生状态</span>
</template>
<template #default="scope">
<span>{{ formatStudentStatus(scope.row.stuStatus) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatStudentStatus(scope.row.stuStatus) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="attendanceType" label="考勤类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">考勤类型</span>
</template>
<template #default="scope">
<span>{{ formatAttendanceType(scope.row.attendanceType) }}</span>
<el-tag size="small" type="warning" effect="plain">
{{ formatAttendanceType(scope.row.attendanceType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="isRoom" label="是否住宿" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">是否住宿</span>
</template>
<template #default="scope">
<span>{{ formatYesNo(scope.row.isRoom) }}</span>
<StatusTag
:value="scope.row.isRoom"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">宿舍号</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="isDeviceIn" label="是否扫脸" show-overflow-tooltip align="center">
<template #header>
<el-icon><Camera /></el-icon>
<span style="margin-left: 4px">是否扫脸</span>
</template>
<template #default="scope">
<el-tag :type="scope.row.isDeviceIn === '1' ? 'success' : 'danger'">
{{ scope.row.isDeviceIn === '1' ? '是' : '否' }}
@@ -89,6 +147,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -109,6 +171,9 @@ import { reactive, ref, onMounted } from 'vue'
import { fetchList, queryMyClassList } from '/@/api/stuwork/classattendance'
import { getDicts } from '/@/api/admin/dict'
import { useMessage } from '/@/hooks/message'
import { List, CreditCard, Avatar, Phone, CircleCheck, Collection, House, Camera, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -112,15 +112,64 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip />
<el-table-column prop="realName" label="学生" show-overflow-tooltip />
<el-table-column prop="recordTime" label="记录时间" show-overflow-tooltip />
<el-table-column prop="score" label="分数" show-overflow-tooltip />
<el-table-column prop="note" label="检查记录" show-overflow-tooltip />
<el-table-column prop="handleResult" label="处理结果" show-overflow-tooltip />
<el-table-column type="index" label="序号" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip>
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="学生" show-overflow-tooltip>
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">学生</span>
</template>
</el-table-column>
<el-table-column prop="recordTime" label="记录时间" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">记录时间</span>
</template>
</el-table-column>
<el-table-column prop="score" label="分数" show-overflow-tooltip>
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">分数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" :type="scope.row.score >= 0 ? 'success' : 'danger'" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="note" label="检查记录" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">检查记录</span>
</template>
</el-table-column>
<el-table-column prop="handleResult" label="处理结果" show-overflow-tooltip>
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">处理结果</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -209,6 +258,7 @@ import request from "/@/utils/request";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, OfficeBuilding, Grid, Avatar, Calendar, DataAnalysis, Document, CircleCheck, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -82,17 +82,49 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">创建时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -144,6 +176,7 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime"
import FormDialog from './form.vue'
import FileListDialog from './fileList.vue'
import { List, OfficeBuilding, Grid, Document, Calendar, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -118,33 +118,89 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="operatTime" label="发生时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">发生时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.operatTime || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="type" label="类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="money" label="金额" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">金额</span>
</template>
<template #default="scope">
<span>{{ scope.row.money !== null && scope.row.money !== undefined ? scope.row.money.toFixed(2) : '-' }}</span>
<el-tag v-if="scope.row.money !== null && scope.row.money !== undefined" size="small" type="success" effect="plain">
¥{{ scope.row.money.toFixed(2) }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="operator" label="经办人" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">经办人</span>
</template>
</el-table-column>
<el-table-column prop="purpose" label="用途" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">用途</span>
</template>
</el-table-column>
<el-table-column prop="operator" label="经办人" show-overflow-tooltip align="center" />
<el-table-column prop="purpose" label="用途" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="attachment" label="附件" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">附件</span>
</template>
<template #default="scope">
<el-button
v-if="scope.row.attachment"
@@ -159,6 +215,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -200,6 +260,7 @@ import { getClassListByRole } from "/@/api/basic/basicclass";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, Collection, Money, User, Document, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -97,28 +97,77 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<el-table-column prop="author" label="作者" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">作者</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="author" label="作者" show-overflow-tooltip align="center" />
<el-table-column prop="updateTime" label="更新时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">更新时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="belong" label="归档级别" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">归档级别</span>
</template>
<template #default="scope">
<span>{{ formatBelong(scope.row.belong) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatBelong(scope.row.belong) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="attachment" label="附件" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">附件</span>
</template>
<template #default="scope">
<el-button
v-if="scope.row.attachment"
@@ -133,6 +182,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Folder"
@@ -186,6 +239,7 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import BelongDialog from './belong.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, Document, User, Collection, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -87,13 +87,52 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip />
<el-table-column prop="recordDate" label="时间" show-overflow-tooltip />
<el-table-column prop="score" label="扣分" show-overflow-tooltip />
<el-table-column prop="note" label="检查记录" show-overflow-tooltip />
<el-table-column type="index" label="序号" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip>
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="时间" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">时间</span>
</template>
</el-table-column>
<el-table-column prop="score" label="扣分" show-overflow-tooltip>
<template #header>
<el-icon><Minus /></el-icon>
<span style="margin-left: 4px">扣分</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" type="danger" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="note" label="检查记录" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">检查记录</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -132,6 +171,7 @@ import { fetchList, delObjs } from "/@/api/stuwork/classhygienedaily";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { getDeptList } from '/@/api/basic/basicclass'
import { getClassListByRole } from '/@/api/basic/basicclass'
import { List, OfficeBuilding, Grid, Calendar, Minus, Document, Setting } from '@element-plus/icons-vue'
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));

View File

@@ -19,6 +19,21 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="classCode">
<el-select
v-model="searchForm.classCode"
placeholder="请选择班级"
clearable
filterable
style="width: 200px">
<el-option
v-for="item in classList"
:key="item.classCode"
:label="item.classNo"
:value="item.classCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="月份" prop="month">
<el-date-picker
v-model="searchForm.month"
@@ -56,10 +71,41 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="totalScore" label="总分" show-overflow-tooltip align="center" />
<el-table-column prop="rank" label="排名" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="totalScore" label="总分" show-overflow-tooltip align="center">
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">总分</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.totalScore !== undefined && scope.row.totalScore !== null" size="small" type="success" effect="plain">
{{ scope.row.totalScore }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="rank" label="排名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">排名</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.rank" size="small" :type="scope.row.rank <= 3 ? 'warning' : 'info'" effect="plain">
{{ scope.row.rank }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<!-- 动态日期列 -->
<el-table-column
v-for="day in dayColumns"
@@ -68,8 +114,17 @@
:label="`${day}日`"
show-overflow-tooltip
align="center"
width="80" />
width="80">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">{{ day }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Plus"
@@ -152,6 +207,8 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList } from "/@/api/stuwork/classhygienedailyanalysis";
import { useMessage } from "/@/hooks/message";
import { getBuildingList } from '/@/api/stuwork/dormbuilding'
import { getClassListByRole } from '/@/api/basic/basicclass'
import { List, DataAnalysis, Trophy, Grid, Calendar, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()
@@ -159,6 +216,7 @@ const scoreFormRef = ref()
// 搜索变量
const showSearch = ref(true)
const buildingList = ref<any[]>([])
const classList = ref<any[]>([])
const scoreDialogVisible = ref(false)
const scoreDialogTitle = ref('加分')
const isAddScore = ref(true) // true: 加分, false: 减分
@@ -175,6 +233,7 @@ const scoreForm = reactive({
// 搜索表单
const searchForm = reactive({
buildingNo: '',
classCode: '',
month: ''
})
@@ -202,6 +261,9 @@ const state: BasicTableProps = reactive<BasicTableProps>({
if (searchForm.month) {
params.month = Array.isArray(searchForm.month) ? searchForm.month : [searchForm.month]
}
if (searchForm.classCode) {
params.classCode = searchForm.classCode
}
const res = await fetchList(params)
@@ -289,6 +351,7 @@ const handleSearch = () => {
const handleReset = () => {
searchFormRef.value?.resetFields()
searchForm.buildingNo = ''
searchForm.classCode = ''
searchForm.month = ''
getDataList()
}
@@ -364,8 +427,30 @@ const getBuildingListData = async () => {
}
}
// 获取班级列表
const getClassListData = async () => {
try {
const res = await getClassListByRole({})
if (res.data) {
if (Array.isArray(res.data.records)) {
classList.value = res.data.records
} else if (Array.isArray(res.data)) {
classList.value = res.data
} else {
classList.value = []
}
} else {
classList.value = []
}
} catch (err) {
console.error('获取班级列表失败', err)
classList.value = []
}
}
// 初始化
onMounted(() => {
getBuildingListData()
getClassListData()
})
</script>

View File

@@ -131,61 +131,173 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="num" label="人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.num" size="small" type="success" effect="plain">
{{ scope.row.num }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="num" label="人数" show-overflow-tooltip align="center" />
<el-table-column prop="startTime" label="请假开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假开始时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.startTime ? formatDateTime(scope.row.startTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="请假结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假结束时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.endTime ? formatDateTime(scope.row.endTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="leaveType" label="请假类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">请假类型</span>
</template>
<template #default="scope">
<span>{{ formatLeaveType(scope.row.leaveType) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatLeaveType(scope.row.leaveType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">请假事由</span>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="stayDorm" label="是否住宿" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">是否住宿</span>
</template>
<template #default="scope">
<span>{{ formatYesNo(scope.row.stayDorm) }}</span>
<StatusTag
:value="scope.row.stayDorm"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="isSegment" label="时段请假" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">时段请假</span>
</template>
<template #default="scope">
<span>{{ formatYesNo(scope.row.isSegment) }}</span>
<StatusTag
:value="scope.row.isSegment"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="segmentString" label="请假时段" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">请假时段</span>
</template>
</el-table-column>
<el-table-column prop="segmentString" label="请假时段" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="schoolDoor" label="请假校门" show-overflow-tooltip align="center">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">请假校门</span>
</template>
<template #default="scope">
<span>{{ formatSchoolDoor(scope.row.schoolDoor) }}</span>
<el-tag size="small" type="warning" effect="plain">
{{ formatSchoolDoor(scope.row.schoolDoor) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptAudit" label="基础部审核" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">基础部审核</span>
</template>
<template #default="scope">
<span>{{ formatAuditType(scope.row.deptAudit) }}</span>
<StatusTag
:value="scope.row.deptAudit"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="schoolAudit" label="学工处审批" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">学工处审批</span>
</template>
<template #default="scope">
<span>{{ formatAuditType(scope.row.schoolAudit) }}</span>
<StatusTag
:value="scope.row.schoolAudit"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="rejectReason" label="驳回原因" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">驳回原因</span>
</template>
</el-table-column>
<el-table-column prop="rejectReason" label="驳回原因" show-overflow-tooltip align="center" min-width="150" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -231,6 +343,9 @@ import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import DetailDialog from './detail.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, UserFilled, Collection, Document, House, Location, CircleCheck, Warning, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -141,21 +141,87 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="virtualClassNo" label="班号" show-overflow-tooltip />
<el-table-column prop="realName" label="班主任" show-overflow-tooltip />
<el-table-column prop="assessmentCategory" label="考核项目" show-overflow-tooltip />
<el-table-column prop="assessmentPoint" label="考核指标" show-overflow-tooltip />
<el-table-column prop="type" label="类型" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row.type === '1' ? '加分' : scope.row.type === '2' ? '减分' : '-' }}</span>
<el-table-column type="index" label="序号" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="virtualClassNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="班主任" show-overflow-tooltip>
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="assessmentCategory" label="考核项目" show-overflow-tooltip>
<template #header>
<el-icon><Tickets /></el-icon>
<span style="margin-left: 4px">考核项目</span>
</template>
<template #default="scope">
<span>{{ getAssessmentCategoryName(scope.row.assessmentCategory) || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="assessmentPoint" label="考核指标" show-overflow-tooltip>
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">考核指标</span>
</template>
<template #default="scope">
<span>{{ getAssessmentPointName(scope.row.assessmentPoint) || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="type" label="类型" show-overflow-tooltip>
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<el-tag size="small" :type="scope.row.type === '1' ? 'success' : scope.row.type === '2' ? 'danger' : 'info'" effect="plain">
{{ scope.row.type === '1' ? '加分' : scope.row.type === '2' ? '减分' : '-' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="score" label="分数" show-overflow-tooltip>
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">分数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" :type="scope.row.score >= 0 ? 'success' : 'danger'" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="考核日期" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">考核日期</span>
</template>
</el-table-column>
<el-table-column prop="createBy" label="考核人" show-overflow-tooltip>
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">考核人</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="情况说明" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">情况说明</span>
</template>
</el-table-column>
<el-table-column prop="score" label="分数" show-overflow-tooltip />
<el-table-column prop="recordDate" label="考核日期" show-overflow-tooltip />
<el-table-column prop="createBy" label="考核人" show-overflow-tooltip />
<el-table-column prop="remarks" label="情况说明" show-overflow-tooltip />
<el-table-column label="操作" align="center" fixed="right" width="200">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -212,8 +278,8 @@
<el-descriptions :column="2" border>
<el-descriptions-item label="班号">{{ appealForm.virtualClassNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="班主任">{{ appealForm.realName || '-' }}</el-descriptions-item>
<el-descriptions-item label="考核项目">{{ appealForm.assessmentCategory || '-' }}</el-descriptions-item>
<el-descriptions-item label="考核指标">{{ appealForm.assessmentPoint || '-' }}</el-descriptions-item>
<el-descriptions-item label="考核项目">{{ getAssessmentCategoryName(appealForm.assessmentCategory) || '-' }}</el-descriptions-item>
<el-descriptions-item label="考核指标">{{ getAssessmentPointName(appealForm.assessmentPoint) || '-' }}</el-descriptions-item>
<el-descriptions-item label="类型">
{{ appealForm.type === '1' ? '加分' : appealForm.type === '2' ? '减分' : '-' }}
</el-descriptions-item>
@@ -254,6 +320,7 @@ import { getList as getAssessmentPointList } from '/@/api/stuwork/assessmentpoin
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, Grid, UserFilled, Tickets, DataAnalysis, Collection, Calendar, User, Document, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()
@@ -475,6 +542,20 @@ const getAssessmentPointListData = async () => {
}
}
// 根据考核项目ID获取名称
const getAssessmentCategoryName = (id: any) => {
if (!id) return ''
const category = assessmentCategoryList.value.find(item => String(item.id) === String(id))
return category ? category.category : ''
}
// 根据考核指标ID获取名称
const getAssessmentPointName = (id: any) => {
if (!id) return ''
const point = assessmentPointList.value.find(item => String(item.id) === String(id))
return point ? point.pointName : ''
}
// 初始化
onMounted(() => {
getDeptListData()

View File

@@ -77,23 +77,89 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip />
<el-table-column prop="realName" label="班主任" show-overflow-tooltip />
<el-table-column prop="recordDate" label="考核日期" width="120" align="center" />
<el-table-column prop="createTime" label="申诉日期" width="120" align="center" />
<el-table-column prop="assessmentCategory" label="考核项目" show-overflow-tooltip />
<el-table-column prop="assessmentPoint" label="考核指标" show-overflow-tooltip />
<el-table-column prop="remarks" label="情况说明" show-overflow-tooltip />
<el-table-column prop="appealReason" label="申诉原因" show-overflow-tooltip />
<el-table-column prop="createBy" label="考核人" show-overflow-tooltip />
<el-table-column prop="appealStatus" label="申诉结果" width="100" align="center">
<template #default="scope">
<span>{{ getAppealStatusText(scope.row.appealStatus) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="班主任" show-overflow-tooltip>
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="考核日期" width="120" align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">考核日期</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="申诉日期" width="120" align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">申诉日期</span>
</template>
</el-table-column>
<el-table-column prop="assessmentCategory" label="考核项目" show-overflow-tooltip>
<template #header>
<el-icon><Tickets /></el-icon>
<span style="margin-left: 4px">考核项目</span>
</template>
</el-table-column>
<el-table-column prop="assessmentPoint" label="考核指标" show-overflow-tooltip>
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">考核指标</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="情况说明" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">情况说明</span>
</template>
</el-table-column>
<el-table-column prop="appealReason" label="申诉原因" show-overflow-tooltip>
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">申诉原因</span>
</template>
</el-table-column>
<el-table-column prop="createBy" label="考核人" show-overflow-tooltip>
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">考核人</span>
</template>
</el-table-column>
<el-table-column prop="appealStatus" label="申诉结果" width="100" align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">申诉结果</span>
</template>
<template #default="scope">
<StatusTag
:value="scope.row.appealStatus"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="appealReply" label="反馈意见" show-overflow-tooltip>
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">反馈意见</span>
</template>
</el-table-column>
<el-table-column prop="appealReply" label="反馈意见" show-overflow-tooltip />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
v-if="!scope.row.appealStatus || scope.row.appealStatus === '0'"
@@ -186,6 +252,9 @@ import { fetchList, delObjs, auditAppeal } from "/@/api/stuwork/classmasterevalu
import { useMessage, useMessageBox } from "/@/hooks/message";
import { getDeptList, getClassListByRole } from '/@/api/basic/basicclass'
import { getTypeValue } from '/@/api/admin/dict'
import { List, Grid, UserFilled, Calendar, Tickets, DataAnalysis, Document, Warning, User, CircleCheck, EditPen, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -39,7 +39,6 @@
<el-button
icon="FolderAdd"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()"
v-auth="'stuwork_classmasterresume_add'">
@@ -63,11 +62,34 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="teacherNoVal" label="教师" show-overflow-tooltip />
<el-table-column prop="teacherNo" label="工号" show-overflow-tooltip />
<el-table-column prop="telPhone" label="联系方式" show-overflow-tooltip />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="teacherNoVal" label="教师" show-overflow-tooltip>
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">教师</span>
</template>
</el-table-column>
<el-table-column prop="teacherNo" label="工号" show-overflow-tooltip>
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">工号</span>
</template>
</el-table-column>
<el-table-column prop="telPhone" label="联系方式" show-overflow-tooltip>
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系方式</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -105,6 +127,7 @@ import request from "/@/utils/request";
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
// 尝试直接导入看看是否能解决问题
import DetailDialog from './detail.vue';
import { List, User, CreditCard, Phone, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -117,20 +117,61 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="type" label="类型" show-overflow-tooltip align="center">
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="type" label="类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="info" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="journal" label="发表刊物" show-overflow-tooltip align="center" min-width="150" />
@@ -215,6 +256,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import DetailDialog from './detail.vue'
import { List, Document, Calendar, Clock, OfficeBuilding, Grid, UserFilled, Collection, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -110,28 +110,77 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">状态</span>
</template>
<template #default="scope">
<span>{{ formatStatus(scope.row.status) }}</span>
<el-tag size="small" :type="scope.row.status === '1' ? 'success' : 'warning'" effect="plain">
{{ formatStatus(scope.row.status) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="updateTime" label="更新时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">更新时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="createBy" label="填报人" show-overflow-tooltip align="center" />
<el-table-column prop="createBy" label="填报人" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">填报人</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -174,6 +223,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import { List, OfficeBuilding, Calendar, CircleCheck, Clock, Grid, Document, User, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -97,33 +97,90 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<el-table-column prop="author" label="作者" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">作者</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="title" label="标题" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="author" label="作者" show-overflow-tooltip align="center" />
<el-table-column prop="updateTime" label="更新时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">更新时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="belong" label="归档级别" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">归档级别</span>
</template>
<template #default="scope">
<span>{{ formatBelong(scope.row.belong) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatBelong(scope.row.belong) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="isAddScore" label="加分" show-overflow-tooltip align="center">
<template #header>
<el-icon><Plus /></el-icon>
<span style="margin-left: 4px">加分</span>
</template>
<template #default="scope">
<span>{{ scope.row.isAddScore === '1' ? '是' : '否' }}</span>
<StatusTag
:value="scope.row.isAddScore"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="300" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -192,6 +249,9 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import BelongDialog from './belong.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, Document, User, Collection, Plus, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const formDialogRef = ref()

View File

@@ -96,30 +96,89 @@
row-key="id"
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classStatus" label="班级状态" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatClassStatus(scope.row.classStatus) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="position" label="教室位置" show-overflow-tooltip align="center" />
<el-table-column prop="stuNum" label="人数" show-overflow-tooltip align="center" />
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="platformType" label="讲台类型" show-overflow-tooltip align="center">
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classStatus" label="班级状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">班级状态</span>
</template>
<template #default="scope">
<span>{{ formatDict(scope.row.platformType, platformTypeList) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatClassStatus(scope.row.classStatus) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="position" label="教室位置" show-overflow-tooltip align="center">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">教室位置</span>
</template>
</el-table-column>
<el-table-column prop="stuNum" label="人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.stuNum" size="small" type="success" effect="plain">
{{ scope.row.stuNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="platformType" label="讲台类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">讲台类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="info" effect="plain">
{{ formatDict(scope.row.platformType, platformTypeList) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="tyType" label="投影类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">投影类型</span>
</template>
<template #default="scope">
<span>{{ formatDict(scope.row.tyType, tyTypeList) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatDict(scope.row.tyType, tyTypeList) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="tvType" label="电视机" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">电视机</span>
</template>
<template #default="scope">
<span>{{ formatDict(scope.row.tvType, tvTypeList) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatDict(scope.row.tvType, tvTypeList) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="chairCnt" label="方凳数量" show-overflow-tooltip align="center" />
@@ -159,6 +218,7 @@ import { queryAllClass } from "/@/api/basic/basicclass";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import ArrangeDialog from './arrange.vue'
import { List, OfficeBuilding, CircleCheck, Location, UserFilled, Collection, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -65,7 +65,6 @@
<el-button
icon="FolderAdd"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
</el-button>
@@ -88,13 +87,52 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip />
<el-table-column prop="recordDate" label="时间" show-overflow-tooltip width="120" />
<el-table-column prop="score" label="扣分" show-overflow-tooltip width="80" />
<el-table-column prop="note" label="检查记录" show-overflow-tooltip />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip>
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="时间" show-overflow-tooltip width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">时间</span>
</template>
</el-table-column>
<el-table-column prop="score" label="扣分" show-overflow-tooltip width="80">
<template #header>
<el-icon><Minus /></el-icon>
<span style="margin-left: 4px">扣分</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" type="danger" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="note" label="检查记录" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">检查记录</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -133,6 +171,7 @@ import { fetchList, delObjs } from "/@/api/stuwork/classroomhygienedaily";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { getDeptList } from '/@/api/basic/basicclass'
import { getClassListByRole } from '/@/api/basic/basicclass'
import { List, OfficeBuilding, Grid, Calendar, Minus, Document, Setting } from '@element-plus/icons-vue'
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));

View File

@@ -0,0 +1,457 @@
<template>
<div class="layout-padding">
<div class="layout-padding-auto layout-padding-view">
<!-- 搜索表单 -->
<el-row v-show="showSearch">
<el-form :model="searchForm" ref="searchFormRef" :inline="true" @keyup.enter="handleSearch">
<el-form-item label="楼号" prop="buildingNo">
<el-select
v-model="searchForm.buildingNo"
placeholder="请选择楼号"
clearable
filterable
style="width: 200px">
<el-option
v-for="item in buildingList"
:key="item.buildingNo"
:label="item.buildingNo"
:value="item.buildingNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="classCode">
<el-select
v-model="searchForm.classCode"
placeholder="请选择班级"
clearable
filterable
style="width: 200px">
<el-option
v-for="item in classList"
:key="item.classCode"
:label="item.classNo"
:value="item.classCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="月份" prop="month">
<el-date-picker
v-model="searchForm.month"
type="month"
placeholder="请选择月份"
format="YYYY-MM"
value-format="YYYY-MM"
clearable
style="width: 200px" />
</el-form-item>
<el-form-item>
<el-button type="primary" plain icon="Search" @click="handleSearch">查询</el-button>
<el-button icon="Refresh" @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
</el-row>
<!-- 操作按钮 -->
<el-row>
<div class="mb8" style="width: 100%">
<right-toolbar
v-model:showSearch="showSearch"
class="ml10 mr20"
style="float: right;"
@queryTable="getDataList">
</right-toolbar>
</div>
</el-row>
<!-- 表格 -->
<el-table
:data="state.dataList"
v-loading="state.loading"
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="totalScore" label="总分" show-overflow-tooltip align="center">
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">总分</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.totalScore !== undefined && scope.row.totalScore !== null" size="small" type="success" effect="plain">
{{ scope.row.totalScore }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="rank" label="排名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">排名</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.rank" size="small" :type="scope.row.rank <= 3 ? 'warning' : 'info'" effect="plain">
{{ scope.row.rank }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<!-- 动态日期列 -->
<el-table-column
v-for="day in dayColumns"
:key="day"
:prop="`day${day}`"
:label="`${day}日`"
show-overflow-tooltip
align="center"
width="80">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">{{ day }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Plus"
text
type="success"
@click="handleAddScore(scope.row)">
加分
</el-button>
<el-button
icon="Minus"
text
type="danger"
@click="handleSubtractScore(scope.row)">
减分
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 此接口不支持分页不显示分页组件 -->
</div>
<!-- 加分/减分对话框 -->
<el-dialog
v-model="scoreDialogVisible"
:title="scoreDialogTitle"
:close-on-click-modal="false"
draggable
width="500px">
<el-form
ref="scoreFormRef"
:model="scoreForm"
label-width="100px">
<el-form-item label="班级" prop="classNo">
<el-input
v-model="scoreForm.classNo"
disabled />
</el-form-item>
<el-form-item label="日期" prop="date">
<el-date-picker
v-model="scoreForm.date"
type="date"
placeholder="请选择日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%" />
</el-form-item>
<el-form-item label="分数" prop="score">
<el-input-number
v-model="scoreForm.score"
:precision="0"
:step="1"
:min="0"
placeholder="请输入分数"
style="width: 100%" />
</el-form-item>
<el-form-item label="说明" prop="note">
<el-input
v-model="scoreForm.note"
type="textarea"
:rows="3"
placeholder="请输入说明"
maxlength="500"
show-word-limit />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="scoreDialogVisible = false"> </el-button>
<el-button type="primary" @click="submitScore"> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts" name="ClassRoomHygieneDailyAnalysis">
import { ref, reactive, defineAsyncComponent, onMounted, computed } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList } from "/@/api/stuwork/classroomhygienedailyanalysis";
import { useMessage } from "/@/hooks/message";
import { getBuildingList } from '/@/api/stuwork/teachbuilding'
import { getClassListByRole } from '/@/api/basic/basicclass'
import { List, DataAnalysis, Trophy, Grid, Calendar, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()
const scoreFormRef = ref()
// 搜索变量
const showSearch = ref(true)
const buildingList = ref<any[]>([])
const classList = ref<any[]>([])
const scoreDialogVisible = ref(false)
const scoreDialogTitle = ref('加分')
const isAddScore = ref(true) // true: 加分, false: 减分
// 加分/减分表单
const scoreForm = reactive({
classCode: '',
classNo: '',
date: '',
score: 0,
note: ''
})
// 搜索表单
const searchForm = reactive({
buildingNo: '',
classCode: '',
month: ''
})
// 计算月份的天数列
const dayColumns = computed(() => {
if (!searchForm.month) {
return []
}
const [year, month] = searchForm.month.split('-').map(Number)
const daysInMonth = new Date(year, month, 0).getDate()
return Array.from({ length: daysInMonth }, (_, i) => i + 1)
})
// 配置 useTable - 接口参数为 buildingNo 和 month数组格式
const state: BasicTableProps = reactive<BasicTableProps>({
queryForm: searchForm,
isPage: false, // 接口不支持分页
pageList: async (queryParams: any) => {
const params: any = {}
// 接口文档要求 buildingNo 和 month 都是数组格式
if (searchForm.buildingNo) {
params.buildingNo = Array.isArray(searchForm.buildingNo) ? searchForm.buildingNo : [searchForm.buildingNo]
}
if (searchForm.month) {
params.month = Array.isArray(searchForm.month) ? searchForm.month : [searchForm.month]
}
if (searchForm.classCode) {
params.classCode = searchForm.classCode
}
const res = await fetchList(params)
// 接口返回的数据结构:数组,每个元素包含日期字段(如 2025-12-01和班级信息
// 需要确保返回数组格式给 useTable
let dataList = []
if (Array.isArray(res.data)) {
dataList = res.data
} else if (res.data && Array.isArray(res.data.records)) {
dataList = res.data.records
} else if (res.data && Array.isArray(res.data.list)) {
dataList = res.data.list
} else if (res.data && typeof res.data === 'object') {
// 如果 res.data 是单个对象,转换为数组
dataList = [res.data]
}
// 处理数据:将日期字段转换为 day1, day2 等格式,方便表格显示
const processedData = dataList.map((item: any) => {
const processed: any = {
classCode: item.classCode || '',
classNo: item.classNo || '',
totalScore: item.scoreTotal || 0,
rank: item.order || 0,
isAddScore: item.isAddScore || 0
}
// 提取所有日期字段(格式为 YYYY-MM-DD
const datePattern = /^\d{4}-\d{2}-\d{2}$/
Object.keys(item).forEach(key => {
if (datePattern.test(key)) {
// 将日期转换为 day1, day2 等格式(根据日期中的天数)
const date = new Date(key)
const day = date.getDate()
processed[`day${day}`] = item[key]
}
})
// 确保所有日期字段都存在即使值为0或null避免表格列无法显示
if (searchForm.month) {
const [year, month] = searchForm.month.split('-').map(Number)
const daysInMonth = new Date(year, month, 0).getDate()
for (let i = 1; i <= daysInMonth; i++) {
if (!processed.hasOwnProperty(`day${i}`)) {
processed[`day${i}`] = 0
}
}
}
return processed
})
return {
...res,
data: processedData
}
},
props: {
item: 'records',
totalCount: 'total'
},
createdIsNeed: false // 不自动加载,需要手动调用
})
// table hook
const {
getDataList,
currentChangeHandle,
sizeChangeHandle,
sortChangeHandle,
tableStyle
} = useTable(state)
// 查询
const handleSearch = () => {
if (!searchForm.month) {
useMessage().warning('请选择月份')
return
}
getDataList()
}
// 重置
const handleReset = () => {
searchFormRef.value?.resetFields()
searchForm.buildingNo = ''
searchForm.classCode = ''
searchForm.month = ''
getDataList()
}
// 加分
const handleAddScore = (row: any) => {
isAddScore.value = true
scoreDialogTitle.value = '加分'
Object.assign(scoreForm, {
classCode: row.classCode || '',
classNo: row.classNo || '',
date: '',
score: 0,
note: ''
})
scoreDialogVisible.value = true
}
// 减分
const handleSubtractScore = (row: any) => {
isAddScore.value = false
scoreDialogTitle.value = '减分'
Object.assign(scoreForm, {
classCode: row.classCode || '',
classNo: row.classNo || '',
date: '',
score: 0,
note: ''
})
scoreDialogVisible.value = true
}
// 提交加分/减分
const submitScore = async () => {
if (!scoreForm.date) {
useMessage().warning('请选择日期')
return
}
if (!scoreForm.score || scoreForm.score <= 0) {
useMessage().warning('请输入有效的分数')
return
}
try {
// TODO: 调用加分/减分接口
// const api = isAddScore.value ? addScore : subtractScore
// await api(scoreForm)
useMessage().success(isAddScore.value ? '加分成功' : '减分成功')
scoreDialogVisible.value = false
getDataList()
} catch (err: any) {
useMessage().error(err.msg || (isAddScore.value ? '加分失败' : '减分失败'))
}
}
// 获取楼号列表(教学楼)
const getBuildingListData = async () => {
try {
const res = await getBuildingList()
if (res.data) {
// 处理返回的数据,可能是分页数据
if (res.data.records) {
buildingList.value = Array.isArray(res.data.records) ? res.data.records : []
} else if (Array.isArray(res.data)) {
buildingList.value = res.data
} else {
buildingList.value = []
}
}
} catch (err) {
console.error('获取楼号列表失败', err)
buildingList.value = []
}
}
// 获取班级列表
const getClassListData = async () => {
try {
const res = await getClassListByRole({})
if (res.data) {
if (Array.isArray(res.data.records)) {
classList.value = res.data.records
} else if (Array.isArray(res.data)) {
classList.value = res.data
} else {
classList.value = []
}
} else {
classList.value = []
}
} catch (err) {
console.error('获取班级列表失败', err)
classList.value = []
}
}
// 初始化
onMounted(() => {
getBuildingListData()
getClassListData()
})
</script>

View File

@@ -107,18 +107,93 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip />
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip />
<el-table-column prop="buildingNo" label="教学楼号" show-overflow-tooltip />
<el-table-column prop="position" label="教室号" show-overflow-tooltip />
<el-table-column prop="score" label="评分" show-overflow-tooltip />
<el-table-column prop="note" label="检查记录" show-overflow-tooltip />
<el-table-column prop="month" label="月份" show-overflow-tooltip />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip>
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip>
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip>
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="教学楼号" show-overflow-tooltip>
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">教学楼号</span>
</template>
</el-table-column>
<el-table-column prop="position" label="教室号" show-overflow-tooltip>
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">教室号</span>
</template>
</el-table-column>
<el-table-column prop="score" label="评分" show-overflow-tooltip>
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">评分</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.score !== undefined && scope.row.score !== null" size="small" :type="scope.row.score >= 80 ? 'success' : scope.row.score >= 60 ? 'warning' : 'danger'" effect="plain">
{{ scope.row.score }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="note" label="检查记录" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">检查记录</span>
</template>
</el-table-column>
<el-table-column prop="month" label="月份" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">月份</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.month" size="small" type="info" effect="plain">
{{ scope.row.month }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -210,6 +285,7 @@ import { getClassListByRole } from '/@/api/basic/basicclass'
// 引入组件
const UploadExcel = defineAsyncComponent(() => import('/@/components/Upload/Excel.vue'));
import { List, Calendar, Clock, OfficeBuilding, Grid, UserFilled, Location, DataAnalysis, Document, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -97,19 +97,70 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="themeName" label="活动主题" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">活动主题</span>
</template>
</el-table-column>
<el-table-column prop="author" label="主持人" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">主持人</span>
</template>
</el-table-column>
<el-table-column prop="address" label="活动地点" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">活动地点</span>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="活动时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">活动时间</span>
</template>
</el-table-column>
<el-table-column prop="attendNum" label="参加人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">参加人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.attendNum" size="small" type="success" effect="plain">
{{ scope.row.attendNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="themeName" label="活动主题" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="author" label="主持人" show-overflow-tooltip align="center" />
<el-table-column prop="address" label="活动地点" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="recordDate" label="活动时间" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="attendNum" label="参加人数" show-overflow-tooltip align="center" />
<el-table-column prop="attachment" label="活动照片" show-overflow-tooltip align="center" width="100">
<template #default="scope">
<el-button
@@ -139,6 +190,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -190,6 +245,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import DetailDialog from './detail.vue'
import { List, Calendar, Clock, Grid, Trophy, User, Location, UserFilled, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -110,31 +110,182 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="totalCnt" label="总人数" show-overflow-tooltip align="center" />
<el-table-column prop="boyCnt" label="男生人数" show-overflow-tooltip align="center" />
<el-table-column prop="girlCnt" label="女生人数" show-overflow-tooltip align="center" />
<el-table-column prop="boyDormCnt" label="男(住宿)" show-overflow-tooltip align="center" />
<el-table-column prop="girlDormCnt" label="女(住宿)" show-overflow-tooltip align="center" />
<el-table-column prop="keepSchoolCnt" label="留校察看人数" show-overflow-tooltip align="center" />
<el-table-column prop="gigCnt" label="记过人数" show-overflow-tooltip align="center" />
<el-table-column prop="seriousWarningCnt" label="严重警告人数" show-overflow-tooltip align="center" />
<el-table-column prop="warningCnt" label="警告人数" show-overflow-tooltip align="center" />
<el-table-column prop="revokeCnt" label="撤销处分人数" show-overflow-tooltip align="center" />
<el-table-column prop="dropCnt" label="退学人数" show-overflow-tooltip align="center" />
<el-table-column prop="status" label="状态" show-overflow-tooltip align="center">
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatStatus(scope.row.status) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="totalCnt" label="总人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">总人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.totalCnt" size="small" type="success" effect="plain">
{{ scope.row.totalCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="boyCnt" label="男生人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Male /></el-icon>
<span style="margin-left: 4px">男生人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.boyCnt" size="small" type="primary" effect="plain">
{{ scope.row.boyCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="girlCnt" label="女生人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Female /></el-icon>
<span style="margin-left: 4px">女生人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.girlCnt" size="small" type="danger" effect="plain">
{{ scope.row.girlCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="boyDormCnt" label="男(住宿)" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">(住宿)</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.boyDormCnt" size="small" type="info" effect="plain">
{{ scope.row.boyDormCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="girlDormCnt" label="女(住宿)" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">(住宿)</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.girlDormCnt" size="small" type="info" effect="plain">
{{ scope.row.girlDormCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="keepSchoolCnt" label="留校察看人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">留校察看人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.keepSchoolCnt" size="small" type="warning" effect="plain">
{{ scope.row.keepSchoolCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="gigCnt" label="记过人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">记过人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.gigCnt" size="small" type="warning" effect="plain">
{{ scope.row.gigCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="seriousWarningCnt" label="严重警告人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">严重警告人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.seriousWarningCnt" size="small" type="warning" effect="plain">
{{ scope.row.seriousWarningCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="warningCnt" label="警告人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">警告人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.warningCnt" size="small" type="warning" effect="plain">
{{ scope.row.warningCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="revokeCnt" label="撤销处分人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">撤销处分人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.revokeCnt" size="small" type="success" effect="plain">
{{ scope.row.revokeCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="dropCnt" label="退学人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">退学人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.dropCnt" size="small" type="danger" effect="plain">
{{ scope.row.dropCnt }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">状态</span>
</template>
<template #default="scope">
<el-tag size="small" :type="scope.row.status === '1' ? 'success' : 'warning'" effect="plain">
{{ formatStatus(scope.row.status) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -187,6 +338,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import DetailDialog from './detail.vue'
import { List, Calendar, Clock, Grid, UserFilled, Male, Female, House, Warning, CircleCheck, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -110,18 +110,63 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="count" label="上传次数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Upload /></el-icon>
<span style="margin-left: 4px">上传次数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.count" size="small" type="success" effect="plain">
{{ scope.row.count }}
</el-tag>
<span v-else>0</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="count" label="上传次数" show-overflow-tooltip align="center" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="200" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -167,6 +212,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import InitDialog from './init.vue'
import RecordDialog from './record.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, Upload, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const initDialogRef = ref()

View File

@@ -30,12 +30,65 @@
@sort-change="sortChangeHandle"
show-summary
:summary-method="getSummaries">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="layers" label="层数" show-overflow-tooltip align="center" />
<el-table-column prop="allAlreadyNum" label="已住人数" show-overflow-tooltip align="center" />
<el-table-column prop="nowNum" label="现住人数" show-overflow-tooltip align="center" />
<el-table-column prop="surplusNum" label="剩余可住人数" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="layers" label="层数" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">层数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.layers" size="small" type="info" effect="plain">
{{ scope.row.layers }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="allAlreadyNum" label="已住人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">已住人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.allAlreadyNum !== undefined && scope.row.allAlreadyNum !== null" size="small" type="success" effect="plain">
{{ scope.row.allAlreadyNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="nowNum" label="现住人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">现住人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.nowNum !== undefined && scope.row.nowNum !== null" size="small" type="primary" effect="plain">
{{ scope.row.nowNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="surplusNum" label="剩余可住人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">剩余可住人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.surplusNum !== undefined && scope.row.surplusNum !== null" size="small" type="warning" effect="plain">
{{ scope.row.surplusNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="roomEmptyNum" label="空宿舍数" show-overflow-tooltip align="center">
<template #default="scope">
<el-link
@@ -110,6 +163,10 @@
</el-table-column>
<el-table-column prop="phone" label="电话" show-overflow-tooltip align="center" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -153,6 +210,7 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
const EmptyRoomDialog = defineAsyncComponent(() => import('./emptyRoomDialog.vue'));
import { List, OfficeBuilding, Grid, UserFilled, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -9,10 +9,28 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="username" label="管理员工号" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="username" label="管理员工号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">管理员工号</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -39,6 +57,7 @@ import { reactive } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObjs } from "/@/api/stuwork/dormbuildingmanger";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { List, OfficeBuilding, CreditCard, Setting } from '@element-plus/icons-vue'
// 配置 useTable
const state: BasicTableProps = reactive<BasicTableProps>({

View File

@@ -39,7 +39,8 @@
placeholder="请选择楼号"
clearable
filterable
style="width: 200px">
style="width: 200px"
@change="handleBuildingChange">
<el-option
v-for="item in buildingList"
:key="item.buildingNo"
@@ -48,6 +49,22 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="宿舍号" prop="roomNo">
<el-select
v-model="searchForm.roomNo"
placeholder="请选择宿舍号"
clearable
filterable
:disabled="!searchForm.buildingNo"
style="width: 200px">
<el-option
v-for="item in filteredRoomList"
:key="item.roomNo"
:label="item.roomNo"
:value="item.roomNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" plain icon="Search" @click="handleSearch">查询</el-button>
<el-button icon="Refresh" @click="handleReset">重置</el-button>
@@ -82,22 +99,60 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ scope.row.schoolTerm === '1' ? '第一学期' : scope.row.schoolTerm === '2' ? '第二学期' : scope.row.schoolTerm }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ scope.row.schoolTerm === '1' ? '第一学期' : scope.row.schoolTerm === '2' ? '第二学期' : scope.row.schoolTerm }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">宿舍号</span>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="recordDate" label="记录日期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">记录日期</span>
</template>
<template #default="scope">
<span>{{ scope.row.recordDate ? scope.row.recordDate.split(' ')[0] : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="note" label="情况记录" show-overflow-tooltip align="center" />
<el-table-column prop="note" label="情况记录" show-overflow-tooltip align="center">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">情况记录</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -134,12 +189,14 @@ import { ref, reactive, defineAsyncComponent, onMounted } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObjs } from "/@/api/stuwork/dormhygienedaily";
import { getBuildingList } from "/@/api/stuwork/dormbuilding";
import { getDormRoomDataByBuildingNo } from "/@/api/stuwork/dormroom";
import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { getDicts } from "/@/api/admin/dict";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, Calendar, Clock, OfficeBuilding, House, Document, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()
@@ -148,12 +205,22 @@ const showSearch = ref(true)
const schoolYearList = ref<any[]>([])
const schoolTermList = ref<any[]>([])
const buildingList = ref<any[]>([])
const roomList = ref<any[]>([])
// 搜索表单
const searchForm = reactive({
schoolYear: '',
schoolTerm: '',
buildingNo: ''
buildingNo: '',
roomNo: ''
})
// 根据楼号筛选房间列表
const filteredRoomList = computed(() => {
if (!searchForm.buildingNo) {
return []
}
return roomList.value.filter((item: any) => item.buildingNo === searchForm.buildingNo)
})
// 配置 useTable
@@ -180,12 +247,26 @@ const handleSearch = () => {
getDataList()
}
// 楼号选择变化
const handleBuildingChange = () => {
// 清空宿舍号选择
searchForm.roomNo = ''
// 重新加载房间列表
if (searchForm.buildingNo) {
getRoomListData(searchForm.buildingNo)
} else {
roomList.value = []
}
}
// 重置
const handleReset = () => {
searchFormRef.value?.formRef?.resetFields()
searchForm.schoolYear = ''
searchForm.schoolTerm = ''
searchForm.buildingNo = ''
searchForm.roomNo = ''
roomList.value = []
getDataList()
}
@@ -252,6 +333,23 @@ const getBuildingListData = async () => {
}
}
// 根据楼号获取房间列表
const getRoomListData = async (buildingNo: string) => {
if (!buildingNo) {
roomList.value = []
return
}
try {
const res = await getDormRoomDataByBuildingNo({ buildingNo })
if (res.data) {
roomList.value = Array.isArray(res.data) ? res.data : []
}
} catch (err) {
console.error('获取房间列表失败', err)
roomList.value = []
}
}
// 初始化
onMounted(() => {
getSchoolYearList()

View File

@@ -123,15 +123,40 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="liveType" label="留宿类型" show-overflow-tooltip align="center">
@@ -187,6 +212,7 @@ import { getBuildingList } from "/@/api/stuwork/dormbuilding";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -10,7 +10,8 @@
placeholder="请选择楼号"
clearable
filterable
style="width: 200px">
style="width: 200px"
@change="handleBuildingChange">
<el-option
v-for="item in buildingList"
:key="item.buildingNo"
@@ -20,11 +21,20 @@
</el-select>
</el-form-item>
<el-form-item label="房间号" prop="roomNo">
<el-input
<el-select
v-model="searchForm.roomNo"
placeholder="请输入房间号"
placeholder="请选择房间号"
clearable
style="width: 200px" />
filterable
:disabled="!searchForm.buildingNo"
style="width: 200px">
<el-option
v-for="item in filteredRoomList"
:key="item.roomNo"
:label="item.roomNo"
:value="item.roomNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="月份" prop="month">
<el-date-picker
@@ -76,23 +86,68 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNos" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNos" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">房间号</span>
</template>
</el-table-column>
<el-table-column prop="reformDate" label="整改时间" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">整改时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.reformDate ? scope.row.reformDate.split(' ')[0] : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="reformContent" label="整改内容" show-overflow-tooltip align="center" />
<el-table-column prop="reformStatus" label="整改结果" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatReformStatus(scope.row.reformStatus) }}</span>
<el-table-column prop="reformContent" label="整改内容" show-overflow-tooltip align="center">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">整改内容</span>
</template>
</el-table-column>
<el-table-column prop="reformStatus" label="整改结果" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">整改结果</span>
</template>
<template #default="scope">
<StatusTag
:value="scope.row.reformStatus"
:options="[{ label: '合格', value: '合格' }, { label: '不合格', value: '不合格' }, { label: '未整改', value: '未整改' }]"
:type-map="{ '合格': { type: 'success', effect: 'light' }, '不合格': { type: 'danger', effect: 'light' }, '未整改': { type: 'warning', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="remarks" label="关联扣分明细" show-overflow-tooltip align="center">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">关联扣分明细</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="关联扣分明细" show-overflow-tooltip align="center" />
<el-table-column label="操作" width="350" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
text
@@ -146,22 +201,27 @@
</template>
<script setup lang="ts" name="DormHygieneMonthly">
import { ref, reactive, defineAsyncComponent, onMounted } from 'vue'
import { ref, reactive, defineAsyncComponent, computed, onMounted } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, putObj, delObjs } from "/@/api/stuwork/dormreform";
import { getBuildingList } from "/@/api/stuwork/dormbuilding";
import { getDormRoomDataByBuildingNo } from "/@/api/stuwork/dormroom";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { getDicts } from "/@/api/admin/dict";
import { downBlobFile, adaptationUrl } from "/@/utils/other";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, OfficeBuilding, Grid, House, Calendar, Document, CircleCheck, EditPen, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent as defineStatusTag } from 'vue'
const StatusTag = defineStatusTag(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const formDialogRef = ref()
const searchFormRef = ref()
const showSearch = ref(true)
const buildingList = ref<any[]>([])
const roomList = ref<any[]>([])
const reformStatusDict = ref<any[]>([])
// 搜索表单
@@ -171,6 +231,14 @@ const searchForm = reactive({
month: ''
})
// 根据楼号筛选房间列表
const filteredRoomList = computed(() => {
if (!searchForm.buildingNo) {
return []
}
return roomList.value.filter((item: any) => item.buildingNo === searchForm.buildingNo)
})
// 配置 useTable
const state: BasicTableProps = reactive<BasicTableProps>({
queryForm: searchForm,
@@ -191,6 +259,18 @@ const {
tableStyle
} = useTable(state)
// 楼号选择变化
const handleBuildingChange = () => {
// 清空房间号选择
searchForm.roomNo = ''
// 重新加载房间列表
if (searchForm.buildingNo) {
getRoomListData(searchForm.buildingNo)
} else {
roomList.value = []
}
}
// 查询
const handleSearch = () => {
getDataList()
@@ -284,6 +364,23 @@ const getBuildingListData = async () => {
}
}
// 根据楼号获取房间列表
const getRoomListData = async (buildingNo: string) => {
if (!buildingNo) {
roomList.value = []
return
}
try {
const res = await getDormRoomDataByBuildingNo({ buildingNo })
if (res.data) {
roomList.value = Array.isArray(res.data) ? res.data : []
}
} catch (err) {
console.error('获取房间列表失败', err)
roomList.value = []
}
}
// 获取整改结果字典
const getReformStatusDict = async () => {
try {

View File

@@ -112,14 +112,64 @@
@sort-change="sortChangeHandle"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center" />
<el-table-column prop="bedNum" label="几人间" show-overflow-tooltip align="center" />
<el-table-column prop="livedNum" label="已住人数" show-overflow-tooltip align="center" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">房间号</span>
</template>
</el-table-column>
<el-table-column prop="bedNum" label="几人间" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">几人间</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.bedNum" size="small" type="info" effect="plain">
{{ scope.row.bedNum }}人间
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="livedNum" label="已住人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">已住人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.livedNum !== undefined && scope.row.livedNum !== null" size="small" type="success" effect="plain">
{{ scope.row.livedNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -193,6 +243,7 @@ import { getDicts } from "/@/api/admin/dict";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, OfficeBuilding, House, UserFilled, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -159,23 +159,95 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="teacherPhone" label="班主任电话" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="bedNo" label="床位号" show-overflow-tooltip align="center" />
<el-table-column prop="isLeader" label="是否舍长" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ scope.row.isLeader === '1' || scope.row.isLeader === 1 ? '是' : '否' }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="房间号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">房间号</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="teacherPhone" label="班主任电话" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">班主任电话</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="bedNo" label="床位号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">床位号</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.bedNo" size="small" type="info" effect="plain">
{{ scope.row.bedNo }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="isLeader" label="是否舍长" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">是否舍长</span>
</template>
<template #default="scope">
<StatusTag
:value="scope.row.isLeader"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="phone" label="学生电话" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">学生电话</span>
</template>
</el-table-column>
<el-table-column prop="tel" label="家长电话" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">家长电话</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="学生电话" show-overflow-tooltip align="center" />
<el-table-column prop="tel" label="家长电话" show-overflow-tooltip align="center" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Switch"
@@ -221,6 +293,9 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue';
import TransferDialog from './transfer.vue';
import TreeSelect from '/@/components/TreeSelect/index.vue';
import { List, OfficeBuilding, House, Grid, UserFilled, Phone, CreditCard, Avatar, User, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const formDialogRef = ref()

View File

@@ -66,26 +66,96 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="createTime" label="变动时间" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">变动时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.createTime ? scope.row.createTime.split(' ')[0] + ' ' + scope.row.createTime.split(' ')[1] : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="changeType" label="异动类型" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatChangeType(scope.row.changeType) }}</span>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="changeType" label="异动类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">异动类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="warning" effect="plain">
{{ formatChangeType(scope.row.changeType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="原房间号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">原房间号</span>
</template>
</el-table-column>
<el-table-column prop="bedNo" label="原床位号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">原床位号</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.bedNo" size="small" type="info" effect="plain">
{{ scope.row.bedNo }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="newRoomNo" label="新房间号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">新房间号</span>
</template>
</el-table-column>
<el-table-column prop="newBedNo" label="新床位号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">新床位号</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.newBedNo" size="small" type="success" effect="plain">
{{ scope.row.newBedNo }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="原房间号" show-overflow-tooltip align="center" />
<el-table-column prop="bedNo" label="原床位号" show-overflow-tooltip align="center" />
<el-table-column prop="newRoomNo" label="新房间号" show-overflow-tooltip align="center" />
<el-table-column prop="newBedNo" label="新床位号" show-overflow-tooltip align="center" />
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -108,6 +178,7 @@ import { queryStudentAbnormal } from "/@/api/stuwork/dormroomstudent";
import { getDeptList } from "/@/api/basic/basicclass";
import { useMessage } from "/@/hooks/message";
import { getDicts } from "/@/api/admin/dict";
import { List, Calendar, OfficeBuilding, Grid, CreditCard, Avatar, Collection, House, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -28,15 +28,41 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="ruleName" label="规则名称" show-overflow-tooltip />
<el-table-column prop="classNames" label="绑定班级" show-overflow-tooltip />
<el-table-column type="index" label="序号" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="ruleName" label="规则名称" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">规则名称</span>
</template>
</el-table-column>
<el-table-column prop="classNames" label="绑定班级" show-overflow-tooltip>
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">绑定班级</span>
</template>
</el-table-column>
<el-table-column prop="isHoliday" label="假期模式" show-overflow-tooltip>
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">假期模式</span>
</template>
<template #default="scope">
<span>{{ scope.row.isHoliday === '1' ? '开启' : '关闭' }}</span>
<StatusTag
:value="scope.row.isHoliday"
:options="[{ label: '开启', value: '1' }, { label: '关闭', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="280">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Switch"
@@ -114,6 +140,9 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
import { List, Document, Grid, CircleCheck, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent as defineStatusTag } from 'vue'
const StatusTag = defineStatusTag(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const formDialogRef = ref()

View File

@@ -61,27 +61,62 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="pendingWork" label="待办事项" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="pendingWork" label="待办事项" show-overflow-tooltip align="center">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">待办事项</span>
</template>
</el-table-column>
<el-table-column prop="nums" label="数量" show-overflow-tooltip align="center">
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">数量</span>
</template>
<template #default="scope">
<el-tag type="warning" v-if="scope.row.nums > 0">{{ scope.row.nums }}</el-tag>
<span v-else>{{ scope.row.nums || 0 }}</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">创建时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column prop="updateTime" label="更新时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">更新时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -111,6 +146,7 @@ import { getDeptList } from "/@/api/basic/basicclass";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { List, OfficeBuilding, Grid, Document, DataAnalysis, Calendar, Clock, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -77,7 +77,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -104,19 +103,69 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">奖项名称</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.ruleName" size="small" type="warning" effect="light">
{{ scope.row.ruleName }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="classMasterName" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -197,7 +246,7 @@ import { getClassListByRole } from "/@/api/basic/basicclass";
import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { UploadFilled } from '@element-plus/icons-vue'
import { UploadFilled, List, Calendar, Clock, OfficeBuilding, Grid, UserFilled, Trophy, EditPen, Setting } from '@element-plus/icons-vue'
import FormDialog from './form.vue'
// 定义变量内容

View File

@@ -60,7 +60,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -87,17 +86,57 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">宿舍号</span>
</template>
</el-table-column>
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">奖项名称</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.ruleName" size="small" type="warning" effect="light">
{{ scope.row.ruleName }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -176,7 +215,7 @@ import { fetchList, delObj, importExcel } from "/@/api/stuwork/rewarddorm";
import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { UploadFilled } from '@element-plus/icons-vue'
import { UploadFilled, List, Calendar, Clock, House, Trophy, EditPen, Setting } from '@element-plus/icons-vue'
import FormDialog from './form.vue'
// 定义变量内容

View File

@@ -31,7 +31,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -51,15 +50,45 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="ruleType" label="奖项类型" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatRuleType(scope.row.ruleType) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="ruleName" label="奖项名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">奖项名称</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.ruleName" size="small" type="warning" effect="light">
{{ scope.row.ruleName }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="ruleType" label="奖项类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">奖项类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="info" effect="plain">
{{ formatRuleType(scope.row.ruleType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -98,6 +127,7 @@ import { fetchList, delObj } from "/@/api/stuwork/rewardrule";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Trophy, Collection, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -96,31 +96,82 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="departName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="departName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="averageConduct" label="操行平均分" show-overflow-tooltip align="center">
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">操行平均分</span>
</template>
<template #default="scope">
<span>{{ scope.row.averageConduct !== null && scope.row.averageConduct !== undefined ? scope.row.averageConduct.toFixed(2) : '-' }}</span>
<el-tag v-if="scope.row.averageConduct !== null && scope.row.averageConduct !== undefined" size="small" type="success" effect="plain">
{{ scope.row.averageConduct.toFixed(2) }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="averageScore" label="总评成绩平均分" show-overflow-tooltip align="center">
<template #header>
<el-icon><DataAnalysis /></el-icon>
<span style="margin-left: 4px">总评成绩平均分</span>
</template>
<template #default="scope">
<span>{{ scope.row.averageScore !== null && scope.row.averageScore !== undefined ? scope.row.averageScore.toFixed(2) : '-' }}</span>
<el-tag v-if="scope.row.averageScore !== null && scope.row.averageScore !== undefined" size="small" type="primary" effect="plain">
{{ scope.row.averageScore.toFixed(2) }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="violation" label="违规情况" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">违规情况</span>
</template>
</el-table-column>
<el-table-column prop="violation" label="违规情况" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="ruleName" label="个人奖项" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">个人奖项</span>
</template>
<template #default="scope">
<span v-if="scope.row.ruleName && Array.isArray(scope.row.ruleName) && scope.row.ruleName.length > 0">
<el-tag v-if="scope.row.ruleName && Array.isArray(scope.row.ruleName) && scope.row.ruleName.length > 0" size="small" type="warning" effect="light">
{{ scope.row.ruleName.join('') }}
</span>
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="upDateTime" label="保存时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">保存时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.upDateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
@@ -139,6 +190,7 @@ import { getClassListByRole } from "/@/api/basic/basicclass";
import { getDicts } from "/@/api/admin/dict";
import { useMessage } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { List, OfficeBuilding, Grid, CreditCard, Avatar, DataAnalysis, Warning, Trophy, Clock } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -46,7 +46,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="handleAdd">
新增
</el-button>

View File

@@ -46,7 +46,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="handleAdd">
新增
</el-button>
@@ -66,41 +65,97 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="title" label="批次名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" width="120" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="title" label="批次名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">批次名称</span>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="type" label="季度" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Timer /></el-icon>
<span style="margin-left: 4px">季度</span>
</template>
<template #default="scope">
<span>{{ formatQuarter(scope.row.type) }}</span>
<el-tag size="small" type="warning" effect="plain">
{{ formatQuarter(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="classify" label="类别" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类别</span>
</template>
<template #default="scope">
<span>{{ formatClassify(scope.row.classify) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatClassify(scope.row.classify) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="moneyValue" label="补助金额" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">补助金额</span>
</template>
<template #default="scope">
<span>{{ scope.row.moneyValue !== undefined && scope.row.moneyValue !== null ? scope.row.moneyValue : '-' }}</span>
<el-tag v-if="scope.row.moneyValue !== undefined && scope.row.moneyValue !== null" size="small" type="success" effect="plain">
¥{{ scope.row.moneyValue }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始日期" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">开始日期</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="截止日期" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">截止日期</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -141,6 +196,10 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import {
List, Document, Calendar, Clock, Timer, Collection,
Money, EditPen, Setting
} from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -53,7 +53,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -73,30 +72,90 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="associationName" label="社团名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="teacherRealName" label="指导老师姓名" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="maintainer" label="负责人" show-overflow-tooltip align="center" width="100" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="associationName" label="社团名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">社团名称</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="指导老师姓名" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">指导老师姓名</span>
</template>
</el-table-column>
<el-table-column prop="maintainer" label="负责人" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">负责人</span>
</template>
</el-table-column>
<el-table-column prop="num" label="人数" show-overflow-tooltip align="center" width="80">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">人数</span>
</template>
<template #default="scope">
<span>{{ scope.row.num !== undefined && scope.row.num !== null ? scope.row.num : '-' }}</span>
<el-tag v-if="scope.row.num !== undefined && scope.row.num !== null" size="small" type="success" effect="plain">
{{ scope.row.num }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="openTime" label="成立时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">成立时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.openTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="tel" label="联系电话" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="type" label="所属类别" show-overflow-tooltip align="center" width="120">
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-table-column prop="tel" label="联系电话" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系电话</span>
</template>
</el-table-column>
<el-table-column prop="type" label="所属类别" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">所属类别</span>
</template>
<template #default="scope">
<el-tag size="small" type="warning" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="applyNote" label="成立申请" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">成立申请</span>
</template>
</el-table-column>
<el-table-column prop="ruleNote" label="社团章程" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Files /></el-icon>
<span style="margin-left: 4px">社团章程</span>
</template>
</el-table-column>
<el-table-column prop="applyNote" label="成立申请" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="ruleNote" label="社团章程" show-overflow-tooltip align="center" min-width="200" />
<el-table-column label="操作" width="200" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="User"
@@ -148,6 +207,10 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import MemberDialog from './member.vue'
import {
List, Trophy, OfficeBuilding, User, UserFilled, Calendar,
Phone, Collection, Document, Files, Setting
} from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -110,35 +110,98 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="teacherRealName" label="班主任姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任姓名</span>
</template>
</el-table-column>
<el-table-column prop="teacherTel" label="班主任电话" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">班主任电话</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="teacherRealName" label="班主任姓名" show-overflow-tooltip align="center" />
<el-table-column prop="teacherTel" label="班主任电话" show-overflow-tooltip align="center" />
<el-table-column prop="careType" label="需关爱类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Heart /></el-icon>
<span style="margin-left: 4px">需关爱类型</span>
</template>
<template #default="scope">
<span>{{ formatCareType(scope.row.careType) }}</span>
<el-tag size="small" type="danger" effect="plain">
{{ formatCareType(scope.row.careType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="present" label="危机表现" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">危机表现</span>
</template>
</el-table-column>
<el-table-column prop="present" label="危机表现" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="recordDate" label="记录时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">记录时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.recordDate || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="result" label="干预结果" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">干预结果</span>
</template>
<template #default="scope">
<span>{{ scope.row.result || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"

View File

@@ -125,28 +125,78 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="conductType" label="类型" show-overflow-tooltip align="center">
<el-table-column prop="stuNo" label="学" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatType(scope.row.conductType) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="conductType" label="类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="warning" effect="plain">
{{ formatType(scope.row.conductType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="recordDate" label="考核时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">考核时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.recordDate || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="description" label="情况记录" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="description" label="情况记录" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">情况记录</span>
</template>
</el-table-column>
<el-table-column prop="attachment" label="附件" show-overflow-tooltip align="center" width="100">
<template #default="scope">
<el-button
@@ -162,6 +212,10 @@
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -234,7 +288,7 @@ import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { UploadFilled } from '@element-plus/icons-vue'
import { UploadFilled, List, CreditCard, Calendar, Clock, OfficeBuilding, Grid, Avatar, Collection, Document, Setting } from '@element-plus/icons-vue'
import FormDialog from './form.vue'
// 定义变量内容

View File

@@ -52,20 +52,46 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">开始时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.startTime ? formatDateTime(scope.row.startTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">结束时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.endTime ? formatDateTime(scope.row.endTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" />
<el-table-column prop="deptName" label="发起部门" show-overflow-tooltip align="center" />
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">请假事由</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="发起部门" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">发起部门</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -104,6 +130,7 @@ import { fetchList, delObj } from "/@/api/stuwork/stuinnerleaveapplygroup";
import { getDeptListByLevelTwo } from "/@/api/basic/basicdept";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Document, OfficeBuilding, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -190,59 +190,157 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="startTime" label="请假开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假开始时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.startTime ? formatDateTime(scope.row.startTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="请假结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假结束时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.endTime ? formatDateTime(scope.row.endTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="leaveType" label="请假类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">请假类型</span>
</template>
<template #default="scope">
<span>{{ formatLeaveType(scope.row.leaveType) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatLeaveType(scope.row.leaveType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">请假事由</span>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="stayDorm" label="是否住宿" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">是否住宿</span>
</template>
<template #default="scope">
<span>{{ formatYesNo(scope.row.stayDorm) }}</span>
<StatusTag
:value="scope.row.stayDorm"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="isFever" label="是否发热" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">是否发热</span>
</template>
<template #default="scope">
<span>{{ formatYesNo(scope.row.isFever) }}</span>
<StatusTag
:value="scope.row.isFever"
:options="[{ label: '是', value: '1' }, { label: '否', value: '0' }]"
:type-map="{ '1': { type: 'danger', effect: 'light' }, '0': { type: 'success', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="classAudit" label="班主任审核" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">班主任审核</span>
</template>
<template #default="scope">
<span>{{ formatAuditType(scope.row.classAudit) }}</span>
<StatusTag
:value="scope.row.classAudit"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="deptAudit" label="学生科审核" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">学生科审核</span>
</template>
<template #default="scope">
<span>{{ formatAuditType(scope.row.deptAudit) }}</span>
<StatusTag
:value="scope.row.deptAudit"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="schoolAudit" label="学工处审批" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">学工处审批</span>
</template>
<template #default="scope">
<span>{{ formatAuditType(scope.row.schoolAudit) }}</span>
<StatusTag
:value="scope.row.schoolAudit"
:options="[{ label: '待审核', value: '0' }, { label: '通过', value: '1' }, { label: '驳回', value: '2' }]"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' }, '2': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column prop="rejectReason" label="驳回原因" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">驳回原因</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="rejectReason" label="驳回原因" show-overflow-tooltip align="center" min-width="150" />
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="CircleClose"
@@ -277,6 +375,9 @@ import { getDeptListByLevelTwo } from "/@/api/basic/basicdept";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Avatar, Collection, Document, House, Warning, CircleCheck, EditPen, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -141,39 +141,105 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="stuRealName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" />
<el-table-column prop="stuRealName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="punlishStartDate" label="处分时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">处分时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.punlishStartDate ? formatDate(scope.row.punlishStartDate) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="punlishEndDate" label="到期日" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">到期日</span>
</template>
<template #default="scope">
<span>{{ scope.row.punlishEndDate ? formatDate(scope.row.punlishEndDate) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="punlishLevel" label="处分级别" show-overflow-tooltip align="center">
<template #header>
<el-icon><Warning /></el-icon>
<span style="margin-left: 4px">处分级别</span>
</template>
<template #default="scope">
<span>{{ formatPunlishLevel(scope.row.punlishLevel) }}</span>
<el-tag size="small" type="danger" effect="plain">
{{ formatPunlishLevel(scope.row.punlishLevel) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="punlishContent" label="处分内容" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">处分内容</span>
</template>
</el-table-column>
<el-table-column prop="punlishContent" label="处分内容" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="publishStatus" label="处分状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">处分状态</span>
</template>
<template #default="scope">
<span>{{ formatPublishStatus(scope.row.publishStatus) }}</span>
<StatusTag
:value="scope.row.publishStatus"
:options="[{ label: '有效', value: '1' }, { label: '已撤销', value: '2' }, { label: '已到期', value: '3' }]"
:type-map="{ '1': { type: 'danger', effect: 'light' }, '2': { type: 'success', effect: 'light' }, '3': { type: 'info', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Document"
@@ -229,6 +295,9 @@ import { getDeptListByLevelTwo } from "/@/api/basic/basicdept";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, Avatar, CreditCard, Warning, Document, CircleCheck, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -74,32 +74,99 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptCode" label="系部代码" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">系部代码</span>
</template>
</el-table-column>
<el-table-column prop="classCode" label="班级代码" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级代码</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="deptCode" label="系部代码" show-overflow-tooltip align="center" />
<el-table-column prop="classCode" label="班级代码" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="startTime" label="请假开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假开始时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.startTime ? formatDateTime(scope.row.startTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="请假结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">请假结束时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.endTime ? formatDateTime(scope.row.endTime) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="classTeach" label="班主任" show-overflow-tooltip align="center" />
<el-table-column prop="stuPhote" label="联系方式" show-overflow-tooltip align="center" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="reason" label="请假事由" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">请假事由</span>
</template>
</el-table-column>
<el-table-column prop="classTeach" label="班主任" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="stuPhote" label="联系方式" show-overflow-tooltip align="center">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系方式</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -133,6 +200,7 @@ import { getDeptListByLevelTwo } from "/@/api/basic/basicdept";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, CreditCard, Avatar, Document, UserFilled, Phone, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -131,35 +131,100 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="oldClassNo" label="原班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">原班级</span>
</template>
</el-table-column>
<el-table-column prop="newClassNo" label="现班级" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">现班级</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="oldClassNo" label="原班级" show-overflow-tooltip align="center" />
<el-table-column prop="newClassNo" label="现班级" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="turnoverDate" label="异动时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">异动时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.turnoverDate ? formatDate(scope.row.turnoverDate) : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="turnoverType" label="异动类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">异动类型</span>
</template>
<template #default="scope">
<span>{{ formatTurnoverType(scope.row.turnoverType) }}</span>
<el-tag size="small" type="warning" effect="plain">
{{ formatTurnoverType(scope.row.turnoverType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="turnYear" label="转制类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">转制类型</span>
</template>
<template #default="scope">
<span>{{ formatTurnYear(scope.row.turnYear) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatTurnYear(scope.row.turnYear) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="remarks" label="异动原因" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">异动原因</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="异动原因" show-overflow-tooltip align="center" min-width="150" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -201,6 +266,7 @@ import { getDeptListByLevelTwo } from "/@/api/basic/basicdept";
import { list as getClassList } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, Calendar, Clock, OfficeBuilding, Grid, CreditCard, Avatar, Collection, Document, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -20,21 +20,57 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="unionName" label="学生会名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="unionType" label="类型" show-overflow-tooltip align="center" width="120">
<template #default="scope">
<span>{{ formatUnionType(scope.row.unionType) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="address" label="联系地址" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="maintainer" label="负责人" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="sort" label="排序" show-overflow-tooltip align="center" width="80">
<el-table-column prop="unionName" label="学生会名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学生会名称</span>
</template>
</el-table-column>
<el-table-column prop="unionType" label="类型" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<span>{{ scope.row.sort !== undefined && scope.row.sort !== null ? scope.row.sort : '-' }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatUnionType(scope.row.unionType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="address" label="联系地址" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">联系地址</span>
</template>
</el-table-column>
<el-table-column prop="maintainer" label="负责人" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">负责人</span>
</template>
</el-table-column>
<el-table-column prop="sort" label="排序" show-overflow-tooltip align="center" width="80">
<template #header>
<el-icon><Sort /></el-icon>
<span style="margin-left: 4px">排序</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.sort !== undefined && scope.row.sort !== null" size="small" type="primary" effect="plain">
{{ scope.row.sort }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -66,6 +102,9 @@ import { fetchList } from "/@/api/stuwork/stuunion";
import { useMessage } from "/@/hooks/message";
import { getDicts } from "/@/api/admin/dict";
import FormDialog from './form.vue'
import {
List, OfficeBuilding, Collection, Location, UserFilled, Sort, Setting
} from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -67,7 +67,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -101,20 +100,73 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系电话</span>
</template>
</el-table-column>
<el-table-column prop="enterTime" label="入团时间" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">入团时间</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.enterTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="serNo" label="团员编号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="position" label="团内职务" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="serNo" label="团员编号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Postcard /></el-icon>
<span style="margin-left: 4px">团员编号</span>
</template>
</el-table-column>
<el-table-column prop="position" label="团内职务" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Briefcase /></el-icon>
<span style="margin-left: 4px">团内职务</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.position" size="small" type="primary" effect="plain">
{{ scope.row.position }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -187,7 +239,7 @@ import { getClassListByRole } from "/@/api/basic/basicclass";
import { getGradeList } from "/@/api/basic/basicclass";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import { UploadFilled } from '@element-plus/icons-vue';
import { UploadFilled, List, OfficeBuilding, Grid, CreditCard, Avatar, Phone, Calendar, Postcard, Briefcase, Setting } from '@element-plus/icons-vue';
import type { UploadFile, UploadFiles } from 'element-plus';
import FormDialog from './form.vue'

View File

@@ -121,30 +121,90 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center" />
<el-table-column prop="deptName" label="系部名称" show-overflow-tooltip align="center" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center" />
<el-table-column prop="className" label="班级简称" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="系部名称" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">系部名称</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班号</span>
</template>
</el-table-column>
<el-table-column prop="className" label="班级简称" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级简称</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="工学交替开始时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">工学交替开始时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.startTime ? scope.row.startTime.split(' ')[0] : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="工学交替结束时间" show-overflow-tooltip align="center" width="180">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">工学交替结束时间</span>
</template>
<template #default="scope">
<span>{{ scope.row.endTime ? scope.row.endTime.split(' ')[0] : '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="attendanceTeacherName" label="带班教师" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">带班教师</span>
</template>
<template #default="scope">
<span>{{ scope.row.attendanceTeacherName || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Delete"
@@ -182,6 +242,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import TeacherDialog from './teacher.vue'
import { List, Calendar, Clock, OfficeBuilding, CreditCard, Avatar, Grid, UserFilled, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -26,10 +26,28 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><EditPen /></el-icon>
<span style="margin-left: 4px">备注</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -67,6 +85,7 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObj } from "/@/api/stuwork/teachbuilding";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import { List, OfficeBuilding, EditPen, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -78,11 +78,34 @@
:header-cell-style="tableStyle.headerCellStyle"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" />
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="position" label="教室位置" show-overflow-tooltip align="center" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="buildingNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="position" label="教室位置" show-overflow-tooltip align="center">
<template #header>
<el-icon><Location /></el-icon>
<span style="margin-left: 4px">教室位置</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -126,6 +149,7 @@ import { getBuildingList } from "/@/api/stuwork/teachbuilding";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue'
import BatchDialog from './batch.vue'
import { List, OfficeBuilding, Location, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -100,7 +100,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="handleAdd">
新增
</el-button>
@@ -129,46 +128,134 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="majorName" label="专业" show-overflow-tooltip align="center" min-width="150" />
<el-table-column prop="teacherName" label="班主任" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="grade" label="入学年份" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="gradeCurr" label="年级" show-overflow-tooltip align="center" width="80">
<template #default="scope">
<span>{{ scope.row.gradeCurr !== undefined && scope.row.gradeCurr !== null ? scope.row.gradeCurr : '-' }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100" />
<el-table-column prop="gender" label="性别" show-overflow-tooltip align="center" width="80">
<el-table-column prop="deptName" label="学院" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">学院</span>
</template>
</el-table-column>
<el-table-column prop="majorName" label="专业" show-overflow-tooltip align="center" min-width="150">
<template #header>
<el-icon><Reading /></el-icon>
<span style="margin-left: 4px">专业</span>
</template>
</el-table-column>
<el-table-column prop="teacherName" label="班主任" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">班主任</span>
</template>
</el-table-column>
<el-table-column prop="grade" label="入学年份" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">入学年份</span>
</template>
</el-table-column>
<el-table-column prop="gradeCurr" label="年级" show-overflow-tooltip align="center" width="80">
<template #header>
<el-icon><Sort /></el-icon>
<span style="margin-left: 4px">年级</span>
</template>
<template #default="scope">
<span>{{ formatGender(scope.row.gender) }}</span>
<el-tag v-if="scope.row.gradeCurr !== undefined && scope.row.gradeCurr !== null" size="small" type="primary" effect="plain">
{{ scope.row.gradeCurr }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="gender" label="性别" show-overflow-tooltip align="center" width="80">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">性别</span>
</template>
<template #default="scope">
<GenderTag :sex="scope.row.gender" />
</template>
</el-table-column>
<el-table-column prop="education" label="生源" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><School /></el-icon>
<span style="margin-left: 4px">生源</span>
</template>
<template #default="scope">
<span>{{ formatEducation(scope.row.education) }}</span>
<el-tag v-if="scope.row.education" size="small" type="info" effect="plain">
{{ formatEducation(scope.row.education) }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="majorLevel" label="层次" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Trophy /></el-icon>
<span style="margin-left: 4px">层次</span>
</template>
<template #default="scope">
<span>{{ formatMajorLevel(scope.row.majorLevel) }}</span>
<el-tag v-if="scope.row.majorLevel" size="small" type="warning" effect="plain">
{{ formatMajorLevel(scope.row.majorLevel) }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Phone /></el-icon>
<span style="margin-left: 4px">联系电话</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip align="center" width="120" />
<el-table-column prop="money" label="金额" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">金额</span>
</template>
<template #default="scope">
<span>{{ scope.row.money !== undefined && scope.row.money !== null ? scope.row.money : '-' }}</span>
<el-tag v-if="scope.row.money !== undefined && scope.row.money !== null" size="small" type="success" effect="plain">
¥{{ scope.row.money }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="checkStatus" label="审核状态" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">审核状态</span>
</template>
<template #default="scope">
<span>{{ formatCheckStatus(scope.row.checkStatus) }}</span>
<StatusTag
:value="scope.row.checkStatus"
:options="checkStatusList"
:type-map="{ '0': { type: 'warning', effect: 'light' }, '1': { type: 'success', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -201,7 +288,7 @@
</template>
<script setup lang="ts" name="TuitionFreeStu">
import { reactive, ref, onMounted } from 'vue'
import { reactive, ref, onMounted, defineAsyncComponent } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, exportExcel, delObj, getDetail } from "/@/api/stuwork/tuitionfreestu";
import { getDeptList } from "/@/api/basic/basicclass";
@@ -211,6 +298,15 @@ import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { useMessage, useMessageBox } from "/@/hooks/message";
import request from '/@/utils/request'
import axios from 'axios'
import {
User, School, Trophy, Phone, Money, CircleCheck, List,
OfficeBuilding, Reading, UserFilled, Calendar, Sort, Grid,
CreditCard, Avatar, Setting
} from '@element-plus/icons-vue'
// 引入组件
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -46,7 +46,6 @@
<el-button
icon="Plus"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
新增
</el-button>
@@ -66,30 +65,68 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="title" label="批次名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" width="120" />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="title" label="批次名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">批次名称</span>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center" width="100">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.schoolTerm) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="startTime" label="上报开始日期" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">上报开始日期</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="endTime" label="上报截止日期" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">上报截止日期</span>
</template>
<template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column prop="type" label="类别" show-overflow-tooltip align="center" width="120">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类别</span>
</template>
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -130,6 +167,7 @@ import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { parseTime } from "/@/utils/formatTime";
import FormDialog from './form.vue'
import { List, Document, Calendar, Clock, Collection, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const formDialogRef = ref()

View File

@@ -93,34 +93,99 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="buildNo" label="楼号" show-overflow-tooltip align="center" />
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="bedNum" label="几人间" show-overflow-tooltip align="center" />
<el-table-column prop="liveNum" label="已住人数" show-overflow-tooltip align="center" />
<el-table-column prop="oddbMoney" label="校园补贴" show-overflow-tooltip align="center">
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="buildNo" label="楼号" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">楼号</span>
</template>
</el-table-column>
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">宿舍号</span>
</template>
</el-table-column>
<el-table-column prop="bedNum" label="几人间" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">几人间</span>
</template>
<template #default="scope">
<span>{{ scope.row.oddbMoney ? Number(scope.row.oddbMoney).toFixed(2) : '0.00' }}</span>
<el-tag v-if="scope.row.bedNum" size="small" type="info" effect="plain">
{{ scope.row.bedNum }}人间
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="liveNum" label="已住人数" show-overflow-tooltip align="center">
<template #header>
<el-icon><UserFilled /></el-icon>
<span style="margin-left: 4px">已住人数</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.liveNum !== undefined && scope.row.liveNum !== null" size="small" type="success" effect="plain">
{{ scope.row.liveNum }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="oddbMoney" label="校园补贴" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">校园补贴</span>
</template>
<template #default="scope">
<el-tag v-if="scope.row.oddbMoney" size="small" type="success" effect="plain">
¥{{ Number(scope.row.oddbMoney).toFixed(2) }}
</el-tag>
<span v-else>¥0.00</span>
</template>
</el-table-column>
<el-table-column prop="rechargeMoney" label="充值金额" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">充值金额</span>
</template>
<template #default="scope">
<span>{{ scope.row.rechargeMoney ? Number(scope.row.rechargeMoney).toFixed(2) : '0.00' }}</span>
<el-tag v-if="scope.row.rechargeMoney" size="small" type="primary" effect="plain">
¥{{ Number(scope.row.rechargeMoney).toFixed(2) }}
</el-tag>
<span v-else>¥0.00</span>
</template>
</el-table-column>
<el-table-column prop="costMoney" label="消费金额" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">消费金额</span>
</template>
<template #default="scope">
<span>{{ scope.row.costMoney ? Number(scope.row.costMoney).toFixed(2) : '0.00' }}</span>
<el-tag v-if="scope.row.costMoney" size="small" type="warning" effect="plain">
¥{{ Number(scope.row.costMoney).toFixed(2) }}
</el-tag>
<span v-else>¥0.00</span>
</template>
</el-table-column>
<el-table-column prop="effectiveMoney" label="可用余额" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">可用余额</span>
</template>
<template #default="scope">
<span :style="{ color: Number(scope.row.effectiveMoney) < 0 ? 'red' : '' }">
{{ scope.row.effectiveMoney ? Number(scope.row.effectiveMoney).toFixed(2) : '0.00' }}
</span>
<el-tag size="small" :type="Number(scope.row.effectiveMoney) < 0 ? 'danger' : 'success'" effect="plain">
¥{{ scope.row.effectiveMoney ? Number(scope.row.effectiveMoney).toFixed(2) : '0.00' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -190,6 +255,7 @@ import { getBuildingList } from "/@/api/stuwork/dormbuilding";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue';
import DetailDialog from './detail.vue';
import { List, OfficeBuilding, House, UserFilled, Money, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()

View File

@@ -74,39 +74,115 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center" />
<el-table-column prop="year" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="period" label="学期" show-overflow-tooltip align="center">
<template #default="scope">
<span>{{ formatSchoolTerm(scope.row.period) }}</span>
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="orderNum" label="订单号" show-overflow-tooltip align="center" />
<el-table-column prop="type" label="类型" show-overflow-tooltip align="center">
<el-table-column prop="roomNo" label="宿舍号" show-overflow-tooltip align="center">
<template #header>
<el-icon><House /></el-icon>
<span style="margin-left: 4px">宿舍号</span>
</template>
</el-table-column>
<el-table-column prop="year" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="period" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatType(scope.row.type) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.period) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="orderNum" label="订单号" show-overflow-tooltip align="center">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">订单号</span>
</template>
</el-table-column>
<el-table-column prop="type" label="类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="info" effect="plain">
{{ formatType(scope.row.type) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="paymentCode" label="充值类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">充值类型</span>
</template>
<template #default="scope">
<span>{{ formatPaymentType(scope.row.paymentCode) }}</span>
<el-tag size="small" type="warning" effect="plain">
{{ formatPaymentType(scope.row.paymentCode) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="money" label="金额" show-overflow-tooltip align="center" />
<el-table-column prop="chargeAccount" label="充值人的账户" show-overflow-tooltip align="center" />
<el-table-column prop="chargeRealname" label="充值人的真实姓名" show-overflow-tooltip align="center" />
<el-table-column prop="chargeState" label="充值结果" show-overflow-tooltip align="center">
<el-table-column prop="money" label="金额" show-overflow-tooltip align="center">
<template #header>
<el-icon><Money /></el-icon>
<span style="margin-left: 4px">金额</span>
</template>
<template #default="scope">
<span>{{ formatChargeState(scope.row.chargeState) }}</span>
<el-tag v-if="scope.row.money" size="small" type="success" effect="plain">
¥{{ scope.row.money }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column prop="chargeAccount" label="充值人的账户" show-overflow-tooltip align="center">
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">充值人的账户</span>
</template>
</el-table-column>
<el-table-column prop="chargeRealname" label="充值人的真实姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">充值人的真实姓名</span>
</template>
</el-table-column>
<el-table-column prop="chargeState" label="充值结果" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">充值结果</span>
</template>
<template #default="scope">
<StatusTag
:value="scope.row.chargeState"
:options="[{ label: '成功', value: '1' }, { label: '失败', value: '0' }]"
:type-map="{ '1': { type: 'success', effect: 'light' }, '0': { type: 'danger', effect: 'light' } }"
/>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" show-overflow-tooltip align="center">
<template #header>
<el-icon><CircleCheck /></el-icon>
<span style="margin-left: 4px">状态</span>
</template>
<template #default="scope">
<span>{{ formatState(scope.row.state) }}</span>
<el-tag size="small" type="info" effect="plain">
{{ formatState(scope.row.state) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="Edit"
@@ -146,6 +222,9 @@ import { queryAllSchoolYear } from "/@/api/basic/basicyear";
import { getDicts } from "/@/api/admin/dict";
import { useMessage, useMessageBox } from "/@/hooks/message";
import FormDialog from './form.vue';
import { List, House, Calendar, Clock, Document, Collection, CreditCard, Money, User, Avatar, CircleCheck, Setting } from '@element-plus/icons-vue'
import { defineAsyncComponent } from 'vue'
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
// 定义变量内容
const searchFormRef = ref()

View File

@@ -46,7 +46,6 @@
<el-button
icon="FolderAdd"
type="primary"
class="ml10"
@click="formDialogRef.openDialog()">
</el-button>
@@ -69,13 +68,51 @@
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip />
<el-table-column prop="title" label="标题" show-overflow-tooltip />
<el-table-column prop="content" label="内容" show-overflow-tooltip />
<el-table-column prop="author" label="作者" show-overflow-tooltip />
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip>
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip>
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<el-tag size="small" type="primary" effect="plain">
{{ scope.row.schoolTerm === 1 ? '上学期' : scope.row.schoolTerm === 2 ? '下学期' : scope.row.schoolTerm }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip>
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">标题</span>
</template>
</el-table-column>
<!-- <el-table-column prop="content" label="内容" show-overflow-tooltip>
<template #header>
<el-icon><Files /></el-icon>
<span style="margin-left: 4px">内容</span>
</template>
</el-table-column> -->
<el-table-column prop="author" label="作者" show-overflow-tooltip>
<template #header>
<el-icon><User /></el-icon>
<span style="margin-left: 4px">作者</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -123,6 +160,9 @@ import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObjs } from "/@/api/stuwork/weekplan";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { queryAllSchoolYear } from '/@/api/basic/basicyear'
import {
List, Calendar, Clock, Document, Files, User, Setting
} from '@element-plus/icons-vue'
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));

View File

@@ -72,18 +72,73 @@
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle">
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center" />
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center" />
<el-table-column prop="deptName" label="系部名称" show-overflow-tooltip align="center" />
<el-table-column prop="classCode" label="班级代码" show-overflow-tooltip align="center" />
<el-table-column prop="classNo" label="班级简称" show-overflow-tooltip align="center" />
<el-table-column prop="classProName" label="班级规范名称" show-overflow-tooltip align="center" min-width="200" />
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center" />
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center" />
<el-table-column prop="attendanceType" label="考勤类型" show-overflow-tooltip align="center">
<el-table-column type="index" label="序号" width="60" align="center">
<template #header>
<el-icon><List /></el-icon>
</template>
</el-table-column>
<el-table-column prop="schoolYear" label="学年" show-overflow-tooltip align="center">
<template #header>
<el-icon><Calendar /></el-icon>
<span style="margin-left: 4px">学年</span>
</template>
</el-table-column>
<el-table-column prop="schoolTerm" label="学期" show-overflow-tooltip align="center">
<template #header>
<el-icon><Clock /></el-icon>
<span style="margin-left: 4px">学期</span>
</template>
<template #default="scope">
<span>{{ formatAttendanceType(scope.row.attendanceType) }}</span>
<el-tag size="small" type="primary" effect="plain">
{{ formatSchoolTerm(scope.row.schoolTerm) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="deptName" label="系部名称" show-overflow-tooltip align="center">
<template #header>
<el-icon><OfficeBuilding /></el-icon>
<span style="margin-left: 4px">系部名称</span>
</template>
</el-table-column>
<el-table-column prop="classCode" label="班级代码" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级代码</span>
</template>
</el-table-column>
<el-table-column prop="classNo" label="班级简称" show-overflow-tooltip align="center">
<template #header>
<el-icon><Grid /></el-icon>
<span style="margin-left: 4px">班级简称</span>
</template>
</el-table-column>
<el-table-column prop="classProName" label="班级规范名称" show-overflow-tooltip align="center" min-width="200">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">班级规范名称</span>
</template>
</el-table-column>
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip align="center">
<template #header>
<el-icon><CreditCard /></el-icon>
<span style="margin-left: 4px">学号</span>
</template>
</el-table-column>
<el-table-column prop="realName" label="姓名" show-overflow-tooltip align="center">
<template #header>
<el-icon><Avatar /></el-icon>
<span style="margin-left: 4px">姓名</span>
</template>
</el-table-column>
<el-table-column prop="attendanceType" label="考勤类型" show-overflow-tooltip align="center">
<template #header>
<el-icon><Collection /></el-icon>
<span style="margin-left: 4px">考勤类型</span>
</template>
<template #default="scope">
<el-tag size="small" type="warning" effect="plain">
{{ formatAttendanceType(scope.row.attendanceType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column
@@ -93,11 +148,19 @@
show-overflow-tooltip
align="center"
min-width="150">
<template #header>
<el-icon><Document /></el-icon>
<span style="margin-left: 4px">落实情况</span>
</template>
<template #default="scope">
<span>{{ scope.row.remarks || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #header>
<el-icon><Setting /></el-icon>
<span style="margin-left: 4px">操作</span>
</template>
<template #default="scope">
<el-button
icon="View"
@@ -126,6 +189,7 @@ import { fetchList, queryHistoryList } from "/@/api/stuwork/workstudyattendance"
import { getDeptList } from "/@/api/basic/basicclass";
import { getClassListByRole } from "/@/api/basic/basicclass";
import { useMessage } from "/@/hooks/message";
import { List, Calendar, Clock, OfficeBuilding, Grid, Document, CreditCard, Avatar, Collection, Setting } from '@element-plus/icons-vue'
// 定义变量内容
const searchFormRef = ref()