1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-03-14 01:34:47 +08:00

feat: 限制数字输入的最大长度

This commit is contained in:
zhengkunwang223 2023-03-12 11:09:20 +08:00 committed by zhengkunwang223
parent e52ddd3f39
commit c54451c733
8 changed files with 40 additions and 26 deletions

View File

@ -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',

View File

@ -754,6 +754,7 @@ export default {
root: '根目录', root: '根目录',
list: '文件列表', list: '文件列表',
sub: '包含子目录', sub: '包含子目录',
downlodSuccess: '下载完成',
}, },
setting: { setting: {
all: '全部', all: '全部',

View File

@ -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) => {

View File

@ -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>

View File

@ -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;

View File

@ -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') {

View File

@ -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>

View File

@ -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>