Ver código fonte

用户流程权限配置管理

yue 5 anos atrás
pai
commit
01790a70c2

+ 62 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/privilegePre/entity/PrivilegePre.java

@@ -0,0 +1,62 @@
+package com.jeeplus.modules.sg.managementcenter.privilegePre.entity;
+
+import com.jeeplus.core.persistence.DataEntity;
+
+public class PrivilegePre extends DataEntity<PrivilegePre> {
+    private String id;
+    private String uid;
+    private String pid;
+    private String name;
+    private String oneKey;
+    private int oneVersion;
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getOneKey() {
+        return oneKey;
+    }
+
+    public void setOneKey(String oneKey) {
+        this.oneKey = oneKey;
+    }
+
+    public int getOneVersion() {
+        return oneVersion;
+    }
+
+    public void setOneVersion(int oneVersion) {
+        this.oneVersion = oneVersion;
+    }
+}

+ 26 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/privilegePre/mapper/PrivilegePreMapper.java

@@ -0,0 +1,26 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.managementcenter.privilegePre.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@MyBatisMapper
+public interface PrivilegePreMapper extends BaseMapper<PrivilegePre> {
+    PrivilegePre findListUser(String uid);
+
+    List<PrivilegePre> findProcdef(List<String> needPid);
+
+
+    void updatePersonal(@Param("pid") String pid,@Param("uid") String uid);
+
+    List<PrivilegePre> findAllProcDef();
+
+    void addPersonal(PrivilegePre privilegePre);
+}

+ 247 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/privilegePre/mapper/xml/PrivilegePreMapper.xml

