staging #32
|
|
@ -1,17 +1,22 @@
|
|||
<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 type="text" v-model="form.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
|
||||
type="text"
|
||||
v-model="form.realName"
|
||||
type="text"
|
||||
autocomplete="off"
|
||||
maxlength="20"
|
||||
:show-word-limit="true"
|
||||
|
|
@ -24,8 +29,8 @@
|
|||
<el-col :span="12">
|
||||
<el-form-item label="职务:" prop="studentId">
|
||||
<el-input
|
||||
type="text"
|
||||
v-model="form.studentId"
|
||||
type="text"
|
||||
autocomplete="off"
|
||||
maxlength="16"
|
||||
:show-word-limit="true"
|
||||
|
|
@ -35,8 +40,14 @@
|
|||
</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>
|
||||
|
|
@ -45,7 +56,7 @@
|
|||
>提示:任职信息所有项值<span class="text-red-500">必填</span>,
|
||||
如若查询不到对应班级,请先添加
|
||||
</span>
|
||||
<el-form :model="positionList" inline ref="positionEditForm">
|
||||
<el-form ref="positionEditForm" :model="positionList" inline>
|
||||
<div
|
||||
v-for="(position, index) in positionList"
|
||||
:key="index"
|
||||
|
|
@ -58,15 +69,18 @@
|
|||
class="mr-[5px]!"
|
||||
type="danger"
|
||||
:icon="Delete"
|
||||
@click="positionClose(position)"
|
||||
circle
|
||||
@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"
|
||||
class="w-[100px]!"
|
||||
v-model="position.positionLevel"
|
||||
placeholder="类型"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -76,16 +90,15 @@
|
|||
:key="item.value"
|
||||
:label="item.text"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :prop="`${index}.schoolId`" :rules="ruleRequired">
|
||||
<el-select
|
||||
v-model="position.schoolId"
|
||||
:disabled="position.id != undefined"
|
||||
class="w-[250px]!"
|
||||
v-model="position.schoolId"
|
||||
placeholder="学校"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -96,16 +109,15 @@
|
|||
:key="item.value"
|
||||
:label="item.text"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :prop="`${index}.grade`" :rules="ruleRequired">
|
||||
<el-select
|
||||
v-model="position.grade"
|
||||
:disabled="position.id != undefined"
|
||||
class="w-[150px]!"
|
||||
v-model="position.grade"
|
||||
placeholder="年级"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -116,8 +128,7 @@
|
|||
:key="item.value"
|
||||
:label="item.text"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
|
@ -126,10 +137,10 @@
|
|||
:rules="position.positionLevel > 3 ? ruleRequired : []"
|
||||
>
|
||||
<el-select
|
||||
:disabled="position.id != undefined"
|
||||
v-show="position.positionLevel > 3"
|
||||
class="w-[120px]!"
|
||||
v-model="position.classId"
|
||||
:disabled="position.id != undefined"
|
||||
class="w-[120px]!"
|
||||
placeholder="班级"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -139,8 +150,7 @@
|
|||
:key="item.value"
|
||||
:label="item.text"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
|
@ -149,10 +159,10 @@
|
|||
:rules="position.positionLevel == 5 ? ruleRequired : []"
|
||||
>
|
||||
<el-select
|
||||
:disabled="position.id != undefined"
|
||||
v-show="position.positionLevel == 5"
|
||||
class="w-[100px]!"
|
||||
v-model="position.subjectId"
|
||||
:disabled="position.id != undefined"
|
||||
class="w-[100px]!"
|
||||
placeholder="学科"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -162,8 +172,7 @@
|
|||
:key="item.value"
|
||||
:label="item.text"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
|
@ -187,7 +196,7 @@ import {
|
|||
editUser,
|
||||
Position,
|
||||
getSchoolData,
|
||||
getClassCombo,
|
||||
getClassCombo
|
||||
} from "@/api/userCenter";
|
||||
import PositionForm from "./positionForm.vue";
|
||||
import { getenum, getenumDic } from "@/api/enum";
|
||||
|
|
@ -195,7 +204,14 @@ import { PosititonIds } from "@/api/student";
|
|||
import { ruleRequired, rulePhone } from "@/utils/rules";
|
||||
import { ElMessage, FormInstance } from "element-plus";
|
||||
import { ComboModel, gradeComboModel } from "@/components/hTable/hTable";
|
||||
import { Check, Delete, Edit, Message, Search, Star } from "@element-plus/icons-vue";
|
||||
import {
|
||||
Check,
|
||||
Delete,
|
||||
Edit,
|
||||
Message,
|
||||
Search,
|
||||
Star
|
||||
} from "@element-plus/icons-vue";
|
||||
import { de } from "element-plus/es/locales.mjs";
|
||||
|
||||
interface FormData {
|
||||
|
|
@ -228,7 +244,7 @@ interface DialogConfig {
|
|||
width: string;
|
||||
}
|
||||
defineOptions({
|
||||
name: "UserEditForm",
|
||||
name: "UserEditForm"
|
||||
});
|
||||
|
||||
const props = defineProps<{
|
||||
|
|
@ -241,14 +257,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"]);
|
||||
|
|
@ -268,7 +284,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;
|
||||
|
|
@ -287,9 +303,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;
|
||||
}
|
||||
|
|
@ -308,7 +324,7 @@ const defaultSubjectLevel = reactive({
|
|||
Subject7: 0,
|
||||
Subject8: 0,
|
||||
Subject9: 0,
|
||||
CreatePositionId: 1,
|
||||
CreatePositionId: 1
|
||||
});
|
||||
|
||||
const form = ref<FormData>({
|
||||
|
|
@ -326,14 +342,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({
|
||||
|
|
@ -342,13 +358,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[] = [];
|
||||
|
|
@ -363,9 +379,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);
|
||||
|
|
@ -386,11 +402,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,
|
||||
|
|
@ -398,7 +414,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) {
|
||||
|
|
@ -417,7 +433,7 @@ const handleSubmitForm = async () => {
|
|||
const formData = {
|
||||
...form.value,
|
||||
account: form.value.phone || "",
|
||||
positionIds: postIdArr,
|
||||
positionIds: postIdArr
|
||||
};
|
||||
|
||||
const res = await editUser(formData);
|
||||
|
|
@ -449,7 +465,7 @@ const handleResetForm = () => {
|
|||
idCard: "",
|
||||
phone: "",
|
||||
cloudSchoolId: "",
|
||||
pointPenSN: "",
|
||||
pointPenSN: ""
|
||||
});
|
||||
positionList.value = [];
|
||||
};
|
||||
|
|
@ -462,7 +478,9 @@ 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();
|
||||
|
|
@ -477,7 +495,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;
|
||||
|
|
@ -511,7 +529,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)
|
||||
|
|
@ -542,17 +560,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 () => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue