From 02ce22be65df8b717d5f1614e5d7dbfcdf1ce1b9 Mon Sep 17 00:00:00 2001
From: Oliver <1070107765@qq.com>
Date: 星期三, 14 十二月 2022 09:29:51 +0800
Subject: [PATCH] 预警研判 操作

---
 src/views/systemSetting/device/bayonet/create/index.vue |  406 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 287 insertions(+), 119 deletions(-)

diff --git a/src/views/systemSetting/device/bayonet/create/index.vue b/src/views/systemSetting/device/bayonet/create/index.vue
index a97553f..170d4f3 100644
--- a/src/views/systemSetting/device/bayonet/create/index.vue
+++ b/src/views/systemSetting/device/bayonet/create/index.vue
@@ -1,137 +1,305 @@
 <template>
-    <div class="create">
-        <el-form ref="device" label-position="right" label-width="120px" :model="bayonet" :rule="rules">
-            <!-- 鍗″彛鍚嶇О -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鍗″彛鍚嶇О:" prop="name">
-                        <el-input v-model="bayonet.name" placeholder="璇峰~鍐欏崱鍙e悕绉�"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 缁忕含搴︿綅缃� -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="缁忕含搴︿綅缃�:" prop="longitude">
-                        <el-input v-model="bayonet.longitude" placeholder="璇峰~鍐欑粡搴︿綅缃�"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="latitude">
-                        <el-input v-model="bayonet.latitude" placeholder="璇峰~鍐欑含搴︿綅缃�"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鎵�灞炲尯鍩� -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鎵�灞炲尯鍩�:" prop="area">
-                        <el-input v-model="bayonet.area" placeholder="璇峰~鍐欏尯鍩熷悕绉�"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鍩熷悕/ip -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鍩熷悕/IP:" prop="domainName">
-                        <el-input v-model="bayonet.domainName" placeholder="璇峰~鍐欏煙鍚嶆垨鑰匢P"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 绔彛鍙� -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="绔彛鍙�:" prop="port">
-                        <el-input v-model="bayonet.port" placeholder="璇疯緭鍏ョ鍙e彿"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鍓嶇绫诲瀷 -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鍓嶇绫诲瀷:" prop="webType">
-                        <el-input v-model="bayonet.webType" placeholder="璇疯緭鍏ュ墠绔被鍨�"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鍑哄叆鍩庣被鍨� -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鍑哄叆鍩庣被鍨�:" prop="cityType">
-                        <el-input v-model="bayonet.cityType" placeholder="鍑哄煄/鍏ュ煄"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鎻忚堪 -->
-            <div class="device-item">
-                <div class="item-left">
-                    <el-form-item label="鎻忚堪:" prop="description">
-                        <el-input type="textarea" :rows='5' maxlength="200" v-model="bayonet.description" placeholder="璇疯緭鍏ユ弿杩板唴瀹�200瀛椾互鍐�"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="item-right"></div>
-            </div>
-            <!-- 鎸夐挳 -->
-            <div class="device-btn">
-                <el-button>杩斿洖</el-button>
-                <el-button type="primary">纭畾</el-button>
-            </div>
-        </el-form>
-    </div>
+  <div class="create">
+    <el-form
+      ref="device"
+      label-position="right"
+      label-width="120px"
+      :model="bayonet"
+      :rules="rules"
+    >
+      <!-- 鍗″彛鍚嶇О -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="鍗″彛鍚嶇О:" prop="name">
+            <el-input
+              v-model="bayonet.name"
+              placeholder="璇峰~鍐欏崱鍙e悕绉�"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 缁忕含搴︿綅缃� -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="缁忕含搴︿綅缃�:" prop="longitude">
+            <el-input
+              v-model="bayonet.longitude"
+              placeholder="璇峰~鍐欑粡搴︿綅缃�"
+            ></el-input>
+          </el-form-item>
+          <el-form-item prop="latitude">
+            <el-input
+              v-model="bayonet.latitude"
+              placeholder="璇峰~鍐欑含搴︿綅缃�"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鎵�灞炲尯鍩� -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="鎵�灞炲尯鍩�:" prop="belongArea">
+            <el-input
+              v-model="bayonet.belongArea"
+              placeholder="璇峰~鍐欏尯鍩熷悕绉�"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鍩熷悕/ip -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="鍩熷悕/IP:" prop="ipAddress">
+            <el-input
+              v-model="bayonet.ipAddress"
+              placeholder="璇峰~鍐欏煙鍚嶆垨鑰匢P"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 绔彛鍙� -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="绔彛鍙�:" prop="port">
+            <el-input
+              v-model="bayonet.port"
+              placeholder="璇疯緭鍏ョ鍙e彿"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鍓嶇绫诲瀷 -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item class="optionItem" label="鍓嶇绫诲瀷:" prop="role">
+            <el-select
+              v-model="bayonet.frontEndType"
+              placeholder="璇疯緭鍏ュ墠绔被鍨�"
+              collapse-tags
+            >
+              <el-option
+                v-for="item in frontEndTypeList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鍑哄叆鍩庣被鍨� -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item class="optionItem" label="鍑哄叆鍩庣被鍨�:" prop="role">
+            <el-select
+              v-model="bayonet.inOutCityType"
+              placeholder="璇疯緭鍏ュ嚭鍏ュ煄绫诲瀷"
+              collapse-tags
+            >
+              <el-option
+                v-for="item in inOutTypeList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鎻忚堪 -->
+      <div class="device-item">
+        <div class="item-left">
+          <el-form-item label="鎻忚堪:" prop="description">
+            <el-input
+              type="textarea"
+              :rows="5"
+              maxlength="200"
+              v-model="bayonet.description"
+              placeholder="璇疯緭鍏ユ弿杩板唴瀹�200瀛椾互鍐�"
+            ></el-input>
+          </el-form-item>
+        </div>
+        <div class="item-right"></div>
+      </div>
+      <!-- 鎸夐挳 -->
+      <div class="device-btn">
+        <el-button @click="closeDialog">杩斿洖</el-button>
+        <el-button type="primary" @click="onSubmit">纭畾</el-button>
+      </div>
+    </el-form>
+  </div>
 </template>
 <script>
