<template>
|
<a-modal :confirmLoading='confirmLoading' :maskClosable='false' :okButtonProps='{ props: {disabled: disableSubmit} }' :title='title' :visible='visible'
|
:width='500' cancelText='关闭' @cancel='handleCancel' @ok='handleOk'>
|
<a-spin :spinning='confirmLoading'>
|
<a-form :form='form'>
|
<a-row :gutter='12'>
|
<a-col :span='32'>
|
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='参数名称'>
|
<a-input v-decorator="[ 'parameterName', validatorRules.parameterName]" :disabled='disableSubmit' :maxLength='20' :readOnly='disableSubmit'
|
allow-clear placeholder='请输入参数名称' />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter='12'>
|
<a-col :span='32'>
|
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='参数描述'>
|
<a-input v-decorator="[ 'parameterDescribe', validatorRules.parameterDescribe]" :disabled='disableSubmit' :maxLength='20' :readOnly='disableSubmit'
|
allow-clear placeholder='请输入参数描述' />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter='12'>
|
<a-col :span='32'>
|
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='参数类型'>
|
<a-select v-model='systemDataType' style='width: 287px'>
|
<a-select-option v-for='drive in systemDataTypeList' :key='drive.name'>
|
{{ drive.name }}
|
</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter='12'>
|
<a-col :span='32'>
|
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='读写类型'>
|
<a-select v-model='readWriteType' style='width: 287px'>
|
<a-select-option v-for='drive in parameterTypeList' :key='drive.key'>
|
{{ drive.key }}
|
</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
</a-row>
|
</a-form>
|
</a-spin>
|
<template v-if='disableSubmit == false' slot='footer'>
|
<a-button :style="{ marginRight: '8px' }" @click='handleCancel'>关闭</a-button>
|
<a-button type='primary' @click='handleOk'>确定</a-button>
|
</template>
|
<parameter-address ref='modalAddress' :server-id='serverId' @ok='modalFormOk' />
|
|
</a-modal>
|
</template>
|
|
<script>
|
import pick from 'lodash.pick'
|
import { getAction, httpAction } from '@/api/manage'
|
import ParameterAddress from '../solid/ParameterAddress'
|
|
|
export default {
|
components: { ParameterAddress },
|
props: [
|
'serverId'
|
],
|
name: 'CustomizeParameterModel',
|
data() {
|
return {
|
indexStyle: false,
|
systemDataType: '',
|
readWriteType: "读写",
|
title: '',
|
visible: false,
|
model: {},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 7 }
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 14 }
|
},
|
confirmLoading: false,
|
form: this.$form.createForm(this),
|
systemDataTypeList: [],
|
parameterTypeList: [
|
{ key: '只读' },
|
{ key: '读写' }
|
],
|
validatorRules: {
|
parameterName: {
|
rules: [{
|
required: true,
|
message: '此输入框仅允许输入数字和字母',
|
pattern: /^[a-zA-Z0-9]+$/
|
}]
|
}
|
},
|
url: {
|
add: '/empty/parameter/add',
|
edit: '/empty/parameter/edit',
|
systemDataType: '/equipment/querySystemDataType'
|
},
|
disableSubmit: false
|
}
|
},
|
|
methods: {
|
onSearch() {
|
this.$refs.modalAddress.visible1 = true
|
},
|
add() {
|
this.edit({})
|
},
|
modalFormOk(record) {
|
let model = Object.assign({}, record)
|
this.$nextTick(() => {
|
this.form.setFieldsValue({
|
parameterDescribe: model.describe,
|
address: model.default1
|
})
|
})
|
this.systemDataType = model.dataType
|
},
|
edit(record) {
|
// 查询系统类型
|
getAction(this.url.systemDataType).then((res) => {
|
if (res.success) {
|
this.systemDataTypeList = res.result[0].typeList
|
this.systemDataType = this.systemDataTypeList[0].name
|
}
|
})
|
this.form.resetFields()
|
this.model = Object.assign({}, record)
|
this.visible = true
|
this.$nextTick(() => {
|
this.form.setFieldsValue(pick(this.model, 'parameterName', 'parameterDescribe', 'address'))
|
})
|
this.systemDataType = this.model.parameterType
|
if (this.model.id){
|
this.readWriteType = this.model.readWriteType // 读写类型
|
|
}
|
},
|
close() {
|
this.$emit('close')
|
this.visible = false
|
},
|
handleOk() {
|
const that = this
|
// 触发表单验证
|
this.form.validateFields((err, values) => {
|
if (!err) {
|
that.confirmLoading = true
|
let formData = Object.assign(this.model, values)
|
let obj
|
formData.parameterType = this.systemDataType
|
formData.readWriteType = this.readWriteType // 读写类型
|
// 地址
|
formData.address = '/'
|
if (!this.model.id) {
|
formData.type = 0
|
formData.equipmentId = this.serverId
|
obj = httpAction(this.url.add, formData, 'post')
|
} else {
|
obj = httpAction(this.url.edit, formData, 'put')
|
}
|
obj.then((res) => {
|
if (res.success) {
|
that.$message.success(res.message)
|
that.$emit('ok', res.result)
|
} else {
|
that.$message.warning(res.message)
|
}
|
}).finally(() => {
|
that.confirmLoading = false
|
that.close()
|
})
|
}
|
})
|
},
|
handleCancel() {
|
this.close()
|
}
|
}
|
}
|
</script>
|