{"version":3,"file":"grantPermissionForm.mjs","sources":["../../../../../src/pagesDefault/sys/role/grantPermissionForm.vue"],"sourcesContent":["<template>\r\n\t<a-drawer title=\"授权权限\" :width=\"drawerWidth\" :visible=\"visible\" :destroy-on-close=\"true\" :show-pagination=\"false\" :body-style=\"{ paddingBottom: '80px' }\" :footer-style=\"{ textAlign: 'right' }\" @close=\"onClose\">\r\n\t\t<a-alert message=\"注：此功能界面需要与代码查询条件配合使用，并非所有接口都需设置数据范围，多用于业务模块！\" type=\"warning\" closable />\r\n\t\t<a-spin :spinning=\"spinningLoading\">\r\n\t\t\t<a-table  class=\"mt-4\" size=\"middle\" :columns=\"columns\" :data-source=\"loadDatas\" bordered :row-key=\"(record) => record.api\">\r\n\t\t\t\t<template #headerCell=\"{ column }\">\r\n\t\t\t\t\t<template v-if=\"column.key === 'api'\">\r\n\t\t\t\t\t\t<a-checkbox @update:checked=\"(val) => onCheckAllChange(val)\"> 接口 </a-checkbox>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #bodyCell=\"{ column, record }\">\r\n\t\t\t\t\t<template v-if=\"column.dataIndex === 'api'\">\r\n\t\t\t\t\t\t<a-checkbox :checked=\"record.check\" @update:checked=\"(val) => changeApi(record, val)\">\r\n\t\t\t\t\t\t\t{{ record.api }}\r\n\t\t\t\t\t\t</a-checkbox>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t\t<template v-if=\"column.dataIndex === 'dataScope'\">\r\n\t\t\t\t\t\t<template v-if=\"record.dataScope.length > 0\">\r\n\t\t\t\t\t\t\t<template v-for=\"item in record.dataScope\" :key=\"item.id + record.api\">\r\n\t\t\t\t\t\t\t\t<a-radio v-model:checked=\"item.check\" :name=\"item.title\" @change=\"(evt) => changeDataScope(record, evt)\">\r\n\t\t\t\t\t\t\t\t\t<a-badge\r\n\t\t\t\t\t\t\t\t\t\tv-if=\"(item.value === 'SCOPE_ORG_DEFINE') & record.dataScope[4].check & (item.scopeDefineOrgIdList !== undefined)\"\r\n\t\t\t\t\t\t\t\t\t\t:count=\"item.scopeDefineOrgIdList.length\"\r\n\t\t\t\t\t\t\t\t\t\t:number-style=\"{ backgroundColor: '#52c41a' }\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ item.title }}</a-badge\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<div v-else>{{ item.title }}</div>\r\n\t\t\t\t\t\t\t\t</a-radio>\r\n\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t<a-button v-if=\"record.dataScope[4].check\" type=\"link\" size=\"small\" @click=\"handleDefineOrg(record)\">选择机构</a-button>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t</template>\r\n\t\t\t</a-table>\r\n\t\t</a-spin>\r\n\t\t<template #footer>\r\n\t\t\t<a-button style=\"margin-right: 8px\" @click=\"onClose\">关闭</a-button>\r\n\t\t\t<a-button type=\"primary\" :loading=\"submitLoading\" @click=\"onSubmit\">保存</a-button>\r\n\t\t</template>\r\n\t\t<ScopeDefineOrg ref=\"scopeDefineOrgModal\" @click=\"scopeDefineOrgClick\" />\r\n\t</a-drawer>\r\n</template>\r\n<script setup name=\"grantResourceForm\">\r\n\timport roleApi from '@/api/sys/roleApi'\r\n\timport ScopeDefineOrg from './scopeDefineOrg.vue'\r\n\r\n\tlet visible = ref(false)\r\n\tconst spinningLoading = ref(false)\r\n\tconst scopeDefineOrgModal = ref(null)\r\n\tconst emit = defineEmits({ successful: null })\r\n\tconst submitLoading = ref(false)\r\n\tconst CustomValue = 'SCOPE_ORG_DEFINE'\r\n\t// 抽屉的宽度\r\n\tconst drawerWidth = 1000\r\n\t// 自动获取宽度，默认获取浏览器的宽度的90%\r\n\t//(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) * 0.9\r\n\tlet loadDatas = ref([])\r\n\tconst columns = [\r\n\t\t{\r\n\t\t\tkey: 'api',\r\n\r\n\t\t\ttitle: '接口',\r\n\t\t\tdataIndex: 'api',\r\n\t\t\twidth: 380\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: 'dataScope',\r\n\r\n\t\t\ttitle: '数据范围',\r\n\t\t\tdataIndex: 'dataScope',\r\n      width: 250\r\n\t\t}\r\n\t]\r\n\t// 获取数据\r\n\tconst loadData = async () => {\r\n\t\tspinningLoading.value = true\r\n\t\tconst res = await roleApi.rolePermissionTreeSelector()\r\n\t\t// 获取他已有的权限\r\n\t\tconst param = {\r\n\t\t\tid: grantPermissionParam.id\r\n\t\t}\r\n\t\tconst resOwn = await roleApi.roleOwnPermission(param)\r\n\t\t// 数据转换\r\n\t\techoModuleData(res, resOwn)\r\n\t\tspinningLoading.value = false\r\n\t}\r\n\t// 数据转换\r\n\tconst echoModuleData = (res, resOwn) => {\r\n\t\tres.forEach((api) => {\r\n\t\t\tconst obj = {\r\n\t\t\t\tapi: api,\r\n\t\t\t\tdataScope: datascope(api),\r\n\t\t\t\tcheck: false\r\n\t\t\t}\r\n\t\t\tif (resOwn.grantInfoList.length > 0) {\r\n\t\t\t\tresOwn.grantInfoList.forEach((item) => {\r\n\t\t\t\t\tif (item.apiUrl === subStrApi(api)) {\r\n\t\t\t\t\t\tobj.check = true\r\n\t\t\t\t\t\t// dataScopeInfo\r\n\t\t\t\t\t\tobj.dataScope.forEach((o) => {\r\n\t\t\t\t\t\t\tif (o.value === item.scopeCategory) {\r\n\t\t\t\t\t\t\t\to.check = true\r\n\t\t\t\t\t\t\t\t// 如果是自定义\r\n\t\t\t\t\t\t\t\tif (item.scopeCategory === 'SCOPE_ORG_DEFINE') {\r\n\t\t\t\t\t\t\t\t\to.scopeDefineOrgIdList = item.scopeDefineOrgIdList\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tloadDatas.value.push(obj)\r\n\t\t})\r\n\t}\r\n\tconst datascope = (id) => {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tid: `SCOPE_ALL_${id}`,\r\n\t\t\t\ttitle: '全部',\r\n\t\t\t\tvalue: 'SCOPE_ALL',\r\n\t\t\t\tcheck: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: `SCOPE_SELF_${id}`,\r\n\t\t\t\ttitle: '仅自己',\r\n\t\t\t\tvalue: 'SCOPE_SELF',\r\n\t\t\t\tcheck: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: `SCOPE_ORG_${id}`,\r\n\t\t\t\ttitle: '所属组织',\r\n\t\t\t\tvalue: 'SCOPE_ORG',\r\n\t\t\t\tcheck: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: `SCOPE_ORG_CHILD_${id}`,\r\n\t\t\t\ttitle: '所属组织及以下',\r\n\t\t\t\tvalue: 'SCOPE_ORG_CHILD',\r\n\t\t\t\tcheck: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: `SCOPE_ORG_DEFINE_${id}`,\r\n\t\t\t\ttitle: '自定义',\r\n\t\t\t\tvalue: 'SCOPE_ORG_DEFINE',\r\n\t\t\t\tcheck: false\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n\t// 点击数据权限选择\r\n\tconst changeDataScope = (record, evt) => {\r\n\t\tconst name = evt.target.name\r\n\t\t// 这里做互斥，每个\r\n\t\trecord.dataScope.forEach((item) => {\r\n\t\t\tif (item.title !== name) {\r\n\t\t\t\titem.check = false\r\n\t\t\t}\r\n\t\t})\r\n\t\tchangeChildCheckBox(record, evt)\r\n\t}\r\n\t// 处理自定义\r\n\tconst handleDefineOrg = (recordDataScope) => {\r\n\t\t// 弹框选择子自定义\r\n\t\tconst data = recordDataScope.dataScope.find((f) => f.value === CustomValue)\r\n\t\t// 选中了\r\n\t\tif (data.check) {\r\n\t\t\t// 获取到选中的key数组，传过去，让其那边回显\r\n\t\t\tconst checkKeysStr = recordDataScope.dataScope[4].scopeDefineOrgIdList\r\n\t\t\tscopeDefineOrgModal.value.onOpen(data.id, checkKeysStr)\r\n\t\t} else {\r\n\t\t\t// 清理缓存中的结构,去掉就行\r\n\t\t\thandleDatascope(false, record.id, null)\r\n\t\t}\r\n\t}\r\n\t// 自定义数据弹窗回调\r\n\tconst scopeDefineOrgClick = (value) => {\r\n\t\thandleDatascope(true, value.dataScopeId, value.defineOrgIdData.scopeDefineOrgIdList)\r\n\t}\r\n\t// 处理Datascope数据被选中自定义或取消自定义数据\r\n\tconst handleDatascope = (check, id, orgData) => {\r\n\t\tloadDatas.value.forEach((item) => {\r\n\t\t\tif (id === 'SCOPE_ORG_DEFINE_' + item.api) {\r\n\t\t\t\titem.dataScope.forEach((items) => {\r\n\t\t\t\t\tif (items.value === 'SCOPE_ORG_DEFINE') {\r\n\t\t\t\t\t\tif (check) {\r\n\t\t\t\t\t\t\titems.scopeDefineOrgIdList = orgData\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\titems.scopeDefineOrgIdList = []\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\t// 打开抽屉\r\n\tconst onOpen = (record) => {\r\n\t\tgrantPermissionParam.id = record.id\r\n\t\tvisible.value = true\r\n\t\tloadData()\r\n\t}\r\n\t// 关闭抽屉\r\n\tconst onClose = () => {\r\n\t\t// 将这些缓存的给清空\r\n\t\tloadDatas.value = []\r\n\t\tvisible.value = false\r\n\t}\r\n\t// 全选\r\n\tconst onCheckAllChange = (value) => {\r\n\t\tspinningLoading.value = true\r\n\t\tloadDatas.value.forEach((data) => {\r\n\t\t\tchangeApi(data, value)\r\n\t\t\tspinningLoading.value = false\r\n\t\t})\r\n\t}\r\n\t// 选中接口\r\n\tconst changeApi = (record, val) => {\r\n\t\trecord.check = val\r\n\t\tif (val) {\r\n\t\t\tlet checkStatus = 0\r\n\t\t\tfor (let i = 0; i < record.dataScope.length; i++) {\r\n\t\t\t\tif (record.dataScope[i].check) {\r\n\t\t\t\t\tcheckStatus++\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (checkStatus === 0) {\r\n\t\t\t\trecord.dataScope[0].check = true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// 去掉已选中的\r\n\t\t\trecord.dataScope.forEach((item) => {\r\n\t\t\t\titem.check = false\r\n\t\t\t\tif (item.value === 'SCOPE_ORG_DEFINE') {\r\n\t\t\t\t\titem.scopeDefineOrgIdList = []\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\t// 设置选中状态\r\n\tconst changeChildCheckBox = (record, evt) => {\r\n\t\tlet checked = evt.target.checked\r\n\t\tif (!checked) {\r\n\t\t\trecord.check = false\r\n\t\t} else if (checked) {\r\n\t\t\trecord.check = checked\r\n\t\t}\r\n\t}\r\n\t// 提交数据模型\r\n\tlet grantPermissionParam = {\r\n\t\t// 角色id\r\n\t\tid: '',\r\n\t\t// 授权权限信息\r\n\t\tgrantInfoList: []\r\n\t}\r\n\t// 提交之前转换数据\r\n\tconst convertData = () => {\r\n\t\tgrantPermissionParam.grantInfoList = []\r\n\t\tloadDatas.value.forEach((table) => {\r\n\t\t\tif (table.check) {\r\n\t\t\t\ttable.dataScope.forEach((item) => {\r\n\t\t\t\t\tif (item.check) {\r\n\t\t\t\t\t\tconst dataScopeInfo = {\r\n\t\t\t\t\t\t\tapiUrl: subStrApi(table.api),\r\n\t\t\t\t\t\t\tscopeCategory: item.value,\r\n\t\t\t\t\t\t\tscopeDefineOrgIdList: item.scopeDefineOrgIdList === undefined ? [] : item.scopeDefineOrgIdList\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgrantPermissionParam.grantInfoList.push(dataScopeInfo)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn grantPermissionParam\r\n\t}\r\n\t// 截取api串中的中文及括号\r\n\tconst subStrApi = (api) => {\r\n\t\treturn api.substring(0, api.indexOf('['))\r\n\t}\r\n\t// 验证并提交数据\r\n\tconst onSubmit = () => {\r\n\t\tconst param = convertData()\r\n\t\tsubmitLoading.value = true\r\n\t\troleApi\r\n\t\t\t.roleGrantPermission(param)\r\n\t\t\t.then(() => {\r\n\t\t\t\tonClose()\r\n\t\t\t\temit('successful')\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsubmitLoading.value = false\r\n\t\t\t})\r\n\t}\r\n\t// 调用这个函数将子组件的一些数据和方法暴露出去\r\n\tdefineExpose({\r\n\t\tonOpen\r\n\t})\r\n</script>\r\n<style scoped>\r\n\t/* 重写复选框的样式 */\r\n\t.ant-checkbox-wrapper {\r\n\t\tmargin-left: 0px !important;\r\n\t\tpadding-top: 2px !important;\r\n\t\tpadding-bottom: 2px !important;\r\n\t}\r\n</style>\r\n"],"names":["record","_createBlock","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","_createElementBlock","_Fragment","_openBlock","_renderList"],"mappings":"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"}