yh-pub 2.0.15 → 2.0.16

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.
Files changed (39) hide show
  1. package/{AdminLogin-CsUd6ATV.js → AdminLogin-BIf1oSmO.js} +38 -38
  2. package/AdminLogin-BIf1oSmO.js.map +1 -0
  3. package/{Error-0E72mCXJ.js → Error-Hqt5cuSB.js} +2 -2
  4. package/{Error-0E72mCXJ.js.map → Error-Hqt5cuSB.js.map} +1 -1
  5. package/{Error401-CBq11x5s.js → Error401-Cu33Q8QD.js} +3 -3
  6. package/{Error401-CBq11x5s.js.map → Error401-Cu33Q8QD.js.map} +1 -1
  7. package/{Error404-COwn6Kg-.js → Error404-BsABdfam.js} +3 -3
  8. package/{Error404-COwn6Kg-.js.map → Error404-BsABdfam.js.map} +1 -1
  9. package/{Error500-Tjj-ozHM.js → Error500-CkUi6v6a.js} +3 -3
  10. package/{Error500-Tjj-ozHM.js.map → Error500-CkUi6v6a.js.map} +1 -1
  11. package/{HomeIndex-VFlQZ2Xi.js → HomeIndex-CL6YqwSG.js} +2 -2
  12. package/{HomeIndex-VFlQZ2Xi.js.map → HomeIndex-CL6YqwSG.js.map} +1 -1
  13. package/{IconExplorer-DVEdwd_B.js → IconExplorer-Cfu_aCEA.js} +2 -2
  14. package/{IconExplorer-DVEdwd_B.js.map → IconExplorer-Cfu_aCEA.js.map} +1 -1
  15. package/Index-C9NjF-0-.js +5 -0
  16. package/Index-C9NjF-0-.js.map +1 -0
  17. package/{MainLogin-BRxDYkJP.js → MainLogin-CVQkaL1r.js} +29 -29
  18. package/{MainLogin-BRxDYkJP.js.map → MainLogin-CVQkaL1r.js.map} +1 -1
  19. package/{MenuManage-DqnHRWgr.js → MenuManage-Dptg0jMi.js} +2 -2
  20. package/{MenuManage-DqnHRWgr.js.map → MenuManage-Dptg0jMi.js.map} +1 -1
  21. package/{OrgManage-ChQYo8XA.js → OrgManage-BwGyXrRo.js} +2 -2
  22. package/{OrgManage-ChQYo8XA.js.map → OrgManage-BwGyXrRo.js.map} +1 -1
  23. package/{RoleManage-CQkwR-_-.js → RoleManage-CmsdWNqa.js} +2 -2
  24. package/{RoleManage-CQkwR-_-.js.map → RoleManage-CmsdWNqa.js.map} +1 -1
  25. package/{SysConfig-DQ9LzHtf.js → SysConfig-CHIyRpS3.js} +2 -2
  26. package/{SysConfig-DQ9LzHtf.js.map → SysConfig-CHIyRpS3.js.map} +1 -1
  27. package/{TenantList-D5NtMgbv.js → TenantList-sa32rfg9.js} +2 -2
  28. package/{TenantList-D5NtMgbv.js.map → TenantList-sa32rfg9.js.map} +1 -1
  29. package/index-C0NHj-qI.js +73695 -0
  30. package/index-C0NHj-qI.js.map +1 -0
  31. package/index.es.js +1 -1
  32. package/package.json +1 -1
  33. package/AdminLogin-CsUd6ATV.js.map +0 -1
  34. package/Index-DdMT0oFY.js +0 -5
  35. package/Index-DdMT0oFY.js.map +0 -1
  36. package/index-BB7eDaah.js +0 -49747
  37. package/index-BB7eDaah.js.map +0 -1
  38. package/index-wVC41gTc.js +0 -23955
  39. package/index-wVC41gTc.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RoleManage-CQkwR-_-.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\">{{ ct('角色名称') }}</div>\n <el-input\n v-model=\"searchKey\"\n @change=\"getDataList\"\n :placeholder=\"ct('输入关键词搜索')\"\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\">{{ ct('角色管理') }}</div>\n <el-button\n @click=\"addRole\"\n type=\"primary\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"plus\"></YhIcon>\n {{ ct('添加角色') }}\n </el-button>\n <el-popconfirm\n :title=\"ct('确定要删除所选的角色吗?')\"\n :ok-text=\"ct('删除')\"\n :cancel-text=\"ct('取消')\"\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 {{ ct('批量删除') }}\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 {{ ct('刷新') }}\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 @selection-change=\"handleSelectionChange\"\n :header-cell-style=\"{background: '#f8f8f8', color: '#606266', fontSize: '13px'}\"\n stripe>\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('#')\"\n width=\"50\">\n <template #default=\"scope\">{{ scope.$index + 1 }}</template>\n </el-table-column>\n <el-table-column\n :label=\"ct('所属机构')\"\n min-width=\"150\"\n prop=\"orgName\"></el-table-column>\n <el-table-column\n :label=\"ct('角色名称')\"\n min-width=\"300\"\n prop=\"name\"></el-table-column>\n <el-table-column\n :label=\"ct('角色管理员')\"\n min-width=\"150\"\n prop=\"isAdmin\"></el-table-column>\n <el-table-column\n :label=\"ct('备注')\"\n min-width=\"200\"\n prop=\"description\"></el-table-column>\n <el-table-column\n width=\"350\"\n :label=\"ct('操作')\">\n <template #default=\"{row}\">\n <el-button\n size=\"small\"\n type=\"primary\"\n @click=\"editPerm(row)\">\n {{ ct('菜单权限') }}\n </el-button>\n <el-button\n size=\"small\"\n type=\"success\"\n @click=\"editOrg(row)\">\n {{ ct('角色机构') }}\n </el-button>\n <el-button\n size=\"small\"\n type=\"info\"\n @click=\"edit(row)\">\n {{ ct('编辑') }}\n </el-button>\n <el-popconfirm\n :title=\"ct('你确定要删除吗')\"\n :ok-text=\"ct('确定')\"\n :cancel-text=\"ct('取消')\"\n @confirm=\"remove(row)\">\n <template #reference>\n <el-button\n title=\"删除\"\n size=\"small\"\n type=\"danger\">\n {{ ct('删除') }}\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=\"ct('组织机构')\"\n prop=\"ad_org_id\">\n <Dict\n dict=\"ad_org_id\"\n url=\"/orgController/getGroupOrgs\"\n v-model=\"roleForm.adOrgId\"\n :placeholder=\"ct('请选择或输入搜索')\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n :label=\"ct('角色名称')\"\n prop=\"name\">\n <el-input\n v-model=\"roleForm.name\"\n :placeholder=\"ct('请输入')\" />\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=\"ct('备注')\"\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 {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n :loading=\"submitLoading\"\n @click=\"submitRole\">\n {{ ct('提交') }}\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\">{{ ct('按钮权限') }}</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 {{ ct('全选') }}\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=\"ct('暂无按钮权限数据')\"\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 {{ ct('提交') }}\n </el-button>\n <el-button\n text\n @click=\"cancelPermEdit\">\n {{ ct('取消') }}\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=\"ct('请勾选下方组织机构,选中复选框为角色管理员')\"></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 {{ ct('提交') }}\n </el-button>\n <el-button\n text\n @click=\"orgModalVisible = false\">\n {{ ct('取消') }}\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 import {ct} from '../../../utils/i18nHelp';\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: ct('组织机构不能为空'), trigger: 'change'}],\n name: [{required: true, message: ct('角色名称不能为空'), 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(ct('获取角色列表失败'));\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(ct('操作成功'));\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(ct('提交失败,请稍后重试'));\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(ct('删除成功'));\n clearSelectAll();\n getDataList();\n } else {\n ElMessage.error(ct('删除失败'));\n }\n })\n .catch((error) => {\n console.error('删除角色失败:', error);\n ElMessage.error(ct('删除失败,请稍后重试'));\n });\n };\n\n const remove = (row: RoleItem) => {\n if (row && row.adRoleId) {\n deleteRole(row.adRoleId);\n }\n };\n\n const handleSelectionChange = (selection: RoleItem[]) => {\n selectList.value = selection.map(item => item.adRoleId);\n };\n\n const clearSelectAll = () => {\n selectList.value = [];\n tableRef.value?.clearSelection();\n };\n\n const delAll = () => {\n if (selectList.value.length <= 0) {\n ElMessage.warning(ct('您还未选择要删除的数据'));\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(ct('获取菜单列表失败'));\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","ct","init","getDataList","httpRequest","response","error","ElMessage","addRole","edit","row","submitRole","_a","valid","subForm","cancelRole","deleteRole","delId","clearSelectAll","remove","handleSelectionChange","selection","item","delAll","ids","parseTreeData","curLevelData","curLevel","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","_hoisted_4","_toDisplayString","_unref","_createVNode","_component_el_input","$event","_hoisted_5","_hoisted_6","_component_el_button","YhIcon","_createTextVNode","_component_el_popconfirm","_createBlock","_component_el_table","_component_el_table_column","_withCtx","scope","_component_el_pagination","_cache","_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_7","_hoisted_8","_hoisted_9","_Fragment","_renderList","_component_el_card","_component_el_checkbox","_component_el_checkbox_group","_component_el_empty","_component_el_alert","_hoisted_10","_hoisted_11"],"mappings":"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"}
