|
@@ -26,6 +26,7 @@
|
|
|
</a-form-item>
|
|
|
<a-form-item label="角色">
|
|
|
<a-select v-model:value="query.role" placeholder="用户角色">
|
|
|
+ <a-select-option :value="void 0">全部</a-select-option>
|
|
|
<a-select-option value="SCHOOL_ADMIN">{{
|
|
|
ROLE.SCHOOL_ADMIN
|
|
|
}}</a-select-option>
|
|
@@ -149,7 +150,11 @@
|
|
|
:disabled="!!userInfo.id"
|
|
|
v-model:value="userInfo.loginName"
|
|
|
maxlength="11"
|
|
|
- placeholder="请输入登录手机号"
|
|
|
+ :placeholder="
|
|
|
+ userInfo.role === 'SECTION_LEADER'
|
|
|
+ ? '请输入登录手机号'
|
|
|
+ : '请输入登录名'
|
|
|
+ "
|
|
|
></a-input>
|
|
|
</a-form-item>
|
|
|
<a-form-item
|
|
@@ -250,7 +255,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts" name="PageUsers">
|
|
|
-import { reactive, ref, watch } from "vue";
|
|
|
+import { nextTick, reactive, ref, watch, markRaw } from "vue";
|
|
|
import {
|
|
|
PlusCircleOutlined,
|
|
|
CheckCircleFilled,
|
|
@@ -304,6 +309,7 @@ const userInfo = reactive<
|
|
|
name: "",
|
|
|
loginName: "",
|
|
|
course: "",
|
|
|
+ passwd: void 0,
|
|
|
role: void 0,
|
|
|
id: void 0,
|
|
|
schoolTableData: { totalCount: 0, result: [] },
|
|
@@ -314,13 +320,14 @@ const resetPwd = reactive({
|
|
|
userId: "",
|
|
|
});
|
|
|
|
|
|
-const userRules = {
|
|
|
- schoolId: [{ required: true, message: "请选择用户所属学校" }],
|
|
|
+const editUserRules = () => ({
|
|
|
name: [{ required: true, message: "请填写用户姓名" }],
|
|
|
- loginName: [
|
|
|
- { required: true, message: "请填写登录手机号" },
|
|
|
- { pattern: /\d{11}/, message: "请填写正确的手机号" },
|
|
|
- ],
|
|
|
+ role: [{ required: true, message: "请选择用户角色" }],
|
|
|
+});
|
|
|
+
|
|
|
+const addUserRules = () => ({
|
|
|
+ schoolId: [{ required: true, message: "请选择用户所属学校" }],
|
|
|
+ loginName: [{ required: true, message: "请填写登录名" }],
|
|
|
passwd: [
|
|
|
{ required: true, message: "请填写登录密码" },
|
|
|
{
|
|
@@ -328,8 +335,12 @@ const userRules = {
|
|
|
message: "密码只能由数字、字母组成,长度6-18个字符",
|
|
|
},
|
|
|
],
|
|
|
- role: [{ required: true, message: "请选择用户角色" }],
|
|
|
-};
|
|
|
+});
|
|
|
+
|
|
|
+const userRules = reactive({
|
|
|
+ ...addUserRules(),
|
|
|
+ ...editUserRules(),
|
|
|
+});
|
|
|
|
|
|
const pwdRules = {
|
|
|
passwd: [
|
|
@@ -424,11 +435,18 @@ const querySchoolList = throttle(
|
|
|
|
|
|
/** 显示新增用户弹窗 */
|
|
|
const toggleAddUserModal = (show: boolean = true) => {
|
|
|
- showModal.value = show;
|
|
|
if (show) {
|
|
|
- Object.assign(userInfo, { schoolId: mainStore.systemUserInfo?.schoolId });
|
|
|
+ if (userInfo.id) {
|
|
|
+ Object.assign(userRules, { schoolId: [], loginName: [], passwd: [] });
|
|
|
+ } else {
|
|
|
+ Object.assign(userInfo, { schoolId: query.schoolId || mainStore.systemUserInfo?.schoolId });
|
|
|
+ Object.assign(userRules, { ...addUserRules() });
|
|
|
+ }
|
|
|
querySchoolList("", "form");
|
|
|
}
|
|
|
+ nextTick(() => {
|
|
|
+ showModal.value = show;
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
/** 查询用户列表 */
|
|
@@ -471,6 +489,23 @@ const onResetPwd = (record: UserInfo) => {
|
|
|
|
|
|
/** 新增用户 */
|
|
|
const onPutUser = () => {
|
|
|
+ const role = userInfo.role;
|
|
|
+ const isEdit = !!userInfo.id;
|
|
|
+ if (!isEdit) {
|
|
|
+ if (role === "SECTION_LEADER") {
|
|
|
+ Object.assign(userRules, {
|
|
|
+ loginName: [
|
|
|
+ { required: true, message: "请填写登录手机号" },
|
|
|
+ // @ts-ignore
|
|
|
+ { pattern: /\d{11}/, message: "请填写正确的手机号" },
|
|
|
+ ],
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ Object.assign(userRules, {
|
|
|
+ loginName: [{ required: true, message: "请填写登录名" }],
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
validate().then((valid) => {
|
|
|
if (valid) {
|
|
|
const { role, course, schoolTableData, ...info } = userInfo;
|
|
@@ -479,7 +514,7 @@ const onPutUser = () => {
|
|
|
role,
|
|
|
course: role === "SECTION_LEADER" ? course : "",
|
|
|
}).then(() => {
|
|
|
- message.success(`${userInfo.id ? "修改" : "添加"}成功`);
|
|
|
+ message.success(`${isEdit ? "修改" : "添加"}成功`);
|
|
|
queryUserList();
|
|
|
toggleAddUserModal(false);
|
|
|
});
|
|
@@ -491,7 +526,7 @@ const onPutUser = () => {
|
|
|
const importUserList = () => {
|
|
|
showImportModal.value = true;
|
|
|
Object.assign(importUserForm, {
|
|
|
- schoolId: mainStore.systemUserInfo?.schoolId,
|
|
|
+ schoolId: query.schoolId || mainStore.systemUserInfo?.schoolId,
|
|
|
});
|
|
|
querySchoolList("", "import");
|
|
|
};
|