From e018e23189eb9520f6f28ae515b17333351267ff Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 06 八月 2022 05:30:21 +0800
Subject: [PATCH] 完善推送管理功能

---
 src/views/report/components/FormArea.vue |  301 +++++++++++++++++++++++--------------------------
 1 files changed, 141 insertions(+), 160 deletions(-)

diff --git a/src/views/report/components/FormArea.vue b/src/views/report/components/FormArea.vue
index 7957dda..b49a304 100644
--- a/src/views/report/components/FormArea.vue
+++ b/src/views/report/components/FormArea.vue
@@ -1,15 +1,8 @@
 <template>
   <div class="FormArea">
-    <el-form
-      :model="gb28181"
-      :rules="rules"
-      label-position="left"
-      label-width="90px"
-      class="alarmSetting"
-      ref="gb28181"
-    >
+    <el-form :model="reportTask" label-position="left" label-width="90px" class="alarmSetting" ref="report-task">
       <el-form-item class="selectItem" label="浜嬩欢鍚嶇О">
-        <el-select class="h32" v-model="locationCity.province" size="small" placeholder="璇烽�夋嫨浜嬩欢">
+        <el-select class="h32" v-model="reportTask.taskName" size="small" placeholder="璇烽�夋嫨浜嬩欢" style="width: 400px">
           <el-option
             v-for="item in eventsOptions"
             :key="item.value"
@@ -20,13 +13,7 @@
         </el-select>
       </el-form-item>
       <el-form-item class="selectItem" label="浜嬩欢绛夌骇">
-        <el-select
-          class="h32"
-          v-model="locationCity.level"
-          size="small"
-          placeholder="璇烽�夋嫨"
-          :disabled="gb28181.idType === 0"
-        >
+        <el-select class="h32" v-model="reportTask.level" size="small" placeholder="璇烽�夋嫨" style="width: 400px">
           <el-option
             v-for="item in levelOptions"
             :key="item.value"
@@ -38,184 +25,178 @@
       </el-form-item>
 
       <el-form-item label="鍏宠仈鍖哄煙">
+        <el-cascader
+          size="mini"
+          style="width:400px"
+          v-model="tmpOrg"
+          :options="menu"
+          :props="{ value: 'id', label: 'name', checkStrictly: true }"
+          collapse-tags
+          clearable
+          @change="handleTreeChange"
+          ref="cascader"
+        ></el-cascader>
+      </el-form-item>
+
+      <el-form-item label="璐d换浜�" prop="person">
         <el-input
           class="h32"
-          v-model="gb28181.PublicId"
+          v-model="reportTask.person"
           placeholder="璇疯緭鍏�"
           size="small"
-          :disabled="gb28181.idType === 1"
+          style="width: 400px"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙�" prop="tel">
+        <el-input
+          class="h32"
+          v-model="reportTask.tel"
+          placeholder="璇疯緭鍏�"
+          size="small"
+          style="width: 400px"
         ></el-input>
       </el-form-item>
 
-      <el-form-item label="璐d换浜�" prop="GbServerPort">
-        <el-input
-          class="h32"
-          v-model.number="gb28181.GbServerPort"
-          placeholder="璇疯緭鍏�"
-          size="small"
-          style="width: 200px"
-        ></el-input>
-      </el-form-item>
-      <el-form-item label="鎵嬫満鍙�" prop="GbServerPort">
-        <el-input
-          class="h32"
-          v-model.number="gb28181.GbServerPort"
-          placeholder="璇疯緭鍏�"
-          size="small"
-          style="width: 200px"
-        ></el-input>
-      </el-form-item>
-
-      <el-form-item label="鎺ㄩ�佹柟寮�">
-        <el-input
-          class="h32"
-          v-model="gb28181.Password"
-          placeholder="璇疯緭鍏�"
-          size="small"
-          :disabled="!gb28181.IsAuth"
-        ></el-input>
+      <!-- <el-form-item label="鎺ㄩ�佹柟寮�">
+        <el-select v-model="pushType" placeholder="璇烽�夋嫨" style="width: 400px">
+          <el-option label="鐭俊" value="msg"> </el-option>
+        </el-select>
+      </el-form-item> -->
+      <el-form-item label="寮�鍚换鍔�">
+        <el-switch v-model="reportTask.enable" active-color="#13ce66" inactive-color="#bbbbbb"> </el-switch>
       </el-form-item>
     </el-form>
 
     <div class="btnArea">
       <div class="button cancel" @click="$emit('close')">鍙栨秷</div>
