소스 검색

走访统计

LuChongMei 3 일 전
부모
커밋
646cc43653

+ 61 - 2
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/lyservice/controller/LyServiceController.java

@@ -30,6 +30,8 @@ import com.jeeplus.lyservice.service.LyServiceService;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.Calendar;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -60,8 +62,8 @@ public class LyServiceController {
 		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (lyServiceDTO, LyServiceDTO.class);
 		UserDTO userDTO = UserUtils.getCurrentUserDTO();
 		//		//挂钩干部(能看到对应企业)
-		if(userDTO.getRoleIds().equals("1915280292672946177")){
-			queryWrapper.eq ("qy.des13", userDTO.getLoginName() ); // 排除已经删除
+		if(userDTO.getRoleIds().equals("1910141956174053377")){
+			queryWrapper.eq ("qy.bz6", userDTO.getLoginName() ); // 排除已经删除
 		}
 		IPage<LyServiceDTO> result = lyServiceService.findPage (page, queryWrapper);
 		return ResponseEntity.ok (result);
@@ -106,6 +108,63 @@ public class LyServiceController {
 		return ResponseEntity.ok( "删除服务对接成功" );
 	}
 
+	/**
+	 * 进度统计
+	 */
+
+	@ApiLog("获取进度统计数据")
+	@ApiOperation(value = "获取进度统计数据")
+	@GetMapping("getProgressStatistics")
+	public ResponseEntity<HashMap<String,Object>> getProgressStatistics(String start, String end) {
+		if (start.equals("")){
+			Calendar calendar = Calendar.getInstance();
+			int year = calendar.get(Calendar.YEAR);
+			int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始计数,所以要加1
+			int day = calendar.get(Calendar.DAY_OF_MONTH);
+			end = year+"-"+ month + "-" + day;
+			start =year+"-"+month+"-01";
+		}
+		HashMap<String,Object> result = lyServiceService.getProgressStatistics(start,end);
+		return ResponseEntity.ok ( result );
+	}
+
+	/**
+	 * 获取挂钩干部统计数据
+	 */
+
+	@ApiLog("获取挂钩干部统计数据")
+	@ApiOperation(value = "获取挂钩干部统计数据")
+	@GetMapping("getPerson")
+	public ResponseEntity<List<HashMap<String,Object>>> getPerson() {
+		List<HashMap<String,Object>> result = lyServiceService.getPerson();
+		return ResponseEntity.ok ( result );
+	}
+
+	/**
+	 * 获取地区
+	 */
+
+	@ApiLog("获取地区")
+	@ApiOperation(value = "获取地区")
+	@GetMapping("getAreaInfo")
+	public ResponseEntity<List<HashMap<String,Object>>> getAreaInfo() {
+		List<HashMap<String,Object>> result = lyServiceService.getAreaInfo();
+		return ResponseEntity.ok ( result );
+	}
+
+	/**
+	 * 获取挂钩干部详情数据
+	 */
+
+	@ApiLog("获取挂钩干部详情数据")
+	@ApiOperation(value = "获取挂钩干部详情数据")
+	@GetMapping("getPersonInfo")
+	public ResponseEntity<List<HashMap<String,Object>>> getPersonInfo(String name,String des1,String beginTime,String endTime) {
+		List<HashMap<String,Object>> result = lyServiceService.getPersonInfo(name,des1,beginTime,endTime);
+		return ResponseEntity.ok ( result );
+	}
+
+
 	/**
      * 导出服务对接数据
      *

+ 16 - 0
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/lyservice/mapper/LyServiceMapper.java

@@ -12,6 +12,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.lyservice.service.dto.LyServiceDTO;
 import com.jeeplus.lyservice.domain.LyService;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * LyServiceMAPPER接口
  * @author lcm
@@ -34,4 +37,17 @@ public interface LyServiceMapper extends BaseMapper<LyService> {
      */
     IPage <LyServiceDTO> findList(Page <LyServiceDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
+
+    HashMap<String,Object> getAllSum();
+
+
+    HashMap<String,Object> getFinishSum(String start, String end);
+
+    HashMap<String, Object> getProgressMonth(String start, String end);
+
+    List<HashMap<String,Object>> getPerson();
+
+    List<HashMap<String, Object>> getAreaInfo();
+
+    List<HashMap<String, Object>> getPersonInfo(String name,String des1,String beginTime,String endTime);
 }

+ 46 - 0
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/lyservice/mapper/xml/LyServiceMapper.xml

@@ -46,4 +46,50 @@
 	    ${ew.customSqlSegment}
 	</select>
 
+	<select id="getAllSum" resultType="Map">
+		SELECT count(id) allqy,COUNT(DISTINCT bz6) allper FROM ly_enterprise_info
+		WHERE del_flag = 0 ;
+	</select>
+
+	<select id="getFinishSum" resultType="Map">
+		SELECT count(a.id) finishqy,COUNT(DISTINCT bz6) finishper
+		FROM ly_enterprise_info a
+		LEFT JOIN ly_service b ON a.id = b.qy_id
+		WHERE a.del_flag = 0 AND qy_id IS NOT NULL
+		AND DATE_FORMAT(b.create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(b.create_date, '%Y-%m-%d') &lt;= #{end};
+	</select>
+
+	<select id="getProgressMonth" resultType="Map" parameterType="String">
+		SELECT COUNT(*) allque, COUNT(IF(states != 0 or states IS NULL ,1,NULL )) AS unfinish
+		FROM dzf_question_detil WHERE del_flag = 0
+		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{start} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{end};
+	</select>
+
+	<select id="getPerson" resultType="Map">
+		SELECT des1, COUNT(DISTINCT bz5) AS perNum FROM ly_enterprise_info WHERE del_flag = 0 AND bz5 IS NOT NULL GROUP BY des1;
+	</select>
+
+	<select id="getAreaInfo" resultType="Map">
+		SELECT des1 FROM ly_enterprise_info WHERE del_flag = 0 GROUP BY des1;
+	</select>
+
+	<select id="getPersonInfo" resultType="Map">
+		SELECT COUNT(DISTINCT b.id) sum,bz5 FROM ly_enterprise_info a
+		LEFT JOIN
+		(SELECT * FROM ly_service WHERE del_flag = 0
+		<if test="beginTime != ''">
+		AND DATE_FORMAT(create_date, '%Y-%m-%d') >= #{beginTime} AND DATE_FORMAT(create_date, '%Y-%m-%d') &lt;= #{endTime}
+		</if>
+		) b ON a.id = b.qy_id
+		WHERE a.del_flag = 0 AND bz5 IS NOT NULL
+		<if test="des1 != ''">
+			AND des1 = #{des1}
+		</if>
+		<if test="name != ''">
+			AND name LIKE CONCAT('%', #{name}, '%')
+		</if>
+		GROUP BY bz5
+		ORDER BY bz5;
+	</select>
+
 </mapper>

+ 71 - 0
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/lyservice/service/LyServiceService.java

@@ -13,6 +13,11 @@ import com.jeeplus.lyservice.service.dto.LyServiceDTO;
 import com.jeeplus.lyservice.domain.LyService;
 import com.jeeplus.lyservice.mapper.LyServiceMapper;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * LyServiceService
  * @author lcm
@@ -42,4 +47,70 @@ public class LyServiceService extends ServiceImpl<LyServiceMapper, LyService> {
 		return  baseMapper.findList (page, queryWrapper);
 	}
 
+    public HashMap<String,Object > getProgressStatistics(String start, String end) {
+		HashMap<String,Object> map = new HashMap<>();
+		// 获取总的数据
+		HashMap<String,Object> allSum = baseMapper.getAllSum();
+		// 获取总的数据
+		HashMap<String,Object> finishSum = baseMapper.getFinishSum(start,end);
+		// 计算占比
+		double qyAcount =  0;
+		Integer finishqy = Integer.valueOf(finishSum.get("finishqy").toString());
+		double allqy = Integer.valueOf(allSum.get("allqy").toString());
+		if(allqy != 0){
+			qyAcount = finishqy / allqy * 100;
+		}
+		// 计算占比
+		double perAcount = 0 ;
+		Integer finishPer = Integer.valueOf(finishSum.get("finishper").toString());
+		double allper = Integer.valueOf(allSum.get("allper").toString());
+		if(allper!=0){
+			perAcount = finishPer / allper * 100;
+		}
+		// 保存两位小数
+		BigDecimal bg = new BigDecimal(qyAcount);
+		double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+		BigDecimal bg2 = new BigDecimal(perAcount);
+		double f2 = bg2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+		// 走访企业
+		map.put("qyAcount", String.valueOf(f1));
+		map.put("qyFinishSum", String.valueOf(finishqy));
+		map.put("qyUnfinish", String.valueOf(100 - f1));
+		map.put("qyUnFinishSum", String.valueOf(Integer.valueOf(allSum.get("allqy").toString()) - finishqy));
+		// 走访人数
+		map.put("perFinishSum", String.valueOf(finishPer));
+		map.put("perAcount", String.valueOf(f2));
+		map.put("perUnFinishSum", String.valueOf(Integer.valueOf(allSum.get("allper").toString()) - finishPer));
+		map.put("perUnfinish", String.valueOf(100 - f2));
+		// 问题数
+		// 月份
+		HashMap<String, Object> monthNum = baseMapper.getProgressMonth(start,end);
+		// 计算占比
+		double unAcount =  0;
+		Integer unfinish = Integer.valueOf(monthNum.get("unfinish").toString());
+		double allque = Integer.valueOf(monthNum.get("allque").toString());
+		if(allque != 0){
+			unAcount = unfinish / allque * 100;
+		}
+		BigDecimal bg3 = new BigDecimal(unAcount);
+		double f3 = bg3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+		// 问题数
+		map.put("queFinishSum", String.valueOf(Integer.valueOf(monthNum.get("allque").toString()) - unfinish ));
+		map.put("queAcount", String.valueOf(100.0 - f3));
+		map.put("queUnFinishSum", String.valueOf(unfinish));
+		map.put("queUnfinish", String.valueOf(f3));
+		return map;
+    }
+
+	public List<HashMap<String,Object>> getPerson() {
+		return baseMapper.getPerson();
+	}
+
+	public List<HashMap<String, Object>> getAreaInfo() {
+		return baseMapper.getAreaInfo();
+	}
+
+	public List<HashMap<String, Object>> getPersonInfo(String name,String des1,String beginTime,String endTime) {
+		return baseMapper.getPersonInfo(name,des1,beginTime.substring(0,10),endTime.substring(0,10));
+	}
 }

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

@@ -251,6 +251,32 @@ public class DzfQuestionController {
 			end = year+"-"+ month + "-" + day;
 			start =year+"-"+month+"-01";
 		}
+		DzfQuestionDTO dzfQuestionDTO=new DzfQuestionDTO();
+		//		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("1910141956174053377")){
+//			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);
+//		}
 		HashMap<Object,String> result = dzfQuestionService.getProgressStatistics(start,end);
 		return ResponseEntity.ok ( result );
 	}

+ 32 - 0
jp-ui/src/api/service/lyServiceService.js

@@ -33,6 +33,38 @@ export default {
     })
   },
 
