dingxin 6 年前
父节点
当前提交
c536b85943
共有 27 个文件被更改,包括 619 次插入154 次删除
  1. 1
    1
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/OperateApplication.java
  2. 15
    0
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/controller/SysRoleController.java
  3. 7
    0
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysMenuMapper.java
  4. 10
    0
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysRoleMapper.java
  5. 9
    0
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysRoleMenuMapper.java
  6. 9
    0
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/IToSysRoleService.java
  7. 1
    1
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/impl/ToSysMenuServiceImpl.java
  8. 57
    9
      CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/impl/ToSysRoleServiceImpl.java
  9. 11
    0
      CODE/smart-community/operate-api/src/main/resources/mapper/ToSysMenuMapper.xml
  10. 10
    1
      CODE/smart-community/operate-api/src/main/resources/mapper/ToSysRoleMapper.xml
  11. 9
    0
      CODE/smart-community/operate-api/src/main/resources/mapper/ToSysRoleMenuMapper.xml
  12. 1
    1
      CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/RoleController.java
  13. 48
    0
      CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/SysMenuController.java
  14. 16
    0
      CODE/smart-community/property-api/src/main/java/com/community/huiju/dao/SysMenuMapper.java
  15. 72
    0
      CODE/smart-community/property-api/src/main/java/com/community/huiju/model/SysMenu.java
  16. 24
    0
      CODE/smart-community/property-api/src/main/java/com/community/huiju/service/ISysMenuService.java
  17. 75
    0
      CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/SysMenuServiceImpl.java
  18. 5
    0
      CODE/smart-community/property-api/src/main/resources/mapper/SysMenuMapper.xml
  19. 17
    0
      VUECODE/smart-operate-manage/src/api/role.js
  20. 19
    2
      VUECODE/smart-operate-manage/src/store/modules/role.js
  21. 45
    5
      VUECODE/smart-operate-manage/src/views/account/role/add/index.vue
  22. 48
    66
      VUECODE/smart-operate-manage/src/views/account/role/edi/index.vue
  23. 4
    0
      VUECODE/smart-operate-manage/src/views/account/role/index.vue
  24. 48
    66
      VUECODE/smart-operate-manage/src/views/account/role/info/index.vue
  25. 7
    0
      VUECODE/smart-property-manage/src/api/role.js
  26. 18
    2
      VUECODE/smart-property-manage/src/store/modules/role.js
  27. 33
    0
      VUECODE/smart-property-manage/src/views/account/add/role-add.vue

+ 1
- 1
CODE/smart-community/operate-api/src/main/java/com/community/huiju/OperateApplication.java 查看文件

25
 	public HttpMessageConverters fastJsonConfigure(){
25
 	public HttpMessageConverters fastJsonConfigure(){
26
 		FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
26
 		FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
27
 		FastJsonConfig fastJsonConfig = new FastJsonConfig();
27
 		FastJsonConfig fastJsonConfig = new FastJsonConfig();
28
-		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
28
+		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.WriteMapNullValue);
29
 		//日期格式化
29
 		//日期格式化
30
 		//fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
30
 		//fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
31
 		converter.setFastJsonConfig(fastJsonConfig);
31
 		converter.setFastJsonConfig(fastJsonConfig);

+ 15
- 0
CODE/smart-community/operate-api/src/main/java/com/community/huiju/controller/SysRoleController.java 查看文件

1
 package com.community.huiju.controller;
1
 package com.community.huiju.controller;
2
 
2
 
3
 import com.community.commom.mode.ResponseBean;
3
 import com.community.commom.mode.ResponseBean;
4
+import com.community.commom.session.UserElement;
4
 import com.community.huiju.common.base.BaseController;
5
 import com.community.huiju.common.base.BaseController;
5
 import com.community.huiju.service.IToSysRoleService;
6
 import com.community.huiju.service.IToSysRoleService;
6
 import io.swagger.annotations.Api;
7
 import io.swagger.annotations.Api;
34
         return responseBean;
35
         return responseBean;
35
     }
36
     }
36
 
37
 
38
+    @RequestMapping(value = "/role/add", method = RequestMethod.POST)
39
+    @ApiOperation(value = "添加角色", notes = "添加角色")
40
+    @ApiImplicitParams({
41
+            @ApiImplicitParam(dataTypeClass = String.class, paramType = "header", name = "X-Auth-Token", value = "Token"),
42
+            @ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "roleName角色名称;description描述;menuArray菜单id集合")
43
+    })
44
+    public ResponseBean addRole(@RequestBody String parameter,
45
+                                   HttpSession session){
46
+        ResponseBean responseBean = new ResponseBean();
47
+        UserElement userElement = getUserElement(session);
48
+        responseBean = iToSysRoleService.addRole(parameter, userElement);
49
+        return responseBean;
50
+    }
51
+
37
 
52
 
38
 }
53
 }

+ 7
- 0
CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysMenuMapper.java 查看文件

27
      * @return
27
      * @return
28
      */
28
      */
29
     List<ToSysMenu> selectParentId(@Param("parentId") Integer parentId, @Param("menuType") Integer menuType);
29
     List<ToSysMenu> selectParentId(@Param("parentId") Integer parentId, @Param("menuType") Integer menuType);
30
+
31
+    /**
32
+     * 批量添加 菜单
33
+     * @param menuList
34
+     * @return
35
+     */
36
+    int banchInsert (List<ToSysMenu> menuList);
30
 }
37
 }

+ 10
- 0
CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysRoleMapper.java 查看文件

1
 package com.community.huiju.dao;
1
 package com.community.huiju.dao;
2
 
2
 
3
+import com.community.huiju.model.ToSysMenu;
3
 import com.community.huiju.model.ToSysRole;
4
 import com.community.huiju.model.ToSysRole;
4
 import org.apache.ibatis.annotations.Mapper;
5
 import org.apache.ibatis.annotations.Mapper;
5
 import org.apache.ibatis.annotations.Param;
6
 import org.apache.ibatis.annotations.Param;
35
      * @return
36
      * @return
36
      */
37
      */
37
     List<ToSysRole> selectAll(@Param("roleName") String roleName);
38
     List<ToSysRole> selectAll(@Param("roleName") String roleName);
39
+
40
+    /**
41
+     * 根据 角色名称 查询
42
+     * @param roleName
43
+     * @return
44
+     */
45
+    ToSysRole selectByRoleName(@Param("roleName") String roleName);
46
+
47
+
38
 }