@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.privilegePre.mapper.PrivilegePreMapper">
+
+	<select id="findAllList" resultType="PrivilegePre" >
+		select id,Uid,Pid from xm_personnel_management
+	</select>
+
+	<select id="findListUser" resultType="com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre" >
+		select id,Uid,Pid from xm_personnel_management where Uid = #{uid}
+	</select>
+
+	<select id="findProcdef"  resultType="com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre">
+		select ID_ as id,NAME_ as name,KEY_ as oneKey,VERSION_ as oneVersion from act_re_procdef where ID_ in
+		(
+			<foreach collection="list" item="item" separator=",">
+				#{item}
+			</foreach>
+		);
+	</select>
+
+	<update id="updatePersonal">
+		update xm_personnel_management set Pid = #{pid} where uid = #{uid};
+	</update>
+
+	<insert id="addPersonal">
+		insert into xm_personnel_management
+		(id, create_by, create_date, update_by, update_date, del_flag, remarks, Uid, Pid)
+		values (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{delFlag},
+			#{remarks},
+			#{uid},
+			#{pid}
+		);
+		update xm_personnel_management set Pid = #{pid} where uid = #{uid};
+	</insert>
+
+	<select id="findAllProcDef" resultType="com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre">
+		select ID_ as id,NAME_ as name ,KEY_ as oneKey,VERSION_ as oneVersion from act_re_procdef
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO xm_project_details(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			pro_type,
+			demand_unit,
+			bdz_name,
+			line_name,
+			require_name,
+			project_id,
+			project_name,
+			project_number,
+			project_manage_role,
+			distribution_engineering,
+			distribution_materials,
+			distribution_system,
+			distribution_policy,
+			management_leader,
+			run_unit,
+			run_unit_role,
+			through_research_role,
+			construction_unit,
+			construction_unit_role,
+			construction_unit_manage,
+			construction_unit_leader,
+			design_unit,
+			design_unit_manage,
+			design_unit_leader,
+			clarificaiton_type,
+			build_classification_resons,
+			bulbid_resons,
+			asic_equipment,
+			run_the_class,
+			project_team,
+			cost_estimate,
+			whether_rhe_upwind,
+			sure_da_date,
+			text_remark,
+			power_line,
+			power_scope,
+			project_type,
+			power_flag_package,
+			preliminary_judgment,
+			flag_civil_engineering,
+			steel_tube_pole,
+			flag_approval_planning,
+			equ_create_type,
+			equ_create_size,
+			flag_new_equ_name,
+			include_bdz_news,
+			flag_no_electrical,
+			drawings_work,
+			flag_automation,
+			two_and_three_remote,
+			phone_style,
+			stay_open_area,
+			ring_network_cabinet,
+			station_dtu,
+			status,
+			acquisition_status,
+			construction_status,
+			whether_close_status,
+			earlyMaterial,
+			preConstruction
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{type},
+			#{demandUnit},
+			#{bdzName},
+			#{lineName},
+    		#{requireName},
+    		#{projectId},
+			#{projectName},
+			#{projectNumber},
+			#{projectManageRole},
+			#{distributionEngineering},
+			#{distributionMaterials},
+			#{distributionSystem},
+			#{distributionPolicy},
+			#{managementLeader},
+			#{runUnit},
+			#{runUnitRole},
+			#{throughResearchRole},
+			#{constructionUnit},
+			#{constructionUnitRole},
+			#{constructionUnitManage},
+			#{constructionUnitLeader},
+			#{designUnit},
+			#{designUnitManage},
+			#{designUnitLeader},
+			#{clarificaitonType},
+    		#{bulidClassificationResons},
+    		#{bulbidResons},
+    		#{asicEquipment},
+    		#{runTheClass},
+    		#{projectTeam},
+    		#{costEstimate},
+    		#{whetherRheUpwind},
+    		#{sureDaDate},
+    		#{textRemark},
+    		#{powerLine},
+    	 	#{powerScope},
+    	 	#{projectType},
+        	#{powerFlagPackage},
+     	 	#{preliminaryJudgment},
+    	 	#{flagCivilEngineering},
+    	 	#{steelTubePole},
+    	 	#{flagApprovalPlanning},
+    		#{equCreateType},
+    		#{equCreateSize},
+    	 	#{flagNewEquName},
+    	 	#{includeBdzNews},
+    		#{flagNoElectrical},
+			#{drawingsWork},
+    	 	#{flagAutomation},
+    	 	#{twoAndThreeRemote},
+     		#{phoneStyle},
+    	 	#{stayOpenArea},
+    	 	#{ringNetworkCabinet},
+    	 	#{stationDtu},
+    		#{status},
+    		#{acquisitionStatus},
+    		#{constructionStatus},
+    		#{whetherCloseStatus},
+    		#{earlyMaterial},
+    		#{preConstruction}
+		)
+	</insert>
+
+
+
+	<update id="update">
+		UPDATE xm_project_details SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			bdz_name = #{bdzName},
+			line_name = #{lineName},
+			require_name = #{requireName},
+			project_id = #{projectId},
+			project_name = #{projectName},
+			project_number = #{projectNumber},
+			build_classification_resons = #{bulidClassificationResons},
+			bulbid_resons = #{bulbidResons},
+			asic_equipment = #{asicEquipment},
+			run_the_class = #{runTheClass},
+			project_team = #{projectTeam},
+			cost_estimate = #{costEstimate},
+			whether_rhe_upwind = #{whetherRheUpwind},
+			sure_da_date = #{sureDaDate},
+			text_remark = #{textRemark},
+			power_line = #{powerLine},
+			power_scope = #{powerScope},
+			project_type = #{projectType},
+			power_flag_package = #{powerFlagPackage},
+			preliminary_judgment = #{preliminaryJudgment},
+			flag_civil_engineering = #{flagCivilEngineering},
+			steel_tube_pole = #{steelTubePole},
+			flag_approval_planning = #{flagApprovalPlanning},
+			equ_create_type = #{equCreateType},
+			equ_create_size = #{equCreateSize},
+			flag_new_equ_name = #{flagNewEquName},
+			include_bdz_news = #{includeBdzNews},
+			flag_no_electrical = #{flagNoElectrical},
+			drawings_work = #{drawingsWork},
+			flag_automation = #{flagAutomation},
+			two_and_three_remote = #{twoAndThreeRemote},
+			phone_style = #{phoneStyle},
+			stay_open_area = #{stayOpenArea},
+			ring_network_cabinet = #{ringNetworkCabinet},
+			station_dtu = #{stationDtu}
+		WHERE id = #{id}
+	</update>
+
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM xm_project_details
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE xm_project_details SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+
+</mapper>

+ 121 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/privilegePre/service/PrivilegePreService.java

