Browse Source

personnel

zhangming 3 years ago
parent
commit
99b08f390d
3 changed files with 151 additions and 86 deletions
  1. 37 11
      src/views/HealthControl/Health0.vue
  2. 53 36
      src/views/HealthControl/Health8.vue
  3. 61 39
      src/views/NewPages/personnel.vue

+ 37 - 11
src/views/HealthControl/Health0.vue

@@ -14,6 +14,7 @@
                       clearable
                       placeholder="请选择风场"
                       popper-class="select"
+                      @change="wpselect"
                     >
                       <el-option
                         v-for="item in options"
@@ -33,6 +34,7 @@
                       clearable
                       placeholder="请选择风机"
                       popper-class="select"
+                      @change="wtselect"
                     >
                       <el-option
                         v-for="item in options1"
@@ -45,11 +47,11 @@
                   </div>
                 </div>
               </div>
-              <div class="query-actions">
+              <!-- <div class="query-actions">
                 <button class="btn" type="button">
                   <i class="el-icon-back mg-r-8"></i><span>返回</span>
                 </button>
-              </div>
+              </div> -->
             </div>
           </el-col>
         </el-row>
@@ -59,7 +61,7 @@
               <SvgIcon svgid="svg-wind-site"></SvgIcon>
             </span>
             <div class="fan-code">
-              <div class="fan-code-text font-md green">MG02-01</div>
+              <div class="fan-code-text font-md green">{{value2}}</div>
               <div class="fan-code-label font-md gray-l">高频:</div>
               <div class="fan-code-value font-md green">{{stoptypemap && stoptypemap.top1type}}</div>
               <div class="fan-code-label font-md gray-l">中频:</div>
@@ -71,13 +73,13 @@
               <SvgIcon svgid="svg-wind-site"></SvgIcon>
             </span>
             <div class="fan-code bg">
-              <div class="fan-code-label font-md gray-l">高频:</div>
+              <div class="fan-code-label font-md gray-l">风机评分:</div>
             </div>
             <div class="fan-code">
               <div class="fan-code-value nm font-md green">{{stoptypemap && stoptypemap.wtscore}}</div>
             </div>
             <button class="btn mg-l-16" type="button">
-              <i class="el-icon-s-order mg-r-8"></i><span>健康报告</span>
+              <i class="el-icon-s-order mg-r-8" @click="onClickReport()"></i><span>健康报告</span>
             </button>
           </el-col>
         </el-row>
@@ -97,9 +99,9 @@
           </el-col>
           <el-col :span="6"></el-col>
           <el-col :span="6"></el-col>
-          <el-col :span="6">
+          <!-- <el-col :span="6">
             <progress-bar title="风机" name="风机健康度" :progress='partmap && partmap.fj.smsyl' :color="partmap &&color(partmap.fj.jkzt)"></progress-bar>
-          </el-col>
+          </el-col> -->
         </el-row>
         <el-row>
           <el-col :span="6" class="mg-t-16">
@@ -197,6 +199,7 @@
         </el-row>
       </el-col>
     </el-row>
+    <health-report :show="reportshow" :params="reportparams" @closed="closed"/>
   </div>
 </template>
 
@@ -205,6 +208,7 @@ import SvgIcon from "@com/coms/icon/svg-icon.vue";
 import StandAloneImg from "@/views/WindSite/pages/Info/StandAloneImg.vue";
 import ProgressBar from "@com/coms/progress-bar/progress-bar.vue";
 import Table from "../../components/coms/table/table.vue";
