Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into master

slowslo 4 жил өмнө
parent
commit
eadabb2a87
33 өөрчлөгдсөн 1325 нэмэгдсэн , 1783 устгасан
  1. BIN
      public/img/icon/agency.jpg
  2. BIN
      public/img/icon/top-bg.gif
  3. 10 0
      src/api/community/agency.js
  4. 10 0
      src/api/estate/parkingspace.js
  5. 13 0
      src/api/estate/snaprecord.js
  6. 1 1
      src/components/device-door/comps/device-door-crud.vue
  7. 1 1
      src/components/device-door/device-door.vue
  8. 1 1
      src/components/dialog/comps/visitor-detail.vue
  9. 9 4
      src/page/index/top/index.vue
  10. 32 0
      src/styles/element-rewrite/avue-form.scss
  11. 31 298
      src/views/dashboard/onefaceaccess/comps/function_list.vue
  12. 32 28
      src/views/dashboard/onefaceaccess/comps/resident.vue
  13. 35 37
      src/views/dashboard/onefaceaccess/comps/strange.vue
  14. 1 1
      src/views/dashboard/onefaceaccess/comps/today_visitor.vue
  15. 2 12
      src/views/dashboard/parkingmng/comps/paking-capture.vue
  16. 3 0
      src/views/dashboard/parkingmng/comps/paking-layout.vue
  17. 50 27
      src/views/dashboard/parkingmng/comps/parking-statistics.vue
  18. 2 14
      src/views/dashboard/smartoperationcenter/comps/access_records.vue
  19. 19 16
      src/views/dashboard/smartoperationcenter/comps/agency_info.vue
  20. 2 320
      src/views/dashboard/smartoperationcenter/comps/grid_list.vue
  21. 3 1
      src/views/dashboard/smartoperationcenter/comps/work_order.vue
  22. 2 1
      src/views/dashboard/smartoperationcenter/option/fkshOption.js
  23. 1 0
      src/views/dashboard/smartoperationcenter/option/repairOption.js
  24. 4 2
      src/views/dashboard/smartoperationcenter/option/workorderOption.js
  25. 19 16
      src/views/dashboard/smartoperationcenter/option/zcOption.js
  26. 0 91
      src/views/dashboard/smartoperationcenter/smartoperationcenter - 副本.vue
  27. 81 13
      src/views/dashboard/smartoperationcenter/smartoperationcenter.vue
  28. 231 234
      src/views/enterprise/option/enterpriseOption.js
  29. 313 275
      src/views/enterprise/option/staffOption.js
  30. 1 1
      src/views/enterprise/staff.vue
  31. 140 127
      src/views/estate/guestmng/option/guestOption.js
  32. 275 261
      src/views/parkingmng/option/parkinglotmng-option.js
  33. 1 1
      src/views/smartaccess/comps/face-card.vue

BIN
public/img/icon/agency.jpg


BIN
public/img/icon/top-bg.gif


+ 10 - 0
src/api/community/agency.js

@@ -55,3 +55,13 @@ export const dataStat = () => {
   })
 }
 
+export const getAgencyInfo = (id) => {
+  return request({
+    url: '/api/cyzh-community/agency/agencyInfo',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+

+ 10 - 0
src/api/estate/parkingspace.js

@@ -78,3 +78,13 @@ export const bindCar = (carId, parkingSpaceId) => {
     }
   })
 }
+
+export const statistics = (params) => {
+  return request({
+    url: '/api/cyzh-estate/parkingspace/statistics',
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}

+ 13 - 0
src/api/estate/snaprecord.js

@@ -74,3 +74,16 @@ export const exportExcel = (type=1) => {
   })
 }
 