-export default {
-    data() {
-        return {
-            bayonet: {
-                bayonetName: '',
-                latitude: '',
-                longitude: '',
-                area: '',
-                ipAddress: '',
-                port: '',
-                frontEndType: '',
-                inOutCityType: '',
-                description: '',
-            },
-            rules: {
+import bayonet from "@/api/system/bayonet";
+import { deepClone, getTypeList } from "@/utils/helper";
 
-            }
+export default {
+  props: {
+    originalBayonet: {
+      type: Object,
+      default: () => {},
+    },
+    isEdit: {
+      type: Boolean,
+      default: () => false,
+    },
+  },
+
+  data() {
+    return {
+      bayonet: {
+        name: "",
+        latitude: "",
+        longitude: "",
+        belongArea: "",
+        ipAddress: "",
+        port: "",
+        frontEndType: "",
+        inOutCityType: "",
+        description: "",
+      },
+      rules: {
+        name: [{ required: true, trigger: "blur", message: "璇峰~鍐欏崱鍙e悕绉�" }],
+        latitude: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇峰~鍐欑含搴︿綅缃�",
+          },
+        ],
+        longitude: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇峰~鍐欑粡搴︿綅缃�",
+          },
+        ],
+        belongArea: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇峰~鍐欏尯鍩熷悕绉�",
+          },
+        ],
+        ipAddress: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇峰~鍐欏煙鍚嶆垨鑰匢P",
+          },
+        ],
+        port: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇疯緭鍏ョ鍙e彿",
+          },
+        ],
+        frontEndType: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇疯緭鍏ュ墠绔被鍨�",
+          },
+        ],
+        inOutCityType: [
+          {
+            required: true,
+            trigger: ["blur", "change"],
+            message: "璇峰~鍐欏嚭鍩�/鍏ュ煄",
+          },
+        ],
+      },
+      frontEndTypeList: [],
+      inOutTypeList: [],
+    };
+  },
+  beforeCreate() {},
+  created() {
+    this.getInOutCityTypeList();
+    this.getFrontEndTypeList();
+    if (this.originalBayonet) {
+      this.bayonet = this.originalBayonet;
+    }
+  },
+  methods: {
+    onSubmit() {
+      this.$refs.device.validate((valid) => {
+        if (valid) {
+          const copyBayonet = deepClone(this.bayonet);
+          if (!this.isEdit) {
+            bayonet
+              .addBayonet(this.bayonet)
+              .then(() => {
+                this.$message({ type: "success", message: "鎿嶄綔鎴愬姛" });
+                this.$emit("closeDialog");
+              })
+              .catch((err) => {
+                this.$message({ type: "error", message: err });
+              });
+          } else {
+            bayonet
+              .updateBayonet(copyBayonet)
+              .then(() => {
+                this.$message({ type: "success", message: "鎿嶄綔鎴愬姛" });
+                this.$emit("closeDialog");
+              })
+              .catch((err) => {
+                this.$message({ type: "error", message: err });
+              });
+          }
+        } else {
+          this.$message({ type: "warning", message: "璇锋鏌ュ繀濉」" });
         }
+      });
+    },
+    async getInOutCityTypeList() {
+      this.inOutTypeList = await getTypeList(1, "14");
     },
 
-}
+    async getFrontEndTypeList() {
+      this.frontEndTypeList = await getTypeList(1, "13");
+    },
+    closeDialog() {
+      this.$emit("closeDialog");
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .create {
-    padding: 20px;
+  padding: 20px;
 
-    .device-item {
-        display: flex;
+  .device-item {
+    display: flex;
 
-        .item-left {
-            flex: 6;
-            display: flex;
+    .item-left {
+      flex: 6;
+      display: flex;
 
-            .el-form-item {
-                flex: 1;
-            }
-        }
-
-        .item-right {
-            flex: 4;
-        }
+      .el-form-item {
+        flex: 1;
+      }
     }
 
-    .device-btn {
-        padding-top: 20px;
-        display: flex;
-        justify-content: center;
+    .item-right {
+      flex: 4;
     }
+  }
+
+  .device-btn {
+    padding-top: 20px;
+    display: flex;
+    justify-content: center;
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0