huangmp 4 gadi atpakaļ
vecāks
revīzija
e0aeed6c0b

+ 131 - 97
src/components/3DScene/top-bar/top-bar.vue

@@ -4,14 +4,16 @@
     <div class="center" style="width: 18%;height: 100%">
       <div class="name center" style="flex-direction: column">
         {{title}}
-        <span style="font-size: 17px;letter-spacing: 2px;font-weight: normal;font-style: italic;color: #dddddd">Xinyang Rongji soft Garden</span>
+        <span style="font-size: 17px;letter-spacing: 2px;font-weight: normal;font-style: italic;color: #dddddd">Xinyang
+          Rongji soft Garden</span>
       </div>
     </div>
 
     <!--  时间日期  -->
     <div style="width: 10%;height: 100%" class="center">
       <div class="time-date">
-        <div class="full center" style="height: 30%;font-style: italic">{{dateTime.date}} {{weekStr[dateTime.week]}}</div>
+        <div class="full center" style="height: 30%;font-style: italic">{{dateTime.date}} {{weekStr[dateTime.week]}}
+        </div>
         <div class="full center" style="height: 70%;font-size: 35px">{{dateTime.time}}</div>
       </div>
     </div>
@@ -22,7 +24,7 @@
     </div>
 
     <!-- 天气  -->
-<!--    <div class="center" style="width:7%;height: 100%;">
+    <!--    <div class="center" style="width:7%;height: 100%;">
       <div class="weather">
         <div class="full center" style="height: 75%;font-size: 35px;font-weight: 100">{{weather.dayWeather}}</div>
         <div class="full center" style="height: 25%;font-style: italic;color: #dddddd">{{weather.nightTemp+'℃ ~' + weather.dayTemp+'℃'}}</div>
@@ -37,114 +39,132 @@
 </template>
 
 <script>
