Merge branch 'developer' of ssh://code.cyweb.top:30033/scj/zhxy/v3/cloud-ui into developer
This commit is contained in:
@@ -8,4 +8,4 @@ VITE_OPEN=true
|
||||
ENV=development
|
||||
|
||||
# ADMIN 服务地址
|
||||
VITE_ADMIN_PROXY_PATH = http://localhost:9999
|
||||
VITE_ADMIN_PROXY_PATH = http://scj-v3.zhxy.link/api
|
||||
|
||||
@@ -52,6 +52,18 @@ export const getObj = (id: string | number) => {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取详情(使用 detail 接口)
|
||||
* @param id
|
||||
*/
|
||||
export const getDetail = (id: string | number) => {
|
||||
return request({
|
||||
url: '/basic/basicclass/detail',
|
||||
method: 'get',
|
||||
params: { id }
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param id
|
||||
|
||||
@@ -442,6 +442,18 @@ export const queryStuBaseByNo = (obj: string | number) => {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 学生巡检列表
|
||||
* @param query
|
||||
*/
|
||||
export const queryStuindex = (query?: any) => {
|
||||
return request({
|
||||
url: '/basic/basicstudent/queryStuindex',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取头像列表
|
||||
*/
|
||||
|
||||
@@ -78,7 +78,8 @@ export const delObj = (ids: string[]) => {
|
||||
*/
|
||||
export const queryClassHonorByClassCode = (classCode: string | number) => {
|
||||
return request({
|
||||
url: `/stuwork/classhonor/queryClassHonorByClassCode/${classCode}`,
|
||||
url: '/stuwork/classhonor/queryClassHonorByClassCode',
|
||||
method: 'get',
|
||||
params: { classCode },
|
||||
});
|
||||
};
|
||||
|
||||
@@ -93,7 +93,8 @@ export const addScore = (data: any) => {
|
||||
*/
|
||||
export const queryDataByClassCode = (classCode: string | number) => {
|
||||
return request({
|
||||
url: `/stuwork/classpublicity/queryDataByClassCode/${classCode}`,
|
||||
url: '/stuwork/classpublicity/queryDataByClassCode',
|
||||
method: 'get',
|
||||
params: { classCode },
|
||||
});
|
||||
};
|
||||
|
||||
24
src/api/stuwork/classroomhygienedailyanalysis.ts
Normal file
24
src/api/stuwork/classroomhygienedailyanalysis.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import request from '/@/utils/request';
|
||||
|
||||
/**
|
||||
* 获取教室卫生月汇总列表
|
||||
*/
|
||||
export const fetchList = (query: any) => {
|
||||
return request({
|
||||
url: '/stuwork/classroomhygienedailyanalysis/queryClassRoomHygieneDailyAnalysis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取教室卫生月汇总详情
|
||||
*/
|
||||
export const getObj = (query: any) => {
|
||||
return request({
|
||||
url: '/stuwork/classroomhygienedaily/detail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
@@ -5,10 +5,11 @@ import request from '/@/utils/request';
|
||||
* @param classCode 班级代码
|
||||
*/
|
||||
export const fearchStuNumByClassCode = (classCode: string | number) => {
|
||||
return request({
|
||||
url: `/stuwork/dormroomstudent/fearchStuNumByClassCode/${classCode}`,
|
||||
method: 'get',
|
||||
});
|
||||
return request({
|
||||
url: '/stuwork/dormroomstudent/fearchStuNumByClassCode',
|
||||
method: 'get',
|
||||
params: { classCode },
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
14
src/api/stuwork/dormroomstudentchange.ts
Normal file
14
src/api/stuwork/dormroomstudentchange.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import request from '/@/utils/request';
|
||||
|
||||
/**
|
||||
* 分页查询宿舍学生异动列表
|
||||
* @param query
|
||||
*/
|
||||
export const fetchList = (query?: any) => {
|
||||
return request({
|
||||
url: '/stuwork/dormroomstudentchange/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
@@ -79,8 +79,9 @@ export const exportData = (query?: any) => {
|
||||
*/
|
||||
export const queryPunlishNumByClass = (classCode: string | number) => {
|
||||
return request({
|
||||
url: `/stuwork/stupunlish/queryPunlishNumByClass/${classCode}`,
|
||||
method: 'get'
|
||||
url: '/stuwork/stupunlish/queryPunlishNumByClass',
|
||||
method: 'get',
|
||||
params: { classCode }
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -5,9 +5,10 @@ import request from '/@/utils/request';
|
||||
* @param classCode 班级代码
|
||||
*/
|
||||
export const getClassRoomByClassCode = (classCode: string | number) => {
|
||||
return request({
|
||||
url: `/stuwork/teachclassroomassign/getClassRoomByClassCode/${classCode}`,
|
||||
method: 'get',
|
||||
});
|
||||
return request({
|
||||
url: '/stuwork/teachclassroomassign/getClassRoomByClassCode',
|
||||
method: 'get',
|
||||
params: { classCode },
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<template v-for="val in menuLists">
|
||||
<el-sub-menu :index="val.path" v-if="val.children && val.children.length > 0" :key="val.path">
|
||||
<template #title>
|
||||
<SvgIcon :name="val.meta.icon"/>
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)"/>
|
||||
<span class="font-semibold">{{ $t(val.name.split('_')[0]) }}</span>
|
||||
</template>
|
||||
<SubItem :chil="val.children"/>
|
||||
@@ -15,12 +15,12 @@
|
||||
<el-menu-item :index="val.path" :key="val.path">
|
||||
<template #title v-if="!val.meta.isLink || (val.meta.isLink && val.meta.isIframe)">
|
||||
<!-- 此处可 指定 color='red' 等指定顶栏SVG颜色 -->
|
||||
<SvgIcon :name="val.meta.icon"/>
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)"/>
|
||||
<p class="font-semibold">{{ $t(val.name.split('_')[0]) }}</p>
|
||||
</template>
|
||||
<template #title v-else>
|
||||
<a class="w100" @click.prevent="onALinkClick(val)">
|
||||
<SvgIcon :name="val.meta.icon"/>
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)"/>
|
||||
{{ $t(val.name.split('_')[0]) }}
|
||||
</a>
|
||||
</template>
|
||||
@@ -66,6 +66,10 @@ const state = reactive({
|
||||
const menuLists = computed(() => {
|
||||
return <RouteItems>props.menuList;
|
||||
});
|
||||
// 获取菜单图标,如果没有则返回默认图标
|
||||
const getMenuIcon = (icon?: string) => {
|
||||
return icon && icon.trim() ? icon : 'ele-Menu';
|
||||
};
|
||||
// 设置横向滚动条可以鼠标滚轮滚动
|
||||
const onElMenuHorizontalScroll = (e: WheelEventType) => {
|
||||
const eventDelta = e.wheelDelta || -e.deltaY * 40;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<template v-for="val in chils">
|
||||
<el-sub-menu :index="val.path" :key="val.path" v-if="val.children && val.children.length > 0">
|
||||
<template #title>
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)" />
|
||||
<!-- <span>{{ $t(val.name) }}</span>-->
|
||||
<span>{{ $t(val.name.split('_')[0]) }}</span>
|
||||
</template>
|
||||
@@ -11,13 +11,13 @@
|
||||
<template v-else>
|
||||
<el-menu-item :index="val.path" :key="val.path">
|
||||
<template v-if="!val.meta.isLink || (val.meta.isLink && val.meta.isIframe)">
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)" />
|
||||
<!-- <span>{{ $t(val.name) }}</span>-->
|
||||
<span>{{ $t(val.name.split('_')[0]) }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<a class="w100" @click.prevent="onALinkClick(val)">
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)" />
|
||||
<!-- {{ $t(val.name) }}-->
|
||||
{{ $t(val.name.split('_')[0]) }}
|
||||
</a>
|
||||
@@ -45,6 +45,10 @@ const props = defineProps({
|
||||
const chils = computed(() => {
|
||||
return <RouteItems>props.chil;
|
||||
});
|
||||
// 获取菜单图标,如果没有则返回默认图标
|
||||
const getMenuIcon = (icon?: string) => {
|
||||
return icon && icon.trim() ? icon : 'ele-Menu';
|
||||
};
|
||||
// 打开外部链接
|
||||
const onALinkClick = (val: RouteItem) => {
|
||||
other.handleOpenLink(val);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<!-- 三级菜单 -->
|
||||
<el-sub-menu :index="val.path" v-if="val.children && val.children.length > 0" :key="val.path">
|
||||
<template #title>
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)" />
|
||||
<span>{{ $t(val.name.split('_')[0]) }}</span>
|
||||
</template>
|
||||
<SubItem :chil="val.children" />
|
||||
@@ -19,7 +19,7 @@
|
||||
<template v-else>
|
||||
<!-- 二级菜单 -->
|
||||
<el-menu-item :index="val.path" :key="val.path">
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="getMenuIcon(val.meta.icon)" />
|
||||
<template #title v-if="!val.meta.isLink || (val.meta.isLink && val.meta.isIframe)">
|
||||
<span>{{ $t(val.name.split('_')[0]) }}</span>
|
||||
</template>
|
||||
@@ -62,6 +62,10 @@ const state = reactive({
|
||||
const menuLists = computed(() => {
|
||||
return <RouteItems>props.menuList;
|
||||
});
|
||||
// 获取菜单图标,如果没有则返回默认图标
|
||||
const getMenuIcon = (icon?: string) => {
|
||||
return icon && icon.trim() ? icon : 'ele-Menu';
|
||||
};
|
||||
// 获取布局配置信息
|
||||
const getThemeConfig = computed(() => {
|
||||
return themeConfig.value;
|
||||
|
||||
@@ -74,8 +74,8 @@
|
||||
<el-form-item label="班号" prop="classNo">
|
||||
<el-input
|
||||
v-model="form.classNo"
|
||||
placeholder="请输入班号"
|
||||
clearable />
|
||||
placeholder="自动填充班号"
|
||||
:disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -92,8 +92,8 @@
|
||||
<el-form-item label="班级规范名称" prop="classProName">
|
||||
<el-input
|
||||
v-model="form.classProName"
|
||||
placeholder="请输入班级规范名称"
|
||||
clearable />
|
||||
placeholder="自动拼接班级规范名称"
|
||||
:disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
<el-form-item label="入学年份" prop="grade">
|
||||
<el-input
|
||||
v-model="form.grade"
|
||||
placeholder="请输入入学年份"
|
||||
clearable />
|
||||
placeholder="自动填充入学年份"
|
||||
:disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -159,9 +159,9 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="BasicClassDialog">
|
||||
import { ref, reactive, nextTick, onMounted } from 'vue'
|
||||
import { ref, reactive, nextTick, onMounted, watch, computed } from 'vue'
|
||||
import { useMessage } from "/@/hooks/message";
|
||||
import { getObj, addObj, putObj, getMajorNameList, getDeptList } from '/@/api/basic/basicclass'
|
||||
import { getDetail, addObj, putObj, getMajorNameList, getDeptList } from '/@/api/basic/basicclass'
|
||||
import { getTeacherBaseList } from '/@/api/professional/professionaluser/teacherbase'
|
||||
|
||||
const emit = defineEmits(['refresh']);
|
||||
@@ -173,6 +173,8 @@ const loading = ref(false)
|
||||
const majorList = ref<any[]>([])
|
||||
const deptList = ref<any[]>([])
|
||||
const teacherList = ref<any[]>([])
|
||||
const yearLast = ref('') // 年份后两位
|
||||
const majorName = ref('') // 专业名称
|
||||
|
||||
// 提交表单数据
|
||||
const form = reactive({
|
||||
@@ -244,6 +246,10 @@ const openDialog = (id?: string) => {
|
||||
remark: ''
|
||||
})
|
||||
|
||||
// 重置辅助变量
|
||||
yearLast.value = ''
|
||||
majorName.value = ''
|
||||
|
||||
// 清除表单验证状态,不触发验证
|
||||
nextTick(() => {
|
||||
dataFormRef.value?.clearValidate();
|
||||
@@ -269,11 +275,17 @@ const onSubmit = async () => {
|
||||
|
||||
try {
|
||||
loading.value = true;
|
||||
// 构建提交数据,将班主任工号放到 teacherNo 字段
|
||||
const submitData = {
|
||||
...form,
|
||||
teacherNo: form.teacherNos // 将 teacherNos 的值赋值给 teacherNo
|
||||
};
|
||||
|
||||
if (form.id) {
|
||||
await putObj(form);
|
||||
await putObj(submitData);
|
||||
useMessage().success('编辑成功');
|
||||
} else {
|
||||
await addObj(form);
|
||||
await addObj(submitData);
|
||||
useMessage().success('新增成功');
|
||||
}
|
||||
visible.value = false;
|
||||
@@ -286,9 +298,10 @@ const onSubmit = async () => {
|
||||
};
|
||||
|
||||
// 获取详情
|
||||
const getBasicClassData = (id: string) => {
|
||||
const getBasicClassData = async (id: string) => {
|
||||
loading.value = true
|
||||
getObj(id).then((res: any) => {
|
||||
try {
|
||||
const res = await getDetail(id)
|
||||
if (res.data) {
|
||||
Object.assign(form, {
|
||||
id: res.data.id || '',
|
||||
@@ -304,17 +317,29 @@ const getBasicClassData = (id: string) => {
|
||||
preStuNum: res.data.preStuNum || 0,
|
||||
remark: res.data.remark || ''
|
||||
})
|
||||
|
||||
// 设置辅助变量(编辑时不自动填充,保持原有数据)
|
||||
if (res.data.enterDate && res.data.enterDate.length >= 4) {
|
||||
yearLast.value = res.data.enterDate.substring(2, 4)
|
||||
}
|
||||
// 确保专业列表已加载后再设置专业名称
|
||||
if (res.data.majorCode && majorList.value.length > 0) {
|
||||
const major = majorList.value.find(item => item.majorCode === res.data.majorCode)
|
||||
if (major) {
|
||||
majorName.value = major.majorName || ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}).catch((err: any) => {
|
||||
} catch (err: any) {
|
||||
console.error('获取详情失败', err)
|
||||
useMessage().error('获取详情失败')
|
||||
}).finally(() => {
|
||||
} finally {
|
||||
loading.value = false
|
||||
// 数据加载完成后,清除验证状态,避免触发验证
|
||||
nextTick(() => {
|
||||
dataFormRef.value?.clearValidate();
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 获取专业列表
|
||||
@@ -356,6 +381,59 @@ const getTeacherListData = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 拼接班级规范名称
|
||||
const montageClassProName = () => {
|
||||
// 只在新增模式下自动填充,编辑模式下不覆盖已有数据
|
||||
if (!form.id && yearLast.value && majorName.value) {
|
||||
form.classProName = yearLast.value + majorName.value
|
||||
if (form.classNo) {
|
||||
form.classProName = yearLast.value + majorName.value + '(' + form.classNo + ')'
|
||||
}
|
||||
console.log('classProName', form.classProName)
|
||||
}
|
||||
}
|
||||
|
||||
// 监听入学日期,取年份后两位
|
||||
watch(() => form.enterDate, (newVal) => {
|
||||
if (newVal && newVal.length >= 4) {
|
||||
console.log('newdate:', newVal)
|
||||
yearLast.value = newVal.substring(2, 4)
|
||||
// 只在新增模式下自动填充入学年份
|
||||
if (!form.id) {
|
||||
form.grade = newVal.substring(0, 4)
|
||||
}
|
||||
montageClassProName()
|
||||
}
|
||||
})
|
||||
|
||||
// 监听班级代码,取后四位为班号
|
||||
watch(() => form.classCode, (newVal) => {
|
||||
if (newVal) {
|
||||
const length = newVal.length
|
||||
if (length > 4) {
|
||||
// 只在新增模式下自动填充班号,编辑模式下如果班号为空才填充
|
||||
if (!form.id || !form.classNo) {
|
||||
form.classNo = newVal.substring(length - 4, length)
|
||||
montageClassProName()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// 监听专业代码变化,获取专业名称
|
||||
watch(() => form.majorCode, (newVal) => {
|
||||
if (newVal) {
|
||||
const major = majorList.value.find(item => item.majorCode === newVal)
|
||||
if (major) {
|
||||
majorName.value = major.majorName || ''
|
||||
montageClassProName()
|
||||
}
|
||||
} else {
|
||||
majorName.value = ''
|
||||
montageClassProName()
|
||||
}
|
||||
})
|
||||
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getMajorListData()
|
||||
|
||||
@@ -122,27 +122,84 @@
|
||||
border
|
||||
:cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle"
|
||||
row-key="id"
|
||||
@selection-change="handleSelectionChange"
|
||||
@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="classProName" label="班级规范名称" show-overflow-tooltip />
|
||||
<el-table-column prop="teacherRealName" label="班主任" show-overflow-tooltip />
|
||||
<el-table-column prop="teacherTel" label="班主任电话号码" show-overflow-tooltip />
|
||||
<el-table-column label="班级人数/原始人数" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
{{ scope.row.stuNum || 0 }}/{{ scope.row.preStuNum || 0 }}
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<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 />
|
||||
<el-table-column prop="classStatus" label="班级状态" show-overflow-tooltip>
|
||||
<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="classProName" 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="teacherRealName" 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="teacherTel" 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="班级人数/原始人数" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><User /></el-icon>
|
||||
<span style="margin-left: 4px">班级人数/原始人数</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.classStatus === '0' ? '正常' : scope.row.classStatus === '1' ? '离校' : '-' }}</span>
|
||||
<el-tag size="small" type="primary" effect="plain">
|
||||
{{ scope.row.stuNum || 0 }}/{{ scope.row.preStuNum || 0 }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="ruleName" label="门禁规则" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><Lock /></el-icon>
|
||||
<span style="margin-left: 4px">门禁规则</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="classStatus" label="班级状态" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><CircleCheck /></el-icon>
|
||||
<span style="margin-left: 4px">班级状态</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<StatusTag
|
||||
:value="scope.row.classStatus"
|
||||
:options="[{ label: '正常', value: '0' }, { label: '离校', value: '1' }]"
|
||||
:type-map="{ '0': { type: 'success', effect: 'light' }, '1': { type: 'warning', effect: 'light' } }"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stuLoseRate" label="流失率" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><TrendCharts /></el-icon>
|
||||
<span style="margin-left: 4px">流失率</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.stuLoseRate ? `${scope.row.stuLoseRate}%` : '-' }}</span>
|
||||
<el-tag size="small" type="danger" effect="plain">
|
||||
{{ scope.row.stuLoseRate ? `${scope.row.stuLoseRate}%` : '0%' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" width="200">
|
||||
@@ -193,22 +250,6 @@
|
||||
draggable
|
||||
width="600px">
|
||||
<el-form :model="linkRuleForm" label-width="120px">
|
||||
<el-form-item label="选择班级">
|
||||
<el-select
|
||||
v-model="linkRuleForm.classCodes"
|
||||
placeholder="请选择班级"
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
style="width: 100%">
|
||||
<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="选择规则">
|
||||
<el-select
|
||||
v-model="linkRuleForm.ruleId"
|
||||
@@ -242,6 +283,9 @@ import { fetchList, delObj, putObjs, classExportData, getDeptList, getClassListB
|
||||
import { useMessage, useMessageBox } from "/@/hooks/message";
|
||||
import { fetchList as getRuleList } from "/@/api/stuwork/entrancerule";
|
||||
import { downBlobFile, adaptationUrl } from "/@/utils/other";
|
||||
import { List, OfficeBuilding, Grid, Document, UserFilled, Phone, User, Lock, CircleCheck, TrendCharts, Setting } from '@element-plus/icons-vue'
|
||||
import { defineAsyncComponent as defineStatusTag } from 'vue'
|
||||
const StatusTag = defineStatusTag(() => import('/@/components/StatusTag/index.vue'))
|
||||
|
||||
// 引入组件
|
||||
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
|
||||
@@ -258,6 +302,7 @@ const classList = ref<any[]>([])
|
||||
const ruleList = ref<any[]>([])
|
||||
const linkRuleDialogVisible = ref(false)
|
||||
const linkRuleLoading = ref(false)
|
||||
const selectedClassCodes = ref<string[]>([])
|
||||
|
||||
// 搜索表单
|
||||
const searchForm = reactive({
|
||||
@@ -272,7 +317,6 @@ const searchForm = reactive({
|
||||
|
||||
// 关联门禁规则表单
|
||||
const linkRuleForm = reactive({
|
||||
classCodes: [] as string[],
|
||||
ruleId: ''
|
||||
})
|
||||
|
||||
@@ -296,6 +340,13 @@ const {
|
||||
tableStyle
|
||||
} = useTable(state)
|
||||
|
||||
// 表格多选
|
||||
const handleSelectionChange = (rows: any[]) => {
|
||||
selectedClassCodes.value = (rows || [])
|
||||
.map((item) => item.classCode)
|
||||
.filter((item) => !!item)
|
||||
}
|
||||
|
||||
// 学院选择变化
|
||||
const handleDeptChange = () => {
|
||||
// 可以根据需要清空班号选择
|
||||
@@ -352,8 +403,11 @@ const handleViewDetail = (row: any) => {
|
||||
|
||||
// 关联门禁规则
|
||||
const handleLinkRule = () => {
|
||||
if (!selectedClassCodes.value.length) {
|
||||
useMessage().warning('请先勾选要关联的班级')
|
||||
return
|
||||
}
|
||||
linkRuleDialogVisible.value = true
|
||||
linkRuleForm.classCodes = []
|
||||
linkRuleForm.ruleId = ''
|
||||
// 加载规则列表
|
||||
getRuleListData()
|
||||
@@ -361,12 +415,12 @@ const handleLinkRule = () => {
|
||||
|
||||
// 确认关联门禁规则
|
||||
const confirmLinkRule = async () => {
|
||||
if (!linkRuleForm.ruleId) {
|
||||
useMessage().warning('请选择门禁规则')
|
||||
if (!selectedClassCodes.value.length) {
|
||||
useMessage().warning('请先勾选要关联的班级')
|
||||
return
|
||||
}
|
||||
if (!linkRuleForm.classCodes || linkRuleForm.classCodes.length === 0) {
|
||||
useMessage().warning('请选择班级')
|
||||
if (!linkRuleForm.ruleId) {
|
||||
useMessage().warning('请选择门禁规则')
|
||||
return
|
||||
}
|
||||
|
||||
@@ -374,7 +428,7 @@ const confirmLinkRule = async () => {
|
||||
linkRuleLoading.value = true
|
||||
await putObjs({
|
||||
ruleId: linkRuleForm.ruleId,
|
||||
classCodes: linkRuleForm.classCodes
|
||||
classCodes: selectedClassCodes.value
|
||||
})
|
||||
useMessage().success('关联成功')
|
||||
linkRuleDialogVisible.value = false
|
||||
@@ -396,10 +450,9 @@ const handleExport = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 生成考核班级
|
||||
// 生成考核班级(占位,待确认接口)
|
||||
const handleGenerateAssessment = () => {
|
||||
// TODO: 需要确认接口地址
|
||||
useMessage().warning('生成考核班级功能待实现,请确认接口地址')
|
||||
useMessage().warning('生成考核班级功能待确认接口后启用')
|
||||
}
|
||||
|
||||
// 获取学院列表
|
||||
|
||||
@@ -215,45 +215,157 @@
|
||||
@sort-change="sortChangeHandle"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column type="index" label="序号" align="center" />
|
||||
<el-table-column prop="deptName" label="学院" show-overflow-tooltip />
|
||||
<el-table-column prop="majorName" label="专业" show-overflow-tooltip />
|
||||
<el-table-column prop="className" label="班级" show-overflow-tooltip />
|
||||
<el-table-column prop="stuNo" label="学号" show-overflow-tooltip />
|
||||
<el-table-column prop="realName" label="姓名" show-overflow-tooltip />
|
||||
<el-table-column type="index" label="序号" align="center">
|
||||
<template #header>
|
||||
<el-icon><List /></el-icon>
|
||||
<span style="margin-left: 4px;">序号</span>
|
||||
</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="majorName" label="专业" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><Briefcase /></el-icon>
|
||||
<span style="margin-left: 4px;">专业</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="className" 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="stuNo" 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="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="gender" label="性别" width="80" align="center">
|
||||
<template #header>
|
||||
<el-icon><User /></el-icon>
|
||||
<span style="margin-left: 4px;">性别</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.gender === '1' || scope.row.gender === 1 ? '男' : scope.row.gender === '0' || scope.row.gender === 0 ? '女' : '-' }}</span>
|
||||
<GenderTag :gender="scope.row.gender" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="idCard" 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="teacherNo" 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="idCard" label="身份证号" show-overflow-tooltip />
|
||||
<el-table-column prop="teacherNo" label="班主任" show-overflow-tooltip />
|
||||
<el-table-column prop="isDorm" label="住宿" width="80" align="center">
|
||||
<template #header>
|
||||
<el-icon><HomeFilled /></el-icon>
|
||||
<span style="margin-left: 4px;">住宿</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.isDorm === 1 || scope.row.isDorm === '1' ? '是' : scope.row.isDorm === 0 || scope.row.isDorm === '0' ? '否' : '-' }}</span>
|
||||
<el-tag v-if="scope.row.isDorm === 1 || scope.row.isDorm === '1'" size="small" type="success" effect="plain">是</el-tag>
|
||||
<el-tag v-else-if="scope.row.isDorm === 0 || scope.row.isDorm === '0'" size="small" type="info" effect="plain">否</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="education" label="文化程度" show-overflow-tooltip />
|
||||
<el-table-column prop="enrollStatus" label="学籍状态" show-overflow-tooltip />
|
||||
<el-table-column prop="phone" label="个人电话" show-overflow-tooltip />
|
||||
<el-table-column prop="householdAddress" label="户籍所在地" show-overflow-tooltip />
|
||||
<el-table-column prop="stuStatus" label="学生状态" show-overflow-tooltip />
|
||||
<el-table-column prop="isClassLeader" label="是否班干部" width="100" align="center">
|
||||
<el-table-column prop="education" label="文化程度" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><School /></el-icon>
|
||||
<span style="margin-left: 4px;">文化程度</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="enrollStatus" label="学籍状态" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><CircleCheck /></el-icon>
|
||||
<span style="margin-left: 4px;">学籍状态</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.isClassLeader == 1 || scope.row.isClassLeader === '1' ? '是' : scope.row.isClassLeader == 0 || scope.row.isClassLeader === '0' ? '否' : '-' }}</span>
|
||||
<el-tag v-if="scope.row.enrollStatus" size="small" type="info" effect="plain">{{ scope.row.enrollStatus }}</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="phone" label="个人电话" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><Phone /></el-icon>
|
||||
<span style="margin-left: 4px;">个人电话</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="householdAddress" 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="stuStatus" label="学生状态" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><Tickets /></el-icon>
|
||||
<span style="margin-left: 4px;">学生状态</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<el-tag
|
||||
v-if="getStuStatusLabel(scope.row.stuStatus)"
|
||||
size="small"
|
||||
:type="getStuStatusType(scope.row.stuStatus)"
|
||||
effect="plain">
|
||||
{{ getStuStatusLabel(scope.row.stuStatus) }}
|
||||
</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="isClassLeader" label="是否班干部" width="100" align="center">
|
||||
<template #header>
|
||||
<el-icon><Medal /></el-icon>
|
||||
<span style="margin-left: 4px;">是否班干部</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.isClassLeader == 1 || scope.row.isClassLeader === '1'" size="small" type="success" effect="plain">是</el-tag>
|
||||
<el-tag v-else-if="scope.row.isClassLeader == 0 || scope.row.isClassLeader === '0'" size="small" type="info" effect="plain">否</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="isInout" label="是否允许进出" width="120" align="center">
|
||||
<template #header>
|
||||
<el-icon><Lock /></el-icon>
|
||||
<span style="margin-left: 4px;">是否允许进出</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.isInout === 1 || scope.row.isInout === '1' ? '是' : scope.row.isInout === 0 || scope.row.isInout === '0' ? '否' : '-' }}</span>
|
||||
<el-tag v-if="scope.row.isInout === 1 || scope.row.isInout === '1'" size="small" type="success" effect="plain">是</el-tag>
|
||||
<el-tag v-else-if="scope.row.isInout === 0 || scope.row.isInout === '0'" size="small" type="danger" effect="plain">否</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="completeRate" label="资料完成度" width="120" align="center">
|
||||
<template #header>
|
||||
<el-icon><DataAnalysis /></el-icon>
|
||||
<span style="margin-left: 4px;">资料完成度</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.completeRate || '-' }}</span>
|
||||
<el-tag v-if="scope.row.completeRate !== undefined && scope.row.completeRate !== null" size="small" type="primary" effect="plain">
|
||||
{{ scope.row.completeRate }}%
|
||||
</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" width="300">
|
||||
<template #header>
|
||||
<el-icon><Setting /></el-icon>
|
||||
<span style="margin-left: 4px;">操作</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
icon="Edit"
|
||||
@@ -360,6 +472,7 @@
|
||||
|
||||
<script setup lang="ts" name="BasicStudent">
|
||||
import { ref, reactive, defineAsyncComponent, computed, onMounted } from 'vue'
|
||||
import { List, OfficeBuilding, Briefcase, Grid, Document, UserFilled, User, CreditCard, HomeFilled, School, CircleCheck, Phone, Location, Tickets, Medal, Lock, DataAnalysis, Setting } from '@element-plus/icons-vue'
|
||||
import { BasicTableProps, useTable } from "/@/hooks/table";
|
||||
import { fetchList } from "/@/api/basic/basicstudentinfo";
|
||||
import {
|
||||
@@ -379,10 +492,11 @@ import {
|
||||
prePrint
|
||||
} from "/@/api/basic/basicstudent";
|
||||
import { getDeptList, getClassListByRole } from "/@/api/basic/basicclass";
|
||||
import { queryDictByTypeList } from "/@/api/admin/dict";
|
||||
import { getDicts } from "/@/api/admin/dict";
|
||||
import { useMessage, useMessageBox } from "/@/hooks/message";
|
||||
import { downBlobFile, adaptationUrl } from "/@/utils/other";
|
||||
import { Session } from "/@/utils/storage";
|
||||
import GenderTag from '/@/components/GenderTag/index.vue'
|
||||
|
||||
// 引入组件
|
||||
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
|
||||
@@ -628,67 +742,39 @@ const getStatusListData = async () => {
|
||||
// 获取学生状态列表
|
||||
const getStuStatusListData = async () => {
|
||||
try {
|
||||
// 先尝试使用批量字典接口
|
||||
const res = await queryDictByTypeList(['student_status'])
|
||||
|
||||
// 尝试多种可能的数据结构
|
||||
let dictData = null
|
||||
const res = await getDicts('student_status')
|
||||
if (res.data) {
|
||||
// 可能是 res.data.student_status
|
||||
if (res.data.student_status) {
|
||||
dictData = res.data.student_status
|
||||
}
|
||||
// 可能是 res.data['student_status']
|
||||
else if (res.data['student_status']) {
|
||||
dictData = res.data['student_status']
|
||||
}
|
||||
// 可能是直接返回数组
|
||||
else if (Array.isArray(res.data)) {
|
||||
dictData = res.data
|
||||
}
|
||||
// 可能是对象,键为 student_status
|
||||
else if (typeof res.data === 'object') {
|
||||
const keys = Object.keys(res.data)
|
||||
if (keys.length > 0) {
|
||||
dictData = res.data[keys[0]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dictData && Array.isArray(dictData) && dictData.length > 0) {
|
||||
const parseDictList = (dictData: any) => {
|
||||
return dictData.map((item: any) => ({
|
||||
if (Array.isArray(res.data)) {
|
||||
// 确保数据格式统一为 {label, value, type}
|
||||
stuStatusList.value = res.data.map((item: any) => ({
|
||||
label: item.label || item.name || item.dictLabel || item.text || '',
|
||||
value: item.value || item.code || item.dictValue || item.id || ''
|
||||
})).filter((item: any) => item.label && item.value !== undefined && item.value !== null && item.value !== '')
|
||||
}
|
||||
stuStatusList.value = parseDictList(dictData)
|
||||
return
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('批量字典接口获取学生状态失败', err)
|
||||
}
|
||||
|
||||
// 如果批量字典接口失败或返回数据格式不对,使用原来的单个字典接口
|
||||
try {
|
||||
const fallbackRes = await getStuStatus()
|
||||
if (fallbackRes.data) {
|
||||
if (Array.isArray(fallbackRes.data)) {
|
||||
// 确保数据格式统一为 {label, value}
|
||||
stuStatusList.value = fallbackRes.data.map((item: any) => ({
|
||||
label: item.label || item.name || item.dictLabel || item.text || '',
|
||||
value: item.value || item.code || item.dictValue || item.id || ''
|
||||
value: String(item.value || item.code || item.dictValue || item.id || ''),
|
||||
type: item.type || 'info'
|
||||
})).filter((item: any) => item.label && item.value !== undefined && item.value !== null && item.value !== '')
|
||||
} else {
|
||||
stuStatusList.value = []
|
||||
}
|
||||
}
|
||||
} catch (fallbackErr) {
|
||||
console.error('获取学生状态列表失败', fallbackErr)
|
||||
} catch (err) {
|
||||
console.error('获取学生状态列表失败', err)
|
||||
stuStatusList.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 根据学生状态值获取标签
|
||||
const getStuStatusLabel = (value: any) => {
|
||||
if (value === undefined || value === null || value === '') return ''
|
||||
const status = stuStatusList.value.find(item => String(item.value) === String(value))
|
||||
return status ? status.label : ''
|
||||
}
|
||||
|
||||
// 根据学生状态值获取标签类型
|
||||
const getStuStatusType = (value: any) => {
|
||||
if (value === undefined || value === null || value === '') return 'info'
|
||||
const status = stuStatusList.value.find(item => String(item.value) === String(value))
|
||||
return status ? (status.type || 'info') : 'info'
|
||||
}
|
||||
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getDeptListData()
|
||||
|
||||
246
src/views/basic/basicstudent/queryStuindex.vue
Normal file
246
src/views/basic/basicstudent/queryStuindex.vue
Normal file
@@ -0,0 +1,246 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 搜索 -->
|
||||
<el-card shadow="never" class="mb12">
|
||||
<el-form :inline="true" :model="searchForm" ref="searchFormRef" label-width="90px">
|
||||
<el-form-item label="学号" prop="stuNo">
|
||||
<el-input v-model="searchForm.stuNo" placeholder="请输入学号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="stuName">
|
||||
<el-input v-model="searchForm.stuName" placeholder="请输入姓名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证" prop="idCard">
|
||||
<el-input v-model="searchForm.idCard" placeholder="请输入身份证" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="phone">
|
||||
<el-input v-model="searchForm.phone" placeholder="请输入电话" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="家长电话" prop="parentPhone">
|
||||
<el-input v-model="searchForm.parentPhone" placeholder="请输入家长电话" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<!-- 表格 -->
|
||||
<el-card shadow="never">
|
||||
<el-table
|
||||
:data="state.dataList"
|
||||
v-loading="state.loading"
|
||||
border
|
||||
:cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle"
|
||||
@sort-change="sortChangeHandle"
|
||||
style="width: 100%;">
|
||||
<el-table-column type="index" label="序号" width="70" align="center">
|
||||
<template #header>
|
||||
<el-icon><List /></el-icon>
|
||||
<span style="margin-left: 4px;">序号</span>
|
||||
</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="majorName" label="专业" show-overflow-tooltip>
|
||||
<template #header>
|
||||
<el-icon><Briefcase /></el-icon>
|
||||
<span style="margin-left: 4px;">专业</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="className" 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="stuNo" label="学号" show-overflow-tooltip width="130">
|
||||
<template #header>
|
||||
<el-icon><Document /></el-icon>
|
||||
<span style="margin-left: 4px;">学号</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stuName" 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="idCard" label="身份证" show-overflow-tooltip width="180">
|
||||
<template #header>
|
||||
<el-icon><CreditCard /></el-icon>
|
||||
<span style="margin-left: 4px;">身份证</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="phone" label="电话" show-overflow-tooltip width="130">
|
||||
<template #header>
|
||||
<el-icon><Phone /></el-icon>
|
||||
<span style="margin-left: 4px;">电话</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="parentPhone" label="家长电话" show-overflow-tooltip width="140">
|
||||
<template #header>
|
||||
<el-icon><Phone /></el-icon>
|
||||
<span style="margin-left: 4px;">家长电话</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="gender" label="性别" width="90" align="center">
|
||||
<template #header>
|
||||
<el-icon><User /></el-icon>
|
||||
<span style="margin-left: 4px;">性别</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<GenderTag :gender="scope.row.gender" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dormNo" label="宿舍号" show-overflow-tooltip width="120">
|
||||
<template #header>
|
||||
<el-icon><HomeFilled /></el-icon>
|
||||
<span style="margin-left: 4px;">宿舍号</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="teacherName" 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="teacherPhone" label="班主任电话" show-overflow-tooltip width="140">
|
||||
<template #header>
|
||||
<el-icon><Phone /></el-icon>
|
||||
<span style="margin-left: 4px;">班主任电话</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="schoolRollStatus" label="学籍状态" show-overflow-tooltip width="110" align="center">
|
||||
<template #header>
|
||||
<el-icon><CircleCheck /></el-icon>
|
||||
<span style="margin-left: 4px;">学籍状态</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<StatusTag :status="scope.row.schoolRollStatus" :options="rollStatusOptions" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stuStatus" label="学生状态" show-overflow-tooltip width="110" align="center">
|
||||
<template #header>
|
||||
<el-icon><Tickets /></el-icon>
|
||||
<span style="margin-left: 4px;">学生状态</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<StatusTag :status="scope.row.stuStatus" :options="stuStatusOptions" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="avatarUrl" label="头像" width="120" align="center">
|
||||
<template #header>
|
||||
<el-icon><Picture /></el-icon>
|
||||
<span style="margin-left: 4px;">头像</span>
|
||||
</template>
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
v-if="scope.row.avatarUrl"
|
||||
:src="scope.row.avatarUrl"
|
||||
:preview-src-list="[scope.row.avatarUrl]"
|
||||
fit="cover"
|
||||
style="width: 60px; height: 60px; border-radius: 6px;" />
|
||||
<el-tag v-else type="info" effect="plain">无</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right" align="center">
|
||||
<template #header>
|
||||
<el-icon><Setting /></el-icon>
|
||||
<span style="margin-left: 4px;">操作</span>
|
||||
</template>
|
||||
<template #default>
|
||||
<span style="color: #999;">—</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="state.total > 0"
|
||||
:total="state.total"
|
||||
v-model:page="state.page"
|
||||
v-model:limit="state.limit"
|
||||
@pagination="getDataList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="QueryStuindex">
|
||||
import { ref, reactive } from 'vue'
|
||||
import { Search, Refresh, List, OfficeBuilding, Grid, Document, UserFilled, CreditCard, Phone, User, HomeFilled, CircleCheck, Tickets, Setting, Picture, Briefcase } from '@element-plus/icons-vue'
|
||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||
import { queryStuindex } from '/@/api/basic/basicstudent'
|
||||
import GenderTag from '/@/components/GenderTag/index.vue'
|
||||
import StatusTag from '/@/components/StatusTag/index.vue'
|
||||
|
||||
// 搜索表单
|
||||
const searchFormRef = ref()
|
||||
const searchForm = reactive({
|
||||
stuNo: '',
|
||||
stuName: '',
|
||||
idCard: '',
|
||||
phone: '',
|
||||
parentPhone: ''
|
||||
})
|
||||
|
||||
// 状态映射(可根据实际字典调整)
|
||||
const rollStatusOptions = [
|
||||
{ value: '0', label: '在籍', type: 'success' },
|
||||
{ value: '1', label: '离校', type: 'warning' },
|
||||
{ value: '2', label: '休学', type: 'info' }
|
||||
]
|
||||
const stuStatusOptions = [
|
||||
{ value: '0', label: '正常', type: 'success' },
|
||||
{ value: '1', label: '预警', type: 'warning' },
|
||||
{ value: '2', label: '异常', type: 'danger' }
|
||||
]
|
||||
|
||||
// 表格配置
|
||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
queryForm: searchForm,
|
||||
pageList: queryStuindex,
|
||||
props: {
|
||||
item: 'records',
|
||||
totalCount: 'total'
|
||||
},
|
||||
createdIsNeed: true
|
||||
})
|
||||
|
||||
const {
|
||||
getDataList,
|
||||
sortChangeHandle,
|
||||
tableStyle
|
||||
} = useTable(state)
|
||||
|
||||
const handleSearch = () => {
|
||||
state.page = 1
|
||||
getDataList()
|
||||
}
|
||||
|
||||
const handleReset = () => {
|
||||
searchFormRef.value?.resetFields()
|
||||
state.page = 1
|
||||
getDataList()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-container {
|
||||
padding: 16px;
|
||||
}
|
||||
.mb12 {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -46,10 +46,30 @@
|
||||
: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="stuNo" label="学号" show-overflow-tooltip />
|
||||
<el-table-column prop="realName" label="姓名" show-overflow-tooltip />
|
||||
<el-table-column prop="className" label="班级" show-overflow-tooltip />
|
||||
<el-table-column type="index" label="序号" width="60" align="center">
|
||||
<template #header>
|
||||
<el-icon><List /></el-icon>
|
||||
<span style="margin-left: 4px;">序号</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stuNo" 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="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="className" 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="headImg" label="头像" width="120" align="center">
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
@@ -84,7 +104,7 @@ import { ref, reactive, onMounted } from 'vue'
|
||||
import { BasicTableProps, useTable } from "/@/hooks/table";
|
||||
import { fetchList } from "/@/api/basic/basicstudentavatar";
|
||||
import { getClassListByRole } from "/@/api/basic/basicclass";
|
||||
import { Picture } from '@element-plus/icons-vue'
|
||||
import { Picture, List, Document, UserFilled, Grid } from '@element-plus/icons-vue'
|
||||
|
||||
// 定义变量内容
|
||||
const searchFormRef = ref()
|
||||
|
||||
@@ -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'
|
||||
|
||||
// 定义变量内容
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'));
|
||||
|
||||
457
src/views/stuwork/classroomhygienedailyanalysis/index.vue
Normal file
457
src/views/stuwork/classroomhygienedailyanalysis/index.vue
Normal 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>
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -9,10 +9,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="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 prop="realName" 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 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 +63,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, UserFilled, Setting } from '@element-plus/icons-vue'
|
||||
|
||||
// 配置 useTable
|
||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -65,27 +65,98 @@
|
||||
v-loading="state.loading"
|
||||
border
|
||||
:cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle">
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
: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="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"
|
||||
@@ -97,24 +168,30 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
v-bind="state.pagination" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="DormRoomStudentChange">
|
||||
import { reactive, ref, onMounted, computed } from 'vue'
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { BasicTableProps, useTable } from "/@/hooks/table";
|
||||
import { queryStudentAbnormal } from "/@/api/stuwork/dormroomstudent";
|
||||
import { fetchList } from "/@/api/stuwork/dormroomstudentchange";
|
||||
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()
|
||||
const showSearch = ref(true)
|
||||
const deptList = ref<any[]>([])
|
||||
const changeTypeList = ref<any[]>([])
|
||||
const allDataList = ref<any[]>([])
|
||||
|
||||
// 搜索表单
|
||||
const searchForm = reactive({
|
||||
@@ -126,30 +203,7 @@ const searchForm = reactive({
|
||||
// 配置 useTable
|
||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
queryForm: searchForm,
|
||||
isPage: false, // 接口不支持分页
|
||||
pageList: async () => {
|
||||
try {
|
||||
const res = await queryStudentAbnormal()
|
||||
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
|
||||
}
|
||||
allDataList.value = dataList
|
||||
return {
|
||||
...res,
|
||||
data: filterData(dataList)
|
||||
}
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg || '获取数据失败')
|
||||
return {
|
||||
data: []
|
||||
}
|
||||
}
|
||||
},
|
||||
pageList: fetchList,
|
||||
props: {
|
||||
item: 'records',
|
||||
totalCount: 'total'
|
||||
@@ -157,24 +211,12 @@ const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
createdIsNeed: true
|
||||
})
|
||||
|
||||
// 过滤数据
|
||||
const filterData = (data: any[]) => {
|
||||
let filtered = data
|
||||
if (searchForm.deptCode) {
|
||||
filtered = filtered.filter(item => item.deptCode === searchForm.deptCode)
|
||||
}
|
||||
if (searchForm.classNo) {
|
||||
filtered = filtered.filter(item => item.classNo && item.classNo.includes(searchForm.classNo))
|
||||
}
|
||||
if (searchForm.changeType) {
|
||||
filtered = filtered.filter(item => item.changeType === searchForm.changeType)
|
||||
}
|
||||
return filtered
|
||||
}
|
||||
|
||||
// table hook
|
||||
const {
|
||||
getDataList,
|
||||
currentChangeHandle,
|
||||
sizeChangeHandle,
|
||||
sortChangeHandle,
|
||||
tableStyle
|
||||
} = useTable(state)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
|
||||
// 定义变量内容
|
||||
|
||||
@@ -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'
|
||||
|
||||
// 定义变量内容
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
<el-button
|
||||
icon="Plus"
|
||||
type="primary"
|
||||
class="ml10"
|
||||
@click="handleAdd">
|
||||
新增
|
||||
</el-button>
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
// 定义变量内容
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user