mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-03-14 01:34:47 +08:00
fix: Modify the license promp (#8134)
This commit is contained in:
parent
fa8f90c493
commit
6ba44a239d
@ -57,6 +57,7 @@ ErrXpackTimeout: "Request timeout, network connection might be unstable, please
|
||||
ErrUnbindMaster: "Detected nodes in node management, unable to unbind the current license, please remove nodes first and retry!"
|
||||
ErrFreeNodeLimit: "Community version node limit reached, please go to www.lxware.cn/1panel to purchase and retry!"
|
||||
ErrNodeBound: "This license is bound to another node, please check and retry!"
|
||||
ErrNodeBoundDelete: "This license is bound and does not support delete operations. Please check and try again!"
|
||||
ErrNodeBoundLimit: "The current free node has reached its limit, please check and try again!"
|
||||
ErrNoSuchNode: "Node information not found, please check and retry!"
|
||||
ErrNodeUnbind: "This node is not within the license binding range, please check and retry!"
|
||||
|
@ -58,6 +58,7 @@ ErrXpackTimeout: "リクエストタイムアウト、ネットワーク接続
|
||||
ErrUnbindMaster: "ノード管理にノードが存在するため、現在のライセンスを解除できません。ノードを削除してから再試行してください!"
|
||||
ErrFreeNodeLimit: "コミュニティ版のノード数が無料上限に達しました、www.lxware.cn/1panel で購入して再試行してください!"
|
||||
ErrNodeBound: "このライセンスは他のノードにバインドされています、確認して再試行してください!"
|
||||
ErrNodeBoundDelete: "このライセンスはバインドされており、削除操作はサポートされていません。確認して再試行してください!"
|
||||
ErrNodeBoundLimit: "現在の無料ノードは上限に達しました。確認して再試行してください!"
|
||||
ErrNoSuchNode: "そのノード情報が見つかりませんでした、確認して再試行してください!"
|
||||
ErrNodeUnbind: "そのノードはライセンスのバインド範囲内ではありません、確認して再試行してください!"
|
||||
|
@ -57,6 +57,7 @@ ErrXpackTimeout: "요청 시간 초과, 네트워크 연결이 불안정할 수
|
||||
ErrUnbindMaster: "노드 관리 내에 노드가 존재함을 감지하였습니다. 현재 라이선스를 해제할 수 없습니다. 먼저 제거 후 다시 시도해 주세요!"
|
||||
ErrFreeNodeLimit: "커뮤니티 에디션 노드 수가 무료 한도에 도달하였습니다. www.lxware.cn/1panel 에서 구매 후 다시 시도해 주세요!"
|
||||
ErrNodeBound: "이 라이선스는 다른 노드에 바인딩되어 있습니다. 다시 확인하고 시도해 주세요!"
|
||||
ErrNodeBoundDelete: "이 라이센스는 바인딩되어 있으며 삭제 작업을 지원하지 않습니다. 확인 후 다시 시도해 주세요!"
|
||||
ErrNodeBoundLimit: "현재 무료 노드가 한도에 도달했습니다. 확인 후 다시 시도해 주세요!"
|
||||
ErrNoSuchNode: "노드 정보를 찾을 수 없습니다. 다시 확인하고 시도해 주세요!"
|
||||
ErrNodeUnbind: "이 노드가 라이선스 바인딩 범위에 있지 않음을 감지하였습니다. 다시 확인하고 시도해 주세요!"
|
||||
|
@ -57,6 +57,7 @@ ErrXpackTimeout: "Permintaan tamat masa, sambungan rangkaian mungkin tidak stabi
|
||||
ErrUnbindMaster: "Terdapat nod dalam pengurusan nod, sila keluarkan dahulu dan cuba lagi!"
|
||||
ErrFreeNodeLimit: "Jumlah nod versi komuniti telah mencapai had percuma, sila lawati www.lxware.cn/1panel untuk pembelian!"
|
||||
ErrNodeBound: "Lesen ini telah diikat dengan nod lain, sila semak dan cuba lagi!"
|
||||
ErrNodeBoundDelete: "Lisensi ini telah diikat dan tidak menyokong operasi penghapusan. Sila semak dan cuba lagi!"
|
||||
ErrNodeBoundLimit: "Nod percuma semasa telah mencapai had, sila semak dan cuba lagi!"
|
||||
ErrNoSuchNode: "Maklumat nod tidak ditemui, sila semak dan cuba lagi!"
|
||||
ErrNodeUnbind: "Nod di luar skop lesen dikesan, sila semak dan cuba lagi!"
|
||||
|
@ -57,6 +57,7 @@ ErrXpackTimeout: "Requisição expirou, a conexão de rede pode estar instável,
|
||||
ErrUnbindMaster: "Foram encontrados nós na gestão de nós, remova-os primeiro e tente novamente!"
|
||||
ErrFreeNodeLimit: "O número de nós da versão comunitária atingiu o limite gratuito, por favor acesse www.lxware.cn/1panel para comprar!"
|
||||
ErrNodeBound: "Esta licença já está vinculada a outro nó, por favor verifique e tente novamente!"
|
||||
ErrNodeBoundDelete: "Esta licença está vinculada e não suporta operações de exclusão. Por favor, verifique e tente novamente!"
|
||||
ErrNodeBoundLimit: "O nó gratuito atual atingiu seu limite, por favor verifique e tente novamente!"
|
||||
ErrNoSuchNode: "As informações deste nó não foram encontradas, por favor verifique e tente novamente!"
|
||||
ErrNodeUnbind: "Nó fora do escopo da licença detectado, por favor verifique e tente novamente!"
|
||||
|
@ -57,6 +57,7 @@ ErrXpackTimeout: "Время ожидания запроса истекло, в
|
||||
ErrUnbindMaster: "В управлении узлами обнаружены узлы, сначала удалите их и повторите попытку!"
|
||||
ErrFreeNodeLimit: "Количество узлов в версии сообщества достигло бесплатного лимита, посетите www.lxware.cn/1panel для покупки!"
|
||||
ErrNodeBound: "Эта лицензия уже связана с другим узлом, проверьте и повторите попытку!"
|
||||
ErrNodeBoundDelete: "Эта лицензия привязана и не поддерживает операции удаления. Пожалуйста, проверьте и попробуйте снова!"
|
||||
ErrNodeBoundLimit: "Текущий бесплатный узел достиг предела, пожалуйста, проверьте и попробуйте снова!"
|
||||
ErrNoSuchNode: "Информация об узле не найдена, проверьте и повторите попытку!"
|
||||
ErrNodeUnbind: "Обнаружен узел вне области действия лицензии, проверьте и повторите попытку!"
|
||||
|
@ -57,6 +57,7 @@ ErrXpackTimeout: "請求超時,網絡連接可能不穩定,請稍後再試
|
||||
ErrUnbindMaster: "檢測到節點管理內存在節點,無法解綁當前許可證,請先移除後重試!"
|
||||
ErrFreeNodeLimit: "社區版節點數量已達免費上限,請前往 www.lxware.cn/1panel 購買後重試!"
|
||||
ErrNodeBound: "該許可證已綁定到其他節點,請檢查後重試!"
|
||||
ErrNodeBoundDelete: "該許可證已被綁定,不支持刪除操作,請檢查後重試!"
|
||||
ErrNodeBoundLimit: "當前免費節點已達上限,請檢查後重試!"
|
||||
ErrNoSuchNode: "未能找到該節點信息,請檢查後重試!"
|
||||
ErrNodeUnbind: "檢測到該節點未在許可證綁定範圍內,請檢查後重試!"
|
||||
|
@ -54,9 +54,10 @@ ErrXpackOutOfDate: "当前许可证已过期,请重新在 面板设置-许可
|
||||
ErrXpackLost: "许可证已达到最大重试次数,请进入【面板设置】【许可证】页面手动点击同步按钮,以确保专业版功能正常使用"
|
||||
ErrDeviceLost: "许可证校验必要文件丢失,请检查后重试!"
|
||||
ErrXpackTimeout: "请求超时,网络连接可能不稳定,请稍后再试!"
|
||||
ErrUnbindMaster: "检测到节点管理内存在节点,无法解绑当前许可证,请先移除后重试!"
|
||||
ErrUnbindMaster: "检测到节点管理内存在专业版节点,无法解绑当前许可证,请先移除或解绑后重试!"
|
||||
ErrFreeNodeLimit: "社区版节点数量已达到免费上限,请前往 www.lxware.cn/1panel 购买后重试!"
|
||||
ErrNodeBound: "该许可证已绑定到其他节点,请检查后重试!"
|
||||
ErrNodeBoundDelete: "该许可证已被绑定,不支持删除操作,请检查后重试!"
|
||||
ErrNodeBoundLimit: "当前免费节点已经达到上限,请检查后重试!"
|
||||
ErrNoSuchNode: "未能找到该节点信息,请检查后重试!"
|
||||
ErrNodeUnbind: "检测到该节点未在许可证绑定范围内,请检查后重试!"
|
||||
|
@ -3,6 +3,7 @@ import { deepCopy } from '@/utils/util';
|
||||
import { Base64 } from 'js-base64';
|
||||
import { ResPage, SearchWithPage, DescriptionUpdate, ReqPage } from '../interface';
|
||||
import { Setting } from '../interface/setting';
|
||||
import { TimeoutEnum } from '@/enums/http-enum';
|
||||
|
||||
// license
|
||||
export const uploadLicense = (oldLicense: string, params: FormData) => {
|
||||
@ -14,8 +15,8 @@ export const uploadLicense = (oldLicense: string, params: FormData) => {
|
||||
export const searchLicense = (params: ReqPage) => {
|
||||
return http.post<ResPage<Setting.License>>('/core/licenses/search', params);
|
||||
};
|
||||
export const deleteLicense = (id: number, force: boolean) => {
|
||||
return http.post('/core/licenses/del', { id: id, force: force });
|
||||
export const deleteLicense = (params: { ids: number }) => {
|
||||
return http.post('/core/licenses/del', params);
|
||||
};
|
||||
export const getLicenseStatus = () => {
|
||||
return http.get<Setting.LicenseStatus>(`/core/licenses/status`);
|
||||
@ -27,10 +28,10 @@ export const syncLicense = (id: number) => {
|
||||
return http.post(`/core/licenses/sync`, { id: id });
|
||||
};
|
||||
export const bindLicense = (id: number, nodeID: number) => {
|
||||
return http.post(`/core/licenses/bind`, { nodeID: nodeID, licenseID: id });
|
||||
return http.post(`/core/licenses/bind`, { nodeID: nodeID, licenseID: id }, TimeoutEnum.T_60S);
|
||||
};
|
||||
export const unbindLicense = (id: number) => {
|
||||
return http.post(`/core/licenses/unbind`, { id: id });
|
||||
return http.post(`/core/licenses/unbind`, { id: id }, TimeoutEnum.T_60S);
|
||||
};
|
||||
export const loadLicenseOptions = () => {
|
||||
return http.get(`/core/licenses/options`);
|
||||
|
@ -1872,8 +1872,6 @@ const message = {
|
||||
quickUpdate: 'Quick Update',
|
||||
power: 'Authorization',
|
||||
unbindHelper: 'Unbinding will clear all professional edition settings for this node. Do you wish to continue?',
|
||||
unbindMasterHelper:
|
||||
'There are currently other nodes besides the master node. The {0} operation is not supported. Please delete the nodes in the node management and try again.',
|
||||
importLicense: 'Import License',
|
||||
importHelper: 'Please click or drag the license file here',
|
||||
levelUpPro: 'Upgrade to Professional Edition',
|
||||
@ -3215,7 +3213,7 @@ const message = {
|
||||
checkStatus: 'Check Node Service Availability',
|
||||
fixStatus: 'Investigate Node Logs',
|
||||
checkAPI: 'Check Node API Availability',
|
||||
fixAPI: 'Check if the request address in the information is correct; if incorrect, modify the main node information',
|
||||
fixAPI: 'Check the node logs and verify if the firewall ports are properly opened.',
|
||||
forceDelete: 'Force Delete',
|
||||
operateHelper: 'The following nodes will undergo {0} operation, do you want to continue?',
|
||||
forceDeleteHelper: 'Force delete will ignore node deletion errors and delete database metadata',
|
||||
|
@ -3025,7 +3025,7 @@ const message = {
|
||||
checkStatus: 'ノードサービスの可用性を確認',
|
||||
fixStatus: 'ノードログを調査',
|
||||
checkAPI: 'ノードAPIの可用性を確認',
|
||||
fixAPI: '情報内のリクエストアドレスが正しいか確認し、誤っている場合は主ノード情報を修正',
|
||||
fixAPI: 'ノードのログを確認し、ファイアウォールのポートが正常に開放されているか確認します。',
|
||||
forceDelete: '強制削除',
|
||||
operateHelper: '以下のノードに{0}操作を行います。続行しますか?',
|
||||
forceDeleteHelper: '強制削除はノード削除エラーを無視し、データベースメタデータを削除します',
|
||||
|
@ -2975,7 +2975,7 @@ const message = {
|
||||
checkStatus: '노드 서비스 가용성 확인',
|
||||
fixStatus: '노드 로그 조사',
|
||||
checkAPI: '노드 API 가용성 확인',
|
||||
fixAPI: '정보 내 요청 주소가 올바른지 확인하고, 잘못된 경우 주 노드 정보를 수정해야 합니다',
|
||||
fixAPI: '노드 로그를 확인하고 방화벽 포트가 정상적으로 열려 있는지 확인합니다.',
|
||||
forceDelete: '강제 삭제',
|
||||
operateHelper: '다음 노드에 대해 {0} 작업을 수행합니다. 계속하시겠습니까?',
|
||||
forceDeleteHelper: '강제 삭제는 노드 삭제 오류를 무시하고 데이터베이스 메타데이터를 삭제합니다',
|
||||
|
@ -3094,7 +3094,7 @@ const message = {
|
||||
checkStatus: 'Periksa Ketersediaan Perkhidmatan Nod',
|
||||
fixStatus: 'Siasat Log Nod',
|
||||
checkAPI: 'Periksa Ketersediaan API Nod',
|
||||
fixAPI: 'Periksa jika alamat permintaan dalam maklumat adalah betul; jika tidak betul, perlu mengubah maklumat nod utama',
|
||||
fixAPI: 'Semak log nod dan periksa sama ada port firewall dibuka dengan betul.',
|
||||
forceDelete: 'Hapus Secara Paksa',
|
||||
operateHelper: 'Operasi {0} akan dilakukan pada nod berikut, adakah anda ingin meneruskan?',
|
||||
forceDeleteHelper:
|
||||
|
@ -3098,7 +3098,7 @@ const message = {
|
||||
checkStatus: 'Verificar Disponibilidade do Serviço do Nó',
|
||||
fixStatus: 'Investigar Logs do Nó',
|
||||
checkAPI: 'Verificar Disponibilidade da API do Nó',
|
||||
fixAPI: 'Verifique se o endereço de solicitação nas informações está correto; se estiver incorreto, será necessário modificar as informações do nó principal',
|
||||
fixAPI: 'Verifique os logs do nó e confirme se as portas do firewall estão devidamente abertas.',
|
||||
forceDelete: 'Excluir Forçadamente',
|
||||
operateHelper: 'A operação {0} será realizada nos seguintes nós, deseja continuar?',
|
||||
forceDeleteHelper:
|
||||
|
@ -3088,7 +3088,7 @@ const message = {
|
||||
checkStatus: 'Проверка доступности службы узла',
|
||||
fixStatus: 'Проверка журналов узла',
|
||||
checkAPI: 'Проверка доступности API узла',
|
||||
fixAPI: 'Проверьте, правильный ли адрес запроса в информации; если он неправильный, необходимо изменить информацию о главном узле',
|
||||
fixAPI: 'Проверьте журналы узла и убедитесь, что порты брандмауэра правильно открыты.',
|
||||
forceDelete: 'Принудительное удаление',
|
||||
operateHelper: 'Будет выполнена операция {0} для следующих узлов, вы хотите продолжить?',
|
||||
forceDeleteHelper:
|
||||
|
@ -1737,7 +1737,6 @@ const message = {
|
||||
quickUpdate: '快速更新',
|
||||
power: '授權',
|
||||
unbindHelper: '解除綁定後將清除該節點所有專業版相關設置,是否繼續?',
|
||||
unbindMasterHelper: '當前已存在除主節點外其他節點,不支持 {0} 操作,請在節點管理中刪除節點後重試',
|
||||
importLicense: '導入許可證',
|
||||
importHelper: '請點擊或拖動許可文件到此處',
|
||||
levelUpPro: '升級專業版',
|
||||
@ -2978,7 +2977,7 @@ const message = {
|
||||
checkStatus: '檢查節點服務可用性',
|
||||
fixStatus: '排查節點日誌',
|
||||
checkAPI: '檢查節點 API 可用性',
|
||||
fixAPI: '檢查資訊中請求地址是否正確,如不正確則需要修改主節點資訊',
|
||||
fixAPI: '檢查節點日誌,確認防火牆端口是否正常放行。',
|
||||
forceDelete: '強制刪除',
|
||||
operateHelper: '將對以下節點執行 {0} 操作,是否繼續?',
|
||||
forceDeleteHelper: '強制刪除將忽略節點刪除錯誤並刪除資料庫元資料',
|
||||
|
@ -1729,7 +1729,6 @@ const message = {
|
||||
quickUpdate: '快速更新',
|
||||
power: '授 权',
|
||||
unbindHelper: '解除绑定后将清除该节点所有专业版相关设置,是否继续?',
|
||||
unbindMasterHelper: '当前已存在除主节点外其他节点,不支持 {0} 操作,请在节点管理中删除节点后重试',
|
||||
importLicense: '导入许可证',
|
||||
importHelper: '请点击或拖动许可文件到此处',
|
||||
levelUpPro: '升级专业版',
|
||||
@ -2959,7 +2958,7 @@ const message = {
|
||||
checkStatus: '检查节点服务可用性',
|
||||
fixStatus: '排查节点日志',
|
||||
checkAPI: '检查节点 API 可用性',
|
||||
fixAPI: '检查信息中请求地址是否正确,不正确则需要修改主节点信息',
|
||||
fixAPI: '排查节点日志,检查防火墙端口是否正常放行',
|
||||
forceDelete: '强制删除',
|
||||
operateHelper: '将对以下节点进行 {0} 操作,是否继续?',
|
||||
forceDeleteHelper: '强制删除将会忽略节点删除错误,删除数据库元数据',
|
||||
|
@ -84,18 +84,19 @@
|
||||
<LicenseImport ref="licenseRef" />
|
||||
<LicenseBind ref="bindRef" />
|
||||
<LicenseDelete ref="delRef" @search="search" />
|
||||
<OpDialog ref="opRef" @search="search" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { searchLicense, syncLicense, unbindLicense } from '@/api/modules/setting';
|
||||
import { deleteLicense, searchLicense, syncLicense, unbindLicense } from '@/api/modules/setting';
|
||||
import LicenseImport from '@/components/license-import/index.vue';
|
||||
import LicenseDelete from '@/views/setting/license/delete/index.vue';
|
||||
import LicenseBind from '@/views/setting/license/bind/index.vue';
|
||||
import { dateFormat } from '@/utils/util';
|
||||
import i18n from '@/lang';
|
||||
import { MsgError, MsgSuccess } from '@/utils/message';
|
||||
import { MsgSuccess } from '@/utils/message';
|
||||
import { GlobalStore } from '@/store';
|
||||
import { initFavicon } from '@/utils/xpack';
|
||||
|
||||
@ -104,6 +105,7 @@ const loading = ref();
|
||||
const licenseRef = ref();
|
||||
const delRef = ref();
|
||||
const bindRef = ref();
|
||||
const opRef = ref();
|
||||
|
||||
const data = ref();
|
||||
const paginationConfig = reactive({
|
||||
@ -233,18 +235,6 @@ const buttons = [
|
||||
return row.status === 'Free';
|
||||
},
|
||||
click: (row: any) => {
|
||||
if (row.freeCount != 0) {
|
||||
if (row.freeNodes) {
|
||||
MsgError(i18n.global.t('license.unbindMasterHelper', [i18n.global.t('commons.button.unbind')]));
|
||||
return;
|
||||
}
|
||||
for (const item of data.value) {
|
||||
if (item.bindNode && item.freeCount == 0) {
|
||||
MsgError(i18n.global.t('license.unbindMasterHelper', [i18n.global.t('commons.button.unbind')]));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
onUnbind(row);
|
||||
},
|
||||
},
|
||||
@ -266,11 +256,16 @@ const buttons = [
|
||||
{
|
||||
label: i18n.global.t('commons.button.delete'),
|
||||
click: (row: any) => {
|
||||
if (row.freeNodes && row.freeCount != 0) {
|
||||
MsgError(i18n.global.t('license.unbindMasterHelper', [i18n.global.t('commons.button.delete')]));
|
||||
return;
|
||||
}
|
||||
delRef.value.acceptParams({ id: row.id, name: row.licenseName });
|
||||
opRef.value.acceptParams({
|
||||
title: i18n.global.t('commons.button.delete'),
|
||||
names: [row.licenseName],
|
||||
msg: i18n.global.t('commons.msg.operatorHelper', [
|
||||
i18n.global.t('setting.license'),
|
||||
i18n.global.t('commons.button.delete'),
|
||||
]),
|
||||
api: deleteLicense,
|
||||
params: { id: row.id },
|
||||
});
|
||||
},
|
||||
},
|
||||
];
|
||||
|
Loading…
x
Reference in New Issue
Block a user