|
|
|
@ -67,6 +67,22 @@
|
|
|
|
|
<el-text type="primary" class="cursor-pointer" @click="openConfig(row.id)"> |
|
|
|
|
{{ row.primaryDomain }} |
|
|
|
|
</el-text> |
|
|
|
|
<el-popover placement="top-start" trigger="hover" @before-enter="searchDomains(row.id)"> |
|
|
|
|
<template #reference> |
|
|
|
|
<el-button link icon="Promotion" class="ml-2.5"></el-button> |
|
|
|
|
</template> |
|
|
|
|
<table> |
|
|
|
|
<tbody> |
|
|
|
|
<tr v-for="(domain, index) in domains" :key="index"> |
|
|
|
|
<td> |
|
|
|
|
<el-button type="primary" link @click="openUrl(getUrl(domain, row))"> |
|
|
|
|
{{ getUrl(domain, row) }} |
|
|
|
|
</el-button> |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
</tbody> |
|
|
|
|
</table> |
|
|
|
|
</el-popover> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column |
|
|
|
@ -201,7 +217,7 @@ import AppStatus from '@/components/app-status/index.vue';
|
|
|
|
|
import i18n from '@/lang'; |
|
|
|
|
import router from '@/routers'; |
|
|
|
|
import { onMounted, reactive, ref, computed } from 'vue'; |
|
|
|
|
import { OpWebsite, SearchWebsites, UpdateWebsite } from '@/api/modules/website'; |
|
|
|
|
import { ListDomains, OpWebsite, SearchWebsites, UpdateWebsite } from '@/api/modules/website'; |
|
|
|
|
import { Website } from '@/api/interface/website'; |
|
|
|
|
import { App } from '@/api/interface/app'; |
|
|
|
|
import { ElMessageBox } from 'element-plus'; |
|
|
|
@ -248,6 +264,7 @@ const defaultRef = ref();
|
|
|
|
|
const data = ref(); |
|
|
|
|
let groups = ref<Group.GroupInfo[]>([]); |
|
|
|
|
const dataRef = ref(); |
|
|
|
|
const domains = ref<Website.Domain[]>([]); |
|
|
|
|
|
|
|
|
|
const paginationConfig = reactive({ |
|
|
|
|
cacheSizeKey: 'website-page-size', |
|
|
|
@ -474,6 +491,28 @@ const toFolder = (folder: string) => {
|
|
|
|
|
router.push({ path: '/hosts/files', query: { path: folder } }); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const searchDomains = (id: number) => { |
|
|
|
|
ListDomains(id).then((res) => { |
|
|
|
|
domains.value = res.data; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const openUrl = (url: string) => { |
|
|
|
|
window.open(url); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const getUrl = (domain: Website.Domain, website: Website.Website): string => { |
|
|
|
|
const protocol = website.protocol.toLowerCase(); |
|
|
|
|
let url = protocol + '://' + domain.domain; |
|
|
|
|
if (protocol == 'http' && domain.port != 80) { |
|
|
|
|
url = url + ':' + domain.port; |
|
|
|
|
} |
|
|
|
|
if (protocol == 'https' && domain.ssl) { |
|
|
|
|
url = url + ':' + domain.port; |
|
|
|
|
} |
|
|
|
|
return url; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
|
search(); |
|
|
|
|
listGroup(); |
|
|
|
|