Browse Source

Merge remote-tracking branch 'origin/master'

[user3] 4 years ago
parent
commit
bc2b495bba

+ 2 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectReportDao.java

@@ -20,14 +20,14 @@ public interface RuralProjectReportDao extends CrudDao<RuralProjectReportInfo> {
      * @param ruralProjectReportInfo
      * @return
      */
-    List<String> getYear(RuralProjectReportInfo ruralProjectReportInfo);
+    List<Integer> getYear(RuralProjectReportInfo ruralProjectReportInfo);
 
     /**
      * 获取项目月份信息
      * @param ruralProjectReportInfo
      * @return
      */
-    List<String> getMonth(RuralProjectReportInfo ruralProjectReportInfo);
+    List<Integer> getMonth(RuralProjectReportInfo ruralProjectReportInfo);
 
     /**
      * 获取项目月份信息

+ 84 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectReportInfo.java

@@ -2,6 +2,7 @@ package com.jeeplus.modules.ruralprojectrecords.entity;
 
 import com.jeeplus.common.persistence.DataEntity;
 import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.modules.sys.entity.Area;
 
 import java.util.Date;
 
@@ -27,8 +28,18 @@ public class RuralProjectReportInfo extends DataEntity<RuralProjectReportInfo>
     private String principalUser;   //项目负责人
     private String officeName;      //所属部门
 
+    private String province;  //项目所在省
+    private String city;  //项目所在市
+    private String county;//项目所在区
+
     private String projectType;   //类型
+    private String reportedState;   //上报状态
+    private String reportedProcessInstanceId;   //上报流程号
     private String officeId;
+    private String createId;
+    private String createName;
+    private String createNameStr;
+    private Area area;		// 项目所在地
 
     @ExcelField(title="年份", align=2, sort=2)
     public String getYear() {
@@ -171,4 +182,77 @@ public class RuralProjectReportInfo extends DataEntity<RuralProjectReportInfo>
     public void setOfficeId(String officeId) {
         this.officeId = officeId;
     }
+
+    @ExcelField(title="上报状态",dictType="reported_state", align=2, sort=15)
+    public String getReportedState() {
+        return reportedState;
+    }
+
+    public void setReportedState(String reportedState) {
+        this.reportedState = reportedState;
+    }
+
+    public String getReportedProcessInstanceId() {
+        return reportedProcessInstanceId;
+    }
+
+    public void setReportedProcessInstanceId(String reportedProcessInstanceId) {
+        this.reportedProcessInstanceId = reportedProcessInstanceId;
+    }
+
+    public Area getArea() {
+        return area;
+    }
+
+    public void setArea(Area area) {
+        this.area = area;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public String getCreateNameStr() {
+        return createNameStr;
+    }
+
+    public void setCreateNameStr(String createNameStr) {
+        this.createNameStr = createNameStr;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getCounty() {
+        return county;
+    }
+
+    public void setCounty(String county) {
+        this.county = county;
+    }
 }

+ 30 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectReportService.java

@@ -3,12 +3,15 @@ package com.jeeplus.modules.ruralprojectrecords.service;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectReportDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordReportInfo;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportInfo;
+import com.jeeplus.modules.sys.entity.Area;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.AreaService;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,8 +29,14 @@ public class RuralProjectReportService extends CrudService<RuralProjectReportDao
 
     @Autowired
     private RuralWorkProjectUserDao workProjectUserDao;
+    @Autowired
+    private AreaService areaService;
 
     public Page<RuralProjectReportInfo> findPage(Page<RuralProjectReportInfo> page, RuralProjectReportInfo ruralProjectReportInfo) {
+        //判断查询条件中的项目所在地是否存在值
+        if(null != ruralProjectReportInfo.getArea() && StringUtils.isNotBlank(ruralProjectReportInfo.getArea().getId())){
+            getArea(ruralProjectReportInfo);
+        }
         //设置数据权限
         if(!UserUtils.getUser().isAdmin()) {
             String dataScopeSql = null;
@@ -63,7 +72,7 @@ public class RuralProjectReportService extends CrudService<RuralProjectReportDao
      * @param ruralProjectReportInfo
      * @return
      */
-    public List<String> getYear(RuralProjectReportInfo ruralProjectReportInfo){
+    public List<Integer> getYear(RuralProjectReportInfo ruralProjectReportInfo){
         return dao.getYear(ruralProjectReportInfo);
     }
 
@@ -72,7 +81,7 @@ public class RuralProjectReportService extends CrudService<RuralProjectReportDao
      * @param ruralProjectReportInfo
      * @return
      */
-    public List<String> getMonth(RuralProjectReportInfo ruralProjectReportInfo){
+    public List<Integer> getMonth(RuralProjectReportInfo ruralProjectReportInfo){
         return dao.getMonth(ruralProjectReportInfo);
     }
 
@@ -84,4 +93,23 @@ public class RuralProjectReportService extends CrudService<RuralProjectReportDao
     public List<Office> getOffice(RuralProjectReportInfo ruralProjectReportInfo){
         return dao.getOffice(ruralProjectReportInfo);
     }
+
+    public void getArea(RuralProjectReportInfo ruralProjectReportInfo){
+        Area area = areaService.get(ruralProjectReportInfo.getArea().getId());
+        Area area1 = areaService.get(area.getParent().getId());
+        if(area1.getId().equals("1")){
+            ruralProjectReportInfo.setProvince(area.getName());
+            return;
+        }
+        Area area2 = areaService.get(area1.getParent().getId());
+        if(area2.getId().equals("1")){
+            ruralProjectReportInfo.setProvince(area1.getName());
+            ruralProjectReportInfo.setCity(area.getName());
+            return;
+        }
+        ruralProjectReportInfo.setProvince(area2.getName());
+        ruralProjectReportInfo.setCity(area1.getName());
+        ruralProjectReportInfo.setCounty(area.getName());
+        return;
+    }
 }

+ 9 - 5
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectReportController.java

@@ -22,6 +22,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -45,14 +46,17 @@ public class RuralCostProjectReportController extends BaseController {
         ruralProjectReportInfo.setProjectType("2");
         Page<RuralProjectReportInfo> page = ruralProjectReportService.findPage(new Page<RuralProjectReportInfo>(request, response), ruralProjectReportInfo);
         //获取合同年份信息
-        List<String> yearList = ruralProjectReportService.getYear(ruralProjectReportInfo);
+        List<Integer> yearList = ruralProjectReportService.getYear(ruralProjectReportInfo);
+        Collections.sort(yearList,Collections.reverseOrder());
         //获取合同月份信息
-        List<String> monthList = ruralProjectReportService.getMonth(ruralProjectReportInfo);
+        List<Integer> monthList = ruralProjectReportService.getMonth(ruralProjectReportInfo);
+        Collections.sort(monthList);
         model.addAttribute("yearList", yearList);
         model.addAttribute("monthList", monthList);
         model.addAttribute("page", page);
         model.addAttribute("yearValue", ruralProjectReportInfo.getYear());
         model.addAttribute("monthValue", ruralProjectReportInfo.getMonth());
+        model.addAttribute("ruralProject", ruralProjectReportInfo);
         return "modules/ruralprojectrecords/ruralProjectReport/cost/ruralCostProjectReportList";
     }
 
@@ -64,14 +68,14 @@ public class RuralCostProjectReportController extends BaseController {
         try {
             //添加查询类型(造价工程)
             ruralProjectReportInfo.setProjectType("2");
-            String fileName = "年度工程造价项目一览表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+            String fileName = "工程造价项目一览表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
             User user = UserUtils.getUser();
             ruralProjectReportInfo.setCurrentUser(user);
             Page<RuralProjectReportInfo> page = ruralProjectReportService.findPage(new Page<RuralProjectReportInfo>(request, response, -1), ruralProjectReportInfo);
-            new ExportExcel("年度工程造价项目一览表", RuralProjectReportInfo.class).setDataList(page.getList()).write(response, fileName).dispose();
+            new ExportExcel("工程造价项目一览表", RuralProjectReportInfo.class).setDataList(page.getList()).write(response, fileName).dispose();
             return null;
         } catch (Exception e) {
-            addMessage(redirectAttributes, "导出年度工程造价项目一览表记录失败!失败信息:" + e.getMessage());
+            addMessage(redirectAttributes, "导出工程造价项目一览表记录失败!失败信息:" + e.getMessage());
         }
         return "redirect:" + Global.getAdminPath() + "/ruralCostProjectReport/ruralCostProjectReport/?repage";
     }

+ 9 - 5
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectReportController.java

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -43,14 +44,17 @@ public class RuralProjectReportController extends BaseController {
         ruralProjectReportInfo.setProjectType("1");
         Page<RuralProjectReportInfo> page = ruralProjectReportService.findPage(new Page<RuralProjectReportInfo>(request, response), ruralProjectReportInfo);
         //获取合同年份信息
-        List<String> yearList = ruralProjectReportService.getYear(ruralProjectReportInfo);
+        List<Integer> yearList = ruralProjectReportService.getYear(ruralProjectReportInfo);
+        Collections.sort(yearList,Collections.reverseOrder());
         //获取合同月份信息
-        List<String> monthList = ruralProjectReportService.getMonth(ruralProjectReportInfo);
+        List<Integer> monthList = ruralProjectReportService.getMonth(ruralProjectReportInfo);
+        Collections.sort(monthList);
         model.addAttribute("yearList", yearList);
         model.addAttribute("monthList", monthList);
         model.addAttribute("page", page);
         model.addAttribute("yearValue", ruralProjectReportInfo.getYear());
         model.addAttribute("monthValue", ruralProjectReportInfo.getMonth());
+        model.addAttribute("ruralProject", ruralProjectReportInfo);
         return "modules/ruralprojectrecords/ruralProjectReport/ruralProjectReportList";
     }
 
@@ -62,14 +66,14 @@ public class RuralProjectReportController extends BaseController {
         try {
             //添加查询类型(工程咨询)
             ruralProjectReportInfo.setProjectType("1");
-            String fileName = "年度工程咨询项目一览表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+            String fileName = "工程咨询项目一览表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
             User user = UserUtils.getUser();
             ruralProjectReportInfo.setCurrentUser(user);
             Page<RuralProjectReportInfo> page = ruralProjectReportService.findPage(new Page<RuralProjectReportInfo>(request, response, -1), ruralProjectReportInfo);
-            new ExportExcel("年度工程咨询项目一览表", RuralProjectReportInfo.class).setDataList(page.getList()).write(response, fileName).dispose();
+            new ExportExcel("工程咨询项目一览表", RuralProjectReportInfo.class).setDataList(page.getList()).write(response, fileName).dispose();
             return null;
         } catch (Exception e) {
-            addMessage(redirectAttributes, "导出年度工程咨询项目一览表记录失败!失败信息:" + e.getMessage());
+            addMessage(redirectAttributes, "导出工程咨询项目一览表记录失败!失败信息:" + e.getMessage());
         }
         return "redirect:" + Global.getAdminPath() + "/ruralProjectReport/ruralProjectReport/?repage";
     }

+ 6 - 5
src/main/java/com/jeeplus/modules/workcontractinfo/web/WorkContractInfoController.java

@@ -29,6 +29,7 @@ import com.jeeplus.modules.alterinfo.service.AlterInfoService;
 import com.jeeplus.modules.contractclient.entity.WorkContractClient;
 import com.jeeplus.modules.contractclient.service.WorkContractClientService;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportInfo;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.entity.User;
@@ -1984,9 +1985,7 @@ public class WorkContractInfoController extends BaseController {
     public String workContractList(WorkContractListInfo workContractListInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
         //获取合同年份信息
         List<Integer> yearList = workContractInfoService.getYear(workContractListInfo);
-        Integer[] years = yearList.toArray(new Integer[yearList.size()]);
-        Arrays.sort(years);
-        yearList = Arrays.asList(years);
+        Collections.sort(yearList,Collections.reverseOrder());
         Page<WorkContractListInfo> page = workContractInfoService.findListPage(new Page<WorkContractListInfo>(request, response), workContractListInfo);
         model.addAttribute("yearList", yearList);
         model.addAttribute("page", page);
@@ -2001,7 +2000,8 @@ public class WorkContractInfoController extends BaseController {
             String fileName = "合同一览表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
             User user = UserUtils.getUser();
             workContractListInfo.setCurrentUser(user);
-            List<WorkContractListInfo> list = workContractInfoService.findListList(workContractListInfo);
+            Page<WorkContractListInfo> page = workContractInfoService.findListPage(new Page<WorkContractListInfo>(request, response,-1), workContractListInfo);
+            List<WorkContractListInfo> list = page.getList();
             for (WorkContractListInfo info : list) {
                 if("5".equals(info.getContractState())){
                     info.setContractState("已签");
@@ -2020,7 +2020,8 @@ public class WorkContractInfoController extends BaseController {
                     info.setBorrowStatus("已借");
                 }
             }
-            new ExportExcel(false,"合同一览表", WorkContractListInfo.class,1).setDataList(list).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+            //new ExportExcel(false,"合同一览表", WorkContractListInfo.class,1).setDataList(list).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+            new ExportExcel("合同一览表", WorkContractListInfo.class).setDataList(list).write(response, fileName).dispose();
             return null;
         } catch (Exception e) {
             addMessage(redirectAttributes, "导出合同管理记录失败!失败信息:" + e.getMessage());

+ 82 - 5
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectReportDao.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectReportDao">
     
 	<sql id="ruralProjectInfoColumns">
-		a.id AS "id",
+		DISTINCT a.id AS "id",
 		year(a.create_date) as "year",
 		month(a.create_date) as "month",
 		a.create_by AS "createBy.id",
@@ -21,7 +21,7 @@
 		prd.review_fee AS "reviewFee",
 		prd.approval_fee AS "approvalFee",
 		prd.verify_fee AS "verifyFee",
-		prd.verify_rate AS "verifyFate",
+		prd.verify_rate AS "verifyRate",
 		prr.file_num AS "filesNum",
 		client.name AS "clientName",
 		o.name as "officeName",
@@ -50,7 +50,7 @@
 		WHERE a.id = #{id}
 	</select>
 
-	<select id="getYear" resultType="java.lang.String">
+	<select id="getYear" resultType="java.lang.Integer">
 		SELECT
 			distinct(year(a.create_date)) as "year"
 		FROM rural_project_records a
@@ -63,7 +63,7 @@
 		</where>
 	</select>
 
-	<select id="getMonth" resultType="java.lang.String">
+	<select id="getMonth" resultType="java.lang.Integer">
 		SELECT
 			distinct(month(a.create_date)) as "month"
 		FROM rural_project_records a
@@ -90,8 +90,11 @@
 	<select id="findList" resultType="com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportInfo" >
 		SELECT
 			<include refid="ruralProjectInfoColumns"/>
+			,ifnull(rprr.report_status,0) as "reportedState"
+			,rprr.process_instance_id as "reportedProcessInstanceId"
 		FROM rural_project_records a
 		<include refid="ruralProjectInfoJoins"/>
+		left join rural_project_records_reported rprr on rprr.id = a.id
 		<where>
 			a.del_flag = 0 and project_type = #{projectType} and a.status = 5
 			<if test="year != null and year != ''">
@@ -100,12 +103,49 @@
 			<if test="month != null and month != ''">
 				AND month(a.create_date) = #{month}
 			</if>
+			/*项目名称*/
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name LIKE concat('%',#{projectName},'%')
+			</if>
+			/*委托单位名称*/
 			<if test="clientName != null and clientName != ''">
 				AND client.name LIKE concat('%',#{clientName},'%')
 			</if>
+			/*报告号*/
+			<if test="reportNum != null and reportNum != ''">
+				AND prd.number LIKE concat('%',#{reportNum},'%')
+			</if>
+			/*项目所在地*/
+			<if test="area != null">
+				<if test="area.id != null and area.id != ''">
+					<if test="province != null and province != ''">
+						AND a.province = #{province}
+					</if>
+					<if test="city != null and city != ''">
+						AND a.city = #{city}
+					</if>
+					<if test="county != null and county != ''">
+						AND a.area_name = #{county}
+					</if>
+				</if>
+			</if>
+			/*审定金额*/
+			<if test="approvalFee != null and approvalFee != ''">
+				AND prd.approval_fee = #{approvalFee}
+			</if>
+			/*部门*/
 			<if test="officeId != null and officeId != ''">
 				AND so.id = #{officeId}
 			</if>
+			/*项目负责人*/
+			<if test="createId != null and createId != ''">
+				AND w1.user_id = #{createId} and w1.is_master = 1
+			</if>
+			/*上报状态*/
+			<if test="reportedState != null and reportedState != ''">
+				AND rprr.report_status = #{reportedState}
+			</if>
+
 			<if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
 				AND ((w1.user_id = #{currentUser.id} AND w1.del_flag='0' AND a.company_id = #{currentUser.company.id} )${sqlMap.dsf} )
 			</if>
@@ -122,9 +162,10 @@
 
 
 	<select id="queryCount" resultType="int" >
-		SELECT count(1)
+		SELECT  count(DISTINCT a.id)
 		FROM rural_project_records a
 		<include refid="ruralProjectInfoJoins"/>
+		left join rural_project_records_reported rprr on rprr.id = a.id
 		<where>
 			a.del_flag = 0 and project_type = #{projectType} and a.status = 5
 			<if test="year != null and year != ''">
@@ -133,12 +174,48 @@
 			<if test="month != null and month != ''">
 				AND month(a.create_date) = #{month}
 			</if>
+			/*项目名称*/
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name LIKE concat('%',#{projectName},'%')
+			</if>
+			/*委托单位名称*/
 			<if test="clientName != null and clientName != ''">
 				AND client.name LIKE concat('%',#{clientName},'%')
 			</if>
+			/*报告号*/
+			<if test="reportNum != null and reportNum != ''">
+				AND prd.number LIKE concat('%',#{reportNum},'%')
+			</if>
+			/*项目所在地*/
+			<if test="area != null">
+				<if test="area.id != null and area.id != ''">
+					<if test="province != null and province != ''">
+						AND a.province = #{province}
+					</if>
+					<if test="city != null and city != ''">
+						AND a.city = #{city}
+					</if>
+					<if test="county != null and county != ''">
+						AND a.area_name = #{county}
+					</if>
+				</if>
+			</if>
+			/*审定金额*/
+			<if test="approvalFee != null and approvalFee != ''">
+				AND prd.approval_fee = #{approvalFee}
+			</if>
+			/*部门*/
 			<if test="officeId != null and officeId != ''">
 				AND so.id = #{officeId}
 			</if>
+			/*项目负责人*/
+			<if test="createId != null and createId != ''">
+				AND w1.user_id = #{createId} and w1.is_master = 1
+			</if>
+			/*上报状态*/
+			<if test="reportedState != null and reportedState != ''">
+				AND rprr.report_status = #{reportedState}
+			</if>
 			<if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
 				AND ((w1.user_id = #{currentUser.id} AND w1.del_flag='0' AND a.company_id = #{currentUser.company.id} )${sqlMap.dsf} )
 			</if>

+ 106 - 0
src/main/webapp/WEB-INF/tags/sys/treeselectArea.tag

@@ -0,0 +1,106 @@
+<%@ tag language="java" pageEncoding="UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%>
+<%@ attribute name="name" type="java.lang.String" required="true" description="隐藏域名称(ID)"%>
+<%@ attribute name="value" type="java.lang.String" required="true" description="隐藏域值(ID)"%>
+<%@ attribute name="labelName" type="java.lang.String" required="true" description="输入框名称(Name)"%>
+<%@ attribute name="labelValue" type="java.lang.String" required="true" description="输入框值(Name)"%>
+<%@ attribute name="title" type="java.lang.String" required="true" description="选择框标题"%>
+<%@ attribute name="url" type="java.lang.String" required="true" description="树结构数据地址"%>
+<%@ attribute name="checked" type="java.lang.Boolean" required="false" description="是否显示复选框,如果不需要返回父节点,请设置notAllowSelectParent为true"%>
+<%@ attribute name="extId" type="java.lang.String" required="false" description="排除掉的编号(不能选择的编号)"%>
+<%@ attribute name="isAll" type="java.lang.Boolean" required="false" description="是否列出全部数据,设置true则不进行数据权限过滤(目前仅对Office有效)"%>
+<%@ attribute name="notAllowSelectRoot" type="java.lang.Boolean" required="false" description="不允许选择根节点"%>
+<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%>
+<%@ attribute name="module" type="java.lang.String" required="false" description="过滤栏目模型(只显示指定模型,仅针对CMS的Category树)"%>
+<%@ attribute name="selectScopeModule" type="java.lang.Boolean" required="false" description="选择范围内的模型(控制不能选择公共模型,不能选择本栏目外的模型)(仅针对CMS的Category树)"%>
+<%@ attribute name="allowClear" type="java.lang.Boolean" required="false" description="是否允许清除"%>
+<%@ attribute name="allowInput" type="java.lang.Boolean" required="false" description="文本框可填写"%>
+<%@ attribute name="cssClass" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="cssStyle" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="smallBtn" type="java.lang.Boolean" required="false" description="缩小按钮显示"%>
+<%@ attribute name="hideBtn" type="java.lang.Boolean" required="false" description="是否显示按钮"%>
+<%@ attribute name="disabled" type="java.lang.String" required="false" description="是否限制选择,如果限制,设置为disabled"%>
+<%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%>
+<%@ attribute name="rule" type="java.lang.String" required="false" description="考勤规则模块用"%>
+	<input id="${id}Id" name="${name}" class="${cssClass}" type="hidden" value="${value}" />
+	<div class="input-group">
+		<input id="${id}Name" placeholder="请选择${title}" name="${labelName}" ${allowInput?'':'readonly="readonly"'}  type="text" value="${labelValue}" data-msg-required="${dataMsgRequired}"
+		class="${cssClass}" style="${cssStyle}"/>
+       		 <span class="input-group-btn">
+	       		 <button type="button"  id="${id}Button" class="btn <c:if test="${fn:contains(cssClass, 'input-sm')}"> btn-sm </c:if><c:if test="${fn:contains(cssClass, 'input-lg')}"> btn-lg </c:if>  btn-primary ${disabled} ${hideBtn ? 'hide' : ''}"><i class="fa fa-search"></i>
+	             </button> 
+       		 </span>
+
+    </div>
+	 <label id="${id}Name-error" class="error" for="${id}Name" style="display:none"></label>
+<script type="text/javascript">
+	$("#${id}Button, #${id}Name").click(function(){
+		// 是否限制选择,如果限制,设置为disabled
+		if ($("#${id}Button").hasClass("disabled")){
+			return true;
+		}
+		// 正常打开
+		top.layer.open({
+		    type: 2,
+		    area: ['300px', '420px'],
+		    title:"选择${title}",
+		    ajaxData:{selectIds: $("#${id}Id").val()},
+		    content: "${ctx}/tag/treeselect?url="+encodeURIComponent("${url}")+"&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}&unit=${unit}" ,
+		    btn: ['确定', '关闭']
+    	       ,yes: function(index, layero){ //或者使用btn1
+						var tree = layero.find("iframe")[0].contentWindow.tree;//h.find("iframe").contents();
+						var ids = [], names = [], nodes = [];
+						if ("${checked}" == "true"){
+							nodes = tree.getCheckedNodes(true);
+						}else{
+							nodes = tree.getSelectedNodes();
+						}
+						for(var i=0; i<nodes.length; i++) {//<c:if test="${checked && notAllowSelectParent}">
+							if (nodes[i].isParent){
+								continue; // 如果为复选框选择,则过滤掉父节点
+							}//</c:if><c:if test="${notAllowSelectRoot}">
+							if (nodes[i].level == 0){
+								//top.$.jBox.tip("不能选择根节点("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择根节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${notAllowSelectParent}">
+							if (nodes[i].isParent){
+								//top.$.jBox.tip("不能选择父节点("+nodes[i].name+")请重新选择。");
+								//layer.msg('有表情地提示');
+								top.layer.msg("不能选择父节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${not empty module && selectScopeModule}">
+							if (nodes[i].module == ""){
+								//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择公共模型("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}else if (nodes[i].module != "${module}"){
+								//top.$.jBox.tip("不能选择当前栏目以外的栏目模型,请重新选择。");
+								top.layer.msg("不能选择当前栏目以外的栏目模型,请重新选择。", {icon: 0});
+								return false;
+							}//</c:if>
+							ids.push(nodes[i].id);
+							names.push(nodes[i].name);//<c:if test="${!checked}">
+							break; // 如果为非复选框选择,则返回第一个选择  </c:if>
+						}
+						$("#${id}Id").val(ids.join(",").replace(/u_/ig,"")).change();
+						$("#${id}Name").val(names.join(",")).change();
+						$("#${id}Name").focus();
+						var rule="${rule}";
+						var id="${id}";
+						if(rule=='rule'){
+                            var _placeName =  id.split("_")[0]+"_placeName";
+                            var _itude =  id.split("_")[0]+"_itude";
+                            $("#"+_placeName).val("");
+                            $("#"+_itude).val("");
+						}
+						top.layer.close(index);
+				    	       },
+    	cancel: function(index){ //或者使用btn2
+    	           //按钮【按钮二】的回调
+    	       }
+		});
+
+	});
+</script>

+ 85 - 34
src/main/webapp/webpage/modules/ruralprojectrecords/ruralProjectReport/cost/ruralCostProjectReportList.jsp

@@ -104,21 +104,63 @@
 					</div>
 					<div style="    clear:both;"></div>
 				</div>
-				<div id="moresees" class="lw7" style="clear:both;display:none;height: 70px;">
-					<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="${ruralProjectReportInfo.officeId}" labelName="officeName" labelValue="${ruralProjectReportInfo.officeName}"
-											title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+					<div id="moresees" class="lw7" style="clear:both;display:none;height: 70px;">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">委托单位:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="clientName" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
 						</div>
-					</div>
-					<div class="layui-item query athird">
-						<label class="layui-form-label">委托单位:</label>
-						<div class="layui-input-block with-icon">
-							<form:input path="clientName" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">报告号:</label>
+							<div class="layui-input-block">
+								<form:input path="reportNum" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目所在地:</label>
+							<div class="layui-input-block  with-icon">
+								<sys:treeselectArea id="area" name="area.id" value="${ruralProject.area.id}" labelName="area.name" labelValue="${ruralProject.area.name}"
+													title="项目所在地" url="/sys/area/treeData" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">审定金额(元):</label>
+							<div class="layui-input-block">
+								<form:input path="approvalFee" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block  with-icon">
+								<sys:inquireselectUser id="create" name="createId" value="${ruralProject.createId}" labelName="createNameStr" labelValue="${ruralProject.createNameStr}"
+													   title="项目负责人" url="/sys/office/treeDataAll?type=3" cssClass="form-control required 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="${ruralProject.officeId}" labelName="officeName" labelValue="${ruralProject.officeName}"
+												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">
+								<form:select path="reportedState" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('reported_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
 						</div>
 					</div>
-				</div>
 				</form:form>
 			</div>
 		</div>
@@ -170,34 +212,43 @@
 				,{field:'verifyRate',align:'center',minWidth:120, title: '核增核减率(%)'}
 				,{field:'principalUser',align:'center', title: '项目负责人'}
 				,{field:'officeName',align:'center', title: '所属部门'}
-
+				,{align:'center', title: '上报状态',  width:90,templet:function(d){
+						var st = getReportedState(d.reportedState);
+						if(st.action)
+							var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectMessage/getReportedProcess?processInstanceId=" + d.reportedProcessInstanceId + "','95%','95%')\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+						else
+							var xml = "<span style=\"cursor:default;\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+						return xml;
+					}}
 
             ]]
             ,data: [
-                <c:if test="${ not empty page.list}">
-                <c:forEach items="${page.list}" var="workContractInfo" varStatus="index">
-                <c:if test="${index.index != 0}">,</c:if>
-                {
-                    "index":"${index.index+1}"
-                    ,"id":"${workContractInfo.id}"
-                    ,"year":"${workContractInfo.year}"
-                    ,"month":"${workContractInfo.month}"
-					,"clientName":"${workContractInfo.clientName}"
-                    ,"projectName":"${workContractInfo.projectName}"
-					,"projectId":"${workContractInfo.projectId}"
-					,"reportNum":"${workContractInfo.reportNum}"
-					,"filesNum":"${workContractInfo.filesNum}"
-					,"areaName":"${workContractInfo.areaName}"
-					,"reviewFee":"${workContractInfo.reviewFee}"
-					,"approvalFee":"${workContractInfo.approvalFee}"
-					,"verifyFee":"${workContractInfo.verifyFee}"
-					,"verifyRate":"${workContractInfo.verifyRate}"
-					,"principalUser":"${workContractInfo.principalUser}"
-					,"officeName":"${workContractInfo.officeName}"
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="ruralProjectReportInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${ruralProjectReportInfo.id}"
+					,"year":"${ruralProjectReportInfo.year}"
+					,"month":"${ruralProjectReportInfo.month}"
+					,"clientName":"${ruralProjectReportInfo.clientName}"
+					,"projectName":"${ruralProjectReportInfo.projectName}"
+					,"projectId":"${ruralProjectReportInfo.projectId}"
+					,"reportNum":"${ruralProjectReportInfo.reportNum}"
+					,"filesNum":"${ruralProjectReportInfo.filesNum}"
+					,"areaName":"${ruralProjectReportInfo.areaName}"
+					,"reviewFee":"${ruralProjectReportInfo.reviewFee}"
+					,"approvalFee":"${ruralProjectReportInfo.approvalFee}"
+					,"verifyFee":"${ruralProjectReportInfo.verifyFee}"
+					,"verifyRate":"${ruralProjectReportInfo.verifyRate}"
+					,"principalUser":"${ruralProjectReportInfo.principalUser}"
+					,"officeName":"${ruralProjectReportInfo.officeName}"
+					,"reportedState":"${ruralProjectReportInfo.reportedState}"
+					,"reportedProcessInstanceId":"${ruralProjectReportInfo.reportedProcessInstanceId}"
 					<shiro:hasPermission name="ruralProject:ruralProjectView:view">
 					,"showView":1
 					</shiro:hasPermission>
-                }
+				}
                 </c:forEach>
                 </c:if>
             ]

+ 81 - 23
src/main/webapp/webpage/modules/ruralprojectrecords/ruralProjectReport/ruralProjectReportList.jsp

@@ -106,16 +106,58 @@
 				</div>
 				<div id="moresees" class="lw7" style="clear:both;display:none;height: 70px;">
 					<div class="layui-item query athird">
-						<label class="layui-form-label">部门:</label>
+						<label class="layui-form-label">委托单位:</label>
 						<div class="layui-input-block with-icon">
-							<sys:treeselect id="officeId" name="officeId" value="${ruralProjectReportInfo.officeId}" labelName="officeName" labelValue="${ruralProjectReportInfo.officeName}"
-											title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							<form:input path="clientName" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
 						</div>
 					</div>
 					<div class="layui-item query athird">
-						<label class="layui-form-label">委托单位:</label>
+						<label class="layui-form-label">项目名称:</label>
+						<div class="layui-input-block">
+							<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">报告号:</label>
+						<div class="layui-input-block">
+							<form:input path="reportNum" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+						</div>
+					</div>
+
+					<div class="layui-item query athird">
+						<label class="layui-form-label">项目所在地:</label>
+						<div class="layui-input-block  with-icon">
+							<sys:treeselectArea id="area" name="area.id" value="${ruralProject.area.id}" labelName="area.name" labelValue="${ruralProject.area.name}"
+											title="项目所在地" url="/sys/area/treeData" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">审定金额(元):</label>
+						<div class="layui-input-block">
+							<form:input path="approvalFee" htmlEscape="false" maxlength="64"  class=" form-control number layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">项目负责人:</label>
+						<div class="layui-input-block  with-icon">
+							<sys:inquireselectUser id="create" name="createId" value="${ruralProject.createId}" labelName="createNameStr" labelValue="${ruralProject.createNameStr}"
+															  title="项目负责人" url="/sys/office/treeDataAll?type=3" cssClass="form-control required 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="clientName" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							<sys:treeselect id="officeId" name="officeId" value="${ruralProject.officeId}" labelName="officeName" labelValue="${ruralProject.officeName}"
+											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">
+							<form:select path="reportedState" class=" form-control  simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('reported_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
 						</div>
 					</div>
 				</div>
@@ -154,7 +196,11 @@
                 ,{field:'month',align:'center', sort:true,title: '月份'}
 				,{field:'clientName',align:'center', title: '委托单位',width:220}
                 ,{field:'projectName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
-                        return "<a class=\"attention-info\" title=\""+d.projectName+"\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目信息', '${ctx}/ruralProject/ruralProjectRecords/view?id=" + d.id + "','95%', '95%')\">" + d.projectName + "</a>";
+						if(1 == d.showView && d.showView != undefined){
+							return "<a class=\"attention-info\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/ruralProject/ruralProjectView/view?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
+						}else{
+							return "<span title='"+ d.projectName +"'>" +d.projectName+ "</span>";
+						}
                     }}
 				,{field:'projectId', align:'center',minWidth:110,title: '项目编号'}
 				,{field:'reportNum',align:'center',minWidth:150, title: '报告号'}
@@ -166,30 +212,42 @@
 				,{field:'verifyRate',align:'center',minWidth:120, title: '核增核减率(%)'}
 				,{field:'principalUser',align:'center', title: '项目负责人'}
 				,{field:'officeName',align:'center', title: '所属部门'}
-
+				,{align:'center', title: '上报状态',  width:90,templet:function(d){
+						var st = getReportedState(d.reportedState);
+						if(st.action)
+							var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectMessage/getReportedProcess?processInstanceId=" + d.reportedProcessInstanceId + "','95%','95%')\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+						else
+							var xml = "<span style=\"cursor:default;\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+						return xml;
+					}}
 
             ]]
             ,data: [
                 <c:if test="${ not empty page.list}">
-                <c:forEach items="${page.list}" var="workContractInfo" varStatus="index">
+                <c:forEach items="${page.list}" var="ruralProjectReportInfo" varStatus="index">
                 <c:if test="${index.index != 0}">,</c:if>
                 {
                     "index":"${index.index+1}"
-                    ,"id":"${workContractInfo.id}"
-                    ,"year":"${workContractInfo.year}"
-                    ,"month":"${workContractInfo.month}"
-					,"clientName":"${workContractInfo.clientName}"
-                    ,"projectName":"${workContractInfo.projectName}"
-					,"projectId":"${workContractInfo.projectId}"
-					,"reportNum":"${workContractInfo.reportNum}"
-					,"filesNum":"${workContractInfo.filesNum}"
-					,"areaName":"${workContractInfo.areaName}"
-					,"reviewFee":"${workContractInfo.reviewFee}"
-					,"approvalFee":"${workContractInfo.approvalFee}"
-					,"verifyFee":"${workContractInfo.verifyFee}"
-					,"verifyRate":"${workContractInfo.verifyRate}"
-					,"principalUser":"${workContractInfo.principalUser}"
-					,"officeName":"${workContractInfo.officeName}"
+                    ,"id":"${ruralProjectReportInfo.id}"
+                    ,"year":"${ruralProjectReportInfo.year}"
+                    ,"month":"${ruralProjectReportInfo.month}"
+					,"clientName":"${ruralProjectReportInfo.clientName}"
+                    ,"projectName":"${ruralProjectReportInfo.projectName}"
+					,"projectId":"${ruralProjectReportInfo.projectId}"
+					,"reportNum":"${ruralProjectReportInfo.reportNum}"
+					,"filesNum":"${ruralProjectReportInfo.filesNum}"
+					,"areaName":"${ruralProjectReportInfo.areaName}"
+					,"reviewFee":"${ruralProjectReportInfo.reviewFee}"
+					,"approvalFee":"${ruralProjectReportInfo.approvalFee}"
+					,"verifyFee":"${ruralProjectReportInfo.verifyFee}"
+					,"verifyRate":"${ruralProjectReportInfo.verifyRate}"
+					,"principalUser":"${ruralProjectReportInfo.principalUser}"
+					,"officeName":"${ruralProjectReportInfo.officeName}"
+					,"reportedState":"${ruralProjectReportInfo.reportedState}"
+					,"reportedProcessInstanceId":"${ruralProjectReportInfo.reportedProcessInstanceId}"
+					<shiro:hasPermission name="ruralProject:ruralProjectView:view">
+					,"showView":1
+					</shiro:hasPermission>
                 }
                 </c:forEach>
                 </c:if>