|
@@ -47,11 +47,12 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="sceneCard-control">
|
|
<div class="sceneCard-control">
|
|
|
|
+
|
|
<div style="display: inline-block;width: 50%;text-align: left">
|
|
<div style="display: inline-block;width: 50%;text-align: left">
|
|
<a-space>
|
|
<a-space>
|
|
<a-button style="font-size: 12px" size="small" @click="allPowerOff"><a-icon type="poweroff" />全开</a-button>
|
|
<a-button style="font-size: 12px" size="small" @click="allPowerOff"><a-icon type="poweroff" />全开</a-button>
|
|
<a-button style="font-size: 12px" size="small" @click="allPowerOn"><a-icon type="poweroff" />全关</a-button>
|
|
<a-button style="font-size: 12px" size="small" @click="allPowerOn"><a-icon type="poweroff" />全关</a-button>
|
|
- <a-button type="primary" size="small" style="font-size: 12px" >批量执行策略</a-button>
|
|
|
|
|
|
+ <a-button type="primary" size="small" style="font-size: 12px" v-show="!showCard" @click="()=>{this.showBatchCL=true}">批量执行策略</a-button>
|
|
</a-space>
|
|
</a-space>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -60,21 +61,29 @@
|
|
<a-select-option value="0">
|
|
<a-select-option value="0">
|
|
按楼层显示
|
|
按楼层显示
|
|
</a-select-option>
|
|
</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-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-select>
|
|
<a-button type="link" @click="toggleShowCard"><a-icon type="unordered-list" />
|
|
<a-button type="link" @click="toggleShowCard"><a-icon type="unordered-list" />
|
|
<span v-if="showCard">列表模式</span>
|
|
<span v-if="showCard">列表模式</span>
|
|
<span v-if="!showCard">卡片模式</span>
|
|
<span v-if="!showCard">卡片模式</span>
|
|
</a-button>
|
|
</a-button>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <a-alert type="success" show-icon v-if="selectedRowKeys.length>0" closeText="取消选择" @close="clearSelectRow">
|
|
|
|
+ <template #message>
|
|
|
|
+ 已选择{{ selectedRowKeys.length }}台设备
|
|
|
|
+ </template>
|
|
|
|
+ </a-alert>
|
|
|
|
+
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="airContainer">
|
|
<div class="airContainer">
|
|
@@ -114,7 +123,39 @@
|
|
</template>
|
|
</template>
|
|
<template v-if="!showCard">
|
|
<template v-if="!showCard">
|
|
<div :key="item.value" :id="item.label" v-show="currFloor==item.label">
|
|
<div :key="item.value" :id="item.label" v-show="currFloor==item.label">
|
|
- <a-table></a-table>
|
|
|
|
|
|
+ <a-table :rowKey=" (record, index) => record.id"
|
|
|
|
+ :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
|
|
|
+ :columns="columns"
|
|
|
|
+ :show-header="true"
|
|
|
|
+ :data-source="item.devices"
|
|
|
|
+ :pagination="false"
|
|
|
|
+ :scroll="{ y: 400 }"
|
|
|
|
+ >
|
|
|
|
+ <template #name="text, record">
|
|
|
|
+ <span>{{ record.id }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ <template #mode="text, record">
|
|
|
|
+ <span v-if="text=='hot'">制热</span>
|
|
|
|
+ <span v-if="text=='cold'">制冷</span>
|
|
|
|
+ </template>
|
|
|
|
+ <template #tm="text, record">
|
|
|
|
+ <span>{{text}}°C</span>
|
|
|
|
+ </template>
|
|
|
|
+ <template #isControl="text, record">
|
|
|
|
+ <span>是</span>
|
|
|
|
+ </template>
|
|
|
|
+ <template #online="text, record">
|
|
|
|
+ <span v-if="text">
|
|
|
|
+ <span style="color: #19b955;background-color: #19b955;width: 15px;height: 15px;display: inline-block;border-radius: 8px;vertical-align: middle">•</span> 在线
|
|
|
|
+ </span>
|
|
|
|
+ <span v-if="!text">
|
|
|
|
+ <span style="color: gray;background-color: gray;width: 15px;height: 15px;display: inline-block;border-radius: 8px;vertical-align: middle">•</span> 离线
|
|
|
|
+ </span>
|
|
|
|
+ </template>
|
|
|
|
+ <template #strategy="text, record">
|
|
|
|
+ <span>智慧场景策略配置</span>
|
|
|
|
+ </template>
|
|
|
|
+ </a-table>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -122,6 +163,148 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
+ <a-modal title="批量执行策略" v-if="showBatchCL" v-model="showBatchCL" width="500" height="300" centered style="max-height: 300px;overflow-y: auto" @ok="handleOk">
|
|
|
|
+ <a-form-model :form="formData" :label-col="{span:6}" :wrapperCol="{span:16}" style="overflow-y: auto;height: 450px">
|
|
|
|
+
|
|
|
|
+ <a-form-item label="选择策略:" class="formItem" >
|
|
|
|
+ <a-radio-group v-model="formData.resource">
|
|
|
|
+ <a-radio value="1">已有策略</a-radio>
|
|
|
|
+ <a-radio value="2">自定义</a-radio>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="策略名称:" class="formItem" >
|
|
|
|
+ <template v-if="formData.resource=='1'">
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.clId">
|
|
|
|
+ <a-select-option value="0"> 策略1 </a-select-option>
|
|
|
|
+ <!--<a-select-option v-for="item in companyData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>-->
|
|
|
|
+ </a-select>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-else>
|
|
|
|
+ <a-input v-model="formData.clName" placeholder="请输入策略名称" />
|
|
|
|
+ </template>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="执行方式:" class="formItem" >
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.method" >
|
|
|
|
+ <a-select-option value="1"> 每日执行 </a-select-option>
|
|
|
|
+ <a-select-option value="2"> 工作日与非工作日区别执行 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="执行时间:" class="formItem" >
|
|
|
|
+ <timeRange time-format="yyyy/MM/DD" :time-range="formData.timeRange" />
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method=='2'" >工作日策略 -</div>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="开机策略:" class="formItem" >
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
|
|
|
|
+ <a-select-option value="0"> 定时开关机 </a-select-option>
|
|
|
|
+ <a-select-option value="1"> 24小时开机 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="开机时间:" class="formItem" >
|
|
|
|
+ <a-time-picker use24-hours v-model="formData.openTime" :disabled="!(formData.openCl=='0')" />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="关机时间:" class="formItem" >
|
|
|
|
+ <a-time-picker use24-hours v-model="formData.closeTime" :disabled="!(formData.openCl=='0')" />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="空调模式:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.mode">
|
|
|
|
+ <a-select-option value="1"> 制冷 </a-select-option>
|
|
|
|
+ <a-select-option value="2"> 制热 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="空调风速:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.wind">
|
|
|
|
+ <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-option value="0"> 自动 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="设置温度:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.tm">
|
|
|
|
+ <a-select-option value="18"> 18°C </a-select-option>
|
|
|
|
+ <a-select-option value="19"> 19°C </a-select-option>
|
|
|
|
+ <a-select-option value="20"> 20°C </a-select-option>
|
|
|
|
+ <a-select-option value="21"> 21°C </a-select-option>
|
|
|
|
+ <a-select-option value="22"> 22°C </a-select-option>
|
|
|
|
+ <a-select-option value="23"> 23°C </a-select-option>
|
|
|
|
+ <a-select-option value="24"> 24°C </a-select-option>
|
|
|
|
+ <a-select-option value="25"> 25°C </a-select-option>
|
|
|
|
+ <a-select-option value="26"> 26°C </a-select-option>
|
|
|
|
+ <a-select-option value="27"> 27°C </a-select-option>
|
|
|
|
+ <a-select-option value="28"> 28°C </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="人体感应:" class="formItem" >
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.sensor">
|
|
|
|
+ <a-select-option value="0"> 无 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <div v-if="formData.method=='2'">
|
|
|
|
+
|
|
|
|
+ <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" >非工作日策略 -</div>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="开机策略:" class="formItem" >
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
|
|
|
|
+ <a-select-option value="0"> 定时开关机 </a-select-option>
|
|
|
|
+ <a-select-option value="1"> 24小时开机 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="开机时间:" class="formItem" >
|
|
|
|
+ <a-time-picker use24-hours v-model="formData.openTime" :disabled="!(formData.openCl=='0')"/>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="关机时间:" class="formItem" >
|
|
|
|
+ <a-time-picker use24-hours v-model="formData.closeTime" :disabled="!(formData.openCl=='0')" />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item label="空调模式:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.mode">
|
|
|
|
+ <a-select-option value="1"> 制冷 </a-select-option>
|
|
|
|
+ <a-select-option value="2"> 制热 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="空调风速:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.wind">
|
|
|
|
+ <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-option value="0"> 自动 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="设置温度:" class="formItem" >
|
|
|
|
+ <a-select style="width: 200px" v-model="formData.tm">
|
|
|
|
+ <a-select-option value="18"> 18°C </a-select-option>
|
|
|
|
+ <a-select-option value="19"> 19°C </a-select-option>
|
|
|
|
+ <a-select-option value="20"> 20°C </a-select-option>
|
|
|
|
+ <a-select-option value="21"> 21°C </a-select-option>
|
|
|
|
+ <a-select-option value="22"> 22°C </a-select-option>
|
|
|
|
+ <a-select-option value="23"> 23°C </a-select-option>
|
|
|
|
+ <a-select-option value="24"> 24°C </a-select-option>
|
|
|
|
+ <a-select-option value="25"> 25°C </a-select-option>
|
|
|
|
+ <a-select-option value="26"> 26°C </a-select-option>
|
|
|
|
+ <a-select-option value="27"> 27°C </a-select-option>
|
|
|
|
+ <a-select-option value="28"> 28°C </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ <a-form-item label="人体感应:" class="formItem" >
|
|
|
|
+ <a-select default-value="0" style="width: 200px" v-model="formData.sensor">
|
|
|
|
+ <a-select-option value="0"> 无 </a-select-option>
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ </a-form-model>
|
|
|
|
+ </a-modal>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -129,20 +312,69 @@
|
|
<script>
|
|
<script>
|
|
import Query from "@/components/common/query.vue";
|
|
import Query from "@/components/common/query.vue";
|
|
import DeviceCardAir from "@/components/scene/energy/common/deviceCardAir.vue";
|
|
import DeviceCardAir from "@/components/scene/energy/common/deviceCardAir.vue";
|
|
|
|
+import timeRange from "@/components/common/timeRange.vue";
|
|
export default {
|
|
export default {
|
|
components: {
|
|
components: {
|
|
Query,
|
|
Query,
|
|
DeviceCardAir,
|
|
DeviceCardAir,
|
|
|
|
+ timeRange,
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ formData: {},
|
|
currFloor: '1F',
|
|
currFloor: '1F',
|
|
showCard: true,
|
|
showCard: true,
|
|
|
|
+ showBatchCL: false,
|
|
queryData: {
|
|
queryData: {
|
|
switch: '0',
|
|
switch: '0',
|
|
mode: '0',
|
|
mode: '0',
|
|
tm: '0'
|
|
tm: '0'
|
|
},
|
|
},
|
|
|
|
+ selectedRowKeys: [],
|
|
|
|
+
|
|
|
|
+ columns: [
|
|
|
|
+ {
|
|
|
|
+ title: '名称',
|
|
|
|
+ dataIndex: 'name',
|
|
|
|
+ key: 'name',
|
|
|
|
+ scopedSlots: { customRender: 'name' },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '模式',
|
|
|
|
+ dataIndex: 'mode',
|
|
|
|
+ key: 'mode',
|
|
|
|
+ scopedSlots: { customRender: 'mode' },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '温度',
|
|
|
|
+ dataIndex: 'tm',
|
|
|
|
+ key: 'tm',
|
|
|
|
+ scopedSlots: { customRender: 'tm' },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '风速',
|
|
|
|
+ dataIndex: 'wind',
|
|
|
|
+ key: 'wind',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '是否支持调控',
|
|
|
|
+ dataIndex: 'isControl',
|
|
|
|
+ key: 'isControl',
|
|
|
|
+ scopedSlots: { customRender: 'isControl' },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '状态',
|
|
|
|
+ dataIndex: 'online',
|
|
|
|
+ key: 'online',
|
|
|
|
+ scopedSlots: { customRender: 'online' },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '执行策略',
|
|
|
|
+ dataIndex: 'strategy',
|
|
|
|
+ key: 'strategy',
|
|
|
|
+ scopedSlots: { customRender: 'strategy' },
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
oriFloors: [],
|
|
oriFloors: [],
|
|
floors: [
|
|
floors: [
|
|
{
|
|
{
|
|
@@ -219,13 +451,13 @@ export default {
|
|
value: '4',
|
|
value: '4',
|
|
devices: [
|
|
devices: [
|
|
{
|
|
{
|
|
- id: '3101-1',
|
|
|
|
|
|
+ id: '4101-1',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
online: true
|
|
online: true
|
|
},{
|
|
},{
|
|
- id: '3101-2',
|
|
|
|
|
|
+ id: '4101-2',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
@@ -238,13 +470,13 @@ export default {
|
|
value: '5',
|
|
value: '5',
|
|
devices: [
|
|
devices: [
|
|
{
|
|
{
|
|
- id: '3101-1',
|
|
|
|
|
|
+ id: '5101-1',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
online: true,
|
|
online: true,
|
|
},{
|
|
},{
|
|
- id: '3101-2',
|
|
|
|
|
|
+ id: '5101-2',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
@@ -257,13 +489,13 @@ export default {
|
|
value: '6',
|
|
value: '6',
|
|
devices: [
|
|
devices: [
|
|
{
|
|
{
|
|
- id: '3101-1',
|
|
|
|
|
|
+ id: '6101-1',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
online: true
|
|
online: true
|
|
},{
|
|
},{
|
|
- id: '3101-2',
|
|
|
|
|
|
+ id: '6101-2',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
@@ -276,13 +508,13 @@ export default {
|
|
value: '7',
|
|
value: '7',
|
|
devices: [
|
|
devices: [
|
|
{
|
|
{
|
|
- id: '3101-1',
|
|
|
|
|
|
+ id: '7101-1',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
online: true
|
|
online: true
|
|
},{
|
|
},{
|
|
- id: '3101-2',
|
|
|
|
|
|
+ id: '7101-2',
|
|
mode: 'hot',
|
|
mode: 'hot',
|
|
tm: '26',
|
|
tm: '26',
|
|
wind: '一级',
|
|
wind: '一级',
|
|
@@ -297,9 +529,16 @@ export default {
|
|
this.oriFloors = JSON.parse(JSON.stringify(this.floors));
|
|
this.oriFloors = JSON.parse(JSON.stringify(this.floors));
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ clearSelectRow() {
|
|
|
|
+ this.selectedRowKeys = []
|
|
|
|
+ },
|
|
reset() {
|
|
reset() {
|
|
this.floors = JSON.parse(JSON.stringify(this.oriFloors));
|
|
this.floors = JSON.parse(JSON.stringify(this.oriFloors));
|
|
},
|
|
},
|
|
|
|
+ handleOk() {
|
|
|
|
+ this.showBatchCL = false;
|
|
|
|
+ this.$message.success('设置成功')
|
|
|
|
+ },
|
|
search() {
|
|
search() {
|
|
let objarr = JSON.parse(JSON.stringify(this.oriFloors));
|
|
let objarr = JSON.parse(JSON.stringify(this.oriFloors));
|
|
let app = this
|
|
let app = this
|
|
@@ -324,6 +563,9 @@ export default {
|
|
})
|
|
})
|
|
this.floors = objarr
|
|
this.floors = objarr
|
|
},
|
|
},
|
|
|
|
+ onSelectChange(val) {
|
|
|
|
+ this.selectedRowKeys = val
|
|
|
|
+ },
|
|
toggleOnline(device) {
|
|
toggleOnline(device) {
|
|
device.online=!device.online;
|
|
device.online=!device.online;
|
|
},
|
|
},
|
|
@@ -361,6 +603,9 @@ export default {
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|
|
|
|
+.formItem {
|
|
|
|
+ margin: 12px 0;
|
|
|
|
+}
|
|
.sceneCard {
|
|
.sceneCard {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|