Prechádzať zdrojové kódy

项目列表权限管理功能开发

user5 3 rokov pred
rodič
commit
7d4699cb2e

+ 38 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageAllConfigDao.java

@@ -0,0 +1,38 @@
+package com.jeeplus.modules.ruralprojectrecords.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectMessageAllConfig;
+import com.jeeplus.modules.sys.entity.Office;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目列表管理配置Dao
+ * @author 徐滕
+ * @version 2014-05-16
+ */
+@MyBatisDao
+public interface RuralProjectMessageAllConfigDao extends CrudDao<RuralProjectMessageAllConfig> {
+
+
+    /**
+     * 添加人员权限信息
+     * @param infoList
+     */
+    void saveList(@Param("list") List<RuralProjectMessageAllConfig> infoList);
+
+    /**
+     * 根据人员id查询对应的权限部门信息
+     * @param userId
+     * @return
+     */
+    List<Office> getOfficeListByUserId (String userId);
+
+    /**
+     * 删除原有人员的权限部门
+     * @param info
+     */
+    void deleteByUserId(RuralProjectMessageAllConfig info);
+}

+ 88 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectMessageAllConfig.java

@@ -0,0 +1,88 @@
+package com.jeeplus.modules.ruralprojectrecords.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+
+import java.util.List;
+
+/**
+ * 项目列表管理配置entity
+ * @author: 徐滕
+ * @version: 2022-05-07 15:03
+ */
+public class RuralProjectMessageAllConfig extends DataEntity<RuralProjectMessageAllConfig> {
+    private String userId;
+    private String userName;
+    private List<User> userList;
+    private List<Office> officeList;
+    private String officeId;
+    private String officeName;
+    private String flagOffice;
+    private List<String> userIdList = Lists.newArrayList();
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public List<User> getUserList() {
+        return userList;
+    }
+
+    public void setUserList(List<User> userList) {
+        this.userList = userList;
+    }
+
+    public List<Office> getOfficeList() {
+        return officeList;
+    }
+
+    public void setOfficeList(List<Office> officeList) {
+        this.officeList = officeList;
+    }
+
+    public String getOfficeId() {
+        return officeId;
+    }
+
+    public void setOfficeId(String officeId) {
+        this.officeId = officeId;
+    }
+
+    public String getOfficeName() {
+        return officeName;
+    }
+
+    public void setOfficeName(String officeName) {
+        this.officeName = officeName;
+    }
+
+    public String getFlagOffice() {
+        return flagOffice;
+    }
+
+    public void setFlagOffice(String flagOffice) {
+        this.flagOffice = flagOffice;
+    }
+
+    public List<String> getUserIdList() {
+        return userIdList;
+    }
+
+    public void setUserIdList(List<String> userIdList) {
+        this.userIdList = userIdList;
+    }
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -109,6 +109,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private List<String> typeList;
 	private String flagArchive;  //归档员判定
 	private String projectProperties;//投资性质
+	private List<String> permissionOfficeIdList;	//查询部门权限列表
 
 	
 
@@ -2234,4 +2235,12 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setSubmitMoneyStr(String submitMoneyStr) {
 		this.submitMoneyStr = submitMoneyStr;
 	}
+
+	public List<String> getPermissionOfficeIdList() {
+		return permissionOfficeIdList;
+	}
+
+	public void setPermissionOfficeIdList(List<String> permissionOfficeIdList) {
+		this.permissionOfficeIdList = permissionOfficeIdList;
+	}
 }

+ 129 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageAllConfigService.java

