Refactor code

This commit is contained in:
cuigh
2021-12-16 20:23:08 +08:00
parent c3115b952c
commit 6705bd6d64
51 changed files with 848 additions and 1176 deletions

View File

@@ -20,8 +20,8 @@ export interface Chart {
top: number;
bottom: number;
};
createdAt: string;
updatedAt: string;
createdAt: number;
updatedAt: number;
createdBy: {
id: string;
name: string;

View File

@@ -8,7 +8,7 @@ export interface Event {
name: string;
userId: string;
username: string;
time: string;
time: number;
}
export interface SearchArgs {

View File

@@ -6,8 +6,8 @@ export interface Registry {
url: string;
username: string;
password: string;
createdAt: string;
updatedAt: string;
createdAt: number;
updatedAt: number;
createdBy: {
id: string;
name: string;

View File

@@ -5,8 +5,8 @@ export interface Role {
name: string;
desc: string;
perms: string[];
createdAt: string;
updatedAt: string;
createdAt: number;
updatedAt: number;
createdBy: {
id: string;
name: string;

View File

@@ -6,8 +6,8 @@ export interface Stack {
content: string;
services?: string[];
internal: boolean;
createdAt: string;
updatedAt: string;
createdAt: number;
updatedAt: number;
createdBy: {
id: string;
name: string;

View File

@@ -17,8 +17,8 @@ export interface User {
status: number;
email: string;
roles: string[];
createdAt: string;
updatedAt: string;
createdAt: number;
updatedAt: number;
createdBy: {
id: string;
name: string;

View File

@@ -394,6 +394,7 @@ export default {
"1002": "Account is disabled",
"1003": "Old password is incorrect",
"1004": "Can not deploy external stack",
"1005": "system was already initialized",
},
"copyright": "© 2017-2021 cuigh. All rights reserved.",
}

View File

@@ -394,6 +394,7 @@ export default {
"1002": "账户已禁用",
"1003": "旧密码不正确",
"1004": "不能发布外部编排",
"1005": "系统已经初始化",
},
"copyright": "© 2017-2021 cuigh. 保留所有权利。",
}

View File

@@ -68,7 +68,7 @@ import XCode from "@/components/Code.vue";
import XIcon from "@/components/Icon.vue";
import chartApi from "@/api/chart";
import type { Chart } from "@/api/chart";
import { renderButtons, renderLink, renderTag } from "@/utils/render";
import { renderButtons, renderLink, renderTag, renderTime } from "@/utils/render";
import { useDataTable } from "@/utils/data-table";
import { toTitle } from "@/utils";
import { useI18n } from 'vue-i18n'
@@ -119,7 +119,8 @@ const columns = [
},
{
title: t('fields.updated_at'),
key: "updatedAt"
key: "updatedAt",
render: (c: Chart) => renderTime(c.updatedAt),
},
{
title: t('fields.actions'),
@@ -175,7 +176,7 @@ function importChart() {
}
function exportChart(c: Chart) {
const { id, createdAt, updatedAt, ...chart } = c
const { id, createdAt, updatedAt, createdBy, updatedBy, ...chart } = c
window.dialog.success({
showIcon: false,
title: t('dialogs.export_chart.title'),

View File

@@ -57,11 +57,15 @@
<x-description-item :label="t('fields.created_by')">
<x-anchor :url="`/system/users/${model.createdBy?.id}`">{{ model.createdBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.created_at')">{{ model.createdAt }}</x-description-item>
<x-description-item :label="t('fields.created_at')">
<n-time :time="model.createdAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :label="t('fields.updated_by')">
<x-anchor :url="`/system/users/${model.updatedBy?.id}`">{{ model.updatedBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.updated_at')">{{ model.updatedAt }}</x-description-item>
<x-description-item :label="t('fields.updated_at')">
<n-time :time="model.updatedAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
</x-description>
<x-panel :title="t('fields.metrics')">
<n-table size="small" :bordered="true" :single-line="false">
@@ -89,6 +93,7 @@ import {
NSpace,
NIcon,
NTable,
NTime,
} from "naive-ui";
import { ArrowBackCircleOutline as BackIcon } from "@vicons/ionicons5";
import XPageHeader from "@/components/PageHeader.vue";

View File

@@ -59,7 +59,7 @@ import XPageHeader from "@/components/PageHeader.vue";
import eventApi from "@/api/event";
import type { Event } from "@/api/event";
import { useDataTable } from "@/utils/data-table";
import { renderLink, renderTag } from "@/utils/render";
import { renderLink, renderTag, renderTime } from "@/utils/render";
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
@@ -186,7 +186,8 @@ const columns = [
},
{
title: t('fields.time'),
key: "time"
key: "time",
render: (e: Event) => renderTime(e.time),
},
];
const { state, pagination, fetchData, changePageSize } = useDataTable(eventApi.search, filter)

View File

@@ -30,8 +30,12 @@
</td>
<td>{{ r.url }}</td>
<td>{{ r.username }}</td>
<td>{{ r.createdAt }}</td>
<td>{{ r.updatedAt }}</td>
<td>
<n-time :time="r.createdAt" format="y-MM-dd HH:mm:ss" />
</td>
<td>
<n-time :time="r.updatedAt" format="y-MM-dd HH:mm:ss" />
</td>
<td>
<n-button
size="tiny"
@@ -60,6 +64,7 @@ import {
NTable,
NPopconfirm,
NIcon,
NTime,
} from "naive-ui";
import { AddOutline as AddIcon } from "@vicons/ionicons5";
import XPageHeader from "@/components/PageHeader.vue";

View File

@@ -25,11 +25,15 @@
<x-description-item :label="t('fields.created_by')">
<x-anchor :url="`/system/users/${model.createdBy?.id}`">{{ model.createdBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.created_at')">{{ model.createdAt }}</x-description-item>
<x-description-item :label="t('fields.created_at')">
<n-time :time="model.createdAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :label="t('fields.updated_by')">
<x-anchor :url="`/system/users/${model.updatedBy?.id}`">{{ model.updatedBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.updated_at')">{{ model.updatedAt }}</x-description-item>
<x-description-item :label="t('fields.updated_at')">
<n-time :time="model.updatedAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
</x-description>
</n-space>
</template>
@@ -40,6 +44,7 @@ import {
NButton,
NSpace,
NIcon,
NTime,
} from "naive-ui";
import { ArrowBackCircleOutline as BackIcon } from "@vicons/ionicons5";
import XPageHeader from "@/components/PageHeader.vue";

View File

@@ -33,7 +33,9 @@
</td>
<td>{{ r.name }}</td>
<td>{{ r.desc }}</td>
<td>{{ r.updatedAt }}</td>
<td>
<n-time :time="r.updatedAt" format="y-MM-dd HH:mm:ss" />
</td>
<td>
<n-popconfirm :show-icon="false" @positive-click="deleteRole(r, index)">
<template #trigger>
@@ -63,6 +65,7 @@ import {
NIcon,
NTable,
NPopconfirm,
NTime,
} from "naive-ui";
import {
AddOutline as AddIcon,

View File

@@ -24,11 +24,15 @@
<x-description-item :label="t('fields.created_by')">
<x-anchor :url="`/system/users/${model.createdBy?.id}`">{{ model.createdBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.created_at')">{{ model.createdAt }}</x-description-item>
<x-description-item :label="t('fields.created_at')">
<n-time :time="model.createdAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :label="t('fields.updated_by')">
<x-anchor :url="`/system/users/${model.updatedBy?.id}`">{{ model.updatedBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.updated_at')">{{ model.updatedAt }}</x-description-item>
<x-description-item :label="t('fields.updated_at')">
<n-time :time="model.updatedAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :span="2" :label="t('fields.perms')">
<n-grid cols="1 480:2 960:3 1440:4" x-gap="6">
<n-gi span="1" v-for="g in ps">
@@ -48,6 +52,7 @@ import {
NIcon,
NGrid,
NGi,
NTime,
} from "naive-ui";
import { useRoute } from "vue-router";
import { ArrowBackCircleOutline as BackIcon } from "@vicons/ionicons5";

View File

@@ -152,6 +152,7 @@ async function fetchData() {
if (name) {
let tr = await stackApi.find(name);
model.value = tr.data as Stack;
model.value.id = model.value.name
}
}

View File

@@ -38,8 +38,12 @@
</n-tag>
</n-space>
</td>
<td>{{ r.createdAt }}</td>
<td>{{ r.updatedAt }}</td>
<td>
<n-time :time="r.createdAt" format="y-MM-dd HH:mm:ss" />
</td>
<td>
<n-time :time="r.updatedAt" format="y-MM-dd HH:mm:ss" />
</td>
<td>
<n-button
size="tiny"
@@ -86,6 +90,7 @@ import {
NTable,
NPopconfirm,
NTag,
NTime,
} from "naive-ui";
import { AddOutline as AddIcon } from "@vicons/ionicons5";
import XPageHeader from "@/components/PageHeader.vue";

View File

@@ -23,11 +23,15 @@
<x-description-item :label="t('fields.created_by')">
<x-anchor :url="`/system/users/${model.createdBy?.id}`">{{ model.createdBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.created_at')">{{ model.createdAt }}</x-description-item>
<x-description-item :label="t('fields.created_at')">
<n-time :time="model.createdAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :label="t('fields.updated_by')">
<x-anchor :url="`/system/users/${model.updatedBy?.id}`">{{ model.updatedBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.updated_at')">{{ model.updatedAt }}</x-description-item>
<x-description-item :label="t('fields.updated_at')">
<n-time :time="model.updatedAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
</x-description>
<x-panel :title="t('fields.content')">
<x-code :code="model.content" language="yaml" />
@@ -42,6 +46,7 @@ import {
NButton,
NSpace,
NIcon,
NTime,
} from "naive-ui";
import { ArrowBackCircleOutline as BackIcon } from "@vicons/ionicons5";
import XPageHeader from "@/components/PageHeader.vue";

View File

@@ -70,7 +70,7 @@ import XPageHeader from "@/components/PageHeader.vue";
import userApi from "@/api/user";
import type { User } from "@/api/user";
import { useDataTable } from "@/utils/data-table";
import { renderButtons, renderLink, renderTag } from "@/utils/render";
import { renderButtons, renderLink, renderTag, renderTime } from "@/utils/render";
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
@@ -114,6 +114,7 @@ const columns = [
{
title: t('fields.updated_at'),
key: "updatedAt",
render: (row: User) => renderTime(row.updatedAt),
},
{
title: t('fields.actions'),

View File

@@ -48,13 +48,17 @@
:url="`/system/users/${model.user.createdBy?.id}`"
>{{ model.user.createdBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.created_at')">{{ model.user.createdAt }}</x-description-item>
<x-description-item :label="t('fields.created_at')">
<n-time :time="model.user.createdAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item :label="t('fields.updated_by')">
<x-anchor
:url="`/system/users/${model.user.updatedBy?.id}`"
>{{ model.user.updatedBy?.name }}</x-anchor>
</x-description-item>
<x-description-item :label="t('fields.updated_at')">{{ model.user.updatedAt }}</x-description-item>
<x-description-item :label="t('fields.updated_at')">
<n-time :time="model.user.updatedAt" format="y-MM-dd HH:mm:ss" />
</x-description-item>
<x-description-item
:label="t('objects.role', 2)"
:span="2"
@@ -80,6 +84,7 @@ import {
NTag,
NSpace,
NIcon,
NTime,
} from "naive-ui";
import { useRoute } from "vue-router";
import { ArrowBackCircleOutline as BackIcon } from "@vicons/ionicons5";