用户管理新增修改密码功能

This commit is contained in:
zCans
2022-11-25 17:32:50 +08:00
parent 1a3da96267
commit 781d308c09
3 changed files with 112 additions and 9 deletions
+2 -1
View File
@@ -139,7 +139,8 @@ export default {
jobLogMsg: '执行日志',
alarmStatus: '报警状态',
ip: 'IP',
happendTime: '发生时间'
happendTime: '发生时间',
updatePwd: '修改密码'
},
errorLog: {
tips: '请点击右上角bug小图标',
@@ -0,0 +1,82 @@
<template>
<div>
<el-dialog title="修改密码"
:visible.sync="visible"
:close-on-click-modal="false"
:before-close="onCancel"
>
<el-form :rules="rules" ref='form' :model="formData" label-position="left" label-width="70px" style='width: 400px margin-left:50px'>
<el-form-item label="登录名" prop="loginName">
<el-input v-model="formData.loginName" disabled/>
</el-form-item>
<el-form-item label="新密码" prop="loginPassword">
<el-input v-model="formData.loginPassword"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="updatePwd">确定</el-button>
<el-button @click="onCancel">取消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { updatePassword } from '@/api/user'
export default {
name: 'updatePwd',
props: {
row: Object,
visible: Boolean
},
data() {
return {
formData: {
id: undefined,
loginName: undefined,
loginPassword: undefined
},
rules: {
loginName: [
{ required: true, message: '用户名', trigger: 'blur' }
],
loginPassword: [
{ required: true, message: '密码必填', trigger: 'blur' },
{ min: 6, max: 10, message: '密码长度为 6 到 10 位之间', trigger: 'blur' }
]
}
}
},
watch: {
visible(val) {
if (val) {
this.getRow()
}
}
},
methods: {
getRow() {
this.formData.id = this.row.id
this.formData.loginName = this.row.loginName
this.formData.loginPassword = ''
},
updatePwd() {
this.$refs['form'].validate(valid => {
if (valid) {
updatePassword(this.formData).then(res => {
console.log(res)
if (res.data.code === 0) {
this.$message.success('修改成功')
this.onCancel()
}
})
}
})
},
onCancel() {
this.$emit('cancel')
}
}
}
</script>
+28 -8
View File
@@ -2,7 +2,7 @@
<div class="app-container calendar-list-container">
<div class="filter-container">
<el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">{{$t('table.search')}}</el-button>
<el-button class="filter-item" style="margin-left: 10px;" @click="handleCreate" type="primary" icon="el-icon-edit">{{$t('table.add')}}</el-button>
<el-button class="filter-item" style="margin-left: 10px" @click="handleCreate" type="primary" icon="el-icon-edit">{{$t('table.add')}}</el-button>
</div>
<el-table :key='tableKey' :data="list" v-loading="listLoading" element-loading-text="给我一点时间" border fit highlight-current-row
@@ -37,14 +37,14 @@
<el-tag :type="scope.row.enable | statusFilter">{{scope.row.enable | statusName}}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" :label="$t('table.actions')" width="230" class-name="small-padding fixed-width">
<el-table-column align="center" :label="$t('table.actions')" :width="loginName === 'admin' ? 320 : 230" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">{{$t('table.edit')}}</el-button>
<el-button v-if="scope.row.enable =='1'" size="mini" type="danger" @click="handleModifyStatus(scope.row,2)">{{$t('table.disable')}}</el-button>
<el-button v-if="scope.row.enable =='2'" size="mini" type="success" @click="handleModifyStatus(scope.row,1)">{{$t('table.enable')}}</el-button>
<el-button v-if="scope.row.enable === 1" size="mini" type="danger" @click="handleModifyStatus(scope.row,2)">{{$t('table.disable')}}</el-button>
<el-button v-if="scope.row.enable === 2" size="mini" type="success" @click="handleModifyStatus(scope.row,1)">{{$t('table.enable')}}</el-button>
<el-button v-if="loginName === 'admin'" type="warning" size="mini" @click="handleUpdatePassword(scope.row)" style="width: 70px">{{$t('table.updatePwd')}}</el-button>
<!-- <el-button size="mini" type="danger" @click="handleDelete(scope.row,'deleted')">{{$t('table.delete')}}</el-button>-->
<ButtonPopover @handleCommitClick="handleDelete2(scope.row)" style="margin-left: 10px"/>
</template>
</el-table-column>
</el-table>
@@ -56,7 +56,7 @@
</div>
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
<el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="70px" style='width: 400px; margin-left:50px;'>
<el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="70px" style='width: 400px margin-left:50px'>
<el-form-item :label="$t('用户名')" prop="name">
<el-input v-model="temp.name"></el-input>
</el-form-item>
@@ -81,6 +81,8 @@
</span>
</el-dialog>
<UpdatePwd :row="selectRow" :visible="updatePwdvisible" @cancel="handleCancel"></UpdatePwd>
</div>
</template>
@@ -89,6 +91,8 @@
import waves from '@/directive/waves' // 水波纹指令
import { parseTime } from '@/utils'
import ButtonPopover from '../../components/Button/buttonPopover'
import UpdatePwd from './components/update-pwd'
import { mapGetters } from 'vuex'
const calendarTypeOptions = [
{ key: 'CN', display_name: 'China' },
@@ -108,8 +112,14 @@
directives: {
waves
},
computed: {
...mapGetters([
'loginName'
])
},
components: {
ButtonPopover
ButtonPopover,
UpdatePwd
},
data() {
return {
@@ -150,7 +160,9 @@
name: [{ required: true, message: '用户名必填', trigger: 'blur' }],
loginName: [{ required: true, message: '登录名必填', trigger: 'blur' }]
},
downloadLoading: false
downloadLoading: false,
updatePwdvisible: false,
selectRow: null
}
},
filters: {
@@ -327,6 +339,14 @@
return v[j]
}
}))
},
handleUpdatePassword(row) {
this.selectRow = row
this.updatePwdvisible = true
},
handleCancel() {
this.updatePwdvisible = false
this.selectRow = null
}
}
}