You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

389 lines
11 KiB

<template>
<div class="tabs">
</div>
<div class="main">
<div class="container system-container panel">
<div class="box">
<div class="left">
<h1>用户姓名</h1>
<input type="text" v-model="state1" class="textInput"/>
<div><img src="/images/search.png" @click="onSearch"></div>
</div>
<div class="right">
<span @click="onAddClick">添加新用户</span>
</div>
</div>
<div class="tableMessage">
<el-table :data="tableData" border style="color: black;">
<el-table-column type="index" label="序号" align="center" width="100px"/>
<el-table-column prop="userName" label="用户姓名" align="center"/>
<el-table-column prop="userAccountNumber" label="用户账号" align="center"/>
<el-table-column prop="userPhone" label="电话" align="center"/>
<el-table-column prop="userEmail" label="邮箱" align="center"/>
<el-table-column prop="operation" label="操作" align="center">
<template #default="scope">
<div class="operation">
<span @click.prevent="onAmendClick(scope.$index, tableData)">修改信息</span>
<!--删除-->
<el-popconfirm
confirm-button-text="确认"
cancel-button-text="取消"
@confirm="confirmEvent(scope.$index, tableData)"
title="确认删除?">
<template #reference>
<span>删除用户</span>
</template>
</el-popconfirm>
</div>
</template>
</el-table-column>
</el-table>
<!---分页-->
<div class="pagination">
<el-pagination background
layout="prev, pager, next"
:total="total"
page-size="2"
@prev-click="prev"
@next-click="next"
@current-change="changEnum">
</el-pagination>
</div>
</div>
</div>
<!--弹出框--->
<el-dialog v-model="dialogFormVisible" :title="title" show-close=false center=true width="900px" top="17%">
<el-form :model="form">
<el-form-item label="用户账号:" :label-width="formLabelWidth" >
<el-input v-model="form.userAccountNumber" autocomplete="off" style="width: 260px" :disabled="isDisabled"></el-input>
</el-form-item>
<el-form-item label="用户密码:" :label-width="formLabelWidth">
<el-input v-model="form.userPassword" autocomplete="off" style="width: 260px" type="password"></el-input>
</el-form-item>
<el-form-item label="电话:" :label-width="formLabelWidth">
<el-input v-model="form.userPhone" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="邮箱:" :label-width="formLabelWidth">
<el-input v-model="form.userEmail" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="用户姓名:" :label-width="formLabelWidth">
<el-input v-model="form.userName" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="submit" style="color:#FFFFFF;">保存</el-button>
<el-button @click="dialogFormVisible = false">取消</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
import { reactive, toRefs } from 'vue';
import { post } from "../uilts/axios";
import { ElMessage } from 'element-plus'
import { format } from '../uilts/String';
export default {
name: 'SystemManagement',
setup() {
let option = reactive({
state1:'',
dialogFormVisible:false,
isDisabled:false,
title:'',
formLabelWidth:"100px",
total:"",
current:1,
size:10,
form:{
userName:'',
userAccountNumber:'',
userPhone:'',
userEmail:'',
userPassword:''
},
tableData:[]
})
const findAllUser= ()=>{
return post("user/findAllUser",{
current:option.current,
size:option.size
}).then((res:any)=>{
option.tableData=res.data
})
}
post('user/findUserCount',{
}).then((res :any)=>{
option.total=res.data
findAllUser()
})
//添加用户
const onAddClick = ()=> {
option.isDisabled=false
option.title = '添加用户'
option.dialogFormVisible = true
option.form = {
userName:'',
userAccountNumber:'',
userPhone:'',
userEmail:'',
userPassword:''
}
}
//修改用户
const onAmendClick = (index, rows)=>{
option.isDisabled = true
option.title = '修改信息'
option.dialogFormVisible = true
option.form = JSON.parse(JSON.stringify(rows[index]))
}
//删除用户
const confirmEvent = (index, rows)=>{
console.log(rows[index].userAccountNumber)
post('user/delUser',{
userAccountNumber:rows[index].userAccountNumber
}).then((res:any)=>{
if (res.error != 0){
ElMessage.error({
message: "删除失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "删除成功",
type: 'success'
});
}
})
}
//图片搜索
const onSearch = ()=> {
post("user/findUserByUserAccountNumber",{
userName: option.state1
}).then((res:any)=>{
option.tableData=[]
option.tableData = option.tableData.concat(res.data)
console.log(res)
})
}
const prev = (e)=>{
option.current= e
findAllUser()
}
const next = (e)=>{
option.current= e
findAllUser()
}
const changEnum =(e)=>{
option.current= e
findAllUser()
}
const verify = () => {
let errors = [];
if (option.form.userAccountNumber == null || option.form.userAccountNumber.trim() == ""){
errors.push("用户账号");
}
if (option.form.userPassword == null || option.form.userPassword.trim() == ""){
errors.push("用户密码");
}
if (option.form.userName == null || option.form.userName.trim() == ""){
errors.push("用户姓名");
}
if (errors.length > 0){
ElMessage.error({
message: format("{0}不能为空", errors.join(", ")),
type: 'error'
});
}
return errors.length > 0;
}
const submit = ()=> {
if (verify()) return;
if(option.title === '修改信息'){
post("user/updateUser", option.form, "application/json").then((res: any) => {
option.dialogFormVisible=false
if (res.error != 0){
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
if(option.title === '添加用户'){
if (verify()) return;
post("user/insertUser",option.form,"application/json").then((res:any)=>{
option.dialogFormVisible = false
if (res.error != 0){
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
}
return {
...toRefs(option),
onAddClick,
onAmendClick,
onSearch,
submit,
findAllUser,
confirmEvent,
prev,
next,
changEnum
}
}
}
</script>
<style lang="less" scoped>
.system-container {
width: 100%;
margin-left: 0;
.pagination{
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
.box{
padding: 28px 20px 0px ;
display: flex;
justify-content: space-between;
.left{
display: flex;
justify-content: space-between;
align-items: center;
.textInput{
width: 305px;
height: 35px;
line-height: 35px;
font-size: 20px;
text-indent: 10px;
}
h1{
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #000000;
opacity: 1;
}
img{
width: 44px;
height: 44px;
margin-left: 10px;
padding-top: 4px;
cursor: pointer;
}
}
.right{
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #498DF0;
opacity: 1;
span{
width: 96px;
height: 0px;
border-bottom: 1px solid #498DF0;
opacity: 1;
cursor: pointer;
}
}
}
.tableMessage{
padding: 36px 20px 20px;
font-size: 18px;
.operation {
display: flex;
justify-content: space-evenly;
span {
border-bottom: 1px solid #000000;
opacity: 1;
cursor: pointer;
font-weight: 400;
}
}
:deep(.el-table thead){
color: black;
}
}
}
:deep(.el-form-item__label){
text-align: left;
color: #000000;
}
:deep(.el-form){
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin: 0 auto;
width: 90%;
//align-content: flex-start;
}
:deep(.el-button){
width: 159px;
height: 44px;
opacity: 1;
border-radius: 4px;
border: 1px solid #498DF0;
font-weight: 400;
color: #498DF0;
}
</style>