mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-15 03:53:16 +08:00
@@ -14,6 +14,12 @@
|
||||
<UavSelectChips v-model:selected="starSelected" :items="starOpts" size="small" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="uav-select-item">
|
||||
<div class="uav-select-title">等级</div>
|
||||
<div class="uav-select-props">
|
||||
<UavSelectChips v-model:selected="levelSelected" :items="levelOpts" size="small" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="uav-select-item">
|
||||
<div class="uav-select-title">武器</div>
|
||||
<div class="uav-select-props">
|
||||
@@ -53,6 +59,8 @@ export type UavSelectModel = {
|
||||
costume: Array<string>;
|
||||
/** 星级 */
|
||||
star: Array<string>;
|
||||
/** 等级 */
|
||||
level: Array<string>;
|
||||
/** 武器 */
|
||||
weapon: Array<string>;
|
||||
/** 元素 */
|
||||
@@ -71,6 +79,10 @@ const starOpts: Array<UavSelectChipsItem> = [
|
||||
{ label: "⭐⭐⭐⭐", value: "4", title: "四星" },
|
||||
{ label: "⭐⭐⭐⭐⭐", value: "5", title: "五星" },
|
||||
];
|
||||
const levelOpts: Array<UavSelectChipsItem> = [
|
||||
{ label: "≥70", value: "true", title: "不低于70级" },
|
||||
{ label: "<70", value: "false", title: "低于70级" },
|
||||
];
|
||||
const weaponOpts: Array<UavSelectChipsItem> = ["单手剑", "双手剑", "弓", "法器", "长柄武器"].map(
|
||||
(i) => ({ label: i, value: i, title: i, icon: `/icon/weapon/${i}.webp` }),
|
||||
);
|
||||
@@ -98,6 +110,7 @@ const emits = defineEmits<UavSelectEmits>();
|
||||
|
||||
const costumeSelected = ref<Array<string>>([]);
|
||||
const starSelected = ref<Array<string>>([]);
|
||||
const levelSelected = ref<Array<string>>([]);
|
||||
const weaponSelected = ref<Array<string>>([]);
|
||||
const elementSelected = ref<Array<string>>([]);
|
||||
const areaSelected = ref<Array<string>>([]);
|
||||
@@ -113,6 +126,7 @@ watch(
|
||||
if (visible.value) {
|
||||
costumeSelected.value = model.value.costume;
|
||||
starSelected.value = model.value.star;
|
||||
levelSelected.value = model.value.level;
|
||||
weaponSelected.value = model.value.weapon;
|
||||
areaSelected.value = model.value.area;
|
||||
elementSelected.value = model.value.element;
|
||||
@@ -128,6 +142,7 @@ function onConfirm(): void {
|
||||
model.value = {
|
||||
costume: costumeSelected.value,
|
||||
star: starSelected.value,
|
||||
level: levelSelected.value,
|
||||
weapon: weaponSelected.value,
|
||||
element: elementSelected.value,
|
||||
area: areaSelected.value,
|
||||
|
||||
@@ -204,6 +204,7 @@ const isConstUp = ref<boolean | null>(null);
|
||||
const selectOpts = ref<UavSelectModel>({
|
||||
costume: [],
|
||||
star: [],
|
||||
level: [],
|
||||
weapon: [],
|
||||
area: [],
|
||||
element: [],
|
||||
@@ -297,7 +298,7 @@ function resetList(): void {
|
||||
isLevelUp.value = null;
|
||||
isFetterUp.value = null;
|
||||
isConstUp.value = null;
|
||||
selectOpts.value = { costume: [], star: [], weapon: [], area: [], element: [] };
|
||||
selectOpts.value = { costume: [], star: [], level: [], weapon: [], area: [], element: [] };
|
||||
selectedList.value = getOrderedList(roleList.value);
|
||||
showSnackbar.success("已重置筛选条件");
|
||||
if (!dataVal.value) return;
|
||||
@@ -544,6 +545,10 @@ function handleSelect(val: UavSelectModel): void {
|
||||
const filterC = roleList.value.filter((role) => {
|
||||
const info = AppCharacterData.find((i) => i.id === role.cid);
|
||||
if (val.star.length > 0 && !val.star.includes(role.avatar.rarity.toString())) return false;
|
||||
if (val.level.length > 0) {
|
||||
if (!val.level.includes("true") && role.avatar.level >= 70) return false;
|
||||
if (!val.level.includes("false") && role.avatar.level < 70) return false;
|
||||
}
|
||||
if (val.weapon.length > 0 && !val.weapon.includes(role.weapon.type_name)) return false;
|
||||
if (val.element.length > 0 && !val.element.includes(getZhElement(role.avatar.element)))
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user