用户模块状态设置、重置密码、角色模块增删改查功能结束
This commit is contained in:
parent
0df3fff611
commit
3108937e32
|
|
@ -14,67 +14,20 @@
|
||||||
:on-positive-click="handleConfirm"
|
:on-positive-click="handleConfirm"
|
||||||
:on-negative-click="handleClose"
|
:on-negative-click="handleClose"
|
||||||
>
|
>
|
||||||
<n-form-item
|
<n-form-item label="角色编号:" path="code">
|
||||||
label="头像:"
|
|
||||||
path="avatar"
|
|
||||||
>
|
|
||||||
<uploadImage
|
|
||||||
:options="{
|
|
||||||
max:1,
|
|
||||||
action: '/upload/uploadImage/demo',
|
|
||||||
}"
|
|
||||||
size="2"
|
|
||||||
/>
|
|
||||||
</n-form-item>
|
|
||||||
<n-form-item label="用户编号:" path="code">
|
|
||||||
<n-input
|
<n-input
|
||||||
v-model:value="form.code"
|
v-model:value="form.code"
|
||||||
clearable
|
clearable
|
||||||
:maxlength="20"
|
:maxlength="20"
|
||||||
placeholder="请输入用户编号"
|
placeholder="请输入角色编号"
|
||||||
/>
|
/>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
<n-form-item label="用户账号:" path="username">
|
<n-form-item label="角色名称:" path="name">
|
||||||
<n-input
|
<n-input
|
||||||
v-model:value="form.username"
|
v-model:value="form.name"
|
||||||
clearable
|
clearable
|
||||||
:maxlength="20"
|
:maxlength="20"
|
||||||
placeholder="请输入用户账号"
|
placeholder="请输入角色名称"
|
||||||
/>
|
|
||||||
</n-form-item>
|
|
||||||
<n-form-item
|
|
||||||
label="登录密码:"
|
|
||||||
path="password"
|
|
||||||
>
|
|
||||||
<n-input
|
|
||||||
v-model:value="form.password"
|
|
||||||
type="password"
|
|
||||||
:maxlength="20"
|
|
||||||
placeholder="请输入登录密码"
|
|
||||||
/>
|
|
||||||
</n-form-item>
|
|
||||||
<n-form-item label="用户姓名:" path="realname">
|
|
||||||
<n-input
|
|
||||||
v-model:value="form.realname"
|
|
||||||
clearable
|
|
||||||
:maxlength="20"
|
|
||||||
placeholder="请输入用户姓名"
|
|
||||||
/>
|
|
||||||
</n-form-item>
|
|
||||||
<n-form-item label="所属部门:" path="deptId">
|
|
||||||
<n-select
|
|
||||||
v-model:value="form.deptId"
|
|
||||||
:options="deptOptions"
|
|
||||||
placeholder="请选择所属部门"
|
|
||||||
/>
|
|
||||||
</n-form-item>
|
|
||||||
<n-form-item label="角色:" path="roleIds">
|
|
||||||
<n-select
|
|
||||||
v-model:value="form.roleIds"
|
|
||||||
clearable
|
|
||||||
:multiple="true"
|
|
||||||
:options="rolesOptions"
|
|
||||||
placeholder="请选择角色"
|
|
||||||
/>
|
/>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
<n-form-item label="状态" path="status">
|
<n-form-item label="状态" path="status">
|
||||||
|
|
@ -102,16 +55,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { defineComponent, computed, onMounted, reactive, toRefs } from 'vue'
|
import { defineComponent, computed, reactive, toRefs } from 'vue'
|
||||||
import Modal from '@/components/Modal/index.vue'
|
import Modal from '@/components/Modal/index.vue'
|
||||||
import uploadImage from '@/components/ImgUpload/index.vue'
|
import { addRole, editRole } from '@/api/system/role/index'
|
||||||
import { getDeptAll } from '@/api/system/dept/index'
|
|
||||||
import { getRoleAll } from '@/api/system/role/index'
|
|
||||||
import { addUser, editUser } from '@/api/system/user/index'
|
|
||||||
import { dataToSelect } from '@/utils/handleData.js'
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'UserModal',
|
name: 'RoleModal',
|
||||||
components: { Modal, uploadImage },
|
components: { Modal },
|
||||||
props: {
|
props: {
|
||||||
visible: {
|
visible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|
@ -129,23 +78,26 @@ export default defineComponent({
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
form: {
|
form: {
|
||||||
avatar: '/images/user/20211011/20211011151447698.jpg',
|
|
||||||
code: '',
|
code: '',
|
||||||
deptId: null,
|
name: '',
|
||||||
username: '',
|
|
||||||
realname: '',
|
|
||||||
password: '',
|
|
||||||
roleIds: [],
|
|
||||||
status: 1,
|
status: 1,
|
||||||
note: ''
|
note: ''
|
||||||
|
|
||||||
},
|
},
|
||||||
deptOptions: [],
|
rules: {
|
||||||
rolesOptions: []
|
code: [
|
||||||
|
{ required: true, message: '请输入角色编号', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
name: [
|
||||||
|
{ required: true, message: '请输入角色名称', type: 'string', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{ required: true, message: '请选择状态', type: 'number', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
const getModalOptions = computed(() => {
|
const getModalOptions = computed(() => {
|
||||||
return {
|
return {
|
||||||
title: Object.keys(props.row).length === 0 ? '添加用户' : '编辑用户',
|
title: Object.keys(props.row).length === 0 ? '添加角色' : '编辑角色',
|
||||||
show: props.visible,
|
show: props.visible,
|
||||||
form: Object.assign(data.form, props.row),
|
form: Object.assign(data.form, props.row),
|
||||||
negativeText: '取消',
|
negativeText: '取消',
|
||||||
|
|
@ -158,57 +110,21 @@ export default defineComponent({
|
||||||
emit('update:visible', false)
|
emit('update:visible', false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取部门列表
|
|
||||||
async function getDeptOptions() {
|
|
||||||
const res = await getDeptAll()
|
|
||||||
data.deptOptions = dataToSelect(res.data, { label: 'name', value: 'id' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取角色列表
|
|
||||||
async function getRoleOptions() {
|
|
||||||
const res = await getRoleAll()
|
|
||||||
data.rolesOptions = dataToSelect(res.data, { label: 'name', value: 'id' })
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
getDeptOptions()
|
|
||||||
getRoleOptions()
|
|
||||||
})
|
|
||||||
|
|
||||||
// 上传文件
|
|
||||||
const handleUpload = ({ file }) => {
|
|
||||||
console.log(file)
|
|
||||||
// data.form.avatar = file.url
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getModalOptions,
|
getModalOptions,
|
||||||
handleClose,
|
handleClose,
|
||||||
...toRefs(data),
|
...toRefs(data),
|
||||||
rules: reactive({
|
rules: reactive({
|
||||||
avatar: [
|
|
||||||
{ required: true, message: '请选择头像', type: 'string', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
code: [
|
code: [
|
||||||
{ required: true, message: '请输入编号', trigger: 'blur' }
|
{ required: true, message: '请输入角色编号', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
realname: [
|
name: [
|
||||||
{ required: true, message: '请输入用户姓名', type: 'string', trigger: 'blur' }
|
{ required: true, message: '请输入角色名称', type: 'string', trigger: 'blur' }
|
||||||
],
|
|
||||||
deptId: [
|
|
||||||
{ required: true, message: '请选择部门', type: 'number', trigger: 'blur' }
|
|
||||||
],
|
],
|
||||||
status: [
|
status: [
|
||||||
{ required: true, message: '请选择状态', type: 'number', trigger: 'blur' }
|
{ required: true, message: '请选择状态', type: 'number', trigger: 'blur' }
|
||||||
],
|
|
||||||
roleIds: [
|
|
||||||
{ required: true, message: '请选择角色', type: 'array', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
username: [
|
|
||||||
{ required: true, message: '请输入用户账号', type: 'string', trigger: 'blur' }
|
|
||||||
]
|
]
|
||||||
}),
|
})
|
||||||
handleUpload
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -218,7 +134,7 @@ export default defineComponent({
|
||||||
this.$refs.formRef.validate((errors) => {
|
this.$refs.formRef.validate((errors) => {
|
||||||
if (!errors) {
|
if (!errors) {
|
||||||
if (type === 'add') {
|
if (type === 'add') {
|
||||||
addUser(this.form).then(res => {
|
addRole(this.form).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.handleClose()
|
this.handleClose()
|
||||||
this.$emit('done')
|
this.$emit('done')
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,9 @@
|
||||||
import headSearch from '@/components/Search/index.vue'
|
import headSearch from '@/components/Search/index.vue'
|
||||||
import dataTable from '@/components/DataTable/index.vue'
|
import dataTable from '@/components/DataTable/index.vue'
|
||||||
import TableAction from '@/components/DataTable/tools/Action.vue'
|
import TableAction from '@/components/DataTable/tools/Action.vue'
|
||||||
import { getRoleList, deleteRole } from '@/api/system/role/index'
|
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
||||||
|
import { getRoleList, deleteRole, addRole, editRole, setRoleStatus } from '@/api/system/role/index'
|
||||||
import { h, ref, unref, toRefs, reactive } from 'vue'
|
import { h, ref, unref, toRefs, reactive } from 'vue'
|
||||||
import { NSwitch } from 'naive-ui'
|
|
||||||
import table from './table.js'
|
import table from './table.js'
|
||||||
import info from './info.js'
|
import info from './info.js'
|
||||||
import RoleModal from './components/RoleModal.vue'
|
import RoleModal from './components/RoleModal.vue'
|
||||||
|
|
@ -60,9 +60,11 @@ export default {
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 100,
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(NSwitch, {
|
return h(TableSwitch, {
|
||||||
data: row.status,
|
data: { id: row.id, status: row.status },
|
||||||
value: row.status === 1,
|
rowKey: 'status',
|
||||||
|
checkedValue: 1,
|
||||||
|
uncheckedValue: 2,
|
||||||
onChange: setStatus.bind(row)
|
onChange: setStatus.bind(row)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -84,6 +86,16 @@ export default {
|
||||||
},
|
},
|
||||||
auth: 'basic_list'
|
auth: 'basic_list'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '分配权限',
|
||||||
|
type: 'button',
|
||||||
|
props: {
|
||||||
|
type: 'primary',
|
||||||
|
ghost: true,
|
||||||
|
onClick: configure.bind(null, row)
|
||||||
|
},
|
||||||
|
auth: 'basic_list'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '删除',
|
label: '删除',
|
||||||
type: 'popconfirm',
|
type: 'popconfirm',
|
||||||
|
|
@ -103,18 +115,24 @@ export default {
|
||||||
],
|
],
|
||||||
info: ref(info),
|
info: ref(info),
|
||||||
modalShow: false,
|
modalShow: false,
|
||||||
|
configModalShow: false,
|
||||||
rowData: {}
|
rowData: {}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 编辑
|
||||||
function play(row) {
|
function play(row) {
|
||||||
data.rowData = row
|
data.rowData = row
|
||||||
data.modalShow = true
|
data.modalShow = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 配置权限
|
||||||
|
function configure(row) {
|
||||||
|
data.rowData = row
|
||||||
|
data.configModalShow = true
|
||||||
|
}
|
||||||
|
|
||||||
const params = ref({})
|
const params = ref({})
|
||||||
|
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
|
|
||||||
function handleSearch(data) {
|
function handleSearch(data) {
|
||||||
params.value = {
|
params.value = {
|
||||||
...data
|
...data
|
||||||
|
|
@ -171,8 +189,18 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置状态
|
// 设置状态
|
||||||
function setStatus(e, row) {
|
function setStatus(row) {
|
||||||
console.log(e, row, '状态+++++++++++++=')
|
console.log(row)
|
||||||
|
setRoleStatus({ id: row.data.id, status: row.value }).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
handleSearch()
|
||||||
|
$message.success(res.msg)
|
||||||
|
} else {
|
||||||
|
$message.error(res.msg)
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
console.log(e)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -1,66 +1,28 @@
|
||||||
import TableImage from '@/components/DataTable/tools/Image.vue'
|
|
||||||
import { h } from 'vue'
|
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
columns: [
|
columns: [
|
||||||
{ type: 'selection' },
|
{ type: 'selection' },
|
||||||
{
|
{
|
||||||
title: '用户编号',
|
title: '角色编号',
|
||||||
key: 'code',
|
key: 'code',
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '头像',
|
title: '角色名称',
|
||||||
key: 'avatar',
|
key: 'name',
|
||||||
align: 'center',
|
|
||||||
render(row) {
|
|
||||||
return h(TableImage, {
|
|
||||||
images: {
|
|
||||||
width: 36,
|
|
||||||
height: 36,
|
|
||||||
src: row.avatar
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '用户账号',
|
|
||||||
key: 'username',
|
|
||||||
align: 'center'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '用户姓名',
|
|
||||||
key: 'realname',
|
|
||||||
align: 'center'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '用户类型',
|
|
||||||
key: 'type',
|
|
||||||
align: 'center',
|
|
||||||
width: 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '角色',
|
|
||||||
key: 'roles',
|
|
||||||
align: 'center'
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '部门',
|
|
||||||
key: 'deptName',
|
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
key: 'createTime',
|
key: 'createTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 160
|
Minwidth: 160
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '更新时间',
|
title: '更新时间',
|
||||||
key: 'updateTime',
|
key: 'updateTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 160
|
Minwidth: 160
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
max:1,
|
max:1,
|
||||||
action: '/upload/uploadImage/demo',
|
action: '/upload/uploadImage/demo',
|
||||||
}"
|
}"
|
||||||
size="2"
|
|
||||||
/>
|
/>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
<n-form-item label="用户编号:" path="code">
|
<n-form-item label="用户编号:" path="code">
|
||||||
|
|
@ -141,7 +140,30 @@ export default defineComponent({
|
||||||
|
|
||||||
},
|
},
|
||||||
deptOptions: [],
|
deptOptions: [],
|
||||||
rolesOptions: []
|
rolesOptions: [],
|
||||||
|
rules: {
|
||||||
|
avatar: [
|
||||||
|
{ required: true, message: '请选择头像', type: 'string', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
code: [
|
||||||
|
{ required: true, message: '请输入编号', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
realname: [
|
||||||
|
{ required: true, message: '请输入用户姓名', type: 'string', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
deptId: [
|
||||||
|
{ required: true, message: '请选择部门', type: 'number', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{ required: true, message: '请选择状态', type: 'number', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
roleIds: [
|
||||||
|
{ required: true, message: '请选择角色', type: 'array', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
username: [
|
||||||
|
{ required: true, message: '请输入用户账号', type: 'string', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
const getModalOptions = computed(() => {
|
const getModalOptions = computed(() => {
|
||||||
return {
|
return {
|
||||||
|
|
@ -185,29 +207,6 @@ export default defineComponent({
|
||||||
getModalOptions,
|
getModalOptions,
|
||||||
handleClose,
|
handleClose,
|
||||||
...toRefs(data),
|
...toRefs(data),
|
||||||
rules: reactive({
|
|
||||||
avatar: [
|
|
||||||
{ required: true, message: '请选择头像', type: 'string', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
code: [
|
|
||||||
{ required: true, message: '请输入编号', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
realname: [
|
|
||||||
{ required: true, message: '请输入用户姓名', type: 'string', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
deptId: [
|
|
||||||
{ required: true, message: '请选择部门', type: 'number', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
status: [
|
|
||||||
{ required: true, message: '请选择状态', type: 'number', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
roleIds: [
|
|
||||||
{ required: true, message: '请选择角色', type: 'array', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
username: [
|
|
||||||
{ required: true, message: '请输入用户账号', type: 'string', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
}),
|
|
||||||
handleUpload
|
handleUpload
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,10 @@ import TableAction from '@/components/DataTable/tools/Action.vue'
|
||||||
import TableImage from '@/components/DataTable/tools/Image.vue'
|
import TableImage from '@/components/DataTable/tools/Image.vue'
|
||||||
import TableTags from '@/components/DataTable/tools/Tags.vue'
|
import TableTags from '@/components/DataTable/tools/Tags.vue'
|
||||||
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
||||||
import { getUserList } from '@/api/system/user/index.js'
|
import { getUserList, resetPassword, deleteUser, setUserStatus } from '@/api/system/user/index.js'
|
||||||
import { h, unref, ref, toRefs, reactive } from 'vue'
|
import { h, unref, ref, toRefs, reactive } from 'vue'
|
||||||
import UserModal from './components/UserModal.vue'
|
import UserModal from './components/UserModal.vue'
|
||||||
import info from './info.js'
|
import info from './info.js'
|
||||||
import { NSwitch } from 'naive-ui'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MenuPage',
|
name: 'MenuPage',
|
||||||
components: { dataTable, UserModal, headSearch },
|
components: { dataTable, UserModal, headSearch },
|
||||||
|
|
@ -103,11 +102,11 @@ export default {
|
||||||
width: 100,
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(TableSwitch, {
|
return h(TableSwitch, {
|
||||||
data: row,
|
data: { id: row.id, status: row.status },
|
||||||
rowKey: 'status',
|
rowKey: 'status',
|
||||||
checkedValue: 1,
|
checkedValue: 1,
|
||||||
uncheckedValue: 2,
|
uncheckedValue: 2,
|
||||||
onGetRow: setStatus.bind(row)
|
onChange: setStatus.bind(row)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -255,8 +254,17 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置状态
|
// 设置状态
|
||||||
function setStatus(e, row) {
|
function setStatus(row) {
|
||||||
console.log(e, row, '状态+++++++++++++=')
|
setUserStatus({ id: row.data.id, status: row.value }).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
handleSearch()
|
||||||
|
$message.success(res.msg)
|
||||||
|
} else {
|
||||||
|
$message.error(res.msg)
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
console.log(e)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
@ -270,6 +278,7 @@ export default {
|
||||||
deleteComplex,
|
deleteComplex,
|
||||||
handleCheck,
|
handleCheck,
|
||||||
deleteData,
|
deleteData,
|
||||||
|
resetPsw,
|
||||||
setStatus
|
setStatus
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue