Browse Source

提交leader代码

wang_xy 2 năm trước cách đây
mục cha
commit
e0d7b1221f
22 tập tin đã thay đổi với 999 bổ sung172 xóa
  1. 2 1
      src/main/java/com/jeeplus/modules/leader/org/mapper/LeaderOrgNoMapper.java
  2. 29 19
      src/main/java/com/jeeplus/modules/leader/org/mapper/xml/LeaderOrgNoMapper.xml
  3. 4 1
      src/main/java/com/jeeplus/modules/leader/org/service/LeaderOrgNoService.java
  4. 73 0
      src/main/java/com/jeeplus/modules/leader/partyPanyment/entity/PartyPanyment.java
  5. 19 0
      src/main/java/com/jeeplus/modules/leader/partyPanyment/mapper/PartyPanymentMapper.java
  6. 67 0
      src/main/java/com/jeeplus/modules/leader/partyPanyment/mapper/xml/PartyPanymentMapper.xml
  7. 48 0
      src/main/java/com/jeeplus/modules/leader/partyPanyment/service/PartyPanymentService.java
  8. 148 0
      src/main/java/com/jeeplus/modules/leader/partyPanyment/web/PartyPanymentController.java
  9. 25 25
      src/main/java/com/jeeplus/modules/sys/utils/UserUtils.java
  10. 27 27
      src/main/java/com/jeeplus/modules/sys/web/LoginController.java
  11. 18 18
      src/main/resources/spring/spring-context-shiro.xml
  12. 31 31
      src/main/resources/spring/spring-mvc.xml
  13. BIN
      src/main/webapp/static/common/images/mapbd.png
  14. BIN
      src/main/webapp/static/web/images/jianewm.png
  15. 48 0
      src/main/webapp/webpage/modules/leader/cloudChart/cloudChart.jsp
  16. 18 0
      src/main/webapp/webpage/modules/leader/cloudChart/eLeader.jsp
  17. 104 0
      src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentForm.jsp
  18. 193 0
      src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentList.js
  19. 67 0
      src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentList.jsp
  20. 35 35
      src/main/webapp/webpage/modules/leader/task/leaderTaskList.js
  21. 31 3
      src/main/webapp/webpage/modules/sys/login/sysIndex-jp.jsp
  22. 12 12
      src/main/webapp/webpage/modules/sys/login/sysLogin.jsp

+ 2 - 1
src/main/java/com/jeeplus/modules/leader/org/mapper/LeaderOrgNoMapper.java

@@ -20,7 +20,8 @@ import java.util.List;
 public interface LeaderOrgNoMapper extends TreeMapper<LeaderOrgNo> {
 	public int getPartyNum(String id);
 	public List<LeaderOrgNo> findPublicNoList(LeaderOrgNo leaderOrgNo);
+	public List<LeaderOrgNo> findListByLonLatNotNull();
 	public List<LeaderOrgNo> getByService(@Param(value = "orgNoService") String orgNoService);
 
 
-}
+}

+ 29 - 19
src/main/java/com/jeeplus/modules/leader/org/mapper/xml/LeaderOrgNoMapper.xml

@@ -76,14 +76,14 @@
 		a.enterprise_coverage AS "enterpriseCoverage",
 		a.star_branch AS "starBranch"
 	</sql>
-	
+
 	<sql id="leaderOrgNoJoins">
-		
+
 	</sql>
-	
-    
+
+
 	<select id="get" resultType="LeaderOrgNo" >
-		SELECT 
+		SELECT
 			<include refid="leaderOrgNoColumns"/>
 		FROM leader_org_no a
 		<include refid="leaderOrgNoJoins"/>
@@ -93,9 +93,9 @@
 	<select id="getByService" resultMap="leaderOrgResult" >
 		SELECT * FROM leader_org_no a WHERE a.org_no_service = #{orgNoService}
 	</select>
-	
+
 	<select id="findList" resultType="LeaderOrgNo" >
-		SELECT 
+		SELECT
 			<include refid="leaderOrgNoColumns"/>
 		FROM leader_org_no a
 		<include refid="leaderOrgNoJoins"/>
@@ -121,18 +121,28 @@
 		</where>
 		ORDER BY a.sort ASC
 	</select>
-	
+
 	<select id="findAllList" resultType="LeaderOrgNo" >
-		SELECT 
+		SELECT
 			<include refid="leaderOrgNoColumns"/>
 		FROM leader_org_no a
 		<include refid="leaderOrgNoJoins"/>
 		<where>
-			a.del_flag = 0 AND  party_org_type = '0'
+			a.del_flag = 0
 			${dataScope}
 		</where>
 		ORDER BY a.sort ASC
 	</select>
+	<select id="findListByLonLatNotNull" resultType="LeaderOrgNo" >
+		SELECT
+			<include refid="leaderOrgNoColumns"/>
+		FROM leader_org_no a
+		<include refid="leaderOrgNoJoins"/>
+		<where>
+			a.del_flag = 0 and (a.longitude_latitude is not null or a.longitude_latitude!='')
+		</where>
+		ORDER BY a.sort ASC
+	</select>
 
 	<select id="findPublicNoList" resultType="LeaderOrgNo" >
 		SELECT
@@ -363,9 +373,9 @@
 			#{enterpriseCoverage}
 		)
 	</insert>
-	
+
 	<update id="update">
-		UPDATE leader_org_no SET 	
+		UPDATE leader_org_no SET
 			party_name = #{partyName},
 			name = #{name},
 			party_attribute = #{partyAttribute},
@@ -434,24 +444,24 @@
 			parent_ids = #{parentIds}
 			where id = #{id}
 	</update>
-	
+
 	<!--物理删除-->
 	<update id="delete">
 		DELETE FROM leader_org_no
 		WHERE id = #{id}
 	</update>
-	
+
 	<!--逻辑删除-->
 	<update id="deleteByLogic">
-		UPDATE leader_org_no SET 
+		UPDATE leader_org_no SET
 			del_flag = #{DEL_FLAG_DELETE}
 		WHERE id = #{id}
 	</update>
-	
-	
+
+
 	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
 	<select id="findUniqueByProperty" resultType="LeaderOrgNo" statementType="STATEMENT">
 		select * FROM leader_org_no  where ${propertyName} = '${value}'
 	</select>
-	
-</mapper>
+
+</mapper>

+ 4 - 1
src/main/java/com/jeeplus/modules/leader/org/service/LeaderOrgNoService.java

@@ -108,6 +108,9 @@ public class LeaderOrgNoService extends TreeService<LeaderOrgNoMapper, LeaderOrg
     public List<LeaderOrgNo> findAllList(LeaderOrgNo leaderOrgNo){
         return super.findAllList(leaderOrgNo);
     }