48
 }

+ 9
- 0
CODE/smart-community/operate-api/src/main/java/com/community/huiju/dao/ToSysRoleMenuMapper.java 查看文件

3
 import com.community.huiju.model.ToSysRoleMenu;
3
 import com.community.huiju.model.ToSysRoleMenu;
4
 import org.apache.ibatis.annotations.Mapper;
4
 import org.apache.ibatis.annotations.Mapper;
5
 
5
 
6
+import java.util.List;
7
+
6
 @Mapper
8
 @Mapper
7
 public interface ToSysRoleMenuMapper {
9
 public interface ToSysRoleMenuMapper {
8
     int deleteByPrimaryKey(Integer id);
10
     int deleteByPrimaryKey(Integer id);
16
     int updateByPrimaryKeySelective(ToSysRoleMenu record);
18
     int updateByPrimaryKeySelective(ToSysRoleMenu record);
17
 
19
 
18
     int updateByPrimaryKey(ToSysRoleMenu record);
20
     int updateByPrimaryKey(ToSysRoleMenu record);
21
+
22
+    /**
23
+     * 批量插入
24
+     * @param list
25
+     * @return
26
+     */
27
+    int banchInsert(List<ToSysRoleMenu> list);
19
 }
28
 }

+ 9
- 0
CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/IToSysRoleService.java 查看文件

1
 package com.community.huiju.service;
1
 package com.community.huiju.service;
2
 
2
 
3
 import com.community.commom.mode.ResponseBean;
3
 import com.community.commom.mode.ResponseBean;
4
+import com.community.commom.session.UserElement;
4
 import com.community.huiju.model.ToSysRole;
5
 import com.community.huiju.model.ToSysRole;
5
 
6
 
6
 import java.util.List;
7
 import java.util.List;
24
      * @return
25
      * @return
25
      */
26
      */
26
     ResponseBean getAll(String parameter);
27
     ResponseBean getAll(String parameter);
28
+
29
+    /**
30
+     * 添加角色
31
+     * @param parameter
32
+     * @param userElement 用户登录信息体
33
+     * @return
34
+     */
35
+    ResponseBean addRole(String parameter, UserElement userElement);
27
 }
36
 }

+ 1
- 1
CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/impl/ToSysMenuServiceImpl.java 查看文件

35
     private List<ToSysMenu> getMenu (Integer parentId, Integer menuType){
35
     private List<ToSysMenu> getMenu (Integer parentId, Integer menuType){
36
         List<ToSysMenu> sysMenuList = toSysMenuMapper.selectParentId(parentId, menuType);
36
         List<ToSysMenu> sysMenuList = toSysMenuMapper.selectParentId(parentId, menuType);
37
         if (CollectionUtils.isNotEmpty(sysMenuList)) {
37
         if (CollectionUtils.isNotEmpty(sysMenuList)) {
38
-            sysMenuList.forEach(e -> getMenu(e.getId(), menuType));
38
+            sysMenuList.forEach(e -> e.setChildren(getMenu(e.getId(), menuType)));
39
         }
39
         }
40
         return sysMenuList;
40
         return sysMenuList;
41
     }
41
     }

+ 57
- 9
CODE/smart-community/operate-api/src/main/java/com/community/huiju/service/impl/ToSysRoleServiceImpl.java 查看文件

2
 
2
 
3
 import com.alibaba.fastjson.JSONObject;
3
 import com.alibaba.fastjson.JSONObject;
4
 import com.community.commom.mode.ResponseBean;
4
 import com.community.commom.mode.ResponseBean;
5
-import com.community.huiju.dao.TaUserMapper;
6
-import com.community.huiju.dao.ToSysRoleMapper;
7
-import com.community.huiju.dao.ToUserMapper;
8
-import com.community.huiju.model.TaUser;
9
-import com.community.huiju.model.ToSysRole;
10
-import com.community.huiju.model.ToUser;
5
+import com.community.commom.session.UserElement;
6
+import com.community.huiju.dao.*;
7
+import com.community.huiju.exception.WisdomException;
8
+import com.community.huiju.model.*;
11
 import com.community.huiju.service.IToSysRoleService;
9
 import com.community.huiju.service.IToSysRoleService;
12
 import com.github.pagehelper.Page;
10
 import com.github.pagehelper.Page;
13
 import com.github.pagehelper.PageHelper;
11
 import com.github.pagehelper.PageHelper;
14
 import lombok.extern.slf4j.Slf4j;
12
 import lombok.extern.slf4j.Slf4j;
15
 import org.springframework.beans.factory.annotation.Autowired;
13
 import org.springframework.beans.factory.annotation.Autowired;
16
 import org.springframework.stereotype.Service;
14
 import org.springframework.stereotype.Service;
15
+import org.springframework.transaction.annotation.Transactional;
17
 
16
 
18
-import java.util.HashMap;
19
-import java.util.List;
20
-import java.util.Map;
17
+import java.util.*;
21
 
18
 
19
+/**
20
+ * 角色业务
21
+ * @author weiximei
22
+ */
22
 @Service("iToSysRoleService")
23
 @Service("iToSysRoleService")
23
 @Slf4j
24
 @Slf4j
24
 public class ToSysRoleServiceImpl implements IToSysRoleService {
25
 public class ToSysRoleServiceImpl implements IToSysRoleService {
26
     @Autowired
27
     @Autowired
27
     private ToSysRoleMapper toSysRoleMapper;
28
     private ToSysRoleMapper toSysRoleMapper;
28
 
29
 
30
+    @Autowired
31
+    private ToSysRoleMenuMapper toSysRoleMenuMapper;
32
+
29
     @Autowired
33
     @Autowired
30
     private ToUserMapper toUserMapper;
34
     private ToUserMapper toUserMapper;
31
 
35
 
63
         responseBean.addSuccess(resMap);
67
         responseBean.addSuccess(resMap);
64
         return responseBean;
68
         return responseBean;
65
     }
69
     }
