Ver Fonte

Merge branch 'master' of http://192.168.1.218:3000/lianghanqiang/cyzh-park

lianghanqiang há 4 anos atrás
pai
commit
2518102bf7

+ 2 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "saber-admin",
-  "version": "2.8.1",
+  "version": "2.8.0",
   "private": true,
   "scripts": {
     "serve": "vue-cli-service serve",
@@ -11,6 +11,7 @@
     "test:e2e": "vue-cli-service test:e2e"
   },
   "dependencies": {
+    "@amap/amap-vue": "^2.0.13",
     "@jiaminghi/data-view": "^2.10.0",
     "@tweenjs/tween.js": "^18.6.4",
     "avue-plugin-ueditor": "^0.1.4",

Diff do ficheiro suprimidas por serem muito extensas
+ 1 - 1
public/cdn/avue/2.8.12/avue.min.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
public/cdn/avue/2.8.12/index.css


+ 193 - 0
public/cdn/elevator/main.js

@@ -0,0 +1,193 @@
+import zlplayer from '';
+
+let webServer = {
+    host: 'localhost',
+    port: 7890
+}
+
+let isLive = true;          //是否为实时视频
+
+zlplayer.resPath = '';
+
+//去后端获取预览视频地址
+function getRealUrlByToken() {
+    isLive = true;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getElevatorMonitolUrlByToken?elevatorSn=${elevatorSn}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.monitorUrl) {
+            document.getElementById('url').value = res.monitorUrl;
+        }
+        return;
+    }
+    console.error(`getElevatorMonitolUrl error ${xhr.status}`);
+}
+
+
+//去后端获取报警录像地址
+function getAlarmRecordUrlByToken() {
+    isLive = false;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let alarmId = document.getElementById('alarmId').value;
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getAlarmRecordUrlByToken?elevatorSn=${elevatorSn}&alarmId=${alarmId}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.recordUrl) {
+            document.getElementById('url').value = res.recordUrl;
+        }
+        return;
+    }
+    console.error(`getAlarmRecordUrlByToken error ${xhr.status}`);
+}
+
+//去后端获取视频地址
+function getTimeRecordUrlByToken() {
+    isLive = false;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let beginTime = parseInt(document.getElementById('beginTime').value);
+    let endTime = parseInt(document.getElementById('endTime').value);
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getElevatorRecordUrlByToken?elevatorSn=${elevatorSn}&beginTime=${beginTime}&endTime=${endTime}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.recordUrl) {
+            document.getElementById('url').value = res.recordUrl;
+        }
+        return;
+    }
+    console.error(`getTimeRecordUrlByToken error ${xhr.status}`);
+}
+
+let player = null;
+
+//开始播放
+function startPlay() {
+    stopPlay();
+
+    let videoElement = document.getElementById('myvideo');
+    let urlElement = document.getElementById("url");
+
+    let config = {
+        url: urlElement.value,                   //资源地址
+        isLive: isLive,                          //实时预览:true , 回放:false
+        enableFullScreen: true,                  //是否双击全屏
+        enableFillWindow: true                   //是否视频铺满窗口
+    };
+
+    player = zlplayer.createPlayer(videoElement, config);
+    player.on('error', onPlayerError);
+    player.play();
+}
+
+//停止播放
+function stopPlay() {
+    if ( player ) {
+        player.stop();
+        player = null;
+    }
+}
+
+//抓图
+function capture() {
+    if (player) {
+
+        let img = player.capture();            //抓图,返回image
+
+        if (img) {
+            let now = new Date();
+            let filename = `capture_${now.toLocaleDateString()}_${now.toLocaleTimeString()}.png`;
+
+            let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
+            save_link.href = img;
+            save_link.download = filename;
+
+            let event = document.createEvent('MouseEvents');
+            event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+            save_link.dispatchEvent(event);
+        }
+    }
+}
+
+//开始录像
+function startRecord() {
+    if (player) {
+        player.startRecord();
+    }
+}
+
+//停止录像
+function stopRecord() {
+    if (player) {
+        let blob = player.stopRecord();              //停止录像返回 blob
+        if ( blob ) {
+            let url = window.URL.createObjectURL(blob);
+            let now = new Date();
+
+            let filename = `record_${now.toLocaleDateString()}_${now.toLocaleTimeString()}.webm`;
+
+            let a = document.createElement('a');
+            a.style.display = 'none';
+            a.href = url;
+            a.download = filename;
+            document.body.appendChild(a);
+            a.click();
+            setTimeout(function() {
+                document.body.removeChild(a);
+                window.URL.revokeObjectURL(url);
+            }, 100);
+        }
+    }
+}
+
+//旋转视频
+function rotate(deg) {
+    if (player) {
+        player.rotate(deg);
+    }
+}
+
+//清理创建过的播放器
+function clearPlayer() {
+    zlplayer.clearPlayer();
+}
+
+//播放器错误event
+function onPlayerError(type, reason, desc) {
+    switch(type){
+        case 'NetworkError':
+            if ( desc.code == -1 ) {
+                alert("网络错误");
+            }
+            else if ( desc.code == -999 ) {
+                alert("网络错误, 流中断");
+
+                let urlElement = document.getElementById("url");
+                player.flvSrc.url = urlElement.value;    //这里应该是重新去获取新的url
+                player.resume();
+            }else if ( desc.code == 401 ) {
+                console.log(`${desc.msg} : 鉴权失败`);
+            }
+            else if ( desc.code == 404 ) {
+                alert("资源不存在, 设备不在线");
+            };
+            break;
+        case 'MediaError':
+            if ( reason == 'NeedReplay' ) {
+                console.log("媒体异常,自动重新播放");
+
+                let urlElement = document.getElementById("url");
+                player.flvSrc.url = urlElement.value;    //这里应该是重新去获取新的url
+                player.resume();
+            };
+            break;
+    }
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
public/cdn/elevator/zlplayer.min.js


+ 11 - 1
public/index.html

@@ -18,10 +18,20 @@
   <link rel="stylesheet" href="<%= BASE_URL %>cdn/avue/2.8.12/index.css">
   <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
   <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
+  <link rel="icon" href="<%= BASE_URL %>favicon.png">
+  <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
+  <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
+  <script src="<%= BASE_URL %>cdn/elevator/zlplayer.min.js"></script>
+  <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
+  <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
+  <script src="js/china.js"></script>
+  <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=cbb265e2a60bbbc04a52eec4eecdeb12&plugin=AMap.PolygonEditor,AMap.Driving"></script>
+  <script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script>
+  <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
   <script type="text/javascript" src="./js/EasyWasmPlayer.js"></script>
   <script type="text/javascript" src="./js/jessibuca/index.js"></script>
   <script type="text/javascript" src="./js/ZLMRTCClient.js"></script>
-  <link rel="icon" href="<%= BASE_URL %>favicon.png">
+  <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script>
   <title>CY-SMART</title>
   <style>
     html,

+ 15 - 15
src/api/dataview/dataviewoption.js

@@ -8,65 +8,65 @@ export const iconsOption = (obj) =>{
         click: function (item) {obj.select(100004)},
         title: '智能烟感',
         count: 0,
-        icon: 'el-icon-smoking',
+        icon: 'icon-zhinengyangan',
         // icon: 'yc-grid-zhinengyangan',
       },
       {
         click: function (item) {obj.select(100020)},
         title: '燃气监控',
         count: 0,
-        icon: 'el-icon-help',
+        icon: 'icon-ranqi',
         // icon: 'yc-grid-ranqijianceqi',
       },
       {
-        click: function (item) {obj.select(3)},
+        click: function (item) {obj.select(10000001)},
         title: '井盖监控',
         count: 0,
-        icon: 'el-icon-circle-plus-outline',
+        icon: 'icon-jinggaijiankong',
         // icon: 'yc-grid-manhole-cover',
       },
       {
-        click: function (item) {obj.select(4)},
+        click: function (item) {obj.select(950414)},
         title: '一键告警',
         count: 0,
-        icon: 'el-icon-thumb',
+        icon: 'icon-yijiangaojing',
         // icon: 'yc-grid-peizhitubiaosvg-1',
       },
       {
-        click: function (item) {obj.select(5)},
+        click: function (item) {obj.select(100011)},
         title: '智慧路灯',
         count: 0,
-        icon: 'el-icon-wind-power',
+        icon: 'icon-tubiaozhizuomoban-',
         // icon: 'yc-grid-ludeng',
       },
       {
         click: function (item) {obj.select(960417)},
         title: '智慧消防',
         count: 0,
-        icon: 'el-icon-loading',
+        icon: 'icon-zhihuixiaofang',
         // icon: 'yc-grid-xiaofanghuopao',
       },
       {
-        click: function (item) {obj.select(7)},
+        click: function (item) {obj.select(100022)},
         title: '智能垃圾桶',
         count: 0,
-        icon: 'el-icon-delete',
+        icon: 'icon-zhinenglajitong',
         // icon: 'iconfont iconicon_delete',
       },
       {
-        click: function (item) {obj.select(8)},
+        click: function (item) {obj.select(100007)},
         title: '智能地磁',
         count: 0,
-        icon: 'el-icon-s-help',
+        icon: 'icon-juxing',
         // icon: 'yc-grid-dici',
-      },
+      }/*,
       {
         click: function (item) {obj.select(9)},
         title: '智能门磁',
         count: 0,
         icon: 'el-icon-attract',
         // icon: 'yc-grid-menci',
-      }]
+      }*/]
   }
 }
 

