This commit is contained in:
2025-08-26 11:20:24 +08:00
34 changed files with 454 additions and 184 deletions

View File

@@ -42,3 +42,11 @@ export function delIdentifytexs(id) {
method: 'post'
})
}
// 班级信息列表
export function deptDataList() {
return request({
url: '/comprehensive/identifytexs/deptdata',
method: 'get'
})
}

View File

@@ -47,6 +47,13 @@ export function listView(params) {
})
}
export function checkRoles() {
return request({
url: '/dormitory/daily/checkRoles',
method: 'get'
})
}
// 查询学生宿舍打卡列表

View File

@@ -122,6 +122,14 @@ export function updateNewRecord(data) {
export function delNewRecord(id) {
return request({
url: '/dormitory/newRecord/' + id,
method: 'post'
method: 'delete'
})
}
// 一键确认未进行住宿费用确认的学生
export function confirmUnconfirmedStudents() {
return request({
url: '/dormitory/newRecord/confirmUnconfirmedStudents',
method: 'POST'
})
}

View File

@@ -1706,10 +1706,10 @@ export default {
/* 聊天弹窗容器 */
.chat-popup {
position: fixed;
bottom: 45px;
right: 60px;
width: 400px;
height: 600px;
bottom: 9vh;
right: 5vw;
width: 40vw;
height: 80vh;
background: #fff;
border-radius: 16px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15), 0 8px 32px rgba(0, 0, 0, 0.1);

View File

@@ -21,7 +21,7 @@
<!-- 其他页面内容 -->
<!-- 触发按钮控制弹窗显示隐藏 -->
<div class="ai-hover" @click="toggleAI">
<span v-if="!showAI" style="font-size: 14px; font-weight: bold;">AI</span>
<span v-if="!showAI" style="font-size: 30px; font-weight: bold;">AI</span>
<i v-else class="el-icon-close" style="font-size: 20px;"></i>
</div>
<!-- 聊天弹窗通过 v-if 控制显隐 -->
@@ -192,22 +192,7 @@ export default {
}
// ai悬停
.ai-hover {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 999;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: #409eff;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
//AI
.ai-hover {
@@ -215,8 +200,8 @@ export default {
right: 20px;
bottom: 20px;
/* 和弹窗拉开距离 */
width: 40px;
height: 40px;
width: 5vw;
height: 7vh;
background-color: #409eff;
border-radius: 50%;
display: flex;

View File

@@ -125,6 +125,13 @@ export default {
value: 0,
url: "hard/zsg/fdy"
},
//邵政文
{
label: "辅导员·住宿费用确认审核",
name: "zsfy",
value: 0,
url: "/dormitory/new/FdyConfirm"
},
],

View File

@@ -133,6 +133,19 @@ export default {
value: 0,
url: "/teacher/achievement/achievementCheck",
},
// 陈冠元
{
label: "学工·辅导员管理-业绩考核-科室复审",
name: "yj",
value: 0,
url: "/teacher/teacherKpiFilling/studentAffairsOfficeAudit/KSAuditList",
},
{
label: "学工·辅导员管理-业绩考核-学工处长审核",
name: "bj",
value: 0,
url: "/teacher/teacherKpiFilling/studentAffairsOfficeAudit/XGCZAuditList",
},
],
};
},

View File

@@ -58,6 +58,13 @@ export default {
value: 0,
url: "/teacher/achievement/achievementCheck",
},
// 陈冠元
{
label: "书记·辅导员管理-业绩考核",
name: "yj",
value: 0,
url: "/teacher/teacherKpiFilling/collegeAudit/DZZSJAuditList",
},
],
};
},

View File

@@ -109,6 +109,13 @@ export default {
value: 0,
url: "/teacher/achievement/achievementCheck",
},
// 陈冠元
{
label: "学务·辅导员管理-业绩考核",
name: "yj",
value: 0,
url: "/teacher/teacherKpiFilling/collegeAudit/XWAuditList",
},
],
};
},

View File

