对接注册 忘记密码接口
This commit is contained in:
parent
9e96ecddcf
commit
6cfeb735d5
|
@ -44,6 +44,19 @@ export function delUser(userId) {
|
|||
})
|
||||
}
|
||||
|
||||
// 忘记密码重置
|
||||
export function resetPwd(userId, password) {
|
||||
const data = {
|
||||
userId,
|
||||
password
|
||||
}
|
||||
return request({
|
||||
url: '/system/user/resetPwd',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 用户密码重置
|
||||
export function resetUserPwd(userId, password) {
|
||||
const data = {
|
||||
|
|
|
@ -15,99 +15,109 @@
|
|||
</template>
|
||||
<el-form ref="registerRef" :model="registerForm" :rules="registerRules" label-width="100"
|
||||
label-position="left">
|
||||
<el-form-item label="工号:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="工号:" prop="workNo">
|
||||
<el-input v-model="registerForm.workNo"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="属地:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="邮箱:" prop="email">
|
||||
<el-input v-model="registerForm.email"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="属地ESC:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="属地:" prop="dependencyId">
|
||||
<el-select v-model="registerForm.dependencyId" filterable placeholder="请选择属地" @change="selectChanged">
|
||||
<el-option v-for="item in busDependencyData" :key="item.id" :label="item.dependencyName"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="ESC邮箱:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="属地ESC:" prop="escUserName">
|
||||
<el-input v-model="registerForm.escUserName"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="ESC邮箱:" prop="escEmail">
|
||||
<el-input v-model="registerForm.escEmail"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="新密码:" prop="password">
|
||||
<el-input v-model="registerForm.password" type="password" auto-complete="off"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="新密码:" prop="code">
|
||||
<el-input v-model="registerForm.code" type="password" auto-complete="off"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="确认密码:" prop="code">
|
||||
<el-input v-model="registerForm.code" type="password" auto-complete="off"> </el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="el-register-footer">
|
||||
<el-button class="submitApplyBtn">提交</el-button>
|
||||
<el-button class="submitApplyBtn" @click="handleRegister">提交</el-button>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { ElMessageBox } from "element-plus"
|
||||
import { getCodeImg, register } from "@/api/login"
|
||||
import systemlogo from '@/assets/logo/systemLogo.png'
|
||||
import { resetPwd } from "@/api/system/user"
|
||||
import { getBusDependencyPage } from "@/api/system/dependency"
|
||||
|
||||
const router = useRouter()
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
const registerForm = ref({
|
||||
username: "",
|
||||
password: "",
|
||||
confirmPassword: "",
|
||||
code: "",
|
||||
uuid: ""
|
||||
workNo: null,
|
||||
email: null,
|
||||
dependencyId: null,
|
||||
escUserName: null,
|
||||
escEmail: null,
|
||||
password: null
|
||||
})
|
||||
|
||||
const equalToPassword = (rule, value, callback) => {
|
||||
if (registerForm.value.password !== value) {
|
||||
callback(new Error("两次输入的密码不一致"))
|
||||
} else {
|
||||
callback()
|
||||
const registerRules = {
|
||||
workNo: [{ required: true, message: "工号不能为空", trigger: "blur" }],
|
||||
password: [{ required: true, message: "新密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "登录密码长度必须介于 5 和 20 之间", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }],
|
||||
email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
|
||||
deptId: [{ required: true, message: "请选择归属部门", trigger: ["change"] }],
|
||||
sectionId: [{ required: true, message: "请选择科室", trigger: ["change"] }],
|
||||
dependencyId: [{ required: true, message: "请选择属地", trigger: ["change"] }],
|
||||
escEmail: [{ required: true, type: "email", message: "ESC邮箱不能为空", trigger: ["blur", "change"] }],
|
||||
}
|
||||
|
||||
const loading = ref(false)
|
||||
|
||||
// 属地选择切换
|
||||
const selectChanged = (value) => {
|
||||
if (value) {
|
||||
const curDependency = busDependencyData.value.find(item => item.id == value)
|
||||
registerForm.value.escUserName = curDependency.escUserName
|
||||
registerForm.value.escEmail = curDependency.escEmail
|
||||
}
|
||||
}
|
||||
|
||||
const registerRules = {
|
||||
username: [
|
||||
{ required: true, trigger: "blur", message: "请输入您的账号" },
|
||||
{ min: 2, max: 20, message: "用户账号长度必须介于 2 和 20 之间", trigger: "blur" }
|
||||
],
|
||||
password: [
|
||||
{ required: true, trigger: "blur", message: "请输入您的密码" },
|
||||
{ min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" },
|
||||
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
|
||||
],
|
||||
confirmPassword: [
|
||||
{ required: true, trigger: "blur", message: "请再次输入您的密码" },
|
||||
{ required: true, validator: equalToPassword, trigger: "blur" }
|
||||
],
|
||||
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getBusDependencyData();
|
||||
});
|
||||
|
||||
// 属地数据
|
||||
const busDependencyData = ref([])
|
||||
// 获取属地数据
|
||||
const getBusDependencyData = () => {
|
||||
getBusDependencyPage({
|
||||
pageIndex: 1,
|
||||
pageSize: 100,
|
||||
}).then(response => {
|
||||
if (response.code == 200) {
|
||||
busDependencyData.value = response.data.list
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const codeUrl = ref("")
|
||||
const loading = ref(false)
|
||||
const captchaEnabled = ref(true)
|
||||
|
||||
function handleRegister() {
|
||||
const handleRegister = () => {
|
||||
proxy.$refs.registerRef.validate(valid => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
register(registerForm.value).then(res => {
|
||||
const username = registerForm.value.username
|
||||
ElMessageBox.alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", "系统提示", {
|
||||
resetPwd(registerForm.value).then(res => {
|
||||
ElMessageBox.alert("<font color='red'>恭喜你,您的密码重置成功!</font>", "系统提示", {
|
||||
dangerouslyUseHTMLString: true,
|
||||
type: "success",
|
||||
}).then(() => {
|
||||
router.push("/login")
|
||||
}).catch(() => { })
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
if (captchaEnabled) {
|
||||
getCode()
|
||||
}
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
|
@ -15,111 +15,182 @@
|
|||
</template>
|
||||
<el-form ref="registerRef" :model="registerForm" :rules="registerRules" label-width="100"
|
||||
label-position="left">
|
||||
<el-form-item label="工号:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="工号:" prop="workNo">
|
||||
<el-input v-model="registerForm.workNo" placeholder="请输入员工工号" @input="handleInput" />
|
||||
</el-form-item>
|
||||
<el-form-item label="账号:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="账号:" prop="username">
|
||||
<el-input v-model="registerForm.username"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码:" prop="code">
|
||||
<el-input v-model="registerForm.code" type="password" auto-complete="off"> </el-input>
|
||||
<el-form-item label="密码:" prop="password">
|
||||
<el-input v-model="registerForm.password" type="password" auto-complete="off"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="邮箱:" prop="email">
|
||||
<el-input v-model="registerForm.email"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="中文姓名:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="中文姓名:" prop="nickName">
|
||||
<el-input v-model="registerForm.nickName"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="英文姓名:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="英文姓名:" prop="englishName">
|
||||
<el-input v-model="registerForm.englishName"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="部门:" prop="deptId">
|
||||
<el-tree-select v-model="registerForm.deptId" :data="enabledDeptOptions"
|
||||
:props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="请选择部门"
|
||||
check-strictly />
|
||||
</el-form-item>
|
||||
<el-form-item label="科室:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="科室:" prop="sectionId">
|
||||
<el-select v-model="registerForm.sectionId" filterable placeholder="请选择科室">
|
||||
<el-option v-for="item in sectionData" :key="item.sectionId" :label="item.sectionName"
|
||||
:value="item.sectionId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="属地:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="属地:" prop="dependencyId">
|
||||
<el-select v-model="registerForm.dependencyId" filterable placeholder="请选择属地" @change="selectChanged">
|
||||
<el-option v-for="item in busDependencyData" :key="item.id" :label="item.dependencyName"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="属地ESC:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="属地ESC:">
|
||||
<el-input v-model="registerForm.escUserName"> </el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="ESC邮箱:" prop="code">
|
||||
<el-input v-model="registerForm.code"> </el-input>
|
||||
<el-form-item label="ESC邮箱:" prop="escEmail">
|
||||
<el-input v-model="registerForm.escEmail"> </el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="el-register-footer">
|
||||
<el-button class="submitApplyBtn">立即注册</el-button>
|
||||
<el-button v-loading="loading" class="submitApplyBtn" @click="handleRegister">立即注册</el-button>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { ElMessageBox } from "element-plus"
|
||||
import { getCodeImg, register } from "@/api/login"
|
||||
import { register } from "@/api/login"
|
||||
import systemlogo from '@/assets/logo/systemLogo.png'
|
||||
import { getBusDependencyPage } from "@/api/system/dependency"
|
||||
import { deptTreeSelect } from "@/api/system/user"
|
||||
import { getSysSectionPage } from "@/api/system/section"
|
||||
|
||||
const router = useRouter()
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
const registerForm = ref({
|
||||
username: "",
|
||||
password: "",
|
||||
confirmPassword: "",
|
||||
code: "",
|
||||
uuid: ""
|
||||
workNo: null,
|
||||
nickName: null,
|
||||
englishName: null,
|
||||
username: null,
|
||||
password: null,
|
||||
email: null,
|
||||
deptId: null,
|
||||
sectionId: null,
|
||||
dependencyId: null,
|
||||
escUserName: null,
|
||||
escEmail: null,
|
||||
})
|
||||
|
||||
const equalToPassword = (rule, value, callback) => {
|
||||
if (registerForm.value.password !== value) {
|
||||
callback(new Error("两次输入的密码不一致"))
|
||||
} else {
|
||||
callback()
|
||||
const registerRules = {
|
||||
workNo: [{ required: true, message: "工号不能为空", trigger: "blur" }],
|
||||
nickName: [{ required: true, message: "中文姓名不能为空", trigger: "blur" }, { min: 2, max: 20, message: "中文姓名长度必须介于 2 和 20 之间", trigger: "blur" }],
|
||||
englishName: [{ required: true, message: "英文姓名不能为空", trigger: "blur" }, { min: 2, max: 20, message: "英文姓名长度必须介于 2 和 20 之间", trigger: "blur" }],
|
||||
username: [{ required: true, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "登录账号长度必须介于 2 和 20 之间", trigger: "blur" }],
|
||||
password: [{ required: true, message: "登录密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "登录密码长度必须介于 5 和 20 之间", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }],
|
||||
email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
|
||||
deptId: [{ required: true, message: "请选择归属部门", trigger: ["change"] }],
|
||||
sectionId: [{ required: true, message: "请选择科室", trigger: ["change"] }],
|
||||
dependencyId: [{ required: true, message: "请选择属地", trigger: ["change"] }],
|
||||
escEmail: [{ required: true, type: "email", message: "ESC邮箱不能为空", trigger: ["blur", "change"] }],
|
||||
}
|
||||
// 工号输入后 自动关联账号
|
||||
const handleInput = (value) => {
|
||||
registerForm.value.username = value
|
||||
}
|
||||
// 属地选择切换
|
||||
const selectChanged = (value) => {
|
||||
if (value) {
|
||||
const curDependency = busDependencyData.value.find(item => item.id == value)
|
||||
console.log('选择属地信息', curDependency)
|
||||
registerForm.value.escUserName = curDependency.escUserName
|
||||
registerForm.value.escEmail = curDependency.escEmail
|
||||
}
|
||||
}
|
||||
|
||||
const registerRules = {
|
||||
username: [
|
||||
{ required: true, trigger: "blur", message: "请输入您的账号" },
|
||||
{ min: 2, max: 20, message: "用户账号长度必须介于 2 和 20 之间", trigger: "blur" }
|
||||
],
|
||||
password: [
|
||||
{ required: true, trigger: "blur", message: "请输入您的密码" },
|
||||
{ min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" },
|
||||
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
|
||||
],
|
||||
confirmPassword: [
|
||||
{ required: true, trigger: "blur", message: "请再次输入您的密码" },
|
||||
{ required: true, validator: equalToPassword, trigger: "blur" }
|
||||
],
|
||||
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
|
||||
const loading = ref(false)
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getSysSectionData();
|
||||
getBusDependencyData();
|
||||
getDeptTree();
|
||||
});
|
||||
// 科室数据
|
||||
const sectionData = ref([])
|
||||
// 获取科室数据
|
||||
const getSysSectionData = () => {
|
||||
getSysSectionPage({
|
||||
pageIndex: 1,
|
||||
pageSize: 100,
|
||||
}).then(res => {
|
||||
if (res.code == 200) {
|
||||
sectionData.value = res.data.list
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const codeUrl = ref("")
|
||||
const loading = ref(false)
|
||||
const captchaEnabled = ref(true)
|
||||
// 属地数据
|
||||
const busDependencyData = ref([])
|
||||
// 获取属地数据
|
||||
const getBusDependencyData = () => {
|
||||
getBusDependencyPage({
|
||||
pageIndex: 1,
|
||||
pageSize: 100,
|
||||
}).then(response => {
|
||||
if (response.code == 200) {
|
||||
busDependencyData.value = response.data.list
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function handleRegister() {
|
||||
// 部门数据
|
||||
const enabledDeptOptions = ref(undefined)
|
||||
// 获取部门数据
|
||||
const getDeptTree = () => {
|
||||
deptTreeSelect().then(res => {
|
||||
enabledDeptOptions.value = filterDisabledDept(JSON.parse(JSON.stringify(res.data)))
|
||||
})
|
||||
}
|
||||
/** 过滤禁用的部门 */
|
||||
const filterDisabledDept = (deptList) => {
|
||||
return deptList.filter(dept => {
|
||||
if (dept.disabled) {
|
||||
return false
|
||||
}
|
||||
if (dept.children && dept.children.length) {
|
||||
dept.children = filterDisabledDept(dept.children)
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const handleRegister = () => {
|
||||
proxy.$refs.registerRef.validate(valid => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
register(registerForm.value).then(res => {
|
||||
console.log('注册结果', res)
|
||||
const username = registerForm.value.username
|
||||
ElMessageBox.alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", "系统提示", {
|
||||
dangerouslyUseHTMLString: true,
|
||||
type: "success",
|
||||
}).then(() => {
|
||||
router.push("/login")
|
||||
window.close();
|
||||
}).catch(() => { })
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
if (captchaEnabled) {
|
||||
getCode()
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue
Block a user