|
|
|
@ -5,14 +5,15 @@ |
|
|
|
--> |
|
|
|
<script lang='ts' setup> |
|
|
|
import { getOrgTreeList } from "@/api/hr/org/index"; |
|
|
|
import { appInitAuthorization,gainAppTableListNew,getPowerPageUser,systemAppAuthorization,gainAppEmpowerPower } from "@/api/system/roleapi/postrole"; |
|
|
|
import { appInitAuthorization,gainAppTableListNew,getPowerPageUser,systemAppAuthorization,copyRolePower } from "@/api/system/roleapi/postrole"; |
|
|
|
import { appPowerUnit } from "@/api/system/roleapi/power"; |
|
|
|
import { giveRoleTree,editRoleStatus,getOrgPostTree } from '@/api/role/index' |
|
|
|
import type { getSystemPower,AppPowerTree,systemList,custerAppInfo, custerAppTablePower, searchUser } from "@/api/system/roleapi/types"; |
|
|
|
import type { TreeInstance } from 'element-plus' |
|
|
|
import type { FormRules, TreeInstance } from 'element-plus' |
|
|
|
import type {RoleListTree,RoleFormInfo,orgAndPostisListTree} from '@/api/role/types' |
|
|
|
import { appTableBut, appListBut,appDetailBut,formBaseBut,appGroupBut } from "@/utils/workflow/const"; |
|
|
|
|
|
|
|
|
|
|
|
import { Search } from '@element-plus/icons-vue' |
|
|
|
|
|
|
|
import SvgIcon from "@/components/SvgIcon/index.vue"; |
|
|
|
@ -500,6 +501,61 @@ const savePowerUserSub = () => { |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2026-01-15 15:17:25 |
|
|
|
@ 功能: 复制角色 |
|
|
|
*/ |
|
|
|
const copyRoleRef = ref(ElForm) |
|
|
|
const copyIshow = ref(false) |
|
|
|
const copyRoleInfo = ref<any>() |
|
|
|
const copyRolePowerInfo = (val:any) => { |
|
|
|
console.log("复制角色",val) |
|
|
|
val.label = val.label+"_复制" |
|
|
|
copyRoleInfo.value = val |
|
|
|
copyIshow.value = true |
|
|
|
} |
|
|
|
const handleCloseCopyRole = () => { |
|
|
|
copyIshow.value = false |
|
|
|
copyRoleRef.value.resetFields() |
|
|
|
} |
|
|
|
//表单验证规则 |
|
|
|
const rulesCopyRole = reactive({ |
|
|
|
label: [{ required: true, message: "请输入名称", trigger: "blur" }], |
|
|
|
}) |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2026-01-15 15:40:16 |
|
|
|
@ 功能: 提交复制 |
|
|
|
*/ |
|
|
|
const sumbCopy = () => { |
|
|
|
console.log("提交复制",copyRoleInfo.value) |
|
|
|
copyRoleRef.value.validate((isValid: boolean)=>{ |
|
|
|
if(isValid){ |
|
|
|
copyRolePower({ |
|
|
|
id: copyRoleInfo.value.id.toString(), |
|
|
|
label: copyRoleInfo.value.label, |
|
|
|
}).then((data:any)=>{ |
|
|
|
console.log("提交复制-data--3---->",data) |
|
|
|
if(data.code==0){ |
|
|
|
ElMessage({ |
|
|
|
message: "提交成功", |
|
|
|
type: "success", |
|
|
|
}) |
|
|
|
}else{ |
|
|
|
ElMessage({ |
|
|
|
message: "提交失败", |
|
|
|
type: "error", |
|
|
|
}) |
|
|
|
} |
|
|
|
}).finally(()=>{ |
|
|
|
handleCloseCopyRole() |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
//组件渲染完毕 |
|
|
|
onMounted(()=>{ |
|
|
|
getOrgTreeAry(); |
|
|
|
@ -514,6 +570,34 @@ onMounted(()=>{ |
|
|
|
</script> |
|
|
|
<template> |
|
|
|
<div class="app-content"> |
|
|
|
<el-dialog |
|
|
|
v-model="copyIshow" |
|
|
|
title="复制角色" |
|
|
|
width="500" |
|
|
|
:before-close="handleCloseCopyRole" |
|
|
|
> |
|
|
|
<el-form |
|
|
|
ref="copyRoleRef" |
|
|
|
style="width: 100%" |
|
|
|
:model="copyRoleInfo" |
|
|
|
:rules="rulesCopyRole" |
|
|
|
label-width="auto" |
|
|
|
> |
|
|
|
<el-form-item label="名称" prop="label"> |
|
|
|
<el-input v-model="copyRoleInfo.label" /> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
<template #footer> |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button @click="handleCloseCopyRole">取消</el-button> |
|
|
|
<el-button type="primary" @click="sumbCopy">提交 |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
<div ref="roleLeft" class="roleLeft"> |
|
|
|
<el-tabs v-model="systemPower.powerType" class="demo-tabs"> |
|
|
|
<el-tab-pane label="组织" name="org"> |
|
|
|
@ -564,12 +648,54 @@ onMounted(()=>{ |
|
|
|
<template #label> |
|
|
|
<el-text class="tabsTitle">角色</el-text> |
|
|
|
</template> |
|
|
|
<div class="butBox"> |
|
|
|
<div class="butBox" style="display: none;"> |
|
|
|
<el-button type="primary" @click="addRoleGroup(2)">新建角色组</el-button> |
|
|
|
<el-button type="primary" @click="addRoleGroup(1)">新建角色</el-button> |
|
|
|
</div> |
|
|
|
<div class="searchBox"> |
|
|
|
<div class="searchBox czjzzydq"> |
|
|
|
<el-input v-model="searchQuery" placeholder="请输入要查找的角色" :suffix-icon="Search" @input="onQueryChanged"/> |
|
|
|
<el-dropdown> |
|
|
|
<el-button type="primary" class="fa fa-plus" /> |
|
|
|
<template #dropdown> |
|
|
|
<el-dropdown-menu> |
|
|
|
<el-dropdown-item @click="addRoleGroup(1)"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-space wrap> |
|
|
|
<svg-icon |
|
|
|
style="color: #eebe77" |
|
|
|
prefix="icon" |
|
|
|
icon-class="liuChengBiaoDan" |
|
|
|
/> |
|
|
|
新建角色 |
|
|
|
</el-space> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24" style="padding-left: 20px; font-size: 12px"> |
|
|
|
数据收集、事件记录<br />任务协同、业务审批 |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-dropdown-item> |
|
|
|
<el-dropdown-item @click="addRoleGroup(2)"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-space wrap> |
|
|
|
<svg-icon |
|
|
|
style="color: #337ecc" |
|
|
|
prefix="icon" |
|
|
|
icon-class="fenZhu" |
|
|
|
/> |
|
|
|
新建角色组 |
|
|
|
</el-space> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24" style="padding-left: 20px; font-size: 12px"> |
|
|
|
应用项目管理 |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-menu> |
|
|
|
</template> |
|
|
|
</el-dropdown> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="treeBoxClass"> |
|
|
|
<el-tree-v2 |
|
|
|
@ -605,6 +731,9 @@ onMounted(()=>{ |
|
|
|
<el-dropdown-item> |
|
|
|
<el-text size="small" @click.stop="editMyInfoIcon(node.data,3)">编辑</el-text> |
|
|
|
</el-dropdown-item > |
|
|
|
<el-dropdown-item v-if="node.data.types == 1" divided> |
|
|
|
<el-text size="small" @click.stop="copyRolePowerInfo(node.data)">复制</el-text> |
|
|
|
</el-dropdown-item> |
|
|
|
<el-dropdown-item divided> |
|
|
|
<el-text type="danger" size="small" @click.stop="editMyInfoIcon(node.data,4)">删除</el-text> |
|
|
|
</el-dropdown-item> |
|
|
|
@ -742,7 +871,7 @@ onMounted(()=>{ |
|
|
|
</el-tabs> |
|
|
|
</div> |
|
|
|
|
|
|
|
<AddRoleGroup v-if="openRoleGroup" v-model:show="openRoleGroup" :group-info="roleGroupOrInfo" @resthandel="getRoleTree" /> |
|
|
|
<AddRoleGroup v-if="openRoleGroup" v-model:show="openRoleGroup" :group-info="roleGroupOrInfo" @resthandel="getRoleTree" /> |
|
|
|
<SetRolePeople v-model:show="setRolePople" :org="orgTree" :role-info="setRoleManInfo" /> |
|
|
|
<EditRoleGroup v-if="openEditRoleGroup" v-model:show="openEditRoleGroup" :group-info="roleGroupOrInfo" :data="editRoleCont" @resthandel="getRoleTree" /> |
|
|
|
</div> |
|
|
|
@ -769,6 +898,11 @@ onMounted(()=>{ |
|
|
|
.searchBox{ |
|
|
|
padding: 0 10px 5px 10px; |
|
|
|
} |
|
|
|
.czjzzydq{ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
} |
|
|
|
.treeBox{ |
|
|
|
height: calc(100vh - 330px); |
|
|
|
|
|
|
|
|