70
+
71
+
72
+    @Override
73
+    @Transactional(rollbackFor = Exception.class)
74
+    public ResponseBean addRole(String parameter, UserElement userElement) {
75
+        ResponseBean responseBean = new ResponseBean();
76
+
77
+        JSONObject jsonObject = JSONObject.parseObject(parameter);
78
+        String roleName = jsonObject.getString("roleName");
79
+        String description = jsonObject.getString("description");
80
+        Integer [] menuIdArray = jsonObject.getJSONArray("menuArray").toArray(new Integer[] {});
81
+
82
+        // 校验这个角色是否存在
83
+        ToSysRole toSysRole = toSysRoleMapper.selectByRoleName(roleName);
84
+        if (toSysRole != null) {
85
+            responseBean.addError("角色已存在!");
86
+            return responseBean;
87
+        }
88
+
89
+        ToSysRole createRole = new ToSysRole();
90
+        createRole.setRoleName(roleName);
91
+        createRole.setDescription(description);
92
+        createRole.setUpdateUser(userElement.getId());
93
+        createRole.setCreateUser(userElement.getId());
94
+        createRole.setCreateDate(new Date());
95
+        createRole.setUpdateDate(new Date());
96
+        createRole.setStatus("1");
97
+        int rows = toSysRoleMapper.insertSelective(createRole);
98
+
99
+        List<ToSysRoleMenu> roleMenuList = new ArrayList<>();
100
+        for (Integer menuId : menuIdArray) {
101
+            ToSysRoleMenu toSysRoleMenu = new ToSysRoleMenu();
102
+            toSysRoleMenu.setMenuId(menuId);
103
+            toSysRoleMenu.setRoleId(createRole.getId());
104
+            roleMenuList.add(toSysRoleMenu);
105
+        }
106
+
107
+        rows = toSysRoleMenuMapper.banchInsert(roleMenuList);
108
+        if (rows <= 0) {
109
+            throw new WisdomException("创建角色失败!");
110
+        }
111
+        responseBean.addSuccess("操作成功!");
112
+        return responseBean;
113
+    }
66
 }
114
 }

+ 11
- 0
CODE/smart-community/operate-api/src/main/resources/mapper/ToSysMenuMapper.xml 查看文件

138
       </if>
138
       </if>
139
     </trim>
139
     </trim>
140
   </select>
140
   </select>
