From 28c12d92c6844cdb5a8aa5079ce601674ea21a5f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 05 三月 2024 18:41:41 +0800
Subject: [PATCH] 运维点位添加

---
 src/views/system/point/index.vue |  192 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 150 insertions(+), 42 deletions(-)

diff --git a/src/views/system/point/index.vue b/src/views/system/point/index.vue
index a0aa54e..8f50e49 100644
--- a/src/views/system/point/index.vue
+++ b/src/views/system/point/index.vue
@@ -122,30 +122,71 @@
     />
 
     <!-- 娣诲姞鎴栦慨鏀硅繍缁寸偣浣嶅璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+      <el-form ref="form" :model="tempForm" :rules="rules" label-width="120px">
         <el-form-item label="鐐逛綅鍚嶇О" prop="pointName">
-          <el-input v-model="form.pointName" placeholder="璇疯緭鍏ョ偣浣嶅悕绉�" />
+          <el-input v-model="tempForm.pointName" placeholder="璇疯緭鍏ョ偣浣嶅悕绉�" />
         </el-form-item>
-        <el-form-item label="鐐逛綅寮�濮嬫椂闂�" prop="startTime">
-          <el-date-picker clearable
-            v-model="form.startTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="璇烽�夋嫨鐐逛綅寮�濮嬫椂闂�">
+        <el-form-item label="杩愮淮鍗曚綅" prop="unitId">
+          <el-select v-model="tempForm.unitId"  placeholder="杩愮淮鍗曚綅">
+            <el-option
+              v-for="item in unitList"
+              :key="item.id"
+              :label="item.value"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鐐逛綅鏃跺尯" prop="timezone">
+          <el-date-picker
+            @change="dateChange"
+            v-model="tempForm.timezone"
+            type="daterange"
+            align="right"
+            unlink-panels
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          >
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="鐐逛綅缁撴潫鏃堕棿" prop="endTime">
-          <el-date-picker clearable
-            v-model="form.endTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="璇烽�夋嫨鐐逛綅缁撴潫鏃堕棿">
-          </el-date-picker>
+        <el-form-item>
+          <div style="display: flex;flex-direction: row-reverse">
+            <el-button @click="nextAdd" type="primary" plain>缁х画娣诲姞</el-button>
+          </div>
         </el-form-item>
-        <el-form-item label="澶囨敞" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
-        </el-form-item>
+          <div class="point-row" v-for="(point,index) in tempFormList">
+            <div class="row-item">
+              <el-input :disabled="editingIndex!==index" v-model="point.pointName" placeholder="鐐逛綅鍚嶇О"></el-input>
+            </div>
+            <div class="row-item">
+              <el-select :disabled="editingIndex!==index" v-model="point.unitId"  placeholder="杩愮淮鍗曚綅">
+                <el-option
+                  v-for="item in unitList"
+                  :key="item.id"
+                  :label="item.value"
+                  :value="item.id">
+                </el-option>
+              </el-select>
+            </div>
+            <div class="row-item">
+              <el-date-picker
+                :disabled="editingIndex!==index"
+                v-model="point.timezone"
+                type="daterange"
+                align="right"
+                unlink-panels
+                range-separator="鑷�"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              >
+              </el-date-picker>
+            </div>
+            <div  class="row-item">
+              <el-button v-show="editingIndex!==index" @click="editPointItem(index)" type="danger" size="small" plain>淇敼</el-button>
+              <el-button v-show="editingIndex===index" @click="editFinishItem(index)" type="success" size="small" plain>瀹屾垚</el-button>
+            </div>
+          </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -156,12 +197,15 @@
 </template>
 
 <script>
