修复 老师无法修改账户问题

This commit is contained in:
小肥羊 2025-11-17 11:25:07 +08:00
parent e46a54ddb9
commit 7aafe7c84e
2 changed files with 57 additions and 62 deletions

View File

@ -73,7 +73,7 @@ export default defineConfig([
}
},
...tseslint.config({
extends: [...tseslint.configs.recommended],
extends: [...tseslint.configs.recommended, "plugin:prettier/recommended"],
files: ["**/*.?([cm])ts", "**/*.?([cm])tsx"],
rules: {
"@typescript-eslint/no-redeclare": "error",

View File

@ -1,17 +1,7 @@
<template>
<div>
<el-form
ref="userEditForm"
:model="form"
:label-width="formLabelWidth"
clearable
>
<el-form ref="userEditForm" :model="form" :label-width="formLabelWidth" clearable>
<el-row>
<el-col :span="12">
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
<el-input v-model="form.phone" type="text" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名:" prop="realName" :rules="ruleRequired">
<el-input
@ -23,9 +13,6 @@
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="职务:" prop="studentId">
<el-input
@ -38,16 +25,23 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="账号" :rules="ruleRequiredI(20, 6)" prop="account">
<el-input v-model="form.account" type="text" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
<el-input v-model="form.phone" type="text" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
label="任教信息:"
prop="positionList"
:rules="ruleRequired"
>
<el-button type="success" @click="AddPosition()"
>添加职位</el-button
>
<el-form-item label="任教信息:" prop="positionList" :rules="ruleRequired">
<el-button type="success" @click="AddPosition()">添加职位</el-button>
</el-form-item>
</el-col>
</el-row>
@ -73,10 +67,7 @@
@click="positionClose(position)"
/>
</el-form-item>
<el-form-item
:prop="`${index}.positionLevel`"
:rules="ruleRequired"
>
<el-form-item :prop="`${index}.positionLevel`" :rules="ruleRequired">
<el-select
v-model="position.positionLevel"
:disabled="position.id != undefined"
@ -196,12 +187,12 @@ import {
editUser,
Position,
getSchoolData,
getClassCombo
getClassCombo,
} from "@/api/userCenter";
import PositionForm from "./positionForm.vue";
import { getenum, getenumDic } from "@/api/enum";
import { PosititonIds } from "@/api/student";
import { ruleRequired, rulePhone } from "@/utils/rules";
import { ruleRequired, rulePhone, ruleRequiredI } from "@/utils/rules";
import { ElMessage, FormInstance } from "element-plus";
import { ComboModel, gradeComboModel } from "@/components/hTable/hTable";
import {
@ -209,11 +200,12 @@ import {
Delete,
Edit,
Message,
Phone,
Search,
Star
Star,
} from "@element-plus/icons-vue";
import { de } from "element-plus/es/locales.mjs";
import { request } from "node_modules/axios/index.cjs";
interface FormData {
id: number;
account: string;
@ -244,7 +236,7 @@ interface DialogConfig {
width: string;
}
defineOptions({
name: "UserEditForm"
name: "UserEditForm",
});
const props = defineProps<{
@ -257,14 +249,14 @@ const loading = ref(false);
const subject1 = ref<ComboModel[]>([
{ value: 4, text: "物理" },
{ value: 8, text: "历史" }
{ value: 8, text: "历史" },
]);
const subject2 = ref<ComboModel[]>([
{ value: 5, text: "化学" },
{ value: 6, text: "生物" },
{ value: 9, text: "地理" },
{ value: 7, text: "政治" }
{ value: 7, text: "政治" },
]);
const emit = defineEmits(["handlePagedCallback"]);
@ -284,7 +276,7 @@ const subjectList = ref<ComboModel[]>([]);
const positionEnumList = ref<ComboModel[]>([
{ text: "年级主任", value: 3 },
{ text: "班主任", value: 4 },
{ text: "科任老师", value: 5 }
{ text: "科任老师", value: 5 },
]);
function schoolChange(p: Position) {
p.graduationYear = null;
@ -303,9 +295,9 @@ function getClass(p: Position) {
const data = {
schoolId: p.schoolId || 0,
graduationYear: p.graduationYear || 0,
grade: p.grade
grade: p.grade,
};
getClassCombo(data).then(res => {
getClassCombo(data).then((res) => {
if (res.code === 200) {
p.classList = res.data;
}
@ -324,7 +316,7 @@ const defaultSubjectLevel = reactive({
Subject7: 0,
Subject8: 0,
Subject9: 0,
CreatePositionId: 1
CreatePositionId: 1,
});
const form = ref<FormData>({
@ -342,14 +334,14 @@ const form = ref<FormData>({
subjectLevels: [],
subjectLevel: { ...defaultSubjectLevel },
positionIds: [],
positionFormIds: []
positionFormIds: [],
});
const dialog = reactive<DialogConfig>({
close: false,
title: "",
visible: false,
width: "1200px"
width: "1200px",
});
const customeRules = reactive({
@ -358,13 +350,13 @@ const customeRules = reactive({
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号码格式不正确",
trigger: "blur"
}
]
trigger: "blur",
},
],
});
function positionClose(p: Position) {
positionList.value = positionList.value.filter(s => s != p);
positionList.value = positionList.value.filter((s) => s != p);
}
const AddPositionArr: Position[] = [];
@ -379,9 +371,9 @@ function AddPosition() {
subjectId: null,
positionType: 2,
positionLevel: null,
status: true
status: true,
};
let p1 = p as unknown as Position;
let p1 = (p as unknown) as Position;
form.value.positionList.push(p1);
AddPositionArr.push(p1);
positionList.value.push(p1);
@ -402,11 +394,11 @@ const handleSubmitForm = async () => {
}
try {
loading.value = true;
const postIdArr = positionList.value.map(s => s.id).filter(s => s != null);
const postIdArr = positionList.value.map((s) => s.id).filter((s) => s != null);
const addPArr = positionList.value
.filter(s => s.id == null)
.map(s => {
.filter((s) => s.id == null)
.map((s) => {
return {
positionLevel: s.positionLevel,
subjectId: s.subjectId,
@ -414,7 +406,7 @@ const handleSubmitForm = async () => {
classId: s.classId,
positionType: 2,
gradeLevel: s.grade[0],
graduationYear: parseInt(s.grade.slice(1, 5))
graduationYear: parseInt(s.grade.slice(1, 5)),
};
});
if (addPArr.length > 0) {
@ -432,8 +424,9 @@ const handleSubmitForm = async () => {
const formData = {
...form.value,
account: form.value.phone || "",
positionIds: postIdArr
account: form.value.account || "",
phone: form.value.phone || "",
positionIds: postIdArr,
};
const res = await editUser(formData);
@ -465,7 +458,7 @@ const handleResetForm = () => {
idCard: "",
phone: "",
cloudSchoolId: "",
pointPenSN: ""
pointPenSN: "",
});
positionList.value = [];
};
@ -478,9 +471,7 @@ const fetchInitData = async () => {
userTypeList.value = typeRes.data;
schoolList.value = (await getSchoolData()).data;
subjectList.value = (await getenum("SubjectEnum")).data.filter(
s => s.value < 10
);
subjectList.value = (await getenum("SubjectEnum")).data.filter((s) => s.value < 10);
// //
// const schoolRes = await cloudSchoolCombo();
@ -495,7 +486,7 @@ const fetchInitData = async () => {
const fetchFormData = () => {
handleResetForm();
if (props.id !== 0) {
getUserInfo(props.id).then(res => {
getUserInfo(props.id).then((res) => {
if (res.code === 200) {
if (res.data.SubjectLevel && res.data.SubjectLevel.CreatePositionId) {
delete res.data.SubjectLevel.CreatePositionId;
@ -529,7 +520,7 @@ const fetchFormData = () => {
phone: res.data.phone,
cloudSchoolId: res.data.cloudSchoolId,
pointPenSN: res.data.pointPenSN,
positionList: positionList.value ?? []
positionList: positionList.value ?? [],
});
positionList.value = res.data.positions
.filter((s: Position) => s.enable)
@ -560,17 +551,17 @@ const CheckPosition = () => {
dialog.title = "选择职位";
dialog.visible = true;
PositionFormIds.value = positionList.value
.filter(s => s.enable !== false)
.map(s => s.id);
.filter((s) => s.enable !== false)
.map((s) => s.id);
};
const handleCheckCallback = (checkPosition: Position[]) => {
dialog.visible = false;
positionList.value = checkPosition.map(s => {
positionList.value = checkPosition.map((s) => {
s.enable = true;
return s;
});
form.value.positionIds = positionList.value.map(w => w.id);
form.value.positionIds = positionList.value.map((w) => w.id);
};
onMounted(async () => {
@ -599,6 +590,7 @@ onMounted(async () => {
margin-right: 0px !important;
margin-bottom: 10px !important;
}
.subjectTagEnableDiv .el-select {
margin-right: 5px;
}
@ -612,14 +604,17 @@ onMounted(async () => {
background-color: #909399;
color: white;
}
.classTag {
color: #a3bf08 !important;
background-color: #f4fbd1 !important;
border-color: #f4fbd1 !important;
}
.subjectTagEnableDiv {
padding: 1px;
}
.subjectTag {
color: #eb0de4 !important;
background-color: #fbd9ff !important;