([])
const applicationsLoading = ref(false)
@@ -117,6 +121,7 @@ const applicationFilters = ref({
status: 'submitted',
track: '',
signup_channel_id: undefined as number | undefined,
+ public_source_channel_id: undefined as number | undefined,
})
const trackDialogVisible = ref(false)
@@ -289,6 +294,7 @@ watch(tabKey, (t) => {
if (t === 'channels') void refreshChannels()
if (t === 'applications') {
void refreshChannels()
+ void refreshPublicSourceChannels()
void refreshApplications()
}
if (t === 'signupForm') void refreshSignupSchemas()
@@ -637,6 +643,18 @@ async function refreshChannels() {
}
}
+async function refreshPublicSourceChannels() {
+ publicSourceChannelsLoading.value = true
+ try {
+ publicSourceChannels.value = await listPublicSourceChannels()
+ } catch (e) {
+ publicSourceChannels.value = []
+ ElMessage.error(e instanceof Error ? e.message : '加载用户渠道列表失败')
+ } finally {
+ publicSourceChannelsLoading.value = false
+ }
+}
+
function applicationStatusLabel(status: string): string {
if (status === 'submitted') return '已提交'
if (status === 'draft') return '草稿'
@@ -714,6 +732,7 @@ async function refreshApplications(page = applicationPager.value.page) {
status: applicationFilters.value.status || undefined,
track: applicationFilters.value.track || undefined,
signup_channel_id: applicationFilters.value.signup_channel_id || undefined,
+ public_source_channel_id: applicationFilters.value.public_source_channel_id || undefined,
})
applications.value = res.data
applicationPager.value = {
@@ -730,7 +749,13 @@ async function refreshApplications(page = applicationPager.value.page) {
}
function resetApplicationFilters() {
- applicationFilters.value = { keyword: '', status: 'submitted', track: '', signup_channel_id: undefined }
+ applicationFilters.value = {
+ keyword: '',
+ status: 'submitted',
+ track: '',
+ signup_channel_id: undefined,
+ public_source_channel_id: undefined,
+ }
void refreshApplications(1)
}
@@ -752,6 +777,7 @@ async function exportApplications(mode: AdminApplicationExportMode) {
status: applicationFilters.value.status || undefined,
track: applicationFilters.value.track || undefined,
signup_channel_id: applicationFilters.value.signup_channel_id || undefined,
+ public_source_channel_id: applicationFilters.value.public_source_channel_id || undefined,
application_ids:
mode === 'selected' ? selectedApplications.value.map((row) => row.id) : undefined,
},
@@ -1430,7 +1456,7 @@ onMounted(() => {
{
:value="channel.id"
/>
+
+
+
@@ -1499,7 +1541,7 @@ onMounted(() => {
-
+
{{
@@ -2207,7 +2249,7 @@ onMounted(() => {
.application-filters {
display: grid;
- grid-template-columns: minmax(220px, 1fr) 130px 130px minmax(180px, 220px);
+ grid-template-columns: minmax(220px, 1fr) repeat(4, minmax(130px, 180px));
gap: 8px;
align-items: center;
}