-import {dateFormat} from "../../../util/date";
-import {fullscreenToggel} from "../../../util/util";
-import {resetRouter} from "../../../router/router";
-
-export default {
-  name: "top-bar",
-  async mounted() {
-    this.currentTime();
-    await this.getWeather();
-  },
-  props: {
-    title: {type: 'String'},
-    showBack: {type: 'Boolean',default: false}
-  },
-  data(){
-    return{
-      dateTime: {},
-      weekStr: ['星期天','星期一','星期二','星期三','星期四','星期五','星期六',],
-      temperature: '',
-      weather: '',
-      weatherClass: 'duoyun',
-    }
-  },
-  watch: {
-    weather(){
-      this.weatherClass = this.getWeatherClass(this.weather);
-    },
-  },
-  methods: {
-    back(){
-      this.$router.go(-1);
-    },
-    logout() {
-      this.$confirm('退出系统, 是否继续?', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-      }).then(() => {
-        this.$store.dispatch("LogOut").then(() => {
-          resetRouter();
-          this.$router.push({path: "/login"});
-        });
-      });
-    },
-    currentTime() {
-      setInterval(this.getTime, 500);
+  import {
+    dateFormat
+  } from "../../../util/date";
+  import {
+    fullscreenToggel
+  } from "../../../util/util";
+  import {
+    resetRouter
+  } from "../../../router/router";
+
+
+  export default {
+    name: "top-bar",
+    async mounted() {
+      this.currentTime();
+      await this.getWeather();
     },
-    getTime() {
-      let date = new Date();
-      let str = dateFormat(date);
-      let week = date.getDay();
-      str = str.split(" ");
-      this.dateTime = {
-        week: week,
-        date: str[0],
-        time: str[1]
+    props: {
+      title: {
+        type: 'String'
+      },
+      showBack: {
+        type: 'Boolean',
+        default: false
       }
     },
-    getWeatherClass(weather) {
-      let duoyun = ['少云', '晴间多云', '多云', '阴'];
-      let wu = ['雾', '浓雾', '强浓雾', '轻雾', '大雾', '特强浓雾'];
-      let mai = ['霾', '中度霾', '重度霾', '严重霾'];
-      let feng = ['有风', '平静', '微风', '和风', '清风', '强风/劲风', , '疾风', '大风', '烈风', '风暴', '狂爆风', '飓风', '热带风暴'];
-      let yu = ['阵雨', '雷阵雨', '雷阵雨并伴有冰雹', '小雨', '中雨', '大雨', '暴雨', '大暴雨', '特大暴雨', '强阵雨', '强雷阵雨', '极端降雨', '毛毛雨/细雨', '雨', '小雨-中雨', '中雨-大雨', '大雨-暴雨', '暴雨-大暴雨', '大暴雨-特大暴雨', '雨雪天气', '雨夹雪', '阵雨夹雪', '冻雨'];
-      let sun = ['晴'];
-      let xue = ['雪', '阵雪', '小雪', '中雪', '大雪', '暴雪', '小雪-中雪', '中雪-大雪', '大雪-暴雪'];
-      if (duoyun.indexOf(weather) >= 0) return 'duoyun';
-      if (wu.indexOf(weather) >= 0) return 'wu';
-      if (yu.indexOf(weather) >= 0) return 'yu';
-      if (sun.indexOf(weather) >= 0) return 'sun';
-      if (xue.indexOf(weather) >= 0) return 'xue';
-      if (mai.indexOf(weather) >= 0) return 'mai';
-      if (feng.indexOf(weather) >= 0) return 'feng';
-      return 'duoyun';
+    data() {
+      return {
+        dateTime: {},
+        weekStr: ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', ],
+        temperature: '',
+        weather: '',
+        weatherClass: 'duoyun',
+      }
     },
-    async getWeather() {
-      console.log(this.$map)
-      let weather = new this.$AMap.Weather();
-      //执行实时天气信息查询
-      weather.getForecast('信阳市', (err, data) => {
-        this.weather = data.forecasts[0];
-      });
+    watch: {
+      weather() {
+        this.weatherClass = this.getWeatherClass(this.weather);
+      },
     },
+    methods: {
+      back() {
+        this.$router.go(-1);
+      },
+      logout() {
+        this.$confirm('退出系统, 是否继续?', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+        }).then(() => {
+          this.$store.dispatch("LogOut").then(() => {
+            resetRouter();
+            this.$router.push({
+              path: "/login"
+            });
+          });
+        });
+      },
+      currentTime() {
+        setInterval(this.getTime, 500);
+      },
+      getTime() {
+        let date = new Date();
+        let str = dateFormat(date);
+        let week = date.getDay();
+        str = str.split(" ");
+        this.dateTime = {
+          week: week,
+          date: str[0],
+          time: str[1]
+        }
+      },
+      getWeatherClass(weather) {
+        let duoyun = ['少云', '晴间多云', '多云', '阴'];
+        let wu = ['雾', '浓雾', '强浓雾', '轻雾', '大雾', '特强浓雾'];
+        let mai = ['霾', '中度霾', '重度霾', '严重霾'];
+        let feng = ['有风', '平静', '微风', '和风', '清风', '强风/劲风', , '疾风', '大风', '烈风', '风暴', '狂爆风', '飓风', '热带风暴'];
+        let yu = ['阵雨', '雷阵雨', '雷阵雨并伴有冰雹', '小雨', '中雨', '大雨', '暴雨', '大暴雨', '特大暴雨', '强阵雨', '强雷阵雨', '极端降雨', '毛毛雨/细雨', '雨',
+          '小雨-中雨', '中雨-大雨', '大雨-暴雨', '暴雨-大暴雨', '大暴雨-特大暴雨', '雨雪天气', '雨夹雪', '阵雨夹雪', '冻雨'
+        ];
+        let sun = ['晴'];
+        let xue = ['雪', '阵雪', '小雪', '中雪', '大雪', '暴雪', '小雪-中雪', '中雪-大雪', '大雪-暴雪'];
+        if (duoyun.indexOf(weather) >= 0) return 'duoyun';
+        if (wu.indexOf(weather) >= 0) return 'wu';
+        if (yu.indexOf(weather) >= 0) return 'yu';
+        if (sun.indexOf(weather) >= 0) return 'sun';
+        if (xue.indexOf(weather) >= 0) return 'xue';
+        if (mai.indexOf(weather) >= 0) return 'mai';
+        if (feng.indexOf(weather) >= 0) return 'feng';
+        return 'duoyun';
+      },
+      async getWeather() {
+        console.log(this.$map)
+        let weather = new this.$AMap.Weather();
+        //执行实时天气信息查询
+        weather.getForecast('信阳市', (err, data) => {
+          this.weather = data.forecasts[0];
+        });
+      },
+    }
   }
-}
 </script>
 
 <style scoped>
-  .container{
+  .container {
     width: 100%;
     height: 7%;
     position: absolute;
     top: 0;
     overflow: hidden;
-    background: rgba(0,0,0,0.7);
+    background: rgba(0, 0, 0, 0.7);
   }
-  .name{
+
+  .name {
     width: 100%;
     height: 70%;
     letter-spacing: 10px;
     font-size: 30px;
     font-weight: 900;
     border-right: 1px solid;
-    border-right-color: rgba(255,255,255,0.8);
+    border-right-color: rgba(255, 255, 255, 0.8);
     color: white;
     user-select: none;
     text-shadow: 0 0 18px rgba(0, 0, 0, 0.35);
   }
-  .time-date{
+
+  .time-date {
     width: 100%;
     height: 70%;
     color: white;
@@ -152,7 +172,8 @@ export default {
     user-select: none;
     text-shadow: 0 0 18px rgba(0, 0, 0, 0.35);
   }
-  .weather{
+
+  .weather {
     width: 100%;
     height: 70%;
     color: white;
@@ -160,24 +181,31 @@ export default {
     user-select: none;
     text-shadow: 0 0 30px rgba(255, 255, 255, 0.6), 0 0 60px rgba(255, 255, 255, 0.45), 0 0 110px rgba(255, 255, 255, 0.25), 0 0 100px rgba(255, 255, 255, 0.1);
   }
-  .switch{
+
+  .switch {
     background: url("/data/switch.png") no-repeat center/30%;
   }
-  .switch-bg:active,.switch-bg:hover{
+
+  .switch-bg:active,
+  .switch-bg:hover {
     cursor: pointer;
-    background: rgba(0,0,0,0.5);
+    background: rgba(0, 0, 0, 0.5);
     box-shadow: 0 0 20px 0px rgba(0, 0, 0, 0.35);
     text-shadow: 0 0 30px rgba(255, 255, 255, 0.6), 0 0 60px rgba(255, 255, 255, 0.45), 0 0 110px rgba(255, 255, 255, 0.25), 0 0 100px rgba(255, 255, 255, 0.1);
   }
-  .switch-bg:active{
-    transform: translate(-1px,1px);
+
+  .switch-bg:active {
+    transform: translate(-1px, 1px);
   }
+
   @keyframes shake-horizontal {
+
     0%,
     100% {
       -webkit-transform: translateX(0);
       transform: translateX(0);
     }
+
     10%,
     30%,
     50%,
@@ -185,30 +213,36 @@ export default {
       -webkit-transform: translateX(-10px);
       transform: translateX(-10px);
     }
+
     20%,
     40%,
     60% {
       -webkit-transform: translateX(10px);
       transform: translateX(10px);
     }
+
     80% {
       -webkit-transform: translateX(8px);
       transform: translateX(8px);
     }
+
     90% {
       -webkit-transform: translateX(-8px);
       transform: translateX(-8px);
     }
   }
- /deep/ .el-page-header__title {
+
+  /deep/ .el-page-header__title {
     color: white;
     font-size: 24px;
     font-weight: 500;
   }
- /deep/ .el-page-header__content {
-   font-size: 18px;
-   color: #acacac;
- }
+
+  /deep/ .el-page-header__content {
+    font-size: 18px;
+    color: #acacac;
+  }
+
   /deep/ .el-page-header__left .el-icon-back {
     font-size: 18px;
     color: white;

+ 23 - 6
src/page/index/top/index.vue

@@ -3,7 +3,7 @@
     <img src="/img/icon/top-bg.gif" class="topWH" style="width: 100vw;">
 
     <div class="top-title">
-      {{website.indexTitle}}
+      {{websiteTitle}}
     </div>
 
     <div style="position:absolute;left:20px;top:15px">
@@ -39,11 +39,11 @@
           <top-theme></top-theme>
         </div>
       </el-tooltip>
-      <el-tooltip effect="light" :content="$t('navbar.notice')" placement="bottom">
+<!--      <el-tooltip effect="light" :content="$t('navbar.notice')" placement="bottom">
         <div class="top-bar__item top-bar__item--show">
           <top-notice></top-notice>
         </div>
-      </el-tooltip>
+      </el-tooltip> -->
       <el-tooltip v-if="showFullScren" effect="light"
         :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')" placement="bottom">
         <div class="top-bar__item">
@@ -94,6 +94,9 @@
   import topLang from "./top-lang";
   import navbar from "./nav/nav-bar.vue";
   import dateTime from '@/util/dateTime.js'
+  import {
+    clearStore
+  } from "@/util/store.js"
 
   export default {
     components: {
@@ -145,8 +148,20 @@
         "isCollapse",
         "tag",
         "logsLen",
-        "logsFlag"
-      ])
+        "logsFlag",
+        'tenantType'
+      ]),
+      websiteTitle(){
+        let title= this.website.indexTitle
+        console.log(this.tenantType,"this.tenantType");
+        if (this.tenantType==1) {
+          title=title.replace('社区','园区')
+          return title
+        }else{
+          title=title.replace('园区','社区')
+          return title
+        }
+      }
     },
     methods: {
       getTime() {
@@ -172,8 +187,10 @@
           cancelButtonText: this.$t("cancelText"),
           type: "warning"
         }).then(() => {
+          clearStore()
+
           this.$store.dispatch("LogOut").then(() => {
-			this.$store.commit("SET_MENU_INDEX",0);
+            this.$store.commit("SET_MENU_INDEX", 0);
             resetRouter();
             this.$router.push({
               path: "/login"

+ 11 - 3
src/page/index/top/top-menu.vue

@@ -30,15 +30,14 @@
     },
     inject: ["index"],
     created() {
-
       this.getMenu();
     },
     computed: {
-      ...mapGetters(["tagCurrent", "menu","menuIndex"])
+      ...mapGetters(["tagCurrent", "menu", "menuIndex", 'tenantType'])
     },
     methods: {
       menuClick(item, index) {
-        this.$store.commit('SET_MENU_INDEX',index)
+        this.$store.commit('SET_MENU_INDEX', index)
         if (index == 0) {
           this.openHome(this.itemHome)
         } else {
@@ -59,6 +58,15 @@
       },
       getMenu() {
         this.$store.dispatch("GetTopMenu").then(res => {
+          let panoramaItem = res.find(item => item.name.indexOf('全景') >= 0)
+          let parkItem = res.find(item => item.name.indexOf('红色') >= 0)
+          if (this.tenantType == 1) {
+            panoramaItem.name = '全景园区'
+            parkItem.name = '红色园区'
+          } else {
+            panoramaItem.name = '全景社区'
+            parkItem.name = '红色社区'
+          }
           this.items = res;
         });
       },

+ 148 - 0
src/views/dashboard/onefaceaccess/comps/face-card.vue

@@ -0,0 +1,148 @@
+<template>
+  <div style="margin-bottom: 40px;">
+    <div class="card">
+      <!-- 首个卡片 -->
+      <div class="box-card box-first">
+        <div class="top">
+          <div class="item" v-for="(item, index) in dataList" :key="index">
+            <div>{{item.label}}</div>
+            <div>
+              <avue-count-up :end="item.value"></avue-count-up>
+            </div>
+          </div>
+        </div>
+        <div class="bottom">
+          <el-button round size="medium" style="width:60%" icon="el-icon-plus">新增常驻人员</el-button>
+        </div>
+      </div>
+      <!-- list -->
+      <div class="box-card" v-for="(item, index) in list" :key="index">
+        <div class="face-box">
+          <div class="box-top">
+
+          </div>
+
+          <div class="box-center">
+
+          </div>
+
+          <div class="box-bottom">
+
+          </div>
+        </div>
+      </div>
+      <!-- 占位 -->
+      <span
+        class="box-card"
+        v-if="lastShow"
+        v-for="(item, index) in lastList"
+        :key="index"
+      ></span>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: "face-card",
+  props: {
+    list: Array,
+    row: {
+      type: Number,
+      default: 6,
+    },
+  },
+  data() {
+    return {
+      dataList: [{
+        label:'待审核',
+        value:12
+      },
+      {
+        label:'待下发人脸',
+        value:1254
+      },
+      {
+        label:'已禁用',
+        value:56
+      }],
+    };
+  },
+  computed: {
+    lastList() {
+      let len = this.list.length + 1;
+      return this.row - (len % this.row);
+    },
+    lastShow() {
+      let len = this.list.length + 1;
+      return len % this.row > 0;
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.card {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  justify-items: center;
+}
+
+.box-card {
+  background-color: #fff;
+  width: calc(16.7% - 10px);
+  margin-top: 10px;
+  height: 210px;
+  border-radius: 0;
+  border: none;
+}
+
+.box-first {
+  display: flex;
+  flex-direction: column;
+
+  .top {
+    height: 50%;
+    display: flex;
+    justify-content: space-around;
+    border-bottom: 1px solid #F0F0F0;
+
+    .item {
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      align-items: center;
+
+      div:first-child {
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+      }
+
+      div:last-child {
+        margin-top: 10px;
+        font-size: 20px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #282d30;
+      }
+    }
+  }
+
+  .bottom {
+    height: 50%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+}
+
+
+.face-box{
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  
+}
+</style>

+ 19 - 3
src/views/dashboard/onefaceaccess/comps/function_list.vue

@@ -41,12 +41,19 @@
     serverUserStat
   } from "@/api/estate/serveruser";
   import staffOption from "@/views/enterprise/option/staffOption.js"
-  import guestOption from "@/views/estate/guestmng/option/guestOption.js"
+  import guestOptionYq from "@/views/estate/guestmng/option/guestOption-yq.js"
+  import guestOptionSq from "@/views/estate/guestmng/option/guestOption-sq.js"
   import serverUserOption from "@/views/businessmng/estatemng/option/serverUserOption.js"
+  import {
+    mapGetters
+  } from "vuex";
   export default {
     components: {
       countTo
     },
+    computed: {
+      ...mapGetters(['tenantType'])
+    },
     data() {
       return {
         activedIndex: 0,
@@ -80,7 +87,7 @@
               method: "post",
               url: "/api/cyzh-estate/guestrecord/save"
             },
-            option: guestOption
+            option: guestOptionYq
           },
           {
             name: '服务人员',
@@ -105,9 +112,18 @@
       };
     },
     created() {
+      this.initOption()
       this.loadStat();
     },
     methods: {
+      initOption() {
+		if (this.tenantType==1) {
+			let jrfk= this.list.filter(item=>item.name='今日访客')[0]
+			jrfk.option=guestOptionYq
+		}else{
+			jrfk.option=guestOptionSq
+		}
+      },
       onClick(item) {
         this.option = item.option;
         this.form = {};
@@ -123,7 +139,7 @@
         serverUserStat(null, null).then(res => {
           this.list[2].num = res.data.data;
         });
-        getTemperatureAnomaliesCount().then(res=>{
+        getTemperatureAnomaliesCount().then(res => {
           this.list[3].num = res.data.data;
         })
       }

+ 32 - 15
src/views/dashboard/smartoperationcenter/comps/grid_list.vue

@@ -26,9 +26,10 @@
     </avue-crud>
     <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"
+     <avue-crud v-if="activeItem.name!='住户审核'" 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>
+      <applyUser v-else ref="applyUser"></applyUser>
     </el-dialog>
 
     <service-form ref="serviceForm"></service-form>
@@ -39,7 +40,8 @@
   import editPolygonMap from "@/components/residential/editPolygonMap";
   import enterpriseOption from "@/views/enterprise/option/enterpriseOption.js"
   import staffOption from "@/views/enterprise/option/staffOption.js"
-  import guestOption from "@/views/estate/guestmng/option/guestOption.js"
+  import guestOptionYq from "@/views/estate/guestmng/option/guestOption-yq.js"
+  import guestOptionSq from "@/views/estate/guestmng/option/guestOption-sq.js"
   import zcOption from "../option/zcOption.js"
   import workorderOption from "../option/workorderOption.js"
   import repairOption from "../option/repairOption.js"
@@ -47,6 +49,7 @@
   import ygshOption from "../option/ygshOption.js"
   import basicinfoOption from '../option/basicinfo-option.js'
   import serviceForm from "@/views/smartaccess/form/server.vue"
+  import applyUser from "../form/applyUser.vue"
   import {
     save as houseUserEntry
   } from "@/api/person/basicinfo";
@@ -56,7 +59,8 @@
   export default {
     components: {
       editPolygonMap,
-      serviceForm
+      serviceForm,
+      applyUser
     },
     computed: {
       ...mapGetters(['tenantType']),
@@ -109,11 +113,11 @@
           {
             tenantType: 0,
             icon: '/img/grid/xzyg.png',
-            name: '居民录入',
+            name: '住户录入',
             dialog: "form",
             submit: {
               method: "post",
-              url: "/api/cyzh-enterprise/staff/submit"
+              url: "/api/cyzh-person/houseuser/submit"
             },
             option: basicinfoOption(this)
           },
@@ -126,7 +130,7 @@
               method: "post",
               url: "/api/cyzh-estate/guestrecord/save"
             },
-            option: guestOption
+            option: {}
           },
           {
             tenantType: -1,
@@ -205,29 +209,42 @@
           {
             tenantType: 0,
             icon: '/img/grid/zhsh.png',
-            name: '居民审核',
+            name: '住户审核',
             dialog: "crud",
             submit: {
               method: "post",
-              url: "/api/cyzh-person/houseuser/submit"
+              url: "/api/cyzh-estate/applyuser/submit"
             },
             dataLoad: {
               method: "get",
-              url: "/api/cyzh-person/houseuser/list"
+              url: "/api/cyzh-estate/applyuser/list"
             },
-            option: basicinfoOption(this),
+            // option: applyUserOption(this),
           }
         ],
       };
     },
     created() {
-      let showList = this.list.filter(item => this.itemShow(item))
-      let width = 'calc(' + this.$digital.floatDiv(100, showList.length) + '% - 10px)'
-      this.itemStyle = {
-        width
-      }
+      this.initItemWidth()
+      this.initOptionByTenantType()
     },
     methods: {
+      initOptionByTenantType() {
+        let fklr = this.list.find(item => item.name == '访客录入')
+        if (this.tenantType == 1) {
+          //园区
+          fklr.option = guestOptionYq
+        } else {
+          fklr.option = guestOptionSq
+        }
+      },
+      initItemWidth() {
+        let showList = this.list.filter(item => this.itemShow(item))
+        let width = 'calc(' + this.$digital.floatDiv(100, showList.length) + '% - 10px)'
+        this.itemStyle = {
+          width
+        }
+      },
       selected(item, index) {
         this.activeIndex = index;
         this.activeItem = item

+ 220 - 0
src/views/dashboard/smartoperationcenter/form/applyUser.vue

@@ -0,0 +1,220 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
+      :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
+      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+
+      <template slot="menu" slot-scope="scope">
+        <el-button icon="el-icon-s-order" style="color: red" v-if="scope.row.checkState===0" size="small"
+          @click.native="showType('审核',scope.row)" type="text">
+          审核
+        </el-button>
+        <el-button icon="el-icon-view" size="small" @click.native="showType('详情',scope.row)" v-else type="text">
+          详情
+        </el-button>
+      </template>
+      
+      
+      <template slot="checkState" slot-scope="scope">
+        <el-tag v-if="scope.row.checkState===-1" type="info">未上传</el-tag>
+        <el-tag v-if="scope.row.checkState===0">待审核</el-tag>
+        <el-tag v-if="scope.row.checkState===1" type="success">审核通过</el-tag>
+        <el-tag v-if="scope.row.checkState===2" type="danger">审核不通过</el-tag>
+      </template>
+
+      <template slot="residentialId" slot-scope="scope">
+        {{scope.row.residentialName}}
+      </template>
+    </avue-crud>
+    <el-dialog title="住户信息审核" :visible.sync="reviewVisible" :modal-append-to-body="true" :append-to-body="true">
+      <HouseuserCheck v-if="reviewVisible" :reviewDetail="reviewDetail" :reviewType="reviewType"
+        @updateEmit="houseuserCheck"></HouseuserCheck>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+  import {
+    getList,
+    getDetail,
+    add,
+    update,
+    remove
+  } from "@/api/estate/applyuser";
+  import {
+    mapGetters
+  } from "vuex";
+  import HouseuserCheck from '@/components/houseuser/houseuser-check';
+  import applyUserOption from "@/views/estate/options/apply-user-option.js"
+  export default {
+    components: {
+      HouseuserCheck
+    },
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        reviewVisible: false,
+        reviewDetail: {},
+        reviewType: false,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: applyUserOption(this),
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.applyuser_add, false),
+          viewBtn: this.vaildData(this.permission.applyuser_view, false),
+          delBtn: this.vaildData(this.permission.applyuser_delete, false),
+          editBtn: this.vaildData(this.permission.applyuser_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      //组件方法
+      houseuserCheck(data) {
+        this.reviewVisible = data;
+        this.onLoad(this.page);
+      },
+      showType(type, row) {
+        console.log(type);
+        this.reviewDetail = row;
+        if (type == '审核') {
+          this.reviewType = true;
+        } else {
+          this.reviewType = false;
+        }
+        this.reviewVisible = true;
+      },
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage) {
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize) {
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 4 - 6
src/views/dashboard/smartoperationcenter/option/basicinfo-option.js

@@ -1,5 +1,6 @@
 import {
-  validatePhone
+  validatePhone,
+  validateIdcard
 } from "@/util/validator.js";
 import {
   DIC
@@ -198,10 +199,7 @@ export default () => {
           width: 120,
           rules: [{
             required: true,
-            message: "请输入手机号码",
-            trigger: "blur"
-          }, {
-            validator: validatePhone,
+            message: "请输入身份证号",
             trigger: "blur"
           }]
         },
@@ -326,7 +324,7 @@ export default () => {
       ]
     }, {
       label: '其他信息',
-      collapse: true,
+      collapse: false,
       prop: 'group2',
       column: [{
           label: "生日",

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

@@ -12,8 +12,7 @@ export default {
   addTitle: "资产录入",
   dialogClickModal: false,
   column: [{
-      labelWidth: '43%',
-      label: "",
+      label: "资产照片",
       prop: "img",
       type: "upload",
       listType: 'picture-img',

+ 2 - 478
src/views/estate/applyuser.vue

@@ -57,8 +57,7 @@
   import {getList, getDetail, add, update, remove} from "@/api/estate/applyuser";
   import {mapGetters} from "vuex";
   import HouseuserCheck from '@/components/houseuser/houseuser-check';
-  import {validatePhone} from "../../util/validator";
-
+  import applyUserOption from "./options/apply-user-option.js"
   export default {
     components: {
       HouseuserCheck
@@ -77,482 +76,7 @@
           total: 0
         },
         selectionList: [],
-        option: {
-          height:'auto',
-          menuWidth: 120,
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: false,
-          editBtn: false,
-          addBtn: false,
-          delBtn: false,
-          selection: true,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "住户id--修改时有值",
-              prop: "userId",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入住户id--修改时有值",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "申请的会员id",
-              prop: "memberId",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入申请的会员id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "住户姓名",
-              prop: "name",
-              search: true,
-              width: 100,
-              rules: [{
-                required: true,
-                message: "请输入住户姓名",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "性别",
-              prop: "sex",
-              width: 60,
-              // display: false,
-              type: 'select',
-              dataType: 'string',
-              dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              rules: [{
-                required: true,
-                message: "请输入性别 未定义 男 女",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "住户\n类型",
-              prop: "type",
-              type: 'select',
-              display: false,
-              width: 60,
-              dataType: 'string',
-              dicUrl: "/api/blade-system/dict-biz/dictionary?code=household-type",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              rules: [{
-                required: true,
-                message: "请输入住户类型业主 成员 租户",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "身份证",
-              prop: "idCard",
-              width: 150,
-              search: true,
-              rules: [{
-                required: true,
-                message: "请输入居民身份证",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "所属区域",
-              prop: "residentialName",
-              addDisplay: false,
-              editDisplay: false,
-              rules: [{
-                required: true,
-                message: "请输入小区名称",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "所属区域",
-              prop: "residentialId",
-              type: "select",
-              search: true,
-              slot:true,
-              searchFilterable: true,
-              cascaderItem: ['buildingId'],
-              dicUrl: "/api/cyzh-community/residential/select?size=500",
-              // dicFormatter:(res)=>{
-              //   return res.data.records;//返回字典的层级结构
-              // },
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: true,
-                message: "请输入所属区域id",
-                trigger: "blur"
-              }],
-              hide: true,
-              viewDisplay: false
-            },
-            {
-              label: "所属楼栋",
-              prop: "buildingId",
-              type: "select",
-              search: true,
-              cascaderItem: ['unitId'],
-              dicUrl: "/api/cyzh-community/building/list?residentialId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: true,
-                message: "请输入楼栋id",
-                trigger: "blur"
-              }],
-              hide: true,
-              viewDisplay: false
-            },
-            {
-              label: "所属\n楼栋",
-              prop: "buildingName",
-              width: 60,
-              // display: false,
-              // hide: true,
-              rules: [{
-                required: true,
-                message: "请输入楼栋名称",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "所属单元",
-              prop: "unitId",
-              type: "select",
-              search: true,
-              cascaderItem: ['roomId'],
-              dicUrl: "/api/cyzh-community/unit/list?buildingId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              dicFlag: false,
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: true,
-                message: "请输入所属单元id",
-                trigger: "blur"
-              }],
-              hide: true,
-              viewDisplay: false
-            },
-            {
-              label: "所属\n单元",
-              prop: "unitName",
-              width: 60,
-              // display: false,
-              // hide: true,
-              rules: [{
-                required: true,
-                message: "请输入单元名称",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "所属房间",
-              prop: "roomId",
-              type: "select",
-              width: 60,
-              search: true,
-              dicUrl: "/api/cyzh-community/room/list?unitId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: true,
-                message: "请输入所属房间id",
-                trigger: "blur"
-              }],
-              hide: true,
-              viewDisplay: false
-            },
-            {
-              label: "所属\n房间",
-              prop: "roomName",
-              width: 60,
-              // display: false,
-              // hide: true,
-              rules: [{
-                required: true,
-                message: "请输入所属房间名称",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "联系电话",
-              prop: "tel",
-              search: true,
-              width: 100,
-              rules: [{
-                required: true,
-                message: "请输入联系电话",
-              },{
-                validator: validatePhone,
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "住户申请来源",
-              prop: "createType",
-              type: 'select',
-              dataType: 'number',
-              width: 100,
-              dicUrl: "/api/blade-system/dict-biz/dictionary?code=create-type",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              rules: [{
-                required: true,
-                message: "请输入住户来源创建类型,0-小程序添加 1-后台添加  2-后台导入 3-app添加",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "审核状态",
-              prop: "checkState",
-              search: true,
-              editDisplay: false,
-              slot: true,
-              width: 100,
-              type: 'select',
-              dicData:[
-                {
-                  label: '未上传',
-                  value: -1
-                },
-                {
-                  label: '待审核',
-                  value: 0
-                },{
-                  label: '审核通过',
-                  value: 1
-                },{
-                  label: '审核不通过',
-                  value: 2
-                }
-              ],
-              rules: [{
-                required: true,
-                message: "请输入申请记录审核状态:-1:未上传,0-待审核 1-审核通过 2-审核不通过",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "i_check_state=2(审核不通过)时必填",
-              prop: "checkOpinion",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入i_check_state=2(审核不通过)时必填",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "审核时间",
-              prop: "checkDate",
-              type: 'datetime',
-              valueFormat:'yyyy-MM-dd HH:mm:ss',
-              rules: [{
-                required: false,
-                message: "请输入审核时间",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "国籍",
-              prop: "nationality",
-              hide: true,
-              row: true,
-              type: 'select',
-              dataType: 'number',
-              dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationality",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              rules: [{
-                required: false,
-                message: "请输入国籍,0 中国大陆 1 中国香港/澳门 2 中国台湾 3海外",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "护照照片",
-              prop: "passportImgUri",
-              hide: true,
-              display: false,
-              span: 8,
-              type: 'upload',
-              listType: 'picture-img',
-              propsHttp: {
-                res: "data",
-                url: "link"
-              },
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              tip: '只能生产jpg/png图片,且不超过500kb',
-              rules: [{
-                required: false,
-                message: "请输入护照照片url(没有域名,nationality = 3时,国籍为海外)",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "入境证明",
-              prop: "entryImgUri",
-              hide: true,
-              display: false,
-              span: 8,
-              type: 'upload',
-              listType: 'picture-img',
-              propsHttp: {
-                res: "data",
-                url: "link"
-              },
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              tip: '只能生产jpg/png图片,且不超过500kb',
-              rules: [{
-                required: false,
-                message: "请输入入境证明url(没有域名,nationality = 3时,国籍为海外)",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "存储位置(通过该字段快速查询,所有的子节点)",
-              prop: "orgPosition",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入存储位置(通过该字段快速查询,所有的子节点)",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "人脸图片",
-              prop: "imageUri",
-              hide: true,
-              display: false,
-              span: 8,
-              type: 'upload',
-              listType: 'picture-img',
-              propsHttp: {
-                res: "data",
-                url: "link"
-              },
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              tip: '只能生产jpg/png图片,且不超过500kb',
-              rules: [{
-                required: false,
-                message: "请输入人脸图片uri",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "图片的md5",
-              prop: "faceCode",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入图片的md5",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "申请的记录类型 0--认证类型 1--新增类型 2--编辑类型(通过user编辑生成的) 3--编辑类型(通过applyUser编辑生成)",
-              prop: "recordType",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入申请的记录类型 0--认证类型 1--新增类型 2--编辑类型(通过user编辑生成的) 3--编辑类型(通过applyUser编辑生成)",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "旧照片",
-              prop: "oldImageUri",
-              display: false,
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入旧照片",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "审核人\n类型",
-              prop: "operatorType",
-              type: 'select',
-              width: 70,
-              dicData:[
-                {
-                  label: '无',
-                  value: -1
-                },
-                {
-                  label: '业主',
-                  value: 1
-                },{
-                  label: '后台',
-                  value: 2
-                }
-              ],
-              rules: [{
-                required: false,
-                message: "请输入审核人类型:1-业主,2-后台",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "审核人姓名",
-              prop: "operatorName",
-              rules: [{
-                required: false,
-                message: "请输入审核人姓名",
-                trigger: "blur"
-              }]
-            },
-          ]
-        },
+        option: applyUserOption(this),
         data: []
       };
     },

+ 8 - 34
src/views/estate/guestmng/guestrecord.vue

@@ -58,7 +58,8 @@
 <script>
   import {getList, getDetail, add, update, remove, pushGuestFace, deleteGuestFace} from "@/api/estate/guestrecord";
   import {mapGetters} from "vuex";
-  import guestOption from "./option/guestOption.js"
+  import guestOptionYq from "./option/guestOption-yq.js"
+  import guestOptionSq from "./option/guestOption-sq.js"
   export default {
     data() {
       return {
@@ -71,12 +72,12 @@
           total: 0
         },
         selectionList: [],
-        option: guestOption,
+        option: {},
         data: []
       };
     },
     computed: {
-      ...mapGetters(["permission"]),
+      ...mapGetters(["permission",'tenantType']),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.guestrecord_add, false),
@@ -94,37 +95,10 @@
       }
     },
     created() {
-      const tenantType = localStorage.getItem("tenantType");
-      if (tenantType == 0){
-        let findObject1 = this.findObject(this.option.column, "agencyName");
-        let findObject2 = this.findObject(this.option.column, "residentialName");
-        let findObject3 = this.findObject(this.option.column, "buildingName");
-        let findObject4 = this.findObject(this.option.column, "unitName");
-        let findObject5 = this.findObject(this.option.column, "floorName");
-        let findObject6 = this.findObject(this.option.column, "roomName");
-        let findObject7 = this.findObject(this.option.column, "enterpriseName");
-        findObject1.label = "拜访园区";
-        findObject2.label = "拜访小区";
-        findObject3.hide = false;findObject3.viewDisplay = true;
-        findObject4.hide = false;findObject4.viewDisplay = true;
-        findObject5.hide = false;findObject5.viewDisplay = true;
-        findObject6.hide = false;findObject6.viewDisplay = true;
-        findObject7.hide = true;
-      }else if (tenantType == 1){
-        let findObject1 = this.findObject(this.option.column, "agencyName");
-        let findObject2 = this.findObject(this.option.column, "residentialName");
-        let findObject3 = this.findObject(this.option.column, "enterpriseName");
-        let findObject4 = this.findObject(this.option.column, "buildingName");
-        let findObject5 = this.findObject(this.option.column, "unitName");
-        let findObject6 = this.findObject(this.option.column, "floorName");
-        let findObject7 = this.findObject(this.option.column, "roomName");
-        findObject1.label = "拜访园区";
-        findObject2.label = "拜访区域";
-        findObject3.hide = false;
-        findObject4.hide = true;findObject4.viewDisplay = false;
-        findObject5.hide = true;findObject5.viewDisplay = false;
-        findObject6.hide = true;findObject6.viewDisplay = false;
-        findObject7.hide = true;findObject7.viewDisplay = false;
+      if (this.tenantType==1) {
+        this.option=guestOptionYq
+      }else{
+        this.option=guestOptionSq
       }
     },
     methods: {

+ 320 - 0
src/views/estate/guestmng/option/guestOption-sq.js

@@ -0,0 +1,320 @@
+/**
+ * 社区option
+ */
+export default {
+  dialogWidth: '43%',
+  menuWidth: 300,
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 4,
+  border: true,
+  index: true,
+  addBtn: true,
+  delBtn: true,
+  align: 'left',
+  viewBtn: true,
+  selection: true,
+  dialogClickModal: false,
+  addTitle: "访客录入",
+  column: [{
+      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: "访客姓名",
+      prop: "guestName",
+      search: true,
+      rules: [{
+        required: true,
+        message: "请输入访客名称",
+        trigger: "blur"
+      }]
+    },
+    {
+      label: "访客手机号",
+      prop: "guestTel",
+      labelWidth: 100,
+      rules: [{
+        required: true,
+        message: "请输入访客手机号",
+        trigger: "blur"
+      }]
+    },
+    {
+      label: "证件号码",
+      prop: "guestIdcard",
+      hide: true,
+      rules: [{
+        required: false,
+        message: "请输入证件号码",
+        trigger: "blur"
+      }]
+    }, {
+      label: "所属社区",
+      prop: "agencyName",
+      display: false
+    },
+    {
+      label: "所属小区",
+      prop: "residentialName",
+      display: false
+    },
+    {
+      label: "所属楼栋",
+      prop: "buildingName",
+      display: false
+    },
+    {
+      label: "所属单元",
+      prop: "unitName",
+      display: false
+    },
+    {
+      label: "所属楼层",
+      prop: "floorName",
+      display: false
+    },
+    {
+      label: "所属房间",
+      prop: "roomName",
+      display: false
+    },
+
+  ],
+  group: [{
+    label: '拜访信息',
+    prop: 'group2',
+    column: [{
+        label: "预约开始时间",
+        prop: "beginTime",
+        type: "datetime",
+        labelWidth: 110,
+        format: "yyyy-MM-dd HH:mm:ss",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        rules: [{
+          required: true,
+          message: "请选择拜访园区",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "预约结束时间",
+        prop: "endTime",
+        type: "datetime",
+        labelWidth: 110,
+        format: "yyyy-MM-dd HH:mm:ss",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        rules: [{
+          required: true,
+          message: "请选择拜访园区",
+          trigger: "blur"
+        }]
+      },
+      {
+        label: "登记来源",
+        labelWidth: 110,
+        prop: "registerSource",
+        slot: true,
+        editDisplay: false,
+        addDisplay: false,
+      },
+      {
+        label: "拜访社区",
+        prop: "agencyId",
+        labelWidth: 110,
+        cascaderItem: ['residentialId'],
+        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"
+        }]
+      },
+      {
+        label: "拜访小区",
+        labelWidth: 110,
+        prop: "residentialId",
+        type: "select",
+        search: true,
+        cascaderItem: ['buildingId'],
+        dicUrl: "/api/cyzh-community/residential/list?agencyId={{key}}",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: true,
+          message: "请选择小区",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
+      },
+      {
+        label: "拜访楼栋",
+        prop: "buildingId",
+        labelWidth: 110,
+        type: "select",
+        search: true,
+        cascaderItem: ['unitId'],
+        dicUrl: "/api/cyzh-community/building/list?residentialId={{key}}",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请选择楼栋",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
+      },
+      {
+        label: "拜访单元",
+        prop: "unitId",
+        labelWidth: 110,
+        type: "select",
+        search: true,
+        cascaderItem: ['floorId'],
+        dicUrl: "/api/cyzh-community/unit/list?buildingId={{key}}&size=500",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请选择单元",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
+      },
+
+      {
+        label: "拜访楼层",
+        prop: "floorId",
+        type: "select",
+        labelWidth: 110,
+        search: true,
+        cascaderItem: ['roomId'],
+        dicUrl: "/api/cyzh-community/floor/list?unitId={{key}}&size=100",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        // dicFlag: false,
+        filterable: true,
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请选择楼层d",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: false
+      },
+      {
+        label: "拜访房间",
+        prop: "roomId",
+        type: "select",
+        search: true,
+        labelWidth: 110,
+        dicUrl: "/api/cyzh-community/room/list?floorId={{key}}&size=500&current=1",
+        dicFormatter: (res) => {
+          return res.data.records; //返回字典的层级结构
+        },
+        filterable: true,
+        props: {
+          label: "name",
+          value: "id"
+        },
+        rules: [{
+          required: false,
+          message: "请选择房间",
+          trigger: "blur"
+        }],
+        hide: true,
+        viewDisplay: 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: "访客事由",
+        labelWidth: 110,
+        prop: "guestReason",
+        type: 'textarea',
+        rules: [{
+          required: false,
+          message: "请输入访问缘由",
+          trigger: "blur"
+        }],
+
+      },
+
+    ]
+  }],
+
+}

+ 4 - 2
src/views/estate/guestmng/option/guestOption.js → src/views/estate/guestmng/option/guestOption-yq.js

@@ -1,3 +1,6 @@
+/**
+ * 园区option
+ */
 export default {
   dialogWidth: '43%',
   menuWidth: 300,
@@ -16,8 +19,7 @@ export default {
   dialogClickModal: false,
   addTitle: "访客录入",
   column: [{
-      labelWidth: '45%',
-      label: "",
+      label: "访客人脸",
       prop: "imageUri",
       type: "upload",
       width: 150,

+ 479 - 0
src/views/estate/options/apply-user-option.js

@@ -0,0 +1,479 @@
+import {
+    validatePhone
+  } from "@/util/validator";
+  export default (safe) => {
+    return {
+      height: 'auto',
+      menuWidth: 120,
+      calcHeight: 30,
+      tip: false,
+      searchShow: false,
+      searchMenuSpan: 6,
+      border: true,
+      index: true,
+      viewBtn: false,
+      editBtn: false,
+      addBtn: false,
+      delBtn: false,
+      selection: false,
+      align:'center',
+      dialogClickModal: false,
+      column: [{
+          label: "住户id--修改时有值",
+          prop: "userId",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入住户id--修改时有值",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "申请的会员id",
+          prop: "memberId",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入申请的会员id",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "住户姓名",
+          prop: "name",
+          search: true,
+          width: 100,
+          rules: [{
+            required: true,
+            message: "请输入住户姓名",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "性别",
+          prop: "sex",
+          width: 60,
+          // display: false,
+          type: 'select',
+          dataType: 'string',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          rules: [{
+            required: true,
+            message: "请输入性别 未定义 男 女",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "住户类型",
+          prop: "type",
+          type: 'select',
+          display: false,
+          width: 70,
+          dataType: 'string',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=household-type",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          rules: [{
+            required: true,
+            message: "请输入住户类型业主 成员 租户",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "联系电话",
+          prop: "tel",
+          search: true,
+          width: 100,
+          rules: [{
+            required: true,
+            message: "请输入联系电话",
+          }, {
+            validator: validatePhone,
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "身份证",
+          prop: "idCard",
+          width: 150,
+          search: true,
+          rules: [{
+            required: true,
+            message: "请输入居民身份证",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "所属小区",
+          prop: "residentialName",
+          addDisplay: false,
+          editDisplay: false,
+          rules: [{
+            required: true,
+            message: "请输入小区名称",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "所属小区",
+          prop: "residentialId",
+          type: "select",
+          search: true,
+          slot: true,
+          searchFilterable: true,
+          cascaderItem: ['buildingId'],
+          dicUrl: "/api/cyzh-community/residential/select?size=500",
+          // dicFormatter:(res)=>{
+          //   return res.data.records;//返回字典的层级结构
+          // },
+          filterable: true,
+          props: {
+            label: "name",
+            value: "id"
+          },
+          rules: [{
+            required: true,
+            message: "请输入所属小区id",
+            trigger: "blur"
+          }],
+          hide: true,
+          viewDisplay: false
+        },
+        {
+          label: "所属楼栋",
+          prop: "buildingId",
+          type: "select",
+          search: true,
+          cascaderItem: ['unitId'],
+          dicUrl: "/api/cyzh-community/building/list?residentialId={{key}}",
+          dicFormatter: (res) => {
+            return res.data.records; //返回字典的层级结构
+          },
+          props: {
+            label: "name",
+            value: "id"
+          },
+          rules: [{
+            required: true,
+            message: "请输入楼栋id",
+            trigger: "blur"
+          }],
+          hide: true,
+          viewDisplay: false
+        },
+        {
+          label: "所属楼栋",
+          prop: "buildingName",
+          width: 70,
+          // display: false,
+          // hide: true,
+          rules: [{
+            required: true,
+            message: "请输入楼栋名称",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "所属单元",
+          prop: "unitId",
+          type: "select",
+          search: true,
+          cascaderItem: ['roomId'],
+          dicUrl: "/api/cyzh-community/unit/list?buildingId={{key}}",
+          dicFormatter: (res) => {
+            return res.data.records; //返回字典的层级结构
+          },
+          dicFlag: false,
+          filterable: true,
+          props: {
+            label: "name",
+            value: "id"
+          },
+          rules: [{
+            required: true,
+            message: "请输入所属单元id",
+            trigger: "blur"
+          }],
+          hide: true,
+          viewDisplay: false
+        },
+        {
+          label: "所属单元",
+          prop: "unitName",
+          width: 70,
+          // display: false,
+          // hide: true,
+          rules: [{
+            required: true,
+            message: "请输入单元名称",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "所属房间",
+          prop: "roomId",
+          type: "select",
+          width: 60,
+          search: true,
+          dicUrl: "/api/cyzh-community/room/list?unitId={{key}}",
+          dicFormatter: (res) => {
+            return res.data.records; //返回字典的层级结构
+          },
+          filterable: true,
+          props: {
+            label: "name",
+            value: "id"
+          },
+          rules: [{
+            required: true,
+            message: "请输入所属房间id",
+            trigger: "blur"
+          }],
+          hide: true,
+          viewDisplay: false
+        },
+        {
+          label: "所属房间",
+          prop: "roomName",
+          width: 70,
+          // display: false,
+          // hide: true,
+          rules: [{
+            required: true,
+            message: "请输入所属房间名称",
+            trigger: "blur"
+          }]
+        },
+
+        {
+          label: "住户申请来源",
+          prop: "createType",
+          type: 'select',
+          dataType: 'number',
+          width: 100,
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=create-type",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          rules: [{
+            required: true,
+            message: "请输入住户来源创建类型,0-小程序添加 1-后台添加  2-后台导入 3-app添加",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "审核状态",
+          prop: "checkState",
+          search: true,
+          editDisplay: false,
+          width: 100,
+          type: 'select',
+          dicData: [{
+              label: '未上传',
+              value: -1
+            },
+            {
+              label: '待审核',
+              value: 0
+            }, {
+              label: '审核通过',
+              value: 1
+            }, {
+              label: '审核不通过',
+              value: 2
+            }
+          ],
+          rules: [{
+            required: true,
+            message: "请输入申请记录审核状态:-1:未上传,0-待审核 1-审核通过 2-审核不通过",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "i_check_state=2(审核不通过)时必填",
+          prop: "checkOpinion",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入i_check_state=2(审核不通过)时必填",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "审核时间",
+          prop: "checkDate",
+          type: 'datetime',
+          valueFormat: 'yyyy-MM-dd HH:mm:ss',
+          rules: [{
+            required: false,
+            message: "请输入审核时间",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "国籍",
+          prop: "nationality",
+          hide: true,
+          row: true,
+          type: 'select',
+          dataType: 'number',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationality",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          rules: [{
+            required: false,
+            message: "请输入国籍,0 中国大陆 1 中国香港/澳门 2 中国台湾 3海外",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "护照照片",
+          prop: "passportImgUri",
+          hide: true,
+          display: false,
+          span: 8,
+          type: 'upload',
+          listType: 'picture-img',
+          propsHttp: {
+            res: "data",
+            url: "link"
+          },
+          action: "/api/blade-resource/oss/endpoint/put-file",
+          tip: '只能生产jpg/png图片,且不超过500kb',
+          rules: [{
+            required: false,
+            message: "请输入护照照片url(没有域名,nationality = 3时,国籍为海外)",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "入境证明",
+          prop: "entryImgUri",
+          hide: true,
+          display: false,
+          span: 8,
+          type: 'upload',
+          listType: 'picture-img',
+          propsHttp: {
+            res: "data",
+            url: "link"
+          },
+          action: "/api/blade-resource/oss/endpoint/put-file",
+          tip: '只能生产jpg/png图片,且不超过500kb',
+          rules: [{
+            required: false,
+            message: "请输入入境证明url(没有域名,nationality = 3时,国籍为海外)",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "存储位置(通过该字段快速查询,所有的子节点)",
+          prop: "orgPosition",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入存储位置(通过该字段快速查询,所有的子节点)",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "人脸图片",
+          prop: "imageUri",
+          hide: true,
+          display: false,
+          span: 8,
+          type: 'upload',
+          listType: 'picture-img',
+          propsHttp: {
+            res: "data",
+            url: "link"
+          },
+          action: "/api/blade-resource/oss/endpoint/put-file",
+          tip: '只能生产jpg/png图片,且不超过500kb',
+          rules: [{
+            required: false,
+            message: "请输入人脸图片uri",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "图片的md5",
+          prop: "faceCode",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入图片的md5",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "申请的记录类型 0--认证类型 1--新增类型 2--编辑类型(通过user编辑生成的) 3--编辑类型(通过applyUser编辑生成)",
+          prop: "recordType",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入申请的记录类型 0--认证类型 1--新增类型 2--编辑类型(通过user编辑生成的) 3--编辑类型(通过applyUser编辑生成)",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "旧照片",
+          prop: "oldImageUri",
+          display: false,
+          hide: true,
+          rules: [{
+            required: true,
+            message: "请输入旧照片",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "审核人类型",
+          prop: "operatorType",
+          type: 'select',
+          width: 90,
+          dicData: [{
+              label: '无',
+              value: -1
+            },
+            {
+              label: '业主',
+              value: 1
+            }, {
+              label: '后台',
+              value: 2
+            }
+          ],
+          rules: [{
+            required: false,
+            message: "请输入审核人类型:1-业主,2-后台",
+            trigger: "blur"
+          }]
+        },
+        {
+          label: "审核人姓名",
+          prop: "operatorName",
+          rules: [{
+            required: false,
+            message: "请输入审核人姓名",
+            trigger: "blur"
+          }]
+        },
+      ]
+    }
+  }

+ 1 - 1
src/views/videoapply/comp/videowall.vue

@@ -1,7 +1,7 @@
 <template>
     <el-row>
       <el-col :span="4">
-        <basic-container class="box" style="margin: 0;padding: 0">
+        <basic-container class="box" style="margin: 0;">
           <el-scrollbar>
               <el-input
                 placeholder="输入关键字进行过滤"

+ 1 - 1
vue.config.js

@@ -26,7 +26,7 @@ module.exports = {
     proxy: {
       '/api': {
         //本地服务接口地址
-        target: 'http://192.168.1.120',
+        target: 'http://192.168.1.69',
         // target: 'http://8.135.18.59',
         //远程演示服务地址,可用于直接启动项目
         // target: 'https://saber.bladex.vip/api',