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

添加修改密码功能

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