-      <div class="button submit" @click="submitGB28281">淇濆瓨</div>
+      <div class="button submit" @click="submit">淇濆瓨</div>
     </div>
   </div>
 </template>
 
 <script>
-import { getGB28181Config, saveGB28181Config, getGb28181AreaList, newGb28181ID } from "@/api/Gb28181"
-import { isPort, isIPv4 } from "@/scripts/validate"
+import { createTask, updateTask } from "@/api/report"
 
 export default {
   props: {
-    id: {}
-  },
-  created() {
-    this.initGB28181Conf()
+    id: {
+      type: String,
+      default: ""
+    },
+    node: {},
+    camera: {},
+    menu: {}
   },
   data() {
     return {
-      gb28181: {},
-      rules: {
-        ip: [
-          {
-            required: true,
-            message: "璇疯緭鍏P鍦板潃",
-            trigger: "change"
-          },
-          { validator: isIPv4, trigger: "change" }
-        ],
-        ServerIp: [
-          {
-            required: true,
-            message: "璇疯緭鍏P鍦板潃",
-            trigger: "change"
-          },
-          { validator: isIPv4, trigger: "change" }
-        ],
-        ServerPort: [
-          {
-            required: true,
-            message: "璇疯緭鍏ョ鍙�",
-            trigger: "change"
-          },
-          { validator: isPort, trigger: "change" }
-        ],
-        GbServerPort: [
-          {
-            required: true,
-            message: "璇疯緭鍏ョ鍙�",
-            trigger: "change"
-          },
-          { validator: isPort, trigger: "change" }
-        ]
-      },
-      locationCity: {
-        province: "",
-        city: "",
-        county: "",
-        provinceOptions: [],
-        cityOptions: [],
-        countyOptions: []
-      },
+      reportTask: {},
       eventsOptions: [
-        { value: "fire", label: "鏄� 鐏�" },
-        { value: "smoke", label: "鐑� 闆�" },
-        { value: "work", label: "鏈┛宸ユ湇" },
-        { value: "head", label: "鏈埓瀹夊叏甯�" },
-        { value: "dowork", label: "绂诲矖" },
-        { value: "juji", label: "浜哄憳鑱氶泦" }
+        { value: "鏄庣伀", label: "鏄庣伀" },
+        { value: "鐑熼浘", label: "鐑熼浘" },
+        { value: "绂诲矖", label: "绂诲矖" },
+        { value: "浜哄憳鑱氶泦", label: "浜哄憳鑱氶泦" },
+        { value: "鏈┛宸ヨ", label: "鏈┛宸ヨ" },
+        { value: "鏈埓瀹夊叏甯�", label: "鏈埓瀹夊叏甯�" }
       ],
       levelOptions: [
-        { value: "1", label: "涓�绾�" },
-        { value: "2", label: "浜岀骇" },
-        { value: "3", label: "涓夌骇" },
-        { value: "4", label: "鍥涚骇" },
-        { value: "5", label: "浜旂骇" }
-      ]
+        { value: "涓�绾�", label: "涓�绾�" },
+        { value: "浜岀骇", label: "浜岀骇" },
+        { value: "涓夌骇", label: "涓夌骇" },
+        { value: "鍥涚骇", label: "鍥涚骇" },
+        { value: "浜旂骇", label: "浜旂骇" }
+      ],
+      pushType: "msg",
+      selectedOrg: {},
+      tmpOrg: []
     }
   },
