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

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"