优化多个对话框组件的布局,添加图标以提升用户体验,调整部分文本提示,确保一致性和可读性。

This commit is contained in:
jxxghp
2025-05-27 17:40:20 +08:00
parent 3b5220af57
commit e6f537ca3a
13 changed files with 223 additions and 129 deletions

View File

@@ -200,7 +200,14 @@ onUnmounted(() => {
max-width="40rem"
:fullscreen="!display.mdAndUp.value"
>
<VCard :title="`${props.downloader.name} - ${t('downloader.title')}`">
<VCard>
<VCardItem class="py-2">
<template #prepend>
<VIcon icon="mdi-download" class="me-2" />
</template>
<VCardTitle>{{ t('downloader.title') }}</VCardTitle>
<VCardSubtitle>{{ props.downloader.name }}</VCardSubtitle>
</VCardItem>
<VDialogCloseBtn v-model="downloaderInfoDialog" />
<VDivider />
<VCardText>
@@ -226,6 +233,7 @@ onUnmounted(() => {
:hint="t('downloader.name')"
persistent-hint
active
prepend-inner-icon="mdi-label"
/>
</VCol>
<VCol cols="12" md="6">
@@ -236,6 +244,7 @@ onUnmounted(() => {
:hint="t('downloader.host')"
persistent-hint
active
prepend-inner-icon="mdi-server"
/>
</VCol>
<VCol cols="12" md="6">
@@ -245,6 +254,7 @@ onUnmounted(() => {
:hint="t('downloader.username')"
persistent-hint
active
prepend-inner-icon="mdi-account"
/>
</VCol>
<VCol cols="12" md="6">
@@ -255,6 +265,7 @@ onUnmounted(() => {
:hint="t('downloader.password')"
persistent-hint
active
prepend-inner-icon="mdi-lock"
/>
</VCol>
<VCol cols="12" md="6">
@@ -303,6 +314,7 @@ onUnmounted(() => {
:hint="t('downloader.name')"
persistent-hint
active
prepend-inner-icon="mdi-label"
/>
</VCol>
<VCol cols="12" md="6">
@@ -313,6 +325,7 @@ onUnmounted(() => {
:hint="t('downloader.host')"
persistent-hint
active
prepend-inner-icon="mdi-server"
/>
</VCol>
<VCol cols="12" md="6">
@@ -322,6 +335,7 @@ onUnmounted(() => {
:hint="t('downloader.username')"
persistent-hint
active
prepend-inner-icon="mdi-account"
/>
</VCol>
<VCol cols="12" md="6">
@@ -332,6 +346,7 @@ onUnmounted(() => {
:hint="t('downloader.password')"
persistent-hint
active
prepend-inner-icon="mdi-lock"
/>
</VCol>
</VRow>
@@ -343,6 +358,7 @@ onUnmounted(() => {
:hint="t('downloader.customTypeHint')"
persistent-hint
active
prepend-inner-icon="mdi-cog"
/>
</VCol>
<VCol cols="12" md="6">
@@ -352,6 +368,7 @@ onUnmounted(() => {
:hint="t('downloader.nameRequired')"
persistent-hint
active
prepend-inner-icon="mdi-label"
/>
</VCol>
</VRow>

View File

@@ -598,27 +598,16 @@ watch(
:fullscreen="!display.mdAndUp.value"
>
<VCard>
<VCardTitle class="d-flex align-center pa-4">
<VIcon icon="mdi-content-copy" class="me-3" color="primary" />
<div>
<div class="text-h6">{{ t('plugin.cloneTitle') }}</div>
<div class="text-caption text-medium-emphasis">
{{ t('plugin.cloneSubtitle', { name: props.plugin?.plugin_name }) }}
</div>
</div>
</VCardTitle>
<VCardItem class="py-2">
<template #prepend>
<VIcon icon="mdi-content-copy" class="me-2" />
</template>
<VCardTitle>{{ t('plugin.cloneTitle') }}</VCardTitle>
<VCardSubtitle>{{ t('plugin.cloneSubtitle', { name: props.plugin?.plugin_name }) }}</VCardSubtitle>
</VCardItem>
<VDialogCloseBtn @click="pluginCloneDialog = false" />
<VDivider />
<VCardText class="pa-4">
<!-- 功能说明 -->
<VAlert type="info" variant="tonal" density="compact" class="mb-4" icon="mdi-information-outline">
<div class="text-body-2">
<strong>{{ t('plugin.cloneFeature') }}</strong
>{{ t('plugin.cloneDescription') }}
</div>
</VAlert>
<VCardText>
<VForm>
<VRow>
<VCol cols="12" md="6">
@@ -650,13 +639,12 @@ watch(
</VCol>
<VCol cols="12">
<VTextarea
<VTextField
v-model="cloneForm.description"
:label="t('plugin.cloneDescriptionLabel')"
:placeholder="t('plugin.cloneDescriptionPlaceholder')"
:hint="t('plugin.cloneDescriptionHint')"
persistent-hint
rows="2"
prepend-inner-icon="mdi-text"
/>
</VCol>

View File

@@ -74,11 +74,11 @@ function handleDropToFolder(event: DragEvent) {
</script>
<template>
<div class="mixed-sort-card-wrapper">
<div class="mixed-sort-card-wrapper h-full">
<!-- 文件夹卡片 -->
<div
v-if="item.type === 'folder'"
class="drop-zone"
class="drop-zone h-full"
:data-plugin-id="item.id"
@dragover="handleDragOver"
@dragenter="handleDragEnter"
@@ -97,7 +97,7 @@ function handleDropToFolder(event: DragEvent) {
</div>
<!-- 插件卡片 -->
<div v-else-if="item.type === 'plugin'" class="plugin-item-wrapper" :data-plugin-id="item.id">
<div v-else-if="item.type === 'plugin'" class="plugin-item-wrapper h-full" :data-plugin-id="item.id">
<PluginCard
:count="pluginStatistics[item.id] || 0"
:plugin="item.data"

View File

@@ -134,69 +134,75 @@ onMounted(() => {
<template>
<VDialog max-width="35rem" scrollable>
<VCard>
<VCardTitle class="py-4 me-12">
<VIcon icon="mdi-download" class="me-2" />
<span v-if="title">{{ torrent?.site_name }} - {{ title }}</span>
<span v-else>{{ t('dialog.addDownload.confirmDownload') }}</span>
</VCardTitle>
<VCardItem class="py-2">
<template #prepend>
<VIcon icon="mdi-monitor-arrow-down-variant" class="me-2" />
</template>
<VCardTitle>{{ t('dialog.addDownload.confirmDownload') }}</VCardTitle>
<VCardSubtitle>{{ torrent?.site_name }} - {{ title }}</VCardSubtitle>
</VCardItem>
<VDialogCloseBtn @click="emit('close')" />
<VDivider />
<VList lines="one">
<VListItem>
<template #prepend>
<VIcon icon="mdi-web"></VIcon>
</template>
<VListItemTitle>
<span class="whitespace-break-spaces me-2">{{ torrent?.title }}</span>
<span class="text-green-700 ms-2 text-sm">{{ torrent?.seeders }}</span>
<span class="text-orange-700 ms-2 text-sm">{{ torrent?.peers }}</span>
</VListItemTitle>
</VListItem>
<VListItem v-if="torrent?.description">
<template #prepend>
<VIcon icon="mdi-subtitles-outline"></VIcon>
</template>
<VListItemTitle>
<span class="text-body-2 whitespace-break-spaces">{{ torrent?.description }}</span>
</VListItemTitle>
</VListItem>
<VListItem v-if="torrent?.size">
<template #prepend>
<VIcon icon="mdi-database"></VIcon>
</template>
<VListItemTitle>
<span class="text-body-2">
<VChip variant="tonal" label>
{{ formatFileSize(torrent?.size || 0) }}
</VChip>
</span>
</VListItemTitle>
</VListItem>
</VList>
<VRow class="px-7">
<VCol cols="12" md="4">
<VSelect
v-model="selectedDownloader"
:items="downloaderOptions"
size="small"
:label="t('dialog.addDownload.downloader')"
variant="underlined"
:placeholder="t('dialog.addDownload.defaultPlaceholder')"
density="compact"
/>
</VCol>
<VCol cols="12" md="8">
<VCombobox
v-model="selectedDirectory"
:items="targetDirectories"
:label="t('dialog.addDownload.saveDirectory')"
size="small"
:placeholder="t('dialog.addDownload.autoPlaceholder')"
variant="underlined"
density="compact"
/>
</VCol>
</VRow>
<VCardText>
<VList lines="one">
<VListItem>
<template #prepend>
<VIcon icon="mdi-web"></VIcon>
</template>
<VListItemTitle>
<span class="whitespace-break-spaces me-2">{{ torrent?.title }}</span>
<span class="text-green-700 ms-2 text-sm">{{ torrent?.seeders }}</span>
<span class="text-orange-700 ms-2 text-sm">{{ torrent?.peers }}</span>
</VListItemTitle>
</VListItem>
<VListItem v-if="torrent?.description">
<template #prepend>
<VIcon icon="mdi-subtitles-outline"></VIcon>
</template>
<VListItemTitle>
<span class="text-body-2 whitespace-break-spaces">{{ torrent?.description }}</span>
</VListItemTitle>
</VListItem>
<VListItem v-if="torrent?.size">
<template #prepend>
<VIcon icon="mdi-database"></VIcon>
</template>
<VListItemTitle>
<span class="text-body-2">
<VChip variant="tonal" label>
{{ formatFileSize(torrent?.size || 0) }}
</VChip>
</span>
</VListItemTitle>
</VListItem>
</VList>
<VRow class="px-5">
<VCol cols="12" md="6">
<VSelect
v-model="selectedDownloader"
:items="downloaderOptions"
size="small"
:label="t('dialog.addDownload.downloader')"
variant="underlined"
:placeholder="t('dialog.addDownload.defaultPlaceholder')"
density="comfortable"
prepend-inner-icon="mdi-download"
/>
</VCol>
<VCol cols="12" md="6">
<VCombobox
v-model="selectedDirectory"
:items="targetDirectories"
:label="t('dialog.addDownload.saveDirectory')"
size="small"
:placeholder="t('dialog.addDownload.autoPlaceholder')"
variant="underlined"
density="comfortable"
prepend-inner-icon="mdi-folder"
/>
</VCol>
</VRow>
</VCardText>
<VCardText class="text-center">
<VBtn variant="elevated" :disabled="loading" @click="addDownload" :prepend-icon="icon" class="px-5">
{{ buttonText }}

View File

@@ -25,10 +25,16 @@ function handleImport() {
<template>
<VDialog width="40rem" scrollable max-height="85vh">
<VCard :title="props.title">
<VCard>
<VCardItem>
<template #prepend>
<VIcon icon="mdi-code-json" class="me-2" />
</template>
<VCardTitle>{{ props.title }}</VCardTitle>
</VCardItem>
<VDialogCloseBtn @click="emit('close')" />
<VCardText class="pt-2">
<VTextarea v-model="codeString" />
<VTextarea v-model="codeString" prepend-inner-icon="mdi-code-json" />
</VCardText>
<VCardActions>
<VSpacer />

View File

@@ -82,15 +82,18 @@ const storageOptions = computed(() => {
// 标题
const dialogTitle = computed(() => {
return t('dialog.reorganize.manualTitle')
})
// 副标题
const dialogSubtitle = computed(() => {
if (props.items) {
if (props.items.length > 1) return t('dialog.reorganize.multipleItemsTitle', { count: props.items.length })
return t('dialog.reorganize.singleItemTitle', { path: props.items[0].path })
} else if (props.logids) {
return t('dialog.reorganize.multipleItemsTitle', { count: props.logids.length })
}
return t('dialog.reorganize.manualTitle')
})
// 禁用指定集数
const disableEpisodeDetail = computed(() => {
if (props.items) {
@@ -250,7 +253,12 @@ onUnmounted(() => {
<template>
<VDialog scrollable max-width="45rem" :fullscreen="!display.mdAndUp.value">
<VCard :title="dialogTitle">
<VCard>
<VCardItem class="py-2">
<template #prepend> <VIcon icon="mdi-folder-move" class="me-2" /> </template>
<VCardTitle>{{ dialogTitle }}</VCardTitle>
<VCardSubtitle>{{ dialogSubtitle }}</VCardSubtitle>
</VCardItem>
<VDialogCloseBtn @click="emit('close')" />
<VDivider />
<VCardText>
@@ -264,6 +272,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.targetPathPlaceholder')"
:hint="t('dialog.reorganize.targetStorageHint')"
persistent-hint
prepend-inner-icon="mdi-harddisk"
/>
</VCol>
<VCol cols="12" md="6">
@@ -273,6 +282,7 @@ onUnmounted(() => {
:items="transferTypeOptions"
:hint="t('dialog.reorganize.transferTypeHint')"
persistent-hint
prepend-inner-icon="mdi-swap-horizontal"
>
<template v-slot:selection="{ item }">
{{ transferForm.transfer_type === '' ? t('dialog.reorganize.auto') : item.title }}
@@ -287,6 +297,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.targetPathPlaceholder')"
:hint="t('dialog.reorganize.targetPathHint')"
persistent-hint
prepend-inner-icon="mdi-folder-outline"
/>
</VCol>
</VRow>
@@ -302,6 +313,7 @@ onUnmounted(() => {
]"
:hint="t('dialog.reorganize.mediaTypeHint')"
persistent-hint
prepend-inner-icon="mdi-movie-open"
/>
</VCol>
<VCol cols="12" md="6">
@@ -315,6 +327,7 @@ onUnmounted(() => {
append-inner-icon="mdi-magnify"
:hint="t('dialog.reorganize.mediaIdHint')"
persistent-hint
prepend-inner-icon="mdi-identifier"
@click:append-inner="mediaSelectorDialog = true"
/>
<VTextField
@@ -327,6 +340,7 @@ onUnmounted(() => {
append-inner-icon="mdi-magnify"
:hint="t('dialog.reorganize.mediaIdHint')"
persistent-hint
prepend-inner-icon="mdi-identifier"
@click:append-inner="mediaSelectorDialog = true"
/>
</VCol>
@@ -339,6 +353,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.episodeGroupPlaceholder')"
:hint="t('dialog.reorganize.episodeGroupHint')"
persistent-hint
prepend-inner-icon="mdi-view-list"
/>
</VCol>
<VCol cols="12" md="3">
@@ -348,6 +363,7 @@ onUnmounted(() => {
:items="seasonItems"
:hint="t('dialog.reorganize.seasonHint')"
persistent-hint
prepend-inner-icon="mdi-calendar"
/>
</VCol>
<VCol cols="12" md="3">
@@ -358,6 +374,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.episodeDetailPlaceholder')"
:hint="t('dialog.reorganize.episodeDetailHint')"
persistent-hint
prepend-inner-icon="mdi-playlist-play"
/>
</VCol>
<VCol cols="12" md="6">
@@ -367,6 +384,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.episodeFormatPlaceholder')"
:hint="t('dialog.reorganize.episodeFormatHint')"
persistent-hint
prepend-inner-icon="mdi-format-text"
/>
</VCol>
<VCol cols="12" md="6">
@@ -376,6 +394,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.episodeOffsetPlaceholder')"
:hint="t('dialog.reorganize.episodeOffsetHint')"
persistent-hint
prepend-inner-icon="mdi-numeric"
/>
</VCol>
</VRow>
@@ -387,6 +406,7 @@ onUnmounted(() => {
:placeholder="t('dialog.reorganize.episodePartPlaceholder')"
:hint="t('dialog.reorganize.episodePartHint')"
persistent-hint
prepend-inner-icon="mdi-file-multiple"
/>
</VCol>
<VCol cols="12" md="6">
@@ -397,6 +417,7 @@ onUnmounted(() => {
placeholder="0"
:hint="t('dialog.reorganize.minFileSizeHint')"
persistent-hint
prepend-inner-icon="mdi-file-document-outline"
/>
</VCol>
</VRow>

View File

@@ -148,11 +148,14 @@ onMounted(async () => {
<template>
<VDialog scrollable :close-on-back="false" eager max-width="45rem" :fullscreen="!display.mdAndUp.value">
<VCard
:title="`${props.oper === 'add' ? t('site.actions.add') : t('site.actions.edit')}${t('site.title')}${
props.oper !== 'add' ? ` - ${siteForm.name}` : ''
}`"
>
<VCard>
<VCardItem :class="props.oper === 'add' ? 'py-3' : 'py-2'">
<template #prepend>
<VIcon :icon="oper == 'add' ? 'mdi-web-plus' : 'mdi-web'" class="me-2" />
</template>
<VCardTitle>{{ `${props.oper === 'add' ? t('site.actions.add') : t('site.actions.edit')}` }}</VCardTitle>
<VCardSubtitle>{{ siteForm.name }}</VCardSubtitle>
</VCardItem>
<VDialogCloseBtn @click="emit('close')" />
<VDivider />
<VCardText>
@@ -165,6 +168,7 @@ onMounted(async () => {
:rules="[requiredValidator]"
:hint="t('site.hints.url')"
persistent-hint
prepend-inner-icon="mdi-web"
/>
</VCol>
<VCol cols="6" md="3">
@@ -175,6 +179,7 @@ onMounted(async () => {
:rules="[requiredValidator]"
:hint="t('site.hints.priority')"
persistent-hint
prepend-inner-icon="mdi-priority-high"
/>
</VCol>
<VCol cols="6" md="3">
@@ -184,6 +189,7 @@ onMounted(async () => {
:label="t('site.fields.status')"
:hint="t('site.hints.status')"
persistent-hint
prepend-inner-icon="mdi-toggle-switch"
/>
</VCol>
</VRow>
@@ -194,6 +200,7 @@ onMounted(async () => {
:label="t('site.fields.rss')"
:hint="t('site.hints.rss')"
persistent-hint
prepend-inner-icon="mdi-rss"
/>
</VCol>
<VCol cols="12" md="3">
@@ -202,6 +209,7 @@ onMounted(async () => {
:label="t('site.fields.timeout')"
:hint="t('site.hints.timeout')"
persistent-hint
prepend-inner-icon="mdi-timer"
/>
</VCol>
<VCol cols="6" md="3">
@@ -211,6 +219,7 @@ onMounted(async () => {
:items="downloaderOptions"
:hint="t('site.hints.downloader')"
persistent-hint
prepend-inner-icon="mdi-download"
/>
</VCol>
</VRow>
@@ -237,6 +246,7 @@ onMounted(async () => {
:label="t('site.fields.cookie')"
:hint="t('site.hints.cookie')"
persistent-hint
prepend-inner-icon="mdi-cookie"
/>
</VCol>
<VCol cols="12">
@@ -245,6 +255,7 @@ onMounted(async () => {
:label="t('site.fields.userAgent')"
:hint="t('site.hints.userAgent')"
persistent-hint
prepend-inner-icon="mdi-web-box"
/>
</VCol>
</VRow>
@@ -257,6 +268,7 @@ onMounted(async () => {
:label="t('site.fields.authorization')"
:hint="t('site.hints.authorization')"
persistent-hint
prepend-inner-icon="mdi-key"
/>
</VCol>
<VCol cols="12" md="6">
@@ -265,6 +277,7 @@ onMounted(async () => {
:label="t('site.fields.apiKey')"
:hint="t('site.hints.apiKey')"
persistent-hint
prepend-inner-icon="mdi-api"
/>
</VCol>
</VRow>
@@ -283,6 +296,7 @@ onMounted(async () => {
:rules="[numberValidator]"
:hint="t('site.hints.limitInterval')"
persistent-hint
prepend-inner-icon="mdi-clock-outline"
/>
</VCol>
<VCol cols="12" md="4">
@@ -292,6 +306,7 @@ onMounted(async () => {
:rules="[numberValidator]"
:hint="t('site.hints.limitCount')"
persistent-hint
prepend-inner-icon="mdi-counter"
/>
</VCol>
<VCol cols="12" md="4">
@@ -301,6 +316,7 @@ onMounted(async () => {
:rules="[numberValidator]"
:hint="t('site.hints.limitSeconds')"
persistent-hint
prepend-inner-icon="mdi-timer-sand"
/>
</VCol>
</VRow>

View File

@@ -281,18 +281,24 @@ onMounted(() => {
<template>
<VDialog scrollable max-width="45rem" :fullscreen="!display.mdAndUp.value">
<VCard
:title="
props.default
? t('dialog.subscribeEdit.titleDefault')
: t('dialog.subscribeEdit.titleEditFormat', {
name: subscribeForm.name,
season: subscribeForm.season
? t('dialog.subscribeEdit.seasonFormat', { number: subscribeForm.season })
: '',
})
"
>
<VCard>
<VCardItem class="py-2">
<template #prepend>
<VIcon icon="mdi-clipboard-list-outline" class="me-2" />
</template>
<VCardTitle>
{{ props.default ? t('dialog.subscribeEdit.titleDefault') : t('dialog.subscribeEdit.titleEdit') }}
</VCardTitle>
<VCardSubtitle v-if="!props.default">
{{ subscribeForm.name }}
<span v-if="subscribeForm.season">
{{ t('dialog.subscribeEdit.seasonFormat', { number: subscribeForm.season }) }}
</span>
</VCardSubtitle>
<VCardSubtitle v-else>
{{ props.type }}
</VCardSubtitle>
</VCardItem>
<VCardText>
<VDialogCloseBtn @click="emit('close')" />
<VForm @submit.prevent="() => {}">
@@ -314,6 +320,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.searchKeyword')"
:hint="t('dialog.subscribeEdit.searchKeywordHint')"
persistent-hint
prepend-inner-icon="mdi-magnify"
/>
</VCol>
<VCol v-if="subscribeForm.type === '电视剧'" cols="12" md="4">
@@ -323,6 +330,7 @@ onMounted(() => {
:rules="[numberValidator]"
:hint="t('dialog.subscribeEdit.totalEpisodeHint')"
persistent-hint
prepend-inner-icon="mdi-playlist-play"
/>
</VCol>
<VCol v-if="subscribeForm.type === '电视剧'" cols="12" md="4">
@@ -332,6 +340,7 @@ onMounted(() => {
:rules="[numberValidator]"
:hint="t('dialog.subscribeEdit.startEpisodeHint')"
persistent-hint
prepend-inner-icon="mdi-play-circle-outline"
/>
</VCol>
</VRow>
@@ -343,6 +352,7 @@ onMounted(() => {
:items="qualityOptions"
:hint="t('dialog.subscribeEdit.qualityHint')"
persistent-hint
prepend-inner-icon="mdi-quality-high"
/>
</VCol>
<VCol cols="12" md="4">
@@ -352,6 +362,7 @@ onMounted(() => {
:items="resolutionOptions"
:hint="t('dialog.subscribeEdit.resolutionHint')"
persistent-hint
prepend-inner-icon="mdi-monitor"
/>
</VCol>
<VCol cols="12" md="4">
@@ -361,6 +372,7 @@ onMounted(() => {
:items="effectOptions"
:hint="t('dialog.subscribeEdit.effectHint')"
persistent-hint
prepend-inner-icon="mdi-auto-fix"
/>
</VCol>
</VRow>
@@ -375,6 +387,7 @@ onMounted(() => {
clearable
:hint="t('dialog.subscribeEdit.subscribeSitesHint')"
persistent-hint
prepend-inner-icon="mdi-web"
/>
</VCol>
</VRow>
@@ -386,6 +399,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.downloader')"
:hint="t('dialog.subscribeEdit.downloaderHint')"
persistent-hint
prepend-inner-icon="mdi-download"
/>
</VCol>
<VCol cols="12" md="6">
@@ -395,6 +409,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.savePath')"
:hint="t('dialog.subscribeEdit.savePathHint')"
persistent-hint
prepend-inner-icon="mdi-folder"
/>
</VCol>
</VRow>
@@ -435,6 +450,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.include')"
:hint="t('dialog.subscribeEdit.includeHint')"
persistent-hint
prepend-inner-icon="mdi-plus-circle-outline"
/>
</VCol>
<VCol cols="12" md="6">
@@ -443,6 +459,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.exclude')"
:hint="t('dialog.subscribeEdit.excludeHint')"
persistent-hint
prepend-inner-icon="mdi-minus-circle-outline"
/>
</VCol>
</VRow>
@@ -457,6 +474,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.filterGroups')"
:hint="t('dialog.subscribeEdit.filterGroupsHint')"
persistent-hint
prepend-inner-icon="mdi-filter"
/>
</VCol>
<VCol v-if="!props.default && subscribeForm.type === '电视剧'" cols="12" md="6">
@@ -467,6 +485,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.episodeGroup')"
:hint="t('dialog.subscribeEdit.episodeGroupHint')"
persistent-hint
prepend-inner-icon="mdi-view-list"
/>
</VCol>
<VCol v-if="!props.default && subscribeForm.type === '电视剧'" cols="12" md="6">
@@ -476,6 +495,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.season')"
:hint="t('dialog.subscribeEdit.seasonHint')"
persistent-hint
prepend-inner-icon="mdi-calendar"
/>
</VCol>
<VCol cols="12" v-if="!props.default">
@@ -484,6 +504,7 @@ onMounted(() => {
:label="t('dialog.subscribeEdit.mediaCategory')"
:hint="t('dialog.subscribeEdit.mediaCategoryHint')"
persistent-hint
prepend-inner-icon="mdi-tag"
/>
</VCol>
</VRow>
@@ -495,6 +516,7 @@ onMounted(() => {
:hint="t('dialog.subscribeEdit.customWordsHint')"
persistent-hint
:placeholder="t('dialog.subscribeEdit.customWordsPlaceholder')"
prepend-inner-icon="mdi-text"
/>
</VCol>
</VRow>

View File

@@ -56,11 +56,17 @@ const $toast = useToast()
<template>
<VDialog scrollable max-width="30rem" :fullscreen="!display.mdAndUp.value">
<VCard
:title="`${t('dialog.subscribeShare.shareSubscription')} - ${props.sub?.name} ${
props.sub?.season ? t('dialog.subscribeShare.season', { number: props.sub?.season }) : ''
}`"
>
<VCard>
<VCardItem class="py-2">
<template #prepend>
<VIcon icon="mdi-share-outline" class="me-2" />
</template>
<VCardTitle>{{ t('dialog.subscribeShare.shareSubscription') }}</VCardTitle>
<VCardSubtitle>
{{ props.sub?.name }}
{{ props.sub?.season ? t('dialog.subscribeShare.season', { number: props.sub?.season }) : '' }}
</VCardSubtitle>
</VCardItem>
<VCardText>
<VDialogCloseBtn @click="emit('close')" />
<VForm @submit.prevent="() => {}" class="pt-2">
@@ -72,6 +78,7 @@ const $toast = useToast()
:label="t('dialog.subscribeShare.title')"
:rules="[requiredValidator]"
persistent-hint
prepend-inner-icon="mdi-format-title"
/>
</VCol>
<VCol cols="12">
@@ -81,6 +88,7 @@ const $toast = useToast()
:rules="[requiredValidator]"
:hint="t('dialog.subscribeShare.descriptionHint')"
persistent-hint
prepend-inner-icon="mdi-comment-text-outline"
/>
</VCol>
<VCol cols="12">
@@ -90,6 +98,7 @@ const $toast = useToast()
:rules="[requiredValidator]"
:hint="t('dialog.subscribeShare.shareUserHint')"
persistent-hint
prepend-inner-icon="mdi-account-outline"
/>
</VCol>
</VRow>

View File

@@ -86,7 +86,13 @@ async function editWorkflow() {
<template>
<VDialog scrollable :close-on-back="false" eager max-width="30rem" :fullscreen="!display.mdAndUp.value">
<VCard :title="title">
<VCard>
<VCardItem>
<template #prepend>
<VIcon icon="mdi-clock-outline" class="me-2" />
</template>
<VCardTitle>{{ title }}</VCardTitle>
</VCardItem>
<VDialogCloseBtn @click="emit('close')" />
<VDivider />
<VCardText>
@@ -99,6 +105,7 @@ async function editWorkflow() {
:rules="[requiredValidator]"
persistent-hint
:hint="t('dialog.workflowAddEdit.namePlaceholder')"
prepend-inner-icon="mdi-workflow"
/>
</VCol>
<VCol cols="12">
@@ -109,6 +116,7 @@ async function editWorkflow() {
placeholder="5位cron表达式"
persistent-hint
:hint="t('dialog.workflowAddEdit.cronExprDesc')"
prepend-inner-icon="mdi-clock-outline"
/>
</VCol>
<VCol cols="12">
@@ -116,6 +124,7 @@ async function editWorkflow() {
v-model="workflowForm.description"
:label="t('dialog.workflowAddEdit.desc')"
:placeholder="t('dialog.workflowAddEdit.descPlaceholder')"
prepend-inner-icon="mdi-text-box-outline"
/>
</VCol>
</VRow>

View File

@@ -853,8 +853,8 @@ export default {
browserSimulation: 'Use browser simulation for authentic site access',
},
actions: {
add: 'Add',
edit: 'Edit',
add: 'Add Site',
edit: 'Edit Site',
},
messages: {
addSuccess: 'Site added successfully',
@@ -1704,8 +1704,8 @@ export default {
previous: 'Previous',
confirm: 'Confirm',
manualTitle: 'Manual Organization',
multipleItemsTitle: 'Organize - {count} Items',
singleItemTitle: 'Organize - {path}',
multipleItemsTitle: '{count} Items',
singleItemTitle: '{path}',
targetStorage: 'Target Storage',
targetStorageHint: 'Organization target storage',
transferType: 'Organization Method',
@@ -1754,7 +1754,7 @@ export default {
},
subscribeEdit: {
titleDefault: 'Default Subscription Rules',
titleEditFormat: 'Edit Subscription - {name} {season}',
titleEdit: 'Edit Subscription',
seasonFormat: 'Season {number}',
tabs: {
basic: 'Basic',

View File

@@ -850,8 +850,8 @@ export default {
browserSimulation: '使用浏览器模拟真实访问该站点',
},
actions: {
add: '新增',
edit: '编辑',
add: '新增站点',
edit: '编辑站点',
},
messages: {
addSuccess: '新增站点成功',
@@ -1681,8 +1681,8 @@ export default {
previous: '上一步',
confirm: '确认',
manualTitle: '手动整理',
multipleItemsTitle: '整理 - 共 {count} 项',
singleItemTitle: '整理 - {path}',
multipleItemsTitle: '共 {count} 项',
singleItemTitle: '{path}',
targetStorage: '目的存储',
targetStorageHint: '整理目的存储',
transferType: '整理方式',
@@ -1731,7 +1731,7 @@ export default {
},
subscribeEdit: {
titleDefault: '默认订阅规则',
titleEditFormat: '编辑订阅 - {name} {season}',
titleEdit: '编辑订阅',
seasonFormat: '第 {number} 季',
tabs: {
basic: '基础',

View File

@@ -852,8 +852,8 @@ export default {
browserSimulation: '使用瀏覽器模擬真實訪問該站點',
},
actions: {
add: '新增',
edit: '編輯',
add: '新增站點',
edit: '編輯站點',
},
messages: {
addSuccess: '新增站點成功',
@@ -1682,8 +1682,8 @@ export default {
previous: '上一步',
confirm: '確認',
manualTitle: '手動整理',
multipleItemsTitle: '整理 - 共 {count} 項',
singleItemTitle: '整理 - {path}',
multipleItemsTitle: '共 {count} 項',
singleItemTitle: '{path}',
targetStorage: '目的存儲',
targetStorageHint: '整理目的存儲',
transferType: '整理方式',
@@ -1732,7 +1732,7 @@ export default {
},
subscribeEdit: {
titleDefault: '默認訂閱規則',
titleEditFormat: '編輯訂閱 - {name} {season}',
titleEdit: '編輯訂閱',
seasonFormat: '第 {number} 季',
tabs: {
basic: '基礎',