@liujitcn/kratos-admin-system 0.0.21 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package/declarations/src/api/system/base_language.d.ts +5 -4
- package/dist/package/declarations/src/api/system/base_translation.d.ts +7 -4
- package/dist/package/declarations/src/api/system/ops_monitoring.d.ts +19 -0
- package/dist/package/declarations/src/api/system/ops_monitoring_sse.d.ts +12 -0
- package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +9 -32
- package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +3 -6
- package/dist/package/declarations/src/components/dynamicTranslation.d.ts +11 -17
- package/dist/package/declarations/src/locales/generated.d.ts +6536 -0
- package/dist/package/declarations/src/rpc/base/v1/ai_session.d.ts +12 -2
- package/dist/package/declarations/src/rpc/base/v1/ai_tool.d.ts +9 -1
- package/dist/package/declarations/src/rpc/base/v1/config.d.ts +35 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +1 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +23 -7
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +7 -77
- package/dist/package/declarations/src/rpc/system/admin/v1/base_job.d.ts +9 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_language.d.ts +7 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +5 -40
- package/dist/package/declarations/src/rpc/system/admin/v1/base_migration.d.ts +6 -6
- package/dist/package/declarations/src/rpc/system/admin/v1/base_role.d.ts +13 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_translation.d.ts +54 -81
- package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +11 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +11 -11
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +11 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/common.d.ts +13 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/ops_monitoring.d.ts +222 -0
- package/dist/package/declarations/src/views/tool/ops-monitoring/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/ai_message.ts +2 -2
- package/dist/package/src/api/system/base_language.ts +13 -15
- package/dist/package/src/api/system/base_translation.ts +17 -6
- package/dist/package/src/api/system/ops_monitoring.ts +88 -0
- package/dist/package/src/api/system/ops_monitoring_sse.ts +49 -0
- package/dist/package/src/components/DynamicTranslationCell.vue +199 -126
- package/dist/package/src/components/DynamicTranslationEditor.vue +109 -78
- package/dist/package/src/components/dynamicTranslation.ts +11 -31
- package/dist/package/src/locales/README.md +7 -5
- package/dist/package/src/locales/en-US.json +876 -872
- package/dist/package/src/locales/es-ES.json +900 -895
- package/dist/package/src/locales/fr-FR.json +896 -891
- package/dist/package/src/locales/generated.ts +22 -0
- package/dist/package/src/locales/ja-JP.json +876 -872
- package/dist/package/src/locales/ko-KR.json +881 -876
- package/dist/package/src/locales/zh-CN.json +876 -872
- package/dist/package/src/locales/zh-TW.json +876 -871
- package/dist/package/src/module.ts +3 -17
- package/dist/package/src/rpc/base/v1/ai_session.ts +13 -2
- package/dist/package/src/rpc/base/v1/ai_tool.ts +10 -1
- package/dist/package/src/rpc/base/v1/config.ts +47 -0
- package/dist/package/src/rpc/system/admin/v1/auth.ts +1 -1
- package/dist/package/src/rpc/system/admin/v1/base_config.ts +24 -7
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +7 -79
- package/dist/package/src/rpc/system/admin/v1/base_job.ts +10 -1
- package/dist/package/src/rpc/system/admin/v1/base_language.ts +8 -2
- package/dist/package/src/rpc/system/admin/v1/base_menu.ts +5 -41
- package/dist/package/src/rpc/system/admin/v1/base_migration.ts +8 -8
- package/dist/package/src/rpc/system/admin/v1/base_role.ts +14 -1
- package/dist/package/src/rpc/system/admin/v1/base_translation.ts +54 -81
- package/dist/package/src/rpc/system/admin/v1/base_user.ts +12 -1
- package/dist/package/src/rpc/system/admin/v1/code_gen.ts +11 -11
- package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +12 -1
- package/dist/package/src/rpc/system/admin/v1/common.ts +21 -0
- package/dist/package/src/rpc/system/admin/v1/ops_monitoring.ts +255 -0
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +36 -36
- package/dist/package/src/views/ai/chat/components/SessionPanel.vue +6 -6
- package/dist/package/src/views/ai/chat/components/XSender.vue +20 -20
- package/dist/package/src/views/ai/chat/index.vue +33 -32
- package/dist/package/src/views/ai/chat/message.ts +16 -15
- package/dist/package/src/views/base/api/index.vue +55 -56
- package/dist/package/src/views/base/area/index.vue +18 -19
- package/dist/package/src/views/base/config/index.vue +143 -133
- package/dist/package/src/views/base/dept/index.vue +42 -43
- package/dist/package/src/views/base/dict/index.vue +49 -45
- package/dist/package/src/views/base/dict/item.vue +54 -49
- package/dist/package/src/views/base/job/index.vue +51 -52
- package/dist/package/src/views/base/job/log.vue +18 -18
- package/dist/package/src/views/{tool → base}/language/index.vue +51 -47
- package/dist/package/src/views/base/log/index.vue +40 -40
- package/dist/package/src/views/base/menu/index.vue +220 -177
- package/dist/package/src/views/base/migration/index.vue +24 -24
- package/dist/package/src/views/base/post/index.vue +42 -43
- package/dist/package/src/views/base/role/index.vue +54 -55
- package/dist/package/src/views/base/tenant/index.vue +42 -43
- package/dist/package/src/views/base/user/components/dept-tree.vue +1 -1
- package/dist/package/src/views/base/user/index.vue +69 -71
- package/dist/package/src/views/profile/components/base.vue +9 -9
- package/dist/package/src/views/profile/components/password.vue +19 -20
- package/dist/package/src/views/profile/components/security.vue +20 -20
- package/dist/package/src/views/profile/index.vue +3 -3
- package/dist/package/src/views/tool/api-doc/index.vue +1 -1
- package/dist/package/src/views/tool/code-gen/code-preview/index.vue +13 -13
- package/dist/package/src/views/tool/code-gen/columns/index.vue +89 -89
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +5 -5
- package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +21 -21
- package/dist/package/src/views/tool/code-gen/components/CodePreviewPane.vue +5 -5
- package/dist/package/src/views/tool/code-gen/config.ts +60 -60
- package/dist/package/src/views/tool/code-gen/preview/data.ts +2 -2
- package/dist/package/src/views/tool/code-gen/preview/index.vue +30 -31
- package/dist/package/src/views/tool/code-gen/proto/index.vue +43 -43
- package/dist/package/src/views/tool/code-gen/table/index.vue +95 -95
- package/dist/package/src/views/tool/ops-monitoring/index.vue +1175 -0
- package/dist/package/src/views/tool/project-doc/index.vue +7 -7
- package/package.json +2 -2
- package/dist/package/declarations/src/rpc/base/v1/enum.d.ts +0 -43
- package/dist/package/declarations/src/rpc/system/common/v1/enum.d.ts +0 -67
- package/dist/package/src/rpc/base/v1/enum.ts +0 -54
- package/dist/package/src/rpc/system/common/v1/enum.ts +0 -80
- /package/dist/package/declarations/src/views/{tool → base}/language/index.vue.d.ts +0 -0
|
@@ -2,28 +2,28 @@
|
|
|
2
2
|
<div class="table-box">
|
|
3
3
|
<ProTable ref="proTable" row-key="id" :columns="columns" :request-api="requestBaseJobLogTable" />
|
|
4
4
|
|
|
5
|
-
<ProDialog v-model="dialog.visible" :title="t('system.
|
|
5
|
+
<ProDialog v-model="dialog.visible" :title="t('system.base.job.log.title.detail')" width="1200px" @close="handleCloseDialog">
|
|
6
6
|
<div class="detail-container">
|
|
7
|
-
<el-descriptions :title="t('system.
|
|
8
|
-
<el-descriptions-item :label="t('
|
|
7
|
+
<el-descriptions :title="t('system.base.job.log.section.basic')" border :column="2">
|
|
8
|
+
<el-descriptions-item :label="t('common.field.status')">
|
|
9
9
|
<DictLabel v-model="detail.status" code="base_job_log_status" />
|
|
10
10
|
</el-descriptions-item>
|
|
11
|
-
<el-descriptions-item :label="t('system.
|
|
12
|
-
<el-descriptions-item :label="t('system.
|
|
11
|
+
<el-descriptions-item :label="t('system.base.job.log.field.process_time')">{{ detail.process_time }}</el-descriptions-item>
|
|
12
|
+
<el-descriptions-item :label="t('system.base.job.log.field.execute_time')">{{ detail.execute_time }}</el-descriptions-item>
|
|
13
13
|
</el-descriptions>
|
|
14
14
|
|
|
15
|
-
<el-descriptions :title="t('system.
|
|
16
|
-
<el-descriptions-item :label="t('system.
|
|
15
|
+
<el-descriptions :title="t('system.base.job.log.section.execution')" border :column="1" class="mt-4">
|
|
16
|
+
<el-descriptions-item :label="t('system.base.job.log.field.input')">
|
|
17
17
|
<pre class="code-block">{{ formatJson(detail.input) }}</pre>
|
|
18
18
|
</el-descriptions-item>
|
|
19
|
-
<el-descriptions-item :label="t('system.
|
|
19
|
+
<el-descriptions-item :label="t('system.base.job.log.field.output')">
|
|
20
20
|
<pre class="code-block">{{ formatJson(detail.output) }}</pre>
|
|
21
21
|
</el-descriptions-item>
|
|
22
22
|
</el-descriptions>
|
|
23
23
|
|
|
24
24
|
<el-alert
|
|
25
|
-
v-if="detail.status === BaseJobLogStatus.
|
|
26
|
-
:title="t('system.
|
|
25
|
+
v-if="detail.status === BaseJobLogStatus.BASE_JOB_LOG_STATUS_FAIL"
|
|
26
|
+
:title="t('system.base.job.log.field.error')"
|
|
27
27
|
type="error"
|
|
28
28
|
:description="detail.error"
|
|
29
29
|
class="mt-4"
|
|
@@ -49,7 +49,7 @@ import { defBaseJobService } from "@liujitcn/kratos-admin-system/api/system/base
|
|
|
49
49
|
import { buildPageRequest } from "@liujitcn/kratos-admin-core/table";
|
|
50
50
|
import { formatJson } from "@liujitcn/kratos-admin-core/format";
|
|
51
51
|
import type { BaseJobLog, PageBaseJobLogRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_job";
|
|
52
|
-
import { BaseJobLogStatus } from "@liujitcn/kratos-admin-system/rpc/system/
|
|
52
|
+
import { BaseJobLogStatus } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_job";
|
|
53
53
|
import { t } from "@liujitcn/kratos-admin-core";
|
|
54
54
|
|
|
55
55
|
defineOptions({
|
|
@@ -79,7 +79,7 @@ function createDefaultDetail(): BaseJobLog {
|
|
|
79
79
|
/** 错误信息 */
|
|
80
80
|
error: "",
|
|
81
81
|
/** 状态 */
|
|
82
|
-
status: BaseJobLogStatus.
|
|
82
|
+
status: BaseJobLogStatus.BASE_JOB_LOG_STATUS_UNSPECIFIED,
|
|
83
83
|
/** 消耗时间 */
|
|
84
84
|
process_time: "",
|
|
85
85
|
/** 执行时间 */
|
|
@@ -93,14 +93,14 @@ const detail = reactive<BaseJobLog>(createDefaultDetail());
|
|
|
93
93
|
const columns = computed<ColumnProps[]>(() => [
|
|
94
94
|
{
|
|
95
95
|
prop: "status",
|
|
96
|
-
label: t("
|
|
96
|
+
label: t("common.field.status"),
|
|
97
97
|
minWidth: 120,
|
|
98
98
|
dictCode: "base_job_log_status",
|
|
99
99
|
search: { el: "select" }
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
prop: "execute_time",
|
|
103
|
-
label: t("system.
|
|
103
|
+
label: t("system.base.job.log.field.execute_time"),
|
|
104
104
|
minWidth: 180,
|
|
105
105
|
search: {
|
|
106
106
|
el: "date-picker",
|
|
@@ -109,16 +109,16 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
109
109
|
editable: false,
|
|
110
110
|
class: "!w-[240px]",
|
|
111
111
|
rangeSeparator: "~",
|
|
112
|
-
startPlaceholder: t("
|
|
113
|
-
endPlaceholder: t("
|
|
112
|
+
startPlaceholder: t("common.placeholder.start_date"),
|
|
113
|
+
endPlaceholder: t("common.placeholder.end_date"),
|
|
114
114
|
valueFormat: "YYYY-MM-DD"
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
|
-
{ prop: "process_time", label: t("system.
|
|
118
|
+
{ prop: "process_time", label: t("system.base.job.log.field.process_time_ms"), minWidth: 130, align: "right" },
|
|
119
119
|
{
|
|
120
120
|
prop: "detailAction",
|
|
121
|
-
label: t("
|
|
121
|
+
label: t("common.field.action"),
|
|
122
122
|
width: 100,
|
|
123
123
|
fixed: "right",
|
|
124
124
|
cellType: "actions",
|
|
@@ -12,12 +12,11 @@
|
|
|
12
12
|
<FormDialog
|
|
13
13
|
v-model="dialog.visible"
|
|
14
14
|
ref="formDialogRef"
|
|
15
|
-
:title="t(dialog.editing ? 'system.language.action.edit' : 'system.language.action.create')"
|
|
15
|
+
:title="t(dialog.editing ? 'system.base.language.action.edit' : 'system.base.language.action.create')"
|
|
16
16
|
width="620px"
|
|
17
17
|
:model="formData"
|
|
18
18
|
:fields="formFields"
|
|
19
19
|
:rules="rules"
|
|
20
|
-
label-width="110px"
|
|
21
20
|
@confirm="handleSubmit"
|
|
22
21
|
@close="handleCloseDialog"
|
|
23
22
|
/>
|
|
@@ -34,7 +33,7 @@ import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog
|
|
|
34
33
|
import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
|
|
35
34
|
import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
|
|
36
35
|
import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
|
|
37
|
-
import { t } from "@liujitcn/kratos-admin-core";
|
|
36
|
+
import { applyLanguageConfig, defLanguageService, t } from "@liujitcn/kratos-admin-core";
|
|
38
37
|
import { defBaseLanguageService, invalidateEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/base_language";
|
|
39
38
|
import type { BaseLanguage, BaseLanguageForm, PageBaseLanguageRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_language";
|
|
40
39
|
import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
|
|
@@ -51,24 +50,23 @@ const formData = reactive<BaseLanguageForm>({
|
|
|
51
50
|
language_name: "",
|
|
52
51
|
native_name: "",
|
|
53
52
|
sort: 100,
|
|
54
|
-
is_primary: false,
|
|
55
53
|
status: Status.ENABLE
|
|
56
54
|
});
|
|
57
55
|
|
|
58
56
|
const rules = computed(() => ({
|
|
59
57
|
language_code: [
|
|
60
|
-
{ required: true, message: t("system.language.placeholder.code"), trigger: "blur" },
|
|
61
|
-
{ max: 16, message: t("
|
|
58
|
+
{ required: true, message: t("system.base.language.placeholder.code"), trigger: "blur" },
|
|
59
|
+
{ max: 16, message: t("common.validation.max_length", { field: t("system.base.language.field.code"), max: 16 }), trigger: "blur" }
|
|
62
60
|
],
|
|
63
61
|
language_name: [
|
|
64
|
-
{ required: true, message: t("system.language.placeholder.name"), trigger: "blur" },
|
|
65
|
-
{ max: 50, message: t("
|
|
62
|
+
{ required: true, message: t("system.base.language.placeholder.name"), trigger: "blur" },
|
|
63
|
+
{ max: 50, message: t("common.validation.max_length", { field: t("system.base.language.field.name"), max: 50 }), trigger: "blur" }
|
|
66
64
|
],
|
|
67
65
|
native_name: [
|
|
68
|
-
{ required: true, message: t("system.language.placeholder.
|
|
69
|
-
{ max: 50, message: t("
|
|
66
|
+
{ required: true, message: t("system.base.language.placeholder.native_name"), trigger: "blur" },
|
|
67
|
+
{ max: 50, message: t("common.validation.max_length", { field: t("system.base.language.field.native_name"), max: 50 }), trigger: "blur" }
|
|
70
68
|
],
|
|
71
|
-
sort: [{ required: true, message: t("system.language.placeholder.sort"), trigger: "change" }]
|
|
69
|
+
sort: [{ required: true, message: t("system.base.language.placeholder.sort"), trigger: "change" }]
|
|
72
70
|
}));
|
|
73
71
|
|
|
74
72
|
const statusOptions = computed<ProFormOption[]>(() => [
|
|
@@ -77,22 +75,20 @@ const statusOptions = computed<ProFormOption[]>(() => [
|
|
|
77
75
|
]);
|
|
78
76
|
|
|
79
77
|
const formFields = computed<ProFormField[]>(() => [
|
|
80
|
-
{ prop: "language_code", label: t("system.language.field.code"), component: "input", props: { placeholder: t("system.language.placeholder.code"), disabled: dialog.editing } },
|
|
81
|
-
{ prop: "language_name", label: t("system.language.field.name"), component: "input", props: { placeholder: t("system.language.placeholder.name") } },
|
|
82
|
-
{ prop: "native_name", label: t("system.language.field.
|
|
83
|
-
{ prop: "sort", label: t("system.language.field.sort"), component: "input-number", props: { min: 0, controlsPosition: "right", style: { width: "100%" } } },
|
|
84
|
-
{ prop: "
|
|
85
|
-
{ prop: "status", label: t("system.language.field.status"), component: "radio-group", options: statusOptions.value }
|
|
78
|
+
{ prop: "language_code", label: t("system.base.language.field.code"), component: "input", props: { placeholder: t("system.base.language.placeholder.code"), disabled: dialog.editing } },
|
|
79
|
+
{ prop: "language_name", label: t("system.base.language.field.name"), component: "input", props: { placeholder: t("system.base.language.placeholder.name") } },
|
|
80
|
+
{ prop: "native_name", label: t("system.base.language.field.native_name"), component: "input", props: { placeholder: t("system.base.language.placeholder.native_name") } },
|
|
81
|
+
{ prop: "sort", label: t("system.base.language.field.sort"), component: "input-number", props: { min: 0, controlsPosition: "right", style: { width: "100%" } } },
|
|
82
|
+
{ prop: "status", label: t("system.base.language.field.status"), component: "radio-group", options: statusOptions.value }
|
|
86
83
|
]);
|
|
87
84
|
|
|
88
85
|
const columns = computed<ColumnProps[]>(() => [
|
|
89
|
-
{ prop: "native_name", label: t("system.language.field.
|
|
90
|
-
{
|
|
91
|
-
{ prop: "
|
|
92
|
-
{ prop: "language_code", label: t("system.language.field.code"), minWidth: 120, search: { el: "input" } },
|
|
86
|
+
{ prop: "native_name", label: t("system.base.language.field.native_name"), minWidth: 130 },
|
|
87
|
+
{ prop: "language_name", label: t("system.base.language.field.name"), minWidth: 130, search: { el: "input" } },
|
|
88
|
+
{ prop: "language_code", label: t("system.base.language.field.code"), minWidth: 120, search: { el: "input" } },
|
|
93
89
|
{
|
|
94
90
|
prop: "is_primary",
|
|
95
|
-
label: t("system.language.field.primary"),
|
|
91
|
+
label: t("system.base.language.field.primary"),
|
|
96
92
|
minWidth: 100,
|
|
97
93
|
cellType: "status",
|
|
98
94
|
statusProps: {
|
|
@@ -100,13 +96,13 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
100
96
|
inactiveValue: false,
|
|
101
97
|
activeText: t("common.status.enabled"),
|
|
102
98
|
inactiveText: t("common.status.disabled"),
|
|
103
|
-
disabled: () => !BUTTONS.value["
|
|
99
|
+
disabled: () => !BUTTONS.value["base:language:primary"],
|
|
104
100
|
beforeChange: scope => handleBeforeSetPrimary(scope.row as BaseLanguage)
|
|
105
101
|
}
|
|
106
102
|
},
|
|
107
103
|
{
|
|
108
104
|
prop: "status",
|
|
109
|
-
label: t("system.language.field.status"),
|
|
105
|
+
label: t("system.base.language.field.status"),
|
|
110
106
|
minWidth: 100,
|
|
111
107
|
search: { el: "select" },
|
|
112
108
|
cellType: "status",
|
|
@@ -115,28 +111,28 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
115
111
|
inactiveValue: Status.DISABLE,
|
|
116
112
|
activeText: t("common.status.enabled"),
|
|
117
113
|
inactiveText: t("common.status.disabled"),
|
|
118
|
-
disabled: () => !BUTTONS.value["
|
|
114
|
+
disabled: () => !BUTTONS.value["base:language:status"],
|
|
119
115
|
beforeChange: scope => handleBeforeSetStatus(scope.row as BaseLanguage)
|
|
120
116
|
}
|
|
121
117
|
},
|
|
122
|
-
{ prop: "sort", label: t("system.language.field.sort"), width: 80 },
|
|
123
|
-
{ prop: "created_at", label: t("
|
|
118
|
+
{ prop: "sort", label: t("system.base.language.field.sort"), width: 80 },
|
|
119
|
+
{ prop: "created_at", label: t("common.field.created_at"), minWidth: 180 },
|
|
124
120
|
{
|
|
125
121
|
prop: "operation",
|
|
126
|
-
label: t("
|
|
122
|
+
label: t("common.field.operation"),
|
|
127
123
|
width: 150,
|
|
128
124
|
fixed: "right",
|
|
129
125
|
cellType: "actions",
|
|
130
126
|
actions: [
|
|
131
|
-
{ label: t("common.action.edit"), type: "primary", link: true, icon: EditPen, hidden: () => !BUTTONS.value["
|
|
132
|
-
{ label: t("common.action.delete"), type: "danger", link: true, icon: Delete, hidden: () => !BUTTONS.value["
|
|
127
|
+
{ label: t("common.action.edit"), type: "primary", link: true, icon: EditPen, hidden: () => !BUTTONS.value["base:language:update"], onClick: scope => handleOpenDialog((scope.row as BaseLanguage).id) },
|
|
128
|
+
{ label: t("common.action.delete"), type: "danger", link: true, icon: Delete, hidden: () => !BUTTONS.value["base:language:delete"], onClick: scope => handleDelete(scope.row as BaseLanguage) }
|
|
133
129
|
]
|
|
134
130
|
}
|
|
135
131
|
]);
|
|
136
132
|
|
|
137
133
|
const headerActions = computed<HeaderActionProps[]>(() => [
|
|
138
|
-
{ label: t("common.action.create"), type: "success", icon: CirclePlus, hidden: () => !BUTTONS.value["
|
|
139
|
-
{ label: t("common.action.delete"), type: "danger", icon: Delete, hidden: () => !BUTTONS.value["
|
|
134
|
+
{ label: t("common.action.create"), type: "success", icon: CirclePlus, hidden: () => !BUTTONS.value["base:language:create"], onClick: () => handleOpenDialog() },
|
|
135
|
+
{ label: t("common.action.delete"), type: "danger", icon: Delete, hidden: () => !BUTTONS.value["base:language:delete"], disabled: scope => !scope.selectedList.length, onClick: scope => handleDelete(scope.selectedList as BaseLanguage[]) }
|
|
140
136
|
]);
|
|
141
137
|
|
|
142
138
|
/** 请求语言分页列表。 */
|
|
@@ -164,7 +160,7 @@ function handleCloseDialog() {
|
|
|
164
160
|
function resetForm() {
|
|
165
161
|
formDialogRef.value?.resetFields();
|
|
166
162
|
formDialogRef.value?.clearValidate();
|
|
167
|
-
Object.assign(formData, { id: 0, language_code: "", language_name: "", native_name: "", sort: 100,
|
|
163
|
+
Object.assign(formData, { id: 0, language_code: "", language_name: "", native_name: "", sort: 100, status: Status.ENABLE });
|
|
168
164
|
}
|
|
169
165
|
|
|
170
166
|
/** 提交语言表单。 */
|
|
@@ -177,7 +173,8 @@ function handleSubmit() {
|
|
|
177
173
|
: defBaseLanguageService.CreateBaseLanguage({ base_language: payload });
|
|
178
174
|
request.then(() => {
|
|
179
175
|
invalidateEnabledBaseLanguages();
|
|
180
|
-
|
|
176
|
+
void refreshAdminLanguageConfig();
|
|
177
|
+
ElMessage.success(t(payload.id ? "common.message.update_success" : "common.message.create_success", { resource: t("system.base.language.resource") }));
|
|
181
178
|
handleCloseDialog();
|
|
182
179
|
proTable.value?.getTableList();
|
|
183
180
|
});
|
|
@@ -187,11 +184,11 @@ function handleSubmit() {
|
|
|
187
184
|
/** 设置语言状态前保护主语言。 */
|
|
188
185
|
function handleBeforeSetStatus(row: BaseLanguage) {
|
|
189
186
|
if (row.is_primary && row.status === Status.ENABLE) {
|
|
190
|
-
ElMessage.warning(t("system.language.message.
|
|
187
|
+
ElMessage.warning(t("system.base.language.message.primary_cannot_disable"));
|
|
191
188
|
return Promise.resolve(false);
|
|
192
189
|
}
|
|
193
190
|
return ElMessageBox.confirm(
|
|
194
|
-
t("system.language.message.
|
|
191
|
+
t("system.base.language.message.confirm_status", { action: row.status === Status.ENABLE ? t("common.status.disabled") : t("common.status.enabled"), name: row.native_name }),
|
|
195
192
|
t("common.title.warning"),
|
|
196
193
|
{ type: "warning", confirmButtonText: t("common.action.confirm"), cancelButtonText: t("common.action.cancel") }
|
|
197
194
|
).then(
|
|
@@ -200,6 +197,7 @@ function handleBeforeSetStatus(row: BaseLanguage) {
|
|
|
200
197
|
.SetBaseLanguageStatus({ id: row.id, status: row.status === Status.ENABLE ? Status.DISABLE : Status.ENABLE })
|
|
201
198
|
.then(() => {
|
|
202
199
|
invalidateEnabledBaseLanguages();
|
|
200
|
+
void refreshAdminLanguageConfig();
|
|
203
201
|
return true;
|
|
204
202
|
}),
|
|
205
203
|
() => false
|
|
@@ -210,20 +208,16 @@ function handleBeforeSetStatus(row: BaseLanguage) {
|
|
|
210
208
|
function handleBeforeSetPrimary(row: BaseLanguage) {
|
|
211
209
|
if (row.is_primary) return Promise.resolve(false);
|
|
212
210
|
return ElMessageBox.confirm(
|
|
213
|
-
t("system.language.message.
|
|
211
|
+
t("system.base.language.message.confirm_primary", { name: row.native_name }),
|
|
214
212
|
t("common.title.warning"),
|
|
215
213
|
{ type: "warning", confirmButtonText: t("common.action.confirm"), cancelButtonText: t("common.action.cancel") }
|
|
216
214
|
).then(
|
|
217
215
|
() =>
|
|
218
216
|
defBaseLanguageService
|
|
219
|
-
.
|
|
220
|
-
base_language: {
|
|
221
|
-
...row,
|
|
222
|
-
is_primary: true
|
|
223
|
-
}
|
|
224
|
-
})
|
|
217
|
+
.SetBaseLanguagePrimary({ id: row.id })
|
|
225
218
|
.then(() => {
|
|
226
219
|
invalidateEnabledBaseLanguages();
|
|
220
|
+
void refreshAdminLanguageConfig();
|
|
227
221
|
proTable.value?.getTableList();
|
|
228
222
|
return true;
|
|
229
223
|
}),
|
|
@@ -235,22 +229,32 @@ function handleBeforeSetPrimary(row: BaseLanguage) {
|
|
|
235
229
|
function handleDelete(selected?: BaseLanguage | BaseLanguage[] | number | string | Array<number | string>) {
|
|
236
230
|
const rows = Array.isArray(selected) ? (selected.filter(item => typeof item === "object") as BaseLanguage[]) : selected && typeof selected === "object" ? [selected] : [];
|
|
237
231
|
if (rows.some(item => item.is_primary)) {
|
|
238
|
-
ElMessage.warning(t("system.language.message.
|
|
232
|
+
ElMessage.warning(t("system.base.language.message.primary_cannot_delete"));
|
|
239
233
|
return;
|
|
240
234
|
}
|
|
241
235
|
const ids = (rows.length ? rows.map(item => item.id) : normalizeSelectedIds(selected as number | string | Array<number | string>)).join(",");
|
|
242
236
|
if (!ids) {
|
|
243
|
-
ElMessage.warning(t("
|
|
237
|
+
ElMessage.warning(t("common.message.select_delete_item"));
|
|
244
238
|
return;
|
|
245
239
|
}
|
|
246
|
-
ElMessageBox.confirm(t("system.language.message.
|
|
240
|
+
ElMessageBox.confirm(t("system.base.language.message.confirm_delete", { name: rows.length === 1 ? rows[0].native_name : ids }), t("common.title.warning"), {
|
|
247
241
|
type: "warning",
|
|
248
242
|
confirmButtonText: t("common.action.confirm"),
|
|
249
243
|
cancelButtonText: t("common.action.cancel")
|
|
250
244
|
}).then(() => defBaseLanguageService.DeleteBaseLanguage({ id: ids })).then(() => {
|
|
251
245
|
invalidateEnabledBaseLanguages();
|
|
252
|
-
|
|
246
|
+
void refreshAdminLanguageConfig();
|
|
247
|
+
ElMessage.success(t("common.message.delete_success", { resource: t("system.base.language.resource") }));
|
|
253
248
|
proTable.value?.getTableList();
|
|
254
249
|
});
|
|
255
250
|
}
|
|
251
|
+
|
|
252
|
+
/** refreshAdminLanguageConfig 刷新核心语言切换器的运行时配置。 */
|
|
253
|
+
async function refreshAdminLanguageConfig() {
|
|
254
|
+
try {
|
|
255
|
+
applyLanguageConfig(await defLanguageService.OptionLanguage({}));
|
|
256
|
+
} catch {
|
|
257
|
+
// 语言管理操作成功但公共语言查询失败时,保留当前切换器配置。
|
|
258
|
+
}
|
|
259
|
+
}
|
|
256
260
|
</script>
|
|
@@ -2,83 +2,83 @@
|
|
|
2
2
|
<div class="table-box">
|
|
3
3
|
<ProTable ref="proTable" row-key="id" :columns="columns" :request-api="requestBaseLogTable" />
|
|
4
4
|
|
|
5
|
-
<ProDialog v-model="dialog.visible" :title="t('system.log.title.detail')" width="1500px" @close="handleCloseDialog">
|
|
5
|
+
<ProDialog v-model="dialog.visible" :title="t('system.base.log.title.detail')" width="1500px" @close="handleCloseDialog">
|
|
6
6
|
<div class="detail-container">
|
|
7
|
-
<el-descriptions :title="t('system.log.section.basic')" border :column="2">
|
|
8
|
-
<el-descriptions-item :label="t('system.log.field.result')">
|
|
7
|
+
<el-descriptions :title="t('system.base.log.section.basic')" border :column="2">
|
|
8
|
+
<el-descriptions-item :label="t('system.base.log.field.result')">
|
|
9
9
|
<el-tag :type="detail.is_success ? 'success' : 'danger'" effect="light">
|
|
10
|
-
{{ t(detail.is_success ? "system.log.status.success" : "system.log.status.failed") }}
|
|
10
|
+
{{ t(detail.is_success ? "system.base.log.status.success" : "system.base.log.status.failed") }}
|
|
11
11
|
</el-tag>
|
|
12
12
|
</el-descriptions-item>
|
|
13
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
13
|
+
<el-descriptions-item :label="t('system.base.log.field.status_code')">
|
|
14
14
|
<el-tag :type="statusCodeColor" effect="light">{{ detail.status_code || "--" }}</el-tag>
|
|
15
15
|
</el-descriptions-item>
|
|
16
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
17
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
16
|
+
<el-descriptions-item :label="t('system.base.log.field.cost_time')">{{ detail.cost_time || "--" }}</el-descriptions-item>
|
|
17
|
+
<el-descriptions-item :label="t('system.base.log.field.request_time')">{{
|
|
18
18
|
detail.request_time || "--"
|
|
19
19
|
}}</el-descriptions-item>
|
|
20
20
|
</el-descriptions>
|
|
21
21
|
|
|
22
22
|
<el-descriptions
|
|
23
|
-
:title="t('system.log.section.request')"
|
|
23
|
+
:title="t('system.base.log.section.request')"
|
|
24
24
|
border
|
|
25
25
|
:column="2"
|
|
26
26
|
direction="vertical"
|
|
27
27
|
class="mt-4 compact-descriptions"
|
|
28
28
|
>
|
|
29
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
30
|
-
<el-descriptions-item :label="t('system.log.field.operation')">
|
|
29
|
+
<el-descriptions-item :label="t('system.base.log.field.request_id')">{{ detail.request_id || "--" }}</el-descriptions-item>
|
|
30
|
+
<el-descriptions-item :label="t('system.base.log.field.operation')">
|
|
31
31
|
<el-tag effect="plain">{{ detail.operation || "--" }}</el-tag>
|
|
32
32
|
</el-descriptions-item>
|
|
33
|
-
<el-descriptions-item :label="t('system.log.field.method')">
|
|
33
|
+
<el-descriptions-item :label="t('system.base.log.field.method')">
|
|
34
34
|
<el-tag effect="plain">{{ detail.method || "--" }}</el-tag>
|
|
35
35
|
</el-descriptions-item>
|
|
36
|
-
<el-descriptions-item :label="t('system.log.field.path')">{{ detail.path || "--" }}</el-descriptions-item>
|
|
37
|
-
<el-descriptions-item v-if="detail.request_uri" :label="t('system.log.field.
|
|
36
|
+
<el-descriptions-item :label="t('system.base.log.field.path')">{{ detail.path || "--" }}</el-descriptions-item>
|
|
37
|
+
<el-descriptions-item v-if="detail.request_uri" :label="t('system.base.log.field.request_uri')" :span="2">{{
|
|
38
38
|
detail.request_uri
|
|
39
39
|
}}</el-descriptions-item>
|
|
40
|
-
<el-descriptions-item v-if="detail.referer" :label="t('system.log.field.referer')" :span="2">{{
|
|
40
|
+
<el-descriptions-item v-if="detail.referer" :label="t('system.base.log.field.referer')" :span="2">{{
|
|
41
41
|
detail.referer
|
|
42
42
|
}}</el-descriptions-item>
|
|
43
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
43
|
+
<el-descriptions-item :label="t('system.base.log.field.request_header')" :span="2">
|
|
44
44
|
<pre class="code-block">{{ formatPayload(detail.request_header) }}</pre>
|
|
45
45
|
</el-descriptions-item>
|
|
46
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
46
|
+
<el-descriptions-item :label="t('system.base.log.field.request_body')" :span="2">
|
|
47
47
|
<pre class="code-block">{{ formatPayload(detail.request_body) }}</pre>
|
|
48
48
|
</el-descriptions-item>
|
|
49
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
49
|
+
<el-descriptions-item :label="t('system.base.log.field.request_result')" :span="2">
|
|
50
50
|
<pre class="code-block">{{ formatPayload(detail.response) }}</pre>
|
|
51
51
|
</el-descriptions-item>
|
|
52
52
|
</el-descriptions>
|
|
53
53
|
|
|
54
|
-
<el-descriptions :title="t('system.log.section.user')" border :column="2" class="mt-4">
|
|
55
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
56
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
57
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
58
|
-
<el-descriptions-item :label="t('system.log.field.location')">{{ detail.location || "--" }}</el-descriptions-item>
|
|
54
|
+
<el-descriptions :title="t('system.base.log.section.user')" border :column="2" class="mt-4">
|
|
55
|
+
<el-descriptions-item :label="t('system.base.log.field.user_id')">{{ detail.user_id || "--" }}</el-descriptions-item>
|
|
56
|
+
<el-descriptions-item :label="t('system.base.log.field.user_name')">{{ detail.user_name || "--" }}</el-descriptions-item>
|
|
57
|
+
<el-descriptions-item :label="t('system.base.log.field.client_ip')">{{ detail.client_ip || "--" }}</el-descriptions-item>
|
|
58
|
+
<el-descriptions-item :label="t('system.base.log.field.location')">{{ detail.location || "--" }}</el-descriptions-item>
|
|
59
59
|
</el-descriptions>
|
|
60
60
|
|
|
61
61
|
<el-descriptions
|
|
62
|
-
:title="t('system.log.section.client')"
|
|
62
|
+
:title="t('system.base.log.section.client')"
|
|
63
63
|
border
|
|
64
64
|
:column="2"
|
|
65
65
|
direction="vertical"
|
|
66
66
|
class="mt-4 compact-descriptions"
|
|
67
67
|
>
|
|
68
|
-
<el-descriptions-item :label="t('system.log.field.browser')">
|
|
68
|
+
<el-descriptions-item :label="t('system.base.log.field.browser')">
|
|
69
69
|
{{ [detail.browser_name, detail.browser_version].filter(Boolean).join(" ") || "--" }}
|
|
70
70
|
</el-descriptions-item>
|
|
71
|
-
<el-descriptions-item :label="t('system.log.field.os')">
|
|
71
|
+
<el-descriptions-item :label="t('system.base.log.field.os')">
|
|
72
72
|
{{ [detail.os_name, detail.os_version].filter(Boolean).join(" ") || "--" }}
|
|
73
73
|
</el-descriptions-item>
|
|
74
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
75
|
-
<el-descriptions-item :label="t('system.log.field.
|
|
74
|
+
<el-descriptions-item :label="t('system.base.log.field.client_name')">{{ detail.client_name || "--" }}</el-descriptions-item>
|
|
75
|
+
<el-descriptions-item :label="t('system.base.log.field.client_id')">{{ detail.client_id || "--" }}</el-descriptions-item>
|
|
76
76
|
<el-descriptions-item label="User Agent" :span="2">{{ detail.user_agent || "--" }}</el-descriptions-item>
|
|
77
77
|
</el-descriptions>
|
|
78
78
|
|
|
79
79
|
<el-alert
|
|
80
80
|
v-if="!detail.is_success"
|
|
81
|
-
:title="t('system.log.field.reason')"
|
|
81
|
+
:title="t('system.base.log.field.reason')"
|
|
82
82
|
type="error"
|
|
83
83
|
:description="detail.reason"
|
|
84
84
|
class="mt-4"
|
|
@@ -220,19 +220,19 @@ function formatPayload(value: string): string {
|
|
|
220
220
|
const columns = computed<ColumnProps[]>(() => [
|
|
221
221
|
{
|
|
222
222
|
prop: "operation",
|
|
223
|
-
label: t("system.log.field.operation"),
|
|
223
|
+
label: t("system.base.log.field.operation"),
|
|
224
224
|
minWidth: 240,
|
|
225
225
|
search: { el: "input" }
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
228
|
prop: "status_code",
|
|
229
|
-
label: t("system.log.field.
|
|
229
|
+
label: t("system.base.log.field.status_code"),
|
|
230
230
|
minWidth: 100,
|
|
231
231
|
search: { el: "input-number", props: { min: 0, controlsPosition: "right" } }
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
prop: "request_time",
|
|
235
|
-
label: t("system.log.field.
|
|
235
|
+
label: t("system.base.log.field.request_time"),
|
|
236
236
|
minWidth: 140,
|
|
237
237
|
search: {
|
|
238
238
|
el: "date-picker",
|
|
@@ -241,21 +241,21 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
241
241
|
editable: false,
|
|
242
242
|
class: "!w-[240px]",
|
|
243
243
|
rangeSeparator: "~",
|
|
244
|
-
startPlaceholder: t("
|
|
245
|
-
endPlaceholder: t("
|
|
244
|
+
startPlaceholder: t("common.placeholder.start_date"),
|
|
245
|
+
endPlaceholder: t("common.placeholder.end_date"),
|
|
246
246
|
valueFormat: "YYYY-MM-DD"
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
},
|
|
250
|
-
{ prop: "user_name", label: t("system.log.field.
|
|
251
|
-
{ prop: "client_ip", label: t("system.log.field.
|
|
252
|
-
{ prop: "location", label: t("system.log.field.location"), minWidth: 80 },
|
|
253
|
-
{ prop: "browser_name", label: t("system.log.field.browser"), minWidth: 80 },
|
|
254
|
-
{ prop: "os_name", label: t("system.log.field.os"), minWidth: 80 },
|
|
255
|
-
{ prop: "cost_time", label: t("system.log.field.
|
|
250
|
+
{ prop: "user_name", label: t("system.base.log.field.user_name"), minWidth: 80 },
|
|
251
|
+
{ prop: "client_ip", label: t("system.base.log.field.client_ip"), minWidth: 80 },
|
|
252
|
+
{ prop: "location", label: t("system.base.log.field.location"), minWidth: 80 },
|
|
253
|
+
{ prop: "browser_name", label: t("system.base.log.field.browser"), minWidth: 80 },
|
|
254
|
+
{ prop: "os_name", label: t("system.base.log.field.os"), minWidth: 80 },
|
|
255
|
+
{ prop: "cost_time", label: t("system.base.log.field.cost_time"), minWidth: 100, align: "right" },
|
|
256
256
|
{
|
|
257
257
|
prop: "detailAction",
|
|
258
|
-
label: t("
|
|
258
|
+
label: t("common.field.action"),
|
|
259
259
|
width: 100,
|
|
260
260
|
fixed: "right",
|
|
261
261
|
cellType: "actions",
|