@skyfox2000/webui 1.4.18 → 1.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -12,6 +12,10 @@ const props = defineProps<{
|
|
|
12
12
|
* 配置项
|
|
13
13
|
*/
|
|
14
14
|
selectList?: PropConfigItem[];
|
|
15
|
+
/**
|
|
16
|
+
* 忽略项
|
|
17
|
+
*/
|
|
18
|
+
ignoreList?: string[];
|
|
15
19
|
/**
|
|
16
20
|
* 配置名宽度%
|
|
17
21
|
*/
|
|
@@ -56,11 +60,13 @@ const initConfigList = () => {
|
|
|
56
60
|
} else {
|
|
57
61
|
// 没有selectList的情况:基于value动态生成配置项
|
|
58
62
|
if (props.value && Object.keys(props.value).length > 0) {
|
|
59
|
-
configList.value = Object.entries(props.value)
|
|
60
|
-
|
|
61
|
-
field,
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
configList.value = Object.entries(props.value)
|
|
64
|
+
.filter(([field]) => !props.ignoreList || !props.ignoreList.includes(field))
|
|
65
|
+
.map(([field, value]) => ({
|
|
66
|
+
id: Date.now() + Math.random(),
|
|
67
|
+
field,
|
|
68
|
+
value,
|
|
69
|
+
}));
|
|
64
70
|
} else {
|
|
65
71
|
// value为空时,初始化为空数组
|
|
66
72
|
configList.value = [];
|
|
@@ -81,7 +87,7 @@ watch(
|
|
|
81
87
|
|
|
82
88
|
const updateConfig = () => {
|
|
83
89
|
let newConfig: Record<string, string>;
|
|
84
|
-
|
|
90
|
+
|
|
85
91
|
if (props.selectList && props.selectList.length > 0) {
|
|
86
92
|
// 有selectList时,只更新selectList中定义的字段,保留其他字段不变
|
|
87
93
|
newConfig = { ...props.value };
|
|
@@ -91,7 +97,7 @@ const updateConfig = () => {
|
|
|
91
97
|
}
|
|
92
98
|
});
|
|
93
99
|
} else {
|
|
94
|
-
// 没有selectList
|
|
100
|
+
// 没有selectList时,更新所有字段,包括ignoreList中的字段
|
|
95
101
|
newConfig = configList.value.reduce(
|
|
96
102
|
(acc: Record<string, string>, item: PropConfigItem) => {
|
|
97
103
|
if (item.field) {
|
|
@@ -101,8 +107,17 @@ const updateConfig = () => {
|
|
|
101
107
|
},
|
|
102
108
|
{} as Record<string, string>,
|
|
103
109
|
);
|
|
110
|
+
|
|
111
|
+
// 保留ignoreList中的字段
|
|
112
|
+
if (props.ignoreList && props.ignoreList.length > 0) {
|
|
113
|
+
props.ignoreList.forEach((field) => {
|
|
114
|
+
if (props.value[field] !== undefined) {
|
|
115
|
+
newConfig[field] = props.value[field];
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
104
119
|
}
|
|
105
|
-
|
|
120
|
+
|
|
106
121
|
isInnerChange = true;
|
|
107
122
|
emit('update:value', newConfig);
|
|
108
123
|
};
|
|
@@ -124,15 +139,9 @@ const handleInputChange = () => {
|
|
|
124
139
|
<div class="flex flex-col gap-2">
|
|
125
140
|
<div v-for="item in configList" :key="item.id" class="flex items-center gap-2">
|
|
126
141
|
<div :class="[fieldWidth ? `w-[${fieldWidth}%]` : 'w-[33%]']">
|
|
127
|
-
<Input
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
:title="item.text || item.field"
|
|
131
|
-
class="w-full"
|
|
132
|
-
:placeholder="item.text || labelHolder || '配置名'"
|
|
133
|
-
@input="handleInputChange"
|
|
134
|
-
:disabled="!addMore"
|
|
135
|
-
/>
|
|
142
|
+
<Input v-if="!selectList || selectList.length === 0" v-model:value="item.field"
|
|
143
|
+
:title="item.text || item.field" class="w-full" :placeholder="item.text || labelHolder || '配置名'"
|
|
144
|
+
@input="handleInputChange" :disabled="!addMore" />
|
|
136
145
|
<div v-else>
|
|
137
146
|
<Input v-model:value="item.text" :title="item.text" :disabled="true" class="w-[100%]" />
|
|
138
147
|
<Input type="hidden" v-model:value="item.field" />
|
|
@@ -140,20 +149,13 @@ const handleInputChange = () => {
|
|
|
140
149
|
</div>
|
|
141
150
|
<div class="w-[3%]">=</div>
|
|
142
151
|
<div :class="[fieldWidth ? `w-[${97 - fieldWidth}%]` : 'w-[64%]']">
|
|
143
|
-
<Input
|
|
144
|
-
|
|
145
|
-
:placeholder="valueHolder || '请输入' + item.text || '请输入配置值'"
|
|
146
|
-
@input="handleInputChange"
|
|
147
|
-
:title="item.value"
|
|
148
|
-
/>
|
|
152
|
+
<Input v-model:value="item.value" :placeholder="valueHolder || '请输入' + item.text || '请输入配置值'"
|
|
153
|
+
@input="handleInputChange" :title="item.value" />
|
|
149
154
|
</div>
|
|
150
155
|
</div>
|
|
151
|
-
<Button
|
|
152
|
-
v-if="addMore"
|
|
153
|
-
@click="addNewLine"
|
|
156
|
+
<Button v-if="addMore" @click="addNewLine"
|
|
154
157
|
class="mt-1 w-[80px] !text-[12px] text-[#666] bg-[#e6f7ff] border-[#b3e0ff] hover:bg-[#b3e0ff] hover:border-[#8abeff]"
|
|
155
|
-
size="small"
|
|
156
|
-
>
|
|
158
|
+
size="small">
|
|
157
159
|
新增配置行
|
|
158
160
|
</Button>
|
|
159
161
|
</div>
|