1
+ {"version":3,"file":"RoleManage-CmsdWNqa.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\">{{ ct('角色名称') }}</div>\n <el-input\n v-model=\"searchKey\"\n @change=\"getDataList\"\n :placeholder=\"ct('输入关键词搜索')\"\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\">{{ ct('角色管理') }}</div>\n <el-button\n @click=\"addRole\"\n type=\"primary\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"plus\"></YhIcon>\n {{ ct('添加角色') }}\n </el-button>\n <el-popconfirm\n :title=\"ct('确定要删除所选的角色吗?')\"\n :ok-text=\"ct('删除')\"\n :cancel-text=\"ct('取消')\"\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 {{ ct('批量删除') }}\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 {{ ct('刷新') }}\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 @selection-change=\"handleSelectionChange\"\n :header-cell-style=\"{background: '#f8f8f8', color: '#606266', fontSize: '13px'}\"\n stripe>\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('#')\"\n width=\"50\">\n <template #default=\"scope\">{{ scope.$index + 1 }}</template>\n </el-table-column>\n <el-table-column\n :label=\"ct('所属机构')\"\n min-width=\"150\"\n prop=\"orgName\"></el-table-column>\n <el-table-column\n :label=\"ct('角色名称')\"\n min-width=\"300\"\n prop=\"name\"></el-table-column>\n <el-table-column\n :label=\"ct('角色管理员')\"\n min-width=\"150\"\n prop=\"isAdmin\"></el-table-column>\n <el-table-column\n :label=\"ct('备注')\"\n min-width=\"200\"\n prop=\"description\"></el-table-column>\n <el-table-column\n width=\"350\"\n :label=\"ct('操作')\">\n <template #default=\"{row}\">\n <el-button\n size=\"small\"\n type=\"primary\"\n @click=\"editPerm(row)\">\n {{ ct('菜单权限') }}\n </el-button>\n <el-button\n size=\"small\"\n type=\"success\"\n @click=\"editOrg(row)\">\n {{ ct('角色机构') }}\n </el-button>\n <el-button\n size=\"small\"\n type=\"info\"\n @click=\"edit(row)\">\n {{ ct('编辑') }}\n </el-button>\n <el-popconfirm\n :title=\"ct('你确定要删除吗')\"\n :ok-text=\"ct('确定')\"\n :cancel-text=\"ct('取消')\"\n @confirm=\"remove(row)\">\n <template #reference>\n <el-button\n title=\"删除\"\n size=\"small\"\n type=\"danger\">\n {{ ct('删除') }}\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=\"ct('组织机构')\"\n prop=\"ad_org_id\">\n <Dict\n dict=\"ad_org_id\"\n url=\"/orgController/getGroupOrgs\"\n v-model=\"roleForm.adOrgId\"\n :placeholder=\"ct('请选择或输入搜索')\"\n filterable\n clearable />\n </el-form-item>\n <el-form-item\n :label=\"ct('角色名称')\"\n prop=\"name\">\n <el-input\n v-model=\"roleForm.name\"\n :placeholder=\"ct('请输入')\" />\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=\"ct('备注')\"\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 {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n :loading=\"submitLoading\"\n @click=\"submitRole\">\n {{ ct('提交') }}\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\">{{ ct('按钮权限') }}</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 {{ ct('全选') }}\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=\"ct('暂无按钮权限数据')\"\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 {{ ct('提交') }}\n </el-button>\n <el-button\n text\n @click=\"cancelPermEdit\">\n {{ ct('取消') }}\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=\"ct('请勾选下方组织机构,选中复选框为角色管理员')\"></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 {{ ct('提交') }}\n </el-button>\n <el-button\n text\n @click=\"orgModalVisible = false\">\n {{ ct('取消') }}\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 import {ct} from '../../../utils/i18nHelp';\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: ct('组织机构不能为空'), trigger: 'change'}],\n name: [{required: true, message: ct('角色名称不能为空'), 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(ct('获取角色列表失败'));\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(ct('操作成功'));\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(ct('提交失败,请稍后重试'));\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(ct('删除成功'));\n clearSelectAll();\n getDataList();\n } else {\n ElMessage.error(ct('删除失败'));\n }\n })\n .catch((error) => {\n console.error('删除角色失败:', error);\n ElMessage.error(ct('删除失败,请稍后重试'));\n });\n };\n\n const remove = (row: RoleItem) => {\n if (row && row.adRoleId) {\n deleteRole(row.adRoleId);\n }\n };\n\n const handleSelectionChange = (selection: RoleItem[]) => {\n selectList.value = selection.map(item => item.adRoleId);\n };\n\n const clearSelectAll = () => {\n selectList.value = [];\n tableRef.value?.clearSelection();\n };\n\n const delAll = () => {\n if (selectList.value.length <= 0) {\n ElMessage.warning(ct('您还未选择要删除的数据'));\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(ct('获取菜单列表失败'));\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","ct","init","getDataList","httpRequest","response","error","ElMessage","addRole","edit","row","submitRole","_a","valid","subForm","cancelRole","deleteRole","delId","clearSelectAll","remove","handleSelectionChange","selection","item","delAll","ids","parseTreeData","curLevelData","curLevel","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","_hoisted_4","_toDisplayString","_unref","_createVNode","_component_el_input","$event","_hoisted_5","_hoisted_6","_component_el_button","YhIcon","_createTextVNode","_component_el_popconfirm","_createBlock","_component_el_table","_component_el_table_column","_withCtx","scope","_component_el_pagination","_cache","_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_7","_hoisted_8","_hoisted_9","_Fragment","_renderList","_component_el_card","_component_el_checkbox","_component_el_checkbox_group","_component_el_empty","_component_el_alert","_hoisted_10","_hoisted_11"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as oe, ref as h, watch as ne, resolveComponent as c, openBlock as f, createElementBlock as L, withModifiers as I, normalizeClass as Ve, createElementVNode as N, toDisplayString as d, unref as s, createVNode as a, createCommentVNode as se, reactive as G, computed as X, onMounted as ke, onUnmounted as we, resolveDirective as Ce, Fragment as te, withCtx as n, withKeys as ae, createTextVNode as p, withDirectives as he, createBlock as k, normalizeStyle as Ne } from "vue";
2
2
  import { ElMessage as D } from "element-plus";
