<template>
|
<a-form style="margin-top: 8px" :autoFormCreate="(form)=>{this.form = form}">
|
<a-modal title="规则配置" destroyOnClose :visible="visible">
|
<a-steps style="margin-bottom: 28px" size="small" :current="currentStep">
|
<a-step title="基本信息" />
|
<a-step title="配置规则属性" />
|
<a-step title="设定调度周期" />
|
</a-steps>
|
<div v-if="currentStep==0">
|
<a-form-item key="title" v-bind="formLayout" label="规则名称" fieldDecoratorId="title" :fieldDecoratorOptions="{
|
rules: [{ required: true, message: '请输入规则名称!' }],
|
initialValue: formVals.title,
|
}">
|
<a-input placeholder="请输入" />
|
</a-form-item>,
|
<a-form-item key="description" v-bind="formLayout" label="规则描述" fieldDecoratorId="description" :fieldDecoratorOptions="{
|
rules: [{ required: true, message: '请输入至少五个字符的规则描述!', min: 5 }],
|
initialValue: formVals.description,
|
}">
|
<a-textarea :rows="4" placeholder="请输入至少五个字符" />
|
</a-form-item>
|
</div>
|
<div v-if="currentStep==1">
|
<a-form-item key="target" v-bind="formLayout" label="监控对象" fieldDecoratorId="target" :fieldDecoratorOptions="{
|
initialValue: formVals.target,
|
}">
|
<a-select style="width: 100%">
|
<a-select-option value="0">表一</a-select-option>
|
<a-select-option value="1">表二</a-select-option>
|
</a-select>
|
</a-form-item>
|
<a-form-item key="template" v-bind="formLayout" label="规则模板" fieldDecoratorId="template" :fieldDecoratorOptions="{
|
initialValue: formVals.template,
|
}">
|
<a-select style="width: 100%">
|
<a-select-option value="0">规则模板一</a-select-option>
|
<a-select-option value="1">规则模板二</a-select-option>
|
</a-select>
|
</a-form-item>,
|
<a-form-item key="type" v-bind="formLayout" label="规则类型" fieldDecoratorId="type" :fieldDecoratorOptions="{
|
initialValue: formVals.type,
|
}">
|
<a-radio-group>
|
<a-radio value="0">强</a-radio>
|
<a-radio value="1">弱</a-radio>
|
</a-radio-group>
|
</a-form-item>
|
</div>
|
<div v-if="currentStep==2">
|
<a-form-item key="time" v-bind="formLayout" label="开始时间" fieldDecoratorId="time" :fieldDecoratorOptions="{
|
rules: [{ required: true, message: '请选择开始时间!' }]
|
}">
|
<a-date-picker style="width: 100%" showTime format="YYYY-MM-DD HH:mm:ss" placeholder="选择开始时间" />
|
</a-form-item>
|
<a-form-item key="frequency" v-bind="formLayout" label="调度周期" fieldDecoratorId="frequency" :fieldDecoratorOptions="{
|
initialValue: formVals.frequency,
|
}">
|
<a-select style="width: 100%">
|
<a-select-option value="month">月</a-select-option>
|
<a-select-option value="week">周</a-select-option>
|
</a-select>
|
</a-form-item>
|
</div>
|
<template slot="footer" v-if="currentStep==0">
|
<a-button key="cancel" @click="handleCancel">
|
取消
|
</a-button>
|
<a-button key="forward" type="primary" @click="handleNext">
|
下一步
|
</a-button>
|
</template>
|
<template slot="footer" v-else-if="currentStep==1">
|
<a-button key="back" :style="{ float: 'left' }" @click="handleBackward">
|
上一步
|
</a-button>
|
<a-button key="cancel" @click="handleCancel">
|
取消
|
</a-button>
|
<a-button key="forward" type="primary" @click="handleNext">
|
下一步
|
</a-button>
|
</template>
|
<template slot="footer" v-else-if="currentStep==2">
|
<a-button key="back" :style="{ float: 'left' }" @click="handleBackward">
|
上一步
|
</a-button>
|
<a-button key="cancel" @click="handleCancel">
|
取消
|
</a-button>
|
<a-button key="forward" type="primary" @click="handleOk">
|
完成
|
</a-button>
|
</template>
|
</a-modal>
|
</a-form>
|
</template>
|
|
<script lang="ts">
|
import {
|
Component,
|
Prop,
|
Vue,
|
Emit,
|
Model,
|
Watch,
|
} from 'vue-property-decorator';
|
import {
|
State,
|
Mutation,
|
namespace,
|
} from 'vuex-class';
|
|
import axios from 'axios';
|
|
@Component({
|
components: {},
|
})
|
export default class UpdateTaskForm extends Vue {
|
|
@Prop({
|
type: Boolean,
|
default: false,
|
})
|
private visible!: boolean;
|
|
@Prop({
|
type: Object,
|
default() {
|
return {};
|
},
|
})
|
private record!: any;
|
|
private form: any = null;
|
|
private formVals: any = {
|
target: '0',
|
template: '0',
|
type: '1',
|
time: '',
|
frequency: 'month',
|
};
|
|
private currentStep: number = 0;
|
|
private formLayout = {
|
labelCol: {
|
span: 7,
|
},
|
wrapperCol: {
|
span: 13,
|
},
|
};
|
|
private handleBackward(): void {
|
this.currentStep--;
|
}
|
|
private handleNext(): void {
|
this.form.validateFields((err: any, fieldsValue: any) => {
|
if (err) {
|
return;
|
}
|
this.formVals = { ...this.formVals, ...fieldsValue };
|
this.currentStep++;
|
});
|
}
|
|
private handleCancel(): void {
|
this.updateVisible(false);
|
}
|
|
private handleOk(): void {
|
|
this.form.validateFields((err: any, fieldsValue: any) => {
|
if (err) {
|
return;
|
}
|
this.formVals = { ...this.formVals, ...fieldsValue };
|
|
axios.post('/updateRule', {...this.formVals})
|
.then(() => {
|
this.updateVisible(false);
|
this.onOk();
|
});
|
});
|
|
}
|
|
@Emit('ok')
|
private onOk() {
|
|
}
|
|
private updateVisible(visible: boolean): void {
|
this.$emit('update:visible', visible);
|
}
|
|
private mounted(): void {
|
this.currentStep = 0;
|
}
|
|
@Watch('record', {
|
immediate: true,
|
deep: true,
|
})
|
private recordChange(value: any, oldValue: any): void {
|
this.formVals = {
|
...value,
|
...this.formVals,
|
};
|
this.currentStep = 0;
|
}
|
|
}
|
</script>
|