角色管理模块删除接口对接
This commit is contained in:
parent
f13c7e862f
commit
2523c48806
|
|
@ -53,7 +53,7 @@ export function editDept(data) {
|
|||
*/
|
||||
export function deleteDept(id) {
|
||||
return request({
|
||||
url: `/dept/delete${[id]}`,
|
||||
url: `/dept/delete/${id}`,
|
||||
method: 'DELETE'
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ export function editMenu(data) {
|
|||
*/
|
||||
export function deleteMenu(id) {
|
||||
return request({
|
||||
url: `/menu/delete${[id]}`,
|
||||
url: `/menu/delete/${id}`,
|
||||
method: 'DELETE'
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,9 +63,9 @@ export function setRoleStatus(data) {
|
|||
* 删除角色
|
||||
* params
|
||||
*/
|
||||
export function deleteRole(id) {
|
||||
export function deleteRole(data) {
|
||||
return request({
|
||||
url: `/role/delete${[id]}`,
|
||||
url: `/role/delete/${data}`,
|
||||
method: 'DELETE'
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,250 @@
|
|||
<template>
|
||||
<Modal
|
||||
:options="getModalOptions"
|
||||
:on-positive-click="handleConfirm"
|
||||
:on-negative-click="handleClose"
|
||||
:on-close="handleClose"
|
||||
>
|
||||
<template #Context>
|
||||
<n-form
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
label-placement="left"
|
||||
:rules="rules"
|
||||
:on-positive-click="handleConfirm"
|
||||
:on-negative-click="handleClose"
|
||||
>
|
||||
<n-form-item
|
||||
label="头像:"
|
||||
path="avatar"
|
||||
>
|
||||
<uploadImage
|
||||
:options="{
|
||||
max:1,
|
||||
action: '/upload/uploadImage/demo',
|
||||
}"
|
||||
size="2"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="用户编号:" path="code">
|
||||
<n-input
|
||||
v-model:value="form.code"
|
||||
clearable
|
||||
:maxlength="20"
|
||||
placeholder="请输入用户编号"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="用户账号:" path="username">
|
||||
<n-input
|
||||
v-model:value="form.username"
|
||||
clearable
|
||||
:maxlength="20"
|
||||
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 label="状态" path="status">
|
||||
<n-radio-group
|
||||
v-model:value="form.status"
|
||||
>
|
||||
<n-radio :value="1">正常</n-radio>
|
||||
<n-radio :value="2">禁用</n-radio>
|
||||
</n-radio-group>
|
||||
</n-form-item>
|
||||
<n-form-item
|
||||
label="备注:"
|
||||
>
|
||||
<n-input
|
||||
v-model:value="form.note"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
:maxlength="200"
|
||||
placeholder="请输入备注"
|
||||
/>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</template>
|
||||
</Modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { defineComponent, computed, onMounted, reactive, toRefs } from 'vue'
|
||||
import Modal from '@/components/Modal/index.vue'
|
||||
import uploadImage from '@/components/ImgUpload/index.vue'
|
||||
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({
|
||||
name: 'UserModal',
|
||||
components: { Modal, uploadImage },
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
row: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
emits: {
|
||||
'update:visible': null,
|
||||
'done': null
|
||||
},
|
||||
setup(props, { emit }) {
|
||||
const data = reactive({
|
||||
form: {
|
||||
avatar: '/images/user/20211011/20211011151447698.jpg',
|
||||
code: '',
|
||||
deptId: null,
|
||||
username: '',
|
||||
realname: '',
|
||||
password: '',
|
||||
roleIds: [],
|
||||
status: 1,
|
||||
note: ''
|
||||
|
||||
},
|
||||
deptOptions: [],
|
||||
rolesOptions: []
|
||||
})
|
||||
const getModalOptions = computed(() => {
|
||||
return {
|
||||
title: Object.keys(props.row).length === 0 ? '添加用户' : '编辑用户',
|
||||
show: props.visible,
|
||||
form: Object.assign(data.form, props.row),
|
||||
negativeText: '取消',
|
||||
positiveText: '确认'
|
||||
}
|
||||
})
|
||||
|
||||
/* 关闭弹窗 */
|
||||
const handleClose = () => {
|
||||
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 {
|
||||
getModalOptions,
|
||||
handleClose,
|
||||
...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
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 表单提交
|
||||
handleConfirm() {
|
||||
const type = Object.keys(this.row).length === 0 ? 'add' : 'edit'
|
||||
this.$refs.formRef.validate((errors) => {
|
||||
if (!errors) {
|
||||
if (type === 'add') {
|
||||
addUser(this.form).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.handleClose()
|
||||
this.$emit('done')
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.msg)
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
} else if (type === 'edit') {
|
||||
editUser(this.form).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.handleClose()
|
||||
this.$emit('done')
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
</style>
|
||||
|
|
@ -1,45 +1,72 @@
|
|||
<template>
|
||||
<div>
|
||||
<n-card>
|
||||
<headSearch :info="data.info" @search="handleSearch" />
|
||||
|
||||
<headSearch :info="info" @search="handleSearch" />
|
||||
<data-table
|
||||
ref="tableRef"
|
||||
:columns="data.columns"
|
||||
:columns="columns"
|
||||
:row-key="(row) => row.id"
|
||||
:request="loadDataTable"
|
||||
size="large"
|
||||
scroll-x="1200"
|
||||
@update:checked-row-keys="handleCheck"
|
||||
>
|
||||
<template #tableTitle>
|
||||
<n-button type="primary">
|
||||
新建
|
||||
</n-button>
|
||||
<n-button type="primary">
|
||||
删除
|
||||
</n-button>
|
||||
<n-button type="primary" @click="handleModal"> 新建 </n-button>
|
||||
<n-popconfirm
|
||||
negative-text="取消"
|
||||
positive-text="确认"
|
||||
@positive-click="deleteComplex"
|
||||
>
|
||||
<template #trigger>
|
||||
<n-button type="primary">删除</n-button>
|
||||
</template>
|
||||
确定删除选中的数据吗?
|
||||
</n-popconfirm>
|
||||
</template>
|
||||
</data-table>
|
||||
</n-card>
|
||||
</div>
|
||||
<!-- 新增、编辑弹窗 -->
|
||||
<role-modal
|
||||
v-if="modalShow"
|
||||
v-model:visible="modalShow"
|
||||
:row="rowData"
|
||||
@done="handleSearch"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import headSearch from '@/components/Search/index.vue'
|
||||
import dataTable from '@/components/DataTable/index.vue'
|
||||
import TableAction from '@/components/DataTable/tools/Action.vue'
|
||||
import { getRoleList } from '@/api/system/role/index'
|
||||
import { h, ref, unref } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { getRoleList, deleteRole } from '@/api/system/role/index'
|
||||
import { h, ref, unref, toRefs, reactive } from 'vue'
|
||||
import { NSwitch } from 'naive-ui'
|
||||
import table from './table.js'
|
||||
import info from './info.js'
|
||||
import RoleModal from './components/RoleModal.vue'
|
||||
|
||||
export default {
|
||||
name: 'MenuPage',
|
||||
components: { headSearch, dataTable },
|
||||
components: { headSearch, dataTable, RoleModal },
|
||||
setup() {
|
||||
const data = reactive({
|
||||
columns: [
|
||||
...table.columns,
|
||||
{
|
||||
title: '状态',
|
||||
key: 'status',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
render(row) {
|
||||
return h(NSwitch, {
|
||||
data: row.status,
|
||||
value: row.status === 1,
|
||||
onChange: setStatus.bind(row)
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
|
|
@ -61,9 +88,11 @@ export default {
|
|||
label: '删除',
|
||||
type: 'popconfirm',
|
||||
auth: 'basic_list',
|
||||
tip: '确定删除这条数据吗?',
|
||||
props: {
|
||||
negativeText: '取消',
|
||||
positiveText: '确认'
|
||||
positiveText: '确认',
|
||||
onPositiveClick: deleteSingle.bind(null, row.id)
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
@ -101,10 +130,66 @@ export default {
|
|||
return await getRoleList(_params)
|
||||
}
|
||||
|
||||
return { data, tableRef, loadDataTable, handleSearch }
|
||||
}
|
||||
// 新增用户
|
||||
function handleModal() {
|
||||
data.rowData = {}
|
||||
data.modalShow = true
|
||||
}
|
||||
|
||||
// 选择表格数据
|
||||
const selectedIds = ref([])
|
||||
function handleCheck(rowKeys) {
|
||||
selectedIds.value = rowKeys
|
||||
}
|
||||
// 批量删除
|
||||
function deleteComplex() {
|
||||
if (selectedIds.value.length) {
|
||||
deleteData(selectedIds.value)
|
||||
} else {
|
||||
$message.warning('请至少选中一条数据')
|
||||
}
|
||||
}
|
||||
// 单个删除数据
|
||||
function deleteSingle(id) {
|
||||
deleteData([id])
|
||||
}
|
||||
|
||||
// 删除接口
|
||||
function deleteData(data) {
|
||||
deleteRole(data)
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
handleSearch()
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
|
||||
// 设置状态
|
||||
function setStatus(e, row) {
|
||||
console.log(e, row, '状态+++++++++++++=')
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(data),
|
||||
tableRef,
|
||||
loadDataTable,
|
||||
handleSearch,
|
||||
handleModal,
|
||||
handleCheck,
|
||||
selectedIds,
|
||||
deleteSingle,
|
||||
deleteComplex,
|
||||
deleteData,
|
||||
setStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
.n-button + .n-button {
|
||||
|
|
|
|||
|
|
@ -45,12 +45,6 @@ const data = {
|
|||
align: 'center'
|
||||
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
key: 'status',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
title: '部门',
|
||||
key: 'deptName',
|
||||
|
|
|
|||
|
|
@ -25,17 +25,6 @@
|
|||
}"
|
||||
size="2"
|
||||
/>
|
||||
<!-- <n-upload
|
||||
action="https://www.mocky.io/v2/5e4bafc63100007100d8b70f"
|
||||
list-type="image-card"
|
||||
/>
|
||||
<n-modal
|
||||
preset="card"
|
||||
style="width: 600px"
|
||||
title="头像"
|
||||
>
|
||||
<img :src="form.avatar" style="width: 100%">
|
||||
</n-modal> -->
|
||||
</n-form-item>
|
||||
<n-form-item label="用户编号:" path="code">
|
||||
<n-input
|
||||
|
|
@ -233,9 +222,9 @@ export default defineComponent({
|
|||
if (res.code === 0) {
|
||||
this.handleClose()
|
||||
this.$emit('done')
|
||||
$message.success(res.data.msg)
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.data.msg)
|
||||
$message.error(res.msg)
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
|
|
@ -245,9 +234,9 @@ export default defineComponent({
|
|||
if (res.code === 0) {
|
||||
this.handleClose()
|
||||
this.$emit('done')
|
||||
$message.success(res.data.msg)
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.data.msg)
|
||||
$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
<template>
|
||||
<div>
|
||||
<n-card>
|
||||
<headSearch :info="data.info" @search="handleSearch" />
|
||||
<headSearch :info="info" @search="handleSearch" />
|
||||
<data-table
|
||||
ref="tableRef"
|
||||
:columns="data.columns"
|
||||
:columns="columns"
|
||||
:row-key="(row) => row.id"
|
||||
:request="loadDataTable"
|
||||
size="large"
|
||||
@update:checked-row-keys="handleCheck"
|
||||
>
|
||||
<template #tableTitle>
|
||||
<n-button type="primary" @click="handleUser"> 新建 </n-button>
|
||||
<n-button type="primary" @click="handleModal"> 新建 </n-button>
|
||||
<n-popconfirm
|
||||
negative-text="取消"
|
||||
positive-text="确认"
|
||||
@positive-click="deleteUsers('plural')"
|
||||
@positive-click="deleteComplex"
|
||||
>
|
||||
<template #trigger>
|
||||
<n-button type="primary"> 删除 </n-button>
|
||||
</template>
|
||||
确认要删除选中数据吗?
|
||||
确认要删除选中数据吗?
|
||||
</n-popconfirm>
|
||||
</template>
|
||||
</data-table>
|
||||
|
|
@ -28,8 +28,8 @@
|
|||
</div>
|
||||
<!-- 新增、编辑弹窗 -->
|
||||
<user-modal
|
||||
v-if="data.modalShow"
|
||||
v-model:visible="data.modalShow"
|
||||
v-if="modalShow"
|
||||
v-model:visible="modalShow"
|
||||
:row="rowData"
|
||||
@done="handleSearch"
|
||||
/>
|
||||
|
|
@ -41,11 +41,11 @@ import dataTable from '@/components/DataTable/index.vue'
|
|||
import TableAction from '@/components/DataTable/tools/Action.vue'
|
||||
import TableImage from '@/components/DataTable/tools/Image.vue'
|
||||
import TableTags from '@/components/DataTable/tools/Tags.vue'
|
||||
import { getUserList, deleteUser } from '@/api/system/user/index.js'
|
||||
import { h, unref, toRefs, ref } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { getUserList, deleteUser, resetPassword } from '@/api/system/user/index.js'
|
||||
import { h, unref, toRefs, ref, reactive } from 'vue'
|
||||
import UserModal from './components/UserModal.vue'
|
||||
import info from './info.js'
|
||||
import { NSwitch } from 'naive-ui'
|
||||
export default {
|
||||
name: 'MenuPage',
|
||||
components: { dataTable, UserModal, headSearch },
|
||||
|
|
@ -101,18 +101,10 @@ export default {
|
|||
align: 'center',
|
||||
width: 100,
|
||||
render(row) {
|
||||
return h(TableTags, {
|
||||
return h(NSwitch, {
|
||||
data: row.status,
|
||||
filters: [
|
||||
{
|
||||
key: 1,
|
||||
label: '启用'
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
label: '禁用'
|
||||
}
|
||||
]
|
||||
value: row.status === 1,
|
||||
onChange: setStatus.bind(row)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
@ -150,10 +142,22 @@ export default {
|
|||
},
|
||||
auth: 'basic_list'
|
||||
},
|
||||
{
|
||||
label: '重置密码',
|
||||
type: 'popconfirm',
|
||||
auth: 'basic_list',
|
||||
tip: '确定要重置为123456吗?',
|
||||
props: {
|
||||
negativeText: '取消',
|
||||
positiveText: '确认',
|
||||
onPositiveClick: resetPsw.bind(null, row.id)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '删除',
|
||||
type: 'popconfirm',
|
||||
auth: 'basic_list',
|
||||
tip: '确定删除这条数据吗?',
|
||||
props: {
|
||||
negativeText: '取消',
|
||||
positiveText: '确认',
|
||||
|
|
@ -196,7 +200,7 @@ export default {
|
|||
}
|
||||
|
||||
// 新增用户
|
||||
function handleUser() {
|
||||
function handleModal() {
|
||||
data.rowData = {}
|
||||
data.modalShow = true
|
||||
}
|
||||
|
|
@ -206,8 +210,8 @@ export default {
|
|||
function handleCheck(rowKeys) {
|
||||
selectedIds.value = rowKeys
|
||||
}
|
||||
// 批量删除用户
|
||||
function deleteUsers() {
|
||||
// 批量删除
|
||||
function deleteComplex() {
|
||||
if (selectedIds.value.length) {
|
||||
deleteData(selectedIds.value)
|
||||
} else {
|
||||
|
|
@ -224,26 +228,46 @@ export default {
|
|||
deleteUser(data).then((res) => {
|
||||
if (res.code === 0) {
|
||||
handleSearch()
|
||||
$message.success(res.data.msg)
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.data.msg)
|
||||
$message.error(res.msg)
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
|
||||
// 重置密码
|
||||
function resetPsw(id) {
|
||||
resetPassword({ id }).then(res => {
|
||||
if (res.code === 0) {
|
||||
handleSearch()
|
||||
$message.success(res.msg)
|
||||
} else {
|
||||
$message.error(res.msg)
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
|
||||
// 设置状态
|
||||
function setStatus(e, row) {
|
||||
console.log(e, row, '状态+++++++++++++=')
|
||||
}
|
||||
|
||||
return {
|
||||
data,
|
||||
loadDataTable,
|
||||
handleUser,
|
||||
handleModal,
|
||||
...toRefs(data),
|
||||
tableRef,
|
||||
handleSearch,
|
||||
deleteUsers,
|
||||
handleCheck,
|
||||
selectedIds,
|
||||
deleteData
|
||||
deleteComplex,
|
||||
handleCheck,
|
||||
deleteData,
|
||||
setStatus
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue