diff --git a/src/components/AutoDataForm/utils.js b/src/components/AutoDataForm/utils.js index 9cd971771..ff7289cda 100644 --- a/src/components/AutoDataForm/utils.js +++ b/src/components/AutoDataForm/utils.js @@ -2,6 +2,7 @@ import Vue from 'vue' import Select2 from '@/components/Select2' import NestedField from '@/components/AutoDataForm/components/NestedField' import rules from '@/components/DataForm/rules' +import { assignIfNot } from '@/utils/common' export class FormFieldGenerator { constructor() { @@ -109,19 +110,21 @@ export class FormFieldGenerator { return field } generateField(name, fieldsMeta, remoteFieldsMeta) { - let field = { id: name, prop: name, el: {}, attrs: {}} + let field = { id: name, prop: name, el: {}, attrs: {}, rules: [] } const remoteFieldMeta = remoteFieldsMeta[name] || {} - Vue.$log.debug('FieldsMeta: ', fieldsMeta, name) const fieldMeta = fieldsMeta[name] || {} - Vue.$log.debug('FieldMeta is: ', fieldMeta) field.label = remoteFieldMeta.label field.helpText = remoteFieldMeta.help_text field = this.generateFieldByType(remoteFieldMeta.type, field, fieldMeta, remoteFieldMeta) field = this.generateFieldByName(name, field) field = this.generateFieldByOther(field, fieldMeta, remoteFieldMeta) - const el = Object.assign(field.el || {}, fieldMeta.el || {}) - field = Object.assign(field, fieldMeta || {}, { el: el }) + const el = assignIfNot(fieldMeta.el || {}, field.el) + const rules = fieldMeta.rules || field.rules + field = Object.assign(field, fieldMeta) + field.el = el + field.rules = rules _.set(field, 'attrs.error', '') + Vue.$log.debug('Generate field: ', name, field) return field } generateFieldGroup(field, fieldsMeta, remoteFieldsMeta) { diff --git a/src/utils/common.js b/src/utils/common.js index 4811b9863..7cfd1a3ec 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -1,3 +1,5 @@ +const _ = require('lodash') + function getTimeUnits(u) { const units = { 'd': '天', @@ -200,6 +202,12 @@ export function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time)) } +function customizer(objValue, srcValue) { + return _.isUndefined(objValue) ? srcValue : objValue +} + +export const assignIfNot = _.partialRight(_.assignInWith, customizer) + const scheme = document.location.protocol const port = document.location.port ? ':' + document.location.port : '' const BASE_URL = scheme + '//' + document.location.hostname + port diff --git a/src/views/assets/SystemUser/SystemUserCreate/database.vue b/src/views/assets/SystemUser/SystemUserCreate/database.vue index 8231b64c6..b76b1040c 100644 --- a/src/views/assets/SystemUser/SystemUserCreate/database.vue +++ b/src/views/assets/SystemUser/SystemUserCreate/database.vue @@ -4,13 +4,13 @@ diff --git a/src/views/assets/SystemUser/SystemUserCreate/ssh.vue b/src/views/assets/SystemUser/SystemUserCreate/ssh.vue index f3f90a591..fd184e195 100644 --- a/src/views/assets/SystemUser/SystemUserCreate/ssh.vue +++ b/src/views/assets/SystemUser/SystemUserCreate/ssh.vue @@ -4,17 +4,14 @@ diff --git a/src/views/assets/SystemUser/SystemUserCreate/vncAndTelnet.vue b/src/views/assets/SystemUser/SystemUserCreate/vncAndTelnet.vue index 42bb0a5cb..ef0aa7f36 100644 --- a/src/views/assets/SystemUser/SystemUserCreate/vncAndTelnet.vue +++ b/src/views/assets/SystemUser/SystemUserCreate/vncAndTelnet.vue @@ -4,7 +4,7 @@