@@ -0,0 +1,121 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.managementcenter.privilegePre.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre;
+import com.jeeplus.modules.sg.managementcenter.privilegePre.mapper.PrivilegePreMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 请假表单Service
+ * @author lgf
+ * @version 2018-06-12
+ */
+@Service
+@Transactional(readOnly = true)
+public class PrivilegePreService extends CrudService<PrivilegePreMapper, PrivilegePre> {
+    @Autowired
+	private PrivilegePreMapper privilegePreMapper;
+
+	public PrivilegePre get(String id) {
+		PrivilegePre project = super.get(id);
+		return project;
+	}
+
+	public Page<PrivilegePre> findPage(Page<PrivilegePre> page, PrivilegePre entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		PrivilegePre listUser = privilegePreMapper.findListUser(entity.getUid());
+		if (listUser!=null&&!"".equals(listUser)) {
+			String pid = listUser.getPid();
+			String[] split = pid.split(";");
+			List<String> needPid = new ArrayList<>();
+			for (int i = 0; i < split.length; i++) {
+				needPid.add(split[i]);
+			}
+			List<PrivilegePre> procdef = privilegePreMapper.findProcdef(needPid);
+			page.setList(procdef);
+		}
+		return page;
+	}
+
+	public List<PrivilegePre> findProcdef(List<String> needPid){
+		return privilegePreMapper.findProcdef(needPid);
+	}
+
+	public PrivilegePre findListUser(String uid){
+		return privilegePreMapper.findListUser(uid);
+	}
+
+	@Transactional(readOnly = false)
+	public void updatePersonal(String pid, String uid){
+		privilegePreMapper.updatePersonal(pid, uid);
+	}
+
+	@Transactional(readOnly = false)
+	public void addPersonal(PrivilegePre privilegePre){
+		privilegePreMapper.addPersonal(privilegePre);
+	}
+
+
+
+	public Page<PrivilegePre> findAllDefPage(Page<PrivilegePre> page, PrivilegePre entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		Map<String, PrivilegePre> map = new HashMap<>();
+		List<PrivilegePre> allProcDef = privilegePreMapper.findAllProcDef();
+		List<PrivilegePre> showProcDef = new ArrayList<>();
+		for (PrivilegePre p : allProcDef) {
+			String Key = p.getOneKey();
+			if (map.containsKey(Key)) {
+				int s = map.get(Key).getOneVersion();
+				if (p.getOneVersion() > s) {
+					map.put(Key, p);
+				}
+			} else {
+				map.put(Key, p);
+			}
+		}
+		Set<String> afterMap = map.keySet();
+		Iterator<String> it = afterMap.iterator();
+		while (it.hasNext()) {
+			showProcDef.add(map.get(it.next()));
+		}
+
+		PrivilegePre listUser = privilegePreMapper.findListUser(entity.getUid());
+		if (listUser != null&&!"".equals(listUser)) {
+			String pid = listUser.getPid();
+			String[] split = pid.split(";");
+			for (int i = 0; i < split.length; i++) {
+				Iterator<PrivilegePre> iterator = showProcDef.iterator();
+				while (iterator.hasNext()) {
+					PrivilegePre next = iterator.next();
+					if (next.getId().equals(split[i])) {
+						iterator.remove();
+					}
+				}
+			}
+		}
+		page.setList(showProcDef);
+		return page;
+	}
+
+
+/*	public Page<User> findUser(Page<User> page, User user) {
+		dataRuleFilter(user);
+		// 设置分页参数
+		user.setPage(page);
+		// 执行分页查询
+		page.setList(userMapper.findList(user));
+		return page;
+	}*/
+
+}

+ 158 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/privilegePre/web/PrivilegePreController.java

