用户信息

This commit is contained in:
Hobart 2023-02-24 10:42:15 +08:00
parent e98f0ecf1b
commit e4a5f358d0
7 changed files with 473 additions and 217 deletions

View File

@ -1,5 +1,4 @@
import axios from 'axios';
import qs from 'qs';
if (process.env.NODE_ENV === 'development') {
axios.defaults.baseURL = '/';
} else if (process.env.NODE_ENV === 'production') {
@ -11,3 +10,15 @@ export const getZhanghData = params => {
params
});
};
//获取角色下拉
export const getRoleApi = params => {
return axios.get('api/GetJues', {
params
});
};
//删除角色
export const deleteRoleApi = params => {
return axios.get(`api/DeleteZhangh?UserId=${params}`, {
params
});
};

12
src/api/myld.js Normal file
View File

@ -0,0 +1,12 @@
import axios from 'axios';
if (process.env.NODE_ENV === 'development') {
axios.defaults.baseURL = '/';
} else if (process.env.NODE_ENV === 'production') {
axios.defaults.baseURL = '/';
}
//获取用户信息
export const getUserApi = params => {
return axios.get('api/GetZhanghDetails', {
params
});
};

View File

@ -1,33 +1,36 @@
var ipUurl = window.location.host.split(":")[0];
var ipUurl = window.location.host.split(':')[0];
export default {
// dataUrl: "http://172.16.1.22:8080/api/AddShipjk",
// getSpareElementOrder: "http://172.16.1.22:8080/api/Upload",
// postSetQuanjsz: "http://172.16.1.22:8080/api/SetQuanjsz",
// //新增图形接口
// addFigure: "http://172.16.1.22:8080/api/AddJianktx",
// //编辑图形名称
// editFigure: "http://172.16.1.22:8080/api/EditTuxmc",
// //编辑保存组件弹窗传参
// editComponent: "http://172.16.1.22:8080/api/SetMonqjkzjcs",
// dataUrl: "http://172.16.1.22:8080/api/AddShipjk",
// getSpareElementOrder: "http://172.16.1.22:8080/api/Upload",
// postSetQuanjsz: "http://172.16.1.22:8080/api/SetQuanjsz",
// //新增图形接口
// addFigure: "http://172.16.1.22:8080/api/AddJianktx",
// //编辑图形名称
// editFigure: "http://172.16.1.22:8080/api/EditTuxmc",
// //编辑保存组件弹窗传参
// editComponent: "http://172.16.1.22:8080/api/SetMonqjkzjcs",
dataUrl: 'http://172.16.1.168:5000/api/AddShipjk',
getSpareElementOrder: 'http://172.16.1.168:5000/api/Upload',
postSetQuanjsz: 'http://172.16.1.168:5000/api/SetQuanjsz',
saveRoleApi: 'http://172.16.1.168:5000/api/AddZhangh',
editRoleApi: 'http://172.16.1.168:5000/api/EditZhangh',
dataUrl: "http://172.16.1.168:5000/api/AddShipjk",
getSpareElementOrder: "http://172.16.1.168:5000/api/Upload",
postSetQuanjsz: "http://172.16.1.168:5000/api/SetQuanjsz",
//新增图形接口
addFigure: "http://172.16.1.168:5000/api/AddJianktx",
//编辑图形名称
editFigure: "http://172.16.1.168:5000/api/EditTuxmc",
//编辑保存组件弹窗传参
editComponent: "http://172.16.1.168:5000/api/SetMonqjkzjcs",
// `http://${ipUurl}:5000/api/AddShipjk`
// dataUrl: `http://${ipUurl}:5000/api/AddShipjk`,
// getSpareElementOrder: `http://${ipUurl}:5000/api/Upload`,
// postSetQuanjsz: `http://${ipUurl}:5000/api/SetQuanjsz`,
// //新增图形接口
// addFigure: `http://${ipUurl}:5000/api/AddJianktx`,
// //编辑图形名称
// editFigure: `http://${ipUurl}:5000/api/EditTuxmc`,
// //编辑保存组件弹窗传参
// editComponent: `http://${ipUurl}:5000/api/SetMonqjkzjcs`,
//新增图形接口
addFigure: 'http://172.16.1.168:5000/api/AddJianktx',
//编辑图形名称
editFigure: 'http://172.16.1.168:5000/api/EditTuxmc',
//编辑保存组件弹窗传参
editComponent: 'http://172.16.1.168:5000/api/SetMonqjkzjcs'
// `http://${ipUurl}:5000/api/AddShipjk`
// dataUrl: `http://${ipUurl}:5000/api/AddShipjk`,
// getSpareElementOrder: `http://${ipUurl}:5000/api/Upload`,
// postSetQuanjsz: `http://${ipUurl}:5000/api/SetQuanjsz`,
// //新增图形接口
// addFigure: `http://${ipUurl}:5000/api/AddJianktx`,
// //编辑图形名称
// editFigure: `http://${ipUurl}:5000/api/EditTuxmc`,
// //编辑保存组件弹窗传参
// editComponent: `http://${ipUurl}:5000/api/SetMonqjkzjcs`,
};

