Browse Source

智慧场景-智能源【智能空调、智能照明、智能饮水机】策略弹窗同步《能源平台》中的字段和功能。

DESKTOP-6LTVLN7\Liumouren 2 years ago
parent
commit
de2e4d6e81

+ 182 - 32
src/components/scene/energy/sceneEnergyAircondition/airconditioningCard.vue

@@ -204,12 +204,12 @@
       </div>
     </div>
 
-    <a-drawer title="策略配置" :visible="showBatchCL" width="500" @close="handleOk">
+    <a-drawer title="批量执行" :visible="showBatchCL" width="500" @close="handleOk">
       <a-form-model :form="formData" :label-col="{ span: 6 }" :wrapperCol="{ span: 16 }">
         <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 value="2">自定义策略</a-radio>
           </a-radio-group>
         </a-form-item>
 
@@ -226,39 +226,58 @@
         </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 default-value="0" style="width: 200px" :disabled="formData.resource == '1'" 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" />
+          <timeRange time-format="yyyy/MM/DD" :disabled="formData.resource == '1'" :time-range="formData.timeRange" />
         </a-form-item>
 
-        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '2'">工作日策略 -</div>
+        <div class="drawer-bottom-button" v-if="formData.method == '1'">
+          <a-button type="primary" @click="showCalendar = true">设置工作日</a-button>
+        </div>
+
+        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '1'">
+          <a-divider orientation="left">工作日策略</a-divider>
+        </div>
 
         <a-form-item label="开机策略:" class="formItem">
-          <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+          <a-select
+            default-value="0"
+            style="width: 200px"
+            :disabled="formData.resource == '1'"
+            v-model="formData.workDayopenCl"
+          >
             <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 label="开机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDayopenTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </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 label="关机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDaycloseTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </a-form-item>
         <a-form-item label="空调模式:" class="formItem">
-          <a-select style="width: 200px" v-model="formData.mode">
+          <a-select style="width: 200px" v-model="formData.workDaymode" :disabled="formData.resource == '1'">
             <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 style="width: 200px" v-model="formData.workDaywind" :disabled="formData.resource == '1'">
             <a-select-option value="1"> 一级 </a-select-option>
             <a-select-option value="2"> 二级 </a-select-option>
             <a-select-option value="3"> 三级 </a-select-option>
@@ -267,7 +286,7 @@
         </a-form-item>
 
         <a-form-item label="设置温度:" class="formItem">
-          <a-select style="width: 200px" v-model="formData.tm">
+          <a-select style="width: 200px" v-model="formData.workDaytm" :disabled="formData.resource == '1'">
             <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>
@@ -283,35 +302,56 @@
         </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
+            default-value="0"
+            style="width: 200px"
+            v-model="formData.workDaysensor"
+            :disabled="formData.resource == '1'"
+          >
+            <a-select-option value="0"> 无人 </a-select-option>
+            <a-select-option value="1"> 有人 </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>
+        <div v-if="formData.method == '1'">
+          <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px">
+            <a-divider orientation="left">非工作日策略</a-divider>
+          </div>
 
           <a-form-item label="开机策略:" class="formItem">
-            <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+            <a-select
+              default-value="0"
+              style="width: 200px"
+              v-model="formData.unWorkDayopenCl"
+              :disabled="formData.resource == '1'"
+            >
               <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 label="开机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.openTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
           </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 label="关机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.closeTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
           </a-form-item>
           <a-form-item label="空调模式:" class="formItem">
-            <a-select style="width: 200px" v-model="formData.mode">
+            <a-select style="width: 200px" v-model="formData.unWorkDaymode" :disabled="formData.resource == '1'">
               <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 style="width: 200px" v-model="formData.unWorkDaywind" :disabled="formData.resource == '1'">
               <a-select-option value="1"> 一级 </a-select-option>
               <a-select-option value="2"> 二级 </a-select-option>
               <a-select-option value="3"> 三级 </a-select-option>
@@ -320,7 +360,7 @@
           </a-form-item>
 
           <a-form-item label="设置温度:" class="formItem">
-            <a-select style="width: 200px" v-model="formData.tm">
+            <a-select style="width: 200px" v-model="formData.unWorkDaytm" :disabled="formData.resource == '1'">
               <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>
@@ -336,12 +376,41 @@
           </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