@@ -4,7 +4,22 @@
<el-form-item label="学号" prop="studentCode">
<el-input v-model="queryParams.studentCode" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="班级" prop="deptId">
<el-form-item label="班级" prop="classId" v-if="xflag">
<el-select
v-model="queryParams.classId"
placeholder="请选择班级"
clearable
filterable
style="width: 300px;">
<el-option
v-for="item in cascaderData"
:key="item.classId"
:label="item.className"
:value="item.classId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="deptId" v-else>
<el-cascader v-model="queryParams.classId" ref="cas" style="width: 500px;" :options="cascaderData"
:props="{ checkStrictly: false }" @change="handleChange" clearable filterable></el-cascader>
</el-form-item>
@@ -479,7 +494,7 @@
</template>
<script>
import { listIdentifytexs, getIdentifytexs, delIdentifytexs, addIdentifytexs, updateIdentifytexs } from "@/api/comprehensive/identifytexs";
import { listIdentifytexs, getIdentifytexs, delIdentifytexs, addIdentifytexs, updateIdentifytexs, deptDataList } from "@/api/comprehensive/identifytexs";
import { treeStudent } from "@/api/stuCQS/basedata/student";
import { listQiyongYear as listYear } from "@/api/stuCQS/basedata/year";
import * as XLSX from 'xlsx';
@@ -519,6 +534,7 @@ export default {
biaoJi: null,
excelName: null,
redingData: false,
xflag: false,
// 查询参数
queryParams: {
pageNum: 1,
@@ -595,13 +611,20 @@ export default {
},
// 获取级联数据
async getCascaderData() {
const res = await treeStudent()
const res = await deptDataList()
this.cascaderData = res.data
this.cascaderData.forEach(dept => {
dept.children.forEach(major => {
major.children.forEach(c => { delete c.children })
})
if(this.cascaderData.length > 0) {
this.xflag = true;
return;
}
const ress = await treeStudent()
this.cascaderData = ress.data
this.cascaderData.forEach(dept => {
dept.children.forEach(major => {
major.children.forEach(c => { delete c.children })
})
});
//console.log(this.cascaderData, "班级数据");
},
// 获取学年信息
async listAllStuYear() {

View File

@@ -4,7 +4,22 @@
<el-form-item label="学号" prop="studentCode">
<el-input v-model="queryParams.studentCode" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="班级" prop="deptId">
<el-form-item label="班级" prop="classId" v-if="xflag">
<el-select
v-model="queryParams.classId"
placeholder="请选择班级"
clearable
filterable
style="width: 300px;">
<el-option
v-for="item in cascaderData"
:key="item.classId"
:label="item.className"
:value="item.classId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="deptId" v-else>
<el-cascader v-model="queryParams.classId" ref="cas" style="width: 500px;" :options="cascaderData"
:props="{ checkStrictly: false }" @change="handleChange" clearable filterable></el-cascader>
</el-form-item>
@@ -388,6 +403,7 @@
<script>
import { listRemarkstext, getRemarkstext, delRemarkstext, addRemarkstext, updateRemarkstext } from "@/api/comprehensive/remarkstext";
import { treeStudent } from "@/api/stuCQS/basedata/student";
import { deptDataList } from "@/api/comprehensive/identifytexs";
import { listQiyongYear as listYear } from "@/api/stuCQS/basedata/year";
import * as XLSX from 'xlsx';
import { excelDateToJSDate } from '@/utils/index';
@@ -426,6 +442,7 @@ export default {
excelName: null,
mode: 'add',
redingdata: false,
xflag: false,
// 查询参数
queryParams: {
pageNum: 1,
@@ -492,12 +509,18 @@ export default {
},
// 获取级联数据
async getCascaderData() {
const res = await treeStudent()
const res = await deptDataList()
this.cascaderData = res.data
this.cascaderData.forEach(dept => {
dept.children.forEach(major => {
major.children.forEach(c => { delete c.children })
})
if(this.cascaderData.length > 0) {
this.xflag = true
return;
}
const ress = await treeStudent()
this.cascaderData = ress.data
this.cascaderData.forEach(dept => {
dept.children.forEach(major => {
major.children.forEach(c => { delete c.children })
})
});
},
// 获取学年信息

View File

@@ -204,7 +204,10 @@ export default {
let res = await initRecord(sdata);
loading.close();
if (res.code == 200) {
this.$message.success(res.msg);
this.$message.success(res.msg + ",住宿费用确认消息已发送给相关学生");
this.getList(); // 刷新列表
} else {
this.$message.error(res.msg || "初始化失败");
}
},
async listAllGrade() {

View File

@@ -40,7 +40,7 @@
<el-form-item label="学院" prop="deptId">
<el-select @change="changeDept" v-model="queryParams.deptId" placeholder="请选择学院" filterable
clearable>
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value">
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" :disabled="v.disabled">
</el-option>
</el-select>
</el-form-item>
@@ -88,6 +88,43 @@
</el-collapse-item>
</el-collapse>
<!-- 角色切换按钮 -->
<el-form-item label="查看权限" v-if="showRoleSwitch">
<el-button-group>
<!-- 学工+辅导员组合 -->
<template v-if="userRoleInfo && userRoleInfo.isXuegong && userRoleInfo.isFudaoyuan">
<el-button
:type="queryParams.roleType === 'xuegong' ? 'primary' : 'default'"
size="mini"
@click="switchRole('xuegong')">
学工数据全部
</el-button>
<el-button
:type="queryParams.roleType === 'teacher' ? 'primary' : 'default'"
size="mini"
@click="switchRole('teacher')">
个人班级
</el-button>
</template>
<!-- 学务干事+辅导员组合 -->
<template v-else-if="userRoleInfo && userRoleInfo.isXuewu && userRoleInfo.isFudaoyuan">
<el-button
:type="queryParams.roleType === 'dept' ? 'primary' : 'default'"
size="mini"
@click="switchRole('dept')">
学院数据
</el-button>
<el-button
:type="queryParams.roleType === 'teacher' ? 'primary' : 'default'"
size="mini"
@click="switchRole('teacher')">
个人班级
</el-button>
</template>
</el-button-group>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -119,7 +156,7 @@
</template>
<script>
import { listView as getList, sendMail } from "@/api/dormitory/daily";
import { listView as getList, sendMail, checkRoles } from "@/api/dormitory/daily";
import { cleanNotStu } from "@/api/dormitory/basedata/dormitory";
import { fullLoading, groupBy, getChineseKey, getImg, isEmpty } from "@/api/helpFunc";
@@ -139,8 +176,7 @@ export default {
dicts: ['dorm_in_status'],
data() {
return {
searInputS: ['1', '2'],
// 遮罩层
// 加载层
loading: true,
// 选中数组
ids: [],
@@ -162,75 +198,67 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
campusId: null,
parkId: null,
buildingId: null,
floorId: null,
dormitoryId: null,
bedId: null,
deptId: null,
majorId: null,
classId: null,
gradeId: null,
stuNo: null,
isDormitoryHead: null,
status: null,
checkinTime: null,
inStatus: null
stuName: null,
teacherName: null,
idCard: null,
submitTime: null,
roleType: null
},
// 表单参数
form: {},
// 表单校验
rules: {
dormitoryId: [
{ required: true, message: "宿舍ID不能为空", trigger: "blur" }
],
bedId: [
{ required: true, message: "床位ID不能为空", trigger: "blur" }
],
stuNo: [
{ required: true, message: "学生学号不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "状态(0未缴费不能为空", trigger: "change" }
],
checkinTime: [
{ required: true, message: "入住时间不能为空", trigger: "blur" }
],
},
fastForm: {
campusId: null,
parkId: null,
buildingId: null,
floorId: null,
dormitoryId: null,
},
deptList: [],//学院列表
majorList: [],//专业列表
classList: [],//班级列表
gradeList: [],//年级列表
searInputS: ['1', '2'],
campus_list: [],
park_list: [],
building_list: [],
floor_list: [],
room_list: [],
exportV: false,
campus_list: [],
fast_park_list: [],
fast_building_list: [],
fast_floor_list: [],
fast_class_list: [],
fast_major_list: [],
fast_room_list: [],
uploadV: false,
deptList: [],
majorList: [],
classList: [],
gradeList: [],
userRoleInfo: null,
showRoleSwitch: false,
// 导入参数
upload: {
// 是否显示弹出层(导入)
open: false,
// 弹出层标题(导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: 'Bearer ' + getTokenKeySessionStorage() },
url: process.env.VUE_APP_BASE_API + '/dormitory/srs-dormitory-student/importData',
// 上传的地址
url: process.env.VUE_APP_BASE_API + '/dormitory/srs-dormitory-student/importData'
},
allLoading: false
};
},
created() {
this.listDept();
async created() {
await this.getUserRoles();
await this.listDept();
this.listGrade();
this.getList();
this.listAllCampus();
@@ -247,8 +275,8 @@ export default {
},
async changeFloor(val) {
this.queryParams.dormitoryId = null;
this.room_list = [];
if (!isEmpty(val)) {
let res = await listAllRoomByFloor(this.queryParams.floorId);
if (res.code == 200) {
@@ -259,9 +287,10 @@ export default {
async changeBuilding(val) {
this.queryParams.floorId = null;
this.queryParams.dormitoryId = null;
this.floor_list = [];
this.room_list = [];
this.queryParams.dormitoryId = null;
if (!isEmpty(val)) {
let res = await listFloorByBuilding(this.queryParams.buildingId);
if (res.code == 200) {
@@ -273,7 +302,6 @@ export default {
this.queryParams.buildingId = null;
this.queryParams.floorId = null;
this.queryParams.dormitoryId = null;
this.building_list = [];
this.floor_list = [];
this.room_list = [];
@@ -291,7 +319,6 @@ export default {
this.queryParams.buildingId = null;
this.queryParams.floorId = null;
this.queryParams.dormitoryId = null;
this.park_list = [];
this.building_list = [];
this.floor_list = [];
@@ -304,44 +331,43 @@ export default {
}
}
},
async listGrade() {
let res = await listGrade();
this.gradeList = [...res.rows];
},
async changeMajor() {
if (!isEmpty(this.queryParams.majorId)) {
let sdata = {
majorId: this.queryParams.majorId
async changeMajor(val) {
this.queryParams.classId = null;
this.classList = [];
if (!isEmpty(val)) {
let res = await listClass({ majorId: this.queryParams.majorId });
if (res.code == 200) {
this.classList = [...res.data];
}
let res = await listClass(sdata);
this.classList = [...res.data];
} else {
this.queryParams.classId = null;
this.classList = [];
}
},
async changeDept() {
if (!isEmpty(this.queryParams.deptId)) {
let sdata = {
collegeId: this.queryParams.deptId,
pageNum: 1,
pageSize: 100
async changeDept(val) {
this.queryParams.majorId = null;
this.queryParams.classId = null;
this.majorList = [];
this.classList = [];
if (!isEmpty(val)) {
let res = await listMajors({ collegeId: this.queryParams.deptId, pageNum: 1, pageSize: 100 });
if (res.code == 200) {
this.majorList = [...res.rows];
}
let res = await listMajors(sdata);
this.majorList = [...res.rows];
} else {
this.queryParams.majorId = null;
this.majorList = [];
}
},
async listDept() {
let res = await getDeptName();
this.deptList = [...res.data];
let allDepts = [...res.data];
// 如果是学务干事或辅导员(但不是学工),只显示其所属的学院
// 学工角色可以查看所有学院
if (this.userRoleInfo && (this.userRoleInfo.isXuewu || this.userRoleInfo.isFudaoyuan) && !this.userRoleInfo.isXuegong && this.userRoleInfo.userDeptName) {
this.deptList = allDepts.filter(dept => dept.label === this.userRoleInfo.userDeptName);
} else {
this.deptList = allDepts;
}
},
@@ -353,42 +379,40 @@ export default {
},
async changeFastFloor(val) {
this.form.dormitoryId = null;
this.fast_room_list = [];
this.fastForm.dormitoryId = null;
this.room_list = [];
if (!isEmpty(val)) {
let res = await listAllRoomByFloor(this.fastForm.floorId);
if (res.code == 200) {
this.fast_room_list = [...res.data];
this.room_list = [...res.data];
}
}
},
async changeFastBuilding(val) {
this.fastForm.floorId = null;
this.fast_floor_list = [];
this.fast_room_list = [];
this.form.dormitoryId = null;
this.fastForm.dormitoryId = null;
this.floor_list = [];
this.room_list = [];
if (!isEmpty(val)) {
let res = await listFloorByBuilding(this.fastForm.buildingId);
if (res.code == 200) {
this.fast_floor_list = [...res.data];
this.floor_list = [...res.data];
}
}
},
async changeFastPark(val) {
this.fastForm.buildingId = null;
this.fastForm.floorId = null;
this.form.dormitoryId = null;
this.fast_building_list = [];
this.fast_floor_list = [];
this.fast_room_list = [];
this.fastForm.dormitoryId = null;
this.building_list = [];
this.floor_list = [];
this.room_list = [];
if (!isEmpty(val)) {
let res = await listBuildingByPark(this.fastForm.parkId);
if (res.code == 200) {
this.fast_building_list = [...res.data];
this.building_list = [...res.data];
}
}
},
@@ -397,17 +421,16 @@ export default {
this.fastForm.parkId = null;
this.fastForm.buildingId = null;
this.fastForm.floorId = null;
this.form.dormitoryId = null;
this.fast_park_list = [];
this.fast_building_list = [];
this.fast_floor_list = [];
this.fast_room_list = [];
this.fastForm.dormitoryId = null;
this.park_list = [];
this.building_list = [];
this.floor_list = [];
this.room_list = [];
if (!isEmpty(val)) {
let res = await listParkByCampus(this.fastForm.campusId);
if (res.code == 200) {
this.fast_park_list = [...res.data];
this.park_list = [...res.data];
}
}
},
@@ -441,13 +464,13 @@ export default {
reset() {
this.form = {
id: null,
stuId: null,
dormitoryId: null,
bedId: null,
stuNo: null,
isDormitoryHead: null,
status: null,
checkinTime: null,
inStatus: null
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
};
this.resetForm("form");
},
@@ -462,7 +485,33 @@ export default {
this.handleQuery();
},
/** 获取用户角色信息 */
async getUserRoles() {
try {
let res = await checkRoles();
if (res.code === 200 && res.data) {
this.userRoleInfo = res.data;
// 只有在多角色情况下才显示角色切换按钮
if (res.data.hasMultipleRoles) {
this.showRoleSwitch = true;
} else {
this.showRoleSwitch = false;
}
// 设置默认角色类型
this.queryParams.roleType = res.data.defaultRole;
}
} catch (error) {
console.error('获取用户角色信息失败:', error);
}
},
/** 切换角色 */
switchRole(roleType) {
this.queryParams.roleType = roleType;
// 角色切换时重新加载学院列表,确保权限正确
this.listDept();
this.handleQuery();
},
}
};
</script>
@@ -472,4 +521,5 @@ export default {
margin-bottom: 5px;
}
}
</style>
</style>

View File

@@ -42,6 +42,7 @@
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="success" icon="el-icon-check" size="mini" @click="fastConfirm">一键确认所有辅导员已确认的记录</el-button>
<el-button type="success" icon="el-icon-check" size="mini" @click="confirmUnconfirmedStudents">一键确认未进行住宿费用确认的学生</el-button>
</el-form-item>
</el-form>
@@ -152,7 +153,7 @@
</template>
<script>
import { fastConfirm, jwcConfirm, listNewRecord, getNewRecord, delNewRecord, addNewRecord, updateNewRecord } from "@/api/dormitory/new/record";
import { fastConfirm, jwcConfirm, listNewRecord, getNewRecord, delNewRecord, addNewRecord, updateNewRecord, confirmUnconfirmedStudents } from "@/api/dormitory/new/record";
import { listAllYear } from "@/api/stuCQS/basedata/year";
@@ -358,6 +359,26 @@ export default {
this.download('dormitory/newRecord/export', {
...this.queryParams
}, `newRecord_${new Date().getTime()}.xlsx`)
},
/** 一键确认未进行住宿费用确认的学生 */
confirmUnconfirmedStudents() {
this.$modal.confirm('确定要一键确认所有未进行住宿费用确认的学生吗?').then(() => {
this.loading = true;
confirmUnconfirmedStudents().then(response => {
this.loading = false;
if (response.code === 200) {
this.$modal.msgSuccess(response.msg || "确认成功");
this.getList();
} else {
this.$modal.msgError(response.msg || "确认失败");
}
}).catch(error => {
this.loading = false;
this.$modal.msgError("操作失败,请稍后重试");
});
}).catch(() => {
// 用户取消操作
});
}
}
};

View File

@@ -42,6 +42,14 @@
<template slot="label"> 班级 </template>
{{ form.className }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -56,6 +56,11 @@
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -121,6 +121,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}
@@ -185,6 +189,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}
@@ -265,6 +273,11 @@
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -56,6 +56,11 @@
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -58,6 +58,11 @@
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -42,7 +42,7 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="primary"
plain
@@ -64,7 +64,7 @@
v-hasPermi="['system:deployment:remove']"
>删除</el-button
>
</el-col>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@@ -90,12 +90,12 @@
prop="procDefName"
:show-overflow-tooltip="true"
/>
<el-table-column
<!-- <el-table-column
label="流程类别"
align="center"
prop="category"
width="100px"
/>
/> -->
<!-- <el-table-column label="流程版本" align="center" width="80px">
<template slot-scope="scope">
<el-tag size="medium">v{{ scope.row.procDefVersion }}</el-tag>
@@ -159,6 +159,7 @@
>删除</el-button
>
</template>
<a href=""></a>
</el-table-column>
</el-table>

View File

@@ -42,6 +42,14 @@
<template slot="label"> 班级 </template>
{{ form.className }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>
{{ form.jg }}

View File

@@ -57,6 +57,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>

View File

@@ -123,6 +123,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}
@@ -195,6 +199,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}
@@ -274,6 +282,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯:/自治区/直辖市 </template>

View File

@@ -57,6 +57,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>

View File

@@ -57,6 +57,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 籍贯/自治区/直辖市 </template>

View File

@@ -41,6 +41,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}

View File

@@ -23,16 +23,16 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['routine:disciplinaryApplication:add']">新增</el-button>
v-hasPermi="['routine:disciplinaryApplication:add']">发起处分</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['routine:disciplinaryApplication:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['routine:disciplinaryApplication:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['routine:disciplinaryApplication:export']">导出</el-button>
@@ -136,6 +136,18 @@
<el-input v-model="form.mz" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="政治面貌" prop="politicalStatus">
<el-select v-model="form.politicalStatus" placeholder="请选择政治面貌" clearable>
<el-option label="群众" value="群众"></el-option>
<el-option label="团员" value="团员"></el-option>
<el-option label="中共党员" value="中共党员"></el-option>
<el-option label="其他" value="其他"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出生日期" prop="birthday">
<el-input v-model="form.birthday" placeholder="" />
@@ -267,6 +279,7 @@ export default {
gradeName: [{ required: true, message: '请输入年级', trigger: 'blur' }],
className: [{ required: true, message: '请输入班级', trigger: 'blur' }],
mz: [{ required: true, message: '请输入民族', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
birthday: [{ required: true, message: '请输入出生日期', trigger: 'blur' }],
jg: [{ required: true, message: '请选择籍贯', trigger: 'blur' }],
violationDate: [{ required: true, message: '请选择违纪时间', trigger: 'blur' }],

View File

@@ -19,16 +19,16 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['routine:disqualification:add']">新增</el-button>
v-hasPermi="['routine:disqualification:add']">给予学生退学申请</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['routine:disqualification:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['routine:disqualification:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['routine:disqualification:export']">导出</el-button>
@@ -240,7 +240,9 @@ export default {
departmentName: [{ required: true, message: '部门不能为空', trigger: 'blur' }],
gradeName: [{ required: true, message: '年级不能为空', trigger: 'blur' }],
className: [{ required: true, message: '班级不能为空', trigger: 'blur' }],
mz: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
jg: [{ required: true, message: '籍贯不能为空', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
attachmentUpload: [{ required: true, message: '请上传附件', trigger: 'blur' }],
ideologicalEducation: [{ required: true, message: '请输入辅导员联系情况及学生不在校情况说明', trigger: 'blur' }],
instructionSchoolHours: [{ required: true, message: '在校时间说明', trigger: 'blur' }],

View File

@@ -41,6 +41,10 @@
<template slot="label"> 民族 </template>
{{ form.mz }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 政治面貌 </template>
{{ form.politicalStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 出生日期 </template>
{{ form.birthday }}

View File

@@ -18,14 +18,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:relieve:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:relieve:add']">发起解除</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['routine:relieve:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['routine:relieve:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['routine:relieve:export']">导出</el-button>
</el-col>
@@ -119,6 +119,18 @@
<el-input v-model="form.mz" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="政治面貌" prop="politicalStatus">
<el-select v-model="form.politicalStatus" placeholder="请选择政治面貌" clearable>
<el-option label="群众" value="群众"></el-option>
<el-option label="团员" value="团员"></el-option>
<el-option label="中共党员" value="中共党员"></el-option>
<el-option label="其他" value="其他"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出生日期" prop="birthday">
<el-input v-model="form.birthday" placeholder="" />
@@ -247,6 +259,7 @@ export default {
gradeName: [{ required: true, message: '请输入年级', trigger: 'blur' }],
className: [{ required: true, message: '请输入班级', trigger: 'blur' }],
mz: [{ required: true, message: '请输入民族', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
birthday: [{ required: true, message: '请输入出生日期', trigger: 'blur' }],
jg: [{ required: true, message: '请选择籍贯', trigger: 'blur' }],
penaltyNumber: [{ required: true, message: '请输入处分文号', trigger: 'blur' }],

View File

@@ -20,14 +20,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuDropOutSchool:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuDropOutSchool:add']">发起退学</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['routine:rtStuDropOutSchool:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['routine:rtStuDropOutSchool:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['routine:rtStuDropOutSchool:export']">导出</el-button>
</el-col>
@@ -304,6 +304,7 @@ export default {
parentPhone: [{ required: true, message: '家长电话不能为空', trigger: 'blur' }],
mz: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
jg: [{ required: true, message: '籍贯不能为空', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
attachmentUpload: [{ required: true, message: '请上传附件', trigger: 'blur' }],
reasonApplying: [{ required: true, message: '请输入申请原因', trigger: 'blur' }],
applySignature: [{ required: true, message: '请上传申请人签名', trigger: 'blur' }],

View File

@@ -18,14 +18,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuQuitSchool:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuQuitSchool:add']">发起休学</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['routine:rtStuQuitSchool:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['routine:rtStuQuitSchool:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['routine:rtStuQuitSchool:export']">导出</el-button>
</el-col>
@@ -293,6 +293,7 @@ export default {
parentPhone: [{ required: true, message: '家长电话不能为空', trigger: 'blur' }],
mz: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
jg: [{ required: true, message: '籍贯不能为空', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
attachmentUpload: [{ required: true, message: '请上传附件', trigger: 'blur' }],
reasonApplying: [{ required: true, message: '请输入申请原因', trigger: 'blur' }],
applySignature: [{ required: true, message: '请上传申请人签名', trigger: 'blur' }],

View File

@@ -18,14 +18,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuReentrySchool:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['routine:rtStuReentrySchool:add']">发起复学</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['routine:rtStuReentrySchool:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['routine:rtStuReentrySchool:remove']">删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['routine:rtStuReentrySchool:export']">导出</el-button>
</el-col>
@@ -308,6 +308,7 @@ export default {
parentPhone: [{ required: true, message: '家长电话不能为空', trigger: 'blur' }],
mz: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
jg: [{ required: true, message: '籍贯不能为空', trigger: 'blur' }],
politicalStatus: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
attachmentUpload: [{ required: true, message: '请上传附件', trigger: 'blur' }],
reasonApplying: [{ required: true, message: '请输入申请原因', trigger: 'blur' }],
applySignature: [{ required: true, message: '请上传申请人签名', trigger: 'blur' }],

View File

@@ -16,7 +16,7 @@
</el-form-item> -->
<el-form-item label="审核时间" prop="reviewTime">
<el-date-picker clearable v-model="queryParams.reviewTime" type="date" value-format="yyyy-MM-dd"
placeholder="请选择审核时间">
placeholder="请选择审核时间">
</el-date-picker>
</el-form-item>
<el-form-item>
@@ -28,19 +28,19 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['routine:stuMultiLevelReview:add']">新增</el-button>
v-hasPermi="['routine:stuMultiLevelReview:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['routine:stuMultiLevelReview:edit']">修改</el-button>
v-hasPermi="['routine:stuMultiLevelReview:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['routine:stuMultiLevelReview:remove']">删除</el-button>
v-hasPermi="['routine:stuMultiLevelReview:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['routine:stuMultiLevelReview:export']">导出</el-button>
v-hasPermi="['routine:stuMultiLevelReview:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getUser"></right-toolbar>
</el-row>
@@ -76,17 +76,17 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleCompleted(scope.row)"
v-hasPermi="['routine:stuMultiLevelReview:completed']" v-if="scope.row.reviewerStatus === 2">完成制作</el-button>
v-hasPermi="['routine:stuMultiLevelReview:completed']" v-if="scope.row.reviewerStatus === 2">完成制作</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['routine:stuMultiLevelReview:edit']">修改</el-button>
v-hasPermi="['routine:stuMultiLevelReview:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['routine:stuMultiLevelReview:remove']">删除</el-button>
v-hasPermi="['routine:stuMultiLevelReview:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getUser" />
@pagination="getUser" />
<!-- 添加或修改多级审核
对话框 -->
@@ -109,7 +109,7 @@
</el-form-item>
<el-form-item label="审核时间" prop="reviewTime">
<el-date-picker clearable v-model="form.reviewTime" type="date" value-format="yyyy-MM-dd"
placeholder="请选择审核时间">
placeholder="请选择审核时间">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="notes">
@@ -229,7 +229,7 @@ export default {
this.roleGroup = response.roleGroup;
// this.postGroup = response.postGroup;
// console.log(response);
if (!response.roleGroup.includes("超级管理员")) {
if (!response.roleGroup.includes("超级管理员")) {
this.queryParams.reviewer = response.data.nickName
}
this.getList();
@@ -237,7 +237,7 @@ export default {
});
},
/** 查询多级审核
列表 */
列表 */
getList() {
this.loading = true;
listStuMultiLevelReview(this.queryParams).then(response => {
@@ -346,25 +346,25 @@ export default {
this.completedForm.id = row.id;
this.completedOpen = true;
},
// 完成制作表单重置
resetCompleted() {
this.completedForm = {
stuName: null,
stuNo: null,
reason: null,
messageContent: "你申请办理的学生证制作完成,长堽校区前往xxx领取里建校区前往xxx领取",
messageContent: "你申请办理的学生证制作完成,长堽校区前往经管楼学工处1-1办公室领取里建校区前往“一站式”学生社区大厅领取",
id: null
};
this.resetForm("completedForm");
},
// 完成制作取消按钮
cancelCompleted() {
this.completedOpen = false;
this.resetCompleted();
},
// 完成制作提交按钮
submitCompleted() {
this.$refs["completedForm"].validate(valid => {
@@ -374,10 +374,10 @@ export default {
const receiverId = response.data;
if (!receiverId) {
throw new Error('未找到学生用户ID');
}
}
// 第二步:获取当前用户信息作为发送者
return getUserProfile().then(userResponse => {
const senderId = userResponse.data.userId;
const senderId = userResponse.data.userId;
// 第三步:发送消息通知学生
return addMsg({
sender: senderId,