141
+  <insert id="banchInsert" parameterType="list" >
142
+    insert into to_sys_menu (id, menu_name, menu_url,
143
+      menu_icon, parent_id, sort,
144
+      menu_type, status)
145
+    values
146
+    <foreach collection="menuList" index="index" item="item" separator=",">
147
+      (#{item.menuName,jdbcType=VARCHAR}, #{item.menuUrl,jdbcType=VARCHAR},
148
+      #{item.menuIcon,jdbcType=VARCHAR}, #{item.parentId,jdbcType=INTEGER}, #{item.sort,jdbcType=INTEGER},
149
+      #{item.menuType,jdbcType=CHAR}, #{item.status,jdbcType=CHAR})
150
+    </foreach>
151
+  </insert>
141
 </mapper>
152
 </mapper>

+ 10
- 1
CODE/smart-community/operate-api/src/main/resources/mapper/ToSysRoleMapper.xml 查看文件

32
       #{status,jdbcType=CHAR}, #{createUser,jdbcType=INTEGER}, #{createDate,jdbcType=TIMESTAMP}, 
32
       #{status,jdbcType=CHAR}, #{createUser,jdbcType=INTEGER}, #{createDate,jdbcType=TIMESTAMP}, 
33
       #{updateUser,jdbcType=INTEGER}, #{updateDate,jdbcType=TIMESTAMP})
33
       #{updateUser,jdbcType=INTEGER}, #{updateDate,jdbcType=TIMESTAMP})
34
   </insert>
34
   </insert>
35
-  <insert id="insertSelective" parameterType="com.community.huiju.model.ToSysRole" >
35
+  <insert id="insertSelective" parameterType="com.community.huiju.model.ToSysRole" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
36
     insert into to_sys_role
36
     insert into to_sys_role
37
     <trim prefix="(" suffix=")" suffixOverrides="," >
37
     <trim prefix="(" suffix=")" suffixOverrides="," >
38
       <if test="id != null" >
38
       <if test="id != null" >
142
       </if>
142
       </if>
143
     </where>
143
     </where>
144
   </select>
144
   </select>
145
+
146
+  <select id="selectByRoleName" parameterType="string" resultMap="BaseResultMap">
147
+    select
148
+    <include refid="Base_Column_List"/>
149
+    from to_sys_role
150
+    <where>
151
+        role_name = #{roleName,jdbcType=VARCHAR}
152
+    </where>
153
+  </select>
145
 </mapper>
154
 </mapper>

+ 9
- 0
CODE/smart-community/operate-api/src/main/resources/mapper/ToSysRoleMenuMapper.xml 查看文件

68
       menu_id = #{menuId,jdbcType=INTEGER}
68
       menu_id = #{menuId,jdbcType=INTEGER}
69
     where id = #{id,jdbcType=INTEGER}
69
     where id = #{id,jdbcType=INTEGER}
70
   </update>
70
   </update>
71
+
72
+  <insert id="banchInsert" parameterType="list">
73
+    insert into to_sys_role_menu (role_id, menu_id
74
+      )
75
+    values
76
+    <foreach collection="list" index="index" item="item" separator=",">
77
+      (#{item.roleId,jdbcType=INTEGER}, #{item.menuId,jdbcType=INTEGER})
78
+    </foreach>
79
+  </insert>
71
 </mapper>
80
 </mapper>

+ 1
- 1
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/RoleController.java 查看文件

31
 	@Autowired
31
 	@Autowired
32
 	private RoleServiceI roleService;
32
 	private RoleServiceI roleService;
33
 	
33
 	
34
-	@ApiOperation(value = "根据搜索条件获取二手租赁列表", notes = "根据搜索条件获取二手租赁列表")
34
+	@ApiOperation(value = "根据搜索条件获取角色列表", notes = "根据搜索条件获取角色列表")
35
 	@ApiImplicitParams({
35
 	@ApiImplicitParams({
36
 			@ApiImplicitParam(paramType = "query", dataType = "String", name = "roleName", value = "帖子标题(模糊查询)"),
36
 			@ApiImplicitParam(paramType = "query", dataType = "String", name = "roleName", value = "帖子标题(模糊查询)"),
37
 			@ApiImplicitParam(paramType = "query", dataType = "integer", name = "pageNum", value = "分页第几页"),
37
 			@ApiImplicitParam(paramType = "query", dataType = "integer", name = "pageNum", value = "分页第几页"),

+ 48
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/SysMenuController.java 查看文件

1
+package com.community.huiju.controller;
2
+
3
+
4
+import com.community.commom.mode.ResponseBean;
5
+import com.community.commom.session.UserElement;
6
+import com.community.huiju.common.base.BaseController;
7
+import com.community.huiju.service.ISysMenuService;
8
+import io.swagger.annotations.Api;
9
+import io.swagger.annotations.ApiImplicitParam;
10
+import io.swagger.annotations.ApiImplicitParams;
11
+import io.swagger.annotations.ApiOperation;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.cloud.context.config.annotation.RefreshScope;
14
+import org.springframework.web.bind.annotation.RequestMapping;
15
+import org.springframework.web.bind.annotation.RequestMethod;
16
+import org.springframework.web.bind.annotation.RequestParam;
17
+import org.springframework.web.bind.annotation.RestController;
18
+
19
+import javax.servlet.http.HttpSession;
20
+
21
+/**
22
+ * <p>
23
+ * 物业web端菜单表 前端控制器
24
+ * </p>
25
+ *
26
+ * @author jobob
27
+ * @since 2019-01-17
28
+ */
29
+@RestController
30
+@RefreshScope
31
+@RequestMapping("/")
32
+@Api(value = "物业端菜单API", description = "物业端菜单API")
33
+public class SysMenuController extends BaseController {
34
+	
35
+	@Autowired
36
+	private ISysMenuService sysMenuService;
37
+	
38
+	@ApiOperation(value = "根据搜索条件获取菜单列表", notes = "根据搜索条件获取菜单列表")
39
+	@ApiImplicitParams({
40
+	})
41
+	@RequestMapping(value = "/menus",method = RequestMethod.GET)
42
+	public ResponseBean getInfo(HttpSession session) {
43
+		ResponseBean responseBean = new ResponseBean();
44
+		UserElement userElement = getUserElement(session);
45
+		responseBean = sysMenuService.getMenuList(userElement);
46
+		return responseBean;
47
+	}
48
+}

+ 16
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/dao/SysMenuMapper.java 查看文件

1
+package com.community.huiju.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.community.huiju.model.SysMenu;
5
+
6
+/**
7
+ * <p>
8
+ * 物业web端菜单表 Mapper 接口
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2019-01-17
13
+ */
14
+public interface SysMenuMapper extends BaseMapper<SysMenu> {
15
+
16
+}

+ 72
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/model/SysMenu.java 查看文件

1
+package com.community.huiju.model;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableName;
4
+import lombok.Data;
5
+import lombok.EqualsAndHashCode;
6
+import lombok.experimental.Accessors;
7
+
8
+import java.io.Serializable;
9
+import java.util.List;
10
+
11
+/**
12
+ * <p>
13
+ * 物业web端菜单表
14
+ * </p>
15
+ *
16
+ * @author jobob
17
+ * @since 2019-01-17
18
+ */
19
+@Data
20
+@EqualsAndHashCode(callSuper = false)
21
+@Accessors(chain = true)
22
+@TableName("tp_sys_menu")
23
+public class SysMenu implements Serializable {
24
+
25
+    private static final long serialVersionUID = 1L;
26
+
27
+    private Integer id;
28
+    /**
29
+     * 小区id
30
+     */
31
+    private Integer communityId;
32
+
33
+    /**
34
+     * 菜单名称
35
+     */
36
+    private String menuName;
37
+
38
+    /**
39
+     * 菜单链接
40
+     */
41
+    private String menuUrl;
42
+
43
+    /**
44
+     * 菜单图标
45
+     */
46
+    private String menuIcon;
47
+
48
+    /**
49
+     * 父级菜单ID
50
+     */
51
+    private Integer parentId;
52
+
53
+    /**
54
+     * 排序
55
+     */
56
+    private Integer sort;
57
+
58
+    /**
59
+     * 菜单类型 0 页面菜单  1功能菜单
60
+     */
61
+    private String menuType;
62
+
63
+    /**
64
+     * 状态 0正常 9 删除
65
+     */
66
+    private String status;
67
+    
68
+    /**
69
+     * 子节点
70
+     */
71
+    private List<SysMenu> children;
72
+}

+ 24
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/ISysMenuService.java 查看文件

1
+package com.community.huiju.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.community.commom.mode.ResponseBean;
5
+import com.community.commom.session.UserElement;
6
+import com.community.huiju.model.SysMenu;
7
+
8
+/**
9
+ * <p>
10
+ * 物业web端菜单表 服务类
11
+ * </p>
12
+ *
13
+ * @author jobob
14
+ * @since 2019-01-17
15
+ */
16
+public interface ISysMenuService extends IService<SysMenu> {
17
+	
18
+	/**
19
+	 * 获取递归菜单
20
+	 * @param userElement
21
+	 * @return
22
+	 */
23
+	ResponseBean getMenuList(UserElement userElement);
24
+}

+ 75
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/SysMenuServiceImpl.java 查看文件

1
+package com.community.huiju.service.impl;
2
+
3
+
4
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
+import com.community.commom.mode.ResponseBean;
6
+import com.community.commom.session.UserElement;
7
+import com.community.huiju.dao.SysMenuMapper;
8
+import com.community.huiju.model.SysMenu;
9
+import com.community.huiju.service.ISysMenuService;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.stereotype.Service;
12
+
13
+import java.util.ArrayList;
14
+import java.util.List;
15
+
16
+/**
17
+ * <p>
18
+ * 物业web端菜单表 服务实现类
19
+ * </p>
20
+ *
21
+ * @author jobob
22
+ * @since 2019-01-17
23
+ */
24
+@Service
25
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
26
+	
27
+	@Autowired
28
+	private SysMenuMapper sysMenuMapper;
29
+	/**
30
+	 * 获取递归菜单
31
+	 *
32
+	 * @param userElement
33
+	 * @return
34
+	 */
35
+	@Override
36
+	public ResponseBean getMenuList(UserElement userElement) {
37
+		ResponseBean responseBean = new ResponseBean();
38
+		List<SysMenu> sysMenuList = sysMenuMapper.selectList(null);
39
+		List<SysMenu> menuList = new ArrayList<SysMenu>();
40
+		sysMenuList.stream().forEach(sysMenu -> {
41
+			//父节点是0的,为根节点。
42
+			if(sysMenu.getParentId().equals("0")){
43
+				menuList.add(sysMenu);
44
+			}
45
+		});
46
+		
47
+		//递归
48
+		menuList.stream().forEach(sysMenu -> {
49
+			List<SysMenu> childList = getChild(sysMenu.getId(), sysMenuList);
50
+			sysMenu.setChildren(childList);
51
+		});
52
+		responseBean.addSuccess(menuList);
53
+		return responseBean;
54
+	}
55
+	
56
+	public List<SysMenu> getChild(Integer id,List<SysMenu> allMenuList){
57
+		//子菜单
58
+		List<SysMenu> childList = new ArrayList<SysMenu>();
59
+		allMenuList.stream().forEach(sysMenu -> {
60
+			//相等说明:为该根节点的子节点。
61
+			if(sysMenu.getParentId().equals(id)){
62
+				childList.add(sysMenu);
63
+			}
64
+		});
65
+		//递归
66
+		childList.stream().forEach(sysMenu -> {
67
+			sysMenu.setChildren(getChild(sysMenu.getId(), allMenuList));
68
+		});
69
+		//如果节点下没有子节点,返回一个空List(递归退出)
70
+		if(childList.size() == 0){
71
+			return new ArrayList<SysMenu>();
72
+		}
73
+		return childList;
74
+	}
75
+}

+ 5
- 0
CODE/smart-community/property-api/src/main/resources/mapper/SysMenuMapper.xml 查看文件

1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.community.huiju.dao.SysMenuMapper">
4
+
5
+</mapper>

+ 17
- 0
VUECODE/smart-operate-manage/src/api/role.js 查看文件

8
     data
8
     data
9
   })
9
   })
10
 }
