mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-03-14 01:34:47 +08:00
feat: 限制数字输入的最大长度
This commit is contained in:
parent
e52ddd3f39
commit
c54451c733
@ -747,6 +747,7 @@ export default {
|
|||||||
type: 'Type',
|
type: 'Type',
|
||||||
list: 'File List',
|
list: 'File List',
|
||||||
sub: 'Include subdirectory',
|
sub: 'Include subdirectory',
|
||||||
|
downlodSuccess: 'Download Success',
|
||||||
},
|
},
|
||||||
setting: {
|
setting: {
|
||||||
all: 'All',
|
all: 'All',
|
||||||
|
@ -754,6 +754,7 @@ export default {
|
|||||||
root: '根目录',
|
root: '根目录',
|
||||||
list: '文件列表',
|
list: '文件列表',
|
||||||
sub: '包含子目录',
|
sub: '包含子目录',
|
||||||
|
downlodSuccess: '下载完成',
|
||||||
},
|
},
|
||||||
setting: {
|
setting: {
|
||||||
all: '全部',
|
all: '全部',
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<LayoutContent :title="$t('app.detail')" :back-name="'App'" :v-loading="loadingDetail" :divider="true">
|
<LayoutContent :title="$t('app.detail')" :back-name="'App'" :divider="true">
|
||||||
<template #main>
|
<template #main>
|
||||||
<div class="brief">
|
<div class="brief" v-loading="loadingApp">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<div>
|
<div>
|
||||||
<el-col :span="3">
|
<el-col :span="3">
|
||||||
@ -34,7 +34,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div v-if="!loadingDetail">
|
||||||
<el-alert
|
<el-alert
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
v-if="!appDetail.enable"
|
v-if="!appDetail.enable"
|
||||||
@ -112,26 +112,30 @@ let app = ref<any>({});
|
|||||||
let appDetail = ref<any>({});
|
let appDetail = ref<any>({});
|
||||||
let version = ref('');
|
let version = ref('');
|
||||||
let loadingDetail = ref(false);
|
let loadingDetail = ref(false);
|
||||||
|
let loadingApp = ref(false);
|
||||||
// let appKey = ref();
|
// let appKey = ref();
|
||||||
const installRef = ref();
|
const installRef = ref();
|
||||||
|
|
||||||
const getApp = () => {
|
const getApp = async () => {
|
||||||
GetApp(props.appKey).then((res) => {
|
loadingApp.value = true;
|
||||||
|
try {
|
||||||
|
const res = await GetApp(props.appKey);
|
||||||
app.value = res.data;
|
app.value = res.data;
|
||||||
version.value = app.value.versions[0];
|
version.value = app.value.versions[0];
|
||||||
getDetail(app.value.id, version.value);
|
getDetail(app.value.id, version.value);
|
||||||
});
|
} finally {
|
||||||
|
loadingApp.value = false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDetail = (id: number, version: string) => {
|
const getDetail = async (id: number, version: string) => {
|
||||||
loadingDetail.value = true;
|
loadingDetail.value = true;
|
||||||
GetAppDetail(id, version)
|
try {
|
||||||
.then((res) => {
|
const res = await GetAppDetail(id, version);
|
||||||
appDetail.value = res.data;
|
appDetail.value = res.data;
|
||||||
})
|
} finally {
|
||||||
.finally(() => {
|
loadingDetail.value = false;
|
||||||
loadingDetail.value = false;
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const toLink = (link: string) => {
|
const toLink = (link: string) => {
|
||||||
|
@ -9,10 +9,10 @@
|
|||||||
:disabled="p.disabled"
|
:disabled="p.disabled"
|
||||||
></el-input>
|
></el-input>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form[p.envKey]"
|
v-model.number="form[p.envKey]"
|
||||||
@blur="form[p.envKey] = Number(form[p.envKey])"
|
@blur="form[p.envKey] = Number(form[p.envKey])"
|
||||||
v-if="p.type == 'number'"
|
v-if="p.type == 'number'"
|
||||||
:type="p.type"
|
maxlength="15"
|
||||||
@change="updateParam"
|
@change="updateParam"
|
||||||
:disabled="p.disabled"
|
:disabled="p.disabled"
|
||||||
></el-input>
|
></el-input>
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
:title="$t('file.downloadProcess')"
|
:title="$t('file.downloadProcess')"
|
||||||
>
|
>
|
||||||
<div v-for="(value, index) in res" :key="index">
|
<div v-for="(value, index) in res" :key="index">
|
||||||
<span>{{ $t('file.downloading') }} {{ value['name'] }}</span>
|
<span>
|
||||||
|
{{ value['percent'] === 100 ? $t('file.downlodSuccess') : $t('file.downloading') }} {{ value['name'] }}
|
||||||
|
</span>
|
||||||
<el-progress v-if="value['total'] == 0" :percentage="100" :indeterminate="true" :duration="1" />
|
<el-progress v-if="value['total'] == 0" :percentage="100" :indeterminate="true" :duration="1" />
|
||||||
<el-progress v-else :text-inside="true" :stroke-width="15" :percentage="value['percent']"></el-progress>
|
<el-progress v-else :text-inside="true" :stroke-width="15" :percentage="value['percent']"></el-progress>
|
||||||
<span>
|
<span>
|
||||||
@ -60,7 +62,7 @@ const onClose = () => {};
|
|||||||
|
|
||||||
const initProcess = () => {
|
const initProcess = () => {
|
||||||
let href = window.location.href;
|
let href = window.location.href;
|
||||||
let protocol = href.split('//')[0] === 'http' ? 'ws' : 'wss';
|
let protocol = href.split('//')[0] === 'http:' ? 'ws' : 'wss';
|
||||||
let ipLocal = href.split('//')[1].split('/')[0];
|
let ipLocal = href.split('//')[1].split('/')[0];
|
||||||
processSocket = new WebSocket(`${protocol}://${ipLocal}/api/v1/files/ws`);
|
processSocket = new WebSocket(`${protocol}://${ipLocal}/api/v1/files/ws`);
|
||||||
processSocket.onopen = onOpenProcess;
|
processSocket.onopen = onOpenProcess;
|
||||||
|
@ -16,15 +16,15 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('website.perserver')" prop="perserver">
|
<el-form-item :label="$t('website.perserver')" prop="perserver">
|
||||||
<el-input v-model.number="form.perserver" min="1" max="65535" type="number"></el-input>
|
<el-input v-model.number="form.perserver" maxlength="10"></el-input>
|
||||||
<span class="input-help">{{ $t('website.perserverHelper') }}</span>
|
<span class="input-help">{{ $t('website.perserverHelper') }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('website.perip')" prop="perip">
|
<el-form-item :label="$t('website.perip')" prop="perip">
|
||||||
<el-input v-model.number="form.perip" type="number"></el-input>
|
<el-input v-model.number="form.perip" maxlength="10"></el-input>
|
||||||
<span class="input-help">{{ $t('website.peripHelper') }}</span>
|
<span class="input-help">{{ $t('website.peripHelper') }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('website.rate')" prop="rate">
|
<el-form-item :label="$t('website.rate')" prop="rate">
|
||||||
<el-input v-model.number="form.rate" type="number"></el-input>
|
<el-input v-model.number="form.rate" maxlength="10"></el-input>
|
||||||
<span class="input-help">{{ $t('website.rateHelper') }}</span>
|
<span class="input-help">{{ $t('website.rateHelper') }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -103,10 +103,10 @@ const search = (scopeReq: Website.NginxScopeReq) => {
|
|||||||
for (const param of res.data.params) {
|
for (const param of res.data.params) {
|
||||||
if (param.name === 'limit_conn') {
|
if (param.name === 'limit_conn') {
|
||||||
if (param.params[0] === 'perserver') {
|
if (param.params[0] === 'perserver') {
|
||||||
form.perserver = Number(param.params[1]);
|
form.perserver = Number(param.params[1].match(/\d+/g));
|
||||||
}
|
}
|
||||||
if (param.params[0] === 'perip') {
|
if (param.params[0] === 'perip') {
|
||||||
form.perip = Number(param.params[1]);
|
form.perip = Number(param.params[1].match(/\d+/g));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (param.name === 'limit_rate') {
|
if (param.name === 'limit_rate') {
|
||||||
|
@ -6,12 +6,12 @@
|
|||||||
<el-switch v-model="form.enable" @change="updateEnable"></el-switch>
|
<el-switch v-model="form.enable" @change="updateEnable"></el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="cycle" :label="$t('website.cycle')">
|
<el-form-item prop="cycle" :label="$t('website.cycle')">
|
||||||
<el-input v-model="form.cycle" type="number">
|
<el-input v-model="form.cycle" maxlength="10">
|
||||||
<template #append>{{ $t('website.seconds') }}</template>
|
<template #append>{{ $t('website.seconds') }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="frequency" :label="$t('website.frequency')">
|
<el-form-item prop="frequency" :label="$t('website.frequency')">
|
||||||
<el-input v-model="form.frequency" type="number">
|
<el-input v-model="form.frequency" maxlength="10">
|
||||||
<template #append>{{ $t('website.count') }}</template>
|
<template #append>{{ $t('website.count') }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="$t('commons.table.type')" fix prop="type">
|
<el-table-column :label="$t('commons.table.type')" fix show-overflow-tooltip prop="type">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ $t('website.' + row.type) }}
|
{{ $t('website.' + row.type) }}
|
||||||
<span v-if="row.type === 'deployment'">[{{ row.appName }}]</span>
|
<span v-if="row.type === 'deployment'">[{{ row.appName }}]</span>
|
||||||
@ -414,4 +414,10 @@ onMounted(() => {
|
|||||||
float: right;
|
float: right;
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
white-space: pre-wrap; /* 自动换行 */
|
||||||
|
word-break: break-all; /* 单词内换行 */
|
||||||
|
max-width: 200px; /* 控制最大宽度 */
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user