登录,用户列表

master
13703816893 2 years ago
parent 8296da3fd2
commit 7d9271a5ea

@ -11,26 +11,21 @@
<!-- 用户名下拉菜单 --> <!-- 用户名下拉菜单 -->
<el-dropdown class="user-name" trigger="click" @command="handleCommand"> <el-dropdown class="user-name" trigger="click" @command="handleCommand">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
{{ username }} {{ userName }}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item command="noticeShow">公告</el-dropdown-item> <!-- <el-dropdown-item command="noticeShow">公告</el-dropdown-item> -->
<el-dropdown-item command="changePwd"> 修改密码</el-dropdown-item> --> <el-dropdown-item command="changePwd"> 修改密码</el-dropdown-item>
<el-dropdown-item command="loginout">退出登录</el-dropdown-item> <el-dropdown-item command="loginout">退出登录</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
<password-dialog <password-dialog ref="passwordref" ></password-dialog>
:dialogFormPsd="dialogFormPsd"
@psdDialogClose="psdDialogClose"
></password-dialog>
</div> </div>
</template> </template>
<script> <script>
import { mapState } from "vuex";
import updateElementUiTheme from "update-element-ui-theme";
import vSidebar from "./Sidebar.vue"; import vSidebar from "./Sidebar.vue";
import passwordDialog from "@/views/components/passwordDialog.vue"; import passwordDialog from "@/views/components/passwordDialog.vue";
export default { export default {
@ -40,16 +35,9 @@ export default {
}, },
data() { data() {
return { return {
dialogFormPsd: false, userName: localStorage.getItem('userName')
}; };
}, },
computed: {
...mapState(["username"]),
username() {
let name = localStorage.getItem("username");
return name;
},
},
methods: { methods: {
// //
handleCommand(command) { handleCommand(command) {
@ -58,23 +46,14 @@ export default {
console.log(command); console.log(command);
break; break;
case "changePwd": // case "changePwd": //
console.log(command); this.$refs.passwordref.display()
this.dialogFormPsd = true;
break; break;
case "loginout": //退 case "loginout": //退
this.$message.success("退出成功");
this.$store.commit("REMOVE_INFO"); this.$store.commit("REMOVE_INFO");
this.$router.push("/login"); this.$router.push("/");
break; break;
} }
// if (command == "loginout") {
// localStorage.removeItem("ms_username");
// this.$router.push("/login");
// }
},
//psdDialogClose
psdDialogClose() {
this.dialogFormPsd = false;
}, },
}, },
created() {}, created() {},

@ -114,17 +114,17 @@ export default {
// }, // },
], ],
}, },
// { {
// icon: "el-icon-monitor", icon: "el-icon-monitor",
// index: "/system", index: "/system",
// title: "", title: "系统管理",
// subs: [ subs: [
// { {
// index: "/userManagement", index: "/userManagement",
// title: "", title: "用户管理",
// }, },
// ], ],
// }, },
], ],
}; };
}, },