10
 }
11
+
12
+// 获取所有 菜单列表
13
+export function getMenuList() {
14
+  return request({
15
+    url: '/menu/list',
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 添加 角色
21
+export function addRole(data) {
22
+  return request({
23
+    url: '/role/add',
24
+    method: 'post',
25
+    data
26
+  })
27
+}

+ 19
- 2
VUECODE/smart-operate-manage/src/store/modules/role.js 查看文件

1
-import { getRoleList } from '@/api/role'
1
+import { getRoleList, getMenuList, addRole } from '@/api/role'
2
 
2
 
3
 const role = {
3
 const role = {
4
 
4
 
5
   actions: {
5
   actions: {
6
     GetRoleList({ commit }, data) { // 根据条件获取所有的角色列表
6
     GetRoleList({ commit }, data) { // 根据条件获取所有的角色列表
7
-      console.log('角色列表请求参数: ', data)
8
       return new Promise((resolve, reject) => {
7
       return new Promise((resolve, reject) => {
9
         getRoleList(data).then(response => {
8
         getRoleList(data).then(response => {
10
           resolve(response)
9
           resolve(response)
12
           reject(err)
11
           reject(err)
13
         })
12
         })
14
       })
13
       })
14
+    },
15
+    GetMenuList({ commit }, data) { // 获取所有菜单
16
+      return new Promise((resolve, reject) => {
17
+        getMenuList(data).then(response => {
18
+          resolve(response)
19
+        }).catch((err) => {
20
+          reject(err)
21
+        })
22
+      })
23
+    },
24
+    AddRole({ commit }, data) { // 添加角色
25
+      return new Promise((resolve, reject) => {
26
+        addRole(data).then(response => {
27
+          resolve(response)
28
+        }).catch((err) => {
29
+          reject(err)
30
+        })
31
+      })
15
     }
32
     }
16
   }
33
   }
17
 }
34
 }

+ 45
- 5
VUECODE/smart-operate-manage/src/views/account/role/add/index.vue 查看文件

8
         <el-input v-model="ruleForm.description"/>
8
         <el-input v-model="ruleForm.description"/>
9
       </el-form-item>
9
       </el-form-item>
10
       <el-form-item label="权限资源" prop="menuArray">
10
       <el-form-item label="权限资源" prop="menuArray">
11
+        <!-- default-expanded-keys 展示选中的
12
+             default-checked-keys 勾上选中的-->
11
         <el-tree
13
         <el-tree
14
+          ref="tree"
12
           :data="menuData"
15
           :data="menuData"
13
-          :default-expanded-keys="[2, 3]"
14
-          :default-checked-keys="[5]"
16
+          :default-expanded-keys="ruleForm.menuArray"
17
+          :default-checked-keys="ruleForm.menuArray"
15
           :props="defaultProps"
18
           :props="defaultProps"
16
           show-checkbox
19
           show-checkbox
17
           node-key="id"
20
           node-key="id"
38
       defaultProps: { // 设置树形节点的渲染的属性
41
       defaultProps: { // 设置树形节点的渲染的属性
39
         id: 'id',
42
         id: 'id',
40
         children: 'children',
43
         children: 'children',
41
-        label: 'label'
44
+        label: 'menuName'
42
       },
45
       },
43
       rules: {
46
       rules: {
44
         roleName: [
47
         roleName: [
53
       }
56
       }
54
     }
57
     }
55
   },
58
   },
59
+  mounted() {
60
+    this.getMenuList()
61
+  },
56
   methods: {
62
   methods: {
57
     submitForm(formName) {
63
     submitForm(formName) {
64
+      // 获取选中的树形节点 key
65
+      this.ruleForm.menuArray = this.$refs.tree.getCheckedKeys()
58
       this.$refs[formName].validate((valid) => {
66
       this.$refs[formName].validate((valid) => {
67
+        const loading = this.$loading({
68
+          lock: true,
69
+          text: 'Loading',
70
+          spinner: 'el-icon-loading',
71
+          background: 'rgba(0, 0, 0, 0.7)'
72
+        })
59
         if (valid) {
73
         if (valid) {
60
-          alert('submit!')
74
+          this.$store.dispatch('AddRole', this.ruleForm).then((res) => {
75
+            const resCode = res.code
76
+            if (resCode === '0') {
77
+              this.$message({
78
+                message: res.message,
79
+                type: 'success'
80
+              })
81
+              loading.close()
82
+              this.$router.push({ name: 'role-index' })
83
+            }
84
+          }).catch(() => {
85
+            console.log('error AddRole')
86
+            loading.close()
87
+          })
61
         } else {
88
         } else {
62
           console.log('error submit!!')
89
           console.log('error submit!!')
90
+          loading.close()
63
           return false
91
           return false
64
         }
92
         }
65
       })
93
       })
69
     },
97
     },
70
     handleCheckChange(data, checked, indeterminate) { // 树形图选择事件
98
     handleCheckChange(data, checked, indeterminate) { // 树形图选择事件
71
       console.log(data, checked, indeterminate)
99
       console.log(data, checked, indeterminate)
100
+    },
101
+    getMenuList() { // 获取 菜单列表
102
+      this.$store.dispatch('GetMenuList').then((res) => {
103
+        this.menuData = res.data
104
+      }).catch(() => {
105
+        console.log('error GetMenuList')
106
+      })
72
     }
107
     }
73
   }
108
   }
74
 }
