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

fix: 修复容器部分 bug

This commit is contained in:
ssongliu 2023-02-23 09:31:00 +08:00 committed by ssongliu
parent 0b79c91d6f
commit cd89caa0c4
15 changed files with 60 additions and 56 deletions

View File

@ -500,7 +500,7 @@ func handleErr(install model.AppInstall, err error, out string) error {
}
func getAppFromRepo(downloadPath, version string) error {
downloadUrl := fmt.Sprintf(downloadPath)
downloadUrl := downloadPath
appDir := constant.AppResourceDir
global.LOG.Infof("download file from %s", downloadUrl)

View File

@ -18,6 +18,11 @@
v-model="detailInfo"
:readOnly="true"
/>
<template #footer>
<span class="dialog-footer">
<el-button @click="codeVisiable = false">{{ $t('commons.button.cancel') }}</el-button>
</span>
</template>
</el-drawer>
</template>

View File

@ -813,7 +813,7 @@ export default {
monitor: 'Monitor',
enableMonitor: 'Enable',
storeDays: 'Expiration time (day)',
storeDays: 'Expiration days',
cleanMonitor: 'Clearing monitoring records',
message: 'Message',

View File

@ -818,7 +818,7 @@ export default {
monitor: '监控',
enableMonitor: '监控状态',
storeDays: 'Retention days (days)',
storeDays: '保存天数',
cleanMonitor: '清空监控记录',
message: '通知',

View File

@ -59,8 +59,10 @@
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="drawerVisiable = false">{{ $t('commons.button.cancel') }}</el-button>
<el-button type="primary" @click="onSubmit(formRef)">
<el-button :disabled="loading" @click="drawerVisiable = false">
{{ $t('commons.button.cancel') }}
</el-button>
<el-button type="primary" :disabled="loading" @click="onSubmit(formRef)">
{{ $t('commons.button.confirm') }}
</el-button>
</span>

View File

@ -101,7 +101,6 @@ import { Container } from '@/api/interface/container';
import { useDeleteData } from '@/hooks/use-delete-data';
import { LoadFile } from '@/api/modules/files';
import router from '@/routers';
import { MsgSuccess } from '@/utils/message';
const data = ref();
const selects = ref<any>([]);
@ -175,7 +174,6 @@ const onDelete = async (row: Container.ComposeInfo) => {
};
await useDeleteData(composeOperator, param, 'commons.msg.delete');
search();
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
};
const dialogEditRef = ref();

View File

@ -40,7 +40,7 @@
<el-form-item v-else :rules="Rules.requiredSelect" prop="dockerfile">
<el-input clearable v-model="form.dockerfile">
<template #prepend>
<FileList @choose="loadBuildDir" :dir="true"></FileList>
<FileList @choose="loadBuildDir"></FileList>
</template>
</el-input>
</el-form-item>

View File

@ -6,12 +6,17 @@
<el-form :model="deleteForm" label-position="top">
<el-row type="flex" justify="center">
<el-col :span="22">
<el-form-item :label="$t('container.imageDelete')" prop="tagName">
<el-checkbox v-model="isByID" :label="deleteForm.id" @change="changeDeleteType" />
</el-form-item>
<el-form-item :label="$t('container.imageDeleteTag')" prop="tagName">
<el-form-item :label="$t('container.tag')" prop="tagName">
<el-checkbox-group v-model="deleteForm.deleteTags">
<el-checkbox v-for="item in deleteForm.tags" :key="item" :value="item" :label="item" />
<div>
<el-checkbox
style="width: 100%"
v-for="item in deleteForm.tags"
:key="item"
:value="item"
:label="item"
/>
</div>
</el-checkbox-group>
</el-form-item>
</el-col>
@ -35,21 +40,16 @@ import { useDeleteData } from '@/hooks/use-delete-data';
import DrawerHeader from '@/components/drawer-header/index.vue';
const deleteVisiable = ref(false);
const isByID = ref();
const deleteForm = reactive({
id: '',
tags: [] as Array<string>,
deleteTags: [] as Array<string>,
});
interface DialogProps {
id: string;
tags: Array<string>;
}
const acceptParams = (params: DialogProps) => {
isByID.value = false;
deleteVisiable.value = true;
deleteForm.id = params.id.replaceAll('sha256:', '').substring(0, 12);
deleteForm.deleteTags = [];
deleteForm.tags = params.tags;
};
@ -58,20 +58,10 @@ const handleClose = () => {
};
const emit = defineEmits<{ (e: 'search'): void }>();
const changeDeleteType = () => {
if (isByID.value) {
deleteForm.deleteTags = deleteForm.tags;
}
};
const batchDelete = async () => {
let names: Array<string> = [];
if (!isByID.value) {
for (const item of deleteForm.deleteTags) {
names.push(item);
}
} else {
names.push(deleteForm.id);
for (const item of deleteForm.deleteTags) {
names.push(item);
}
await useDeleteData(imageRemove, { names: names }, 'commons.msg.delete');
deleteVisiable.value = false;

View File

@ -49,11 +49,12 @@
</template>
</el-table-column>
<el-table-column :label="$t('container.size')" prop="size" min-width="70" fix />
<el-table-column :label="$t('commons.table.createdAt')" min-width="80" fix>
<template #default="{ row }">
{{ dateFormatSimple(row.createdAt) }}
</template>
</el-table-column>
<el-table-column
prop="createdAt"
min-width="90"
:label="$t('commons.table.date')"
:formatter="dateFormat"
/>
<fu-table-operations
width="200px"
:ellipsis="10"
@ -78,7 +79,7 @@
import ComplexTable from '@/components/complex-table/index.vue';
import TableSetting from '@/components/table-setting/index.vue';
import { reactive, onMounted, ref } from 'vue';
import { dateFormatSimple } from '@/utils/util';
import { dateFormat } from '@/utils/util';
import { Container } from '@/api/interface/container';
import LayoutContent from '@/layout/layout-content.vue';
import Pull from '@/views/container/image/pull/index.vue';
@ -88,9 +89,10 @@ import Save from '@/views/container/image/save/index.vue';
import Load from '@/views/container/image/load/index.vue';
import Build from '@/views/container/image/build/index.vue';
import Delete from '@/views/container/image/delete/index.vue';
import { searchImage, listImageRepo, loadDockerStatus } from '@/api/modules/container';
import { searchImage, listImageRepo, loadDockerStatus, imageRemove } from '@/api/modules/container';
import i18n from '@/lang';
import router from '@/routers';
import { useDeleteData } from '@/hooks/use-delete-data';
const loading = ref(false);
@ -157,7 +159,7 @@ const onOpenload = () => {
const buttons = [
{
label: 'Tag',
label: i18n.global.t('container.tag'),
click: (row: Container.ImageInfo) => {
let params = {
repos: repos.value,
@ -188,7 +190,11 @@ const buttons = [
},
{
label: i18n.global.t('commons.button.delete'),
click: (row: Container.ImageInfo) => {
click: async (row: Container.ImageInfo) => {
if (row.tags.length <= 1) {
await useDeleteData(imageRemove, { names: [row.id] }, 'commons.msg.delete');
return;
}
let params = {
id: row.id,
tags: row.tags,

View File

@ -12,7 +12,7 @@
<el-row type="flex" justify="center">
<el-col :span="22">
<el-form ref="formRef" label-position="top" :model="form" label-width="80px">
<el-form-item label="Tag" :rules="Rules.requiredSelect" prop="tagName">
<el-form-item :label="$t('container.tag')" :rules="Rules.requiredSelect" prop="tagName">
<el-select filterable v-model="form.tagName">
<el-option v-for="item in form.tags" :key="item" :value="item" :label="item" />
</el-select>

View File

@ -6,7 +6,7 @@
<el-form v-loading="loading" label-position="top" ref="formRef" :model="form" label-width="80px">
<el-row type="flex" justify="center">
<el-col :span="22">
<el-form-item label="Tag" :rules="Rules.requiredSelect" prop="tagName">
<el-form-item :label="$t('container.tag')" :rules="Rules.requiredSelect" prop="tagName">
<el-select filterable v-model="form.tagName">
<el-option
:disabled="item.indexOf(':<none>') !== -1"

View File

@ -59,11 +59,13 @@
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('commons.table.createdAt')" min-width="80" fix>
<template #default="{ row }">
{{ dateFormatSimple(row.createdAt) }}
</template>
</el-table-column>
<el-table-column
prop="createdAt"
:label="$t('commons.table.createdAt')"
min-width="80"
fix
:formatter="dateFormat"
/>
<fu-table-operations :buttons="buttons" :label="$t('commons.table.operate')" />
</ComplexTable>
</template>
@ -80,7 +82,7 @@ import TableSetting from '@/components/table-setting/index.vue';
import OperatorDialog from '@/views/container/repo/operator/index.vue';
import DeleteDialog from '@/views/container/repo/delete/index.vue';
import { reactive, onMounted, ref } from 'vue';
import { dateFormatSimple } from '@/utils/util';
import { dateFormat } from '@/utils/util';
import { Container } from '@/api/interface/container';
import { deleteImageRepo, loadDockerStatus, searchImageRepo } from '@/api/modules/container';
import i18n from '@/lang';

View File

@ -3,7 +3,7 @@
<template #header>
<DrawerHeader :header="$t('database.requirepass')" :back="handleClose" />
</template>
<el-form v-loading="loading" ref="formRef" :model="form" label-width="80px">
<el-form v-loading="loading" ref="formRef" :model="form" label-position="top">
<el-row type="flex" justify="center">
<el-col :span="22">
<el-form-item :label="$t('database.requirepass')" :rules="Rules.requiredInput" prop="password">

View File

@ -60,7 +60,7 @@
{{ s3Data.bucket }}
</el-form-item>
<el-form-item :label="$t('commons.table.createdAt')">
{{ dateFormatSimple(s3Data.createdAt) }}
{{ dateFormat(0, 0, s3Data.createdAt) }}
</el-form-item>
</div>
<el-alert v-else center class="alert" style="height: 167px" :closable="false">
@ -96,7 +96,7 @@
{{ ossData.bucket }}
</el-form-item>
<el-form-item :label="$t('commons.table.createdAt')">
{{ dateFormatSimple(ossData.createdAt) }}
{{ dateFormat(0, 0, ossData.createdAt) }}
</el-form-item>
</div>
<el-alert v-else center class="alert" style="height: 167px" :closable="false">
@ -133,7 +133,7 @@
{{ minioData.bucket }}
</el-form-item>
<el-form-item :label="$t('commons.table.createdAt')">
{{ dateFormatSimple(minioData.createdAt) }}
{{ dateFormat(0, 0, minioData.createdAt) }}
</el-form-item>
</div>
<el-alert v-else center class="alert" style="height: 167px" :closable="false">
@ -172,7 +172,7 @@
{{ sftpData.bucket }}
</el-form-item>
<el-form-item :label="$t('commons.table.createdAt')">
{{ dateFormatSimple(sftpData.createdAt) }}
{{ dateFormat(0, 0, sftpData.createdAt) }}
</el-form-item>
</div>
<el-alert v-else center class="alert" style="height: 167px" :closable="false">
@ -188,7 +188,7 @@
</div>
</template>
<script setup lang="ts">
import { dateFormatSimple, dateFormat } from '@/utils/util';
import { dateFormat } from '@/utils/util';
import { onMounted, ref } from 'vue';
import LayoutContent from '@/layout/layout-content.vue';
import { getBackupList, deleteBackup } from '@/api/modules/setting';

View File

@ -1,8 +1,8 @@
<template>
<div>
<LayoutContent v-loading="loading" :title="$t('setting.panel')" :divider="true">
<div v-loading="loading">
<LayoutContent :title="$t('setting.panel')" :divider="true">
<template #main>
<el-form :model="form" ref="panelFormRef" label-position="left" v-loading="loading" label-width="160px">
<el-form :model="form" ref="panelFormRef" label-position="left" label-width="160px">
<el-row>
<el-col :span="1"><br /></el-col>
<el-col :span="10">
@ -195,6 +195,7 @@ const onSave = async (formEl: FormInstance | undefined, key: string, val: any) =
break;
case 'SessionTimeout':
if (Number(val) < 300) {
loading.value = false;
MsgError(i18n.t('setting.sessionTimeoutError'));
search();
return;