From d74da503c8a34b426b1444fb90b53af48b625c1c Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Thu, 15 Apr 2021 19:41:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E7=A6=81=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98=20(#751)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit perf: 优化系统用户创建 Co-authored-by: ibuler --- src/components/AutoDataForm/utils.js | 13 +- src/utils/common.js | 8 + .../SystemUser/SystemUserCreate/database.vue | 125 +---------- .../SystemUser/SystemUserCreate/fields.js | 179 +++++++++++++++ .../SystemUser/SystemUserCreate/k8s.vue | 22 +- .../SystemUser/SystemUserCreate/rdp.vue | 129 +---------- .../SystemUser/SystemUserCreate/ssh.vue | 203 ++---------------- .../SystemUserCreate/vncAndTelnet.vue | 93 +------- 8 files changed, 250 insertions(+), 522 deletions(-) create mode 100644 src/views/assets/SystemUser/SystemUserCreate/fields.js 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 @@