Browse Source

demo v2

master
DESKTOP-00SUCB6\Administrator 4 years ago
parent
commit
210bc25072
  1. 4
      public/config.js
  2. 51
      src/api/attendee.js
  3. 74
      src/api/login.js
  4. 43
      src/api/meeting.js
  5. 54
      src/api/notice.js
  6. 42
      src/api/permission.js
  7. 42
      src/api/prefix.js
  8. 5
      src/api/public.js
  9. 50
      src/api/role.js
  10. 36
      src/api/user.js
  11. 4
      src/store/getters.js
  12. 77
      src/store/modules/user.js
  13. 43
      src/utils/auth.ts
  14. 20
      src/utils/request.js
  15. 3
      src/views/layout/components/AppMain.vue
  16. 33
      src/views/layout/components/Sidebar/SidebarItem.vue
  17. 9
      src/views/layout/components/Sidebar/index.vue
  18. 49
      src/views/layout/components/header.vue
  19. 61
      src/views/login/index.vue
  20. 342
      src/views/systemManage/user.vue
  21. 13
      src/views/systemManage/whiteList.vue

4
public/config.js

@ -5,7 +5,9 @@
// SHOW_URL: "http://www.fatoaniic.com/ftpfile/",
// }
config = {
API_URL: 'http://61.135.192.42:8082',
API_URL: 'http://121.36.65.171:9999',
// API_URL: 'http://172.119.50.18:8081',
UPLOAD_URL: "http://61.135.192.42:8082/attachment/uploadOne",
DOWNLOAD_URL: "http://61.135.192.42:8082/api-ftp/ftp/download?filename=",
SHOW_URL: "http://www.fatoaniic.com/ftpfile/",

51
src/api/attendee.js

@ -1,51 +0,0 @@
import request from '@/utils/request';
//获取参会人员列表信息
export function getAttendeeList(param) {
return request({
url: '/conferee/search',
method: 'post',
data:param
});
}
//创建参会人员
export function addAttendee(param) {
return request({
url: '/conferee/add',
method: 'post',
data:param
});
}
//删除参会人员
export function deleteAttendee(param) {
return request({
url: '/conferee/delete',
method: 'post',
data:param
});
}
//修改参会人员
export function editAttendee(param) {
return request({
url: '/conferee/edit',
method: 'post',
data:param
});
}
// //获取参会人员详情信息(id)
// export function getAttendeeById(id) {
// return request({
// url: '/conferee/get/'+id,
// method: 'get'
// });
// }
//导出参会人员列表信息
export function getAttendeeById(param) {
return request({
url: '/conferee/export',
method: 'post',
data:param
});
}

74
src/api/login.js

@ -7,78 +7,16 @@ export function login(param) {
data:param
});
}
//登出接口
export function logout() {
return request({
url: '/common/logout',
method: 'post'
});
}
//普通账户修改密码
export function updatePass(params) {
return request({
url: '/common/updatePassword',
method: 'post',
data:params
});
}
//注册账户
export function registerUser(params) {
return request({
url: '/api-login/user/registerUser',
method: 'post',
data:params
});
}
//获取短信验证码
export function sendMessage(params) {
return request({
url: '/api-login/common/send',
method: 'get',
params
});
}
//忘记密码-输入账号换取手机号
export function userToTelphone(params) {
return request({
url: '/api-login/user/telPhone',
method: 'get',
params
});
}
//忘记密码-重设密码
export function setUpPassword(params) {
return request({
url: '/api-login/user/setUpPassword',
method: 'post',
data:params
});
}
//验证短信验证码
export function smsVerification(params) {
return request({
url: '/api-login/common/smsVerification',
method: 'post',
data:params
});
}
//非法字符列表
export function getKeysList(params) {
return request({
url: '/api-login/key/keys',
method: 'get',
params
});
}
//获取待办事项
export function getAnnCount(params) {
//登出接口
export function logout() {
return request({
url: '/api-login/ann/getAnnCount',
method: 'get',
params
url: '/common/logout',
method: 'post'
});
}

43
src/api/meeting.js

@ -1,43 +0,0 @@
import request from '@/utils/request';
//获取会议列表信息
export function getMeetingList(param) {
return request({
url: '/conference/search',
method: 'post',
data:param
});
}
//创建会议
export function addMeeting(param) {
return request({
url: '/conference/add',
method: 'post',
data:param
});
}
//删除会议
export function deleteMeeting(param) {
return request({
url: '/conference/delete',
method: 'post',
data:param
});
}
//修改会议
export function editMeeting(param) {
return request({
url: '/conference/edit',
method: 'post',
data:param
});
}
//获取会议详情信息(id)
export function getMeetingById(id) {
return request({
url: '/conference/get/'+id,
method: 'get'
});
}

54
src/api/notice.js

@ -1,54 +0,0 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取文章类型下拉列表
export function getNoticeTypeList(params) {
return request({
url: '/common/getComboList_1/40005',
method: 'get',
params
});
}
//获取文章列表
export function getNoticeList(params) {
return request({
url: '/content/search',
method: 'post',
data:params
});
}
//添加文章
export function addNoticeInfo(params) {
return request({
url: '/content/add',
method: 'post',
data:params
});
}
//获取文章详情
export function getNoticeInfo(params) {
return request({
url: '/content/get/'+params,
method: 'get'
});
}
//更新文章详情
export function editNoticeInfo(params) {
return request({
url: '/content/edit',
method: 'post',
data:params
});
}
//删除文章
export function deleteNoticeInfo(params) {
return request({
url: '/content/delete',
method: 'post',
data:params
});
}

42
src/api/permission.js

@ -1,42 +0,0 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取权限列表
export function getAuthorityList(params) {
return requestLoading({
url: '/api-login/authority/authoritys',
method: 'get',
params
});
}
//获取权限详情
export function getAuthorityInfo(params) {
return requestLoading({
url: '/api-login/authority/authority',
method: 'get',
params
});
}
//添加权限
export function addAuthority(params) {
return requestLoading({
url: '/api-login/authority/authority',
method: 'post',
data:params
});
}
//修改权限
export function editAuthority(params) {
return requestLoading({
url: '/api-login/authority/authority',
method: 'put',
data:params
});
}
//获取菜单tree
export function getMenusTree(params) {
return requestLoading({
url: '/api-login/menu/menus',
method: 'get',
params
});
}

42
src/api/prefix.js

@ -1,42 +0,0 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取前缀列表
export function getPrefixList(params) {
return requestLoading({
url: '/api-enterprise/prefix/apply',
method: 'get',
params
});
}
//详情
export function getPrefixInfo(params) {
return requestLoading({
url: '/api-enterprise/prefix/enInfo',
method: 'get',
params
});
}
//申请前缀
export function applyPrefix(params) {
return requestLoading({
url: '/api-enterprise/prefix/apply',
method: 'post',
data:params
});
}
//前缀审核
export function auditingPrefix(params) {
return requestLoading({
url: '/api-enterprise/prefix/approve',
method: 'put',
data:params
});
}
//同步
export function syncPrefix(params) {
return requestLoading({
url: '/api-enterprise/prefix/synchronizationEnInfo',
method: 'post',
data:params
});
}

5
src/api/public.js

@ -1,5 +0,0 @@
import request from '@/utils/request';

50
src/api/role.js

@ -1,50 +0,0 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取角色列表
export function getRoleList(params) {
return requestLoading({
url: '/api-login/role/roleList',
method: 'get',
params
});
}
//获取角色详情
export function getRoleInfo(params) {
return requestLoading({
url: '/api-login/role/roleInfo',
method: 'get',
params
});
}
//添加角色
export function addRole(params) {
return requestLoading({
url: '/api-login/role/role',
method: 'post',
data:params
});
}
//修改角色
export function editRole(params) {
return requestLoading({
url: '/api-login/role/role',
method: 'put',
data:params
});
}
//删除角色
export function deleteRole(params) {
return requestLoading({
url: '/api-login/role/role',
method: 'delete',
params
});
}
//校验角色
export function existsRoleName(params) {
return request({
url: '/api-login/role/existName',
method: 'get',
params
});
}

36
src/api/user.js

@ -2,11 +2,36 @@ import request from '@/utils/request';
//获取用户列表
export function getUserList(params) {
return request({
url: '/user/search',
url: '/user/list',
method: 'post',
data:params
});
}
//管理员账户重置密码
export function resetPass(params) {
return request({
url: '/user/reset',
method: 'post',
data:params
});
}
//获取白名单用户列表
export function getWhitelist(params) {
return request({
url: '/whitelist/list',
method: 'post',
data:params
});
}
//根据id获取用户详情
export function getUserDetail(id) {
return request({
@ -71,14 +96,7 @@ export function getRoleType(params) {
//管理员账户重置密码
export function resetPass(params) {
return request({
url: '/api-login/user/restPassword',
method: 'post',
data:params
});
}
//获取当前用户类别与角色
export function getAddRole(params) {

4
src/store/getters.js

@ -2,12 +2,8 @@ const getters = {
sidebar: state => state.app.sidebar, //全局变量菜单栏
device: state => state.app.device, //全局变量设备端类型
token: state => state.user.token, //全局变量token
id: state => state.user.id, //全局变量id
router: state => state.user.router, //全局变量路由
name: state => state.user.name, //全局变量用户姓名
activeIndex: state => state.user.activeIndex, //全局变量菜单索引
template: state => state.user.template, //全局变量皮肤模板
identity: state => state.user.identity, //全局变量用户类型
keys: state => state.user.keys //全局变量敏感字符集
}
export default getters

77
src/store/modules/user.js

@ -1,67 +1,41 @@
import {login, logout, getKeysList} from '@/api/login';
import {login, logout} from '@/api/login';
import {
getToken,
setToken,
removeToken,
// getTemplate,
// setTemplate,
// getRouter,
// setRouter,
// removeRouter,
getRouter,
setRouter,
removeRouter,
getName,
setName,
removeName,
// getId,
// setId,
// removeId,
// getIdentity,
// setIdentity,
// removeIdentity,
// setActiveIndex,
// removeActiveIndex,
// getActiveIndex,
// getKeys,
// setKeys,
// removeKeys
} from '@/utils/auth';
const user = {
state: {
token: getToken() || '',
// router: getRouter() || [],
router: getRouter() || [],
name: getName() || '',
// id: getId()|| '',
// template: getTemplate() || '001',
// identity: getIdentity() || '',
// activeIndex: getActiveIndex() || '',
// keys: getKeys() || []
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token;
},
// SET_ROUTER: (state, router) => {
// state.router = router;
// },
SET_ROUTER: (state, router) => {
state.router = router;
},
SET_NAME: (state, name) => {
state.name = name;
},
// SET_ID: (state, id) => {
// state.id = id;
// },
// SET_TEMPLATE: (state, template) => {
// state.template = template;
// },
// SET_IDENTITY: (state, identity) => {
// state.identity = identity;
// },
// SET_ACTIVEINDEX: (state, activeIndex) => {
// state.activeIndex = activeIndex;
// },
// SET_KEYS: (state, keys) => {
// state.keys = keys;
// },
},
actions: {
@ -71,10 +45,12 @@ const user = {
return new Promise((resolve, reject) => {
login(param).then(response => {
const data = response.data
setToken(data.token)
setName(data.account)
commit('SET_TOKEN', data.token)
commit('SET_NAME', data.account)
setToken(data.sessionId)
setRouter(data.permission)
setName(data.userInfo.userName)
commit('SET_TOKEN', data.sessionId)
commit('SET_ROUTER', data.permission)
commit('SET_NAME', data.userInfo.userName)
resolve(data)
}).catch(error => {
reject(error)
@ -89,29 +65,16 @@ const user = {
// resolve();
// });
// },
// keyWords({commit, state}) {
// if (state.keys.length != 0) {
// return
// } else {
// return new Promise(resolve => {
// getKeysList().then(res => {
// setKeys(res.data)
// commit('SET_KEYS', res.data);
// resolve(res.data)
// }).catch(error => {
// reject(error)
// })
// });
// }
// },
// // 登出
LogOut({commit, state}) {
return new Promise((resolve, reject) => {
logout({}).then(() => {
commit('SET_TOKEN', '');
commit('SET_ROUTER', '');
commit('SET_NAME', "")
removeToken();
removeName()
removeRouter()
resolve();
}).catch(error => {
reject(error);
@ -123,9 +86,11 @@ const user = {
FedLogOut({commit}) {
return new Promise(resolve => {
commit('SET_TOKEN', '');
commit('SET_NAME', "")
commit('SET_NAME', "");
commit('SET_ROUTER', '');
removeToken();
removeName()
removeName();
removeRouter();
resolve();
});
},

43
src/utils/auth.ts

@ -3,11 +3,7 @@ import Cookies from 'js-cookie'
const TokenKey = 'SM-Token'; //浏览器缓存上token存储的名字
const ROUTER = 'SM-router'; //浏览器缓存上路由菜单
const NameKey = 'SM-Name'; //浏览器缓存上用户名
const IdKey = 'SM-Id'; //浏览器缓存上用户id
const Template = 'SM-Template'; //浏览器缓存上皮肤模板存储
const IdentityKey = 'SM-Identity' //浏览器缓存上用户类型
const ActiveIndex = 'SM-ActiveIndex' //浏览器缓存上用于记录以及菜单索引的标记位
const Keys = 'SM-Keys' //浏览器缓存上敏感字符集合
export function getToken() {
return Cookies.get(TokenKey)
@ -28,15 +24,6 @@ export function setActiveIndex(activeIndex) {
export function removeActiveIndex() {
return Cookies.remove(ActiveIndex)
}
export function getIdentity() {
return Cookies.get(IdentityKey)
}
export function setIdentity(identity) {
return Cookies.set(IdentityKey, identity)
}
export function removeIdentity() {
return Cookies.remove(IdentityKey)
}
export function getRouter() {
return JSON.parse(localStorage.getItem(ROUTER))
@ -58,33 +45,3 @@ export function removeName() {
return Cookies.remove(NameKey)
}
export function getId() {
return Cookies.get(IdKey)
}
export function setId(id) {
return Cookies.set(IdKey, id)
}
export function removeId() {
return Cookies.remove(IdKey)
}
export function getTemplate() {
return JSON.parse(localStorage.getItem(Template))
}
export function setTemplate(template) {
return localStorage.setItem(Template, JSON.stringify(template))
}
export function removeTemplate() {
return localStorage.removeItem(Template)
}
export function getKeys() {
return JSON.parse(localStorage.getItem(Keys))
}
export function setKeys(keys) {
return localStorage.setItem(Keys, JSON.stringify(keys))
}
export function removeKeys() {
return localStorage.removeItem(Keys)
}

20
src/utils/request.js

@ -24,22 +24,8 @@ service.interceptors.request.use((config) => {
config.headers['token'] = getToken()
}
if (config.method == 'post' || config.method == 'put') {
// 校验发送的请求是否包含敏感字符
//----------------start-----------------------------
// let sData = ''
// for (const i in config.data) {
// if (config.data.hasOwnProperty(i)) {
// const item = config.data[i];
// sData += item + ","
// }
// }
// store.getters.keys.forEach(item => {
// if (sData.indexOf(item) != -1) {
// isKey = true
// }
// });
//----------------End---------------------------------
// config.data = qs.stringify(config.data)
config.data = qs.stringify(config.data)
// qs.stringify(config.params, { indices: false })
} else if (config.method == 'get') {
config.paramsSerializer = params => {
@ -72,10 +58,10 @@ service.interceptors.response.use(
*/
const res = response.data
// const res = JSON.parse(response.data)
if (res.status !== 200) {
if (res.code !== 200) {
// 511:失效的token;弹出弹框,返回登录页
if (res.status === 74001) {
if (res.code === 207) {
if (isToken) {
isToken = false //防止下个一个token失效的请求在弹出第二个框
MessageBox.alert('你已被登出,请重新登录', '确定登出', {

3
src/views/layout/components/AppMain.vue

@ -11,7 +11,8 @@
<!-- or name="fade" -->
<!-- <router-view :key="key"></router-view> -->
<!-- 内容页 -->
<keep-alive :include="aliveList">
<!-- <keep-alive :include="aliveList"> -->
<keep-alive >
<router-view style="min-width:700px;" />
</keep-alive>
</transition>

33
src/views/layout/components/Sidebar/SidebarItem.vue

@ -37,20 +37,20 @@
<router-link v-if="hasOneShowingChildren(item.children)" :to="{name:item.name}"
:key="item.name">
<el-menu-item :index="item.name">
<!-- <svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon> -->
<svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon>
<span class="myTitle" slot="title">{{item.meta.title}}</span>
</el-menu-item>
</router-link>
<el-submenu v-else :index="item.name" :key="item.name">
<template slot="title">
<!-- <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon> -->
<svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
<span class="myTitle" slot="title">{{item.meta.title}}</span>
</template>
<template v-for="child in item.children">
<template v-if="!child.hidden">
<router-link :to="{name:child.name}" :key="child.name">
<el-menu-item :index="child.name">
<!-- <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon> -->
<svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon>
<span class="myTitle" slot="title">{{child.meta.title}}</span>
</el-menu-item>
</router-link>
@ -58,9 +58,34 @@
</template>
</el-submenu>
</template>
</template>
</div>
<!-- <div class="menu-wrapper">
<template v-for="item in routes">
<template v-if="!item.hidden&&item.son">
<router-link v-if="hasOneShowingChildren(item.son)" :to="{name:item.name}"
:key="item.name">
<el-menu-item :index="item.name">
<span class="myTitle" slot="title">{{item.item}}</span>
</el-menu-item>
</router-link>
<el-submenu v-else :index="item.name" :key="item.name">
<template slot="title">
<span class="myTitle" slot="title">{{item.item}}</span>
</template>
<template v-for="child in item.son">
<template v-if="!child.hidden">
<router-link :to="{name:child.name}" :key="child.name">
<el-menu-item :index="child.name">
<span class="myTitle" slot="title">{{child.item}}</span>
</el-menu-item>
</router-link>
</template>
</template>
</el-submenu>
</template>
</template>
</div> -->
</template>
<script>

9
src/views/layout/components/Sidebar/index.vue

@ -39,9 +39,12 @@
},
data(){
return {
// routes:[
// ],
}
// routes:[]
}
},
mounted() {
// this.routes = this.router
},
};
</script>

49
src/views/layout/components/header.vue

@ -16,6 +16,7 @@
<!-- 登录后的下拉 -->
<div class="avatar-container">
<!-- 用户信息 -->
<el-dropdown :style="{'color':variables.menuText}">
<div class="avatar-wrapper">
<!-- <img class="user-avatar" src="@/assets/touxiang.png"> -->
@ -34,26 +35,7 @@
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- 代办事项 -->
<!-- <el-dropdown :style="{'color':variables.menuText}">
<div class="avatar-wrapper">
<el-badge :hidden="annCountNum == 0" :value="annCountNum" :max="99" class="item">
<i class="el-icon-bell" style="font-size: 25px;vertical-align: middle;"></i>
</el-badge>
</div>
<el-dropdown-menu class="user-dropdown" slot="dropdown">
<el-dropdown-item v-if="annCount.length == 0" disabled>暂无内容</el-dropdown-item>
<el-badge v-else v-for="(item,index) in annCount" :key="index" is-dot class="item-ann-count">
<el-dropdown-item @click="jumpAnnCountDetail(item.url)">{{item.name}}</el-dropdown-item>
</el-badge>
</el-dropdown-menu>
</el-dropdown> -->
</div>
<!-- 未登录 -->
<!-- <div v-else class="avatar-container">
<el-button size="mini" class="white-button" @click="jumpRouter('login')">登录</el-button>
<el-button size="mini" class="red-button" @click="jumpRouter('register')">注册</el-button>
</div> -->
</div>
</el-header>
@ -65,7 +47,6 @@
import {mapGetters} from 'vuex';
import variables from '@/styles/variables.scss';
//import SidebarItem from './Sidebar/SidebarItem';
import {getAnnCount} from "@/api/login"
export default {
name:'myHeader',
components: {
@ -83,37 +64,9 @@ export default {
},
data(){
return {
tip:'',
child:[],
routes:[],
annCount:[],
annCountNum:0
}
},
mounted(){
//
if(this.name && this.router)
{
this.initAnnCount()
}
},
methods:{
//
initAnnCount(){
getAnnCount().then(res => {
this.annCount = res.data
this.annCount.forEach(item => {
this.annCountNum += parseInt(item.count)
});
})
},
jumpAnnCountDetail(url){
if(url)this.$router.push({name:url})
},
//
jumpRouter(name){
this.$router.push({name:name})
},
//
logout() {
this.$store.dispatch('LogOut').then(() => {

61
src/views/login/index.vue

@ -96,7 +96,6 @@
</template>
<script>
import {JSEncrypt} from "jsencrypt"; //
export default {
name: "Login",
data() {
@ -118,9 +117,6 @@ export default {
};
return {
APP_URL: config.API_URL,
//
PUBLIC_KEY:
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsD1gI70BxYujhNw8NpaVKRXkcRofoeUbN9Dj5m3i3h9XAIS6LkjI01L4ieRpTHnMEzoXUY8a2/svDf//xuHuDJlZBNtCXK4DPx5x4zHdUWDjFGpWlMQzhsqQlfs0tkN5gP095g27L0ki/NrRuBpgxP1q2dHKpL37sBF8XNRpedwIDAQAB",
loginForm: {
//form
username: "",
@ -147,8 +143,7 @@ export default {
mounted() {
this.randomNum = Math.random().toString().substring(0,13)
this.codeSrc =
this.APP_URL + "/common/getVerificationCode/" + this.randomNum;
// this.getKeysList();
this.APP_URL + "/user/kaptcha?" + this.randomNum;
},
methods: {
//
@ -159,47 +154,31 @@ export default {
this.pwdType = "password";
}
},
//
passwordEncryption(password) {
const encryptor = new JSEncrypt();
encryptor.setPublicKey(this.PUBLIC_KEY);
const passwordEncryp = encryptor.encrypt(password);
return passwordEncryp;
},
//
handleLogin() {
this.$router.push({name: "send"});
// this.$refs.loginForm.validate(valid => {
// if (valid) {
// this.loading = true;
// const params = {
// account:this.loginForm.username,
// password:this.$md5(this.loginForm.password),
this.$refs.loginForm.validate(valid => {
if (valid) {
this.loading = true;
const params = {
loginname :this.loginForm.username,
password:this.$md5(this.loginForm.password),
// t:this.randomNum,
// verificationCode:this.loginForm.vercode
// }
// this.$store
// .dispatch("Login", params)
// .then(data => {
// this.loading = false;
// this.$router.push({name: "send"});
// })
// .catch(() => {
// this.loading = false;
// this.refreshCode();
// });
// } else {
// console.log("error submit!!");
// return false;
// }
// });
},
getKeysList() {
verifyCode :this.loginForm.vercode
}
this.$store
.dispatch("keyWords")
.dispatch("Login", params)
.then(data => {
this.loading = false;
this.$router.push({name: "send"});
})
.catch(() => {
this.loading = false;
this.refreshCode();
});
} else {
console.log("error submit!!");
return false;
}
});
},
//
@ -209,7 +188,7 @@ export default {
.getElementById("codePic")
.setAttribute(
"src",
this.APP_URL + "/common/getVerificationCode/" + this.randomNum
this.APP_URL + "/user/kaptcha?" + this.randomNum
);
}
}

342
src/views/systemManage/user.vue

@ -1,38 +1,16 @@
<template>
<div class="app-container">
<!-- <div>
<el-form :inline="true" :model="formSearch" ref="ruleForm" class="demo-form-inline">
<el-form-item label="用户名:">
<el-input v-model="formSearch.account" size="mini" placeholder="请输入用户名" clearable maxlength="50"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" icon="el-icon-search" @click="search">查询</el-button>
</el-form-item>
<el-form-item class="float-right">
<el-button type="primary" size="mini" icon="el-icon-circle-plus-outline" @click="addUserDialog">新增</el-button>
</el-form-item>
</el-form>
</div> -->
<el-table :data="tableData" style="width: 100%" header-row-class-name="">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="account" label="用户名"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="loginName" label="用户名"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="phone" label="联系电话"></el-table-column>
<el-table-column prop="enIdText" label="用户级别"></el-table-column>
<el-table-column prop="enIdText" label="操作时间"></el-table-column>
<el-table-column prop="roleId" label="用户级别"></el-table-column>
<el-table-column prop="operateTime" label="操作时间"></el-table-column>
<el-table-column prop="enIdText" label="操作人"></el-table-column>
<!-- <el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-color="#13ce66" inactive-color="#ff4949" :active-value="1"
:inactive-value="0" @change="openOrClose(scope.row)"></el-switch>
</template>
</el-table-column> -->
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<!-- <el-button type="text" size="small" @click="editUser(scope.row.id)"><i class="el-icon-edit"></i>修改</el-button>
<el-button type="text" size="small" @click="deleteUser(scope.row.id)"><i class="el-icon-delete"></i>移除</el-button> -->
<el-button type="text" size="small" @click="resetPassDialog(scope.row)"><i class="el-icon-delete"></i>重置密码</el-button>
<el-button type="text" size="small" @click="resetPassDialog(scope.row.id)">重置密码</el-button>
</template>
</el-table-column>
</el-table>
@ -46,59 +24,6 @@
layout="total, prev, pager, next, sizes, jumper"
:total="total">
</el-pagination>
<el-dialog :title="isEdit == true ?'修改':'新增'" :visible.sync="dialogAddUserVisible" width="850px">
<el-form :model="form" :rules="rules" ref="ruleForm">
<el-row>
<el-col :span="12" style="padding-right:30px;">
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="account">
<el-input type="text" v-if="!isEdit" v-model="form.account" auto-complete="new-password"
placeholder="请输入用户名(必填)"></el-input>
<span v-else>{{ form.account }}</span>
</el-form-item>
<el-form-item v-if="!isEdit" label="密码:" :label-width="formLabelWidth" prop="password">
<el-input type="password" v-model="form.password" auto-complete="new-password" placeholder="请输入密码(必填)"></el-input>
</el-form-item>
<el-form-item v-if="!isEdit" label="确认密码:" :label-width="formLabelWidth" prop="again">
<el-input type="password" v-model="form.again" autocomplete="off" placeholder="请再次输入密码(必填)"></el-input>
</el-form-item>
<el-form-item label="所属企业:" :label-width="formLabelWidth" prop="enId">
<el-select v-model="form.enId" placeholder="请选择所属企业">
<el-option v-for="(item,index) in companyList" :key="index" :label="item.name" :value="parseInt(item.id)"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" style="padding-right:30px;">
<el-form-item label="姓名:" :label-width="formLabelWidth" prop="name">
<el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名(必填)"></el-input>
</el-form-item>
<el-form-item label="电话:" :label-width="formLabelWidth" prop="phone">
<el-input v-model.number="form.phone" autocomplete="off" minlength="11" maxlength="11"
placeholder="请输入电话号码(必填)"></el-input>
</el-form-item>
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email">
<el-input v-model="form.email" autocomplete="off" placeholder="请输入邮箱(必填)"></el-input>
</el-form-item>
<el-form-item label="身份证件类型:" :label-width="formLabelWidth" prop="typeId">
<el-select v-model="form.typeId" placeholder="请选择性别(必填)">
<el-option label="中国居民身份证" :value="1"></el-option>
<el-option label="港澳居民往来内地通行证" :value="2"></el-option>
<el-option label="台湾居民往来大陆通行证" :value="3"></el-option>
<el-option label="外国人永久居留身份证" :value="4"></el-option>
<el-option label="港澳台居民居住证" :value="5"></el-option>
<el-option label="护照" :value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="身份证件号码:" :label-width="formLabelWidth" prop="idNumber">
<el-input v-model="form.idNumber" autocomplete="off" placeholder="请输入身份证件号码(必填)"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" size="mini" @click="submitForm('ruleForm')">保存</el-button>
<el-button type="info" size="mini" @click="resetForm('ruleForm')">重置</el-button>
</div>
</el-dialog>
<el-dialog title="重置密码" :visible.sync="dialogResetPass" width="500px">
<el-form :model="formPass" :rules="rulesPass" ref="passForm">
<el-form-item label="用户名:" :label-width="formLabelWidth">
@ -117,133 +42,23 @@
</template>
<script>
import {
getUserList, getUserDetail, editUserStatus,
addUser, deleteUser, resetPass,
updateUserInfo, getAddRole, existsUserName
getUserList,resetPass
} from "@/api/user"
import {validateEmail, validatePhone, validateIDCard, validateChinese} from "@/utils/validate"
import { getEnterpriseList } from "@/api/company"
export default {
name: "userManage",
data() {
const checkAgainPassword = (rule, value, callback) => {
if (value != this.form.password) {
return callback(new Error('两次输入密码不一致'));
} else {
callback()
}
};
const checkIsUserdUser = (rule, value, callback) => {
if (validateChinese(value)) {
return callback(new Error('用户名不可为中文'));
} else {
if (!this.isEdit) {
existsUserName({account: this.form.account}).then(res => {
callback()
}).catch(err => {
return callback(new Error(err.message));
})
} else {
callback()
}
}
};
const checkPhone = (rule, value, callback) => {
if (!value) {
return callback(new Error('手机号不能为空'));
} else {
if (validatePhone(value)) {
callback();
} else {
return callback(new Error('请输入正确的手机号'));
}
}
}
const checkEmail = (rule, value, callback) => {
if (!validateEmail(value)) {
return callback(new Error('请输入正确格式的Email'));
} else {
callback();
}
}
const checkIDNum = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入身份证件号码'));
} else if (this.form.typeId == 1 && !validateIDCard(value)) {
return callback(new Error('请输入正确格式的身份证件号码'));
} else {
callback();
}
}
return {
isEdit: false, // or
formSearch: {//
account: ''
},
currentPage: 1, //
pageSize: 10, //
total: 0, //
dialogAddUserVisible: false, //Dialog
dialogResetPass: false, //Dialog
formLabelWidth: '130px', //formlable
form: { //form
account: '',
name: '',
phone: '',
typeId: '',
idNumber: '',
password: '',
email: '',
again: '',
enId:'',
status:'1'
//enName: '',
//goId: '',
//enCode: '',
},
formPass: { //form
id: '',
password: '',
version: '',
account: '',
},
rules: { //
account: [
{required: true, message: '请输入用户名', trigger: 'blur'},
{validator: checkIsUserdUser, trigger: 'blur'}
],
enId: [
{required: true, message: '请选择所属企业', trigger: 'change'}
],
name: [
{required: true, message: '请输入姓名', trigger: 'blur'},
{min: 2, max: 5, message: '长度在 2 到 5 个字符', trigger: 'blur'}
],
phone: [
{required: true, validator: checkPhone, trigger: 'blur'}
],
email: [
{required: true, message: '请填写邮箱', trigger: 'blur'},
{validator: checkEmail, trigger: 'blur'}
],
typeId: [
{required: true, message: '请选择身份证件类型', trigger: 'change'}
],
idNumber: [
{required: true, message: '请输入身份证件号码', trigger: 'blur'},
{validator: checkIDNum, trigger: 'blur'}
],
password: [
{required: true, message: '请输入新密码', trigger: 'blur'},
{min: 8, max: 12, message: '长度在 8 到 12 个字符', trigger: 'blur'}
],
again: [
{required: true, message: '请再次输入新密码', trigger: 'blur'},
{validator: checkAgainPassword, trigger: 'blur'}
],
},
rulesPass: { //
password: [
{required: true, message: '请输入新密码', trigger: 'blur'},
@ -251,7 +66,6 @@ export default {
],
},
tableData: [], //
companyList:[]
};
},
mounted() {
@ -266,104 +80,24 @@ export default {
//
initData() {
const params = {
pageNum: this.currentPage,
pageSize: this.pageSize,
search:{
account: this.formSearch.account.trim()
},
sort:''
pageNo: this.currentPage,
pageSize: this.pageSize
}
getUserList(params).then(res => {
this.tableData = res.data.list
this.total = res.data.count
})
},
//
getCompanyList(){
const params = {
pageNum: 1,
pageSize: 1000,
search:{
name: this.form.enId
},
sort:''
}
getEnterpriseList(params).then(res => {
if (res.data) {
this.companyList = res.data.list
}
})
},
//
openOrClose(row) {
const param = {
flag: row.status,
id: row.id
}
editUserStatus(param).then(res => {
this.$message({
message: '修改成功!',
type: 'success'
});
}).catch((err) => {
row.status === 0 ? row.status = 1 : 0
})
},
//dialog
resetPassDialog(row) {
this.formPass.account = row.account;
this.formPass.password = '';
this.formPass.id = row.id;
this.formPass.version = row.version;
this.dialogResetPass = true
},
//
resetPassword() {
let params = JSON.parse(JSON.stringify(this.formPass))
params.password = this.$md5(params.password)
resetPass(params).then(res => {
this.$message({
message: '密码重置成功!',
type: 'success'
});
this.dialogResetPass = false
})
},
//.dialog
addUserDialog() {
this.isEdit = false
// this.form = {}
if(this.companyList.length == 0)
{
this.getCompanyList()
}
this.dialogAddUserVisible = true
},
//
addUserInfo() {
let params = JSON.parse(JSON.stringify(this.form))
params.password = this.$md5(params.password)
delete(params.again)
addUser(params).then(res => {
this.$message({
message: res.message,
type: res.status == 200 ? 'success' : 'error'
});
this.resetForm('ruleForm')
this.dialogAddUserVisible = false
this.initData()
this.total = res.data.total
})
},
//
deleteUser(id) {
this.$confirm('此操作将删除该用户, 是否继续?', '提示', {
resetPassDialog(id){
// this.dialogResetPass = true
this.$confirm('此操作将重置改用户密码, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteUser([id]).then(res => {
resetPass({userId:id}).then(res => {
this.$message({
message: '删除成功!',
message: '重置成功!',
type: 'success'
});
this.initData()
@ -371,57 +105,27 @@ export default {
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
message: '已取消'
});
});
},
//
editUser(id) {
this.isEdit = true
if(this.companyList.length == 0)
{
this.getCompanyList()
}
// this.form = {}
this.dialogAddUserVisible = true
getUserDetail(id).then(res => {
// this.form = {//form
// id: res.data.id,
// account: res.data.account,
// name: res.data.realName,
// phone: res.data.phone,
// typeId: res.data.typeId,
// idNumber: res.data.idNumber,
// email: res.data.email
// }
this.form = res.data
})
},
//
updateUserData() {
updateUserInfo(this.form).then(res => {
//
resetPassword() {
let params = JSON.parse(JSON.stringify(this.formPass))
params.password = this.$md5(params.password)
resetPass(params).then(res => {
this.$message({
message: res.message,
type: res.status == 200 ? 'success' : 'error'
message: '密码重置成功!',
type: 'success'
});
this.dialogAddUserVisible = false
this.initData()
this.dialogResetPass = false
})
},
//form
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (formName == 'passForm') {
this.resetPassword()
} else if (formName == 'ruleForm') {
if (this.isEdit) {
this.updateUserData()
} else {
this.addUserInfo()
}
}
} else {
console.log('error submit!!');

13
src/views/systemManage/whiteList.vue

@ -61,12 +61,11 @@
</template>
<script>
import {
getUserList, getUserDetail, editUserStatus,
getWhitelist, getUserDetail, editUserStatus,
addUser, deleteUser, resetPass,
updateUserInfo, existsUserName
} from "@/api/user"
import {validatePhone, validateChinese} from "@/utils/validate"
import { getEnterpriseList } from "@/api/company"
export default {
name: "whiteList",
data() {
@ -148,16 +147,12 @@ export default {
//
initData() {
const params = {
pageNum: this.currentPage,
pageNo: this.currentPage,
pageSize: this.pageSize,
search:{
account: this.formSearch.account.trim()
},
sort:''
}
getUserList(params).then(res => {
getWhitelist(params).then(res => {
this.tableData = res.data.list
this.total = res.data.count
this.total = res.data.total
})
},
//.dialog

Loading…
Cancel
Save