@@ -0,0 +1,129 @@
+package com.jeeplus.modules.ruralprojectrecords.service;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageAllConfigDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectMessageAllConfig;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.OfficeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 项目列表管理配置service
+ * @author: 徐滕
+ * @version: 2022-05-07 14:58
+ */
+@Service
+@Transactional(readOnly = true)
+public class RuralProjectMessageAllConfigService extends CrudService<RuralProjectMessageAllConfigDao, RuralProjectMessageAllConfig> {
+
+    @Autowired
+    private OfficeService officeService;
+
+    public RuralProjectMessageAllConfig get(String id) {
+        return super.get(id);
+    }
+
+    public Page<RuralProjectMessageAllConfig> findPage(Page<RuralProjectMessageAllConfig> page, RuralProjectMessageAllConfig ruralProjectMessageAllConfig) {
+        if(StringUtils.isNotBlank(ruralProjectMessageAllConfig.getOfficeId())){
+            //查询该选择节点下所有的部门Id
+            List<String> officeIdList = officeService.getChildrenOffice(ruralProjectMessageAllConfig.getOfficeId());
+            officeIdList.add(ruralProjectMessageAllConfig.getOfficeId());
+            ruralProjectMessageAllConfig.setOfficeIdList(officeIdList);
+        }
+        Integer count = dao.queryCount(ruralProjectMessageAllConfig);
+        if(null == count){
+            count = 0;
+        }
+        page.setCount(count);
+        page.setCountFlag(false);
+        ruralProjectMessageAllConfig.setPage(page);
+        page.setList(dao.findList(ruralProjectMessageAllConfig));
+        return page;
+    }
+
+
+    @Transactional(readOnly = false)
+    public void save(RuralProjectMessageAllConfig ruralProjectMessageAllConfig) {
+        if(null == ruralProjectMessageAllConfig.getUserList() || ruralProjectMessageAllConfig.getUserList().size() == 0){
+            return;
+        }
+        if(null == ruralProjectMessageAllConfig.getOfficeList() || ruralProjectMessageAllConfig.getOfficeList().size() == 0){
+            return;
+        }
+        //删除原有人员的权限部门
+        List<String> userIdList = Lists.newArrayList();
+        List<RuralProjectMessageAllConfig> infoList = Lists.newArrayList();
+        //遍历人员信息 并将数据添加到list中
+        for (User user : ruralProjectMessageAllConfig.getUserList()) {
+            userIdList.add(user.getId());
+            for (Office office : ruralProjectMessageAllConfig.getOfficeList()) {
+                RuralProjectMessageAllConfig info = new RuralProjectMessageAllConfig();
+                info.setUserId(user.getId());
+                info.setOfficeId(office.getId());
+                info.preInsert();
+                infoList.add(info);
+            }
+        }
+        ruralProjectMessageAllConfig.setUserIdList(userIdList);
+        dao.deleteByUserId(ruralProjectMessageAllConfig);
+        dao.saveList(infoList);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(RuralProjectMessageAllConfig ruralProjectMessageAllConfig) {
+        if(null == ruralProjectMessageAllConfig.getOfficeList() || ruralProjectMessageAllConfig.getOfficeList().size() == 0 || StringUtils.isBlank(ruralProjectMessageAllConfig.getUserId())){
+            return;
+        }
+        //删除原有人员的权限部门
+        List<String> userIdList = Lists.newArrayList();
+        userIdList.add(ruralProjectMessageAllConfig.getUserId());
+        ruralProjectMessageAllConfig.setUserIdList(userIdList);
+        dao.deleteByUserId(ruralProjectMessageAllConfig);
+
+        List<RuralProjectMessageAllConfig> infoList = Lists.newArrayList();
+        //遍历人员信息 并将数据添加到list中
+        for (Office office : ruralProjectMessageAllConfig.getOfficeList()) {
+            RuralProjectMessageAllConfig info = new RuralProjectMessageAllConfig();
+            info.setUserId(ruralProjectMessageAllConfig.getUserId());
+            info.setOfficeId(office.getId());
+            info.preInsert();
+            infoList.add(info);
+        }
+        dao.saveList(infoList);
+    }
+
+
+    public List<Office> getOfficeListByUserId(String userId){
+        List<Office> officeList = dao.getOfficeListByUserId(userId);
+        for (Office office : officeList){
+            if(null != office.getParent() && StringUtils.isNotBlank(office.getParent().getName())){
+                office.setName(office.getParent().getName() + "-" + office.getName());
+            }
+        }
+        return officeList;
+    }
+
+    /**
+     * 删除方法
+     * @param ruralProjectMessageAllConfig
+     */
+    @Transactional(readOnly = false)
+    public void delete(RuralProjectMessageAllConfig ruralProjectMessageAllConfig){
+        if(StringUtils.isBlank(ruralProjectMessageAllConfig.getUserId())){
+            return;
+        }
+        //删除原有人员的权限部门
+        List<String> userIdList = Lists.newArrayList();
+        userIdList.add(ruralProjectMessageAllConfig.getUserId());
+        ruralProjectMessageAllConfig.setUserIdList(userIdList);
+        dao.deleteByUserId(ruralProjectMessageAllConfig);
+    }
+}

+ 19 - 5
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageAllService.java

@@ -3,7 +3,6 @@ package com.jeeplus.modules.ruralprojectrecords.service;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
-import com.jeeplus.common.utils.Collections3;
 import com.jeeplus.common.utils.MenuStatusEnum;
 import com.jeeplus.modules.projectAccessory.dao.ProjectTemplateDao;
 import com.jeeplus.modules.projectEngineering.service.ProjectEngineeringService;
@@ -13,17 +12,19 @@ import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingBatch;
 import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingbatchRelation;
 import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataDao;
 import com.jeeplus.modules.projectcontentinfo.dao.ProjectcontentinfoDao;
-import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
-import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectreportnum.service.ProjectReportNumService;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectClientLinkmanDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageAllDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
-import com.jeeplus.modules.ruralprojectrecords.entity.*;
+import com.jeeplus.modules.ruralprojectrecords.entity.DownloadProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.DownloadProjectReporteds;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.SubProjectInfo;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.sys.dao.UserDao;
-import com.jeeplus.modules.sys.entity.*;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.service.AreaService;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.DictUtils;
@@ -107,6 +108,8 @@ public class RuralProjectMessageAllService extends CrudService<RuralProjectMessa
     private RuralProjectClientLinkmanDao clientLinkmanDao;
     @Autowired
     private RuralProjectMessageAllDao ruralProjectMessageAllDao;
+    @Autowired
+    private RuralProjectMessageAllConfigService ruralProjectMessageAllConfigService;
 
     public RuralProjectRecords get(String id) {
         return super.get(id);
@@ -129,6 +132,17 @@ public class RuralProjectMessageAllService extends CrudService<RuralProjectMessa
             officeIdList.add(projectRecords.getOffice().getId());
             projectRecords.setOfficeIdList(officeIdList);
         }
+        //根据当前登录人查询登陆人权限
+        List<Office> officeListByUserId = ruralProjectMessageAllConfigService.getOfficeListByUserId(UserUtils.getUser().getId());
+        if(officeListByUserId.size()>0){
+            List<String> officeIdList = Lists.newArrayList();
+            for (Office office: officeListByUserId) {
+                officeIdList.add(office.getId());
+
+            }
+            projectRecords.setPermissionOfficeIdList(officeIdList);
+        }
+
         int count = dao.queryCount(projectRecords);
         page.setCount(count);
         page.setCountFlag(false);

+ 131 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageAllConfigController.java

@@ -0,0 +1,131 @@
+package com.jeeplus.modules.ruralprojectrecords.web;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectMessageAllConfig;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageAllConfigService;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.apache.shiro.authz.annotation.Logical;
+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.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 项目列表管理配置controller
+ * @author: 徐滕
+ * @version: 2022-05-07 14:58
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/ruralProject/ruralProjectMessageAllConfig")
+public class RuralProjectMessageAllConfigController extends BaseController {
+
+    @Autowired
+    private RuralProjectMessageAllConfigService service;
+
+    @ModelAttribute
+    public RuralProjectMessageAllConfig get(@RequestParam(required=false) String id) {
+        RuralProjectMessageAllConfig entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = service.get(id);
+        }
+        if (entity == null){
+            entity = new RuralProjectMessageAllConfig();
+        }
+        return entity;
+    }
+
+    @RequiresPermissions("ruralProject:ruralProjectMessageAllConfig:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(RuralProjectMessageAllConfig ruralProjectMessageAllConfig, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes redirectAttributes) {
+        //判断对账人是否为空,为空则赋值为null 防止查找为空的数据
+        if(StringUtils.isBlank(ruralProjectMessageAllConfig.getUserId())){
+            ruralProjectMessageAllConfig.setUserId(null);
+        }
+        Page<RuralProjectMessageAllConfig> page = service.findPage(new Page<RuralProjectMessageAllConfig>(request, response), ruralProjectMessageAllConfig);
+        model.addAttribute("page", page);
+        model.addAttribute("ruralProjectMessageAllConfig", ruralProjectMessageAllConfig);
+        return "modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigList";
+    }
+
+    /**
+     * 查看,增加,编辑报告表单页面
+     */
+    @RequiresPermissions(value={"ruralProject:ruralProjectMessageAllConfig:add","ruralProject:ruralProjectMessageAllConfig:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(RuralProjectMessageAllConfig ruralProjectMessageAllConfig, Model model) {
+        if (StringUtils.isNotBlank(ruralProjectMessageAllConfig.getId())){
+            //根据人员信息查询该人员权限部门集合
+            List<Office> officeList = service.getOfficeListByUserId(ruralProjectMessageAllConfig.getUserId());
+            ruralProjectMessageAllConfig.setOfficeList(officeList);
+            model.addAttribute("flagOffice", ruralProjectMessageAllConfig.getFlagOffice());
+            model.addAttribute("ruralProjectMessageAllConfig", ruralProjectMessageAllConfig);
+            return "modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigUpdate";
+        }
+        if (ruralProjectMessageAllConfig.getCreateDate() == null){
+            ruralProjectMessageAllConfig.setCreateDate(new Date());
+        }
+        if (ruralProjectMessageAllConfig.getCreateBy() == null || StringUtils.isBlank(ruralProjectMessageAllConfig.getCreateBy().getId())){
+            ruralProjectMessageAllConfig.setCreateBy(UserUtils.getUser());
+        }
+        model.addAttribute("flagOffice", ruralProjectMessageAllConfig.getFlagOffice());
+        model.addAttribute("ruralProjectMessageAllConfig", ruralProjectMessageAllConfig);
+        return "modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigForm";
+    }
+
+    //添加操作只在"通告管理"页面完成;
+    @RequiresPermissions(value={"ruralProject:ruralProjectMessageAllConfig:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public String save(RuralProjectMessageAllConfig ruralProjectMessageAllConfig, Model model,RedirectAttributes redirectAttributes){
+        if (!beanValidator(model, ruralProjectMessageAllConfig)){
+            return form(ruralProjectMessageAllConfig, model);
+        }
+        try{
+            service.save(ruralProjectMessageAllConfig);//保存
+            addMessage(redirectAttributes, "保存公告成功");
+        }catch (Exception e){
+            addMessage(redirectAttributes, "保存公告失败:" + e.getMessage());
+        }
+        return "redirect:" + adminPath + "/ruralProject/ruralProjectMessageAllConfig/?repage";
+    }
+
+    //添加操作只在"通告管理"页面完成;
+    @RequiresPermissions(value={"ruralProject:ruralProjectMessageAllConfig:edit"},logical=Logical.OR)
+    @RequestMapping(value = "update")
+    public String update(RuralProjectMessageAllConfig ruralProjectMessageAllConfig, Model model,RedirectAttributes redirectAttributes){
+        if (!beanValidator(model, ruralProjectMessageAllConfig)){
+            return form(ruralProjectMessageAllConfig, model);
+        }
+        try{
+            service.update(ruralProjectMessageAllConfig);//保存
+            addMessage(redirectAttributes, "保存公告成功");
+        }catch (Exception e){
+            addMessage(redirectAttributes, "保存公告失败:" + e.getMessage());
+        }
+        return "redirect:" + adminPath + "/ruralProject/ruralProjectMessageAllConfig/?repage";
+    }
+
+    /**
+     * 删除案例-建设单位
+     */
+    @RequiresPermissions("ruralProject:ruralProjectMessageAllConfig:del")
+    @RequestMapping(value = "delete")
+    public String delete(RuralProjectMessageAllConfig ruralProjectMessageAllConfig, RedirectAttributes redirectAttributes) {
+        service.delete(ruralProjectMessageAllConfig);
+        addMessage(redirectAttributes, "删除人员权限成功");
+        return "redirect:"+ Global.getAdminPath()+"/ruralProject/ruralProjectMessageAllConfig/?repage";
+    }
+
+}

+ 13 - 9
src/main/java/com/jeeplus/modules/sys/web/UserController.java

@@ -18,18 +18,19 @@ import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
 import com.jeeplus.modules.sys.dao.UserDao;
-import com.jeeplus.modules.sys.entity.*;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Role;
+import com.jeeplus.modules.sys.entity.SystemConfig;
+import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.security.SystemAuthorizingRealm;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.service.SystemConfigService;
 import com.jeeplus.modules.sys.service.SystemService;
 import com.jeeplus.modules.sys.service.UserService;
-import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.sysimportinfo.entity.SysImportInfo;
 import com.jeeplus.modules.sysimportinfo.service.SysImportInfoService;
 import com.jeeplus.modules.workstaff.entity.WorkStaffBasicInfo;
-import com.jeeplus.modules.workstaff.entity.WorkStaffCertificate;
 import com.jeeplus.modules.workstaff.service.WorkStaffBasicInfoService;
 import io.swagger.client.model.NewPassword;
 import org.apache.commons.lang3.StringEscapeUtils;
@@ -39,7 +40,6 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.subject.PrincipalCollection;
 import org.apache.shiro.subject.SimplePrincipalCollection;
 import org.apache.shiro.subject.Subject;
-import org.jcodings.util.Hash;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -47,7 +47,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import redis.clients.jedis.Jedis;
-import sun.net.www.content.image.png;
 
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
@@ -937,7 +936,7 @@ public class UserController extends BaseController {
     @RequiresPermissions("user")
     @ResponseBody
     @RequestMapping(value = "treeData")
-    public List<Map<String, Object>> treeData(@RequestParam(required=false) String projectId,@RequestParam(required=false) String officeId, HttpServletResponse response) {
+    public List<Map<String, Object>> treeData(@RequestParam(required=false) String projectId,@RequestParam(required=false) String officeId,@RequestParam(required = false) String selectName, HttpServletResponse response) {
         List<Map<String, Object>> mapList = Lists.newArrayList();
         if(StringUtils.isBlank(projectId)){
             List<User> list = systemService.findUserByOfficeId(officeId);
@@ -952,7 +951,13 @@ public class UserController extends BaseController {
                 officeName = StringEscapeUtils.unescapeHtml4(officeName);
                 map.put("name", name);
                 map.put("officeId", officeName);
-                mapList.add(map);
+                if(StringUtils.isNotBlank(selectName)){
+                    if(name.contains(selectName)){
+                        mapList.add(map);
+                    }
+                }else{
+                    mapList.add(map);
+                }
             }
         }else{
             List<User> list = systemService.findUserByOfficeId(officeId);
@@ -1532,8 +1537,7 @@ public class UserController extends BaseController {
 
     /**
      * 验证工号是否重复
-     * @param oldNo
-     * @param no
+     * @param name
      * @return
      */
     @ResponseBody

+ 170 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageAllConfigDao.xml

@@ -0,0 +1,170 @@
+<?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.ruralprojectrecords.dao.RuralProjectMessageAllConfigDao">
+
+	<sql id="officeColumns">
+		a.id,
+		a.parent_id AS "parent.id",
+		a.parent_ids,
+		a.area_id AS "area.id",
+		a.code,
+		a.company_qrcode,
+		a.name,
+		a.sort,
+		a.type,
+		a.grade,
+		a.address,
+		a.zip_code,
+		a.master,
+		a.phone,
+		a.fax,
+		a.email,
+		a.remarks,
+		a.create_by AS "createBy.id",
+		a.create_date,
+		a.update_by AS "updateBy.id",
+		a.update_date,
+		a.del_flag,
+		a.useable AS useable,
+		a.branch_office AS "branchOffice",
+		<!-- a.primary_person AS "primaryPerson.id",-->
+		<!-- a.deputy_person AS "deputyPerson.id",-->
+		p.name AS "parent.name",
+		p.type AS "parent.type",
+		a.logo,
+		a.state,
+		a.iscurrent,
+		a.group_id,
+		a.group_name,
+		a.simple_name AS "simpleName",
+		a.branch_simple_name AS "branchSimpleName",
+		p.simple_name AS "parent.simpleName",
+		a.top_company AS "topCompany",
+		a.branch_no AS "branchNo",
+		a.is_son AS "isSon",
+		a.wx_office_id AS "wxOfficeId"
+	</sql>
+
+	<sql id="projectMessageAllConfig">
+		distinct(a.id) AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.del_flag AS "delFlag",
+		a.user_id as "userId",
+		(select name from sys_user where id = a.user_id)  AS "userName",
+		a.office_id as "officeId"
+	</sql>
+
+	<sql id="projectMessageAllConfigGroup">
+		distinct(a.id) AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.del_flag AS "delFlag",
+		a.user_id as "userId",
+		(select name from sys_user where id = a.user_id)  AS "userName",
+		GROUP_CONCAT(a.office_id ORDER BY a.office_id desc) as "officeId",
+		GROUP_CONCAT(so.name ORDER BY so.name desc) as "officeName"
+	</sql>
+
+	<select id="get" resultType="com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectMessageAllConfig">
+		SELECT
+		<include refid="projectMessageAllConfig"/>
+		from rural_project_message_all_config a
+		left join sys_office so on so.id = a.office_id
+		where a.id = #{id}
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectMessageAllConfig">
+		SELECT
+		<include refid="projectMessageAllConfigGroup"/>
+
+		FROM rural_project_message_all_config a
+		left join sys_office so on so.id = a.office_id
+		LEFT JOIN sys_user sua ON sua.id = a.user_id
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="(userId != null and userId != '') or (userName != null and userName != '')">
+				AND (a.user_id = #{userId} or sua.name like concat('%',#{userName},'%'))
+			</if>
+			<if test="officeIdList!=null and officeIdList.size!=0">
+				and a.office_id in
+				<foreach collection="officeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
+		</where>
+		group by a.user_id
+		ORDER BY a.update_date DESC
+	</select>
+
+	<select id="queryCount" resultType="java.lang.Integer">
+		SELECT
+		count(1) from (select a.id
+		FROM rural_project_message_all_config a
+		LEFT JOIN sys_user sua ON sua.id = a.user_id
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="(userId != null and userId != '') or (userName != null and userName != '')">
+				AND (a.user_id = #{userId} or sua.name like concat('%',#{userName},'%'))
+			</if>
+			<if test="officeIdList!=null and officeIdList.size!=0">
+				and a.office_id in
+				<foreach collection="officeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
+		</where>
+		group by a.user_id) z
+	</select>
+
+	<insert id="saveList">
+		INSERT INTO rural_project_message_all_config(
+		id,
+		create_by,
+		create_date,
+		update_by,
+		update_date,
+		remarks,
+		del_flag,
+		user_id,
+		office_id
+		) VALUES
+		<foreach collection="list" item="item" separator=",">
+			( #{item.id},
+			#{item.createBy.id},
+			#{item.createDate},
+			#{item.updateBy.id},
+			#{item.updateDate},
+			#{item.remarks},
+			#{item.delFlag},
+			#{item.userId},
+			#{item.officeId}
+			)
+		</foreach>
+	</insert>
+
+	<select id="getOfficeListByUserId" resultType="com.jeeplus.modules.sys.entity.Office">
+		SELECT
+		<include refid="officeColumns"/>
+		FROM sys_office a
+		LEFT JOIN sys_office p ON p.id = a.parent_id
+		left join rural_project_message_all_config rpmac on a.id = rpmac.office_id
+		<where>
+			a.del_flag = 0
+			and rpmac.user_id = #{userId}
+		</where>
+	</select>
+
+	<delete id="deleteByUserId">
+		delete from rural_project_message_all_config
+		where user_id in
+			<foreach collection="userIdList" item="userId" separator="," open="(" close=")">
+				#{userId}
+			</foreach>
+	</delete>
+
+</mapper>

+ 12 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageAllDao.xml

@@ -564,6 +564,12 @@ END) as projectScale*/
 					#{officeId}
 				</foreach>
 			</if>
+			<if test="permissionOfficeIdList!=null and permissionOfficeIdList.size!=0">
+				and a.office_id in
+				<foreach collection="permissionOfficeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
 
 			<if test="reportedState !=null and reportedState !=''">
 				<choose>
@@ -810,6 +816,12 @@ END) as projectScale*/
 			<if test="office!=null and office.id=='' and office.name!=null and office.name!='' ">
 				and  o.name like concat('%',#{office.name},'%')
 			</if>
+			<if test="permissionOfficeIdList!=null and permissionOfficeIdList.size!=0">
+				and a.office_id in
+				<foreach collection="permissionOfficeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
 			<if test="officeIdList!=null and officeIdList.size!=0">
 				and a.office_id in
 				<foreach collection="officeIdList" item="officeId" separator="," open="(" close=")">

+ 244 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigForm.jsp

@@ -0,0 +1,244 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>通知管理</title>
+    <meta name="decorator" content="default"/>
+
+    <script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <style type="text/css">
+        img {width: 50px; height: 50px;}
+    </style>
+    <script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+    <script type="text/javascript" language="JavaScript" for="window" event="onload">
+        var validateForm;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            //var remarks = CKEDITOR.instances.content.getData();
+            var startDate = new Date($("#startDate").val());
+            var endDate = new Date($("#endDate").val());
+
+            if(startDate.getTime() > endDate.getTime()){
+                parent.layer.msg("开始日期不得大于结束日期!", {icon: 5});
+                return false;
+            }
+            if(validateForm.form()){
+                var flag=judgment();
+                if (!flag){
+                    return flag;
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            layui.use(['form', 'layer'], function () {
+                var form = layui.form;
+            });
+            //$("#name").focus();
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+    <script type="text/javascript">
+        function changeUser(ids,names,parents) {
+            var split = ids.split(',');
+            var split2 = names.split(',');
+            $("#userTableList").html("");
+            userIdx=0;
+            for(var i=0;i<split.length;i++){
+                var id = split[i];
+                if(id==''||id==null){
+                    continue;
+                }
+                var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                addRow('#userTableList',userIdx,userTpl,obj);
+                userIdx+=1;
+            }
+        }
+
+        function changeOffice(ids,names,parentIds) {
+            $("#officeTableList").html("");
+            officeIdx=0;
+            for(var i=0;i<ids.length;i++){
+                var obj = {'id':ids[i],'name':parentIds[i]};
+                addRow('#officeTableList',officeIdx,officeTpl,obj);
+                officeIdx+=1;
+            }
+        }
+        function getSelectOfficeIds() {
+            var selectedIds = "";
+            var pidArr = $("#officeTableList tr .officeId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+        function getSelectUserIds() {
+            var selectedIds = "";
+            var pidArr = $("#userTableList tr .userId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+
+    </script>
+
+</head>
+<body >
+<div class="single-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="ruralProjectMessageAllConfig" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessageAllConfig/save" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="flagOffice"/>
+            <div class="layui-item layui-col-sm6" >
+                <div class="form-group-label"><h2>人员</h2></div>
+                <div class="layui-item nav-btns">
+                    <sys:treeselectusers id="users" name="" value="" labelName="memberNameStr" labelValue=""
+                                         retnParent="true" title="用户" url="/sys/office/treeDataAll?type=3" checked="true" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+                </div>
+                <table id="userTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>姓名</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="userTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#userList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+                </script>
+            </div>
+
+            <div class="layui-item layui-col-sm6" >
+                <div class="form-group-label" ><h2>权限部门</h2></div>
+                <div class="layui-item nav-btns">
+                    <sys:treeselectoffices id="offices" name="" value="" labelName="memberNameStr" labelValue=""
+                                           retnParent="true" checked="true" notAllowSelectParent="true" title="部门" url="/sys/office/treeData?type=2"  cssClass="form-control " allowClear="true"/>
+                </div>
+                <table id="officeTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>部门</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="officeTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="officeTpl">//<!--
+                    <tr id="officeList{{idx}}">
+                        <td class="hide">
+                            <input id="officeList{{idx}}_id" name="officeList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control officeId"/>
+                        </td>
+                        <td>
+                            {{row.name}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#officeList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var data = ${fns:toJson(ruralProjectMessageAllConfig.officeList)};
+                        if (data!=null) {
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#officeTableList', officeIdx, officeTpl, data[i]);
+                                officeIdx = officeIdx + 1;
+                            }
+                        }
+                        var dataBank = ${fns:toJson(ruralProjectMessageAllConfig.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = 0;
+                        if('#userTableList'==list){
+                            idx1 = $("#userTableList tr").length
+                        }else if('#officeTableList'==list){
+                            idx1 = $("#officeTableList tr").length
+                        }
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+                </script>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+<script>
+    layui.use(['form', 'layer'], function () {
+        var form = layui.form;
+    });
+</script>
+</body>
+</html>

+ 281 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigList.jsp

@@ -0,0 +1,281 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>通告管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+	<script type="text/javascript">
+
+
+        $(document).ready(function() {
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+        });
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'two-btns',
+                btn: ['提交', '关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+
+                btn3: function (index) {
+                }
+            });
+        }
+
+		//打开对话框(查看)
+		function openDialogListView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/oa/oaNotify/getOaNotify?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该通告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+
+		function openDialogre(title,url,width,height,target){
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: false, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url ,
+				btn: ['提交','关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn3: function(index){
+				}
+			});
+		}
+		function cBlur(obj) {
+			var id = $("#userId").val();
+			if(undefined != obj.value && null != obj.value && '' != obj.value){
+				$.ajax({
+					url:'${ctx}/sys/user/getUserByName?name='+obj.value,
+					type:"post",
+					success:function(data){
+						var user = data.body.data;
+						if(undefined == user || null == user || '' == user){
+							$("#userId").val("");
+						}else{
+							if(data.body.data.id != id){
+								if(undefined != id && null != id && '' != id){
+									$("#userId").val("");
+								}
+							}
+						}
+					}
+				});
+			}else{
+				$("#userId").val("");
+			}
+
+		}
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+
+			<form:form id="searchForm" modelAttribute="ruralProjectMessageAllConfig" action="${ctx}/ruralProject/ruralProjectMessageAllConfig/list" method="post" class="form-inline">
+			<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+			<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+			<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">员工:</label>
+						<div class="layui-input-block with-icon">
+							<sys:inquireselectUserNotReadolny id="user" name="userId" value="${ruralProjectMessageAllConfig.userId}" labelName="userName" labelValue="${ruralProjectMessageAllConfig.userName}" cssStyle="background-color: #fff"
+															  title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">权限部门:</label>
+						<div class="layui-input-block with-icon">
+							<sys:treeselect id="officeId" name="officeId" value="${ruralProjectMessageAllConfig.officeId}" labelName="officeName" labelValue="${ruralProjectMessageAllConfig.officeName}" cssStyle="background-color: #fff"
+											title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+						</div>
+					</div>
+					<%--<div class="layui-item query athird">
+						<label class="layui-form-label">通告文号:</label>
+						<div class="layui-input-block with-icon">
+							<form:input path="referenceNumber" htmlEscape="false" maxlength="200"  class=" form-control layui-input"/>
+						</div>
+					</div>--%>
+					<div class="layui-item athird">
+						<div class="input-group">
+							<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+							<div class="layui-btn-group search-spacing">
+								<button id="searchQuery" class="layui-btn layui-btn-sm  layui-bg-blue" onclick="search()">查询</button>
+								<button id="searchReset" class="layui-btn layui-btn-sm  " onclick="resetSearch()">重置</button>
+							</div>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+				<div id="moresees" style="clear:both;display:none;">
+					<div style="clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<shiro:hasPermission name="ruralProject:ruralProjectMessageAllConfig:add">
+							<table:addRow label="新增" url="${ctx}/ruralProject/ruralProjectMessageAllConfig/form?flagOffice=1" title="新增" height="90%;" width="70%;"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+				,{field:'userName',align:'center', title: '员工', width:150}
+                ,{field:'officeName',align:'center', title: '部门名称', minWidth:150}
+                ,{field:'updateDate', align:'center',title: '更新时间',width:150}
+                ,{align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "<div class=\"layui-btn-group\">";
+						xml+="<a href=\"#\" onclick=\"openDialogre('修改信息', '${ctx}/ruralProject/ruralProjectMessageAllConfig/form?id=" + d.id + "','80%', '70%','','提交,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+						xml +="<a href=\"${ctx}/ruralProject/ruralProjectMessageAllConfig/delete?id=" + d.id+"\" onclick=\"return confirmx('确认要删除该人员部门信息吗?', this.href)\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
+                        xml+="</div>"
+                            return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="config" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${config.id}"
+                    ,"userId":"${config.userId}"
+                    ,"userName":"${config.userName}"
+                    ,"officeName":"${config.officeName}"
+    				,"updateDate":"<fmt:formatDate value="${config.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 204 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllConfigUpdate.jsp

@@ -0,0 +1,204 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>通知管理</title>
+    <meta name="decorator" content="default"/>
+
+    <script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <style type="text/css">
+        img {width: 50px; height: 50px;}
+    </style>
+    <script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+    <script type="text/javascript" language="JavaScript" for="window" event="onload">
+        var validateForm;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            //var remarks = CKEDITOR.instances.content.getData();
+            var startDate = new Date($("#startDate").val());
+            var endDate = new Date($("#endDate").val());
+
+            if(startDate.getTime() > endDate.getTime()){
+                parent.layer.msg("开始日期不得大于结束日期!", {icon: 5});
+                return false;
+            }
+            if(validateForm.form()){
+                var flag=judgment();
+                if (!flag){
+                    return flag;
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            layui.use(['form', 'layer'], function () {
+                var form = layui.form;
+            });
+            //$("#name").focus();
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+    <script type="text/javascript">
+        function changeUser(ids,names,parents) {
+            var split = ids.split(',');
+            var split2 = names.split(',');
+            $("#userTableList").html("");
+            userIdx=0;
+            for(var i=0;i<split.length;i++){
+                var id = split[i];
+                if(id==''||id==null){
+                    continue;
+                }
+                var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                addRow('#userTableList',userIdx,userTpl,obj);
+                userIdx+=1;
+            }
+        }
+
+        function changeOffice(ids,names,parentIds) {
+            $("#officeTableList").html("");
+            officeIdx=0;
+            for(var i=0;i<ids.length;i++){
+                var obj = {'id':ids[i],'name':parentIds[i]};
+                addRow('#officeTableList',officeIdx,officeTpl,obj);
+                officeIdx+=1;
+            }
+        }
+        function getSelectOfficeIds() {
+            var selectedIds = "";
+            var pidArr = $("#officeTableList tr .officeId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+        function getSelectUserIds() {
+            var selectedIds = "";
+            var pidArr = $("#userTableList tr .userId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+
+    </script>
+
+</head>
+<body >
+<div class="single-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="ruralProjectMessageAllConfig" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessageAllConfig/update" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="userId"/>
+            <form:hidden path="flagOffice"/>
+
+            <div class="layui-item layui-col-sm12" >
+                <div class="form-group-label" ><h2>权限部门</h2></div>
+                <div class="layui-item nav-btns">
+                    <sys:treeselectoffices id="offices" name="" value="" labelName="memberNameStr" labelValue=""
+                                           retnParent="true" checked="true" notAllowSelectParent="true" title="部门" url="/sys/office/treeData?type=2"  cssClass="form-control " allowClear="true"/>
+                </div>
+                <table id="officeTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                        <th class="hide"></th>
+                        <th>部门</th>
+                        <th>操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="officeTableList">
+                    </tbody>
+                </table>
+                <script type="text/template" id="officeTpl">//<!--
+                    <tr id="officeList{{idx}}">
+                        <td class="hide">
+                            <input id="officeList{{idx}}_id" name="officeList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control officeId"/>
+                        </td>
+                        <td>
+                            {{row.name}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#officeList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var data = ${fns:toJson(ruralProjectMessageAllConfig.officeList)};
+                        if (data!=null) {
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#officeTableList', officeIdx, officeTpl, data[i]);
+                                officeIdx = officeIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = 0;
+                        if('#officeTableList'==list){
+                            idx1 = $("#officeTableList tr").length
+                        }
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+                </script>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+<script>
+    layui.use(['form', 'layer'], function () {
+        var form = layui.form;
+    });
+</script>
+</body>
+</html>