式神选择器适配稀有度过滤

pull/4/head
rookie4show 1 year ago
parent f41e9d488f
commit fdfcabc645
  1. 38
      src/components/ShikigamiSelect.vue
  2. 9
      src/data/Shikigami.json

@ -7,24 +7,23 @@
class="demo-tabs" class="demo-tabs"
@tab-click="handleClick" @tab-click="handleClick"
> >
<el-tab-pane label="SP" name="first"> <el-tab-pane
<div> v-for="(rarity, index) in rarityLevels"
<el-space wrap> :key="index"
<div v-for="i in 20" :key="i"> :label="rarity"
<el-button text> Text button </el-button> :name="rarity"
>
<div v-if="['SP', 'SSR', 'SR', 'R', 'N'].includes(rarity)"> <!-- 只在这些级别中显示内容 -->
<el-space wrap size="large">
<div v-for="i in filterShikigamiByRarity(rarity)" :key="i.name">
<el-button style="width: 100px; height: 100px;">
<img :src="i.avatar" style="width: 99px; height: 99px;">
</el-button>
</div> </div>
</el-space> </el-space>
<li v-for="(item, index) in shikigamiData" :key="index" @click.stop="select(item)">
<div>
<span>{{ item.name }}</span>
</div>
</li>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="SSR" name="second">Config</el-tab-pane>
<el-tab-pane label="SR" name="third">Role</el-tab-pane>
<el-tab-pane label="R" name="fourth">Task</el-tab-pane>
<el-tab-pane label="N" name="fifth">Task</el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
@ -42,7 +41,7 @@ import { ref } from "vue";
import type { TabsPaneContext } from 'element-plus' import type { TabsPaneContext } from 'element-plus'
const activeName = ref('first') const activeName = ref('SP')
const handleClick = (tab: TabsPaneContext, event: Event) => { const handleClick = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event) console.log(tab, event)
@ -65,6 +64,7 @@ export default {
selected: null, selected: null,
current: {}, current: {},
show: false, show: false,
rarityLevels: ["SP", "SSR", "SR", "R", "N"],
}; };
}, },
watch: { watch: {
@ -91,6 +91,14 @@ export default {
this.$emit("updateShikigami", this.current); this.$emit("updateShikigami", this.current);
this.current = {}; this.current = {};
}, },
filterShikigamiByRarity(rarity) {
// rarity
const lowerCaseRarity = rarity.toLowerCase();
return this.shikigamiData.filter(shikigami =>
// shikigamirarity
shikigami.rarity.toLowerCase() === lowerCaseRarity
);
},
}, },
}; };
</script> </script>

@ -1,22 +1,27 @@
[ [
{ {
"name": "妖刀姬", "name": "妖刀姬",
"rarity": "SSR",
"avatar":"/assets/Shikigami/ssr/Yoto Hime.png" "avatar":"/assets/Shikigami/ssr/Yoto Hime.png"
}, },
{ {
"name": "大狗", "name": "大狗",
"rarity": "SSR",
"avatar":"/assets/Shikigami/ssr/Ootengu.png" "avatar":"/assets/Shikigami/ssr/Ootengu.png"
}, },
{ {
"name": "青灯", "name": "青灯",
"rarity": "SSR",
"avatar":"/assets/Shikigami/ssr/Aoandon.png" "avatar":"/assets/Shikigami/ssr/Aoandon.png"
}, },
{ {
"name": "打火机", "name": "座敷童子",
"rarity": "R",
"avatar":"/assets/Shikigami/r/Zashiki.png" "avatar":"/assets/Shikigami/r/Zashiki.png"
}, },
{ {
"name": "和尚", "name": "独眼小僧",
"rarity": "R",
"avatar":"/assets/Shikigami/r/Hitotsume.png" "avatar":"/assets/Shikigami/r/Hitotsume.png"
} }
] ]
Loading…
Cancel
Save