소스 검색

诊断任务管理-添加编辑

humingshi-7@163.com 11 달 전
부모
커밋
8816f161be
3개의 변경된 파일219개의 추가작업 그리고 7개의 파일을 삭제
  1. 18 0
      src/api/iot/diagnoseMission.js
  2. 188 0
      src/views/iot/diagnoseMission/dialog.addMission.vue
  3. 13 7
      src/views/iot/diagnoseMission/indexMission.vue

+ 18 - 0
src/api/iot/diagnoseMission.js

@@ -57,3 +57,21 @@ export function deleteMission(missionId) {
     method: 'get'
   })
 }
+
+//新增任务
+export function addMission(query) {
+  return request({
+    url: `/iot/diagnoseMission/addMission`,
+    method: 'post',
+    data: query
+  })
+}
+
+//编辑任务
+export function editMission(query) {
+  return request({
+      url: `/iot/diagnoseMission/editMission`,
+      method: 'post',
+      data: query
+  })
+}

+ 188 - 0
src/views/iot/diagnoseMission/dialog.addMission.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom :title="title" @close="onHide" :visible.sync="isShow" width="460px">
+      <div class="page-body">
+        <el-form :model="formData" :rules="formDataRules" size="small" ref="form" label-position="top"
+                 label-width="150px" label-prefix=":">
+          <el-row>
+            <el-col :span="19">
+              <el-form-item prop="name" label="任务名称">
+                <el-input
+                  v-model="formData.name"
+                  :maxlength="32"
+                  placeholder="请输入任务名称"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="19">
+              <el-form-item prop="beginTime" label="开始时间">
+                <el-input
+                  v-model="formData.beginTime"
+                  :maxlength="8"
+                  placeholder="请输入开始时间"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="19">
+              <el-form-item prop="endTime" label="结束时间">
+                <el-input
+                  v-model="formData.endTime"
+                  :maxlength="8"
+                  placeholder="请输入结束时间"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="19">
+              <el-form-item prop="cycle" label="诊断周期(小时)">
+                <el-input
+                  v-model="formData.cycle"
+                  :maxlength="32"
+                  placeholder="请输入诊断周期"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="19" prop="enabled">
+              <el-form-item>
+                <el-radio-group v-model="formData.enabled">
+                  <el-radio :label="1">启用</el-radio>
+                  <el-radio :label="0">禁用</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+        </el-form>
+
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="onSubmit">确 定</el-button>
+        <el-button @click="onHide">取 消</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+
+<script>
+import {mapMutations, mapState} from "vuex";
+import {addMission,editMission} from "@/api/iot/diagnoseMission";
+
+export default {
+  components: {},
+  data() {
+    const params = this.$route.params;
+    return {
+      missionId: params ? params.missionId : null,
+      isShow: false,
+      title: '',
+      formData: this.reset(),
+      isEdit: false,
+      formDataRules: {
+        name: [{required: true, message: "请输入任务名称", trigger: 'blur'}],
+        beginTime: [{required: true, message: "请输入开始时间", trigger: 'blur'}],
+        endTime: [{required: true, message: "请输入结束时间", trigger: 'blur'}],
+        cycle: [
+          {required: true, message: '请输入诊断周期', trigger: 'blur'},
+          {validator: this.validatePort, trigger: 'blur'}
+        ],
+        enabled: [{required: true, message: "请输入启用/禁用", trigger: 'blur'}]
+      },
+    };
+  },
+  props: {},
+  watch: {},
+  created() {
+
+  },
+
+  mounted() {
+
+  },
+  computed: {
+    ...mapState(["loginUser", "org"]),
+  },
+  methods: {
+    ...mapMutations([]),
+    reset(other = {}) {
+      return {
+        missionId: null,
+        name: null,
+        startTime: null,
+        endTime: null,
+        cycle: "",
+        enabled: 1,
+        ...other,
+      };
+    },
+    async show(formData) {
+      this.title = '新增任务';
+      this.isEdit=false;
+      if (formData.missionId){
+        this.formData = formData;
+        this.title = '编辑任务';
+        this.isEdit=true;
+      }
+      this.isShow = true;
+    },
+
+    // 事件
+    onHide() {
+      this.isShow = false;
+      this.formData = this.reset();
+    },
+    async onSubmit() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+            if (!this.formData.missionId) {
+              await addMission(this.formData).then(r => {
+                  this.$modal.msgSuccess("新增成功");
+              })
+            } else {
+              await editMission(this.formData).then(r => {
+                   this.$modal.msgSuccess("修改成功");
+              })
+            }
+            this.$emit("success");
+            this.isShow = false;
+        }
+      });
+    },
+
+    validatePort(rule, value, callback) {
+      if (!value) {
+        return callback(new Error('请输入诊断周期'));
+      }
+      const port = parseInt(value, 10);
+      if (isNaN(port)) {
+        callback(new Error('诊断周期必须是一个数字'));
+      } else if (port < 1 || port > 65535) {
+        callback(new Error('诊断周期必须在1到65535之间'));
+      } else {
+        callback();
+      }
+    },
+  },
+
+};
+</script>
+<style lang="scss" scoped>
+  .el-form-item{
+      justify-content:center;
+      align-items:center;
+  }
+</style>

+ 13 - 7
src/views/iot/diagnoseMission/indexMission.vue

@@ -26,7 +26,7 @@
                   type="primary"
                   icon="el-icon-refresh"
                   size="mini"
-                  @click="bindMission()"
+                  @click="addMission()"
                   >添加
                 </el-button>
               </el-col>
@@ -71,7 +71,7 @@
                               type="text"
                               icon="el-icon-edit-outline"
                               v-if="!scope.row.doTime"
-                              @click="dealAlarm(scope.row)"
+                              @click="editMission(scope.row)"
                               v-hasPermi="['core:task:query']"
                               >编辑</el-button>
                               <el-button
@@ -87,18 +87,20 @@
         </div>
       </el-col>
     </el-row>
-    <dialog-bind-mission ref="bindMissionDialog" @success="getList()"></dialog-bind-mission>
+    <dialog-add-mission ref="addMissionDialog" @success="getList()"></dialog-add-mission>
+    <dialog-edit-mission ref="editMissionDialog" @success="getList()"></dialog-edit-mission>
   </div>
 </template>
 
 <script>
 import { list,deleteMission} from "@/api/iot/diagnoseMission";
-import DialogBindMission from "./dialog.bindMission.vue";
+import DialogAddMission from "./dialog.addMission.vue";
+import DialogEditMission from "./dialog.addMission.vue";
 import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 import { mapGetters } from "vuex";
 import dayjs from "dayjs";
 export default {
-  components: { OrgTree,DialogBindMission },
+  components: { OrgTree,DialogAddMission,DialogEditMission },
   name: "Task",
   data() {
     return {
@@ -209,8 +211,12 @@ export default {
       this.getList();
     },
     /** 编辑任务 */
-    bindMission() {
-      this.$refs["bindMissionDialog"].show(this.queryParams, this.deviceTypes);
+    addMission() {
+      this.$refs["addMissionDialog"].show({});
+    },
+    /** 编辑任务 */
+    editMission(mission) {
+      this.$refs["editMissionDialog"].show(mission);
     },
     /** 删除任务 */
     deleteMission(missionId) {