123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- import React, { useState, useEffect } from 'react';
- import { Checkbox, Input, Card, Form, Button,Row,Col } from 'antd';
- import { connect } from 'dva';
- import XForm, { FieldTypes } from '../../../components/XForm';
- import request from '../../../utils/request';
- import channels from './channelList.less';
- import { resolve, join } from 'path';
- import router from 'umi/router';
- import apis from '../../../services/apis';
-
- const { TextArea } = Input;
-
-
- /**
- *
- *
- * @param {*} props
- * @returns
- */
- const Poster = props => {
- const userMenus = props.user.currentUser.menus;
- const userBtns = props.user.currentUser.buttons;
-
- // 获取当前所有菜单
- const [data, setData] = useState({ data: [] })
- const [buutonDate, setBuutonDate] = useState({})
-
- // 展示要显示的菜单和按钮----(编辑)
- const [dataMenuId, setDataMenuId] = useState([])
- const [dataButtonId, setDataButtonId] = useState([])
-
- useEffect(() => {
- // 新增和编辑用一个页面
- if (props.location.query) {
- const { id } = props.location.query
- if (id) {
- buttonAndMenuList('', id)
- }
- }
- // menuList({ pageNum: 1, pageSize: 100 })
- buttonList({ pageNum: 1, pageSize: 100 })
- }, [])
- // 当前所有的菜单
- // function menuList(params) {
- // request({
- // url: '/api/admin/menuList',
- // method: 'GET',
- // params: { ...params },
- // // eslint-disable-next-line no-shadow
- // }).then(data => {
- // setData(data)
- // })
- // }
- function menuList(params) {
- request({ ...apis.role.menuList, params: { ...params } }).then((data) => {
- setData(data)
- }).catch((err) => {
- console.log(err)
- message.info(err.msg || err.message)
- })
- }
-
- // 所有按钮
- // function buttonList(params) {
- // request({
- // url: '/api/admin/buttonList',
- // method: 'GET',
- // params: { ...params },
- // // eslint-disable-next-line no-shadow
- // }).then(data => {
- // console.log(data)
- // setBuutonDate(data)
- // })
- // }
-
- function buttonList(params) {
- request({ ...apis.role.buttonList, params: { ...params } }).then((data) => {
- setBuutonDate(data)
- }).catch((err) => {
- console.log(err)
- })
- }
-
-
- // 根据角色id查询当前的菜单及其按钮
- // function buttonAndMenuList(params, id) {
- // console.log('id: ', id)
- // request({
- // url: `/api/admin/taRole/details/${id}`,
- // method: 'GET',
- // params: { ...params },
- // // eslint-disable-next-line no-shadow
- // }).then(data => {
- // console.log('data.roleName: ', data)
- // props.form.setFieldsValue({ roleName: data.roleName })
- // console.log(data)
- // setData(data)
-
- // // 获取所有的权限Id
- // if (data.sysMenuList) {
- // setDataMenuId(data.sysMenuList.map(item => item.menuId))
- // setDataButtonId((data.sysMenuList.map(item => item.sysButtonInMenu && item.sysButtonInMenu.map(btn => btn.btnId).join(',')).filter(f => f !== '').join(',').split(',')).map(a => parseInt(a)))
- // }
- // })
- // }
-
- function buttonAndMenuList(params, ids) {
- request({ ...apis.role.buttonAndMenuList, urlData: { id: ids }, params: { ...params } }).then(data => {
- props.form.setFieldsValue({ roleName: data.roleName })
- console.log(data)
- setData(data)
-
- // 获取所有的权限Id
- if (data.sysMenuList) {
- setDataMenuId(data.sysMenuList.map(item => item.menuId))
- setDataButtonId((data.sysMenuList.map(item => item.sysButtonInMenu && item.sysButtonInMenu.map(btn => btn.btnId).join(',')).filter(f => f !== '').join(',').split(',')).map(a => parseInt(a)))
- }
- }).catch((err) => {
- console.log(err)
- message.info(err.msg || err.message)
- })
- }
-
- // const [menus, setMenus] = useState([]);
- // 判断menus是否有值
- const [menus, setMenus] = useState([]);
-
- const addMenus = m => setMenus([...menus, m])
- const delMenus = m => setMenus(menus.filter(x => x.menuId !== m.menuId));
-
- const handleMenuChange = m => e => {
- if (e.target.checked) {
- setDataMenuId(dataMenuId.concat(m.menuId))
- addMenus(m)
- } else {
- setDataMenuId(dataMenuId.filter(item => item !== m.menuId));
- delMenus(m)
- }
- }
-
- const [but, setBut] = useState([]);
- // 判断menus是否有值
- const addBut = m => setBut([...but, m])
- const delBut = m => setBut(but.filter(x => x.menuId !== m.menuId));
- const handleButChange = m => e => {
- if (e.target.checked) {
- setDataButtonId(dataButtonId.concat(m.btnId))
- addBut(m)
- } else {
- setDataButtonId(dataButtonId.filter(item => item !== m.btnId));
- delBut(m)
- }
- }
- const gridStyle1 = {
- width: '16%',
- textAlign: 'left',
- height: '72px',
- padding:'24px 10px'
- };
- const gridStyle2 = {
- width: '84%',
- textAlign: 'left',
- height: '72px',
- };
-
- function toRoleList() {
- router.push({
- pathname: '/staff/RoleList',
- });
- }
- // function updateAuthMenu(params) {
- // request({
- // url: '/api/admin/updateAuthMenu',
- // method: 'POST',
- // data: { ...params },
- // // eslint-disable-next-line no-shadow
- // }).then(data => {
- // toRoleList()
- // })
- // }
-
- function updateAuthMenu(data) {
- request({ ...apis.role.updateAuthMenu, data: { ...data } }).then((data) => {
- toRoleList()
- }).catch((err) => {
- console.log(err)
- })
- }
-
-
- function handleSubmit(e) {
- e.preventDefault();
- props.form.validateFields((err, values) => {
- if (props.location.query.id !== undefined) {
- console.log('menus', menus)
-
- const sumitMenu = userMenus.filter(item => dataMenuId.includes(item.menuId))
- const sumitBtn = buutonDate.filter(item => dataButtonId.includes(item.btnId))
- // console.log('sumitMenu', sumitMenu)
- // console.log('sumitBtn', sumitBtn)
- // console.log('sumitMenu', sumitMenu)
- // const sumitBut = data.sysMenuList[0].sysButtonInMenu.concat(but)
- updateAuthMenu({ sysMenu: sumitMenu, name: values.roleName, id: props.location.query.id, sysButton: sumitBtn })
- } else {
- updateAuthMenu({ sysMenu: menus, name: values.roleName, id: props.location.query.id, sysButton: but })
- }
- });
- }
- const { getFieldDecorator } = props.form;
- return (
- <>
- <div>
- <Form labelCol={{ span: 6 }} wrapperCol={{ span: 12 }} onSubmit={handleSubmit}>
- <Form.Item label="角色名称">
- {getFieldDecorator('roleName', {
- rules: [{ required: true, message: '请输入角色名称' }],
- })(<Input className={channels.inpuit} />)}
-
- </Form.Item>
- {userMenus.map(item => (
- (item.parentCode === '-1') &&
- <Row >
- <Col span={6}>
- </Col>
- <Col span={18}>
-
- <Card title={<Checkbox checked={dataMenuId.includes(item.menuId)} onChange={handleMenuChange(item)}>{item.name}</Checkbox>} bordered style={{ width: '100%', alignItems: 'center',margin:'10px 0', boxShadow:'3px 3px 10px rgba(0,0,0,0.15)',borderRadius:'8px'}} >
- {
- userMenus.map(menu => (
-
- (item.menuId === menu.menuRoot && item.menuId !== menu.menuId) &&
- <>
- <Card.Grid style={gridStyle1} >
- <Checkbox checked={dataMenuId.includes(menu.menuId)} onChange={handleMenuChange(menu)}>{menu.name}</Checkbox>
- </Card.Grid>
- <Card.Grid style={gridStyle2}>
- {buutonDate.length > 0 && buutonDate.map(btn => (
- <>
- {
- btn.menuId === menu.menuId &&
- <Checkbox checked={dataButtonId.includes(btn.btnId)} onChange={handleButChange(btn)}>{btn.name}</Checkbox>
- }
- </>
- ))}
- </Card.Grid>
- </>
- ))
- }
- </Card>
- </Col>
-
- </Row>
- ))}
- <Form.Item wrapperCol={{ span: 15, offset: 7 }} style={{ marginTop: '10px' }}>
- <Button type="primary" htmlType="submit">
- 保存
- </Button>
- <Button className={channels.formButton} htmlType="submit" onChange = {toRoleList}>
- 取消
- </Button>
- </Form.Item>
- </Form>
- </div>
- </>
- )
- }
- const WrappedNormalLoginForm = Form.create({ name: 'Poster' })(Poster);
- export default connect(({ user }) => ({ user }))(WrappedNormalLoginForm);
|