Jelajahi Sumber

feat: 新增时间只能配置一条数据,增加一个一键配置

hum 1 tahun lalu
induk
melakukan
383c7db39a

+ 69 - 1
ruoyi-ui/src/views/site/plain-time/add.vue

@@ -36,7 +36,10 @@
     </div>
     <div class="hum-page-title" style="margin-top: 30px">
       <span>时间点</span>
-      <el-button type="primary" @click="addTime">新增</el-button>
+      <span>
+        <el-button type="primary" @click="addTime">添加时间点</el-button>
+        <el-button type="primary" @click="showQuickSetTime">一键配置</el-button>
+      </span>
     </div>
     <div class="hum-page-section">
       <el-table v-loading="loading" :data="times" border>
@@ -62,6 +65,36 @@
       <el-button @click="$router.back()">取消</el-button>
       <el-button type="primary" @click="submitForm" :loading="loading">保存</el-button>
     </div>
+
+    <el-dialog title="一键配置" width="390px" :visible.sync="isShowQuickSetDialog">
+      <el-form :model="quick" label-position="top">
+        <el-form-item label="时间范围" label-width="100px">
+          <el-time-picker
+            is-range
+            arrow-control
+            :clearable="false"
+            :picker-options="{ format: 'HH:mm' }"
+            v-model="quick.range"
+            range-separator="至"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+            placeholder="选择时间范围">
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="时间间隔" label-width="100px">
+          <el-select v-model="quick.step" placeholder="请选择时间间隔">
+            <el-option label="半小时" :value="0.5"/>
+            <el-option label="一小时" :value="1"/>
+            <el-option label="两小时" :value="2"/>
+            <el-option label="三小时" :value="3"/>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="isShowQuickSetDialog = false">取 消</el-button>
+        <el-button type="primary" @click="quickSet">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -69,6 +102,21 @@
 import { getSite, getConfig } from '@/api/site/site'
 import { savePlainTime, getSiteSection, getPlainTime, listPlainPoint } from '@/api/site/berthing'
 import SectionChart from './chart';
+import {parseTime} from "@/utils/ruoyi";
+
+function getInitialTimeRange() {
+  const start = new Date();
+  start.setHours(8);
+  start.setMinutes(0);
+  start.setSeconds(0);
+
+  const end = new Date();
+  end.setHours(19);
+  end.setMinutes(0);
+  end.setSeconds(0);
+
+  return [start, end];
+}
 
 export default {
   components: {
@@ -88,6 +136,11 @@ export default {
         wlevelmin: '',
         wlevel: '',
       },
+      isShowQuickSetDialog: false,
+      quick: {
+        range: getInitialTimeRange(),
+        step: 1,
+      },
       form: {
         timeId: '',
         id: '',
@@ -161,6 +214,21 @@ export default {
     addTime() {
       this.times = [...this.times, { time: '' }];
     },
+    showQuickSetTime() {
+      this.isShowQuickSetDialog = true;
+    },
+    quickSet() {
+      const { range, step } = this.quick;
+      const [start, end] = range;
+      const stepTime = step * 60 * 60 * 1000;
+      const times = []
+      for (let i = start.getTime(); i < end.getTime(); i+=stepTime) {
+        times.push({ time: this.parseTime(new Date(i), '{h}:{i}') });
+      }
+      times.push({ time: this.parseTime(end, '{h}:{i}') });
+      this.times = times;
+      this.isShowQuickSetDialog = false;
+    },
     deleteTime(index) {
       this.times.splice(index, 1);
     },

+ 5 - 1
ruoyi-ui/src/views/site/plain-time/index.vue

@@ -118,7 +118,11 @@ export default {
       this.loadSection();
     },
     handleAdd() {
-      this.$router.push(`/site/plain/time/add?siteId=${this.siteId}`);
+      if (this.list.length > 0) {
+        this.$message.warning('只能设置一条时间点策略');
+      } else {
+        this.$router.push(`/site/plain/time/add?siteId=${this.siteId}`);
+      }
     },
     handleUpdate(plain) {
       this.$router.push(`/site/plain/time/edit/${plain.timeId}`);