109
 }
75
 </script>
110
 </script>
76
 
111
 
77
 <style scoped>
112
 <style scoped>
78
-
113
+.demo-ruleForm {
114
+  width: 500px;
115
+  margin-top: 20px;
116
+  margin-left: auto;
117
+  margin-right: auto;
118
+}
79
 </style>
119
 </style>

+ 48
- 66
VUECODE/smart-operate-manage/src/views/account/role/edi/index.vue 查看文件

1
 <template>
1
 <template>
2
   <div id="root">
2
   <div id="root">
3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
4
-      <el-form-item label="活动名称" prop="name">
5
-        <el-input v-model="ruleForm.name"/>
4
+      <el-form-item label="角色名称" prop="roleName">
5
+        <el-input v-model="ruleForm.roleName"/>
6
       </el-form-item>
6
       </el-form-item>
7
-      <el-form-item label="活动区域" prop="region">
8
-        <el-select v-model="ruleForm.region" placeholder="请选择活动区域">
9
-          <el-option label="区域一" value="shanghai"/>
10
-          <el-option label="区域二" value="beijing"/>
11
-        </el-select>
7
+      <el-form-item label="角色描述" prop="description">
8
+        <el-input v-model="ruleForm.description"/>
12
       </el-form-item>
9
       </el-form-item>
13
-      <el-form-item label="活动时间" required>
14
-        <el-col :span="11">
15
-          <el-form-item prop="date1">
16
-            <el-date-picker v-model="ruleForm.date1" type="date" placeholder="选择日期" style="width: 100%;"/>
17
-          </el-form-item>
18
-        </el-col>
19
-        <el-col :span="2" class="line">-</el-col>
20
-        <el-col :span="11">
21
-          <el-form-item prop="date2">
22
-            <el-time-picker v-model="ruleForm.date2" type="fixed-time" placeholder="选择时间" style="width: 100%;"/>
23
-          </el-form-item>
24
-        </el-col>
25
-      </el-form-item>
26
-      <el-form-item label="即时配送" prop="delivery">
27
-        <el-switch v-model="ruleForm.delivery"/>
28
-      </el-form-item>
29
-      <el-form-item label="活动性质" prop="type">
30
-        <el-checkbox-group v-model="ruleForm.type">
31
-          <el-checkbox label="美食/餐厅线上活动" name="type"/>
32
-          <el-checkbox label="地推活动" name="type"/>
33
-          <el-checkbox label="线下主题活动" name="type"/>
34
-          <el-checkbox label="单纯品牌曝光" name="type"/>
35
-        </el-checkbox-group>
36
-      </el-form-item>
37
-      <el-form-item label="特殊资源" prop="resource">
38
-        <el-radio-group v-model="ruleForm.resource">
39
-          <el-radio label="线上品牌商赞助"/>
40
-          <el-radio label="线下场地免费"/>
41
-        </el-radio-group>
42
-      </el-form-item>
43
-      <el-form-item label="活动形式" prop="desc">
44
-        <el-input v-model="ruleForm.desc" type="textarea"/>
10
+      <el-form-item label="权限资源" prop="menuArray">
11
+        <!-- default-expanded-keys 展示选中的
12
+             default-checked-keys 勾上选中的-->
13
+        <el-tree
14
+          :data="menuData"
15
+          :default-expanded-keys="ruleForm.menuArray"
16
+          :default-checked-keys="ruleForm.menuArray"
17
+          :props="defaultProps"
18
+          show-checkbox
19
+          node-key="id"
20
+          @check-change="handleCheckChange"/>
45
       </el-form-item>
21
       </el-form-item>
46
       <el-form-item>
22
       <el-form-item>
