1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-03-14 01:34:47 +08:00

pref: 优化应用安装表单选择器组件支持多选 (#3918)

This commit is contained in:
ALMAS 2024-02-20 14:58:58 +08:00 committed by GitHub
parent 3035bb2bf6
commit 1781362342
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 41 additions and 18 deletions

View File

@ -639,10 +639,11 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) {
for _, form := range appForm.FormFields { for _, form := range appForm.FormFields {
if v, ok := envs[form.EnvKey]; ok { if v, ok := envs[form.EnvKey]; ok {
appParam := response.AppParam{ appParam := response.AppParam{
Edit: false, Edit: false,
Key: form.EnvKey, Key: form.EnvKey,
Rule: form.Rule, Rule: form.Rule,
Type: form.Type, Type: form.Type,
Multiple: form.Multiple,
} }
if form.Edit { if form.Edit {
appParam.Edit = true appParam.Edit = true
@ -654,10 +655,20 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) {
appInstall, _ := appInstallRepo.GetFirst(appInstallRepo.WithServiceName(v.(string))) appInstall, _ := appInstallRepo.GetFirst(appInstallRepo.WithServiceName(v.(string)))
appParam.ShowValue = appInstall.Name appParam.ShowValue = appInstall.Name
} else if form.Type == "select" { } else if form.Type == "select" {
for _, fv := range form.Values { if form.Multiple {
if fv.Value == v { if v == "" {
appParam.ShowValue = fv.Label appParam.Value = []string{}
break } 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 appParam.Values = form.Values
@ -665,14 +676,15 @@ func (a *AppInstallService) GetParams(id uint) (*response.AppConfig, error) {
params = append(params, appParam) params = append(params, appParam)
} else { } else {
params = append(params, response.AppParam{ params = append(params, response.AppParam{
Edit: form.Edit, Edit: form.Edit,
Key: form.EnvKey, Key: form.EnvKey,
Rule: form.Rule, Rule: form.Rule,
Type: form.Type, Type: form.Type,
LabelZh: form.LabelZh, LabelZh: form.LabelZh,
LabelEn: form.LabelEn, LabelEn: form.LabelEn,
Value: form.Default, Value: form.Default,
Values: form.Values, Values: form.Values,
Multiple: form.Multiple,
}) })
} }
} }

View File

@ -687,6 +687,12 @@ func handleMap(params map[string]interface{}, envParams map[string]string) {
envParams[k] = strconv.Itoa(int(t)) envParams[k] = strconv.Itoa(int(t))
case int: case int:
envParams[k] = strconv.Itoa(t) 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: default:
envParams[k] = t.(string) envParams[k] = t.(string)
} }

View File

@ -42,7 +42,7 @@
{{ $t('app.toInstall') }} {{ $t('app.toInstall') }}
</el-link> </el-link>
</span> </span>
<el-select v-model="form[p.envKey]" v-if="p.type == 'select'"> <el-select v-model="form[p.envKey]" v-if="p.type == 'select'" :multiple="p.multiple">
<el-option <el-option
v-for="service in p.values" v-for="service in p.values"
:key="service.label" :key="service.label"

View File

@ -30,7 +30,11 @@
v-model.number="paramModel.params[p.key]" v-model.number="paramModel.params[p.key]"
:disabled="!p.edit" :disabled="!p.edit"
></el-input> ></el-input>
<el-select v-model="paramModel.params[p.key]" v-else-if="p.type == 'select'"> <el-select
v-model="paramModel.params[p.key]"
v-else-if="p.type == 'select'"
:multiple="p.multiple"
>
<el-option <el-option
v-for="value in p.values" v-for="value in p.values"
:key="value.label" :key="value.label"
@ -201,6 +205,7 @@ const get = async () => {
type: d.type, type: d.type,
values: d.values, values: d.values,
showValue: d.showValue, showValue: d.showValue,
multiple: d.multiple,
}); });
rules.params[d.key] = [Rules.requiredInput]; rules.params[d.key] = [Rules.requiredInput];
if (d.rule) { if (d.rule) {