第 3 阶段:租号发布与审核

This commit is contained in:
yml
2026-05-22 15:53:50 +08:00
parent b3205cf2a5
commit 9ac65ffad9
18 changed files with 1130 additions and 10 deletions
@@ -0,0 +1,97 @@
<script setup lang="ts">
import { ElMessage } from 'element-plus'
import { reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { createListing } from '@/api/listings'
const router = useRouter()
const loading = ref(false)
const form = reactive({
title: '',
description: '',
server_region: '微信区',
login_platform: 'QQ',
rank_level: '',
haf_coin_amount: 0,
price_hourly: 5,
price_daily: 50,
price_weekly: 300,
deposit_amount: 100,
min_rent_hours: 1,
max_rent_hours: 24,
})
async function handleSubmit() {
loading.value = true
try {
await createListing({ ...form })
ElMessage.success('发布已创建')
await router.push('/seller/listings')
} catch (error) {
ElMessage.error(readError(error, '发布失败,请确认已登录并完成实名认证'))
} finally {
loading.value = false
}
}
function readError(error: unknown, fallback: string) {
if (typeof error === 'object' && error && 'response' in error) {
const response = (error as { response?: { data?: { message?: string } } }).response
return response?.data?.message || fallback
}
return fallback
}
</script>
<template>
<section class="page">
<div class="page-header">
<p class="eyebrow">Create Listing</p>
<h1>发布账号</h1>
<p>一期先记录账号资产说明和哈夫币填报值下单时会生成订单资产快照</p>
</div>
<el-form class="listing-form" label-position="top">
<el-form-item label="标题">
<el-input v-model="form.title" placeholder="例如:高段位哈夫币充足账号" />
</el-form-item>
<el-form-item label="账号说明">
<el-input v-model="form.description" type="textarea" :rows="3" />
</el-form-item>
<div class="form-grid">
<el-form-item label="区服">
<el-input v-model="form.server_region" />
</el-form-item>
<el-form-item label="平台">
<el-input v-model="form.login_platform" />
</el-form-item>
<el-form-item label="段位">
<el-input v-model="form.rank_level" />
</el-form-item>
<el-form-item label="哈夫币数量">
<el-input-number v-model="form.haf_coin_amount" :min="0" />
</el-form-item>
<el-form-item label="时租">
<el-input-number v-model="form.price_hourly" :min="1" />
</el-form-item>
<el-form-item label="日租">
<el-input-number v-model="form.price_daily" :min="0" />
</el-form-item>
<el-form-item label="周租">
<el-input-number v-model="form.price_weekly" :min="0" />
</el-form-item>
<el-form-item label="押金">
<el-input-number v-model="form.deposit_amount" :min="0" />
</el-form-item>
<el-form-item label="最短租期(小时)">
<el-input-number v-model="form.min_rent_hours" :min="1" />
</el-form-item>
<el-form-item label="最长租期(小时)">
<el-input-number v-model="form.max_rent_hours" :min="form.min_rent_hours" />
</el-form-item>
</div>
<el-button type="primary" :loading="loading" @click="handleSubmit">保存发布</el-button>
</el-form>
</section>
</template>