| | |
| | | <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> |
| | | <div v-show="showSearch" class="mb-[10px]"> |
| | | <el-card shadow="hover"> |
| | | <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="68px"> |
| | | <el-form ref="queryFormRef" :model="queryParams" :inline="true"> |
| | | <el-form-item label="用户名称" prop="userName"> |
| | | <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter="handleQuery" /> |
| | | <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable @keyup.enter="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="手机号码" prop="phonenumber"> |
| | | <el-input |
| | | v-model="queryParams.phonenumber" |
| | | placeholder="请输入手机号码" |
| | | clearable |
| | | style="width: 240px" |
| | | @keyup.enter="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px"> |
| | | <el-select v-model="queryParams.status" placeholder="用户状态" clearable > |
| | | <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <el-table-column v-if="columns[0].visible" key="userId" label="用户编号" align="center" prop="userId" /> |
| | | <el-table-column v-if="columns[1].visible" key="userName" label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" /> |
| | | <el-table-column v-if="columns[2].visible" key="nickName" label="用户昵称" align="center" prop="nickName" :show-overflow-tooltip="true" /> |
| | | <el-table-column |
| | | v-if="columns[3].visible" |
| | | key="deptName" |
| | | label="部门" |
| | | align="center" |
| | | prop="dept.deptName" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column v-if="columns[3].visible" key="deptName" label="部门" align="center" prop="deptName" :show-overflow-tooltip="true" /> |
| | | <el-table-column v-if="columns[4].visible" key="phonenumber" label="手机号码" align="center" prop="phonenumber" width="120" /> |
| | | <el-table-column v-if="columns[5].visible" key="status" label="状态" align="center"> |
| | | <template #default="scope"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="角色"> |
| | | <el-form-item label="角色" prop="roleIds"> |
| | | <el-select v-model="form.roleIds" multiple placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in roleOptions" |
| | |
| | | <script setup name="User" lang="ts"> |
| | | import api from '@/api/system/user'; |
| | | import { UserForm, UserQuery, UserVO } from '@/api/system/user/types'; |
| | | import { treeselect } from '@/api/system/dept'; |
| | | import { DeptVO } from '@/api/system/dept/types'; |
| | | import { RoleVO } from '@/api/system/role/types'; |
| | | import { PostVO } from '@/api/system/post/types'; |
| | | import { to } from 'await-to-js'; |
| | | import { treeselect } from '@/api/system/dept'; |
| | | import { globalHeaders } from '@/utils/request'; |
| | | import { to } from 'await-to-js'; |
| | | |
| | | const router = useRouter(); |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | | const { sys_normal_disable, sys_user_sex } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'sys_user_sex')); |
| | | |
| | | const userList = ref<UserVO[]>(); |
| | | const loading = ref(true); |
| | | const showSearch = ref(true); |
| | |
| | | postIds: [], |
| | | roleIds: [] |
| | | }; |
| | | const data = reactive<PageData<UserForm, UserQuery>>({ |
| | | |
| | | const initData: PageData<UserForm, UserQuery> = { |
| | | form: { ...initFormData }, |
| | | queryParams: { |
| | | pageNum: 1, |
| | |
| | | userName: '', |
| | | phonenumber: '', |
| | | status: '', |
| | | deptId: '' |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | rules: { |
| | | userName: [ |
| | |
| | | max: 20, |
| | | message: '用户密码长度必须介于 5 和 20 之间', |
| | | trigger: 'blur' |
| | | } |
| | | }, |
| | | { pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" } |
| | | ], |
| | | email: [ |
| | | { |
| | |
| | | message: '请输入正确的手机号码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | ], |
| | | roleIds: [{ required: true, message: '用户角色不能为空', trigger: 'blur' }] |
| | | } |
| | | }); |
| | | }; |
| | | const data = reactive<PageData<UserForm, UserQuery>>(initData); |
| | | |
| | | const { queryParams, form, rules } = toRefs<PageData<UserForm, UserQuery>>(data); |
| | | |
| | |
| | | cancelButtonText: '取消', |
| | | closeOnClickModal: false, |
| | | inputPattern: /^.{5,20}$/, |
| | | inputErrorMessage: '用户密码长度必须介于 5 和 20 之间' |
| | | inputErrorMessage: '用户密码长度必须介于 5 和 20 之间', |
| | | inputValidator: (value) => { |
| | | if (/<|>|"|'|\||\\/.test(value)) { |
| | | return "不能包含非法字符:< > \" ' \\\ |" |
| | | } |
| | | } |
| | | }) |
| | | ); |
| | | if (!err) { |
| | | if (!err && res) { |
| | | await api.resetUserPwd(row.userId, res.value); |
| | | proxy?.$modal.msgSuccess('修改成功,新密码是:' + res.value); |
| | | } |