Compare commits

..

No commits in common. "4da6835f404c9e423fba93ec82849031c702ea92" and "e7e5481d6b1789649ec612743d8a672523e04448" have entirely different histories.

2 changed files with 76 additions and 58 deletions

View File

@ -28,7 +28,12 @@
</el-form-item> --> </el-form-item> -->
<el-form-item v-show="search.userType === 1" style="width: 100px"> <el-form-item v-show="search.userType === 1" style="width: 100px">
<el-select v-model="search.level" placeholder="学生层次" clearable filterable> <el-select
v-model="search.level"
placeholder="学生层次"
clearable
filterable
>
<el-option <el-option
v-for="item in userLevelList" v-for="item in userLevelList"
:key="item.value" :key="item.value"
@ -73,7 +78,12 @@
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 100px"> <el-form-item v-show="search.schoolId" style="width: 100px">
<el-select v-model="search.classId" placeholder="班级" clearable filterable> <el-select
v-model="search.classId"
placeholder="班级"
clearable
filterable
>
<el-option <el-option
v-for="item in classList" v-for="item in classList"
:key="item.value" :key="item.value"
@ -84,7 +94,12 @@
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 100px"> <el-form-item v-show="search.schoolId" style="width: 100px">
<el-select v-model="search.subjectId" placeholder="科目" clearable filterable> <el-select
v-model="search.subjectId"
placeholder="科目"
clearable
filterable
>
<el-option <el-option
v-for="item in subjectList" v-for="item in subjectList"
:key="item.value" :key="item.value"
@ -101,7 +116,10 @@
<el-button type="default" @click="searchReload">重置</el-button> <el-button type="default" @click="searchReload">重置</el-button>
</el-form-item> </el-form-item>
<el-form-item v-show="selectUser"> <el-form-item v-show="selectUser">
<el-button type="success" icon="el-icon-check" @click="selectUserCallBack()" <el-button
type="success"
icon="el-icon-check"
@click="selectUserCallBack()"
>选择用户</el-button >选择用户</el-button
> >
</el-form-item> </el-form-item>
@ -142,9 +160,13 @@
<el-table-column prop="id" label="用户Id" width="100" /> <el-table-column prop="id" label="用户Id" width="100" />
<el-table-column label="用户信息" width="200"> <el-table-column label="用户信息" width="200">
<template #default="scope"> <template #default="scope">
<el-tag :type="getUserTypeTag(scope.row.userType)" style="margin-right: 5px">{{ <el-tag
userTypeList.find((s) => s.value == scope.row.userType)?.text :type="getUserTypeTag(scope.row.userType)"
}}</el-tag> style="margin-right: 5px"
>{{
userTypeList.find(s => s.value == scope.row.userType)?.text
}}</el-tag
>
<span>{{ scope.row.realName }} </span> <span>{{ scope.row.realName }} </span>
</template> </template>
</el-table-column> </el-table-column>
@ -161,7 +183,9 @@
<template #default="scope"> <template #default="scope">
<div <div
v-for="(position, index) in scope.row.positions" v-for="(position, index) in scope.row.positions"
v-show="index < 3 || (index >= 3 && showAllPosition.includes(scope.row))" v-show="
index < 3 || (index >= 3 && showAllPosition.includes(scope.row))
"
:key="'Position' + index" :key="'Position' + index"
> >
<div class="subjectTagEnableDiv"> <div class="subjectTagEnableDiv">
@ -181,7 +205,9 @@
</div> </div>
</div> </div>
<div <div
v-if="scope.row.positions != undefined && scope.row.positions.length > 3" v-if="
scope.row.positions != undefined && scope.row.positions.length > 3
"
class="userTagRow" class="userTagRow"
@click="showPosition(scope.row)" @click="showPosition(scope.row)"
> >
@ -235,7 +261,7 @@ import {
getSubjectData, getSubjectData,
getPageUserList, getPageUserList,
UserDetail, UserDetail,
Position, Position
} from "@/api/userCenter"; } from "@/api/userCenter";
import { getenum } from "@/api/enum"; import { getenum } from "@/api/enum";
import { hTableAPI } from "@/api/hTable"; import { hTableAPI } from "@/api/hTable";
@ -248,7 +274,7 @@ import {
ArrowDownBold, ArrowDownBold,
Search, Search,
Star, Star,
Phone, Phone
} from "@element-plus/icons-vue"; } from "@element-plus/icons-vue";
import { ComboModel, gradeComboModel } from "@/components/hTable/hTable"; import { ComboModel, gradeComboModel } from "@/components/hTable/hTable";
import { ImportTeacher } from "@/api/student"; import { ImportTeacher } from "@/api/student";
@ -319,20 +345,20 @@ interface DialogData {
const props = defineProps({ const props = defineProps({
selectUser: { selectUser: {
type: Boolean, type: Boolean,
default: false, default: false
}, },
selectCallBack: { selectCallBack: {
type: Function, type: Function,
default: () => {}, default: () => {}
}, },
maxTableHeight: { maxTableHeight: {
type: Number, type: Number,
default: 580, default: 580
}, },
searchData: { searchData: {
type: Object as () => SearchParams, type: Object as () => SearchParams,
default: undefined, default: undefined
}, }
}); });
const baseUrl = import.meta.env.VITE_API_USERCENTER_URL; const baseUrl = import.meta.env.VITE_API_USERCENTER_URL;
@ -355,13 +381,13 @@ const search = reactive<SearchParams>({
grade: "", grade: "",
classId: "", classId: "",
subjectId: "", subjectId: "",
positionId: "", positionId: ""
}); });
const userTypeList = ref<ComboModel[]>([ const userTypeList = ref<ComboModel[]>([
{ value: 1, text: "学生" }, { value: 1, text: "学生" },
{ value: 2, text: "教师" }, { value: 2, text: "教师" },
{ value: 3, text: "管理员" }, { value: 3, text: "管理员" }
]); ]);
const userLevelList = ref<ComboModel[]>([]); const userLevelList = ref<ComboModel[]>([]);
@ -376,13 +402,13 @@ const table = reactive<TableData>({
data: [], data: [],
selectRows: [], selectRows: [],
sort: "", sort: "",
border: true, border: true
}); });
const pagination = reactive<PaginationData>({ const pagination = reactive<PaginationData>({
index: 1, index: 1,
size: 10, size: 10,
total: 0, total: 0
}); });
const dialog = reactive<DialogData>({ const dialog = reactive<DialogData>({
@ -390,32 +416,32 @@ const dialog = reactive<DialogData>({
update: { update: {
title: "", title: "",
visible: false, visible: false,
width: "1000px", width: "1000px"
}, },
editLevel: { editLevel: {
userIds: [], userIds: [],
title: "", title: "",
visible: false, visible: false,
width: "400px", width: "400px"
}, },
editSubjectLevel: { editSubjectLevel: {
userIds: [], userIds: [],
title: "", title: "",
visible: false, visible: false,
width: "450px", width: "450px"
}, },
bindUser: { bindUser: {
title: "分配权限码", title: "分配权限码",
visible: false, visible: false,
width: "1150px", width: "1150px",
height: "", height: ""
}, },
userBindInfo: { userBindInfo: {
title: "用户权限码", title: "用户权限码",
visible: false, visible: false,
width: "1150px", width: "1150px",
height: "", height: ""
}, }
}); });
const checkUserBindInfo = () => { const checkUserBindInfo = () => {
@ -478,7 +504,7 @@ const exportUser = async () => {
SubjectId: search.subjectId || 0, SubjectId: search.subjectId || 0,
PositionId: search.positionId || 0, PositionId: search.positionId || 0,
PageIndex: pagination.index, PageIndex: pagination.index,
PageSize: pagination.size, PageSize: pagination.size
}; };
// const res = await exportUserApi(data); // const res = await exportUserApi(data);
@ -539,9 +565,9 @@ const getClass = () => {
const data = { const data = {
schoolId: search.schoolId || 0, schoolId: search.schoolId || 0,
graduationYear: search.graduationYear || 0, graduationYear: search.graduationYear || 0,
grade: search.grade, grade: search.grade
}; };
getClassCombo(data).then((res) => { getClassCombo(data).then(res => {
if (res.code === 200) { if (res.code === 200) {
classList.value = res.data; classList.value = res.data;
} }
@ -562,12 +588,12 @@ const fetchPagedData = (searchUnUse = false) => {
PositionId: search.positionId || 0, PositionId: search.positionId || 0,
PageIndex: pagination.index, PageIndex: pagination.index,
PageSize: pagination.size, PageSize: pagination.size,
UnUsed: searchUnUse, UnUsed: searchUnUse
}; };
getPageUserList(data).then((res) => { getPageUserList(data).then(res => {
if (res.code === 200) { if (res.code === 200) {
pagination.total = res.data.total; pagination.total = res.data.total;
res.data.data.forEach((item) => { res.data.data.forEach(item => {
if (item.positions) { if (item.positions) {
item.positions = PositionsSort(item.positions); item.positions = PositionsSort(item.positions);
} }
@ -589,14 +615,14 @@ const getUserLevelTag = (level: number) => {
return level === 0 return level === 0
? "info" ? "info"
: level === 1 : level === 1
? "success" ? "success"
: level === 2 : level === 2
? "warning" ? "warning"
: "error"; : "error";
}; };
const getUserLevelText = (level: number) => { const getUserLevelText = (level: number) => {
const r = userLevelList.value.filter((w) => w.value === level); const r = userLevelList.value.filter(w => w.value === level);
if (r.length > 0) { if (r.length > 0) {
return r[0].text; return r[0].text;
} }
@ -613,7 +639,7 @@ const PositionsSort = (arr: Position[]) => {
return 1; return 1;
} }
}); });
return arr.filter((s) => s.enable); return arr.filter(s => s.enable);
}; };
function searchReload() { function searchReload() {
@ -663,7 +689,7 @@ const handleEditLevel = () => {
return; return;
} }
dialog.editLevel.title = "修改学生层次"; dialog.editLevel.title = "修改学生层次";
dialog.editLevel.userIds = table.selectRows.map((w) => w.id); dialog.editLevel.userIds = table.selectRows.map(w => w.id);
dialog.editLevel.visible = true; dialog.editLevel.visible = true;
}; };
@ -678,7 +704,7 @@ const handleEditSubjectLevel = () => {
return; return;
} }
dialog.editSubjectLevel.title = "修改学生科目层次"; dialog.editSubjectLevel.title = "修改学生科目层次";
dialog.editSubjectLevel.userIds = table.selectRows.map((w) => w.id); dialog.editSubjectLevel.userIds = table.selectRows.map(w => w.id);
dialog.editSubjectLevel.visible = true; dialog.editSubjectLevel.visible = true;
}; };
@ -718,10 +744,10 @@ const importData = () => {
document.body.removeChild(link); document.body.removeChild(link);
ElMessage({ ElMessage({
showClose: true, showClose: true,
type: "warning", type: 'warning',
message: "导入失败,已导出错误数据.", message: '导入失败,已导出错误数据.',
duration: 0, duration: 0,
}); })
}; };
try { try {
fileE.click(); fileE.click();

View File

@ -73,9 +73,9 @@
<el-divider /> <el-divider />
<el-descriptions v-if="!isDetail" title="基础工作" :column="1" border> <el-descriptions title="基础工作" :column="1" border>
<el-descriptions-item label="座谈"> <el-descriptions-item label="座谈">
<div class="flexCenterWrap"> <div v-if="!isDetail" class="flexCenterWrap">
<el-tag :type="safeDetail.isDiscussion ? 'success' : 'info'"> <el-tag :type="safeDetail.isDiscussion ? 'success' : 'info'">
{{ safeDetail.isDiscussion ? "已开展" : "未开展" }} {{ safeDetail.isDiscussion ? "已开展" : "未开展" }}
</el-tag> </el-tag>
@ -93,9 +93,12 @@
placeholder="请输入座谈情况" placeholder="请输入座谈情况"
/> />
</div> </div>
<div v-else>
{{ safeDetail.isDiscussion ? safeDetail.discussion : "未开展" }}
</div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="班会"> <el-descriptions-item label="班会">
<div class="flexCenterWrap"> <div v-if="!isDetail" class="flexCenterWrap">
<el-tag :type="safeDetail.isClassMeeting ? 'success' : 'info'"> <el-tag :type="safeDetail.isClassMeeting ? 'success' : 'info'">
{{ safeDetail.isClassMeeting ? "已开展" : "未开展" }} {{ safeDetail.isClassMeeting ? "已开展" : "未开展" }}
</el-tag> </el-tag>
@ -113,22 +116,11 @@
placeholder="请输入班会情况" placeholder="请输入班会情况"
/> />
</div> </div>
</el-descriptions-item> <div v-else>
</el-descriptions>
<el-descriptions v-else title="基础工作" :column="1" border>
<el-descriptions-item label="座谈">
<div>
{{ safeDetail.isDiscussion ? safeDetail.discussion : "未开展" }} {{ safeDetail.isDiscussion ? safeDetail.discussion : "未开展" }}
</div> </div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="班会">
<div>
{{ safeDetail.isClassMeeting ? safeDetail.classMeeting : "未开展" }}
</div>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-divider /> <el-divider />
<el-descriptions title="反馈问题" :column="1" border> </el-descriptions> <el-descriptions title="反馈问题" :column="1" border> </el-descriptions>
<div style="display: flex; gap: 40px; margin-bottom: 5px"> <div style="display: flex; gap: 40px; margin-bottom: 5px">