|
|
|
|
@ -86,6 +86,10 @@ function publicSourceLabel(row: AdminApplicationRow): string {
|
|
|
|
|
return row.public_source_code || '—'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function submitterName(row: AdminApplicationRow): string {
|
|
|
|
|
return row.submitter_name?.trim() || row.submitter_mobile?.trim() || '—'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function formatDateTime(s: string | null | undefined): string {
|
|
|
|
|
if (!s) return '—'
|
|
|
|
|
const d = new Date(s.includes(' ') ? s.replace(/-/g, '/') : s)
|
|
|
|
|
@ -429,6 +433,8 @@ watch(competitionId, async (cid) => {
|
|
|
|
|
<th>报名渠道</th>
|
|
|
|
|
<th>推荐方</th>
|
|
|
|
|
<th>手机号</th>
|
|
|
|
|
<th>提交人</th>
|
|
|
|
|
<th>提交人手机号</th>
|
|
|
|
|
<th>用户渠道</th>
|
|
|
|
|
<th>附件</th>
|
|
|
|
|
<th>提交时间</th>
|
|
|
|
|
@ -445,10 +451,10 @@ watch(competitionId, async (cid) => {
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<tr v-if="loading">
|
|
|
|
|
<td colspan="19" class="text-center py-4 text-secondary">加载中…</td>
|
|
|
|
|
<td colspan="21" class="text-center py-4 text-secondary">加载中…</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr v-else-if="rows.length === 0">
|
|
|
|
|
<td colspan="19" class="text-center py-4 text-secondary">暂无符合条件的数据</td>
|
|
|
|
|
<td colspan="21" class="text-center py-4 text-secondary">暂无符合条件的数据</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr v-for="(row, idx) in rows" v-else :key="row.id">
|
|
|
|
|
<td class="text-center portal-sticky-left">
|
|
|
|
|
@ -471,6 +477,8 @@ watch(competitionId, async (cid) => {
|
|
|
|
|
<td class="cell-wrap">{{ signupChannelLabel(row) }}</td>
|
|
|
|
|
<td class="cell-wrap">{{ row.recommend || '—' }}</td>
|
|
|
|
|
<td>{{ row.contact_mobile || '—' }}</td>
|
|
|
|
|
<td>{{ submitterName(row) }}</td>
|
|
|
|
|
<td>{{ row.submitter_mobile || '—' }}</td>
|
|
|
|
|
<td class="cell-wrap">{{ publicSourceLabel(row) }}</td>
|
|
|
|
|
<td>{{ row.files_count }}</td>
|
|
|
|
|
<td>{{ formatDateTime(row.submitted_at) }}</td>
|
|
|
|
|
|