+  mounted() {
+    this.reportTask = this.node
+  },
   methods: {
-    initGB28181Conf() {
-      getGB28181Config(this.id).then((rsp) => {
-        if (rsp && rsp.success) {
-          this.gb28181 = rsp.data
-          //this.gb28181.idType = 0;
-
-          this.$set(this.gb28181, "idType", 0)
-          this.$refs["gb28181"].resetFields()
-        }
-      })
-      getGb28181AreaList().then((rsp) => {
-        if (rsp && rsp.success) {
-          this.locationCity.provinceOptions = rsp.data.list
-        }
-      })
+    handleTreeChange(value) {
+      this.selectedOrg = value[value.length - 1]
     },
-    submitGB28281() {
-      this.$refs["gb28181"].validate((valid) => {
-        if (valid) {
-          saveGB28181Config(this.gb28181).then((rsp) => {
-            if (rsp && rsp.success) {
-              console.log("1212112")
-              this.$notify({
-                type: "success",
-                message: "GB28181璁剧疆淇濆瓨鎴愬姛"
-              })
-            }
+    collSelectedNodes() {
+      let selectedNodeId = this.selectedOrg
+      let selectedNode = {}
+      let orgNodeIds = []
+
+      if (this.selectedOrg == "") {
+        return orgNodeIds
+      }
+
+      function findNode(node) {
+        if (node.id == selectedNodeId) {
+          selectedNode = node
+
+          return
+        }
+
+        if (node.children) {
+          node.children.forEach((n) => {
+            findNode(n)
           })
+        }
+      }
+
+      function collNode(node) {
+        if (node.type != "MENU") {
+          orgNodeIds.push(node.id)
+          return
+        }
+
+        if (node.children) {
+          node.children.forEach((n) => {
+            collNode(n)
+          })
+        }
+      }
+
+      this.camera.forEach((n) => {
+        findNode(n)
+      })
+
+      collNode(selectedNode)
+
+      return orgNodeIds
+    },
+
+    submit() {
+      if (this.reportTask.tel.length != 11) {
+        this.$message.error("鎵嬫満鍙风爜涓嶆纭�")
+        return
+      }
+      this.$refs["report-task"].validate((valid) => {
+        if (valid) {
+          if (this.tmpOrg.length > 0) {
+            this.reportTask["cameraIds"] = this.collSelectedNodes().join(",")
+            this.reportTask.org = this.$refs["cascader"].getCheckedNodes()[0].pathLabels.join("/")
+          }
+          if (this.id == "") {
+            createTask(this.reportTask).then((rsp) => {
+              if (rsp && rsp.success) {
+                this.$notify({
+                  type: "success",
+                  message: "淇濆瓨鎴愬姛"
+                })
+                this.$emit("close")
+              }
+            })
+          } else {
+            updateTask(this.reportTask).then((rsp) => {
+              if (rsp && rsp.success) {
+                this.$notify({
+                  type: "success",
+                  message: "淇濆瓨鎴愬姛"
+                })
+                this.$emit("close")
+              }
+            })
+          }
         } else {
           console.log("error submit!!")
           return false
-        }
-      })
-    },
-    changeProvince() {
-      let pid = this.locationCity.province
-      getGb28181AreaList({ parentId: pid }).then((rsp) => {
-        if (rsp && rsp.success) {
-          this.locationCity.cityOptions = rsp.data.list
-          this.locationCity.city = this.locationCity.cityOptions[0].id
-          this.changeCity()
-        }
-      })
-    },
-    changeCity() {
-      let pid = this.locationCity.city
-      getGb28181AreaList({ parentId: pid }).then((rsp) => {
-        if (rsp && rsp.success) {
-          this.locationCity.countyOptions = rsp.data.list
-          this.locationCity.county = this.locationCity.countyOptions[0].id
-        }
-      })
-    },
-    newGBID() {
-      let cCode = this.locationCity.county + ""
-      newGb28181ID({ code: cCode }).then((rsp) => {
-        if (rsp && rsp.success) {
-          this.gb28181.PublicId = rsp.data.code
         }
       })
     }

--
Gitblit v1.8.0