1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-02-11 02:50:07 +08:00

105 lines
3.7 KiB
Vue
Raw Normal View History

2022-12-29 14:55:20 +08:00
<template>
2022-12-30 14:22:46 +08:00
<el-dialog v-model="open" :before-close="handleClose" :title="$t('ssl.detail')" width="30%">
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>
</el-dialog>
</template>
<script lang="ts" setup>
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 { ElMessage } from 'element-plus';
import i18n from '@/lang';
2023-01-03 12:40:14 +08:00
import useClipboard from 'vue-clipboard3';
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);
2022-12-30 10:42:40 +08:00
ElMessage.success(i18n.global.t('commons.msg.copySuccess'));
2023-01-03 12:40:14 +08:00
} catch (e) {
ElMessage.error(i18n.global.t('commons.msg.copyfailed'));
}
2022-12-30 10:42:40 +08:00
};
2022-12-29 14:55:20 +08:00
defineExpose({
acceptParams,
});
</script>