@@ -0,0 +1,158 @@
+
+
+package com.jeeplus.modules.sg.managementcenter.privilegePre.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.managementcenter.privilegePre.entity.PrivilegePre;
+import com.jeeplus.modules.sg.managementcenter.privilegePre.service.PrivilegePreService;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementcenter/privilegepre")
+public class PrivilegePreController extends BaseController {
+
+	@Autowired
+	private PrivilegePreService privilegePreService;
+
+	
+/*	@ModelAttribute
+	public Project get(@RequestParam(required=false) String id) {
+		Project entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = projectService.get(id);
+		}
+		if (entity == null){
+			entity = new Project();
+		}
+		return entity;
+	}*/
+
+
+	@RequestMapping(value = "list")
+	public String list(PrivilegePre privilegePre, Model model) {
+		model.addAttribute("privilege", privilegePre);
+		return "modules/sg/managementcenter/privilege/privilege";
+	}
+
+	@RequestMapping(value = "privilegeProcdef")
+	public String privilegeProcdef(PrivilegePre privilegePre, Model model) {
+		model.addAttribute("privilegePre", privilegePre);
+		return "modules/sg/managementcenter/privilege/privilegeProcdef";
+	}
+
+
+	@RequestMapping(value = "allProcDef")
+	public String allProcDef(PrivilegePre privilegePre, Model model) {
+		model.addAttribute("privilegePre", privilegePre);
+		return "modules/sg/managementcenter/privilege/allProcDef";
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(PrivilegePre privilegePre, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<PrivilegePre> page = privilegePreService.findPage(new Page<PrivilegePre>(request, response), privilegePre);
+		return getBootstrapData(page);
+	}
+
+
+	@ResponseBody
+	@RequestMapping(value = "allProcData")
+	public Map<String, Object> allProcData(PrivilegePre privilegePre, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<PrivilegePre> page = privilegePreService.findAllDefPage(new Page<PrivilegePre>(request, response), privilegePre);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 新增权限
+	 */
+	@ResponseBody
+	@RequestMapping(value = "addPerson")
+	public AjaxJson add(PrivilegePre privilegePre) {
+		AjaxJson j = new AjaxJson();
+		String pid = privilegePre.getPid();
+		if (pid == null || "".equals(pid)) {
+			j.setSuccess(false);
+			j.setMsg("请选择需要添加的项目");
+		} else {
+			String uid = privilegePre.getUid();
+			PrivilegePre listUser = privilegePreService.findListUser(uid);
+			if (listUser == null || "".equals(listUser)) {
+				privilegePre.preInsert();
+				String ling=";";
+				pid = pid.replace(",", ling);
+				privilegePre.setPid(pid);
+				privilegePreService.addPersonal(privilegePre);
+			} else {
+				String lpid = listUser.getPid();
+				lpid = lpid + ";" + privilegePre.getPid();
+				privilegePreService.updatePersonal(lpid, uid);
+			}
+			j.setMsg("取消权限成功");
+		}
+		return j;
+	}
+
+	/**
+	 * 删除
+	 */
+	@ResponseBody
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson delete(PrivilegePre privilegePre) {
+		AjaxJson j = new AjaxJson();
+		String uid = privilegePre.getUid();
+		PrivilegePre listUser = privilegePreService.findListUser(uid);
+		String pid = listUser.getPid();
+		String[] split = pid.split(";");
+		List<String> compareList = new ArrayList<>();
+		for (int i = 0; i < split.length; i++) {
+			if (!privilegePre.getPid().equals(split[i])) {
+				compareList.add(split[i]);
+			}
+		}
+		String newPid = "";
+		for (String a :
+				compareList) {
+			newPid += a+";";
+		}
+		privilegePreService.updatePersonal(newPid, uid);
+		j.setMsg("取消权限成功");
+		return j;
+	}
+
+/*
+@ResponseBody
+	@RequestMapping(value = {"userList"})
+	public Map<String, Object> list(User user, HttpServletRequest request, HttpServletResponse response, Model model,String roleNeedName) {
+		if (roleNeedName != null&&!roleNeedName.equals("")) {
+			Role role = null;
+			String[] split = roleNeedName.split(";");
+			List<Role> roleList = new ArrayList<>();
+			for (int i = 0; i < split.length; i++) {
+				role = new Role();
+				role.setName(split[i]);
+				roleList.add(role);
+			}
+			user.setRoleList(roleList);
+		}
+//		Page<User> page = privilegeService.findUser(new Page<User>(request, response), user);
+//		return getBootstrapData(page);
+	}
+*/
+
+
+}

+ 135 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/allProcDef.js

@@ -0,0 +1,135 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script type="text/javascript">
+    $(document).ready(function () {
+        var uid = $("#uid").val();
+        //表格初始化
+        $('#table').bootstrapTable({
+            //请求方法
+            method: 'post',
+            //类型json
+            dataType: "json",
+            contentType: "application/x-www-form-urlencoded",
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //显示检索按钮
+            showSearch: false,
+            //显示刷新按钮
+            showRefresh: false,
+            //显示切换手机试图按钮
+            showToggle: false,
+            //显示 内容列下拉框
+            showColumns: false,
+            //显示切换分页按钮
+            showPaginationSwitch: false,
+            //是否显示分页(*)
+            pagination: false,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber: 1,
+            //每页的记录行数(*)
+            pageSize: 10,
+            //可供选择的每页的行数(*)
+            pageList: [10, 25, 50, 100],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/sg/managementcenter/privilegepre/allProcData?uid="+uid,
+            //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+            //queryParamsType:'',
+            ////查询参数,每次调用是会带上这个参数,可自定义
+            queryParams: function (params) {
+                var searchParam = $("#searchForm").serializeJSON();
+                searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+                searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+                searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+                return searchParam;
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            //分页方式:client客户端分页,server服务端分页(*)
+            sidePagination: "server",
+            contextMenuTrigger: "right",//pc端 按右键弹出菜单
+            contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+            contextMenu: '#context-menu',
+            onContextMenuItem: function (row, $el) {
+            },
+            onClickRow: function (row, $el) {
+            },
+            columns: [{
+                checkbox: true
+                }
+                ,
+                {
+                    field: 'name',
+                    title: '流程名称',
+                    sortable: true
+
+                }, {
+                    field: 'oneVersion',
+                    title: '版本号',
+                    sortable: true
+                }]
+        });
+
+
+        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+            $('#table').bootstrapTable("toggleView");
+        }
+
+        $('#table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+            'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', !$('#table').bootstrapTable('getSelections').length);
+            $('#edit').prop('disabled', $('#table').bootstrapTable('getSelections').length != 1);
+        });
+
+        $("#search").click("click", function () {// 绑定查询按扭
+            $('#table').bootstrapTable('refresh');
+        });
+        $("#reset").click("click", function () {// 绑定查询按扭
+            $("#searchForm  input").val("");
+            $("#searchForm  select").val("");
+            $('#table').bootstrapTable('refresh');
+        });
+
+        $('#beginInDate').datetimepicker({
+            format: "YYYY-MM-DD HH:mm:ss"
+        });
+        $('#endInDate').datetimepicker({
+            format: "YYYY-MM-DD HH:mm:ss"
+        });
+
+    });
+
+function getIdSelections() {
+    return $.map($("#table").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+function edit(id) {
+    if (!id) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑用户', "${ctx}/sys/user/form?id=" + id, '800px', '680px');
+
+}
+
+function add() {
+	var uid = $("#uid").val();
+	jp.openSaveDialog('添加权限', "${ctx}/sg/managementcenter/privilegepre/allProcDef?uid=" + uid, '800px', '680px');
+}
+
+function save() {
+    var uid = $("#uid").val();
+    jp.get("${ctx}/sg/managementcenter/privilegepre/addPerson?pid=" + getIdSelections() + "&uid=" + uid);
+    jp.close();
+}
+
+function refresh() {
+    $('#table').bootstrapTable('refresh');
+}
+
+</script>

+ 42 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/allProcDef.jsp

@@ -0,0 +1,42 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>用户管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
+	<script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
+	<%@ include file="allProcDef.js"%>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">用户列表</h3>
+	</div>
+	<div class="panel-body">
+	<div class="row">
+			<!-- 搜索框-->
+			<div id="search-collapse" class="collapse">
+
+			</div><!-- 搜索框结束 -->
+		<form:form id="privilegePre" modelAttribute="privilegePre" class="form-horizontal">
+			<form:hidden path="uid"/>
+		</form:form>
+		<!-- 表格 -->
+	    <table id="table" data-toolbar="#toolbar">
+	    </table>
+	
+	    <!-- context menu -->
+	    <ul id="context-menu" class="dropdown-menu">
+	        <li data-item="edit"><a>编辑</a></li>
+	        <li data-item="delete"><a>删除</a></li>
+	        <li data-item="cancel"><a>取消</a></li>
+	    </ul>
+	</div>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 188 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/privilege.js

@@ -0,0 +1,188 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script type="text/javascript">
+	$(document).ready(function() {
+		//表格初始化
+		$('#table').bootstrapTable({
+
+			//请求方法
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			//是否显示行间隔色
+			striped: true,
+			//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+			cache: false,
+			//显示检索按钮
+			showSearch: true,
+			//显示刷新按钮
+			showRefresh: true,
+			//显示切换手机试图按钮
+			showToggle: true,
+			//显示 内容列下拉框
+			showColumns: true,
+			//显示切换分页按钮
+			showPaginationSwitch: true,
+			//是否显示分页(*)
+			pagination: true,
+			//排序方式
+			sortOrder: "asc",
+			//初始化加载第一页,默认第一页
+			pageNumber:1,
+			//每页的记录行数(*)
+			pageSize: 10,
+			//可供选择的每页的行数(*)
+			pageList: [10, 25, 50, 100],
+			//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+			url: "${ctx}/sys/user/list",
+			//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+			//queryParamsType:'',
+			////查询参数,每次调用是会带上这个参数,可自定义
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				return searchParam;
+			},
+			onShowSearch: function () {
+				$("#search-collapse").slideToggle();
+			},
+			//分页方式:client客户端分页,server服务端分页(*)
+			sidePagination: "server",
+			contextMenuTrigger:"right",//pc端 按右键弹出菜单
+			contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+			contextMenu: '#context-menu',
+			onContextMenuItem: function(row, $el){
+				if($el.data("item") == "edit"){
+					edit(row.id);
+				} else if($el.data("item") == "delete"){
+					deleteAll(row.id);
+				}
+			},
+
+			onClickRow: function(row, $el){
+			},
+			columns: [{
+				checkbox: true
+
+			}, {
+				field: 'photo',
+				title: '头像',
+				formatter:function(value, row , index){
+					if(value ==''){
+						return '<img height="40px" src="${ctxStatic}/common/images/flat-avatar.png">';
+					}else{
+						return '<img   onclick="jp.showPic(\''+value+'\')"'+' height="40px" src="'+value+'">';
+					}
+
+				}
+
+			}, {
+				field: 'loginName',
+				title: '登录名',
+				sortable: true
+
+			}, {
+				field: 'name',
+				title: '姓名',
+				sortable: true
+			}]
+
+		});
+
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+			$('#table').bootstrapTable("toggleView");
+		}
+
+		$('#table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+			'check-all.bs.table uncheck-all.bs.table', function () {
+			$('#remove').prop('disabled', ! $('#table').bootstrapTable('getSelections').length);
+			$('#edit').prop('disabled', $('#table').bootstrapTable('getSelections').length!=1);
+		});
+
+		$("#btnImport").click(function(){
+			jp.open({
+				type: 2,
+				area: [500, 200],
+				auto: true,
+				title:"导入数据",
+				content: "${ctx}/tag/importExcel" ,
+				btn: ['下载模板','确定', '关闭'],
+
+				btn1: function(index, layero){
+					jp.downloadFile('${ctx}/sys/user/import/template');
+				},
+				btn2: function(index, layero){
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					iframeWin.contentWindow.importExcel('${ctx}/sys/user/import', function (data) {
+						if(data.success){
+							jp.success(data.msg);
+							refresh();
+						}else{
+							jp.error(data.msg);
+						}
+						jp.close(index);
+					});//调用保存事件
+					return false;
+				},
+
+				btn3: function(index){
+					//  jp.close(index);
+				}
+
+			});
+		});
+
+		$("#search").click("click", function() {// 绑定查询按扭
+			$('#table').bootstrapTable('refresh');
+		});
+		$("#reset").click("click", function() {// 绑定查询按扭
+			$("#searchForm  input").val("");
+			$("#searchForm  select").val("");
+			$('#table').bootstrapTable('refresh');
+		});
+
+		$('#beginInDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+		$('#endInDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+
+	});
+
+function getIdSelections() {
+	return $.map($("#table").bootstrapTable('getSelections'), function (row) {
+		return row.id
+	});
+}
+
+function deleteAll(ids){
+	if(!ids){
+		ids =  getIdSelections();
+	}
+	jp.confirm('确认要删除选中用户吗?',  function(){
+		jp.loading();
+		$.get("${ctx}/sys/user/deleteAll?ids=" +ids, function(data){
+			if(data.success){
+				$('#table').bootstrapTable('refresh');
+				jp.success(data.msg);
+			}else{
+				jp.error(data.msg);
+			}
+		})
+	})
+}
+function edit(id){
+	if(!id){
+		id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑用户', "${ctx}/sg/managementcenter/privilegepre/privilegeProcdef?uid=" + id,'800px', '680px');
+
+}
+function refresh() {
+	$('#table').bootstrapTable('refresh');
+}
+</script>

+ 75 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/privilege.jsp

@@ -0,0 +1,75 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>用户管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
+	<script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
+	<%@ include file="privilege.js"%>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">用户列表</h3>
+	</div>
+	<div class="panel-body">
+	<div class="row">
+			<!-- 搜索框-->
+			<div id="search-collapse" class="collapse">
+				<div class="accordion-inner">
+					<form id="searchForm" class="form form-horizontal well clearfix" >
+						<div class="col-sm-4">
+							<label class="label-item single-overflow pull-left" title="登录名:">登录名:</label>
+							<input type="text" name="loginName" maxlength="100"  class=" form-control"/>
+						</div>
+						<div class="col-sm-4">
+							<label class="label-item single-overflow pull-left" title="姓名:">姓名:</label>
+							<input type="text" name="name" maxlength="100"  class=" form-control"/>
+						</div>
+						<div class="col-sm-4">
+					    	<label class="label-item single-overflow pull-left" title="公司:">归属公司:</label>
+					    	<sys:treeselect id="company" name="company.id"
+										title="公司" url="/sys/office/treeData?type=1" cssClass=" form-control" allowClear="true"/>
+					    </div>
+					    <div class="col-sm-4">
+					    	<label class="label-item single-overflow pull-left" title="员工:">归属部门:</label>
+					   		<sys:treeselect id="office" name="office.id"
+								title="部门" url="/sys/office/treeData?type=2" cssClass=" form-control" allowClear="true" notAllowSelectParent="true"/>
+					    </div>
+					    <div class="col-sm-4">
+							 <div style="margin-top:26px">
+							  <a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							  <a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+							</div>
+					    </div>
+					</form>
+				</div>
+			</div><!-- 搜索框结束 -->
+		
+		<!-- 工具栏 -->
+	    <div id="toolbar">
+				<button id="edit" class="btn btn-success" disabled onclick="edit()">
+		            <i class="glyphicon glyphicon-edit"></i> 修改权限
+		        </button>
+	    </div><!-- 工具栏结束 -->
+	    
+	    
+	    <!-- 表格 -->
+	    <table id="table" data-toolbar="#toolbar">
+	    </table>
+	
+	    <!-- context menu -->
+	    <ul id="context-menu" class="dropdown-menu">
+	        <li data-item="edit"><a>编辑</a></li>
+	        <li data-item="delete"><a>删除</a></li>
+	        <li data-item="cancel"><a>取消</a></li>
+	    </ul>
+	</div>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/privilegeProcdef.js

@@ -0,0 +1,149 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script type="text/javascript">
+    $(document).ready(function () {
+        var uid = $("#uid").val();
+        window.operateEvents = {
+            'click #TableView': function (e, value, row, index) {
+                jp.confirm('确认要取消权限吗?', function () {
+                    jp.loading();
+                    jp.get("${ctx}/sg/managementcenter/privilegepre/deleteAll?pid=" + row.id + "&uid=" + uid, function (data) {
+                        if (data.success) {
+                            $('#table').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                })
+            }
+        };
+        //表格初始化
+        $('#table').bootstrapTable({
+            //请求方法
+            method: 'post',
+            //类型json
+            dataType: "json",
+            contentType: "application/x-www-form-urlencoded",
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //显示检索按钮
+            showSearch: true,
+            //显示刷新按钮
+            showRefresh: true,
+            //显示切换手机试图按钮
+            showToggle: true,
+            //显示 内容列下拉框
+            showColumns: true,
+            //显示切换分页按钮
+            showPaginationSwitch: true,
+            //是否显示分页(*)
+            pagination: true,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber: 1,
+            //每页的记录行数(*)
+            pageSize: 10,
+            //可供选择的每页的行数(*)
+            pageList: [10, 25, 50, 100],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/sg/managementcenter/privilegepre/data?uid=" + uid,
+            //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+            //queryParamsType:'',
+            ////查询参数,每次调用是会带上这个参数,可自定义
+            queryParams: function (params) {
+                var searchParam = $("#searchForm").serializeJSON();
+                searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+                searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+                searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+                return searchParam;
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            //分页方式:client客户端分页,server服务端分页(*)
+            sidePagination: "server",
+            contextMenuTrigger: "right",//pc端 按右键弹出菜单
+            contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+            contextMenu: '#context-menu',
+            onContextMenuItem: function (row, $el) {
+            },
+            onClickRow: function (row, $el) {
+            },
+            columns: [
+                {
+                    field: 'name',
+                    title: '流程名称',
+                    sortable: true
+
+                }, {
+                    field: 'oneVersion',
+                    title: '版本号',
+                    sortable: true
+                }, {
+                    title: '取消权限',
+                    events: operateEvents,
+                    formatter: function (value, row, index) {
+                        return [
+                            '<input id="TableView" type="button" value="取消权限" class="form-control btn btn-primary">',
+                        ].join('');
+                    }
+                }]
+        });
+
+
+        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+            $('#table').bootstrapTable("toggleView");
+        }
+
+        $('#table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+            'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', !$('#table').bootstrapTable('getSelections').length);
+            $('#edit').prop('disabled', $('#table').bootstrapTable('getSelections').length != 1);
+        });
+
+        $("#search").click("click", function () {// 绑定查询按扭
+            $('#table').bootstrapTable('refresh');
+        });
+        $("#reset").click("click", function () {// 绑定查询按扭
+            $("#searchForm  input").val("");
+            $("#searchForm  select").val("");
+            $('#table').bootstrapTable('refresh');
+        });
+
+        $('#beginInDate').datetimepicker({
+            format: "YYYY-MM-DD HH:mm:ss"
+        });
+        $('#endInDate').datetimepicker({
+            format: "YYYY-MM-DD HH:mm:ss"
+        });
+
+    });
+
+function getIdSelections() {
+    return $.map($("#table").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+function edit(id) {
+    if (!id) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑用户', "${ctx}/sys/user/form?id=" + id, '800px', '680px');
+
+}
+
+function add() {
+	var uid = $("#uid").val();
+	jp.openSaveDialog('添加权限', "${ctx}/sg/managementcenter/privilegepre/allProcDef?uid=" + uid, '800px', '680px');
+}
+
+function refresh() {
+    $('#table').bootstrapTable('refresh');
+}
+
+</script>

+ 68 - 0
src/main/webapp/webpage/modules/sg/managementcenter/privilege/privilegeProcdef.jsp

@@ -0,0 +1,68 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>用户管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
+	<script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
+	<%@ include file="privilegeProcdef.js"%>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">用户列表</h3>
+	</div>
+	<div class="panel-body">
+	<div class="row">
+			<!-- 搜索框-->
+			<div id="search-collapse" class="collapse">
+				<form:form id="privilegePre" modelAttribute="privilegePre" class="form-horizontal">
+					<form:input path="uid"/>
+				</form:form>
+				<div class="accordion-inner">
+					<form id="searchForm" class="form form-horizontal well clearfix" >
+						<div class="col-sm-4">
+							<label class="label-item single-overflow pull-left" title="登录名:">登录名:</label>
+							<input type="text" name="loginName" maxlength="100"  class=" form-control"/>
+						</div>
+						<div class="col-sm-4">
+							<label class="label-item single-overflow pull-left" title="姓名:">姓名:</label>
+							<input type="text" name="name" maxlength="100"  class=" form-control"/>
+						</div>
+					    <div class="col-sm-4">
+							 <div style="margin-top:26px">
+							  <a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							  <a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+							</div>
+					    </div>
+					</form>
+				</div>
+			</div><!-- 搜索框结束 -->
+		
+		<!-- 工具栏 -->
+	    <div id="toolbar">
+				<button id="add" class="btn btn-success" onclick="add()">
+		            <i class="glyphicon glyphicon-edit"></i> 添加
+		        </button>
+	    </div><!-- 工具栏结束 -->
+
+
+	    <!-- 表格 -->
+	    <table id="table" data-toolbar="#toolbar">
+	    </table>
+	
+	    <!-- context menu -->
+	    <ul id="context-menu" class="dropdown-menu">
+	        <li data-item="edit"><a>编辑</a></li>
+	        <li data-item="delete"><a>删除</a></li>
+	        <li data-item="cancel"><a>取消</a></li>
+	    </ul>
+	</div>
+	</div>
+	</div>
+	</div>
+</body>
+</html>