yh-pub 1.0.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AdminLogin-BoxKRRwd.js +140 -0
- package/AdminLogin-BoxKRRwd.js.map +1 -0
- package/Dict.vue_vue_type_script_setup_true_lang-A8BZwEiK.js +55 -0
- package/Dict.vue_vue_type_script_setup_true_lang-A8BZwEiK.js.map +1 -0
- package/Error-BCu4KHfU.js +43 -0
- package/Error-BCu4KHfU.js.map +1 -0
- package/Error401-C5kTyMSM.js +30 -0
- package/Error401-C5kTyMSM.js.map +1 -0
- package/Error404-P3qKjHk6.js +30 -0
- package/Error404-P3qKjHk6.js.map +1 -0
- package/Error500-NVnuOBIQ.js +30 -0
- package/Error500-NVnuOBIQ.js.map +1 -0
- package/HomeIndex-C806Fp-9.js +438 -0
- package/HomeIndex-C806Fp-9.js.map +1 -0
- package/IconExplorer-CBg1lvD0.js +66 -0
- package/IconExplorer-CBg1lvD0.js.map +1 -0
- package/Index-AjfvK7Ss.js +5 -0
- package/Index-AjfvK7Ss.js.map +1 -0
- package/MainLogin-wW7bSk0F.js +155 -0
- package/MainLogin-wW7bSk0F.js.map +1 -0
- package/MenuManage-CIxqmusr.js +641 -0
- package/MenuManage-CIxqmusr.js.map +1 -0
- package/OrgManage-BcTWbnyc.js +378 -0
- package/OrgManage-BcTWbnyc.js.map +1 -0
- package/RoleManage-Bw83c_7q.js +729 -0
- package/RoleManage-Bw83c_7q.js.map +1 -0
- package/SysConfig-L0A1eY-O.js +727 -0
- package/SysConfig-L0A1eY-O.js.map +1 -0
- package/TenantList-B5imzQc5.js +696 -0
- package/TenantList-B5imzQc5.js.map +1 -0
- package/index-BP41Ph8K.js +55257 -0
- package/index-BP41Ph8K.js.map +1 -0
- package/index-CJ0So9-k.js +7 -0
- package/index-CJ0So9-k.js.map +1 -0
- package/index-wVC41gTc.js +23955 -0
- package/index-wVC41gTc.js.map +1 -0
- package/index.d.ts +35 -0
- package/index.es.js +66 -0
- package/index.es.js.map +1 -0
- package/package.json +27 -6
- package/style.css +1 -0
- package/README.MD +0 -19
- package/layout/admin/adminIndex.vue +0 -104
- package/layout/admin/api/loginApi.js +0 -24
- package/layout/admin/api/routers.js +0 -93
- package/layout/admin/api/tenantApi.js +0 -123
- package/layout/admin/home/homeIndex.vue +0 -25
- package/layout/admin/login/login.vue +0 -161
- package/layout/admin/menu/MenuIndex.vue +0 -648
- package/layout/admin/menu/icon.vue +0 -108
- package/layout/admin/menu/iconList.js +0 -934
- package/layout/admin/saTenant/saTenant.js +0 -0
- package/layout/admin/saTenant/saTenant.vue +0 -173
- package/layout/admin/saTenant/saTenantForm.js +0 -80
- package/layout/admin/saTenant/saTenantForm.vue +0 -61
- package/layout/admin/saTenant/saTenantRoleManage.js +0 -417
- package/layout/admin/saTenant/saTenantRoleManage.vue +0 -99
- package/layout/admin/user/saUser.less +0 -6
- package/layout/admin/user/saUser.vue +0 -72
- package/layout/main/components/console/console.vue +0 -205
- package/layout/main/components/error-store/error-store.vue +0 -72
- package/layout/main/components/error-store/index.js +0 -2
- package/layout/main/components/fullscreen/fullscreen.vue +0 -57
- package/layout/main/components/fullscreen/index.js +0 -2
- package/layout/main/components/language/language.vue +0 -71
- package/layout/main/components/side-menu/side-menu.less +0 -74
- package/layout/main/components/side-menu/side-menu.vue +0 -75
- package/layout/main/components/tags-nav/tags-nav.less +0 -45
- package/layout/main/components/tags-nav/tags-nav.vue +0 -144
- package/layout/main/components/user/user.less +0 -12
- package/layout/main/components/user/user.vue +0 -185
- package/layout/main/home/home.vue +0 -480
- package/layout/main/home/index.js +0 -2
- package/layout/main/home/toDoList.vue +0 -32
- package/layout/main/login/login.less +0 -93
- package/layout/main/login/login.vue +0 -151
- package/layout/main/main.less +0 -81
- package/layout/main/main.vue +0 -254
- package/layout/main/system/dict.vue +0 -64
- package/layout/main/system/orgManage.vue +0 -473
- package/layout/main/system/roleManage.js +0 -807
- package/layout/main/system/roleManage.vue +0 -424
- package/view/basic/error-logger.vue +0 -74
- package/view/basic/error-page/401.vue +0 -22
- package/view/basic/error-page/404.vue +0 -22
- package/view/basic/error-page/500.vue +0 -22
- package/view/basic/error-page/back-btn-group.vue +0 -48
- package/view/basic/error-page/error-content.vue +0 -28
- package/view/basic/error-page/error.less +0 -46
- package/view/config/component/confFormItem.vue +0 -49
- package/view/config/config.scss +0 -45
- package/view/config/configIndex.vue +0 -150
- package/view/config/subPage/router-config.vue +0 -5
- package/view/config/subPage/sys-config.vue +0 -249
- package/view/window/IframeFReportView.vue +0 -28
- package/view/window/windowIndex.vue +0 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoleManage-Bw83c_7q.js","sources":["../components/business/system/RoleManage.vue"],"sourcesContent":["<template>\n <div class=\"ver-container\">\n <div class=\"ver-col\">\n <div class=\"operation\">\n <div style=\"padding: 5px 15px 5px 2px; font-size: 13px\">角色名称</div>\n <el-input\n v-model=\"searchKey\"\n @change=\"getDataList\"\n placeholder=\"输入关键词搜索\"\n style=\"width: 300px; margin-left: 12px\"\n clearable />\n </div>\n <div class=\"operation\">\n <div style=\"padding: 5px 15px 5px 2px; font-size: 18px; font-weight: bold\">角色管理</div>\n <el-button\n @click=\"addRole\"\n type=\"primary\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"plus\"></YhIcon>\n 添加角色\n </el-button>\n <el-popconfirm\n title=\"确定要删除所选的角色吗?\"\n ok-text=\"删除\"\n cancel-text=\"取消\"\n @confirm=\"delAll\"\n style=\"margin-left: 12px\">\n <template #reference>\n <el-button>\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"delete\"></YhIcon>\n 批量删除\n </el-button>\n </template>\n </el-popconfirm>\n <el-button\n @click=\"getDataList\"\n style=\"margin-left: 12px\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"refresh\"></YhIcon>\n 刷新\n </el-button>\n </div>\n <el-table\n v-loading=\"loading\"\n row-key=\"adRoleId\"\n :data=\"dataList\"\n ref=\"tableRef\"\n highlight-current-row\n :header-cell-style=\"{background: '#f8f8f8', color: '#606266', fontSize: '13px'}\"\n stripe>\n <el-table-column\n label=\"#\"\n width=\"50\">\n <template #default=\"scope\">{{ scope.$index + 1 }}</template>\n </el-table-column>\n <el-table-column\n label=\"所属机构\"\n min-width=\"150\"\n prop=\"orgName\"></el-table-column>\n <el-table-column\n label=\"角色名称\"\n min-width=\"300\"\n prop=\"name\"></el-table-column>\n <el-table-column\n label=\"角色管理员\"\n min-width=\"150\"\n prop=\"isAdmin\"></el-table-column>\n <el-table-column\n label=\"备注\"\n min-width=\"200\"\n prop=\"description\"></el-table-column>\n <el-table-column\n width=\"300\"\n label=\"操作\">\n <template #default=\"{row}\">\n <el-button\n size=\"small\"\n type=\"primary\"\n @click=\"editPerm(row)\">\n 菜单权限\n </el-button>\n <el-button\n size=\"small\"\n type=\"success\"\n @click=\"editOrg(row)\">\n 角色机构\n </el-button>\n <el-button\n size=\"small\"\n type=\"info\"\n @click=\"edit(row)\">\n 编辑\n </el-button>\n <el-popconfirm\n title=\"你确定要删除吗\"\n ok-text=\"确定\"\n cancel-text=\"取消\"\n @confirm=\"remove(row)\">\n <template #reference>\n <el-button\n title=\"删除\"\n size=\"small\"\n type=\"danger\">\n 删除\n </el-button>\n </template>\n </el-popconfirm>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n v-model:current-page=\"pagination.currentPage\"\n v-model:page-size=\"pagination.pageSize\"\n :page-sizes=\"[10, 30, 50, 100]\"\n layout=\"prev, pager, next, sizes, total, jumper\"\n :total=\"pagination.total\"\n @size-change=\"getDataList\"\n @current-change=\"getDataList\" />\n <!-- 编辑 -->\n <el-dialog\n :title=\"modalTitle\"\n v-model=\"roleModalVisible\"\n :close-on-click-modal=\"false\"\n @close=\"cancelRole\"\n :width=\"500\">\n <el-form\n ref=\"roleFormRef\"\n :model=\"roleForm\"\n :label-width=\"100\"\n :rules=\"roleFormValidate\">\n <el-form-item\n label=\"组织机构\"\n prop=\"ad_org_id\">\n <Dict\n dict=\"ad_org_id\"\n url=\"/orgController/getGroupOrgs\"\n v-model=\"roleForm.adOrgId\"\n placeholder=\"请选择或输入搜索\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n label=\"角色名称\"\n prop=\"name\">\n <el-input\n v-model=\"roleForm.name\"\n placeholder=\"请输入\" />\n </el-form-item>\n <el-form-item label=\"角色管理员\">\n <el-switch\n v-model=\"roleForm.isAdmin\"\n active-value=\"Y\"\n inactive-value=\"N\"\n size=\"large\" />\n </el-form-item>\n <el-form-item\n label=\"备注\"\n prop=\"description\">\n <el-input v-model=\"roleForm.description\" />\n </el-form-item>\n </el-form>\n <template #footer>\n <el-button\n text\n @click=\"cancelRole\">\n 取消\n </el-button>\n <el-button\n type=\"primary\"\n :loading=\"submitLoading\"\n @click=\"submitRole\">\n 提交\n </el-button>\n </template>\n </el-dialog>\n <!-- 菜单权限 -->\n <el-drawer\n :title=\"modalTitle\"\n v-model=\"permModalVisible\"\n :close-on-click-modal=\"false\"\n :width=\"800\"\n @close=\"cancelPermEdit\">\n <el-row :gap=\"10\">\n <el-col\n :span=\"12\"\n style=\"overflow: auto; height: 100%\">\n <el-tree\n ref=\"treeRef\"\n v-loading=\"treeLoading\"\n :data=\"permData\"\n :props=\"{label: 'title'}\"\n show-checkbox\n default-expand-all\n node-key=\"adMenuId\"\n :check-on-click-leaf=\"false\"\n :expand-on-click-node=\"false\"\n :highlight-current=\"true\"\n @current-change=\"selectTree\"\n @check-change=\"checkedMenuTree\"></el-tree>\n </el-col>\n <el-col\n :span=\"12\"\n style=\"overflow: auto; height: 100%\">\n <div class=\"ivu-card-head\"><p style=\"margin-bottom: 0px\">按钮权限</p></div>\n <div\n style=\"padding: 0 10px\"\n class=\"custom-scrollbar\">\n <el-card\n v-for=\"(item, key) in curWindowBtnList\"\n :key=\"key\"\n shadow=\"never\"\n style=\"margin-top: 5px\">\n <template #header>\n {{ item.NAME }}\n <el-checkbox\n style=\"margin-left: 10px\"\n :indeterminate=\"item.indeterminate\"\n v-model=\"item.checkAll\"\n @change=\"handleCheckAll(item, key)\">\n 全选\n </el-checkbox>\n </template>\n <el-checkbox-group\n v-model=\"item.checkChilds\"\n @change=\"checkAllGroupChange($event, key)\">\n <el-checkbox\n v-for=\"child in item.childs\"\n :key=\"child.ID\"\n :label=\"child.ID\">\n {{ child.NAME }}\n </el-checkbox>\n </el-checkbox-group>\n </el-card>\n <el-empty\n description=\"暂无按钮权限数据\"\n v-if=\"curWindowBtnList.length === 0\"></el-empty>\n </div>\n </el-col>\n </el-row>\n <template #footer>\n <el-button\n type=\"primary\"\n :loading=\"submitPermLoading\"\n @click=\"submitPermEdit\">\n 提交\n </el-button>\n <el-button\n text\n @click=\"cancelPermEdit\">\n 取消\n </el-button>\n </template>\n </el-drawer>\n <!-- 角色机构所属 -->\n <el-dialog\n :title=\"modalTitle\"\n v-model=\"orgModalVisible\"\n :close-on-click-modal=\"false\"\n :width=\"400\"\n class=\"depModal yh-el-dialog\">\n <el-alert\n show-icon\n title=\"请勾选下方组织机构,选中复选框为角色管理员\"></el-alert>\n <div style=\"margin-top: 15px; min-height: 300px\">\n <div style=\"position: relative\">\n <el-tree\n ref=\"depTreeRef\"\n :data=\"orgData\"\n :props=\"{label: 'title'}\"\n show-checkbox\n default-expand-all\n node-key=\"adOrgId\"\n :check-on-click-leaf=\"true\"\n :expand-on-click-node=\"false\"\n :highlight-current=\"true\"\n check-strictly\n v-model=\"deptCheckedKeys\"\n @check-change=\"checkOrgTree\"></el-tree>\n </div>\n </div>\n <template #footer>\n <el-button\n type=\"primary\"\n :loading=\"submitDepLoading\"\n @click=\"submitRoleOrg\">\n 提交\n </el-button>\n <el-button\n text\n @click=\"orgModalVisible = false\">\n 取消\n </el-button>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, reactive, onMounted, nextTick} from 'vue';\n import {ElMessage} from 'element-plus';\n import type {FormInstance, FormRules} from 'element-plus';\n import {httpRequest} from 'yh-client';\n import YhIcon from '../../common/basic/YhIcon.vue';\n import Dict from './Dict.vue';\n\n defineOptions({\n name: 'RoleManage',\n });\n\n // ==================== 类型定义 ====================\n\n interface RoleForm {\n adRoleId: string;\n adOrgId: string;\n name: string;\n isAdmin: 'Y' | 'N';\n description: string;\n }\n\n interface RoleItem {\n adRoleId: string;\n adOrgId: string;\n name: string;\n isAdmin: string;\n description: string;\n orgName: string;\n }\n\n interface MenuPermData {\n adMenuId: string;\n name: string;\n sysWindowId: string;\n status: number;\n _childs?: MenuPermData[];\n [key: string]: any;\n }\n\n interface ButtonGroup {\n ID: string;\n NAME: string;\n checkAll: boolean;\n indeterminate: boolean;\n checkChilds: string[];\n childs: ButtonItem[];\n }\n\n interface ButtonItem {\n ID: string;\n NAME: string;\n PARENT_ID: string;\n }\n\n interface TreeNode {\n key: string;\n title: string;\n level: number;\n data: any;\n children?: TreeNode[];\n [key: string]: any;\n }\n\n interface Pagination {\n currentPage: number;\n pageSize: number;\n total: number;\n }\n\n // ==================== 响应式数据 ====================\n\n // 列表相关\n const loading = ref(false);\n const dataList = ref<RoleItem[]>([]);\n const pagination = reactive<Pagination>({\n currentPage: 1,\n pageSize: 10,\n total: 0,\n });\n const searchKey = ref('');\n const tableRef = ref();\n\n // 表单弹窗\n const roleModalVisible = ref(false);\n const modalTitle = ref('');\n const submitLoading = ref(false);\n const roleFormRef = ref<FormInstance>();\n const roleForm = ref<RoleForm>({\n adRoleId: '',\n adOrgId: '',\n name: '',\n isAdmin: 'N',\n description: '',\n });\n\n // 菜单权限抽屉\n const permModalVisible = ref(false);\n const treeLoading = ref(false);\n const permData = ref<MenuPermData[]>([]);\n const editRolePermId = ref('');\n const treeRef = ref();\n const curSelectedMenuId = ref('');\n const curWindowBtnList = ref<ButtonGroup[]>([]);\n const roleSavedBtnPermMap = ref<Record<string, string[]>>({});\n const selectedNodes = ref<string[]>([]);\n const halfSelectedNodes = ref<string[]>([]);\n const submitPermLoading = ref(false);\n\n // 角色机构弹窗\n const orgModalVisible = ref(false);\n const orgData = ref<TreeNode[]>([]);\n const depTreeRef = ref();\n const deptCheckedKeys = ref<string[]>([]);\n const submitDepLoading = ref(false);\n\n const selectList = ref<string[]>([]);\n let timer: number | null = null;\n\n // ==================== 表单验证规则 ====================\n\n const roleFormValidate: FormRules<RoleForm> = {\n adOrgId: [{required: true, message: '组织机构不能为空', trigger: 'change'}],\n name: [{required: true, message: '角色名称不能为空', trigger: 'change'}],\n };\n\n // ==================== 列表相关方法 ====================\n\n const init = () => {\n getDataList();\n };\n\n const getDataList = () => {\n loading.value = true;\n httpRequest\n .post('/roleController/getRoleList', {\n name: searchKey.value,\n pageSize: pagination.pageSize,\n pageIndex: pagination.currentPage,\n })\n .then((response: any) => {\n if (response.data.result) {\n dataList.value = response.data.data.records;\n pagination.total = response.data.data.total;\n }\n })\n .catch((error) => {\n console.error('获取角色列表失败:', error);\n ElMessage.error('获取角色列表失败');\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n // ==================== 角色编辑相关方法 ====================\n\n const addRole = () => {\n modalTitle.value = '添加角色';\n roleForm.value.adRoleId = '';\n roleForm.value.name = '';\n roleForm.value.isAdmin = 'N';\n roleForm.value.description = '';\n roleForm.value.adOrgId = '';\n roleModalVisible.value = true;\n };\n\n const edit = (row: RoleItem) => {\n modalTitle.value = '编辑角色';\n roleForm.value.adOrgId = row.adOrgId;\n roleForm.value.name = row.name;\n roleForm.value.isAdmin = row.isAdmin as 'Y' | 'N';\n roleForm.value.description = row.description;\n roleForm.value.adRoleId = row.adRoleId;\n roleModalVisible.value = true;\n };\n\n const submitRole = () => {\n roleFormRef.value?.validate((valid) => {\n if (valid) {\n submitLoading.value = true;\n const subForm = {\n orgId: roleForm.value.adOrgId,\n adRoleId: roleForm.value.adRoleId,\n name: roleForm.value.name,\n description: roleForm.value.description,\n isAdmin: roleForm.value.isAdmin,\n };\n httpRequest\n .post('/roleController/submitRole', subForm)\n .then((response: any) => {\n if (response.data.result) {\n ElMessage.success('操作成功');\n getDataList();\n roleModalVisible.value = false;\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('提交角色失败:', error);\n ElMessage.error('提交失败,请稍后重试');\n })\n .finally(() => {\n submitLoading.value = false;\n });\n }\n });\n };\n\n const cancelRole = () => {\n roleModalVisible.value = false;\n };\n\n const deleteRole = (delId: string) => {\n httpRequest\n .post('/roleController/delRoleByIds', {ids: delId})\n .then((response: any) => {\n if (response.data.result) {\n ElMessage.success('删除成功');\n clearSelectAll();\n getDataList();\n } else {\n ElMessage.error('删除失败');\n }\n })\n .catch((error) => {\n console.error('删除角色失败:', error);\n ElMessage.error('删除失败,请稍后重试');\n });\n };\n\n const remove = (row: RoleItem) => {\n if (row && row.adRoleId) {\n deleteRole(row.adRoleId);\n }\n };\n\n const clearSelectAll = () => {\n selectList.value = [];\n };\n\n const delAll = () => {\n if (selectList.value.length <= 0) {\n ElMessage.warning('您还未选择要删除的数据');\n return;\n }\n const ids = selectList.value.join(',');\n deleteRole(ids);\n };\n\n // ==================== 菜单权限相关方法 ====================\n\n const parseTreeData = (curLevelData: MenuPermData[], curLevel: number): MenuPermData[] => {\n curLevelData.forEach((item) => {\n item.id = item.adMenuId;\n item.key = item.adMenuId;\n item.title = item.name;\n item.expand = true;\n item.checked = false;\n item.level = curLevel;\n if (item['_childs'] && item['_childs'].length > 0) {\n if (!item.children) {\n item.children = [];\n }\n item['_childs'].forEach((sonTreeData) => {\n item.children!.push(parseTreeData([sonTreeData], curLevel + 1)[0]);\n });\n }\n });\n return curLevelData;\n };\n\n const getRoleMenus = async (): Promise<Record<string, any>> => {\n const roleMenuData: Record<string, any> = {};\n await httpRequest\n .post('/rolePermissionsSetting/getRoleMenus', {roleId: editRolePermId.value})\n .then((response: any) => {\n if (response.data.result) {\n response.data.data.forEach((e: any) => {\n roleMenuData[e.AD_MENU_ID] = e;\n });\n }\n })\n .catch((error) => {\n console.error('获取角色菜单失败:', error);\n });\n return roleMenuData;\n };\n\n const calNewTreeData = (\n newTreeData: MenuPermData[],\n roleMenuData: Record<string, any>\n ): number => {\n let checkedCount = 0;\n newTreeData.forEach((e) => {\n e.expand = true;\n if (roleMenuData[e.adMenuId]) {\n e.checked = true;\n checkedCount++;\n }\n if (e.children && e.children.length > 0) {\n const sonCheckedCount = calNewTreeData(e.children, roleMenuData);\n if (sonCheckedCount === e.children.length) {\n e.checked = true;\n e.indeterminate = false;\n } else if (sonCheckedCount > 0 && sonCheckedCount < e.children.length) {\n e.indeterminate = true;\n e.checked = false;\n } else {\n e.checked = false;\n e.indeterminate = false;\n }\n if (e.checked) {\n halfSelectedNodes.value.push(e.adMenuId);\n }\n if (e.checked) {\n selectedNodes.value.push(e.adMenuId);\n }\n } else {\n if (e.checked) {\n selectedNodes.value.push(e.adMenuId);\n }\n }\n });\n return checkedCount;\n };\n\n const getPermList = async () => {\n treeLoading.value = true;\n selectedNodes.value = [];\n halfSelectedNodes.value = [];\n\n const roleMenuData = await getRoleMenus();\n httpRequest\n .post('/rolePermissionsSetting/getMenuList', {})\n .then((response: any) => {\n if (response.data.result) {\n let newTreeData: MenuPermData[] = [];\n response.data.menuList.forEach((e: MenuPermData) => {\n newTreeData.push(parseTreeData([e], 0)[0]);\n });\n calNewTreeData(newTreeData, roleMenuData);\n deleteDisableNode(newTreeData);\n permData.value = newTreeData;\n treeLoading.value = false;\n\n nextTick(() => {\n const checked = selectedNodes.value.filter(\n (item) => !halfSelectedNodes.value.includes(item)\n );\n treeRef.value?.setCheckedKeys(checked);\n });\n }\n })\n .catch((error) => {\n console.error('获取菜单列表失败:', error);\n ElMessage.error('获取菜单列表失败');\n treeLoading.value = false;\n });\n };\n\n const deleteDisableNode = (permData: MenuPermData[]) => {\n permData.forEach((e) => {\n if (e.status === -1) {\n e.title = '[已禁用] ' + e.title;\n e.disabled = true;\n }\n if (e.children && e.children.length > 0) {\n deleteDisableNode(e.children);\n }\n });\n };\n\n const editPerm = (row: RoleItem) => {\n editRolePermId.value = row.adRoleId;\n modalTitle.value = '分配 ' + row.name + ' 的菜单权限';\n getPermList();\n httpRequest\n .post('/roleController/getRoleWindowButton', {roleId: editRolePermId.value})\n .then((response: any) => {\n if (response.data.result && response.data.data) {\n const roleBtnPermMap: Record<string, string[]> = {};\n response.data.data.forEach((e: any) => {\n if (!roleBtnPermMap[e.WINDOW_ID]) {\n roleBtnPermMap[e.WINDOW_ID] = [];\n }\n roleBtnPermMap[e.WINDOW_ID].push(e.BUTTON_ID);\n });\n roleSavedBtnPermMap.value = roleBtnPermMap;\n }\n });\n permModalVisible.value = true;\n };\n\n const selectTree = (data: MenuPermData | null) => {\n if (data) {\n curSelectedMenuId.value = data.sysWindowId;\n httpRequest\n .post('/rolePermissionsSetting/getMenuWindowButton', {windowId: curSelectedMenuId.value})\n .then((response: any) => {\n const {result, data: responseData} = response.data;\n if (result && responseData) {\n const roleBtnData: ButtonGroup[] = [];\n const tempQyBtnData: Record<string, ButtonItem[]> = {};\n responseData.forEach((tData: any) => {\n if (tData.TYPE === 'QY') {\n const group: ButtonGroup = {\n ID: tData.ID,\n NAME: tData.NAME,\n checkAll: false,\n indeterminate: false,\n checkChilds: [],\n childs: [],\n };\n roleBtnData.push(group);\n tempQyBtnData[tData.ID] = [];\n } else {\n if (tempQyBtnData[tData.PARENT_ID]) {\n tempQyBtnData[tData.PARENT_ID].push(tData);\n }\n }\n });\n roleBtnData.forEach((item, index) => {\n roleBtnData[index].childs = tempQyBtnData[item.ID] || [];\n const roleSavedBtns = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n const checkChilds: string[] = [];\n let tcount = 0;\n roleBtnData[index].childs.forEach((es) => {\n if (roleSavedBtns.includes(es.ID)) {\n checkChilds.push(es.ID);\n tcount++;\n }\n });\n if (tcount === roleBtnData[index].childs.length) {\n roleBtnData[index].checkAll = true;\n roleBtnData[index].indeterminate = false;\n } else if (tcount > 0) {\n roleBtnData[index].checkAll = false;\n roleBtnData[index].indeterminate = true;\n } else {\n roleBtnData[index].checkAll = false;\n roleBtnData[index].indeterminate = false;\n }\n roleBtnData[index].checkChilds = checkChilds;\n });\n curWindowBtnList.value = roleBtnData;\n }\n })\n .catch((error) => {\n console.error('获取按钮权限失败:', error);\n });\n }\n };\n\n const checkedMenuTree = () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = window.setTimeout(() => {\n selectedNodes.value = treeRef.value?.getCheckedKeys(true) || [];\n halfSelectedNodes.value = treeRef.value?.getHalfCheckedKeys(true) || [];\n }, 300);\n };\n\n const handleCheckAll = (item: ButtonGroup, key: number) => {\n let checkChilds: string[] = [];\n if (!item.checkAll) {\n item.checkAll = false;\n item.indeterminate = false;\n } else {\n checkChilds = item.childs.map((child) => child.ID);\n item.checkAll = true;\n item.indeterminate = false;\n }\n item.checkChilds = checkChilds;\n updateBtnsToList();\n curWindowBtnList.value[key] = item;\n };\n\n const checkAllGroupChange = (event: string[], key: number) => {\n const currentItem = {...curWindowBtnList.value[key]};\n if (event.length > 0) {\n let containFlag = 0;\n let okCount = 0;\n for (let i = 0; i < currentItem.childs.length; i++) {\n if (event.includes(currentItem.childs[i].ID)) {\n okCount++;\n }\n }\n if (okCount === currentItem.childs.length) {\n containFlag = 2;\n } else {\n containFlag = 1;\n }\n if (containFlag === 1) {\n currentItem.checkAll = false;\n currentItem.indeterminate = okCount === 0 ? false : true;\n } else if (containFlag === 2) {\n currentItem.checkAll = true;\n currentItem.indeterminate = false;\n }\n } else {\n currentItem.checkAll = false;\n currentItem.indeterminate = false;\n }\n currentItem.checkChilds = event;\n curWindowBtnList.value[key] = currentItem;\n updateBtnsToList();\n };\n\n const updateBtnsToList = () => {\n const btns = new Set<string>();\n curWindowBtnList.value.forEach((item) => {\n item.checkChilds.forEach((checkId) => {\n btns.add(checkId);\n });\n });\n roleSavedBtnPermMap.value[curSelectedMenuId.value] = Array.from(btns);\n };\n\n const submitPermEdit = () => {\n submitPermLoading.value = true;\n const permMenuIds = selectedNodes.value.concat(halfSelectedNodes.value).join(',');\n const permMenuBtnIds: Record<string, string[]> = {};\n Object.keys(roleSavedBtnPermMap.value).forEach((key) => {\n permMenuBtnIds['W_' + key] = roleSavedBtnPermMap.value[key];\n });\n httpRequest\n .post('/rolePermissionsSetting/setMenus', {\n roleId: editRolePermId.value,\n ids: permMenuIds,\n btns: JSON.stringify(permMenuBtnIds),\n })\n .then((response: any) => {\n if (response.data.result) {\n ElMessage.success('操作成功');\n getDataList();\n permModalVisible.value = false;\n cancelPermEdit();\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('提交权限失败:', error);\n ElMessage.error('提交失败,请稍后重试');\n })\n .finally(() => {\n submitPermLoading.value = false;\n });\n };\n\n const cancelPermEdit = () => {\n selectedNodes.value = [];\n halfSelectedNodes.value = [];\n roleSavedBtnPermMap.value = {};\n curWindowBtnList.value = [];\n permModalVisible.value = false;\n };\n\n // ==================== 角色机构相关方法 ====================\n\n const parseOrgTreeData = (\n curLevelData: any,\n curLevel: number,\n roleOrgData: Record<string, any>\n ): TreeNode => {\n const newLevelData = {...curLevelData};\n newLevelData.key = curLevelData.adOrgId;\n newLevelData.title = curLevelData.name;\n if (roleOrgData[curLevelData.adOrgId]) {\n if (roleOrgData[curLevelData.adOrgId].isOrgAdmin === 'Y') {\n deptCheckedKeys.value.push(curLevelData.adOrgId);\n }\n }\n newLevelData.level = curLevel;\n if (curLevelData['_childs'] && curLevelData['_childs'].length > 0) {\n curLevelData['_childs'].forEach((sonTreeData: any) => {\n if (!newLevelData.children) {\n newLevelData.children = [];\n }\n newLevelData.children.push(parseOrgTreeData(sonTreeData, curLevel + 1, roleOrgData));\n });\n }\n return newLevelData;\n };\n\n const loadRoleOrg = async (): Promise<Record<string, any>> => {\n const roleOrgData: Record<string, any> = {};\n await httpRequest\n .post('/roleController/getRoleOrgAccess', {roleId: editRolePermId.value})\n .then((response: any) => {\n if (response.data.result) {\n if (response.data.roleOrgAccess) {\n response.data.roleOrgAccess.forEach((sd: any) => {\n roleOrgData[sd.orgId] = sd;\n });\n }\n }\n })\n .catch((error) => {\n console.error('加载角色机构失败:', error);\n });\n return roleOrgData;\n };\n\n const editOrg = async (row: RoleItem) => {\n editRolePermId.value = row.adRoleId;\n modalTitle.value = '分配 ' + row.name + ' 的组织机构权限';\n const roleOrgDataResult = await loadRoleOrg();\n httpRequest\n .post('/orgController/getUserOrgTree', {})\n .then((response: any) => {\n if (response.data.result) {\n const newTreeData: TreeNode[] = [];\n deptCheckedKeys.value = [];\n response.data.list.forEach((e: any) => {\n newTreeData.push(parseOrgTreeData(e, 0, roleOrgDataResult));\n });\n orgData.value = newTreeData;\n nextTick(() => {\n depTreeRef.value?.setCheckedKeys(deptCheckedKeys.value);\n });\n }\n })\n .catch((error) => {\n console.error('获取机构树失败:', error);\n });\n orgModalVisible.value = true;\n };\n\n const checkOrgTree = () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = window.setTimeout(() => {\n deptCheckedKeys.value = depTreeRef.value?.getCheckedKeys() || [];\n }, 300);\n };\n\n const submitRoleOrg = () => {\n const selectedNodes = depTreeRef.value?.getCheckedKeys() || [];\n const subRoleOrgData: any[] = [];\n selectedNodes.forEach((e: string) => {\n subRoleOrgData.push({ad_org_id: e, is_org_admin: 'Y'});\n });\n httpRequest\n .post('/roleController/saveRoleOrgAccess', {\n roleId: editRolePermId.value,\n subJsonData: JSON.stringify(subRoleOrgData),\n })\n .then((response: any) => {\n if (response.data.result) {\n ElMessage.success(response.data.msg);\n orgModalVisible.value = false;\n } else {\n ElMessage.error(response.data.msg);\n }\n })\n .catch((error) => {\n console.error('提交角色机构失败:', error);\n ElMessage.error('提交失败,请稍后重试');\n });\n };\n\n // ==================== 生命周期 ====================\n\n onMounted(() => {\n init();\n });\n</script>\n\n<style lang=\"scss\">\n .ver-container {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n .ver-col {\n flex: 1;\n width: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n .operation {\n display: flex;\n padding: 8px 16px;\n }\n .el-table {\n flex: 1;\n overflow: hidden;\n }\n\n .select-count {\n font-weight: 600;\n color: #40a9ff;\n }\n\n .select-clear {\n margin-left: 10px;\n }\n\n .page {\n margin-top: 2vh;\n }\n\n .drop-down {\n margin-left: 5px;\n }\n\n .el-pagination {\n padding: 20px 0 0;\n justify-content: flex-end;\n }\n\n .el-drawer__header {\n margin-bottom: 20px;\n }\n\n .el-drawer__body {\n box-sizing: border-box;\n padding: 0 16px 10px;\n overflow: hidden;\n\n .el-row {\n height: 100%;\n overflow: visible;\n\n .el-card__header,\n .ivu-card-head {\n padding: 5px 10px;\n }\n\n .el-card__body {\n padding: 7px 10px;\n }\n }\n }\n }\n }\n\n .tree-list {\n position: relative;\n min-height: 80px;\n }\n\n .drawer-footer {\n z-index: 10;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n border-top: 1px solid #e8e8e8;\n padding: 10px 16px;\n text-align: left;\n background: #fff;\n }\n\n .drawer-content {\n overflow: auto;\n }\n\n .drawer-header {\n display: flex;\n align-items: center;\n margin-bottom: 16px;\n font-size: 16px;\n color: rgba(0, 0, 0, 0.85);\n }\n\n .drawer-title {\n font-size: 16px;\n color: rgba(0, 0, 0, 0.85);\n display: block;\n margin-bottom: 16px;\n }\n\n .permModal :deep(.ivu-modal-body) {\n max-height: 560px;\n overflow: auto;\n }\n\n .depModal :deep(.ivu-modal-body) {\n max-height: 500px;\n overflow: auto;\n }\n\n // 按钮权限区域滚动条样式与菜单权限树保持一致\n .custom-scrollbar {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #0003;\n border-radius: 10px;\n transition: all 0.2s ease-in-out;\n }\n\n &::-webkit-scrollbar-track {\n border-radius: 10px;\n background: transparent;\n }\n\n &:hover {\n &::-webkit-scrollbar-thumb {\n background-color: #8883;\n }\n }\n }\n</style>\n"],"names":["loading","ref","dataList","pagination","reactive","searchKey","tableRef","roleModalVisible","modalTitle","submitLoading","roleFormRef","roleForm","permModalVisible","treeLoading","permData","editRolePermId","treeRef","curSelectedMenuId","curWindowBtnList","roleSavedBtnPermMap","selectedNodes","halfSelectedNodes","submitPermLoading","orgModalVisible","orgData","depTreeRef","deptCheckedKeys","submitDepLoading","selectList","timer","roleFormValidate","init","getDataList","httpRequest","response","error","ElMessage","addRole","edit","row","submitRole","_a","valid","subForm","cancelRole","deleteRole","delId","clearSelectAll","remove","delAll","ids","parseTreeData","curLevelData","curLevel","item","sonTreeData","getRoleMenus","roleMenuData","e","calNewTreeData","newTreeData","checkedCount","sonCheckedCount","getPermList","deleteDisableNode","nextTick","checked","editPerm","roleBtnPermMap","selectTree","data","result","responseData","roleBtnData","tempQyBtnData","tData","group","index","roleSavedBtns","checkChilds","tcount","es","checkedMenuTree","_b","handleCheckAll","key","child","updateBtnsToList","checkAllGroupChange","event","currentItem","containFlag","okCount","i","btns","checkId","submitPermEdit","permMenuIds","permMenuBtnIds","cancelPermEdit","parseOrgTreeData","roleOrgData","newLevelData","loadRoleOrg","sd","editOrg","roleOrgDataResult","checkOrgTree","submitRoleOrg","subRoleOrgData","onMounted","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_cache","_createVNode","_component_el_input","$event","_hoisted_4","_component_el_button","YhIcon","_component_el_popconfirm","_createBlock","_component_el_table","_component_el_table_column","_withCtx","scope","_createTextVNode","_toDisplayString","_component_el_pagination","_component_el_dialog","_component_el_form","_component_el_form_item","Dict","_component_el_switch","_component_el_drawer","_component_el_row","_component_el_col","_component_el_tree","_hoisted_5","_Fragment","_renderList","_component_el_card","_component_el_checkbox","_component_el_checkbox_group","_component_el_empty","_component_el_alert","_hoisted_6","_hoisted_7"],"mappings":"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"}
|