Преглед на файлове

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

jingyuanchao преди 2 години
родител
ревизия
6960802614

+ 60 - 0
src/api/board/cockpit.js

@@ -0,0 +1,60 @@
+import request from "@/utils/request";
+
+// 履职
+export function resumption(query) {
+  return request({
+    url: "/core/cockpit/resumption",
+    method: "get",
+    params: query,
+  });
+}
+
+// 安全检查
+export function safetyCheck(query) {
+  return request({
+    url: "/core/cockpit/safetycheck",
+    method: "get",
+    params: query,
+  });
+}
+// 监控调阅
+export function monitor(query) {
+  return request({
+    url: "/core/cockpit/monitor",
+    method: "get",
+    params: query,
+  });
+}
+// 教育
+export function edu(query) {
+  return request({
+    url: "/core/cockpit/edu",
+    method: "get",
+    params: query,
+  });
+}
+// 预案演练
+export function drill(query) {
+  return request({
+    url: "/core/cockpit/drill",
+    method: "get",
+    params: query,
+  });
+}
+// GA38统计
+export function orgGA38(orgId) {
+  return request({
+    url: "/core/cockpit/orgga38",
+    method: "get",
+    params: { orgId },
+  });
+}
+
+// 隐患统计
+export function question(query) {
+    return request({
+      url: "/core/cockpit/question",
+      method: "get",
+      params: query,
+    });
+  }

+ 0 - 0
src/views/board/charts/map/maps/fj.json → src/assets/map/fj.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/assets/map/fuzhou.json


+ 72 - 0
src/assets/map/index.js

@@ -0,0 +1,72 @@
+import map from "./fj.json";
+import zhangzhou from "./zhangzhou.json";
+import fuzhou from "./fuzhou.json";
+const config = {
+  default: {
+    map,
+    coordinates: [],
+  },
+  漳州地区行社: {
+    map: zhangzhou,
+    coordinates: [
+      { name: "漳州农商行", value: [117.675264, 24.524648, 10] },
+      { name: "龙海农商行", value: [117.813678, 24.453241, 10] },
+      { name: "云霄县农联社", value: [117.347455, 23.94945, 10] },
+      { name: "漳浦县农联社", value: [117.628503,24.12591, 10] },
+      { name: "诏安县农联社", value: [117.185518, 23.717786, 10] },
+      { name: "长泰县农联社", value: [117.755306, 24.626603, 10] },
+      { name: "东山县农联社", value: [117.432607, 23.713423, 10] },
+      { name: "南靖县农联社", value: [117.37278, 24.523476, 10] },
+      { name: "平和县农联社", value: [117.322431, 24.376604, 10] },
+      { name: "华安县农联社", value: [117.586218, 24.998993, 10] },
+    ],
+  },
+  福州地区行社: {
+    map: fuzhou,
+    coordinates: [
+      { name: "福清汇通农商行", value: [119.200249, 26.078113, 10] },
+      { name: "闽侯县农联社", value: [119.262986, 25.94124, 10] },
+      { name: "闽清县农联社", value: [118.868057, 26.226602, 10] },
+      { name: "永泰县农联社", value: [118.814802, 25.980989, 10] },
+      { name: "长乐农商行", value: [119.47577, 25.970764, 10] },
+      { name: "平潭农商行", value: [119.805094, 25.508058, 10] },
+      { name: "连江县农联社", value: [119.550238, 26.214626, 10] },
+      { name: "罗源县农联社", value: [119.555228, 26.494764, 10] },
+      // { name: "鼓楼区农商行", value: [, 10] },
+      { name: "台江农商2", value: [119.345806, 26.058267, 10] },
+      // { name: "马尾农商行", value: [, 10] },
+    ],
+  },
+};
+
+export default {
+  /**获取地图数据 */
+  getMap(orgName) {
+    if (config[orgName]) {
+      return config[orgName].map;
+    }
+
+    return config.default.map;
+  },
+  /**
+   * 获取坐标
+   * @param {} orgName
+   */
+  getCoord(orgName) {
+    if (config[orgName]) {
+      return config[orgName].coordinates;
+    }
+
+    let coordinates = [];
+    for (let p in config) {
+      if (!config[p].coordinates) {
+        continue;
+      }
+
+      coordinates = coordinates.concat(config[p].coordinates);
+    }
+
+    return coordinates;
+  },
+};
+// coordinates

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/assets/map/zhangzhou.json


+ 38 - 37
src/views/board/charts/map/report.vue

@@ -1,13 +1,13 @@
 <!--  -->
 <template>
   <div class="chart-template">
-    <div id="map_Chart" style="height:100%"></div>
+    <div id="map_Chart" style="height: 100%"></div>
   </div>
 </template>
 <script>
 import "./../../board.scss";
 import * as echarts from "echarts";
