27 changed files with 499 additions and 882 deletions
-
5src/api/login.js
-
9src/api/system/menu.js
-
9src/api/upload/upload.js
-
2src/assets/icons/iconfont.js
-
6src/assets/styles/iconfont.css
-
16src/assets/styles/sidebar.scss
-
2src/assets/styles/variables.scss
-
2src/layout/components/Sidebar/Item.vue
-
19src/layout/components/Sidebar/SidebarItem.vue
-
1src/layout/components/TagsView/index.vue
-
1src/router/index.js
-
109src/router/routers.js
-
9src/store/modules/user.js
-
4src/views/components/MyAlbum.vue
-
3src/views/components/ThemeGalleryList.vue
-
111src/views/components/upload.vue
-
62src/views/content/material/materialList/index.vue
-
2src/views/content/publish/historyList/index.vue
-
9src/views/content/publish/urgentMessage/index.vue
-
1src/views/content/theme/index.vue
-
2src/views/dashboard/HomeThemeGallery.vue
-
7src/views/device/list/index.vue
-
24src/views/forgetPassword/index.vue
-
9src/views/immediateRelease/index.vue
-
4src/views/system/role/index.vue
-
437src/views/system/user/index.vue
-
516src/views/user/menu1.vue
2
src/assets/icons/iconfont.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,516 +0,0 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<el-row type="flex"> |
|||
<el-col :span="20" class="col_flex"> |
|||
<!-- 搜索 --> |
|||
<div class="form_item"> |
|||
<span>角色名称:</span> |
|||
<el-input |
|||
v-model="query.role_name" |
|||
clearable |
|||
size="small" |
|||
placeholder="角色名称" |
|||
style="width: 200px;" |
|||
class="filter-item" |
|||
@keyup.enter.native="getUserList(page,query.role_name)" |
|||
@clear="getUserList(page,query.role_name)" |
|||
/> |
|||
</div> |
|||
<div class="form_item"> |
|||
<span>管理员名称:</span> |
|||
<el-input |
|||
v-model="query.nickName" |
|||
clearable |
|||
size="small" |
|||
placeholder="管理员名称" |
|||
style="width: 200px;" |
|||
class="filter-item" |
|||
@keyup.enter.native="getUserList(page,query.nickName)" |
|||
@clear="getUserList(page,query.nickName)" |
|||
/> |
|||
</div> |
|||
</el-col> |
|||
<el-col class="page_add" :span="4"> |
|||
<el-button class="table_add" type="primary" round @click="addDialogVisible = true">新增</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
</div> |
|||
<!--新增用户--> |
|||
<el-dialog |
|||
append-to-body |
|||
:close-on-click-modal="false" |
|||
:show-close="false" |
|||
:visible.sync="addDialogVisible" |
|||
title="新增" |
|||
width="576px" |
|||
> |
|||
<el-form ref="form" :inline="true" :rules="rules" :model="form" size="small" label-width="100px"> |
|||
<el-form-item |
|||
label="手机号" |
|||
prop="username" |
|||
> |
|||
<el-input v-model="form.username" style="width: 336px" /> |
|||
</el-form-item> |
|||
<el-form-item |
|||
label="管理员名称" |
|||
prop="nickName" |
|||
> |
|||
<el-input v-model="form.nickName" style="width: 336px" /> |
|||
</el-form-item> |
|||
<el-form-item |
|||
label="管理员角色" |
|||
prop="rolesName" |
|||
> |
|||
<el-select v-model="form.rolesName" placeholder="请选择管理员角色" style="width: 336px" @change="selectRoles"> |
|||
<el-option |
|||
v-for="item in roleList" |
|||
:key="item.id" |
|||
:value="item.name" |
|||
:label="item.name" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item |
|||
label="管理员状态" |
|||
prop="enabled" |
|||
> |
|||
<el-select v-model="form.enabled" placeholder="请选择管理员状态" style="width: 336px"> |
|||
<el-option label="启用" value="true" /> |
|||
<el-option label="关闭" value="false" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" round @click="addUser('form')">保存</el-button> |
|||
<el-button round @click="resetForm('form')">关闭</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
<!-- 编辑用户 --> |
|||
<el-dialog |
|||
append-to-body |
|||
:close-on-click-modal="false" |
|||
:show-close="false" |
|||
:visible.sync="editDialogVisible" |
|||
title="编辑" |
|||
width="576px" |
|||
> |
|||
<el-form |
|||
ref="editForm" |
|||
:inline="true" |
|||
:model="editForm" |
|||
:rules="rules" |
|||
size="small" |
|||
label-width="100px" |
|||
> |
|||
<el-form-item label="管理员名称" prop="nickName"> |
|||
<el-input v-model="editForm.nickName" style="width: 336px" /> |
|||
</el-form-item> |
|||
<el-form-item label="管理员角色" prop="rolesName"> |
|||
<el-input v-model="editForm.rolesName" disabled style="width: 336px" /> |
|||
</el-form-item> |
|||
<el-form-item label="机构名称" prop="orgName"> |
|||
<el-input v-model="editForm.orgName" disabled style="width: 336px" /> |
|||
</el-form-item> |
|||
<!-- <el-form-item |
|||
label="管理员状态" |
|||
prop="enabled" |
|||
> |
|||
<el-select v-model="editForm.enabled" placeholder="请选择管理员状态" @change="selectEnabled"> |
|||
<el-option label="启用" value="true" /> |
|||
<el-option label="关闭" value="false" /> |
|||
</el-select> |
|||
</el-form-item> --> |
|||
<el-form-item label="管理员状态" prop="enabledName"> |
|||
<el-select v-model="editForm.enabledName" style="width: 336px" @change="selectEnabled"> |
|||
<el-option v-for="item in enabledData" :key="item.key" :label="item.name" :value="item" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="登录账号" prop="phone"> |
|||
<el-input v-model.number="editForm.phone" disabled style="width: 336px" /> |
|||
</el-form-item> |
|||
<el-form-item label="登录密码" prop="password"> |
|||
<el-input v-model="editForm.password" style="width: 336px" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" round @click="editUser('editForm')">保存</el-button> |
|||
<el-button round @click="resetForm('editForm')">关闭</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
<!--表格渲染--> |
|||
<el-row :gutter="15"> |
|||
<el-col> |
|||
<el-table |
|||
ref="table" |
|||
:data="userList" |
|||
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }" |
|||
style="width: 100%;" |
|||
> |
|||
<el-table-column :selectable="checkboxT" type="selection" width="55" /> |
|||
<el-table-column prop="username" width="135" align="center" label="登录账号" /> |
|||
<el-table-column prop="nickName" align="center" label="管理员名称" /> |
|||
<el-table-column prop="roles" align="center" label="管理角色"> |
|||
<template slot-scope="scope"> |
|||
<div v-for="(item,index) in scope.row.roles" :key="index"> |
|||
<div>{{ item.name }}</div> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="org" align="center" label="机构名称"> |
|||
<template slot-scope="scope"> |
|||
<div>{{ scope.row.org ? scope.row.org.name : '' }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="phone" align="center" label="手机号码" /> |
|||
<el-table-column label="状态" align="center" prop="enabled"> |
|||
<template slot-scope="scope"> |
|||
<div>{{ scope.row.enabled ? '启用' : '关闭' }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="createTime" width="155" align="center" label="创建日期"> |
|||
<template slot-scope="{row}"> |
|||
<div>{{ row.createTime | parseTime }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<!-- v-if="checkPer(['admin','user:edit','user:del'])" --> |
|||
<el-table-column label="操作" width="120" align="center" fixed="right"> |
|||
<template slot-scope="scope"> |
|||
<el-button |
|||
type="primary" |
|||
class="edit_btn" |
|||
@click="editFormData(scope.$index, scope.row)" |
|||
>编辑</el-button> |
|||
<el-button |
|||
type="danger" |
|||
class="delt_btn" |
|||
:disabled="scope.row.id === user.id" |
|||
@click="deleteUser(scope.row)" |
|||
>删除</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<!--分页组件--> |
|||
<el-pagination style="margin-top: 20px;" background :current-page="page" :total="total" :page-size="size" :pager-count="5" :page-sizes="[3, 5, 10]" layout="prev, pager, next, jumper,->,sizes,total" @current-change="getUserList" @size-change="handleSizeChange" /> |
|||
</el-col> |
|||
</el-row> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { FetchUserList, FetchAddUser, FetchDeleteUser, FetchEditUser } from '@/api/system/user' |
|||
import { FetchDropDownList } from '@/api/system/role' |
|||
// import { FetchCodeMsg } from '@/api/login' |
|||
import { isvalidPhone } from '@/utils/validate' |
|||
import { parseTime } from '@/utils/index.js' |
|||
import { mapGetters } from 'vuex' |
|||
export default { |
|||
name: 'User', |
|||
filters: { |
|||
parseTime(time, cFormat) { |
|||
return parseTime(time, cFormat) |
|||
} |
|||
}, |
|||
components: { }, |
|||
// 数据字典 |
|||
data() { |
|||
// 自定义验证 |
|||
const validPhone = (rule, value, callback) => { |
|||
if (!value) { |
|||
callback(new Error('请输入手机号码')) |
|||
} else if (!isvalidPhone(value)) { |
|||
callback(new Error('请输入正确的11位手机号码')) |
|||
} else { |
|||
callback() |
|||
} |
|||
} |
|||
return { |
|||
// 用户管理 list |
|||
userList: [], |
|||
total: 0, |
|||
page: 1, |
|||
size: 10, |
|||
// 角色 list |
|||
roleList: [], |
|||
// 搜索 |
|||
query: { |
|||
role_name: '', |
|||
nickName: '' |
|||
}, |
|||
// 新增form |
|||
addDialogVisible: false, |
|||
form: { |
|||
username: null, |
|||
nickName: '', |
|||
roles: [], |
|||
rolesName: '', |
|||
enabled: null, |
|||
org: null, |
|||
phone: null |
|||
}, |
|||
// 编辑 |
|||
editDialogVisible: false, |
|||
editForm: { |
|||
id: null, |
|||
nickName: '', |
|||
roles: [], |
|||
rolesName: '', |
|||
org: '', |
|||
orgName: null, |
|||
username: null, |
|||
phone: '', |
|||
password: '', |
|||
enabled: null, |
|||
enabledName: null |
|||
}, |
|||
enabledData: [{ key: 'true', name: '开启' }, { key: 'false', name: '关闭' }], |
|||
// 表单验证 |
|||
rules: { |
|||
nickName: [ |
|||
{ required: true, message: '请输入管理员名称', trigger: 'blur' }, |
|||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } |
|||
], |
|||
phone: [ |
|||
{ required: true, trigger: 'blur', validator: validPhone } |
|||
], |
|||
code: [ |
|||
{ required: true, trigger: 'blur', message: '请输入验证码' } |
|||
], |
|||
password: [ |
|||
{ required: true, trigger: 'blur', message: '请输入密码' } |
|||
], |
|||
username: [ |
|||
{ required: true, trigger: 'blur', validator: validPhone } |
|||
], |
|||
rolesName: [ |
|||
{ required: true, message: '请选择管理员角色', trigger: 'change' } |
|||
], |
|||
enabled: [ |
|||
{ required: true, trigger: 'change', message: '请选择管理员状态' } |
|||
], |
|||
enabledName: [ |
|||
{ required: true, trigger: 'change', message: '请选择管理员状态' } |
|||
], |
|||
orgName: [ |
|||
{ required: true, trigger: 'blur', message: '请输入机构名称' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters([ |
|||
'user' |
|||
]) |
|||
}, |
|||
mounted: function() { |
|||
this.getUserList() |
|||
this.getDropdownList() |
|||
}, |
|||
methods: { |
|||
// 获取用户列表的数据 |
|||
getUserList(pager = 1, name) { |
|||
this.page = pager |
|||
const param = { |
|||
page: this.page, |
|||
size: this.size, |
|||
blurry: name |
|||
} |
|||
FetchUserList(param).then(res => { |
|||
if (res.code == 200) { |
|||
this.userList = res.data.content |
|||
this.total = res.data.totalElements |
|||
// this.size = res.data.size |
|||
} else { |
|||
return this.$message.error('获取用户列表数据失败!') |
|||
} |
|||
}) |
|||
}, |
|||
// 每条显示数据改变时的事件 |
|||
handleSizeChange(size) { |
|||
// 整理参数 |
|||
this.size = size |
|||
this.getUserList() |
|||
}, |
|||
// 获取角色list |
|||
getDropdownList() { |
|||
const param = { |
|||
} |
|||
FetchDropDownList(param).then(res => { |
|||
if (res.code == 200) { |
|||
this.roleList = res.data |
|||
} else { |
|||
return this.$message.error('获取角色下拉列表数据失败!') |
|||
} |
|||
}) |
|||
}, |
|||
// 添加用户 |
|||
addEditUser(formName) { |
|||
this.$refs[formName].validate(valid => { |
|||
if (valid) { |
|||
if (this.user) { |
|||
this.form.org = this.user.org |
|||
} |
|||
if (this.form.username) { |
|||
this.form.phone = this.form.username |
|||
} |
|||
const param = this.form |
|||
delete param.rolesName |
|||
FetchAddUser(param).then(res => { |
|||
if (res.code == 200) { |
|||
this.$message.success('用户创建成功') |
|||
this.addDialogVisible = false |
|||
this.getUserList(this.page) |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}) |
|||
} else { |
|||
console.log('error submit!!') |
|||
return false |
|||
} |
|||
}) |
|||
}, |
|||
// 删除数组 |
|||
deleteUser(row) { |
|||
const param = [] |
|||
param.push(row.id) |
|||
this.$confirm('你确定要删除该用户, 是否继续?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
FetchDeleteUser(param).then(res => { |
|||
if (res.code == 200) { |
|||
this.$message.success('用户删除成功 !') |
|||
this.getUserList(this.page) |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}) |
|||
}).catch(() => { |
|||
this.$message({ type: 'success', message: '已取消删除' }) |
|||
}) |
|||
}, |
|||
// select - 角色 |
|||
selectRoles(vId) { |
|||
let obj = {} |
|||
obj = this.roleList.find((item) => { |
|||
return item.name === vId |
|||
}) |
|||
obj.description = '全部' |
|||
this.form.rolesName = obj.name |
|||
this.form.roles.push(obj) |
|||
}, |
|||
// 选择设备方向处理 |
|||
selectEnabled(selVal) { |
|||
this.editForm.enabled = selVal.key |
|||
this.editForm.enabledName = selVal.name |
|||
}, |
|||
// 当前用户项不可选中 |
|||
checkboxT(row, rowIndex) { |
|||
return row.id !== this.user.id |
|||
}, |
|||
// 编辑 |
|||
editFormData(index, row) { |
|||
console.log(row) |
|||
this.editDialogVisible = true |
|||
this.editForm.nickName = row.nickName |
|||
this.editForm.id = row.id |
|||
if (row.roles) { |
|||
row.roles.forEach(item => { |
|||
this.editForm.rolesName = item.name |
|||
item.description = '全部' |
|||
this.editForm.roles.push(item) |
|||
}) |
|||
} |
|||
if (row.org) { |
|||
this.editForm.orgName = row.org.name |
|||
this.editForm.org = row.org |
|||
} |
|||
this.editForm.phone = row.phone |
|||
this.editForm.username = row.username |
|||
this.editForm.enabledName = row.enabled ? '开启' : '关闭' |
|||
this.editForm.enabled = row.enabled |
|||
}, |
|||
// 编辑用户 - 提交 |
|||
editUser(formName) { |
|||
this.$refs[formName].validate(valid => { |
|||
if (valid) { |
|||
const param = this.editForm |
|||
delete param.rolesName |
|||
delete param.enabledName |
|||
delete param.orgName |
|||
console.log(param) |
|||
console.log('param') |
|||
FetchEditUser(param).then(res => { |
|||
if (res.code == 200) { |
|||
this.$message.success('该用户编辑成功') |
|||
this.editDialogVisible = false |
|||
this.getUserList(this.page) |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}) |
|||
} else { |
|||
console.log('error submit!!') |
|||
return false |
|||
} |
|||
}) |
|||
}, |
|||
// // 获取验证码 |
|||
// getAuthCode() { |
|||
// const param = { |
|||
// phone: this.editForm.phone |
|||
// } |
|||
// FetchCodeMsg(param).then(res => { |
|||
// if (res.code == 200) { |
|||
// this.countdown() |
|||
// } else { |
|||
// this.$message.error(res.msg) |
|||
// } |
|||
// }).catch(res => { |
|||
// console.log(res) |
|||
// }) |
|||
// }, |
|||
// // 短信验证码倒计时 |
|||
// countdown() { |
|||
// if (this.disabledSendCode) { |
|||
// return |
|||
// } |
|||
// if (!/^1\d{10}$/.test(this.editForm.phone)) { |
|||
// this.$message.error('手机号错误,请重新输入') |
|||
// return |
|||
// } |
|||
// this.getAuthCode() |
|||
// this.disabledSendCode = true |
|||
// this.countNum = 60 |
|||
// const timer = setInterval(() => { |
|||
// this.verification = this.countNum + '重新获取' |
|||
// this.countNum -= 1 |
|||
// if (this.countNum < 1) { |
|||
// clearInterval(timer) |
|||
// this.verification = '重新获取' |
|||
// this.disabledSendCode = false |
|||
// console.log('倒计时结束') |
|||
// } |
|||
// }, 1000) |
|||
// }, |
|||
// 重置表单数据 |
|||
resetForm(formName) { |
|||
this.addDialogVisible = false |
|||
this.editDialogVisible = false |
|||
this.$refs[formName].resetFields() |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style rel="stylesheet/scss" lang="scss" scoped> |
|||
.el-dialog__header { |
|||
background-color: #f1f1f1; |
|||
} |
|||
.edit_code { |
|||
margin-left: 20px; |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue