|  | @@ -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>
 |