Compare commits

..

No commits in common. "eed44c4c684c80050355f676906806d42b9069b4" and "3fd40261700241b62f82c46753ffb3c3d12cdf1f" have entirely different histories.

2 changed files with 129 additions and 179 deletions

View File

@ -20,11 +20,12 @@
:key="item.value" :key="item.value"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 145px"> <el-form-item v-show="search.schoolId != 0" style="width: 145px">
<el-select <el-select
v-model="search.grade" v-model="search.grade"
placeholder="年级" placeholder="年级"
@ -37,28 +38,25 @@
:key="item.value" :key="item.value"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 100px"> <el-form-item style="width: 100px" v-show="search.schoolId != 0">
<el-select <el-select v-model="search.classId" placeholder="班级" clearable filterable>
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"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" :icon="Search" @click="handleReloadPaged" <el-button type="primary" @click="handleReloadPaged" :icon="Search"
>查询</el-button >查询</el-button
> >
@ -66,7 +64,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div v-show="!selectUser" class="toolbar-container"> <div class="toolbar-container" v-show="!selectUser">
<!-- 按钮组 --> <!-- 按钮组 -->
<el-button type="success" @click="importData">导入用户</el-button> <el-button type="success" @click="importData">导入用户</el-button>
<el-button type="default" @click="downLoadImportUsersTemplate" <el-button type="default" @click="downLoadImportUsersTemplate"
@ -76,49 +74,40 @@
>导出用户</el-button >导出用户</el-button
> --> > -->
</div> </div>
<div v-show="!selectUser" class="toolbar-container"> <div class="toolbar-container" v-show="!selectUser">
<!-- 按钮组 --> <!-- 按钮组 -->
<el-button type="success" plain @click="AddDialog">新增</el-button> <el-button type="success" @click="AddDialog" plain>新增</el-button>
</div> </div>
<el-table <el-table
ref="selectUserTable"
:data="table.data"
style="width: 100%"
:max-height="maxTableHeight"
@row-dblclick="setCurrent" @row-dblclick="setCurrent"
@row-click="selectUserClick" @row-click="selectUserClick"
ref="selectUserTable"
:data="table.data"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
style="width: 100%"
:max-height="maxTableHeight"
> >
<!-- <el-table-column type="selection" width="40" /> --> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="100">
<template #default="scope"> <template #default="scope">
<el-button text type="primary" plain @click="EditDialog(scope.row)" <el-button text type="primary" @click="EditDialog(scope.row)" plain
>修改</el-button >修改</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="学生信息" width="450"> <el-table-column label="学生信息" width="450">
<template #default="scope"> <template #default="scope">
<el-tooltip <el-tooltip :content="`id ` + scope.row.id" placement="top" effect="light">
:content="`id ` + scope.row.id"
placement="top"
effect="light"
>
<div> <div>
<span :tips="scope.row.id">{{ scope.row.realName }}</span> <span :tips="scope.row.id">{{ scope.row.realName }}</span>
<div <div
v-for="(position, index) in scope.row.positions"
v-show="
index < 3 ||
(index >= 3 && showAllPosition.includes(scope.row))
"
:key="'Position' + index"
class="inline-block" class="inline-block"
v-for="(position, index) in scope.row.positions"
:key="'Position' + index"
v-show="index < 3 || (index >= 3 && showAllPosition.includes(scope.row))"
> >
<div class="subjectTagEnableDiv"> <div class="subjectTagEnableDiv">
<el-tag v-if="position.enable === false" type="info" <el-tag v-if="position.enable === false" type="info">已禁用</el-tag>
>已禁用</el-tag
>
<el-tag>{{ position.schoolName || "-" }}</el-tag> <el-tag>{{ position.schoolName || "-" }}</el-tag>
<el-tag type="success">{{ <el-tag type="success">{{
position.graduationYear position.graduationYear
@ -146,8 +135,9 @@
<template #default="scope"> <template #default="scope">
<span v-if="!scope.row.reliefApplication">未申请</span> <span v-if="!scope.row.reliefApplication">未申请</span>
<span v-else <span v-else
>{{ scope.row.reliefSubTime }}申请{{ scope.row.amountRelief }} >{{ scope.row.reliefSubTime }}申请{{ scope.row.amountRelief }} <br />{{
<br />{{ scope.row.reliefType }} scope.row.reliefType
}}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -162,20 +152,20 @@
</el-table> </el-table>
<el-pagination <el-pagination
style="display: flex; justify-content: center; padding-top: 10px" style="display: flex; justify-content: center; padding-top: 10px"
@size-change="pageSizeChange"
@current-change="pageIndexChange"
:current-page="pagination.now" :current-page="pagination.now"
:page-sizes="[10, 20, 40, 80, 100]" :page-sizes="[10, 20, 40, 80, 100]"
:page-size="pagination.size" :page-size="pagination.size"
layout="prev, pager, next,sizes, total" layout="prev, pager, next,sizes, total"
:total="pagination.total" :total="pagination.total"
@size-change="pageSizeChange"
@current-change="pageIndexChange"
/> />
<div class="dialog-container"> <div class="dialog-container">
<el-dialog <el-dialog
v-if="dialog.update.visible" v-if="dialog.update.visible"
ref="UserEditFromDialog" ref="UserEditFromDialog"
v-model="dialog.update.visible"
:title="dialog.update.title" :title="dialog.update.title"
v-model="dialog.update.visible"
:width="dialog.update.width" :width="dialog.update.width"
:close-on-click-modal="dialog.close" :close-on-click-modal="dialog.close"
:close-on-press-escape="dialog.close" :close-on-press-escape="dialog.close"
@ -199,7 +189,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";
@ -211,7 +201,7 @@ import {
Message, Message,
ArrowDownBold, ArrowDownBold,
Search, Search,
Star Star,
} 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 { ImportStudent, PageList } from "@/api/student"; import { ImportStudent, PageList } from "@/api/student";
@ -281,20 +271,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_APP_BASE_API; const baseUrl = import.meta.env.VITE_APP_BASE_API;
@ -315,13 +305,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[]>([]);
@ -335,13 +325,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>({
@ -349,32 +339,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 = () => {
@ -437,7 +427,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);
@ -486,21 +476,12 @@ const gradeChange = () => {
}; };
const getClass = () => { const getClass = () => {
if (
search.schoolId == 0 ||
search.schoolId == undefined ||
search.grade == "" ||
search.grade == undefined
) {
classList.value = [];
return;
}
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;
} }
@ -520,12 +501,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,
}; };
PageList(data).then(res => { PageList(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);
} }
@ -610,7 +591,7 @@ const getUserLevelTag = (level: number) => {
}; };
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;
} }
@ -627,7 +608,7 @@ const PositionsSort = (arr: Position[]) => {
return 1; return 1;
} }
}); });
return arr.filter(s => s.enable); return arr;
}; };
const handleReloadPaged = (event?: any, searchUnUse?: boolean) => { const handleReloadPaged = (event?: any, searchUnUse?: boolean) => {
@ -673,7 +654,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;
}; };
@ -688,7 +669,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;
}; };
@ -734,7 +715,7 @@ const importData = () => {
}; };
const readerBlob = (data: Blob): Promise<any> => { const readerBlob = (data: Blob): Promise<any> => {
return new Promise(resolve => { return new Promise((resolve) => {
const reader = new FileReader(); const reader = new FileReader();
reader.readAsText(data, "utf-8"); reader.readAsText(data, "utf-8");
reader.onload = function () { reader.onload = function () {

View File

@ -25,18 +25,14 @@
</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 <el-select v-model="search.level" placeholder="学生层次" clearable filterable>
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"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -53,11 +49,12 @@
:key="item.value" :key="item.value"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 145px"> <el-form-item v-show="search.schoolId != 0" style="width: 145px">
<el-select <el-select
v-model="search.grade" v-model="search.grade"
placeholder="年级" placeholder="年级"
@ -70,59 +67,49 @@
:key="item.value" :key="item.value"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 100px"> <el-form-item v-show="search.schoolId != 0" style="width: 100px">
<el-select <el-select v-model="search.classId" placeholder="班级" clearable filterable>
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"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="search.schoolId" style="width: 100px"> <el-form-item v-show="search.schoolId != 0" style="width: 100px">
<el-select <el-select v-model="search.subjectId" placeholder="科目" clearable filterable>
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"
:label="item.text" :label="item.text"
:value="item.value" :value="item.value"
/> >
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" :icon="Search" @click="handleReloadPaged" <el-button type="primary" @click="handleReloadPaged" :icon="Search"
>查询</el-button >查询</el-button
> >
<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 <el-button type="success" @click="selectUserCallBack()" icon="el-icon-check"
type="success"
icon="el-icon-check"
@click="selectUserCallBack()"
>选择用户</el-button >选择用户</el-button
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div v-show="!selectUser" class="toolbar-container"> <div class="toolbar-container" v-show="!selectUser">
<!-- 按钮组 --> <!-- 按钮组 -->
<el-button type="success" @click="importData">导入用户</el-button> <el-button type="success" @click="importData">导入用户</el-button>
<el-button type="default" @click="downLoadImportUsersTemplate" <el-button type="default" @click="downLoadImportUsersTemplate"
@ -132,23 +119,23 @@
>导出用户</el-button >导出用户</el-button
> --> > -->
</div> </div>
<div v-show="!selectUser" class="toolbar-container"> <div class="toolbar-container" v-show="!selectUser">
<!-- 按钮组 --> <!-- 按钮组 -->
<el-button type="success" plain @click="AddDialog">新增</el-button> <el-button type="success" @click="AddDialog" plain>新增</el-button>
</div> </div>
<el-table <el-table
ref="selectUserTable"
:data="table.data"
style="width: 100%"
:max-height="maxTableHeight"
@row-dblclick="setCurrent" @row-dblclick="setCurrent"
@row-click="selectUserClick" @row-click="selectUserClick"
ref="selectUserTable"
:data="table.data"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
style="width: 100%"
:max-height="maxTableHeight"
> >
<!-- <el-table-column type="selection" width="40" /> --> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="100">
<template #default="scope"> <template #default="scope">
<el-button text type="primary" plain @click="EditDialog(scope.row)" <el-button text type="primary" @click="EditDialog(scope.row)" plain
>修改</el-button >修改</el-button
> >
</template> </template>
@ -157,13 +144,9 @@
<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 <el-tag :type="getUserTypeTag(scope.row.userType)" style="margin-right: 5px">{{
:type="getUserTypeTag(scope.row.userType)" userTypeList.find((s) => s.value == scope.row.userType)?.text
style="margin-right: 5px" }}</el-tag>
>{{
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>
@ -180,10 +163,8 @@
<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))
"
:key="'Position' + index" :key="'Position' + index"
v-show="index < 3 || (index >= 3 && showAllPosition.includes(scope.row))"
> >
<div class="subjectTagEnableDiv"> <div class="subjectTagEnableDiv">
<el-tag>{{ position.schoolName || "-" }}</el-tag> <el-tag>{{ position.schoolName || "-" }}</el-tag>
@ -202,16 +183,14 @@
</div> </div>
</div> </div>
<div <div
v-if=" v-if="scope.row.positions != undefined && scope.row.positions.length > 3"
scope.row.positions != undefined && scope.row.positions.length > 3
"
class="userTagRow"
@click="showPosition(scope.row)" @click="showPosition(scope.row)"
class="userTagRow"
> >
<el-icon <el-icon
v-if="showAllPosition.includes(scope.row)"
title="折叠职位" title="折叠职位"
class="userTagRowItop" class="userTagRowItop"
v-if="showAllPosition.includes(scope.row)"
><ArrowDownBold ><ArrowDownBold
/></el-icon> /></el-icon>
<el-icon v-else title="展开更多职位"><ArrowDownBold /></el-icon> <el-icon v-else title="展开更多职位"><ArrowDownBold /></el-icon>
@ -221,20 +200,20 @@
</el-table> </el-table>
<el-pagination <el-pagination
style="display: flex; justify-content: center" style="display: flex; justify-content: center"
@size-change="pageSizeChange"
@current-change="pageIndexChange"
:current-page="pagination.now" :current-page="pagination.now"
:page-sizes="[10, 20, 40, 80, 100]" :page-sizes="[10, 20, 40, 80, 100]"
:page-size="pagination.size" :page-size="pagination.size"
layout="prev, pager, next,sizes, total" layout="prev, pager, next,sizes, total"
:total="pagination.total" :total="pagination.total"
@size-change="pageSizeChange"
@current-change="pageIndexChange"
/> />
<div class="dialog-container"> <div class="dialog-container">
<el-dialog <el-dialog
v-if="dialog.update.visible" v-if="dialog.update.visible"
ref="UserEditFromDialog" ref="UserEditFromDialog"
v-model="dialog.update.visible"
:title="dialog.update.title" :title="dialog.update.title"
v-model="dialog.update.visible"
:width="dialog.update.width" :width="dialog.update.width"
:close-on-click-modal="dialog.close" :close-on-click-modal="dialog.close"
:close-on-press-escape="dialog.close" :close-on-press-escape="dialog.close"
@ -258,7 +237,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";
@ -270,7 +249,7 @@ import {
Message, Message,
ArrowDownBold, ArrowDownBold,
Search, Search,
Star Star,
} 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";
@ -340,20 +319,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;
@ -375,13 +354,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[]>([]);
@ -396,13 +375,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>({
@ -410,32 +389,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 = () => {
@ -498,7 +477,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);
@ -547,21 +526,12 @@ const gradeChange = () => {
}; };
const getClass = () => { const getClass = () => {
if (
search.schoolId == 0 ||
search.schoolId == undefined ||
search.grade == "" ||
search.grade == undefined
) {
classList.value = [];
return;
}
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;
} }
@ -581,12 +551,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);
} }
@ -615,7 +585,7 @@ const getUserLevelTag = (level: number) => {
}; };
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;
} }
@ -632,7 +602,7 @@ const PositionsSort = (arr: Position[]) => {
return 1; return 1;
} }
}); });
return arr.filter(s => s.enable); return arr;
}; };
function searchReload() { function searchReload() {
@ -682,7 +652,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;
}; };
@ -697,7 +667,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;
}; };
@ -715,7 +685,6 @@ const importData = () => {
fileE.onchange = async function () { fileE.onchange = async function () {
formData.append("file", fileE.files[0]); formData.append("file", fileE.files[0]);
let res = await ImportTeacher(fileE.files[0]); let res = await ImportTeacher(fileE.files[0]);
debugger;
if (res.code != undefined) { if (res.code != undefined) {
if (res.code !== 200) return ElMessage.error(res.message); if (res.code !== 200) return ElMessage.error(res.message);
else return ElMessage.success("所有数据录入成功"); else return ElMessage.success("所有数据录入成功");
@ -723,7 +692,7 @@ const importData = () => {
let json = JSON.parse(await res.text()); let json = JSON.parse(await res.text());
let code = json.code || json.Code; let code = json.code || json.Code;
if (json !== undefined && code !== 200) { if (json !== undefined && code !== 200) {
return ElMessage.error(json.message); return ElMessage.error(json.Message);
} else { } else {
return ElMessage.success("操所有数据录入成功作成功"); return ElMessage.success("操所有数据录入成功作成功");
} }