feat(web): 新增 timed_buff_id 覆写组件支持与 buff 列表配置
1. 扩展 SUPPORT_ULT 技能列表,新增6517号技能 2. 为 OVERRIDE_KEYS 添加buff类型标记与注释说明 3. 新增buffOptions参数透传机制,实现timed_buff_id下拉选择 4. 新增buff类型覆写编辑器,支持搜索创建与类型归一化
This commit is contained in:
@@ -50,10 +50,27 @@
|
||||
/>
|
||||
<div class="proc-skill-overrides">
|
||||
<span class="proc-skill-label">被触发技能覆写:</span>
|
||||
<OverrideEditor v-model="item.value.overrides" :skill-options="skillOptions" />
|
||||
<OverrideEditor v-model="item.value.overrides" :skill-options="skillOptions" :buff-options="buffOptions" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<!-- buff 型覆写(timed_buff_id):BuffList 下拉,副文本展示 buff info;allow-create 兼容 meta 未加载时手输 id -->
|
||||
<el-select
|
||||
v-else-if="isBuffKey(item.key)"
|
||||
v-model="item.value"
|
||||
placeholder="选择 buff id"
|
||||
size="small"
|
||||
style="width: 280px"
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
@change="onBuffValueChange(item)"
|
||||
>
|
||||
<el-option v-for="b in buffOptions" :key="b.id" :label="`${b.id} ${b.name}`" :value="b.id">
|
||||
<span>{{ b.id }} {{ b.name }}</span>
|
||||
<span class="muted" style="float: right">{{ b.info }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-input-number v-else v-model="item.value" size="small" :controls="false" style="width: 120px" />
|
||||
<el-button type="danger" size="small" text @click="remove(idx)">删除</el-button>
|
||||
</div>
|
||||
@@ -69,6 +86,8 @@ const props = defineProps({
|
||||
modelValue: { type: Object, default: () => ({}) },
|
||||
// 全部技能候选(proc_skill.s_uuid 下拉用),由 App 经 SkillEditor 透传
|
||||
skillOptions: { type: Array, default: () => [] },
|
||||
// 全部 buff 候选(timed_buff_id 下拉用),由 App 从 meta.BuffList 计算后透传
|
||||
buffOptions: { type: Array, default: () => [] },
|
||||
})
|
||||
const emit = defineEmits(['update:modelValue'])
|
||||
|
||||
@@ -131,6 +150,18 @@ function enumOptions(key) {
|
||||
return OVERRIDE_KEYS.find((k) => k.key === key)?.options || []
|
||||
}
|
||||
|
||||
// 该覆写字段是否为 buff 型(timed_buff_id:值为 BuffList 配置 id)
|
||||
function isBuffKey(key) {
|
||||
return OVERRIDE_KEYS.find((k) => k.key === key)?.type === 'buff'
|
||||
}
|
||||
|
||||
// allow-create 手输的 buff id 是字符串,归一化为数字,保证导出 TS 配置类型正确
|
||||
function onBuffValueChange(item) {
|
||||
if (typeof item.value === 'string' && item.value.trim() !== '' && !isNaN(Number(item.value))) {
|
||||
item.value = Number(item.value)
|
||||
}
|
||||
}
|
||||
|
||||
// 对象型覆写行选中时初始化默认结构,避免 v-model 绑定到 undefined 子字段
|
||||
function onKeyChange(item) {
|
||||
if (isObjectKey(item.key)) {
|
||||
@@ -140,6 +171,8 @@ function onKeyChange(item) {
|
||||
} else if (isEnumKey(item.key)) {
|
||||
// 枚举默认取首个候选值
|
||||
item.value = enumOptions(item.key)[0]?.value
|
||||
} else if (isBuffKey(item.key)) {
|
||||
item.value = undefined // buff id 必须显式选择,0 不是合法 id
|
||||
} else {
|
||||
item.value = 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user