2022-12-29 14:55:20 +08:00
|
|
|
<template>
|
2023-01-30 17:24:46 +08:00
|
|
|
<el-drawer :close-on-click-modal="false" v-model="open" size="50%">
|
2023-01-19 16:40:21 +08:00
|
|
|
<template #header>
|
|
|
|
<DrawerHeader :header="$t('ssl.detail')" :back="handleClose" />
|
|
|
|
</template>
|
2022-12-29 14:55:20 +08:00
|
|
|
<div>
|
|
|
|
<el-radio-group v-model="curr">
|
|
|
|
<el-radio-button label="detail">{{ $t('ssl.msg') }}</el-radio-button>
|
|
|
|
<el-radio-button label="ssl">{{ $t('ssl.ssl') }}</el-radio-button>
|
|
|
|
<el-radio-button label="key">{{ $t('ssl.key') }}</el-radio-button>
|
|
|
|
</el-radio-group>
|
|
|
|
<br />
|
|
|
|
<br />
|
|
|
|
<div v-if="curr === 'detail'">
|
|
|
|
<el-descriptions border :column="1">
|
|
|
|
<el-descriptions-item :label="$t('website.primaryDomain')">
|
|
|
|
{{ ssl.primaryDomain }}
|
|
|
|
</el-descriptions-item>
|
|
|
|
<el-descriptions-item :label="$t('website.otherDomains')">
|
|
|
|
{{ ssl.otherDomains }}
|
|
|
|
</el-descriptions-item>
|
2022-12-30 14:22:46 +08:00
|
|
|
<el-descriptions-item :label="$t('ssl.provider')">
|
|
|
|
{{ getProvider(ssl.provider) }}
|
|
|
|
</el-descriptions-item>
|
|
|
|
<el-descriptions-item
|
|
|
|
:label="$t('ssl.acmeAccount')"
|
|
|
|
v-if="ssl.acmeAccount && ssl.provider !== 'manual'"
|
|
|
|
>
|
|
|
|
{{ ssl.acmeAccount.email }}
|
|
|
|
</el-descriptions-item>
|
|
|
|
<el-descriptions-item :label="$t('website.brand')">
|
|
|
|
{{ ssl.type }}
|
|
|
|
</el-descriptions-item>
|
2022-12-29 14:55:20 +08:00
|
|
|
<el-descriptions-item :label="$t('ssl.startDate')">
|
2023-01-16 15:55:53 +08:00
|
|
|
{{ dateFormatSimple(ssl.startDate) }}
|
2022-12-29 14:55:20 +08:00
|
|
|
</el-descriptions-item>
|
|
|
|
<el-descriptions-item :label="$t('website.expireDate')">
|
2023-01-16 15:55:53 +08:00
|
|
|
{{ dateFormatSimple(ssl.expireDate) }}
|
2022-12-29 14:55:20 +08:00
|
|
|
</el-descriptions-item>
|
|
|
|
</el-descriptions>
|
|
|
|
</div>
|
|
|
|
<div v-else-if="curr === 'ssl'">
|
2023-01-03 12:40:14 +08:00
|
|
|
<el-input v-model="ssl.pem" :autosize="{ minRows: 10, maxRows: 15 }" type="textarea" id="textArea" />
|
2022-12-30 10:42:40 +08:00
|
|
|
<div>
|
|
|
|
<br />
|
|
|
|
<el-button type="primary" @click="copyText(ssl.pem)">{{ $t('file.copy') }}</el-button>
|
|
|
|
</div>
|
2022-12-29 14:55:20 +08:00
|
|
|
</div>
|
|
|
|
<div v-else>
|
2023-01-03 12:40:14 +08:00
|
|
|
<el-input
|
|
|
|
v-model="ssl.privateKey"
|
|
|
|
:autosize="{ minRows: 10, maxRows: 15 }"
|
|
|
|
type="textarea"
|
|
|
|
id="textArea"
|
|
|
|
/>
|
2022-12-30 10:42:40 +08:00
|
|
|
<div>
|
|
|
|
<br />
|
|
|
|
<el-button type="primary" @click="copyText(ssl.privateKey)">{{ $t('file.copy') }}</el-button>
|
|
|
|
</div>
|
2022-12-29 14:55:20 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
2023-01-19 16:40:21 +08:00
|
|
|
</el-drawer>
|
2022-12-29 14:55:20 +08:00
|
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
2023-01-31 18:52:07 +08:00
|
|
|
import DrawerHeader from '@/components/drawer-header/index.vue';
|
2022-12-29 14:55:20 +08:00
|
|
|
import { GetSSL } from '@/api/modules/website';
|
|
|
|
import { ref } from 'vue';
|
2023-01-16 15:55:53 +08:00
|
|
|
import { dateFormatSimple, getProvider } from '@/utils/util';
|
2022-12-30 10:42:40 +08:00
|
|
|
import i18n from '@/lang';
|
2023-01-03 12:40:14 +08:00
|
|
|
import useClipboard from 'vue-clipboard3';
|
2023-02-14 17:14:03 +08:00
|
|
|
import { MsgError, MsgSuccess } from '@/utils/message';
|
2023-01-03 12:40:14 +08:00
|
|
|
const { toClipboard } = useClipboard();
|
2022-12-29 14:55:20 +08:00
|
|
|
|
|
|
|
let open = ref(false);
|
|
|
|
let id = ref(0);
|
|
|
|
let curr = ref('detail');
|
|
|
|
let ssl = ref<any>({});
|
|
|
|
|
|
|
|
const handleClose = () => {
|
|
|
|
open.value = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
const acceptParams = (sslId: number) => {
|
|
|
|
ssl.value = {};
|
|
|
|
id.value = sslId;
|
|
|
|
curr.value = 'detail';
|
|
|
|
get();
|
|
|
|
open.value = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
const get = async () => {
|
|
|
|
const res = await GetSSL(id.value);
|
|
|
|
ssl.value = res.data;
|
|
|
|
};
|
|
|
|
|
2023-01-03 12:40:14 +08:00
|
|
|
const copyText = async (msg) => {
|
|
|
|
try {
|
|
|
|
await toClipboard(msg);
|
2023-02-14 17:14:03 +08:00
|
|
|
MsgSuccess(i18n.global.t('commons.msg.copySuccess'));
|
2023-01-03 12:40:14 +08:00
|
|
|
} catch (e) {
|
2023-10-07 15:46:44 +08:00
|
|
|
MsgError(i18n.global.t('commons.msg.copyFailed'));
|
2023-01-03 12:40:14 +08:00
|
|
|
}
|
2022-12-30 10:42:40 +08:00
|
|
|
};
|
|
|
|
|
2022-12-29 14:55:20 +08:00
|
|
|
defineExpose({
|
|
|
|
acceptParams,
|
|
|
|
});
|
|
|
|
</script>
|