提交 7fb823c8 authored 作者: 刘旭's avatar 刘旭

添加修改密码功能

上级 6a06a5af
......@@ -2,13 +2,13 @@ import os, sys
import zipfile
import shutil
cmd = "git clone http://192.168.2.95:8090/xuxu/Lic \t\n"
cmd = "git clone http://192.168.0.27:8090/xuxu/Lic \t\n"
cmd += "cd Lic \t\n"
cmd += "yarn install\t\n"
cmd += "yarn run build\t\n"
cmd += "docker build -t lic-system .\t\n"
cmd += "docker tag lic-system 192.168.2.141:5000/lic-system\t\n"
cmd += "docker push 192.168.2.141:5000/lic-system\t\n"
cmd += "docker tag lic-system 192.168.0.26:5000/lic-system\t\n"
cmd += "docker push 192.168.0.26:5000/lic-system\t\n"
cmd += "cd .. \t\n"
cmd += "rm -r -f Lic \t\n"
......
import httpRequest from "@/services/common";
import { userUrlConfig,authUrlConfig } from '@/services/config';
import {store} from '@/store/index'
import { userUrlConfig, authUrlConfig } from '@/services/config';
import { LoginParm, LoginResult, UserInfo } from "@/services/types/user/userModel";
import { request } from "../config";
export async function getImagApi() {
//获取验证码接口
......@@ -15,22 +15,22 @@ export async function loginApi(params: LoginParm) {
//获取用户信息
export const getInfoApi = async () => {
return await httpRequest.post<UserInfo>(userUrlConfig.getUserInfo,{})
return await httpRequest.post<UserInfo>(userUrlConfig.getUserInfo, {})
}
//添加用户
export const addUser = async (params:any) => {
return await httpRequest.post(userUrlConfig['addUser'],params)
export const addUser = async (params: any) => {
return await httpRequest.post(userUrlConfig['addUser'], params)
}
//编辑用户
export const editUser = async (params:any) => {
return await httpRequest.put(userUrlConfig['editUser'],params)
export const editUser = async (params: any) => {
return await httpRequest.put(userUrlConfig['editUser'], params)
}
//删除用户
export const deleteUser = async (params:any) => {
return await httpRequest.delete(userUrlConfig['deleteUser'],params)
export const deleteUser = async (params: any) => {
return await httpRequest.delete(userUrlConfig['deleteUser'], params)
}
//查询用户(区别与上面的获取用户信息)
......@@ -44,6 +44,15 @@ export const getAllRole = async () => {
}
//查询当前用户的角色
export const findRoleByUser = async (params:any) => {
return await httpRequest.get(authUrlConfig['findRoleByUser'],params)
export const findRoleByUser = async (params: any) => {
return await httpRequest.get(authUrlConfig['findRoleByUser'], params)
}
// 修改用户信息
export const editPassWord = (data: any) => {
return request({
url: '/userAccount/reset_password',
method: 'post',
data
})
}
<template>
<div class="router">
<el-form :inline="true">
<el-form-item label="账号">
<el-input placeholder="账号模糊查询"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary">查询</el-button>
</el-form-item>
</el-form>
<el-form :inline="true">
<el-form-item>
<el-button type="primary" @click="handleAdd">添加用户</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border>
<el-table-column type="selection"></el-table-column>
<el-table-column v-for="i in tableColumn" :label="i.label" :prop="i.prop">
<template #default="scope" v-if="i.prop == 'avatar'">
<el-avatar :src="scope.row.avatar"></el-avatar>
</template>
</el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button type="text" @click="handleEdit(scope)">编辑</el-button>
<el-divider direction="vertical" />
<el-popconfirm title="确认删除?" @confirm="handleDelete(scope)">
<template #reference>
<el-button type="text">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<el-drawer v-model="showDrawer" :title="drawerTitle">
<el-form class="form" ref="form" :rules="rules" :model="formData" size="large" label-position="right" label-width="80px">
<el-form-item v-for="item in formColumn" :prop="item.prop" :label="item.label">
<el-input v-if="item.type == 'input'" v-model="formData[item.prop]" :placeholder="item.placeholder"></el-input>
<el-upload v-if="item.type == 'avatar'">
<img class="avatar" :src="formData[item.prop]" />
</el-upload>
<el-date-picker v-if="item.type == 'date'" v-model="formData[item.prop]" format="YYYY-MM-DD" value-format="YYYY-MM-DD"></el-date-picker>
<el-select v-if="item.type == 'select'" v-model="formData[item.prop]" multiple style="width: 300px">
<el-option v-for="i in roles" :key="i.id" :label="i.roleName" :value="i.id"></el-option>
</el-select>
<div class="user-containter">
<el-form :inline="true">
<el-form-item label="账号">
<el-input placeholder="账号模糊查询"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary">查询</el-button>
</el-form-item>
</el-form>
<el-form :inline="true">
<el-form-item>
<el-button @click="showDrawer = false">关闭</el-button>
<el-button type="primary" @click="handleSubmit">{{drawerTitle}}</el-button>
<el-button type="primary" @click="handleAdd">添加用户</el-button>
</el-form-item>
</el-form>
</el-drawer>
</div>
<el-table :data="tableData" border>
<el-table-column type="selection"></el-table-column>
<el-table-column v-for="i in tableColumn" :label="i.label" :prop="i.prop" :width="i.width" align="center">
<template #default="scope" v-if="i.prop == 'avatar'">
<el-avatar :src="scope.row.avatar"></el-avatar>
</template>
</el-table-column>
<el-table-column label="操作" width="200px" align="center" fixed="right">
<template #default="scope">
<el-button type="text" @click="handleEditPwd(scope.row)">修改密码</el-button>
<el-divider direction="vertical" />
<el-button type="text" @click="handleEdit(scope)">编辑</el-button>
<el-divider direction="vertical" />
<el-popconfirm title="确认删除?" @confirm="handleDelete(scope)">
<template #reference>
<el-button type="text">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<el-drawer v-model="showDrawer" :title="drawerTitle">
<el-form class="form" ref="form" :rules="rules" :model="formData" size="large" label-position="right"
label-width="80px">
<el-form-item v-for="item in formColumn" :prop="item.prop" :label="item.label">
<el-input v-if="item.type == 'input'" v-model="formData[item.prop]" :placeholder="item.placeholder">
</el-input>
<el-upload v-if="item.type == 'avatar'">
<img class="avatar" :src="formData[item.prop]" />
</el-upload>
<el-date-picker v-if="item.type == 'date'" v-model="formData[item.prop]" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
<el-select v-if="item.type == 'select'" v-model="formData[item.prop]" multiple style="width: 300px">
<el-option v-for="i in roles" :key="i.id" :label="i.roleName" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="showDrawer = false">关闭</el-button>
<el-button type="primary" @click="handleSubmit">{{ drawerTitle }}</el-button>
</el-form-item>
</el-form>
</el-drawer>
<el-dialog v-model="showDialog" title="修改密码" width="30%">
<el-form :model="editPwdData" ref="editPwdRef" :rules="rules" label-width="80px">
<el-form-item label="用户账号">
<el-input v-model="editPwdData.account" :disabled="true" />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="editPwdData.password" type="password" show-password clearable
placeholder="请输入密码" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="showDialog = false">取消</el-button>
<el-button type="primary" @click="handlePwdAdd">确认</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import {reactive,ref} from 'vue'
import {addUser,getUserInfo,editUser,deleteUser,getAllRole,findRoleByUser} from '@/services/api/user/userAPI'
import { reactive, ref } from 'vue'
import { addUser, getUserInfo, editUser, deleteUser, getAllRole, findRoleByUser, editPassWord } from '@/services/api/user/userAPI'
import { valid } from 'mockjs';
const showDialog = ref(false)
const editPwdRef = ref()
const editPwdData = ref({
password: '',
account: ''
})
const tableColumn = reactive([
{
label:'用户账号',
prop:'fauthAccount'
label: '用户账号',
prop: 'fauthAccount',
width: ''
},
{
label:'用户名',
prop:'name'
label: '用户名',
prop: 'name',
width: ''
},
{
label:'工号',
prop:'fworkNo'
label: '工号',
prop: 'fworkNo',
width: ''
},
{
label:'工作地点',
prop:'fworkAddr'
label: '工作地点',
prop: 'fworkAddr',
width: ''
},
{
label:'状态',
prop:'fstate'
label: '状态',
prop: 'fstate',
width: ''
},
{
label:'职位',
prop:'fposition'
label: '职位',
prop: 'fposition',
width: ''
},
{
label:'入职日期',
prop:'finductionDate'
label: '入职日期',
prop: 'finductionDate',
width: '155px'
},
{
label:'英文名',
prop:'fenglishName'
label: '英文名',
prop: 'fenglishName',
width: ''
},
{
label:'部门',
prop:'fdept'
label: '部门',
prop: 'fdept',
width: ''
},
{
label:'头像',
prop:'avatar'
label: '头像',
prop: 'avatar',
width: ''
},
{
label:'创建人',
prop:'fcreator'
label: '创建人',
prop: 'fcreator',
width: ''
},
{
label:'创建日期',
prop:'fdate'
label: '创建日期',
prop: 'fdate',
width: '155px'
}
])
let tableData = ref([])
const form = ref()
let formColumn = reactive([
{
label:'用户账号',
prop:'fauthAccount',
type:'input',
placeholder:'请输入用户账号'
label: '用户账号',
prop: 'fauthAccount',
type: 'input',
placeholder: '请输入用户账号'
},
{
label:'用户名',
prop:'name',
type:'input',
placeholder:'请输入用户名'
label: '用户名',
prop: 'name',
type: 'input',
placeholder: '请输入用户名'
},
{
label:'用户介绍',
prop:'introduction',
type:'input',
placeholder:'请输入用户介绍'
label: '用户介绍',
prop: 'introduction',
type: 'input',
placeholder: '请输入用户介绍'
},
{
label:'工号',
prop:'fworkNo',
type:'input',
placeholder:'请输入工号'
label: '工号',
prop: 'fworkNo',
type: 'input',
placeholder: '请输入工号'
},
{
label:'工作地点',
prop:'fworkAddr',
type:'input',
placeholder:'请输入工作地点'
label: '工作地点',
prop: 'fworkAddr',
type: 'input',
placeholder: '请输入工作地点'
},
{
label:'状态',
prop:'fstate',
type:'input',
placeholder:'请输入状态'
label: '状态',
prop: 'fstate',
type: 'input',
placeholder: '请输入状态'
},
{
label:'角色分配',
prop:'roles',
type:'select',
placeholder:'分配角色'
label: '角色分配',
prop: 'roles',
type: 'select',
placeholder: '分配角色'
},
{
label:'职位',
prop:'fposition',
type:'input',
placeholder:'请输入职位'
label: '职位',
prop: 'fposition',
type: 'input',
placeholder: '请输入职位'
},
{
label:'手机',
prop:'fphone',
type:'input',
placeholder:'请输入手机'
label: '手机',
prop: 'fphone',
type: 'input',
placeholder: '请输入手机'
},
{
label:'邮箱',
prop:'fmail',
type:'input',
placeholder:'请输入邮箱'
label: '邮箱',
prop: 'fmail',
type: 'input',
placeholder: '请输入邮箱'
},
{
label:'入职日期',
prop:'finductionDate',
type:'date',
placeholder:'请输入入职日期'
label: '入职日期',
prop: 'finductionDate',
type: 'date',
placeholder: '请输入入职日期'
},
{
label:'英文名',
prop:'fenglishName',
type:'input',
placeholder:'请输入英文名'
label: '英文名',
prop: 'fenglishName',
type: 'input',
placeholder: '请输入英文名'
},
{
label:'部门',
prop:'fdept',
type:'input',
placeholder:'请输入部门'
label: '部门',
prop: 'fdept',
type: 'input',
placeholder: '请输入部门'
},
{
label:'头像',
prop:'avatar',
type:'avatar'
label: '头像',
prop: 'avatar',
type: 'avatar'
}
])
const rules = reactive({
fauthAccount:[
{required: true, message: '请输入用户账号', trigger: 'blur'}
fauthAccount: [
{ required: true, message: '请输入用户账号', trigger: 'blur' }
],
name:[
{required: true, message: '请输入用户名', trigger: 'blur'}
name: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
password:[
{required: true, message: '请输入登录密码', trigger: 'blur'}
password: [
{ required: true, message: '请输入登录密码', trigger: 'blur' }
]
})
let formData = ref<any>({})
......@@ -211,40 +253,59 @@ let showDrawer = ref(false)
let roles = ref<any>([])
function init(){
function init() {
getUserInfo().then((res) => {
if(res.code == 200){
if (res.code == 200) {
tableData.value = res.data.records
}
})
getAllRole().then((res) => {
if(res.code == 200){
if (res.code == 200) {
roles.value = res.data
}
})
}
function handleEdit(scope:any){
function handleEditPwd(row: any) {
editPwdData.value.password = ''
editPwdData.value.account = row.fauthAccount
showDialog.value = true
}
function handlePwdAdd() {
editPwdRef.value?.validate((valid: boolean) => {
if (valid) {
editPassWord(editPwdData.value).then((res: any) => {
if (res.code === 200) {
showDialog.value = false
}
})
}
})
}
function handleEdit(scope: any) {
formData.value = {}
let params = {
userId:scope.row.userId
userId: scope.row.userId
}
findRoleByUser(params).then((res) => {
if(res.code == 200){
if (res.code == 200) {
formData.value.roles = res.data
}
})
for(let i in scope.row){
for (let i in scope.row) {
formData.value[i] = scope.row[i]
}
for(let j in formColumn){
if(formColumn[j].prop == 'password'){
formColumn.splice(Number(j),1)
for (let j in formColumn) {
if (formColumn[j].prop == 'password') {
formColumn.splice(Number(j), 1)
break
}
}
for(let k in formData.value){
if(k == 'password'){
for (let k in formData.value) {
if (k == 'password') {
delete formData[k]
break
}
......@@ -253,24 +314,24 @@ function handleEdit(scope:any){
showDrawer.value = true
}
function handleAdd(){
function handleAdd() {
formData.value = {}
formColumn.splice(1,0,{
label:'登录密码',
prop:'password',
type:'input',
placeholder:'请输入登录密码'
formColumn.splice(1, 0, {
label: '登录密码',
prop: 'password',
type: 'input',
placeholder: '请输入登录密码'
})
drawerTitle.value = '添加'
showDrawer.value = true
}
function handleSubmit(){
if(drawerTitle.value == '添加'){
form.value.validate((valid:boolean) => {
if(valid){
function handleSubmit() {
if (drawerTitle.value == '添加') {
form.value.validate((valid: boolean) => {
if (valid) {
addUser(formData.value).then((res) => {
if(res.code == 200){
if (res.code == 200) {
init()
showDrawer.value = false
}
......@@ -278,11 +339,11 @@ function handleSubmit(){
}
})
}
if(drawerTitle.value == '编辑'){
form.value.validate((valid:boolean) => {
if(valid){
if (drawerTitle.value == '编辑') {
form.value.validate((valid: boolean) => {
if (valid) {
editUser(formData.value).then((res) => {
if(res.code == 200){
if (res.code == 200) {
init()
showDrawer.value = false
}
......@@ -292,12 +353,12 @@ function handleSubmit(){
}
}
function handleDelete(scope:any){
function handleDelete(scope: any) {
let params = {
userId:scope.row.userId
userId: scope.row.userId
}
deleteUser(params).then((res) => {
if(res.code == 200){
if (res.code == 200) {
init()
}
})
......@@ -307,19 +368,25 @@ init()
</script>
<style scoped>
.form{
.user-containter {
padding: 20px;
}
.form {
overflow-x: hidden;
overflow-y: auto;
height: calc(100vh - 120px);
}
.avatar{
.avatar {
width: 120px;
height: 120px;
display: block;
}
.el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
align-items: center;
cursor: pointer;
color: var(--el-color-primary);
align-items: center;
}
</style>
\ No newline at end of file
......@@ -85,7 +85,7 @@ export default ({ command, mode }) => {
// '/foo': '',
// 选项写法
"/lic": {
target: 'http://192.168.2.56:8090/'
target: 'http://192.168.0.37:8090/'
// rewrite: (path) => path.replace(/^\/api/, '')
},
// 正则表达式写法
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论