Compare commits
No commits in common. "0b8cd890bac0f19695af9fb73423aab8a9273a7c" and "eed44c4c684c80050355f676906806d42b9069b4" have entirely different histories.
0b8cd890ba
...
eed44c4c68
|
|
@ -73,7 +73,7 @@ export default defineConfig([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
...tseslint.config({
|
...tseslint.config({
|
||||||
extends: [...tseslint.configs.recommended, "plugin:prettier/recommended"],
|
extends: [...tseslint.configs.recommended],
|
||||||
files: ["**/*.?([cm])ts", "**/*.?([cm])tsx"],
|
files: ["**/*.?([cm])ts", "**/*.?([cm])tsx"],
|
||||||
rules: {
|
rules: {
|
||||||
"@typescript-eslint/no-redeclare": "error",
|
"@typescript-eslint/no-redeclare": "error",
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,11 @@ import type {
|
||||||
import { stringify } from "qs";
|
import { stringify } from "qs";
|
||||||
import NProgress from "../progress";
|
import NProgress from "../progress";
|
||||||
import { getToken, formatToken } from "@/utils/auth";
|
import { getToken, formatToken } from "@/utils/auth";
|
||||||
import { useUserStore, useUserStoreHook } from "@/store/modules/user";
|
import { useUserStoreHook } from "@/store/modules/user";
|
||||||
// import { string } from "vue-types";
|
// import { string } from "vue-types";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { message } from "../message";
|
import { message } from "../message";
|
||||||
import { store } from "@/store";
|
|
||||||
|
|
||||||
/**请求后端的地址 未配置则访问BaseURL */
|
/**请求后端的地址 未配置则访问BaseURL */
|
||||||
const apiServiceConfig = {
|
const apiServiceConfig = {
|
||||||
|
|
@ -209,10 +208,6 @@ class PureHttp {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/error/403"
|
path: "/error/403"
|
||||||
});
|
});
|
||||||
}if (error.response?.status == 401) {
|
|
||||||
debugger;
|
|
||||||
ElMessage.warning("登录信息失效,请重新登录!");
|
|
||||||
return useUserStore(store).logOut();
|
|
||||||
}
|
}
|
||||||
// 所有的响应异常 区分来源为取消请求/非取消请求
|
// 所有的响应异常 区分来源为取消请求/非取消请求
|
||||||
return Promise.reject($error);
|
return Promise.reject($error);
|
||||||
|
|
@ -240,13 +235,13 @@ class PureHttp {
|
||||||
.request(config)
|
.request(config)
|
||||||
.then((response: any) => {
|
.then((response: any) => {
|
||||||
if (response.code != null && response.code !== 200) {
|
if (response.code != null && response.code !== 200) {
|
||||||
|
|
||||||
message(response.message, { type: "error" });
|
message(response.message, { type: "error" });
|
||||||
}
|
} resolve(response);
|
||||||
resolve(response);
|
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (error.status != 200) {
|
if (error.status != 200) {
|
||||||
ElMessage.warning("请求失败: " + error.message);
|
ElMessage.warning("请求失败" + error.message);
|
||||||
}
|
}
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -3,23 +3,17 @@
|
||||||
<el-form ref="userEditForm" :model="form" :label-width="formLabelWidth" clearable>
|
<el-form ref="userEditForm" :model="form" :label-width="formLabelWidth" clearable>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="姓名:" prop="realName" :rules="ruleRequired">
|
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
|
||||||
<el-input
|
<el-input type="text" v-model="form.phone" />
|
||||||
v-model="form.realName"
|
|
||||||
type="text"
|
|
||||||
autocomplete="off"
|
|
||||||
maxlength="20"
|
|
||||||
:show-word-limit="true"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="职务:" prop="studentId">
|
<el-form-item label="姓名:" prop="realName" :rules="ruleRequired">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.studentId"
|
|
||||||
type="text"
|
type="text"
|
||||||
|
v-model="form.realName"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
maxlength="16"
|
maxlength="20"
|
||||||
:show-word-limit="true"
|
:show-word-limit="true"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -28,13 +22,14 @@
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="账号" :rules="ruleRequiredI(20, 6)" prop="account">
|
<el-form-item label="职务:" prop="studentId">
|
||||||
<el-input v-model="form.account" type="text" />
|
<el-input
|
||||||
</el-form-item>
|
type="text"
|
||||||
</el-col>
|
v-model="form.studentId"
|
||||||
<el-col :span="12">
|
autocomplete="off"
|
||||||
<el-form-item label="电话号码" :rules="rulePhone" prop="phone">
|
maxlength="16"
|
||||||
<el-input v-model="form.phone" type="text" />
|
:show-word-limit="true"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -50,7 +45,7 @@
|
||||||
>提示:任职信息所有项值<span class="text-red-500">必填</span>,
|
>提示:任职信息所有项值<span class="text-red-500">必填</span>,
|
||||||
如若查询不到对应班级,请先添加
|
如若查询不到对应班级,请先添加
|
||||||
</span>
|
</span>
|
||||||
<el-form ref="positionEditForm" :model="positionList" inline>
|
<el-form :model="positionList" inline ref="positionEditForm">
|
||||||
<div
|
<div
|
||||||
v-for="(position, index) in positionList"
|
v-for="(position, index) in positionList"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
|
@ -63,15 +58,15 @@
|
||||||
class="mr-[5px]!"
|
class="mr-[5px]!"
|
||||||
type="danger"
|
type="danger"
|
||||||
:icon="Delete"
|
:icon="Delete"
|
||||||
circle
|
|
||||||
@click="positionClose(position)"
|
@click="positionClose(position)"
|
||||||
|
circle
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :prop="`${index}.positionLevel`" :rules="ruleRequired">
|
<el-form-item :prop="`${index}.positionLevel`" :rules="ruleRequired">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="position.positionLevel"
|
|
||||||
:disabled="position.id != undefined"
|
:disabled="position.id != undefined"
|
||||||
class="w-[100px]!"
|
class="w-[100px]!"
|
||||||
|
v-model="position.positionLevel"
|
||||||
placeholder="类型"
|
placeholder="类型"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
|
@ -81,15 +76,16 @@
|
||||||
: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 :prop="`${index}.schoolId`" :rules="ruleRequired">
|
<el-form-item :prop="`${index}.schoolId`" :rules="ruleRequired">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="position.schoolId"
|
|
||||||
:disabled="position.id != undefined"
|
:disabled="position.id != undefined"
|
||||||
class="w-[250px]!"
|
class="w-[250px]!"
|
||||||
|
v-model="position.schoolId"
|
||||||
placeholder="学校"
|
placeholder="学校"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
|
@ -100,15 +96,16 @@
|
||||||
: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 :prop="`${index}.grade`" :rules="ruleRequired">
|
<el-form-item :prop="`${index}.grade`" :rules="ruleRequired">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="position.grade"
|
|
||||||
:disabled="position.id != undefined"
|
:disabled="position.id != undefined"
|
||||||
class="w-[150px]!"
|
class="w-[150px]!"
|
||||||
|
v-model="position.grade"
|
||||||
placeholder="年级"
|
placeholder="年级"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
|
@ -119,7 +116,8 @@
|
||||||
: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>
|
||||||
|
|
||||||
|
|
@ -128,10 +126,10 @@
|
||||||
:rules="position.positionLevel > 3 ? ruleRequired : []"
|
:rules="position.positionLevel > 3 ? ruleRequired : []"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-show="position.positionLevel > 3"
|
|
||||||
v-model="position.classId"
|
|
||||||
:disabled="position.id != undefined"
|
:disabled="position.id != undefined"
|
||||||
|
v-show="position.positionLevel > 3"
|
||||||
class="w-[120px]!"
|
class="w-[120px]!"
|
||||||
|
v-model="position.classId"
|
||||||
placeholder="班级"
|
placeholder="班级"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
|
@ -141,7 +139,8 @@
|
||||||
: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>
|
||||||
|
|
||||||
|
|
@ -150,10 +149,10 @@
|
||||||
:rules="position.positionLevel == 5 ? ruleRequired : []"
|
:rules="position.positionLevel == 5 ? ruleRequired : []"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-show="position.positionLevel == 5"
|
|
||||||
v-model="position.subjectId"
|
|
||||||
:disabled="position.id != undefined"
|
:disabled="position.id != undefined"
|
||||||
|
v-show="position.positionLevel == 5"
|
||||||
class="w-[100px]!"
|
class="w-[100px]!"
|
||||||
|
v-model="position.subjectId"
|
||||||
placeholder="学科"
|
placeholder="学科"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
|
@ -163,7 +162,8 @@
|
||||||
: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>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -192,20 +192,12 @@ import {
|
||||||
import PositionForm from "./positionForm.vue";
|
import PositionForm from "./positionForm.vue";
|
||||||
import { getenum, getenumDic } from "@/api/enum";
|
import { getenum, getenumDic } from "@/api/enum";
|
||||||
import { PosititonIds } from "@/api/student";
|
import { PosititonIds } from "@/api/student";
|
||||||
import { ruleRequired, rulePhone, ruleRequiredI } from "@/utils/rules";
|
import { ruleRequired, rulePhone } from "@/utils/rules";
|
||||||
import { ElMessage, FormInstance } from "element-plus";
|
import { ElMessage, FormInstance } from "element-plus";
|
||||||
import { ComboModel, gradeComboModel } from "@/components/hTable/hTable";
|
import { ComboModel, gradeComboModel } from "@/components/hTable/hTable";
|
||||||
import {
|
import { Check, Delete, Edit, Message, Search, Star } from "@element-plus/icons-vue";
|
||||||
Check,
|
|
||||||
Delete,
|
|
||||||
Edit,
|
|
||||||
Message,
|
|
||||||
Phone,
|
|
||||||
Search,
|
|
||||||
Star,
|
|
||||||
} from "@element-plus/icons-vue";
|
|
||||||
import { de } from "element-plus/es/locales.mjs";
|
import { de } from "element-plus/es/locales.mjs";
|
||||||
import { request } from "node_modules/axios/index.cjs";
|
|
||||||
interface FormData {
|
interface FormData {
|
||||||
id: number;
|
id: number;
|
||||||
account: string;
|
account: string;
|
||||||
|
|
@ -424,8 +416,7 @@ const handleSubmitForm = async () => {
|
||||||
|
|
||||||
const formData = {
|
const formData = {
|
||||||
...form.value,
|
...form.value,
|
||||||
account: form.value.account || "",
|
account: form.value.phone || "",
|
||||||
phone: form.value.phone || "",
|
|
||||||
positionIds: postIdArr,
|
positionIds: postIdArr,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -590,7 +581,6 @@ onMounted(async () => {
|
||||||
margin-right: 0px !important;
|
margin-right: 0px !important;
|
||||||
margin-bottom: 10px !important;
|
margin-bottom: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subjectTagEnableDiv .el-select {
|
.subjectTagEnableDiv .el-select {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
@ -604,17 +594,14 @@ onMounted(async () => {
|
||||||
background-color: #909399;
|
background-color: #909399;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.classTag {
|
.classTag {
|
||||||
color: #a3bf08 !important;
|
color: #a3bf08 !important;
|
||||||
background-color: #f4fbd1 !important;
|
background-color: #f4fbd1 !important;
|
||||||
border-color: #f4fbd1 !important;
|
border-color: #f4fbd1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subjectTagEnableDiv {
|
.subjectTagEnableDiv {
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subjectTag {
|
.subjectTag {
|
||||||
color: #eb0de4 !important;
|
color: #eb0de4 !important;
|
||||||
background-color: #fbd9ff !important;
|
background-color: #fbd9ff !important;
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,6 @@
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="search.searchStr" placeholder="姓名/账号/学号" />
|
<el-input v-model="search.searchStr" placeholder="姓名/账号/学号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="search.phone" placeholder="手机号" />
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item style="width: 100px">
|
<!-- <el-form-item style="width: 100px">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="search.userType"
|
v-model="search.userType"
|
||||||
|
|
@ -273,8 +270,7 @@ import {
|
||||||
Message,
|
Message,
|
||||||
ArrowDownBold,
|
ArrowDownBold,
|
||||||
Search,
|
Search,
|
||||||
Star,
|
Star
|
||||||
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";
|
||||||
|
|
@ -284,7 +280,6 @@ const schoolsAPI = new hTableAPI("usercenter/back/schools");
|
||||||
|
|
||||||
interface SearchParams {
|
interface SearchParams {
|
||||||
searchStr: string;
|
searchStr: string;
|
||||||
phone: string;
|
|
||||||
userType: string | number;
|
userType: string | number;
|
||||||
level: string | number;
|
level: string | number;
|
||||||
schoolId: string | number;
|
schoolId: string | number;
|
||||||
|
|
@ -373,7 +368,6 @@ const selectUserTable = ref();
|
||||||
|
|
||||||
const search = reactive<SearchParams>({
|
const search = reactive<SearchParams>({
|
||||||
searchStr: "",
|
searchStr: "",
|
||||||
phone: "",
|
|
||||||
userType: "",
|
userType: "",
|
||||||
level: "",
|
level: "",
|
||||||
schoolId: "",
|
schoolId: "",
|
||||||
|
|
@ -577,7 +571,6 @@ const getClass = () => {
|
||||||
const fetchPagedData = (searchUnUse = false) => {
|
const fetchPagedData = (searchUnUse = false) => {
|
||||||
const data = {
|
const data = {
|
||||||
SearchStr: search.searchStr,
|
SearchStr: search.searchStr,
|
||||||
Phone: search.phone,
|
|
||||||
UserType: 2,
|
UserType: 2,
|
||||||
Level: search.level || 0,
|
Level: search.level || 0,
|
||||||
SchoolId: search.schoolId || 0,
|
SchoolId: search.schoolId || 0,
|
||||||
|
|
@ -722,6 +715,7 @@ 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("所有数据录入成功");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue