wangqing 5 years ago
parent
commit
2a831d70bb
  1. 2
      src/components/tinymce/index.vue
  2. 6
      src/utils/constants.js
  3. 19
      src/views/account/ForgetPwd.vue
  4. 34
      src/views/account/login.vue
  5. 124
      src/views/account/member.vue
  6. 13
      src/views/form/editor.vue

2
src/components/tinymce/index.vue

@ -35,7 +35,7 @@ export default {
let conf = { let conf = {
selector: `#${this.tinymceId}`, selector: `#${this.tinymceId}`,
language: 'zh_CN', language: 'zh_CN',
menubar: 'file edit insert view format table', menubar: 'false',
plugins, plugins,
toolbar, toolbar,
height: 300, height: 300,

6
src/utils/constants.js

@ -1,3 +1,7 @@
export default { export default {
signSecret: '916lWh2WMcbSWiHv' //签名秘钥
signSecret: '916lWh2WMcbSWiHv',
//密码正则
passwordReg: /^.{6,}$/,
passwordRegDesc: '密码最少为6位字符'
} }

19
src/views/account/ForgetPwd.vue

@ -93,6 +93,7 @@
<script> <script>
// //
import Verify from '@/components/verifition/Verify' import Verify from '@/components/verifition/Verify'
import constants from '@/utils/constants'
export default { export default {
name: 'RetrievePwd', name: 'RetrievePwd',
@ -100,16 +101,6 @@ export default {
Verify Verify
}, },
data() { data() {
let validatePassword = (rule, value, callback) => {
if (value.length < 6) {
callback(new Error('密码最少为6位数'))
} else {
if (this.resetPwdForm.rePassword !== '') {
this.$refs['resetPwdForm'].validateField('rePassword')
}
callback()
}
}
let validateRePass = (rule, value, callback) => { let validateRePass = (rule, value, callback) => {
if (value === '') { if (value === '') {
callback(new Error('请再次输入密码')) callback(new Error('请再次输入密码'))
@ -156,7 +147,13 @@ export default {
] ]
}, },
pwdRules: { pwdRules: {
password: [{required: true, trigger: 'blur', validator: validatePassword}], password: [
{required: true, trigger: 'blur', message: '请输入新密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
],
rePassword: [{required: true, trigger: 'blur', validator: validateRePass}] rePassword: [{required: true, trigger: 'blur', validator: validateRePass}]
} }
} }

34
src/views/account/login.vue

@ -218,6 +218,7 @@
import {getCurrentDomain} from '@/utils' import {getCurrentDomain} from '@/utils'
// //
import Verify from '@/components/verifition/Verify' import Verify from '@/components/verifition/Verify'
import constants from '@/utils/constants'
export default { export default {
name: 'Login', name: 'Login',
@ -225,16 +226,7 @@ export default {
Verify Verify
}, },
data() { data() {
const validatePassword = (rule, value, callback) => {
// /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{10,20}$/
if (value.length < 6) {
callback(new Error('密码最少为6位数'))
} else {
callback()
}
}
const validateAccount = (rule, value, callback) => { const validateAccount = (rule, value, callback) => {
// /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{10,20}$/
const reg1 = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/ const reg1 = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
const reg2 = /^(?:0|86|\+86)?1[3456789]\d{9}$/ const reg2 = /^(?:0|86|\+86)?1[3456789]\d{9}$/
if (reg1.test(value) || reg2.test(value)) { if (reg1.test(value) || reg2.test(value)) {
@ -260,7 +252,13 @@ export default {
message: '请输入正确的手机号' message: '请输入正确的手机号'
} }
], ],
password: [{required: true, trigger: 'blur', validator: validatePassword}], password: [
{required: true, trigger: 'blur', message: '请输入新密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
],
code: {required: true, trigger: 'blur', message: '请输入验证码'} code: {required: true, trigger: 'blur', message: '请输入验证码'}
}, },
emailRegRules: { emailRegRules: {
@ -271,13 +269,25 @@ export default {
message: '请输入正确的邮箱' message: '请输入正确的邮箱'
} }
], ],
password: [{required: true, trigger: 'blur', validator: validatePassword}], password: [
{required: true, trigger: 'blur', message: '请输入新密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
],
code: {required: true, trigger: 'blur', message: '请输入验证码'} code: {required: true, trigger: 'blur', message: '请输入验证码'}
}, },
accountLoginRules: { accountLoginRules: {
account: [ account: [
{required: true, trigger: 'blur', message: '请输入账号'}, {trigger: 'blur', validator: validateAccount}], {required: true, trigger: 'blur', message: '请输入账号'}, {trigger: 'blur', validator: validateAccount}],
password: [{required: true, trigger: 'blur', validator: validatePassword}] password: [
{required: true, trigger: 'blur', message: '请输入新密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
]
}, },
accountForm: { accountForm: {
email: '', email: '',

124
src/views/account/member.vue

@ -18,14 +18,14 @@
<td width="80" style="text-align: right;">账号邮箱</td> <td width="80" style="text-align: right;">账号邮箱</td>
<td> <td>
{{ userInfo.email }} {{ userInfo.email }}
<el-link type="primary">绑定</el-link> <el-link type="primary" @click="emailDialogVisible=true">绑定</el-link>
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="80" style="text-align: right;">密码</td> <td width="80" style="text-align: right;">密码</td>
<td> <td>
****** ******
<el-link type="primary">修改</el-link> <el-link type="primary" @click="pwdDialogVisible=true">修改</el-link>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -82,39 +82,66 @@
</div> </div>
</el-card> </el-card>
<el-dialog <el-dialog
title="提示" title="修改用户名"
:visible.sync="editDialogVisible" :visible.sync="editNameDialogVisible"
width="30%" width="30%"
center center
> >
<el-form ref="form" :model="userInfo" label-width="80px"> <el-form ref="form" :model="userInfo" :rules="userInfoRules" label-width="80px">
<el-form-item label="新用户名"> <el-form-item label="新用户名" prop="name">
<el-input v-model="userInfo.name" /> <el-input v-model="userInfo.name" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false"> </el-button>
<el-button type="primary" <el-button type="primary"
@click="()=>{this.editDialogVisible = false;this.updateUserHandle()}" @click="()=>{this.editNameDialogVisible = false;this.updateUserHandle()}"
> </el-button> >保存</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title="提示" title="修改密码"
:visible.sync="pwdDialogVisible" :visible.sync="pwdDialogVisible"
width="30%" width="30%"
center center
> >
<el-form ref="form" :model="userInfo" label-width="80px"> <el-form ref="form"
<el-form-item label="新用户名"> style="width: 80%;"
<el-input v-model="userInfo.name" /> :model="userPwdForm" :rules="userPwdRules" label-width="120px"
>
<el-form-item label="输入旧密码" prop="oldPassword">
<el-input v-model="userPwdForm.oldPassword" placeholder="请输入旧密码" show-password />
</el-form-item>
<el-form-item label="输入新密码" prop="password">
<el-input v-model="userPwdForm.password" placeholder="请输入新密码" show-password />
</el-form-item>
<el-form-item label="重复输入密码" prop="repeatPassword">
<el-input v-model="userPwdForm.repeatPassword" placeholder="请重复输入密码" show-password />
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="pwdDialogVisible = false"> </el-button>
<el-button type="primary" <el-button type="primary"
@click="()=>{this.pwdDialogVisible = false;this.updateUserHandle()}" @click="()=>{this.pwdDialogVisible = false;this.updateUserPwdHandle()}"
> </el-button> > </el-button>
</span>
</el-dialog>
<el-dialog
title="修改邮箱"
:visible.sync="emailDialogVisible"
width="30%"
center
>
<el-form ref="form"
style="width: 80%;"
:model="userInfo" :rules="userInfoRules" label-width="80px"
>
<el-form-item label="邮箱" prop="email">
<el-input v-model="userInfo.email" placeholder="请输入邮箱" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary"
@click="()=>{this.pwdDialogVisible = false;this.sendUpdateEmail()}"
>发送验证邮件</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -122,6 +149,7 @@
<script> <script>
import myUpload from 'vue-image-crop-upload' import myUpload from 'vue-image-crop-upload'
import constants from '@/utils/constants'
export default { export default {
name: 'Member', name: 'Member',
@ -129,9 +157,56 @@ export default {
myUpload myUpload
}, },
data() { data() {
let validateRePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请再次输入密码'))
} else if (value !== this.resetPwdForm.rePassword) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
}
return { return {
editDialogVisible: false, userInfoRules: {
name: [
{required: true, trigger: 'blur', message: '请输入昵称'}
],
email: [
{required: true, trigger: 'blur', message: '请输入邮箱'},
{
pattern: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/,
message: '请输入正确的邮箱'
}
]
},
userPwdRules: {
oldPassword: [
{required: true, trigger: 'blur', message: '请输入旧密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
],
password: [
{required: true, trigger: 'blur', message: '请输入新密码'},
{
pattern: constants.passwordReg,
message: constants.passwordRegDesc
}
],
repeatPassword: [
{required: true, trigger: 'blur', validator: validateRePass}
]
},
editNameDialogVisible: false,
pwdDialogVisible: false,
emailDialogVisible: false,
userInfo: {}, userInfo: {},
userPwdForm: {
oldPassword: '',
password: '',
repeatPassword: ''
},
showUploadAvatar: false showUploadAvatar: false
} }
}, },
@ -151,6 +226,21 @@ export default {
getUploadUrl() { getUploadUrl() {
return `${process.env.VUE_APP_API_ROOT}/user/file/upload` return `${process.env.VUE_APP_API_ROOT}/user/file/upload`
}, },
updateUserPwdHandle() {
this.$api.post('/user/update/password', this.userPwdForm).then(res => {
if (res.data) {
console.log(res.data)
this.msgSuccess('修改成功')
}
})
},
sendUpdateEmail() {
this.$api.get('/update/email', {params: {email: this.userInfo.email}}).then(res => {
if (res.data) {
this.msgSuccess('发送成功')
}
})
},
updateUserHandle() { updateUserHandle() {
this.$api.post('/user/update', this.userInfo).then(res => { this.$api.post('/user/update', this.userInfo).then(res => {
if (res.data) { if (res.data) {

13
src/views/form/editor.vue

@ -48,12 +48,13 @@
</el-row> </el-row>
<el-row type="flex" justify="center" align="middle"> <el-row type="flex" justify="center" align="middle">
<el-col :span="20" style="text-align: center"> <el-col :span="20" style="text-align: center">
<p class="form-name-text" contenteditable="true" <Tinymce v-model="formConf.description" :height="300" placeholder="请输入表单描述" />
@blur="(event)=>{ <!-- <p class="form-name-text" contenteditable="true"-->
formConf.description=event.target.innerText; <!-- @blur="(event)=>{-->
this.saveProjectInfo()}"> <!-- formConf.description=event.target.innerText;-->
{{ formConf.description }} <!-- this.saveProjectInfo()}">-->
</p> <!-- {{ formConf.description }}-->
<!-- </p>-->
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider></el-divider>

Loading…
Cancel
Save