Hwt 2 years ago
parent
commit
4c3bd72dd4

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

@@ -55,7 +55,9 @@ export default {
         patrolTaskRate: (resolve) => require([`@views/${comUrl}workbenchMent/patrolTaskRate.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)
+        completionMaintenanceOrder: (resolve) => require([`@views/${comUrl}workbenchMent/completionMaintenanceOrder.vue`], resolve),
+        orderClassification: (resolve) => require([`@views/${comUrl}workbenchMent/orderClassification.vue`], resolve),
+        performanceInspectors: (resolve) => require([`@views/${comUrl}workbenchMent/performanceInspectors.vue`], resolve)
     },
     data() {
         return {
@@ -89,7 +91,9 @@ export default {
                 25: 'patrolTaskRate',
                 26: 'patrolTaskDistribution',
                 27: 'operationMaintenancePersonnel',
-                28: 'completionMaintenanceOrder'
+                28: 'completionMaintenanceOrder',
+                29: 'orderClassification',
+                30: 'performanceInspectors'
             }
         };
     },

+ 1 - 10
operationSupport/src/views/newWorkBench/components/workbenchMent/completionMaintenanceOrder.vue

@@ -74,7 +74,6 @@ export default {
   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 });
         }
@@ -86,21 +85,13 @@ export default {
     },
     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]
+          name: a
         });
       }
-      debugger
 
       return newData;
     }

+ 101 - 0
operationSupport/src/views/newWorkBench/components/workbenchMent/orderClassification.vue

@@ -0,0 +1,101 @@
+<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 { ringType } from '../indexOptionChart';
+import permissionComponent from '../permissionComponent';
+export default {
+  mixins: [permissionComponent],
+  data () {
+    return {
+      defaultModel: {
+        permissUrl: '17',
+        titleName: '运维工单'
+      },
+      mixins_query: {
+        communityId: '',
+        date: '',
+      },
+      total: 0,
+      date: '',
+      clientOptions: ringType(
+        [],
+        [
+          { value: 0, name: '业主报修' },
+          { value: 0, name: '内部报修' }
+        ],
+        {},
+        { type: '%', total: 0 }
+      )
+    };
+  },
+  methods: {
+    changeTime (v) {
+      this.mixins_query.date = v + '-01';
+      this.getData();
+    },
+    getData () {
+      this.$http.get('/sc-community-web/statisticWorkOrderCategory', this.mixins_query).then(({ data, msg, status }) => {
+        if (status == 0 && !!data.datas) {
+          this.clientOptions = ringType([], this.eachartObj(data), {}, { type: '%', total: data.total });
+        }
+      });
+    },
+    eachartObj (data) {
+      this.total = data.total;
+      let typeName = {
+        1: '业主报修',
+        2: '内部报修'
+      };
+      let newData = [];
+      for (let a in data.datas) {
+        newData.push({
+          value: data.datas[a],
+          name: a
+        });
+      }
+      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 '../style.scss';
+</style>

+ 109 - 0
operationSupport/src/views/newWorkBench/components/workbenchMent/performanceInspectors.vue

@@ -0,0 +1,109 @@
+
+<!-- 已完成 -->
+<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: '18',
+        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/statisticInspectionPersonnelSituation', this.mixins_query).then(({ data, msg, status }) => {
+        console.log('data', data);
+        if (status == 0 && !!data) {
+          let dataName = [];
+          let dataNums = [];
+          let datacompelete = [];
+          data.map((item) => {
+            dataName.push(item.type);
+            dataNums.push(item.nums);
+            datacompelete.push(item.compeleteNums);
+          })
+          this.clientOptions = columnOptionsChartStacking('(个)', dataName, [{ data: dataNums, name: '任务总数' }, { data: datacompelete, name: '已完成' }], [], 10);
+        }
+      })
+    },
+    changeTime (v) {
+      this.mixins_query.date = v + '-01';
+      this.getData();
+    }
+  },
+  created () {
+    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>

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

@@ -300,6 +300,20 @@ export default {
           imgPng: require('@assets/img/formulation/img_bing+baifenbi@2x.png'),
           imgIcon: require('@assets/img/formulation/tag_1x@2x.png')
         },
+        {
+          data_id: 29,
+          title: '运维工单分类',
+          type: 6,
+          imgPng: require('@assets/img/formulation/img_bingzhuangtu@2x.png'),
+          imgIcon: require('@assets/img/formulation/tag_1x@2x.png')
+        },
+        {
+          data_id: 30,
+          title: '巡检人员任务执行情况',
+          type: 7,
+          imgPng: require('@assets/img/formulation/img_zhuzhuangtu@2x.png'),
+          imgIcon: require('@assets/img/formulation/tag_2x@2x.png')
+        },
 
       ],
       componentsValue: 0

+ 14 - 14
smart/src/App.vue

@@ -7,23 +7,23 @@
  * @FilePath: \vue-manage-system-master\src\App.vue
 -->
 <template>
-    <div id="app">
-        <div id="container"></div>
-        <router-view></router-view>
-    </div>
+  <div id="app">
+    <div id="container"></div>
+    <router-view></router-view>
+  </div>
 </template>
 <script>
 export default {
-    name: 'App',
-    created() {
-        // 获取滚动条的满宽度和高度
-        const $dom = document.createElement('div');
-        $dom.setAttribute('style', 'width: 100px; height:100px;overflow:scroll;position:absolute;top: -200px; left: -200px');
-        document.body.appendChild($dom);
-        window.scrollBarWidth = $dom.offsetWidth - $dom.clientWidth;
-        window.scrollBarHeight = $dom.offsetHeight - $dom.clientHeight;
-        document.body.removeChild($dom);
-    }
+  name: 'App',
+  created () {
+    // 获取滚动条的满宽度和高度
+    const $dom = document.createElement('div');
+    $dom.setAttribute('style', 'width: 100px; height:100px;overflow:scroll;position:absolute;top: -200px; left: -200px');
+    document.body.appendChild($dom);
+    window.scrollBarWidth = $dom.offsetWidth - $dom.clientWidth;
+    window.scrollBarHeight = $dom.offsetHeight - $dom.clientHeight;
+    document.body.removeChild($dom);
+  }
 };
 </script>
 <style>

+ 15 - 9
smart/src/router/dynamicMuen.js

@@ -1,16 +1,23 @@
 import store from '../store/store.js';
-import msg from '@views/messages/index.vue';
 const staticMuen = [
-    {
-        path: '*',
-        redirect: '/404'
-    },
     {
         path: '/msg',
-        name: 'msg',
-        // component: () => import(/* webpackChunkName: "messages" */ '@views/messages'),
-        component: msg,
+        component: () => import(/* webpackChunkName: "messages" */ '@views/messages'),
         meta: { title: '消息中心' }
+    },
+    // {
+    //     path: '/403',
+    //     component: () => import(/* webpackChunkName: "404" */ '@views/errorPage/403.vue'),
+    //     meta: { title: '403' }
+    // },
+    // {
+    //     path: '/404',
+    //     component: () => import(/* webpackChunkName: "404" */ '@views/errorPage/404.vue'),
+    //     meta: { title: '404' }
+    // },
+    {
+        path: '*',
+        redirect: '/404'
     }
 ];
 //路由格式
@@ -45,7 +52,6 @@ const dimension = (arrList, arr) => {
 //添加路由
 const AddRt = (router, dynamicMuenList) => {
     let NEWdynamicMuenList = [...dynamicMuenList, ...staticMuen];
-    debugger;
     if (NEWdynamicMuenList.length !== 0) {
         NEWdynamicMuenList.forEach((item) => {
             router.options.routes[0].children.push(item);

+ 2 - 1
smart/src/views/temporaryStopCharge/setpPage/details.vue

@@ -108,12 +108,13 @@ export default {
   created () {
 
     console.log(this.params.row);
+    debugger
     this.cols[0].label = (Number(this.params.row.totalAmout) / 100) || '--';
     this.cols[1].label = (Number(this.params.row.amount) / 100) || '--';
 
     this.cols[2].label = (Number(this.params.row.freeMoney) / 100) || '--';
     this.cols[3].label = (Number(this.params.row.deductionAmount) / 100) || '--';
-    this.cols[4].label = (Number(this.params.row.freeTime) / 60) || '--';
+    this.cols[4].label = ((Number(this.params.row.freeTime) / 60).toFixed(0)) || '--';
 
     this.cols[5].label = this.params.row.payMethod == 1 ? '微信' : this.params.row.payMethod == 2 ? '支付宝' : this.params.row.payMethod == 3 ? '现金' : this.params.row.payMethod == 4 ? '预存' : '其他' || '--';
 

+ 18 - 8
smart/src/views/vehicleInformation/setpPage/details.vue

@@ -230,7 +230,7 @@
               <el-form-item
                 prop="parkingArea"
                 ref="againValue"
-                style="float: left; margin: 0 auto ; margin-bottom: 15px;"
+                style="float: left; margin: 15px auto ;"
               >
 
                 <el-select
@@ -327,12 +327,12 @@
 
               <el-col
                 :span="10"
-                style="float: left; margin: 0 auto; margin-bottom: 8px;"
+                style="float: left; "
               >
                 <el-form-item
                   prop="againInput"
                   ref="againInput"
-                  style="float: left; margin: 0 auto; margin-bottom: 8px;"
+                  style="float: left; margin: 15px auto;"
                 >
 
                   <el-select v-model="parkingSpaceSetting[scope.$index].licensePlate">
@@ -353,7 +353,7 @@
                 <el-form-item
                   prop="againLicense"
                   ref="againLicense"
-                  style="float: left; margin: 0 auto;"
+                  style="float: left; margin: 15px auto;"
                 >
                   <el-input
                     placeholder="车牌号"
@@ -497,7 +497,7 @@ export default {
           parkingArea: '',
           positionInformation: '',
           areaName: '',
-          parkingId: '',
+          parkingId: [],
           num: 1
         },
       ],
@@ -900,6 +900,7 @@ export default {
             id: id,
             positionInformation: this.tableData[id].positionInformation,
             value: this.tableData[id].parkingId,
+            count: this.tableData[id].num
           },
 
           hideStar: true,
@@ -907,9 +908,18 @@ export default {
         });
       }).then((data) => {
         debugger
+
         var id = data[0].id;
-        this.tableData[id].positionInformation = data[0].positionInformation;
-        this.tableData[id].parkingId = data[0].value;
+        if (this.tableData[id].num == 1) {
+          this.tableData[id].positionInformation = data[0].positionInformation;
+          debugger
+          this.tableData[id].parkingId.push(data[0].value);
+
+        } else {
+          this.tableData[id].positionInformation = (Array.from(new Set(data[0].positionInformation))).join(',');
+          this.tableData[id].parkingId = data[0].value;
+        }
+
       });
     },
 
@@ -1011,7 +1021,7 @@ export default {
               areaName: this.areaNamed[i],
               lotCount: this.tableData[i].num,
               lotName: this.tableData[i].positionInformation,
-              parkingId: this.tableData[i].parkingId,
+              parkingIds: this.tableData[i].parkingId,
               carType: '',
               ruleId: this.formDate.ruleId,
               sequence: this.formDate.sort,

+ 87 - 19
smart/src/views/vehicleInformation/setpPage/native.vue

@@ -61,14 +61,18 @@ export default {
       // },//过滤使用字段
       // dataRes: [],
       checkedData: {},//当前点击的数据
+      num: '',//判断是多选还是单选
 
+      valued: [],
+      Informationed: [],
 
       Information: '',
+      value: '',
 
 
       id: '',
       positionInformation: [],
-      value: '',
+
 
 
       tenantsTree: [],
@@ -84,36 +88,86 @@ export default {
     /** 控制树形单选 */
     checkChange (data, checked) {
       this.checkedData = {}
-      if (checked) {
-        if (!!data.children && data.children.length > 0) {
-          console.log("有子节点不可选")
+
+      if (this.num != 1) {
+        debugger
+        if (checked) {
+          if (!!data.children && data.children.length > 0) {
+            console.log("有子节点不可选")
+          } else {
+            this.checkedData = data;
+            debugger
+            this.valued.push(Number(this.checkedData.value));
+            this.Informationed.push(this.checkedData.name);
+          }
         } else {
-          // checked.disabled = !checked.disabled;
-          this.$refs.tenantstree.setCheckedKeys([data.value], true);
-          this.checkedData = data;
-          this.value = this.checkedData.value;
-          // console.log("checked data", data, this.checkedData)
-          this.Information = this.checkedData.name
+          for (let i = 0; i < this.valued.length; i++) {
+            if (data.value == this.valued[i]) {
+              this.valued.splice(i + 1, 1)
+            }
+          }
+          for (let k = 0; k < this.Informationed.length; k++) {
+            if (data.name == this.Informationed[k]) {
+              this.Informationed.splice(k + 1, 1)
+            }
+          }
+        }
+
+
+      } else {
+        debugger
+        if (checked) {
+          if (!!data.children && data.children.length > 0) {
+            console.log("有子节点不可选")
+          } else {
+            this.$refs.tenantstree.setCheckedKeys([data.value], true);
+            this.checkedData = data;
+            this.value = this.checkedData.value;
+            this.Information = this.checkedData.name
+
+          }
         }
       }
 
 
 
 
+
+
+      // if (checked) {
+      //   if (!!data.children && data.children.length > 0) {
+      //     console.log("有子节点不可选")
+      //   } else {
+      //     // checked.disabled = !checked.disabled;
+      //     // this.$refs.tenantstree.setCheckedKeys([data.value]);
+      //     this.checkedData = data;
+      //     // this.value = this.checkedData.value;
+      //     // console.log("checked data", data, this.checkedData)
+      //     // this.Information = this.checkedData.name
+      //     this.value.push(this.checkedData.value);
+      //     this.Information.push(this.checkedData.name);
+      //   }
+      // }
+
+
+
+
     },
     submit () {
-      if (this.Information != undefined) {
+      debugger
+      if (this.num == 1) {
         this.positionInformation.push({ positionInformation: this.Information, id: this.id, value: this.value });
-        this.params.callback(this.positionInformation);
-        this.$emit('close');
       } else {
-        this.$message('请重新选择车位号');
+        this.positionInformation.push({ positionInformation: this.Informationed, id: this.id, value: this.valued });
       }
+      // this.positionInformation.push({ positionInformation: this.Information, id: this.id, value: this.value });
+      this.params.callback(this.positionInformation);
+      this.$emit('close');
+
 
     },
 
     filterTreeData (trData) {
-      debugger
       trData.map((item, index) => {
         if (this.isNotEmpty(item.children)) {
           item.disabled = true;
@@ -127,7 +181,6 @@ export default {
       return arr && Array.isArray(arr) && arr.length > 0;
     },
     thisCheck (ev, node, data) {
-      debugger
       if (!data.disabled) {
         node.checked = node.checked;
       }
@@ -145,11 +198,26 @@ export default {
     this.garage();
     this.id = this.params.id;
     console.log(this.id);
-    this.Information = this.params.positionInformation;
-    this.value = this.params.value;
+    // this.Information = this.params.positionInformation;
+    // this.value = this.params.value;
     // 显示
-    this.defaultcheckedkeys = [this.params.value]
 
+    debugger
+    this.num = this.params.count
+    if (this.num == 1) {
+      this.Information = this.params.positionInformation;
+      this.value = this.params.value;
+      this.defaultcheckedkeys = [this.params.value];
+    } else {
+      debugger
+      if (this.params.positionInformation != '') {
+        let positionInformation = (this.params.positionInformation).split(',')
+        this.Informationed = positionInformation;
+        this.valued = this.params.value;
+        this.defaultcheckedkeys = this.params.value;
+      }
+
+    }
 
   }
 }