Hwt 2 rokov pred
rodič
commit
09ebe9bdac

+ 6 - 2
operationSupport/src/views/newWorkBench/components/index.js

@@ -53,7 +53,9 @@ export default {
 
         patrolPersonnel: (resolve) => require([`@views/${comUrl}workbenchMent/patrolPersonnel.vue`], resolve),
         patrolTaskRate: (resolve) => require([`@views/${comUrl}workbenchMent/patrolTaskRate.vue`], resolve),
-        patrolTaskDistribution: (resolve) => require([`@views/${comUrl}workbenchMent/patrolTaskDistribution.vue`], resolve)
+        patrolTaskDistribution: (resolve) => require([`@views/${comUrl}workbenchMent/patrolTaskDistribution.vue`], resolve),
+        operationMaintenancePersonnel: (resolve) => require([`@views/${comUrl}workbenchMent/operationMaintenancePersonnel.vue`], resolve),
+        completionMaintenanceOrder: (resolve) => require([`@views/${comUrl}workbenchMent/completionMaintenanceOrder.vue`], resolve)
     },
     data() {
         return {
@@ -85,7 +87,9 @@ export default {
 
                 24: 'patrolPersonnel',
                 25: 'patrolTaskRate',
-                26: 'patrolTaskDistribution'
+                26: 'patrolTaskDistribution',
+                27: 'operationMaintenancePersonnel',
+                28: 'completionMaintenanceOrder'
             }
         };
     },

+ 146 - 0
operationSupport/src/views/newWorkBench/components/indexOptionChart.js

@@ -746,3 +746,149 @@ export const columnOptionsChartStacking = (name = '', xAxis = [], series = [], c
     };
     return option;
 };
+
+// 折线日期  间隔4个
+export const discountedChart = (name = '', xAxis = [], series = [], legendShow = false, color = []) => {
+    let option = {
+        tooltip: {
+            trigger: 'axis',
+            textStyle: {
+                fontSize: 12,
+                color: '#FFFFFF'
+            }
+            // formatter(param) {
+            //   let el = `<div class="dmp-echart-tooltip"><h4>${dateType(param[0].axisValue)}</h4>`;
+            //   param.forEach(item => {
+            //     el += `<p>
+            //                   <span class="marker" style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-image: linear-gradient(to left,
+            //                     ${item.color.colorStops[0].color}, ${item.color.colorStops[1].color});"></span>
+            //                   <span>${item.seriesName}:${item.value}</span>
+            //                 </p>`;
+            //   });
+            //   el += `</div>`;
+            //   return el;
+            // }
+        },
+        grid: {
+            top: 50,
+            left: 5,
+            bottom: 0,
+            right: 5,
+            containLabel: true
+        },
+
+        legend: {
+            show: legendShow,
+            icon: 'circle',
+            x: 'right', // 可设定图例在左、右、居中
+            itemWidth: 8, // 图例图形宽度
+            itemHeight: 8,
+            itemGap: 20
+        },
+        xAxis: {
+            type: 'category',
+            axisLine: {
+                show: false // 不显示坐标轴
+            },
+            axisTick: {
+                show: false // 不显示坐标轴刻度
+            },
+            axisLabel: {
+                interval: 4,
+                // formatter: function (params, index) {
+                //     return params.slice(5);
+                // },
+                color: '#9B9DA5',
+                margin: 16
+            },
+            data: xAxis,
+            axisPointer: {
+                type: 'shadow',
+                shadowStyle: {
+                    color: {
+                        type: 'linear',
+                        x: 0,
+                        y: 0,
+                        x2: 0,
+                        y2: 1,
+                        colorStops: [
+                            {
+                                offset: 0,
+                                color: 'rgba(31,207,245,0)' // 0% 处的颜色
+                            },
+                            {
+                                offset: 0.8,
+                                color: 'rgba(31,207,245,0.15)' // 100% 处的颜色
+                            },
+                            {
+                                offset: 0.2,
+                                color: 'rgba(31,207,245,0.15)' // 100% 处的颜色
+                            },
+                            {
+                                offset: 1,
+                                color: 'rgba(31,207,245,0.05)'
+                            }
+                        ],
+                        global: false // 缺省为 false
+                    }
+                }
+            }
+        },
+        yAxis: {
+            type: 'value',
+            splitNumber: 4,
+            axisLine: {
+                show: false
+            },
+            name: name,
+            axisTick: {
+                show: false
+            },
+            axisLabel: {
+                color: '#9B9DA5',
+                margin: 15,
+                textStyle: {
+                    align: 'right',
+                    baseline: 'middle'
+                }
+            },
+            nameLocation: 'end',
+            nameTextStyle: { color: '#9B9DA5', padding: [0, 0, 0, -40] },
+            splitLine: {
+                lineStyle: {
+                    type: 'dotted',
+                    width: 0.2
+                }
+            }
+        },
+        series: [
+            {
+                // name: "设备告警",
+                type: 'line',
+                smooth: true,
+                symbol: 'circle', // 实心
+                symbolSize: 1, // 设定实心点的大小
+                itemStyle: getItemStyle('#5EEDCC', '#24C3F1'),
+                data: series,
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                            {
+                                offset: 0,
+                                color: 'rgba(36,121,253,0.1)'
+                            },
+                            {
+                                offset: 1,
+                                color: 'rgba(19,194,247,0.3)'
+                            }
+                        ])
+                    }
+                },
+                lineStyle: {
+                    width: 1
+                }
+            }
+        ]
+    };
+    return option;
+};