-import { listPoint, getPoint, delPoint, addPoint, updatePoint } from "@/api/platform/point";
+import { listPoint, getPoint, delPoint, addPoint, addPointBatch, updatePoint } from "@/api/platform/point";
+import { unitSelect } from "@/api/platform/unit";
 
 export default {
   name: "Point",
   data() {
     return {
+      // 姝e湪淇敼绗嚑涓�
+      editingIndex: null,
       // 閬僵灞�
       loading: true,
       // 閫変腑鏁扮粍
@@ -180,6 +224,10 @@
       title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
+      // 杩愮淮鍗曚綅
+      unitList: [],
+      // 杩愮淮鏃跺尯
+      timezone:[],
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
@@ -192,16 +240,19 @@
       },
       // 琛ㄥ崟鍙傛暟
       form: {},
+      // 鎵归噺琛ㄥ崟鍐呭
+      formList:[],
+      // 涓存椂琛ㄥ崟鏁版嵁
+      tempForm: {},
+      // 涓存椂琛ㄥ崟鏁版嵁鍒楄〃
+      tempFormList: [],
       // 琛ㄥ崟鏍¢獙
       rules: {
         pointName: [
           { required: true, message: "鐐逛綅鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
         ],
-        startTime: [
-          { required: true, message: "鐐逛綅寮�濮嬫椂闂翠笉鑳戒负绌�", trigger: "blur" }
-        ],
-        endTime: [
-          { required: true, message: "鐐逛綅缁撴潫鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
+        timezone: [
+          { required: true, message: "鐐逛綅鏃跺尯涓嶈兘涓虹┖", trigger: "blur" }
         ],
         unitId: [
           { required: true, message: "杩愮淮鍗曚綅涓嶈兘涓虹┖", trigger: "change" }
@@ -211,13 +262,48 @@
   },
   created() {
     this.getList();
+    this.getUnitSelect();
   },
   methods: {
+    // 鐐逛綅椤逛慨鏀瑰畬鎴�
+    editFinishItem(index) {
+      this.editingIndex = null;
+      let form = this.tempFormList[index];
+      form.startTime = form.timezone[0];
+      form.endTime = form.timezone[1];
+      this.formList[index] = form;
+    },
+    // 鐐逛綅椤逛慨鏀�
+    editPointItem(index) {
+      if (this.editingIndex !== index && this.editingIndex !== null) {
+        this.$modal.msgWarning("璇峰厛瀹屾垚涓婁竴涓慨鏀�");
+      } else {
+        this.editingIndex = index;
+        this.tempFormList[index] = this.formList[index];
+      }
+    },
+    // 鏃堕棿閫夋嫨鍙戠敓鍙樺寲
+    dateChange() {
+      this.tempForm.startTime = this.tempForm.timezone[0];
+      this.tempForm.endTime = this.tempForm.timezone[1];
+    },
+    // 缁х画娣诲姞鐐逛綅
+    nextAdd() {
+      this.formList.push(this.tempForm);
+      this.tempFormList.push(this.tempForm);
+      this.tempForm = {};
+    },
+    getUnitSelect() {
+      // 杩愮淮鍗曚綅涓嬫媺鍒楄〃
+      unitSelect().then((res) => {
+        this.unitList = res.data;
+      })
+    },
     /** 鏌ヨ杩愮淮鐐逛綅鍒楄〃 */
     getList() {
       this.loading = true;
       listPoint(this.queryParams).then(response => {
-        this.pointList = response.rows;
+        this.pointList = response.data;
         this.total = response.total;
         this.loading = false;
       });
@@ -277,23 +363,30 @@
     },
     /** 鎻愪氦鎸夐挳 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updatePoint(this.form).then(response => {
-              this.$modal.msgSuccess("淇敼鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addPoint(this.form).then(response => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          }
+      if (this.formList.length > 0) {
+        // 鎵归噺澧炲姞
+        if (this.formList.every(item => !item.hasOwnProperty("id"))) {
+          addPointBatch(this.formList).then(response => {
+            this.$modal.msgSuccess("鏂板鎴愬姛");
+            this.open = false;
+            this.getList();
+          });
         }
-      });
+      }else {
+        if (this.form.id != null) {
+          updatePoint(this.form).then(response => {
+            this.$modal.msgSuccess("淇敼鎴愬姛");
+            this.open = false;
+            this.getList();
+          });
+        } else {
+          addPoint(this.form).then(response => {
+            this.$modal.msgSuccess("鏂板鎴愬姛");
+            this.open = false;
+            this.getList();
+          });
+        }
+      }
     },
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
@@ -314,3 +407,18 @@
   }
 };
 </script>
+
+<style scoped>
+.point-row {
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  align-items: center;
+}
+.row-item {
+  margin-right: 5px;
+}
+.row-item:nth-last-child {
+  margin-right: 0;
+}
+</style>

--
Gitblit v1.8.0