dingxin 5 years ago
parent
commit
92bfcf2920
2 changed files with 103 additions and 28 deletions
  1. 3
    6
      src/pages/staff/list/RoleList.jsx
  2. 100
    22
      src/pages/staff/list/addRole.jsx

+ 3
- 6
src/pages/staff/list/RoleList.jsx View File

@@ -24,16 +24,13 @@ const header = props => {
24 24
 
25 25
 function addRole(roleId) {
26 26
   router.push({
27
-    pathname: '/staff/list/addRole',
28
-    query: {
29
-      id: roleId,
30
-    },
27
+    pathname: '/staff/addRole',
31 28
   });
32 29
 }
33 30
 
34 31
 function toEditRole(roleId) {
35 32
   router.push({
36
-    pathname: '/staff/list/editRole',
33
+    pathname: '/staff/addRole',
37 34
     query: {
38 35
       id: roleId,
39 36
     },
@@ -104,7 +101,7 @@ const columns = [
104 101
       <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={() => stop(record.roleId)}>{ record.status === 1 ? '停用' : '启用' }
105 102
       <Icon type="stop" className={styles.shoppingCart} style={{ fontSize: 14 }}/>
106 103
       </span>
107
-      <span style={{ color: '#FF925C' }} onClick={toEditRole}>编辑
104
+      <span style={{ color: '#FF925C' }} onClick={() => toEditRole(record.roleId)} >编辑
108 105
       <Icon type="form" className={styles.edit} />
109 106
       </span>
110 107
     </>,

+ 100
- 22
src/pages/staff/list/addRole.jsx View File

@@ -4,7 +4,9 @@ import { connect } from 'dva';
4 4
 import XForm, { FieldTypes } from '../../../components/XForm';
5 5
 import request from '../../../utils/request';
6 6
 import channels from './channelList.less';
7
-import { resolve } from 'path';
7
+import { resolve, join } from 'path';
8
+import router from 'umi/router';
9
+
8 10
 const { TextArea } = Input;
9 11
 
10 12
 
@@ -22,13 +24,23 @@ const { TextArea } = Input;
22 24
    // 获取当前所有菜单
23 25
    const [data, setData] = useState({ data: [] })
24 26
    const [buutonDate, setBuutonDate] = useState({ })
27
+
28
+   // 展示要显示的菜单和按钮----(编辑)
29
+   const [dataMenuId, setDataMenuId] = useState([])
30
+   const [dataButtonId, setDataButtonId] = useState([])
31
+
25 32
     useEffect(() => {
26
-      localStorage.removeItem('value');
27
-      menuList({ pageNum: 1, pageSize: 100 })
33
+      // 新增和编辑用一个页面,判断新增是否为0和null
34
+      if (props.location.query) {
35
+        const { id } = props.location.query
36
+        if (id) {
37
+          buttonAndMenuList('', id)
38
+        }
39
+      }
40
+      // menuList({ pageNum: 1, pageSize: 100 })
28 41
       buttonList({ pageNum: 1, pageSize: 100 })
29
-      // buttonAndMenuList()
30 42
     }, [])
31
-
43
+    // 当前所有的菜单
32 44
     function menuList(params) {
33 45
       request({
34 46
         url: '/api/admin/menuList',
@@ -36,7 +48,6 @@ const { TextArea } = Input;
36 48
         params: { ...params },
37 49
     // eslint-disable-next-line no-shadow
38 50
     }).then(data => {
39
-        console.log(data)
40 51
         setData(data)
41 52
     })
42 53
     }
@@ -52,19 +63,39 @@ const { TextArea } = Input;
52 63
         setBuutonDate(data)
53 64
     })
54 65
     }
55
-
66
+    
56 67
     // 根据角色id查询当前的菜单及其按钮
57
-    function buttonAndMenuList(params) {
68
+    function buttonAndMenuList(params, id) {
69
+      console.log('id: ', id)
58 70
       request({
59
-        url: `/api/admin/taRole/details/${2}`,
71
+        url: `/api/admin/taRole/details/${id}`,
60 72
         method: 'GET',
61 73
         params: { ...params },
62 74
     // eslint-disable-next-line no-shadow
63 75
     }).then(data => {
76
+      console.log('data.roleName: ', data)
77
+      props.form.setFieldsValue({ roleName: data.roleName })
64 78
         console.log(data)
65 79
         setData(data)
80
+
81
+        // 获取所有的权限Id
82
+        setDataMenuId(data.sysMenuList.map(item => item.menuId))
83
+        setDataButtonId((data.sysMenuList.map(item => item.sysButtonInMenu.map(btn => btn.btnId).join(',')).filter(f => f !== '').join(',').split(',')).map(a => parseInt(a)))
66 84
     })
67 85
     }
86
+        // 添加角色
87
+        function addRole(params) {
88
+          request({
89
+            url: '/api/admin/taRole/',
90
+            method: 'GET',
91
+            params: { ...params },
92
+        // eslint-disable-next-line no-shadow
93
+        }).then(data => {
94
+            console.log(data)
95
+            setData(data)
96
+        })
97
+        }
98
+
68 99
 
69 100
     // const [menus, setMenus] = useState([]);
70 101
     // 判断menus是否有值
@@ -75,13 +106,15 @@ const { TextArea } = Input;
75 106
     };
76 107
     const delMenus = m => setMenus(menus.filter(x => x.menuId !== m.menuId));
77 108
     const handleMenuChange = m => e => {
78
-      console.log('e', m)
79 109
       if (e.target.checked) {
80
-        // setMenusData(m)
110
+        setDataMenuId(dataMenuId.concat(m.menuId))
81 111
         addMenus(m)
82 112
       } else {
113
+        setDataMenuId([m.menuId])
83 114
         delMenus(m)
84 115
       }
116
+      console.log('dataMenuId', dataMenuId)
117
+      console.log('menus', menus)
85 118
     }
86 119
 
87 120
     const [but, setBut] = useState([]);
@@ -97,26 +130,71 @@ const { TextArea } = Input;
97 130
           }
98 131
         }
