index.tsx 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  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_PROJECT_MANAGEMENT)
  64. }
  65. checked={permission.includes(BackstagePermission.VIEW_PROJECT_MANAGEMENT)}>
  66. 查看项目
  67. </Checkbox>
  68. <Checkbox
  69. onChange={e => handleBackOnchange(e.target.checked, 'addBa1')}
  70. checked={permission.includes('updatePsw')}>
  71. 新建项目
  72. </Checkbox>
  73. <Checkbox
  74. onChange={e => handleBackOnchange(e.target.checked, 'editBa1')}
  75. checked={permission.includes('updatePsw')}>
  76. 编辑项目
  77. </Checkbox>
  78. <Checkbox
  79. onChange={e => handleBackOnchange(e.target.checked, 'bindBa1')}
  80. checked={permission.includes('updatePsw')}>
  81. 绑定角色
  82. </Checkbox>
  83. <Checkbox
  84. onChange={e => handleBackOnchange(e.target.checked, 'deployBa1')}
  85. checked={permission.includes('updatePsw')}>
  86. 流程配置
  87. </Checkbox>
  88. </div>
  89. </div>
  90. <div>
  91. <h4 className="pt-3">审批角色</h4>
  92. <div className="my-2">
  93. <Checkbox
  94. onChange={e =>
  95. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_APPROVAL_ROLE)
  96. }
  97. checked={permission.includes(BackstagePermission.VIEW_APPROVAL_ROLE)}>
  98. 查看角色
  99. </Checkbox>
  100. <Checkbox
  101. onChange={e =>
  102. handleBackOnchange(e.target.checked, BackstagePermission.ADD_APPROVAL_ROLE)
  103. }
  104. checked={permission.includes(BackstagePermission.ADD_APPROVAL_ROLE)}>
  105. 新建角色
  106. </Checkbox>
  107. <Checkbox
  108. onChange={e =>
  109. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_APPROVAL_ROLE)
  110. }
  111. checked={permission.includes(BackstagePermission.EDIT_APPROVAL_ROLE)}>
  112. 编辑角色
  113. </Checkbox>
  114. </div>
  115. </div>
  116. <div>
  117. <h4 className="pt-3">审批流程模板</h4>
  118. <div className="my-2">
  119. <Checkbox
  120. onChange={e =>
  121. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_AUDIT_TEMPLATE)
  122. }
  123. checked={permission.includes(BackstagePermission.VIEW_AUDIT_TEMPLATE)}>
  124. 查看流程
  125. </Checkbox>
  126. {/* <Checkbox
  127. onChange={e => handleBackOnchange(e.target.checked, 'addBa2')}
  128. checked={permission.includes('updatePsw')}>
  129. 新建流程
  130. </Checkbox>
  131. <Checkbox
  132. onChange={e => handleBackOnchange(e.target.checked, 'editBa2')}
  133. checked={permission.includes('updatePsw')}>
  134. 编辑流程
  135. </Checkbox> */}
  136. </div>
  137. </div>
  138. </Card>
  139. </div>
  140. <div className="shadow-md mb-4">
  141. <Card size="small" type="inner" title="企事业单位">
  142. <div>
  143. <h4>单位管理</h4>
  144. <div className="my-2">
  145. <Checkbox
  146. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION)}
  147. checked={permission.includes(BackstagePermission.VIEW_INSTITUTION)}>
  148. 查看单位
  149. </Checkbox>
  150. <Checkbox
  151. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.ADD_INSTITUTION)}
  152. checked={permission.includes(BackstagePermission.ADD_INSTITUTION)}>
  153. 新建单位
  154. </Checkbox>
  155. <Checkbox
  156. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_INSTITUTION)}
  157. checked={permission.includes(BackstagePermission.EDIT_INSTITUTION)}>
  158. 编辑单位
  159. </Checkbox>
  160. <Checkbox
  161. onChange={e =>
  162. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_STAFF_WITH_IN)
  163. }
  164. checked={permission.includes(BackstagePermission.VIEW_STAFF_WITH_IN)}>
  165. 人员管理
  166. </Checkbox>
  167. <Checkbox
  168. onChange={e =>
  169. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_ORGANIZATION)
  170. }
  171. checked={permission.includes(BackstagePermission.VIEW_ORGANIZATION)}>
  172. 组织管理
  173. </Checkbox>
  174. <Checkbox
  175. onChange={e =>
  176. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION_SETTING)
  177. }
  178. checked={permission.includes(BackstagePermission.VIEW_INSTITUTION_SETTING)}>
  179. 单位设置
  180. </Checkbox>
  181. </div>
  182. </div>
  183. <div>
  184. <h4 className="pt-3">人员管理</h4>
  185. <div className="my-2">
  186. <Checkbox
  187. onChange={e =>
  188. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INSTITUTION_STAFF)
  189. }
  190. checked={permission.includes(BackstagePermission.VIEW_STAFF_WITH_OUT)}>
  191. 查看人员
  192. </Checkbox>
  193. <Checkbox
  194. onChange={e =>
  195. handleBackOnchange(e.target.checked, BackstagePermission.ADD_INSTITUTION_STAFF)
  196. }
  197. checked={permission.includes(BackstagePermission.ADD_INSTITUTION_STAFF)}>
  198. 新增人员
  199. </Checkbox>
  200. <Checkbox
  201. onChange={e =>
  202. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_INSTITUTION_STAFF)
  203. }
  204. checked={permission.includes(BackstagePermission.EDIT_INSTITUTION_STAFF)}>
  205. 编辑人员
  206. </Checkbox>
  207. </div>
  208. </div>
  209. <div>
  210. <h4 className="pt-3">限制登录</h4>
  211. <div className="my-2">
  212. <Checkbox
  213. onChange={e =>
  214. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_ILLEGAL_USER)
  215. }
  216. checked={permission.includes(BackstagePermission.VIEW_ILLEGAL_USER)}>
  217. 查看人员
  218. </Checkbox>
  219. <Checkbox
  220. onChange={e =>
  221. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_ILLEGAL_USER)
  222. }
  223. checked={permission.includes(BackstagePermission.EDIT_ILLEGAL_USER)}>
  224. 编辑人员
  225. </Checkbox>
  226. </div>
  227. </div>
  228. </Card>
  229. </div>
  230. <div className="shadow-md mb-4">
  231. <Card size="small" type="inner" title="业务审批设置">
  232. <div>
  233. <h4 className="pt-3">业务编号配置</h4>
  234. <div className="my-2">
  235. <Checkbox
  236. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_RULE_CODE)}
  237. checked={permission.includes(BackstagePermission.VIEW_RULE_CODE)}>
  238. 查看编号规则
  239. </Checkbox>
  240. </div>
  241. </div>
  242. {/* <div>
  243. <h4>业务管理</h4>
  244. <div className="my-2">
  245. <Checkbox
  246. onChange={e => handleBackOnchange(e.target.checked, 'viewBusiness')}
  247. checked={permission.includes('viewBusiness')}>
  248. 查看信息
  249. </Checkbox>
  250. </div>
  251. </div> */}
  252. <div>
  253. <h4 className="pt-3">流程用户配置</h4>
  254. <div className="my-2">
  255. <Checkbox
  256. onChange={e =>
  257. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_PROCESS_USER)
  258. }
  259. checked={permission.includes(BackstagePermission.VIEW_PROCESS_USER)}>
  260. 查看流程用户
  261. </Checkbox>
  262. </div>
  263. </div>
  264. <div>
  265. <h4 className="pt-3">资料清单配置</h4>
  266. <div className="my-2">
  267. <Checkbox
  268. onChange={e =>
  269. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_INVENTORY_TEMPLATE)
  270. }
  271. checked={permission.includes(BackstagePermission.VIEW_INVENTORY_TEMPLATE)}>
  272. 查看资料清单模板
  273. </Checkbox>
  274. </div>
  275. </div>
  276. </Card>
  277. </div>
  278. <div className="shadow-md mb-4">
  279. <Card size="small" type="inner" title="表单设置">
  280. <div>
  281. <h4>基础数据设置</h4>
  282. <div className="my-2">
  283. <Checkbox
  284. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BASE_SCHEMA)}
  285. checked={permission.includes(BackstagePermission.VIEW_BASE_SCHEMA)}>
  286. 查看信息
  287. </Checkbox>
  288. <Checkbox
  289. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_BASE_SCHEMA)}
  290. checked={permission.includes(BackstagePermission.EDIT_BASE_SCHEMA)}>
  291. 编辑信息
  292. </Checkbox>
  293. </div>
  294. </div>
  295. <div>
  296. <h4 className="pt-3">数据源设置</h4>
  297. <div className="my-2">
  298. <Checkbox
  299. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.VIEW_DS_LIST)}
  300. checked={permission.includes(BackstagePermission.VIEW_DS_LIST)}>
  301. 查看信息
  302. </Checkbox>
  303. <Checkbox
  304. onChange={e => handleBackOnchange(e.target.checked, BackstagePermission.EDIT_DS_LIST)}
  305. checked={permission.includes(BackstagePermission.EDIT_DS_LIST)}>
  306. 编辑信息
  307. </Checkbox>
  308. </div>
  309. </div>
  310. <div>
  311. <h4 className="pt-3">预算业务表单设置</h4>
  312. <div className="my-2">
  313. <Checkbox
  314. onChange={e =>
  315. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BUDGET_SCHEMA)
  316. }
  317. checked={permission.includes(BackstagePermission.VIEW_BUDGET_SCHEMA)}>
  318. 查看信息
  319. </Checkbox>
  320. <Checkbox
  321. onChange={e =>
  322. handleBackOnchange(e.target.checked, BackstagePermission.EDIT_BUDGET_SCHEMA)
  323. }
  324. checked={permission.includes(BackstagePermission.EDIT_BUDGET_SCHEMA)}>
  325. 编辑信息
  326. </Checkbox>
  327. </div>
  328. </div>
  329. </Card>
  330. </div>
  331. <div className="shadow-md mb-4">
  332. <Card size="small" type="inner" title="权限设置">
  333. <div>
  334. <h4>前台功能角色设置</h4>
  335. <div className="my-2">
  336. <Checkbox
  337. onChange={e =>
  338. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_PERMISSION_ROLE)
  339. }
  340. checked={permission.includes(BackstagePermission.VIEW_PERMISSION_ROLE)}>
  341. 查看信息
  342. </Checkbox>
  343. </div>
  344. </div>
  345. <div>
  346. <h4>后台功能角色设置</h4>
  347. <div className="my-2">
  348. <Checkbox
  349. onChange={e =>
  350. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_BACK_PERMISSION_ROLE)
  351. }
  352. checked={permission.includes(BackstagePermission.VIEW_BACK_PERMISSION_ROLE)}>
  353. 查看信息
  354. </Checkbox>
  355. </div>
  356. </div>
  357. </Card>
  358. </div>
  359. <div className="shadow-md mb-4">
  360. <Card size="small" type="inner" title="系统管理">
  361. <div>
  362. <h4>管理员设置</h4>
  363. <div className="my-2">
  364. <Checkbox
  365. onChange={e =>
  366. handleBackOnchange(e.target.checked, BackstagePermission.VIEW_SYSTEM_ADMIN_SETTING)
  367. }
  368. checked={permission.includes(BackstagePermission.VIEW_SYSTEM_ADMIN_SETTING)}>
  369. 查看信息
  370. </Checkbox>
  371. {/* <Checkbox
  372. onChange={e => handleBackOnchange(e.target.checked, 'editBa9')}
  373. checked={permission.includes('updatePsw')}
  374. >
  375. 编辑信息
  376. </Checkbox> */}
  377. </div>
  378. </div>
  379. </Card>
  380. </div>
  381. </Spin>
  382. </div>
  383. <Affix offsetBottom={10}>
  384. <Button type="primary" onClick={handleSubmit} loading={submitStauts}>
  385. 提交
  386. </Button>
  387. </Affix>
  388. </>
  389. )
  390. }
  391. export default PermTabs