+import HealthReport from "../../components/other/healthReport/index.vue"
 export default {
   setup() {},
   components: {
@@ -212,9 +216,12 @@ export default {
     StandAloneImg,
     ProgressBar,
     Table,
+    HealthReport
   },
   data() {
     return {
+      reportshow: false, //是否显示健康报告
+      reportparams: undefined,
       bsxImg: require("@assets/png/bsx.png"),
       options: [
         {
@@ -707,13 +714,31 @@ export default {
   },
   created() {
       this.search()
-      this.wtid = this.$route.params.wtId;
-      this.wpid = this.$route.params.wpId;
+        this.wtid = this.$route.params.wtId;
+        this.wpid = this.$route.params.wpId;
   },
   methods: {
+    // 查看健康报告
+    onClickReport(){
+      console.warn('查看健康报告');
+      this.reportshow = true
+      this.reportparams = {wtId: this.value2, recorddate: new Date(new Date()).formatDate("yyyy-MM-dd")}
+    },
+    // 关闭健康报告
+    closed(){
+      this.reportshow = false
+    },
       color(val){
      return this.colorval[val]
     },
+    wpselect(){
+      console.warn('wpselect');
+      this.searchWindturbine('select')
+    },
+    wtselect(){
+      console.warn('wtselect');
+      this.searchWtHealthInfo()
+    },
     async search() {
       const { data } = await this.API.requestData({
         subUrl: "powercompare/windfarmAjax",
@@ -722,7 +747,7 @@ export default {
       this.value1 = this.wpid;
       this.searchWindturbine()
     },
-    async searchWindturbine() {
+    async searchWindturbine(statu) {
       const { data } = await this.API.requestData({
         subUrl: "/powercompare/windturbineAjax",
         data:{
@@ -730,13 +755,14 @@ export default {
         }
       });
       this.options1 = data.data;
-      this.value2 = this.wtid;
+      this.value2 = statu =='select' ?data.data[0].id : this.wtid;
       console.warn(data);
      this.searchWtHealthInfo()
     },
     async searchWtHealthInfo() {
       const { data } = await this.API.requestData({
         subUrl: "/healthsub//findWtHealthInfo",
+        showLoading: true,
         method:'POST',
         timeout: 30000, // 请求超时时间,默认 3s ,可缺省
         data:{

+ 53 - 36
src/views/HealthControl/Health8.vue

@@ -58,47 +58,50 @@
         <div style="height: calc(100vh - 174px)">
           <table style="width: 100%" border="0" cellspacing="0">
             <tbody>
-              <tr v-for="(item,index) in tableData" :key="index">
-                <td style="width: 50px">{{item.id}}</td>
-                <td style="width: 105px">{{item.wtname}}</td>
-                <td style="width: 105px">{{item.model}}</td>
+              <tr v-for="(item, index) in tableData" :key="index">
+                <td style="width: 50px">{{ item.id }}</td>
+                <td style="width: 105px">{{ item.wtname }}</td>
+                <td style="width: 105px">{{ item.model }}</td>
                 <td style="width: 350px">
                   <div class="percent-item">
-                    {{item.zxd}}%
+                    {{ item.zxd }}%
                     <div class="percent-bar" style="">
-                      <div class="percent-value" :style="{'width':`${item.zxd}%`}"></div>
+                      <div
+                        class="percent-value"
+                        :style="{ width: `${item.zxd}%` }"
+                      ></div>
                     </div>
                   </div>
                 </td>
                 <td class="score" style="width: 100px">
-                  <div>{{item.score}}</div>
+                  <div>{{ item.score }}</div>
                 </td>
                 <td>
-                  <table-line-chart :list='item.futureHealth'/>
+                  <table-line-chart :list="item.futureHealth" />
                 </td>
                 <td class="item">
-                  <div :class="[color(item.clx)]">{{item.clx}}</div>
+                  <div :class="[color(item.clx)]">{{ item.clx }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.fdj)]">{{item.fdj}}</div>
+                  <div :class="[color(item.fdj)]">{{ item.fdj }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.zz)]">{{item.zz}}</div>
+                  <div :class="[color(item.zz)]">{{ item.zz }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.bj)]">{{item.bj}}</div>
+                  <div :class="[color(item.bj)]">{{ item.bj }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.ph)]">{{item.ph}}</div>
+                  <div :class="[color(item.ph)]">{{ item.ph }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.jc)]">{{item.jc}}</div>
+                  <div :class="[color(item.jc)]">{{ item.jc }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.bpq)]">{{item.bpq}}</div>
+                  <div :class="[color(item.bpq)]">{{ item.bpq }}</div>
                 </td>
                 <td class="item">
-                  <div :class="[color(item.zk)]">{{item.zk}}</div>
+                  <div :class="[color(item.zk)]">{{ item.zk }}</div>
                 </td>
               </tr>
             </tbody>
@@ -139,39 +142,53 @@ export default {
         },
       ],
       value1: "",
-      tableData:'',
-      colorval:{
-        '优':'purple',
-        '良':'orange',
-        '差':'red',
-      }
+      tableData: "",
+      colorval: {
+        优: "purple",
+        良: "orange",
+        差: "red",
+      },
     };
+    futureHealth: null;
   },
   created() {
     this.search();
   },
   methods: {
-    color(val){
-     return this.colorval[val]
+    color(val) {
+      return this.colorval[val];
     },
     async search() {
-      const {data} = await this.API.requestData({
+      const { data } = await this.API.requestData({
         subUrl: "powercompare/windfarmAjax",
       });
-      this.options = data.data
-      this.value1 = data.data[0].id
-      this.searchWindTurbineHealthList()
+      this.options = data.data;
+      this.value1 = data.data[0].id;
+      this.searchWindTurbineHealthList();
     },
-    async searchWindTurbineHealthList(){
-      const {data} = await this.API.requestData({
+    async searchWindTurbineHealthList() {
+      const { data } = await this.API.requestData({
         subUrl: "wtHealthList/windTurbineHealthList",
-        method: "POST", 
-        data:{
-          wpId : this.value1
-        }
+        method: "POST",
+        data: {
+          wpId: this.value1,
+        },
       });
-        this.tableData = data.data
-    }
+      this.tableData = data.data;
+      console.warn(data.data);
+      data.data.forEach((k) => {
+        let arr =[]
+        k.futureHealth.forEach((e, index) => {
+          let obj = {
+            text: index,
+            value: e,
+          };
+          arr.push(obj)
+        });
+        k.futureHealth = arr
+      });
+      console.warn(this.tableData);
+    },
   },
 };
 </script>

+ 61 - 39
src/views/NewPages/personnel.vue

@@ -17,6 +17,7 @@
         v-for="(item, index) in resData"
         :key="index"
         @click="todesc(item)"
+        :style="[item.objects && frontOneHour < item.objects['LAT'].ts ? 'order:-1' :'']"
       >
         <div class="personnel-box-item-h">
           <div class="personnel-box-item-header">
@@ -54,7 +55,14 @@
             {{ item.objects && item.username }}
           </div>
           <div class="personnel-box-item-icon">
-            <i :class="['el-icon-user-solid',item.objects && frontOneHour<item.objects['LAT'].ts? 'icolor':'']" ></i>
+            <i
+              :class="[
+                'el-icon-user-solid',
+                item.objects && frontOneHour < item.objects['LAT'].ts
+                  ? 'icolor'
+                  : '',
+              ]"
+            ></i>
           </div>
         </div>
       </div>
@@ -75,7 +83,7 @@
               <div class="search-input">
                 <el-date-picker
                   v-model="startdate"
-                  type="date"
+                  type="datetime"
                   placeholder="选择日期"
                   popper-class="date-select"
                   class="placeholder-left"
@@ -88,7 +96,7 @@
               <div class="search-input">
                 <el-date-picker
                   v-model="enddate"
-                  type="date"
+                  type="datetime"
                   placeholder="选择日期"
                   popper-class="date-select"
                   class="placeholder-left"
@@ -161,7 +169,7 @@
           height="45vh"
           :showLegend="true"
           :units="['半小时检测值']"
-          :list='chartList'
+          :list="chartList"
         />
       </div>
     </el-dialog>
@@ -211,12 +219,11 @@ export default {
       dialogVisible: false,
       resData: null,
       perData: null,
-      frontOneHour : new Date().getTime() - 10 * 60 * 1000,
-      startdate: new Date(
-        new Date(new Date().setDate(new Date().getDate() - 1))
-      ).formatDate("yyyy-MM-dd"),
-      enddate: new Date(new Date()).formatDate("yyyy-MM-dd"),
-      chartList:[
+      frontOneHour: new Date().getTime() - 10 * 60 * 1000,  //前十分钟
+      startdate: new Date(new Date().getTime() - 60 * 60 * 1000
+      ).formatDate("yyyy-MM-dd hh:mm:ss"),
+      enddate: new Date(new Date()).formatDate("yyyy-MM-dd hh:mm:ss"),
+      chartList: [
         {
           title: "疲劳度",
           yAxisIndex: 0,
@@ -314,14 +321,14 @@ export default {
   },
   // 函数
   methods: {
-      imgurl(v){
-          try {
-              const url  = require(`@assets/person/${v}.jpg`)
-              return url
-          } catch (error) {
-              return require('@assets/logo.png')
-          }
-      },
+    imgurl(v) {
+      try {
+        const url = require(`@assets/person/${v}.jpg`);
+        return url;
+      } catch (error) {
+        return require("@assets/logo.png");
+      }
+    },
     clickBtn(btn, index) {
       this.search(btn.val);
       this.btnIndex = index;
@@ -332,28 +339,43 @@ export default {
     async todesc(item) {
       this.dialogVisible = true;
       this.perData = item;
-      this.searchper()
+      this.searchper();
     },
     async searchper() {
-      const { data } = await axios.get(  //http://192.168.10.12:8082/   //http://10.155.32.4:8010
-        `http://192.168.1.18:8087/bracelet/getInfo?userid=${this.perData.mobile}&beginDate=${new Date(this.startdate).formatDate("yyyy-MM-dd HH:mm:ss")}&endDate=${new Date(this.enddate).formatDate("yyyy-MM-dd HH:mm:ss")}`);
-      let arr=[]
-      data.data.forEach(e => {
-          let obj={
-            title: e.name,
-            yAxisIndex: 0,
-            value:[]
-          }
-          e.bs.forEach(i => {
-              let obj1={
-              text: "1",
-              value: i.val,
-            }
-              obj.value.push(obj1)
-          })
-          arr.psuh(obj)
+      const { data } = await axios.get(
+        //http://192.168.10.12:8082/   //http://10.155.32.4:8010
+        // `http://10.155.32.4:8034/bracelet/getInfo?userid=1864&beginDate=2021-07-15+12%3A01%3A22&endDate=2021-07-15+15%3A01%3A22`);
+      
+      `http://10.155.32.4:8034/bracelet/getInfo?userid=${this.perData.mobile}&beginDate=${new Date(this.startdate).formatDate("yyyy-MM-dd hh:mm:ss")}&endDate=${new Date(this.enddate).formatDate("yyyy-MM-dd hh:mm:ss")}`);
+      console.warn(data);
+      let arr = [];
+      let resarr = ["pld", "ssxy", "szxy", "xtpl", "xy"];
+      const objb = {
+        pld: "疲劳度",
+        ssxy: "收缩血压",
+        szxy: "舒张血压",
+        xtpl: "心跳频率",
+        xy: "血氧",
+      };
+      resarr.forEach((e) => {
+        let obj = {
+          title: objb[e],
+          yAxisIndex: 0,
+          value: [],
+        };
+        let vlarr = [];
+        data.forEach((k) => {
+          let obj1 = {
+            text: new Date(k.date).formatDate("hh:mm"),
+            value: k[e]
+          };
+          vlarr.push(obj1);
+        });
+        obj.value = vlarr;
+        arr.push(obj);
       });
-      this.chartList = arr
+      console.warn(arr);
+      this.chartList = arr;
     },
     async search(id) {
       const { data } = await axios.get(
@@ -387,8 +409,8 @@ export default {
 </script>
 
 <style lang="less">
-.icolor{
-    color: #05bb4c;
+.icolor {
+  color: #05bb4c;
 }
 .personnel {
   widows: 100%;