99 132
     const gridStyle1 = {
100
-      width: '20%',
133
+      width: '17%',
101 134
       textAlign: 'left',
102 135
     };
103 136
     const gridStyle2 = {
104 137
       width: '80%',
105 138
       textAlign: 'left',
106
-      height: '69px',
139
+      height: '72px',
107 140
     };
141
+// 添加菜单
142
+function addMenuList() {
143
+  request({
144
+    url: '/api/admin/updateAuthMenu',
145
+    method: 'PUT',
146
+    data: { sysMenu: menus },
147
+// eslint-disable-next-line no-shadow
148
+}).then(data => {
149
+    console.log(data)
150
+})
151
+}
152
+
153
+// 添加按钮
154
+function addButt() {
155
+  request({
156
+    url: '/api/admin/updateAuthMenu',
157
+    method: 'PUT',
158
+    data: { sysMenu: but },
159
+// eslint-disable-next-line no-shadow
160
+}).then(data => {
161
+    console.log(data)
162
+})
163
+}
164
+
165
+// 添加按钮
166
+function editAndAddRole() {
167
+  request({
168
+    url: '/admin/editAndAddRole/{id}',
169
+    method: 'PUT',
170
+    data: { sysMenu: but },
171
+// eslint-disable-next-line no-shadow
172
+}).then(data => {
173
+    console.log(data)
174
+})
175
+}
176
+
177
+function toRoleList(roleId) {
178
+  router.push({
179
+    pathname: '/staff/RoleList',
180
+  });
181
+}
108 182
 
109 183
     function handleSubmit (e) {
110 184
       e.preventDefault();
111 185
       props.form.validateFields((err, values) => {
186
+      console.log('values', values)
187
+        // 保存菜单
188
+        // addMenuList()
189
+        // setm
190
+        const sumitMenu = [...data.sysMenuList, ...menus]
112 191
         request({
113 192
           url: '/api/admin/updateAuthMenu',
114
-          method: 'PUT',
115
-          data: { sysMenu: menus },
193
+          method: 'POST',
194
+          data: { sysMenu: sumitMenu, name: values.roleName, id: props.location.query.id },
116 195
       // eslint-disable-next-line no-shadow
117 196
       }).then(data => {
118
-          console.log(data)
119
-          setData(data)
197
+        toRoleList()
120 198
       })
121 199
       });
122 200
     }
@@ -125,29 +203,29 @@ const { TextArea } = Input;
125 203
     <>
126 204
       <div >
127 205
         <Form labelCol={{ span: 7 }} wrapperCol={{ span: 12 }} onSubmit={handleSubmit}>
128
-        <Form.Item label="渠道名称">
129
-          {getFieldDecorator('channelName', {
206
+        <Form.Item label="角色名称">
207
+          {getFieldDecorator('roleName', {
130 208
             rules: [{ required: true, message: '请输入渠道名称' }],
131 209
           })(<Input className={channels.inpuit} />)}
132 210
 
133 211
         </Form.Item>
134 212
         {userMenus.map(item => (
135 213
           (item.parentCode === '-1') &&
136
-          <Card title={<Checkbox onChange={handleMenuChange(item)}>{item.name}</Checkbox>} bordered style={{ width: '100%', alignItems: 'center' }} >
214
+          <Card title={<Checkbox checked={ dataMenuId.includes(item.menuId) } onChange={handleMenuChange(item)}>{item.name}</Checkbox>} bordered style={{ width: '100%', alignItems: 'center' }} >
137 215
               {
138 216
                    userMenus.map(menu => (
139 217
 
140 218
                     (item.menuId === menu.menuRoot && item.menuId !== menu.menuId) &&
141 219
                     <>
142 220
                       <Card.Grid style={gridStyle1} >
143
-                          <Checkbox onChange={handleMenuChange(menu)}>{menu.name}</Checkbox>
221
+                          <Checkbox checked={ dataMenuId.includes(menu.menuId) } onChange={handleMenuChange(menu)}>{menu.name}</Checkbox>
144 222
                       </Card.Grid>
145 223
                       <Card.Grid style={gridStyle2}>
146 224
                         {buutonDate.length > 0 && buutonDate.map(btn => (
147 225
                           <>
148 226
                             {
149 227
                               btn.menuId === menu.menuId &&
150
-                              <Checkbox onChange={handleButChange(btn)}>{btn.name}</Checkbox>
228
+                              <Checkbox checked={ dataButtonId.includes(btn.btnId) } onChange={handleButChange(btn)}>{btn.name}</Checkbox>
151 229
                             }
152 230
                           </>
153 231
                         ))}