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) {