|
|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
|
<tf-dialog v-bind="$attrs" v-on="listeners" @submit="onSubmit" :loading="loading">
|
|
|
- <el-form class="form" ref="form" v-bind="{ labelWidth: 'auto', size: 'small' }" :model="formData">
|
|
|
+ <el-form class="form" ref="form" v-bind="{ labelWidth: 'auto', size: 'small' }" :rules="rules" :model="formData">
|
|
|
<el-form-item
|
|
|
- v-for="{ name, label, type, required = false, rules, options, on, ...rest } of formItems"
|
|
|
+ v-for="{ name, label, type, required = false, options, on, ...rest } of formItems"
|
|
|
:key="name"
|
|
|
:required="required"
|
|
|
:label="label"
|
|
|
@@ -51,7 +51,7 @@
|
|
|
|
|
|
@Component({ name: 'ParamForm', components: {} })
|
|
|
export default class ParamForm extends Vue {
|
|
|
- @Prop({ type: Object, default: () => ({}) }) data!: object
|
|
|
+ @Prop({ type: Object, default: () => ({}) }) data!: IDeviceTypeParam
|
|
|
@Prop({ type: Boolean, default: false }) loading!: boolean
|
|
|
@Prop({ type: Array, default: () => [] }) dictionary!: IDeviceTypeParamDictionary[]
|
|
|
|
|
|
@@ -64,48 +64,38 @@
|
|
|
return rest
|
|
|
}
|
|
|
|
|
|
+ get rules() {
|
|
|
+ return {
|
|
|
+ dictionaryId: [{ required: true, message: '请选择设备指标', trigger: 'change' }],
|
|
|
+ targetAlias: [
|
|
|
+ { required: true, message: '指标别名(缩写)不能为空!', trigger: 'blur' },
|
|
|
+ { max: 40, message: '指标别名(缩写)不超过40个字符' }
|
|
|
+ ],
|
|
|
+ isshow: [{ required: true, message: '请选择是否显示', trigger: 'blur' }],
|
|
|
+ remark: [{ required: false, max: 255, message: '备注不能超过255个字符' }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
get formItems() {
|
|
|
return [
|
|
|
{
|
|
|
label: '设备指标',
|
|
|
name: 'dictionaryId',
|
|
|
type: 'select',
|
|
|
- rules: [{ required: true, message: '请选择设备指标' }],
|
|
|
required: true,
|
|
|
+ disabled: !!this.data.id,
|
|
|
options: this.dictionary,
|
|
|
on: {
|
|
|
change: this.onTypeChange
|
|
|
}
|
|
|
},
|
|
|
{ label: '指标名称', name: 'targetName', disabled: true },
|
|
|
- {
|
|
|
- label: '指标别名(缩写)',
|
|
|
- name: 'targetAlias',
|
|
|
- required: true,
|
|
|
- rules: [
|
|
|
- { required: true, message: '指标别名(缩写)不能为空!', trigger: 'blur' },
|
|
|
- { max: 40, message: '指标别名(缩写)不超过40个字符' }
|
|
|
- ],
|
|
|
- maxlength: 40
|
|
|
- },
|
|
|
+ { label: '指标别名(缩写)', name: 'targetAlias', required: true, maxlength: 40 },
|
|
|
{ label: '指标字段名', name: 'targetCode', disabled: true },
|
|
|
{ label: '指标单位', name: 'targetUnit', disabled: true },
|
|
|
- {
|
|
|
- label: '是否显示',
|
|
|
- name: 'isshow',
|
|
|
- type: 'switch',
|
|
|
- rules: [{ required: true, message: '请选择是否显示', trigger: 'blur' }],
|
|
|
- activeValue: 1,
|
|
|
- inactiveValue: 0
|
|
|
- },
|
|
|
+ { label: '是否显示', name: 'isshow', type: 'switch', activeValue: 1, inactiveValue: 0 },
|
|
|
{ label: '显示顺序', name: 'showNo', type: 'input-number' },
|
|
|
- {
|
|
|
- label: '备注',
|
|
|
- name: 'remark',
|
|
|
- rules: [{ required: false, max: 255, message: '备注不能超过255个字符' }],
|
|
|
- type: 'textarea',
|
|
|
- rows: 4
|
|
|
- }
|
|
|
+ { label: '备注', name: 'remark', type: 'textarea', rows: 4 }
|
|
|
]
|
|
|
}
|
|
|
|
|
|
@@ -119,8 +109,9 @@
|
|
|
}
|
|
|
|
|
|
@Watch('data', { immediate: true })
|
|
|
- setDefaultData(val) {
|
|
|
- this.formData = val.id ? { ...val } : getDefaultData()
|
|
|
+ setDefaultData(val: Partial<IDeviceTypeParam>) {
|
|
|
+ const { showNo, ...rest } = val
|
|
|
+ this.formData = val.id ? { showNo: showNo === null ? undefined : showNo, ...rest } : getDefaultData()
|
|
|
}
|
|
|
}
|
|
|
</script>
|