+    public List<LeaderOrgNo> findListByLonLatNotNull(){
+        return leaderOrgNoMapper.findListByLonLatNotNull();
+    }
 
     public List<LeaderOrgNo> findPublicNoList(LeaderOrgNo leaderOrgNo){
         return leaderOrgNoMapper.findPublicNoList(leaderOrgNo);
@@ -124,4 +127,4 @@ public class LeaderOrgNoService extends TreeService<LeaderOrgNoMapper, LeaderOrg
         leaderOrgNoMapper.deleteByLogic(leaderOrgNo);
         //? leaderOrgNoInstructorMapper.deleteByLogic(new LeaderOrgNoInstructor(leaderOrgNo));
     }
-}
+}

+ 73 - 0
src/main/java/com/jeeplus/modules/leader/partyPanyment/entity/PartyPanyment.java

@@ -0,0 +1,73 @@
+package com.jeeplus.modules.leader.partyPanyment.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+/**
+ * @author wang_xy
+ * @description
+ * @Version 1.0
+ * @params
+ * @return
+ * @since 2022/8/22 16:19
+ */
+public class PartyPanyment extends DataEntity<PartyPanyment> {
+
+    private static final long serialVersionUID = 1L;
+    private String name;
+    private String attendOrgId;
+    private String attendOrgName;
+    private Date paymentTime;
+    private String paymentMoney;
+
+
+    public PartyPanyment() {
+        super();
+    }
+
+    public PartyPanyment(String id){
+        super(id);
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAttendOrgId() {
+        return attendOrgId;
+    }
+
+    public void setAttendOrgId(String attendOrgId) {
+        this.attendOrgId = attendOrgId;
+    }
+
+    public String getAttendOrgName() {
+        return attendOrgName;
+    }
+
+    public void setAttendOrgName(String attendOrgName) {
+        this.attendOrgName = attendOrgName;
+    }
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    public Date getPaymentTime() {
+        return paymentTime;
+    }
+
+    public void setPaymentTime(Date paymentTime) {
+        this.paymentTime = paymentTime;
+    }
+
+    public String getPaymentMoney() {
+        return paymentMoney;
+    }
+
+    public void setPaymentMoney(String paymentMoney) {
+        this.paymentMoney = paymentMoney;
+    }
+}

+ 19 - 0
src/main/java/com/jeeplus/modules/leader/partyPanyment/mapper/PartyPanymentMapper.java

@@ -0,0 +1,19 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.leader.partyPanyment.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.leader.info.entity.LeaderInfo;
+import com.jeeplus.modules.leader.partyPanyment.entity.PartyPanyment;
+
+/**
+ * 党员信息MAPPER接口
+ * @author admin
+ * @version 2019-11-08
+ */
+@MyBatisMapper
+public interface PartyPanymentMapper extends BaseMapper<PartyPanyment> {
+
+}

+ 67 - 0
src/main/java/com/jeeplus/modules/leader/partyPanyment/mapper/xml/PartyPanymentMapper.xml

@@ -0,0 +1,67 @@
+<?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.leader.partyPanyment.mapper.PartyPanymentMapper">
+
+	<sql id="partyColumns">
+		id,
+		`name`,
+		attend_org_id,
+		attend_org_name,
+		payment_time,
+		payment_money
+	</sql>
+
+	<sql id="selectPartyColumns">
+		id,
+		`name`,
+		attend_org_id as attendOrgId,
+		attend_org_name as attendOrgName,
+		payment_time as `paymentTime`,
+		payment_money as `paymentMoney`
+	</sql>
+
+	<insert id="insert">
+		INSERT INTO party_panyment(
+			<include refid="partyColumns"/>
+		) values (
+			#{id},
+			#{name},
+			#{attendOrgId},
+			#{attendOrgName},
+			#{paymentTime},
+			#{paymentMoney}
+		)
+	</insert>
+	<update id="update">
+		update party_panyment set
+			name=#{name},
+			attend_org_id=#{attendOrgId},
+			attend_org_name=#{attendOrgName},
+			payment_time=#{paymentTime},
+			payment_money=#{paymentMoney}
+		where id=#{id}
+	</update>
+	<delete id="delete">
+		DELETE FROM party_panyment
+		WHERE id = #{id}
+	</delete>
+	<select id="findList" resultType="PartyPanyment" >
+		SELECT
+			<include refid="selectPartyColumns"/>
+		FROM party_panyment
+		<where>
+			<if test="name != null and name != ''">
+				AND `name` LIKE
+				<if test="dbName == 'oracle'">'%'||#{name}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{name}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{name},'%')</if>
+			</if>
+		</where>
+	</select>
+	<select id="get" resultType="PartyPanyment" >
+		SELECT
+		<include refid="selectPartyColumns"/>
+		FROM party_panyment
+		WHERE id = #{id}
+	</select>
+</mapper>

+ 48 - 0
src/main/java/com/jeeplus/modules/leader/partyPanyment/service/PartyPanymentService.java

@@ -0,0 +1,48 @@
+package com.jeeplus.modules.leader.partyPanyment.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.leader.info.entity.LeaderInfo;
+import com.jeeplus.modules.leader.org.entity.LeaderOrgNo;
+import com.jeeplus.modules.leader.partyPanyment.entity.PartyPanyment;
+import com.jeeplus.modules.leader.partyPanyment.mapper.PartyPanymentMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author wang_xy
+ * @description
+ * @Version 1.0
+ * @params
+ * @return
+ * @since 2022/8/22 16:23
+ */
+@Service
+@Transactional(readOnly = true)
+public class PartyPanymentService extends CrudService<PartyPanymentMapper, PartyPanyment> {
+
+    public PartyPanyment get(String id) {
+        return super.get(id);
+    }
+
+    public List<PartyPanyment> findList(PartyPanyment partyPanyment) {
+        return super.findList(partyPanyment);
+    }
+
+    public Page<PartyPanyment> findPage(Page<PartyPanyment> page, PartyPanyment partyPanyment) {
+        return super.findPage(page, partyPanyment);
+    }
+
+    @Transactional(readOnly = false)
+    public void save(PartyPanyment partyPanyment) {
+        super.save(partyPanyment);
+    }
+
+    @Transactional(readOnly = false)
+    public void delete(PartyPanyment partyPanyment) {
+        super.delete(partyPanyment);
+    }
+
+}

+ 148 - 0
src/main/java/com/jeeplus/modules/leader/partyPanyment/web/PartyPanymentController.java

@@ -0,0 +1,148 @@
+package com.jeeplus.modules.leader.partyPanyment.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.leader.org.entity.LeaderOrgNo;
+import com.jeeplus.modules.leader.org.service.LeaderOrgNoService;
+import com.jeeplus.modules.leader.partyPanyment.entity.PartyPanyment;
+import com.jeeplus.modules.leader.partyPanyment.service.PartyPanymentService;
+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.PathVariable;
+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.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 党费缴纳
+ * @author wang_xy
+ * @description
+ * @Version 1.0
+ * @params
+ * @return
+ * @since 2022/8/22 16:23
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/leader/info/partyPanyment")
+public class PartyPanymentController extends BaseController {
+
+    @Autowired
+    private PartyPanymentService partyPanymentService;
+    @Autowired
+    private LeaderOrgNoService leaderOrgNoService;
+
+    /**
+     * 跳转列表页
+     */
+    @RequestMapping(value = {"goList",""})
+    public String goList(PartyPanyment partyPanyment, Model model) {
+        model.addAttribute("partyPanyment", partyPanyment);
+        return "modules/leader/partyPanyment/partyPanymentList";
+    }
+    /**
+     * 列表数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "findList")
+    public Map<String, Object> findList(PartyPanyment partyPanyment, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<PartyPanyment> page = partyPanymentService.findPage(new Page<PartyPanyment>(request, response), partyPanyment);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 跳转新增页面
+     */
+    @RequestMapping(value = {"form/{mode}"})
+    public String goSave(@PathVariable String mode, PartyPanyment partyPanyment, Model model) {
+        model.addAttribute("partyPanyment", "add".equals(mode)?partyPanyment:partyPanymentService.get(partyPanyment));
+        model.addAttribute("mode", mode);
+        return "modules/leader/partyPanyment/partyPanymentForm";
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "save")
+    public AjaxJson save(PartyPanyment partyPanyment, Model model) throws Exception{
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(partyPanyment);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        if(StringUtils.isEmpty(partyPanyment.getId())){
+            partyPanyment.setIsNewRecord(true);
+            partyPanyment.setId(UUID.randomUUID().toString());
+        }
+        partyPanymentService.save(partyPanyment);
+        j.setSuccess(true);
+        j.setMsg("党费缴纳信息录入成功");
+        return j;
+    }
+    /**
+     * 删除积极分子
+     */
+    @ResponseBody
+    @RequestMapping(value = "delete")
+    public AjaxJson delete(PartyPanyment partyPanyment) {
+        AjaxJson j = new AjaxJson();
+        partyPanymentService.delete(partyPanyment);
+        j.setMsg("删除党费成功");
+        return j;
+    }
+    /**
+     * 批量删除积极分子
+     */
+    @ResponseBody
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson deleteAll(String ids) {
+        AjaxJson j = new AjaxJson();
+        String idArray[] =ids.split(",");
+        for(String id : idArray){
+            partyPanymentService.delete(partyPanymentService.get(id));
+        }
+        j.setMsg("删除党费成功");
+        return j;
+    }
+
+
+    /**
+     * 党建云图地址跳转
+     */
+    @RequestMapping(value = {"cloudChart"})
+    public String cloudChart(Model model) {
+        return "modules/leader/cloudChart/cloudChart";
+    }
+
+    /**
+     * 批量删除积极分子
+     */
+    @ResponseBody
+    @RequestMapping(value = "findAllList")
+    public Map<String, Object> findAllList() {
+        Map<String, Object> ret = new HashMap();
+        List<LeaderOrgNo> list = leaderOrgNoService.findListByLonLatNotNull();
+        ret.put("data",list);
+        return ret;
+    }
+
+    /**
+     * 集安e党建
+     */
+    @RequestMapping(value = {"goELeader"})
+    public String goELeader(Model model) {
+        return "modules/leader/cloudChart/eLeader";
+    }
+}

+ 25 - 25
src/main/java/com/jeeplus/modules/sys/utils/UserUtils.java

@@ -56,7 +56,7 @@ public class UserUtils {
 	public static final String CACHE_OFFICE_LIST = "officeList";
 	public static final String CACHE_OFFICE_ALL_LIST = "officeAllList";
 	public static final String CACHE_ORG_ALL_LIST = "leaderOrgNoList";
-	
+
 	/**
 	 * 根据ID获取用户
 	 * @param id
@@ -118,7 +118,7 @@ public class UserUtils {
 		}
 		return user;
 	}
-	
+
 	/**
 	 * 清除当前用户缓存
 	 */
@@ -131,7 +131,7 @@ public class UserUtils {
 		removeCache(CACHE_OFFICE_ALL_LIST);
 		UserUtils.clearCache(getUser());
 	}
-	
+
 	/**
 	 * 清除指定用户缓存
 	 * @param user
@@ -144,7 +144,7 @@ public class UserUtils {
 			CacheUtils.remove(USER_CACHE, USER_CACHE_LIST_BY_OFFICE_ID_ + user.getOffice().getId());
 		}
 	}
-	
+
 	/**
 	 * 获取当前用户
 	 * @return 取不到返回 new User()
@@ -182,7 +182,7 @@ public class UserUtils {
 		}
 		return roleList;
 	}
-	
+
 	/**
 	 * 获取当前用户授权菜单
 	 * @return
@@ -203,7 +203,7 @@ public class UserUtils {
 		}
 		return menuList;
 	}
-	
+
 	/**
 	 * 获取当前用户授权数据权限
 	 * @return
@@ -222,7 +222,7 @@ public class UserUtils {
 		}
 		return dataRuleList;
 	}
-	
+
 	/**
 	 * 获取当前用户授权菜单
 	 * @return
@@ -309,7 +309,7 @@ public class UserUtils {
 	public static Subject getSubject(){
 		return SecurityUtils.getSubject();
 	}
-	
+
 	/**
 	 * 获取当前登录者对象
 	 */
@@ -322,13 +322,13 @@ public class UserUtils {
 			}
 //			subject.logout();
 		}catch (UnavailableSecurityManagerException e) {
-			
+
 		}catch (InvalidSessionException e){
-			
+
 		}
 		return null;
 	}