View File

@ -16,11 +16,11 @@
</el-input>
</el-form-item>
<div class="unforget" style="margin-left:15px">
<el-checkbox v-model="checked">保存登录</el-checkbox>
<el-checkbox v-model="checked">保存登录</el-checkbox>
</div>
</el-form>
<div class="login-btn">
<el-button type="primary" @click="submitForm()">登录</el-button>
<el-button type="primary" @click="submitForm()">登录</el-button>
</div>
</div>
</div>
@ -54,19 +54,18 @@ export default {
telephone: '13088888888',
typeCode: 2
};
loginApi(datas).then((res) => {
loginApi(datas).then(res => {
console.log('c', res);
});
},
submitForm() {
this.$refs.login.validate((valid) => {
this.$refs.login.validate(valid => {
if (valid) {
this.$message.success('登录成功');
localStorage.setItem('ms_username', this.param.username);
this.$router.push('/');
} else {
this.$message.error('请输入账号和密码');
console.log('error submit!!');
return false;
}
});
@ -76,28 +75,28 @@ export default {
</script>
<style lang="scss" scoped>
/deep/ .el-form-item__label{
text-align: right;
font-size: 14px;
margin-left: 15px;
padding: 0;
&::before{
display: none;
}
/deep/ .el-form-item__label {
text-align: right;
font-size: 14px;
margin-left: 15px;
padding: 0;
&::before {
display: none;
}
}
/deep/ .el-input{
width: 100%;
height: 100%;
border-radius: 20px;
border: 1px solid rgb(231, 231, 231);
.el-input-group__prepend{
background: transparent;
border: none;
}
.el-input__inner{
background: transparent;
border: none;
}
/deep/ .el-input {
width: 100%;
height: 100%;
border-radius: 20px;
border: 1px solid rgb(231, 231, 231);
.el-input-group__prepend {
background: transparent;
border: none;
}
.el-input__inner {
background: transparent;
border: none;
}
}
.login-wrap {
position: absolute;
@ -128,31 +127,29 @@ export default {
display: flex;
flex-flow: column nowrap;
align-items: center;
.welcome{
margin-top: 28px;
font-size: 16px;
letter-spacing: 1px;
// color: black;
.welcome {
margin-top: 28px;
font-size: 16px;
letter-spacing: 1px;
// color: black;
}
.ms-content{
width: 80%;
margin-top: 25px;
.ms-content {
width: 80%;
margin-top: 25px;
}
.login-btn{
width: 80%;
margin-top: 45px;
/deep/ .el-button {
width: 100%;
border-radius: 20px;
display: flex;
justify-content: center;
span{
letter-spacing: 15px;
margin-left: 15px;
.login-btn {
width: 80%;
margin-top: 45px;
/deep/ .el-button {
width: 100%;
border-radius: 20px;
display: flex;
justify-content: center;
span {
letter-spacing: 15px;
margin-left: 15px;
}
}
}
}
}
}

View File

@ -2,10 +2,11 @@
<div class="content-box">
<div class="container">
<p class="title">账号管理</p>
<el-button @click="addAccountDialog = true" type="primary" style="margin-bottom: 10px;"
<el-button @click="addBtn" type="primary" style="margin-bottom: 10px;"
><i class="el-icon-circle-plus-outline" style="margin-right: 3px;"></i>新增</el-button
>
<el-table :data="tableData" :height="tableHeight" border style="width: 100%">
<el-table-column align="center" label="序号" type="index" width="80"></el-table-column>
<el-table-column align="center" prop="userName" label="用户名称" width="180"></el-table-column>
<el-table-column align="center" prop="account" label="用户账号" width="180"></el-table-column>
<el-table-column align="center" prop="roleName" label="角色"></el-table-column>
@ -17,29 +18,44 @@
<el-table-column align="center" label="操作" width="160">
<template slot-scope="scope">
<el-button @click="edit(scope.row)" type="text" size="small" class="">编辑</el-button>
<!-- <el-button @click="showView(scope.row)" type="text" size="small" class="el-icon-view"></el-button> -->
<el-button @click="clickDelete(scope.row)" type="text" size="small">删除</el-button>
<el-button style="color:red" @click="clickDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="dialog">
<el-dialog :title="dialogTitle" :visible.sync="addAccountDialog" width="30%">
<el-form label-position="left" label-width="80px" :model="formLabelAlign">
<el-dialog :title="dialogTitle" :visible.sync="addAccountDialog" width="30%" @close="dialogClose">
<el-form label-position="left" label-width="100px" :model="formLabelAlign">
<el-form-item label="名称:">
<el-input v-model="formLabelAlign.name"></el-input>
<el-input v-model="formLabelAlign.userName"></el-input>
</el-form-item>
<el-form-item label="账号:">
<el-input v-model="formLabelAlign.account"></el-input>
<el-input :disabled="dialogTitle == '编辑'" v-model="formLabelAlign.account"></el-input>
</el-form-item>
<el-form-item label="密码:">
<el-input v-model="formLabelAlign.passWord"></el-input>
</el-form-item>
<el-form-item label="角色:">
<el-input v-model="formLabelAlign.role"></el-input>
<el-select
:disabled="dialogTitle == '编辑' && formLabelAlign.userName == 'admin'"
clearable
style="width:100%;"
v-model="formLabelAlign.roleId"
placeholder="请选择"
>
<el-option v-for="item in options" :key="item.roleId" :label="item.roleName" :value="item.roleId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="权限:">
<el-input v-model="formLabelAlign.jurisdiction"></el-input>
<el-form-item label="是否启用:">
<el-radio-group v-model="formLabelAlign.IsEnable">
<el-radio :label="'1'">启用</el-radio>
<el-radio :label="'0'">禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="addAccountDialog = false"> </el-button>
<el-button type="primary" @click="saveBtn">确定</el-button>
<el-button @click="addAccountDialog = false">取消</el-button>
</span>
</el-dialog>
</div>
@ -48,16 +64,20 @@
</template>
<script>
import { getZhanghData } from '@/api/management';
import axios from 'axios';
import { getZhanghData, getRoleApi, deleteRoleApi } from '@/api/management';
import serverUrl from '@/config/apiurl.js';
export default {
data() {
return {
options: [],
addAccountDialog: false,
formLabelAlign: {
name: '',
userName: '',
account: '',
role: '',
jurisdiction: ''
roleId: '',
IsEnable: '1',
passWord: ''
},
tableData: [],
tableHeight: 0,
@ -72,26 +92,119 @@ export default {
let windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
this.tableHeight = windowHeight - 280;
this.getData();
//
this.getRoleList();
},
methods: {
getData() {
getZhanghData().then(res => {
console.log(res);
this.tableData = res.data.data;
//
addBtn() {
this.dialogTitle = '新增';
this.addAccountDialog = true;
},
//
dialogClose() {
for (let i in this.formLabelAlign) {
if (i == 'IsEnable') {
this.formLabelAlign[i] = '1';
} else {
this.formLabelAlign[i] = '';
}
}
},
//
saveBtn() {
let formData = new FormData();
formData.append('userName', this.formLabelAlign.userName);
formData.append('account', this.formLabelAlign.account);
formData.append('roleId', this.formLabelAlign.roleId);
formData.append('IsEnable', this.formLabelAlign.IsEnable);
formData.append('passWord', this.formLabelAlign.passWord);
if (this.dialogTitle === '编辑') {
formData.append('userId', this.formLabelAlign.userId);
}
axios({
method: 'post',
url: this.dialogTitle === '新增' ? serverUrl.saveRoleApi : serverUrl.editRoleApi,
data: formData
}).then(res => {
if (res.data.code == 200) {
this.$message({
message: res.data.msg,
type: 'success'
});
this.addAccountDialog = false;
this.getData();
} else {
this.$message({
message: res.data.msg,
type: 'warning'
});
}
});
},
edit(scope) {
console.log(scope, '编辑');
//
getRoleList() {
var _this = this;
getRoleApi()
.then(res => {
_this.options = res.data.data;
})
.catch(err => {
_this.$message.error(err.msg);
});
},
//
getData() {
getZhanghData()
.then(res => {
this.tableData = res.data.data;
})
.catch(err => {
_this.$message.error(err.msg);
});
},
edit(row) {
this.formLabelAlign.roleId = row.roleId;
this.formLabelAlign.IsEnable = row.isEnable;
this.formLabelAlign.userName = row.userName;
this.formLabelAlign.account = row.account;
this.formLabelAlign.userId = row.userId;
this.dialogTitle = '编辑';
this.addAccountDialog = true;
},
showView(scope) {
console.log(scope, '查看');
this.dialogTitle = '查看';
this.addAccountDialog = true;
},
clickDelete(scope) {
console.log(scope, '删除');
clickDelete(row) {
this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteRoleApi(row.userId).then(res => {
if (res.data.code == 200) {
this.$message({
type: 'success',
message: '删除成功!'
});
} else {
this.$message({
type: 'error',
message: res.data.msg
});
}
this.getData();
});
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
handleSizeChange(val) {
console.log(`每页 ${val}`);

View File

@ -1,99 +1,214 @@
<template>
<div class="content-box">
<div class="container">
<p class="title">通知/日志</p>
<!-- <div class="test-div">
<i class="el-icon-edit"></i>
<i class="el-icon-share"></i>
<i class="el-icon-delete"></i>
</div> -->
<el-table :data="tableData" :height="tableHeight" border style="width: 100%">
<el-table-column align="center" prop="date" label="通知类型" width="180"></el-table-column>
<el-table-column align="center" prop="name" label="产生时机" width="180"></el-table-column>
<el-table-column align="center" prop="address" label="内容"></el-table-column>
<el-table-column align="center" label="操作" width="160">
<template slot-scope="scope">
<el-button @click="download(scope.row)" type="text" size="small" class="">下载</el-button>
<el-button @click="showView(scope.row)" type="text" size="small" class="el-icon-view"></el-button>
<el-button @click="clickDelete(scope.row)" type="text" size="small" class="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table>
<div class="content-box">
<div class="container">
<p class="title">通知/日志</p>
<el-form ref="form" :model="formData" label-width="100px" style="display:flex">
<el-form-item label="日期:">
<el-date-picker
value-format="yyyy-MM-dd HH:mm:ss"
size="small"
v-model="formData.value1"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="内容:">
<el-input size="small" v-model="formData.content"></el-input>
</el-form-item>
<el-form-item label="通知类型:">
<el-select size="small" clearable style="width:100%;" v-model="formData.notificationType" placeholder="请选择">
<el-option v-for="item in options" :key="item.name" :label="item.name" :value="item.name"> </el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="lookForMessage" type="primary" size="small">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" :height="tableHeight" border style="width: 100%">
<el-table-column align="center" prop="notificationType" label="通知类型" width="180"></el-table-column>
<el-table-column align="center" prop="journalTime" label="产生时机" width="180"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="content" label="内容"></el-table-column>
<el-table-column align="center" label="操作" width="160">
<template slot-scope="scope">
<el-button @click="showView(scope.row)" type="text" size="small">详情</el-button>
<el-button @click="clickDelete(scope.row)" style="color:red" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="pageSize"
layout="sizes, prev, pager, next" :total="totalNumber" style="padding-top: 10px;">
</el-pagination>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="sizes, total,prev, pager, next"
:total="totalNumber"
style="padding-top: 10px;"
>
</el-pagination>
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
<span>这是一段信息</span>
<!-- <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button>
</span> -->
</el-dialog>
<el-dialog :title="concetData.notificationType" :visible.sync="dialogVisible" width="30%" @close="notificClosed">
<span>{{ concetData.content }}</span>
</el-dialog>
</div>
</div>
</div>
</template>
<script>
import { getTongzrzApi, deleteTongzrzApi, getTongzrzDetailsApi } from '@/api/logs';
import moment from 'moment';
export default {
data() {
return {
tableData: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
data() {
return {
concetData: {
notificationType: '',
content: ''
},
options: [
{
name: '通知'
},
{
name: '警告'
},
{
name: '报警'
},
{
name: '成功'
}
],
formData: {
value1: [],
content: '',
notificationType: ''
},
tableData: [],
currentPage: 1,
pageSize: 10,
totalNumber: 0,
tableHeight: 0,
dialogVisible: false
};
},
created() {
let windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
this.tableHeight = windowHeight - 270;
},
mounted() {
this.setTimes();
this.getData();
},
methods: {
setTimes() {
let arr = [];
//
let s = moment().format('YYYY-MM-DD HH:mm:ss'); //1day
//
let i = moment(s)
.subtract(2, 'days')
.format('YYYY-MM-DD HH:mm:ss');
arr = [s, i];
this.formData.value1 = arr;
this.$forceUpdate();
},
],
currentPage: 1,
pageSize: 100,
totalNumber: 1000,
tableHeight: 0,
dialogVisible: false
notificClosed() {
for (let i in this.concetData) {
this.concetData[i] = '';
}
},
clickDelete(row) {
this.$confirm('此操作将永久删除该日志, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteTongzrzApi(row.journalId).then(res => {
if (res.data.code == 200) {
this.$message({
type: 'success',
message: '删除成功!'
});
} else {
this.$message({
type: 'error',
message: res.data.msg
});
}
this.getData();
});
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
//
getTongzrzDetails(JournalId) {
getTongzrzDetailsApi(JournalId)
.then(res => {
if (res.data.code === 200) {
this.concetData = res.data.data;
this.dialogVisible = true;
} else {
this.$message.error(res.data.msg);
}
})
.catch(err => {
this.$message.error(err.data.msg);
});
},
//
lookForMessage() {
this.currentPage = 1;
this.getData();
},
//
getData() {
getTongzrzApi({
Content: this.formData.content,
Type: this.formData.notificationType,
CurrentPage: this.currentPage,
PageSize: this.pageSize,
StartTime: this.formData.value1.length > 0 ? this.formData.value1[0] : '',
EndTime: this.formData.value1.length > 0 ? this.formData.value1[1] : ''
})
.then(res => {
if (res.data.code === 200) {
this.tableData = res.data.data.data;
this.totalNumber = res.data.data.total;
} else {
this.$message.error(res.data.msg);
}
})
.catch(err => {
this.$message.error(err.data.msg);
});
},
showView(scope) {
this.getTongzrzDetails(scope.journalId);
},
handleSizeChange(val) {
this.pageSize = val;
this.getData();
},
handleCurrentChange(val) {
this.currentPage = val;
this.getData();
}
}
},
created() {
let windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
this.tableHeight = windowHeight - 170;
},
methods: {
download(scope) {
console.log(scope, '下载');
},
showView(scope) {
console.log(scope, '查看');
this.dialogVisible = true;
},
clickDelete(scope) {
console.log(scope, '删除');
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
}
}
}
};
</script>
<style>
.test-div i {
font-size: 25px;
font-size: 25px;
}
</style>
</style>

View File

@ -1,43 +1,48 @@
<template>
<div class="content-box">
<div class="container">
<p class="title">我的账号</p>
<!-- <div class="test-div">
<i class="el-icon-edit"></i>
<i class="el-icon-share"></i>
<i class="el-icon-delete"></i>
</div> -->
<el-form label-position="left" label-width="60px" :model="formLabelAlign">
<el-form-item label="名称:">
{{ formLabelAlign.name }}
</el-form-item>
<el-form-item label="账号:">
{{ formLabelAlign.account }}
</el-form-item>
<el-form-item label="密码:">
{{ formLabelAlign.password }}
</el-form-item>
</el-form>
<div class="content-box">
<div class="container">
<p class="title">我的账号</p>
<el-form label-position="left" label-width="60px" :model="formLabelAlign">
<el-form-item label="名称:">
{{ formLabelAlign.name }}
</el-form-item>
<el-form-item label="账号:">
{{ formLabelAlign.account }}
</el-form-item>
<el-form-item label="密码:">
{{ formLabelAlign.password }}
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
import { getUserApi } from '@/api/myld.js';
export default {
data() {
return {
formLabelAlign: {
name: 'admin',
account: 'admin',
password: '123456',
},
data() {
return {
formLabelAlign: {
name: 'admin',
account: 'admin',
password: '123456'
}
};
},
methods: {
getUser() {
console.log(window.localStorage.getItem(''));
}
},
mounted() {
this.getUser();
}
}
}
};
</script>
<style>
.test-div i {
font-size: 25px;
font-size: 25px;
}
</style>
</style>