+              default-value="0"
+              style="width: 200px"
+              v-model="formData.unWorkDaysensor"
+              :disabled="formData.resource == '1'"
+            >
+              <a-select-option value="0"> 无人 </a-select-option>
+              <a-select-option value="1"> 有人 </a-select-option>
             </a-select>
           </a-form-item>
         </div>
       </a-form-model>
+      <div class="drawer-bottom-button">
+        <a-button @click="handleOk">取消</a-button><a-button type="primary" @click="handleOk">批量执行</a-button>
+      </div>
+    </a-drawer>
+    <a-drawer title="设置工作日" :visible="showCalendar" width="1000" @close="hideCalendar">
+      <!-- <a-alert message="系统默认周一至周五为工作日,可对任意日期进行设置。点击即可切换状态!" /> -->
+      <!-- 日历面板 -->
+      <a-calendar>
+        <div
+          slot="dateCellRender"
+          slot-scope="value"
+          class="events subCalendar"
+          :style="{ background: isWorkDay(value) ? '#FFFFFF' : '#badeff' }"
+          @click="changeWorkDay(value)"
+        >
+          <a-icon :type="isWorkDay(value) ? 'desktop' : 'coffee'" style="font-size: 30px;" />
+          <p>{{ isWorkDay(value) ? "工作日" : "非工作日" }}</p>
+        </div>
+        <!-- </a-popover> -->
+      </a-calendar>
+      <div class="drawer-bottom-button">
+        <a-button @click="hideCalendar">取消</a-button><a-button @click="hideCalendar" type="primary">确定</a-button>
+      </div>
     </a-drawer>
   </div>
 </template>
@@ -371,7 +440,8 @@ export default {
         tm: "0"
       },
       selectedRowKeys: [],
