Sfoglia il codice sorgente

参数修改,引入海康插件,导航栏

tianyabing 2 anni fa
parent
commit
51c67f4c1e
48 ha cambiato i file con 1967 aggiunte e 1934 eliminazioni
  1. 1 0
      index.html
  2. 11 0
      package-lock.json
  3. 1 0
      package.json
  4. 4 0
      src/App.vue
  5. 0 0
      src/assets/images/function/统一鉴权.png
  6. 0 0
      src/assets/images/functionColor/small/权限查看.png
  7. BIN
      src/assets/images/functionColor/资产管理.png
  8. BIN
      src/assets/images/login-bg.png
  9. 1 1
      src/components/business/analysis/analysis.vue
  10. 1 1
      src/components/business/asset/asset.vue
  11. 1 1
      src/components/business/space/space.vue
  12. 49 29
      src/components/common/query.vue
  13. 6 6
      src/components/common/timeRange.vue
  14. 1 1
      src/components/doubleCarbon/PV/doubleCarbonPv.vue
  15. 1 1
      src/components/doubleCarbon/car/doubleCarbonCar.vue
  16. 1 1
      src/components/doubleCarbon/overview/doubleCarbonOverview.vue
  17. 1 1
      src/components/doubleCarbon/print/doubleCarbonPrint.vue
  18. 37 10
      src/components/home/HomeAside.vue
  19. 5 4
      src/components/home/HomeHeader.vue
  20. 8 7
      src/components/home/HomeLeft.vue
  21. 2 1
      src/components/home/NavigationPage.vue
  22. 2 2
      src/components/life/healthyHome/lifeHealthyHome.vue
  23. 2 2
      src/components/life/parking/lifeParking.vue
  24. 2 2
      src/components/life/restaurant/lifeRestaurant.vue
  25. 2 2
      src/components/life/supermarket/lifeSupermarket.vue
  26. 0 147
      src/components/scene/AnalogData.js
  27. 376 430
      src/components/scene/access/sceneAccessGuestManage.vue
  28. 87 24
      src/components/scene/access/sceneAccessManage.vue
  29. 503 465
      src/components/scene/access/sceneAccessParkManage.vue
  30. 74 0
      src/components/scene/energy/common/deviceCardAir.vue
  31. 122 757
      src/components/scene/energy/sceneEnergyAircondition.vue
  32. 306 0
      src/components/scene/energy/sceneEnergyAircondition/airconditioningCard.vue
  33. 1 1
      src/components/scene/meeting/config/meetingRooms.vue
  34. 5 1
      src/components/scene/meeting/sceneMeetingOverview.vue
  35. 1 1
      src/components/security/alarm/securityAlarmManage.vue
  36. 45 0
      src/components/security/camera/hkwsCamera.vue
  37. 1 1
      src/components/work/bus/workBus.vue
  38. 2 2
      src/components/work/meeting/workMeeting.vue
  39. 3 3
      src/components/work/overview/workOverview.vue
  40. 2 2
      src/components/work/print/workPrint.vue
  41. 1 1
      src/data/json/menuList.json
  42. 7 0
      src/data/json/user.json
  43. 3 0
      src/main.js
  44. 139 0
      src/plugins/gverify.js
  45. 8 0
      src/stores/index.js
  46. 2 2
      src/utils/dateUtil.js
  47. 3 0
      src/views/HomeView.vue
  48. 137 25
      src/views/LoginView.vue

+ 1 - 0
index.html

@@ -5,6 +5,7 @@
     <link rel="icon" href="/favicon.ico" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>智慧楼宇平台</title>
+    <script type="module" src="/src/plugins/gverify.js"></script>
   </head>
   <body>
     <div id="app"></div>

+ 11 - 0
package-lock.json

@@ -14,6 +14,7 @@
         "echarts": "^5.4.1",
         "echarts-liquidfill": "^3.1.0",
         "element-resize-detector": "^1.2.4",
+        "hikvs-web": "^1.0.4",
         "moment": "^2.29.4",
         "pinia": "^2.0.16",
         "qs": "^6.11.0",
@@ -3425,6 +3426,11 @@
         "he": "bin/he"
       }
     },
+    "node_modules/hikvs-web": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/hikvs-web/-/hikvs-web-1.0.4.tgz",
+      "integrity": "sha512-TUpIDhzTEf6uwPw/IZ0auv6Kau2Jg3n264/x79XzDflE//4gUbJT+tPCH+BoHRvsSRz0YW//Vbp6IsAuT/uFog=="
+    },
     "node_modules/hosted-git-info": {
       "version": "2.8.9",
       "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -9084,6 +9090,11 @@
       "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
     },
