增加预览url
This commit is contained in:
parent
f46a95df79
commit
b1bb7a2267
@ -43,6 +43,7 @@ type LevelRow = {
|
||||
id?: number | string;
|
||||
level: number;
|
||||
needEnergy: number;
|
||||
previewRocketUrl: string;
|
||||
rocketAnimationUrl: string;
|
||||
rocketIconUrl: string;
|
||||
shakeThresholdPercent: string;
|
||||
@ -75,6 +76,11 @@ type ResourceOption = {
|
||||
type: string;
|
||||
};
|
||||
|
||||
type LevelResourceField =
|
||||
| 'previewRocketUrl'
|
||||
| 'rocketAnimationUrl'
|
||||
| 'rocketIconUrl';
|
||||
|
||||
const accessStore = useAccessStore();
|
||||
const sysOriginOptions = computed(() => {
|
||||
const options = getAllowedSysOrigins(accessStore.accessCodes || []);
|
||||
@ -116,7 +122,7 @@ const resourcePickerDefaultType = ref('ALL_PROPS');
|
||||
const resourcePickerFixedType = ref(false);
|
||||
const resourcePickerTarget = ref<
|
||||
| {
|
||||
field: 'rocketAnimationUrl' | 'rocketIconUrl';
|
||||
field: LevelResourceField;
|
||||
kind: 'level';
|
||||
row: Record<string, any>;
|
||||
}
|
||||
@ -169,6 +175,12 @@ const statusMeta = computed(() => {
|
||||
const levelColumns = [
|
||||
{ dataIndex: 'level', key: 'level', title: '等级', width: 90 },
|
||||
{ dataIndex: 'needEnergy', key: 'needEnergy', title: '所需能量', width: 160 },
|
||||
{
|
||||
dataIndex: 'previewRocketUrl',
|
||||
key: 'previewRocketUrl',
|
||||
title: '预览火箭',
|
||||
width: 260,
|
||||
},
|
||||
{ dataIndex: 'rocketIconUrl', key: 'rocketIconUrl', title: '火箭图标', width: 260 },
|
||||
{
|
||||
dataIndex: 'rocketAnimationUrl',
|
||||
@ -200,6 +212,7 @@ function createDefaultLevel(level: number): LevelRow {
|
||||
enabled: true,
|
||||
level,
|
||||
needEnergy: level * 100,
|
||||
previewRocketUrl: '',
|
||||
rocketAnimationUrl: '',
|
||||
rocketIconUrl: '',
|
||||
shakeThresholdPercent: '95.0000',
|
||||
@ -284,6 +297,7 @@ function normalizeLevelRows(rows: Array<Record<string, any>> | undefined) {
|
||||
enabled: row.enabled === undefined ? true : Boolean(row.enabled),
|
||||
id: row.id,
|
||||
needEnergy: toNumber(row.needEnergy, level * 100),
|
||||
previewRocketUrl: String(row.previewRocketUrl || ''),
|
||||
rocketAnimationUrl: String(row.rocketAnimationUrl || ''),
|
||||
rocketIconUrl: String(row.rocketIconUrl || ''),
|
||||
shakeThresholdPercent: String(row.shakeThresholdPercent || '95.0000'),
|
||||
@ -337,15 +351,19 @@ function isRewardResourceDisabled(row: Record<string, any>) {
|
||||
|
||||
function openLevelResourcePicker(
|
||||
row: Record<string, any>,
|
||||
field: 'rocketAnimationUrl' | 'rocketIconUrl',
|
||||
field: LevelResourceField,
|
||||
) {
|
||||
resourcePickerTarget.value = {
|
||||
field,
|
||||
kind: 'level',
|
||||
row,
|
||||
};
|
||||
resourcePickerTitle.value =
|
||||
field === 'rocketIconUrl' ? '选择火箭图标资源' : '选择发射动画资源';
|
||||
const titleMap: Record<LevelResourceField, string> = {
|
||||
previewRocketUrl: '选择预览火箭资源',
|
||||
rocketAnimationUrl: '选择发射动画资源',
|
||||
rocketIconUrl: '选择火箭图标资源',
|
||||
};
|
||||
resourcePickerTitle.value = titleMap[field];
|
||||
resourcePickerDefaultType.value = 'ALL_PROPS';
|
||||
resourcePickerFixedType.value = false;
|
||||
resourcePickerOpen.value = true;
|
||||
@ -371,7 +389,7 @@ function openRewardResourcePicker(row: Record<string, any>) {
|
||||
|
||||
function clearLevelResource(
|
||||
row: Record<string, any>,
|
||||
field: 'rocketAnimationUrl' | 'rocketIconUrl',
|
||||
field: LevelResourceField,
|
||||
) {
|
||||
row[field] = '';
|
||||
}
|
||||
@ -398,9 +416,9 @@ function handleResourceSelect(item: ResourceOption) {
|
||||
}
|
||||
if (target.kind === 'level') {
|
||||
const value =
|
||||
target.field === 'rocketIconUrl'
|
||||
? String(item.cover || item.sourceUrl || '')
|
||||
: String(item.sourceUrl || item.cover || '');
|
||||
target.field === 'rocketAnimationUrl'
|
||||
? String(item.sourceUrl || item.cover || '')
|
||||
: String(item.cover || item.sourceUrl || '');
|
||||
target.row[target.field] = value;
|
||||
} else {
|
||||
target.row.rewardItemId = item.id;
|
||||
@ -507,6 +525,7 @@ async function saveLevels() {
|
||||
id: row.id,
|
||||
level: row.level,
|
||||
needEnergy: toNumber(row.needEnergy, row.level * 100),
|
||||
previewRocketUrl: row.previewRocketUrl,
|
||||
rocketAnimationUrl: row.rocketAnimationUrl,
|
||||
rocketIconUrl: row.rocketIconUrl,
|
||||
shakeThresholdPercent: row.shakeThresholdPercent,
|
||||
@ -783,7 +802,7 @@ watch(rewardLevel, () => {
|
||||
:data-source="levelRows"
|
||||
:loading="levelLoading"
|
||||
:pagination="false"
|
||||
:scroll="{ x: 1240 }"
|
||||
:scroll="{ x: 1500 }"
|
||||
row-key="level"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
@ -798,6 +817,36 @@ watch(rewardLevel, () => {
|
||||
class="table-number"
|
||||
/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'previewRocketUrl'">
|
||||
<div class="resource-cell">
|
||||
<div class="resource-cell__preview">
|
||||
<img
|
||||
v-if="record.previewRocketUrl"
|
||||
:src="record.previewRocketUrl"
|
||||
alt=""
|
||||
/>
|
||||
<span>{{ resourceUrlName(record.previewRocketUrl) }}</span>
|
||||
</div>
|
||||
<Space>
|
||||
<Button
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="
|
||||
openLevelResourcePicker(record, 'previewRocketUrl')
|
||||
"
|
||||
>
|
||||
{{ record.previewRocketUrl ? '更换资源' : '选择资源' }}
|
||||
</Button>
|
||||
<Button
|
||||
v-if="record.previewRocketUrl"
|
||||
size="small"
|
||||
@click="clearLevelResource(record, 'previewRocketUrl')"
|
||||
>
|
||||
清除
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'rocketIconUrl'">
|
||||
<div class="resource-cell">
|
||||
<div class="resource-cell__preview">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user