|
42 | 42 | > |
43 | 43 | 验证 |
44 | 44 | </v-btn> |
| 45 | + <v-btn |
| 46 | + v-if="!email.is_primary&& email.verified" |
| 47 | + color="secondary" |
| 48 | + size="small" |
| 49 | + variant="text" |
| 50 | + @click="startSetPrimaryEmail(email)"> |
| 51 | + 设为主邮箱 |
| 52 | + </v-btn> |
45 | 53 | <v-btn |
46 | 54 | v-if="!email.is_primary" |
47 | 55 | color="error" |
|
135 | 143 | <script setup> |
136 | 144 | import {ref, onMounted} from 'vue' |
137 | 145 | import VerifyEmail from '@/components/verifyEmail.vue' |
138 | | -import {getEmails, sendVerificationCode, addEmail, removeEmail, verifyEmail} from '@/services/emailService' |
| 146 | +import {getEmails, sendVerificationCode,setPrimaryEmail, addEmail, removeEmail, verifyEmail} from '@/services/emailService' |
139 | 147 | import { useSudoManager } from '@/composables/useSudoManager'; |
140 | 148 |
|
141 | 149 | const sudoManager = useSudoManager(); |
@@ -222,7 +230,29 @@ const confirmDelete = (email) => { |
222 | 230 | emailToDelete.value = email |
223 | 231 | showDeleteDialog.value = true |
224 | 232 | } |
| 233 | +const startSetPrimaryEmail = async (email) => { |
| 234 | + if (!email) return; |
| 235 | +
|
| 236 | + isLoading.value = true; |
| 237 | + try { |
| 238 | + const sudoToken = await sudoManager.requireSudo({ |
| 239 | + title: '设置主邮箱', |
| 240 | + subtitle: `您正在尝试将邮箱 ${email.contact_value} 设置为主邮箱。此操作需要验证您的身份。`, |
| 241 | + persistent: true |
| 242 | + }); |
225 | 243 |
|
| 244 | + const response = await setPrimaryEmail(email.contact_value, sudoToken); |
| 245 | + if (response.status === 'success') { |
| 246 | + await fetchEmails(); |
| 247 | + } |
| 248 | + } catch (error) { |
| 249 | + if (error.type !== 'cancel') { |
| 250 | + console.error('设置主邮箱失败:', error); |
| 251 | + } |
| 252 | + } finally { |
| 253 | + isLoading.value = false; |
| 254 | + } |
| 255 | +} |
226 | 256 | const startDeleteEmail = async () => { |
227 | 257 | if (!emailToDelete.value) return; |
228 | 258 |
|
|
0 commit comments