+ 166 - 0
operationSupport/src/views/newWorkBench/components/workbenchMent/completionMaintenanceOrder.vue

@@ -0,0 +1,166 @@
+<template>
+  <div class="modelBlock">
+    <template v-if="permissionFiltering">
+      <div class="model-title">
+        <div class="model-title-text">运维工单完成率</div>
+        <div class="model-title-right">
+          <el-date-picker
+            value-format="yyyy-MM"
+            v-model="date"
+            type="month"
+            placeholder="选择月"
+            class="saveColumn-select"
+            @change="changeTime"
+            :clearable="false"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="model-content">
+        <zz-echart
+          :option="clientOptions"
+          class="chart"
+        ></zz-echart>
+        <div class="totals">
+          <span>{{ total }}</span>
+          <span class="numbers">任务总数</span>
+        </div>
+      </div>
+    </template>
+    <no-permission
+      v-else
+      tipsText="运维工单完成率"
+    ></no-permission>
+  </div>
+</template>
+<script>
+import { GradualChange, ringType } from '../indexOptionChart';
+import permissionComponent from '../permissionComponent';
+const colors = [
+  GradualChange('#22D8FF', '#00B2FF'),
+  GradualChange('#F0646C', '#F4994E'),
+  GradualChange('#5EEDCC ', '#24C3F1'),
+  GradualChange('#7178FF', '#D2A4FF'),
+  GradualChange('#884DD2', '#DF63CC')
+];
+export default {
+  mixins: [permissionComponent],
+  data () {
+    return {
+      defaultModel: {
+        permissUrl: '17',
+        titleName: '运维工单'
+      },
+      mixins_query: {
+        communityId: '',
+        date: '',
+      },
+      date: '',
+      total: 0,
+      clientOptions: ringType(
+        colors,
+        [
+          { value: 0, name: '待派单' },
+          { value: 0, name: '处理中' },
+          { value: 0, name: '已完成' },
+          { value: 0, name: '已完成(超时)' },
+          { value: 0, name: '已关闭' }
+        ],
+        {},
+        { type: 'number', total: 0 }
+      )
+    };
+  },
+  methods: {
+    getData () {
+      this.$http.get('/sc-community-web/statisticWorkOrderComplete', this.mixins_query).then(({ data, msg, status }) => {
+        debugger
+        if (status == 0 && !!data.datas) {
+          this.clientOptions = ringType(colors, this.eachartObj(data), {}, { type: 'number', total: data.total });
+        }
+      })
+    },
+    changeTime (v) {
+      this.mixins_query.date = v + '-01';
+      this.getData();
+    },
+    eachartObj (data) {
+      this.total = data.total || 0;
+      let typeName = {
+        '关闭': '关闭',
+        '处理中': '处理中',
+        '完成': '已完成',
+        '已完成(超时)': '已完成(超时)',
+        '已关闭': '已关闭'
+      };
+      let newData = [];
+      for (let a in data.datas) {
+        newData.push({
+          value: data.datas[a],
+          name: typeName[a]
+        });
+      }
+      debugger
+
+      return newData;
+    }
+  },
+  created () {
+    this.mixins_query.date = this.$moment().format('YYYY-MM') + '-01';
+    this.date = this.$moment().format('YYYY-MM');
+    this.getData();
+  }
+};
+</script>
+<style lang="scss" scoped>
+@import '@assets/css/public-style.scss';
+.modelBlock {
+    height: 100%;
+    padding: rem(15) rem(20) rem(20);
+    background: #171f32;
+    .model-title {
+        line-height: rem(30);
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: rem(15);
+        border-bottom: 1px solid rgba(224, 225, 227, 0.2);
+        .saveColumn-select {
+            width: rem(120);
+            margin-left: rem(20);
+            /deep/ .el-input__inner {
+                background: transparent;
+                color: white;
+                border-color: rgba(255, 255, 255, 0.2);
+            }
+        }
+        .model-title-text {
+            color: white;
+        }
+    }
+    .model-content {
+        height: calc(100% - #{rem(45)});
+        display: flex;
+        justify-content: space-between;
+        font-size: 12px;
+        position: relative;
+        .totals {
+            position: absolute;
+            right: rem(10);
+            top: rem(26);
+            width: rem(120);
+            height: rem(40);
+            background: linear-gradient(90deg, rgba(14, 174, 255, 0.5) 0%, rgba(14, 174, 255, 0) 100%);
+            border-radius: 5px;
+            font-size: 20px;
+            padding: rem(8) rem(10);
+            display: flex;
+            justify-content: space-between;
+            .numbers {
+                font-size: 12px;
+                opacity: 0.5;
+                line-height: rem(32);
+            }
+        }
+    }
+}
+</style>

+ 112 - 0
operationSupport/src/views/newWorkBench/components/workbenchMent/operationMaintenancePersonnel.vue

@@ -0,0 +1,112 @@
+
+<!-- 已完成 -->
+<template>
+  <div class="modelBlock">
+    <template v-if="permissionFiltering">
+      <div class="model-title">
+        <div class="model-title-text">运维人员任务执行情况</div>
+        <div class="model-title-right">
+          <el-date-picker
+            value-format="yyyy-MM"
+            v-model="date"
+            type="month"
+            placeholder="选择月"
+            class="saveColumn-select"
+            :clearable="false"
+            @change="changeTime"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="model-content">
+        <zz-echart
+          :option="clientOptions"
+          class="chart"
+        ></zz-echart>
+      </div>
+    </template>
+    <no-permission
+      v-else
+      tipsText="运维人员任务执行情况"
+    ></no-permission>
+  </div>
+</template>
+<script>
+import { columnOptionsChartStacking } from '../indexOptionChart';
+import permissionComponent from '../permissionComponent';
+let dataArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+export default {
+  mixins: [permissionComponent],
+  data () {
+    return {
+      defaultModel: {
+        permissUrl: '17',
+        titleName: '运维工单'
+      },
+      mixins_query: {
+        communityId: '',
+        date: '',
+      },
+      date: '',
+      clientOptions: columnOptionsChartStacking(
+        '(个)',
+        ['name1', 'name2', 'name3'],
+        [
+          {
+            data: [10, 20, 15],
+            name: '任务总数'
+          },
+          {
+            data: [20, 30, 10],
+            name: '已完成'
+          }
+        ],
+        [],
+        10
+      ),
+    };
+  },
+  methods: {
+    getData () {
+      this.$http.get('/sc-community-web/statisticWorkOrderTask', this.mixins_query).then(({ data, msg, status }) => {
+        debugger
+        console.log('data', data);
+        if (status == 0 && !!data) {
+          let dataName = [];
+          let dataNums = [];
+          let datacompelete = [];
+          data.map((item) => {
+            dataName.push(item.name);
+            dataNums.push(item.total);
+            datacompelete.push(item.completeTotal);
+          })
+          this.clientOptions = columnOptionsChartStacking('(个)', dataName, [{ data: dataNums, name: '任务总数' }, { data: datacompelete, name: '已完成' }], [], 10);
+        }
+      })
+    },
+    changeTime (v) {
+      debugger
+      this.mixins_query.date = v + '-01';
+      this.getData();
+    }
+  },
+  created () {
+    debugger
+    this.mixins_query.date = this.$moment().format('YYYY-MM') + '-01';
+    this.date = this.$moment().format('YYYY-MM');
+    this.getData();
+  }
+};
+</script>
+<style scoped lang="scss">
+@import '../style.scss';
+.model-title {
+    .model-title-right {
+        .saveColumn-select {
+            &:not(:first-child) {
+                margin-left: rem(20);
+            }
+        }
+    }
+}
+</style>

+ 4 - 0
operationSupport/src/views/newWorkBench/components/workbenchMent/patrolPersonnel.vue

@@ -39,6 +39,10 @@ export default {
   mixins: [permissionComponent],
   data () {
     return {
+      defaultModel: {
+        permissUrl: '19',
+        titleName: '安保巡更'
+      },
       mixins_query: {
         communityId: '',
         date: '',

+ 22 - 23
operationSupport/src/views/newWorkBench/components/workbenchMent/patrolTaskDistribution.vue

@@ -26,14 +26,14 @@
     </template>
     <no-permission
       v-else
-      tipsText="投诉建议数量趋势"
+      tipsText="巡更任务分布"
     ></no-permission>
   </div>
 </template>
 <script>
-import { discountedWave } from './indexOptionChart';
-import permissionComponent from './permissionComponent';
-let dataArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+import { discountedChart } from '../indexOptionChart';
+import permissionComponent from '../permissionComponent';
+let dataArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
 let dataDay = [
   '01-01',
   '01-02',
@@ -68,20 +68,20 @@ let dataDay = [
   '01-31'
 ];
 export default {
-  props: ['dataObj'],
   mixins: [permissionComponent],
   data () {
     return {
+      // permissionFiltering: '1',
       defaultModel: {
-        permissUrl: 'propertyManagement/index',
-        titleName: '投诉建议'
+        permissUrl: '19',
+        titleName: '安保巡更'
       },
       mixins_query: {
         communityId: '',
         date: ''
       },
       date: '',
-      clientOptions: discountedWave('(个)', dataDay, dataArr)
+      clientOptions: discountedChart('(个)', dataDay, dataArr)
     };
   },
   created () {
@@ -91,20 +91,19 @@ export default {
   },
   methods: {
     getData () {
-      // this.$http
-      //   .get('/sc-community/statisticComplaintsTrend', this.mixins_query)
-      //   .then(({ status, data, msg }) => {
-      //     if (status == 0) {
-      //       let dateTime = [],
-      //         valueArr = [];
-      //       data.map((item) => {
-      //         dateTime.push(item.date);
-      //         valueArr.push(item.data);
-      //       });
-      //       this.clientOptions = discountedWave('(次)', dateTime, valueArr);
-      //     }
-      //   })
-      //   .catch((err) => { });
+      this.$http
+        .get('/sc-community-web/statisticPatrolTaskDistribution', this.mixins_query)
+        .then(({ status, data, msg }) => {
+          if (status == 0) {
+            let dateTime = []
+            let valueArr = [];
+            data.map((item) => {
+              dateTime.push((item.date).substr(5));
+              valueArr.push(item.data);
+            })
+            this.clientOptions = discountedChart('(次)', dateTime, valueArr);
+          }
+        })
     },
     changeTime (v) {
       this.mixins_query.date = v + '-01';
@@ -114,5 +113,5 @@ export default {
 };
 </script>
 <style scoped lang="scss">
-@import './style.scss';
+@import '../style.scss';
 </style>

+ 3 - 4
operationSupport/src/views/newWorkBench/components/workbenchMent/patrolTaskRate.vue

@@ -29,7 +29,7 @@
     </template>
     <no-permission
       v-else
-      tipsText="巡检任务类型分布"
+      tipsText="巡更任务完成率"
     ></no-permission>
   </div>
 </template>
@@ -48,13 +48,12 @@ export default {
   data () {
     return {
       defaultModel: {
-        permissUrl: 'ownerManagement/index',
-        titleName: '住户管理'
+        permissUrl: '19',
+        titleName: '安保巡更'
       },
       mixins_query: {
         communityId: '',
         date: '',
-        type: ''
       },
       date: '',
       total: 0,

+ 21 - 0
operationSupport/src/views/newWorkBench/template/leftAssembly.vue

@@ -279,6 +279,27 @@ export default {
           imgPng: require('@assets/img/formulation/img_bing+baifenbi@2x.png'),
           imgIcon: require('@assets/img/formulation/tag_1x@2x.png')
         },
+        {
+          data_id: 26,
+          title: '巡更任务分布',
+          type: 8,
+          imgPng: require('@assets/img/formulation/img_zhexiantu@2x.png'),
+          imgIcon: require('@assets/img/formulation/tag_2x@2x.png')
+        },
+        {
+          data_id: 27,
+          title: '运维人员任务执行情况',
+          type: 6,
+          imgPng: require('@assets/img/formulation/img_zhuzhuangtu@2x.png'),
+          imgIcon: require('@assets/img/formulation/tag_2x@2x.png')
+        },
+        {
+          data_id: 28,
+          title: '运维工单完成率',
+          type: 6,
+          imgPng: require('@assets/img/formulation/img_bing+baifenbi@2x.png'),
+          imgIcon: require('@assets/img/formulation/tag_1x@2x.png')
+        },
 
       ],
       componentsValue: 0

+ 5 - 2
smart/src/views/vehicleInformation/setpPage/details.vue

@@ -1000,12 +1000,15 @@ export default {
       this.$refs.formDate.validate((valid) => {
         if (valid) {
           var table = [];
-          this.plateNoInfo = []
+          this.plateNoInfo = [];
+          debugger
+          console.log(this.areaNamed)
           for (let i = 0; i < this.tableData.length; i++) {
             this.tableData[i].areaName = (Array.from(new Set(this.areaNamed))).join(',');
             table.push({
               areaId: [this.tableData[i].parkingArea],
-              areaName: this.tableData[i].areaName,
+              // areaName: this.tableData[i].areaName[i],
+              areaName: this.areaNamed[i],
               lotCount: this.tableData[i].num,
               lotName: this.tableData[i].positionInformation,
               parkingId: this.tableData[i].parkingId,