+/**
+ * 获取体温异常的数量
+ */
+export const getTemperatureAnomaliesCount = (params) => {
+  return request({
+    url: '/api/cyzh-estate/snaprecord/getTemperatureAnomaliesCount',
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}
+

+ 1 - 1
src/components/device-door/comps/device-door-crud.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <div style="display:flex;margin:6px;flex-wrap: wrap;overflow: hidden">
+    <div style="display:flex;margin:6px;flex-wrap: wrap;overflow: hidden;">
       <el-tag size="mini" type="info" style="margin:4px" class="animate__animated animate__fadeInDown animate__faster" @close="close(item)" closable v-for="(item,index) in selectionList" :key="index">{{item.name}}</el-tag>
     </div>
     <avue-crud :option="option" :table-loading="loading" :data="data" :page="page" :permission="permissionList"

+ 1 - 1
src/components/device-door/device-door.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="page">
-    <el-dialog title="请选择要下发的设备" :visible.sync="deviceShow" center :append-to-body="true" :modal-append-to-body="true" width="55%">
+    <el-dialog title="请选择要下发的设备" :visible.sync="deviceShow" :destroy-on-close="true" center :append-to-body="true" :modal-append-to-body="true" width="55%">
       <div class="dialog">
         <!-- 区域begin -->
         <div class="classify" style="display:flex">

+ 1 - 1
src/components/dialog/comps/visitor-detail.vue

@@ -11,7 +11,7 @@
         <label v-if="detail.openType==2">开门方式:小程序一键开门</label>
         <label v-if="detail.openTime">开门时间:{{detail.openTime}}</label>
         <label v-else>抓怕时间:{{detail.createTime}}</label>
-        <label v-if="detail.score">抓拍分数:{{detail.score}}</label>
+        <label v-if="detail.score">抓拍分数:{{detail.score}}</label>
         <label>所在园区:{{detail.agencyName}}</label>
         <label>所在区域:{{detail.residentialName}}</label>
         <label>所在企业:{{detail.enterpriseName}}</label>

+ 9 - 4
src/page/index/top/index.vue

@@ -1,11 +1,15 @@
 <template>
   <div class="topWH   " style="height: 10rem;background-color: #042352;position: relative;">
-    <img src="/img/icon/top-bg.png" class="topWH" style="width: 100vw;">
+    <img src="/img/icon/top-bg.gif" class="topWH" style="width: 100vw;">
 
     <div class="top-title">
       {{website.indexTitle}}
     </div>
 
+    <div style="position:absolute;left:20px;top:15px">
+      <img src="/img/icon/logo.png" class="topWH" style="width: 139px;height:38px">
+    </div>
+
     <div style="position: absolute; bottom: 1.2rem;left: 2rem; width: 100%;">
       <top-menu ref="topMenu"></top-menu>
     </div>
@@ -184,7 +188,7 @@
 <style lang="scss">
   .topWH {
     width: 100vw;
-    height: 9.4rem;
+    height: 9.8rem;
   }
 
   .icon {
@@ -197,9 +201,10 @@
     justify-content: center;
     align-items: center;
     position: absolute;
-    top: 1.8rem;
+    // top: 1.8rem;
+    top: 1rem;
     left: calc(50% - 14rem);
-    font-size: 1.3rem;
+    font-size: 1.5rem;
     font-family: '宋体';
     color: #FFFFFF;
     font-weight: 800;

+ 32 - 0
src/styles/element-rewrite/avue-form.scss

@@ -1,3 +1,34 @@
+// avue-crud
+.avue-dialog .el-dialog__header {
+    padding: 16px 24px;
+    min-height: 20px;
+    border-bottom: 1px solid #EEEEEE !important;
+}
+
+.avue-dialog .el-dialog__title, .avue-dialog .el-drawer__header {
+    font-size: 18px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #333333 !important;
+    position: absolute;
+    left: calc(50% - 14px)
+}
+
+.avue-crud__dialog__header {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    position:relative;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+}
+// avue-crud
+
+
   .avue-upload__avatar {
     width: 100px;
     height: 100px;
@@ -43,6 +74,7 @@
    .avue-group__header {
     width: 100%;
     margin: 10px 0;
+    padding-left:20px;
     display: flex;
     -webkit-box-align: center;
     -ms-flex-align: center;

+ 31 - 298
src/views/dashboard/onefaceaccess/comps/function_list.vue

@@ -2,8 +2,8 @@
   <!-- 宫格功能 -->
   <div class="page animate__animated animate__faster animate__fadeInDown">
     <div class="list">
-      <div class="item"
-        :style="'background: url('+item.bg+')  no-repeat  center/cover;'" v-for="(item,index) in list" :key="index">
+      <div class="item" :style="'background: url('+item.bg+')  no-repeat  center/cover;'" v-for="(item,index) in list"
+        :key="index">
         <div class="top">
           <img :src="item.icon">
           <div class="data">
@@ -14,21 +14,33 @@
           </div>
         </div>
         <div class="bottom" v-if="item.name !== '体温异常'">
-          <el-button size="mini" icon="el-icon-plus" :style="'color:'+item.color" round @click="onClick(item)">新增</el-button>
+          <el-button size="mini" icon="el-icon-plus" :style="'color:'+item.color" round @click="onClick(item)">新增
+          </el-button>
         </div>
       </div>
     </div>
     <avue-crud ref="crud" :data="data" @row-save="submit" v-model="form" :option="option" v-show="false">
     </avue-crud>
   </div>
-
 </template>
 
 <script>
   import countTo from 'vue-count-to';
-  import {staffStat} from "@/api/enterprise/staff";
-  import {guestStat} from "@/api/estate/guestrecord";
-  import {serverUserStat} from "@/api/estate/serveruser";
+  import {
+    staffStat
+  } from "@/api/enterprise/staff";
+  import {
+    guestStat
+  } from "@/api/estate/guestrecord";
+  import {
+    getTemperatureAnomaliesCount
+  } from "@/api/estate/snaprecord";
+
+  
+  import {
+    serverUserStat
+  } from "@/api/estate/serveruser";
+  import staffOption from "@/views/enterprise/option/staffOption.js"
   import guestOption from "@/views/estate/guestmng/option/guestOption.js"
   import serverUserOption from "@/views/businessmng/estatemng/option/serverUserOption.js"
   export default {
@@ -46,10 +58,9 @@
         option: {
 
         },
-        list: [
-          {
+        list: [{
             name: '常驻人员',
-            num: 12344,
+            num: 0,
             bg: '/img/face/cz_bg.png',
             icon: '/img/face/cz.png',
             color: '#A055ED',
@@ -57,292 +68,11 @@
               method: "post",
               url: "/api/cyzh-enterprise/staff/submit"
             },
-            option: {
-              height: 'auto',
-              calcHeight: 30,
-              tip: false,
-              searchShow: true,
-              searchMenuSpan: 6,
-              border: true,
-              index: true,
-              viewBtn: true,
-              selection: true,
-              dialogClickModal: false,
-              addTitle: "常驻人员录入",
-              column: [
-                {
-                  label: "所属企业",
-                  prop: "enterpriseName",
-                  editDisplay: false,
-                  addDisplay: false,
-                },
-                {
-                  label: "所属企业",
-                  prop: "enterpriseId",
-                  type: "select",
-                  width: 250,
-                  search: true,
-                  searchSpan: 6,
-                  overHidden: true,
-                  searchFilterable: true,
-                  filterable: true,
-                  remote: true,
-                  cascaderItem: ['enterpriseDeptId'],
-                  dicUrl: '/api/cyzh-enterprise/enterprise/list?size=100&enterpriseName={{key}}',
-                  dicFormatter: (res) => {
-                    return res.data.records;
-                  },
-                  props: {
-                    label: "enterpriseName",
-                    value: "id"
-                  },
-                  rules: [{
-                    required: true,
-                    message: "请输入所属企业",
-                    trigger: "blur"
-                  }],
-                  hide: true,
-                  viewDisplay: false
-                },
-                {
-                  label: "所属部门",
-                  prop: "enterpriseDeptId",
-                  type: "select",
-                  width: 250,
-                  search: true,
-                  searchSpan: 6,
-                  overHidden: true,
-                  searchFilterable: true,
-                  filterable: true,
-                  dicUrl: '/api/cyzh-enterprise/dept/list?size=10&enterpriseId={{key}}',
-                  dicFormatter: (res) => {
-                    return res.data.records;
-                  },
-                  props: {
-                    label: "name",
-                    value: "id"
-                  },
-                  rules: [{
-                    required: false,
-                    message: "请输入所属部门",
-                    trigger: "blur"
-                  }],
-                  hide: true,
-                  viewDisplay: false
-                },
-                {
-                  label: "姓名",
-                  prop: "realName",
-                  rules: [{
-                    required: true,
-                    message: "请输入真名",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "性别",
-                  prop: "sex",
-                  type: 'select',
-                  width: 100,
-                  dataType: "number",
-                  dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
-                  props: {
-                    label: "dictValue",
-                    value: "dictKey"
-                  },
-                  rules: [{
-                    required: true,
-                    message: "请选择性别",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "邮箱",
-                  prop: "email",
-                  hide: true,
-                  rules: [{
-                    required: false,
-                    message: "请输入邮箱",
-                    trigger: "blur",
-                    // validator: validatedEmail
-                  }]
-                },
-                {
-                  label: "手机",
-                  prop: "phone",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入手机",
-                    trigger: "blur",
-                  }, {
-                    trigger: "blur",
-                    // validator: validatePhone
-                  }]
-                },
-                {
-                  label: "身份证号码",
-                  prop: "idcard",
-                  hide: true,
-                  rules: [{
-                    required: false,
-                    message: "请输入身份证号码",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "人脸",
-                  prop: "face",
-                  type: "upload",
-                  listType: 'picture-img',
-                  propsHttp: {
-                    res: "data",
-                    url: "link"
-                  },
-                  action: "/api/blade-resource/oss/endpoint/put-file",
-                }
-              ],
-              group:[
-                {
-                  icon: 'el-icon-info',
-                  label: '小程序园区管理员设置',
-                  collapse: true,
-                  prop: 'group1',
-                  column: [
-                    {
-                      label: "园区管理员",
-                      prop: "isAgencyManager",
-                      type: "radio",
-                      hide: true,
-                      labelWidth: 130,
-                      span:8,
-                      value: 0,
-                      dicData: [
-                        {
-                          label: "否",
-                          value: 0
-                        },
-                        {
-                          label: "是",
-                          value: 1
-                        }
-                      ],
-                      rules: [{
-                        required: false,
-                        message: "请选择是否为园区管理员",
-                        trigger: "blur"
-                      }],
-                      change: ({value,column}) => {
-                        let agencyAccountObj = this.findObject(this.option.group[0].column, "agencyAccount");
-                        let agencyPasswordObj = this.findObject(this.option.group[0].column, "agencyPassword");
-                        if(value === 1){
-                          agencyAccountObj.display = true;
-                          agencyPasswordObj.display = true;
-                        }else{
-                          agencyAccountObj.display = false;
-                          agencyPasswordObj.display = false;
-                        }
-                      },
-                    },
-                    {
-                      label: "账号",
-                      prop: "agencyAccount",
-                      hide: true,
-                      span: 8,
-                      display: false,
-                      rules: [{
-                        required: true,
-                        message: "请输入小程序园区管理员登录账号",
-                        trigger: "blur"
-                      }]
-                    },
-                    {
-                      label: "密码",
-                      prop: "agencyPassword",
-                      hide: true,
-                      display: false,
-                      span: 8,
-                      rules: [{
-                        required: true,
-                        message: "请输入园区管理员登录密码",
-                        trigger: "blur"
-                      }]
-                    },
-                  ]
-                },
-                {
-                  icon: 'el-icon-info',
-                  label: '小程序企业管理员设置',
-                  collapse: true,
-                  prop: 'group2',
-                  column: [
-                    {
-                      label: "企业管理员",
-                      prop: "isEnterpriseManager",
-                      type: "radio",
-                      value: 0,
-                      labelWidth: 130,
-                      span: 8,
-                      dicData: [
-                        {
-                          label: "否",
-                          value: 0
-                        },
-                        {
-                          label: "是",
-                          value: 1
-                        }
-                      ],
-                      hide: true,
-                      rules: [{
-                        required: false,
-                        message: "请选择是否为企业管理员",
-                        trigger: "blur"
-                      }],
-                      change: ({value,column}) => {
-                        let enterpriseAccountObj = this.findObject(this.option.group[1].column, "enterpriseAccount");
-                        let enterprisePasswordObj = this.findObject(this.option.group[1].column, "enterprisePassword");
-                        if(value === 1){
-                          enterpriseAccountObj.display = true;
-                          enterprisePasswordObj.display = true;
-                        }else{
-                          enterpriseAccountObj.display = false;
-                          enterprisePasswordObj.display = false;
-                        }
-                      },
-                    },
-                    {
-                      label: "账号",
-                      prop: "enterpriseAccount",
-                      display:false,
-                      span: 8,
-                      hide: true,
-                      rules: [{
-                        required: true,
-                        message: "请输入小程序企业管理员登录账号",
-                        trigger: "blur"
-                      }]
-                    },
-                    {
-                      label: "密码",
-                      prop: "enterprisePassword",
-                      hide: true,
-                      display:false,
-                      span: 8,
-                      rules: [{
-                        required: true,
-                        message: "请输入企业管理员登录密码",
-                        trigger: "blur"
-                      }]
-                    },
-                  ]
-                }
-              ]
-            }
+            option: staffOption(this),
           },
           {
             name: '今日访客',
-            num: 12344,
+            num: 0,
             bg: '/img/face/jr_bg.png',
             icon: '/img/face/jr.png',
             color: '#ED866D',
@@ -354,7 +84,7 @@
           },
           {
             name: '服务人员',
-            num: 12344,
+            num: 0,
             bg: '/img/face/fw_bg.png',
             icon: '/img/face/fw.png',
             color: '#4F74DB',
@@ -374,17 +104,17 @@
         ]
       };
     },
-    created(){
+    created() {
       this.loadStat();
     },
     methods: {
-      onClick(item){
+      onClick(item) {
         this.option = item.option;
         this.form = {};
         this.$refs.crud.rowAdd();
       },
-      loadStat(beginDate, endDate){
-        staffStat().then(res =>{
+      loadStat(beginDate, endDate) {
+        staffStat().then(res => {
           this.list[0].num = res.data.data;
         });
         guestStat(null, null).then(res => {
@@ -393,6 +123,9 @@
         serverUserStat(null, null).then(res => {
           this.list[2].num = res.data.data;
         });
+        getTemperatureAnomaliesCount().then(res=>{
+          this.list[3].num = res.data.data;
+        })
       }
     }
   };

+ 32 - 28
src/views/dashboard/onefaceaccess/comps/resident.vue

@@ -1,29 +1,18 @@
 <template>
   <div class="page" style="box-sizing: border-box;position: relative;">
-    <more title="常驻人员"></more>
-    <div style="position: absolute;right: 40px;bottom: 10px;z-index: 999;" v-show="!loading">
-      <span style="color: #3b8ff4;">{{page.current}}</span>
-      /
-      <span style="color: #333333;">{{page.pages}}</span>
-    </div>
-
-    <div class="card-box" style="position: relative;">
-      <div class="changeIcon" style="left: 0px;z-index: 9999;" v-show="!loading">
-        <el-button type="primary" plain size="medium" @click="change('Left')" icon="el-icon-arrow-left" circle>
-        </el-button>
-      </div>
+    <more title="常驻人员" reload @reload="reload"></more>
 
-      <div class="changeIcon" style="right: 0px;z-index: 9999;" v-show="!loading">
-        <el-button type="primary" plain size="medium" @click="change('Right')" icon="el-icon-arrow-right" circle>
-        </el-button>
-      </div>
+    <div style="position: absolute;right: 40px;bottom: 6px;z-index: 999;" v-show="!loading">
+      <el-pagination @current-change="currentChange" small layout="prev, pager, next" :page-count="page.pages">
+      </el-pagination>
+    </div>
 
+    <div class="card-box">
       <div class="card-list animate__animated animate__faster animate__fadeInLeft"
-        style="display: flex;justify-content: center;min-height: 304px;" v-loading="loading">
+        style="display: flex;justify-content: space-between;min-height: 304px;" v-loading="loading">
         <div @click="showDetail(item)" class="card" v-for="(item,index) in list" :key="index">
           <div class="img">
-            <el-image style="width: 100%;height: 100%;" :style="item.faceUrl?'filter: blur(3px);':''"
-              :src="item.faceUrl">
+            <el-image style="width: 100%;height: 100%;" :src="item.faceUrl">
               <img style="width: 100%;height: 100%;" slot="error" src="/img/icon/open.png">
             </el-image>
           </div>
@@ -69,7 +58,7 @@
         loading: true,
         page: {
           current: 1,
-          size: 5,
+          size: 6,
           total: 0,
           pages: 0
         },
@@ -85,12 +74,27 @@
       }
     },
     methods: {
+      async reload(){
+        this.page.current = 1
+        await this.loadStaffRecord()
+        this.$message.success('刷新成功')
+      },
+      currentChange(current) {
+        let oldCurrent = this.page.current
+        if (current > oldCurrent) {
+          this.$animateCss('.card-list', 'animate__slideInRight')
+        } else {
+          this.$animateCss('.card-list', 'animate__slideInLeft')
+        }
+        this.page.current = current
+        this.loadStaffRecord()
+      },
       showDetail(item) {
         let params = {
-          style:'height: 58%;width: 38%;',
+          style: 'height: 58%;width: 38%;',
           title: '常驻人员',
           type: 'visitor',
-          content:item,
+          content: item,
           time: item.createTime
         }
         this.index.$refs.myDialog.open(params)
@@ -146,19 +150,19 @@
   .card-box {
     overflow: hidden;
     position: relative;
+  }
 
-    .changeIcon {
-      position: absolute;
-      bottom: calc(50% - 15px);
-    }
+  .changeIcon {
+    position: absolute;
+    bottom: calc(50% - 15px);
   }
 
   .card {
     background-color: #F5F5F5;
-    margin: 1.25rem 0.625rem 1.25rem 0.625rem;
+    margin: 20px 4px 10px;
     display: flex;
     flex-direction: column;
-    width: 12.5rem;
+    width: calc(16.7% - 5px);
     height: 16.5rem;
 
     .img {

+ 35 - 37
src/views/dashboard/onefaceaccess/comps/strange.vue

@@ -1,28 +1,18 @@
 <template>
   <div class="page" style="box-sizing: border-box;position: relative;">
-    <more title="陌生人员"></more>
-    <div style="position: absolute;right: 40px;bottom: 10px;" v-show="!loading">
-      <span style="color: #3b8ff4;">{{page.current}}</span>
-      /
-      <span style="color: #333333;">{{page.pages}}</span>
+    <more title="陌生人员" reload @reload="reload"></more>
+
+    <div style="position: absolute;right: 40px;bottom: 6px;z-index: 999;" v-show="!loading">
+      <el-pagination @current-change="currentChange" small layout="prev, pager, next" :page-count="page.pages">
+      </el-pagination>
     </div>
 
     <div class="card-box">
-      <div class="changeIcon" style="left: 0px;z-index: 9999;" v-show="!loading">
-        <el-button type="primary" plain size="medium" @click="change('Left')" icon="el-icon-arrow-left" circle>
-        </el-button>
-      </div>
-
-      <div class="changeIcon" style="right: 0px;z-index: 9999;" v-show="!loading">
-        <el-button type="primary" plain size="medium" @click="change('Right')" icon="el-icon-arrow-right" circle>
-        </el-button>
-      </div>
-
       <div class="card-list-strange strange animate__animated animate__faster animate__fadeInLeft"
-        style="display: flex;justify-content: center;min-height: 304px;" v-loading="loading">
+        style="display: flex;justify-content: space-between;min-height: 304px;" v-loading="loading">
         <div class="card" @click="showDetail(item)" v-for="(item,index) in list" :key="index">
           <div class="img">
-            <el-image style="width: 100%;height: 100%;filter: blur(3px)" :src="item.faceUrl"></el-image>
+            <el-image style="width: 100%;height: 100%;" :src="item.faceUrl"></el-image>
           </div>
           <div class="data">
             <div class="left">
@@ -59,13 +49,13 @@
     components: {
       more
     },
-    inject:['index'],
+    inject: ['index'],
     data() {
       return {
         loading: true,
         page: {
           current: 1,
-          size: 5,
+          size: 6,
           total: 0,
           pages: 0
         },
@@ -81,6 +71,21 @@
       }
     },
     methods: {
+      async reload(){
+        this.page.current = 1
+        await this.loadSnapRecord()
+        this.$message.success('刷新成功')
+      },
+      currentChange(current) {
+        let oldCurrent = this.page.current
+        if (current > oldCurrent) {
+          this.$animateCss('.card-list-strange', 'animate__slideInRight')
+        } else {
+          this.$animateCss('.card-list-strange', 'animate__slideInLeft')
+        }
+        this.page.current = current
+        this.loadSnapRecord()
+      },
       showDetail(item) {
         let params = {
           style: 'height: 58%;width: 38%;',
@@ -91,14 +96,13 @@
         }
         this.index.$refs.myDialog.open(params)
       },
-      loadSnapRecord() {
-        getList(this.page.current, this.page.size, {}).then(res => {
-          let data = res.data.data;
-          this.list = data.records;
-          this.page.total = data.total;
-          this.page.pages = data.pages
-          this.loading = false
-        })
+      async loadSnapRecord() {
+        let res=await getList(this.page.current, this.page.size)
+        let data = res.data.data;
+        this.list = data.records;
+        this.page.total = data.total;
+        this.page.pages = data.pages
+        this.loading = false
       },
       change(item) {
         if (item == 'Left') {
@@ -136,15 +140,9 @@
     align-items: center;
   }
 
-
-  .card-box {
-    overflow: hidden;
-    position: relative;
-
-    .changeIcon {
-      position: absolute;
-      bottom: calc(50% - 15px);
-    }
+  .changeIcon {
+    position: absolute;
+    bottom: calc(50% - 15px);
   }
 
   .card {
@@ -152,7 +150,7 @@
     margin: 1.25rem 0.625rem 1.25rem 0.625rem;
     display: flex;
     flex-direction: column;
-    width: 12.5rem;
+    width: calc(16.7% - 5px);
     height: 16.5rem;
 
     .img {

+ 1 - 1
src/views/dashboard/onefaceaccess/comps/today_visitor.vue

@@ -23,7 +23,7 @@
         </div>
       </div>
 
-      <avue-empty v-else style="margin-top: 150px;" image="/img/icon/empty-fk.png"></avue-empty>
+      <avue-empty v-else style="margin-top: 150px;"></avue-empty>
 
     </div>
 

+ 2 - 12
src/views/dashboard/parkingmng/comps/paking-capture.vue

@@ -3,16 +3,6 @@
     <more title="抓拍记录"></more>
 
     <div class="card-box">
-      <div class="changeIcon" style="left: 0px;z-index: 9999;">
-        <el-button type="primary" plain size="medium" @click="change('Left')" icon="el-icon-arrow-left" circle>
-        </el-button>
-      </div>
-
-      <div class="changeIcon" style="right: 0px;z-index: 9999;">
-        <el-button type="primary" plain size="medium" @click="change('Right')" icon="el-icon-arrow-right" circle>
-        </el-button>
-      </div>
-
       <div class="card-list animate__animated animate__faster animate__backInLeft"
         style="display: flex;justify-content: center;">
         <div class="card" v-for="(item,index) in list" :key="index">
@@ -93,11 +83,11 @@
 
   .card {
     background-color: #F5F5F5;
-    margin: 1.25rem 0.625rem 1.25rem 0.625rem;
+    margin:20px 5px 0;
     display: flex;
     flex-direction: column;
     justify-content: space-between;
-    width: 16rem;
+    width: calc(25% - 5px);
     height: 12.5em;
 
     .data {

+ 3 - 0
src/views/dashboard/parkingmng/comps/paking-layout.vue

@@ -444,6 +444,9 @@
         })
       },
       async getParkingArealist() {
+        if (this.$isEmpty(this.parkingLotObj)) {
+          return
+        }
         let res = await getLayout(this.parkingLotObj.id)
         let tmp = res.data.data
         tmp.forEach(item => {

+ 50 - 27
src/views/dashboard/parkingmng/comps/parking-statistics.vue

@@ -1,22 +1,14 @@
 <template>
   <div class="page animate__animated animate__faster animate__fadeInRight">
-    <more title="泊车统计"></more>
+    <more title="泊车统计" nomore></more>
 
     <div class="full center" style="flex-direction: column;">
       <dv-active-ring-chart :config="config" style="width:260px;height:260px" />
 
       <div class="static">
-        <div class="data">
-          <div>总泊车位</div>
-          <div>290</div>
-        </div>
-        <div class="data">
-          <div>已泊车位</div>
-          <div>110</div>
-        </div>
-        <div class="data">
-          <div>剩余车位</div>
-          <div>180</div>
+        <div class="data" v-for="(item,index) in dataList" :key="index">
+          <div>{{item.label}}</div>
+          <div>{{item.value}}</div>
         </div>
       </div>
     </div>
@@ -25,28 +17,59 @@
 
 <script>
   import more from "@/components/more.vue"
+  import {
+    statistics
+  } from "@/api/estate/parkingspace.js"
   export default {
     components: {
       more
     },
     data() {
       return {
-        config: {
-          data: [{
-            name: '剩余车位',
-            value: 180
-          }, {
-            name: '已泊车位',
-            value: 110
-          }],
-          digitalFlopStyle: {
-            fontSize: 16,
-            fill: '#333'
+        dataList: [{
+            label: '总泊车位',
+            value: 0
           },
-          lineWidth: 30,
-          color: ['#4da9ff', '#ff7070']
+          {
+            label: '已泊车位',
+            value: 0
+          },
+          {
+            label: '剩余车位',
+            value: 0
+          }
+        ],
+        config: {}
+      }
+    },
+    created() {
+      this.getStat()
+    },
+    methods: {
+      async getStat() {
+        let data = (await statistics()).data.data
+        if (this.$isNotEmpty(data)) {
+          this.dataList[0].value = data.totalCount
+          this.dataList[1].value = data.isUseCount
+          this.dataList[2].value = data.notUseCount
+          this.config = {
+            data: [{
+              name: '剩余车位',
+              value: data.notUseCount
+            }, {
+              name: '已泊车位',
+              value: data.isUseCount
+            }],
+            digitalFlopStyle: {
+              fontSize: 16,
+              fill: '#333'
+            },
+            lineWidth: 30,
+            color: ['#4da9ff', '#ff7070']
+          }
+          console.log(this.config);
         }
-      };
+      }
     }
   };
 </script>
@@ -80,7 +103,7 @@
       display: flex;
       justify-content: space-between;
 
-      div:last-child{
+      div:last-child {
         font-size: 1rem;
         font-weight: 500;
       }

+ 2 - 14
src/views/dashboard/smartoperationcenter/comps/access_records.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="page_access animate__animated animate__faster animate__fadeInUp">
-    <more title="通行统计" reload @reload="reload(true)"></more>
+    <more title="通行统计" reload @reload="loadRecords(true)"></more>
     <div class="area">
       <div class="area1">日期</div>
       <div class="area2">常驻人员</div>
@@ -29,25 +29,13 @@
     data() {
       return {
         list: [],
-        timer: null
       };
     },
     created() {
       this.loadRecords()
     },
-    beforeDestroy() {
-      clearInterval(this.timer)
-    },
     methods: {
-      loadRecords() {
-        if (!this.timer) {
-          this.reload()
-        }
-        this.timer = setInterval(() => {
-          this.reload()
-        }, 600000)
-      },
-      async reload(toast = false) {
+      async loadRecords(toast = false) {
         let res = await listByDate()
         const data = res.data.data
         this.list = data.records

+ 19 - 16
src/views/dashboard/smartoperationcenter/comps/agency_info.vue

@@ -5,18 +5,16 @@
       <div class="layout_left">
         <div class="top">
           <div class="center">
-            <img src="/img/test/index.png">
+            <el-image class="img" :src="info.img">
+                <img class="img" slot="error" src="/img/icon/agency.jpg">
+            </el-image>
           </div>
           <div class="data">
             <div class="title">
-              信阳榕基软件园
+             {{info.name}}
             </div>
             <div class="desc">
-              榕基软件园地处环境优美的南湾湖风景区新七大道西段,园区占
-              地130亩,总建筑面积18万平方米,绿地率超50%,生态水系
-              6000平方米,其中商业办公和酒店以及配套底商共计8万平方米,
-              地下建筑面积约5万平方米,住宅5万平方米(高层2.8万平方米、
-              多层2.2万平方米约300套)。
+              {{info.description || '暂无园区简介'}}
             </div>
           </div>
         </div>
@@ -42,6 +40,7 @@
   import * as echarts from 'echarts';
   import countTo from 'vue-count-to'
   import more from "@/components/more.vue"
+  import {getAgencyInfo} from "@/api/community/agency.js"
   import {getCount,getBizType} from "@/api/enterprise/enterprise.js"
   export default {
     components: {
@@ -50,17 +49,18 @@
     },
     data() {
       return {
+        info:{},
         list: [{
-            label: '园区面积(m²)',
-            value: 389000
+            label: '楼栋数量',
+            value: 0
           },
           {
-            label: '入企业',
-            value: 6235
+            label: '入企业',
+            value: 0
           },
           {
-            label: '办公人数(人)',
-            value: 12354
+            label: '办公人数',
+            value: 0
           }
         ]
       };
@@ -78,8 +78,11 @@
         }, 300)
       },
       initData(){
-        getCount().then(res=>{
-          this.list[1].value=res.data.data
+        getAgencyInfo().then(res=>{
+          this.info=res.data.data
+          this.list[0].value=this.info.buildingCount || 0
+          this.list[1].value=this.info.companyCount || 0
+          this.list[2].value=this.info.officeCount || 0
         })
       },
       // echarts图表 begin
@@ -167,7 +170,7 @@
         padding: 20px;
         display: flex;
 
-        img {
+        .img {
           width: 120px;
           height: 120px;
         }

+ 2 - 320
src/views/dashboard/smartoperationcenter/comps/grid_list.vue

@@ -23,7 +23,7 @@
         </div>
       </template>
     </avue-crud>
-    <el-dialog :modal-append-to-body="false" :visible.sync="crudDialogShow" :title="crudDialogTitle" width="90%" center @close="dialogClose">
+    <el-dialog :modal-append-to-body="true" :append-to-body="true" :visible.sync="crudDialogShow" :title="crudDialogTitle" width="80%" center @close="dialogClose">
       <avue-crud ref="crud2" :table-loading="loading" :option="option" @search-change="searchChange" @row-update="submit" :page.sync="page" :data="data" @on-load="onLoad" @current-change="currentChange"></avue-crud>
     </el-dialog>
   </div>
@@ -90,325 +90,7 @@
               method: "post",
               url: "/api/cyzh-enterprise/staff/submit"
             },
-            option: {
-                height: 'auto',
-                calcHeight: 30,
-                tip: false,
-                searchShow: true,
-                searchMenuSpan: 6,
-                border: true,
-                index: true,
-                viewBtn: true,
-                selection: true,
-                dialogClickModal: false,
-                addTitle: "员工录入",
-                column: [
-                  {
-                    label: "所属园区",
-                    prop: "agencyName",
-                    addDisplay: false,
-                    editDisplay: false
-                  },
-                  {
-                    label: "所属园区",
-                    prop: "agencyId",
-                    type: "select",
-                    search: true,
-                    searchSpan: 4,
-                    overHidden: true,
-                    searchFilterable: true,
-                    filterable: true,
-                    remote: true,
-                    cascaderItem: ['enterpriseId'],
-                    dicUrl: '/api/cyzh-community/agency/list?size=100',
-                    dicFormatter: (res) => {
-                      return res.data.records;
-                    },
-                    props: {
-                      label: "name",
-                      value: "id"
-                    },
-                    rules: [{
-                      required: true,
-                      message: "请选择所属园区",
-                      trigger: "blur"
-                    }],
-                    hide: true,
-                    viewDisplay: false
-                  },
-                  {
-                    label: "所属企业",
-                    prop: "enterpriseName",
-                    editDisplay: false,
-                    addDisplay: false,
-                  },
-                  {
-                    label: "所属企业",
-                    prop: "enterpriseId",
-                    type: "select",
-                    width: 250,
-                    search: true,
-                    searchSpan: 6,
-                    overHidden: true,
-                    searchFilterable: true,
-                    filterable: true,
-                    remote: true,
-                    cascaderItem: ['enterpriseDeptId'],
-                    dicUrl: '/api/cyzh-enterprise/enterprise/list?size=100&agencyId={{key}}',
-                    dicFormatter: (res) => {
-                      return res.data.records;
-                    },
-                    props: {
-                      label: "enterpriseName",
-                      value: "id"
-                    },
-                    rules: [{
-                      required: true,
-                      message: "请输入所属企业",
-                      trigger: "blur"
-                    }],
-                    hide: true,
-                    viewDisplay: false
-                  },
-                  {
-                    label: "所属部门",
-                    prop: "enterpriseDeptName",
-                  },
-                  {
-                    label: "所属部门",
-                    prop: "enterpriseDeptId",
-                    type: "select",
-                    hide: true,
-                    search: true,
-                    searchSpan: 4,
-                    overHidden: true,
-                    searchFilterable: true,
-                    filterable: true,
-                    dicUrl: '/api/cyzh-enterprise/dept/list?size=10&enterpriseId={{key}}',
-                    dicFormatter: (res) => {
-                      return res.data.records;
-                    },
-                    props: {
-                      label: "name",
-                      value: "id"
-                    },
-                    rules: [{
-                      required: false,
-                      message: "请输入所属部门",
-                      trigger: "blur"
-                    }],
-                    hide: true,
-                    viewDisplay: false
-                  },
-                  {
-                    label: "姓名",
-                    prop: "realName",
-                    rules: [{
-                      required: true,
-                      message: "请输入真名",
-                      trigger: "blur"
-                    }]
-                  },
-                  {
-                    label: "性别",
-                    prop: "sex",
-                    type: 'select',
-                    width: 100,
-                    dataType: "number",
-                    dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
-                    props: {
-                      label: "dictValue",
-                      value: "dictKey"
-                    },
-                    rules: [{
-                      required: true,
-                      message: "请选择性别",
-                      trigger: "blur"
-                    }]
-                  },
-                  {
-                    label: "邮箱",
-                    prop: "email",
-                    hide: true,
-                    rules: [{
-                      required: false,
-                      message: "请输入邮箱",
-                      trigger: "blur",
-                      // validator: validatedEmail
-                    }]
-                  },
-                  {
-                    label: "手机",
-                    prop: "phone",
-                    hide: true,
-                    rules: [{
-                      required: true,
-                      message: "请输入手机",
-                      trigger: "blur",
-                    }, {
-                      trigger: "blur",
-                      // validator: validatePhone
-                    }]
-                  },
-                  {
-                    label: "身份证号码",
-                    prop: "idcard",
-                    hide: true,
-                    rules: [{
-                      required: false,
-                      message: "请输入身份证号码",
-                      trigger: "blur"
-                    }]
-                  },
-                  {
-                    label: "人脸",
-                    prop: "face",
-                    type: "upload",
-                    listType: 'picture-img',
-                    propsHttp: {
-                      res: "data",
-                      url: "link"
-                    },
-                    action: "/api/blade-resource/oss/endpoint/put-file",
-                  }
-                ],
-                group:[
-                  {
-                    icon: 'el-icon-info',
-                    label: '小程序园区管理员设置',
-                    collapse: true,
-                    prop: 'group1',
-                    column: [
-                      {
-                        label: "园区管理员",
-                        prop: "isAgencyManager",
-                        type: "radio",
-                        hide: true,
-                        labelWidth: 130,
-                        span:8,
-                        value: 0,
-                        dicData: [
-                          {
-                            label: "否",
-                            value: 0
-                          },
-                          {
-                            label: "是",
-                            value: 1
-                          }
-                        ],
-                        rules: [{
-                          required: false,
-                          message: "请选择是否为园区管理员",
-                          trigger: "blur"
-                        }],
-                        change: ({value,column}) => {
-                          let agencyAccountObj = this.findObject(this.option.group[0].column, "agencyAccount");
-                          let agencyPasswordObj = this.findObject(this.option.group[0].column, "agencyPassword");
-                          if(value === 1){
-                            agencyAccountObj.display = true;
-                            agencyPasswordObj.display = true;
-                          }else{
-                            agencyAccountObj.display = false;
-                            agencyPasswordObj.display = false;
-                          }
-                        },
-                      },
-                      {
-                        label: "账号",
-                        prop: "agencyAccount",
-                        hide: true,
-                        span: 8,
-                        display: false,
-                        rules: [{
-                          required: true,
-                          message: "请输入小程序园区管理员登录账号",
-                          trigger: "blur"
-                        }]
-                      },
-                      {
-                        label: "密码",
-                        prop: "agencyPassword",
-                        hide: true,
-                        display: false,
-                        span: 8,
-                        rules: [{
-                          required: true,
-                          message: "请输入园区管理员登录密码",
-                          trigger: "blur"
-                        }]
-                      },
-                    ]
-                  },
-                  {
-                    icon: 'el-icon-info',
-                    label: '小程序企业管理员设置',
-                    collapse: true,
-                    prop: 'group2',
-                    column: [
-                      {
-                        label: "企业管理员",
-                        prop: "isEnterpriseManager",
-                        type: "radio",
-                        value: 0,
-                        labelWidth: 130,
-                        span: 8,
-                        dicData: [
-                          {
-                            label: "否",
-                            value: 0
-                          },
-                          {
-                            label: "是",
-                            value: 1
-                          }
-                        ],
-                        hide: true,
-                        rules: [{
-                          required: false,
-                          message: "请选择是否为企业管理员",
-                          trigger: "blur"
-                        }],
-                        change: ({value,column}) => {
-                          let enterpriseAccountObj = this.findObject(this.option.group[1].column, "enterpriseAccount");
-                          let enterprisePasswordObj = this.findObject(this.option.group[1].column, "enterprisePassword");
-                          if(value === 1){
-                            enterpriseAccountObj.display = true;
-                            enterprisePasswordObj.display = true;
-                          }else{
-                            enterpriseAccountObj.display = false;
-                            enterprisePasswordObj.display = false;
-                          }
-                        },
-                      },
-                      {
-                        label: "账号",
-                        prop: "enterpriseAccount",
-                        display:false,
-                        span: 8,
-                        hide: true,
-                        rules: [{
-                          required: true,
-                          message: "请输入小程序企业管理员登录账号",
-                          trigger: "blur"
-                        }]
-                      },
-                      {
-                        label: "密码",
-                        prop: "enterprisePassword",
-                        hide: true,
-                        display:false,
-                        span: 8,
-                        rules: [{
-                          required: true,
-                          message: "请输入企业管理员登录密码",
-                          trigger: "blur"
-                        }]
-                      },
-                    ]
-                  }
-                ]
-              }
+            option: staffOption(this)
           },
           {
             icon: '/img/grid/xzyg.png',

+ 3 - 1
src/views/dashboard/smartoperationcenter/comps/work_order.vue

@@ -7,7 +7,7 @@
       <tab :list="tabList" width="5rem" height="1.875rem" @click="select"></tab>
     </div>
     <!-- 工单列表 -->
-    <div style="padding-top: 0.8rem;">
+    <div style="padding-top: 0.8rem;" v-if="$isNotEmpty(data)">
       <div class="card" v-for="(item,index) in data" :key="index">
         <div class="left">
           <div class="title">{{item.orderName}}</div>
@@ -20,6 +20,8 @@
       </div>
     </div>
 
+    <avue-empty v-else style="margin-top:200px"></avue-empty>
+
   </div>
 </template>
 

+ 2 - 1
src/views/dashboard/smartoperationcenter/option/fkshOption.js

@@ -12,6 +12,7 @@ export default {
   addBtn: false,
   delBtn: false,
   viewBtn: false,
+  align:'center',
   column: [{
       label: "预约开始时间",
       prop: "beginTime",
@@ -162,7 +163,7 @@ export default {
       label: "访客人脸",
       prop: "imageUri",
       type: "upload",
-      width: 150,
+      width: 90,
       listType: 'picture-img',
       propsHttp: {
         res: "data",

+ 1 - 0
src/views/dashboard/smartoperationcenter/option/repairOption.js

@@ -2,6 +2,7 @@ import {
     validatePhone
   } from "@/util/validator";
 export default {
+  dialogWidth: '45%',
   height: 'auto',
   calcHeight: 30,
   labelWidth: 120,

+ 4 - 2
src/views/dashboard/smartoperationcenter/option/workorderOption.js

@@ -1,4 +1,5 @@
 export default {
+  dialogWidth: '45%',
   height: 'auto',
   calcHeight: 30,
   tip: false,
@@ -100,7 +101,8 @@ export default {
         required: false,
         message: "请输入事件描述",
         trigger: "blur"
-      }]
+      }],
+      span:24
     },
     {
       label: "图片",
@@ -118,7 +120,7 @@ export default {
         required: false,
         message: "请上传图片",
         trigger: "blur"
-      }]
+      }],
     },
   ]
 }

+ 19 - 16
src/views/dashboard/smartoperationcenter/option/zcOption.js

@@ -1,4 +1,5 @@
 export default {
+  dialogWidth: '42%',
   height: 'auto',
   calcHeight: 30,
   tip: false,
@@ -11,6 +12,23 @@ export default {
   addTitle: "资产录入",
   dialogClickModal: false,
   column: [{
+      labelWidth: '43%',
+      label: "",
+      prop: "img",
+      type: "upload",
+      listType: 'picture-img',
+      propsHttp: {
+        res: "data",
+        url: "link"
+      },
+      action: "/api/blade-resource/oss/endpoint/put-file",
+      rules: [{
+        required: false,
+        message: "请上传资产图片",
+        trigger: "blur"
+      }],
+      span: 24
+    }, {
       label: "资产名称",
       prop: "assetName",
       rules: [{
@@ -65,21 +83,6 @@ export default {
         trigger: "blur"
       }]
     },
-    {
-      label: "图片",
-      prop: "img",
-      type: "upload",
-      listType: 'picture-img',
-      propsHttp: {
-        res: "data",
-        url: "link"
-      },
-      action: "/api/blade-resource/oss/endpoint/put-file",
-      rules: [{
-        required: false,
-        message: "请上传",
-        trigger: "blur"
-      }]
-    },
+
   ]
 }

+ 0 - 91
src/views/dashboard/smartoperationcenter/smartoperationcenter - 副本.vue

@@ -1,91 +0,0 @@
-<template>
-  <div class="body">
-    <el-row>
-      <!-- 左容器 -->
-      <el-col :span="18">
-        <div style="box-sizing: border-box;margin: 0.625rem;margin-top: 0;">
-
-          <grid-list></grid-list>
-
-          <agency-info></agency-info>
-
-          <div class="my-layout">
-            <div class="layout">
-              <access-records></access-records>
-            </div>
-            <div class="layout">
-              <device></device>
-            </div>
-          </div>
-
-          <div class="my-layout">
-            <div class="layout">
-              <air-quality></air-quality>
-            </div>
-            <div class="layout">
-              <energy></energy>
-            </div>
-          </div>
-
-        </div>
-      </el-col>
-      <!-- 右容器 -->
-      <el-col :span="6">
-        <work-order></work-order>
-      </el-col>
-    </el-row>
-
-    <div style="height: 1.25rem;"></div>
-  </div>
-</template>
-
-<script>
-  import agencyInfo from "./comps/agency_info.vue"
-  import gridList from "./comps/grid_list.vue"
-  import workOrder from './comps/work_order.vue'
-  import accessRecords from './comps/access_records.vue'
-  import device from './comps/device.vue'
-  import airQuality from './comps/air_quality.vue'
-  import energy from './comps/energy.vue'
-  export default {
-    components: {
-      agencyInfo,
-      gridList,
-      workOrder,
-      accessRecords,
-      device,
-      airQuality,
-      energy
-    },
-    data() {
-      return {
-
-      };
-    }
-  };
-</script>
-
-<style>
-  .avue-main {
-    background-color: #F5F5F5 !important;
-  }
-</style>
-
-<style lang="scss" scoped>
-  .body {
-    box-sizing: border-box;
-    background-color: #F5F5F5;
-    height: 100%;
-  }
-
-  .my-layout {
-    margin-top: 0.625rem;
-    display: flex;
-    width: 100%;
-    justify-content: space-between;
-
-    .layout {
-      width: calc(50% - 5px);
-    }
-  }
-</style>

+ 81 - 13
src/views/dashboard/smartoperationcenter/smartoperationcenter.vue

@@ -1,23 +1,91 @@
 <template>
-  <div style="">
-    <device-door></device-door>
+  <div class="body">
+    <el-row>
+      <!-- 左容器 -->
+      <el-col :span="18">
+        <div style="box-sizing: border-box;margin: 0.625rem;margin-top: 0;">
+
+          <grid-list></grid-list>
+
+          <agency-info></agency-info>
+
+          <div class="my-layout">
+            <div class="layout">
+              <access-records></access-records>
+            </div>
+            <div class="layout">
+              <device></device>
+            </div>
+          </div>
+
+          <div class="my-layout">
+            <div class="layout">
+              <air-quality></air-quality>
+            </div>
+            <div class="layout">
+              <energy></energy>
+            </div>
+          </div>
+
+        </div>
+      </el-col>
+      <!-- 右容器 -->
+      <el-col :span="6">
+        <work-order></work-order>
+      </el-col>
+    </el-row>
+
+    <div style="height: 1.25rem;"></div>
   </div>
 </template>
 
 <script>
-  import deviceDoor from "@/components/device-door/device-door.vue"
-export default {
-  components:{
-    deviceDoor
-  },
-  data() {
-    return {
-
-    };
-  }
-};
+  import agencyInfo from "./comps/agency_info.vue"
+  import gridList from "./comps/grid_list.vue"
+  import workOrder from './comps/work_order.vue'
+  import accessRecords from './comps/access_records.vue'
+  import device from './comps/device.vue'
+  import airQuality from './comps/air_quality.vue'
+  import energy from './comps/energy.vue'
+  export default {
+    components: {
+      agencyInfo,
+      gridList,
+      workOrder,
+      accessRecords,
+      device,
+      airQuality,
+      energy
+    },
+    data() {
+      return {
+
+      };
+    }
+  };
 </script>
 
+<style>
+  .avue-main {
+    background-color: #F5F5F5 !important;
+  }
+</style>
+
 <style lang="scss" scoped>
+  .body {
+    box-sizing: border-box;
+    background-color: #F5F5F5;
+    height: 100%;
+  }
+
+  .my-layout {
+    margin-top: 0.625rem;
+    display: flex;
+    width: 100%;
+    justify-content: space-between;
 
+    .layout {
+      width: calc(50% - 5px);
+    }
+  }
 </style>

+ 231 - 234
src/views/enterprise/option/enterpriseOption.js

@@ -2,6 +2,7 @@ import {
   validateTelphone
 } from "@/util/validator.js";
 export default {
+  dialogWidth: '50%',
   height: 'auto',
   calcHeight: 30,
   labelWidth: 120,
@@ -14,242 +15,238 @@ export default {
   selection: true,
   dialogClickModal: false,
   addTitle: "企业录入",
-  column: [
-    {
-      label: "企业名称",
-      prop: "enterpriseName",
-      search: true,
-      rules: [{
-        required: true,
-        message: "请输入企业名称",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "企业类型",
-      prop: "enterpriseType",
-      type: "select",
-      rules: [{
-        required: true,
-        message: "请输入企业类型",
-        trigger: "blur"
-      }],
-      dicUrl: "/api/blade-system/dict-biz/dictionary?code=enterprise_type",
-      props: {
-        label: "dictValue",
-        value: "dictKey"
-      },
-    },
-    {
-      label: "业务类型",
-      prop: "bizType",
-      type: "select",
-      rules: [{
-        required: true,
-        message: "请选择业务类型",
-        trigger: "blur"
-      }],
-      dicUrl: "/api/blade-system/dict-biz/dictionary?code=enterprise_biz_type",
-      props: {
-        label: "dictValue",
-        value: "dictKey"
-      },
-    },
-    {
-      label: "组织机构代码",
-      prop: "organizationCode",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入组织机构代码",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "统一信用代码",
-      prop: "creditCode",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入统一信用代码",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "注册资金",
-      prop: "registeredCapital",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入注册资金",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "注册地址",
-      prop: "registeredAddress",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入注册地址",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "法定代表人",
-      prop: "representative",
-      rules: [{
-        required: false,
-        message: "请输入法定代表人",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "成立日期",
-      prop: "registeredDate",
-      type: 'date',
-      format: 'yyyy-MM-dd',
-      valueFormat: 'yyyy-MM-dd',
-      rules: [{
-        required: false,
-        message: "请输入成立日期",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "办公电话",
-      prop: "officeNum",
-      row:true,
-      rules: [{
-        required: false,
-        message: "请输入办公电话",
-        trigger: "blur"
-      }, {
-        validator: validateTelphone,
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "企业简介",
-      prop: "enterpriseIntroduce",
-      hide: true,
-      span:24,
-      type: 'textarea',
-      rules: [{
-        required: false,
-        message: "请输入企业简介",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "营业执照",
-      prop: "businessLicense",
-      type: "upload",
-      span: 12,
-      width: 200,
-      listType: 'picture-img',
-      propsHttp: {
-        res: "data",
-        url: "link"
-      },
-      tip: '只能生产jpg/png图片,且不超过500kb',
-      action: "/api/blade-resource/oss/endpoint/put-file",
-      rules: [{
-        required: false,
-        message: "请输入营业执照",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "logo",
-      prop: "logo",
-      type: "upload",
-      span: 12,
-      listType: 'picture-img',
-      propsHttp: {
-        res: "data",
-        url: "link"
-      },
-      tip: '只能生产jpg/png图片,且不超过500kb',
-      action: "/api/blade-resource/oss/endpoint/put-file",
-      rules: [{
-        required: false,
-        message: "请输入logo",
-        trigger: "blur"
-      }]
-    },
-  ],
-  group:[
-    {
-      icon: 'el-icon-info',
-      label: '地理位置',
-      collapse: true,
-      prop: 'group1',
-      column:[
-        {
-          label: '',
-          prop: 'mapSelect',
-          // row: true,
-          // span: 20,
-          viewDisplay: false,
-          formslot: true,
-          hide: true,
+  group: [{
+    label: '基本信息',
+    prop: 'group1',
+    column: [{
+        label: "企业名称",
+        prop: "enterpriseName",
+        search: true,
+        rules: [{
+          required: true,
+          message: "请输入企业名称",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "企业类型",
+        prop: "enterpriseType",
+        type: "select",
+        rules: [{
+          required: true,
+          message: "请输入企业类型",
+          trigger: "blur"
+        }],
+        dicUrl: "/api/blade-system/dict-biz/dictionary?code=enterprise_type",
+        props: {
+          label: "dictValue",
+          value: "dictKey"
         },
-        {
-          label: "经度",
-          prop: "longitude",
-          hide: true,
-          rules: [{
-            required: false,
-            message: "请输入经度",
-            trigger: "blur"
-          }]
+      },
+      {
+        label: "业务类型",
+        prop: "bizType",
+        type: "select",
+        rules: [{
+          required: true,
+          message: "请选择业务类型",
+          trigger: "blur"
+        }],
+        dicUrl: "/api/blade-system/dict-biz/dictionary?code=enterprise_biz_type",
+        props: {
+          label: "dictValue",
+          value: "dictKey"
         },
-        {
-          label: "纬度",
-          prop: "latitude",
-          hide: true,
-          rules: [{
-            required: false,
-            message: "请输入纬度",
-            trigger: "blur"
-          }]
+      },
+      {
+        label: "组织机构代码",
+        prop: "organizationCode",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入组织机构代码",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "统一信用代码",
+        prop: "creditCode",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入统一信用代码",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "注册资金",
+        prop: "registeredCapital",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入注册资金",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "注册地址",
+        prop: "registeredAddress",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入注册地址",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "法定代表人",
+        prop: "representative",
+        rules: [{
+          required: false,
+          message: "请输入法定代表人",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "成立日期",
+        prop: "registeredDate",
+        type: 'date',
+        format: 'yyyy-MM-dd',
+        valueFormat: 'yyyy-MM-dd',
+        rules: [{
+          required: false,
+          message: "请输入成立日期",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "办公电话",
+        prop: "officeNum",
+        row: true,
+        rules: [{
+          required: false,
+          message: "请输入办公电话",
+          trigger: "blur"
+        }, {
+          validator: validateTelphone,
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "企业简介",
+        prop: "enterpriseIntroduce",
+        hide: true,
+        span: 24,
+        type: 'textarea',
+        rules: [{
+          required: false,
+          message: "请输入企业简介",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "营业执照",
+        prop: "businessLicense",
+        type: "upload",
+        span: 12,
+        width: 200,
+        listType: 'picture-img',
+        propsHttp: {
+          res: "data",
+          url: "link"
         },
-        {
-          label: "所属区域",
-          prop: "residentialId",
-          // slot: true,
-          type: "select",
-          search: true,
-          searchFilterable: true,
-          // cascaderItem: ['buildingId'],
-          dicUrl: "/api/cyzh-community/residential/list?size=9000",
-          dicFormatter: (res) => {
-            return res.data.records; //返回字典的层级结构
-          },
-          // dicFlag: false,
-          filterable: true,
-          props: {
-            label: "name",
-            value: "id"
-          },
-          rules: [{
-            required: false,
-            message: "请选择",
-            trigger: "blur"
-          }]
+        action: "/api/blade-resource/oss/endpoint/put-file",
+        rules: [{
+          required: false,
+          message: "请输入营业执照",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "logo",
+        prop: "logo",
+        type: "upload",
+        span: 12,
+        listType: 'picture-img',
+        propsHttp: {
+          res: "data",
+          url: "link"
         },
-        {
-          label: "详细地址",
-          prop: "region",
-          overHidden: true,
-          rules: [{
-            required: false,
-            message: "请输入详细地址",
-            trigger: "blur"
-          }]
-        }
-      ]
-    },
-  ]
+        action: "/api/blade-resource/oss/endpoint/put-file",
+        rules: [{
+          required: false,
+          message: "请输入logo",
+          trigger: "blur"
+        }]
+      },
+    ]
+  }, {
+    label: '地理位置',
+    collapse: false,
+    prop: 'group2',
+    column: [{
+        label: '',
+        prop: 'mapSelect',
+        // row: true,
+        // span: 20,
+        viewDisplay: false,
+        formslot: true,
+        hide: true,
+      },
+      {
+        label: "经度",
+        prop: "longitude",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入经度",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "纬度",
+        prop: "latitude",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入纬度",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "所属区域",
+        prop: "residentialId",
+        // slot: true,
+        type: "select",
+        search: true,
+        searchFilterable: true,
+        // cascaderItem: ['buildingId'],
+        dicUrl: "/api/cyzh-community/residential/list?size=9000",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        // dicFlag: false,
+        filterable: true,
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请选择",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "详细地址",
+        prop: "region",
+        overHidden: true,
+        rules: [{
+          required: false,
+          message: "请输入详细地址",
+          trigger: "blur"
+        }]
+      }
+    ]
+  }, ]
 }

+ 313 - 275
src/views/enterprise/option/staffOption.js

@@ -2,291 +2,329 @@ import {
   validatedEmail,
   validatePhone
 } from "@/util/validator.js";
-export default {
-  height: 'auto',
-  calcHeight: 30,
-  tip: false,
-  searchShow: true,
-  searchMenuSpan: 4,
-  border: true,
-  index: true,
-  viewBtn: true,
-  selection: true,
-  dialogClickModal: false,
-  addTitle: "员工录入",
-  column: [
-    {
-      label: "所属园区",
-      prop: "agencyId",
-      type: "select",
-      search: true,
-      searchSpan: 4,
-      overHidden: true,
-      searchFilterable: true,
-      filterable: true,
-      remote: true,
-      cascaderItem: ['enterpriseId'],
-      dicUrl: '/api/cyzh-community/agency/list?size=100',
-      dicFormatter: (res) => {
-        return res.data.records;
+export default (_this) => {
+  return {
+    dialogWidth:'45%',
+    height: 'auto',
+    calcHeight: 30,
+    tip: false,
+    searchShow: true,
+    searchMenuSpan: 6,
+    border: true,
+    index: true,
+    viewBtn: true,
+    selection: true,
+    gutter:30,
+    dialogClickModal: false,
+    addTitle: "员工录入",
+    column: [
+      {
+        labelWidth:'45%',
+        label: "",
+        prop: "face",
+        type: "upload",
+        listType: 'picture-img',
+        propsHttp: {
+          res: "data",
+          url: "link"
+        },
+        action: "/api/blade-resource/oss/endpoint/put-file",
+        span:24,
       },
-      props: {
-        label: "agencyName",
-        value: "id"
+      {
+        label: "所属园区",
+        prop: "agencyName",
+        addDisplay: false,
+        editDisplay: false
       },
-      rules: [{
-        required: true,
-        message: "请选择所属园区",
-        trigger: "blur"
-      }],
-      viewDisplay: false
-    },
-    {
-      label: "所属企业",
-      prop: "enterpriseName",
-      editDisplay: false,
-      addDisplay: false,
-    },
-    {
-      label: "所属企业",
-      prop: "enterpriseId",
-      type: "select",
-      search: true,
-      searchSpan: 4,
-      overHidden: true,
-      searchFilterable: true,
-      filterable: true,
-      remote: true,
-      cascaderItem: ['enterpriseDeptId'],
-      dicUrl: '/api/cyzh-enterprise/enterprise/list?size=100&enterpriseName={{key}}',
-      dicFormatter: (res) => {
-        return res.data.records;
+      {
+        label: "所属园区",
+        prop: "agencyId",
+        type: "select",
+        search: true,
+        searchSpan: 4,
+        overHidden: true,
+        searchFilterable: true,
+        filterable: true,
+        remote: true,
+        cascaderItem: ['enterpriseId'],
+        dicUrl: '/api/cyzh-community/agency/list?size=100',
+        dicFormatter: (res) => {
+          return res.data.records;
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: true,
+          message: "请选择所属园区",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
       },
-      props: {
-        label: "enterpriseName",
-        value: "id"
+      {
+        label: "所属企业",
+        prop: "enterpriseName",
+        editDisplay: false,
+        addDisplay: false,
       },
-      rules: [{
-        required: true,
-        message: "请输入所属企业",
-        trigger: "blur"
-      }],
-      hide: true,
-      viewDisplay: false
-    },
-    {
-      label: "所属部门",
-      prop: "enterpriseDeptId",
-      type: "select",
-      width: 250,
-      search: true,
-      searchSpan: 4,
-      overHidden: true,
-      searchFilterable: true,
-      filterable: true,
-      dicUrl: '/api/cyzh-enterprise/dept/list?size=10&enterpriseId={{key}}',
-      dicFormatter: (res) => {
-        return res.data.records;
+      {
+        label: "所属企业",
+        prop: "enterpriseId",
+        type: "select",
+        width: 250,
+        search: true,
+        searchSpan: 6,
+        overHidden: true,
+        searchFilterable: true,
+        filterable: true,
+        remote: true,
+        cascaderItem: ['enterpriseDeptId'],
+        dicUrl: '/api/cyzh-enterprise/enterprise/list?size=100&agencyId={{key}}',
+        dicFormatter: (res) => {
+          return res.data.records;
+        },
+        props: {
+          label: "enterpriseName",
+          value: "id"
+        },
+        rules: [{
+          required: true,
+          message: "请输入所属企业",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
       },
-      props: {
-        label: "name",
-        value: "id"
+      {
+        label: "所属部门",
+        prop: "enterpriseDeptName",
       },
-      rules: [{
-        required: false,
-        message: "请输入所属部门",
-        trigger: "blur"
-      }],
-      hide: true,
-      viewDisplay: false
-    },
-    {
-      label: "姓名",
-      prop: "realName",
-      rules: [{
-        required: true,
-        message: "请输入真名",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "性别",
-      prop: "sex",
-      type: 'select',
-      width: 100,
-      dataType: "number",
-      dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
-      props: {
-        label: "dictValue",
-        value: "dictKey"
+      {
+        label: "所属部门",
+        prop: "enterpriseDeptId",
+        type: "select",
+        hide: true,
+        search: true,
+        searchSpan: 4,
+        overHidden: true,
+        searchFilterable: true,
+        filterable: true,
+        dicUrl: '/api/cyzh-enterprise/dept/list?size=10&enterpriseId={{key}}',
+        dicFormatter: (res) => {
+          return res.data.records;
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请输入所属部门",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
       },
-      rules: [{
-        required: false,
-        message: "请选择性别",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "邮箱",
-      prop: "email",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入邮箱",
-        trigger: "blur",
-        validator: validatedEmail
-      }]
-    },
-    {
-      label: "手机",
-      prop: "phone",
-      hide: true,
-      rules: [{
-        required: true,
-        message: "请输入手机",
-        trigger: "blur",
-      }, {
-        trigger: "blur",
-        validator: validatePhone
-      }]
-    },
-    {
-      label: "身份证号码",
-      prop: "idcard",
-      hide: true,
-      rules: [{
-        required: false,
-        message: "请输入身份证号码",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "人脸",
-      prop: "face",
-      type: "upload",
-      listType: 'picture-img',
-      propsHttp: {
-        res: "data",
-        url: "link"
+      {
+        label: "姓名",
+        prop: "realName",
+        rules: [{
+          required: true,
+          message: "请输入真名",
+          trigger: "blur"
+        }]
       },
-      action: "/api/blade-resource/oss/endpoint/put-file",
-    }
-  ],
-  group:[
-    {
-      icon: 'el-icon-info',
-      label: '小程序相关',
-      collapse: false,
-      prop: 'group1',
-      column: [
-        {
-          label: "小程序园区管理员",
-          prop: "isAgencyManager",
-          type: "radio",
-          hide: true,
-          labelWidth: 130,
-          span: 12,
-          value: 0,
-          dicData: [
-            {
-              label: "否",
-              value: 0
+      {
+        label: "性别",
+        prop: "sex",
+        type: 'select',
+        width: 100,
+        dataType: "number",
+        dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
+        props: {
+          label: "dictValue",
+          value: "dictKey"
+        },
+        rules: [{
+          required: true,
+          message: "请选择性别",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "邮箱",
+        prop: "email",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入邮箱",
+          trigger: "blur",
+          // validator: validatedEmail
+        }]
+      },
+      {
+        label: "手机",
+        prop: "phone",
+        hide: true,
+        rules: [{
+          required: true,
+          message: "请输入手机",
+          trigger: "blur",
+        }, {
+          trigger: "blur",
+          // validator: validatePhone
+        }]
+      },
+      {
+        label: "身份证号码",
+        prop: "idcard",
+        hide: true,
+        rules: [{
+          required: false,
+          message: "请输入身份证号码",
+          trigger: "blur"
+        }]
+      },
+
+    ],
+    group: [{
+        label: '小程序园区管理员设置',
+        collapse: true,
+        prop: 'group1',
+        column: [{
+            label: "园区管理员",
+            prop: "isAgencyManager",
+            type: "radio",
+            hide: true,
+            labelWidth: 130,
+            span: 8,
+            value: 0,
+            dicData: [{
+                label: "否",
+                value: 0
+              },
+              {
+                label: "是",
+                value: 1
+              }
+            ],
+            rules: [{
+              required: false,
+              message: "请选择是否为园区管理员",
+              trigger: "blur"
+            }],
+            change: ({
+              value,
+              column
+            }) => {
+              let agencyAccountObj = _this.findObject(_this.option.group[0].column, "agencyAccount");
+              let agencyPasswordObj = _this.findObject(_this.option.group[0].column, "agencyPassword");
+              if (value === 1) {
+                agencyAccountObj.display = true;
+                agencyPasswordObj.display = true;
+              } else {
+                agencyAccountObj.display = false;
+                agencyPasswordObj.display = false;
+              }
             },
-            {
-              label: "是",
-              value: 1
-            }
-          ],
-          rules: [{
-            required: false,
-            message: "请选择是否为园区管理员",
-            trigger: "blur"
-          }],
-          change: ({value,column}) => {
-            debugger
-            let agencyAccountObj = this.findObject(this.group.column, "agencyAccount");
-            let agencyPasswordObj = this.findObject(this.group.column, "agencyPassword");
-            if(value === 1){
-              agencyAccountObj.rules[0].required = true;
-              agencyPasswordObj.rules[0].required = true;
-            }else{
-              agencyAccountObj.rules[0].required = false;
-              agencyPasswordObj.rules[0].required = false;
-            }
           },
-        },
-        {
-          label: "小程序企业管理员",
-          prop: "isEnterpriseManager",
-          type: "radio",
-          value: 0,
-          span: 12,
-          labelWidth: 130,
-          dicData: [
-            {
-              label: "否",
-              value: 0
+          {
+            label: "账号",
+            prop: "agencyAccount",
+            hide: true,
+            span: 8,
+            display: false,
+            rules: [{
+              required: true,
+              message: "请输入小程序园区管理员登录账号",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "密码",
+            prop: "agencyPassword",
+            hide: true,
+            display: false,
+            span: 8,
+            rules: [{
+              required: true,
+              message: "请输入园区管理员登录密码",
+              trigger: "blur"
+            }]
+          },
+        ]
+      },
+      {
+        label: '小程序企业管理员设置',
+        collapse: true,
+        prop: 'group2',
+        column: [{
+            label: "企业管理员",
+            prop: "isEnterpriseManager",
+            type: "radio",
+            value: 0,
+            labelWidth: 130,
+            span: 8,
+            dicData: [{
+                label: "否",
+                value: 0
+              },
+              {
+                label: "是",
+                value: 1
+              }
+            ],
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请选择是否为企业管理员",
+              trigger: "blur"
+            }],
+            change: ({
+              value,
+              column
+            }) => {
+              let enterpriseAccountObj = _this.findObject(_this.option.group[1].column, "enterpriseAccount");
+              let enterprisePasswordObj = _this.findObject(_this.option.group[1].column, "enterprisePassword");
+              if (value === 1) {
+                enterpriseAccountObj.display = true;
+                enterprisePasswordObj.display = true;
+              } else {
+                enterpriseAccountObj.display = false;
+                enterprisePasswordObj.display = false;
+              }
             },
-            {
-              label: "是",
-              value: 1
-            }
-          ],
-          hide: true,
-          rules: [{
-            required: false,
-            message: "请选择是否为企业管理员",
-            trigger: "blur"
-          }],
-          change: ({value,column}) => {
-
           },
-        },
-        {
-          label: "园区管理员登录账号",
-          prop: "agencyAccount",
-          hide: true,
-          labelWidth:160,
-          rules: [{
-            required: true,
-            message: "请输入小程序园区管理员登录账号",
-            trigger: "blur"
-          }]
-        },
-        {
-          label: "小程序企业管理员账号",
-          prop: "enterpriseAccount",
-          labelWidth:160,
-          hide: true,
-          rules: [{
-            required: true,
-            message: "请输入小程序企业管理员登录账号",
-            trigger: "blur"
-          }]
-        },
-        {
-          label: "小程序园区管理员密码",
-          prop: "agencyPassword",
-          hide: true,
-          labelWidth:160,
-          rules: [{
-            required: true,
-            message: "请输入园区管理员登录密码",
-            trigger: "blur"
-          }]
-        },
-        {
-          label: "企业管理员登录密码",
-          prop: "enterprisePassword",
-          hide: true,
-          labelWidth:160,
-          rules: [{
-            required: true,
-            message: "请输入企业管理员登录密码",
-            trigger: "blur"
-          }]
-        },
-      ]
-    }
-  ]
+          {
+            label: "账号",
+            prop: "enterpriseAccount",
+            display: false,
+            span: 8,
+            hide: true,
+            rules: [{
+              required: true,
+              message: "请输入小程序企业管理员登录账号",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "密码",
+            prop: "enterprisePassword",
+            hide: true,
+            display: false,
+            span: 8,
+            rules: [{
+              required: true,
+              message: "请输入企业管理员登录密码",
+              trigger: "blur"
+            }]
+          },
+        ]
+      }
+    ]
+  }
+
 }

+ 1 - 1
src/views/enterprise/staff.vue

@@ -121,7 +121,7 @@
           total: 0
         },
         selectionList: [],
-        option:staffOption,
+        option:staffOption(this),
         data: []
       };
     },

+ 140 - 127
src/views/estate/guestmng/option/guestOption.js

@@ -1,4 +1,5 @@
 export default {
+  dialogWidth: '43%',
   menuWidth: 300,
   height: 'auto',
   calcHeight: 30,
@@ -9,32 +10,29 @@ export default {
   index: true,
   addBtn: true,
   delBtn: true,
+  align: 'left',
   viewBtn: true,
   selection: true,
   dialogClickModal: false,
   addTitle: "访客录入",
   column: [{
-      label: "预约开始时间",
-      prop: "beginTime",
-      type: "datetime",
-      labelWidth: 100,
-      format: "yyyy-MM-dd HH:mm:ss",
-      valueFormat: "yyyy-MM-dd HH:mm:ss"
-    },
-    {
-      label: "预约结束时间",
-      prop: "endTime",
-      type: "datetime",
-      labelWidth: 100,
-      format: "yyyy-MM-dd HH:mm:ss",
-      valueFormat: "yyyy-MM-dd HH:mm:ss"
-    },
-    {
-      label: "登记来源",
-      prop: "registerSource",
-      slot: true,
-      editDisplay: false,
-      addDisplay: false,
+      labelWidth: '45%',
+      label: "",
+      prop: "imageUri",
+      type: "upload",
+      width: 150,
+      listType: 'picture-img',
+      propsHttp: {
+        res: "data",
+        url: "link"
+      },
+      action: "/api/blade-resource/oss/endpoint/put-file",
+      rules: [{
+        required: false,
+        message: "请上传访客人脸",
+        trigger: "blur"
+      }],
+      span: 24
     },
     {
       label: "访客姓名",
@@ -66,115 +64,130 @@ export default {
         trigger: "blur"
       }]
     },
-    {
-      label: "拜访园区",
-      prop: "agencyId",
-      cascaderItem: ['enterpriseId'],
-      type: "select",
-      remote: true,
-      hide: true,
-      search: true,
-      viewDisplay: false,
-      dicUrl: "/api/cyzh-community/agency/list?name={{key}}",
-      dicFormatter: (res) => {
-        return res.data.records; //返回字典的层级结构
+
+  ],
+  group: [{
+    label: '拜访信息',
+    prop: 'group2',
+    column: [{
+        label: "预约开始时间",
+        prop: "beginTime",
+        type: "datetime",
+        labelWidth: 100,
+        format: "yyyy-MM-dd HH:mm:ss",
+        valueFormat: "yyyy-MM-dd HH:mm:ss"
       },
-      props: {
-        label: "name",
-        value: "id"
+      {
+        label: "预约结束时间",
+        prop: "endTime",
+        type: "datetime",
+        labelWidth: 100,
+        format: "yyyy-MM-dd HH:mm:ss",
+        valueFormat: "yyyy-MM-dd HH:mm:ss"
       },
-      rules: [{
-        required: true,
-        message: "请选择拜访园区",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "拜访企业",
-      prop: "enterpriseId",
-      type: "select",
-      search: true,
-      hide: true,
-      viewDisplay: false,
-      dicUrl: "/api/cyzh-enterprise/enterprise/list?agencyId={{key}}",
-      dicFormatter: (res) => {
-        return res.data.records; //返回字典的层级结构
+      {
+        label: "登记来源",
+        prop: "registerSource",
+        slot: true,
+        editDisplay: false,
+        addDisplay: false,
       },
-      // dicFlag: false,
-      filterable: true,
-      props: {
-        label: "enterpriseName",
-        value: "id"
+      {
+        label: "拜访园区",
+        prop: "agencyId",
+        cascaderItem: ['enterpriseId'],
+        type: "select",
+        remote: true,
+        hide: true,
+        search: true,
+        viewDisplay: false,
+        dicUrl: "/api/cyzh-community/agency/list?name={{key}}",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: true,
+          message: "请选择拜访园区",
+          trigger: "blur"
+        }]
       },
-      rules: [{
-        required: true,
-        message: "请选择拜访企业",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "拜访园区",
-      prop: "agencyName",
-      editDisplay: false,
-      addDisplay: false,
-    },
-    {
-      label: "拜访企业",
-      prop: "enterpriseName",
-      editDisplay: false,
-      addDisplay: false,
-    },
-    {
-      label: "审核状态",
-      prop: "checkState",
-      slot: true,
-      type: 'select',
-      addDisplay: false,
-      dicData: [{
-        label: '待审核',
-        value: 0,
-        color: 'red'
-      }, {
-        label: '审核通过',
-        value: 1
-      }, {
-        label: '审核不通过',
-        value: 2
-      }]
-    },
-    {
-      label: "审核意见",
-      prop: "opinion",
-      hide: true,
-      editDisplay: false,
-      addDisplay: false
-    },
-    {
-      label: "访客事由",
-      prop: "guestReason",
-      type: 'textarea',
-      rules: [{
-        required: false,
-        message: "请输入访问缘由",
-        trigger: "blur"
-      }]
-    },
-    {
-      label: "访客人脸",
-      prop: "imageUri",
-      type: "upload",
-      width: 150,
-      listType: 'picture-img',
-      propsHttp: {
-        res: "data",
-        url: "link"
+      {
+        label: "拜访企业",
+        prop: "enterpriseId",
+        type: "select",
+        search: true,
+        hide: true,
+        viewDisplay: false,
+        dicUrl: "/api/cyzh-enterprise/enterprise/list?agencyId={{key}}",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        // dicFlag: false,
+        filterable: true,
+        props: {
+          label: "enterpriseName",
+          value: "id"
+        },
+        rules: [{
+          required: true,
+          message: "请选择拜访企业",
+          trigger: "blur"
+        }],
       },
-      action: "/api/blade-resource/oss/endpoint/put-file",
-      rules: [{
-        required: false,
-        message: "请上传访客人脸",
-        trigger: "blur"
-      }]
-    },
-  ]
+      {
+        label: "拜访园区",
+        prop: "agencyName",
+        editDisplay: false,
+        addDisplay: false,
+      },
+      {
+        label: "拜访企业",
+        prop: "enterpriseName",
+        editDisplay: false,
+        addDisplay: false,
+      },
+      {
+        label: "审核状态",
+        prop: "checkState",
+        slot: true,
+        type: 'select',
+        addDisplay: false,
+        dicData: [{
+          label: '待审核',
+          value: 0,
+          color: 'red'
+        }, {
+          label: '审核通过',
+          value: 1
+        }, {
+          label: '审核不通过',
+          value: 2
+        }]
+      },
+      {
+        label: "审核意见",
+        prop: "opinion",
+        hide: true,
+        editDisplay: false,
+        addDisplay: false
+      },
+      {
+        label: "访客事由",
+        prop: "guestReason",
+        type: 'textarea',
+        rules: [{
+          required: false,
+          message: "请输入访问缘由",
+          trigger: "blur"
+        }],
+
+      },
+
+    ]
+  }],
+
 }

+ 275 - 261
src/views/parkingmng/option/parkinglotmng-option.js

@@ -3,6 +3,7 @@ import {
 } from "@/util/validator";
 export default (safe) => {
   return {
+    dialogWidth:'44%',
     height: 'auto',
     calcHeight: 30,
     labelWidth: 120,
@@ -10,274 +11,287 @@ export default (safe) => {
     searchShow: true,
     searchMenuSpan: 6,
     border: true,
+    gutter:20,
     index: true,
     viewBtn: true,
     selection: true,
     dialogClickModal: false,
-    column: [{
-        label: "索引ID",
-        prop: "indexId",
-        hide: true,
-        display: false,
-        rules: [{
-          required: true,
-          message: "请输入索引ID",
-          trigger: "blur"
-        }]
+    group: [{
+        label: '基本信息',
+        prop: 'group1',
+        column: [{
+            label: "索引ID",
+            prop: "indexId",
+            hide: true,
+            display: false,
+            rules: [{
+              required: true,
+              message: "请输入索引ID",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "停车场名称",
+            prop: "parkName",
+            search: true,
+            searchLabelWidth: 100,
+            rules: [{
+              required: true,
+              message: "请输入停车场名称",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "车场编号",
+            prop: "parkKey",
+            rules: [{
+              required: true,
+              message: "请输入车场唯一编号",
+              trigger: "blur"
+            }],
+            hide: true
+          },
+          {
+            label: "车场联系方式",
+            prop: "parkTel",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车场联系方式",
+              trigger: "blur"
+            }, {
+              validator: validatePhone,
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "车场联系人",
+            prop: "parkLinkman",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车场联系人",
+              trigger: "blur"
+            }]
+          },
+          // {
+          //   label: "免费分钟数	",
+          //   prop: "parkFreeTime",
+          //   hide: true,
+          //   rules: [{
+          //     required: false,
+          //     message: "请输入免费分钟数	",
+          //     trigger: "blur"
+          //   }]
+          // },
+          // {
+          //   label: "免费超时分钟数	",
+          //   prop: "parkFreeTimeout",
+          //   hide: true,
+          //   rules: [{
+          //     required: false,
+          //     message: "请输入免费超时分钟数	",
+          //     trigger: "blur"
+          //   }]
+          // },
+          {
+            label: "车场收费说明	",
+            prop: "chargesDesc",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车场收费说明	",
+              trigger: "blur"
+            }]
+          },
+          // {
+          //   label: "停车场是否启用预定功能",
+          //   prop: "reserveStatus",
+          //   hide: true,
+          //   rules: [{
+          //     required: false,
+          //     message: "请输入停车场是否启用预定功能",
+          //     trigger: "blur"
+          //   }]
+          // },
+          {
+            label: "创建时间	",
+            prop: "createTime",
+            type: 'date',
+            valueFormat: 'yyyy-MM-dd',
+            rules: [{
+              required: false,
+              message: "创建时间	",
+              trigger: "blur"
+            }],
+            disabled: true,
+            addDisplay: false,
+            editDisplay: false,
+          },
+          // {
+          //   label: "注册时间	",
+          //   prop: "regTime",
+          //   type: 'date',
+          //   valueFormat: 'yyyy-MM-dd',
+          //   rules: [{
+          //     required: false,
+          //     message: "请输入注册时间	",
+          //     trigger: "blur"
+          //   }]
+          // },
+          // {
+          //   label: "停车场有效期止日	",
+          //   prop: "validTime",
+          //   hide: true,
+          //   type: 'date',
+          //   valueFormat: 'yyyy-MM-dd',
+          //   rules: [{
+          //     required: false,
+          //     message: "请输入停车场有效期止日	",
+          //     trigger: "blur"
+          //   }]
+          // },
+          {
+            label: "车位总数",
+            prop: "spaceTotal",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车位总数",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "车牌地区简称	",
+            prop: "cityShortName",
+            hide: true,
+            display: false,
+            rules: [{
+              required: false,
+              message: "请输入车牌地区简称	",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "空余车位",
+            prop: "remainSpace",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入空余车位",
+              trigger: "blur"
+            }],
+            disabled: true,
+            editDisplay: false,
+            addDisplay: false,
+          }
+        ]
       },
       {
-        label: "停车场名称",
-        prop: "parkName",
-        search: true,
-        searchLabelWidth: 100,
-        rules: [{
-          required: true,
-          message: "请输入停车场名称",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车场编号",
-        prop: "parkKey",
-        rules: [{
-          required: true,
-          message: "请输入车场唯一编号",
-          trigger: "blur"
-        }],
-        hide: true
-      },
-      {
-        label: "所属园区",
-        prop: "agencyId",
-        search: true,
-        searchFilterable: true,
-        filterable: true,
-        cascaderItem: ["residentialId"],
-        type: "select",
-        // remote: true,
-        dicUrl: "/api/cyzh-community/agency/list?size=500&name={{key}}",
-        dicFormatter: (res) => {
-          return res.data.records; //返回字典的层级结构
-        },
-        props: {
-          label: "name",
-          value: "id"
-        },
-        rules: [{
-          required: true,
-          message: "请输入所属园区",
-          trigger: "change"
-        }],
-        hide: true,
-        viewDisplay: false,
-      },
-      {
-        label: "所属园区",
-        prop: "agencyName",
-        editDisplay: false,
-        addDisplay: false,
-      },
-      {
-        label: "所属区域",
-        prop: "residentialName",
-        editDisplay: false,
-        addDisplay: false
-      },
-      {
-        label: "所属区域",
-        prop: "residentialId",
-        type: "select",
-        dicUrl: "/api/cyzh-community/residential/list?size=500&agencyId={{key}}",
-        dicFormatter: (res) => {
-          return res.data.records; //返回字典的层级结构
-        },
-        // dicFlag: false,
-        filterable: true,
-        filter: true,
-        props: {
-          label: "name",
-          value: "id"
-        },
-        rules: [{
-          required: true,
-          message: "请输入所属区域",
-          trigger: "blur"
-        }],
-        hide: true,
-        viewDisplay: false
-      },
-      {
-        label: '',
-        prop: 'mapSelect',
-        // row: true,
-        // span: 20,
-        formslot: true,
-        hide: true,
-      },
-      {
-        label: "车场纬度",
-        prop: "parkLatitude",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车场纬度",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车场经度",
-        prop: "parkLongitude",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车场经度",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车场地址",
-        prop: "parkAdd",
-        overHidden: true,
-        rules: [{
-          required: false,
-          message: "请输入车场地址",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车场联系方式",
-        prop: "parkTel",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车场联系方式",
-          trigger: "blur"
-        }, {
-          validator: validatePhone,
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车场联系人",
-        prop: "parkLinkman",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车场联系人",
-          trigger: "blur"
-        }]
-      },
-      // {
-      //   label: "免费分钟数	",
-      //   prop: "parkFreeTime",
-      //   hide: true,
-      //   rules: [{
-      //     required: false,
-      //     message: "请输入免费分钟数	",
-      //     trigger: "blur"
-      //   }]
-      // },
-      // {
-      //   label: "免费超时分钟数	",
-      //   prop: "parkFreeTimeout",
-      //   hide: true,
-      //   rules: [{
-      //     required: false,
-      //     message: "请输入免费超时分钟数	",
-      //     trigger: "blur"
-      //   }]
-      // },
-      {
-        label: "车场收费说明	",
-        prop: "chargesDesc",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车场收费说明	",
-          trigger: "blur"
-        }]
-      },
-      // {
-      //   label: "停车场是否启用预定功能",
-      //   prop: "reserveStatus",
-      //   hide: true,
-      //   rules: [{
-      //     required: false,
-      //     message: "请输入停车场是否启用预定功能",
-      //     trigger: "blur"
-      //   }]
-      // },
-      {
-        label: "创建时间	",
-        prop: "createTime",
-        type: 'date',
-        valueFormat: 'yyyy-MM-dd',
-        rules: [{
-          required: false,
-          message: "创建时间	",
-          trigger: "blur"
-        }],
-        disabled: true,
-        addDisplay: false,
-        editDisplay: false,
-      },
-      // {
-      //   label: "注册时间	",
-      //   prop: "regTime",
-      //   type: 'date',
-      //   valueFormat: 'yyyy-MM-dd',
-      //   rules: [{
-      //     required: false,
-      //     message: "请输入注册时间	",
-      //     trigger: "blur"
-      //   }]
-      // },
-      // {
-      //   label: "停车场有效期止日	",
-      //   prop: "validTime",
-      //   hide: true,
-      //   type: 'date',
-      //   valueFormat: 'yyyy-MM-dd',
-      //   rules: [{
-      //     required: false,
-      //     message: "请输入停车场有效期止日	",
-      //     trigger: "blur"
-      //   }]
-      // },
-      {
-        label: "车位总数",
-        prop: "spaceTotal",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入车位总数",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "车牌地区简称	",
-        prop: "cityShortName",
-        hide: true,
-        display: false,
-        rules: [{
-          required: false,
-          message: "请输入车牌地区简称	",
-          trigger: "blur"
-        }]
-      },
-      {
-        label: "空余车位",
-        prop: "remainSpace",
-        hide: true,
-        rules: [{
-          required: false,
-          message: "请输入空余车位",
-          trigger: "blur"
-        }],
-        disabled: true,
-        editDisplay: false,
-        addDisplay: false,
+        label: '位置信息',
+        prop: 'group1',
+        column: [{
+            label: "所属园区",
+            prop: "agencyId",
+            search: true,
+            searchFilterable: true,
+            filterable: true,
+            cascaderItem: ["residentialId"],
+            type: "select",
+            // remote: true,
+            dicUrl: "/api/cyzh-community/agency/list?size=500&name={{key}}",
+            dicFormatter: (res) => {
+              return res.data.records; //返回字典的层级结构
+            },
+            props: {
+              label: "name",
+              value: "id"
+            },
+            rules: [{
+              required: true,
+              message: "请输入所属园区",
+              trigger: "change"
+            }],
+            hide: true,
+            viewDisplay: false,
+          },
+          {
+            label: "所属园区",
+            prop: "agencyName",
+            editDisplay: false,
+            addDisplay: false,
+          },
+          {
+            label: "所属区域",
+            prop: "residentialName",
+            editDisplay: false,
+            addDisplay: false
+          },
+          {
+            label: "所属区域",
+            prop: "residentialId",
+            type: "select",
+            dicUrl: "/api/cyzh-community/residential/list?size=500&agencyId={{key}}",
+            dicFormatter: (res) => {
+              return res.data.records; //返回字典的层级结构
+            },
+            // dicFlag: false,
+            filterable: true,
+            filter: true,
+            props: {
+              label: "name",
+              value: "id"
+            },
+            rules: [{
+              required: true,
+              message: "请输入所属区域",
+              trigger: "blur"
+            }],
+            hide: true,
+            viewDisplay: false
+          },
+          {
+            label: '',
+            prop: 'mapSelect',
+            // row: true,
+            // span: 20,
+            formslot: true,
+            hide: true,
+          },
+          {
+            label: "车场纬度",
+            prop: "parkLatitude",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车场纬度",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "车场经度",
+            prop: "parkLongitude",
+            hide: true,
+            rules: [{
+              required: false,
+              message: "请输入车场经度",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "车场地址",
+            prop: "parkAdd",
+            overHidden: true,
+            rules: [{
+              required: false,
+              message: "请输入车场地址",
+              trigger: "blur"
+            }]
+          },
+        ]
       }
     ]
+
+
   }
 }

+ 1 - 1
src/views/smartaccess/comps/face-card.vue

@@ -147,7 +147,7 @@
     </div>
 
 
-    <div class="pagination" v-if="pageCount>=current">
+    <div class="pagination" v-if="pageCount>current">
       <el-pagination background layout="prev, pager, next" :page-size="size" :page-count="pageCount"
         @current-change="currentChange">
       </el-pagination>