import { getImageURL } from '@/utils/images' import type { ISkill } from '@/api/info/type' import { useVModel } from '@vueuse/core' import { UiCheckbox } from '@/components/ui/checkbox' import { renderList } from 'vue' import './style.scss' export default defineComponent({ name: 'SkillVP', props: { skills: { type: Array as PropType, default: () => [], }, lvInfo: { type: Object as PropType>, default: () => ({}), }, }, emits: ['chooseSkill'], setup(props, { emit }) { const lvInfo = useVModel(props, 'lvInfo') const skills = computed(() => props.skills.filter((a) => a.hasVP && lvInfo).sort((a, b) => a.learnLv - b.learnLv), ) const currentUsedVP = computed(() => { return Object.keys(lvInfo.value) .filter((a) => skills.value.find((skill) => skill.id.toString() === a)) .map((a) => lvInfo.value[a].vp) .filter((a) => !!a && a > 0).length }) const itemChecked = (skillID: string, vp: number) => { return computed({ get() { if (!lvInfo.value[skillID].vp) { lvInfo.value[skillID].vp = 0 } return lvInfo.value[skillID]?.vp == vp }, set(value: boolean) { // 选中当前VP形态 并且当前已选VP大于5 并且当前技能没有VP if (value && currentUsedVP.value >= 5 && lvInfo.value[skillID]?.vp == 0) { return } if (value) { lvInfo.value[skillID].vp = vp } else { lvInfo.value[skillID].vp = 0 } }, }) } return () => ( <>
{renderList(skills.value, (item) => (
{item.learnLv}
{item.name}
{item.name}
{renderList(2, (index) => (
{ emit('chooseSkill', item.id) itemChecked(item.id.toString(), index).value = !itemChecked( item.id.toString(), index, ).value }} > {' '}
= 5 && lvInfo.value[item.id.toString()]?.vp == 0 } />
{item.name}
{item.vps[index - 1]?.name}
{renderList( item.vps[index - 1]?.desc ? item.vps[index - 1].desc.replace(//g, '\n').split('\n') : [], (desc) => (
{desc}
), )}
))}
))}
) }, })