+ 2 - 2
src/components/job/job_solve.vue

@@ -59,12 +59,12 @@ export default {
             disabled: true
           }, {
             label: '处理人',
-            prop: 'handler',
+            prop: 'handlePerson',
             span: 12,
 
           }, {
             label: '联系方式',
-            prop: 'phone',
+            prop: 'handlePhone',
             row: true,
             span: 12
           }, {

+ 1 - 1
src/config/env.js

@@ -1,5 +1,5 @@
 // 阿里矢量图标库配置
-let iconfontVersion = ['2726887_uabvtggzzf'];
+let iconfontVersion = ['2726887_bttmotsgwa'];
 let iconfontUrl = `//at.alicdn.com/t/font_$key.css`;
 
 let baseUrl = '';

+ 87 - 2
src/main.js

@@ -12,6 +12,7 @@ import * as urls from '@/config/env';
 import './styles/element-theme/index.css'
 import Element from 'element-ui';
 import dataV from '@jiaminghi/data-view'
+import AmapVue from '@amap/amap-vue';
 import {
   iconfontUrl,
   iconfontVersion
@@ -25,17 +26,30 @@ import avueUeditor from 'avue-plugin-ueditor';
 import website from '@/config/website';
 import crudCommon from '@/mixins/crud';
 import VueParticles from 'vue-particles'   //引入paritcles实现粒子效果
- 
+import deviceJob from "./components/job/job_solve.vue";
+require('echarts');
+
+Vue.prototype.$datavAlert = alert;
+
 // 注册全局crud驱动
 window.$crudCommon = crudCommon;
 // 加载Vue拓展
 Vue.use(router);
 Vue.use(VueAxios, axios);
 Vue.use(dataV);
-Vue.use(VueParticles) 
+Vue.use(VueParticles)
 Vue.use(Element, {
   i18n: (key, value) => i18n.t(key, value)
 });
+AmapVue.config.version = '2.0';
+AmapVue.config.key = 'cbb265e2a60bbbc04a52eec4eecdeb12';
+AmapVue.config.plugins = [
+  'AMap.ToolBar',
+  'AMap.MoveAnimation',
+  'AMap.MouseTool',
+  'AMap.DistrictSearch'
+];
+Vue.use(AmapVue);
 Vue.use(window.AVUE, {
   size: 'small',
   tableSize: 'small',
@@ -60,6 +74,77 @@ iconfontVersion.forEach(ele => {
 
 Vue.config.productionTip = false;
 
+Vue.prototype.regionFunction = (node, resolve)=> {
+  let stop_level = 3;
+  let level = node.level;
+  let data = node.data || {}
+  let code = data.code;
+  let list = [];
+  let callback = () => {
+    resolve((list || []).map(ele => {
+      return Object.assign(ele, {
+        leaf: level >= stop_level
+      })
+    }));
+  }
+  if (level == 0) {
+    select().then(res => {
+      list = res.data.data;
+      callback()
+    })
+  }
+  if (level == 1) {
+    select(code).then(res => {
+      list = res.data.data;
+      callback()
+    })
+  } else if (level == 2) {
+    select(code).then(res => {
+      list = res.data.data;
+      callback()
+    })
+  } else if (level == 3) {
+    select(code).then(res => {
+      list = res.data.data;
+      callback()
+    })
+  }else{
+    list=[]
+    callback()
+  }
+}
+
+
+Vue.prototype.$addStorageEvent = function (type, key, data) {
+  if (type === 1) {
+    // 创建一个StorageEvent事件
+    var newStorageEvent = document.createEvent('StorageEvent');
+    const storage = {
+      setItem: function (k, val) {
+        localStorage.setItem(k, val);
+        // 初始化创建的事件
+        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
+        // 派发对象
+        window.dispatchEvent(newStorageEvent);
+      }
+    }
+    return storage.setItem(key, data);
+  } else {
+    // 创建一个StorageEvent事件
+    var newStorageEvent = document.createEvent('StorageEvent');
+    const storage = {
+      setItem: function (k, val) {
+        sessionStorage.setItem(k, val);
+        // 初始化创建的事件
+        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
+        // 派发对象
+        window.dispatchEvent(newStorageEvent);
+      }
+    }
+    return storage.setItem(key, data);
+  }
+}
+
 new Vue({
   router,
   store,

+ 28 - 1
src/page/login/userlogin.vue

@@ -69,6 +69,9 @@
   import {getCaptcha} from "@/api/user";
   import {getTopUrl} from "@/util/util";
 
+  import {getByTenantId} from "@/api/system/setting";
+  import {getTenantTypeByTenantId} from "@/api/system/tenanttype"
+
   export default {
     name: "userlogin",
     data() {
@@ -137,7 +140,31 @@
               spinner: "el-icon-loading"
             });
             this.$store.dispatch("LoginByUsername", this.loginForm).then(() => {
-              this.$router.push({path: this.tagWel.value});
+              // this.$router.push({path: this.tagWel.value});
+              getByTenantId(this.loginForm.tenantId).then(res =>{
+                var _this = this;
+                getTenantTypeByTenantId(this.loginForm.tenantId).then((r)=>{
+                  console.log(r.data.data.tenantType == 1)
+                  localStorage.setItem("tenantType",r.data.data.tenantType)
+
+                  if(r.data.data.tenantType == 1){
+                    let routeUrl = this.$router.resolve({
+                      // path: "/wel/door",
+                      path: "/wel/index",
+                      params: {
+                        tenantId:  this.loginForm.tenantId
+                      }
+                    });
+                    window.open(routeUrl.href, '_top');
+                    _this.$addStorageEvent(2, "index-options",JSON.stringify(res.data.data));
+
+                  }else{
+                    // _this.$addStorageEvent(2, "index-options",JSON.stringify(res.data.data));
+                    _this.$router.push({path: this.tagWel.value});
+                  }
+
+                })
+              });
               loading.close();
             }).catch(() => {
               loading.close();

+ 17 - 1
src/router/views/index.js

@@ -113,6 +113,22 @@ export default [
     },
     component: () =>
       import( /* webpackChunkName: "views" */ '@/views/work/process/leave/detail')
-  }]
+  }, {
+    path: '/work/process/publicEvent/detail/:processInstanceId/:businessId',
+    name: '报事工单详情',
+    meta: {
+      i18n: 'work'
+    },
+    component: () =>
+      import( /* webpackChunkName: "views" */ '@/views/work/process/publicEvent/detail')
+  },{
+      path: '/work/process/publicEvent/form/:processDefinitionId',
+      name: '报事工单上报事件',
+      meta: {
+        i18n: 'work'
+      },
+      component: () =>
+        import( /* webpackChunkName: "views" */ '@/views/work/process/publicEvent/form')
+    }]
 }
 ]

+ 1 - 0
src/views/community/agency.vue

@@ -203,6 +203,7 @@ export default {
             prop: "regionCity",
             type: "select",
             width: 150,
+            dicFlag: true,
             cascaderItem: ["regionArea"],
             dicUrl: `/api/blade-system/region/lazy-tree?parentCode={{key}}`,
 

+ 2 - 2
src/views/community/residential.vue

@@ -328,7 +328,7 @@
               prop: "personName",
               labelWidth: 110,
               rules: [{
-                required: true,
+                required: false,
                 message: "请输入负责人姓名",
                 trigger: "blur"
               }, {
@@ -340,7 +340,7 @@
               prop: "personPhone",
               labelWidth: 110,
               rules: [{
-                required: true,
+                required: false,
                 message: "请输入负责人电话",
                 trigger: "blur"
               }, {

+ 3 - 0
src/views/device/doordevice.vue

@@ -334,6 +334,9 @@ export default {
   },*/
   methods: {
     selectCallback(row){
+      this.form.latitude = row.latitude;
+      this.form.longitude = row.longitude;
+      this.form.address = row.address;
       this.form.residentialId = row.id;
       this.form.residentialName = row.name;
     },

+ 211 - 203
src/views/estate/guest.vue

@@ -69,6 +69,7 @@
             {
               label: "访客名称",
               prop: "guestName",
+              disabled: true,
               search: true,
               rules: [{
                 required: true,
@@ -79,6 +80,7 @@
             {
               label: "手机号",
               prop: "guestTel",
+              disabled: true,
               rules: [{
                 required: false,
                 message: "请输入手机号",
@@ -90,16 +92,17 @@
               prop: "guestSex",
               type: 'select',
               dataType:"number",
+              disabled: true,
               dicData:[
                 {
                   label:"男",
                   value:1
                 },{
                   label:'女',
-                  value:0
+                  value:2
                 },{
                   label: "未定义",
-                  value:-1
+                  value: 0
                 }
               ],
               // dicUrl: "/api/blade-system/dict-biz/dictionary?code=sex",
@@ -108,7 +111,7 @@
               //   value: "dictKey"
               // },
               rules: [{
-                required: true,
+                required: false,
                 message: "请输入性别",
                 trigger: "blur"
               }]
@@ -124,196 +127,217 @@
               }]
             },
             {
-              label: "所属社区",
-              prop: "agencyId",
-              search: true,
-              searchFilterable: true,
-              filterable: true,
-              cascaderItem: ['residentialId'],
-              type: "select",
-              // remote: true,
-              dicUrl: "/api/cyzh-community/agency/list",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: true,
-                message: "请输入所属社区id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "所属社区名称",
+              label: "社区",
               prop: "agencyName",
-              hide: true,
-              display: false,
-              rules: [{
-                required: true,
-                message: "请输入所属社区名称",
-                trigger: "blur"
-              }]
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
             },
+            // {
+            //   label: "所属社区",
+            //   prop: "agencyId",
+            //   search: true,
+            //   searchFilterable: true,
+            //   filterable: true,
+            //   cascaderItem: ['residentialId'],
+            //   type: "select",
+            //   // remote: true,
+            //   dicUrl: "/api/cyzh-community/agency/list?size=100&name={{key}}",
+            //   dicFormatter:(res)=>{
+            //     return res.data.records;//返回字典的层级结构
+            //   },
+            //   props: {
+            //     label: "name",
+            //     value: "id"
+            //   },
+            //   rules: [{
+            //     required: true,
+            //     message: "请输入所属社区id",
+            //     trigger: "blur"
+            //   }],
+            //   viewDisplay: false,
+            //   hide: true
+            // },
+            // {
+            //   label: "所属小区",
+            //   prop: "residentialId",
+            //   type: "select",
+            //   cascaderItem: ['buildingId'],
+            //   dicUrl: "/api/cyzh-community/residential/list?agencyId={{key}}",
+            //   dicFormatter:(res)=>{
+            //     return res.data.records;//返回字典的层级结构
+            //   },
+            //   // dicFlag: false,
+            //   filterable: true,
+            //   props: {
+            //     label: "name",
+            //     value: "id"
+            //   },
+            //   rules: [{
+            //     required: false,
+            //     message: "请输入所属小区id",
+            //     trigger: "blur"
+            //   }],
+            //   hide: true,
+            //   viewDisplay: false
+            // },
             {
-              label: "所属小区",
-              prop: "residentialId",
-              type: "select",
-              cascaderItem: ['buildingId'],
-              dicUrl: "/api/cyzh-community/residential/list?agencyId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              // dicFlag: false,
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: false,
-                message: "请输入所属小区id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "小区名称",
+              label: "小区",
               prop: "residentialName",
-              hide: true,
-              display: false,
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
                 required: true,
                 message: "请输入小区名称",
                 trigger: "blur"
               }]
             },
+            // {
+            //   label: "所属楼栋",
+            //   prop: "buildingId",
+            //   hide: true,
+            //   viewDisplay: false,
+            //   type: "select",
+            //   cascaderItem: ['unitId'],
+            //   dicUrl: `/api/cyzh-community/building/list?residentialId={{key}}`,
+            //   dicFormatter:(res)=>{
+            //     return res.data.records;//返回字典的层级结构
+            //   },
+            //   // dicFlag: false,
+            //   filterable: true,
+            //   props: {
+            //     label: "name",
+            //     value: "id"
+            //   },
+            //   rules: [{
+            //     required: false,
+            //     message: "请输入楼栋id",
+            //     trigger: "blur"
+            //   }]
+            // },
             {
-              label: "所属楼栋",
-              prop: "buildingId",
-              hide: true,
-              type: "select",
-              cascaderItem: ['unitId'],
-              dicUrl: `/api/cyzh-community/building/list?residentialId={{key}}`,
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              // dicFlag: false,
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: false,
-                message: "请输入楼栋id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "楼栋名称",
+              label: "楼栋",
               prop: "buildingName",
-              hide: true,
-              display: false,
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
                 required: true,
                 message: "请输入楼栋名称",
                 trigger: "blur"
               }]
             },
+            // {
+            //   label: "所属单元",
+            //   prop: "unitId",
+            //   hide: true,
+            //   viewDisplay: false,
+            //   type: "select",
+            //   cascaderItem: ['floorId'],
+            //   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: false,
+            //     message: "请输入所属单元id",
+            //     trigger: "blur"
+            //   }]
+            // },
             {
-              label: "所属单元",
-              prop: "unitId",
-              hide: true,
-              type: "select",
-              cascaderItem: ['floorId'],
-              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: false,
-                message: "请输入所属单元id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "单元名称",
+              label: "单元",
               prop: "unitName",
-              hide: true,
-              display: false,
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
                 required: true,
                 message: "请输入单元名称",
                 trigger: "blur"
               }]
             },
+            // {
+            //   label: "所属楼层",
+            //   prop: "floorId",
+            //   type: "select",
+            //   hide: true,
+            //   viewDisplay: false,
+            //   cascaderItem: ['roomId'],
+            //   dicUrl: "/api/cyzh-community/floor/list?unitId={{key}}",
+            //   dicFormatter:(res)=>{
+            //     return res.data.records;//返回字典的层级结构
+            //   },
+            //   // dicFlag: false,
+            //   filterable: true,
+            //   props: {
+            //     label: "name",
+            //     value: "id"
+            //   },
+            //   rules: [{
+            //     required: false,
+            //     message: "请输入楼层id",
+            //     trigger: "blur"
+            //   }]
+            // },
             {
-              label: "所属楼层",
-              prop: "floorId",
-              type: "select",
-              hide: true,
-              cascaderItem: ['roomId'],
-              dicUrl: "/api/cyzh-community/floor/list?unitId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              // dicFlag: false,
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              rules: [{
-                required: false,
-                message: "请输入楼层id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "楼层名称",
+              label: "楼层",
               prop: "floorName",
-              hide: true,
-              display: false,
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
                 required: true,
                 message: "请输入楼层名称",
                 trigger: "blur"
               }]
             },
+            // {
+            //   label: "所属房间",
+            //   prop: "roomId",
+            //   type: "select",
+            //   hide: true,
+            //   viewDisplay: false,
+            //   dicUrl: "/api/cyzh-community/room/list?floorId={{key}}",
+            //   dicFormatter:(res)=>{
+            //     return res.data.records;//返回字典的层级结构
+            //   },
+            //   // dicFlag: false,
+            //   filterable: true,
+            //   props: {
+            //     label: "name",
+            //     value: "id"
+            //   },
+            //   rules: [{
+            //     required: false,
+            //     message: "请输入所属房间id",
+            //     trigger: "blur"
+            //   }]
+            // },
             {
-              label: "所属房间",
-              prop: "roomId",
-              type: "select",
-              hide: true,
-              dicUrl: "/api/cyzh-community/room/list?floorId={{key}}",
-              dicFormatter:(res)=>{
-                return res.data.records;//返回字典的层级结构
-              },
-              // dicFlag: false,
-              filterable: true,
-              props: {
-                label: "name",
-                value: "id"
-              },
+              label: "房间",
+              prop: "roomName",
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
-                required: false,
-                message: "请输入所属房间id",
+                required: true,
+                message: "请输入所属房间名称",
                 trigger: "blur"
               }]
             },
             {
-              label: "所属房间名称",
-              prop: "roomName",
-              hide: true,
-              display: false,
+              label: "拜访企业",
+              prop: "enterpriseName",
+              editDisplay: false,
+              addDisplay: false,
+              disabled: true,
               rules: [{
                 required: true,
                 message: "请输入所属房间名称",
@@ -323,8 +347,9 @@
             {
               label: "被访者姓名",
               prop: "userName",
+              disabled: true,
               rules: [{
-                required: true,
+                required: false,
                 message: "请输入要访问的住户姓名",
                 trigger: "blur"
               }]
@@ -332,6 +357,7 @@
             {
               label: "访问的住户的id",
               prop: "userId",
+              disabled: true,
               hide: true,
               display: false,
               rules: [{
@@ -340,44 +366,10 @@
                 trigger: "blur"
               }]
             },
-            {
-              label: "企业id",
-              prop: "enterpriseId",
-              hide: true,
-              display: false,
-              rules: [{
-                required: false,
-                message: "请输入企业id",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "企业名称",
-              prop: "enterpriseName",
-              hide: true,
-              display: false,
-              rules: [{
-                required: false,
-                message: "请输入企业名称",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "存储位置(通过该字段快速查询,所有的子节点)",
-              prop: "orgPosition",
-              hide: true,
-              display: false,
-              rules: [{
-                required: true,
-                message: "请输入存储位置(通过该字段快速查询,所有的子节点)",
-                trigger: "blur"
-              }]
-            },
             {
               label: "审核状态",
               prop: "checkState",
               slot: true,
-              display: false,
               type:'select',
               dicData:[
                 {
@@ -403,6 +395,7 @@
               prop: "imageUri",
               type: "upload",
               width: 150,
+              disabled: true,
               listType: 'picture-img',
               propsHttp: {
                 res: "data",
@@ -415,21 +408,11 @@
                 trigger: "blur"
               }]
             },
-            {
-              label: "openId",
-              prop: "openId",
-              hide: true,
-              display: false,
-              rules: [{
-                required: true,
-                message: "请输入openId",
-                trigger: "blur"
-              }]
-            },
             {
               label: "访问时间",
               prop: "interviewTime",
               type: 'datetime',
+              disabled: true,
               valueFormat: 'yyyy-MM-dd HH:mm:ss',
               hide: true,
               rules: [{
@@ -441,6 +424,7 @@
             {
               label: "身份证",
               prop: "guestIdcard",
+              disabled: true,
               hide: true,
               rules: [{
                 required: false,
@@ -484,11 +468,35 @@
     created() {
       const tenantType = localStorage.getItem("tenantType");
       if (tenantType == 0){
-        this.option.column[4].label = "所属社区"
-        this.option.column[6].label = "所属小区"
+        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){
-        this.option.column[4].label = "所属园区"
-        this.option.column[6].label = "所属区域"
+        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;
       }
     },
     methods: {

+ 15 - 1
src/views/order/deviceorder.vue

@@ -39,8 +39,10 @@ import {
 } from "vuex";
 import {iconsOption} from "../../api/dataview/dataviewoption";
 import {validatePhone} from "../../util/validator";
+import deviceJob from "../../components/job/job_solve";
 
 export default {
+  components:{deviceJob},
   data() {
     return {
       searchForm:{},
@@ -161,6 +163,18 @@ export default {
               trigger: "blur"
             }]
           },
+          {
+            label: "工单生成时间",
+            prop: "createTime",
+            type: "datetime",
+            width: 150,
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            rules: [{
+              required: true,
+              message: "请输入告警时间",
+              trigger: "blur"
+            }]
+          },
           {
             label: "工单状态",
             prop: "jobStatus",
@@ -412,7 +426,7 @@ export default {
         this.countOption.data[5].count = this.deviceJobStaticVo.xfCount;
         this.countOption.data[6].count = this.deviceJobStaticVo.trashbinCount;
         this.countOption.data[7].count = this.deviceJobStaticVo.parkCount;
-        this.countOption.data[8].count = this.deviceJobStaticVo.gateCount;
+        //this.countOption.data[8].count = this.deviceJobStaticVo.gateCount;
         // console.log(this.deviceJobStaticVo.alarmCount)
       });
     }

+ 18 - 1
src/views/person/basicinfo.vue

@@ -271,6 +271,12 @@
                 trigger: "blur"
               }]
             },*/
+            {
+              label: "所属小区",
+              prop: "residentialName",
+              addDisplay: false,
+              editDisplay: false,
+            },
             {
               label: "所属小区",
               prop: "residentialId",
@@ -278,7 +284,8 @@
               search: true,
               searchFilterable: true,
               // cascaderItem: ['buildingId'],
-              dicUrl: "/api/cyzh-community/residential/list",
+              remote: true,
+              dicUrl: "/api/cyzh-community/residential/list?name={{key}}",
               dicFormatter:(res)=>{
                 return res.data.records;//返回字典的层级结构
               },
@@ -617,6 +624,16 @@
                 trigger: "blur"
               }]
             },
+            {
+              label: "审核状态",
+              prop: "remark",
+              hide:true,
+              rules: [{
+                required: false,
+                message: "请输入备注",
+                trigger: "blur"
+              }]
+            },
             {
               label: "备注",
               prop: "remark",

+ 20 - 7
src/views/person/serveruser.vue

@@ -27,8 +27,11 @@
                    @click="handleDelete">删 除
         </el-button>
       </template>
-      <template slot="residentialId" slot-scope="scope">
-        <div>{{scope.row.residentialName}}</div>
+<!--      <template slot="residentialId" slot-scope="scope">-->
+<!--        <div>{{scope.row.residentialName}}</div>-->
+<!--      </template>-->
+      <template slot="residentialIdForm" slot-scope="scope">
+        <select-dialog-residential :name="form.residentialName" :id="form.residentialId" :disabled="residentialDisabled" :callback="selectCallback"></select-dialog-residential>
       </template>
     </avue-crud>
   </basic-container>
@@ -38,13 +41,16 @@
   import {getList, getDetail, add, update, remove} from "@/api/person/serveruser";
   import {mapGetters} from "vuex";
   import {validatePhone} from "../../util/validator";
+  import SelectDialogResidential from "../../components/select-dialog/select-dialog-residential";
 
   export default {
+    components: {SelectDialogResidential},
     data() {
       return {
         form: {},
         query: {},
         loading: true,
+        residentialDisabled: false,
         page: {
           pageSize: 10,
           currentPage: 1,
@@ -164,24 +170,27 @@
               prop: "residentialId",
               type: "select",
               search: true,
-              slot:true,
+              searchFilterable: true,
+              // cascaderItem: ['buildingId'],
               remote: true,
-              dicUrl: "/api/cyzh-community/residential/list?size=500&id={{key}}",
+              dicUrl: "/api/cyzh-community/residential/list?name={{key}}",
               dicFormatter:(res)=>{
                 return res.data.records;//返回字典的层级结构
               },
+              // dicFlag: false,
+              filterable: true,
+              formslot: true,
               props: {
                 label: "name",
                 value: "id"
               },
-              filterable: true,
               rules: [{
                 required: true,
-                message: "请输入所属小区",
+                message: "请选择所属小区",
                 trigger: "blur"
               }],
               hide: true,
-              viewDisplay: false
+              // viewDisplay: false
             },
             // {
             //   label: "所属小区名称",
@@ -346,6 +355,10 @@
       }
     },
     methods: {
+      selectCallback(row){
+        this.form.residentialId = row.id;
+        this.form.residentialName = row.name;
+      },
       rowSave(row, done, loading) {
         add(row).then(() => {
           this.onLoad(this.page);

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff