diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/airCurtain.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/airCurtain.png
new file mode 100644
index 0000000..a4424ae
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/airCurtain.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/fan.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/fan.png
new file mode 100644
index 0000000..1630fe3
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/fan.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/highSpeed.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/highSpeed.png
new file mode 100644
index 0000000..108b347
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/highSpeed.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/hotAir.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/hotAir.png
new file mode 100644
index 0000000..353e987
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/hotAir.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/lowSpeed.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/lowSpeed.png
new file mode 100644
index 0000000..fd0f338
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/lowSpeed.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/mediumSpeed.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/mediumSpeed.png
new file mode 100644
index 0000000..a593d0f
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/mediumSpeed.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-open.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-open.png
new file mode 100644
index 0000000..d26ee3e
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-open.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-success.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-success.png
new file mode 100644
index 0000000..f6e8d81
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/state-success.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/windowIcon.png b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/windowIcon.png
new file mode 100644
index 0000000..f292bc6
Binary files /dev/null and b/hx-ai-intelligent/src/view/equipmentControl/image/ventilationSystem/windowIcon.png differ
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/boxModel.vue b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/boxModel.vue
new file mode 100644
index 0000000..f71790a
--- /dev/null
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/boxModel.vue
@@ -0,0 +1,131 @@
+
+
+
+ {{ dataSource.title }}
+
+
+
+
+
+
+
+
+ 正常
+
+
+
+
+
+
+
+
+ 高速启动
+
+
+
+
+
+
+
+ 开启
+
+
+
+
+
+
+
+ 热风
+
+
+
+
+
+
+
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/dialogStyle.less b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/dialogStyle.less
new file mode 100644
index 0000000..26c41ae
--- /dev/null
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/dialogStyle.less
@@ -0,0 +1,168 @@
+.out-dialog {
+ position: fixed;
+ right: 496px;
+ width: 500px;
+ height: 100%;
+ z-index: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ box-sizing: border-box;
+ color: rgb(255, 83, 0);
+ background: black;
+ display: flex;
+ padding: 25px;
+ flex-direction: column;
+ transition: all ease 0.5s;
+ .content {
+ overflow-y: scroll;
+ .div-operation {
+ display: inline-block;
+ width: 3px;
+ height: 13px;
+ opacity: 1;
+ border-radius: 1px;
+ background: rgba(67, 136, 251, 1);
+ }
+ .text-operation {
+ display: inline-block;
+ color: rgba(255, 255, 255, 1);
+ font-size: 16px;
+ font-weight: 700;
+ margin-left: 5px;
+ }
+ .j-box {
+ background-color: #000;
+ opacity: 1;
+ z-index: 99999;
+ overflow-y: scroll;
+ .journal {
+ padding: 1% 3%;
+ width: 100%;
+ height: 150px;
+ background-color: rgba(0, 0, 0);
+ border-radius: 12px;
+ border: 2px solid transparent;
+ border-image: linear-gradient(to bottom, #0077ff, #00f6ff, #000000) 1;
+ .title-img {
+ padding-top: 6px;
+ }
+ }
+ .imgText {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .ztzm {
+ display: flex;
+ align-items: center;
+ }
+
+ .cxbtn {
+ color: rgba(255, 255, 255, 1);
+ border: none;
+ border-radius: 6px;
+ width: 59.79px;
+ height: 32px;
+ opacity: 1;
+ background: linear-gradient(
+ 180deg,
+ rgba(255, 187, 0, 1) 0%,
+ rgba(255, 112, 3, 1) 91.21%,
+ rgba(255, 129, 3, 1) 100%
+ );
+ cursor: pointer;
+ }
+ }
+ .btn-box {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 1fr 1fr;
+ grid-row-gap: 15px;
+ .btn-item {
+ text-align: center;
+ display: flex;
+ align-content: space-between;
+ .left {
+ width: 70px;
+ height: 35px;
+ line-height: 35px;
+ border-radius: 4px;
+ background: linear-gradient(
+ 180deg,
+ rgba(1, 206, 255, 1) 0%,
+ rgba(0, 150, 229, 1) 100%
+ );
+ color: rgba(255, 255, 255, 1);
+ font-size: 14px;
+ font-weight: 400;
+ }
+ .right {
+ width: 140px;
+ height: 35px;
+ line-height: 35px;
+ :first-child {
+ color: white;
+ }
+ span {
+ vertical-align: middle;
+ }
+ img {
+ padding: 0 5px;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .button-box {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 10px;
+ height: 60px;
+ position: absolute;
+ background-color: transparent;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ .execute {
+ margin-right: 10px;
+ width: 74px;
+ height: 40px;
+ opacity: 1;
+ cursor: pointer;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 400;
+ border: 0;
+ margin-left: 10px;
+ }.cancel {
+ margin-right: 10px;
+ width: 74px;
+ height: 40px;
+ opacity: 1;
+ cursor: pointer;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 400;
+ border: 0;
+ margin-left: 10px;
+ }
+ .execute {
+ background: rgb(67, 136, 251);
+ color: white;
+ }
+ .cancel {
+ background: white;
+ color: black;
+ }
+ }
+}
+
+.fade-enter-active, .fade-leave-active {
+ transform: translateX(0px);
+}
+.fade-enter-from, .fade-leave-to {
+ transform: translateX(496px);
+}
\ No newline at end of file
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanControl.vue b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanControl.vue
new file mode 100644
index 0000000..dad0fa7
--- /dev/null
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanControl.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
排风扇
+
+
+
+
+
+
+
+
+
+
+
+ 展开
+
+
+
+
+
+ 回缩
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanPlant.vue b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanPlant.vue
new file mode 100644
index 0000000..05bb3c6
--- /dev/null
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/fanPlant.vue
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+ 序号 |
+ 执行时间 |
+ 计划名称 |
+ 状态 |
+ 操作 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ row.startTime }} |
+ {{ row.planName }} |
+
+
+ |
+
+
+ |
+
+ 重启
+
+ 删除
+
+ |
+
+
+
+
+
+
+
+
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/tabs1.less b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/tabs1.less
new file mode 100644
index 0000000..e0f02c9
--- /dev/null
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/components/tabs1.less
@@ -0,0 +1,423 @@
+// 抽屉
+.drawer-fan {
+ .light-area,
+ .circuit-area,
+ .control-area,
+ .control-scene-area,
+ .light-parameters-area {
+ width: 100%;
+ margin-top: 20px;
+ display: flex;
+ align-items: center;
+ }
+
+ .light-area-tab,
+ .circuit-tab,
+ .control-tab,
+ .control-scene-tab,
+ .light-parameters-tab {
+ width: 5px;
+ height: 23px;
+ opacity: 1;
+ background: rgba(26, 174, 251, 1);
+ margin-right: 4px;
+ }
+
+ .light-area-text,
+ .circuit-text,
+ .control-text,
+ .control-scene-text,
+ .light-parameters-text {
+ font-size: 14px;
+ color: white;
+ padding-left: 5px;
+ line-height: 23px;
+ width: 110px;
+ height: 23px;
+ background: linear-gradient(270deg, rgba(86, 221, 253, 0) 0%, rgba(25, 176, 255, 1) 100%);
+ user-select: none;
+ }
+
+ .light-area-tab,
+ .light-area-text {
+ display: inline-block;
+ justify-content: center;
+ }
+ .plan {
+ border: none;
+ font-size: 14px;
+ font-weight: 400;
+ border-radius: 5px;
+ vertical-align: top;
+ margin-left: 235px;
+ width: 88px;
+ height: 32px;
+ color: white;
+ cursor: pointer;
+ }
+ .plan.enabled {
+ background: linear-gradient(180deg, rgba(103, 222, 0, 1) 0%, rgba(0, 181, 6, 1) 100%);
+ }
+ .plan.disabled {
+ background-color: red;
+ }
+ .plan:disabled {
+ cursor: not-allowed;
+ }
+ .openPlan {
+ cursor: pointer;
+ border: none;
+ font-size: 14px;
+ font-weight: 400;
+ border-radius: 5px;
+ color: white;
+ vertical-align: top;
+ width: 88px;
+ height: 32px;
+ }
+ .openPlan.enabled2 {
+ background: linear-gradient(180deg, rgba(103, 222, 0, 1) 0%, rgba(0, 181, 6, 1) 100%);
+ }
+
+ .openPlan.disabled2 {
+ background-color: red;
+ }
+
+ .openPlan:disabled {
+ cursor: not-allowed;
+ }
+
+ .btn2 {
+ display: flex;
+ align-items: center;
+ margin-left: 80px;
+ }
+
+ .openzm {
+ cursor: pointer;
+ color: rgba(34, 183, 255, 1);
+ margin-left: 20px;
+ font-size: 14px;
+ }
+
+ .custom-checkbox {
+ width: 13px;
+ height: 13px;
+ }
+
+ .both {
+ width: 59.79px;
+ height: 32px;
+ opacity: 1;
+ background: linear-gradient(180deg,
+ rgba(255, 187, 0, 1) 0%,
+ rgba(255, 112, 3, 1) 91.21%,
+ rgba(255, 129, 3, 1) 100%);
+ margin-left: 8px;
+ font-size: 12px;
+ color: white;
+ border: none;
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .btn2 {
+ button {
+ margin: 0 5px;
+ }
+ }
+
+ .allBtn {
+ border: 0;
+ width: 40px;
+ color: white;
+ background-color: transparent;
+ }
+
+ .blue-background.ant-switch-checked {
+ background-color: linear-gradient(180deg,
+ rgba(1, 206, 255, 1) 0%,
+ rgba(0, 150, 229, 1) 100%) !important;
+ }
+
+ .grey-background.ant-switch {
+ background-color: grey !important;
+ }
+
+ .blue-background.ant-switch-checked .ant-switch-handle {
+ background-color: linear-gradient(180deg,
+ rgba(1, 206, 255, 1) 0%,
+ rgba(0, 150, 229, 1) 100%) !important;
+ }
+
+ .grey-background.ant-switch .ant-switch-handle {
+ background-color: grey !important;
+ }
+
+ p {
+ color: white;
+ }
+
+ .area,
+ .btnArea,
+ .control-mode-btn-area,
+ .control-scene-btn-area {
+ margin-left: -17px;
+
+ button {
+ width: 21%;
+ padding: 0 2%;
+ }
+ }
+
+ .btn {
+ width: 92px;
+ height: 40px;
+ border-radius: 4px;
+ opacity: 1;
+ margin-top: 10px;
+ margin-left: 17px;
+ font-size: 14px;
+ font-weight: 400;
+ opacity: 1;
+ border: 1px solid rgba(207, 212, 219, 1);
+ line-height: 20.27px;
+ color: white;
+ text-align: center;
+ vertical-align: top;
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .selected {
+ background: linear-gradient(180deg, rgba(201, 245, 255, 1) 0%, rgba(138, 215, 255, 1) 100%);
+ color: rgba(0, 61, 90, 1);
+ border: 1px solid white;
+ }
+
+ .btn:hover {
+ background-color: rgba(207, 212, 219, 1);
+ }
+
+ .btn:active {
+ background-color: rgba(102, 102, 102, 1);
+ color: white;
+ }
+
+ .circuit-area,
+ .control-scene-area,
+ .light-parameters-area {
+ left: 51px;
+ width: 100%;
+ margin-top: 20px;
+ }
+
+ .circuit-tab,
+ .circuit-text {
+ display: inline-block;
+ }
+
+ .batch {
+ width: 60px;
+ height: 32px;
+ opacity: 1;
+ border: 1px solid rgba(67, 136, 251, 1);
+ color: rgba(67, 136, 251, 1);
+ border-radius: 5px;
+ background-color: white;
+ margin-left: 11px;
+ }
+
+ .control-area {
+ left: 51px;
+ width: 100%;
+ margin-top: 20px;
+ }
+
+ .control-tab,
+ .control-text {
+ display: inline-block;
+ }
+
+ :deep(.cell) {
+ text-align: center;
+ }
+
+ :deep(#pane-first) {
+ height: 100%;
+ }
+
+ .control-scene-tab,
+ .control-scene-text {
+ display: inline-block;
+ }
+
+ .light-parameters-tab,
+ .light-parameters-text {
+ display: inline-block;
+ }
+
+ .light-parameters-textarea>p {
+ height: 100%;
+ display: flex;
+ border: 1px solid rgba(236, 239, 245, 1);
+ justify-content: center;
+ align-items: center;
+ }
+
+ .bottom {
+ width: 100%;
+ height: 64px;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ position: fixed;
+ bottom: 0;
+ right: 0;
+ }
+
+ .execute {
+ margin-right: 20px;
+ width: 74px;
+ height: 40px;
+ opacity: 1;
+ cursor: pointer;
+ border-radius: 4px;
+ background: rgba(67, 136, 251, 1);
+ font-size: 14px;
+ font-weight: 400;
+ color: white;
+ border: 0;
+ margin: 0 10px;
+ }
+
+ .flushed {
+ width: 74px;
+ height: 40px;
+ cursor: pointer;
+ opacity: 1;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 400;
+ color: rgba(102, 102, 102, 1);
+ background: white;
+ border: 1px solid rgba(193, 197, 204, 1);
+ margin: 0 10px;
+ }
+
+ :deep(.ant-table-pagination) {
+ visibility: hidden;
+ }
+
+ .drawer-content {
+ margin-left: 20px;
+ }
+
+ .arrow-indicator {
+ position: absolute;
+ top: 50%;
+ left: 0;
+ transform: translateY(-50%);
+ z-index: 1;
+ }
+
+ .drawer-title1 {
+ position: fixed;
+ width: 33px;
+ height: 33px;
+ top: 0;
+ bottom: 0;
+ right: 20px;
+ margin: auto;
+ z-index: 99999;
+ }
+
+ .drawer-title2 {
+ position: fixed;
+ width: 33px;
+ height: 33px;
+ top: 0;
+ bottom: 0;
+ right: 495px;
+ margin: auto;
+ z-index: 99999;
+ }
+
+ .arrowbtn {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 28px;
+ height: 28px;
+ background: rgba(0, 0, 0, 1);
+ opacity: 0.5;
+ border: none;
+ }
+
+ :deep(.ant-tabs-tab-btn) {
+ color: white;
+ }
+
+ :deep(.ant-table) {
+ background-color: transparent;
+ }
+
+ :deep(.ant-table-bordered) {
+ background-color: transparent;
+ }
+
+ :deep(.ant-table-thead) {
+ background-color: transparent;
+ }
+
+ :deep(.ant-table-cell) {
+ background-color: transparent;
+ color: #fff;
+ }
+
+ .custom-table {
+ border-collapse: collapse;
+ width: 416px;
+ height: 60px;
+ color: rgba(255, 255, 255, 1);
+ }
+
+ .custom-table th,
+ .custom-table td {
+ border: 1px solid rgba(163, 192, 243, 1);
+ text-align: left;
+ padding: 8px;
+ text-align: center;
+ }
+
+ .table1 {
+ margin-top: 20px;
+ width: 100%;
+ cellspacing: 0;
+ cellpadding: 0;
+ border: 1px solid rgba(255, 255, 255);
+ border-radius: 5px;
+ background: rgba(255, 255, 255, 0.1);
+ }
+
+ .light-area,
+ .circuit-area,
+ .control-area,
+ .control-scene-area,
+ .light-parameters-area {
+ width: 100%;
+ margin-top: 20px;
+ display: flex;
+ align-items: center;
+ }
+
+ .zmhlbtn {
+ position: relative;
+ }
+
+ // 禁用图标
+ .anticon-stop {
+ position: absolute;
+ right: 3px;
+ bottom: 3px;
+ }
+}
\ No newline at end of file
diff --git a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/index.vue b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/index.vue
index a21cac4..ebf278f 100644
--- a/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/index.vue
+++ b/hx-ai-intelligent/src/view/equipmentControl/ventilationSystem/index.vue
@@ -65,6 +65,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 日志
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 风幕机
+ 计划列表
+ 日志
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 电动窗
+ 计划列表
+ 日志
+
+
@@ -257,4 +550,44 @@
opacity: 0; /* 结束时完全透明 */
}
}
+ .drawer-fan {
+ width: 496px;
+ // 抽屉关闭按钮
+ .drawer-box-out {
+ width: 30px;
+ height: 40px;
+ border-radius: 2px;
+ position: fixed;
+ right: 466px;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ background: rgba(0, 0, 0, 0.5);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ }
+ .ant-tabs-tab-btn {
+ color: white;
+ }
+ .ant-tabs-tabpane {
+ color: white;
+ }
+ }
+ .drawer-box-in {
+ width: 30px;
+ height: 40px;
+ border-radius: 2px;
+ position: fixed;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ background: rgba(0, 0, 0, 0.5);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ }