From 178136234242078d306d70c16cfd404696aa54ca Mon Sep 17 00:00:00 2001 From: ALMAS Date: Tue, 20 Feb 2024 14:58:58 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E8=A1=A8=E5=8D=95=E9=80=89=E6=8B=A9=E5=99=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=94=AF=E6=8C=81=E5=A4=9A=E9=80=89=20(#3918?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/service/app_install.go | 44 ++++++++++++------- backend/app/service/app_utils.go | 6 +++ .../views/app-store/detail/params/index.vue | 2 +- .../app-store/installed/detail/index.vue | 7 ++- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/backend/app/service/app_install.go b/backend/app/service/app_install.go index 5676536d9..36d9f0ce0 100644 --- a/backend/app/service/app_install.go +++ b/backend/app/service/app_install.go @@ -639,10 +639,11 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) { for _, form := range appForm.FormFields { if v, ok := envs[form.EnvKey]; ok { appParam := response.AppParam{ - Edit: false, - Key: form.EnvKey, - Rule: form.Rule, - Type: form.Type, + Edit: false, + Key: form.EnvKey, + Rule: form.Rule, + Type: form.Type, + Multiple: form.Multiple, } if form.Edit { appParam.Edit = true @@ -654,10 +655,20 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) { appInstall, _ := appInstallRepo.GetFirst(appInstallRepo.WithServiceName(v.(string))) appParam.ShowValue = appInstall.Name } else if form.Type == "select" { - for _, fv := range form.Values { - if fv.Value == v { - appParam.ShowValue = fv.Label - break + if form.Multiple { + if v == "" { + appParam.Value = []string{} + } else { + if str, ok := v.(string); ok { + appParam.Value = strings.Split(str, ",") + } + } + } else { + for _, fv := range form.Values { + if fv.Value == v { + appParam.ShowValue = fv.Label + break + } } } appParam.Values = form.Values @@ -665,14 +676,15 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) { params = append(params, appParam) } else { params = append(params, response.AppParam{ - Edit: form.Edit, - Key: form.EnvKey, - Rule: form.Rule, - Type: form.Type, - LabelZh: form.LabelZh, - LabelEn: form.LabelEn, - Value: form.Default, - Values: form.Values, + Edit: form.Edit, + Key: form.EnvKey, + Rule: form.Rule, + Type: form.Type, + LabelZh: form.LabelZh, + LabelEn: form.LabelEn, + Value: form.Default, + Values: form.Values, + Multiple: form.Multiple, }) } } diff --git a/backend/app/service/app_utils.go b/backend/app/service/app_utils.go index 2ce175383..1a161f6b7 100644 --- a/backend/app/service/app_utils.go +++ b/backend/app/service/app_utils.go @@ -687,6 +687,12 @@ func handleMap(params map[string]interface{}, envParams map[string]string) { envParams[k] = strconv.Itoa(int(t)) case int: envParams[k] = strconv.Itoa(t) + case []interface{}: + strArray := make([]string, len(t)) + for i := range t { + strArray[i] = strings.ToLower(fmt.Sprintf("%v", t[i])) + } + envParams[k] = strings.Join(strArray, ",") default: envParams[k] = t.(string) } diff --git a/frontend/src/views/app-store/detail/params/index.vue b/frontend/src/views/app-store/detail/params/index.vue index 2b6e8ae1a..10e85339c 100644 --- a/frontend/src/views/app-store/detail/params/index.vue +++ b/frontend/src/views/app-store/detail/params/index.vue @@ -42,7 +42,7 @@ {{ $t('app.toInstall') }} - + - + { type: d.type, values: d.values, showValue: d.showValue, + multiple: d.multiple, }); rules.params[d.key] = [Rules.requiredInput]; if (d.rule) {