|
@@ -121,6 +121,10 @@
|
|
|
<template v-if="!isMobile">{{ i18n "pages.inbounds.generalActions" }}</template>
|
|
|
</a-button>
|
|
|
<a-menu slot="overlay" @click="a => generalActions(a)" :theme="themeSwitcher.currentTheme">
|
|
|
+ <a-menu-item key="import">
|
|
|
+ <a-icon type="import"></a-icon>
|
|
|
+ {{ i18n "pages.inbounds.importInbound" }}
|
|
|
+ </a-menu-item>
|
|
|
<a-menu-item key="export">
|
|
|
<a-icon type="export"></a-icon>
|
|
|
{{ i18n "pages.inbounds.export" }}
|
|
@@ -221,6 +225,10 @@
|
|
|
{{ i18n "info"}}
|
|
|
</a-menu-item>
|
|
|
</template>
|
|
|
+ <a-menu-item key="clipboard">
|
|
|
+ <a-icon type="copy"></a-icon>
|
|
|
+ {{ i18n "pages.inbounds.copyToClipboard" }}
|
|
|
+ </a-menu-item>
|
|
|
<a-menu-item key="resetTraffic">
|
|
|
<a-icon type="retweet"></a-icon> {{ i18n "pages.inbounds.resetTraffic" }}
|
|
|
</a-menu-item>
|
|
@@ -708,6 +716,9 @@
|
|
|
},
|
|
|
generalActions(action) {
|
|
|
switch (action.key) {
|
|
|
+ case "import":
|
|
|
+ this.importInbound();
|
|
|
+ break;
|
|
|
case "export":
|
|
|
this.exportAllLinks();
|
|
|
break;
|
|
@@ -742,6 +753,9 @@
|
|
|
case "export":
|
|
|
this.inboundLinks(dbInbound.id);
|
|
|
break;
|
|
|
+ case "clipboard":
|
|
|
+ this.copyToClipboard(dbInbound.id);
|
|
|
+ break;
|
|
|
case "resetTraffic":
|
|
|
this.resetTraffic(dbInbound.id);
|
|
|
break;
|
|
@@ -1162,6 +1176,18 @@
|
|
|
newDbInbound = this.checkFallback(dbInbound);
|
|
|
txtModal.show('{{ i18n "pages.inbounds.export"}}', newDbInbound.genInboundLinks, newDbInbound.remark);
|
|
|
},
|
|
|
+ importInbound() {
|
|
|
+ promptModal.open({
|
|
|
+ title: '{{ i18n "pages.inbounds.importInbound" }}',
|
|
|
+ type: 'textarea',
|
|
|
+ value: '',
|
|
|
+ okText: '{{ i18n "pages.inbounds.import" }}',
|
|
|
+ confirm: async (dbInboundText) => {
|
|
|
+ await this.submit('/panel/inbound/import', {data: dbInboundText}, promptModal);
|
|
|
+ promptModal.close();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
exportAllLinks() {
|
|
|
let copyText = [];
|
|
|
for (const dbInbound of this.dbInbounds) {
|
|
@@ -1169,6 +1195,10 @@
|
|
|
}
|
|
|
txtModal.show('{{ i18n "pages.inbounds.export"}}', copyText.join('\r\n'), 'All-Inbounds');
|
|
|
},
|
|
|
+ copyToClipboard(dbInboundId) {
|
|
|
+ dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
|
|
+ txtModal.show('{{ i18n "pages.inbounds.inboundData" }}', JSON.stringify(dbInbound, null, 2));
|
|
|
+ },
|
|
|
async startDataRefreshLoop() {
|
|
|
while (this.isRefreshEnabled) {
|
|
|
try {
|