@ -68,7 +68,7 @@ Vue.directive("debounce", {
//使用钩子函数对路由进行权限跳转 //使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
document.title = `${to.meta.title} | 视频监控可视化平台`; document.title = `${to.meta.title} | 视频监控可视化平台`;
const role = localStorage.getItem("username"); const role = localStorage.getItem("userName");
const token = localStorage.getItem("token"); const token = localStorage.getItem("token");
if (!role && to.path !== "/login") { if (!role && to.path !== "/login") {
next("/login"); next("/login");
@ -76,7 +76,8 @@ router.beforeEach((to, from, next) => {
console.log(to.meta.permission); console.log(to.meta.permission);
console.log(role); console.log(role);
// 如果是管理员权限则可进入,这里只是简单的模拟管理员权限而已 // 如果是管理员权限则可进入,这里只是简单的模拟管理员权限而已
role === "xytest" ? next() : next("/403"); // role === "xytest" ? next() : next("/403");
next()
} else { } else {
next(); next();
} }

@ -6,7 +6,7 @@ Vue.use(VueRouter);
const routes = [ const routes = [
{ {
path: "/", path: "/",
redirect: "/realTimeMonitor", redirect: "/login",
}, },
{ {
path: "/", path: "/",

@ -7,13 +7,16 @@ export default new Vuex.Store({
state: { state: {
//用户登录token 存储 //用户登录token 存储
token: "", token: "",
username: "", userName: "",
userid:'',
channelid: "", channelid: "",
termid: "", termid: "",
}, },
getters: { getters: {
channelid: (state) => state.channelid, channelid: (state) => state.channelid,
token: (state) => state.token,
userName: (state) => state.userName,
}, },
mutations: { mutations: {
//保存通道id //保存通道id
@ -32,14 +35,13 @@ export default new Vuex.Store({
}, },
SET_TOKEN(state, token) { SET_TOKEN(state, token) {
state.token = token; state.token = token;
localStorage.setItem("token", token); localStorage.setItem("token", state.token);
console.log(state);
console.log("store、localstorage保存token成功");
}, },
SET_USERINFO(state, username) { SET_USERINFO(state, val) {
state.username = username; state.userName = val.userName;
localStorage.setItem("username", username); state.userid = val.id
console.log("store、localstorage保存userinfo成功"); localStorage.setItem("userName", state.userName);
localStorage.setItem("userid", state.userid);
}, },
//退出清除locastorge //退出清除locastorge
REMOVE_INFO(state) { REMOVE_INFO(state) {

@ -468,3 +468,40 @@ export function selectPhotoTimeJoggle(data) {
data, data,
}); });
} }
//用户管理
//用户列表查询
export function getUserList(data) {
return request({
url: "/api/userList",
method: "post",
data,
});
}
//新增用户
export function addUserApi(data) {
return request({
url: "/api/addUser",
method: "post",
data,
});
}
//修改用户
export function updateUserApi(data) {
return request({
url: "/api/updateUser",
method: "post",
data,
});
}
//删除用户
export function delUserApi(data) {
return request({
url: "/api/deleteUser",
method: "post",
data,
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
},
});
}

@ -6,18 +6,15 @@ const service = axios.create({
// baseURL: '', // baseURL: '',
// timeout: 5000 // timeout: 5000
baseURL: "api", //把原来的项目地址改成api解决跨域问题 baseURL: "api", //把原来的项目地址改成api解决跨域问题
timeout: 30000, timeout: 30000
}); });
service.interceptors.request.use( service.interceptors.request.use((config) => {
(config) => { if(localStorage.getItem('token')){
return config; config.headers.sessionId = localStorage.getItem('token')
},
(error) => {
console.log(error);
return Promise.reject();
} }
); return config;
});
service.interceptors.response.use( service.interceptors.response.use(
(response) => { (response) => {

@ -18,8 +18,8 @@
class="ms-content" class="ms-content"
size="medium" size="medium"
> >
<el-form-item prop="username"> <el-form-item prop="userName">
<el-input v-model="userInfo.username" placeholder="用户名"> <el-input v-model="userInfo.userName" placeholder="用户名">
<el-button slot="prepend" icon="el-icon-user"></el-button> <el-button slot="prepend" icon="el-icon-user"></el-button>
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -70,15 +70,18 @@ export default {
data: function () { data: function () {
return { return {
userInfo: { userInfo: {
username: "xytest", userName: "",
password: "111121", password: "",
//verificationCode: "", //verificationCode: "",
}, },
rules: { rules: {
username: [ userName: [
{ required: true, message: "请输入用户名", trigger: "blur" }, { required: true, message: "请输入用户名", trigger: "blur" },
], ],
password: [{ required: true, message: "请输入密码", trigger: "blur" }], password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{ min: 6, max: 8, message: '请输入6-8位字符', trigger: 'blur' }
],
// verificationCode: [ // verificationCode: [
// { required: true, message: "", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
// ], // ],
@ -93,14 +96,19 @@ export default {
submitForm() { submitForm() {
this.$refs.loginForm.validate((valid) => { this.$refs.loginForm.validate((valid) => {
if (valid) { if (valid) {
console.log(valid);
//console.log(this.userInfo.verificationCode);
// this.userInfo.password = this.$md5(this.userInfo.password); // // this.userInfo.password = this.$md5(this.userInfo.password); //
this.token = this.$md5(this.userInfo.password); //token loginJoggle(this.userInfo)
this.$store.commit("SET_TOKEN", this.token); //tokenvuex .then((res) => {
this.$store.commit("SET_USERINFO", this.userInfo.username); //vuex if (res.code == 200) {
this.$router.push("/"); this.$store.commit("SET_TOKEN", res.data.sessionId); //tokenvuex
this.$store.commit("SET_USERINFO", res.data); //vuex
this.$message.success("登录成功"); this.$message.success("登录成功");
this.$router.push("/realTimeMonitor");
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {});
} else { } else {
this.$message.error("请输入账号和密码"); this.$message.error("请输入账号和密码");
console.log("error submit!!"); console.log("error submit!!");

@ -2,46 +2,82 @@
<el-dialog <el-dialog
class="psdDialog" class="psdDialog"
title="修改密码" title="修改密码"
:visible.sync="dialogFormPsd" :visible.sync="isShow"
:close-on-click-modal="false"
width="420px" width="420px"
> >
<el-form :model="psdForm" label-position="left" label-width="80px"> <el-form :model="psdForm" :rules="rules" ref="formInfo" label-position="left" label-width="80px">
<el-form-item label="登录账号:"> <el-form-item label="用户名:">
<el-input v-model="psdForm.name" autocomplete="off"></el-input> <el-input v-model="psdForm.userName" autocomplete="off" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="原密码:"> <!-- <el-form-item label="原密码:">
<el-input v-model="psdForm.originalPsd" autocomplete="off"></el-input> <el-input v-model="psdForm.originalPsd" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="新密码:"> <el-form-item label="新密码:">
<el-input v-model="psdForm.newPsd" autocomplete="off"></el-input> <el-input v-model="psdForm.newPsd" autocomplete="off"></el-input>
</el-form-item> </el-form-item> -->
<el-form-item label="确认密码:"> <el-form-item label="密码:">
<el-input v-model="psdForm.confirmPsd" autocomplete="off"></el-input> <el-input v-model="psdForm.password" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="closeDialog"> </el-button> <el-button @click="isShow = false"> </el-button>
<el-button type="primary" @click="closeDialog"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { updateUserApi } from "@/utils/api/index";
export default { export default {
props: ["dialogFormPsd"],
data() { data() {
return { return {
isShow:false,
psdForm: { psdForm: {
name: "", userName: localStorage.getItem('userName'),
originalPsd: "", originalPsd: "",
newPsd: "", newPsd: "",
confirmPsd: "", password: "",
},
rules: {
userName: [
{ required: true, message: "请输入用户名", trigger: "blur" },
],
password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{ min: 6, max: 8, message: '请输入6-8位字符', trigger: 'blur' }
],
}, },
}; };
}, },
methods: { methods: {
closeDialog() { //
this.$emit("psdDialogClose"); submitForm() {
this.$refs.formInfo.validate((valid) => {
if (valid) {
this.$set(this.psdForm,'userId',localStorage.getItem('userid'))
updateUserApi(this.psdForm)
.then((res) => {
if (res.code == 200) {
this.$message.success("修改成功,请重新登录");
this.isShow = false
this.$store.commit("REMOVE_INFO");
this.$router.push("/");
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {});
} else {
console.log("error submit!!");
return false;
}
});
},
display() {
this.isShow = true;
},
hide() {
this.isShow = false;
}, },
}, },
}; };

@ -5,6 +5,7 @@
:visible.sync="isShow" :visible.sync="isShow"
:close-on-click-modal="false" :close-on-click-modal="false"
width="420px" width="420px"
@close="handleclose"
> >
<el-form <el-form
label-position="left" label-position="left"
@ -76,12 +77,13 @@ export default {
], ],
}) })
.then((res) => { .then((res) => {
if (res.code == 200) {
this.$message.success("修改成功");
this.$parent.lineList();
this.isShow = false; this.isShow = false;
this.$message({ } else {
showClose: true, this.$message.error(res.msg);
message: "添加成功", }
type: "success",
});
}) })
.catch((err) => { .catch((err) => {
this.$message({ this.$message({
@ -102,6 +104,9 @@ export default {
hide() { hide() {
this.isShow = false; this.isShow = false;
}, },
handleclose() {
this.$parent.lineList();
},
}, },
created() {}, created() {},

@ -11,7 +11,7 @@
label-position="left" label-position="left"
ref="formInfo" ref="formInfo"
label-width="100px" label-width="100px"
:rules="rules" :rules=" title=='新增' ? rules : xgrules"
:model="formdata" :model="formdata"
> >
<el-form-item label="用户名:" prop="userName"> <el-form-item label="用户名:" prop="userName">
@ -46,7 +46,7 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { addChannelapi, updateChannelapi } from "@/utils/api/index"; import { addUserApi, updateUserApi } from "@/utils/api/index";
export default { export default {
props: { props: {
title: String, title: String,
@ -70,7 +70,16 @@ export default {
{ required: true, message: "请输入用户名", trigger: "blur" }, { required: true, message: "请输入用户名", trigger: "blur" },
], ],
role: [{ required: true, message: "请选择角色", trigger: "blur" }], role: [{ required: true, message: "请选择角色", trigger: "blur" }],
password: [{ required: true, message: "请输入密码", trigger: "blur" }], password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{ min: 6, max: 8, message: '请输入6-8位字符', trigger: 'blur' }
],
},
xgrules: {
userName: [
{ required: true, message: "请输入用户名", trigger: "blur" },
],
role: [{ required: true, message: "请选择角色", trigger: "blur" }]
}, },
}; };
}, },
@ -88,9 +97,7 @@ export default {
this.$refs.formInfo.validate((valid) => { this.$refs.formInfo.validate((valid) => {
if (valid) { if (valid) {
if (this.title == "新增") { if (this.title == "新增") {
let formArr = []; addUserApi(this.formdata)
formArr.push(this.formdata);
addChannelapi({ list: formArr })
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.$message({ this.$message({
@ -98,7 +105,6 @@ export default {
message: "添加成功", message: "添加成功",
type: "success", type: "success",
}); });
this.$parent.deviceList();
this.isShow = false; this.isShow = false;
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
@ -106,11 +112,10 @@ export default {
}) })
.catch((err) => {}); .catch((err) => {});
} else { } else {
updateChannelapi(this.formdata) updateUserApi(this.formdata)
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.$message.success("修改成功"); this.$message.success("修改成功");
this.$parent.deviceList();
this.isShow = false; this.isShow = false;
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);

@ -22,21 +22,13 @@
> >
<!-- <el-table-column type="index" width="55"> </el-table-column> <!-- <el-table-column type="index" width="55"> </el-table-column>
<el-table-column type="selection" width="55"> </el-table-column> --> <el-table-column type="selection" width="55"> </el-table-column> -->
<el-table-column <el-table-column label="用户名" show-overflow-tooltip prop="userName" ></el-table-column>
label="用户名" <el-table-column label="角色" show-overflow-tooltip prop="role" >
show-overflow-tooltip <template slot-scope="scope">{{ scope.row.role == 1 ? '管理员' : '用户' }}</template>
prop="userName" </el-table-column>
></el-table-column> <el-table-column label="创建时间" show-overflow-tooltip prop="createTime" >
<el-table-column <template slot-scope="scope">{{ $moment(scope.row.createTime).format("yy-MM-DD HH:mm:ss") }}</template>
label="角色" </el-table-column>
show-overflow-tooltip
prop="role"
></el-table-column>
<el-table-column
label="创建时间"
show-overflow-tooltip
prop="createTime"
></el-table-column>
<el-table-column fixed="right" label="操作" width="200"> <el-table-column fixed="right" label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -60,13 +52,13 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 新增时间表 --> <!-- 新增 -->
<addUser :title="title" ref="adduserref"></addUser> <addUser :title="title" ref="adduserref"></addUser>
</div> </div>
</template> </template>
<script> <script>
import addUser from "./components/addUser.vue"; import addUser from "./components/addUser.vue";
import { getChannelListapi, deleteChannelapi } from "@/utils/api/index"; import { getUserList, delUserApi } from "@/utils/api/index";
export default { export default {
components: { components: {
@ -88,7 +80,7 @@ export default {
methods: { methods: {
//线 //线
deviceList() { deviceList() {
getChannelListapi({ getUserList({
pageindex: this.page, pageindex: this.page,
pagesize: this.pageSize, pagesize: this.pageSize,
}) })
@ -123,20 +115,20 @@ export default {
// //
handleDelete(data) { handleDelete(data) {
let deleteArr = [];
deleteArr.push({
id: data.id,
});
this.$confirm("确定要删除记录吗,同时删除关联关系?", "提示", { this.$confirm("确定要删除记录吗,同时删除关联关系?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
deleteChannelapi({ list: deleteArr }).then((res) => { delUserApi({ uid: data.userId }).then((res) => {
if (res.code == 200) {
this.$message.success("删除成功");
this.deviceList(); // this.deviceList(); //
} else {
this.$message.error(res.msg);
}
}); });
this.$message({ type: "success", message: "删除成功!" });
}) })
.catch(() => { .catch(() => {
this.$message({ type: "info", message: "已取消删除" }); this.$message({ type: "info", message: "已取消删除" });

Loading…
Cancel
Save