优化历史包袱,修复发布页面默认0 恢哈伏笔

This commit is contained in:
yml2213
2026-05-23 09:41:45 +08:00
parent d1f46fd02e
commit 40f5252b2e
12 changed files with 101 additions and 335 deletions
@@ -28,7 +28,7 @@ function isNavActive(path: string) {
const form = reactive({
server_region: "",
face_owner: "",
haf_coin_amount: 0,
haf_coin_amount: "" as number | "",
rank_level: "",
secret_kd: "",
fire_level: "" as number | "",
@@ -43,9 +43,7 @@ const form = reactive({
deposit_amount: "" as number | "",
ratio: "" as number | "",
final_price: 0,
settlement_amount: 0,
rent_days: 0,
daily_loss: "",
remark: "",
});
@@ -94,6 +92,9 @@ const screenshotSlots = computed(() => publishOptions.value.screenshot_slots);
const screenshotUrls = computed(() =>
screenshotSlots.value.map((item) => screenshotFiles[item.key]).filter(Boolean)
);
const dailyLossText = computed(() =>
form.rent_days ? calculateDailyLoss(Number(form.haf_coin_amount || 0)) : ""
);
onMounted(loadPublishOptions);
@@ -174,9 +175,7 @@ function calculatePrice() {
const finalPrice = roundMoney(coinWan / ratio);
const rentDays = coinWan >= 30000 ? 7 : coinWan >= 10000 ? 3 : 1;
form.final_price = finalPrice;
form.settlement_amount = finalPrice;
form.rent_days = rentDays;
form.daily_loss = coinWan >= 30000 ? "30M" : coinWan >= 10000 ? "20M" : "10M";
}
async function handleSubmit() {
@@ -232,7 +231,7 @@ function validateForm() {
if (form.deposit_amount === "" || Number(form.deposit_amount) < 0) {
return "请填写押金";
}
if (!form.final_price || !form.settlement_amount || !form.rent_days) {
if (!form.final_price || !form.rent_days) {
return "请先点击计算价格";
}
for (const item of screenshotSlots.value) {
@@ -246,7 +245,6 @@ function validateForm() {
function buildAssetSummary() {
return {
face_owner: form.face_owner,
haf_coin_wan: Number(form.haf_coin_amount),
secret_kd: form.secret_kd,
fire_level: Number(form.fire_level),
season_insurance: form.season_insurance,
@@ -258,7 +256,6 @@ function buildAssetSummary() {
quantity: Number(quantityValues[item.key] || 0),
mode: quantityModes[item.key],
})),
skins: selectedSkins.value,
skin_groups: skinGroups.value.reduce<Record<string, string[]>>((groups, group) => {
groups[group.key] = group.options.filter((skin) =>
selectedSkins.value.includes(skin)
@@ -269,16 +266,8 @@ function buildAssetSummary() {
start: form.online_start,
end: form.online_end,
},
login_method: form.login_method,
ban_record: form.ban_record,
common_regions: form.common_regions,
screenshots: { ...screenshotFiles },
deposit_amount: Number(form.deposit_amount),
ratio: Number(form.ratio),
price: Number(form.final_price),
settlement_amount: Number(form.settlement_amount),
rent_days: Number(form.rent_days),
daily_loss: form.daily_loss,
remark: form.remark,
};
}
@@ -287,6 +276,12 @@ function roundMoney(value: number) {
return Math.round(value * 100) / 100;
}
function calculateDailyLoss(coinWan: number) {
if (coinWan >= 30000) return "30M";
if (coinWan >= 10000) return "20M";
return "10M";
}
function readError(error: unknown, fallback: string) {
if (typeof error === "object" && error && "response" in error) {
const response = (error as { response?: { data?: { message?: string } } })
@@ -642,7 +637,7 @@ function readError(error: unknown, fallback: string) {
class="publish-field result-field"
/>
<van-field
:model-value="form.settlement_amount ? `¥${form.settlement_amount}` : ''"
:model-value="form.final_price ? `¥${form.final_price}` : ''"
label="结算金额"
readonly
required
@@ -657,7 +652,7 @@ function readError(error: unknown, fallback: string) {
class="publish-field result-field"
/>
<van-field
v-model="form.daily_loss"
:model-value="dailyLossText"
label="每日损耗"
readonly
placeholder="自动计算 10M/20M/30M"