Compare commits
15 Commits
c1f59292ef
...
main
Author | SHA1 | Date | |
---|---|---|---|
1c985b0269 | |||
81692cb83a | |||
e19ebcb9ba | |||
85c9f49679 | |||
![]() |
6bda0684a2 | ||
![]() |
1573c9f4e1 | ||
d72d8f0235 | |||
![]() |
3027834baf | ||
![]() |
8543ce1ce9 | ||
![]() |
c6b368d113 | ||
![]() |
a3f6cce8b4 | ||
a3fb6dec15 | |||
55979198fb | |||
bbd7fa492c | |||
89b7b140bb |
@@ -1,19 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
import request from "@/utils/request";
|
||||
|
||||
// 获取学生AI对话消息列表(管理员查看)
|
||||
export function getMessagesToAdmin(params) {
|
||||
return request({
|
||||
url: '/aitutor/aichat/getMessagesToAdmin',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
url: "/aitutor/aichat/getMessagesToAdmin",
|
||||
method: "get",
|
||||
params: params,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取心理评估数据
|
||||
export function getPsychologicalRatings(query) {
|
||||
return request({
|
||||
url: '/api/wechat/rating/all',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
url: "/api/wechat/rating/all",
|
||||
method: "get",
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取单个学生的历史心理记录
|
||||
export function getStudentRatingHistory(stuNo) {
|
||||
return request({
|
||||
url: `/api/wechat/rating/${stuNo}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
@@ -76,6 +76,40 @@ export function updateExperience(data) {
|
||||
export function delExperience(eduId) {
|
||||
return request({
|
||||
url: '/comprehensive/experience/' + eduId,
|
||||
method: 'post'
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 辅导员查看学生教育经历
|
||||
export function getOwnExpFdy(stuNo){
|
||||
return request({
|
||||
url:`/comprehensive/experience/getOwnExpFdy/${stuNo}`,
|
||||
method:"get"
|
||||
});
|
||||
}
|
||||
|
||||
// 辅导员添加学生教育经历
|
||||
export function addOwnExpFdy(data){
|
||||
return request({
|
||||
url:'/comprehensive/experience/addOwnExpFdy',
|
||||
method:"post",
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 辅导员编辑学生教育经历
|
||||
export function editOwnExpFdy(data){
|
||||
return request({
|
||||
url:'/comprehensive/experience/editOwnExpFdy',
|
||||
method: 'POST',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 辅导员删除学生教育经历
|
||||
export function deleteOwnExpFdy(id){
|
||||
return request({
|
||||
url:`/comprehensive/experience/deleteOwnExpFdy/${id}`,
|
||||
method:"post"
|
||||
});
|
||||
}
|
||||
|
64
src/api/stuCQS/teacher-evaluation-status.js
Normal file
64
src/api/stuCQS/teacher-evaluation-status.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询辅导员综合评价完成状态列表
|
||||
export function getTeacherEvaluationStatus(query) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 导出辅导员综合评价完成状态
|
||||
export function exportTeacherEvaluationStatus(query) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/export',
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询辅导员待办事项数量
|
||||
export function getTeacherTodoCount(query) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/todoCount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询综合评价成绩导入状态
|
||||
export function getScoreImportStatus(query) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/scoreImportStatus',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 获取辅导员详细信息
|
||||
export function getTeacherDetail(teacherId) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/' + teacherId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 批量更新辅导员评价状态
|
||||
export function batchUpdateStatus(data) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/batchUpdate',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取学院列表
|
||||
export function getDeptNameList(query) {
|
||||
return request({
|
||||
url: '/comprehensive/teacherEvaluationStatus/deptList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
16
src/api/stureg/temp.js
Normal file
16
src/api/stureg/temp.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export function syncClassCode() {
|
||||
return request({
|
||||
url: "/system/reg/syncClassCode",
|
||||
method: "post"
|
||||
});
|
||||
}
|
||||
|
||||
export function listXsxxTemp(params) {
|
||||
return request({
|
||||
url: "/system/reg/listXsxxTemp",
|
||||
method: "GET",
|
||||
params
|
||||
});
|
||||
}
|
@@ -62,7 +62,7 @@ export default {
|
||||
url: "/hard/zxj/fdy"
|
||||
},
|
||||
{
|
||||
label: "辅导员·宿舍管理审核",
|
||||
label: "辅导员·调宿申请审核",
|
||||
name: "dms",
|
||||
value: 0,
|
||||
url: "/dormitory/stuDormitoryManage/fdys"
|
||||
@@ -132,6 +132,20 @@ export default {
|
||||
value: 0,
|
||||
url: "/dormitory/new/FdyConfirm"
|
||||
},
|
||||
//庞世斌
|
||||
{
|
||||
label: "辅导员·综合素质审核",
|
||||
name: "zhsz",
|
||||
value: 0,
|
||||
url: "/stuCQS/process/TODoList"
|
||||
},
|
||||
{
|
||||
label: "辅导员·先进班集体审核",
|
||||
name: "xjbjt",
|
||||
value: 0,
|
||||
url: "/stuGood/good-class/fdy"
|
||||
},
|
||||
|
||||
],
|
||||
|
||||
|
||||
|
@@ -133,19 +133,6 @@ 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",
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
|
@@ -116,6 +116,13 @@ export default {
|
||||
value: 0,
|
||||
url: "/teacher/teacherKpiFilling/collegeAudit/XWAuditList",
|
||||
},
|
||||
//庞世斌
|
||||
{
|
||||
label: "学务·先进班集体审核",
|
||||
name: "xjbjt",
|
||||
value: 0,
|
||||
url: "/stuGood/good-class/xw",
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
@@ -140,10 +147,10 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
toRoute(url) {
|
||||
if (!isEmpty(url)) {
|
||||
this.$router.push(url);
|
||||
}
|
||||
toRoute(url) {
|
||||
if (!isEmpty(url)) {
|
||||
this.$router.push(url);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@@ -218,6 +218,12 @@ export default {
|
||||
value: 0,
|
||||
url: "/dormitory/stuDormitoryManage/final"
|
||||
},
|
||||
{
|
||||
label: "学务·先进班集体审核",
|
||||
name: "xjbjt",
|
||||
value: 0,
|
||||
url: "/stuGood/good-class/xw",
|
||||
},
|
||||
// {
|
||||
// label: "勤工助学学生岗位申请审核",
|
||||
// name: "qgzxgw",
|
||||
|
@@ -210,11 +210,25 @@ export default {
|
||||
url: "/hard/zxj/fdy"
|
||||
},
|
||||
{
|
||||
label: "宿舍管理审核",
|
||||
label: "调宿申请审核",
|
||||
name: "dms",
|
||||
value: 0,
|
||||
url: "/dormitory/stuDormitoryManage/fdys"
|
||||
},
|
||||
|
||||
//庞世斌
|
||||
{
|
||||
label: "辅导员·综合素质审核",
|
||||
name: "zhsz",
|
||||
value: 0,
|
||||
url: "/stuCQS/process/TODoList"
|
||||
},
|
||||
{
|
||||
label: "辅导员·先进班集体审核",
|
||||
name: "xjbjt",
|
||||
value: 0,
|
||||
url: "/stuGood/good-class/fdy"
|
||||
},
|
||||
// {
|
||||
// label: "勤工助学学生岗位申请审核",
|
||||
// name: "qgzxgw",
|
||||
|
@@ -151,6 +151,13 @@ export default {
|
||||
value: 0,
|
||||
url: "/dormitory/stuDormitoryManage/accommodation",
|
||||
},
|
||||
{
|
||||
label: "学工·先进班集体审核",
|
||||
name: "xjbjt",
|
||||
value: 0,
|
||||
url: "/stuGood/good-class/jwc"
|
||||
},
|
||||
|
||||
// {
|
||||
// label: "勤工助学学生岗位申请审核",
|
||||
// name: "qgzxgw",
|
||||
|
File diff suppressed because it is too large
Load Diff
165
src/views/basedata/private/components/EduExpKnrd.vue
Normal file
165
src/views/basedata/private/components/EduExpKnrd.vue
Normal file
@@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>开始时间</th>
|
||||
<th>结束时间</th>
|
||||
<th>学校(单位)名称</th>
|
||||
<th>职务</th>
|
||||
<th>证明人</th>
|
||||
<th style="width: 10rem;">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(v, i) in exp_list" :key="i" class="custom-input">
|
||||
<td data-label="开始时间">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.startTime }}</span>
|
||||
<input v-else type="date" v-model="v.startTime" />
|
||||
</td>
|
||||
|
||||
<td data-label="结束时间">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.endTime }}</span>
|
||||
<input v-else type="date" v-model="v.endTime" />
|
||||
</td>
|
||||
<td data-label="学校(单位)名称">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.schoolName }}</span>
|
||||
<input v-else v-model="v.schoolName" />
|
||||
</td>
|
||||
<td data-label="职务">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.post }}</span>
|
||||
<input v-else v-model="v.post" />
|
||||
</td>
|
||||
<td data-label="证明人">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.certifier }}</span>
|
||||
<input v-else v-model="v.certifier" />
|
||||
</td>
|
||||
|
||||
<td data-label="操作">
|
||||
<span>查看</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getOwnExpFdy } from "@/api/stuCQS/basedata/experience";
|
||||
import { fullLoading, isEmpty } from "@/api/helpFunc";
|
||||
|
||||
|
||||
export default {
|
||||
name: "edu-exp-knrd",
|
||||
props: {
|
||||
stuNo: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isEmpty,
|
||||
exp_list: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getOwnExpFdy(this.stuNo);
|
||||
},
|
||||
methods: {
|
||||
async getOwnExpFdy(stuNo) {
|
||||
let loading = fullLoading(this);
|
||||
let res = await getOwnExpFdy(stuNo);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.exp_list = res.data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table th,
|
||||
table td {
|
||||
padding: 12px 15px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
background-color: #f2f2f2;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table tr:nth-child(even) {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.custom-input input {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
table caption {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
table thead {
|
||||
border: none;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
table tr {
|
||||
border-bottom: 3px solid #ddd;
|
||||
display: block;
|
||||
margin-bottom: .625em;
|
||||
}
|
||||
|
||||
table td {
|
||||
border-bottom: 1px solid #ddd;
|
||||
display: block;
|
||||
font-size: .8em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table td::before {
|
||||
content: attr(data-label);
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
table td:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.note {
|
||||
max-width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
</style>
|
@@ -19,114 +19,51 @@
|
||||
<tbody>
|
||||
<tr v-for="(v, i) in family_list" :key="i" class="custom-input">
|
||||
<td style="width: 5rem;" data-label="姓名">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.familyName }}</span>
|
||||
<input v-else v-model="v.familyName" />
|
||||
<span>{{ v.familyName }}</span>
|
||||
</td>
|
||||
|
||||
<td data-label="与学生关系">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.familyRelation }}</span>
|
||||
<input v-else v-model="v.familyRelation" />
|
||||
<span>{{ v.familyRelation }}</span>
|
||||
</td>
|
||||
<td data-label="年龄">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.age }}</span>
|
||||
<input v-else type="number" v-model="v.age" />
|
||||
<span>{{ v.age }}</span>
|
||||
</td>
|
||||
<!-- <td data-label="出生日期">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.birthday }}</span>
|
||||
<input v-else type="date" v-model="v.birthday" />
|
||||
</td> -->
|
||||
<td data-label="政治面貌">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.zzmm }}</span>
|
||||
<input v-else v-model="v.zzmm" />
|
||||
<span>{{ v.zzmm }}</span>
|
||||
</td>
|
||||
<td data-label="职业">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.job }}</span>
|
||||
<input v-else v-model="v.job" />
|
||||
<span>{{ v.job }}</span>
|
||||
</td>
|
||||
<td data-label="工作单位">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.workPlace }}</span>
|
||||
<input v-else v-model="v.workPlace" />
|
||||
<span>{{ v.workPlace }}</span>
|
||||
</td>
|
||||
<td data-label="年收入">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.yearMoney }}</span>
|
||||
<input type="number" v-else v-model="v.yearMoney" />
|
||||
<span>{{ v.yearMoney }}</span>
|
||||
</td>
|
||||
<td data-label="联系电话">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.phone }}</span>
|
||||
<input v-else v-model="v.phone" />
|
||||
<span>{{ v.phone }}</span>
|
||||
</td>
|
||||
<td data-label="健康情况">
|
||||
<span v-if="isEmpty(v.isEdit)">{{ v.health }}</span>
|
||||
<input v-else v-model="v.health" />
|
||||
<span>{{ v.health }}</span>
|
||||
</td>
|
||||
|
||||
<td data-label="操作">
|
||||
<el-button v-if="!isEmpty(v.isEdit)" @click="doEdit(v)" type="text" icon="el-icon-check">
|
||||
保存
|
||||
</el-button>
|
||||
<el-button v-if="isEmpty(v.isEdit)" :disabled="oneEdit" @click="willEdit(v)" type="text"
|
||||
icon="el-icon-edit">
|
||||
修改
|
||||
</el-button>
|
||||
|
||||
<el-button @click="doDelete(v)" type="text" icon="el-icon-delete">删除</el-button>
|
||||
<span>查看</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="addV">
|
||||
<td data-label="姓名">
|
||||
<input v-model="addForm.familyName" />
|
||||
</td>
|
||||
<td data-label="与学生关系">
|
||||
<input v-model="addForm.familyRelation" />
|
||||
</td>
|
||||
<td data-label="年龄">
|
||||
<input type="number" v-model="addForm.age" />
|
||||
</td>
|
||||
<!-- <td data-label="出生日期">
|
||||
<input type="date" v-model="addForm.birthday" />
|
||||
</td> -->
|
||||
<td data-label="政治面貌">
|
||||
<input v-model="addForm.zzmm" />
|
||||
</td>
|
||||
<td data-label="职业">
|
||||
<input v-model="addForm.job" />
|
||||
</td>
|
||||
<td data-label="工作单位">
|
||||
<input v-model="addForm.workPlace" />
|
||||
</td>
|
||||
<td data-label="年收入">
|
||||
<input type="number" v-model="addForm.yearMoney" />
|
||||
</td>
|
||||
<td data-label="联系电话">
|
||||
<input v-model="addForm.phone" />
|
||||
</td>
|
||||
<td data-label="健康情况">
|
||||
<input v-model="addForm.health" />
|
||||
</td>
|
||||
|
||||
<td data-label="操作">
|
||||
<el-button @click="doAdd" type="text" icon="el-icon-check">保存</el-button>
|
||||
<el-button @click="addV = false;" type="text" icon="el-icon-close">取消</el-button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="9" style="text-align: center;">
|
||||
<el-button @click="addV = true;" :disabled="addV" style="display: inline-block;" type="text"
|
||||
icon="el-icon-plus">新增一条</el-button>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getOwnFamilyFdy, addOwnFamilyFdy, deleteOwnFamilyFdy, editOwnFamilyFdy } from "@/api/stuCQS/basedata/member";
|
||||
import { getOwnFamilyFdy } from "@/api/stuCQS/basedata/member";
|
||||
import { fullLoading, isEmpty } from "@/api/helpFunc";
|
||||
import {
|
||||
getOwnInfo
|
||||
} from "@/api/stuCQS/basedata/student";
|
||||
|
||||
export default {
|
||||
name: "family-member",
|
||||
@@ -139,191 +76,20 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
isEmpty,
|
||||
family_list: [],
|
||||
|
||||
addV: false,
|
||||
|
||||
addForm: {
|
||||
|
||||
},
|
||||
editForm: {
|
||||
|
||||
},
|
||||
|
||||
oneEdit: false,
|
||||
ownPhone: null
|
||||
family_list: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.getOwnInfo();
|
||||
this.getOwnFamilyFdy(this.stuNo);
|
||||
},
|
||||
methods: {
|
||||
async getOwnInfo() {
|
||||
let res = await getOwnInfo();
|
||||
if (res.code == 200) {
|
||||
if (!isEmpty(res.data)) {
|
||||
let data = {
|
||||
...res.data
|
||||
};
|
||||
this.ownPhone = data.phone;
|
||||
}
|
||||
}
|
||||
},
|
||||
willEdit(v) {
|
||||
this.editForm = { ...v };
|
||||
v.isEdit = true;
|
||||
this.oneEdit = true;
|
||||
},
|
||||
async doEdit(v) {
|
||||
let sdata = { ...v };
|
||||
if (isEmpty(sdata.familyName)) {
|
||||
this.$message.info("请填写成员名称");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.age)) {
|
||||
this.$message.info("请填写成员年龄");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.familyRelation)) {
|
||||
this.$message.info("请填写与学生关系");
|
||||
return;
|
||||
}
|
||||
// if (isEmpty(sdata.birthday)) {
|
||||
// this.$message.info("请填写出生日期");
|
||||
// return;
|
||||
// }
|
||||
if (isEmpty(sdata.zzmm)) {
|
||||
this.$message.info("请填写政治面貌");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.job)) {
|
||||
this.$message.info("请填写职业");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.workPlace)) {
|
||||
this.$message.info("请填写工作单位");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.yearMoney)) {
|
||||
this.$message.info("请填写年收入");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEmpty(sdata.phone)) {
|
||||
this.$message.info("请填写联系方式");
|
||||
return;
|
||||
}
|
||||
|
||||
if (sdata.phone == this.ownPhone) {
|
||||
this.$message.info("不能填写本人电话");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEmpty(sdata.health)) {
|
||||
this.$message.info("请填写健康情况");
|
||||
return;
|
||||
}
|
||||
let loading = fullLoading(this);
|
||||
sdata.stuNo = this.stuNo;
|
||||
let res = await editOwnFamilyFdy(sdata);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.$message.success(res.msg);
|
||||
this.getOwnFamilyFdy(this.stuNo);
|
||||
}
|
||||
this.oneEdit = false;
|
||||
v.isEdit = undefined;
|
||||
},
|
||||
async doAdd() {
|
||||
let sdata = { ...this.addForm };
|
||||
if (isEmpty(sdata.familyName)) {
|
||||
this.$message.info("请填写成员名称");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.familyRelation)) {
|
||||
this.$message.info("请填写与学生关系");
|
||||
return;
|
||||
}
|
||||
// if (isEmpty(sdata.birthday)) {
|
||||
// this.$message.info("请填写出生日期");
|
||||
// return;
|
||||
// }
|
||||
if (isEmpty(sdata.zzmm)) {
|
||||
this.$message.info("请填写政治面貌");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.job)) {
|
||||
this.$message.info("请填写职业");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.workPlace)) {
|
||||
this.$message.info("请填写工作单位");
|
||||
return;
|
||||
}
|
||||
if (isEmpty(sdata.yearMoney)) {
|
||||
this.$message.info("请填写年收入");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEmpty(sdata.phone)) {
|
||||
this.$message.info("请填写联系方式");
|
||||
return;
|
||||
}
|
||||
|
||||
if (sdata.phone == this.ownPhone) {
|
||||
this.$message.info("不能填写本人电话");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEmpty(sdata.health)) {
|
||||
this.$message.info("请填写健康情况");
|
||||
return;
|
||||
}
|
||||
|
||||
let loading = fullLoading(this);
|
||||
sdata.stuNo = this.stuNo;
|
||||
let res = await addOwnFamilyFdy(sdata);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.addForm = {};
|
||||
this.$message.success(res.msg);
|
||||
this.getOwnFamilyFdy(this.stuNo);
|
||||
}
|
||||
this.addV = false;
|
||||
},
|
||||
|
||||
async getOwnFamilyFdy(stuNo) {
|
||||
let loading = fullLoading(this);
|
||||
let res = await getOwnFamilyFdy(stuNo);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.family_list = [...res.data];
|
||||
}
|
||||
},
|
||||
|
||||
async doDelete(val) {
|
||||
let id = val.id;
|
||||
|
||||
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
let loading = fullLoading(this);
|
||||
let res = await deleteOwnFamilyFdy(id,this.stuNo);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
});
|
||||
this.getOwnFamilyFdy(this.stuNo);
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -35,7 +35,7 @@
|
||||
scope.row.roomNo + "(" + scope.row.gender + ")" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分配班级" align="center" prop="className" />
|
||||
<!-- <el-table-column label="分配班级" align="center" prop="className" /> -->
|
||||
<el-table-column label="宿舍床位数量" align="center" prop="bedNum" />
|
||||
<el-table-column label="分配到的床位数量" align="center" prop="bedCount" />
|
||||
<el-table-column label="是否开放给新生宿舍确认" align="center">
|
||||
|
@@ -2,8 +2,25 @@
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="宿舍号" prop="dormitoryNumber">
|
||||
<el-input v-model="queryParams.dormitoryNumber" placeholder="请输入宿舍号" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
<el-select
|
||||
v-model="queryParams.dormitoryId"
|
||||
placeholder="请选择宿舍"
|
||||
filterable
|
||||
remote
|
||||
:remote-method="searchQueryDormitories"
|
||||
:loading="queryDormLoading"
|
||||
clearable
|
||||
@change="handleQueryDormitoryChange"
|
||||
style="width: 200px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dorm in queryDormitoryOptions"
|
||||
:key="dorm.id"
|
||||
:label="dorm.dorm_name"
|
||||
:value="dorm.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="查寝时间" prop="checkDate">
|
||||
<el-date-picker clearable v-model="queryParams.checkDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
|
||||
@@ -63,14 +80,31 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
|
||||
|
||||
<!-- 添加或修改查寝管理对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="宿舍号">
|
||||
<DormSelect v-model="form.dormitoryId" />
|
||||
<el-form-item label="宿舍号" prop="dormitoryId">
|
||||
<el-select
|
||||
v-model="form.dormitoryId"
|
||||
placeholder="请选择宿舍"
|
||||
filterable
|
||||
remote
|
||||
:remote-method="searchDormitories"
|
||||
:loading="dormLoading"
|
||||
clearable
|
||||
@change="handleDormitoryChange"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="dorm in dormitoryOptions"
|
||||
:key="dorm.id"
|
||||
:label="dorm.dorm_name"
|
||||
:value="dorm.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="查寝图片" prop="checkImage">
|
||||
<image-upload v-model="form.checkImage" />
|
||||
@@ -96,15 +130,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addDormitoryCheck, delDormitoryCheck, getDormitoryCheck, listDormitoryCheck, updateDormitoryCheck, sendMail } from "@/api/dormitory/dmsDormitoryCheck/dormitoryCheck";
|
||||
import DormSelect from "@/views/components/DormSelect.vue";
|
||||
import { addDormitoryCheck, delDormitoryCheck, getDormitoryCheck, listDormitoryCheck, updateDormitoryCheck, sendMail, listDorm } from "@/api/dormitory/dmsDormitoryCheck/dormitoryCheck";
|
||||
import { fullLoading } from "@/api/helpFunc";
|
||||
|
||||
export default {
|
||||
name: "DormitoryCheck",
|
||||
components: {
|
||||
DormSelect
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
@@ -127,15 +157,22 @@ export default {
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
dormitoryId: null,
|
||||
dormitoryNumber: null,
|
||||
checkImage: null,
|
||||
checkResult: null,
|
||||
checkDate: null,
|
||||
},
|
||||
// 查询宿舍选项列表
|
||||
queryDormitoryOptions: [],
|
||||
// 查询宿舍搜索加载状态
|
||||
queryDormLoading: false,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 宿舍选项列表
|
||||
dormitoryOptions: [],
|
||||
// 宿舍搜索加载状态
|
||||
dormLoading: false,
|
||||
// 表单校验
|
||||
rules: {
|
||||
dormitoryId: [
|
||||
@@ -193,15 +230,16 @@ export default {
|
||||
updateTime: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
this.dormitoryOptions = [];
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.queryDormitoryOptions = [];
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
@@ -219,10 +257,20 @@ export default {
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const checkId = row.checkId || this.ids
|
||||
const checkId = row.checkId || this.ids;
|
||||
|
||||
getDormitoryCheck(checkId).then(response => {
|
||||
console.log('获取到的数据:', response.data);
|
||||
this.form = response.data;
|
||||
console.log(this.form);
|
||||
|
||||
// 如果有宿舍信息,添加到选项中
|
||||
if (this.form.dormitoryId && this.form.dormitoryNumber) {
|
||||
this.dormitoryOptions = [{
|
||||
id: this.form.dormitoryId,
|
||||
dorm_name: this.form.dormitoryNumber
|
||||
}];
|
||||
}
|
||||
|
||||
this.open = true;
|
||||
this.title = "修改查寝管理";
|
||||
});
|
||||
@@ -262,7 +310,211 @@ export default {
|
||||
this.download('dmsDormitoryCheck/dormitoryCheck/export', {
|
||||
...this.queryParams
|
||||
}, `dormitoryCheck_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
},
|
||||
/** 搜索宿舍 */
|
||||
searchDormitories(query) {
|
||||
if (query !== '') {
|
||||
this.dormLoading = true;
|
||||
|
||||
// 智能搜索:支持多种搜索方式的并行查询
|
||||
const searchPromises = [];
|
||||
|
||||
// 1. 如果包含数字,尝试房间号搜索
|
||||
if (/\d/.test(query)) {
|
||||
const roomMatch = query.match(/\d+/);
|
||||
if (roomMatch) {
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, roomNo: roomMatch[0] })
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 尝试楼栋名称搜索
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, buildingName: query })
|
||||
);
|
||||
|
||||
// 3. 尝试园区名称搜索
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, parkName: query })
|
||||
);
|
||||
|
||||
// 4. 如果查询长度较长,可能是完整的宿舍名称,尝试分解搜索
|
||||
if (query.length > 2) {
|
||||
// 尝试提取可能的园区和楼栋信息
|
||||
const letterPart = query.match(/[A-Za-z\u4e00-\u9fa5]+/);
|
||||
const numberPart = query.match(/\d+/);
|
||||
|
||||
if (letterPart && numberPart) {
|
||||
// 同时搜索包含字母部分的楼栋和数字部分的房间号
|
||||
searchPromises.push(
|
||||
listDorm({
|
||||
pageNum: 1,
|
||||
pageSize: 50,
|
||||
buildingName: letterPart[0],
|
||||
roomNo: numberPart[0]
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行所有搜索并合并结果
|
||||
Promise.allSettled(searchPromises).then(results => {
|
||||
let allDormitories = [];
|
||||
const seenIds = new Set();
|
||||
|
||||
results.forEach(result => {
|
||||
if (result.status === 'fulfilled' && result.value.rows) {
|
||||
result.value.rows.forEach(dorm => {
|
||||
if (!seenIds.has(dorm.id)) {
|
||||
seenIds.add(dorm.id);
|
||||
allDormitories.push(dorm);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 按相关性排序:优先显示包含查询字符串的结果
|
||||
allDormitories.sort((a, b) => {
|
||||
const aName = a.dorm_name.toLowerCase();
|
||||
const bName = b.dorm_name.toLowerCase();
|
||||
const queryLower = query.toLowerCase();
|
||||
|
||||
const aIncludes = aName.includes(queryLower);
|
||||
const bIncludes = bName.includes(queryLower);
|
||||
|
||||
if (aIncludes && !bIncludes) return -1;
|
||||
if (!aIncludes && bIncludes) return 1;
|
||||
return aName.localeCompare(bName);
|
||||
});
|
||||
|
||||
this.dormitoryOptions = allDormitories.slice(0, 20); // 限制显示数量
|
||||
this.dormLoading = false;
|
||||
}).catch(() => {
|
||||
this.dormLoading = false;
|
||||
});
|
||||
} else {
|
||||
this.dormitoryOptions = [];
|
||||
}
|
||||
},
|
||||
/** 处理宿舍选择变化 */
|
||||
handleDormitoryChange(dormitoryId) {
|
||||
if (dormitoryId) {
|
||||
const selectedDorm = this.dormitoryOptions.find(dorm => dorm.id === dormitoryId);
|
||||
if (selectedDorm) {
|
||||
this.form.dormitoryNumber = selectedDorm.dorm_name;
|
||||
console.log('选择宿舍:', {
|
||||
dormitoryId: dormitoryId,
|
||||
dormitoryNumber: selectedDorm.dorm_name
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.form.dormitoryNumber = null;
|
||||
}
|
||||
},
|
||||
/** 搜索查询宿舍 */
|
||||
searchQueryDormitories(query) {
|
||||
if (query !== '') {
|
||||
this.queryDormLoading = true;
|
||||
|
||||
// 智能搜索:支持多种搜索方式的并行查询
|
||||
const searchPromises = [];
|
||||
|
||||
// 1. 如果包含数字,尝试房间号搜索
|
||||
if (/\d/.test(query)) {
|
||||
const roomMatch = query.match(/\d+/);
|
||||
if (roomMatch) {
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, roomNo: roomMatch[0] })
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 尝试楼栋名称搜索
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, buildingName: query })
|
||||
);
|
||||
|
||||
// 3. 尝试园区名称搜索
|
||||
searchPromises.push(
|
||||
listDorm({ pageNum: 1, pageSize: 50, parkName: query })
|
||||
);
|
||||
|
||||
// 4. 如果查询长度较长,可能是完整的宿舍名称,尝试分解搜索
|
||||
if (query.length > 2) {
|
||||
// 尝试提取可能的园区和楼栋信息
|
||||
const letterPart = query.match(/[A-Za-z\u4e00-\u9fa5]+/);
|
||||
const numberPart = query.match(/\d+/);
|
||||
|
||||
if (letterPart && numberPart) {
|
||||
// 同时搜索包含字母部分的楼栋和数字部分的房间号
|
||||
searchPromises.push(
|
||||
listDorm({
|
||||
pageNum: 1,
|
||||
pageSize: 50,
|
||||
buildingName: letterPart[0],
|
||||
roomNo: numberPart[0]
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行所有搜索并合并结果
|
||||
Promise.allSettled(searchPromises).then(results => {
|
||||
let allDormitories = [];
|
||||
const seenIds = new Set();
|
||||
|
||||
results.forEach(result => {
|
||||
if (result.status === 'fulfilled' && result.value.rows) {
|
||||
result.value.rows.forEach(dorm => {
|
||||
if (!seenIds.has(dorm.id)) {
|
||||
seenIds.add(dorm.id);
|
||||
allDormitories.push(dorm);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 按相关性排序:优先显示包含查询字符串的结果
|
||||
allDormitories.sort((a, b) => {
|
||||
const aName = a.dorm_name.toLowerCase();
|
||||
const bName = b.dorm_name.toLowerCase();
|
||||
const queryLower = query.toLowerCase();
|
||||
|
||||
const aIncludes = aName.includes(queryLower);
|
||||
const bIncludes = bName.includes(queryLower);
|
||||
|
||||
if (aIncludes && !bIncludes) return -1;
|
||||
if (!aIncludes && bIncludes) return 1;
|
||||
return aName.localeCompare(bName);
|
||||
});
|
||||
|
||||
this.queryDormitoryOptions = allDormitories.slice(0, 20); // 限制显示数量
|
||||
this.queryDormLoading = false;
|
||||
}).catch(() => {
|
||||
this.queryDormLoading = false;
|
||||
});
|
||||
} else {
|
||||
this.queryDormitoryOptions = [];
|
||||
}
|
||||
},
|
||||
/** 处理查询宿舍选择变化 */
|
||||
handleQueryDormitoryChange(dormitoryId) {
|
||||
if (dormitoryId) {
|
||||
const selectedDorm = this.queryDormitoryOptions.find(dorm => dorm.id === dormitoryId);
|
||||
if (selectedDorm) {
|
||||
this.queryParams.dormitoryNumber = selectedDorm.dorm_name;
|
||||
console.log('查询选择宿舍:', {
|
||||
dormitoryId: dormitoryId,
|
||||
dormitoryNumber: selectedDorm.dorm_name
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.queryParams.dormitoryNumber = null;
|
||||
}
|
||||
},
|
||||
/** 宿舍列表查询方法 */
|
||||
listDorm
|
||||
}
|
||||
};
|
||||
</script>
|
@@ -248,7 +248,6 @@ export default {
|
||||
console.log("procInsId",procInsId)
|
||||
getDisciplinaryApplicationByProcInsId(procInsId).then((response) => {
|
||||
this.form = response.data
|
||||
console.log("数据",this.form)
|
||||
this.form.penaltyType = this.form.penaltyType.toString()
|
||||
this.getStuInfo(this.form.stuNo)
|
||||
})
|
||||
|
@@ -274,7 +274,6 @@ export default {
|
||||
getRtStuDropOutSchool(dropOutSchoolId) {
|
||||
getRtStuDropOutSchool(dropOutSchoolId).then((response) => {
|
||||
this.form = response.data
|
||||
this.form.penaltyType = this.form.penaltyType.toString()
|
||||
})
|
||||
},
|
||||
// 类别
|
||||
|
@@ -285,7 +285,6 @@ export default {
|
||||
getRtStuQuitSchool(quitSchoolId) {
|
||||
getRtStuQuitSchool(quitSchoolId).then((response) => {
|
||||
this.form = response.data
|
||||
this.form.penaltyType = this.form.penaltyType.toString()
|
||||
})
|
||||
},
|
||||
reentryYearMethodFormat(row, column) {
|
||||
|
@@ -262,7 +262,6 @@ export default {
|
||||
getRtStuReentrySchool(reentryId) {
|
||||
getRtStuReentrySchool(reentryId).then((response) => {
|
||||
this.form = response.data
|
||||
this.form.penaltyType = this.form.penaltyType.toString()
|
||||
})
|
||||
},
|
||||
getRtStuReentrySchoolByProcInsId(procInsId) {
|
||||
|
@@ -182,7 +182,7 @@ import { listAllStuYear } from "@/api/stuCQS/info-fill/score";
|
||||
import * as XLSX from 'xlsx';
|
||||
import { workbook2blob, openDownloadDialog, file2Xce } from "@/api/helpFunc";
|
||||
import { treeStudent, listEnableStu } from "@/api/stuCQS/basedata/student";
|
||||
import { isEmpty } from "@/api/helpFunc";
|
||||
import { isEmpty,fullLoading } from "@/api/helpFunc";
|
||||
import { listAllYear as listYear } from "@/api/stuCQS/basedata/year";
|
||||
|
||||
import { listEnableYear } from "@/api/stuCQS/basedata/year";
|
||||
@@ -399,7 +399,9 @@ export default {
|
||||
});
|
||||
let jsonStr = JSON.stringify(sdata);
|
||||
|
||||
let loading = fullLoading(this);
|
||||
let res = await importExcel(jsonStr);
|
||||
loading.close();
|
||||
this.loading = false;
|
||||
this.$message(res.msg);
|
||||
this.getList();
|
||||
|
183
src/views/stuCQS/teacher-evaluation-status/index.vue
Normal file
183
src/views/stuCQS/teacher-evaluation-status/index.vue
Normal file
@@ -0,0 +1,183 @@
|
||||
<template>
|
||||
<div class="app-container" v-loading.fullscreen.lock="fullLoading">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" clearable @keyup.enter.native="handleQuery">
|
||||
<el-option v-for="(dept, index) in deptList" :key="index" :label="dept.label" :value="dept.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="辅导员姓名" prop="teacherName">
|
||||
<el-input v-model="queryParams.teacherName" placeholder="请输入辅导员姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工号" prop="employeeId">
|
||||
<el-input v-model="queryParams.employeeId" placeholder="请输入工号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable @keyup.enter.native="handleQuery">
|
||||
<el-option v-for="year in yearList" :key="year.id" :label="year.stuYearName" :value="year.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<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-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="teacherStatusList">
|
||||
<el-table-column label="学院" align="center" prop="deptName" width="150" />
|
||||
<el-table-column label="辅导员姓名" align="center" prop="teacherName" width="120" />
|
||||
<el-table-column label="工号" align="center" prop="employeeId" width="120" />
|
||||
<el-table-column label="学年" align="center" prop="stuYearName" width="120" />
|
||||
<el-table-column label="是否完成综合测评" align="center" prop="isCompleted" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.isCompleted ? 'success' : 'danger'">
|
||||
{{ scope.row.isCompleted ? '已完成' : '未完成' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="待办事项数量" align="center" prop="todoCount" width="120" />
|
||||
<el-table-column label="成绩导入状态" align="center" prop="scoreImported" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.scoreImported ? 'success' : 'warning'">
|
||||
{{ scope.row.scoreImported ? '已导入' : '未导入' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remarks" />
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getTeacherEvaluationStatus, exportTeacherEvaluationStatus, getDeptNameList } from "@/api/stuCQS/teacher-evaluation-status";
|
||||
import { listAllYear } from "@/api/stuCQS/basedata/year";
|
||||
import { fullLoading } from "@/api/helpFunc";
|
||||
|
||||
export default {
|
||||
name: "TeacherEvaluationStatus",
|
||||
data() {
|
||||
return {
|
||||
fullLoading: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 辅导员评价状态表格数据
|
||||
teacherStatusList: [],
|
||||
// 学院列表
|
||||
deptList: [],
|
||||
// 学年列表
|
||||
yearList: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 50,
|
||||
deptId: null,
|
||||
teacherName: null,
|
||||
employeeId: null,
|
||||
stuYearId: null
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.getDeptList();
|
||||
this.getYearList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询辅导员评价状态列表 */
|
||||
async getList() {
|
||||
this.loading = true;
|
||||
try {
|
||||
const response = await getTeacherEvaluationStatus(this.queryParams);
|
||||
this.teacherStatusList = response.rows;
|
||||
this.total = response.total;
|
||||
} catch (error) {
|
||||
this.$modal.msgError("查询失败");
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
/** 获取学院列表 */
|
||||
async getDeptList() {
|
||||
try {
|
||||
const response = await getDeptNameList({});
|
||||
console.log("学院数据响应:", response);
|
||||
this.deptList = response.data;
|
||||
} catch (error) {
|
||||
console.error("获取学院列表失败", error);
|
||||
}
|
||||
},
|
||||
/** 获取学年列表 */
|
||||
async getYearList() {
|
||||
try {
|
||||
const response = await listAllYear();
|
||||
if (response.code === 200) {
|
||||
this.yearList = response.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("获取学年列表失败", error);
|
||||
}
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
async handleExport() {
|
||||
try {
|
||||
const loading = fullLoading(this);
|
||||
await exportTeacherEvaluationStatus(this.queryParams);
|
||||
this.$modal.msgSuccess("导出成功");
|
||||
} catch (error) {
|
||||
this.$modal.msgError("导出失败");
|
||||
} finally {
|
||||
this.fullLoading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.el-table {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.el-form-item label {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.el-input input {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.el-select .el-input input {
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
@@ -35,6 +35,22 @@
|
||||
<el-option label="是" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否抽烟" prop="isSmoke">
|
||||
<el-select v-model="queryParams.isSmoke" placeholder="是否抽烟" clearable>
|
||||
<el-option label="否" value="0"></el-option>
|
||||
<el-option label="是" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否早睡" prop="isSleep">
|
||||
<el-select v-model="queryParams.isSleep" placeholder="是否早睡" clearable>
|
||||
<el-option label="否" value="0"></el-option>
|
||||
<el-option label="是" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item>
|
||||
<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>
|
||||
@@ -96,6 +112,17 @@
|
||||
<div>{{scope.row.isDirection=='1'?'是':'否'}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否抽烟" align="center" prop="isSmoke" >
|
||||
<template slot-scope="scope">
|
||||
<div>{{scope.row.isSmoke=='1'?'是':'否'}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否早睡" align="center" prop="isSleep" >
|
||||
<template slot-scope="scope">
|
||||
<div>{{scope.row.isSleep=='1'?'是':'否'}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="兴趣特长" align="center" prop="hobby" width="180" />
|
||||
<el-table-column label="退役复学" align="center" prop="isRetired" width="180" />
|
||||
<el-table-column label="建档立卡户" align="center" prop="isFiling" width="180" />
|
||||
<el-table-column label="是否残疾" align="center" prop="isDisability" width="180" />
|
||||
|
@@ -47,6 +47,11 @@
|
||||
<dict-tag :options="dict.type.srs_stu_reg_status" :value="scope.row.regStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-view" @click="viewStudentDetail(scope.row)">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||
@@ -66,6 +71,143 @@
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 学生详情弹窗 -->
|
||||
<el-dialog title="学生详情" :visible.sync="studentDetailVisible" width="80%" :close-on-click-modal="false">
|
||||
<el-tabs v-model="activeTab">
|
||||
<el-tab-pane label="基本信息" name="basic">
|
||||
<el-form size="mini" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学院">
|
||||
<el-input v-model="studentDetail.deptName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="专业">
|
||||
<el-input v-model="studentDetail.majorName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="班级">
|
||||
<el-input v-model="studentDetail.className" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学号">
|
||||
<el-input v-model="studentDetail.stuNo" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="studentDetail.stuName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性别">
|
||||
<el-input v-model="studentDetail.xb" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="考生号">
|
||||
<el-input v-model="studentDetail.ksh" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
<el-input v-model="studentDetail.idCard" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="手机号">
|
||||
<el-input v-model="studentDetail.phone" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="年级">
|
||||
<el-input v-model="studentDetail.gradeName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="辅导员">
|
||||
<el-input v-model="studentDetail.teacherName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="注册状态">
|
||||
<el-input v-model="studentDetail.regStatus" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="详细信息" name="detail">
|
||||
<el-form size="mini" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出生日期">
|
||||
<el-input v-model="studentDetail.birthday" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="民族">
|
||||
<el-input v-model="studentDetail.mz" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="政治面貌">
|
||||
<el-input v-model="studentDetail.zzmm" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="血型">
|
||||
<el-input v-model="studentDetail.xx" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="籍贯">
|
||||
<el-input v-model="studentDetail.jg" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口性质">
|
||||
<el-input v-model="studentDetail.hkxz" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在地">
|
||||
<el-input v-model="studentDetail.hkszd" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="银行卡号">
|
||||
<el-input v-model="studentDetail.yhkh" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="银行地址">
|
||||
<el-input v-model="studentDetail.yhdz" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="家庭成员" name="family">
|
||||
<FamilyMemberKnrd :stuNo="studentDetail.ksh || studentDetail.xh || studentDetail.stuNo" v-if="studentDetail.ksh || studentDetail.xh || studentDetail.stuNo" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="教育经历" name="education">
|
||||
<EduExpKnrd :stuNo="studentDetail.ksh || studentDetail.xh || studentDetail.stuNo" v-if="studentDetail.ksh || studentDetail.xh || studentDetail.stuNo" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -73,12 +215,22 @@ import { listFdy } from "@/api/stureg/stu";
|
||||
|
||||
import { listStuTodo } from "@/api/stureg/stu_todo";
|
||||
|
||||
import { getStuInfo } from "@/api/stuCQS/basedata/stuInfoView";
|
||||
import { getExtraInfo } from "@/api/stuCQS/basedata/extraInfo";
|
||||
|
||||
import { workbook2blob, openDownloadDialog, dbfToJson, isEmpty, fullLoading } from "@/api/helpFunc";
|
||||
|
||||
import FamilyMemberKnrd from "@/views/basedata/private/components/FamilyMemberKnrd.vue";
|
||||
import EduExpKnrd from "@/views/basedata/private/components/EduExpKnrd.vue";
|
||||
|
||||
|
||||
export default {
|
||||
name: "reg-stu-fdy",
|
||||
dicts: ['srs_stu_reg_status', 'srs_remain_status'],
|
||||
components: {
|
||||
FamilyMemberKnrd,
|
||||
EduExpKnrd
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
stu_list: [],
|
||||
@@ -91,7 +243,12 @@ export default {
|
||||
loading: false,
|
||||
|
||||
taskV: false,
|
||||
task_list: []
|
||||
task_list: [],
|
||||
|
||||
// 学生详情相关
|
||||
studentDetailVisible: false,
|
||||
activeTab: 'basic',
|
||||
studentDetail: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -126,6 +283,46 @@ export default {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
|
||||
/** 查看学生详情 */
|
||||
async viewStudentDetail(row) {
|
||||
let loading = fullLoading(this);
|
||||
try {
|
||||
// 使用考生号或学号获取基本信息
|
||||
let stuNo = row.ksh || row.xh || row.stuNo;
|
||||
if (!stuNo) {
|
||||
this.$message.error('无法获取学生学号信息');
|
||||
loading.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取基本信息
|
||||
let basicRes = await getStuInfo(stuNo);
|
||||
|
||||
loading.close();
|
||||
|
||||
if (basicRes.code == 200) {
|
||||
// 合并基本信息和当前行数据
|
||||
this.studentDetail = {
|
||||
...row,
|
||||
...basicRes.data,
|
||||
// 映射字段名称
|
||||
stuName: row.xsxm || basicRes.data.stuName,
|
||||
ksh: row.ksh || basicRes.data.ksh,
|
||||
xb: row.xb || basicRes.data.xb
|
||||
};
|
||||
|
||||
this.activeTab = 'basic';
|
||||
this.studentDetailVisible = true;
|
||||
} else {
|
||||
this.$message.error('获取学生详情失败: ' + (basicRes.msg || '未知错误'));
|
||||
}
|
||||
} catch (error) {
|
||||
loading.close();
|
||||
console.error('获取学生详情出错:', error);
|
||||
this.$message.error('获取学生详情失败');
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
|
100
src/views/stureg/temp/index.vue
Normal file
100
src/views/stureg/temp/index.vue
Normal file
@@ -0,0 +1,100 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="140px">
|
||||
<el-form-item label="临时学号" prop="临时学号报到后给新的">
|
||||
<el-input v-model="queryParams.临时学号报到后给新的" placeholder="请输入临时学号" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="教务系统班级编号" prop="教务系统班级编号">
|
||||
<el-input v-model="queryParams.教务系统班级编号" placeholder="请输入教务系统班级编号" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<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-sort" size="mini" @click="syncClassCode">同步班级代码到新生信息</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table :data="tableData" border style="width: 100%"
|
||||
:header-cell-style="{ background: '#f5f7fa', fontWeight: 'bold' }">
|
||||
<el-table-column prop="临时学号报到后给新的" label="临时学号(报到后给新的)" width="180"></el-table-column>
|
||||
<el-table-column prop="姓名" label="姓名" width="120"></el-table-column>
|
||||
<el-table-column prop="性别" label="性别" width="80"></el-table-column>
|
||||
<el-table-column prop="出生日期字符串" label="出生日期" width="140"></el-table-column>
|
||||
<el-table-column prop="民族代码" label="民族代码" width="120"></el-table-column>
|
||||
<el-table-column prop="民族名称" label="民族名称" width="120"></el-table-column>
|
||||
<el-table-column prop="政治面貌代码" label="政治面貌代码" width="140"></el-table-column>
|
||||
<el-table-column prop="政治面貌名称" label="政治面貌名称" width="140"></el-table-column>
|
||||
<el-table-column prop="教务系统所属院系" label="所属院系" width="160"></el-table-column>
|
||||
<el-table-column prop="教务系统年度专业代码" label="年度专业代码" width="160"></el-table-column>
|
||||
<el-table-column prop="教务系统专业名称" label="专业名称" width="160"></el-table-column>
|
||||
<el-table-column prop="教务系统班级编号" label="班级编号" width="140"></el-table-column>
|
||||
<el-table-column prop="班级名称" label="班级名称" width="180"></el-table-column>
|
||||
<el-table-column prop="班级简称" label="班级简称" width="100"></el-table-column>
|
||||
<el-table-column prop="是否报到核验" label="是否报到核验" width="140"></el-table-column>
|
||||
<el-table-column prop="报到核验时间" label="报到核验时间" width="160"></el-table-column>
|
||||
<el-table-column prop="学号" label="学号" width="140"></el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { listXsxxTemp, syncClassCode } from "@/api/stureg/temp";
|
||||
import { fullLoading } from "@/api/helpFunc/index";
|
||||
|
||||
export default {
|
||||
name: "Temp",
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
tableData: [],
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
mounted() { },
|
||||
methods: {
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
async getList() {
|
||||
let loading = fullLoading(this);
|
||||
let res = await listXsxxTemp(this.queryParams);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.tableData = [...res.rows];
|
||||
this.total = res.total;
|
||||
}
|
||||
},
|
||||
|
||||
async syncClassCode() {
|
||||
let loading = fullLoading(this);
|
||||
let res = await syncClassCode();
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.$message.success("同步成功");
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
</script>
|
@@ -36,7 +36,7 @@ module.exports = {
|
||||
// detail: https://cli.vuejs.org/config/#devserver-proxy `http://124.70.202.11:8085` https://wap.wzzyhp.com
|
||||
[process.env.VUE_APP_BASE_API]: {
|
||||
// target: 'http://172.16.96.111:8585', //`http://zhxg.gxsdxy.cn`,`https://wap.wzzyhp.com`, http://localhost:8085 http://zhxgjava.gxsdxy.cn
|
||||
target: 'http://localhost:8088',// `http://zhxg.gxsdxy.cn`,`https://wap.wzzyhp.com`, http://localhost:8085 http://zhxgjava.gxsdxy.cn
|
||||
target: 'http://localhost:8085',// `http://zhxg.gxsdxy.cn`,`https://wap.wzzyhp.com`, http://localhost:8085 http://zhxgjava.gxsdxy.cn
|
||||
//target:`http://zhxg.gxsdxy.cn`,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
|
Reference in New Issue
Block a user