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