index.tsx 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. import { Card, Tabs, Checkbox, Affix, Button } from 'antd'
  2. import React, { useState } from 'react'
  3. import './index.less'
  4. import { setRolePermission } from '@/services/permission'
  5. import { useRequest } from 'umi'
  6. const { TabPane } = Tabs
  7. const SetPermission = ({ ID, roleType = 'system' }) => {
  8. const [state, setState] = useState({
  9. frontPermission: [], // 前台权限
  10. backstagePermission: [] // 后台权限
  11. })
  12. const { run: trySetRolePermission } = useRequest(
  13. (params: API.SetRolePermissionParams) => setRolePermission(params),
  14. {
  15. manual: true,
  16. onSuccess: () => {
  17. message.success('设置成功')
  18. }
  19. }
  20. )
  21. const handleFrontOnchange = (checked: boolean, perm: string) => {
  22. if (checked) {
  23. setState({ ...state, frontPermission: [...state.frontPermission, perm] })
  24. } else {
  25. setState({ ...state, frontPermission: state.frontPermission.filter(item => item !== perm) })
  26. }
  27. }
  28. const handleBackOnchange = (checked: boolean, perm: string) => {
  29. if (checked) {
  30. setState({ ...state, backstagePermission: [...state.backstagePermission, perm] })
  31. } else {
  32. setState({
  33. ...state,
  34. backstagePermission: state.backstagePermission.filter(item => item !== perm)
  35. })
  36. }
  37. }
  38. const handleSubmit = () => {
  39. trySetRolePermission({
  40. ID,
  41. frontPermission: state.frontPermission,
  42. backstagePermission: state.backstagePermission
  43. })
  44. }
  45. return (
  46. <div>
  47. <Tabs type="card">
  48. <TabPane tab="前台" key="3" className="tab-height overflow-y-auto">
  49. <div className="shadow-md mb-4">
  50. <Card size="small" type="inner" title="待办列表">
  51. <div>
  52. {/* <h4>我的项目</h4> */}
  53. <div className="my-2">
  54. <Checkbox
  55. onChange={e => handleFrontOnchange(e.target.checked, 'todo')}
  56. checked={state.frontPermission.includes('todo')}
  57. disabled={roleType !== 'system' ? false : true}>
  58. 已办待办
  59. </Checkbox>
  60. </div>
  61. </div>
  62. </Card>
  63. </div>
  64. <div className="shadow-md mb-4">
  65. <Card size="small" type="inner" title="项目列表">
  66. <div>
  67. <h4>我的项目</h4>
  68. <div className="my-2">
  69. <Checkbox
  70. onChange={e => handleFrontOnchange(e.target.checked, 'access')}
  71. checked={state.frontPermission.includes('access')}
  72. disabled={roleType !== 'system' ? false : true}>
  73. 查看项目
  74. </Checkbox>
  75. <Checkbox
  76. onChange={e => handleFrontOnchange(e.target.checked, 'add')}
  77. checked={state.frontPermission.includes('add')}
  78. disabled={roleType !== 'system' ? false : true}>
  79. 新建项目
  80. </Checkbox>
  81. <Checkbox
  82. onChange={e => handleFrontOnchange(e.target.checked, 'report')}
  83. checked={state.frontPermission.includes('report')}
  84. disabled={roleType !== 'system' ? false : true}>
  85. 项目上报
  86. </Checkbox>
  87. </div>
  88. </div>
  89. <div>
  90. <h4 className="pt-3">我参与的项目</h4>
  91. <div className="my-2">
  92. <Checkbox
  93. onChange={e => handleFrontOnchange(e.target.checked, 'access1')}
  94. checked={state.frontPermission.includes('access1')}
  95. disabled={roleType !== 'system' ? false : true}>
  96. 查看项目
  97. </Checkbox>
  98. </div>
  99. </div>
  100. <div>
  101. <h4 className="pt-3">全部项目</h4>
  102. <div className="my-2">
  103. <Checkbox
  104. onChange={e => handleFrontOnchange(e.target.checked, 'viewAllProjects')}
  105. checked={state.frontPermission.includes('viewAllProjects')}
  106. disabled={roleType !== 'system' ? false : true}>
  107. 查看项目
  108. </Checkbox>
  109. </div>
  110. </div>
  111. <div>
  112. <h4 className="pt-3">指标库</h4>
  113. <div className="my-2">
  114. <Checkbox
  115. onChange={e => handleFrontOnchange(e.target.checked, 'section')}
  116. checked={state.frontPermission.includes('section')}
  117. disabled={roleType !== 'system' ? false : true}>
  118. 区间对数
  119. </Checkbox>
  120. </div>
  121. </div>
  122. </Card>
  123. </div>
  124. <div className="shadow-md mb-4">
  125. <Card size="small" type="inner" title="个人设置">
  126. <div>
  127. <h4>基本设置</h4>
  128. <div className="my-2">
  129. <Checkbox
  130. onChange={e => handleFrontOnchange(e.target.checked, 'edit')}
  131. checked={state.frontPermission.includes('edit')}
  132. disabled={roleType !== 'system' ? false : true}>
  133. 编辑
  134. </Checkbox>
  135. </div>
  136. </div>
  137. <div>
  138. <h4 className="pt-3">企事业信息</h4>
  139. <div className="my-2">
  140. <Checkbox
  141. onChange={e => handleFrontOnchange(e.target.checked, 'access2')}
  142. checked={state.frontPermission.includes('access2')}
  143. disabled={roleType !== 'system' ? false : true}>
  144. 查看
  145. </Checkbox>
  146. </div>
  147. </div>
  148. <div>
  149. <h4 className="pt-3">安全设置</h4>
  150. <div className="my-2">
  151. <Checkbox
  152. onChange={e => handleFrontOnchange(e.target.checked, 'phone')}
  153. checked={state.frontPermission.includes('phone')}
  154. disabled={roleType !== 'system' ? false : true}>
  155. 手机绑定
  156. </Checkbox>
  157. <Checkbox
  158. onChange={e => handleFrontOnchange(e.target.checked, 'password')}
  159. checked={state.frontPermission.includes('password')}
  160. disabled={roleType !== 'system' ? false : true}>
  161. 密码修改
  162. </Checkbox>
  163. </div>
  164. </div>
  165. </Card>
  166. </div>
  167. </TabPane>
  168. <TabPane tab="后台" key="4" className="tab-height overflow-y-auto">
  169. <div className="shadow-md mb-4">
  170. <Card size="small" type="inner" title="项目">
  171. <div>
  172. <h4>项目管理</h4>
  173. <div className="my-2">
  174. <Checkbox
  175. onChange={e => handleBackOnchange(e.target.checked, 'accessBa1')}
  176. checked={state.frontPermission.includes('accessBa1')}
  177. disabled={true}>
  178. 查看项目
  179. </Checkbox>
  180. <Checkbox
  181. onChange={e => handleBackOnchange(e.target.checked, 'addBa1')}
  182. checked={state.frontPermission.includes('addBa1')}
  183. disabled={true}>
  184. 新建项目
  185. </Checkbox>
  186. <Checkbox
  187. onChange={e => handleBackOnchange(e.target.checked, 'editBa1')}
  188. checked={state.frontPermission.includes('editBa1')}
  189. disabled={true}>
  190. 编辑项目
  191. </Checkbox>
  192. <Checkbox
  193. onChange={e => handleBackOnchange(e.target.checked, 'bindBa1')}
  194. checked={state.frontPermission.includes('bindBa1')}
  195. disabled={true}>
  196. 绑定角色
  197. </Checkbox>
  198. <Checkbox
  199. onChange={e => handleBackOnchange(e.target.checked, 'deployBa1')}
  200. checked={state.frontPermission.includes('deployBa1')}
  201. disabled={true}>
  202. 流程配置
  203. </Checkbox>
  204. </div>
  205. </div>
  206. <div>
  207. <h4 className="pt-3">审批流程模板</h4>
  208. <div className="my-2">
  209. <Checkbox
  210. onChange={e => handleBackOnchange(e.target.checked, 'accessBa2')}
  211. checked={state.frontPermission.includes('accessBa2')}
  212. disabled={true}>
  213. 查看流程
  214. </Checkbox>
  215. <Checkbox
  216. onChange={e => handleBackOnchange(e.target.checked, 'addBa2')}
  217. checked={state.frontPermission.includes('addBa2')}
  218. disabled={true}>
  219. 新建流程
  220. </Checkbox>
  221. <Checkbox
  222. onChange={e => handleBackOnchange(e.target.checked, 'editBa2')}
  223. checked={state.frontPermission.includes('editBa2')}
  224. disabled={true}>
  225. 编辑流程
  226. </Checkbox>
  227. </div>
  228. </div>
  229. <div>
  230. <h4 className="pt-3">项目创建人</h4>
  231. <div className="my-2">
  232. <Checkbox
  233. onChange={e => handleBackOnchange(e.target.checked, 'accessBa3')}
  234. checked={state.frontPermission.includes('accessBa3')}
  235. disabled={true}>
  236. 查看创建人
  237. </Checkbox>
  238. <Checkbox
  239. onChange={e => handleBackOnchange(e.target.checked, 'addBa3')}
  240. checked={state.frontPermission.includes('addBa3')}
  241. disabled={true}>
  242. 新建创建人
  243. </Checkbox>
  244. <Checkbox
  245. onChange={e => handleBackOnchange(e.target.checked, 'deleteBa3')}
  246. checked={state.frontPermission.includes('deleteBa3')}
  247. disabled={true}>
  248. 删除创建人
  249. </Checkbox>
  250. </div>
  251. </div>
  252. </Card>
  253. </div>
  254. <div className="shadow-md mb-4">
  255. <Card size="small" type="inner" title="企事业单位">
  256. <div>
  257. <h4>单位管理</h4>
  258. <div className="my-2">
  259. <Checkbox
  260. onChange={e => handleBackOnchange(e.target.checked, 'accessBa4')}
  261. checked={state.frontPermission.includes('accessBa4')}
  262. disabled={true}>
  263. 查看单位
  264. </Checkbox>
  265. <Checkbox
  266. onChange={e => handleBackOnchange(e.target.checked, 'addBa4')}
  267. checked={state.frontPermission.includes('addBa4')}
  268. disabled={true}>
  269. 新建单位
  270. </Checkbox>
  271. <Checkbox
  272. onChange={e => handleBackOnchange(e.target.checked, 'staff')}
  273. checked={state.frontPermission.includes('staff')}
  274. disabled={true}>
  275. 人员管理
  276. </Checkbox>
  277. <Checkbox
  278. onChange={e => handleBackOnchange(e.target.checked, 'organizational')}
  279. checked={state.frontPermission.includes('organizational')}
  280. disabled={true}>
  281. 组织管理
  282. </Checkbox>
  283. <Checkbox
  284. onChange={e => handleBackOnchange(e.target.checked, 'deploy')}
  285. checked={state.frontPermission.includes('deploy')}
  286. disabled={true}>
  287. 单位设置
  288. </Checkbox>
  289. </div>
  290. </div>
  291. <div>
  292. <h4 className="pt-3">人员管理</h4>
  293. <div className="my-2">
  294. <Checkbox
  295. onChange={e => handleBackOnchange(e.target.checked, 'accessBa5')}
  296. checked={state.frontPermission.includes('accessBa5')}
  297. disabled={true}>
  298. 查看人员
  299. </Checkbox>
  300. <Checkbox
  301. onChange={e => handleBackOnchange(e.target.checked, 'editBa5')}
  302. checked={state.frontPermission.includes('editBa5')}
  303. disabled={true}>
  304. 编辑人员
  305. </Checkbox>
  306. </div>
  307. </div>
  308. </Card>
  309. </div>
  310. <div className="shadow-md mb-4">
  311. <Card size="small" type="inner" title="业务设置">
  312. <div>
  313. <h4>项目信息</h4>
  314. <div className="my-2">
  315. <Checkbox
  316. onChange={e => handleBackOnchange(e.target.checked, 'accessBa6')}
  317. checked={state.frontPermission.includes('accessBa6')}
  318. disabled={true}>
  319. 查看信息
  320. </Checkbox>
  321. <Checkbox
  322. onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
  323. checked={state.frontPermission.includes('editBa6')}
  324. disabled={true}>
  325. 编辑信息
  326. </Checkbox>
  327. </div>
  328. </div>
  329. <div>
  330. <h4 className="pt-3">企事业单位信息</h4>
  331. <div className="my-2">
  332. <Checkbox
  333. onChange={e => handleBackOnchange(e.target.checked, 'accessBa7')}
  334. checked={state.frontPermission.includes('accessBa7')}
  335. disabled={true}>
  336. 查看信息
  337. </Checkbox>
  338. <Checkbox
  339. onChange={e => handleBackOnchange(e.target.checked, 'editBa7')}
  340. checked={state.frontPermission.includes('editBa7')}
  341. disabled={true}>
  342. 编辑信息
  343. </Checkbox>
  344. </div>
  345. </div>
  346. <div>
  347. <h4 className="pt-3">人员信息</h4>
  348. <div className="my-2">
  349. <Checkbox
  350. onChange={e => handleBackOnchange(e.target.checked, 'accessBa8')}
  351. checked={state.frontPermission.includes('accessBa8')}
  352. disabled={true}>
  353. 查看信息
  354. </Checkbox>
  355. <Checkbox
  356. onChange={e => handleBackOnchange(e.target.checked, 'editBa8')}
  357. checked={state.frontPermission.includes('editBa8')}
  358. disabled={true}>
  359. 编辑信息
  360. </Checkbox>
  361. </div>
  362. </div>
  363. </Card>
  364. </div>
  365. <div className="shadow-md mb-4">
  366. <Card size="small" type="inner" title="系统管理">
  367. <div>
  368. <h4>管理员设置</h4>
  369. <div className="my-2">
  370. <Checkbox
  371. onChange={e => handleBackOnchange(e.target.checked, 'accessBa9')}
  372. checked={state.frontPermission.includes('accessBa9')}
  373. disabled={true}>
  374. 查看信息
  375. </Checkbox>
  376. <Checkbox
  377. onChange={e => handleBackOnchange(e.target.checked, 'editBa9')}
  378. checked={state.frontPermission.includes('editBa9')}
  379. disabled={true}>
  380. 编辑信息
  381. </Checkbox>
  382. </div>
  383. </div>
  384. </Card>
  385. </div>
  386. </TabPane>
  387. </Tabs>
  388. <Affix offsetBottom={10}>
  389. <Button type="primary" onClick={handleSubmit}>
  390. 提交
  391. </Button>
  392. </Affix>
  393. </div>
  394. )
  395. }
  396. export default SetPermission