dev #8
|
|
@ -21,3 +21,4 @@ tests/**/coverage/
|
||||||
*.sln
|
*.sln
|
||||||
tsconfig.tsbuildinfo
|
tsconfig.tsbuildinfo
|
||||||
.vscode
|
.vscode
|
||||||
|
.vscode/settings.json
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
"editor.tabSize": 2,
|
"editor.tabSize": 2,
|
||||||
"editor.formatOnPaste": true,
|
"editor.formatOnPaste": true,
|
||||||
"editor.guides.bracketPairs": "active",
|
"editor.guides.bracketPairs": "active",
|
||||||
"files.autoSave": "afterDelay",
|
// "files.autoSave": "afterDelay",
|
||||||
|
"files.autoSave": "off",
|
||||||
"git.confirmSync": false,
|
"git.confirmSync": false,
|
||||||
"workbench.startupEditor": "newUntitledFile",
|
"workbench.startupEditor": "newUntitledFile",
|
||||||
"editor.suggestSelection": "first",
|
"editor.suggestSelection": "first",
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ const tableData: TableConfig = {
|
||||||
grade: {
|
grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
width: "120px",
|
width: "120px",
|
||||||
custom: (s) => `${s.gradeYear}${s.gradeLevel}`,
|
// custom: (s) => `${s.gradeLevel}${s.gradeYear}`,
|
||||||
search: true,
|
search: true,
|
||||||
add: false, // 字段允许添加
|
add: false, // 字段允许添加
|
||||||
edit: false, // 字段允许修改
|
edit: false, // 字段允许修改
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,15 @@ const tableData: TableConfig = {
|
||||||
add: true, // 字段允许添加
|
add: true, // 字段允许添加
|
||||||
edit: true, // 字段允许修改
|
edit: true, // 字段允许修改
|
||||||
},
|
},
|
||||||
|
baseSchoolScore: {
|
||||||
|
label: "资源校平均分",
|
||||||
|
// rules: ruleRequiredNumber,
|
||||||
|
search: true,
|
||||||
|
width: "150px",
|
||||||
|
setting: {},
|
||||||
|
add: true, // 字段允许添加
|
||||||
|
edit: true, // 字段允许修改
|
||||||
|
},
|
||||||
startTime: {
|
startTime: {
|
||||||
label: "考试时间",
|
label: "考试时间",
|
||||||
width: "210px",
|
width: "210px",
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-form
|
<el-form ref="userEditForm" :model="form" :label-width="formLabelWidth" clearable>
|
||||||
ref="userEditForm"
|
|
||||||
:model="form"
|
|
||||||
:label-width="formLabelWidth"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="账号:" prop="Account">
|
|
||||||
<el-input
|
|
||||||
type="text"
|
|
||||||
v-model="form.account"
|
|
||||||
autocomplete="off"
|
|
||||||
minlength="6"
|
|
||||||
maxlength="33"
|
|
||||||
:show-word-limit="true"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
|
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
|
||||||
<el-input type="text" v-model="form.phone" />
|
<el-input type="text" v-model="form.phone" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="姓名:" prop="realName" :rules="ruleRequired">
|
<el-form-item label="姓名:" prop="realName" :rules="ruleRequired">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -38,7 +18,10 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
</el-row>
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="所属云校" prop="cloudSchoolId">
|
<el-form-item label="所属云校" prop="cloudSchoolId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form.cloudSchoolId"
|
v-model="form.cloudSchoolId"
|
||||||
|
|
@ -55,7 +38,7 @@
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row v-show="form.userType === 1">
|
<el-row v-show="form.userType === 1">
|
||||||
|
|
@ -119,12 +102,9 @@
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="学生层次:" prop="level">
|
<el-form-item label="学生层次:" prop="level">
|
||||||
<el-radio-group v-model="form.subjectLevel.Level">
|
<el-radio-group v-model="form.subjectLevel.Level">
|
||||||
<el-radio
|
<el-radio v-for="(item, i) in userLevelList" :key="i" :label="item.value">{{
|
||||||
v-for="(item, i) in userLevelList"
|
item.text
|
||||||
:key="i"
|
}}</el-radio>
|
||||||
:label="item.value"
|
|
||||||
>{{ item.text }}</el-radio
|
|
||||||
>
|
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -134,10 +114,7 @@
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="科目层次:">
|
<el-form-item label="科目层次:">
|
||||||
<ul class="userform_ul">
|
<ul class="userform_ul">
|
||||||
<li
|
<li v-for="(value, i) in getUserSubjectLevel(form.subjectLevel)" :key="i">
|
||||||
v-for="(value, i) in getUserSubjectLevel(form.subjectLevel)"
|
|
||||||
:key="i"
|
|
||||||
>
|
|
||||||
{{ userLevel2subject(value[0]) }}:
|
{{ userLevel2subject(value[0]) }}:
|
||||||
<el-radio-group v-model="form.subjectLevel[value[0]]">
|
<el-radio-group v-model="form.subjectLevel[value[0]]">
|
||||||
<el-radio
|
<el-radio
|
||||||
|
|
@ -158,13 +135,11 @@
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="职位:" prop="positionIds" :rules="ruleRequired">
|
<el-form-item label="职位:" prop="positionIds" :rules="ruleRequired">
|
||||||
<el-button type="success" @click="CheckPosition()"
|
<el-button type="success" @click="CheckPosition()">分配职位</el-button>
|
||||||
>分配职位</el-button
|
|
||||||
>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<div class="max-h-[400px] overflow-auto pb-1">
|
||||||
<div
|
<div
|
||||||
v-for="(position, index) in positionList"
|
v-for="(position, index) in positionList"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
|
@ -197,6 +172,7 @@
|
||||||
<el-tag type="danger">{{ position.name || "-" }}</el-tag>
|
<el-tag type="danger">{{ position.name || "-" }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" :loading="loading" @click="handleSubmitForm()"
|
<el-button type="primary" :loading="loading" @click="handleSubmitForm()"
|
||||||
>立即提交</el-button
|
>立即提交</el-button
|
||||||
|
|
@ -227,17 +203,13 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { ref, reactive, onMounted } from "vue";
|
||||||
import {} from "@/api/user";
|
import {} from "@/api/user";
|
||||||
import {
|
import { cloudSchoolCombo, getUserInfo, editUser, Position } from "@/api/userCenter";
|
||||||
cloudSchoolCombo,
|
|
||||||
getUserInfo,
|
|
||||||
editUser,
|
|
||||||
Position
|
|
||||||
} from "@/api/userCenter";
|
|
||||||
import PositionForm from "./positionForm.vue";
|
import PositionForm from "./positionForm.vue";
|
||||||
import { getenum, getenumDic } from "@/api/enum";
|
import { getenum, getenumDic } from "@/api/enum";
|
||||||
import { ruleRequired, rulePhone } from "@/utils/rules";
|
import { ruleRequired, rulePhone } from "@/utils/rules";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage, FormInstance } from "element-plus";
|
||||||
import { ComboModel } from "@/components/hTable/hTable";
|
import { ComboModel } from "@/components/hTable/hTable";
|
||||||
|
import { InformationEvent } from "http";
|
||||||
|
|
||||||
interface FormData {
|
interface FormData {
|
||||||
id: number;
|
id: number;
|
||||||
|
|
@ -268,7 +240,7 @@ interface DialogConfig {
|
||||||
width: string;
|
width: string;
|
||||||
}
|
}
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "UserEditForm"
|
name: "UserEditForm",
|
||||||
});
|
});
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|
@ -281,14 +253,14 @@ const loading = ref(false);
|
||||||
|
|
||||||
const subject1 = ref<ComboModel[]>([
|
const subject1 = ref<ComboModel[]>([
|
||||||
{ value: 4, text: "物理" },
|
{ value: 4, text: "物理" },
|
||||||
{ value: 8, text: "历史" }
|
{ value: 8, text: "历史" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const subject2 = ref<ComboModel[]>([
|
const subject2 = ref<ComboModel[]>([
|
||||||
{ value: 5, text: "化学" },
|
{ value: 5, text: "化学" },
|
||||||
{ value: 6, text: "生物" },
|
{ value: 6, text: "生物" },
|
||||||
{ value: 9, text: "地理" },
|
{ value: 9, text: "地理" },
|
||||||
{ value: 7, text: "政治" }
|
{ value: 7, text: "政治" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const userTypeList = ref<ComboModel[]>([]);
|
const userTypeList = ref<ComboModel[]>([]);
|
||||||
|
|
@ -311,7 +283,7 @@ const defaultSubjectLevel = reactive({
|
||||||
Subject7: 0,
|
Subject7: 0,
|
||||||
Subject8: 0,
|
Subject8: 0,
|
||||||
Subject9: 0,
|
Subject9: 0,
|
||||||
CreatePositionId: 1
|
CreatePositionId: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
const form = ref<FormData>({
|
const form = ref<FormData>({
|
||||||
|
|
@ -328,14 +300,14 @@ const form = ref<FormData>({
|
||||||
subjectLevels: [],
|
subjectLevels: [],
|
||||||
subjectLevel: { ...defaultSubjectLevel },
|
subjectLevel: { ...defaultSubjectLevel },
|
||||||
positionIds: [],
|
positionIds: [],
|
||||||
positionFormIds: []
|
positionFormIds: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
const dialog = reactive<DialogConfig>({
|
const dialog = reactive<DialogConfig>({
|
||||||
close: false,
|
close: false,
|
||||||
title: "",
|
title: "",
|
||||||
visible: false,
|
visible: false,
|
||||||
width: "1200px"
|
width: "1200px",
|
||||||
});
|
});
|
||||||
|
|
||||||
const customeRules = reactive({
|
const customeRules = reactive({
|
||||||
|
|
@ -344,9 +316,9 @@ const customeRules = reactive({
|
||||||
{
|
{
|
||||||
pattern: /^1[3456789]\d{9}$/,
|
pattern: /^1[3456789]\d{9}$/,
|
||||||
message: "手机号码格式不正确",
|
message: "手机号码格式不正确",
|
||||||
trigger: "blur"
|
trigger: "blur",
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const getUserSubjectLevel = (obj: Record<string, any>) => {
|
const getUserSubjectLevel = (obj: Record<string, any>) => {
|
||||||
|
|
@ -354,7 +326,7 @@ const getUserSubjectLevel = (obj: Record<string, any>) => {
|
||||||
form.value.subjectLevel = { ...defaultSubjectLevel };
|
form.value.subjectLevel = { ...defaultSubjectLevel };
|
||||||
obj = form.value.subjectLevel;
|
obj = form.value.subjectLevel;
|
||||||
}
|
}
|
||||||
return Object.entries(obj).filter(s => s[0].includes("Subject"));
|
return Object.entries(obj).filter((s) => s[0].includes("Subject"));
|
||||||
};
|
};
|
||||||
|
|
||||||
const userLevel2subject = (str: string) => {
|
const userLevel2subject = (str: string) => {
|
||||||
|
|
@ -365,32 +337,20 @@ const userLevel2subject = (str: string) => {
|
||||||
const handlePagedCallback = () => {
|
const handlePagedCallback = () => {
|
||||||
// Emit event to parent if needed
|
// Emit event to parent if needed
|
||||||
};
|
};
|
||||||
|
const userEditForm = ref<FormInstance>();
|
||||||
const handleSubmitForm = () => {
|
const handleSubmitForm = () => {
|
||||||
// Form validation and submission logic
|
userEditForm.value.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const formData = {
|
const formData = {
|
||||||
id: form.value.id || 0,
|
...form.value,
|
||||||
userType: form.value.userType || 1,
|
account: form.value.phone || "",
|
||||||
level: form.value.level || 0,
|
|
||||||
account: form.value.account || "",
|
|
||||||
// PassWord: form.value.id === 0 ? md5(form.value.PassWord).toUpperCase() : "",
|
|
||||||
realName: form.value.realName || "",
|
|
||||||
studentId: form.value.studentId || "",
|
|
||||||
templateId: form.value.templateId || 0,
|
|
||||||
subjectLevels: form.value.subjectLevels || [],
|
subjectLevels: form.value.subjectLevels || [],
|
||||||
subjectLevel: form.value.subjectLevel || { ...defaultSubjectLevel },
|
subjectLevel: form.value.subjectLevel || { ...defaultSubjectLevel },
|
||||||
positionIds: form.value.positionIds || [],
|
positionIds: form.value.positionIds || [],
|
||||||
gLSubject: form.value.gLSubject,
|
|
||||||
gSubject1: form.value.gSubject1,
|
|
||||||
gSubject2: form.value.gSubject2,
|
|
||||||
idCard: form.value.idCard,
|
|
||||||
cloudSchoolId: form.value.cloudSchoolId,
|
|
||||||
phone: form.value.phone,
|
|
||||||
pointPenSN: form.value.pointPenSN
|
|
||||||
};
|
};
|
||||||
|
|
||||||
editUser(formData).then(res => {
|
editUser(formData).then((res) => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
ElMessage.success("操作成功");
|
ElMessage.success("操作成功");
|
||||||
|
|
@ -399,6 +359,9 @@ const handleSubmitForm = () => {
|
||||||
ElMessage.error(res.message);
|
ElMessage.error(res.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Form validation and submission logic
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleResetForm = () => {
|
const handleResetForm = () => {
|
||||||
|
|
@ -416,7 +379,7 @@ const handleResetForm = () => {
|
||||||
idCard: "",
|
idCard: "",
|
||||||
phone: "",
|
phone: "",
|
||||||
cloudSchoolId: "",
|
cloudSchoolId: "",
|
||||||
pointPenSN: ""
|
pointPenSN: "",
|
||||||
});
|
});
|
||||||
positionList.value = [];
|
positionList.value = [];
|
||||||
};
|
};
|
||||||
|
|
@ -429,11 +392,11 @@ const fetchInitData = async () => {
|
||||||
const typeRes = await getenum("UserTypeEnum");
|
const typeRes = await getenum("UserTypeEnum");
|
||||||
userTypeList.value = typeRes.data;
|
userTypeList.value = typeRes.data;
|
||||||
|
|
||||||
// 云校
|
// // 云校
|
||||||
const schoolRes = await cloudSchoolCombo();
|
// const schoolRes = await cloudSchoolCombo();
|
||||||
if (schoolRes.code === 200) {
|
// if (schoolRes.code === 200) {
|
||||||
CloudSchoolArr.value = schoolRes.data;
|
// CloudSchoolArr.value = schoolRes.data;
|
||||||
}
|
// }
|
||||||
|
|
||||||
const enumDicRes = await getenumDic("SubjectEnum");
|
const enumDicRes = await getenumDic("SubjectEnum");
|
||||||
subjectLEnum.value = enumDicRes.data;
|
subjectLEnum.value = enumDicRes.data;
|
||||||
|
|
@ -442,7 +405,7 @@ const fetchInitData = async () => {
|
||||||
const fetchFormData = () => {
|
const fetchFormData = () => {
|
||||||
handleResetForm();
|
handleResetForm();
|
||||||
if (props.id !== 0) {
|
if (props.id !== 0) {
|
||||||
getUserInfo(props.id).then(res => {
|
getUserInfo(props.id).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
if (res.data.SubjectLevel && res.data.SubjectLevel.CreatePositionId) {
|
if (res.data.SubjectLevel && res.data.SubjectLevel.CreatePositionId) {
|
||||||
delete res.data.SubjectLevel.CreatePositionId;
|
delete res.data.SubjectLevel.CreatePositionId;
|
||||||
|
|
@ -468,7 +431,7 @@ const fetchFormData = () => {
|
||||||
idCard: res.data.idCard,
|
idCard: res.data.idCard,
|
||||||
phone: res.data.phone,
|
phone: res.data.phone,
|
||||||
cloudSchoolId: res.data.cloudSchoolId,
|
cloudSchoolId: res.data.cloudSchoolId,
|
||||||
pointPenSN: res.data.pointPenSN
|
pointPenSN: res.data.pointPenSN,
|
||||||
});
|
});
|
||||||
|
|
||||||
positionList.value = res.data.positions;
|
positionList.value = res.data.positions;
|
||||||
|
|
@ -491,14 +454,14 @@ const CheckPosition = () => {
|
||||||
dialog.title = "选择职位";
|
dialog.title = "选择职位";
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
PositionFormIds.value = positionList.value
|
PositionFormIds.value = positionList.value
|
||||||
.filter(s => s.enable !== false)
|
.filter((s) => s.enable !== false)
|
||||||
.map(s => s.id);
|
.map((s) => s.id);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCheckCallback = (checkPosition: Position[]) => {
|
const handleCheckCallback = (checkPosition: Position[]) => {
|
||||||
dialog.visible = false;
|
dialog.visible = false;
|
||||||
positionList.value = checkPosition;
|
positionList.value = checkPosition;
|
||||||
form.value.positionIds = positionList.value.map(w => w.id);
|
form.value.positionIds = positionList.value.map((w) => w.id);
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
||||||
|
|
@ -25,12 +25,7 @@
|
||||||
</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"
|
||||||
|
|
@ -78,12 +73,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="width: 100px">
|
<el-form-item 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"
|
||||||
|
|
@ -95,12 +85,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="width: 100px">
|
<el-form-item 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"
|
||||||
|
|
@ -117,10 +102,7 @@
|
||||||
>
|
>
|
||||||
</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"
|
|
||||||
@click="selectUserCallBack()"
|
|
||||||
icon="el-icon-check"
|
|
||||||
>选择用户</el-button
|
>选择用户</el-button
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -161,13 +143,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>
|
||||||
|
|
@ -183,9 +161,7 @@
|
||||||
<div
|
<div
|
||||||
v-for="(position, index) in scope.row.positions"
|
v-for="(position, index) in scope.row.positions"
|
||||||
:key="'Position' + index"
|
:key="'Position' + index"
|
||||||
v-show="
|
v-show="index < 3 || (index >= 3 && showAllPosition.includes(scope.row))"
|
||||||
index < 3 || (index >= 3 && showAllPosition.includes(scope.row))
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<div v-if="position.enable === false">
|
<div v-if="position.enable === false">
|
||||||
<el-tag type="info">{{ position.schoolName || "-" }}</el-tag>
|
<el-tag type="info">{{ position.schoolName || "-" }}</el-tag>
|
||||||
|
|
@ -213,9 +189,7 @@
|
||||||
</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
|
|
||||||
"
|
|
||||||
@click="showPosition(scope.row)"
|
@click="showPosition(scope.row)"
|
||||||
class="userTagRow"
|
class="userTagRow"
|
||||||
>
|
>
|
||||||
|
|
@ -268,7 +242,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";
|
||||||
|
|
@ -280,7 +254,7 @@ import {
|
||||||
Message,
|
Message,
|
||||||
ArrowDownBold,
|
ArrowDownBold,
|
||||||
Search,
|
Search,
|
||||||
Star
|
Star,
|
||||||
} from "@element-plus/icons-vue";
|
} from "@element-plus/icons-vue";
|
||||||
import { ComboModel } from "@/components/hTable/hTable";
|
import { ComboModel } from "@/components/hTable/hTable";
|
||||||
|
|
||||||
|
|
@ -348,20 +322,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;
|
||||||
|
|
@ -382,13 +356,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[]>([]);
|
||||||
|
|
@ -399,7 +373,7 @@ const gradeList = ref<ComboModel[]>([
|
||||||
{ value: "初三", text: "初三" },
|
{ value: "初三", text: "初三" },
|
||||||
{ value: "高一", text: "高一" },
|
{ value: "高一", text: "高一" },
|
||||||
{ value: "高二", text: "高二" },
|
{ value: "高二", text: "高二" },
|
||||||
{ value: "高三", text: "高三" }
|
{ value: "高三", text: "高三" },
|
||||||
]);
|
]);
|
||||||
const classList = ref<ComboModel[]>([]);
|
const classList = ref<ComboModel[]>([]);
|
||||||
const subjectList = ref<ComboModel[]>([]);
|
const subjectList = ref<ComboModel[]>([]);
|
||||||
|
|
@ -409,13 +383,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>({
|
||||||
|
|
@ -423,32 +397,32 @@ const dialog = reactive<DialogData>({
|
||||||
update: {
|
update: {
|
||||||
title: "",
|
title: "",
|
||||||
visible: false,
|
visible: false,
|
||||||
width: "800px"
|
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 = () => {
|
||||||
|
|
@ -511,7 +485,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);
|
||||||
|
|
@ -563,9 +537,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;
|
||||||
}
|
}
|
||||||
|
|
@ -585,12 +559,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);
|
||||||
}
|
}
|
||||||
|
|
@ -670,7 +644,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;
|
||||||
}
|
}
|
||||||
|
|
@ -707,7 +681,7 @@ function pageIndexChange(o) {
|
||||||
|
|
||||||
const AddDialog = () => {
|
const AddDialog = () => {
|
||||||
editId.value = 0;
|
editId.value = 0;
|
||||||
dialog.update.title = "添加用户";
|
dialog.update.title = "添加教师";
|
||||||
dialog.update.visible = true;
|
dialog.update.visible = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -732,7 +706,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -747,7 +721,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -791,7 +765,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 () {
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<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"
|
||||||
|
|
@ -78,12 +73,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<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"
|
||||||
|
|
@ -93,7 +83,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<!-- <el-form-item>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="search.status"
|
v-model="search.status"
|
||||||
placeholder="状态"
|
placeholder="状态"
|
||||||
|
|
@ -107,21 +97,16 @@
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button type="primary" @click="handleReloadPaged" :icon="Search"
|
||||||
type="primary"
|
|
||||||
@click="handleReloadPaged"
|
|
||||||
icon="el-icon-search"
|
|
||||||
>查询</el-button
|
>查询</el-button
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="success" @click="asyncPosition"
|
<el-button type="success" @click="asyncPosition">选择勾选职位</el-button>
|
||||||
>选择勾选职位</el-button
|
|
||||||
>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -147,15 +132,11 @@
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="40" />
|
<el-table-column type="selection" width="40" />
|
||||||
<el-table-column
|
<el-table-column prop="name" label="职位名称[双击行快速选择]" width="220">
|
||||||
prop="name"
|
|
||||||
label="职位名称[双击行快速选择]"
|
|
||||||
width="220"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span
|
<span
|
||||||
>{{ scope.row.name }}
|
>{{ scope.row.name }}
|
||||||
<el-tag v-show="selectPositions.find(s => scope.row.Id == s.id)"
|
<el-tag v-show="selectPositions.find((s) => scope.row.Id == s.id)"
|
||||||
>已选</el-tag
|
>已选</el-tag
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -163,29 +144,19 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="positionLevel" label="职级" width="80">
|
<el-table-column prop="positionLevel" label="职级" width="80">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.positionLevel === 1" type="danger"
|
<el-tag v-if="scope.row.positionLevel === 1" type="danger">教委</el-tag>
|
||||||
>教委</el-tag
|
<el-tag v-else-if="scope.row.positionLevel === 2" type="warning">校级</el-tag>
|
||||||
>
|
|
||||||
<el-tag v-else-if="scope.row.positionLevel === 2" type="warning"
|
|
||||||
>校级</el-tag
|
|
||||||
>
|
|
||||||
<el-tag v-else-if="scope.row.positionLevel === 3">年级</el-tag>
|
<el-tag v-else-if="scope.row.positionLevel === 3">年级</el-tag>
|
||||||
<el-tag v-else-if="scope.row.positionLevel === 4" type="success"
|
<el-tag v-else-if="scope.row.positionLevel === 4" type="success">班级</el-tag>
|
||||||
>班级</el-tag
|
<el-tag v-else-if="scope.row.positionLevel === 5" type="info">教师</el-tag>
|
||||||
>
|
<el-tag v-else-if="scope.row.positionType === 1" type="info">学生</el-tag>
|
||||||
<el-tag v-else-if="scope.row.positionLevel === 5" type="info"
|
|
||||||
>教师</el-tag
|
|
||||||
>
|
|
||||||
<el-tag v-else-if="scope.row.positionType === 1" type="info"
|
|
||||||
>学生</el-tag
|
|
||||||
>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="学校 - 年级 - 班级 - 学科">
|
<el-table-column label="学校 - 年级 - 班级 - 学科">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="!scope.row.status" type="danger">锁定</el-tag>
|
<el-tag v-if="!scope.row.status" type="danger">锁定</el-tag>
|
||||||
{{ scope.row.schoolName }} {{ scope.row.grade }}
|
{{ scope.row.schoolName }} {{ scope.row.grade }} {{ scope.row.className }}
|
||||||
{{ scope.row.className }} {{ scope.row.subjectName }}
|
{{ scope.row.subjectName }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -198,7 +169,7 @@
|
||||||
style="float: right"
|
style="float: right"
|
||||||
type="success"
|
type="success"
|
||||||
@click="handleConfirm"
|
@click="handleConfirm"
|
||||||
icon="el-icon-check"
|
:icon="Check"
|
||||||
>提交分配职位</el-button
|
>提交分配职位</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -217,7 +188,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { ref, reactive, onMounted } from "vue";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
|
@ -228,9 +198,10 @@ import {
|
||||||
getSubjectData,
|
getSubjectData,
|
||||||
getPositionList,
|
getPositionList,
|
||||||
getPositions,
|
getPositions,
|
||||||
Position
|
Position,
|
||||||
} from "@/api/userCenter";
|
} from "@/api/userCenter";
|
||||||
import { ComboModel } from "@/components/hTable/hTable";
|
import { ComboModel } from "@/components/hTable/hTable";
|
||||||
|
import { Check, Search } from "@element-plus/icons-vue";
|
||||||
|
|
||||||
interface SearchParams {
|
interface SearchParams {
|
||||||
schoolId: string | number;
|
schoolId: string | number;
|
||||||
|
|
@ -259,16 +230,16 @@ interface Dialog {
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
userType: {
|
userType: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0,
|
||||||
},
|
},
|
||||||
positions: {
|
positions: {
|
||||||
type: Array as () => number[],
|
type: Array as () => number[],
|
||||||
default: () => []
|
default: () => [],
|
||||||
},
|
},
|
||||||
selectionCount: {
|
selectionCount: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 999
|
default: 999,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(["handleCheckCallback", "handleCheckCallback"]);
|
const emit = defineEmits(["handleCheckCallback", "handleCheckCallback"]);
|
||||||
|
|
@ -279,7 +250,7 @@ const search = reactive<SearchParams>({
|
||||||
grade: "",
|
grade: "",
|
||||||
classId: "",
|
classId: "",
|
||||||
subjectId: "",
|
subjectId: "",
|
||||||
status: ""
|
status: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
const selectPositions = ref<Position[]>([]);
|
const selectPositions = ref<Position[]>([]);
|
||||||
|
|
@ -290,7 +261,7 @@ const gradeList = ref<ComboModel[]>([
|
||||||
{ value: "初三", text: "初三" },
|
{ value: "初三", text: "初三" },
|
||||||
{ value: "高一", text: "高一" },
|
{ value: "高一", text: "高一" },
|
||||||
{ value: "高二", text: "高二" },
|
{ value: "高二", text: "高二" },
|
||||||
{ value: "高三", text: "高三" }
|
{ value: "高三", text: "高三" },
|
||||||
]);
|
]);
|
||||||
const classList = ref<ComboModel[]>([]);
|
const classList = ref<ComboModel[]>([]);
|
||||||
const subjectList = ref<ComboModel[]>([]);
|
const subjectList = ref<ComboModel[]>([]);
|
||||||
|
|
@ -298,17 +269,17 @@ const tableExpandRowKeys = ref<string[]>([]);
|
||||||
const positionList = ref<ComboModel[]>([
|
const positionList = ref<ComboModel[]>([
|
||||||
{ text: "学生", value: 1 },
|
{ text: "学生", value: 1 },
|
||||||
{ text: "教师", value: 2 },
|
{ text: "教师", value: 2 },
|
||||||
{ text: "管理员", value: 3 }
|
{ text: "管理员", value: 3 },
|
||||||
]);
|
]);
|
||||||
const statusList = ref<ComboModel[]>([
|
const statusList = ref<ComboModel[]>([
|
||||||
{ text: "正常", value: 1 },
|
{ text: "正常", value: 1 },
|
||||||
{ text: "锁定", value: 2 }
|
{ text: "锁定", value: 2 },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const table = reactive<TableData>({
|
const table = reactive<TableData>({
|
||||||
data: [],
|
data: [],
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
border: true
|
border: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const dialog = reactive<Dialog>({
|
const dialog = reactive<Dialog>({
|
||||||
|
|
@ -317,7 +288,7 @@ const dialog = reactive<Dialog>({
|
||||||
close: false,
|
close: false,
|
||||||
title: "编辑职位",
|
title: "编辑职位",
|
||||||
visible: false,
|
visible: false,
|
||||||
width: "800px"
|
width: "800px",
|
||||||
});
|
});
|
||||||
|
|
||||||
const authDialog = reactive<Dialog>({
|
const authDialog = reactive<Dialog>({
|
||||||
|
|
@ -326,7 +297,7 @@ const authDialog = reactive<Dialog>({
|
||||||
close: false,
|
close: false,
|
||||||
title: "职位授权",
|
title: "职位授权",
|
||||||
visible: false,
|
visible: false,
|
||||||
width: "400px"
|
width: "400px",
|
||||||
});
|
});
|
||||||
|
|
||||||
const positionTb = ref<FormInstance>();
|
const positionTb = ref<FormInstance>();
|
||||||
|
|
@ -430,7 +401,7 @@ const gradeChange = () => {
|
||||||
const getClass = async () => {
|
const getClass = async () => {
|
||||||
const data = {
|
const data = {
|
||||||
schoolId: search.schoolId || 0,
|
schoolId: search.schoolId || 0,
|
||||||
grade: search.grade
|
grade: search.grade,
|
||||||
};
|
};
|
||||||
const res = await getClassCombo(data);
|
const res = await getClassCombo(data);
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
|
|
@ -445,12 +416,17 @@ const fetchPagedData = async () => {
|
||||||
ClassId: search.classId || 0,
|
ClassId: search.classId || 0,
|
||||||
SubjectId: search.subjectId || 0,
|
SubjectId: search.subjectId || 0,
|
||||||
PositionType: search.positionType || 0,
|
PositionType: search.positionType || 0,
|
||||||
Status: search.status || 0
|
Status: search.status || 0,
|
||||||
};
|
};
|
||||||
const res = await getPositionList(data);
|
const res = await getPositionList(data);
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
table.data = res.data;
|
table.data = res.data;
|
||||||
tableExpandRowKeys.value = table.data.map(s => s.id.toString());
|
tableExpandRowKeys.value = [];
|
||||||
|
tableExpandRowKeys.value = table.data.map((s) => s.id.toString());
|
||||||
|
debugger;
|
||||||
|
tableExpandRowKeys.value.push(
|
||||||
|
res.data.find((s) => s.id == 1).children.map((s) => s.id.toString())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -463,7 +439,7 @@ const handleConfirm = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const tagClose = (p: Position) => {
|
const tagClose = (p: Position) => {
|
||||||
selectPositions.value = selectPositions.value.filter(s => s !== p);
|
selectPositions.value = selectPositions.value.filter((s) => s !== p);
|
||||||
};
|
};
|
||||||
|
|
||||||
const asyncPosition = (event: Event | null, rows?: Position[]) => {
|
const asyncPosition = (event: Event | null, rows?: Position[]) => {
|
||||||
|
|
@ -472,9 +448,9 @@ const asyncPosition = (event: Event | null, rows?: Position[]) => {
|
||||||
ElMessage.warning("请选择要分配的职位");
|
ElMessage.warning("请选择要分配的职位");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const pIds = selectPositions.value.map(s => s.id);
|
const pIds = selectPositions.value.map((s) => s.id);
|
||||||
selectPositions.value = selectPositions.value.concat(
|
selectPositions.value = selectPositions.value.concat(
|
||||||
datas.filter(s => !pIds.includes(s.id))
|
datas.filter((s) => !pIds.includes(s.id))
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -482,7 +458,7 @@ onMounted(async () => {
|
||||||
userTypeToPosition();
|
userTypeToPosition();
|
||||||
if (props.positions && props.positions.length > 0) {
|
if (props.positions && props.positions.length > 0) {
|
||||||
const res = await getPositions(props.positions);
|
const res = await getPositions(props.positions);
|
||||||
selectPositions.value = res.data.map(s => ({ ...s }));
|
selectPositions.value = res.data.map((s) => ({ ...s }));
|
||||||
}
|
}
|
||||||
fetchInitData();
|
fetchInitData();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue