|
@@ -2,7 +2,16 @@
|
|
|
import { ref, reactive, nextTick } from 'vue'
|
|
|
import TableBase from '@/components/TableBase/index.vue'
|
|
|
import type { ColumnProps } from '@/components/TableBase/interface/index'
|
|
|
-import { User_Power_List, User_Sys_List, Menu_List, User_Power_Add, User_Power_Del } from '@/api/role/index'
|
|
|
+import {
|
|
|
+ User_Power_List,
|
|
|
+ User_Sys_List,
|
|
|
+ Menu_List,
|
|
|
+ User_Power_Get,
|
|
|
+ User_Power_Add,
|
|
|
+ User_Power_Del,
|
|
|
+ User_Power_Edit,
|
|
|
+ User_Power_Edit_Menu
|
|
|
+} from '@/api/role/index'
|
|
|
import { Edit, Delete, Operation } from '@element-plus/icons-vue'
|
|
|
import Dialog from '@/components/dialog/Dialog.vue'
|
|
|
import Drawer from '@/components/Drawer/index.vue'
|
|
@@ -11,14 +20,17 @@ import type { FormInstance, FormRules } from 'element-plus'
|
|
|
import { ElNotification, ElMessageBox, ElMessage } from 'element-plus'
|
|
|
|
|
|
const globalStore = GlobalStore()
|
|
|
+// 权限
|
|
|
const dialog = ref()
|
|
|
const TableRef = ref()
|
|
|
+let currentVal: any = {}
|
|
|
const DialogOpen = async (row: any) => {
|
|
|
- console.log(row)
|
|
|
+ currentVal = row
|
|
|
await getSysList()
|
|
|
dialog.value.DialogOpen()
|
|
|
}
|
|
|
-const checkList = ref()
|
|
|
+
|
|
|
+const checkList = ref<string[]>([])
|
|
|
const columns: ColumnProps[] = [
|
|
|
{ type: 'index', label: '#', width: 80 },
|
|
|
{ prop: 'T_name', label: '姓名' },
|
|
@@ -30,6 +42,7 @@ interface InSys {
|
|
|
T_sys: string
|
|
|
T_name: string
|
|
|
children: any
|
|
|
+ checkList: string[]
|
|
|
}
|
|
|
|
|
|
let SysList = ref<InSys[]>([])
|
|
@@ -37,20 +50,56 @@ const getSysList = async () => {
|
|
|
const { Data } = await User_Sys_List({ User_tokey: globalStore.GET_User_tokey })
|
|
|
SysList.value = Data as InSys[]
|
|
|
}
|
|
|
-// let MenuList = reactive([])
|
|
|
const getMenuList = async (code: string) => {
|
|
|
- const res = await Menu_List({ User_tokey: globalStore.GET_User_tokey, T_code: code })
|
|
|
+ // User_Power_Get
|
|
|
+ const res: any = await User_Power_Get({ User_tokey: globalStore.GET_User_tokey, T_code: code, T_id: currentVal.T_id })
|
|
|
const sys = SysList.value.find(item => item.T_sys === code) as InSys
|
|
|
- console.log(SysList, sys, res)
|
|
|
- sys.children = res.Data.Data[0].Children
|
|
|
+ console.log(res)
|
|
|
+ sys.children = res.Data.Menu[0].Children
|
|
|
+ if (res.Data.Menu_checked) {
|
|
|
+ sys.checkList = sys.children.map((m: any) => {
|
|
|
+ if (res.Data.Menu_checked.includes(m.Id)) return m.T_name
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ sys.checkList = []
|
|
|
+ }
|
|
|
}
|
|
|
-const submitUserRole = () => {
|
|
|
- console.log(checkList)
|
|
|
+const submitUserRole = async (item: InSys) => {
|
|
|
+ console.log(checkList.value, currentVal, item, SysList)
|
|
|
+
|
|
|
+ let Sys: any = SysList.value.find(sys => item.T_sys === sys.T_sys)
|
|
|
+ let childs = Sys?.children.filter((child: InSys) => Sys.checkList.includes(child.T_name))
|
|
|
+ let T_menu = ''
|
|
|
+ if (childs.length > 1) {
|
|
|
+ childs.forEach((f: any) => {
|
|
|
+ let str = 'M' + f.Id + '|'
|
|
|
+ T_menu += str
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ T_menu = 'M' + childs[0].Id
|
|
|
+ }
|
|
|
+ const params = {
|
|
|
+ User_tokey: globalStore.GET_User_tokey,
|
|
|
+ T_id: currentVal.T_id,
|
|
|
+ T_code: item.T_sys,
|
|
|
+ T_menu
|
|
|
+ }
|
|
|
+ console.log(params)
|
|
|
+
|
|
|
+ // const res = await User_Power_Edit_Menu(params)
|
|
|
+ // if (res.Code === 200) {
|
|
|
+ // ElMessage({
|
|
|
+ // type: 'success',
|
|
|
+ // message: '修改成功!'
|
|
|
+ // })
|
|
|
+ // dialog.value.DialogClose()
|
|
|
+ // checkList.value = []
|
|
|
+ // }
|
|
|
}
|
|
|
+
|
|
|
const initParam = {
|
|
|
User_tokey: globalStore.GET_User_tokey,
|
|
|
- page: 1,
|
|
|
- page_z: 10
|
|
|
+ T_name: ''
|
|
|
}
|
|
|
|
|
|
// 添加角色
|
|
@@ -69,12 +118,13 @@ const callbackDrawer = (done: Fn) => {
|
|
|
const openDrawer = (type: string, row?: any) => {
|
|
|
isNew.value = type === 'new' ? true : false
|
|
|
nextTick(() => {
|
|
|
- !isNew.value && (form.name = row.T_name)
|
|
|
+ !isNew.value && ((form.name = row.T_name), (form.id = row.T_id))
|
|
|
})
|
|
|
- drawerRef.value.closeDrawer()
|
|
|
+ drawerRef.value.openDrawer()
|
|
|
}
|
|
|
const form = reactive({
|
|
|
- name: ''
|
|
|
+ name: '',
|
|
|
+ id: ''
|
|
|
})
|
|
|
const resetForm = (formEl: FormInstance | undefined) => {
|
|
|
if (!formEl) return
|
|
@@ -84,15 +134,24 @@ const AddUserName = (formEl: FormInstance | undefined) => {
|
|
|
if (!formEl) return
|
|
|
formEl.validate(async valid => {
|
|
|
if (valid) {
|
|
|
- let res = await User_Power_Add({ User_tokey: globalStore.GET_User_tokey, T_name: form.name })
|
|
|
+ let res: any = {}
|
|
|
+ if (isNew.value) {
|
|
|
+ res = await User_Power_Add({ User_tokey: globalStore.GET_User_tokey, T_name: form.name })
|
|
|
+ } else {
|
|
|
+ res = await User_Power_Edit({ User_tokey: globalStore.GET_User_tokey, T_name: form.name, T_id: form.id })
|
|
|
+ }
|
|
|
if (res.Code === 200) {
|
|
|
ElNotification.success({
|
|
|
title: '添加角色',
|
|
|
message: '添加成功!',
|
|
|
position: 'bottom-right'
|
|
|
})
|
|
|
- drawerRef.value.closeDrawer()
|
|
|
- TableRef.value.getTableList()
|
|
|
+ nextTick(() => {
|
|
|
+ drawerRef.value.closeDrawer()
|
|
|
+ TableRef.value.getTableList()
|
|
|
+ resetForm(ruleFormRef.value)
|
|
|
+ isNew.value = false
|
|
|
+ })
|
|
|
}
|
|
|
} else {
|
|
|
console.log('error submit!')
|
|
@@ -119,6 +178,13 @@ const UserDelete = (row: any) => {
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+// 搜索
|
|
|
+const search = ref('')
|
|
|
+const searchHandle = () => {
|
|
|
+ initParam.T_name = search.value
|
|
|
+ TableRef.value.getTableList()
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -128,8 +194,8 @@ const UserDelete = (row: any) => {
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<span class="ml-3 w-35 text-gray-600 inline-flex items-center">角色名:</span>
|
|
|
- <el-input type="text" class="w-50 m-2" />
|
|
|
- <el-button type="primary">搜索</el-button>
|
|
|
+ <el-input v-model="search" type="text" class="w-50 m-2" />
|
|
|
+ <el-button type="primary" @click="searchHandle">搜索</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="6" :offset="6"><el-button type="primary" @click="openDrawer('new')">添加</el-button></el-col>
|
|
|
</el-row>
|
|
@@ -158,16 +224,16 @@ const UserDelete = (row: any) => {
|
|
|
>
|
|
|
<el-col :span="18"
|
|
|
><div class="grid-content grid-active">
|
|
|
- <el-checkbox-group v-model="checkList" v-if="item.children">
|
|
|
+ <el-checkbox-group v-model="item.checkList" v-if="item.children">
|
|
|
<el-checkbox :label="child.T_name" v-for="child in item.children" :key="'rr' + child.Id">{{
|
|
|
child.T_name
|
|
|
}}</el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
- </div></el-col
|
|
|
- >
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
<el-col :span="3"
|
|
|
><div class="grid-content">
|
|
|
- <el-button type="primary" @click="submitUserRole">提交</el-button>
|
|
|
+ <el-button type="primary" @click="submitUserRole(item)">提交</el-button>
|
|
|
</div></el-col
|
|
|
>
|
|
|
</el-row>
|
|
@@ -181,7 +247,8 @@ const UserDelete = (row: any) => {
|
|
|
<el-input v-model="form.name" type="text" autocomplete="off" placeholder="请输入角色名称" />
|
|
|
</el-form-item>
|
|
|
<el-form-item :label-width="formLabelWidth">
|
|
|
- <el-button color="#626aef" @click="AddUserName(ruleFormRef)">添加</el-button>
|
|
|
+ <el-button v-if="isNew" color="#626aef" @click="AddUserName(ruleFormRef)">添加</el-button>
|
|
|
+ <el-button v-else color="#626aef" @click="AddUserName(ruleFormRef)">修改</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</Drawer>
|