-
+      showCalendar: false, // 日历显示状态
+      unWorkDayList: [],
       columns: [
         {
           title: "名称",
@@ -618,6 +688,53 @@ export default {
     this.oriFloors = JSON.parse(JSON.stringify(this.floors));
   },
   methods: {
+    getListData(value) {
+      let listData = [];
+      if (this.$moment().isSame(value, "day")) {
+        listData.push({ type: "error", content: "今日" });
+      }
+      switch (value.day()) {
+        case 0:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        case 6:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        default:
+          listData.push({ type: "success", content: "工作日" });
+      }
+      return listData || [];
+    },
+    isWorkDay(value) {
+      let isWorkDay_ = false;
+      switch (value.day()) {
+        case 0:
+          isWorkDay_ = false;
+          break;
+        case 6:
+          isWorkDay_ = false;
+          break;
+        default:
+          isWorkDay_ = true;
+      }
+
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        isWorkDay_ = !isWorkDay_;
+      }
+      return isWorkDay_;
+    },
+    changeWorkDay(value) {
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        this.unWorkDayList.splice(this.unWorkDayList.indexOf(momentStr), 1);
+      } else {
+        this.unWorkDayList.push(momentStr);
+      }
+    },
+    hideCalendar() {
+      this.showCalendar = false;
+    },
     clearSelectRow() {
       this.activeList = [];
     },
@@ -629,9 +746,24 @@ export default {
       // this.$message.success("设置成功");
     },
     handleCardClick() {
-      console.log("handleCardClick");
       this.showBatchCL = true;
-      this.formData = {};
+      this.formData = {
+        resource: "2", // 默认策略(已有策略)
+        clId: "0", // 已有策略默认下标
+        clName: "", // 策略名称
+        method: "1", // 默认执行方式(按工作日和非工作日)
+        // timeRange: "", // 默认执行时间
+        workDayopenCl: "1", // 默认开机策略
+        workDaymode: "1", // 默认模式
+        workDaywind: "0", // 默认风速
+        workDaytm: "26", // 默认温度
+        workDaysensor: "1", // 人体感应
+        unWorkDayopenCl: "1", // 默认开机策略
+        unWorkDaymode: "1", // 默认模式
+        unWorkDaywind: "0", // 默认风速
+        unWorkDaytm: "26", // 默认温度
+        unWorkDaysensor: "1" // 人体感应
+      };
     },
     domClick(id) {
       if (this.activeList.indexOf(id) != -1) {
@@ -734,6 +866,10 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.drawer-bottom-button {
+  display: flex;
+  justify-content: flex-end;
+}
 .formItem {
   margin: 12px 0;
 }
@@ -782,4 +918,18 @@ export default {
     }
   }
 }
+/deep/ .ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {
+  display: none !important;
+}
+.subCalendar {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  flex-direction: column;
+  justify-content: space-around;
+  flex-wrap: nowrap;
+}
 </style>

+ 161 - 21
src/components/scene/energy/sceneEnergyAircondition/sceneWaterCard.vue

@@ -186,12 +186,12 @@
       </div>
     </div>
 
-    <a-drawer title="策略配置" :visible="showBatchCL" width="500" @close="handleOk">
-      <a-form-model :form="formData" :label-col="{ span: 6 }" :wrapperCol="{ span: 16 }" style="overflow-y: auto;">
+    <a-drawer title="批量执行" :visible="showBatchCL" width="500" @close="handleOk">
+      <a-form-model :form="formData" :label-col="{ span: 6 }" :wrapperCol="{ span: 16 }">
         <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 value="2">自定义策略</a-radio>
           </a-radio-group>
         </a-form-item>
 
@@ -208,48 +208,105 @@
         </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 default-value="0" style="width: 200px" :disabled="formData.resource == '1'" 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" />
+          <timeRange time-format="yyyy/MM/DD" :disabled="formData.resource == '1'" :time-range="formData.timeRange" />
         </a-form-item>
 
-        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '2'">工作日策略 -</div>
+        <div class="drawer-bottom-button" v-if="formData.method == '1'">
+          <a-button type="primary" @click="showCalendar = true">设置工作日</a-button>
+        </div>
+
+        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '1'">
+          <a-divider orientation="left">工作日策略</a-divider>
+        </div>
 
         <a-form-item label="开机策略:" class="formItem">
-          <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+          <a-select
+            default-value="0"
+            style="width: 200px"
+            :disabled="formData.resource == '1'"
+            v-model="formData.workDayopenCl"
+          >
             <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 label="开机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDayopenTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </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 label="关机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDaycloseTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </a-form-item>
 
-        <div v-if="formData.method == '2'">
-          <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px">非工作日策略 -</div>
+        <div v-if="formData.method == '1'">
+          <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px">
+            <a-divider orientation="left">非工作日策略</a-divider>
+          </div>
 
           <a-form-item label="开机策略:" class="formItem">
-            <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+            <a-select
+              default-value="0"
+              style="width: 200px"
+              v-model="formData.unWorkDayopenCl"
+              :disabled="formData.resource == '1'"
+            >
               <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 label="开机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.openTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
           </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 label="关机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.closeTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
           </a-form-item>
         </div>
       </a-form-model>
+      <div class="drawer-bottom-button">
+        <a-button @click="handleOk">取消</a-button><a-button type="primary" @click="handleOk">批量执行</a-button>
+      </div>
+    </a-drawer>
+    <a-drawer title="设置工作日" :visible="showCalendar" width="1000" @close="hideCalendar">
+      <!-- <a-alert message="系统默认周一至周五为工作日,可对任意日期进行设置。点击即可切换状态!" /> -->
+      <!-- 日历面板 -->
+      <a-calendar>
+        <div
+          slot="dateCellRender"
+          slot-scope="value"
+          class="events subCalendar"
+          :style="{ background: isWorkDay(value) ? '#FFFFFF' : '#badeff' }"
+          @click="changeWorkDay(value)"
+        >
+          <a-icon :type="isWorkDay(value) ? 'desktop' : 'coffee'" style="font-size: 30px;" />
+          <p>{{ isWorkDay(value) ? "工作日" : "非工作日" }}</p>
+        </div>
+        <!-- </a-popover> -->
+      </a-calendar>
+      <div class="drawer-bottom-button">
+        <a-button @click="hideCalendar">取消</a-button><a-button @click="hideCalendar" type="primary">确定</a-button>
+      </div>
     </a-drawer>
   </div>
 </template>
@@ -270,6 +327,8 @@ export default {
       currFloor: "1F",
       showCard: true,
       showBatchCL: false,
+      showCalendar: false, // 日历显示状态
+      unWorkDayList: [],
       queryData: {
         floorId: "0",
         switch: "0",
@@ -552,6 +611,53 @@ export default {
     this.oriFloors = JSON.parse(JSON.stringify(this.floors));
   },
   methods: {
+    getListData(value) {
+      let listData = [];
+      if (this.$moment().isSame(value, "day")) {
+        listData.push({ type: "error", content: "今日" });
+      }
+      switch (value.day()) {
+        case 0:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        case 6:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        default:
+          listData.push({ type: "success", content: "工作日" });
+      }
+      return listData || [];
+    },
+    isWorkDay(value) {
+      let isWorkDay_ = false;
+      switch (value.day()) {
+        case 0:
+          isWorkDay_ = false;
+          break;
+        case 6:
+          isWorkDay_ = false;
+          break;
+        default:
+          isWorkDay_ = true;
+      }
+
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        isWorkDay_ = !isWorkDay_;
+      }
+      return isWorkDay_;
+    },
+    changeWorkDay(value) {
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        this.unWorkDayList.splice(this.unWorkDayList.indexOf(momentStr), 1);
+      } else {
+        this.unWorkDayList.push(momentStr);
+      }
+    },
+    hideCalendar() {
+      this.showCalendar = false;
+    },
     clearSelectRow() {
       this.selectedRowKeys = [];
     },
@@ -564,7 +670,23 @@ export default {
     },
     handleCardClick() {
       this.showBatchCL = true;
-      this.formData = {};
+      this.formData = {
+        resource: "2", // 默认策略(已有策略)
+        clId: "0", // 已有策略默认下标
+        clName: "", // 策略名称
+        method: "1", // 默认执行方式(按工作日和非工作日)
+        // timeRange: "", // 默认执行时间
+        workDayopenCl: "1", // 默认开机策略
+        workDaymode: "1", // 默认模式
+        workDaywind: "0", // 默认风速
+        workDaytm: "26", // 默认温度
+        workDaysensor: "1", // 人体感应
+        unWorkDayopenCl: "1", // 默认开机策略
+        unWorkDaymode: "1", // 默认模式
+        unWorkDaywind: "0", // 默认风速
+        unWorkDaytm: "26", // 默认温度
+        unWorkDaysensor: "1" // 人体感应
+      };
     },
     domClick(id) {
       if (this.selectedRowKeys.indexOf(id) != -1) {
@@ -657,6 +779,10 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.drawer-bottom-button {
+  display: flex;
+  justify-content: flex-end;
+}
 .formItem {
   margin: 12px 0;
 }
@@ -705,4 +831,18 @@ export default {
     }
   }
 }
+/deep/ .ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {
+  display: none !important;
+}
+.subCalendar {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  flex-direction: column;
+  justify-content: space-around;
+  flex-wrap: nowrap;
+}
 </style>

+ 227 - 49
src/components/scene/energy/sceneEnergyAircondition/scenelightCard.vue

@@ -180,12 +180,12 @@
       </div>
     </div>
 
-    <a-drawer title="策略配置" :visible="showBatchCL" width="500" @close="handleOk">
-      <a-form-model :form="formData" :label-col="{ span: 6 }" :wrapperCol="{ span: 16 }" style="overflow-y: auto;">
+    <a-drawer title="批量执行" :visible="showBatchCL" width="500" @close="handleOk">
+      <a-form-model :form="formData" :label-col="{ span: 6 }" :wrapperCol="{ span: 16 }">
         <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 value="2">自定义策略</a-radio>
           </a-radio-group>
         </a-form-item>
 
@@ -202,94 +202,189 @@
         </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 default-value="0" style="width: 200px" :disabled="formData.resource == '1'" 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" />
+          <timeRange time-format="yyyy/MM/DD" :disabled="formData.resource == '1'" :time-range="formData.timeRange" />
         </a-form-item>
 
-        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '2'">工作日策略 -</div>
+        <div class="drawer-bottom-button" v-if="formData.method == '1'">
+          <a-button type="primary" @click="showCalendar = true">设置工作日</a-button>
+        </div>
+
+        <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px" v-if="formData.method == '1'">
+          <a-divider orientation="left">工作日策略</a-divider>
+        </div>
 
         <a-form-item label="开机策略:" class="formItem">
-          <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+          <a-select
+            default-value="0"
+            style="width: 200px"
+            :disabled="formData.resource == '1'"
+            v-model="formData.workDayopenCl"
+          >
             <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 label="开机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDayopenTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </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 label="关机时间:" class="formItem" v-show="formData.workDayopenCl == '0'">
+          <a-time-picker
+            use24-hours
+            v-model="formData.workDaycloseTime"
+            :disabled="!(formData.workDayopenCl == '0') || formData.resource == '1'"
+          />
         </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-form-item label="灯光亮度:" class="formItem">
+          <a-select style="width: 200px" v-model="formData.workDaymode" :disabled="formData.resource == '1'">
+            <a-select-option value="1"> 25% </a-select-option>
+            <a-select-option value="2"> 50% </a-select-option>
+            <a-select-option value="3"> 75% </a-select-option>
+            <a-select-option value="4"> 100% </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-form-item label="灯光色温:" class="formItem">
+          <a-select style="width: 200px" v-model="formData.workDaywind" :disabled="formData.resource == '1'">
+            <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-form-item label="灯光颜色:" class="formItem">
+          <a-select style="width: 200px" v-model="formData.workDaytm" :disabled="formData.resource == '1'">
+            <a-select-option value="18"> 红 </a-select-option>
+            <a-select-option value="19"> 黄 </a-select-option>
+            <a-select-option value="20"> 蓝 </a-select-option>
+            <a-select-option value="21"> 绿 </a-select-option>
+            <a-select-option value="22"> 青 </a-select-option>
+            <a-select-option value="23"> 橙 </a-select-option>
+            <a-select-option value="24"> 紫 </a-select-option>
+            <a-select-option value="25"> 白 </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
+            default-value="0"
+            style="width: 200px"
+            v-model="formData.workDaysensor"
+            :disabled="formData.resource == '1'"
+          >
+            <a-select-option value="0"> 无人 </a-select-option>
+            <a-select-option value="1"> 有人 </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>
+        <div v-if="formData.method == '1'">
+          <div style="margin-left: 8%;font-weight: bold;margin-bottom: 15px">
+            <a-divider orientation="left">非工作日策略</a-divider>
+          </div>
 
           <a-form-item label="开机策略:" class="formItem">
-            <a-select default-value="0" style="width: 200px" v-model="formData.openCl">
+            <a-select
+              default-value="0"
+              style="width: 200px"
+              v-model="formData.unWorkDayopenCl"
+              :disabled="formData.resource == '1'"
+            >
               <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 label="开机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.openTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
+          </a-form-item>
+          <a-form-item label="关机时间:" class="formItem" v-show="formData.unWorkDayopenCl == '0'">
+            <a-time-picker
+              use24-hours
+              v-model="formData.closeTime"
+              :disabled="!(formData.unWorkDayopenCl == '0') || formData.resource == '1'"
+            />
+          </a-form-item>
+          <a-form-item label="灯光亮度:" class="formItem">
+            <a-select style="width: 200px" v-model="formData.unWorkDaymode" :disabled="formData.resource == '1'">
+              <a-select-option value="1"> 25% </a-select-option>
+              <a-select-option value="2"> 50% </a-select-option>
+              <a-select-option value="3"> 75% </a-select-option>
+              <a-select-option value="4"> 100% </a-select-option>
+            </a-select>
           </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 label="灯光色温:" class="formItem">
+            <a-select style="width: 200px" v-model="formData.unWorkDaywind" :disabled="formData.resource == '1'">
+              <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-slider id="test" v-model="formData.brightness" /> </a-form-item>
 
-          <a-form-item label="灯光色温:" class="formItem"> <a-slider id="test" v-model="formData.color" /> </a-form-item>
+          <a-form-item label="灯光颜色:" class="formItem">
+            <a-select style="width: 200px" v-model="formData.unWorkDaytm" :disabled="formData.resource == '1'">
+              <a-select-option value="18"> 红 </a-select-option>
+              <a-select-option value="19"> 黄 </a-select-option>
+              <a-select-option value="20"> 蓝 </a-select-option>
+              <a-select-option value="21"> 绿 </a-select-option>
+              <a-select-option value="22"> 青 </a-select-option>
+              <a-select-option value="23"> 橙 </a-select-option>
+              <a-select-option value="24"> 紫 </a-select-option>
+              <a-select-option value="25"> 白 </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
+              default-value="0"
+              style="width: 200px"
+              v-model="formData.unWorkDaysensor"
+              :disabled="formData.resource == '1'"
+            >
+              <a-select-option value="0"> 无人 </a-select-option>
+              <a-select-option value="1"> 有人 </a-select-option>
             </a-select>
           </a-form-item>
         </div>
       </a-form-model>
+      <div class="drawer-bottom-button">
+        <a-button @click="handleOk">取消</a-button><a-button type="primary" @click="handleOk">批量执行</a-button>
+      </div>
+    </a-drawer>
+    <a-drawer title="设置工作日" :visible="showCalendar" width="1000" @close="hideCalendar">
+      <!-- <a-alert message="系统默认周一至周五为工作日,可对任意日期进行设置。点击即可切换状态!" /> -->
+      <!-- 日历面板 -->
+      <a-calendar>
+        <div
+          slot="dateCellRender"
+          slot-scope="value"
+          class="events subCalendar"
+          :style="{ background: isWorkDay(value) ? '#FFFFFF' : '#badeff' }"
+          @click="changeWorkDay(value)"
+        >
+          <a-icon :type="isWorkDay(value) ? 'desktop' : 'coffee'" style="font-size: 30px;" />
+          <p>{{ isWorkDay(value) ? "工作日" : "非工作日" }}</p>
+        </div>
+        <!-- </a-popover> -->
+      </a-calendar>
+      <div class="drawer-bottom-button">
+        <a-button @click="hideCalendar">取消</a-button><a-button @click="hideCalendar" type="primary">确定</a-button>
+      </div>
     </a-drawer>
   </div>
 </template>
@@ -307,6 +402,8 @@ export default {
   data() {
     return {
       formData: {},
+      showCalendar: false, // 日历显示状态
+      unWorkDayList: [],
       currFloor: "1F",
       showCard: true,
       showBatchCL: false,
@@ -532,6 +629,53 @@ export default {
     this.oriFloors = JSON.parse(JSON.stringify(this.floors));
   },
   methods: {
+    getListData(value) {
+      let listData = [];
+      if (this.$moment().isSame(value, "day")) {
+        listData.push({ type: "error", content: "今日" });
+      }
+      switch (value.day()) {
+        case 0:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        case 6:
+          listData.push({ type: "warning", content: "非工作日" });
+          break;
+        default:
+          listData.push({ type: "success", content: "工作日" });
+      }
+      return listData || [];
+    },
+    isWorkDay(value) {
+      let isWorkDay_ = false;
+      switch (value.day()) {
+        case 0:
+          isWorkDay_ = false;
+          break;
+        case 6:
+          isWorkDay_ = false;
+          break;
+        default:
+          isWorkDay_ = true;
+      }
+
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        isWorkDay_ = !isWorkDay_;
+      }
+      return isWorkDay_;
+    },
+    changeWorkDay(value) {
+      let momentStr = this.$moment(value).format("YYYY/MM/DD");
+      if (this.unWorkDayList.indexOf(momentStr) != -1) {
+        this.unWorkDayList.splice(this.unWorkDayList.indexOf(momentStr), 1);
+      } else {
+        this.unWorkDayList.push(momentStr);
+      }
+    },
+    hideCalendar() {
+      this.showCalendar = false;
+    },
     clearSelectRow() {
       this.selectedRowKeys = [];
     },
@@ -544,7 +688,23 @@ export default {
     },
     handleCardClick() {
       this.showBatchCL = true;
-      this.formData = {};
+      this.formData = {
+        resource: "2", // 默认策略(已有策略)
+        clId: "0", // 已有策略默认下标
+        clName: "", // 策略名称
+        method: "1", // 默认执行方式(按工作日和非工作日)
+        // timeRange: "", // 默认执行时间
+        workDayopenCl: "1", // 默认开机策略
+        workDaymode: "1", // 默认模式
+        workDaywind: "0", // 默认风速
+        workDaytm: "25", // 默认温度
+        workDaysensor: "1", // 人体感应
+        unWorkDayopenCl: "1", // 默认开机策略
+        unWorkDaymode: "1", // 默认模式
+        unWorkDaywind: "0", // 默认风速
+        unWorkDaytm: "25", // 默认温度
+        unWorkDaysensor: "1" // 人体感应
+      };
     },
 
     domClick(id) {
@@ -638,6 +798,10 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.drawer-bottom-button {
+  display: flex;
+  justify-content: flex-end;
+}
 .formItem {
   margin: 12px 0;
 }
@@ -686,4 +850,18 @@ export default {
     }
   }
 }
+/deep/ .ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {
+  display: none !important;
+}
+.subCalendar {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  flex-direction: column;
+  justify-content: space-around;
+  flex-wrap: nowrap;
+}
 </style>