-	
+
 	public static Session getSession(){
 		try{
 			Subject subject = SecurityUtils.getSubject();
@@ -341,17 +341,17 @@ public class UserUtils {
 			}
 //			subject.logout();
 		}catch (InvalidSessionException e){
-			
+
 		}
 		return null;
 	}
-	
+
 	// ============== User Cache ==============
-	
+
 	public static Object getCache(String key) {
 		return getCache(key, null);
 	}
-	
+
 	public static Object getCache(String key, Object defaultValue) {
 //		Object obj = getCacheMap().get(key);
 		Object obj = getSession().getAttribute(key);
@@ -367,11 +367,11 @@ public class UserUtils {
 //		getCacheMap().remove(key);
 		getSession().removeAttribute(key);
 	}
-	
+
 	public static String getTime(Date date){
 		StringBuffer time = new StringBuffer();
         Date date2 = new Date();
-        long temp = date2.getTime() - date.getTime();    
+        long temp = date2.getTime() - date.getTime();
         long days = temp / 1000 / 3600/24;                //相差小时数
         if(days>0){
         	time.append(days+"天");
@@ -391,20 +391,20 @@ public class UserUtils {
 	//发送注册码
 	public static String sendRandomCode(String uid, String pwd, String tel, String randomCode) throws IOException {
 		//发送内容
-		String content = "您的验证码是:"+randomCode+",有效期30分钟,请在有效期内使用。"; 
-		
+		String content = "您的验证码是:"+randomCode+",有效期30分钟,请在有效期内使用。";
+
 		return SMSUtils.send(uid, pwd, tel, content);
 
 	}
-	
+
 	//注册用户重置密码
 	public static String sendPass(String uid, String pwd, String tel, String password) throws IOException {
 		//发送内容
-		String content = "您的新密码是:"+password+",请登录系统,重新设置密码。"; 
+		String content = "您的新密码是:"+password+",请登录系统,重新设置密码。";
 		return SMSUtils.send(uid, pwd, tel, content);
 
 	}
-	
+
 	/**
 	 * 导出Excel调用,根据姓名转换为ID
 	 */
@@ -444,10 +444,10 @@ public class UserUtils {
 			return new Area();
 		}
 	}
-	
-	
+
+
 	public static boolean hasPermission(String permission){
 		return SecurityUtils.getSubject().isPermitted(permission);
 	}
-	
+
 }

+ 27 - 27
src/main/java/com/jeeplus/modules/sys/web/LoginController.java

@@ -59,19 +59,19 @@ import static org.jgroups.blocks.RpcDispatcher.getName;
 @Api(value = "LoginController", description = "登录控制器")
 @Controller
 public class LoginController extends BaseController{
-	
+
 	@Autowired
 	private SessionDAO sessionDAO;
-	
+
 	@Autowired
 	private UserMapper userMapper;
 
 	@Autowired
 	private LeaderOrgNoService orgNoService;
-	
+
 	/**
 	 * 管理登录
-	 * @throws IOException 
+	 * @throws IOException
 	 */
 	@ResponseBody
 	@ApiOperation(notes = "loginMobile", httpMethod = "POST", value = "用户登录")
@@ -188,7 +188,7 @@ public class LoginController extends BaseController{
 	@RequestMapping(value = "${adminPath}/login", method = RequestMethod.POST)
 	public String loginFail(HttpServletRequest request, HttpServletResponse response, Model model) {
 		Principal principal = UserUtils.getPrincipal();
-		
+
 		// 如果已经登录,则跳转到管理首页
 		if(principal != null){
 			return "redirect:" + adminPath;
@@ -199,7 +199,7 @@ public class LoginController extends BaseController{
 		boolean mobile = WebUtils.isTrue(request, FormAuthenticationFilter.DEFAULT_MOBILE_PARAM);
 		String exception = (String)request.getAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
 		String message = (String)request.getAttribute(FormAuthenticationFilter.DEFAULT_MESSAGE_PARAM);
-		
+
 		if (StringUtils.isBlank(message) || StringUtils.equals(message, "null")){
 			message = "用户或密码错误, 请重试.";
 		}
@@ -209,20 +209,20 @@ public class LoginController extends BaseController{
 		model.addAttribute(FormAuthenticationFilter.DEFAULT_MOBILE_PARAM, mobile);
 		model.addAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME, exception);
 		model.addAttribute(FormAuthenticationFilter.DEFAULT_MESSAGE_PARAM, message);
-		
+
 		if (logger.isDebugEnabled()){
-			logger.debug("login fail, active session size: {}, message: {}, exception: {}", 
+			logger.debug("login fail, active session size: {}, message: {}, exception: {}",
 					sessionDAO.getActiveSessions(false).size(), message, exception);
 		}
-		
+
 		// 非授权异常,登录失败,验证码加1。
 		if (!UnauthorizedException.class.getName().equals(exception)){
 			model.addAttribute("isValidateCodeLogin", isValidateCodeLogin(username, true, false));
 		}
-		
+
 		// 验证失败清空验证码
 		request.getSession().setAttribute(ValidateCodeServlet.VALIDATE_CODE, IdGen.uuid());
-		
+
 		// 如果是手机登录,则返回JSON字符串
 		if (mobile){
 			AjaxJson j = new AjaxJson();
@@ -234,13 +234,13 @@ public class LoginController extends BaseController{
 			j.put("JSESSIONID", "");
 	        return renderString(response, j.getJsonStr());
 		}
-		
+
 		return "modules/sys/login/sysLogin";
 	}
 
 	/**
 	 * 管理登录
-	 * @throws IOException 
+	 * @throws IOException
 	 */
 	@RequestMapping(value = "${adminPath}/logout", method = RequestMethod.GET)
 	public String logout(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException {
@@ -248,7 +248,7 @@ public class LoginController extends BaseController{
 		// 如果已经登录,则跳转到管理首页
 		if(principal != null){
 			UserUtils.getSubject().logout();
-			
+
 		}
 	   // 如果是手机客户端退出跳转到login,则返回JSON字符串
 			String ajax = request.getParameter("__ajax");
@@ -269,11 +269,11 @@ public class LoginController extends BaseController{
 		Principal principal = UserUtils.getPrincipal();
 		// 登录成功后,验证码计算器清零
 		isValidateCodeLogin(principal.getLoginName(), false, true);
-		
+
 		if (logger.isDebugEnabled()){
 			logger.debug("show index, active session size: {}", sessionDAO.getActiveSessions(false).size());
 		}
-		
+
 		// 如果已登录,再次访问主页,则退出原账号。
 		if (Global.TRUE.equals(Global.getConfig("notAllowRefreshIndex"))){
 			String logined = CookieUtils.getCookie(request, "LOGINED");
@@ -284,7 +284,7 @@ public class LoginController extends BaseController{
 				return "redirect:" + adminPath + "/login";
 			}
 		}
-		
+
 		// 如果是手机登录,则返回JSON字符串
 		if (principal.isMobileLogin()){
 			if (request.getParameter("login") != null){
@@ -295,7 +295,7 @@ public class LoginController extends BaseController{
 			}
 			return "redirect:" + adminPath + "/login";
 		}
-		
+
 		if(UserUtils.getMenuList().size() == 0){
 			return "modules/sys/login/noAuth";
 		}else{
@@ -325,9 +325,9 @@ public class LoginController extends BaseController{
 
 			return "modules/sys/login/sysIndex";
 		}
-		
-		
-		
+
+
+
 	}
 	/**
 	 * 切换风格
@@ -368,7 +368,7 @@ public class LoginController extends BaseController{
 		}
 		return theme;
 	}
-	
+
 	/**
 	 * 是否启用tab
 	 */
@@ -381,7 +381,7 @@ public class LoginController extends BaseController{
 		}
 		return "redirect:"+request.getParameter("url");
 	}
-	
+
 	/**
 	 * 是否是验证码登录
 	 * @param useruame 用户名
@@ -409,16 +409,16 @@ public class LoginController extends BaseController{
 		}
 		return loginFailNum >= 3;
 	}
-	
-	
+
+
 	/**
 	 * 首页
-	 * @throws IOException 
+	 * @throws IOException
 	 */
 	@RequestMapping(value = "${adminPath}/home")
 	public String home(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException {
 		return "modules/iim/calendar/myCalendar";
 		//return "modules/sys/login/sysHome";
-		
+
 	}
 }

+ 18 - 18
src/main/resources/spring/spring-context-shiro.xml

@@ -9,7 +9,7 @@
 
     <!-- 加载配置属性文件 -->
 	<context:property-placeholder ignore-unresolvable="true" location="classpath:/properties/jeeplus.properties" />
-	
+
 	<!-- Shiro权限过滤过滤器定义 -->
 	<bean name="shiroFilterChainDefinitions" class="java.lang.String">
 		<constructor-arg>
@@ -104,10 +104,10 @@
 			</value>
 		</constructor-arg>
 	</bean>
-	
+
 	<!-- 安全认证过滤器 -->
 	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
-		<property name="securityManager" ref="securityManager" /><!-- 
+		<property name="securityManager" ref="securityManager" /><!--
 		<property name="loginUrl" value="${cas.server.url}?service=${cas.project.url}${adminPath}/cas" /> -->
 		<property name="loginUrl" value="${adminPath}/login" />
 		<property name="successUrl" value="${adminPath}?login" />
@@ -121,35 +121,35 @@
 			<ref bean="shiroFilterChainDefinitions"/>
 		</property>
 	</bean>
-	
-	<!-- CAS认证过滤器 -->  
-	<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">  
+
+	<!-- CAS认证过滤器 -->
+	<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">
 		<property name="failureUrl" value="${adminPath}/login"/>
 	</bean>
-	
+
 	<!-- 定义Shiro安全管理配置 -->
 	<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
 		<property name="realm" ref="systemAuthorizingRealm" />
 		<property name="sessionManager" ref="sessionManager" />
 		<property name="cacheManager" ref="shiroCacheManager" />
 	</bean>
-	
+
 	<!-- 自定义会话管理配置 -->
-	<bean id="sessionManager" class="com.jeeplus.core.security.shiro.session.SessionManager"> 
+	<bean id="sessionManager" class="com.jeeplus.core.security.shiro.session.SessionManager">
 		<property name="sessionDAO" ref="sessionDAO"/>
-		
+
 		<!-- 会话超时时间,单位:毫秒  -->
 		<property name="globalSessionTimeout" value="${session.sessionTimeout}"/>
-		
+
 		<!-- 定时清理失效会话, 清理用户直接关闭浏览器造成的孤立会话   -->
 		<property name="sessionValidationInterval" value="${session.sessionTimeoutClean}"/>
 <!--  		<property name="sessionValidationSchedulerEnabled" value="false"/> -->
  		<property name="sessionValidationSchedulerEnabled" value="true"/>
- 		
+
 		<property name="sessionIdCookie" ref="sessionIdCookie"/>
 		<property name="sessionIdCookieEnabled" value="true"/>
 	</bean>
-	
+
 	<!-- 指定本系统SESSIONID, 默认为: JSESSIONID 问题: 与SERVLET容器名冲突, 如JETTY, TOMCAT 等默认JSESSIONID,
 		当跳出SHIRO SERVLET时如ERROR-PAGE容器会为JSESSIONID重新分配值导致登录会话丢失! -->
 	<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
@@ -163,15 +163,15 @@
 		<property name="activeSessionsCacheName" value="activeSessionsCache" />
 		<property name="cacheManager" ref="shiroCacheManager" />
 	</bean>
-	
+
 	<!-- 定义授权缓存管理器 -->
 <!-- 	<bean id="shiroCacheManager" class="com.jeeplus.core.security.shiro.cache.SessionCacheManager" /> -->
 	<bean id="shiroCacheManager" class="org.nutz.j2cache.shiro.J2CacheManager">
 	</bean>
-	
+
 	<!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
 	<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
-	
+
 	<!-- AOP式方法级权限检查  -->
 	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
 		<property name="proxyTargetClass" value="true" />
@@ -179,5 +179,5 @@
 	<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
     	<property name="securityManager" ref="securityManager"/>
 	</bean>
-	
-</beans>
+
+</beans>

+ 31 - 31
src/main/resources/spring/spring-mvc.xml

@@ -4,9 +4,9 @@
 	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
 		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
-    
+
     <description>Spring MVC Configuration</description>
-    
+
     <!-- 加载配置属性文件 -->
 	<context:property-placeholder ignore-unresolvable="true" location="classpath:/properties/jeeplus.properties" />
 	<!-- 使用Annotation自动注册Bean,只扫描@Controller -->
@@ -27,9 +27,9 @@
                 	<list><value>application/json;charset=UTF-8</value></list>
                 </property>
                 <property name="prettyPrint" value="false"/>
-                <property name="objectMapper">  
-                    <bean class="com.jeeplus.core.mapper.JsonMapper"></bean>  
-                </property> 
+                <property name="objectMapper">
+                    <bean class="com.jeeplus.core.mapper.JsonMapper"></bean>
+                </property>
             </bean>
 
 			<!-- 使用XML格式输出数据 -->
@@ -50,7 +50,7 @@
 			</bean>
 		</mvc:message-converters>
 	</mvc:annotation-driven>
-	
+
     <!-- REST中根据URL后缀自动判定Content-Type及相应的View -->
 	<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
 	    <property name="mediaTypes" >
@@ -62,24 +62,24 @@
         <property name="ignoreAcceptHeader" value="true"/>
         <property name="favorPathExtension" value="true"/>
 	</bean>
-	
+
 	<!-- 定义视图文件解析 -->
-	  <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
-        <property name="templateLoaderPath">  
-            <value>${web.view.prefix}</value>  
-        </property>  
-    </bean>  
-     <bean id="htmlviewResolver"  
-        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
-        <property name="suffix" value=".html" /> 
-        <property name="order" value="0"></property> 
-        <property name="contentType" value="text/html;charset=UTF-8"></property>         
-    </bean>  
-    
+	  <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
+        <property name="templateLoaderPath">
+            <value>${web.view.prefix}</value>
+        </property>
+    </bean>
+     <bean id="htmlviewResolver"
+        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
+        <property name="suffix" value=".html" />
+        <property name="order" value="0"></property>
+        <property name="contentType" value="text/html;charset=UTF-8"></property>
+    </bean>
+
 	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 		<property name="prefix" value="${web.view.prefix}"/>
 		<property name="suffix" value="${web.view.suffix}"/>
-		<property name="order" value="1"></property> 
+		<property name="order" value="1"></property>
 	</bean>
 	<!--<bean class="com.gude.config.SwaggerConfig" /> 使用bean申明可以去掉@configuration-->
 	<!--扫描@configuration注解-->
@@ -91,7 +91,7 @@
 
 	<!-- 对静态资源文件的访问, 将无法mapping到Controller的path交给default servlet handler处理 -->
 	<mvc:default-servlet-handler />
-	
+
 	<!-- 静态资源映射 -->
     <mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/>
 
@@ -110,15 +110,15 @@
 			<bean class="com.jeeplus.modules.sys.interceptor.LogInterceptor" />
 		</mvc:interceptor>
 	</mvc:interceptors>
-	
 
-     
-	
+
+
+
 	<!-- 支持Shiro对Controller的方法级AOP安全控制 begin-->
 	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
 		<property name="proxyTargetClass" value="true" />
 	</bean>
-	
+
 	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
 		<property name="exceptionMappings">
 			<props>
@@ -128,10 +128,10 @@
 			</property>
 	</bean>
 	<!-- 支持Shiro对Controller的方法级AOP安全控制 end -->
-	
-	<!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->  
-	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
-		<property name="maxUploadSize" value="${web.maxUploadSize}" />  
+
+	<!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->
+	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
+		<property name="maxUploadSize" value="${web.maxUploadSize}" />
 	</bean>
-	
-</beans>
+
+</beans>

BIN
src/main/webapp/static/common/images/mapbd.png


BIN
src/main/webapp/static/web/images/jianewm.png


+ 48 - 0
src/main/webapp/webpage/modules/leader/cloudChart/cloudChart.jsp

@@ -0,0 +1,48 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发展党员管理</title>
+	<meta name="decorator" content="ani"/>
+	<style type="text/css">
+		body, html,#container {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
+	</style>
+	<script type="text/javascript"
+			src="http://api.map.baidu.com/api?v=3.0&ak=PlhFWpA02aoURjAOpnWcRGqw7AI8EEyO"></script>
+
+</head>
+<body>
+	<div id="container"></div>
+	<script type="text/javascript">
+        $.ajax({
+            type:"GET",
+            url :"${ctx}/leader/info/partyPanyment/findAllList",
+            dataType:"json",
+            success:function(data){
+                var map = new BMap.Map("container");
+                map.centerAndZoom(new BMap.Point(129.77637582701928, 43.00009148769267), 12);
+                map.enableScrollWheelZoom();
+                var icon = new BMap.Icon("${ctxStatic}/common/images/mapbd.png", new BMap.Size(50, 36));
+                for (var i=0;i<data.data.length;i++){
+                    var lonLat = data.data[i].longitudeLatitude.split(",");
+                    var P = new BMap.Point(lonLat[0], lonLat[1]);
+                    var MP = new BMap.Marker(P, {icon: icon});
+                    map.addOverlay(MP);
+                    addClickHandler(data.data[i].name, MP);
+                }
+            }
+        });
+        function addClickHandler(content, marker) {
+            var opts = {
+                width : 200,     // 信息窗口宽度
+                height: 100,     // 信息窗口高度
+            }
+            var infoWindow = new BMap.InfoWindow(content, opts);
+            marker.addEventListener('click', function () {
+                this.openInfoWindow(infoWindow);
+            });
+        }
+	</script>
+</body>
+</html>
+

+ 18 - 0
src/main/webapp/webpage/modules/leader/cloudChart/eLeader.jsp

@@ -0,0 +1,18 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发展党员管理</title>
+	<meta name="decorator" content="ani"/>
+	<style type="text/css">
+		body, html,#container {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
+	</style>
+
+</head>
+<body>
+	<div id="container">
+		<img src="${ctxStatic}/web/images/jianewm.png" style="width: 50%;margin-left: 21%;"/>
+	</div>
+</body>
+</html>
+

+ 104 - 0
src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentForm.jsp

@@ -0,0 +1,104 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发展党员管理</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+            <c:if test="${partyPanyment.oprType !=null && partyPanyment.oprType!=''}">
+				$(".table.table-bordered").find("input,textarea,select").attr("disabled", "disabled");
+				//$(".input-group-addon").hide();
+				$("#cityIdButton").hide();
+            </c:if>
+
+			jp.ajaxForm("#inputForm",function(data){
+				if(data.success){
+				    jp.success(data.msg);
+					jp.go("${ctx}/leader/info/partyPanyment");
+				}else{
+				    jp.error(data.msg);
+				    $("#inputForm").find("button:submit").button("reset");
+				}
+			});
+
+	        $('#birth').datetimepicker({
+				 format: "YYYY-MM"
+		    });
+	        $('#workDate').datetimepicker({
+				 format: "YYYY-MM"
+		    });
+	        $('#applyDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+	        $('#attendDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+	        $('#trainPartyDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+		});
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+<div class="row">
+	<div class="col-md-12">
+	<div class="panel panel-primary">
+		<div class="panel-heading">
+			<h3 class="panel-title">
+				<a class="panelButton" href="${ctx}/leader/info/partyPanyment/goList"><i class="ti-angle-left"></i> 返回</a>
+			</h3>
+		</div>
+		<div class="panel-body">
+		<form:form id="inputForm" modelAttribute="partyPanyment" action="${ctx}/leader/info/partyPanyment/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<table class="table table-bordered">
+				<tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>党员姓名:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"  maxlength="10"  class="form-control required" value="${partyPanyment.name}"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">所属党组织:</label></td>
+					<td class="width-35">
+						<sys:treeselect id="attendOrgId" name="attendOrgId" value="${partyPanyment.attendOrgId}" labelName="attendOrgName" labelValue="${partyPanyment.attendOrgName}"
+										title="所属党组织" url="/leader/org/leaderOrgNo/treeData" cssClass="form-control" allowSearch="true" allowClear="true" notAllowSelectRoot = "true"  notAllowSelectParent="true"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">缴纳时间:</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='attendDate'>
+						<input type='text'  name="paymentTime" class="form-control "  value="<fmt:formatDate value="${partyPanyment.paymentTime}" pattern="yyyy-MM-dd"/>"/>
+						<span class="input-group-addon">
+								<span class="glyphicon glyphicon-calendar"></span>
+							</span>
+						</div>
+					</td>
+					<td class="width-15 active"><label class="pull-right">缴纳金额:</label></td>
+					<td class="width-35">
+						<form:input path="paymentMoney" htmlEscape="false"  maxlength="10"  class="form-control required" value="${partyPanyment.paymentMoney}"/>
+					</td>
+				</tr>
+				</tbody>
+			</table>
+		<c:if test="${mode == 'add' || mode=='edit'}">
+				<div class="col-lg-3"></div>
+		        <div class="col-lg-6">
+		             <div class="form-group text-center">
+		                 <div>
+		                     <button style="width: 130px; margin: auto;" class="btn btn-primary btn-block btn-lg btn-parsley" data-loading-text="正在提交...">提 交</button>
+		                 </div>
+		             </div>
+		        </div>
+		</c:if>
+		</form:form>
+		</div>
+	</div>
+	</div>
+</div>
+</div>
+</body>
+</html>

+ 193 - 0
src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentList.js

@@ -0,0 +1,193 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#leaderActivistTable').bootstrapTable({
+
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	           showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: false,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/leader/info/partyPanyment/findList",
+               //默认值为 '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;
+               },
+               //分页方式: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") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/leader/info/partyPanyment/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#leaderActivistTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'name',
+		        title: '姓名',
+		        sortable: true,
+		        sortName: 'name'
+		    }
+			,{
+		        field: 'attendOrgName',
+		        title: '所属党组织',
+		        sortable: true,
+		        sortName: 'attendOrgName'
+
+		    }
+			,{
+		        field: 'paymentTime',
+		        title: '缴纳时间',
+		        sortable: true,
+		        sortName: 'paymentTime'
+
+		    }
+			,{
+		        field: 'paymentMoney',
+		        title: '缴纳金额',
+		        sortable: true,
+		        sortName: 'paymentMoney'
+
+		    }
+		     ]
+
+		});
+
+
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+		  $('#leaderActivistTable').bootstrapTable("toggleView");
+		}
+
+	  $('#leaderActivistTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#leaderActivistTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#leaderActivistTable').bootstrapTable('getSelections').length!=1);
+        });
+
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/leader/activist/leaderActivist/export');
+	  });
+
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#leaderActivistTable').bootstrapTable('refresh');
+		});
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#leaderActivistTable').bootstrapTable('refresh');
+		});
+
+		$('#trainPartyDate').datetimepicker({
+			 format: "YYYY-MM-DD"
+		});
+
+	});
+
+  function getIdSelections() {
+        return $.map($("#leaderActivistTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+
+  function deleteAll(){
+
+		jp.confirm('确认要删除该积极分子记录吗?', function(){
+			jp.loading();
+			jp.get("${ctx}/leader/info/partyPanyment/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#leaderActivistTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+
+		})
+  }
+  function refresh(){
+  	$('#leaderActivistTable').bootstrapTable('refresh');
+  }
+  function add(){
+		jp.go("${ctx}/leader/info/partyPanyment/form/add");
+	}
+
+  function edit(id){
+	  if(id == undefined){
+		  id = getIdSelections();
+	  }
+	  jp.go("${ctx}/leader/info/partyPanyment/form/edit?id=" + id);
+  }
+
+  function view(id) {
+      if(id == undefined){
+          id = getIdSelections();
+      }
+      jp.go("${ctx}/leader/info/partyPanyment/form/view?oprType=view&id=" + id);
+  }
+
+</script>

+ 67 - 0
src/main/webapp/webpage/modules/leader/partyPanyment/partyPanymentList.jsp

@@ -0,0 +1,67 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>党费缴纳管理</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<%@include file="partyPanymentList.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 id="search-collapse" class="collapse">
+		<div class="accordion-inner">
+			<form:form id="searchForm" modelAttribute="partyPanyment" class="form form-horizontal well clearfix">
+			 <div class="col-xs-12 col-sm-6 col-md-4">
+				<label class="label-item single-overflow pull-left" title="姓名:">姓名:</label>
+				<form:input path="name" htmlEscape="false" maxlength="100"  class=" form-control"/>
+			</div>
+		 <div class="col-xs-12 col-sm-6 col-md-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:form>
+	</div>
+	</div>
+
+	<!-- 工具栏 -->
+	<div id="toolbar">
+		<button id="add" class="btn btn-primary" onclick="add()">
+			<i class="glyphicon glyphicon-plus"></i> 新建
+		</button>
+		<button id="edit" class="btn btn-success" disabled onclick="edit()">
+			<i class="glyphicon glyphicon-edit"></i> 修改
+		</button>
+		<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+			<i class="glyphicon glyphicon-remove"></i> 删除
+		</button>
+		<button id="view" class="btn btn-default" disabled onclick="view()">
+			<i class="fa fa-search-plus"></i> 查看
+		</button>
+	</div>
+	<!-- 表格 -->
+	<table id="leaderActivistTable"   data-toolbar="#toolbar"></table>
+
+    <!-- context menu -->
+    <ul id="context-menu" class="dropdown-menu">
+        <li data-item="view"><a>查看</a></li>
+        <li data-item="edit"><a>编辑</a></li>
+        <li data-item="delete"><a>删除</a></li>
+        <li data-item="action1"><a>取消</a></li>
+    </ul>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 35 - 35
src/main/webapp/webpage/modules/leader/task/leaderTaskList.js

@@ -5,7 +5,7 @@ var searchParam =  $("#searchForm").serializeJSON();
 var flow ;
 $(document).ready(function() {
 	$('#leaderTaskTable').bootstrapTable({
-		 
+
 		  //请求方法
                method: 'post',
                //类型json
@@ -29,23 +29,23 @@ $(document).ready(function() {
 				singleSelect: true,
                //是否显示行间隔色
                striped: true,
-               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)     
-               cache: false,    
-               //是否显示分页(*)  
-               pagination: true,   
-                //排序方式 
-               sortOrder: "asc",  
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
                //初始化加载第一页,默认第一页
-               pageNumber:1,   
-               //每页的记录行数(*)   
-               pageSize: 10,  
-               //可供选择的每页的行数(*)    
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
                pageList: [10, 25, 50, 100],
-               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据  
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
                url: "${ctx}/leader/task/leaderTask/data",
                //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
-               //queryParamsType:'',   
-               ////查询参数,每次调用是会带上这个参数,可自定义                         
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
                queryParams : function(params) {
                	var searchParam = $("#searchForm").serializeJSON();
                	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
@@ -63,7 +63,7 @@ $(document).ready(function() {
 		},
                columns: [{
 		        checkbox: true
-		       
+
 		    }
 			,{
 		        field: 'title',
@@ -74,7 +74,7 @@ $(document).ready(function() {
 		        	value = jp.unescapeHTML(value);
                     return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
 		         }
-		       
+
 		    }
 			,{
 		        field: 'activityType',
@@ -87,14 +87,14 @@ $(document).ready(function() {
 		        title: '任务开始时间',
 		        sortable: true,
 		        sortName: 'startDate'
-		       
+
 		    }
 			,{
 		        field: 'endDate',
 		        title: '任务结束时间',
 		        sortable: true,
 		        sortName: 'endDate'
-		       
+
 		    }
 		   ,{
 			   field: 'attendOrgName',
@@ -116,7 +116,7 @@ $(document).ready(function() {
                     else
                     	return "--";
 		        }
-		       
+
 		    }
 		    /*,{
 		        field: 'attachFile',
@@ -136,19 +136,19 @@ $(document).ready(function() {
 		        	}
 		        	return labelArray.join(" ");
 		        }
-		       
+
 		    }*/
 		     ]
-		
+
 		});
-		
-		  
+
+
 	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
 
-		 
+
 		  $('#leaderTaskTable').bootstrapTable("toggleView");
 		}
-	  
+
 	  $('#leaderTaskTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
                 'check-all.bs.table uncheck-all.bs.table', function () {
           var row = $('#leaderTaskTable').bootstrapTable('getSelections');
@@ -156,20 +156,20 @@ $(document).ready(function() {
               return row.length == 0 || row[0].status == 1;
           });
         });
-		  
+
 
 	  $("#search").click("click", function() {// 绑定查询按扭
           $('#leaderTaskTable').bootstrapTable('refresh');
 		});
-	 
+
 	 $("#reset").click("click", function() {// 绑定查询按扭
 		  $("#searchForm  input").val("");
 		  $("#searchForm  select").val("");
 		  $("#searchForm  .select-item").html("");
 		  $('#leaderTaskTable').bootstrapTable('refresh');
 		});
-		
-		
+
+
 	});
 
   function getIdSelections() {
@@ -177,11 +177,11 @@ $(document).ready(function() {
             return row.id
         });
     }
-  
+
   function deleteAll(){
 
 		jp.confirm('确认要删除该任务记录吗?', function(){
-			jp.loading();  	
+			jp.loading();
 			jp.get("${ctx}/leader/task/leaderTask/deleteAll?ids=" + getIdSelections(), function(data){
          	  		if(data.success){
          	  			$('#leaderTaskTable').bootstrapTable('refresh');
@@ -190,7 +190,7 @@ $(document).ready(function() {
          	  			jp.error(data.msg);
          	  		}
          	  	})
-          	   
+
 		})
   }
 
@@ -198,7 +198,7 @@ $(document).ready(function() {
   function refresh(){
   	$('#leaderTaskTable').bootstrapTable('refresh');
   }
-  
+
    function add(){
 	  jp.openSaveDialog('新增任务', "${ctx}/leader/task/leaderTask/form",'900px', '500px');
   }
@@ -210,7 +210,7 @@ $(document).ready(function() {
 
 	jp.openSaveDialog('编辑任务', "${ctx}/leader/task/leaderTask/form?id=" + id, '900px', '500px');
   }
-  
+
  function view(id){//没有权限时,不显示确定按钮
       if(id == undefined){
              id = getIdSelections();
@@ -220,4 +220,4 @@ $(document).ready(function() {
 
 
 
-</script>
+</script>

+ 31 - 3
src/main/webapp/webpage/modules/sys/login/sysIndex-jp.jsp

@@ -42,12 +42,22 @@
 	</div>
 	<div class="navbar-container container-fluid">
 		<div class="collapse navbar-collapse navbar-collapse-toolbar row" id="jpMenu">
-			<ul id="o1" class="nav navbar-toolbar nav-tabs  navbar-left" style="width: calc( 100% - 720px)" role="tablist">
+			<ul id="o1" class="nav navbar-toolbar nav-tabs  navbar-left" style="width: calc( 100% - 500px)" role="tablist">
 				<t:jpMenu  menu="${fns:getTopMenu()}" position="top"></t:jpMenu>
+				<li class="lw-edu">
+					<a href="http://localhost:8080/edu" role="tab" data-toggle="tab"><i class="fa fa fa-group"></i> <span>党员学习平台</span></a>
+				</li>
+				<li class="lw">
+					<a href="${ctx}/leader/info/partyPanyment/goELeader" role="tab" data-toggle="tab"><i class="fa fa fa-group"></i> <span>集安e党建</span></a>
+				</li>
+				<li class="lw">
+					<a href="${ctx}/leader/info/partyPanyment/cloudChart" role="tab" data-toggle="tab"><i class="fa fa fa-group"></i> <span>党建云图</span></a>
+				</li>
 			</ul>
 			<ul class="nav navbar-nav pull-right navbar-right">
 				<li>
 					<a href="${ctx}/home"  class="J_menuItem"><i class="fa fa-home" style="font-size:14px;"></i></a>
+
 				</li>
 
 				<li class="hidden-xs">
@@ -151,7 +161,7 @@
 						<button class="roll-nav roll-left J_tabLeft"><i class="fa fa-backward"></i>
 						</button>
 						<nav class="page-tabs J_menuTabs">
-							<div class="page-tabs-content">
+							<div class="page-tabs-content"  id="on-bq">
 								<a href="javascript:;" class="active J_menuTab" data-id="${ctx}/home">首页</a>
 							</div>
 						</nav>
@@ -218,6 +228,24 @@
 
     });
     $(function ($) {
+        $(".lw").on('click',function(e){
+            var href = $(this)[0].children[0].href;
+            $("#o1 li").removeClass("active");
+            $(this).addClass("active");
+            $("#on-bq a").removeClass("active");
+			$("#content-main iframe").removeClass("active");
+			$("#content-main iframe").hide();
+			$("#on-bq").append("<a href=\"javascript:;\" class=\"active J_menuTab\" data-id=\""+href+"\">"+e.target.innerText+" <i class=\"fa fa-times-circle\"></i></a>") ;
+			$("#content-main").append("<iframe class=\"active J_iframe\" name=\"iframe9\" width=\"100%\" height=\"100%\" src=\""+href+"\" frameborder=\"0\" data-id=\""+href+"\" seamless=\"\"></iframe>");
+		});
+        $(".lw-edu").on('click',function(e){
+            var href = $(this)[0].children[0].href;
+            $("#o1 li").removeClass("active");
+            $(this).addClass("active");
+            $("#on-bq a").removeClass("active");
+			window.open(href);
+        });
+
         $('#sidebar-nav  a').on('click', function (e) {
             var _this = $(this);
             $('#sidebar-nav  a').each(function(){
@@ -295,4 +323,4 @@
 
 </script>
 </body>
-</html>
+</html>

+ 12 - 12
src/main/webapp/webpage/modules/sys/login/sysLogin.jsp

@@ -25,7 +25,7 @@
 						errorLabelContainer: "#messageBox",
 						errorPlacement: function(error, element) {
 							error.appendTo($("#loginError").parent());
-						} 
+						}
 					});
 				});
 				// 如果在框架或在对话框中,则弹出提示并跳转到首页
@@ -34,14 +34,14 @@
 					top.location = "${ctx}";
 				}
 		</script>
-	
+
 	</head>
 
-	
+
 	<body>
-		
 
-		<div class="login-page">
+
+		<div class="login-page" style="display: none;">
 		<div class="row">
 			<div class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
 				<img  class="img-circle" src="${ctxStatic}/common/images/flat-avatar.png" class="user-avatar" />
@@ -50,11 +50,11 @@
 				<form id="loginForm" role="form" action="${ctx}/login" method="post">
 					<div class="form-content">
 						<div class="form-group">
-							<input type="text" id="username" name="username" class="form-control input-underline input-lg required"  placeholder="用户名">
+							<input type="text" value="yanshi" id="username" name="username" class="form-control input-underline input-lg required"  placeholder="用户名">
 						</div>
 
 						<div class="form-group">
-							<input type="password" id="password" name="password"  class="form-control input-underline input-lg required" placeholder="密码">
+							<input type="text" value="sydj2139070" id="password" name="password"  class="form-control input-underline input-lg required" placeholder="密码">
 						</div>
 						<c:if test="${isValidateCodeLogin}">
 						<div class="form-group  text-muted">
@@ -114,7 +114,7 @@
 								<span class="lbl"> 记住我</span>
 						</label>--%>
 					</div>
-					<input type="submit" class="btn btn-white btn-outline btn-lg btn-rounded "  value="登录">
+					<input id="dl" type="submit" class="btn btn-white btn-outline btn-lg btn-rounded "  value="登录">
 					&nbsp;
 					<%--<a href="${ctx}/sys/register" class="btn btn-white btn-outline btn-lg btn-rounded progress-login">注册</a>--%>
 				</form>
@@ -124,12 +124,12 @@
 
 	<script>
 
-		
+
 $(function(){
 		$('.theme-picker').click(function() {
 			changeTheme($(this).attr('data-theme'));
-		}); 	
-	
+		});
+        $("#dl").click();
 });
 
 function changeTheme(theme) {
@@ -166,4 +166,4 @@ li.color-picker i {
 }
 </style>
 </body>
-</html>
+</html>