【招生主控端】 修复# 1、支持用户修改账号密码;2、修改标题名称
parent
1c912f58a5
commit
40c084c1f6
|
@ -1,11 +1,10 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>粤好生活-后台管理系统</title>
|
<title>易客云-后台管理系统</title>
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -42,7 +41,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes loading-dash {
|
@keyframes loading-dash {
|
||||||
|
|
||||||
0% {
|
0% {
|
||||||
stroke-dasharray: 90, 150;
|
stroke-dasharray: 90, 150;
|
||||||
stroke-dashoffset: -40px;
|
stroke-dashoffset: -40px;
|
||||||
|
@ -67,5 +65,4 @@
|
||||||
</div>
|
</div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
Binary file not shown.
|
@ -8,7 +8,7 @@
|
||||||
*/
|
*/
|
||||||
const config = {
|
const config = {
|
||||||
terminal: 1, //终端
|
terminal: 1, //终端
|
||||||
title: '粤好生活-后台管理系统', //网站默认标题
|
title: '易客云-后台管理系统', //网站默认标题
|
||||||
version: '1.3.3', //版本号
|
version: '1.3.3', //版本号
|
||||||
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
|
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
|
||||||
urlPrefix: 'api', //请求默认前缀
|
urlPrefix: 'api', //请求默认前缀
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<footer class="layout-footer bg-[#f5f5f5] bg-opacity-90 text-center">
|
<footer class="layout-footer bg-[#f5f5f5] bg-opacity-90 text-center">
|
||||||
<div class="p-2 text-xs text-tx-secondary max-w-[900px] mx-auto">
|
<div class="p-2 text-xs text-tx-secondary max-w-[900px] mx-auto">
|
||||||
<a href="http://beian.miit.gov.cn" class="my-[10px]">Copyright © 2023 粤ICP备2023059183号 - 广东粤好生活服务有限公司版权所有</a>
|
<a href="http://beian.miit.gov.cn" class="my-[10px]">Copyright © 2023 粤ICP备2023059183号 - 广东合创云科技有限公司版权所有</a>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -34,20 +34,20 @@ export const constantRoutes: Array<RouteRecordRaw> = [
|
||||||
path: PageEnum.LOGIN,
|
path: PageEnum.LOGIN,
|
||||||
component: () => import('@/views/account/login.vue')
|
component: () => import('@/views/account/login.vue')
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// path: '/user',
|
path: '/user',
|
||||||
// component: LAYOUT,
|
component: LAYOUT,
|
||||||
// children: [
|
children: [
|
||||||
// {
|
{
|
||||||
// path: 'setting',
|
path: 'setting',
|
||||||
// name: Symbol(),
|
name: Symbol(),
|
||||||
// component: () => import('@/views/user/setting.vue'),
|
component: () => import('@/views/user/setting.vue'),
|
||||||
// meta: {
|
meta: {
|
||||||
// title: '个人设置'
|
title: '个人设置'
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// ]
|
]
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
path: '/dev_tools',
|
path: '/dev_tools',
|
||||||
component: LAYOUT,
|
component: LAYOUT,
|
||||||
|
|
|
@ -6,7 +6,15 @@
|
||||||
<el-input v-model="formData.account" placeholder="请输入账号名称" clearable :maxlength="20" show-word-limit />
|
<el-input v-model="formData.account" placeholder="请输入账号名称" clearable :maxlength="20" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="formData.id == ''" label="账号密码" prop="password">
|
<el-form-item v-if="formData.id == ''" label="账号密码" prop="password">
|
||||||
<el-input v-model="formData.password" placeholder="请输入账号密码" clearable :maxlength="20" show-word-limit />
|
<el-input
|
||||||
|
v-model="formData.password"
|
||||||
|
placeholder="请输入账号密码"
|
||||||
|
clearable
|
||||||
|
:maxlength="20"
|
||||||
|
show-word-limit
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="客户名称" prop="clientName">
|
<el-form-item label="客户名称" prop="clientName">
|
||||||
<el-input v-model="formData.clientName" placeholder="请输入客户名称" clearable :maxlength="20" show-word-limit />
|
<el-input v-model="formData.clientName" placeholder="请输入客户名称" clearable :maxlength="20" show-word-limit />
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>粤好生活-后台管理系统</title>
|
<title>易客云-后台管理系统</title>
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -40,7 +40,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes loading-dash {
|
@keyframes loading-dash {
|
||||||
|
|
||||||
0% {
|
0% {
|
||||||
stroke-dasharray: 90, 150;
|
stroke-dasharray: 90, 150;
|
||||||
stroke-dashoffset: -40px;
|
stroke-dashoffset: -40px;
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
<!-- 个人资料 -->
|
||||||
|
<template>
|
||||||
|
<div class="user-setting">
|
||||||
|
<el-card class="!border-none" shadow="never">
|
||||||
|
<el-form ref="formRef" class="ls-form" :model="formData" :rules="rules" label-width="100px">
|
||||||
|
<el-form-item label="头像:" prop="avatar">
|
||||||
|
<material-picker v-model="formData.avatar" :limit="1" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="账号:" prop="username">
|
||||||
|
<div class="w-80">
|
||||||
|
<el-input v-model="formData.username" disabled />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="名称:" prop="nickname">
|
||||||
|
<div class="w-80">
|
||||||
|
<el-input v-model="formData.nickname" placeholder="请输入名称" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="当前密码:" prop="currPassword">
|
||||||
|
<div class="w-80">
|
||||||
|
<el-input v-model.trim="formData.currPassword" placeholder="修改密码时必填, 不修改密码时留空" type="password" show-password />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="新的密码:" prop="password">
|
||||||
|
<div class="w-80">
|
||||||
|
<el-input v-model.trim="formData.password" placeholder="修改密码时必填, 不修改密码时留空" type="password" show-password />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="确定密码:" prop="passwordConfirm">
|
||||||
|
<div class="w-80">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="formData.passwordConfirm"
|
||||||
|
placeholder="修改密码时必填, 不修改密码时留空"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<footer-btns v-perms="['setting.web.web_setting/setAgreement']">
|
||||||
|
<el-button type="primary" @click="handleSubmit">保存</el-button>
|
||||||
|
</footer-btns>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { setUserInfo } from '@/api/user'
|
||||||
|
import useUserStore from '@/stores/modules/user'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
const formRef = ref<FormInstance>()
|
||||||
|
const userStore = useUserStore()
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
avatar: '', // 头像
|
||||||
|
username: '', // 账号
|
||||||
|
nickname: '', // 名称
|
||||||
|
currPassword: '', // 当前密码
|
||||||
|
password: '', // 新的密码
|
||||||
|
passwordConfirm: '' // 确定密码
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单校验规则
|
||||||
|
const rules = reactive<object>({
|
||||||
|
avatar: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '头像不能为空',
|
||||||
|
trigger: ['change']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
nickname: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取个人设置
|
||||||
|
const getUser = async () => {
|
||||||
|
const userInfo = userStore.userInfo
|
||||||
|
for (const key in formData) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = userInfo[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置个人设置
|
||||||
|
const setUser = async () => {
|
||||||
|
if (formData.currPassword || formData.password || formData.passwordConfirm) {
|
||||||
|
if (!formData.currPassword) {
|
||||||
|
return feedback.msgError('请输入当前密码')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formData.password) {
|
||||||
|
return feedback.msgError('请输入新的密码')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formData.passwordConfirm) {
|
||||||
|
return feedback.msgError('请输入确定密码')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formData.passwordConfirm != formData.password) {
|
||||||
|
return feedback.msgError('两次输入的密码不一样')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formData.currPassword && formData.password && formData.passwordConfirm) {
|
||||||
|
if (formData.currPassword.length < 6 || formData.currPassword.length > 32) {
|
||||||
|
return feedback.msgError('密码长度在6到32之间')
|
||||||
|
}
|
||||||
|
if (formData.password.length < 6 || formData.password.length > 32) {
|
||||||
|
return feedback.msgError('密码长度在6到32之间')
|
||||||
|
}
|
||||||
|
if (formData.passwordConfirm.length < 6 || formData.passwordConfirm.length > 32) {
|
||||||
|
return feedback.msgError('密码长度在6到32之间')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await setUserInfo(formData)
|
||||||
|
userStore.getUserInfo()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交数据
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
await setUser()
|
||||||
|
userStore.logout()
|
||||||
|
}
|
||||||
|
|
||||||
|
getUser()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
Loading…
Reference in New Issue