3
- import { c as t, _ as Ee } from "./index-BB7eDaah.js";
3
+ import { c as t, _ as Ee } from "./index-C0NHj-qI.js";
4
4
  import { httpRequest as j } from "yh-client";
5
5
  const Ue = { class: "preview-area" }, Oe = ["src"], De = {
6
6
  key: 1,
@@ -730,4 +730,4 @@ const Ue = { class: "preview-area" }, Oe = ["src"], De = {
730
730
  export {
731
731
  Fe as default
732
732
  };
733
- //# sourceMappingURL=SysConfig-DQ9LzHtf.js.map
733
+ //# sourceMappingURL=SysConfig-CHIyRpS3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SysConfig-DQ9LzHtf.js","sources":["../components/common/basic/ImageBase64Choose.vue","../components/business/admin/config/SysConfig.vue"],"sourcesContent":["<template>\n <div\n class=\"image-base64-choose\"\n @dragover.prevent=\"handleDragOver\"\n @dragleave=\"handleDragLeave\"\n @drop.prevent=\"handleDrop\"\n :class=\"{dragover: isDragging}\">\n <div class=\"preview-area\">\n <img\n v-if=\"previewImage\"\n :src=\"previewImage\"\n alt=\"Preview\" />\n <div\n v-else\n class=\"upload-prompt\">\n <span>{{ ct('点击或拖拽图片到此区域') }}</span>\n </div>\n </div>\n\n <div class=\"overlay-layer\">\n <input\n type=\"file\"\n accept=\"image/*\"\n @change=\"handleFileSelect\"\n ref=\"fileInput\" />\n </div>\n <div\n class=\"delete-btn\"\n v-if=\"previewImage\"\n @click=\"handleDelete\">\n <YhIcon name=\"close\"></YhIcon>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, watch} from 'vue';\n import {ct} from '../../../utils/i18nHelp';\n\n const props = defineProps({\n modelValue: String,\n });\n\n const emit = defineEmits(['update:modelValue']);\n\n const previewImage = ref(props.modelValue || '');\n const isDragging = ref(false);\n const fileInput = ref<HTMLInputElement | null>(null);\n\n // 处理文件选择通用方法\n const processFile = (file: File) => {\n if (!file.type.startsWith('image/')) {\n alert(ct('请选择图片文件'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n previewImage.value = base64;\n emit('update:modelValue', base64);\n };\n reader.readAsDataURL(file);\n };\n\n // 拖拽处理\n const handleDragOver = () => {\n isDragging.value = true;\n };\n\n const handleDragLeave = () => {\n isDragging.value = false;\n };\n\n const handleDrop = (e: DragEvent) => {\n isDragging.value = false;\n const files = e.dataTransfer?.files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n };\n\n // 文件选择处理\n const handleFileSelect = (e: Event) => {\n const input = e.target as HTMLInputElement;\n if (input.files && input.files[0]) {\n processFile(input.files[0]);\n input.value = ''; // 清除选择以便重复选择相同文件\n }\n };\n\n // 删除处理\n const handleDelete = () => {\n previewImage.value = '';\n emit('update:modelValue', '');\n };\n\n // 监听外部modelValue变化\n watch(\n () => props.modelValue,\n (newVal) => {\n previewImage.value = newVal || '';\n }\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .image-base64-choose {\n position: relative;\n width: 300px;\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.3s;\n\n &.dragover {\n border-color: #409eff;\n opacity: 0.5;\n }\n\n .preview-area {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n\n .upload-prompt {\n text-align: center;\n color: #999;\n font-size: 14px;\n }\n }\n\n .overlay-layer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n\n input[type='file'] {\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n }\n\n .delete-btn {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n width: 20px;\n height: 30px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n z-index: 2;\n\n &:hover {\n background: rgba(0, 0, 0, 0.7);\n }\n }\n }\n</style>\n","<template>\n <div class=\"sys-config-list-container\">\n <div class=\"sys-config-list-actions\">\n <div class=\"sys-config-list-conditions\">\n <el-form inline>\n <el-form-item :label=\"ct('名称')\">\n <el-input\n v-model=\"listForm.name\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选名称')\"></el-input>\n </el-form-item>\n <el-form-item :label=\"ct('编码')\">\n <el-input\n v-model=\"listForm.code\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选编码')\"></el-input>\n </el-form-item>\n <el-form-item>\n <el-button @click=\"resetList\">{{ ct('重置') }}</el-button>\n <el-button\n type=\"primary\"\n @click=\"getDataList\">\n {{ ct('搜索') }}\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n <el-button\n type=\"primary\"\n @click=\"addOne\">\n <i class=\"iconfont icon-add\"></i>\n {{ ct('新增') }}\n </el-button>\n </div>\n <el-table\n ref=\"tableRef\"\n v-loading=\"tableLoading\"\n :data=\"dataList\"\n row-key=\"code\"\n :row-class-name=\"tableRowClassName\"\n @row-click=\"rowClickHandler\">\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n type=\"index\"\n label=\"#\"\n width=\"60\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('名称')\"\n prop=\"name\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('编码')\"\n prop=\"code\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('值')\"\n min-width=\"150\">\n <template v-slot=\"{row: {type, value}}\">\n <el-image\n preview-teleported\n v-if=\"type === SysConfigType.IMAGE\"\n :src=\"value\"\n :preview-src-list=\"[value]\"\n class=\"table-el-image\"></el-image>\n <div\n class=\"table-color-block\"\n v-else-if=\"type === SysConfigType.COLOR\"\n :style=\"{backgroundColor: value}\">\n {{ value }}\n </div>\n <el-tag\n v-else-if=\"type === SysConfigType.BOOLEAN\"\n :type=\"value === 'Y' ? 'success' : 'info'\">\n {{ value === 'Y' ? ct('是') : ct('否') }}\n </el-tag>\n <template v-else=\"type === SysConfigType.TEXT\">{{ value }}</template>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('是否可用')\"\n width=\"80\">\n <template v-slot=\"{row}\">\n {{ row.active === 'Y' ? ct('启用') : ct('禁用') }}\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('说明')\"\n prop=\"description\"\n min-width=\"100\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('操作')\"\n width=\"220\"\n align=\"center\">\n <template #default=\"{row, $index}\">\n <el-button\n link\n type=\"primary\"\n @click.stop=\"editOne(row, $index)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n v-if=\"row.active === 'N'\"\n link\n type=\"success\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'Y')\">\n {{ ct('启用') }}\n </el-button>\n <el-button\n v-else\n link\n type=\"danger\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'N')\">\n {{ ct('禁用') }}\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n background\n :page-sizes=\"[10, 50, 100, 200, 500]\"\n v-model:page-size=\"listForm.pageSize\"\n :total=\"listForm.total\"\n v-model:current-page=\"listForm.pageNum\"\n layout=\"sizes,prev,pager,next,total\"></el-pagination>\n </div>\n <el-dialog\n class=\"form-drawer\"\n v-model=\"formShow\"\n @close=\"cancelForm\"\n draggable\n :title=\"formData.id ? ct('编辑配置') : ct('新增配置')\">\n <el-form\n label-position=\"top\"\n ref=\"formRef\"\n :model=\"formData\"\n :rules=\"formRules\">\n <el-row gutter=\"10\">\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('名称')\"\n prop=\"name\">\n <el-input\n v-model=\"formData.name\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('编码')\"\n prop=\"code\">\n <el-autocomplete\n v-model=\"formData.code\"\n :fetch-suggestions=\"queryCodeSuggestions\"\n :placeholder=\"ct('请输入或选择配置编码')\"\n clearable\n style=\"width: 100%\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"16\">\n <el-form-item\n :label=\"ct('值类型')\"\n prop=\"type\">\n <el-radio-group\n v-model=\"formData.type\"\n @change=\"formData.value = ''\">\n <el-radio :label=\"SysConfigType.TEXT\">{{ ct('文字') }}</el-radio>\n <el-radio :label=\"SysConfigType.NUMBER\">{{ ct('数字') }}</el-radio>\n <el-radio :label=\"SysConfigType.IMAGE\">{{ ct('图片') }}</el-radio>\n <el-radio :label=\"SysConfigType.COLOR\">{{ ct('颜色') }}</el-radio>\n <el-radio :label=\"SysConfigType.DATETIME\">{{ ct('日期时间') }}</el-radio>\n <el-radio :label=\"SysConfigType.BOOLEAN\">{{ ct('布尔值') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col\n :span=\"8\"\n prop=\"active\">\n <el-form-item :label=\"ct('是否可用')\">\n <el-radio-group v-model=\"formData.active\">\n <el-radio label=\"Y\">{{ ct('启用') }}</el-radio>\n <el-radio label=\"N\">{{ ct('禁用') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('值')\"\n prop=\"value\">\n <el-input\n v-model=\"formData.value\"\n v-if=\"formData.type === SysConfigType.TEXT\"\n clearable></el-input>\n <el-input-number\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.NUMBER\"></el-input-number>\n <image-base64-choose\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.IMAGE\"></image-base64-choose>\n <el-input\n v-else-if=\"formData.type === SysConfigType.COLOR\"\n v-model=\"formData.value\"\n clearable>\n <template #prefix>\n <el-color-picker\n color-format=\"hex\"\n v-model=\"formData.value\"></el-color-picker>\n </template>\n </el-input>\n <el-date-picker\n v-else-if=\"formData.type === SysConfigType.DATETIME\"\n v-model=\"formData.value\"\n type=\"datetime\"\n :placeholder=\"ct('选择日期时间')\"></el-date-picker>\n <el-switch\n v-else-if=\"formData.type === SysConfigType.BOOLEAN\"\n v-model=\"booleanValue\"\n :active-text=\"ct('启用')\"\n :inactive-text=\"ct('禁用')\"\n :active-value=\"true\"\n :inactive-value=\"false\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('说明')\"\n prop=\"description\">\n <el-input\n type=\"textarea\"\n v-model=\"formData.description\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <div class=\"sys-config-form-actions\">\n <el-button\n @click=\"prevOne\"\n text\n :disabled=\"cannotPrevItem\">\n {{ ct('上一个') }}(Alt + ←)\n </el-button>\n <el-button\n type=\"primary\"\n plain\n @click=\"cancelForm\">\n {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"saveOne\">\n {{ ct('保存') }}(Ctrl + S)\n </el-button>\n <el-button\n @click=\"nextOne\"\n text\n :disabled=\"cannotNextItem\">\n {{ ct('下一个') }}(ALT + →)\n </el-button>\n </div>\n </template>\n </el-dialog>\n</template>\n<script setup lang=\"ts\">\n import {reactive, ref, onMounted, onUnmounted, watch, computed} from 'vue';\n import {ElMessage} from 'element-plus';\n import ImageBase64Choose from '../../../common/basic/ImageBase64Choose.vue';\n import {httpRequest as http} from 'yh-client';\n import {ct} from '../../../../utils/i18nHelp';\n\n const tableRef = ref();\n const formRef = ref();\n const tableLoading = ref(false);\n\n enum SysConfigType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n IMAGE = 'IMAGE',\n COLOR = 'COLOR',\n DATETIME = 'DATETIME',\n BOOLEAN = 'BOOLEAN',\n }\n\n interface SysConfig {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n interface PageResponse {\n records: SysConfig[];\n total: number;\n }\n\n interface SysConfigForm {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n const listForm = reactive({\n name: '',\n code: '',\n pageNum: 1,\n pageSize: 10,\n total: 0,\n });\n\n const dataList = ref<any>([]);\n const tableRowClassName = (row: any, rowIndex: any) => {\n if (row.active === 'N') {\n return 'disabled-row';\n }\n return '';\n };\n function getDataList(isReset = false) {\n let {name, code, pageNum, pageSize} = listForm;\n if (isReset) {\n pageNum = 1;\n }\n tableLoading.value = true;\n http\n .request({\n url: '/parameter/list',\n method: 'POST',\n type: 'json',\n data: {\n name,\n code,\n pageNum,\n pageSize,\n },\n })\n .then((res: any) => {\n const data = res.data.data as PageResponse;\n dataList.value = data.records || [];\n listForm.total = data.total ?? data.records?.length ?? 0;\n })\n .catch((error) => {\n console.error('获取配置列表失败:', error);\n ElMessage.error(ct('获取配置列表失败,请稍后重试'));\n })\n .finally(() => {\n tableLoading.value = false;\n });\n }\n\n watch(\n () => [listForm.pageNum, listForm.pageSize],\n () => {\n getDataList();\n }\n );\n\n function rowClickHandler(row: any) {\n tableRef.value?.toggleRowSelection(row);\n }\n\n function resetList() {\n listForm.code = '';\n listForm.name = '';\n listForm.pageNum = 1;\n listForm.total = 0;\n getDataList();\n }\n\n const formDataIndex = ref();\n const formShow = ref(false);\n const cannotNextItem = computed(() => {\n return formDataIndex.value >= dataList.value.length - 1;\n });\n const cannotPrevItem = computed(() => {\n return formDataIndex.value <= 0;\n });\n\n const formData = reactive<SysConfigForm>({\n id: undefined,\n code: '',\n name: '',\n type: SysConfigType.TEXT,\n active: 'Y',\n value: '',\n description: '',\n });\n\n const formRules = reactive({\n code: [{required: true, type: 'string', message: ct('请输入编码')}],\n name: [{required: true, type: 'string', message: ct('请输入名称')}],\n type: [{required: true, type: 'string', message: ct('请选择类型')}],\n active: [{required: true, type: 'string', message: ct('请选择是否可用')}],\n value: [{required: true, type: 'string', message: ct('请输入参数配置内容')}],\n });\n\n // 布尔值计算属性(用于前端显示 true/false,后端存储 Y/N)\n const booleanValue = computed({\n get: () => formData.value === 'Y',\n set: (val: boolean) => {\n formData.value = val ? 'Y' : 'N';\n }\n });\n\n // 固定建议列表\n const CODE_SUGGESTIONS = [\n {value: 'logoUrl', label: 'logoUrl - Logo图片路径'},\n {value: 'miniLogoUrl', label: 'miniLogoUrl - 迷你Logo路径'},\n {value: 'loginBg', label: 'loginBg - 登录背景图'},\n {value: 'moduleFilter', label: 'moduleFilter - 模块筛选开关'},\n {value: 'homePath', label: 'homePath - 首页路径'},\n {value: 'ADMIN_MENU_CONFIG_KEY', label: 'ADMIN_MENU_CONFIG_KEY - 菜单配置'},\n ];\n\n // 查询编码建议\n const queryCodeSuggestions = (queryString: string, cb: (suggestions: any[]) => void) => {\n const results = queryString\n ? CODE_SUGGESTIONS.filter((item) =>\n item.value.toLowerCase().includes(queryString.toLowerCase())\n )\n : CODE_SUGGESTIONS;\n cb(results);\n };\n function cancelForm() {\n formRef.value?.resetFields();\n formDataIndex.value = 0;\n formData.id = undefined;\n formShow.value = false;\n }\n\n function addOne() {\n formData.id = undefined;\n formData.code = '';\n formData.name = '';\n formData.type = SysConfigType.TEXT;\n formData.active = 'Y';\n formData.value = '';\n formData.description = '';\n formShow.value = true;\n }\n\n function prevOne() {\n if (!cannotPrevItem.value) {\n let index = formDataIndex.value - 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function editOne(item: any, index: any) {\n formDataIndex.value = index;\n formData.id = item.id;\n formData.code = item.code;\n formData.name = item.name;\n formData.type = item.type || SysConfigType.TEXT;\n formData.active = item.active;\n formData.value = item.value;\n formData.description = item.description;\n formShow.value = true;\n }\n\n function nextOne() {\n if (!cannotNextItem.value) {\n let index = formDataIndex.value + 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function saveOne() {\n let isAdd = !formData.id;\n let url = 'parameter/save';\n formRef.value?.validate().then((errMap: any) => {\n if (!errMap) {\n let data: any = {\n ...formData,\n };\n if (isAdd) {\n data.id = undefined;\n }\n http\n .request({\n url,\n method: 'POST',\n type: 'json',\n data,\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n ElMessage.success(data.msg);\n if (!isAdd) {\n dataList.value[formDataIndex.value] = {\n ...formData,\n };\n nextOne();\n } else {\n cancelForm();\n }\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('保存配置失败:', error);\n ElMessage.error(ct('保存失败,请稍后重试'));\n });\n }\n });\n }\n\n function updateActiveStatus(id: number, index: number, active: 'Y' | 'N') {\n http\n .request({\n url: '/parameter/save',\n method: 'POST',\n type: 'json',\n data: {id, active},\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n const message = active === 'Y' ? ct('启用成功') : ct('禁用成功');\n ElMessage.success(message);\n dataList.value[index].active = active;\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('更新状态失败:', error);\n ElMessage.error(ct('操作失败,请稍后重试'));\n });\n }\n\n // 键盘事件处理函数\n const handleKeydown = (e: KeyboardEvent) => {\n const {key, ctrlKey, altKey} = e;\n if (formShow.value) {\n if (key === 's' && ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n saveOne();\n }\n if (key === 'ArrowRight' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n nextOne();\n }\n if (key === 'ArrowLeft' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n prevOne();\n }\n }\n };\n\n onMounted(() => {\n getDataList();\n window.addEventListener('keydown', handleKeydown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleKeydown);\n });\n</script>\n<style lang=\"scss\">\n .sys-config-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n .sys-config-list-actions {\n padding: 8px 16px;\n box-sizing: border-box;\n display: flex;\n .sys-config-list-conditions {\n padding: 0 8px;\n flex: 1;\n .el-form--inline .el-form-item {\n margin-bottom: 0;\n margin-right: 18px;\n }\n }\n }\n .sys-config-list-actions + .sys-config-list-actions {\n padding-top: 0;\n }\n .el-table {\n flex: 1;\n .table-el-image {\n width: auto;\n height: 30px;\n }\n .table-color-block {\n width: 100px;\n height: 30px;\n display: inline-flex;\n color: white;\n align-items: center;\n justify-content: center;\n }\n }\n .el-pagination {\n padding: 16px 16px 0 16px;\n }\n }\n .sys-config-form-actions {\n display: flex;\n .el-button {\n flex: 1;\n }\n }\n .el-table .disabled-row {\n --el-table-tr-bg-color: var(--el-color-info-light-7);\n }\n</style>\n"],"names":["props","__props","emit","__emit","previewImage","ref","isDragging","fileInput","processFile","file","ct","reader","e","base64","_a","handleDragOver","handleDragLeave","handleDrop","files","handleFileSelect","input","handleDelete","watch","newVal","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_openBlock","_hoisted_3","_unref","_hoisted_4","_createVNode","_component_YhIcon","tableRef","formRef","tableLoading","listForm","reactive","dataList","tableRowClassName","row","rowIndex","getDataList","isReset","name","code","pageNum","pageSize","http","res","data","error","ElMessage","rowClickHandler","resetList","formDataIndex","formShow","cannotNextItem","computed","cannotPrevItem","formData","formRules","booleanValue","val","CODE_SUGGESTIONS","queryCodeSuggestions","queryString","cb","results","item","cancelForm","addOne","prevOne","index","editOne","nextOne","saveOne","isAdd","url","errMap","updateActiveStatus","id","active","message","handleKeydown","key","ctrlKey","altKey","onMounted","onUnmounted","_hoisted_2","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button","_createTextVNode","_createBlock","_component_el_table","_component_el_table_column","type","value","_component_el_image","_component_el_tag","_Fragment","_withCtx","_toDisplayString","$index","_withModifiers","_component_el_pagination","_component_el_dialog","_component_el_row","_component_el_col","_component_el_autocomplete","_component_el_radio_group","_component_el_radio","_component_el_input_number","ImageBase64Choose","_component_el_color_picker","_component_el_date_picker","_component_el_switch"],"mappings":"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"}
1
+ {"version":3,"file":"SysConfig-CHIyRpS3.js","sources":["../components/common/basic/ImageBase64Choose.vue","../components/business/admin/config/SysConfig.vue"],"sourcesContent":["<template>\n <div\n class=\"image-base64-choose\"\n @dragover.prevent=\"handleDragOver\"\n @dragleave=\"handleDragLeave\"\n @drop.prevent=\"handleDrop\"\n :class=\"{dragover: isDragging}\">\n <div class=\"preview-area\">\n <img\n v-if=\"previewImage\"\n :src=\"previewImage\"\n alt=\"Preview\" />\n <div\n v-else\n class=\"upload-prompt\">\n <span>{{ ct('点击或拖拽图片到此区域') }}</span>\n </div>\n </div>\n\n <div class=\"overlay-layer\">\n <input\n type=\"file\"\n accept=\"image/*\"\n @change=\"handleFileSelect\"\n ref=\"fileInput\" />\n </div>\n <div\n class=\"delete-btn\"\n v-if=\"previewImage\"\n @click=\"handleDelete\">\n <YhIcon name=\"close\"></YhIcon>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, watch} from 'vue';\n import {ct} from '../../../utils/i18nHelp';\n\n const props = defineProps({\n modelValue: String,\n });\n\n const emit = defineEmits(['update:modelValue']);\n\n const previewImage = ref(props.modelValue || '');\n const isDragging = ref(false);\n const fileInput = ref<HTMLInputElement | null>(null);\n\n // 处理文件选择通用方法\n const processFile = (file: File) => {\n if (!file.type.startsWith('image/')) {\n alert(ct('请选择图片文件'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n previewImage.value = base64;\n emit('update:modelValue', base64);\n };\n reader.readAsDataURL(file);\n };\n\n // 拖拽处理\n const handleDragOver = () => {\n isDragging.value = true;\n };\n\n const handleDragLeave = () => {\n isDragging.value = false;\n };\n\n const handleDrop = (e: DragEvent) => {\n isDragging.value = false;\n const files = e.dataTransfer?.files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n };\n\n // 文件选择处理\n const handleFileSelect = (e: Event) => {\n const input = e.target as HTMLInputElement;\n if (input.files && input.files[0]) {\n processFile(input.files[0]);\n input.value = ''; // 清除选择以便重复选择相同文件\n }\n };\n\n // 删除处理\n const handleDelete = () => {\n previewImage.value = '';\n emit('update:modelValue', '');\n };\n\n // 监听外部modelValue变化\n watch(\n () => props.modelValue,\n (newVal) => {\n previewImage.value = newVal || '';\n }\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .image-base64-choose {\n position: relative;\n width: 300px;\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.3s;\n\n &.dragover {\n border-color: #409eff;\n opacity: 0.5;\n }\n\n .preview-area {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n\n .upload-prompt {\n text-align: center;\n color: #999;\n font-size: 14px;\n }\n }\n\n .overlay-layer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n\n input[type='file'] {\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n }\n\n .delete-btn {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n width: 20px;\n height: 30px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n z-index: 2;\n\n &:hover {\n background: rgba(0, 0, 0, 0.7);\n }\n }\n }\n</style>\n","<template>\n <div class=\"sys-config-list-container\">\n <div class=\"sys-config-list-actions\">\n <div class=\"sys-config-list-conditions\">\n <el-form inline>\n <el-form-item :label=\"ct('名称')\">\n <el-input\n v-model=\"listForm.name\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选名称')\"></el-input>\n </el-form-item>\n <el-form-item :label=\"ct('编码')\">\n <el-input\n v-model=\"listForm.code\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选编码')\"></el-input>\n </el-form-item>\n <el-form-item>\n <el-button @click=\"resetList\">{{ ct('重置') }}</el-button>\n <el-button\n type=\"primary\"\n @click=\"getDataList\">\n {{ ct('搜索') }}\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n <el-button\n type=\"primary\"\n @click=\"addOne\">\n <i class=\"iconfont icon-add\"></i>\n {{ ct('新增') }}\n </el-button>\n </div>\n <el-table\n ref=\"tableRef\"\n v-loading=\"tableLoading\"\n :data=\"dataList\"\n row-key=\"code\"\n :row-class-name=\"tableRowClassName\"\n @row-click=\"rowClickHandler\">\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n type=\"index\"\n label=\"#\"\n width=\"60\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('名称')\"\n prop=\"name\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('编码')\"\n prop=\"code\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('值')\"\n min-width=\"150\">\n <template v-slot=\"{row: {type, value}}\">\n <el-image\n preview-teleported\n v-if=\"type === SysConfigType.IMAGE\"\n :src=\"value\"\n :preview-src-list=\"[value]\"\n class=\"table-el-image\"></el-image>\n <div\n class=\"table-color-block\"\n v-else-if=\"type === SysConfigType.COLOR\"\n :style=\"{backgroundColor: value}\">\n {{ value }}\n </div>\n <el-tag\n v-else-if=\"type === SysConfigType.BOOLEAN\"\n :type=\"value === 'Y' ? 'success' : 'info'\">\n {{ value === 'Y' ? ct('是') : ct('否') }}\n </el-tag>\n <template v-else=\"type === SysConfigType.TEXT\">{{ value }}</template>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('是否可用')\"\n width=\"80\">\n <template v-slot=\"{row}\">\n {{ row.active === 'Y' ? ct('启用') : ct('禁用') }}\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('说明')\"\n prop=\"description\"\n min-width=\"100\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('操作')\"\n width=\"220\"\n align=\"center\">\n <template #default=\"{row, $index}\">\n <el-button\n link\n type=\"primary\"\n @click.stop=\"editOne(row, $index)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n v-if=\"row.active === 'N'\"\n link\n type=\"success\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'Y')\">\n {{ ct('启用') }}\n </el-button>\n <el-button\n v-else\n link\n type=\"danger\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'N')\">\n {{ ct('禁用') }}\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n background\n :page-sizes=\"[10, 50, 100, 200, 500]\"\n v-model:page-size=\"listForm.pageSize\"\n :total=\"listForm.total\"\n v-model:current-page=\"listForm.pageNum\"\n layout=\"sizes,prev,pager,next,total\"></el-pagination>\n </div>\n <el-dialog\n class=\"form-drawer\"\n v-model=\"formShow\"\n @close=\"cancelForm\"\n draggable\n :title=\"formData.id ? ct('编辑配置') : ct('新增配置')\">\n <el-form\n label-position=\"top\"\n ref=\"formRef\"\n :model=\"formData\"\n :rules=\"formRules\">\n <el-row gutter=\"10\">\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('名称')\"\n prop=\"name\">\n <el-input\n v-model=\"formData.name\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('编码')\"\n prop=\"code\">\n <el-autocomplete\n v-model=\"formData.code\"\n :fetch-suggestions=\"queryCodeSuggestions\"\n :placeholder=\"ct('请输入或选择配置编码')\"\n clearable\n style=\"width: 100%\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"16\">\n <el-form-item\n :label=\"ct('值类型')\"\n prop=\"type\">\n <el-radio-group\n v-model=\"formData.type\"\n @change=\"formData.value = ''\">\n <el-radio :label=\"SysConfigType.TEXT\">{{ ct('文字') }}</el-radio>\n <el-radio :label=\"SysConfigType.NUMBER\">{{ ct('数字') }}</el-radio>\n <el-radio :label=\"SysConfigType.IMAGE\">{{ ct('图片') }}</el-radio>\n <el-radio :label=\"SysConfigType.COLOR\">{{ ct('颜色') }}</el-radio>\n <el-radio :label=\"SysConfigType.DATETIME\">{{ ct('日期时间') }}</el-radio>\n <el-radio :label=\"SysConfigType.BOOLEAN\">{{ ct('布尔值') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col\n :span=\"8\"\n prop=\"active\">\n <el-form-item :label=\"ct('是否可用')\">\n <el-radio-group v-model=\"formData.active\">\n <el-radio label=\"Y\">{{ ct('启用') }}</el-radio>\n <el-radio label=\"N\">{{ ct('禁用') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('值')\"\n prop=\"value\">\n <el-input\n v-model=\"formData.value\"\n v-if=\"formData.type === SysConfigType.TEXT\"\n clearable></el-input>\n <el-input-number\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.NUMBER\"></el-input-number>\n <image-base64-choose\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.IMAGE\"></image-base64-choose>\n <el-input\n v-else-if=\"formData.type === SysConfigType.COLOR\"\n v-model=\"formData.value\"\n clearable>\n <template #prefix>\n <el-color-picker\n color-format=\"hex\"\n v-model=\"formData.value\"></el-color-picker>\n </template>\n </el-input>\n <el-date-picker\n v-else-if=\"formData.type === SysConfigType.DATETIME\"\n v-model=\"formData.value\"\n type=\"datetime\"\n :placeholder=\"ct('选择日期时间')\"></el-date-picker>\n <el-switch\n v-else-if=\"formData.type === SysConfigType.BOOLEAN\"\n v-model=\"booleanValue\"\n :active-text=\"ct('启用')\"\n :inactive-text=\"ct('禁用')\"\n :active-value=\"true\"\n :inactive-value=\"false\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('说明')\"\n prop=\"description\">\n <el-input\n type=\"textarea\"\n v-model=\"formData.description\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <div class=\"sys-config-form-actions\">\n <el-button\n @click=\"prevOne\"\n text\n :disabled=\"cannotPrevItem\">\n {{ ct('上一个') }}(Alt + ←)\n </el-button>\n <el-button\n type=\"primary\"\n plain\n @click=\"cancelForm\">\n {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"saveOne\">\n {{ ct('保存') }}(Ctrl + S)\n </el-button>\n <el-button\n @click=\"nextOne\"\n text\n :disabled=\"cannotNextItem\">\n {{ ct('下一个') }}(ALT + →)\n </el-button>\n </div>\n </template>\n </el-dialog>\n</template>\n<script setup lang=\"ts\">\n import {reactive, ref, onMounted, onUnmounted, watch, computed} from 'vue';\n import {ElMessage} from 'element-plus';\n import ImageBase64Choose from '../../../common/basic/ImageBase64Choose.vue';\n import {httpRequest as http} from 'yh-client';\n import {ct} from '../../../../utils/i18nHelp';\n\n const tableRef = ref();\n const formRef = ref();\n const tableLoading = ref(false);\n\n enum SysConfigType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n IMAGE = 'IMAGE',\n COLOR = 'COLOR',\n DATETIME = 'DATETIME',\n BOOLEAN = 'BOOLEAN',\n }\n\n interface SysConfig {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n interface PageResponse {\n records: SysConfig[];\n total: number;\n }\n\n interface SysConfigForm {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n const listForm = reactive({\n name: '',\n code: '',\n pageNum: 1,\n pageSize: 10,\n total: 0,\n });\n\n const dataList = ref<any>([]);\n const tableRowClassName = (row: any, rowIndex: any) => {\n if (row.active === 'N') {\n return 'disabled-row';\n }\n return '';\n };\n function getDataList(isReset = false) {\n let {name, code, pageNum, pageSize} = listForm;\n if (isReset) {\n pageNum = 1;\n }\n tableLoading.value = true;\n http\n .request({\n url: '/parameter/list',\n method: 'POST',\n type: 'json',\n data: {\n name,\n code,\n pageNum,\n pageSize,\n },\n })\n .then((res: any) => {\n const data = res.data.data as PageResponse;\n dataList.value = data.records || [];\n listForm.total = data.total ?? data.records?.length ?? 0;\n })\n .catch((error) => {\n console.error('获取配置列表失败:', error);\n ElMessage.error(ct('获取配置列表失败,请稍后重试'));\n })\n .finally(() => {\n tableLoading.value = false;\n });\n }\n\n watch(\n () => [listForm.pageNum, listForm.pageSize],\n () => {\n getDataList();\n }\n );\n\n function rowClickHandler(row: any) {\n tableRef.value?.toggleRowSelection(row);\n }\n\n function resetList() {\n listForm.code = '';\n listForm.name = '';\n listForm.pageNum = 1;\n listForm.total = 0;\n getDataList();\n }\n\n const formDataIndex = ref();\n const formShow = ref(false);\n const cannotNextItem = computed(() => {\n return formDataIndex.value >= dataList.value.length - 1;\n });\n const cannotPrevItem = computed(() => {\n return formDataIndex.value <= 0;\n });\n\n const formData = reactive<SysConfigForm>({\n id: undefined,\n code: '',\n name: '',\n type: SysConfigType.TEXT,\n active: 'Y',\n value: '',\n description: '',\n });\n\n const formRules = reactive({\n code: [{required: true, type: 'string', message: ct('请输入编码')}],\n name: [{required: true, type: 'string', message: ct('请输入名称')}],\n type: [{required: true, type: 'string', message: ct('请选择类型')}],\n active: [{required: true, type: 'string', message: ct('请选择是否可用')}],\n value: [{required: true, type: 'string', message: ct('请输入参数配置内容')}],\n });\n\n // 布尔值计算属性(用于前端显示 true/false,后端存储 Y/N)\n const booleanValue = computed({\n get: () => formData.value === 'Y',\n set: (val: boolean) => {\n formData.value = val ? 'Y' : 'N';\n }\n });\n\n // 固定建议列表\n const CODE_SUGGESTIONS = [\n {value: 'logoUrl', label: 'logoUrl - Logo图片路径'},\n {value: 'miniLogoUrl', label: 'miniLogoUrl - 迷你Logo路径'},\n {value: 'loginBg', label: 'loginBg - 登录背景图'},\n {value: 'moduleFilter', label: 'moduleFilter - 模块筛选开关'},\n {value: 'homePath', label: 'homePath - 首页路径'},\n {value: 'ADMIN_MENU_CONFIG_KEY', label: 'ADMIN_MENU_CONFIG_KEY - 菜单配置'},\n ];\n\n // 查询编码建议\n const queryCodeSuggestions = (queryString: string, cb: (suggestions: any[]) => void) => {\n const results = queryString\n ? CODE_SUGGESTIONS.filter((item) =>\n item.value.toLowerCase().includes(queryString.toLowerCase())\n )\n : CODE_SUGGESTIONS;\n cb(results);\n };\n function cancelForm() {\n formRef.value?.resetFields();\n formDataIndex.value = 0;\n formData.id = undefined;\n formShow.value = false;\n }\n\n function addOne() {\n formData.id = undefined;\n formData.code = '';\n formData.name = '';\n formData.type = SysConfigType.TEXT;\n formData.active = 'Y';\n formData.value = '';\n formData.description = '';\n formShow.value = true;\n }\n\n function prevOne() {\n if (!cannotPrevItem.value) {\n let index = formDataIndex.value - 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function editOne(item: any, index: any) {\n formDataIndex.value = index;\n formData.id = item.id;\n formData.code = item.code;\n formData.name = item.name;\n formData.type = item.type || SysConfigType.TEXT;\n formData.active = item.active;\n formData.value = item.value;\n formData.description = item.description;\n formShow.value = true;\n }\n\n function nextOne() {\n if (!cannotNextItem.value) {\n let index = formDataIndex.value + 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function saveOne() {\n let isAdd = !formData.id;\n let url = 'parameter/save';\n formRef.value?.validate().then((errMap: any) => {\n if (!errMap) {\n let data: any = {\n ...formData,\n };\n if (isAdd) {\n data.id = undefined;\n }\n http\n .request({\n url,\n method: 'POST',\n type: 'json',\n data,\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n ElMessage.success(data.msg);\n if (!isAdd) {\n dataList.value[formDataIndex.value] = {\n ...formData,\n };\n nextOne();\n } else {\n cancelForm();\n }\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('保存配置失败:', error);\n ElMessage.error(ct('保存失败,请稍后重试'));\n });\n }\n });\n }\n\n function updateActiveStatus(id: number, index: number, active: 'Y' | 'N') {\n http\n .request({\n url: '/parameter/save',\n method: 'POST',\n type: 'json',\n data: {id, active},\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n const message = active === 'Y' ? ct('启用成功') : ct('禁用成功');\n ElMessage.success(message);\n dataList.value[index].active = active;\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('更新状态失败:', error);\n ElMessage.error(ct('操作失败,请稍后重试'));\n });\n }\n\n // 键盘事件处理函数\n const handleKeydown = (e: KeyboardEvent) => {\n const {key, ctrlKey, altKey} = e;\n if (formShow.value) {\n if (key === 's' && ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n saveOne();\n }\n if (key === 'ArrowRight' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n nextOne();\n }\n if (key === 'ArrowLeft' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n prevOne();\n }\n }\n };\n\n onMounted(() => {\n getDataList();\n window.addEventListener('keydown', handleKeydown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleKeydown);\n });\n</script>\n<style lang=\"scss\">\n .sys-config-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n .sys-config-list-actions {\n padding: 8px 16px;\n box-sizing: border-box;\n display: flex;\n .sys-config-list-conditions {\n padding: 0 8px;\n flex: 1;\n .el-form--inline .el-form-item {\n margin-bottom: 0;\n margin-right: 18px;\n }\n }\n }\n .sys-config-list-actions + .sys-config-list-actions {\n padding-top: 0;\n }\n .el-table {\n flex: 1;\n .table-el-image {\n width: auto;\n height: 30px;\n }\n .table-color-block {\n width: 100px;\n height: 30px;\n display: inline-flex;\n color: white;\n align-items: center;\n justify-content: center;\n }\n }\n .el-pagination {\n padding: 16px 16px 0 16px;\n }\n }\n .sys-config-form-actions {\n display: flex;\n .el-button {\n flex: 1;\n }\n }\n .el-table .disabled-row {\n --el-table-tr-bg-color: var(--el-color-info-light-7);\n }\n</style>\n"],"names":["props","__props","emit","__emit","previewImage","ref","isDragging","fileInput","processFile","file","ct","reader","e","base64","_a","handleDragOver","handleDragLeave","handleDrop","files","handleFileSelect","input","handleDelete","watch","newVal","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_openBlock","_hoisted_3","_unref","_hoisted_4","_createVNode","_component_YhIcon","tableRef","formRef","tableLoading","listForm","reactive","dataList","tableRowClassName","row","rowIndex","getDataList","isReset","name","code","pageNum","pageSize","http","res","data","error","ElMessage","rowClickHandler","resetList","formDataIndex","formShow","cannotNextItem","computed","cannotPrevItem","formData","formRules","booleanValue","val","CODE_SUGGESTIONS","queryCodeSuggestions","queryString","cb","results","item","cancelForm","addOne","prevOne","index","editOne","nextOne","saveOne","isAdd","url","errMap","updateActiveStatus","id","active","message","handleKeydown","key","ctrlKey","altKey","onMounted","onUnmounted","_hoisted_2","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button","_createTextVNode","_createBlock","_component_el_table","_component_el_table_column","type","value","_component_el_image","_component_el_tag","_Fragment","_withCtx","_toDisplayString","$index","_withModifiers","_component_el_pagination","_component_el_dialog","_component_el_row","_component_el_col","_component_el_autocomplete","_component_el_radio_group","_component_el_radio","_component_el_input_number","ImageBase64Choose","_component_el_color_picker","_component_el_date_picker","_component_el_switch"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as Z, ref as v, reactive as A, watch as ne, resolveComponent as m, openBlock as B, createBlock as L, unref as f, withCtx as l, createVNode as e, createTextVNode as x, toDisplayString as w, resolveDirective as pe, createElementVNode as J, withDirectives as me, createElementBlock as H, Fragment as X, renderList as le, createCommentVNode as _e, onMounted as ge, normalizeProps as he, guardReactiveProps as ve } from "vue";
2
2
  import { ElMessage as W, ElMessageBox as Ie } from "element-plus";
3
- import { c as d, s as oe, h as be, j as ke, k as ye, l as Ce, m as Ve, n as De, o as we, _ as Me, p as xe, q as Te } from "./index-BB7eDaah.js";
3
+ import { c as d, s as oe, h as be, j as ke, k as ye, l as Ce, m as Ve, n as De, o as we, _ as Me, p as xe, q as Te } from "./index-C0NHj-qI.js";
4
4
  import { deepClone as Ne } from "yh-client";
5
5
  const Ue = /* @__PURE__ */ Z({
6
6
  __name: "TenantForm",
@@ -702,4 +702,4 @@ const Ue = /* @__PURE__ */ Z({
702
702
  export {
703
703
  Ge as default
704
704
  };
705
- //# sourceMappingURL=TenantList-D5NtMgbv.js.map
705
+ //# sourceMappingURL=TenantList-sa32rfg9.js.map