mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-10-07 22:16:16 +08:00
fix: Fix issue with failure to disable website cache (#8113)
This commit is contained in:
parent
63631b1118
commit
1f842b49cc
12 changed files with 154 additions and 126 deletions
|
@ -2384,6 +2384,7 @@ const message = {
|
|||
volcengine: 'Volcengine',
|
||||
runtimePortHelper: 'The current runtime environment has multiple ports. Please select a proxy port.',
|
||||
runtimePortWarn: 'The current runtime environment has no ports, unable to proxy',
|
||||
cacheWarn: 'Please turn off the cache switch in the reverse proxy first',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: 'Short tag support',
|
||||
|
|
|
@ -2242,6 +2242,7 @@ const message = {
|
|||
volcengine: 'volcengine',
|
||||
runtimePortHelper: '現在の実行環境には複数のポートがあります。プロキシポートを選択してください。',
|
||||
runtimePortWarn: '現在の実行環境にはポートがありません。プロキシできません',
|
||||
cacheWarn: 'まずリバースプロキシのキャッシュスイッチをオフにしてください',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: '短いタグサポート',
|
||||
|
|
|
@ -2206,6 +2206,7 @@ const message = {
|
|||
volcengine: 'volcengine',
|
||||
runtimePortHelper: '현재 실행 환경에 여러 포트가 있습니다. 프록시 포트를 선택하세요.',
|
||||
runtimePortWarn: '현재 실행 환경에 포트가 없습니다. 프록시할 수 없습니다',
|
||||
cacheWarn: '먼저 리버스 프록시의 캐시 스위치를 끄십시오',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: '짧은 태그 지원',
|
||||
|
|
|
@ -2297,6 +2297,7 @@ const message = {
|
|||
volcengine: 'Volcengine',
|
||||
runtimePortHelper: 'Persekitaran runtime semasa mempunyai beberapa port. Sila pilih port proksi.',
|
||||
runtimePortWarn: 'Persekitaran runtime semasa tidak mempunyai port, tidak dapat proksi',
|
||||
cacheWarn: 'Sila matikan suis cache dalam pembalikan proksi terlebih dahulu',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: 'Sokongan tag pendek',
|
||||
|
|
|
@ -2292,6 +2292,7 @@ const message = {
|
|||
volcengine: 'Volcengine',
|
||||
runtimePortHelper: 'O ambiente de runtime atual possui várias portas. Por favor, selecione uma porta de proxy.',
|
||||
runtimePortWarn: 'O ambiente de execução atual não possui portos, não é possível proxiar',
|
||||
cacheWarn: 'Por favor, desligue o interruptor de cache no proxy reverso primeiro',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: 'Suporte para short tags',
|
||||
|
|
|
@ -2294,6 +2294,7 @@ const message = {
|
|||
volcengine: 'Volcengine',
|
||||
runtimePortHelper: 'O ambiente de runtime atual possui várias portas. Por favor, selecione uma porta de proxy.',
|
||||
runtimePortWarn: 'В текущей среде выполнения нет портов, невозможно проксировать',
|
||||
cacheWarn: 'Пожалуйста, сначала выключите кэш в обратном прокси',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: 'Поддержка коротких тегов',
|
||||
|
|
|
@ -2211,6 +2211,7 @@ const message = {
|
|||
volcengine: 'Volcengine',
|
||||
runtimePortHelper: '當前運行環境存在多個端口,請選擇一個代理端口。',
|
||||
runtimePortWarn: '當前運行環境沒有端口,無法代理',
|
||||
cacheWarn: '請先關閉反代中的緩存開關',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: '短標簽支持',
|
||||
|
|
|
@ -2201,6 +2201,7 @@ const message = {
|
|||
volcengine: '火山引擎',
|
||||
runtimePortHelper: '当前运行环境存在多个端口,请选择一个代理端口',
|
||||
runtimePortWarn: '当前运行环境没有端口,无法代理',
|
||||
cacheWarn: '请先关闭反代中的缓存开关',
|
||||
},
|
||||
php: {
|
||||
short_open_tag: '短标签支持',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<DialogPro v-model="open" size="w-70" @opened="onOpen" :show-close="false" :top="'5vh'" :fullscreen="isFullscreen">
|
||||
<template #header>
|
||||
<div ref="dialogHeader" class="flex items-center justify-between">
|
||||
<span>{{ $t('commons.button.edit') + ' - ' + form.path }}</span>
|
||||
<span class="truncate-text">{{ $t('commons.button.edit') + ' - ' + form.path }}</span>
|
||||
<el-space alignment="center" :size="1" class="dialog-header-icon">
|
||||
<el-tooltip :content="loadTooltip()" placement="top">
|
||||
<el-button
|
||||
|
@ -20,128 +20,135 @@
|
|||
</el-space>
|
||||
</div>
|
||||
</template>
|
||||
<div ref="dialogForm">
|
||||
<el-form :inline="true" :model="config" class="mt-1.5">
|
||||
<el-form-item :label="$t('file.theme')">
|
||||
<el-select v-model="config.theme" @change="changeTheme()" class="p-w-200">
|
||||
<el-option v-for="item in themes" :key="item.label" :value="item.value" :label="item.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.language')">
|
||||
<el-select v-model="config.language" @change="changeLanguage()" class="!w-32">
|
||||
<el-option
|
||||
v-for="lang in Languages"
|
||||
:key="lang.label"
|
||||
:value="lang.label"
|
||||
:label="lang.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.eol')">
|
||||
<el-select v-model="config.eol" @change="changeEOL()" class="p-w-150">
|
||||
<el-option v-for="eol in eols" :key="eol.label" :value="eol.value" :label="eol.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.wordWrap')">
|
||||
<el-select v-model="config.wordWrap" @change="changeWarp()" class="p-w-100">
|
||||
<el-option :label="$t('commons.button.enable')" value="on"></el-option>
|
||||
<el-option :label="$t('commons.button.disable')" value="off"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.minimap')">
|
||||
<el-select v-model="config.minimap" @change="changeMinimap()" class="p-w-100">
|
||||
<el-option :label="$t('commons.button.enable')" :value="true"></el-option>
|
||||
<el-option :label="$t('commons.button.disable')" :value="false"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div v-loading="loading">
|
||||
<div class="flex">
|
||||
<div class="monaco-editor sm:w-48 w-1/3 monaco-editor-background border-0 tree-container" v-if="isShow">
|
||||
<div class="flex items-center justify-between pl-1 sm:pr-4 pr-1 pt-1">
|
||||
<el-tooltip :content="$t('file.top')" placement="top">
|
||||
<el-text size="small" @click="getUpData()" class="cursor-pointer">
|
||||
<el-icon>
|
||||
<Top />
|
||||
</el-icon>
|
||||
<span class="sm:inline hidden pl-1">{{ $t('file.up') }}</span>
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip :content="$t('commons.button.refresh')" placement="top">
|
||||
<el-text size="small" @click="getRefresh(directoryPath)" class="cursor-pointer">
|
||||
<el-icon>
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
<span class="sm:inline hidden pl-1">{{ $t('commons.button.refresh') }}</span>
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<el-divider class="!my-1" />
|
||||
<el-tree-v2
|
||||
ref="treeRef"
|
||||
:data="treeData"
|
||||
:props="treeProps"
|
||||
@node-expand="handleNodeExpand"
|
||||
class="monaco-editor-tree monaco-editor-background"
|
||||
:height="treeHeight"
|
||||
:indent="6"
|
||||
:item-size="24"
|
||||
highlight-current
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<!-- 目录 -->
|
||||
<span v-if="data.isDir" style="display: inline-flex; align-items: center">
|
||||
<svg-icon className="table-icon" iconName="p-file-folder"></svg-icon>
|
||||
<small :title="node.label">{{ node.label }}</small>
|
||||
</span>
|
||||
|
||||
<!-- 文档 -->
|
||||
<span
|
||||
v-else
|
||||
style="display: inline-flex; align-items: center"
|
||||
@click="getContent(data.path, data.extension)"
|
||||
>
|
||||
<svg-icon className="table-icon" :iconName="getIconName(data.extension)"></svg-icon>
|
||||
<small :title="node.label" class="min-w-32">{{ node.label }}</small>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree-v2>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<el-divider
|
||||
v-if="isShow"
|
||||
direction="vertical"
|
||||
:style="{ height: codeHeight }"
|
||||
class="!m-0 p-0"
|
||||
:class="isShow ? 'opacity-100' : 'opacity-0'"
|
||||
></el-divider>
|
||||
<el-icon
|
||||
v-if="isShow"
|
||||
class="cursor-pointer absolute bg-gray-100 py-2 rounded-l-sm block top-1/3 -left-[9px]"
|
||||
size="9"
|
||||
@click="toggleShow"
|
||||
>
|
||||
<DArrowLeft />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
v-else
|
||||
class="cursor-pointer absolute bg-gray-100 py-2 rounded-r-sm block top-1/3 right-[7px]"
|
||||
size="9"
|
||||
@click="toggleShow"
|
||||
>
|
||||
<DArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div
|
||||
ref="codeBox"
|
||||
id="codeBox"
|
||||
:style="{ height: codeHeight }"
|
||||
class="flex-1 sm:w-4/5 w-2/3 relative"
|
||||
></div>
|
||||
<template #content>
|
||||
<div ref="dialogForm">
|
||||
<el-form :inline="true" :model="config" class="mt-1.5">
|
||||
<el-form-item :label="$t('file.theme')">
|
||||
<el-select v-model="config.theme" @change="changeTheme()" class="p-w-200">
|
||||
<el-option
|
||||
v-for="item in themes"
|
||||
:key="item.label"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.language')">
|
||||
<el-select v-model="config.language" @change="changeLanguage()" class="!w-32">
|
||||
<el-option
|
||||
v-for="lang in Languages"
|
||||
:key="lang.label"
|
||||
:value="lang.label"
|
||||
:label="lang.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.eol')">
|
||||
<el-select v-model="config.eol" @change="changeEOL()" class="p-w-150">
|
||||
<el-option v-for="eol in eols" :key="eol.label" :value="eol.value" :label="eol.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.wordWrap')">
|
||||
<el-select v-model="config.wordWrap" @change="changeWarp()" class="p-w-100">
|
||||
<el-option :label="$t('commons.button.enable')" value="on"></el-option>
|
||||
<el-option :label="$t('commons.button.disable')" value="off"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('file.minimap')">
|
||||
<el-select v-model="config.minimap" @change="changeMinimap()" class="p-w-100">
|
||||
<el-option :label="$t('commons.button.enable')" :value="true"></el-option>
|
||||
<el-option :label="$t('commons.button.disable')" :value="false"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div v-loading="loading">
|
||||
<div class="flex">
|
||||
<div
|
||||
class="monaco-editor sm:w-48 w-1/3 monaco-editor-background border-0 tree-container"
|
||||
v-if="isShow"
|
||||
>
|
||||
<div class="flex items-center justify-between pl-1 sm:pr-4 pr-1 pt-1">
|
||||
<el-tooltip :content="$t('file.top')" placement="top">
|
||||
<el-text size="small" @click="getUpData()" class="cursor-pointer">
|
||||
<el-icon>
|
||||
<Top />
|
||||
</el-icon>
|
||||
<span class="sm:inline hidden pl-1">{{ $t('file.up') }}</span>
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip :content="$t('commons.button.refresh')" placement="top">
|
||||
<el-text size="small" @click="getRefresh(directoryPath)" class="cursor-pointer">
|
||||
<el-icon>
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
<span class="sm:inline hidden pl-1">{{ $t('commons.button.refresh') }}</span>
|
||||
</el-text>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<el-divider class="!my-1" />
|
||||
<el-tree-v2
|
||||
ref="treeRef"
|
||||
:data="treeData"
|
||||
:props="treeProps"
|
||||
@node-expand="handleNodeExpand"
|
||||
class="monaco-editor-tree monaco-editor-background"
|
||||
:height="treeHeight"
|
||||
:indent="6"
|
||||
:item-size="24"
|
||||
highlight-current
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<span v-if="data.isDir" style="display: inline-flex; align-items: center">
|
||||
<svg-icon className="table-icon" iconName="p-file-folder"></svg-icon>
|
||||
<small :title="node.label">{{ node.label }}</small>
|
||||
</span>
|
||||
<span
|
||||
v-else
|
||||
style="display: inline-flex; align-items: center"
|
||||
@click="getContent(data.path, data.extension)"
|
||||
>
|
||||
<svg-icon className="table-icon" :iconName="getIconName(data.extension)"></svg-icon>
|
||||
<small :title="node.label" class="min-w-32">{{ node.label }}</small>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree-v2>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<el-divider
|
||||
v-if="isShow"
|
||||
direction="vertical"
|
||||
:style="{ height: codeHeight }"
|
||||
class="!m-0 p-0"
|
||||
:class="isShow ? 'opacity-100' : 'opacity-0'"
|
||||
></el-divider>
|
||||
<el-icon
|
||||
v-if="isShow"
|
||||
class="cursor-pointer absolute bg-gray-100 py-2 rounded-l-sm block top-1/3 -left-[9px]"
|
||||
size="9"
|
||||
@click="toggleShow"
|
||||
>
|
||||
<DArrowLeft />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
v-else
|
||||
class="cursor-pointer absolute bg-gray-100 py-2 rounded-r-sm block top-1/3 right-[7px]"
|
||||
size="9"
|
||||
@click="toggleShow"
|
||||
>
|
||||
<DArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div
|
||||
ref="codeBox"
|
||||
id="codeBox"
|
||||
:style="{ height: codeHeight }"
|
||||
class="flex-1 sm:w-4/5 w-2/3 relative"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #footer>
|
||||
<div class="dialog-footer" ref="dialogFooter">
|
||||
<el-button @click="handleReset">{{ $t('commons.button.reset') }}</el-button>
|
||||
|
@ -710,4 +717,12 @@ defineExpose({ acceptParams });
|
|||
.tree-widget {
|
||||
background-color: var(--el-button--primary);
|
||||
}
|
||||
|
||||
.truncate-text {
|
||||
display: inline-block;
|
||||
max-width: 800px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
:validate-on-rule-change="false"
|
||||
>
|
||||
<el-form-item :label="$t('commons.button.start')" prop="open">
|
||||
<el-switch v-model="req.open"></el-switch>
|
||||
<el-switch v-model="req.open" :disabled="hasCache"></el-switch>
|
||||
<span class="input-help" v-if="hasCache">{{ $t('website.cacheWarn') }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('website.cacheLimit')" prop="cacheLimit">
|
||||
<el-input v-model.number="req.cacheLimit" class="p-w-200">
|
||||
|
@ -78,6 +79,7 @@ import i18n from '@/lang';
|
|||
const open = ref(false);
|
||||
const loading = ref(false);
|
||||
const proxyForm = ref<FormInstance>();
|
||||
const hasCache = ref(false);
|
||||
|
||||
const req = reactive({
|
||||
open: false,
|
||||
|
@ -100,8 +102,9 @@ const handleClose = () => {
|
|||
open.value = false;
|
||||
};
|
||||
|
||||
const acceptParams = (websiteID: number) => {
|
||||
const acceptParams = (websiteID: number, cache: boolean) => {
|
||||
req.websiteID = websiteID;
|
||||
hasCache.value = cache;
|
||||
get();
|
||||
open.value = true;
|
||||
};
|
||||
|
|
|
@ -68,6 +68,7 @@ const createRef = ref();
|
|||
const fileRef = ref();
|
||||
const opRef = ref();
|
||||
const cacheRef = ref();
|
||||
const hasCache = ref(false);
|
||||
|
||||
const buttons = [
|
||||
{
|
||||
|
@ -117,7 +118,7 @@ const openCreate = () => {
|
|||
};
|
||||
|
||||
const openCache = () => {
|
||||
cacheRef.value.acceptParams(id.value);
|
||||
cacheRef.value.acceptParams(id.value, hasCache.value);
|
||||
};
|
||||
|
||||
const openEdit = (proxyConfig: Website.ProxyConfig) => {
|
||||
|
@ -195,6 +196,7 @@ const search = async () => {
|
|||
loading.value = true;
|
||||
const res = await getProxyConfig({ id: id.value });
|
||||
data.value = res.data || [];
|
||||
hasCache.value = data.value.some((item: Website.ProxyConfig) => item.cache);
|
||||
} catch (error) {
|
||||
} finally {
|
||||
loading.value = false;
|
||||
|
|
|
@ -39,7 +39,7 @@ const props = defineProps({
|
|||
|
||||
const isEver = (time: string) => {
|
||||
const expireDate = new Date(time);
|
||||
return expireDate < new Date('1970-01-02');
|
||||
return expireDate > new Date('9999-12-30');
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue