mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-15 03:53:16 +08:00
✨ 新增满好感筛选
This commit is contained in:
@@ -11,6 +11,13 @@
|
||||
<v-icon size="14">mdi-tshirt-crew</v-icon>
|
||||
<v-icon v-if="props.selectOpts.costume[0] === 'false'" size="14">mdi-block-helper</v-icon>
|
||||
</div>
|
||||
<div
|
||||
v-if="props.selectOpts.fetter.length === 1"
|
||||
:class="props.selectOpts.fetter[0] === 'true' ? 'pass' : 'ban'"
|
||||
class="tua-svs-item"
|
||||
>
|
||||
<span>好感:{{ getFetterLabel(props.selectOpts.fetter[0]) }}</span>
|
||||
</div>
|
||||
<div v-if="props.selectOpts.star.length === 1" class="tua-svs-item">
|
||||
<span>{{ getStarLabel(props.selectOpts.star[0]) }}</span>
|
||||
</div>
|
||||
@@ -103,6 +110,11 @@ const isOrdered = computed<boolean>(() => {
|
||||
return !(props.isLevelUp === null && props.isFetterUp === null && props.isConstUp === null);
|
||||
});
|
||||
|
||||
function getFetterLabel(fetter: string): string {
|
||||
if (fetter === "true") return "已满";
|
||||
return "未满";
|
||||
}
|
||||
|
||||
function getStarLabel(star: string): string {
|
||||
if (star === "4") return "⭐⭐⭐⭐";
|
||||
return "⭐⭐⭐⭐⭐";
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
<UavSelectChips v-model:selected="costumeSelected" :items="costumeOpts" size="small" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="uav-select-item">
|
||||
<div class="uav-select-title">好感</div>
|
||||
<div class="uav-select-props">
|
||||
<UavSelectChips v-model:selected="fetterSelected" :items="fetterOpts" size="small" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="uav-select-item">
|
||||
<div class="uav-select-title">星级</div>
|
||||
<div class="uav-select-props">
|
||||
@@ -57,6 +63,8 @@ import { ref, watch } from "vue";
|
||||
export type UavSelectModel = {
|
||||
/** 皮肤 */
|
||||
costume: Array<string>;
|
||||
/** 满好感 */
|
||||
fetter: Array<string>;
|
||||
/** 星级 */
|
||||
star: Array<string>;
|
||||
/** 等级 */
|
||||
@@ -75,6 +83,10 @@ const costumeOpts: Array<UavSelectChipsItem> = [
|
||||
{ label: "有", value: "true", title: "有衣装" },
|
||||
{ label: "无", value: "false", title: "无衣装" },
|
||||
];
|
||||
const fetterOpts: Array<UavSelectChipsItem> = [
|
||||
{ label: "已满", value: "true", title: "满好感" },
|
||||
{ label: "未满", value: "false", title: "好感未满" },
|
||||
];
|
||||
const starOpts: Array<UavSelectChipsItem> = [
|
||||
{ label: "⭐⭐⭐⭐", value: "4", title: "四星" },
|
||||
{ label: "⭐⭐⭐⭐⭐", value: "5", title: "五星" },
|
||||
@@ -109,6 +121,7 @@ const areaOpts: Array<UavSelectChipsItem> = [
|
||||
const emits = defineEmits<UavSelectEmits>();
|
||||
|
||||
const costumeSelected = ref<Array<string>>([]);
|
||||
const fetterSelected = ref<Array<string>>([]);
|
||||
const starSelected = ref<Array<string>>([]);
|
||||
const levelSelected = ref<Array<string>>([]);
|
||||
const weaponSelected = ref<Array<string>>([]);
|
||||
@@ -116,7 +129,7 @@ const elementSelected = ref<Array<string>>([]);
|
||||
const areaSelected = ref<Array<string>>([]);
|
||||
|
||||
const model = defineModel<UavSelectModel>({
|
||||
default: { costume: [], star: [], weapon: [], area: [], element: [] },
|
||||
default: { costume: [], fetter: [], star: [], weapon: [], area: [], element: [] },
|
||||
});
|
||||
const visible = defineModel<boolean>("show");
|
||||
|
||||
@@ -125,6 +138,7 @@ watch(
|
||||
() => {
|
||||
if (visible.value) {
|
||||
costumeSelected.value = model.value.costume;
|
||||
fetterSelected.value = model.value.fetter;
|
||||
starSelected.value = model.value.star;
|
||||
levelSelected.value = model.value.level;
|
||||
weaponSelected.value = model.value.weapon;
|
||||
@@ -141,6 +155,7 @@ function onCancel(): void {
|
||||
function onConfirm(): void {
|
||||
model.value = {
|
||||
costume: costumeSelected.value,
|
||||
fetter: fetterSelected.value,
|
||||
star: starSelected.value,
|
||||
level: levelSelected.value,
|
||||
weapon: weaponSelected.value,
|
||||
|
||||
@@ -205,6 +205,7 @@ const isFetterUp = ref<boolean | null>(null);
|
||||
const isConstUp = ref<boolean | null>(null);
|
||||
const selectOpts = ref<UavSelectModel>({
|
||||
costume: [],
|
||||
fetter: [],
|
||||
star: [],
|
||||
level: [],
|
||||
weapon: [],
|
||||
@@ -300,7 +301,15 @@ function resetList(): void {
|
||||
isLevelUp.value = null;
|
||||
isFetterUp.value = null;
|
||||
isConstUp.value = null;
|
||||
selectOpts.value = { costume: [], star: [], level: [], weapon: [], area: [], element: [] };
|
||||
selectOpts.value = {
|
||||
costume: [],
|
||||
fetter: [],
|
||||
star: [],
|
||||
level: [],
|
||||
weapon: [],
|
||||
area: [],
|
||||
element: [],
|
||||
};
|
||||
selectedList.value = getOrderedList(roleList.value);
|
||||
showSnackbar.success("已重置筛选条件");
|
||||
if (!dataVal.value) return;
|
||||
@@ -551,6 +560,10 @@ function handleSelect(val: UavSelectModel): void {
|
||||
if (!val.level.includes("true") && role.avatar.level >= 70) return false;
|
||||
if (!val.level.includes("false") && role.avatar.level < 70) return false;
|
||||
}
|
||||
if (val.fetter.length > 0) {
|
||||
if (!val.fetter.includes("true") && role.avatar.fetter === 10) return false;
|
||||
if (!val.fetter.includes("false") && role.avatar.fetter !== 10) 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