-import fjMap from "./maps/fj.json";
+import mapConfig from "@/assets/map/index.js";
 import {
   findMaxIndex,
   getChartDOMSize,
@@ -16,11 +16,12 @@ import {
 } from "../../utils.js";
 
 export default {
-  props: ["orgId"],
+  props: ["orgId", "orgName"],
   data() {
     return {
-      data: {},
-      icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA/5JREFUaEPtmEuIHFUUhv/TPXVbXWkw4KK7ShPGrlIzEB9IdJNZKIgLnQhGGXERFzHJwsRF4qjkIZqom8SFmRBQEF8RZSIuBFFIcBHdGDRD0jXkwfStLEQJxI3atyZ9pDqTOMSurntvdSEDXdv6z/n/r86txy3CIj9okefHAOD/nuBgAoMJ5LwChS6hU9XKMIgr15fVmdtm8XfOrF3L+wZwsool5bJ4BIwVDKwk4D4ANy1wPQ0gBPhciXnq9mju+34A9QUg9MQ4MSYYuFMz1CVmbA8itVtTnyrLDRC64iMA45ZBvvaletSytlOWCyB0xQUAS/IEAPCHL9WNtj2sARqe+JQYT9kaL6xjwqGgqZ626WUFMOOJMWZM2Rim1RBhTb2pDpv2NAaYrlWWO8QnANxgapah/zNmGlkRtc6a9DUGaNTEFBHGNEwuApid190KIHOdM+NwEKk1Gr2vSowBwprzG4iW9jIhYE9dqpcXakKvsh/MGzLCXfClurkwgLAqRlDCLxnhJ+pSvdlNo3PvMPjeQMY/6UIYTWDGdZ5l0Ac9mh8vC/XA8Bm00jShK74B8HDaeQavD2R8sBCA0HX2ArQ51Zx4b9CMX+xl3nDFbgImUp9GoIN12VpfDEDNOQKi1akA7fZocH7uaE+A6tBqKpWO9JjAd4GMHyoEoOGKLwh4It0cuwKpdvYyDz1nHZjeS58APqtLpf2CNLoHQrdyAOBe4532pRrpOYGa+IQI6W9dokm/2dpYyARCT7wOxisZzT/3pXqymyZ0xVsAtvasJ7zhN9WrhQCcrDr3l0v0o0bzD5nak0Fz7odE2/CGVhFKW8F4PKu2THzPcDM+nqW7ct5oCSVFoSumAdylaXB+XlfV0TNwLJDqQR2tNUDDFTsJ2GFioq+lLb5s7dPXW+wHTnnO3SWmYwAqJkYa2rNlpVYN/4rfNbRXJcZLqLOmXbGHgJdMjLK0xLypHsX7s3TXnrcCOH0Lll4SIrlBl5sadtUzH/WjeNSmlxVAYjRTczYy0bs2pv+pYXrMj1pf2fSyBph/Ih0CsNbG+N8a3ufLeIttj1wAJ9zrllXQ/paBZZYBfv6rpEZXziLZ/FgduQAuLyWxNtmU27i3GWN3ROpLm1rr90A3s4YrthOwyyQIAzsCqV4zqemmzT2BK01DVyTfOMm3js6xzZfqbR1hlqZvAJdv6soLAGe8SWmzL1vvZAXTPd9XgA5EzXkeRJNdAzBv8KP4gG44HV3fAeYh1oGu2bQwP+dH8fs6oUw0hQB0IDwxDkby4zf54nrGb6qPTYLpagsDSAI0qkOd/XPWPlk3bKFPoTwh8tQWOoE8wXRrBwC6V6oo3WACRV1Z3b6LfgL/ALy9JUD5S/MIAAAAAElFTkSuQmCC",
+      map: {},
+      coordinates: [],
+      icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF3SURBVDhPvZTBK4RBGIe/z56UklDay+6JkhM3RYo/wVlOrg4uTtyc3JSrg6Lc2CQHp5U7RyVylBBJXD7PO/PO7M43Y3OQp57mfd/fzOz6dlf2LxRFMYLr2hro63io7e/gQI53uKwjA303Cr06CujStcwV1rCHg3Kpgf4E1/CBtsraGTbN4wv24Q0K2/hsy2IFN/FJj6Rhw4zshg2ctGVxodkcfmET+/EVd8zBFISXKH+O1HtSQ92EQD2Bo1rfSggLJmyHoQvNZYK27nKXm3fDGu030I/ZsecDh/DIdCHy9Ti1peceK+6yFGeaLaE8q1UcxllMYR8HxYHtI4IHTO8+oDJvOOA2VfFTpgm2zCagfrejiIZuaaFBhGb+gZfYNYfLEKQeuFDBny7zX50IwvIn1emdTZlDSuq3ua+r41rX8jzL87ypZQyvVLMvGDCoseTuV+EI/kUFEB7bPZ5FjTw6b2dcoxYMGzbznGsUwHzaxp5Hjf6SLPsG2jnZyz2k38wAAAAASUVORK5CYII=",
     };
   },
 
@@ -36,7 +37,7 @@ export default {
         this.getData();
       },
     },
-    data: {
+    map: {
       deep: true,
       handler() {
         this.$nextTick(() => {
@@ -66,10 +67,10 @@ export default {
   },
 
   methods: {
-    handleClick() {
-      this.resetTimer();
-      this.getData();
-    },
+    // handleClick() {
+    //   this.resetTimer();
+    //   this.getData();
+    // },
     handleMouseEnter() {
       this.isMouseOver = true;
     },
@@ -77,14 +78,17 @@ export default {
       this.isMouseOver = false;
     },
     async getData() {
-      this.data = fjMap;
+      let map = mapConfig.getMap(this.orgName);
+      let coordinates = mapConfig.getCoord(this.orgName);
+      this.map = map;
+      this.coordinates = coordinates;
     },
     initMap() {
       this.myChart && this.myChart.dispose();
 
       // 基于准备好的dom,初始化echarts实例
       this.myChart = echarts.init(document.getElementById("map_Chart"));
-      echarts.registerMap("map", this.data);
+      echarts.registerMap("map", this.map);
       let t = this;
       //   this.myChart.hideLoading();
 
@@ -170,8 +174,8 @@ export default {
       //     ],
       //   };
       let option = {
-        tooltip:{
-          trigger:'item'
+        tooltip: {
+          trigger: "item",
         },
         geo: {
           show: true,
@@ -182,12 +186,12 @@ export default {
 
           label: {
             normal: {
-              show: true,
+              show: false,
               color: "#c1b496", //控制地图省市文字颜色
               fontSize: 14,
             },
             emphasis: {
-              show: true,
+              show: false,
               color: "#fff", //悬浮字体颜色
             },
           },
@@ -204,6 +208,7 @@ export default {
               areaColor: "#2B91B730", //选中
             },
             label: {
+              show: false,
               color: "#fff", //悬浮字体颜色
             },
           },
@@ -211,7 +216,7 @@ export default {
             normal: {
               borderWidth: 1, //区域边框宽度
               borderColor: "#3fdaffff", //区域边框颜色
-              areaColor: "#3fdaff30", //区域颜色
+              areaColor: "#3fdaff55", //区域颜色"rgba(23,107,221,0.7)",//
             },
             emphasis: {
               borderWidth: 1,
@@ -246,18 +251,24 @@ export default {
             // 	},
             // },
             label: {
-              // formatter: "{b}",
-              // position: "right",
-              // color:'#fff',
-              show:false
+              formatter: (param) => {
+                return param.name;
+              },
+              position: "top",
+              fontSize:"10",
+              color: "#fff",
+              show: true,
+            },
+            tooltip: {
+              show: false,
             },
             //  tooltip:{
-            //   position: "right",              
+            //   position: "right",
             //   textStyle:{
             //     // color:'#fff',
             //   },
             //   // backgroundColor:'rgba(184,189,192,1)',
-            //   formatter:function(param){               
+            //   formatter:function(param){
             //     return `<div >
             //     <div> ${param.data.name} </div>
             //     <div>履职总数:85 </div>
@@ -267,9 +278,9 @@ export default {
             // },
             itemStyle: {
               color: "#ddb926",
-            },           
+            },
             symbol: this.icon, //自定义图标
-            symbolSize: [40, 40],
+            symbolSize: [10, 10],
             // encode: {
             //   value: 2,
             // },
@@ -280,17 +291,7 @@ export default {
               period: 0,
               number: 0,
             },
-            data: [
-              { name: "三明", value: [117.635001, 26.265444, 10] },
-              { name: "南平", value: [118.178459, 26.635627, 10] },
-              { name: "宁德", value: [119.527082, 26.65924, 10] },
-              { name: "福州", value: [119.306239, 26.075302, 10] },
-              { name: "莆田", value: [119.007558, 25.431011, 10] },
-              { name: "泉州", value: [118.589421, 24.908853, 10] },
-              { name: "龙岩", value: [117.02978, 25.091603, 10] },
-              { name: "厦门", value: [118.11022, 24.490474, 10] },
-              { name: "漳州", value: [117.661801, 24.510897, 10] },
-            ],
+            data: this.coordinates,
           },
         ],
       };
@@ -316,7 +317,7 @@ export default {
 };
 </script>
 
-<style lang="scss" scope>
+<style lang="scss" scoped>
 .content {
   display: flex;
 

+ 224 - 0
src/views/board/charts/org/repor_bycategory.vue

@@ -0,0 +1,224 @@
+<!--  -->
+<template>
+  <div class="chart-template report">
+    <!-- <div class="line"></div> -->
+    <div class="static_info">
+      <div class="content">
+       
+          <div>机构统计</div>
+          <div>
+            <label class="label label1">营业网点:</label>
+            <label class="value">2968</label>
+          </div>
+          <div>
+            <label class="label label1">离行:</label>
+            <label class="value">1202</label>
+          </div>
+          <div>
+            <label class="label label1">监控中心:</label>
+            <label class="value">100</label>
+          </div>
+        
+      </div>
+      <div class="content">
+        <div>达标数</div>
+        <div>
+          <label class="label  label2">达标率:</label>
+          <label class="value">99%</label>
+        </div>
+        <div>
+          <label class="label  label2">GA38-2021:</label>
+          <label class="value">2000</label>
+        </div>
+        <div>
+          <label class="label label2">GA38-2015:</label>
+          <label class="value">1000</label>
+        </div>
+      </div>
+      <div class="content">
+        <div>业务库</div>
+        <div>
+          <label class="label label3">一类库:</label> <label class="value">300</label>
+        </div>
+        <div>
+          <label class="label label3">二类库:</label> <label class="value">457</label>
+        </div>
+        <div>
+          <label class="label label3">三类库:</label> <label class="value">400</label>
+        </div>
+        <div>
+          <label class="label label3">四类库:</label> <label class="value">557</label>
+        </div>
+      </div>
+      <div class="content">
+        <div>自助银行</div>
+        <div>
+          <label class="label label4">离行式:</label> <label class="value">2100</label>
+        </div>
+        <div>
+          <label class="label label4">在行式:</label> <label class="value">1900</label>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import "./../../board.scss";
+export default {
+  props: ["orgId"],
+  data() {
+    return {
+      data: {
+        // safetyCheck: {},
+        // edu: {},
+        // drill: {},
+        // monitor: {},
+        // visit: {},
+      },
+    };
+  },
+
+  components: {},
+
+  computed: {},
+
+  watch: {
+    orgId: {
+      deep: true,
+      handler(val) {
+        this.getData();
+      },
+    },
+  },
+
+  created() {
+    // this.types = types;
+    // this.maxDisplay = 16;
+    // this.refreshTime = 1 * 10 * 1000;
+    // this.isMouseOver = false;
+  },
+
+  async mounted() {
+    window.addEventListener("resize", this.windowResize);
+  },
+  beforeDestroy() {
+    // this.timer && clearInterval(this.timer);
+    // this.timer = null;
+
+    window.removeEventListener("resize", this.windowResize);
+  },
+
+  methods: {
+    // handleClick() {
+    //   this.getData();
+    // },
+    handleMouseEnter() {
+      this.isMouseOver = true;
+    },
+    handleMouseLeave() {
+      this.isMouseOver = false;
+    },
+    async getData() {
+      let bs = parseInt(this.activeName) + 1;
+      this.data = {
+        safetyCheck: {
+          all: 18 * bs,
+          completed: 16 * bs,
+        },
+        edu: { all: 2 * bs, completed: 1 * bs },
+        drill: { all: 3 * bs, completed: 2 * bs },
+        monitor: { all: 66 * bs, completed: 65 * bs },
+        visit: {
+          times: 5 * bs,
+          personCount: 6 * bs,
+          accompanyCount: 2 * bs,
+        },
+      };
+    },
+
+    windowResize() {
+      this.myChart && this.myChart.resize();
+    },    
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.report {
+  background-image: linear-gradient(
+    to right,
+    rgba(27, 33, 57, 0.8) 0%,
+    rgba(32, 49, 99, 0.6) 50%,
+    rgba(27, 33, 57, 0.8) 100%
+  );
+  margin-top: 15px;
+  width: calc(100% - 0px);
+  margin-left: 1px;
+  border-top: 3px solid;
+  border-image: linear-gradient(
+      to right,
+      rgba(27, 33, 57, 0.8) 20%,
+      rgba(101, 219, 229, 1) 50%,
+      rgba(27, 33, 57, 0.8) 80%
+    )
+    3;
+}
+
+.static_info {
+  height: calc(100%);
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  margin: 5px;
+}
+.content {
+  display: flex;
+  flex-direction: column;
+  width: 25%;
+  text-align: center;
+  border-right: 2px solid;
+  border-image: linear-gradient(
+      to bottom,
+      rgba(27, 33, 57, 0.8) 15%,
+      rgba(101, 219, 229, 1) 50%,
+      rgba(27, 33, 57, 0.8) 85%
+    )
+    2;
+  font-size: 14px;
+  & > div {
+    margin-top: 5px;
+    
+  }
+
+  ::v-deep .label {
+    display: inline-block;
+   
+    text-align: right;
+    color: inherit;
+  
+  }
+  ::v-deep .label1{
+    width: 80px;
+  }
+
+  ::v-deep .label2{
+    width: 90px;
+  }
+  ::v-deep .label3{
+    width: 60px;
+  }
+  ::v-deep .label4{
+    width: 60px;
+  }
+
+  ::v-deep .value {
+    // margin-left: 10px;
+    display: inline-block;
+    color: inherit;
+  }
+}
+
+.content:last-child {
+  border: none;
+}
+</style>

+ 187 - 118
src/views/board/charts/org/report.vue

@@ -1,81 +1,41 @@
 <!--  -->
 <template>
-  <div
-    class="chart-template"
-  >
-    <p>机构统计</p>    
-    <div>
-      <div class="content">       
-        <span> 行社 56 </span>
-        <span> 营业网点 2968 </span>
-        <span> 离行 1202 </span>
-        <span> 监控中心 100 </span>
-      </div>
-      <div class="content">
-        <span> 达标数 3000 </span>
-        <span> GA38-2021 2000  </span>
-        <span> GA38-2015 1000 </span>
-      </div>
-      <div class="content">
-        <span> 业务库 2101 </span>
-        <span> 一类库 300 </span>
-        <span> 二类库 457 </span>
-        <span> 三类库 400 </span>
-        <span> 四类库 557 </span>
-      </div>
+  <div class="chart-template report">
+    <!-- <div class="line"></div> -->
+    <div class="static_info">
+      <div class="title">GA38达标统计</div>
       <div class="content">
-        <span> 自助银行 4000 </span>
-        <span> 离行式自助银行  2100 </span>
-        <span> 在行式自助银行 1900 </span>
+        <div>
+          <div v-for="item in data[0]">
+            {{ item.orgName }},达标率:{{ item.reachRate * 100 + "%" }}
+          </div>
+        </div>
+        <div>
+          <div v-for="item in data[1]">
+            {{ item.orgName }},达标率:{{ item.reachRate * 100 + "%" }}
+          </div>
+        </div>
+        <div>
+          <div v-for="item in data[2]">
+            {{ item.orgName }},达标率:{{ item.reachRate * 100 + "%" }}
+          </div>
+        </div>
+        <!-- <div><div v-for="item in data[3]">{{item.orgName}},达标率:{{item.rate*100+'%'}}</div></div> -->
       </div>
-      
     </div>
-    <!-- <div id="commAlarmEvent_Chart"></div> -->
   </div>
 </template>
 <script>
 import "./../../board.scss";
-import * as echarts from "echarts";
-import {
-  findMaxIndex,
-  getChartDOMSize,
-  getNextPeriod,
-  getPeriodText,
-} from "../../utils.js";
-const types = [
-  {
-    text: "今天",
-    value: "0",
-  },
-  {
-    text: "近7天",
-    value: "1",
-  },
-  {
-    text: "近30天",
-    value: "2",
-  },
-  {
-    text: "近90天",
-    value: "3",
-  },
-  {
-    text: "本年",
-    value: "4",
-  },
-];
+import { orgGA38 } from "@/api/board/cockpit.js";
+
 export default {
   props: ["orgId"],
   data() {
     return {
       data: {
-        safetyCheck: {},
-        edu: {},
-        drill: {},
-        monitor: {},
-        visit: {},
+        data: [],
       },
-      activeName: types[0].value,
     };
   },
 
@@ -87,34 +47,32 @@ export default {
     orgId: {
       deep: true,
       handler(val) {
-        this.resetTimer();
         this.getData();
       },
-    },   
+    },
   },
 
   created() {
-    this.types = types;
-    this.maxDisplay = 16;
-    this.refreshTime = 1 * 10 * 1000;
-    this.isMouseOver = false;
+    // this.types = types;
+    // this.maxDisplay = 16;
+    // this.refreshTime = 1 * 10 * 1000;
+    // this.isMouseOver = false;
   },
 
   async mounted() {
     window.addEventListener("resize", this.windowResize);
   },
   beforeDestroy() {
-    this.timer && clearInterval(this.timer);
-    this.timer = null;
+    // this.timer && clearInterval(this.timer);
+    // this.timer = null;
 
     window.removeEventListener("resize", this.windowResize);
   },
 
   methods: {
-    handleClick() {
-      this.resetTimer();
-      this.getData();
-    },
+    // handleClick() {
+    //   this.getData();
+    // },
     handleMouseEnter() {
       this.isMouseOver = true;
     },
@@ -122,65 +80,176 @@ export default {
       this.isMouseOver = false;
     },
     async getData() {
-      let bs = parseInt(this.activeName) + 1;
-      this.data = {
-        safetyCheck: {
-          all: 18 * bs,
-          completed: 16 * bs,
-        },
-        edu: { all: 2 * bs, completed: 1 * bs },
-        drill: { all: 3 * bs, completed: 2 * bs },
-        monitor: { all: 66 * bs, completed: 65 * bs },
-        visit: {
-          times: 5 * bs,
-          personCount: 6 * bs,
-          accompanyCount: 2 * bs,
-        },
-      };
+      // let bs = parseInt(this.activeName) + 1;
+      // let data = [
+      //   {
+      //     orgName: "福州地区行社",
+      //     all: 500,
+      //     rate: 0.99,
+      //   },
+      //   {
+      //     orgName: "漳州地区行社",
+      //     all: 500,
+      //     rate: 0.96,
+      //   },
+      //   {
+      //     orgName: "泉州地区行社",
+      //     all: 500,
+      //     rate: 0.99,
+      //   },
+      //   {
+      //     orgName: "三明地区行社",
+      //     all: 500,
+      //     rate: 0.98,
+      //   },
+      //   {
+      //     orgName: "南平地区行社",
+      //     all: 500,
+      //     rate: 0.97,
+      //   },
+      //   {
+      //     orgName: "宁德地区行社",
+      //     all: 500,
+      //     rate: 0.98,
+      //   },
+      // ];
+
+      // let columnCount = 3;
+      let r = await orgGA38(this.orgId);
+      this.data = [];
+
+      for (let i in r) {
+        let columnIndex = i % columnCount;
+        if (!this.data[columnIndex]) {
+          this.data[columnIndex] = [];
+        }
+        data[i].orgName = parseInt(i) + 1 + "." + data[i].orgName;
+        this.data[columnIndex].push(data[i]);
+      }
+
+      console.info(this.data);
     },
 
     windowResize() {
       this.myChart && this.myChart.resize();
     },
-
-    resetTimer() {
-      this.timer && clearInterval(this.timer);
-      this.timer = setInterval(() => {
-        if (this.isMouseOver) {
-          return;
-        }
-        this.activeName = getNextPeriod(this.types, this.activeName);
-        this.getData();
-      }, this.refreshTime);
-    },
   },
 };
 </script>
 
-<style lang="scss" scope>
-.content {
-  display: flex;
+<style lang="scss" scoped>
+.report {
+  background-image: linear-gradient(
+    to right,
+    rgba(27, 33, 57, 0.8) 0%,
+    rgba(32, 49, 99, 0.6) 50%,
+    rgba(27, 33, 57, 0.8) 100%
+  );
+  margin-top: 15px;
+  width: calc(100% - 0px);
+  margin-left: 1px;
+  border-top: 3px solid;
+  border-image: linear-gradient(
+      to right,
+      rgba(27, 33, 57, 0.8) 20%,
+      rgba(101, 219, 229, 1) 50%,
+      rgba(27, 33, 57, 0.8) 80%
+    )
+    3;
+}
 
-  margin-bottom: 20px;
-  margin-left: 5px;
-  margin-right: 5px;
-  border: solid 1px #b8bdc088;
+.static_info {
+  height: calc(100%);
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  margin: 5px;
 
-  & > span {
-    margin-right: 10px;
-    padding-top: 5px;
-    padding-bottom: 5px;
+  ::v-deep .title {
+    width: 100%;
     height: 30px;
-    color: rgb(245, 245, 245);
-    font-size: 14px;
+    text-align: center;
+    font-size: 16px;
   }
 
-  & > span:first-child {
-    width: 100px;
-    background-color: #b8bdc088;
-    text-align: center;
+  ::v-deep .content {
+    width: 100%;
+    height: calc(100% - 30px);
+    display: flex;
+    flex-direction: row;
+
+    & > div {
+      display: flex;
+      flex-direction: column;
+      width: 33.34%;
+      height: 100%;
+      border-right: 2px solid;
+      border-image: linear-gradient(
+          to bottom,
+          rgba(27, 33, 57, 0.8) 15%,
+          rgba(101, 219, 229, 1) 50%,
+          rgba(27, 33, 57, 0.8) 85%
+        )
+        2;
+      font-size: 14px;
+
+      & > div {
+        margin-top: 5px;
+        margin-left: 20px;
+      }
+    }
+
+    & > div:last-child {
+      border: none;
+    }
   }
 }
+// .content {
+//   display: flex;
+//   flex-direction: column;
+//   width: 25%;
+//   text-align: center;
+//   border-right: 2px solid;
+//   border-image: linear-gradient(
+//       to bottom,
+//       rgba(27, 33, 57, 0.8) 15%,
+//       rgba(101, 219, 229, 1) 50%,
+//       rgba(27, 33, 57, 0.8) 85%
+//     )
+//     2;
+//   font-size: 14px;
+//   & > div {
+//     margin-top: 5px;
+//   }
 
+//   ::v-deep .label {
+//     display: inline-block;
 
+//     text-align: right;
+//     color: inherit;
+//   }
+//   ::v-deep .label1 {
+//     width: 80px;
+//   }
+
+//   ::v-deep .label2 {
+//     width: 90px;
+//   }
+//   ::v-deep .label3 {
+//     width: 60px;
+//   }
+//   ::v-deep .label4 {
+//     width: 60px;
+//   }
+
+//   ::v-deep .value {
+//     // margin-left: 10px;
+//     display: inline-block;
+//     color: inherit;
+//   }
+// }
+
+.content:last-child {
+  border: none;
+}
 </style>

+ 1 - 1
src/views/board/charts/otherTask/report.vue

@@ -170,7 +170,7 @@ export default {
 };
 </script>
 
-<style lang="scss" scope>
+<style lang="scss" scoped >
 .content {
   display: flex;
 

+ 27 - 26
src/views/board/charts/question/report.vue

@@ -27,26 +27,27 @@ import {
   getNextPeriod,
   getPeriodText,
 } from "../../utils.js";
+import { question } from "@/api/board/cockpit.js";
 const types = [
   {
     text: "今天",
-    value: "0",
+    value: "1",
   },
   {
     text: "近7天",
-    value: "1",
+    value: "2",
   },
   {
     text: "近30天",
-    value: "2",
+    value: "3",
   },
   {
     text: "近90天",
-    value: "3",
+    value: "4",
   },
   {
     text: "本年",
-    value: "4",
+    value: "5",
   },
 ];
 export default {
@@ -112,15 +113,17 @@ export default {
       this.isMouseOver = false;
     },
     async getData() {
-      let bs = parseInt(this.activeName) + 1;
-      this.data = {
-        all: 500*bs,
-        unconfirm: 112*bs, //未确认
-        auditing: 20*bs, //异议审批中
-        unreform: 50*bs, //待整改
-        notQuestion: 4*bs,
-        reformed: (500 - 112 - 20 - 50 - 4)*bs,
-      };
+      // let bs = parseInt(this.activeName) + 1;
+      // this.data = {
+      //   all: 500*bs,
+      //   unconfirm: 112*bs, //未确认
+      //   auditing: 20*bs, //异议审批中
+      //   unreform: 50*bs, //待整改
+      //   notQuestion: 4*bs,
+      //   reformed: (500 - 112 - 20 - 50 - 4)*bs,
+      // };
+      let r = question({ orgId: this.orgId, period: this.activeName });
+      this.data = r;
     },
 
     windowResize() {
@@ -130,9 +133,7 @@ export default {
       this.myChart && this.myChart.dispose();
 
       // 基于准备好的dom,初始化echarts实例
-      this.myChart = echarts.init(
-        document.getElementById("question_Chart")
-      );
+      this.myChart = echarts.init(document.getElementById("question_Chart"));
 
       let chartData = [
         {
@@ -171,21 +172,21 @@ export default {
           orient: "vertical",
           right: 10,
           top: 20,
-          bottom: 20,         
-          data: chartData.map((d) =>d.name),
-          formatter:function(name) {
-            let d=chartData.find(c=>c.name===name);
-            return d.name+"  "+d.value+"项";            
+          bottom: 20,
+          data: chartData.map((d) => d.name),
+          formatter: function (name) {
+            let d = chartData.find((c) => c.name === name);
+            return d.name + "  " + d.value + "项";
+          },
+          textStyle: {
+            color: "white",
           },
-          textStyle:{
-            color:'white',
-          }
         },
         series: [
           {
             name: "问题整改",
             type: "pie",
-            radius: ["65%","85%"],
+            radius: ["65%", "85%"],
             center: ["30%", "50%"],
             data: chartData,
             label: {

+ 329 - 0
src/views/board/charts/resumption/report_bar.vue

@@ -0,0 +1,329 @@
+<!--  -->
+<template>
+  <div class="chart-template chart-template-withperiod">
+    <p>
+      <span> {{ title }} </span>
+    </p>
+    <div>
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane
+          v-for="t in types"
+          :key="t.value"
+          :label="t.text"
+          :name="t.value"
+        ></el-tab-pane>
+      </el-tabs>
+    </div>
+    <div ref="chart"></div>
+  </div>
+</template>
+
+<script>
+import "./../../board.scss";
+import * as echarts from "echarts";
+import {
+  findMaxIndex,
+  getChartDOMSize,
+  getNextPeriod,
+  getPeriodText,
+} from "../../utils.js";
+const types = [
+  {
+    text: "今天",
+    value: "1",
+  },
+  {
+    text: "近7天",
+    value: "2",
+  },
+  {
+    text: "近30天",
+    value: "3",
+  },
+  {
+    text: "近90天",
+    value: "4",
+  },
+  {
+    text: "本年",
+    value: "5",
+  },
+];
+export default {
+  props: {
+    orgId: {
+      type: String,
+      isRequired: true,
+    },
+    title: {
+      type: String,
+      isRequired: true,
+    },
+    api: {
+      type: Function,
+      isRequired: true,
+    },
+  },
+  data() {
+    return {
+      data: {
+        all: [],
+        completed: [],
+        name: [],
+      },
+      activeName: types[0].value,
+    };
+  },
+
+  components: {},
+
+  computed: {},
+
+  watch: {
+    orgId: {
+      deep: true,
+      handler(val) {
+        this.resetTimer();
+        this.getData();
+      },
+    },
+    data: {
+      deep: true,
+      handler() {
+        this.initMap();
+      },
+    },
+  },
+
+  created() {
+    this.types = types;
+    this.maxDisplay = 16;
+    this.refreshTime = 1 * 10 * 1000;
+    this.isMouseOver = false;
+  },
+
+  async mounted() {
+    window.addEventListener("resize", this.windowResize);
+  },
+  beforeDestroy() {
+    this.timer && clearInterval(this.timer);
+    this.timer = null;
+
+    window.removeEventListener("resize", this.windowResize);
+  },
+
+  methods: {
+    handleClick() {
+      this.resetTimer();
+      this.getData();
+    },
+    handleMouseEnter() {
+      this.isMouseOver = true;
+    },
+    handleMouseLeave() {
+      this.isMouseOver = false;
+    },
+    async getData() {
+      let r = await this.api({ orgId: this.orgId, period: this.activeName });
+      let data = {
+        all: [],
+        completed: [],
+        rate:[],
+        name: [],
+      };
+
+      for(let item of data){
+        data.all.push(item.taskTotal);
+        data.completed.push(item.completedCount);
+        data.rate.push((item.completedRate*100).toFixed(0))
+        data.name.push(item.orgName)
+      }
+      this.data=data;
+      // let bs = parseInt(this.activeName) + 1;
+      // this.data = {
+      //   all: [
+      //     210 * bs,
+      //     101 * bs,
+      //     117 * bs,
+      //     78 * bs,
+      //     107 * bs,
+      //     105 * bs,
+      //     210 * bs,
+      //     101 * bs,
+      //     117 * bs,
+      //     78 * bs,
+      //     107 * bs,
+      //     105 * bs,
+      //   ],
+      //   completed: [
+      //     155 * bs,
+      //     99 * bs,
+      //     110 * bs,
+      //     78 * bs,
+      //     104 * bs,
+      //     102 * bs,
+      //     155 * bs,
+      //     99 * bs,
+      //     110 * bs,
+      //     78 * bs,
+      //     104 * bs,
+      //     102 * bs,
+      //   ],
+      //   name: [
+      //     "福州地区行社",
+      //     "漳州地区行社",
+      //     "泉州地区行社",
+      //     "三明地区行社",
+      //     "南平地区行社",
+      //     "宁德地区行社",
+      //     "福州地区行社",
+      //     "漳州地区行社",
+      //     "泉州地区行社",
+      //     "三明地区行社",
+      //     "南平地区行社",
+      //     "宁德地区行社",
+      //   ],
+      // };
+      // this.data.rate = [];
+      // this.data.all.forEach((v, i) => {
+      //   this.data.rate[i] = (this.data.completed[i] / this.data.all[i]) * 100;
+      // });
+      console.info(this.data);
+    },
+
+    windowResize() {
+      this.myChart && this.myChart.resize();
+    },
+    initMap() {
+      this.myChart && this.myChart.dispose();
+      let c = this.$refs["chart"];
+
+      // 基于准备好的dom,初始化echarts实例
+      this.myChart = echarts.init(
+        c
+        // document.getElementById("commAlarmEvent_Chart")
+      );
+
+      let t = this;
+      // 指定图表的配置项和数据
+      var option = {
+        //  color: ["#82D5AE"],
+        tooltip: {
+          trigger: "axis",
+          confine: true,
+          axisPointer: {
+            type: "shadow",
+          },
+          formatter: "{c}%",
+        },
+        legend: {
+          show: false,
+          textStyle: {
+            color: "rgb(245, 245, 245)",
+          },
+        },
+        grid: {
+          left: "3%",
+          right: "4%",
+          bottom: "2%",
+          top: "20px",
+          containLabel: true,
+        },
+
+        xAxis: [
+          {
+            type: "category",
+            data: this.data.name,
+            // data: this.mapdata.totalDataVo.xlist,
+            axisTick: {
+              alignWithLabel: true,
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                type: "solid",
+                color: "rgb(245, 245, 245)", //左边线的颜⾊
+              },
+            },
+            axisLabel: {
+              interval: 0,
+              rotate: -30,
+              fontSize: 12,
+              color: "#fff",
+            },
+          },
+        ],
+        yAxis: [
+          {
+            type: "value",
+            minInterval: 1,
+            // max: function (value) {
+            //   let m = value.max == Math.ceil(value.max) ? Math.ceil(value.max * 1.0001) : Math.ceil(value.max);
+            //   return m
+            // },
+          },
+        ],
+        series: [
+          // {
+          //   name: "总数",
+          //   type: "bar",
+          //   barWidth: "14",
+          //   // label: {
+          //   //   show: true,
+          //   //   position: 'top',
+          //   // },
+          //   data: this.data.all,
+          // },
+          {
+            name: "完成率",
+            type: "bar",
+            barWidth: "14",
+            // label: {
+            //   show: true,
+            //   position: 'top',
+            // },
+            data: this.data.rate,
+            itemStyle: {
+              normal: {
+                label: {
+                  formatter: function (param) {
+                    // if (t.data.all[param.dataIndex]) {
+                    //   let rate = param.value / t.data.all[param.dataIndex];
+                    //   return (Math.floor(rate * 1000) / 10).toFixed(1) + "%";
+                    // } else {
+                    //   return "";
+                    // }
+                    return param.value.toFixed(0) + "%";
+                  },
+                  show: true,
+                  position: "top",
+                  textStyle: {
+                    fontWeight: "bolder",
+                    fontSize: "12",
+                    color: "rgb(245, 245, 245)",
+                  },
+                },
+              },
+            },
+          },
+        ],
+      };
+      if (option && typeof option === "object") {
+        this.myChart.setOption(option);
+      }
+    },
+
+    resetTimer() {
+      this.timer && clearInterval(this.timer);
+      this.timer = setInterval(() => {
+        if (this.isMouseOver) {
+          return;
+        }
+        this.activeName = getNextPeriod(this.types, this.activeName);
+        this.getData();
+      }, this.refreshTime);
+    },
+  },
+};
+</script>
+<style lang="less" scoped></style>

+ 51 - 40
src/views/board/charts/resumption/report.vue → src/views/board/charts/resumption/report_line.vue

@@ -2,7 +2,7 @@
 <template>
   <div class="chart-template chart-template-withperiod">
     <p>
-      <span> {{title}} </span>
+      <span> {{ title }} </span>
     </p>
     <div>
       <el-tabs v-model="activeName" @tab-click="handleClick">
@@ -14,7 +14,7 @@
         ></el-tab-pane>
       </el-tabs>
     </div>
-    <div ref='chart'></div>
+    <div ref="chart"></div>
   </div>
 </template>
 
@@ -29,36 +29,28 @@ import {
 } from "../../utils.js";
 const types = [
   {
-    text: "今天",
-    value: "0",
-  },
-  {
     text: "近7天",
     value: "1",
   },
   {
-    text: "近30天",
+    text: "近七周",
     value: "2",
   },
   {
-    text: "近90天",
+    text: "近七月",
     value: "3",
   },
-  {
-    text: "本年",
-    value: "4",
-  },
 ];
 export default {
   props: {
-    orgId:{
-      type:String,
-      isRequired:true
+    orgId: {
+      type: String,
+      isRequired: true,
+    },
+    title: {
+      type: String,
+      isRequired: true,
     },
-    title:{
-      type:String,
-      isRequired:true
-    }
   },
   data() {
     return {
@@ -78,7 +70,7 @@ export default {
   watch: {
     orgId: {
       deep: true,
-      handler(val) {        
+      handler(val) {
         this.resetTimer();
         this.getData();
       },
@@ -122,15 +114,31 @@ export default {
     async getData() {
       let bs = parseInt(this.activeName) + 1;
       this.data = {
-        all: [210 * bs, 101 * bs, 117 * bs, 78 * bs, 107 * bs, 105 * bs],
-        completed: [155 * bs, 99 * bs, 110 * bs, 78 * bs, 104 * bs, 102 * bs],
-        name: ["福州", "漳州", "泉州", "三明", "南平", "宁德"],
+        all: [
+          210 * bs,
+          101 * bs,
+          117 * bs,
+          78 * bs,
+          107 * bs,
+          105 * bs,
+          124 * bs,
+        ],
+        completed: [
+          155 * bs,
+          99 * bs,
+          110 * bs,
+          78 * bs,
+          104 * bs,
+          102 * bs,
+          115 * bs,
+        ],
+        name: ["10.25", "10.24", "10-23", "10-22", "10-21", "10-20", "10-19"],
       };
-      this.data.rate=[];
-      this.data.all.forEach((v,i)=>{
-        this.data.rate[i]=this.data.completed[i]/this.data.all[i]*100
-      })
-      console.info(this.data)
+      this.data.rate = [];
+      this.data.all.forEach((v, i) => {
+        this.data.rate[i] = (this.data.completed[i] / this.data.all[i]) * 100;
+      });
+      console.info(this.data);
     },
 
     windowResize() {
@@ -138,31 +146,32 @@ export default {
     },
     initMap() {
       this.myChart && this.myChart.dispose();
-let c=this.$refs["chart"];
+      let chart = this.$refs["chart"];
 
       // 基于准备好的dom,初始化echarts实例
       this.myChart = echarts.init(
-       c
+        chart
         // document.getElementById("commAlarmEvent_Chart")
       );
 
+   
       let t = this;
       // 指定图表的配置项和数据
       var option = {
-        //  color: ["#82D5AE"],
+          color: ["rgb(250,200,88)"],
         tooltip: {
           trigger: "axis",
           confine: true,
           axisPointer: {
             type: "shadow",
           },
-          formatter:"{c}%"
+          formatter: "{c}%",
         },
         legend: {
-          show:true,
-          textStyle:{
-           color:"rgb(245, 245, 245)"
-          }
+          show: true,
+          textStyle: {
+            color: "rgb(245, 245, 245)",
+          },
         },
         grid: {
           left: "3%",
@@ -191,7 +200,7 @@ let c=this.$refs["chart"];
               interval: 0,
               rotate: -30,
               fontSize: 12,
-              color: "#fff",
+              // color: "#fff",
             },
           },
         ],
@@ -199,6 +208,8 @@ let c=this.$refs["chart"];
           {
             type: "value",
             minInterval: 1,
+            min:Math.min(...this.data.rate,50),
+            max:100,
             // max: function (value) {
             //   let m = value.max == Math.ceil(value.max) ? Math.ceil(value.max * 1.0001) : Math.ceil(value.max);
             //   return m
@@ -218,7 +229,7 @@ let c=this.$refs["chart"];
           // },
           {
             name: "完成率",
-            type: "bar",
+            type: "line",
             barWidth: "14",
             // label: {
             //   show: true,
@@ -235,7 +246,7 @@ let c=this.$refs["chart"];
                     // } else {
                     //   return "";
                     // }
-                    return param.value.toFixed(1) + "%"
+                    return param.value.toFixed(1) + "%";
                   },
                   show: true,
                   position: "top",
@@ -254,7 +265,7 @@ let c=this.$refs["chart"];
         this.myChart.setOption(option);
       }
     },
-   
+
     resetTimer() {
       this.timer && clearInterval(this.timer);
       this.timer = setInterval(() => {

+ 166 - 166
src/views/board/index.vue

@@ -13,12 +13,9 @@
           :show-all-levels="false"
           class="org-cascader"
           popper-class="board-org-popper"
+          @change="handOrgChange"
+          ref="orgCascader"
         ></el-cascader>
-        <!-- <orgDropDown
-          v-model="selectedOrg.orgId"
-          style="width: 250px"
-          @nodeChanged="handleOrgNodeClick"
-        ></orgDropDown> -->
       </div>
       <div class="title">
         <span>移动安全保卫管理平台项目</span>
@@ -31,36 +28,36 @@
     <div class="main">
       <div>
         <div>
-          <resumptionReport :orgId="selectedOrg.id" title="日常安全履职"/>
+          <resumptionReport :orgId="selectedOrg.id" :api="api.resumption" title="日常安全履职" />
         </div>
-        <!-- <div>
-          <otherTask :orgId="selectedOrg.id" />
-        </div> -->
         <div>
-          <resumptionReport :orgId="selectedOrg.id" title="监控调阅"/>
+          <resumptionReport :orgId="selectedOrg.id"  :api="api.monitor"  title="监控调阅" />
         </div>
         <div>
-          <resumptionReport :orgId="selectedOrg.id" title="日常安全检查"/>
+          <resumptionReport :orgId="selectedOrg.id"  :api="api.safetyCheck" title="日常安全检查" />
         </div>
       </div>
       <div>
-        <div class="box">
-          <mapChart :orgId="selectedOrg.id" />
-        </div>
         <div>
-          <orgStatis :orgId="selectedOrg.id" />
+          <div>
+            <mapChart :orgId="selectedOrg.id" :orgName="selectedOrg.name" />
+          </div>
+          <div>
+            <orgStatis :orgId="selectedOrg.id" />
+          </div>
         </div>
       </div>
       <div>
         <div>
-          <resumptionReport :orgId="selectedOrg.id" title="预案演练"/>
+          <question :orgId="selectedOrg.id" />
         </div>
         <div>
-          <resumptionReport :orgId="selectedOrg.id" title="教育培训"/>
+          <resumptionReport :orgId="selectedOrg.id"  :api="api.drill"  title="预案演练" />
         </div>
-        <div>          
-            <question :orgId="selectedOrg.id" />
+        <div>
+          <resumptionReport :orgId="selectedOrg.id" :api="api.edu"  title="教育培训" />
         </div>
+       
         <!-- <div>
           <div>
             <safetyIndex :orgId="selectedOrg.id" />
@@ -73,14 +70,12 @@
 
 <script>
 import { mapGetters } from "vuex";
-import resumptionReport from "./charts/resumption/report.vue";
-import otherTask from "./charts/otherTask/report.vue";
+import resumptionReport from "./charts/resumption/report_bar.vue";
 import question from "./charts/question/report.vue";
-import safetyIndex from "./charts/safetyIndex/report.vue";
 import mapChart from "./charts/map/report.vue";
 import orgStatis from "./charts/org/report.vue";
-import orgDropDown from "@/components/orgTree/orgDropDown.vue";
 import dayjs from "dayjs";
+import * as api from '@/api/board/cockpit.js'
 
 import "./board.scss";
 export default {
@@ -93,23 +88,22 @@ export default {
       activeIndex: "0",
       selectedOrg: {
         id: null,
+        name: null,
       },
       electricHost: undefined,
+      api
     };
   },
 
   components: {
-    orgDropDown,
     resumptionReport,
-    otherTask,
     question,
-    safetyIndex,
     mapChart,
     orgStatis,
   },
 
   computed: {
-    ...mapGetters(["orgId", "depTree"]),
+    ...mapGetters(["orgId", "depTree", "orgName"]),
     orgOptions() {
       let deps = this.depTree;
       let recursion = (deps) => {
@@ -127,7 +121,7 @@ export default {
         }
       };
       recursion(deps);
-      console.info(deps);
+      // console.info(deps);
       return deps;
     },
   },
@@ -169,7 +163,10 @@ export default {
     //     }, 1 * 60 * 60 * 1000);
     //   });
     // });
-    this.selectedOrg.id = this.orgId;
+    this.selectedOrg = {
+      id: this.orgId,
+      name: this.orgName,
+    };
   },
   beforeDestroy() {
     clearInterval(this.orgtimer);
@@ -195,148 +192,153 @@ export default {
           return "星期日";
       }
     },
-    handleOrgNodeClick(org) {
-      this.selectedOrg = { ...org };
+    handOrgChange(id, m, n) {
+      let checked = this.$refs["orgCascader"].getCheckedNodes(true);
+      if (!checked || checked.length === 0) {
+        return;
+      }
+
+      this.selectedOrg = { ...checked[0].data };
     },
     // handleSelect(e) {
     //   var item = this.branchlist.find((o) => o.orgId === parseInt(e));
     //   this.activeIndex = e;
     //   this.selectedOrg = { ...item };
     // },
-    async getOrgList(currentUserOrgId) {
-      let r = await getOrgList();
-      if (r.ret === 2) {
-        this.exitSys();
-      } else if (r.ret != 1) {
-        this.$notify.error({
-          message: `获取机构列表错误:${r.errorMsg}`,
-          duration: 20 * 1000,
-        });
-
-        return;
-      }
+    // async getOrgList(currentUserOrgId) {
+    //   let r = await getOrgList();
+    //   if (r.ret === 2) {
+    //     this.exitSys();
+    //   } else if (r.ret != 1) {
+    //     this.$notify.error({
+    //       message: `获取机构列表错误:${r.errorMsg}`,
+    //       duration: 20 * 1000,
+    //     });
+
+    //     return;
+    //   }
 
-      let { data } = r;
-      Vue.prototype.$treeList = data;
-      const tree = this.genDropdownTree(data, currentUserOrgId);
-      if (tree && tree.length > 0) {
-        this.selectedOrg = {
-          orgId: tree[0].id,
-          name: tree[0].label,
-        };
-      }
-      this.orgTree = tree;
-
-      let top = data.find((d) => !data.find((d2) => d2.orgId == d.parentId));
-      if (!top) {
-        this.$$notify.error({
-          message: "未找到顶级机构",
-          duration: 20 * 1000,
-        });
-        return;
-      }
+    //   let { data } = r;
+    //   Vue.prototype.$treeList = data;
+    //   const tree = this.genDropdownTree(data, currentUserOrgId);
+    //   if (tree && tree.length > 0) {
+    //     this.selectedOrg = {
+    //       orgId: tree[0].id,
+    //       name: tree[0].label,
+    //     };
+    //   }
+    //   this.orgTree = tree;
+
+    //   let top = data.find((d) => !data.find((d2) => d2.orgId == d.parentId));
+    //   if (!top) {
+    //     this.$$notify.error({
+    //       message: "未找到顶级机构",
+    //       duration: 20 * 1000,
+    //     });
+    //     return;
+    //   }
 
-      let branchlist = [];
-      if (
-        top.orgType != dictionary.orgType.firstLevelBranchType &&
-        top.orgType != dictionary.orgType.secondLevelBranchType &&
-        top.orgType != dictionary.orgType.subBranchType
-      ) {
-        this.$$notify.error({
-          message: "不支持机构类型" + top.orgType,
-          duration: 20 * 1000,
-        });
-        return;
-      }
+    //   let branchlist = [];
+    //   if (
+    //     top.orgType != dictionary.orgType.firstLevelBranchType &&
+    //     top.orgType != dictionary.orgType.secondLevelBranchType &&
+    //     top.orgType != dictionary.orgType.subBranchType
+    //   ) {
+    //     this.$$notify.error({
+    //       message: "不支持机构类型" + top.orgType,
+    //       duration: 20 * 1000,
+    //     });
+    //     return;
+    //   }
 
-      branchlist.push(top);
-      var subOrgType =
-        top.orgType == dictionary.orgType.firstLevelBranchType
-          ? dictionary.orgType.secondLevelBranchType
-          : top.orgType == dictionary.orgType.secondLevelBranchType
-          ? dictionary.orgType.subBranchType
-          : undefined;
-      let subs = data.filter(
-        (d) => d.orgId != top.orgId && d.orgType == subOrgType
-      );
-
-      this.branchlist = branchlist.concat(subs);
-      if (!this.branchlist || this.branchlist.length === 0) {
-        this.$notify.error({
-          message: "机构列表为空",
-          duration: 20 * 1000,
-        });
-      } else {
-        if (!this.selectedOrg) {
-          this.selectedOrg = {
-            ...this.branchlist[0],
-          };
-        }
-      }
-    },
+    //   branchlist.push(top);
+    //   var subOrgType =
+    //     top.orgType == dictionary.orgType.firstLevelBranchType
+    //       ? dictionary.orgType.secondLevelBranchType
+    //       : top.orgType == dictionary.orgType.secondLevelBranchType
+    //       ? dictionary.orgType.subBranchType
+    //       : undefined;
+    //   let subs = data.filter(
+    //     (d) => d.orgId != top.orgId && d.orgType == subOrgType
+    //   );
+
+    //   this.branchlist = branchlist.concat(subs);
+    //   if (!this.branchlist || this.branchlist.length === 0) {
+    //     this.$notify.error({
+    //       message: "机构列表为空",
+    //       duration: 20 * 1000,
+    //     });
+    //   } else {
+    //     if (!this.selectedOrg) {
+    //       this.selectedOrg = {
+    //         ...this.branchlist[0],
+    //       };
+    //     }
+    //   }
+    // },
 
-    /**生成下拉树 */
-    genDropdownTree(orgList, topOrgId) {
-      const orgTypeConst = dictionary.orgType;
-      const needOrgTypes = [
-        orgTypeConst.firstLevelBranchType,
-        orgTypeConst.secondLevelBranchType,
-        orgTypeConst.subBranchType,
-      ];
-      const topOrg = orgList.find((org) => org.orgId == topOrgId);
-      var top = { id: topOrg.orgId, label: topOrg.orgName, path: topOrg.path };
-      var topTypeIndex = needOrgTypes.indexOf(topOrg.orgType);
-      if (topTypeIndex < 0) {
-        return [];
-      }
+    // /**生成下拉树 */
+    // genDropdownTree(orgList, topOrgId) {
+    //   const orgTypeConst = dictionary.orgType;
+    //   const needOrgTypes = [
+    //     orgTypeConst.firstLevelBranchType,
+    //     orgTypeConst.secondLevelBranchType,
+    //     orgTypeConst.subBranchType,
+    //   ];
+    //   const topOrg = orgList.find((org) => org.orgId == topOrgId);
+    //   var top = { id: topOrg.orgId, label: topOrg.orgName, path: topOrg.path };
+    //   var topTypeIndex = needOrgTypes.indexOf(topOrg.orgType);
+    //   if (topTypeIndex < 0) {
+    //     return [];
+    //   }
 
-      var nodes = [top];
-      if (topTypeIndex == needOrgTypes.length - 1) {
-        return [top];
-      }
+    //   var nodes = [top];
+    //   if (topTypeIndex == needOrgTypes.length - 1) {
+    //     return [top];
+    //   }
 
-      for (var i = topTypeIndex + 1; i < needOrgTypes.length; i++) {
-        let tmpNodes = [];
-        nodes.forEach((item) => {
-          var children = orgList.filter(
-            (org) =>
-              org.path.startsWith(item.path) && org.orgType == needOrgTypes[i]
-          );
-          children = children.map((c) => ({
-            id: c.orgId,
-            label: c.orgName,
-            path: c.path,
-          }));
-
-          tmpNodes = tmpNodes.concat(children);
-          item.children = children;
-        });
-        nodes = tmpNodes;
-      }
+    //   for (var i = topTypeIndex + 1; i < needOrgTypes.length; i++) {
+    //     let tmpNodes = [];
+    //     nodes.forEach((item) => {
+    //       var children = orgList.filter(
+    //         (org) =>
+    //           org.path.startsWith(item.path) && org.orgType == needOrgTypes[i]
+    //       );
+    //       children = children.map((c) => ({
+    //         id: c.orgId,
+    //         label: c.orgName,
+    //         path: c.path,
+    //       }));
+
+    //       tmpNodes = tmpNodes.concat(children);
+    //       item.children = children;
+    //     });
+    //     nodes = tmpNodes;
+    //   }
 
-      return [top];
-    },
+    //   return [top];
+    // },
 
-    exitSys() {
-      this.$alert("确定退出系统吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        showCancelButton: true,
-        callback: (r) => {
-          if (r === "confirm") {
-            logout()
-              .then((r) => {
-                location.href =
-                  Vue.$electricHost + "/security/login/sysCenterMain.html";
-              })
-              .catch((e) => {
-                location.href =
-                  Vue.$electricHost + "/security/login/sysCenterMain.html";
-              });
-          }
-        },
-      });
-    },
+    // exitSys() {
+    //   this.$alert("确定退出系统吗?", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     showCancelButton: true,
+    //     callback: (r) => {
+    //       if (r === "confirm") {
+    //         logout()
+    //           .then((r) => {
+    //             location.href =
+    //               Vue.$electricHost + "/security/login/sysCenterMain.html";
+    //           })
+    //           .catch((e) => {
+    //             location.href =
+    //               Vue.$electricHost + "/security/login/sysCenterMain.html";
+    //           });
+    //       }
+    //     },
+    //   });
+    // },
   },
 };
 </script>
@@ -566,21 +568,19 @@ export default {
       }
 
       & > div:first-child {
-        height: calc(67% - 16px);
+        height: calc(100%);
         display: flex;
-        background-image: none;
         flex-direction: column;
         // padding: 0.5rem 1rem;
         overflow: hidden;
 
-        .box {
+        & > div:first-child {
           width: 100%;
-          height: 58%;
+          height: 80%;
+        }
+        & > div:nth-child(2) {
+          height: calc(20%);
         }
-      }
-
-      & > div:nth-child(2) {
-        height:  calc(33% - 16px);
       }
     }
 
@@ -625,7 +625,7 @@ export default {
 }
 .org-cascader {
   margin-top: -5px;
-  width:180px;
+  width: 180px;
 
   ::v-deep .el-input__inner {
     background-color: transparent !important;

+ 1 - 1
src/views/safetycheck/ruleManager/dialog.editPoint.vue

@@ -34,7 +34,7 @@
               type="textarea"
               :rows="3"
               v-model="formData.name"
-              placeholder="请输入履职内容"
+              placeholder="请输入检查内容"
               maxlength="255"
             ></el-input>
           </el-form-item>

+ 5 - 4
src/views/system/user/extend.vue

@@ -23,11 +23,11 @@
               <el-switch v-model="formData.certificateWork" active-value="1" inactive-value="0"></el-switch>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6">
+          <el-col :xs="24" :sm="12" :md="8" :lg="8">
 
-            <el-form-item label="持证上岗未通过原因" v-if="formData.certificateWork == 0" label-width="180" 
+            <el-form-item label="持证上岗未通过原因" v-if="formData.certificateWork == 0" label-width="240" 
               prop="certificateFailReason">
-              <el-select style="width: 240px;" v-model="formData.certificateFailReason" placeholder="请选择持证上岗未通过原因">
+              <el-select style="width: 280px;" v-model="formData.certificateFailReason" placeholder="请选择持证上岗未通过原因">
                 <el-option v-for="dict in dict.type.post_no_pass" :key="dict.value" :label="dict.label"
                   :value="dict.value" />
               </el-select>
@@ -35,7 +35,8 @@
           </el-col> 
 
           <el-col :xs="24" :sm="12" :md="8" :lg="8">
-            <el-form-item label="初级以上相关专业技术职业资格" v-if="formData.certificateWork != 0" label-width="240" prop="professionalQualifications">
+            <el-form-item label="初级以上相关专业技术职业资格" v-if="formData.certificateWork != 0" label-width="240"
+             prop="professionalQualifications">
               <el-input style="width: 280px;" maxlength="50" v-model="formData.professionalQualifications"
                 placeholder="请输入初级以上相关专业技术职业资格">
               </el-input>

Някои файлове не бяха показани, защото твърде много файлове са промени