index.tsx 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. import { useState } from 'react'
  2. import { useRequest } from '@umijs/max'
  3. import { RoleType } from '../RoleLeftMenu'
  4. import { Card, Checkbox, Button, message, Spin, Affix } from 'antd'
  5. import { queryRoleDetailByID, setRolePermission } from '@/services/permission'
  6. import { BackstagePermission } from '@/enums/access'
  7. import './index.less'
  8. type PermTabsProps = {
  9. currentPermData: {
  10. ID: string
  11. roleType: RoleType
  12. }
  13. }
  14. const backstagePermissionArray = Object.values(BackstagePermission)
  15. // 过滤权限枚举
  16. const filterPermission = (permission: string[]) => {
  17. if (!Array.isArray(permission)) return []
  18. return permission.filter(item => backstagePermissionArray?.includes(item))
  19. }
  20. const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID } }) => {
  21. const [permission, setPermission] = useState([])
  22. const { loading } = useRequest(() => queryRoleDetailByID({ ID }), {
  23. refreshDeps: [ID],
  24. onSuccess: ({ backstagePermission = [] } = {}) => {
  25. setPermission(filterPermission(backstagePermission))
  26. },
  27. onError: e => console.log(e)
  28. })
  29. const { run: trySetRolePermission, loading: submitStauts } = useRequest(
  30. (params: API.RolePermissionParams) => setRolePermission(params),
  31. {
  32. manual: true,
  33. onSuccess: () => {
  34. message.success('设置成功')
  35. }
  36. }
  37. )
  38. const handleBackOnchange = (checked: boolean, role: string) => {
  39. if (checked) {
  40. setPermission([...permission, role])
  41. } else {
  42. setPermission(permission.filter(item => item !== role))
  43. }
  44. }
  45. const handleSubmit = () => {
  46. const params = {
  47. ID,
  48. frontPermission: filterPermission(permission)
  49. }
  50. trySetRolePermission(params)
  51. }
  52. return (
  53. <>
  54. <div style={{ height: 'calc(100vh - 250px)' }} className="overflow-y-auto">
  55. <Spin spinning={loading}>
  56. <div className="shadow-md mb-4">
  57. <Card size="small" type="inner" title="业务主体设置">
  58. <div>
  59. <h4>业务主体</h4>
  60. <div className="my-2">
  61. <Checkbox
  62. onChange={e =>
  63. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_SUBJECT_MAINSTAY)
  64. }
  65. checked={permission.includes(BackstagePermission.VIEW_SUBJECT_MAINSTAY)}>
  66. 启用
  67. </Checkbox>
  68. </div>
  69. </div>
  70. </Card>
  71. </div>
  72. <div className="shadow-md mb-4">
  73. <Card size="small" type="inner" title="项目审批设置">
  74. <div>
  75. <h4>项目管理</h4>
  76. <div className="my-2">
  77. <Checkbox
  78. onChange={e =>
  79. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_PROJECT_MANAGEMENT)
  80. }
  81. checked={permission.includes(BackstagePermission.VIEW_PROJECT_MANAGEMENT)}>
  82. 查看项目
  83. </Checkbox>
  84. <Checkbox
  85. onChange={e => handleBackOnchange(e.target.checked, 'addBa1')}
  86. checked={permission.includes('updatePsw')}>
  87. 新建项目
  88. </Checkbox>
  89. <Checkbox
  90. onChange={e => handleBackOnchange(e.target.checked, 'editBa1')}
  91. checked={permission.includes('updatePsw')}>
  92. 编辑项目
  93. </Checkbox>
  94. <Checkbox
  95. onChange={e => handleBackOnchange(e.target.checked, 'bindBa1')}
  96. checked={permission.includes('updatePsw')}>
  97. 绑定角色
  98. </Checkbox>
  99. <Checkbox
  100. onChange={e => handleBackOnchange(e.target.checked, 'deployBa1')}
  101. checked={permission.includes('updatePsw')}>
  102. 流程配置
  103. </Checkbox>
  104. </div>
  105. </div>
  106. <div>
  107. <h4 className="pt-3">审批角色</h4>
  108. <div className="my-2">
  109. <Checkbox
  110. onChange={e =>
  111. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_APPROVAL_ROLE)
  112. }
  113. checked={permission.includes(BackstagePermission.VIEW_APPROVAL_ROLE)}>
  114. 查看角色
  115. </Checkbox>
  116. <Checkbox
  117. onChange={e =>
  118. handleBackOnchange(e.target.checked, BackstagePermission.ADD_APPROVAL_ROLE)
  119. }
  120. checked={permission.includes(BackstagePermission.ADD_APPROVAL_ROLE)}>
  121. 新建角色
  122. </Checkbox>
  123. <Checkbox
  124. onChange={e =>
  125. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_APPROVAL_ROLE)
  126. }
  127. checked={permission.includes(BackstagePermission.EDIT_APPROVAL_ROLE)}>
  128. 编辑角色
  129. </Checkbox>
  130. </div>
  131. </div>
  132. <div>
  133. <h4 className="pt-3">审批流程模板</h4>
  134. <div className="my-2">
  135. <Checkbox
  136. onChange={e =>
  137. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_AUDIT_TEMPLATE)
  138. }
  139. checked={permission.includes(BackstagePermission.VIEW_AUDIT_TEMPLATE)}>
  140. 查看流程
  141. </Checkbox>
  142. {/* <Checkbox
  143. onChange={e => handleBackOnchange(e.target.checked, 'addBa2')}
  144. checked={permission.includes('updatePsw')}>
  145. 新建流程
  146. </Checkbox>
  147. <Checkbox
  148. onChange={e => handleBackOnchange(e.target.checked, 'editBa2')}
  149. checked={permission.includes('updatePsw')}>
  150. 编辑流程
  151. </Checkbox> */}
  152. </div>
  153. </div>
  154. </Card>
  155. </div>
  156. <div className="shadow-md mb-4">
  157. <Card size="small" type="inner" title="企事业单位">
  158. <div>
  159. <h4>单位管理</h4>
  160. <div className="my-2">
  161. <Checkbox
  162. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION)}
  163. checked={permission.includes(BackstagePermission.VIEW_INSTITUTION)}>
  164. 查看单位
  165. </Checkbox>
  166. <Checkbox
  167. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.ADD_INSTITUTION)}
  168. checked={permission.includes(BackstagePermission.ADD_INSTITUTION)}>
  169. 新建单位
  170. </Checkbox>
  171. <Checkbox
  172. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_INSTITUTION)}
  173. checked={permission.includes(BackstagePermission.EDIT_INSTITUTION)}>
  174. 编辑单位
  175. </Checkbox>
  176. <Checkbox
  177. onChange={e =>
  178. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_STAFF_WITH_IN)
  179. }
  180. checked={permission.includes(BackstagePermission.VIEW_STAFF_WITH_IN)}>
  181. 人员管理
  182. </Checkbox>
  183. <Checkbox
  184. onChange={e =>
  185. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_ORGANIZATION)
  186. }
  187. checked={permission.includes(BackstagePermission.VIEW_ORGANIZATION)}>
  188. 组织管理
  189. </Checkbox>
  190. <Checkbox
  191. onChange={e =>
  192. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION_SETTING)
  193. }
  194. checked={permission.includes(BackstagePermission.VIEW_INSTITUTION_SETTING)}>
  195. 单位设置
  196. </Checkbox>
  197. </div>
  198. </div>
  199. <div>
  200. <h4 className="pt-3">人员管理</h4>
  201. <div className="my-2">
  202. <Checkbox
  203. onChange={e =>
  204. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION_STAFF)
  205. }
  206. checked={permission.includes(BackstagePermission.VIEW_STAFF_WITH_OUT)}>
  207. 查看人员
  208. </Checkbox>
  209. <Checkbox
  210. onChange={e =>
  211. handleBackOnchange(e.target.checked, BackstagePermission.ADD_INSTITUTION_STAFF)
  212. }
  213. checked={permission.includes(BackstagePermission.ADD_INSTITUTION_STAFF)}>
  214. 新增人员
  215. </Checkbox>
  216. <Checkbox
  217. onChange={e =>
  218. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_INSTITUTION_STAFF)
  219. }
  220. checked={permission.includes(BackstagePermission.EDIT_INSTITUTION_STAFF)}>
  221. 编辑人员
  222. </Checkbox>
  223. </div>
  224. </div>
  225. <div>
  226. <h4 className="pt-3">限制登录</h4>
  227. <div className="my-2">
  228. <Checkbox
  229. onChange={e =>
  230. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_ILLEGAL_USER)
  231. }
  232. checked={permission.includes(BackstagePermission.VIEW_ILLEGAL_USER)}>
  233. 查看人员
  234. </Checkbox>
  235. <Checkbox
  236. onChange={e =>
  237. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_ILLEGAL_USER)
  238. }
  239. checked={permission.includes(BackstagePermission.EDIT_ILLEGAL_USER)}>
  240. 编辑人员
  241. </Checkbox>
  242. </div>
  243. </div>
  244. </Card>
  245. </div>
  246. <div className="shadow-md mb-4">
  247. <Card size="small" type="inner" title="业务审批设置">
  248. <div>
  249. <h4 className="pt-3">业务编号配置</h4>
  250. <div className="my-2">
  251. <Checkbox
  252. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_RULE_CODE)}
  253. checked={permission.includes(BackstagePermission.VIEW_RULE_CODE)}>
  254. 查看编号规则
  255. </Checkbox>
  256. </div>
  257. </div>
  258. {/* <div>
  259. <h4>业务管理</h4>
  260. <div className="my-2">
  261. <Checkbox
  262. onChange={e => handleBackOnchange(e.target.checked, 'viewBusiness')}
  263. checked={permission.includes('viewBusiness')}>
  264. 查看信息
  265. </Checkbox>
  266. </div>
  267. </div> */}
  268. <div>
  269. <h4 className="pt-3">流程用户配置</h4>
  270. <div className="my-2">
  271. <Checkbox
  272. onChange={e =>
  273. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_PROCESS_USER)
  274. }
  275. checked={permission.includes(BackstagePermission.VIEW_PROCESS_USER)}>
  276. 查看流程用户
  277. </Checkbox>
  278. </div>
  279. </div>
  280. <div>
  281. <h4 className="pt-3">资料清单配置</h4>
  282. <div className="my-2">
  283. <Checkbox
  284. onChange={e =>
  285. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INVENTORY_TEMPLATE)
  286. }
  287. checked={permission.includes(BackstagePermission.VIEW_INVENTORY_TEMPLATE)}>
  288. 查看资料清单模板
  289. </Checkbox>
  290. </div>
  291. </div>
  292. </Card>
  293. </div>
  294. <div className="shadow-md mb-4">
  295. <Card size="small" type="inner" title="表单设置">
  296. <div>
  297. <h4>基础数据设置</h4>
  298. <div className="my-2">
  299. <Checkbox
  300. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BASE_SCHEMA)}
  301. checked={permission.includes(BackstagePermission.VIEW_BASE_SCHEMA)}>
  302. 查看信息
  303. </Checkbox>
  304. <Checkbox
  305. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_BASE_SCHEMA)}
  306. checked={permission.includes(BackstagePermission.EDIT_BASE_SCHEMA)}>
  307. 编辑信息
  308. </Checkbox>
  309. </div>
  310. </div>
  311. <div>
  312. <h4 className="pt-3">数据源设置</h4>
  313. <div className="my-2">
  314. <Checkbox
  315. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_DS_LIST)}
  316. checked={permission.includes(BackstagePermission.VIEW_DS_LIST)}>
  317. 查看信息
  318. </Checkbox>
  319. <Checkbox
  320. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_DS_LIST)}
  321. checked={permission.includes(BackstagePermission.EDIT_DS_LIST)}>
  322. 编辑信息
  323. </Checkbox>
  324. </div>
  325. </div>
  326. <div>
  327. <h4 className="pt-3">预算业务表单设置</h4>
  328. <div className="my-2">
  329. <Checkbox
  330. onChange={e =>
  331. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BUDGET_SCHEMA)
  332. }
  333. checked={permission.includes(BackstagePermission.VIEW_BUDGET_SCHEMA)}>
  334. 查看信息
  335. </Checkbox>
  336. <Checkbox
  337. onChange={e =>
  338. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_BUDGET_SCHEMA)
  339. }
  340. checked={permission.includes(BackstagePermission.EDIT_BUDGET_SCHEMA)}>
  341. 编辑信息
  342. </Checkbox>
  343. </div>
  344. </div>
  345. </Card>
  346. </div>
  347. <div className="shadow-md mb-4">
  348. <Card size="small" type="inner" title="权限设置">
  349. <div>
  350. <h4>前台功能角色设置</h4>
  351. <div className="my-2">
  352. <Checkbox
  353. onChange={e =>
  354. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_PERMISSION_ROLE)
  355. }
  356. checked={permission.includes(BackstagePermission.VIEW_PERMISSION_ROLE)}>
  357. 查看信息
  358. </Checkbox>
  359. </div>
  360. </div>
  361. <div>
  362. <h4>后台功能角色设置</h4>
  363. <div className="my-2">
  364. <Checkbox
  365. onChange={e =>
  366. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BACK_PERMISSION_ROLE)
  367. }
  368. checked={permission.includes(BackstagePermission.VIEW_BACK_PERMISSION_ROLE)}>
  369. 查看信息
  370. </Checkbox>
  371. </div>
  372. </div>
  373. </Card>
  374. </div>
  375. <div className="shadow-md mb-4">
  376. <Card size="small" type="inner" title="系统管理">
  377. <div>
  378. <h4>管理员设置</h4>
  379. <div className="my-2">
  380. <Checkbox
  381. onChange={e =>
  382. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_SYSTEM_ADMIN_SETTING)
  383. }
  384. checked={permission.includes(BackstagePermission.VIEW_SYSTEM_ADMIN_SETTING)}>
  385. 查看信息
  386. </Checkbox>
  387. {/* <Checkbox
  388. onChange={e => handleBackOnchange(e.target.checked, 'editBa9')}
  389. checked={permission.includes('updatePsw')}
  390. >
  391. 编辑信息
  392. </Checkbox> */}
  393. </div>
  394. </div>
  395. </Card>
  396. </div>
  397. </Spin>
  398. </div>
  399. <Affix offsetBottom={10}>
  400. <Button type="primary" onClick={handleSubmit} loading={submitStauts}>
  401. 提交
  402. </Button>
  403. </Affix>
  404. </>
  405. )
  406. }
  407. export default PermTabs