LuChongMei 1 هفته پیش
والد
کامیت
12a2d0103e

+ 24 - 35
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/question/controller/DzfQuestionController.java

@@ -291,46 +291,35 @@ public class DzfQuestionController {
 	@GetMapping("getReportFinishVisit")
 	public ResponseEntity<List<List<HashMap<String, Object>>>> getReportFinishVisit(String start, String end) throws Exception {
 
-//		UserDTO userDTO = UserUtils.getCurrentUserDTO();
-		List<List<HashMap<String, Object>>> result = dzfQuestionService.getFinish (start, end);
-		return ResponseEntity.ok (result);
+		UserDTO userDTO = UserUtils.getCurrentUserDTO();
+		//办理部门
+		if(userDTO.getRoleIds().equals("1910175949166673921")){
+			List<List<HashMap<String, Object>>> result = dzfQuestionService.getFinish2(start,end,userDTO.getLoginName());
+			return ResponseEntity.ok (result);
+		}else{
+			List<List<HashMap<String, Object>>> result = dzfQuestionService.getFinish (start, end);
+			return ResponseEntity.ok (result);
+		}
+
 	}
 
 	/**
 	 * 正在处理统计
 	 */
-//	@ApiLog("正在处理统计")
-//	@GetMapping("getReportContinueVisit")
-//	public ResponseEntity<List<List<HashMap<String, Object>>>> getReportContinueVisit(String start, String end) throws Exception {
-//
-////		UserDTO userDTO = UserUtils.getCurrentUserDTO();
-////		//企业(能看到自己企业的问题)
-////		if(userDTO.getRoleIds().equals("38a14f1f42ed424eab4cb5d489596b0d")){
-////			EnterpriseInfoDTO ei=enterpriseInfoService.findByUserid ( userDTO.getLoginName());
-////			dzfQuestionDTO.setQyId(ei.getId());
-////		}
-////
-////		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (dzfQuestionDTO, DzfQuestionDTO.class);
-////		//挂钩干部(能看到对应企业)
-////		if(userDTO.getRoleIds().equals("1915280292672946177")){
-////			queryWrapper.eq ("ei.bz6", userDTO.getLoginName() ); // 排除已经删除
-////		}
-////		//办公室(能看到所有提交的问题)
-////		if(userDTO.getRoleIds().equals("1910175386924417025")){
-////			queryWrapper.ne ("a.states", "0" ); // 排除已经删除
-////		}
-////		//办理部门
-////		if(userDTO.getRoleIds().equals("1910175949166673921")){
-////			queryWrapper.eq ("c.des3", userDTO.getLoginName() ); // 筛选流程中涉及到自己的
-////			IPage<DzfQuestionDTO> result = dzfQuestionService.findPage2 (page, queryWrapper);
-////			return ResponseEntity.ok (result);
-////		}else{
-////			IPage<DzfQuestionDTO> result = dzfQuestionService.findPage (page, queryWrapper);
-////			return ResponseEntity.ok (result);
-////		}
-//		List<List<HashMap<String, Object>>> result = dzfQuestionService.getReportContinueVisit (start, end);
-//		return ResponseEntity.ok (result);
-//	}
+	@ApiLog("正在处理统计")
+	@GetMapping("getReportContinueVisit")
+	public ResponseEntity<HashMap<String, Object>> getReportContinueVisit(String start, String end) throws Exception {
+
+		UserDTO userDTO = UserUtils.getCurrentUserDTO();
+		//办理部门
+		if(userDTO.getRoleIds().equals("1910175949166673921")){
+			HashMap<String, Object> result = dzfQuestionService.getContinue2(start,end,userDTO.getLoginName());
+			return ResponseEntity.ok (result);
+		}else{
+			HashMap<String, Object> result = dzfQuestionService.getContinue (start, end);
+			return ResponseEntity.ok (result);
+		}
+	}
 
 	/**
      * 导出问题诉求数据

+ 5 - 0
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/question/mapper/DzfQuestionMapper.java

@@ -52,4 +52,9 @@ public interface DzfQuestionMapper extends BaseMapper<DzfQuestion> {
     HashMap<Object, Object> getProgressYear2(String start, String end, String userName);
 
 
+    List<HashMap<String, Object>> getFinishList2(String start, String end, String loginName);
+
+    List<HashMap<String, Object>> getContinueList(String start, String end);
+
+    List<HashMap<String, Object>> getContinueList2(String start, String end, String loginName);
 }

+ 46 - 1
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/question/mapper/xml/DzfQuestionMapper.xml

@@ -147,7 +147,8 @@
 	<select id="getFinishList" resultType="Map">
 		SELECT a.*,c.qy_name,c.officer,c.qy_sd,b.q_type,DATE_FORMAT(b.create_date, '%Y-%m-%d') AS subtime,b.des FROM (
 		SELECT a.* FROM
-		(SELECT record_id,des6,op_type_name,DATE_FORMAT(create_date, '%Y-%m-%d') AS create_date,des2,des4 FROM dzf_question_op_record WHERE del_flag = 0
+		(SELECT record_id,des6,op_type_name,DATE_FORMAT(create_date, '%Y-%m-%d') AS create_date,des2,des4
+		FROM dzf_question_op_record WHERE del_flag = 0
 		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{end}
 		ORDER BY create_date DESC LIMIT 999999) a
 		GROUP BY  a.record_id) a
@@ -157,4 +158,48 @@
 		ORDER BY q_type;
 	</select>
 
+	<select id="getFinishList2" resultType="Map">
+		SELECT a.*,c.qy_name,c.officer,c.qy_sd,b.q_type,DATE_FORMAT(b.create_date, '%Y-%m-%d') AS subtime,b.des FROM (
+		SELECT a.* FROM
+		(SELECT record_id,des6,op_type_name,DATE_FORMAT(create_date, '%Y-%m-%d') AS create_date,des2,des4
+		FROM dzf_question_op_record WHERE del_flag = 0
+		AND FIND_IN_SET(#{loginName},des3)
+		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{end}
+		ORDER BY create_date DESC LIMIT 999999) a
+		GROUP BY  a.record_id) a
+		LEFT JOIN dzf_question_detil b ON a.record_id = b.id
+		LEFT JOIN dzf_question c ON b.qid = c.id
+		WHERE b.del_flag = 0 AND c.del_flag = 0 AND c.states IN (3,4)
+		ORDER BY q_type;
+	</select>
+
+	<select id="getContinueList" resultType="Map">
+		SELECT a.*,c.qy_name,c.officer,c.qy_sd,b.q_type,DATE_FORMAT(b.create_date, '%Y-%m-%d') AS subtime,b.des,b.states FROM (
+		SELECT a.* FROM
+		(SELECT record_id,des6,op_type_name,DATE_FORMAT(create_date, '%Y-%m-%d') AS create_date,des2,des4
+		FROM dzf_question_op_record WHERE del_flag = 0 AND op_type IN (5,6,7)
+		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{end}
+		ORDER BY create_date DESC LIMIT 999999) a
+		GROUP BY  a.record_id) a
+		LEFT JOIN dzf_question_detil b ON a.record_id = b.id
+		LEFT JOIN dzf_question c ON b.qid = c.id
+		WHERE b.del_flag = 0 AND c.del_flag = 0 AND c.states = 1 AND b.states IN (5,6,7)
+		ORDER BY b.states,q_type;
+	</select>
+
+	<select id="getFinishList2" resultType="Map">
+		SELECT a.*,c.qy_name,c.officer,c.qy_sd,b.q_type,DATE_FORMAT(b.create_date, '%Y-%m-%d') AS subtime,b.des,b.states FROM (
+		SELECT a.* FROM
+		(SELECT record_id,des6,op_type_name,DATE_FORMAT(create_date, '%Y-%m-%d') AS create_date,des2,des4
+		FROM dzf_question_op_record WHERE del_flag = 0 AND op_type IN (5,6,7)
+		AND FIND_IN_SET(#{loginName},des3)
+		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{end}
+		ORDER BY create_date DESC LIMIT 999999) a
+		GROUP BY  a.record_id) a
+		LEFT JOIN dzf_question_detil b ON a.record_id = b.id
+		LEFT JOIN dzf_question c ON b.qid = c.id
+		WHERE b.del_flag = 0 AND c.del_flag = 0 AND c.states = 1 AND b.states IN (5,6,7)
+		ORDER BY b.states,q_type;
+	</select>
+
 </mapper>

+ 203 - 1
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/question/service/DzfQuestionService.java

@@ -178,7 +178,6 @@ public class DzfQuestionService extends ServiceImpl<DzfQuestionMapper, DzfQuesti
 				break;
 			}
 			if(!finishList.get(i).get("q_type").equals(finishList.get(i+1).get("q_type"))){
-//				map.put(finishList.get(i).get("q_type").toString(),itemList);
 				allList.add(itemList);
 				itemList = new ArrayList<>();
 			}
@@ -188,5 +187,208 @@ public class DzfQuestionService extends ServiceImpl<DzfQuestionMapper, DzfQuesti
 	}
 
 
+	public List<List<HashMap<String, Object>>> getFinish2(String start, String end, String loginName) {
+		// 获取已办结问题
+		List<List<HashMap<String, Object>>> allList = new ArrayList<>();
+		List<HashMap<String, Object>> finishList = baseMapper.getFinishList2(start,end,loginName);
+		List<HashMap<String, Object>> itemList = new ArrayList<>();
+		for (int i = 0; i < finishList.size(); i++) {
+			itemList.add(finishList.get(i));
+			if(i == finishList.size() - 1){
+				allList.add(itemList);
+				break;
+			}
+			if(!finishList.get(i).get("q_type").equals(finishList.get(i+1).get("q_type"))){
+				allList.add(itemList);
+				itemList = new ArrayList<>();
+			}
 
+		}
+		return allList;
+	}
+
+	public HashMap<String, Object> getContinue(String start, String end) {
+		HashMap<String, Object> allList = new HashMap<>();
+		allList.put("oneSum","0");
+		allList.put("twoSum","0");
+		allList.put("threeSum","0");
+		// 正在办理
+		List<List<HashMap<String, Object>>> continueList1 = new ArrayList<>();
+		// 难以化解
+		List<List<HashMap<String, Object>>> continueList2 = new ArrayList<>();
+		// 持续跟踪
+		List<List<HashMap<String, Object>>> continueList3 = new ArrayList<>();
+		// 获取未办结问题
+		List<HashMap<String, Object>> questionList = baseMapper.getContinueList(start,end);
+		List<HashMap<String, Object>> itemList = new ArrayList<>();
+		for (int i = 0; i < questionList.size(); i++) {
+			itemList.add(questionList.get(i));
+			if(i == questionList.size() - 1){
+				List<HashMap<String, Object>> itemList1 = new ArrayList<>();
+				for (int j = 0; j < itemList.size(); j++) {
+					itemList1.add(itemList.get(j));
+					if(j == itemList.size() - 1){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+							allList.put("oneSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+							allList.put("twoSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+							allList.put("threeSum",itemList.size());
+						}
+						break;
+					}
+					if(!itemList.get(j).get("q_type").equals(itemList.get(j+1).get("q_type"))){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+						}
+						itemList1 = new ArrayList<>();
+					}
+				}
+				break;
+			}
+			if(!questionList.get(i).get("states").equals(questionList.get(i+1).get("states"))){
+				List<HashMap<String, Object>> itemList1 = new ArrayList<>();
+				for (int j = 0; j < itemList.size(); j++) {
+					itemList1.add(itemList.get(j));
+					if(j == itemList.size() - 1){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+							allList.put("oneSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+							allList.put("twoSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+							allList.put("threeSum",itemList.size());
+						}
+						break;
+					}
+					if(!itemList.get(j).get("q_type").equals(itemList.get(j+1).get("q_type"))){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+						}
+						itemList1 = new ArrayList<>();
+					}
+				}
+				itemList = new ArrayList<>();
+			}
+
+		}
+		allList.put("one",continueList1);
+		allList.put("two",continueList2);
+		allList.put("three",continueList3);
+		return allList;
+	}
+
+	public HashMap<String, Object> getContinue2(String start, String end, String loginName) {
+
+		HashMap<String, Object> allList = new HashMap<>();
+		allList.put("oneSum","0");
+		allList.put("twoSum","0");
+		allList.put("threeSum","0");
+		// 正在办理
+		List<List<HashMap<String, Object>>> continueList1 = new ArrayList<>();
+		// 难以化解
+		List<List<HashMap<String, Object>>> continueList2 = new ArrayList<>();
+		// 持续跟踪
+		List<List<HashMap<String, Object>>> continueList3 = new ArrayList<>();
+		// 获取未办结问题
+		List<HashMap<String, Object>> questionList = baseMapper.getContinueList2(start,end,loginName);
+		List<HashMap<String, Object>> itemList = new ArrayList<>();
+		for (int i = 0; i < questionList.size(); i++) {
+			itemList.add(questionList.get(i));
+			if(i == questionList.size() - 1){
+				List<HashMap<String, Object>> itemList1 = new ArrayList<>();
+				for (int j = 0; j < itemList.size(); j++) {
+					itemList1.add(itemList.get(j));
+					if(j == itemList.size() - 1){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+							allList.put("oneSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+							allList.put("twoSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+							allList.put("threeSum",itemList.size());
+						}
+						break;
+					}
+					if(!itemList.get(j).get("q_type").equals(itemList.get(j+1).get("q_type"))){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+						}
+						itemList1 = new ArrayList<>();
+					}
+				}
+				break;
+			}
+			if(!questionList.get(i).get("states").equals(questionList.get(i+1).get("states"))){
+				List<HashMap<String, Object>> itemList1 = new ArrayList<>();
+				for (int j = 0; j < itemList.size(); j++) {
+					itemList1.add(itemList.get(j));
+					if(j == itemList.size() - 1){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+							allList.put("oneSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+							allList.put("twoSum",itemList.size());
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+							allList.put("threeSum",itemList.size());
+						}
+						break;
+					}
+					if(!itemList.get(j).get("q_type").equals(itemList.get(j+1).get("q_type"))){
+						if(itemList1.get(0).get("states").equals("5")){
+							continueList1.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("6")){
+							continueList2.add(itemList1);
+						}
+						if(itemList1.get(0).get("states").equals("7")){
+							continueList3.add(itemList1);
+						}
+						itemList1 = new ArrayList<>();
+					}
+				}
+				itemList = new ArrayList<>();
+			}
+
+		}
+		allList.put("one",continueList1);
+		allList.put("two",continueList2);
+		allList.put("three",continueList3);
+		return allList;
+	}
 }

+ 35 - 18
jp-ui/src/api/question/dzfQuestionService.js

@@ -1,7 +1,7 @@
 import request from '@/utils/httpRequest'
 
 export default {
-  save: function (inputForm) {
+  save: function(inputForm) {
     return request({
       url: '/question/dzfQuestion/save',
       method: 'post',
@@ -9,23 +9,27 @@ export default {
     })
   },
 
-  delete: function (ids) {
+  delete: function(ids) {
     return request({
       url: '/question/dzfQuestion/delete',
       method: 'delete',
-      params: {ids: ids}
+      params: {
+        ids: ids
+      }
     })
   },
 
-  queryById: function (id) {
+  queryById: function(id) {
     return request({
       url: '/question/dzfQuestion/queryById',
       method: 'get',
-      params: {id: id}
+      params: {
+        id: id
+      }
     })
   },
 
-  list: function (params) {
+  list: function(params) {
     return request({
       url: '/question/dzfQuestion/list',
       method: 'get',
@@ -33,28 +37,41 @@ export default {
     })
   },
 
-  exportTemplate: function () {
+  getReportFinishVisit: function(start, end) {
     return request({
-      url: '/question/dzfQuestion/import/template',
+      url: '/question/dzfQuestion/getReportFinishVisit',
       method: 'get',
-      responseType: 'blob'
+      params: {
+        start: start,
+        end:end
+      }
     })
   },
 
-  exportExcel: function (params) {
+  getReportContinueVisit: function(start, end) {
     return request({
-      url: '/question/dzfQuestion/export',
+      url: '/question/dzfQuestion/getReportContinueVisit',
       method: 'get',
-      params: params,
-      responseType: 'blob'
+      params: {
+        start: start,
+        end:end
+      }
     })
   },
 
-  importExcel: function (data) {
+  exportTemplate: function() {
     return request({
-      url: '/question/dzfQuestion/import',
-      method: 'post',
-      data: data
+      url: '/question/dzfQuestion/import/template',
+      method: 'get',
+      responseType: 'blob'
     })
+  },
+
+  exportExcel: function(params) {
+    return request({
+        url: '/question/dzfQuestion/export',
+        method: 'get',
+        params: params,
+      })
+    },
   }
-}

+ 195 - 0
jp-ui/src/views/modules/reportmanage/reportContinueQuestion.vue

@@ -0,0 +1,195 @@
+<template>
+  <div class="page">
+    <h2 style="text-align: center;">全区"企业大走访"正在推动解决问题一览表(截止{{searchForm.end}})</h2>
+    <div style="margin: 5px;">日期选择:<el-date-picker size="mini" v-model="value2" type="daterange" @change="changeTime"
+        unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right" unlink-panels>
+      </el-date-picker></div>
+    <div class="report_main">
+      <table border="1">
+        <tr>
+          <!-- <td rowspan="2">总序号</td> -->
+          <td style="width: 60px;" rowspan="2">序号</td>
+          <td style="width: 7%" rowspan="2">企业名称</td>
+          <td style="width: 7%" rowspan="2">走访领导及区直单位</td>
+          <td style="width: 7%" rowspan="2">属地</td>
+          <td style="width: 7%" rowspan="2">问题类型</td>
+          <td style="width: 7%" rowspan="2">企业提交问题时间</td>
+          <td style="width: 15%" rowspan="2">问题详情描述</td>
+          <td style="width: 20%" rowspan="2">目前进展情况</td>
+          <td style="width: 7%" rowspan="2">办理结果</td>
+          <td style="width: 7%" rowspan="2">办结时间</td>
+          <td colspan="2">主办单位</td>
+        </tr>
+        <tr>
+          <td style="width: 8%">主办</td>
+          <td style="width: 8%">协办</td>
+        </tr>
+        <tr>
+          <td colspan="13" style="text-align: left;">(一) 正在办理问题{{onesum}}个
+          </td>
+        </tr>
+        <template v-if="oneList.length > 0" v-for="(item,index) in oneList">
+          <tr>
+            <td v-if="item.length > 0" colspan="13" style="text-align: left;">({{index + 1}})
+              {{item[0].q_type}}{{item.length}}个
+            </td>
+          </tr>
+          <tr v-for="(item1,i) in item" :key="item1.record_id">
+            <td>{{i + 1}}</td>
+            <td>{{item1.qy_name}}</td>
+            <td>{{item1.officer}}</td>
+            <td>{{item1.qy_sd}}</td>
+            <td>{{item1.q_type}}</td>
+            <td>{{item1.subtime}}</td>
+            <td>{{item1.des}}</td>
+            <td>{{item1.des6}}</td>
+            <td>{{item1.op_type_name}}</td>
+            <td>{{item1.create_date}}</td>
+            <td>{{item1.des2}}</td>
+            <td>{{item1.des4}}</td>
+          </tr>
+        </template>
+        <tr v-if="oneList.length <= 0"><td colspan="13">暂无数据</td></tr>
+        <tr>
+          <td colspan="13" style="text-align: left;">(二) 难以解决问题{{twosum}}个
+          </td>
+        </tr>
+        <template v-if="twoList.length > 0" v-for="(item,index) in twoList">
+          <tr>
+            <td v-if="item.length > 0" colspan="13" style="text-align: left;">({{index + 1}})
+              {{item[0].q_type}}{{item.length}}个
+            </td>
+          </tr>
+          <tr v-for="(item1,i) in item" :key="item1.record_id">
+            <td>{{i + 1}}</td>
+            <td>{{item1.qy_name}}</td>
+            <td>{{item1.officer}}</td>
+            <td>{{item1.qy_sd}}</td>
+            <td>{{item1.q_type}}</td>
+            <td>{{item1.subtime}}</td>
+            <td>{{item1.des}}</td>
+            <td>{{item1.des6}}</td>
+            <td>{{item1.op_type_name}}</td>
+            <td>{{item1.create_date}}</td>
+            <td>{{item1.des2}}</td>
+            <td>{{item1.des4}}</td>
+          </tr>
+        </template>
+         <tr v-if="twoList.length <= 0"><td colspan="13">暂无数据</td></tr>
+        <tr>
+          <td colspan="13" style="text-align: left;">(三) 持续跟踪问题{{threesum}}个
+          </td>
+        </tr>
+        <template v-if="threeList.length > 0" v-for="(item,index) in threeList">
+          <tr>
+            <td v-if="item.length > 0" colspan="13" style="text-align: left; padding-left: 10px;">({{index + 1}})
+              {{item[0].q_type}}{{item.length}}个
+            </td>
+          </tr>
+          <tr v-for="(item1,i) in item" :key="item1.record_id">
+            <td>{{i + 1}}</td>
+            <td>{{item1.qy_name}}</td>
+            <td>{{item1.officer}}</td>
+            <td>{{item1.qy_sd}}</td>
+            <td>{{item1.q_type}}</td>
+            <td>{{item1.subtime}}</td>
+            <td>{{item1.des}}</td>
+            <td>{{item1.des6}}</td>
+            <td>{{item1.op_type_name}}</td>
+            <td>{{item1.create_date}}</td>
+            <td>{{item1.des2}}</td>
+            <td>{{item1.des4}}</td>
+          </tr>
+        </template>
+        <tr v-if="threeList.length <= 0"><td colspan="13">暂无数据</td></tr>
+      </table>
+    </div>
+  </div>
+</template>
+
+<script>
+  import dzfQuestionService from '@/api/question/dzfQuestionService'
+  export default {
+    data() {
+      return {
+        searchForm: {
+          start: '2025-04-01',
+          end: '',
+        },
+        value2: [new Date()],
+        onesum:0,
+        twosum:0,
+        threesum:0,
+        loading: false,
+        oneList: [],
+        twoList: [],
+        threeList: []
+      }
+    },
+    activated() {
+      this.searchForm.end = this.formatDate(new Date())
+      this.value2 = [this.searchForm.start, this.searchForm.end]
+      this.getData();
+    },
+    methods: {
+      getData() {
+        dzfQuestionService.getReportContinueVisit(this.searchForm.start, this.searchForm.end).then(({
+          data
+        }) => {
+          this.oneList = data.one
+          this.twoList = data.two
+          this.threeList = data.three
+          this.onesum = data.oneSum
+          this.twosum = data.twoSum
+          this.threesum = data.threeSum
+        })
+      },
+      formatDate(date) {
+        const year = date.getFullYear();
+        const month = date.getMonth() + 1;
+        const day = date.getDate();
+
+        const formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
+        return formattedDate;
+      },
+      changeTime() {
+        this.searchForm.start = this.formatDate(this.value2[0])
+        this.searchForm.end = this.formatDate(this.value2[1])
+        this.getData()
+      }
+    },
+  }
+</script>
+
+<style>
+  .page {
+    background-color: #fff;
+  }
+
+  .report_main {
+    text-align: center;
+    height: 75vh;
+    overflow: auto;
+  }
+
+  .report_main table {
+    margin-left: auto;
+    margin-right: auto;
+    display: inline-block;
+    width: 80%;
+
+  }
+
+  .report_main table {
+    border-collapse: collapse;
+    line-height: 20px;
+    /* 使边框合并 */
+  }
+
+  .report_main td,
+  .report_main th {
+    border: 1px solid black;
+    height: 30px;
+    padding: 5px;
+  }
+</style>

