🎨 增加 Go 后端

This commit is contained in:
江西小徐
2024-04-07 11:08:05 +08:00
parent 04c82ab25d
commit 61275be2bf
165 changed files with 7043 additions and 3599 deletions
+57
View File
@@ -0,0 +1,57 @@
<template>
<div class="px-4 space-y-4">
<div class="flex gap-2 items-center">
<UInput v-model="newDomainSuffix" @input="searchSuffix" :placeholder="t('settings.suffixPlaceholder')" class="flex-grow rounded shadow transition duration-200 ease-in-out" />
<UInput v-model="newWhoisServer" :placeholder="t('settings.whoisPlaceholder')" class="flex-grow border-gray-300 rounded shadow transition duration-200 ease-in-out" />
<UButton @click="addSuffix" type="button" :disabled="suffixExists" class="p-2 bg-blue-500 text-white rounded hover:bg-blue-700 shadow disabled:bg-gray-400 disabled:cursor-not-allowed transition duration-200 ease-in-out">
{{ t('common.actions.add') }}</UButton>
</div>
<div class="text-sm" v-if="suffixExists">
<span class="text-red-500">{{ t('common.actions.suffixExist') }}</span>
</div>
<div class="overflow-auto h-64 mt-4 bg-gray-50 rounded shadow">
<div v-for="(server, suffix) in domainStore.SupportedTLDs" :key="suffix" class="flex items-center justify-between p-2 border-b border-gray-200 last:border-b-0">
<div>{{ suffix }}: {{ server }}</div>
<UButton @click="removeSuffix(suffix)" type="button" class="bg-red-500 hover:bg-red-700 text-white p-1 rounded shadow transition duration-200 ease-in-out">
{{ t('common.actions.delete') }}
</UButton>
</div>
</div>
</div>
</template>
<script setup lang="ts">
const domainStore = useDomainStore();
const newDomainSuffix = ref('');
const newWhoisServer = ref('');
const suffixExists = computed(() => newDomainSuffix.value in domainStore.SupportedTLDs);
const toast = useToast()
const {t} = useI18n();
const addSuffix = async () => {
if (newDomainSuffix.value && newWhoisServer.value && !suffixExists.value) {
await domainStore.addSuffix(newDomainSuffix.value, newWhoisServer.value);
newDomainSuffix.value = '';
newWhoisServer.value = '';
toast.add(
{ title: '`添加成功`' }
);
}
};
const removeSuffix = async (suffix: string) => {
await domainStore.removeSuffix(suffix);
toast.add(
{ title: '删除成功',
}
);
};
const searchSuffix = () => {
// 这个方法被@input事件触发,用于即时反馈,但实际逻辑已由suffixExists处理
};
</script>
<style scoped>
</style>