+    "hikvs-web": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/hikvs-web/-/hikvs-web-1.0.4.tgz",
+      "integrity": "sha512-TUpIDhzTEf6uwPw/IZ0auv6Kau2Jg3n264/x79XzDflE//4gUbJT+tPCH+BoHRvsSRz0YW//Vbp6IsAuT/uFog=="
+    },
     "hosted-git-info": {
       "version": "2.8.9",
       "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
     "echarts": "^5.4.1",
     "echarts-liquidfill": "^3.1.0",
     "element-resize-detector": "^1.2.4",
+    "hikvs-web": "^1.0.4",
     "moment": "^2.29.4",
     "pinia": "^2.0.16",
     "qs": "^6.11.0",

+ 4 - 0
src/App.vue

@@ -23,6 +23,10 @@ export default {
   padding: 0;
   box-sizing: border-box;
 }
+#app {
+  width: 100%;
+  height: 100%;
+}
 html,body {
   width: 100%;
   height: 100%;

+ 0 - 0
src/assets/images/function/权限下达.png → src/assets/images/function/统一鉴权.png


+ 0 - 0
src/assets/images/functionColor/small/权限管理.png → src/assets/images/functionColor/small/权限查看.png


BIN
src/assets/images/functionColor/资产管理.png


BIN
src/assets/images/login-bg.png


+ 1 - 1
src/components/business/analysis/analysis.vue

@@ -40,7 +40,7 @@ export default {
   data() {
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         energy: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },

+ 1 - 1
src/components/business/asset/asset.vue

@@ -79,7 +79,7 @@ export default {
     }
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       tagCheck: {

+ 1 - 1
src/components/business/space/space.vue

@@ -58,7 +58,7 @@ export default {
     }
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 49 - 29
src/components/common/query.vue

@@ -2,19 +2,19 @@
   <div class="ioc-query-form">
     <a-form layout="inline" :form="formData">
       <a-form-item label="单位名称:" class="formItem" v-if="visible.company">
-        <a-select default-value="0" style="width: 200px" v-model="formData.company">
-          <a-select-option value="0"> 全部 </a-select-option>
+        <a-select default-value="0" style="width: 200px" v-model="formData.companyId">
+          <!--<a-select-option value="0"> 全部 </a-select-option>-->
           <a-select-option v-for="item in companyData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>
         </a-select>
       </a-form-item>
       <a-form-item label="部门名称:" class="formItem" v-if="visible.dept">
-        <a-select default-value="0" style="width: 200px" v-model="formData.dept">
+        <a-select default-value="0" style="width: 200px" v-model="formData.deptId">
           <a-select-option value="0"> 全部 </a-select-option>
           <a-select-option v-for="item in deptData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>
         </a-select>
       </a-form-item>
       <a-form-item label="楼层:" class="formItem" v-if="visible.floor">
-        <a-select default-value="0" style="width: 120px" v-model="formData.floor">
+        <a-select default-value="0" style="width: 120px" v-model="formData.floorId">
           <a-select-option value="0"> 全部 </a-select-option>
           <a-select-option v-for="item in floorData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>
         </a-select>
@@ -81,47 +81,67 @@ export default {
       formData: {},
       // 单位数据
       companyData: [
-        {
-          label: '中讯邮电咨询设计院',
-          value: '1'
-        },
+        //{
+        //  label: '中讯邮电咨询设计院',
+        //  value: '1'
+        //},
         {
           label: '北京电信规划院',
-          value: '2'
+          value: '0'
         },
-        {
-          label: '上分',
-          value: '3'
-        }
+        //{
+        //  label: '上分',
+        //  value: '3'
+        //}
       ],
       // 楼层数据
       floorData: [
         {
-          label: '1F',
-          value: '1'
-        },{
-          label: '2F',
-          value: '2'
-        },{
-          label: '3F',
-          value: '3'
-        },{
-          label: '4F',
-          value: '4'
-        },{
-          label: '5F',
-          value: '5'
+          value: -3,
+          label: "B3"
+        },
+        {
+          value: -2,
+          label: "B2"
+        },
+        {
+          value: -1,
+          label: "B1"
+        },
+        {
+          value: 1,
+          label: "1F"
+        },
+        {
+          value: 7,
+          label: "7F"
+        },
+        {
+          value: 8,
+          label: "8F"
+        },
+        {
+          value: 9,
+          label: "9F"
+        },
+        {
+          value: 21,
+          label: "21F"
         }
       ],
       // 部门数据
       deptData: [
         {
-          label: '市场部',
+          label: '业务一部',
           value: '1'
         },
         {
-          label: '研发部',
+          label: '业务二部',
           value: '2'
+        },
+        {
+          label: '业务三部',
+          value: '3'
         }
       ],
       // 能源类型

+ 6 - 6
src/components/common/timeRange.vue

@@ -28,11 +28,11 @@ export default {
   mounted() {
     this.$nextTick(()=>{
       if (this.timeRange) {
-        if (this.timeRange.startTime) {
-          this.defaultStartTime = this.$moment(this.timeRange.startTime, this.timeFormat)
+        if (this.timeRange.startDate) {
+          this.defaultStartTime = this.$moment(this.timeRange.startDate, this.timeFormat)
         }
-        if (this.timeRange.endTime) {
-          this.defaultEndTime = this.$moment(this.timeRange.endTime, this.timeFormat)
+        if (this.timeRange.endDate) {
+          this.defaultEndTime = this.$moment(this.timeRange.endDate, this.timeFormat)
         }
       }
       this.show = true
@@ -50,8 +50,8 @@ export default {
   methods: {
     change(date, dateStr) {
       let obj = {
-        startTime: dateStr[0],
-        endTime: dateStr[1]
+        startDate: dateStr[0],
+        endDate: dateStr[1]
       }
       this.updateTimeRange(obj);
     },

+ 1 - 1
src/components/doubleCarbon/PV/doubleCarbonPv.vue

@@ -18,7 +18,7 @@ export default {
   data() {
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 1 - 1
src/components/doubleCarbon/car/doubleCarbonCar.vue

@@ -18,7 +18,7 @@ export default {
   data() {
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 1 - 1
src/components/doubleCarbon/overview/doubleCarbonOverview.vue

@@ -23,7 +23,7 @@ export default {
   data() {
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 1 - 1
src/components/doubleCarbon/print/doubleCarbonPrint.vue

@@ -18,7 +18,7 @@ export default {
   data() {
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 37 - 10
src/components/home/HomeAside.vue

@@ -79,6 +79,19 @@ export default {
 
 <template>
   <div class="ioc-aside">
+    <div title="收起" class="collapse-btn" style="right: 0;background-color: #23608c;border-radius: 15px 0px 0px 15px" @click="toggleCollapse" v-if="!collapse">
+      <div style="margin-top: 30px;margin-left: 2px" >
+        <a-icon title="收起" style="color: white;font-size: 12px;vertical-align: text-top" type="menu-fold"  />
+      </div>
+    </div>
+
+    <div title="展开" class="collapse-btn"  @click="toggleCollapse" v-if="collapse">
+      <div style="margin-top: 30px;" >
+        <a-icon title="展开" style="color: white;font-size: 12px;vertical-align: text-top;" type="menu-unfold" />
+      </div>
+    </div>
+
+
     <a-menu
       class="menu"
       theme="dark"
@@ -87,16 +100,16 @@ export default {
       mode="inline"
       @select="handleSelected"
     >
-      <a-menu-item-group key="g1">
-        <template slot="title">
-          <div style="height: 12px"></div>
-          <div class="aside-collapse" style="color: white; cursor: pointer;margin-left: 5%" @click="toggleCollapse">
-            <a-icon style="font-size: 18px;vertical-align: text-top" type="menu-fold" v-if="!collapse" />
-            <a-icon style="font-size: 18px;vertical-align: text-top;" type="menu-unfold" v-if="collapse" />
-            <span style="margin-left: 15px;vertical-align: top" v-if="!collapse">展开/收起</span>
-          </div>
-        </template>
-      </a-menu-item-group>
+      <!--<a-menu-item-group key="g1">-->
+      <!--  <template slot="title">-->
+      <!--    <div style="height: 12px"></div>-->
+      <!--    <div class="aside-collapse" style="color: white; cursor: pointer;margin-left: 5%" @click="toggleCollapse">-->
+      <!--      <a-icon style="font-size: 18px;vertical-align: text-top" type="menu-fold" v-if="!collapse" />-->
+      <!--      <a-icon style="font-size: 18px;vertical-align: text-top;" type="menu-unfold" v-if="collapse" />-->
+      <!--      <span style="margin-left: 15px;vertical-align: top" v-if="!collapse">展开/收起</span>-->
+      <!--    </div>-->
+      <!--  </template>-->
+      <!--</a-menu-item-group>-->
       <a-menu-item v-for="item in menuList" :key="item.router" @click="handleClickMenuItem(item)" >
         <span class="anticon" :style="{verticalAlign: iconVerticalAlign}">
           <a-avatar class="function-avatar" shape="square" :size="20" :src="requireImg('function/'+item.icon)"></a-avatar>
@@ -119,6 +132,7 @@ export default {
 .ioc-aside {
   //width: 100%;
   height: 100%;
+  position: relative;
 
   .aside-collapse {
     width: 100%;
@@ -132,6 +146,19 @@ export default {
     }
   }
 
+  .collapse-btn {
+    width: 14px;
+    height: 80px;
+    cursor: pointer;
+    background-color: #266999;
+    position: absolute;
+    top: 40%;
+    right: -10px;
+    z-index: 999;
+    border-top-right-radius: 12px;
+    border-bottom-right-radius: 12px;
+  }
+
   /*菜单样式*/
   /deep/ .ant-menu-sub {
     box-shadow: none !important;

+ 5 - 4
src/components/home/HomeHeader.vue

@@ -22,10 +22,14 @@ export default {
     }
   },
   mounted() {
+    this.$store.paramStore().buildingId = '1';
   },
   methods: {
     toNotice() {
       this.$router.push({path: '/notice'})
+    },
+    handleBuildingChange(val) {
+      this.$store.paramStore().buildingId = val;
     }
   },
 }
@@ -44,7 +48,7 @@ export default {
     </div>
 
     <div v-show="isLogin" class="project">
-      <a-select class="project-select" default-value="1">
+      <a-select class="project-select" default-value="1" @change="handleBuildingChange">
         <template #suffixIcon>
           <a-icon type="caret-down" style="color: white" />
         </template>
@@ -52,9 +56,6 @@ export default {
         <a-select-option value="1">
           主语国际3号楼
         </a-select-option>
-        <a-select-option value="2">
-          测试
-        </a-select-option>
       </a-select>
     </div>
 

+ 8 - 7
src/components/home/HomeLeft.vue

@@ -47,7 +47,7 @@ import {requireImg} from "@/utils/requireImg";
 export default {
   data() {
     return {
-      navVisible: false
+      navVisible: true
     }
   },
   props: {
@@ -68,10 +68,10 @@ export default {
       this.close()
     },
     showNav() {
-      this.navVisible = true;
+      //this.navVisible = true;
     },
     hideNav() {
-      this.navVisible = false;
+      //this.navVisible = false;
     }
   }
 }
@@ -89,15 +89,15 @@ export default {
 
   .allNavBtn {
     width: 100%;
-    cursor: pointer;
+    cursor: default;
     //text-align: center;
     padding-bottom: 10px;
     padding-left: 15%;
     margin: 12px 0;
   }
-  .allNavBtn:hover {
-    background-color: @primary-color;
-  }
+  //.allNavBtn:hover {
+  //  background-color: @primary-color;
+  //}
 
   .ioc-nav {
     display: inline-block;
@@ -105,6 +105,7 @@ export default {
     width: calc(100% - 200px);
     height: 100%;
     overflow-y: auto;
+    //background-color: rgba(255,255,255);
   }
 
   /deep/ .ant-menu-item-group-title {

+ 2 - 1
src/components/home/NavigationPage.vue

@@ -56,6 +56,7 @@ export default {
 <style lang="less" scoped>
 .left-dashboard {
   width: 100%;
+  height: 100%;
   .menu {
     display: inline-block;
     vertical-align: top;
@@ -78,7 +79,7 @@ export default {
         margin-bottom: 6px;
         line-height: 30px;
         letter-spacing: 1px;
-        color: #999999;
+        color: #333333;
         cursor: pointer;
       }
     }

+ 2 - 2
src/components/life/healthyHome/lifeHealthyHome.vue

@@ -11,8 +11,8 @@ export default {
     let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        dept: '0',
+        companyId: '0',
+        deptId: '0',
         timeRange: range
       },
       coreData: [

+ 2 - 2
src/components/life/parking/lifeParking.vue

@@ -14,8 +14,8 @@ export default {
     let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        dept: '0',
+        companyId: '0',
+        deptId: '0',
         timeRange: range
       },
       coreData: [

+ 2 - 2
src/components/life/restaurant/lifeRestaurant.vue

@@ -15,8 +15,8 @@ export default {
     let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        dept: '0',
+        companyId: '0',
+        deptId: '0',
         timeRange: range
       },
       coreData: [

+ 2 - 2
src/components/life/supermarket/lifeSupermarket.vue

@@ -11,8 +11,8 @@ export default {
     let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        dept: '0',
+        companyId: '0',
+        deptId: '0',
         timeRange: range
       },
       productRanks: [],

+ 0 - 147
src/components/scene/AnalogData.js

@@ -1,147 +0,0 @@
-// 双碳概览-模拟数据
-// 楼层\会议室状态\会议室人数
-const floor = [
-    { value: "1", label: "一楼" },
-    { value: "2", label: "二楼" }
-]
-const conferenceRoomStatus = [
-    { value: "1", label: "会议中" },
-    { value: "2", label: "闲置中" },
-    { value: "3", label: "已预订" }
-]
-const numberOfPeopleInConferenceRoom = [
-    { value: "1", label: "4人" },
-    { value: "2", label: "8人" },
-    { value: "3", label: "16人" }
-]
-const CHART_DATA = {
-    BarChartData: {
-        yAxisData: ["中讯", "北京规划院", "郑分", "广分", "上分"],
-        seriesData: {
-            碳配额存量: [120, 132, 101, 134, 90, 230, 210],
-            碳配额消耗: [220, 182, 191, 234, 290, 330, 310]
-        }
-    },
-    LineChartData: {
-        xAxisData: ["1月", "2月", "3月", "4月", "5月", "6月", "7月"],
-        seriesData: {
-            中讯: [120, 132, 101, 134, 90, 230, 210],
-            北京规划院: [220, 182, 191, 234, 290, 330, 310],
-            郑分: [150, 232, 201, 154, 190, 330, 410],
-            广分: [320, 332, 301, 334, 390, 330, 320],
-            上分: [820, 932, 901, 934, 1290, 1330, 1320]
-        }
-    },
-    PieChartData: {
-        seriesName: "碳排放占比",
-        seriesData: [
-            { value: 1048, name: "汽油" },
-            { value: 735, name: "柴油" },
-            { value: 580, name: "天然气" },
-            { value: 484, name: "热力" },
-            { value: 300, name: "电力" },
-            { value: 199, name: "其他" }
-        ]
-    }
-}
-const doubleCarbonNewsInfoList = [
-    {
-        title: "【助力“双碳”,人才缺口这么补】",
-        content: `<div class="article"><p>  近日,天津市科学技术局等6部门发布《天津市科技支撑碳达峰碳中和实施方案(2022—2030年)》,提出加强绿色低碳领域人才选拔培养,加大对绿色低碳领域科技人才的支持力度,积极引进绿色低碳科技创新发展急需的各类人才,加强人才队伍建设。</p>
-<p>  不只是天津,放眼全国,上海、吉林、贵州、内蒙古等地相关政府部门也已经陆续发布了关于科技支撑碳达峰、碳中和(以下简称“双碳”)的实施方案,其中“提升绿色低碳人才培养能力”成为各地方案中都提到的一项内容。</p>
-<p>  <strong>产业、技术变革催生新需求</strong></p>
-<p>  2020年,我国提出采取更加有力的政策和措施,二氧化碳排放力争2030年前达到峰值,努力争取2060年前实现碳中和。这就是人们熟知的“双碳”目标。</p>
-<p>  其实,早在“双碳”目标提出前,我国的清洁能源建设已经取得重大成就,在水电、风电、光伏及氢能、储能等领域,人才队伍培养与建设均在有序进行。而当“双碳”目标提出后,一场广泛而深刻的经济社会系统性变革就此开始,清洁能源领域人才队伍开始走上助力实现“双碳”目标的转型之路。</p>
-<p>  面对新形势,原有人才队伍能否满足需求呢?</p>
-<p>  答案是否定的。</p>
-<p>  科技部科技人才交流开发服务中心开发服务处处长牛萍在具体调研中发现,战略科学家不足、复合型人才稀少、产业人才短缺成为当前“双碳”科技人才市场的主要特点。</p>
-<p>  牛萍告诉科技日报记者,面向“双碳”目标,通识教育难以满足复合型“双碳”科技人才的培养需求,导致高校“双碳”科技人才培养与市场需求不匹配。与此同时,“双碳”领域相关产学研合作不足,产业人才缺乏,这些都是导致“双碳”人才出现紧缺的原因。</p>
-<p>  在具体产业方面,从教育部下发的方案中可以看出,储能与氢能、碳捕集利用与封存、碳金融和碳交易等领域尤其缺乏人才支撑。</p>
-<p>  “人才需求的改变,源于产业需求的变化。”相关业内专家表示,“在‘双碳’目标提出前,氢能和储能产业关注的是‘能’,而在‘双碳’目标提出后,产业的关注点转变为‘碳’。换言之,‘双碳’目标的提出使氢能和储能等相关产业的技术目标,由追求相对减排率转变为追求绝对减排量。”</p>
-<p>  不仅是产业变化,技术变革也会带来人才需求的改变。</p>
-<p>  二氧化碳捕集、利用与封存(CCUS)技术被形象地称为“碳捕手”,其可将二氧化碳从工业或其他碳排放源中捕集,并运输到特定地点加以利用或封存,具有减排规模大、减排效益明显的特点。</p>
-<p>  不过,在过去很长一段时间内,二氧化碳捕集、利用与封存技术并未“合体”,而是各自分散在不同行业。伴随降碳要求的不断增加,化石能源大规模低碳化利用的技术需求也随之增加,二氧化碳捕集、利用与封存技术被有机地“组合”到一起。同时,行业从业者也要完成技能、知识等的“交叉融合”,此外还需要复合型人才的加入。</p>
-<p>  <strong>产学研多方推进人才培养</strong></p>
-<p>  在内蒙古乌兰察布市,三峡现代能源创新示范园(以下简称示范园)拔地而起。示范园里,中国长江三峡集团有限公司(以下简称三峡集团)“拉了个群”,联合产学研合作伙伴,共同探索“源网荷储”(以“电源、电网、负荷、储能”为整体规划的新型电力运行模式)一体化新型能源系统发展,建设源网荷储技术研发试验基地。</p>
-<p>  “示范园中的源网荷储技术研发试验基地,是三峡集团培养储能技术人才的一个基地。”三峡集团科学技术研究院综合能源技术研究中心主任尹立坤告诉科技日报记者,2020年,他们综合考量全球先进储能技术,结合我国地理、气候特点,选择对8种新型储能技术进行研究,并建成2个行业急需的大型实验室,联合中国科学院、清华大学、华北电力大学等20余家科研单位进行技术攻关,联合培养人才。</p>
-<p>  此后短短2年,一系列储能技术成果相继落地:当前国内容量最大的功率路由器设备,国内规模最大、类型最丰富的储能系统动态模拟平台,兆瓦时级固态锂离子电池储能关键技术及工程应用项目……</p>
-<p>  科研成果创下“行业之最”的同时,科研人才也不断涌现。三峡集团科学技术研究院统计资料显示,目前集团已培养博士20余名,其中15名青年骨干研发人员已走上企业储能一线工作岗位。</p>
-<p>  产业之外,以培养人才为己任的高校也加快了探索的脚步。</p>
-<p>  2021年9月,清华大学成立碳中和研究院。作为学科交叉研究平台,该研究院整合清华大学相关领域学科优势,直面“双碳”领域复合型人才稀少等难题,协同打造低碳、零碳、负碳等颠覆性的核心技术,推动碳中和相关学科建设和高层次人才培养。</p>
-<p>  清华大学碳中和研究院院长助理、环境学院教授鲁玺介绍,目前清华大学碳中和研究院有8个研究中心,研究方向涵盖低碳能源、新型电力系统、零碳建筑、零碳交通、工业深度减碳、减污降碳协同增效、气候变化与碳中和战略及气候治理与碳金融等交叉领域,以系统思维推动碳中和人才队伍建设和培养。</p>
-<p>  <strong>关键一步在于转变观念</strong></p>
-<p>  2021年10月24日,《中共中央国务院关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》和《国务院关于印发2030年前碳达峰行动方案的通知》正式印发,从国家层面对“双碳”工作进行顶层设计。此后,各领域“双碳”行动方案陆续出台,“双碳”“1+N”政策体系不断完善,“双碳”科技人才培养的政策举措不断优化。</p>
-<p>  2022年4月24日,教育部印发《加强碳达峰碳中和高等教育人才培养体系建设工作方案》,从加快紧缺人才培养、促进传统专业转型升级、加强高水平教师队伍建设等9个方面,明确22条主要任务和重点举措。同年8月17日,科技部等九部门发布《科技支撑碳达峰碳中和实施方案(2022—2030)》,提出推动国家绿色低碳创新基地建设和人才培养,培养和发展壮大碳达峰碳中和领域战略科学家、科技领军人才和创新团队、青年人才和创新创业人才,建设面向实现碳达峰碳中和目标的可持续人才队伍。</p>
-<p>  “对于‘双碳’人才的培养,我国在‘双碳’‘1+N’政策体系下,不断统筹优化‘双碳’科技人才培养举措,顶层设计已相对健全。”牛萍介绍,但在省市区县各级政府部门制定的“双碳”工作实施方案及规划中,对“双碳”人才培养虽有所提及,却仍然缺乏关于“双碳”人才的专项政策,缺少更具体的实施举措。</p>
-<p>  在牛萍看来,双碳人才培养的关键一步在于转变观念。从科研人才到产业人才,都需要将“碳”的观念树立起来,提升自身的“双碳”素养,让“双碳”理念先行。尤其是各级政府部门,可以通过开展科技人才“双碳”素养提升行动,为各类“双碳”人才涌现营造良好的生态环境。</p>
-<p>  未来,面向“双碳”科技人才的培养需求,牛萍建议,要建立“双碳”重点领域全球高层次人才动态监测机制,为“双碳”科技人才靶向引进和自主培养提供决策参考;加强符合“双碳”标准的复合型科技人才培养,在国际标准平台上扩大中国的影响力。</p></div>`,
-        author: "科技日报",
-        pushTime: "2023-02-13 15:30"
-    },
-    {
-        title: "【减碳小妙招】",
-        content: "xxxxxxxxxxxxxxxxxx165465465465xxxxx",
-        author: "中讯邮电设计院-张三",
-        pushTime: "2021-08-09"
-    },
-    {
-        title: "【减碳小妙招】",
-        content: "xxxxxxxxxxxxxxxxxxxxxxx",
-        author: "中讯邮电设计院-张三",
-        pushTime: "2021-08-09"
-    }
-]
-const core_List = [
-    {
-        title: "碳配额存量",
-        value: "60%",
-        leavel: 1
-    },
-    {
-        title: "碳排放存量",
-        value: 500,
-        unit: "tCO2e",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "单位面积碳排放",
-        value: 380,
-        unit: "tCO2e/m²",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "人均碳排放",
-        value: 80,
-        unit: "tCO2e/人",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "光伏减排",
-        value: 40,
-        unit: "tCO2e",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "值得关注",
-        value: "减少2辆车出行一周"
-    }
-]
-export default {
-    floor, conferenceRoomStatus, numberOfPeopleInConferenceRoom, CHART_DATA, doubleCarbonNewsInfoList, core_List
-}

+ 376 - 430
src/components/scene/access/sceneAccessGuestManage.vue

@@ -1,452 +1,398 @@
 <template>
-    <div class="accessManage border-shadow">
-        <div class="container">
-            <div class="search_container">
-                <a-form class="ant-advanced-search-form">
-                    <a-row :gutter="24">
-                        <a-col :span="6">
-                            <a-form-item :label="'访客姓名:'">
-                                <a-input />
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'访问事由:'">
-                                <a-select default-value="0">
-                                    <a-select-option value="0">
-                                        开会
-                                    </a-select-option>
-                                    <a-select-option value="1">
-                                        交流
-                                    </a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'访客手机号:'">
-                                <a-input />
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'所属公司:'">
-                                <a-input />
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="6">
-                            <a-form-item :label="'受访人:'">
-                                <a-input />
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'受访人电话:'">
-                                <a-input />
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="12">
-                            <a-form-item :label="'到访时间:'">
-                                <timeRange ref="timeRange"></timeRange>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="18"></a-col>
-                        <a-col :span="6">
-                            <a-button>
-                                重置
-                            </a-button>
-                            <a-button type="primary">
-                                查询
-                            </a-button>
-                        </a-col>
-                    </a-row>
-                </a-form>
-            </div>
-            <div ref="table_container" class="table_container">
+  <div class="accessManage ">
+    <div class="page-query-core" style="padding: 30px 15px">
+      <Query :show="['time']" :query-data.sync="queryData" :search="search">
+        <template #extraItem>
+          <a-form-model-item label="访客" style="margin-left: 45px">
+            <a-input style="width: 250px" v-model="queryData.guestName" placeholder="请输入姓名/手机号"/>
+          </a-form-model-item>
+          <a-form-model-item label="受访人" style="margin-left: 45px">
+            <a-input style="width: 250px" v-model="queryData.name" placeholder="请输入姓名/手机号"/>
+          </a-form-model-item>
+          <div style="height: 20px"></div>
+          <a-form-model-item label="访问事由" style="margin-left: 15px">
+            <a-select v-model="queryData.objective" style="width: 250px">
+              <a-select-option v-for="(item,index) in objectiveOptions" :key="index" :value="item.value">
+                {{ item.label }}
+              </a-select-option>
+            </a-select>
+          </a-form-model-item>
+          <a-form-model-item label="公司" style="">
+            <a-select v-model="queryData.company" style="width: 150px">
+              <a-select-option v-for="(item,index) in companyOptions" :key="index" :value="item.value">
+                {{ item.label }}
+              </a-select-option>
+            </a-select>
+          </a-form-model-item>
+        </template>
+      </Query>
+    </div>
 
-                <a-table :columns="tableColumns" :data-source="tableData" :pagination="false"
-                    :scroll="{ y: tableContainerHeight }" bordered>
+    <div class="accessManage-body">
+      <a-table :columns="tableColumns" :data-source="tableData" :pagination="false"
+               :scroll="{ y: tableContainerHeight }" bordered>
+        <a-button slot="action" slot-scope="text" type="link">
+          查看
+        </a-button>
+      </a-table>
 
-                    <a-button slot="action" slot-scope="text" type="link">
-                        查看
-                    </a-button>
-                </a-table>
-            </div>
-        </div>
-        <div class="footer">
-            <a-pagination show-quick-jumper show-size-changer :default-current="1" :total="500" :page-size="10"
-                :show-total="(total, range) => `共 ${total} 条`" />
-        </div>
+      <div style="width: 100%;text-align: right;margin-top: 15px;">
+        <a-pagination ref="pagination"
+                      :showQuickJumper="true"
+                      :show-size-changer="true"
+                      :show-total="showTotal"
+                      v-model:current="currentPage"
+                      :default-current="1"
+                      :total="500"
+                      @showSizeChange="onShowSizeChange"
+        />
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
-import timeRange from "@/components/common/timeRange.vue";
+import Query from "@/components/common/query.vue";
+
 export default {
-    components: {
-        timeRange,
-    },
-    data() {
-        return {
-            tableContainerHeight: 100,
-            tableColumns: [
-                {
-                    title: '序号',
-                    dataIndex: 'index',
-                    key: 'index',
-                    align: "center",
-                    width: 80,
-                    customRender: (text, record, index) => `${index + 1}`
-                },
-                {
-                    title: '姓名',
-                    dataIndex: 'name',
-                    key: 'name',
-                },
-                {
-                    title: '访客手机号',
-                    dataIndex: 'people_type',
-                    key: 'people_type',
-                },
-                {
-                    title: '所属公司',
-                    dataIndex: 'department',
-                    key: 'department',
-                },
-                {
-                    title: '受访人',
-                    dataIndex: 'interviewee',
-                    key: 'interviewee',
-                },
-                {
-                    title: '访问事由',
-                    dataIndex: 'equipment',
-                    key: 'equipment',
-                },
-                {
-                    title: '受访人手机号',
-                    dataIndex: 'direction',
-                    key: 'direction',
-                },
-                {
-                    title: '通行时间',
-                    dataIndex: 'time',
-                    key: 'time',
-                },
-                {
-                    title: '通行方向',
-                    dataIndex: 'direction',
-                    key: 'direction',
-                },
-                {
-                    title: '行为感知',
-                    key: 'operation',
-                    fixed: 'right',
-                    width: 100,
-                    scopedSlots: { customRender: 'action' },
-                },
+  components: {
+    Query
+  },
+  data() {
+    return {
+      currentPage: 1,
+      queryData: {
+        objective: '1',
+        company: '0'
+      },
+      objectiveOptions: [
+        {
+          label: '全部',
+          value: '1'
+        },
+        {
+          label: '开会',
+          value: '2'
+        },
+        {
+          label: '交流',
+          value: '3'
+        },
+      ],
+      companyOptions: [
+        {
+          label: '全部',
+          value: '0'
+        },{
+          label: '北京电信规划院',
+          value: '1'
+        },
+      ],
+      tableContainerHeight: 500,
+      tableColumns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          key: 'index',
+          align: "center",
+          width: 80,
+          customRender: (text, record, index) => `${index + 1}`
+        },
+        {
+          title: '姓名',
+          dataIndex: 'name',
+          key: 'name',
+        },
+        {
+          title: '访客手机号',
+          dataIndex: 'people_type',
+          key: 'people_type',
+        },
+        {
+          title: '所属公司',
+          dataIndex: 'department',
+          key: 'department',
+        },
+        {
+          title: '受访人',
+          dataIndex: 'interviewee',
+          key: 'interviewee',
+        },
+        {
+          title: '访问事由',
+          dataIndex: 'equipment',
+          key: 'equipment',
+        },
+        {
+          title: '受访人手机号',
+          dataIndex: 'phone',
+          key: 'phone',
+        },
+        {
+          title: '通行时间',
+          dataIndex: 'time',
+          key: 'time',
+        },
+        {
+          title: '通行方向',
+          dataIndex: 'direction',
+          key: 'direction',
+        },
+        //{
+        //  title: '行为感知',
+        //  key: 'operation',
+        //  fixed: 'right',
+        //  width: 100,
+        //  scopedSlots: {customRender: 'action'},
+        //},
 
-            ],
-            // name:"",
-            // people_type:"",
-            // department:"",
-            // time:"",
-            // equipment:"",
-            // direction:"",
-            // behavior:"",
-            tableData: [
-                {
-                    key: '1',
-                    name: "潘夏彤",
-                    people_type: "自有员工",
-                    department: "办公室",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B3",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '2',
-                    name: "庞慧",
-                    people_type: "协作员工",
-                    department: "规划院-办公室",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入1F",
-                    interviewee: "某某某",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '3',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '4',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '5',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '6',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '7',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '8',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '9',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '10',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '11',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '12',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '13',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '14',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '15',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '16',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '17',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '18',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '19',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '20',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-                {
-                    key: '21',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    interviewee: "某某某", behavior: "",
-                },
-            ]
-        }
+      ],
+      tableData: [
+        {
+          key: '1',
+          name: "潘夏彤",
+          people_type: "自有员工",
+          department: "办公室",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B3",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '2',
+          name: "庞慧",
+          people_type: "协作员工",
+          department: "规划院-办公室",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入1F",
+          interviewee: "某某某",
+          behavior: "",
+        },
+        {
+          key: '3',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '4',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '5',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '6',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '7',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '8',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '9',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '10',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '11',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '12',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '13',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '14',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '15',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '16',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '17',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '18',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '19',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '20',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+        {
+          key: '21',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          interviewee: "某某某", behavior: "",
+        },
+      ]
+    }
+  },
+  mounted() {
+  },
+  methods: {
+    showTotal(total, range) {
+      let pageSize = range[1]-range[0]+1;
+      let pages = Math.ceil(total/pageSize);
+      return '共'+total+'条数据,第 '+this.currentPage+'/'+pages+' 页';
     },
-    mounted() {
-        let that = this
-        setTimeout(() => {
-            that.tableContainerHeight = that.$refs.table_container.clientHeight - 64 - 10;
-            window.onresize = () => {
-                return (() => {
-                    that.tableContainerHeight = that.$refs.table_container.clientHeight - 64 - 10
-                })()
-            };
-        }, 100);
+    onShowSizeChange(val) {
+
     }
+  }
 }
 </script>
 
 <style lang="less" scoped>
 .accessManage {
-    width: 100%;
-    height: 100%;
-    padding: 5px 5px;
-
-    .container {
-        box-sizing: border-box;
-        padding: 5px 5px;
-        height: calc(100% - 60px);
-
-        .search_container {
-            .ant-input {
-                width: 220px;
-            }
-
-            .ant-select {
-                width: 220px;
-            }
-
-            .ant-calendar-picker {
-                width: 320px !important;
-            }
-        }
-
-        .table_container {
-            height: calc(100% - 210px);
-            box-sizing: border-box;
-            padding-top: 10px;
-        }
-    }
-
-    .footer {
-        height: 60px;
-        line-height: 60px;
-        margin-right: 50px;
-        padding-top: 14px;
-    }
-
-    .ant-table-wrapper {
-        height: 100%;
-    }
+  width: 100%;
+  height: 100%;
 
-    .ant-advanced-search-form {
-        padding: 24px;
-        background: #fbfbfb;
-        border: 1px solid #d9d9d9;
-        border-radius: 6px
-    }
+  .ant-form-inline .ant-form-item {
+    margin-right: 60px;
 
-    .ant-advanced-search-form .ant-form-item {
-        display: flex;
+  }
 
-        /deep/ .ant-form-item-label {
-            min-width: 90px;
-        }
-    }
+  .accessManage-body {
+    background: white;
+    border-radius: 4px;
+    margin-top: 12px;
+    padding: 15px;
+  }
 
-    .ant-advanced-search-form .ant-form-item-control-wrapper {
-        flex: 1
-    }
-
-    .ant-pagination {
-        float: right;
-    }
 }
 </style>

+ 87 - 24
src/components/scene/access/sceneAccessManage.vue

@@ -1,30 +1,58 @@
 <template>
   <div class="accessManage ">
-    <div class="page-query-core">
+    <div class="page-query-core" style="padding: 30px 15px">
       <Query :show="['time']" :query-data.sync="queryData" :search="search">
         <template #extraItem>
-          <a-form-model-item label="员工姓名">
-            <a-input v-model="queryData.name" placeholder="请输入员工姓名" />
+          <a-form-model-item label="员工姓名" style="margin-left: 45px">
+            <a-input style="width: 250px" v-model="queryData.name" placeholder="请输入员工姓名"/>
           </a-form-model-item>
-          <a-form-model-item label="部门">
-            <a-select v-model="queryData.dept" style="width: 120px">
-              <a-select-option v-for="(item,index) in deptOptions" :key="index" :value="item.value">{{item.label}}</a-select-option>
-            </a-select>
+          <a-form-model-item label="设备名称">
+            <a-input v-model="queryData.deviceName" placeholder="请输入设备名称"/>
           </a-form-model-item>
-          <a-form-model-item label="人员类型">
-            <a-select v-model="queryData.dept" style="width: 120px">
-              <a-select-option v-for="(item,index) in peopleOptions" :key="index" :value="item.value">{{item.label}}</a-select-option>
+          <div style="height: 20px"></div>
+          <a-form-model-item label="人员类型" style="margin-left: 15px">
+            <a-select v-model="queryData.people" style="width: 250px">
+              <a-select-option v-for="(item,index) in peopleOptions" :key="index" :value="item.value">{{ item.label }}
+              </a-select-option>
             </a-select>
           </a-form-model-item>
           <a-form-model-item label="通行方向">
-
+            <a-select v-model="queryData.direction" style="width: 250px">
+              <a-select-option value="0">全部</a-select-option>
+              <a-select-option value="1">进</a-select-option>
+              <a-select-option value="2">出</a-select-option>
+            </a-select>
           </a-form-model-item>
-          <a-form-model-item label="设备名称">
-
+          <a-form-model-item label="部门" style="margin-left: 30px">
+            <a-select v-model="queryData.dept" style="width: 150px">
+              <a-select-option value="0">全部</a-select-option>
+              <a-select-option v-for="(item,index) in deptOptions" :key="index" :value="item.value">{{ item.label }}
+              </a-select-option>
+            </a-select>
           </a-form-model-item>
         </template>
       </Query>
     </div>
+
+    <div class="accessManage-body">
+      <a-table :columns="tableColumns" :data-source="tableData" :pagination="false"
+               :scroll="{ y: tableContainerHeight }" bordered>
+        <a-button slot="action" slot-scope="text" type="link">
+          查看
+        </a-button>
+      </a-table>
+      <div style="width: 100%;text-align: right;margin-top: 15px;">
+        <a-pagination ref="pagination"
+            :showQuickJumper="true"
+            :show-size-changer="true"
+            :show-total="showTotal"
+            v-model:current="currentPage"
+            :default-current="1"
+            :total="500"
+            @showSizeChange="onShowSizeChange"
+        />
+      </div>
+    </div>
   </div>
 </template>
 
@@ -37,16 +65,25 @@ export default {
   },
   data() {
     return {
-      queryData: {},
+      currentPage: 1,
+      queryData: {
+        people: "1",
+        direction: "0",
+        dept: "0"
+      },
       deptOptions: [
         {
-          label: '产品研发',
+          label: '业务一部',
           value: '1'
         },
         {
-          label: '测试',
+          label: '业务二部',
           value: '2'
         },
+        {
+          label: '业务三部',
+          value: '3'
+        },
       ],
       peopleOptions: [
         {
@@ -62,7 +99,7 @@ export default {
           value: '3'
         },
       ],
-      tableContainerHeight: 400,
+      tableContainerHeight: 500,
       tableColumns: [
         {
           title: '序号',
@@ -76,16 +113,19 @@ export default {
           title: '姓名',
           dataIndex: 'name',
           key: 'name',
+          align: "center",
         },
         {
           title: '人员类型',
           dataIndex: 'people_type',
           key: 'people_type',
+          align: "center",
         },
         {
           title: '部门',
           dataIndex: 'department',
           key: 'department',
+          align: "center",
         },
         {
           title: '通行时间',
@@ -96,19 +136,21 @@ export default {
           title: '通行设备',
           dataIndex: 'equipment',
           key: 'equipment',
+          align: "center",
         },
         {
           title: '通行方向',
           dataIndex: 'direction',
           key: 'direction',
+          align: "center",
         },
-        {
-          title: '行为感知',
-          key: 'operation',
-          fixed: 'right',
-          width: 100,
-          scopedSlots: {customRender: 'action'},
-        },
+        //{
+        //  title: '行为感知',
+        //  key: 'operation',
+        //  fixed: 'right',
+        //  width: 100,
+        //  scopedSlots: {customRender: 'action'},
+        //},
 
       ],
       tableData: [
@@ -327,6 +369,16 @@ export default {
   },
   mounted() {
 
+  },
+  methods: {
+    showTotal(total, range) {
+      let pageSize = range[1]-range[0]+1;
+      let pages = Math.ceil(total/pageSize);
+      return '共'+total+'条数据,第 '+this.currentPage+'/'+pages+' 页'
+    },
+    onShowSizeChange(val) {
+
+    }
   }
 }
 </script>
@@ -336,6 +388,17 @@ export default {
   width: 100%;
   height: 100%;
 
+  .ant-form-inline .ant-form-item {
+    margin-right: 60px;
+
+  }
+
+  .accessManage-body {
+    background: white;
+    border-radius: 4px;
+    margin-top: 12px;
+    padding: 15px;
+  }
 
 }
 </style>

+ 503 - 465
src/components/scene/access/sceneAccessParkManage.vue

@@ -1,487 +1,525 @@
 <template>
-    <div class="accessManage border-shadow">
-        <div class="container">
-            <div class="search_container">
-                <a-form class="ant-advanced-search-form">
-                    <a-row :gutter="24">
-                        <a-col :span="6">
-                            <a-radio-group default-value="a" button-style="solid">
-                                <a-radio-button value="a">
-                                    入场
-                                </a-radio-button>
-                                <a-radio-button value="b">
-                                    出场
-                                </a-radio-button>
-                            </a-radio-group>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'部门:'">
-                                <a-select default-value="0">
-                                    <a-select-option value="0">
-                                        办公室
-                                    </a-select-option>
-                                    <a-select-option value="1">
-                                        餐厅
-                                    </a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'人员类型:'">
-                                <a-select default-value="0">
-                                    <a-select-option value="0">
-                                        自由员工
-                                    </a-select-option>
-                                    <a-select-option value="1">
-                                        外派
-                                    </a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-button type="primary">
-                                查询
-                            </a-button>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="6">
-                            <a-form-item :label="'订单状态:'">
-                                <a-select default-value="0">
-                                    <a-select-option value="0">
-                                        进
-                                    </a-select-option>
-                                    <a-select-option value="1">
-                                        出
-                                    </a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'通行方向:'">
-                                <a-select default-value="0">
-                                    <a-select-option value="0">
-                                        进
-                                    </a-select-option>
-                                    <a-select-option value="1">
-                                        出
-                                    </a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-form-item :label="'通行时间:'">
-                                <timeRange ref="timeRange" v-bind="{
-                                    timeFormat: 'YYYY-MM-DD HH:mm:ss'
-                                }"></timeRange>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="6">
-                            <a-button>
-                                重置
-                            </a-button>
-                        </a-col>
-                    </a-row>
-                </a-form>
-            </div>
-            <div ref="table_container" class="table_container">
+  <div class="accessManage">
+    <div class="page-query-core" style="padding: 30px 15px">
+      <Query :show="['time']" :query-data.sync="queryData" :search="search">
+        <template #extraItem>
+          <a-form-model-item label="车牌号" style="margin-left: 58px">
+            <a-input style="width: 250px" v-model="queryData.guestName" placeholder="请输入车牌号"/>
+          </a-form-model-item>
+          <div style="height: 20px"></div>
+          <a-form-model-item label="订单状态" style="margin-left: 15px">
+            <a-select v-model="queryData.status" style="width: 250px">
+              <a-select-option v-for="(item,index) in statusOptions" :key="index" :value="item.value">
+                {{ item.label }}
+              </a-select-option>
+            </a-select>
+          </a-form-model-item>
+          <a-form-model-item label="支付方式" style="margin-left: 0px">
+            <a-select v-model="queryData.method" style="width: 250px">
+              <a-select-option v-for="(item,index) in methodOptions" :key="index" :value="item.value">
+                {{ item.label }}
+              </a-select-option>
+            </a-select>
+          </a-form-model-item>
+        </template>
+      </Query>
+    </div>
+
+
+    <div class="accessManage-body">
 
-                <a-table :columns="tableColumns" :data-source="tableData" :pagination="false"
-                    :scroll="{ y: tableContainerHeight }" bordered>
-                    <a-button slot="action" slot-scope="text" type="link">
-                        查看
-                    </a-button>
-                </a-table>
-            </div>
-        </div>
-        <div class="footer">
-            <a-pagination show-quick-jumper show-size-changer :default-current="1" :total="500" :page-size="10"
-                :show-total="(total, range) => `共 ${total} 条`" />
-            <!--  @change="onChange" -->
-        </div>
+      <a-table :columns="tableColumns" :data-source="tableData" :pagination="false"
+               :scroll="{ y: tableContainerHeight }" bordered>
+        <a-button slot="action" slot-scope="text" type="link" @click="()=>{showDetail=true}">
+          查看
+        </a-button>
+      </a-table>
+
+      <div style="width: 100%;text-align: right;margin-top: 15px;">
+        <a-pagination ref="pagination"
+                      :showQuickJumper="true"
+                      :show-size-changer="true"
+                      :show-total="showTotal"
+                      v-model:current="currentPage"
+                      :default-current="1"
+                      :total="500"
+                      @showSizeChange="onShowSizeChange"
+        />
+      </div>
     </div>
-</template>
 
-<script>
-import timeRange from "@/components/common/timeRange.vue";
-export default {
-    components: {
-        timeRange,
-    },
-    data() {
-        return {
-            tableContainerHeight: 100,
-            tableColumns: [
-                {
-                    title: '序号',
-                    dataIndex: 'index',
-                    key: 'index',
-                    align: "center",
-                    width: 80,
-                    customRender: (text, record, index) => `${index + 1}`
-                },
-                {
-                    title: '车牌号',
-                    dataIndex: 'name',
-                    key: 'name',
-                },
-                {
-                    title: '订单状态',
-                    dataIndex: 'people_type',
-                    key: 'people_type',
-                },
-                {
-                    title: '支付方式',
-                    dataIndex: 'department',
-                    key: 'department',
-                },
-                {
-                    title: '实收金额(¥)',
-                    dataIndex: 'equipment',
-                    key: 'equipment',
-                },
-                {
-                    title: '入场时间',
-                    dataIndex: 'time',
-                    key: 'time',
-                },
-                {
-                    title: '出场时间',
-                    dataIndex: 'outtime',
-                    key: 'outtime',
-                },
-                {
-                    title: '操作',
-                    key: 'operation',
-                    fixed: 'right',
-                    width: 100,
-                    scopedSlots: { customRender: 'action' },
-                },
-            ],
-            // name:"",
-            // people_type:"",
-            // department:"",
-            // time:"",
-            // equipment:"",
-            // direction:"",
-            // behavior:"",
-            tableData: [
-                {
-                    key: '1',
-                    name: "潘夏彤",
-                    people_type: "自有员工",
-                    department: "办公室",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B3",
-                    behavior: "",
-                },
-                {
-                    key: '2',
-                    name: "庞慧",
-                    people_type: "协作员工",
-                    department: "规划院-办公室",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入1F",
-                    behavior: "",
-                },
-                {
-                    key: '3',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '4',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '5',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '6',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '7',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '8',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '9',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '10',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '11',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '12',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '13',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '14',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '15',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '16',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '17',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '18',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '19',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '20',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-                {
-                    key: '21',
-                    name: "李天泽",
-                    people_type: "访客",
-                    department: "规划院-产品中心",
-                    time: "进:2022-08-26 12:00:00",
-                    outtime: "进:2022-08-26 12:00:00",
-                    equipment: "ZY010012",
-                    direction: "进入B2",
-                    behavior: "",
-                },
-            ]
-        }
-    },
-    mounted() {
-        let that = this
-        setTimeout(() => {
-            that.tableContainerHeight = that.$refs.table_container.clientHeight - 64 - 10;
-            window.onresize = () => {
-                return (() => {
-                    that.tableContainerHeight = that.$refs.table_container.clientHeight - 54 - 10
-                })()
-            };
-        }, 100);
-    }
-}
-</script>
 
-<style lang="less" scoped>
-.accessManage {
-    width: 100%;
-    height: 100%;
-    padding: 5px 5px;
+    <a-modal class="securityPersonMoreDetail" v-if="showDetail"
+             :visible.sync="showDetail"
+             :width="800"
+             :title="'停车详情'"
+             :footer="null"
+             @cancel="handleCancel"
+    >
+      <a-descriptions :column="2">
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">车牌号</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">所属人员</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">固定车位</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">停车时长</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">停车费用</span>
+          </template>
+        </a-descriptions-item>
 
-    .container {
-        box-sizing: border-box;
-        padding: 5px 5px;
-        height: calc(100% - 60px);
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">实收金额</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">订单状态</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">支付方式</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">入场时间</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">出场时间</span>
+          </template>
+        </a-descriptions-item>
 
-        .search_container {
-            .ant-input {
-                width: 220px;
-            }
+      </a-descriptions>
 
-            .ant-select {
-                width: 220px;
-            }
 
-            .ant-calendar-picker {
-                width: 320px !important;
-            }
+      <div style="margin: 12px 0">详细信息</div>
 
-            .ant-btn {
-                margin-left: 50px !important;
-            }
-        }
+      <a-descriptions :column="2" bordered>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">入场通道</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">出场通道</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">入场收费员</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">出场收费员</span>
+          </template>
+        </a-descriptions-item>
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">入场照片</span>
+          </template>
+        </a-descriptions-item>
 
-        .table_container {
-            height: calc(100% - 210px);
-            box-sizing: border-box;
-            padding-top: 10px;
-        }
-    }
+        <a-descriptions-item >
+          <template #label>
+            <span class="descriptions-item-label">出场照片</span>
+          </template>
+        </a-descriptions-item>
 
-    .footer {
-        height: 60px;
-        line-height: 60px;
-        margin-right: 50px;
-        padding-top: 14px;
-    }
+      </a-descriptions>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+import timeRange from "@/components/common/timeRange.vue";
 
-    .ant-table-wrapper {
-        height: 100%;
+export default {
+  components: {
+    timeRange,
+  },
+  data() {
+    return {
+      showDetail: false,
+      currentPage: 1,
+      queryData: {
+        status: '0',
+        method: '0'
+      },
+      statusOptions: [
+        {
+          value: '0',
+          label: '全部'
+        },
+        {
+          value: '1',
+          label: '待支付'
+        },{
+          value: '2',
+          label: '已支付'
+        },
+      ],
+      methodOptions: [
+        {
+          value: '0',
+          label: '全部'
+        },
+        {
+          value: '1',
+          label: '手机支付'
+        },
+        {
+          value: '2',
+          label: '人工'
+        },
+        {
+          value: '3',
+          label: '年卡'
+        },
+      ],
+      tableContainerHeight: 500,
+      tableColumns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          key: 'index',
+          align: "center",
+          width: 80,
+          customRender: (text, record, index) => `${index + 1}`
+        },
+        {
+          title: '车牌号',
+          dataIndex: 'name',
+          key: 'name',
+        },
+        {
+          title: '订单状态',
+          dataIndex: 'people_type',
+          key: 'people_type',
+        },
+        {
+          title: '支付方式',
+          dataIndex: 'department',
+          key: 'department',
+        },
+        {
+          title: '实收金额(¥)',
+          dataIndex: 'equipment',
+          key: 'equipment',
+        },
+        {
+          title: '入场时间',
+          dataIndex: 'time',
+          key: 'time',
+        },
+        {
+          title: '出场时间',
+          dataIndex: 'outtime',
+          key: 'outtime',
+        },
+        {
+          title: '操作',
+          key: 'operation',
+          fixed: 'right',
+          align: 'center',
+          width: 100,
+          scopedSlots: {customRender: 'action'},
+        },
+      ],
+      tableData: [
+        {
+          key: '1',
+          name: "潘夏彤",
+          people_type: "自有员工",
+          department: "办公室",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B3",
+          behavior: "",
+        },
+        {
+          key: '2',
+          name: "庞慧",
+          people_type: "协作员工",
+          department: "规划院-办公室",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入1F",
+          behavior: "",
+        },
+        {
+          key: '3',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '4',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '5',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '6',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '7',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '8',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '9',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '10',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '11',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '12',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '13',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '14',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '15',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '16',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '17',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '18',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '19',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '20',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+        {
+          key: '21',
+          name: "李天泽",
+          people_type: "访客",
+          department: "规划院-产品中心",
+          time: "进:2022-08-26 12:00:00",
+          outtime: "进:2022-08-26 12:00:00",
+          equipment: "ZY010012",
+          direction: "进入B2",
+          behavior: "",
+        },
+      ]
     }
+  },
+  mounted() {
 
-    .ant-advanced-search-form {
-        padding: 24px;
-        background: #fbfbfb;
-        border: 1px solid #d9d9d9;
-        border-radius: 6px
+  },
+  methods: {
+    showTotal(total, range) {
+      let pageSize = range[1]-range[0]+1;
+      let pages = Math.ceil(total/pageSize);
+      return '共'+total+'条数据,第 '+this.currentPage+'/'+pages+' 页';
+    },
+    onShowSizeChange(val) {
+    },
+    handleCancel() {
+      this.showDetail = false
     }
+  }
+}
+</script>
 
-    .ant-advanced-search-form .ant-form-item {
-        display: flex;
+<style lang="less" scoped>
+.accessManage {
+  width: 100%;
+  height: 100%;
 
-        /deep/ .ant-form-item-label {
-            min-width: 90px;
-        }
-    }
+  .ant-form-inline .ant-form-item {
+    margin-right: 60px;
 
-    .ant-advanced-search-form .ant-form-item-control-wrapper {
-        flex: 1
-    }
+  }
 
-    .ant-pagination {
-        float: right;
-    }
+  .accessManage-body {
+    background: white;
+    border-radius: 4px;
+    margin-top: 12px;
+    padding: 15px;
+  }
+
+  .descriptions-item-label {
+    text-align-last: justify;
+    width: 100%;
+  }
 }
 </style>

+ 74 - 0
src/components/scene/energy/common/deviceCardAir.vue

@@ -0,0 +1,74 @@
+<template>
+  <div class="deviceCardAir">
+
+    <div class="deviceCardAir-top">
+      <span>#{{ item.id }}</span>
+      <span class="anticon" style="float: right;border-radius: 15px;cursor: pointer;padding: 6px 8px 7px;margin-right: 15px">
+        <a-icon type="poweroff"  />
+      </span>
+    </div>
+
+    <div class="deviceCardAir-content">
+      <div style="font-size: 18px;width: 20px;margin-left: 20px;margin-top: 12px;display: inline-block">
+        <span v-if="item.mode=='hot'">制热</span>
+        <span v-if="item.mode=='unline'">-</span>
+        <span v-if="item.mode=='cold'">制冷</span>
+      </div>
+      <div style="display: inline-block;font-size: 25px;vertical-align: top;padding-top: 20px;margin-left: 10%">
+        <span>{{ item.tm }}ºC</span>
+      </div>
+    </div>
+
+    <div class="deviceCardAir-bottom">
+      <span class="anticon" >
+        <a-icon type="setting" />
+      </span>
+      <span style="margin-left: 15px">
+        风速:{{ item.wind }}
+      </span>
+    </div>
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {}
+  },
+  props: {
+    item: Object,
+  },
+  mounted() {
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.deviceCardAir {
+  width: 100%;
+  height: 10rem;
+  background-color: #2ea8e5;
+  border-radius: 4px;
+  color: white;
+  .deviceCardAir-top {
+    padding-top: 14px;
+    padding-left: 20px;
+    font-size: 16px;
+  }
+  .deviceCardAir-bottom {
+    margin-top: 12px;
+    margin-left: 18px;
+    font-size: 18px;
+  }
+  .anticon {
+    //padding: 6px;
+  }
+  .anticon:hover {
+    background-color: #2f8cc8;
+  }
+}
+</style>

+ 122 - 757
src/components/scene/energy/sceneEnergyAircondition.vue

@@ -1,798 +1,163 @@
 <template>
-    <div class="container">
-        <a-tabs default-active-key="1" v-model="activeKey" :size="size" @change="tabChange">
-            <a-tab-pane :key="1" tab="空调总览">
-                <div class="airconditioning search_container">
-                    <a-row>
-                        <a-form class="ant-advanced-search-form">
-                            <a-row :gutter="24">
-                                <a-col :span="4">
-                                    <a-form-item :label="'开关:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                开
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                关
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'模式:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                制冷
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                制热
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'风速:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                1级
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                2级
-                                            </a-select-option>
-                                            <a-select-option value="2">
-                                                3级
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'温度:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                26°C
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                27°C
-                                            </a-select-option>
-                                            <a-select-option value="2">
-                                                28°C
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'设备编号:'">
-                                        <a-input />
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-button type="link">
-                                        重置
-                                    </a-button>
-                                    <a-button type="primary">
-                                        查找
-                                    </a-button>
-                                </a-col>
-                            </a-row>
-                        </a-form>
-                    </a-row>
-                    <a-row style="">
-                        <div style="margin-left:27px;margin-bottom:10px;color:#000000;float:left;">
-                            全开 <a-switch size="small" default-checked style="margin-right:15px;" />
-                            全关 <a-switch size="small" style="margin-right:15px;" />
-                            <a-button type="primary">
-                                批量执行策略
-                            </a-button>
-                        </div>
-                        <div style="margin-right:10px;margin-bottom:10px;float:right;vertical-align: top;">
-                            <a-select default-value="0">
-                                <a-select-option value="0">
-                                    按楼层显示
-                                </a-select-option>
-                                <a-select-option value="1">
-                                    按公司
-                                </a-select-option>
-                                <a-select-option value="2">
-                                    按功能
-                                </a-select-option>
-                                <a-select-option value="3">
-                                    按分组
-                                </a-select-option>
-                            </a-select>
-                            <a-button>全部展开</a-button>
-                            <a-button type="primary">列表模式</a-button>
-                        </div>
-                    </a-row>
-                </div>
-                <div class="aircon_resutlt_container">
-                    <a-layout>
-                        <a-layout-sider>
-                            <a-input placeholder="请输入"></a-input>
-                            <div class="list_container">
-                                <a-list item-layout="horizontal" :data-source="listData" style="margin-top:10px">
-                                    <a-list-item slot="renderItem" slot-scope="item, index">
-                                        <a-list-item-meta>
-                                            <div slot="title">{{ item.title }}</div>
-                                        </a-list-item-meta>
-                                    </a-list-item>
-                                </a-list>
-                            </div>
-                        </a-layout-sider>
-                        <a-layout-content>
-                            <div class="" v-if="dataPresentationFormType == 1"></div>
-                            <div class="table_container1" ref="table_container1" v-if="dataPresentationFormType == 2">
-                                <a-table :columns="tableColumns1" :data-source="tableData1" :row-selection="rowSelection1"
-                                    :pagination="false" :scroll="{ y: tableContainerHeight1 }" bordered>
-                                    <div slot="onoff" slot-scope="item">
-                                        <a-switch :defaultChecked="item.onoff" />
-                                    </div>
-                                    <div slot="action" slot-scope="item">
-                                        <a-button type="link">
-                                            查看
-                                        </a-button>
-                                    </div>
-                                </a-table>
-                            </div>
-                        </a-layout-content>
-                    </a-layout>
-                </div>
-            </a-tab-pane>
-            <a-tab-pane :key="2" tab="智能策略">
-                <div class="tactics search_container">
-                    <a-row>
-                        <a-form class="ant-advanced-search-form">
-                            <a-row :gutter="24">
-                                <a-col :span="4">
-                                    <a-form-item :label="'策略名称:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                开
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                关
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="7">
-                                    <a-form-item :label="'创建时间:'">
-                                        <timeRange ref="timeRange" v-bind="{
-                                            timeFormat: 'YYYY-MM-DD HH:mm:ss'
-                                        }"></timeRange>
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'楼宇名称:'">
-                                        <a-input />
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'创建人:'">
-                                        <a-input />
-                                    </a-form-item>
-                                </a-col>
-                                <a-col :span="4">
-                                    <a-form-item :label="'状态:'">
-                                        <a-select default-value="0">
-                                            <a-select-option value="0">
-                                                启用
-                                            </a-select-option>
-                                            <a-select-option value="1">
-                                                关闭
-                                            </a-select-option>
-                                        </a-select>
-                                    </a-form-item>
-                                </a-col>
-                            </a-row>
-                        </a-form>
-                    </a-row>
-                    <a-row style="">
-                        <div style="margin-left:27px;margin-bottom:10px;color:#000000;float:left;">
-                            <a-button type="primary">
-                                新建
-                            </a-button>
-                            <a-button>
-                                批量删除
-                            </a-button>
-                        </div>
-                        <div style="margin-right:10px;margin-bottom:10px;float:right;vertical-align: top;">
-                            <a-button>重置</a-button>
-                            <a-button type="primary">查询</a-button>
-                        </div>
-                    </a-row>
-                </div>
-                <div ref="table_container2" class="table_container2">
-                    <a-table :columns="tableColumns2" :data-source="tableData2" :row-selection="rowSelection2"
-                        :pagination="false" :scroll="{ y: tableContainerHeight2 }">
-                        <div slot="openingUp" slot-scope="text">
-                            <a-switch default-checked />
-                        </div>
-                        <div slot="action" slot-scope="text">
-                            <a-button type="link">
-                                查看
-                            </a-button>
-                            <a-button type="link">
-                                编辑
-                            </a-button>
-                            <a-button type="link">
-                                删除
-                            </a-button>
-                        </div>
-                    </a-table>
-                </div>
-                <div class="footer">
-                    <a-pagination show-quick-jumper show-size-changer :default-current="1" :total="500" :page-size="10"
-                        :show-total="(total, range) => `共 ${total} 条`" />
-                </div>
-            </a-tab-pane>
-        </a-tabs>
-
-        <a-modal v-model="visible" title="批量执行策略">
-            <template slot="footer">
-                <a-button key="back" @click="handleCancel1">
-                    取消
-                </a-button>
-                <a-button key="submit" type="primary" :loading="false" @click="handleOk1">
-                    批量执行
-                </a-button>
-            </template>
-        </a-modal>
-        <a-modal v-model="visible" title="新建智能策略">
-            <template slot="footer">
-                <a-button key="back" @click="handleCancel2">
-                    取消
-                </a-button>
-                <a-button key="submit" type="primary" :loading="false" @click="handleOk2">
-                    确认
-                </a-button>
-            </template>
-        </a-modal>
-        <a-modal v-model="visible" title="查看">
-            <template slot="footer">
-                <a-button key="back" @click="handleCancel3">
-                    Return
-                </a-button>
-                <a-button key="submit" type="primary" :loading="false" @click="handleOk3">
-                    Submit
-                </a-button>
-            </template>
-        </a-modal>
+  <div class="container">
+    <div class="sceneEnergy-top">
+      <div class="dashboardPortrait-select">
+        <a-checkable-tag v-model="tagCheck.air" color="white" class="dashboardPortrait-select-tag"
+                         @change="handleTagSelect('air')">
+          <span class="dashboardPortrait-select-text">空调总览</span>
+        </a-checkable-tag>
+        <a-checkable-tag v-model="tagCheck.methods" color="white" class="dashboardPortrait-select-tag"
+                         @change="handleTagSelect('methods')">
+          <span class="dashboardPortrait-select-text">智能策略</span>
+        </a-checkable-tag>
+      </div>
+    </div>
 
+    <div class="dashboardPortrait-body">
+      <AirconditioningCard v-if="currCheck == 'air'" />
     </div>
+
+  </div>
 </template>
 
 <script>
 import timeRange from "@/components/common/timeRange.vue";
-export default {
-    components: {
-        timeRange,
-    },
-    data() {
-        return {
-            activeKey: 1,
-            dataPresentationForm: 1,
-            size: 'small',
-            dataPresentationFormType: 1,
-            tableContainerHeight1: 100,
-            tableColumns1: [
-                {
-                    title: '名称',
-                    dataIndex: 'name',
-                    key: 'name',
-                },
-                {
-                    title: '模式',
-                    dataIndex: 'model',
-                    key: 'model',
-                },
-                {
-                    title: '温度',
-                    dataIndex: 'temperature',
-                    key: 'temperature',
-                },
-                {
-                    title: '风速',
-                    dataIndex: 'windspeed',
-                    key: 'windspeed',
-                },
-                {
-                    title: '开关',
-                    // dataIndex: 'onoff',
-                    key: 'onoff',
-                    scopedSlots: { customRender: 'onoff' },
-                },
-                {
-                    title: '是否支持调控',
-                    dataIndex: 'control',
-                    key: 'control',
-                },
-                {
-                    title: '状态',
-                    dataIndex: 'status',
-                    key: 'status',
-                },
-                {
-                    title: '执行策略',
-                    dataIndex: 'tactics',
-                    key: 'tactics',
-                    width: 200,
-                },
-                {
-                    title: '操作',
-                    key: 'operation',
-                    fixed: 'right',
-                    width: 100,
-                    scopedSlots: { customRender: 'action' },
-                }
-            ],
-            tableData1: [
-                {
-                    key: '1',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: false,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '2',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '3',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '4',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '5',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '6',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '7',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '8',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '9',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '10',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '11',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-                {
-                    key: '12',
-                    name: "xxxx空调",
-                    model: "制冷",
-                    temperature: "26°C",
-                    windspeed: "自动挡",
-                    onoff: true,
-                    control: "是",
-                    status: '在线',
-                    tactics: "【夏季】空调定时打开"
-                },
-
-            ],
-            rowSelection1: {
-                onChange: (selectedRowKeys, selectedRows) => {
-                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
-                },
-                onSelect: (record, selected, selectedRows) => {
-                    console.log(record, selected, selectedRows);
-                },
-                onSelectAll: (selected, selectedRows, changeRows) => {
-                    console.log(selected, selectedRows, changeRows);
-                },
-            },
+import AirconditioningCard from "@/components/scene/energy/sceneEnergyAircondition/airconditioningCard.vue";
 
-            tableContainerHeight2: 100,
-            tableColumns2: [
-                // {
-                //     title: '序号',
-                //     dataIndex: 'index',
-                //     key: 'index',
-                //     align: "center",
-                //     width: 80,
-                //     customRender: (text, record, index) => `${index + 1}`
-                // },
-                {
-                    title: '名称',
-                    dataIndex: 'name',
-                    key: 'name',
-                },
-                {
-                    title: '创建时间',
-                    dataIndex: 'time',
-                    key: 'time',
-                },
-                {
-                    title: '创建人',
-                    dataIndex: 'interviewee',
-                    key: 'interviewee',
-                },
-                {
-                    title: '启用',
-                    key: 'operation',
-                    fixed: 'right',
-                    width: 100,
-                    scopedSlots: { customRender: 'openingUp' },
-                },
-                {
-                    title: '操作',
-                    key: 'action',
-                    fixed: 'right',
-                    width: 240,
-                    scopedSlots: { customRender: 'action' },
-                }
-            ],
-            tableData2: [
-                {
-                    key: '1',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '2',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '3',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '4',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '5',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '6',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '7',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '8',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '9',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                },
-                {
-                    key: '10',
-                    name: "xxxx空调",
-                    time: "2022-08-26 12:00:00",
-                    interviewee: "潘夏彤",
-                }
-            ],
-            rowSelection2: {
-                onChange: (selectedRowKeys, selectedRows) => {
-                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
-                },
-                onSelect: (record, selected, selectedRows) => {
-                    console.log(record, selected, selectedRows);
-                },
-                onSelectAll: (selected, selectedRows, changeRows) => {
-                    console.log(selected, selectedRows, changeRows);
-                },
-            },
-            listData: [
-                {
-                    title: '一层',
-                },
-                {
-                    title: '二层',
-                },
-                {
-                    title: '三层',
-                },
-                {
-                    title: '四层',
-                },
-                {
-                    title: '五层',
-                },
-                {
-                    title: '六层',
-                },
-                {
-                    title: '七层',
-                },
-                {
-                    title: '八层',
-                },
-                {
-                    title: '九层',
-                },
-                {
-                    title: '十层',
-                },
-                {
-                    title: '十一层',
-                },
-                {
-                    title: '十二层',
-                },
-                {
-                    title: '十三层',
-                },
-                {
-                    title: '十四层',
-                },
-                {
-                    title: '十五层',
-                },
-                {
-                    title: '十六层',
-                },
-                {
-                    title: '十七层',
-                },
-                {
-                    title: '十八层',
-                },
-                {
-                    title: '十九层',
-                },
-                {
-                    title: '二十层',
-                },
-                {
-                    title: '二十一层',
-                },
-            ]
-        };
-    },
-    mounted() {
-        let that = this;
-        this.tabChange(this.activeKey)
-        window.onresize = () => {
-            return (() => {
-                that.adjustTableHeight(that.activeKey);
-            })()
-        };
+export default {
+  components: {
+    AirconditioningCard,
+    timeRange,
+  },
+  data() {
+    return {
+      currCheck: '',
+      tagCheck: {
+        air: false,
+        methods: false,
+      },
+    };
+  },
+  mounted() {
+    this.handleTagSelect('air');
+  },
+  methods: {
+    handleTagSelect(item) {
+      for (const key in this.tagCheck) {
+        this.tagCheck[key] = false;
+      }
+      this.currCheck = item;
+      this.tagCheck[item] = true;
     },
-    methods: {
-        tabChange(activeKey) {
-            let that = this;
-            setTimeout(() => {
-                that.adjustTableHeight(activeKey);
-            }, 100);
-        },
 
-        adjustTableHeight(activeKey) {
-            if (activeKey == 1) {
-                if (this.dataPresentationFormType == 2)
-                    this.tableContainerHeight1 = this.$refs.table_container1.parentElement.clientHeight - 53;
-            }
-            else if (activeKey == 2) {
-                this.tableContainerHeight2 = this.$refs.table_container2.parentElement.clientHeight - 103 - 60 - 53;
-            }
-        },
-
-
-        handleCancel1() { },
-        handleOk1() { },
-
-        handleCancel2() { },
-        handleOk2() { },
-
-        handleCancel3() { },
-        handleOk3() { },
-    }
+  }
 }
 </script>
 
 <style lang="less" scoped>
 .container {
+  width: 100%;
+  height: 100%;
+  background-color: #ffffff;
+  border-radius: 4px;
+  padding: 15px;
+
+  .ant-tabs {
     width: 100%;
     height: 100%;
 
-    .ant-tabs {
-        width: 100%;
-        height: 100%;
-
-        /deep/ .ant-tabs-content {
-            width: 100%;
-            height: calc(100% - 36px);
-        }
-
-        /deep/ .ant-tabs-bar {
-            border-bottom: 0px solid transparent;
-            margin-bottom: 5px;
+    /deep/ .ant-tabs-content {
+      width: 100%;
+      height: calc(100% - 36px);
+    }
 
-            .ant-tabs-tab {
-                font-size: 16px;
-                font-weight: bold;
-                font-family: SourceHanSansSC;
-                padding: 4px 4px;
-                margin: 0 32px 0 0;
+    /deep/ .ant-tabs-bar {
+      border-bottom: 0px solid transparent;
+      margin-bottom: 5px;
 
-                &.ant-tabs-tab-active {
-                    color: #156de4;
-                }
-            }
+      .ant-tabs-tab {
+        font-size: 16px;
+        font-weight: bold;
+        font-family: SourceHanSansSC;
+        padding: 4px 4px;
+        margin: 0 32px 0 0;
 
-            .ant-tabs-ink-bar {
-                width: 72px !important;
-                background-color: #156de4;
-            }
+        &.ant-tabs-tab-active {
+          color: #156de4;
         }
-    }
-
-    .search_container {
-        border-radius: 4px;
-        background: #cecece29;
-        margin-bottom: 5px;
+      }
 
-        .ant-advanced-search-form {
-            padding: 8px;
-            background: #fbfbfb;
-            // border: 1px solid #d9d9d9;
-            // border-radius: 6px
-        }
+      .ant-tabs-ink-bar {
+        width: 72px !important;
+        background-color: #156de4;
+      }
+    }
+  }
+
+  .search_container {
+    border-radius: 4px;
+    background: #cecece29;
+    margin-bottom: 5px;
+
+    .ant-advanced-search-form {
+      padding: 8px;
+      background: #fbfbfb;
+      // border: 1px solid #d9d9d9;
+      // border-radius: 6px
+    }
 
-        .ant-advanced-search-form .ant-form-item {
-            display: flex;
-            margin-bottom: 0px;
+    .ant-advanced-search-form .ant-form-item {
+      display: flex;
+      margin-bottom: 0px;
 
-            /deep/ .ant-form-item-label {
-                min-width: 60px;
-            }
-        }
+      /deep/ .ant-form-item-label {
+        min-width: 60px;
+      }
+    }
 
-        .ant-advanced-search-form .ant-form-item-control-wrapper {
-            flex: 1
-        }
+    .ant-advanced-search-form .ant-form-item-control-wrapper {
+      flex: 1
+    }
 
-        .ant-select {
-            width: 180px;
-        }
+    .ant-select {
+      width: 180px;
     }
+  }
 
-    .aircon_resutlt_container {
-        height: calc(100% - 103px);
+  .aircon_resutlt_container {
+    height: calc(100% - 103px);
 
-        .ant-layout-sider {
-            background-color: #f5f5f5;
-            padding: 4px 4px;
+    .ant-layout-sider {
+      background-color: #f5f5f5;
+      padding: 4px 4px;
 
-            // .list_container {}
+      // .list_container {}
 
-            .ant-list-item-meta-title {
-                text-indent: 40px;
-            }
-        }
+      .ant-list-item-meta-title {
+        text-indent: 40px;
+      }
+    }
 
-        .ant-layout {
-            height: 100%;
-            background-color: transparent;
+    .ant-layout {
+      height: 100%;
+      background-color: transparent;
 
-            .ant-layout-content {
-                overflow: hidden;
-            }
-        }
+      .ant-layout-content {
+        overflow: hidden;
+      }
     }
+  }
 
-    .footer {
-        height: 60px;
-        line-height: 60px;
-        margin-right: 50px;
-        padding-top: 14px;
+  .footer {
+    height: 60px;
+    line-height: 60px;
+    margin-right: 50px;
+    padding-top: 14px;
 
-        .ant-pagination {
-            float: right;
-        }
+    .ant-pagination {
+      float: right;
     }
+  }
 
 
 }

+ 306 - 0
src/components/scene/energy/sceneEnergyAircondition/airconditioningCard.vue

@@ -0,0 +1,306 @@
+<template>
+  <div class="sceneCard">
+
+    <div class="sceneCard-query">
+      <Query :query-data.sync="queryData" :search="search" >
+        <template #extraItem>
+
+          <a-form-model-item label="开关:" class="formItem">
+            <a-select default-value="0" style="width: 100px" v-model="queryData.switch">
+              <a-select-option value="0"> 全部 </a-select-option>
+              <a-select-option value="1"> 开 </a-select-option>
+              <a-select-option value="2"> 关 </a-select-option>
+            </a-select>
+          </a-form-model-item>
+
+          <a-form-model-item label="模式:" class="formItem">
+            <a-select default-value="0" style="width: 100px" v-model="queryData.switch">
+              <a-select-option value="0"> 全部 </a-select-option>
+              <a-select-option value="1"> 制冷 </a-select-option>
+              <a-select-option value="2"> 制热 </a-select-option>
+            </a-select>
+          </a-form-model-item>
+
+          <a-form-model-item label="温度:" class="formItem">
+            <a-select default-value="0" style="width: 100px" v-model="queryData.switch">
+              <a-select-option value="0"> 全部 </a-select-option>
+              <a-select-option value="26"> 26°C </a-select-option>
+            </a-select>
+          </a-form-model-item>
+
+          <a-form-model-item label="设备编号:" class="formItem">
+            <a-input v-model="queryData.deviceNo" placeholder="请输入设备编号" />
+          </a-form-model-item>
+
+        </template>
+      </Query>
+    </div>
+
+    <div class="sceneCard-control">
+      <div style="display: inline-block;width: 50%;text-align: left">
+        <a-space>
+          <a-button style="font-size: 12px" size="small" ><a-icon type="poweroff" />全开</a-button>
+          <a-button style="font-size: 12px" size="small"><a-icon type="poweroff" />全关</a-button>
+          <a-button type="primary" size="small" style="font-size: 12px" >批量执行策略</a-button>
+        </a-space>
+      </div>
+
+      <div style="display: inline-block;width: 50%;text-align: right">
+        <a-select default-value="0">
+          <a-select-option value="0">
+            按楼层显示
+          </a-select-option>
+          <a-select-option value="1">
+            按公司
+          </a-select-option>
+          <a-select-option value="2">
+            按功能
+          </a-select-option>
+          <a-select-option value="3">
+            按分组
+          </a-select-option>
+        </a-select>
+        <a-button type="link"><a-icon type="unordered-list" />列表模式</a-button>
+      </div>
+    </div>
+
+    <div class="airContainer">
+      <div class="airContainer-left">
+        <div class="deviceFloorIndex">
+          <a-input-search placeholder="请输入楼层"></a-input-search>
+          <a-anchor :getContainer="getContainer" :target-offset="100"  style="margin-top: 12px">
+            <template v-for="item in floors" >
+              <a-anchor-link :href="'#'+item.label" :key="item.value" >
+                <template #title>
+                  <span style="display: inline-block;padding-left: 5px; width: 20px;height: 40px;overflow: hidden">
+                    <div style="position: absolute;top: 15px;left: -2px;width: 4px;height: 4px;border-radius: 2px;background-color: #2EA8E6"></div>
+                    <div style="width: 18px;height: 18px;border-bottom: 1px dashed #2EA8E6;" ></div>
+                    <div style="width: 18px;height: 18px;border-left: 1px dashed #2EA8E6" ></div>
+                  </span>
+                  {{ item.title }}
+                </template>
+              </a-anchor-link>
+            </template>
+          </a-anchor>
+
+        </div>
+      </div>
+      <div class="airContainer-right" ref="airContainerRight">
+        <template v-for="item in floors">
+          <div :key="item.value" style="margin-bottom: 15px">
+            <a-divider :id="item.label" style="margin: 0 0 15px;padding: 0" orientation="left" dashed >{{ item.label }}</a-divider>
+            <div style="padding: 0 15px">
+              <a-row :gutter="[30,12]">
+                <a-col v-for="device in item.devices" :key="device.id" :span="6"><DeviceCardAir :item="device" /></a-col>
+              </a-row>
+            </div>
+          </div>
+        </template>
+      </div>
+    </div>
+
+
+  </div>
+</template>
+
+<script>
+import Query from "@/components/common/query.vue";
+import DeviceCardAir from "@/components/scene/energy/common/deviceCardAir.vue";
+export default {
+  components: {
+    Query,
+    DeviceCardAir,
+  },
+  data() {
+    return {
+      queryData: {
+        switch: '0'
+      },
+      floors: [
+        {
+          label: '1F',
+          value: '1',
+          devices: [
+            {
+              id: '1101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '1101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '1102-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '1102-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },
+          ]
+        },
+        {
+          label: '2F',
+          value: '2',
+          devices: [
+            {
+              id: '2101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '2101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+        {
+          label: '3F',
+          value: '3',
+          devices: [
+            {
+              id: '3101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '3101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+        {
+          label: '4F',
+          value: '4',
+          devices: [
+            {
+              id: '3101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '3101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+        {
+          label: '5F',
+          value: '5',
+          devices: [
+            {
+              id: '3101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '3101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+        {
+          label: '6F',
+          value: '6',
+          devices: [
+            {
+              id: '3101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '3101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+        {
+          label: '7F',
+          value: '7',
+          devices: [
+            {
+              id: '3101-1',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            },{
+              id: '3101-2',
+              mode: 'hot',
+              tm: '26',
+              wind: '一级'
+            }
+          ]
+        },
+      ]
+    }
+  },
+  mounted() {
+  },
+  methods: {
+    search() {
+
+    },
+    getContainer() {
+      return this.$refs.airContainerRight
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.sceneCard {
+  width: 100%;
+  height: 100%;
+  .sceneCard-query {
+
+  }
+  .sceneCard-control {
+    margin-top: 12px;
+  }
+  .airContainer {
+    width: 100%;
+    height: 600px;
+    padding: 15px 8px;
+    .airContainer-left {
+      background-color: #fafafa;
+      width: 20%;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      padding: 12px;
+      overflow-y: auto;
+    }
+    .airContainer-right {
+      display: inline-block;
+      width: 80%;
+      height: 100%;
+      vertical-align: top;
+      padding: 12px 20px;
+      overflow-y: auto;
+    }
+    .ant-anchor-link {
+      line-height: 45px;
+      font-size: 16px;
+    }
+    .ant-anchor-link-active {
+      background-color: #e0effa;
+      border-radius: 0px 4px 4px 0px;
+    }
+  }
+}
+</style>

+ 1 - 1
src/components/scene/meeting/config/meetingRooms.vue

@@ -53,7 +53,7 @@ export default {
     let timeRange = this.$util.dateUtil.getNearlyMonthRange()
     return {
       queryData: {
-        floor: '0',
+        floorId: '0',
         size: '0',
         timeRange: timeRange
       },

+ 5 - 1
src/components/scene/meeting/sceneMeetingOverview.vue

@@ -120,6 +120,8 @@ export default {
 
   .meeting-overview-total {
     margin-top: 12px;
+    padding: 12px;
+    background-color: white;
     .meeting-overview-total-title {
       font-size: 14px;
       margin-top: 20px;
@@ -138,11 +140,13 @@ export default {
     background-color: #ffffff;
     margin-top: 12px;
     border-radius: 4px;
-    padding-bottom: 12px;
+    padding: 12px 20px;
   }
 
   .meeting-overview-distribute {
     margin-top: 12px;
+    padding: 12px 15px;
+    background-color: white;
     .meeting-overview-distribute-time {
       margin-right: 6px;
     }

+ 1 - 1
src/components/security/alarm/securityAlarmManage.vue

@@ -71,7 +71,7 @@ export default {
   data() {
     return {
       queryData: {
-        floor: '0',
+        floorId: '0',
         timeRange: this.$util.dateUtil.getNearlyMonthRange()
       },
       coreData: [

+ 45 - 0
src/components/security/camera/hkwsCamera.vue

@@ -0,0 +1,45 @@
+<template>
+  <hik-comp class="hkws-camera" :playConfig="playConfig"
+            :nameId="jkInfo.nameId" :cameraIndexCode="jkInfo.cameraIndexCode" />
+
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      jkInfo: {
+        nameId: "playWnd1", // nameId 具有唯一性,否则无效,如果有多个,一定不能重复
+        cameraIndexCode: "xxxx",  // 监控点编号
+      }
+    }
+  },
+  computed: {
+    playConfig: function () {
+      return {
+        appkey: "",
+        secret: "",
+        ip: "",
+        playMode: 0,
+        port: 443,
+        snapDir: "D:\\SnapDir",
+        videoDir: "D:\\VideoDir",
+        layout: "1x1",
+        enableHTTPS: 1,
+        encryptedFields: 'secret',
+        showToolbar: 0,
+        showSmart: 0,
+        buttonIDs: "",
+        toolBarButtonIDs: "4098",
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+.hkws-camera {
+  width: 100%;
+  height: 100%;
+}
+</style>

+ 1 - 1
src/components/work/bus/workBus.vue

@@ -54,7 +54,7 @@ export default {
     let timeRange = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
+        companyId: '0',
         timeRange: timeRange,
       },
       columns: [

+ 2 - 2
src/components/work/meeting/workMeeting.vue

@@ -133,8 +133,8 @@ export default {
     let timeRange = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        floor: '0',
+        companyId: '0',
+        floorId: '0',
         timeRange: timeRange,
       },
       columns: [

+ 3 - 3
src/components/work/overview/workOverview.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="workOverview">
     <div class="page-query-core">
-      <query :show="['company','floor','time']" :query-data.sync="queryData" :reset="reset" :search="search"></query>
+      <query :show="['company','floor']" :query-data.sync="queryData" :reset="reset" :search="search"></query>
       <card :title="'核心指标'">
         <CoreData :data-list="coreData"></CoreData>
       </card>
@@ -59,8 +59,8 @@ export default {
     let timeRange = this.$util.dateUtil.getNearlyMonthRange()
     return {
       queryData: {
-        company: '0',
-        floor: '0',
+        companyId: '0',
+        floorId: '0',
         timeRange: timeRange
       },
       columns: [

+ 2 - 2
src/components/work/print/workPrint.vue

@@ -53,8 +53,8 @@ export default {
     let timeRange = this.$util.dateUtil.getNearlyMonthRange();
     return {
       queryData: {
-        company: '0',
-        floor: '0',
+        companyId: '0',
+        floorId: '0',
         timeRange: timeRange,
       },
       columns: [

+ 1 - 1
src/data/json/menuList.json

@@ -278,7 +278,7 @@
   {
     "name": "统一鉴权",
     "router": "/auth",
-    "icon": "权限下达.png",
+    "icon": "统一鉴权.png",
     "children": [
       {
         "name": "角色权限",

+ 7 - 0
src/data/json/user.json

@@ -0,0 +1,7 @@
+[
+  {
+    "username": "admin",
+    "password": "123456",
+    "phone": "13000000000"
+  }
+]

+ 3 - 0
src/main.js

@@ -24,6 +24,9 @@ Vue.prototype.$constant = constant
 Vue.prototype.$echarts = echarts
 Vue.prototype.$moment = moment
 
+import hikComp from 'hikvs-web'
+Vue.use(hikComp)
+
 Vue.use(Antd) 
 Vue.use(PiniaVuePlugin)
 

+ 139 - 0
src/plugins/gverify.js

@@ -0,0 +1,139 @@
+!(function(window, document) {
+    function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数
+        this.options = { //默认options参数值
+            id: "", //容器Id
+            canvasId: "verifyCanvas", //canvas的ID
+            width: "100", //默认canvas宽度
+            height: "30", //默认canvas高度
+            type: "blend", //图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母
+            code: ""
+        }
+
+        if(Object.prototype.toString.call(options) == "[object Object]"){//判断传入参数类型
+            for(var i in options) { //根据传入的参数,修改默认参数值
+                this.options[i] = options[i];
+            }
+        }else{
+            this.options.id = options;
+        }
+
+        this.options.numArr = "0,1,2,3,4,5,6,7,8,9".split(",");
+        this.options.letterArr = getAllLetter();
+
+        this._init();
+        this.refresh();
+    }
+
+    GVerify.prototype = {
+        /**版本号**/
+        version: '1.0.0',
+
+        /**初始化方法**/
+        _init: function() {
+            var con = document.getElementById(this.options.id);
+            var canvas = document.createElement("canvas");
+            this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100";
+            this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30";
+            canvas.id = this.options.canvasId;
+            canvas.width = this.options.width;
+            canvas.height = this.options.height;
+            canvas.style.cursor = "pointer";
+            canvas.innerHTML = "您的浏览器版本不支持canvas";
+            con.appendChild(canvas);
+            var parent = this;
+            canvas.onclick = function(){
+                parent.refresh();
+            }
+        },
+
+        /**生成验证码**/
+        refresh: function() {
+            this.options.code = "";
+            var canvas = document.getElementById(this.options.canvasId);
+            if(canvas.getContext) {
+                var ctx = canvas.getContext('2d');
+            }else{
+                return;
+            }
+
+            ctx.textBaseline = "middle";
+
+            ctx.fillStyle = randomColor(180, 240);
+            ctx.fillRect(0, 0, this.options.width, this.options.height);
+
+            if(this.options.type == "blend") { //判断验证码类型
+                var txtArr = this.options.numArr.concat(this.options.letterArr);
+            } else if(this.options.type == "number") {
+                var txtArr = this.options.numArr;
+            } else {
+                var txtArr = this.options.letterArr;
+            }
+
+            for(var i = 1; i <= 4; i++) {
+                var txt = txtArr[randomNum(0, txtArr.length)];
+                this.options.code += txt;
+                ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; //随机生成字体大小
+                ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色
+                ctx.shadowOffsetX = randomNum(-3, 3);
+                ctx.shadowOffsetY = randomNum(-3, 3);
+                ctx.shadowBlur = randomNum(-3, 3);
+                ctx.shadowColor = "rgba(0, 0, 0, 0.3)";
+                var x = this.options.width / 5 * i;
+                var y = this.options.height / 2;
+                var deg = randomNum(-30, 30);
+                /**设置旋转角度和坐标原点**/
+                ctx.translate(x, y);
+                ctx.rotate(deg * Math.PI / 180);
+                ctx.fillText(txt, 0, 0);
+                /**恢复旋转角度和坐标原点**/
+                ctx.rotate(-deg * Math.PI / 180);
+                ctx.translate(-x, -y);
+            }
+            /**绘制干扰线**/
+            for(var i = 0; i < 0; i++) {
+                ctx.strokeStyle = randomColor(40, 180);
+                ctx.beginPath();
+                ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height));
+                ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height));
+                ctx.stroke();
+            }
+            /**绘制干扰点**/
+            for(var i = 0; i < randomNum(0, 20); i++) {
+                ctx.fillStyle = randomColor(0, 255);
+                ctx.beginPath();
+                ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI);
+                ctx.fill();
+            }
+        },
+
+        /**验证验证码**/
+        validate: function(code){
+            var code = code.toLowerCase();
+            var v_code = this.options.code.toLowerCase();
+            //console.log(v_code+'-'+code);
+            if(code == v_code){
+                return true;
+            }else{
+                this.refresh();
+                return false;
+            }
+        }
+    }
+    /**生成字母数组**/
+    function getAllLetter() {
+        var letterStr = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
+        return letterStr.split(",");
+    }
+    /**生成一个随机数**/
+    function randomNum(min, max) {
+        return Math.floor(Math.random() * (max - min) + min);
+    }
+    /**生成一个随机色**/
+    function randomColor(min, max) {
+        var r = randomNum(min, max);
+        var g = randomNum(min, max);
+        var b = randomNum(min, max);
+        return "rgb(" + r + "," + g + "," + b + ")";
+    }
+    window.GVerify = GVerify;
+})(window, document);

+ 8 - 0
src/stores/index.js

@@ -64,6 +64,13 @@ const userStore = defineStore('ioc-user', {
     actions: {},
 })
 
+const paramStore = defineStore('ioc-param', {
+    state: () => ({
+        buildingId: '',
+    }),
+    actions: {},
+})
+
 const loadingStore = defineStore('ioc-loading', {
     state: () => ({
         loading: false,
@@ -92,4 +99,5 @@ export default {
     menuStore,
     userStore,
     loadingStore,
+    paramStore,
 }

+ 2 - 2
src/utils/dateUtil.js

@@ -7,8 +7,8 @@ const getNearlyMonthRange = () => {
     let startDate = moment().subtract(30, 'days').format(dateFormat);
     let endDate = moment().format(dateFormat);
     return {
-        startTime: startDate,
-        endTime: endDate
+        startDate: startDate,
+        endDate: endDate
     };
 }
 

+ 3 - 0
src/views/HomeView.vue

@@ -122,4 +122,7 @@ export default {
     overflow: hidden;
   }
 }
+/deep/ .ant-drawer-content {
+  background: rgba(255, 255, 255,.85);
+}
 </style>

+ 137 - 25
src/views/LoginView.vue

@@ -1,45 +1,107 @@
 <script>
-import HomeHeader from '@/components/home/HomeHeader.vue'
+import userData from "@/data/json/user.json"
 
 export default {
-  components: { HomeHeader },
   data() {
     return {
-
+      userData,
+      form: {
+        code: '',
+        username: '',
+        password: ''
+      },
+      phoneForm: {
+        code: '',
+        phone: '',
+      }
     }
   },
   created() {
   },
   mounted() {
+    this.GVerify = new GVerify("verify-code")
   },
   methods: {
+    callback(key) {
+      //console.log(key);
+    },
+    handleSubmit() {
+      let valid = this.GVerify.validate(this.form.code)
+      if (valid) {
 
+      }
+    }
   },
 }
 </script>
 
 <template>
   <div id="loginContainer">
-    <HomeHeader />
-
+    <span class="loginContainer-title">智慧运营管理中心</span>
     <div class="loginDiv">
-      <div class="loginTitle">
-        密码登录
-      </div>
-      <div class="loginForm">
-        <a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" @submit="handleSubmit">
-          <a-form-item label="Note">
-            <a-input
-              v-decorator="['note', { rules: [{ required: true, message: 'Please input your note!' }] }]"
-            />
-          </a-form-item>
-          <a-form-item :wrapper-col="{ span: 12, offset: 5 }">
-            <a-button type="primary" html-type="submit">
-              Submit
-            </a-button>
-          </a-form-item>
-        </a-form>
-      </div>
+      <a-tabs default-active-key="1" @change="callback">
+        <a-tab-pane key="1" tab="账户登录">
+          <div class="loginForm">
+            <a-form :form="form">
+              <a-form-item>
+                <a-input v-model="form.username" style="height: 40px;" placeholder="账户/邮件账户">
+                  <a-icon slot="prefix" type="user" style="font-size: 16px;height: 25px;color: #a8a8a8;"/>
+                </a-input>
+              </a-form-item>
+              <a-form-item>
+                <a-input-password v-model="form.password" style="height: 40px" placeholder="密码">
+                  <a-icon slot="prefix" type="lock" style="font-size: 16px;height: 23px;color: #a8a8a8"/>
+                </a-input-password>
+              </a-form-item>
+              <a-form-item>
+                <a-input v-model="form.code" placeholder="请输入验证码"
+                         style="width: 200px;height: 32px;display: inline-block;vertical-align: middle"/>
+                <div id="verify-code" title="点击更换"></div>
+              </a-form-item>
+              <a-form-item>
+                <div style="height: 20px"></div>
+                <a-button type="primary" @click="handleSubmit"
+                          style="width: 100%;height: 32px;font-size: 17px;letter-spacing: 5px">
+                  登录
+                </a-button>
+              </a-form-item>
+            </a-form>
+            <div class="form-bottom">
+              <a-checkbox @change="onChange" style="float: left;margin-top: 5px">
+                记住密码
+              </a-checkbox>
+              <!--<a-button type="link" style="float: right;">忘记密码?</a-button>-->
+            </div>
+          </div>
+        </a-tab-pane>
+        <a-tab-pane key="2" tab="手机登录" force-render>
+          <div class="loginForm">
+            <a-form :form="phoneForm">
+              <a-form-item>
+                <a-input v-model="phoneForm.phone" style="height: 40px;" placeholder="手机号">
+                  <template #prefix>
+                    <span class="anticon" style="font-size: 16px;height: 25px;color: #a8a8a8;">
+                      <i-icon-park-outline-iphone/>
+                    </span>
+                  </template>
+                </a-input>
+              </a-form-item>
+              <a-form-item>
+                <a-input v-model="phoneForm.code" placeholder="请输入验证码"
+                         style="width: 240px;height: 32px;display: inline-block;vertical-align: middle"/>
+                <a-button style="width: 100px">发送验证码</a-button>
+              </a-form-item>
+              <a-form-item>
+                <div style="height: 20px"></div>
+                <a-button type="primary" @click="handleSubmit"
+                          style="width: 100%;height: 32px;font-size: 17px;letter-spacing: 5px">
+                  登录
+                </a-button>
+              </a-form-item>
+            </a-form>
+          </div>
+        </a-tab-pane>
+      </a-tabs>
     </div>
   </div>
 </template>
@@ -48,10 +110,60 @@ export default {
 #loginContainer {
   width: 100%;
   height: 100%;
+  background-image: url("@/assets/images/login-bg.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  text-align: center;
+
+  /deep/ .ant-input-affix-wrapper .ant-input {
+    padding-left: 35px;
+    color: #333333;
+  }
+
+  .loginContainer-title {
+    position: absolute;
+    top: 150px;
+    left: 18%;
+    font-size: 50px;
+    letter-spacing: 15px;
+  }
+
   .loginDiv {
-    width: 400px;
-    height: 300px;
-    border: 1px solid gray;
+    width: 500px;
+    height: 520px;
+    border: 2px solid #deebf3;
+    border-radius: 4px;
+    background-color: #ffffff;
+    position: relative;
+    top: 20%;
+    left: 65%;
+    //margin: 10% 0 0 65%;
+    .loginForm {
+      width: 350px;
+      margin: 0 auto;
+      padding-top: 50px;
+      height: 440px;
+
+      .form-bottom {
+        position: absolute;
+        top: 430px;
+        width: 350px;
+      }
+    }
+
+  }
+
+  #verify-code {
+    width: 130px;
+    height: 30px;
+    vertical-align: middle;
+    margin: 0 10px;
+    display: inline-block;
+  }
+
+  /deep/ .ant-tabs-tab {
+    padding: 20px 50px;
+    font-size: 16px;
   }
 }
 </style>