update:补充乱斗语音

This commit is contained in:
2026-07-03 17:03:51 +08:00
parent 8c6374b2c5
commit 6aa3c6fd6c
5 changed files with 47 additions and 15 deletions
+1
View File
@@ -236,6 +236,7 @@ onShow(async () => {
:tips="tips"
:total="90"
:melee="true"
:halfRest="halfRest"
:battleId="battleId"
/>
<view v-if="start" class="user-row">
+37 -13
View File
@@ -145,6 +145,23 @@ const getMenuPrice = (item) => {
return value ? String(value).replace("¥", "").replace("¥", "") : "";
};
const getMenuSortValue = (item) => {
const value = item && item.sort;
if (value === undefined || value === null || value === "") return Number.MAX_SAFE_INTEGER;
const sort = Number(value);
return Number.isFinite(sort) ? sort : Number.MAX_SAFE_INTEGER;
};
const sortMenusBySort = (menus = []) => {
return menus
.map((item, index) => ({ item, index }))
.sort((a, b) => {
const sortDiff = getMenuSortValue(a.item) - getMenuSortValue(b.item);
return sortDiff || a.index - b.index;
})
.map(({ item }) => item);
};
const getMenuType = (item) => {
const vipType = Number(item.vipType);
if (vipType === 1) return "normal";
@@ -167,7 +184,7 @@ const getPackageMonths = (name) => {
};
const matchPackageSource = (type, pack, index) => {
const menus = configMenus.value;
const menus = sortMenusBySort(configMenus.value);
const typedMenus = menus.filter((item) => {
const menuType = getMenuType(item);
if (type.key === "super") return menuType === "super";
@@ -184,17 +201,24 @@ const matchPackageSource = (type, pack, index) => {
};
const getPackages = (type) => {
return type.packages.map((item, index) => {
const source = matchPackageSource(type, item, index);
return {
...item,
source,
name: source ? getMenuName(source) || item.name : item.name,
price: source ? getMenuPrice(source) || item.price : item.price,
icon: source && source.icon,
id: source && source.id,
};
});
return type.packages
.map((item, index) => {
const source = matchPackageSource(type, item, index);
return {
...item,
source,
name: source ? getMenuName(source) || item.name : item.name,
price: source ? getMenuPrice(source) || item.price : item.price,
icon: source && source.icon,
id: source && source.id,
};
})
.map((item, index) => ({ item, index }))
.sort((a, b) => {
const sortDiff = getMenuSortValue(a.item.source) - getMenuSortValue(b.item.source);
return sortDiff || a.index - b.index;
})
.map(({ item }) => item);
};
const currentPackages = computed(() => {
@@ -463,7 +487,7 @@ onShow(loadVipConfig);
<view class="package-list">
<view
v-for="(pack, index) in getPackages(type)"
:key="`${type.key}-${pack.name}`"
:key="`${type.key}-${pack.id || pack.name}`"
class="package-card"
:class="{ 'package-card--active': selectedPackageIndex === index }"
@click="selectPackage(index)"