47
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
23
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
56
   data() {
32
   data() {
57
     return {
33
     return {
58
       ruleForm: {
34
       ruleForm: {
59
-        name: '',
60
-        region: '',
61
-        date1: '',
62
-        date2: '',
63
-        delivery: false,
64
-        type: [],
65
-        resource: '',
66
-        desc: ''
35
+        roleName: '',
36
+        description: '',
37
+        menuArray: [] // 已选中的权限资源
38
+      },
39
+      menuData: [], // 所有权限资源
40
+      defaultProps: { // 设置树形节点的渲染的属性
41
+        id: 'id',
42
+        children: 'children',
43
+        label: 'menuName'
67
       },
44
       },
68
       rules: {
45
       rules: {
69
-        name: [
70
-          { required: true, message: '请输入活动名称', trigger: 'blur' },
71
-          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
72
-        ],
73
-        region: [
74
-          { required: true, message: '请选择活动区域', trigger: 'change' }
46
+        roleName: [
47
+          { required: true, message: '请输入角色名称', trigger: 'blur' }
75
         ],
48
         ],
76
-        date1: [
77
-          { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
49
+        description: [
50
+          { required: true, message: '请输入角色描述', trigger: 'blur' }
78
         ],
51
         ],
79
-        date2: [
80
-          { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
81
-        ],
82
-        type: [
52
+        menuArray: [
83
           { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
53
           { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
84
-        ],
85
-        resource: [
86
-          { required: true, message: '请选择活动资源', trigger: 'change' }
87
-        ],
88
-        desc: [
89
-          { required: true, message: '请填写活动形式', trigger: 'blur' }
90
         ]
54
         ]
91
       }
55
       }
92
     }
56
     }
93
   },
57
   },
58
+  mounted() {
59
+    this.getMenuList()
60
+  },
94
   methods: {
61
   methods: {
95
     submitForm(formName) {
62
     submitForm(formName) {
96
       this.$refs[formName].validate((valid) => {
63
       this.$refs[formName].validate((valid) => {
104
     },
71
     },
105
     resetForm(formName) {
72
     resetForm(formName) {
106
       this.$refs[formName].resetFields()
73
       this.$refs[formName].resetFields()
74
+    },
75
+    handleCheckChange(data, checked, indeterminate) { // 树形图选择事件
76
+      console.log(data, checked, indeterminate)
77
+    },
78
+    getMenuList() { // 获取 菜单列表
79
+      this.$store.dispatch('GetMenuList').then((res) => {
80
+        this.menuData = res.data
81
+      }).catch(() => {
82
+        console.log('error GetMenuList')
83
+      })
107
     }
84
     }
108
   }
85
   }
109
 }
86
 }
110
 </script>
87
 </script>
111
 
88
 
112
 <style scoped>
89
 <style scoped>
113
-
90
+.demo-ruleForm {
91
+  width: 500px;
92
+  margin-top: 20px;
93
+  margin-left: auto;
94
+  margin-right: auto;
95
+}
114
 </style>
96
 </style>

+ 4
- 0
VUECODE/smart-operate-manage/src/views/account/role/index.vue 查看文件

125
       console.log(rows)
125
       console.log(rows)
126
     },
126
     },
127
     formatDate(val) {
127
     formatDate(val) {
128
+      if (val === null) {
129
+        return
130
+      }
128
       var value = new Date(val)
131
       var value = new Date(val)
129
       var year = value.getFullYear()
132
       var year = value.getFullYear()
130
       var month = value.getMonth() + 1
133
       var month = value.getMonth() + 1
149
     deleteRole() { // 删除角色
152
     deleteRole() { // 删除角色
150
     },
153
     },
151
     updateRole() { // 修改角色
154
     updateRole() { // 修改角色
155
+      this.$router.push({ name: 'role-edi' })
152
     },
156
     },
153
     addRole() { // 添加角色
157
     addRole() { // 添加角色
154
       this.$router.push({ name: 'role-add' })
158
       this.$router.push({ name: 'role-add' })

+ 48
- 66
VUECODE/smart-operate-manage/src/views/account/role/info/index.vue 查看文件

1
 <template>
1
 <template>
2
   <div id="root">
2
   <div id="root">
3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
4
-      <el-form-item label="活动名称" prop="name">
5
-        <el-input v-model="ruleForm.name"/>
4
+      <el-form-item label="角色名称" prop="roleName">
5
+        <el-input v-model="ruleForm.roleName"/>
6
       </el-form-item>
6
       </el-form-item>
7
-      <el-form-item label="活动区域" prop="region">
8
-        <el-select v-model="ruleForm.region" placeholder="请选择活动区域">
9
-          <el-option label="区域一" value="shanghai"/>
10
-          <el-option label="区域二" value="beijing"/>
11
-        </el-select>
7
+      <el-form-item label="角色描述" prop="description">
8
+        <el-input v-model="ruleForm.description"/>
12
       </el-form-item>
9
       </el-form-item>
13
-      <el-form-item label="活动时间" required>
14
-        <el-col :span="11">
15
-          <el-form-item prop="date1">
16
-            <el-date-picker v-model="ruleForm.date1" type="date" placeholder="选择日期" style="width: 100%;"/>
17
-          </el-form-item>
18
-        </el-col>
19
-        <el-col :span="2" class="line">-</el-col>
20
-        <el-col :span="11">
21
-          <el-form-item prop="date2">
22
-            <el-time-picker v-model="ruleForm.date2" type="fixed-time" placeholder="选择时间" style="width: 100%;"/>
23
-          </el-form-item>
24
-        </el-col>
25
-      </el-form-item>
26
-      <el-form-item label="即时配送" prop="delivery">
27
-        <el-switch v-model="ruleForm.delivery"/>
28
-      </el-form-item>
29
-      <el-form-item label="活动性质" prop="type">
30
-        <el-checkbox-group v-model="ruleForm.type">
31
-          <el-checkbox label="美食/餐厅线上活动" name="type"/>
32
-          <el-checkbox label="地推活动" name="type"/>
33
-          <el-checkbox label="线下主题活动" name="type"/>
34
-          <el-checkbox label="单纯品牌曝光" name="type"/>
35
-        </el-checkbox-group>
36
-      </el-form-item>
37
-      <el-form-item label="特殊资源" prop="resource">
38
-        <el-radio-group v-model="ruleForm.resource">
39
-          <el-radio label="线上品牌商赞助"/>
40
-          <el-radio label="线下场地免费"/>
41
-        </el-radio-group>
42
-      </el-form-item>
43
-      <el-form-item label="活动形式" prop="desc">
44
-        <el-input v-model="ruleForm.desc" type="textarea"/>
10
+      <el-form-item label="权限资源" prop="menuArray">
11
+        <!-- default-expanded-keys 展示选中的
12
+             default-checked-keys 勾上选中的-->
13
+        <el-tree
14
+          :data="menuData"
15
+          :default-expanded-keys="ruleForm.menuArray"
16
+          :default-checked-keys="ruleForm.menuArray"
17
+          :props="defaultProps"
18
+          show-checkbox
19
+          node-key="id"
20
+          @check-change="handleCheckChange"/>
45
       </el-form-item>
21
       </el-form-item>
46
       <el-form-item>
22
       <el-form-item>
47
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
23
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
56
   data() {
32
   data() {
57
     return {
33
     return {
58
       ruleForm: {
34
       ruleForm: {
59
-        name: '',
60
-        region: '',
61
-        date1: '',
62
-        date2: '',
63
-        delivery: false,
64
-        type: [],
65
-        resource: '',
66
-        desc: ''
35
+        roleName: '',
36
+        description: '',
37
+        menuArray: [] // 已选中的权限资源
38
+      },
39
+      menuData: [], // 所有权限资源
40
+      defaultProps: { // 设置树形节点的渲染的属性
41
+        id: 'id',
42
+        children: 'children',
43
+        label: 'menuName'
67
       },
44
       },
68
       rules: {
45
       rules: {
69
-        name: [
70
-          { required: true, message: '请输入活动名称', trigger: 'blur' },
71
-          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
72
-        ],
73
-        region: [
74
-          { required: true, message: '请选择活动区域', trigger: 'change' }
46
+        roleName: [
47
+          { required: true, message: '请输入角色名称', trigger: 'blur' }
75
         ],
48
         ],
76
-        date1: [
77
-          { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
49
+        description: [
50
+          { required: true, message: '请输入角色描述', trigger: 'blur' }
78
         ],
51
         ],
79
-        date2: [
80
-          { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
81
-        ],
82
-        type: [
52
+        menuArray: [
83
           { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
53
           { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
84
-        ],
85
-        resource: [
86
-          { required: true, message: '请选择活动资源', trigger: 'change' }
87
-        ],
88
-        desc: [
89
-          { required: true, message: '请填写活动形式', trigger: 'blur' }
90
         ]
54
         ]
91
       }
55
       }
92
     }
56
     }
93
   },
57
   },
58
+  mounted() {
59
+    this.getMenuList()
60
+  },
94
   methods: {
61
   methods: {
95
     submitForm(formName) {
62
     submitForm(formName) {
96
       this.$refs[formName].validate((valid) => {
63
       this.$refs[formName].validate((valid) => {
104
     },
71
     },
105
     resetForm(formName) {
72
     resetForm(formName) {
106
       this.$refs[formName].resetFields()
73
       this.$refs[formName].resetFields()
74
+    },
75
+    handleCheckChange(data, checked, indeterminate) { // 树形图选择事件
76
+      console.log(data, checked, indeterminate)
77
+    },
78
+    getMenuList() { // 获取 菜单列表
79
+      this.$store.dispatch('GetMenuList').then((res) => {
80
+        this.menuData = res.data
81
+      }).catch(() => {
82
+        console.log('error GetMenuList')
83
+      })
107
     }
84
     }
108
   }
85
   }
109
 }
86
 }
110
 </script>
87
 </script>
111
 
88
 
112
 <style scoped>
89
 <style scoped>
113
-
90
+.demo-ruleForm {
91
+  width: 500px;
92
+  margin-top: 20px;
93
+  margin-left: auto;
94
+  margin-right: auto;
95
+}
114
 </style>
96
 </style>

+ 7
- 0
VUECODE/smart-property-manage/src/api/role.js 查看文件

7
     params: query
7
     params: query
8
   })
8
   })
9
 }
9
 }
10
+
11
+export function fetchMenuList() {
12
+  return request({
13
+    url: '/menus',
14
+    method: 'get'
15
+  })
16
+}

+ 18
- 2
VUECODE/smart-property-manage/src/store/modules/role.js 查看文件

1
-import { fetchList } from '@/api/role'
1
+import { fetchList, fetchMenuList } from '@/api/role'
2
 
2
 
3
 const transaction = {
3
 const transaction = {
4
   namespaced: true,
4
   namespaced: true,
5
   state: {
5
   state: {
6
     total: '',
6
     total: '',
7
-    roleList: []
7
+    roleList: [],
8
+    menuList: []
8
   },
9
   },
9
 
10
 
10
   mutations: {
11
   mutations: {
13
     },
14
     },
14
     SET_TOTAL: (state, total) => {
15
     SET_TOTAL: (state, total) => {
15
       state.total = total
16
       state.total = total
17
+    },
18
+    SET_MENU_LIST: (state, data) => {
19
+      state.menuList = data
16
     }
20
     }
17
   },
21
   },
18
 
22
 
30
         })
34
         })
31
       })
35
       })