+  getProgressStatistics: function(start, end) {
+  	return request({
+  		url: '/lyservice/lyService/getProgressStatistics',
+  		method: 'get',
+  		params: {
+  			start: start,
+  			end: end
+  		}
+  	})
+  },
+
+  getPerson: function() {
+  	return request({
+  		url: '/lyservice/lyService/getPerson',
+  		method: 'get'
+  	})
+  },
+
+  getAreaInfo: function() {
+  	return request({
+  		url: '/lyservice/lyService/getAreaInfo',
+  		method: 'get'
+  	})
+  },
+  getPersonInfo: function (params) {
+    return request({
+      url: '/lyservice/lyService/getPersonInfo',
+      method: 'get',
+      params: params
+    })
+  },
+
   exportTemplate: function () {
     return request({
       url: '/lyservice/lyService/import/template',

+ 1 - 0
jp-ui/src/router/index.js

@@ -33,6 +33,7 @@ const mainRoutes = {
   children: [
     {path: '/redirect/:path(.*)', component: _import('modules/redirect/index')},
     {path: '/home', redirect: '/sys/dashboard/analysis/index', name: 'home'},
+    {path: '/visit', component: _import('modules/sys/dashboard/analysis/visitStatistics'), name: 'visit'},
     {path: '/flowable/task/TaskForm', component: _import('modules/flowable/task/TaskForm'), name: 'task-form', meta: {title: '流程表单'}},
     {path: '/flowable/task/TaskFormEdit', component: _import('modules/flowable/task/TaskFormEdit'), name: 'task-form-edit', meta: {title: '流程表单'}},
     {path: '/flowable/task/TaskFormDetail', component: _import('modules/flowable/task/TaskFormDetail'), name: 'task-form-detail', meta: {title: '流程表单详情'}},

+ 722 - 445
jp-ui/src/views/modules/sys/dashboard/analysis/index.vue

@@ -15,17 +15,14 @@
       <div class="headline-text">盐都区工业企业产品发布平台</div>
     </div>
     <div class="main">
-      <div style="width: 2.5%"></div>
+      <div style="width: 1.5%"></div>
       <div class="main-1">
         <div class="main-periphery">
           <div style="height: 25%"></div>
           <div class="main-periphery-font" style="height: 30%; color: #031c57">
             今日入库企业数
           </div>
-          <div
-            class="main-periphery-numerical"
-            style="height: 45%; color: #0843cd"
-          >
+          <div class="main-periphery-numerical" style="height: 45%; color: #0843cd">
             {{ pageInfo.todayenterprisec }}
           </div>
         </div>
@@ -34,10 +31,7 @@
           <div class="main-periphery-font" style="height: 30%; color: #031c57">
             入库企业总数
           </div>
-          <div
-            class="main-periphery-numerical"
-            style="height: 45%; color: #0843cd"
-          >
+          <div class="main-periphery-numerical" style="height: 45%; color: #0843cd">
             {{ pageInfo.enterprisec }}
           </div>
         </div>
@@ -48,10 +42,7 @@
           <div class="main-periphery-font" style="height: 30%; color: #063e2a">
             今天活跃数
           </div>
-          <div
-            class="main-periphery-numerical"
-            style="height: 45%; color: #028455"
-          >
+          <div class="main-periphery-numerical" style="height: 45%; color: #028455">
             {{ pageInfo.todayc }}
           </div>
         </div>
@@ -61,10 +52,7 @@
           <div class="main-periphery-font" style="height: 30%; color: #063e2a">
             当月活跃数
           </div>
-          <div
-            class="main-periphery-numerical"
-            style="height: 45%; color: #028455"
-          >
+          <div class="main-periphery-numerical" style="height: 45%; color: #028455">
             {{ pageInfo.samemonthc }}
           </div>
         </div>
@@ -77,100 +65,52 @@
           <div style="height: 25%"></div>
           <div class="main-periphery-font" style="height: 30%; color: #764710">
             入库企业行业
-            <span
-              class="main-periphery-font-small"
-              style="color: #764710"
-            ></span>
+            <span class="main-periphery-font-small" style="color: #764710"></span>
           </div>
           <div class="main-periphery2">
             <div style="height: 15%"></div>
-            <div
-              class="main-periphery-font-small"
-              style="height: 30%; color: #764710"
-            >
+            <div class="main-periphery-font-small" style="height: 30%; color: #764710">
               {{pageInfo2[0].industry}}
-              <span
-                class="main-periphery-font"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >{{ pageInfo2[0].cc }}</span
-              >
-              <span
-                class="main-periphery-font-small"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >家</span
-              >
+              <span class="main-periphery-font"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">{{ pageInfo2[0].cc }}</span>
+              <span class="main-periphery-font-small"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">家</span>
             </div>
             <div style="height: 15%"></div>
-            <div
-              class="main-periphery-font-small"
-              style="height: 30%; color: #764710"
-            >
+            <div class="main-periphery-font-small" style="height: 30%; color: #764710">
               {{pageInfo2[1].industry}}
-              <span
-                class="main-periphery-font"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >{{ pageInfo2[1].cc }}</span
-              >
-              <span
-                class="main-periphery-font-small"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >家</span
-              >
+              <span class="main-periphery-font"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">{{ pageInfo2[1].cc }}</span>
+              <span class="main-periphery-font-small"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">家</span>
             </div>
           </div>
 
           <div class="main-periphery2">
             <div style="height: 15%"></div>
-            <div
-              class="main-periphery-font-small"
-              style="height: 30%; color: #764710"
-            >
+            <div class="main-periphery-font-small" style="height: 30%; color: #764710">
               {{pageInfo2[2].industry}}
-              <span
-                class="main-periphery-font"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >{{ pageInfo2[2].cc }}</span
-              >
-              <span
-                class="main-periphery-font-small"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >家</span
-              >
+              <span class="main-periphery-font"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">{{ pageInfo2[2].cc }}</span>
+              <span class="main-periphery-font-small"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">家</span>
             </div>
             <div style="height: 15%"></div>
-            <div
-              class="main-periphery-font-small"
-              style="height: 30%; color: #764710"
-            >
+            <div class="main-periphery-font-small" style="height: 30%; color: #764710">
               {{pageInfo2[3].industry}}
-              <span
-                class="main-periphery-font"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >{{ pageInfo2[3].cc }}</span
-              >
-              <span
-                class="main-periphery-font-small"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >家</span
-              >
+              <span class="main-periphery-font"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">{{ pageInfo2[3].cc }}</span>
+              <span class="main-periphery-font-small"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">家</span>
             </div>
 
             <div style="height: 15%"></div>
-            <div
-              class="main-periphery-font-small"
-              style="height: 30%; color: #764710"
-            >
+            <div class="main-periphery-font-small" style="height: 30%; color: #764710">
               {{pageInfo2[4].industry}}
-              <span
-                class="main-periphery-font"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >{{ pageInfo2[4].cc }}</span
-              >
-              <span
-                class="main-periphery-font-small"
-                style="font-weight: bold; color: #b86504; margin-left: 10px"
-                >家</span
-              >
+              <span class="main-periphery-font"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">{{ pageInfo2[4].cc }}</span>
+              <span class="main-periphery-font-small"
+                style="font-weight: bold; color: #b86504; margin-left: 10px">家</span>
             </div>
 
 
@@ -244,7 +184,7 @@
       </div> -->
     </div>
     <div class="footer">
-      <div class="footer-main">
+      <!-- <div class="footer-main">
         <div style="height: 10%"></div>
         <div class="footer-main-top">
           <i class="el-icon-s-promotion icon"></i>
@@ -272,13 +212,13 @@
               <div class="footer-fast-1-2">创建企业</div>
             </router-link>
           </div>
-          <!-- <div class="footer-fast-2" v-show="haveCJYG">
+          <div class="footer-fast-2" v-show="haveCJYG">
             <router-link to="/qyuser/QyUserList">
               <div class="footer-fast-2-3"></div>
               <div style="height: 10%"></div>
               <div class="footer-fast-1-2">新增员工</div>
             </router-link>
-          </div> -->
+          </div>
           <div class="footer-fast-2" v-show="haveSBSS">
             <router-link to="/saleinventory/SaleInventoryList">
               <div class="footer-fast-2-4"></div>
@@ -294,380 +234,717 @@
             </router-link>
           </div>
         </div>
+      </div> -->
+      <div class="headline">
+        <div class="headline-text">大走访看板</div>
+      </div>
+      <div class="footer-main">
+        <el-row>
+          <el-col :span="12">
+            <div class="">
+              <el-button autofocus @click="getTime(0)" size="mini">月度</el-button>
+              <el-button @click="getTime(1)" size="mini">季度</el-button>
+              <el-button @click="getTime(2)" size="mini">年度</el-button>
+            </div>
+          </el-col>
+          <el-col :span="12">
+            <div style="text-align: right;">
+              <el-date-picker size="mini" @change="getTime(3)" v-model="value2" type="daterange" align="right"
+                unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                :picker-options="pickerOptions">
+              </el-date-picker>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: red;">●</span>未完成大走访人数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.perUnFinishSum}}</span>人
+                </p>
+                <p>占比<span style="font-size: 12px;color: red;margin-left: 5px;">{{allSum.perUnfinish}}%</span></p>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: #0843cd;">●</span>完成大走访人数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.perFinishSum}}</span>人
+                </p>
+                <p>占比<span style="font-size: 12px;color: #0843cd;margin-left: 5px;">{{allSum.perAcount}}%</span></p>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: red;">●</span>未完成大走访企业数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.qyUnFinishSum}}</span>个
+                </p>
+                <p>占比<span style="font-size: 12px;color: red;margin-left: 5px;">{{allSum.qyUnfinish}}%</span></p>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: #0843cd;">●</span>完成大走访企业数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.qyFinishSum}}</span>个
+                </p>
+                <p>占比<span style="font-size: 12px;color: #0843cd;margin-left: 5px;">{{allSum.qyAcount}}%</span></p>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: red;">●</span>未办结问题数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.queUnFinishSum}}</span>个
+                </p>
+                <p>占比<span style="font-size: 12px;color: red;margin-left: 5px;">{{allSum.queUnfinish}}%</span></p>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="4">
+            <el-card shadow="always" :body-style="{padding: '5px',margin:'0px'}">
+              <div class="footer-fast-1-1">
+                <p><span style="color: #0843cd;">●</span>办结问题数</p>
+                <p><span style="font-size: 20px;font-weight: 700;margin-right: 10px;">{{allSum.queFinishSum}}</span>个
+                </p>
+                <p>占比<span
+                    style="font-size: 12px;color: #0843cd;margin-left: 5px;">{{parseFloat(allSum.queAcount).toFixed(2)}}%</span>
+                </p>
+              </div>
+            </el-card>
+          </el-col>
+        </el-row>
+        <div style="width:100%;height:280px;">
+          <div id="eChart2" style="width:100%;height:100%;"></div>
+        </div>
       </div>
     </div>
+
+    <el-dialog title="走访" :close-on-click-modal="false" v-dialogDrag :visible.sync="visible">
+
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="visible = false">关闭</el-button>
+        <!-- <el-button size="small" type="primary"  @click="doSubmit()" v-noMoreClick>确定</el-button> -->
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import bigScreenService from "@/api/bigScreen/bigScreenApi";
-import notifyService from "@/api/notify/notifyService";
-import userService from "@/api/sys/userService";
-export default {
-  data() {
-    return {
-      parkSum: "24",
-      enterpriseSum: "1025",
-      premisesAcreage: "24152.3",
-      usableArea: "18122.1",
-      residualArea: "6030.2",
-      moneyYear: "1025.2",
-      moneyMonth: "101.2",
-      moneyMoM: "2.2%",
-      moneyYoY: "0.2%",
-      revenueYear: "201.2",
-      revenueMonth: "31.2",
-      revenueMoM: "2.2%",
-      revenueYoY: "0.2%",
-      taxYear: "201.2",
-      taxMonth: "31.2",
-      taxMoM: "2.2%",
-      taxYoY: "0.2%",
-      textColor1: "#028455",
-      textColor2: "#028455",
-      textColor3: "#028455",
-      textColor4: "#028455",
-      textColor5: "#028455",
-      textColor6: "#028455",
-      isTop1: true,
-      isTop2: true,
-      isTop3: true,
-      isTop4: true,
-      isTop5: true,
-      isTop6: true,
-      isBottom1: false,
-      isBottom2: false,
-      isBottom3: false,
-      isBottom4: false,
-      isBottom5: false,
-      isBottom6: false,
-      pageInfo: {},
-      pageInfo2: [],
-      haveCJYQ: false,
-      haveCJLY: false,
-      haveCJQY: false,
-      haveCJYG: false,
-      haveSBSS: false,
-      haveXXWH: false,
-      nowYQInfo: {
-        BelowUndergraduate: 0,
-        Undergraduate: 0,
-        Postgraduate: 0,
-        DoctoralStudent: 0,
-      },
-      notifyList: [],
-      tablePage: {
+  import bigScreenService from "@/api/bigScreen/bigScreenApi";
+  import notifyService from "@/api/notify/notifyService";
+  import lyService from "@/api/service/lyServiceService";
+  import userService from "@/api/sys/userService";
+  import visitStatistics from './visitStatistics'
+  export default {
+    data() {
+      return {
+        parkSum: "24",
+        enterpriseSum: "1025",
+        premisesAcreage: "24152.3",
+        usableArea: "18122.1",
+        residualArea: "6030.2",
+        moneyYear: "1025.2",
+        moneyMonth: "101.2",
+        moneyMoM: "2.2%",
+        moneyYoY: "0.2%",
+        revenueYear: "201.2",
+        revenueMonth: "31.2",
+        revenueMoM: "2.2%",
+        revenueYoY: "0.2%",
+        taxYear: "201.2",
+        taxMonth: "31.2",
+        taxMoM: "2.2%",
+        taxYoY: "0.2%",
+        textColor1: "#028455",
+        textColor2: "#028455",
+        textColor3: "#028455",
+        textColor4: "#028455",
+        textColor5: "#028455",
+        textColor6: "#028455",
+        isTop1: true,
+        isTop2: true,
+        isTop3: true,
+        isTop4: true,
+        isTop5: true,
+        isTop6: true,
+        isBottom1: false,
+        isBottom2: false,
+        isBottom3: false,
+        isBottom4: false,
+        isBottom5: false,
+        isBottom6: false,
+        pageInfo: {},
+        pageInfo2: [{
+          industry: '',
+          cc: ''
+        }, {
+          industry: '',
+          cc: ''
+        }, {
+          industry: '',
+          cc: ''
+        }, {
+          industry: '',
+          cc: ''
+        }, {
+          industry: '',
+          cc: ''
+        }, {
+          industry: '',
+          cc: ''
+        }, ],
+        haveCJYQ: false,
+        haveCJLY: false,
+        haveCJQY: false,
+        haveCJYG: false,
+        haveSBSS: false,
+        haveXXWH: false,
+        nowYQInfo: {
+          BelowUndergraduate: 0,
+          Undergraduate: 0,
+          Postgraduate: 0,
+          DoctoralStudent: 0,
+        },
+        notifyList: [],
+        tablePage: {
           total: 0,
           currentPage: 1,
           pageSize: 10,
-          orders: [{ column: 'a.create_date', asc: false }]
+          orders: [{
+            column: 'a.create_date',
+            asc: false
+          }]
         },
-    };
-  },
-  activated() {
-    this.changeColor();
-    this.getPageInfo();
-    this.getMenuList();
-    this.getNotifyList()
-  },
-  methods: {
-    getPageInfo() {
-      bigScreenService.InfoStatistics({}).then(({ data }) => {
-        this.pageInfo = data;
-      });
-
-      bigScreenService.InfoStatistics_industry({ }).then(({ data }) => {
-        this.pageInfo2 = data;
-      });
-
+        pickerOptions: {
+          shortcuts: [{
+            text: '最近一周',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+              picker.$emit('pick', [start, end]);
+            }
+          }, {
+            text: '最近一个月',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+              picker.$emit('pick', [start, end]);
+            }
+          }, {
+            text: '最近三个月',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+              picker.$emit('pick', [start, end]);
+            }
+          }]
+        },
+        value2: [new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 30), new Date()],
+        allSum: {},
+        visible: false,
+      };
+    },
+    components: {
+      visitStatistics
     },
+    activated() {
+
+      this.changeColor();
+      this.getPageInfo();
+      this.getMenuList();
+      this.getNotifyList();
+      const end = new Date();
+      const start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+      this.getAllAum(start, end)
+      this.get2();
+    },
+    methods: {
+      get2() {
+        var that = this
+        //获取id并初始化图表
+        var myChart = this.$echarts.init(document.getElementById("eChart2"));
+        lyService.getPerson().then(({
+          data
+        }) => {
+          const x = [];
+          const y = [];
+          for (let i = 0; i < data.length; i++) {
+            x.push(data[i].des1)
+            y.push(data[i].perNum)
+          }
 
-    getNotifyList() {
-      notifyService
-        .list({
-          current: this.tablePage.currentPage,
-          size: this.tablePage.pageSize,
-          orders: this.tablePage.orders,
-          isSelf: true,
-          ...this.searchForm,
+          // const x = this.tableData.x//x轴
+          // const y = this.tableData.y//y轴
+
+          //配置项
+          let option = {
+            tooltip: {
+              show: false
+            },
+            legend: {
+              show: false
+            },
+            grid: {
+              left: "4%",
+              right: "3%",
+              bottom: "7%",
+              top: "15%",
+              containLabel: true
+            },
+            // dataZoom: [
+            //   //滑动条
+            //   {
+            //     xAxisIndex: 0, //这里是从X轴的0刻度开始
+            //     show: false, //是否显示滑动条,不影响使用
+            //     type: "inside", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
+            //     startValue: 0, // 从头开始。
+            //     endValue: 8, // 一次性展示几个。
+            //   },
+            // ],
+            xAxis: {
+              type: "category",
+              data: x.length && y.length > 0 ? x : tableData1,
+              boundaryGap: [0, 0.01],
+              axisLine: {
+                lineStyle: {
+                  color: "rgba(255, 255, 255, 0.1)",
+                  width: 1
+                }
+              },
+              splitLine: {
+                show: true,
+                lineStyle: {
+                  color: "rgba(255, 255, 255, 0.1)"
+                }
+              },
+              axisTick: {
+                show: true
+              },
+              axisLabel: {
+                show: true,
+                color: "#000",
+                fontSize: 14
+              }
+            },
+            yAxis: {
+              name: "人",
+              nameTextStyle: {
+                color: "#000",
+                fontSize: 13,
+              },
+              type: "value",
+              boundaryGap: [0, 0.01],
+              axisLine: {
+                lineStyle: {
+                  color: "#333",
+                  width: 1
+                }
+              },
+              splitLine: {
+                show: true,
+                lineStyle: {
+                  color: "rgba(255, 255, 255, 0.1)"
+                }
+              },
+              axisTick: {
+                show: false
+              },
+              axisLabel: {
+                show: true,
+                color: "#000",
+                fontSize: 14
+              }
+            },
+            series: [{
+              name: "人",
+              type: "bar",
+              data: y,
+              barWidth: 20,
+              label: {
+                normal: {
+                  show: true,
+                  position: "top",
+                  fontSize: 12,
+                  color: '#000'
+                }
+              },
+              itemStyle: {
+                normal: {
+                  label: {
+                    show: false
+                  },
+                  borderRadius: 2,
+                  color: '#0184ff'
+                }
+              }
+            }]
+          };
+
+          myChart.setOption(option); //通过setOption()方法生成图表
+          myChart.on('click', function(params) {
+            that.$router.push({
+              name: 'visit',
+              params: {
+                name: params.name,
+                createTime: that.value2
+              }
+            })
+          })
         })
-        .then(({ data }) => {
-          this.notifyList = data.records;
+      },
+      getPageInfo() {
+        bigScreenService.InfoStatistics({}).then(({
+          data
+        }) => {
+          this.pageInfo = data;
         });
-    },
 
+        bigScreenService.InfoStatistics_industry({}).then(({
+          data
+        }) => {
+          this.pageInfo2 = data;
+        });
 
+      },
 
-    getMenuList() {
-      userService.getMenus().then(({ data }) => {
-        let routerList = data.routerList;
-        let allList = [];
-        routerList.forEach((item) => {
-          if (item.href) {
-            allList.push(item.href);
-          }
-          if (item.children.length > 0) {
-            item.children.forEach((itemIn) => {
-              if (itemIn.href) {
-                allList.push(itemIn.href);
-              }
-            });
-          }
+      getAllAum(start, end) {
+        lyService.getProgressStatistics(start, end).then(({
+          data
+        }) => {
+          this.allSum = data
+        })
+      },
+
+      getTime(val) {
+        const end = new Date();
+        const start = new Date();
+        if (val == 0) {
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+        } else if (val == 1) {
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+        } else if (val == 2) {
+          start.setFullYear(start.getFullYear() - 1);
+        } else if (val == 3) {
+          start.setTime(this.value2[0])
+          end.setTime(this.value2[1])
+        }
+        this.value2 = [start, end]
+        this.getAllAum(start, end);
+      },
+
+      getNotifyList() {
+        notifyService
+          .list({
+            current: this.tablePage.currentPage,
+            size: this.tablePage.pageSize,
+            orders: this.tablePage.orders,
+            isSelf: true,
+            ...this.searchForm,
+          })
+          .then(({
+            data
+          }) => {
+            this.notifyList = data.records;
+          });
+      },
+
+
+
+      getMenuList() {
+        userService.getMenus().then(({
+          data
+        }) => {
+          let routerList = data.routerList;
+          let allList = [];
+          routerList.forEach((item) => {
+            if (item.href) {
+              allList.push(item.href);
+            }
+            if (item.children.length > 0) {
+              item.children.forEach((itemIn) => {
+                if (itemIn.href) {
+                  allList.push(itemIn.href);
+                }
+              });
+            }
+          });
+          console.log(allList, "====================>allList");
+          this.haveCJYQ = allList.includes("/parkmanagement/ParkManagementList");
+          this.haveCJLY = allList.includes(
+            "/buildinginfo/BuildingManagementList"
+          );
+          this.haveCJQY = allList.includes("/enterpriseinfo/EnterpriseInfoList");
+          this.haveCJYG = allList.includes("/qyuser/QyUserList");
+          this.haveSBSS = allList.includes("/saleinventory/SaleInventoryList");
+          this.haveXXWH = allList.includes(
+            "/enterpriseother/EnterpriseOtherList"
+          );
+
+          this.$router.push({
+            name: "home"
+          });
         });
-        console.log(allList, "====================>allList");
-        this.haveCJYQ = allList.includes("/parkmanagement/ParkManagementList");
-        this.haveCJLY = allList.includes(
-          "/buildinginfo/BuildingManagementList"
-        );
-        this.haveCJQY = allList.includes("/enterpriseinfo/EnterpriseInfoList");
-        this.haveCJYG = allList.includes("/qyuser/QyUserList");
-        this.haveSBSS = allList.includes("/saleinventory/SaleInventoryList");
-        this.haveXXWH = allList.includes(
-          "/enterpriseother/EnterpriseOtherList"
-        );
-
-        this.$router.push({ name: "home" });
-      });
-    },
+      },
 
-    changeColor() {
-      this.textColor1 = "#FF1C1C";
-      this.textColor4 = "#FF1C1C";
-      this.isTop1 = false;
-      this.isTop4 = false;
-      this.isBottom1 = true;
-      this.isBottom4 = true;
+      changeColor() {
+        this.textColor1 = "#FF1C1C";
+        this.textColor4 = "#FF1C1C";
+        this.isTop1 = false;
+        this.isTop4 = false;
+        this.isBottom1 = true;
+        this.isBottom4 = true;
+      },
     },
-  },
-};
+  };
 </script>
 
 <style scoped lang="less">
-.background-image {
-  background-image: url("~@/assets/img/homePage/hou_bg2.png");
-  background-position: bottom;
-  background-size: 100% 100%;
-  width: 100%;
-  height: 100%;
-}
-
-.header {
-  width: 100%;
-  height: 8%;
-}
-
-.headline {
-  width: 100%;
-  height: 7%;
-  position: relative;
-}
-
-.headline-text {
-  margin-left: 4%;
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: normal;
-  font-size: 30px;
-  color: #3c507e;
-}
-
-.main-1 {
-  margin-left: 1.5%;
-  width: 29%;
-  height: 80%;
-  background-image: url("~@/assets/img/homePage/hou_5.png");
-  background-size: 100% 100%;
-  border-radius: 10px;
-}
-
-.main-2 {
-  margin-left: 1.5%;
-  width: 29%;
-  height: 80%;
-  background-image: url("~@/assets/img/homePage/hou_4.png");
-  background-size: 100% 100%;
-  border-radius: 10px;
-}
-
-.main-3 {
-  margin-left: 1.5%;
-  width: 29%;
-  height: 80%;
-  background-image: url("~@/assets/img/homePage/hou_3.png");
-  background-size: 100% 100%;
-  border-radius: 10px;
-}
-
-.main-4 {
-  margin-left: 1.5%;
-  width: 30%;
-  height: 80%;
-  background-image: url("~@/assets/img/homePage/hou_2.png");
-  background-size: 100% 100%;
-  border-radius: 10px;
-}
-
-.main-5 {
-  margin-left: 1.5%;
-  width: 17%;
-  height: 80%;
-  background-image: url("~@/assets/img/homePage/hou_1.png");
-  background-size: 100% 100%;
-  border-radius: 10px;
-}
-
-.main {
-  width: 100%;
-  height: 35%;
-  /* 开启Flexbox布局 */
-  display: flex;
-}
-
-.footer {
-  width: 100%;
-  height: 43%;
-}
-
-.footer-main {
-  margin-left: 4%;
-  width: 91%;
-  height: 55%;
-  background-color: white;
-  border-radius: 10px;
-}
-
-.footer-main-top {
-  height: 26%;
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: normal;
-  font-size: 16px;
-  color: #333333;
-  margin-left: 2%;
-}
-
-.footer-fast {
-  width: 100%;
-  height: 64%;
-  /* 开启Flexbox布局 */
-  display: flex;
-}
-
-// .footer-fast-1 {
-//   margin-left: 5%;
-//   width: 4.5%;
-//   height: 100%;
-// }
-
-.footer-fast-2 {
-  margin-left: 5%;
-  width: 4.5%;
-  height: 100%;
-}
-
-.footer-fast-1-1 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_addyuan.png");
-  background-size: 100% 100%;
-}
-
-.footer-fast-1-2 {
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: normal;
-  font-size: 14px;
-  text-align: center;
-}
-
-.footer-fast-2-1 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_addlou.png");
-  background-size: 100% 100%;
-}
-
-.footer-fast-2-2 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_addqiye.png");
-  background-size: 100% 100%;
-}
-
-.footer-fast-2-3 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_addren.png");
-  background-size: 100% 100%;
-}
-
-.footer-fast-2-4 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_shuishou.png");
-  background-size: 100% 100%;
-}
-
-.footer-fast-2-5 {
-  width: 100%;
-  height: 53.84%;
-  background-image: url("~@/assets/img/homePage/hou_addint.png");
-  background-size: 100% 100%;
-}
-
-.main-periphery {
-  margin-left: 8%;
-  width: 92%;
-  height: 50%;
-}
-
-.main-periphery2 {
-  margin-left: 0%;
-  height: 50%;
-}
-
-.main-periphery-font {
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: normal;
-  font-size: 20px;
-}
-
-.main-periphery-numerical {
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: bold;
-  font-size: 40px;
-}
-
-.main-periphery-font-small {
-  font-family: Alibaba PuHuiTi 2;
-  font-weight: normal;
-  font-size: 15px;
-}
-
-.roll-name-box {
-  width: 100%;
-  padding-left: 1vw;
-  padding-right: 1vw;
-  height: 3vh;
-  color: #fff;
-  background: #0f467a;
-  line-height: 3vh;
-  font-size: 1.5vh;
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-.scroll-content {
-  margin-left: 50%; // 把文字弄出可见区域
-  width: 200%;
-  animation: myMove 100s linear infinite; // 重点,定义动画
-  animation-fill-mode: forwards;
-  color: #fff;
-}
-
-@keyframes myMove {
-  0% {
-    transform: translateX(0%);
+  .background-image {
+    background-image: url("~@/assets/img/homePage/hou_bg2.png");
+    background-position: bottom;
+    background-size: 100% 100%;
+    width: 100%;
+    height: 100%;
+  }
+
+  .header {
+    width: 100%;
+    height: 20px;
+  }
+
+  .headline {
+    width: 100%;
+    height: 5%;
+    position: relative;
+  }
+
+  .headline-text {
+    margin-left: 4%;
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: normal;
+    font-size: 30px;
+    color: #3c507e;
+  }
+
+  .main-1 {
+    margin-left: 1.5%;
+    width: 29%;
+    height: 75%;
+    background-image: url("~@/assets/img/homePage/hou_5.png");
+    background-size: 100% 100%;
+    border-radius: 10px;
+  }
+
+  .main-2 {
+    margin-left: 1.5%;
+    width: 29%;
+    height: 75%;
+    background-image: url("~@/assets/img/homePage/hou_4.png");
+    background-size: 100% 100%;
+    border-radius: 10px;
+  }
+
+  .main-3 {
+    margin-left: 1.5%;
+    width: 29%;
+    height: 75%;
+    background-image: url("~@/assets/img/homePage/hou_3.png");
+    background-size: 100% 100%;
+    border-radius: 10px;
+  }
+
+  .main-4 {
+    margin-left: 1.5%;
+    width: 30%;
+    height: 75%;
+    background-image: url("~@/assets/img/homePage/hou_2.png");
+    background-size: 100% 100%;
+    border-radius: 10px;
+  }
+
+  .main-5 {
+    margin-left: 1.5%;
+    width: 17%;
+    height: 75%;
+    background-image: url("~@/assets/img/homePage/hou_1.png");
+    background-size: 100% 100%;
+    border-radius: 10px;
+  }
+
+  .main {
+    width: 100%;
+    height: 30%;
+    /* 开启Flexbox布局 */
+    display: flex;
+  }
+
+  .footer {
+    width: 100%;
+    position: relative;
+    top: -5%;
+    // height: 43%;
+
+  }
+
+  .el-row {
+    margin-bottom: 20px;
+  }
+
+  .footer-main {
+    margin-left: 4%;
+    width: 91%;
+    border-radius: 10px;
+    margin-top: 15px;
+  }
+
+  .footer-main-top {
+    height: 26%;
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: normal;
+    font-size: 16px;
+    color: #333333;
+    margin-left: 2%;
   }
-  100% {
-    transform: translateX(-100%);
+
+  .footer-fast {
+    width: 100%;
+    height: 64%;
+    /* 开启Flexbox布局 */
+    display: flex;
+  }
+
+  // .footer-fast-1 {
+  //   margin-left: 5%;
+  //   width: 4.5%;
+  //   height: 100%;
+  // }
+
+  .footer-fast-2 {
+    margin-left: 5%;
+    width: 4.5%;
+    height: 100%;
+  }
+
+  .footer-fast-1-1 p {
+    margin: 10px;
+    font-size: 14px;
+    // width: 100%;
+    // height: 53.84%;
+    // background-image: url("~@/assets/img/homePage/hou_addyuan.png");
+    // background-size: 100% 100%;
+
+  }
+
+  .footer-fast-1-2 {
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: normal;
+    font-size: 14px;
+    text-align: center;
+  }
+
+  .footer-fast-2-1 {
+    width: 100%;
+    height: 53.84%;
+    background-image: url("~@/assets/img/homePage/hou_addlou.png");
+    background-size: 100% 100%;
+  }
+
+  .footer-fast-2-2 {
+    width: 100%;
+    height: 53.84%;
+    background-image: url("~@/assets/img/homePage/hou_addqiye.png");
+    background-size: 100% 100%;
+  }
+
+  .footer-fast-2-3 {
+    width: 100%;
+    height: 53.84%;
+    background-image: url("~@/assets/img/homePage/hou_addren.png");
+    background-size: 100% 100%;
+  }
+
+  .footer-fast-2-4 {
+    width: 100%;
+    height: 53.84%;
+    background-image: url("~@/assets/img/homePage/hou_shuishou.png");
+    background-size: 100% 100%;
+  }
+
+  .footer-fast-2-5 {
+    width: 100%;
+    height: 53.84%;
+    background-image: url("~@/assets/img/homePage/hou_addint.png");
+    background-size: 100% 100%;
+  }
+
+  .main-periphery {
+    margin-left: 8%;
+    width: 92%;
+    height: 50%;
+  }
+
+  .main-periphery2 {
+    margin-left: 0%;
+    height: 50%;
+  }
+
+  .main-periphery-font {
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: normal;
+    font-size: 20px;
+  }
+
+  .main-periphery-numerical {
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: bold;
+    font-size: 40px;
+  }
+
+  .main-periphery-font-small {
+    font-family: Alibaba PuHuiTi 2;
+    font-weight: normal;
+    font-size: 15px;
+  }
+
+  .roll-name-box {
+    width: 100%;
+    padding-left: 1vw;
+    padding-right: 1vw;
+    height: 3vh;
+    color: #fff;
+    background: #0f467a;
+    line-height: 3vh;
+    font-size: 1.5vh;
+    overflow: hidden;
+    white-space: nowrap;
+  }
+
+  .scroll-content {
+    margin-left: 50%; // 把文字弄出可见区域
+    width: 200%;
+    animation: myMove 100s linear infinite; // 重点,定义动画
+    animation-fill-mode: forwards;
+    color: #fff;
+  }
+
+  @keyframes myMove {
+    0% {
+      transform: translateX(0%);
+    }
+
+    100% {
+      transform: translateX(-100%);
+    }
   }
-}
 </style>

+ 188 - 0
jp-ui/src/views/modules/sys/dashboard/analysis/visitStatistics.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="page">
+    <el-form size="small" :inline="true" class="query-form" ref="searchForm" :model="searchForm"
+      @keyup.enter.native="refreshList()" @submit.native.prevent>
+      <!-- 搜索框-->
+      <el-form-item prop="name" title="企业名称">
+        <el-input size="small" v-model="searchForm.name" placeholder="企业名称" clearable></el-input>
+      </el-form-item>
+      <el-form-item prop="des1" title="属地">
+        <el-select v-model="searchForm.des1" placeholder="请选择">
+          <el-option v-for="item in areaList" :key="item" :label="item" :value="item">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="createTime">
+        <el-date-picker size="mini" v-model="searchForm.createTime" type="daterange" align="right" unlink-panels
+          range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="refreshList()" size="small" icon="el-icon-search">查询</el-button>
+        <el-button @click="resetSearch()" size="small" icon="el-icon-refresh-right">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <div class="bg-white top">
+     <!-- <vxe-toolbar>
+        <template #buttons>
+          <el-button type="primary" size="small" @click="add()">导出</el-button>
+        </template>
+      </vxe-toolbar> -->
+      <div style="height: calc(100% - 80px);">
+        <vxe-table border="inner" auto-resize resizable height="auto" :loading="loading" size="small"
+          ref="lyServiceTable" show-header-overflow show-overflow highlight-hover-row :menu-config="{}"
+          :print-config="{}"  :export-config="{
+                remote: true,
+                filename: `走访统计${moment(new Date()).format(
+            		'YYYY-MM-DD'
+                )}`,
+                sheetName: '走访统计',
+                exportMethod: exportMethod,
+                types: ['xlsx'],
+                modes: ['current', 'selected', 'all'],
+            }" :data="dataList" :checkbox-config="{}">
+          <vxe-column type="seq" width="80" title="序号"></vxe-column>
+          <vxe-column field="bz5"  title="挂钩干部">
+          </vxe-column>
+          <vxe-column field="sum"  title="走访次数">
+          </vxe-column>
+          <!-- <vxe-column field="contactDate" title="单位">
+          </vxe-column> -->
+          <vxe-column fixed="right" align="center" width="200" title="操作">
+            <!-- <template slot-scope="scope">
+              <el-button v-if="hasPermission('service:lyService:view')" type="text" icon="el-icon-view" size="small"
+                @click="view(scope.row.id)">查看</el-button>
+              <el-button v-if="hasPermission('service:lyService:edit')" type="text" icon="el-icon-edit" size="small"
+                @click="edit(scope.row.id)">修改</el-button>
+              <el-button v-if="hasPermission('service:lyService:del')" type="text" icon="el-icon-delete" size="small"
+                @click="del(scope.row.id)">删除</el-button>
+            </template> -->
+          </vxe-column>
+        </vxe-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import lyServiceService from '@/api/service/lyServiceService'
+  export default {
+    data() {
+      return {
+        searchForm: {
+          name: '',
+          des1: '',
+          createTime: []
+        },
+        dataList: [],
+        areaList: [],
+        loading: false
+      }
+    },
+    activated() {
+      this.searchForm.des1 = this.$route.params.name
+      this.searchForm.createTime = this.$route.params.createTime
+      this.searchForm.createTime[0] = new Date(this.$route.params.createTime[0])
+      this.refreshList()
+      this.getAreaInfo()
+    },
+    methods: {
+      // 获取数据列表
+      refreshList() {
+        this.loading = true
+        this.searchForm.beginTime = this.searchForm.createTime[0]
+        this.searchForm.endTime = this.searchForm.createTime[1]
+        lyServiceService.getPersonInfo({
+          ...this.searchForm
+        }).then(({
+          data
+        }) => {
+          this.dataList = data
+          this.loading = false
+        })
+      },
+      getAreaInfo() {
+        this.areaList = []
+        lyServiceService.getAreaInfo().then(({
+          data
+        }) => {
+          for (var index = 0; index < data.length; index++) {
+            this.areaList.push(data[index].des1);
+          }
+        })
+      },
+
+
+      // 下载模板
+      downloadTpl() {
+        this.loading = true
+        lyServiceService.exportTemplate().then(({
+          data
+        }) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(data, '请假表单导入模板')
+          this.loading = false
+        }).catch(function(err) {
+          this.loading = false
+          if (err.response) {
+            console.log(err.response)
+          }
+        })
+      },
+      // 自定义服务端导入
+      importMethod({
+        file
+      }) {
+        // 处理表单
+        const formBody = new FormData()
+        formBody.append('file', file)
+        this.loading = true
+        lyServiceService.importExcel(formBody).then(({
+          data
+        }) => {
+          this.$message.success({
+            dangerouslyUseHTMLString: true,
+            message: data
+          })
+          this.refreshList()
+        })
+      },
+      // 自定义服务端导出
+      exportMethod({
+        options
+      }) {
+        // 传给服务端的参数
+        const params = {
+          current: this.tablePage.currentPage,
+          size: this.tablePage.pageSize,
+          orders: this.tablePage.orders,
+          ...this.searchForm,
+          filename: options.filename,
+          sheetName: options.sheetName,
+          isHeader: options.isHeader,
+          original: options.original,
+          mode: options.mode,
+          selectIds: options.mode === 'selected' ? options.data.map((item) => item.id) : [],
+          exportFields: options.columns.map((column) => column.property && column.property.split('.')[0])
+        }
+        this.loading = true
+        return lyServiceService.exportExcel(params).then(({
+          data
+        }) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(data, options.filename)
+          this.loading = false
+        }).catch(function(err) {
+          if (err.response) {
+            console.log(err.response)
+          }
+        })
+      },
+      resetSearch() {
+        this.$refs.searchForm.resetFields()
+        this.refreshList()
+      }
+    }
+  }
+</script>