+ 130 - 0
jp-ui/src/views/modules/reportmanage/reportFinishQuestion.vue

@@ -0,0 +1,130 @@
+<template>
+  <div class="page">
+    <h2 style="text-align: center;">全区"企业大走访"已办结问题一览表(截止{{searchForm.end}})</h2>
+    <div style="margin: 5px;">日期选择:<el-date-picker size="mini" v-model="value2" type="daterange" @change="changeTime" unlink-panels
+        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right" unlink-panels>
+      </el-date-picker></div>
+    <div class="report_main">
+      <table border="1">
+        <tr>
+          <!-- <td rowspan="2">总序号</td> -->
+          <td style="width: 60px;" rowspan="2">序号</td>
+          <td style="width: 7%" rowspan="2">企业名称</td>
+          <td style="width: 7%" rowspan="2">走访领导及区直单位</td>
+          <td style="width: 7%" rowspan="2">属地</td>
+          <td style="width: 7%" rowspan="2">问题类型</td>
+          <td style="width: 7%" rowspan="2">企业提交问题时间</td>
+          <td style="width: 15%" rowspan="2">问题详情描述</td>
+          <td style="width: 20%" rowspan="2">目前进展情况</td>
+          <td style="width: 7%" rowspan="2">办理结果</td>
+          <td style="width: 7%" rowspan="2">办结时间</td>
+          <td colspan="2">主办单位</td>
+        </tr>
+        <tr>
+          <td style="width: 8%">主办</td>
+          <td style="width: 8%">协办</td>
+        </tr>
+        <template v-if="itemList.length > 0" v-for="(item,index) in itemList">
+          <tr>
+            <td v-if="item.length > 0" colspan="13" style="text-align: left;">({{index + 1}})
+              {{item[0].q_type}}{{item.length}}个
+            </td>
+          </tr>
+          <tr v-for="(item1,i) in item" :key="item1.record_id">
+            <td>{{i + 1}}</td>
+            <td>{{item1.qy_name}}</td>
+            <td>{{item1.officer}}</td>
+            <td>{{item1.qy_sd}}</td>
+            <td>{{item1.q_type}}</td>
+            <td>{{item1.subtime}}</td>
+            <td>{{item1.des}}</td>
+            <td>{{item1.des6}}</td>
+            <td>{{item1.op_type_name}}</td>
+            <td>{{item1.create_date}}</td>
+            <td>{{item1.des2}}</td>
+            <td>{{item1.des4}}</td>
+          </tr>
+        </template>
+        <tr v-if="itemList.length <= 0" ><td colspan="13">暂无数据</td> </tr>
+      </table>
+    </div>
+  </div>
+</template>
+
+<script>
+  import dzfQuestionService from '@/api/question/dzfQuestionService'
+  export default {
+    data() {
+      return {
+        searchForm: {
+          start: '2025-04-01',
+          end: '',
+        },
+        value2: [new Date()],
+        dataList: [],
+        loading: false,
+        itemList: []
+      }
+    },
+    activated() {
+      this.searchForm.end = this.formatDate(new Date())
+      this.value2 = [this.searchForm.start, this.searchForm.end]
+      this.getData();
+    },
+    methods: {
+      getData() {
+        dzfQuestionService.getReportFinishVisit(this.searchForm.start, this.searchForm.end).then(({
+          data
+        }) => {
+          this.itemList = data
+        })
+      },
+      formatDate(date) {
+        const year = date.getFullYear();
+        const month = date.getMonth() + 1;
+        const day = date.getDate();
+
+        const formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
+        return formattedDate;
+      },
+      changeTime(){
+        this.searchForm.start =this.formatDate(this.value2[0])
+        this.searchForm.end = this.formatDate(this.value2[1])
+        this.getData()
+      }
+    },
+  }
+</script>
+
+<style>
+  .page {
+    background-color: #fff;
+  }
+
+  .report_main {
+    text-align: center;
+    height: 75vh;
+    overflow: auto;
+  }
+
+  .report_main table {
+    margin-left: auto;
+    margin-right: auto;
+    display: inline-block;
+    width: 80%;
+
+  }
+
+  .report_main table {
+    border-collapse: collapse;
+    line-height: 20px;
+    /* 使边框合并 */
+  }
+
+  .report_main td,
+  .report_main th {
+    border: 1px solid black;
+    height: 30px;
+    padding: 5px;
+  }
+</style>