32
     }
36
     }
37
+  },
38
+  FetchMenuList({ commit }) {
39
+    console.log(1)
40
+    return new Promise((resolve, reject) => {
41
+      fetchMenuList().then(response => {
42
+        const data = response.data
43
+        commit('SET_MENU_LIST', data)
44
+        resolve()
45
+      }).catch(error => {
46
+        reject(error)
47
+      })
48
+    })
33
   }
49
   }
34
 }
50
 }
35
 
51
 

+ 33
- 0
VUECODE/smart-property-manage/src/views/account/add/role-add.vue 查看文件

7
       <el-form-item label="角色描述" prop="building">
7
       <el-form-item label="角色描述" prop="building">
8
         <el-input v-model="ruleForm.building"/>
8
         <el-input v-model="ruleForm.building"/>
9
       </el-form-item>
9
       </el-form-item>
10
+      <el-tree
11
+        :data="menuList"
12
+        show-checkbox
13
+        node-key="id"
14
+        :props="defaultProps">
15
+      </el-tree>
10
       <el-form-item>
16
       <el-form-item>
11
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
17
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
12
         <el-button @click="resetForm('ruleForm')">重置</el-button>
18
         <el-button @click="resetForm('ruleForm')">重置</el-button>
16
 </template>
22
 </template>
17
 
23
 
18
 <script>
24
 <script>
25
+import { mapState, mapActions, mapMutations } from 'vuex'
26
+import waves from '@/directive/waves' // Waves directive
27
+import { parseTime } from '@/utils'
28
+
19
 export default {
29
 export default {
30
+  computed: {
31
+    ...mapState('role', {
32
+      menuList: s => s.menuList
33
+    })
34
+  },
20
   data() {
35
   data() {
21
     return {
36
     return {
22
       ruleForm: {
37
       ruleForm: {
32
         phase: [
47
         phase: [
33
           { required: true, message: '请输入角色名称', trigger: 'blur' }
48
           { required: true, message: '请输入角色名称', trigger: 'blur' }
34
         ]
49
         ]
50
+      },
51
+      defaultProps: {
52
+        children: 'children',
53
+        label: 'menuName'
35
       }
54
       }
36
     }
55
     }
37
   },
56
   },
57
+  created(){
58
+    this.getMenuList()
59
+  },
38
   methods: {
60
   methods: {
61
+    ...mapMutations('role', {
62
+    }),
63
+    ...mapActions('role', [
64
+      'FetchMenuList'
65
+    ]),
39
     submitForm(formName) { // 提交
66
     submitForm(formName) { // 提交
40
       this.$refs[formName].validate((valid) => {
67
       this.$refs[formName].validate((valid) => {
41
         if (valid) {
68
         if (valid) {
46
         }
73
         }
47
       })
74
       })
48
     },
75
     },
76
+    getMenuList() {
77
+      this.FetchMenuList().then(() => {
78
+      }).catch(() => {
79
+        console.log('get list error')
80
+      })
81
+    },
49
     resetForm(formName) { // 重置
82
     resetForm(formName) { // 重置
50
       this.$refs[formName].resetFields()
83
       this.$refs[formName].resetFields()
51
     },
84
     },