@liujitcn/kratos-admin-system 0.0.20 → 0.0.23
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/README.md +51 -50
- package/dist/package/declarations/src/api/system/base_language.d.ts +52 -0
- package/dist/package/declarations/src/api/system/base_translation.d.ts +10 -0
- package/dist/package/declarations/src/api/system/code_gen_i18n.d.ts +8 -0
- 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 +16 -0
- package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +20 -0
- package/dist/package/declarations/src/components/dynamicTranslation.d.ts +38 -0
- 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 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +9 -0
- 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 +119 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +6 -1
- 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 +75 -0
- 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 +13 -11
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_column.d.ts +7 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +24 -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/base/language/index.vue.d.ts +3 -0
- package/dist/package/declarations/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue.d.ts +23 -0
- package/dist/package/declarations/src/views/tool/code-gen/config.d.ts +7 -7
- package/dist/package/declarations/src/views/tool/ops-monitoring/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/ai_message.ts +7 -12
- package/dist/package/src/api/base/sse.ts +3 -1
- package/dist/package/src/api/system/base_language.ts +135 -0
- package/dist/package/src/api/system/base_translation.ts +33 -0
- package/dist/package/src/api/system/code_gen_column.ts +17 -3
- package/dist/package/src/api/system/code_gen_i18n.ts +18 -0
- package/dist/package/src/api/system/code_gen_table.ts +12 -4
- 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 +249 -0
- package/dist/package/src/components/DynamicTranslationEditor.vue +197 -0
- package/dist/package/src/components/dynamicTranslation.ts +66 -0
- package/dist/package/src/locales/README.md +30 -0
- package/dist/package/src/locales/en-US.json +933 -0
- package/dist/package/src/locales/es-ES.json +933 -0
- package/dist/package/src/locales/fr-FR.json +933 -0
- package/dist/package/src/locales/generated.ts +22 -0
- package/dist/package/src/locales/ja-JP.json +933 -0
- package/dist/package/src/locales/ko-KR.json +933 -0
- package/dist/package/src/locales/zh-CN.json +933 -0
- package/dist/package/src/locales/zh-TW.json +933 -0
- package/dist/package/src/module.ts +6 -2
- 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 -2
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +9 -0
- package/dist/package/src/rpc/system/admin/v1/base_job.ts +10 -1
- package/dist/package/src/rpc/system/admin/v1/base_language.ts +141 -0
- package/dist/package/src/rpc/system/admin/v1/base_menu.ts +6 -1
- 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 +90 -0
- package/dist/package/src/rpc/system/admin/v1/base_user.ts +12 -1
- package/dist/package/src/rpc/system/admin/v1/code_gen.ts +16 -12
- package/dist/package/src/rpc/system/admin/v1/code_gen_column.ts +8 -0
- package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +27 -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/AiMarkdown.vue +1 -6
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +75 -58
- package/dist/package/src/views/ai/chat/components/SessionPanel.vue +20 -9
- package/dist/package/src/views/ai/chat/components/XSender.vue +36 -23
- package/dist/package/src/views/ai/chat/index.vue +58 -41
- package/dist/package/src/views/ai/chat/message.ts +29 -27
- package/dist/package/src/views/base/api/index.vue +121 -84
- package/dist/package/src/views/base/area/index.vue +81 -32
- package/dist/package/src/views/base/config/index.vue +300 -96
- package/dist/package/src/views/base/dept/index.vue +110 -62
- package/dist/package/src/views/base/dict/index.vue +145 -62
- package/dist/package/src/views/base/dict/item.vue +155 -64
- package/dist/package/src/views/base/job/index.vue +134 -82
- package/dist/package/src/views/base/job/log.vue +24 -25
- package/dist/package/src/views/base/language/index.vue +260 -0
- package/dist/package/src/views/base/log/index.vue +68 -46
- package/dist/package/src/views/base/menu/index.vue +344 -200
- package/dist/package/src/views/base/migration/index.vue +49 -29
- package/dist/package/src/views/base/post/index.vue +128 -60
- package/dist/package/src/views/base/role/index.vue +145 -79
- package/dist/package/src/views/base/tenant/index.vue +132 -64
- package/dist/package/src/views/base/user/components/dept-tree.vue +2 -1
- package/dist/package/src/views/base/user/index.vue +194 -116
- package/dist/package/src/views/profile/components/base.vue +45 -28
- package/dist/package/src/views/profile/components/password.vue +45 -30
- package/dist/package/src/views/profile/components/security.vue +90 -54
- package/dist/package/src/views/profile/index.vue +10 -9
- package/dist/package/src/views/tool/api-doc/index.vue +6 -2
- package/dist/package/src/views/tool/code-gen/code-preview/index.vue +32 -16
- package/dist/package/src/views/tool/code-gen/columns/index.vue +382 -273
- package/dist/package/src/views/tool/code-gen/columns/option-copy.ts +1 -6
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +118 -0
- package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +65 -36
- package/dist/package/src/views/tool/code-gen/components/CodePreviewPane.vue +8 -5
- package/dist/package/src/views/tool/code-gen/config.ts +116 -79
- package/dist/package/src/views/tool/code-gen/preview/data.ts +19 -17
- package/dist/package/src/views/tool/code-gen/preview/index.vue +96 -59
- package/dist/package/src/views/tool/code-gen/proto/index.vue +110 -62
- package/dist/package/src/views/tool/code-gen/table/index.vue +201 -121
- package/dist/package/src/views/tool/ops-monitoring/index.vue +1175 -0
- package/dist/package/src/views/tool/project-doc/index.vue +17 -15
- package/package.json +6 -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
|
@@ -16,12 +16,11 @@
|
|
|
16
16
|
<FormDialog
|
|
17
17
|
v-model="dialog.visible"
|
|
18
18
|
ref="formDialogRef"
|
|
19
|
-
:title="dialog.
|
|
19
|
+
:title="t(dialog.titleKey, { resource: t('system.base.dept.resource') })"
|
|
20
20
|
width="600px"
|
|
21
21
|
:model="formData"
|
|
22
22
|
:fields="formFields"
|
|
23
23
|
:rules="rules"
|
|
24
|
-
label-width="90px"
|
|
25
24
|
@confirm="handleSubmit"
|
|
26
25
|
@close="handleCloseDialog"
|
|
27
26
|
/>
|
|
@@ -45,6 +44,7 @@ import type { SelectOptionResponse_Option, TreeOptionResponse_Option } from "@li
|
|
|
45
44
|
import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
|
|
46
45
|
import { normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
|
|
47
46
|
import { DEFAULT_TENANT_CODE, requestTenantOptions } from "@liujitcn/kratos-admin-core/tenant";
|
|
47
|
+
import { t } from "@liujitcn/kratos-admin-core";
|
|
48
48
|
|
|
49
49
|
defineOptions({
|
|
50
50
|
name: "BaseDept",
|
|
@@ -63,17 +63,17 @@ const proTable = ref<ProTableInstance>();
|
|
|
63
63
|
const formDialogRef = ref<InstanceType<typeof FormDialog>>();
|
|
64
64
|
|
|
65
65
|
const dialog = reactive({
|
|
66
|
-
|
|
66
|
+
titleKey: "common.action.create_resource",
|
|
67
67
|
visible: false
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
const deptOptions = ref<TreeOptionResponse_Option[]>([]);
|
|
71
71
|
const tenantOptions = ref<SelectOptionResponse_Option[]>([]);
|
|
72
72
|
const currentTenantId = ref<number | undefined>();
|
|
73
|
-
const statusOptions
|
|
74
|
-
{ label: "
|
|
75
|
-
{ label: "
|
|
76
|
-
];
|
|
73
|
+
const statusOptions = computed<ProFormOption[]>(() => [
|
|
74
|
+
{ label: t("common.status.enabled"), value: Status.ENABLE },
|
|
75
|
+
{ label: t("common.status.disabled"), value: Status.DISABLE }
|
|
76
|
+
]);
|
|
77
77
|
|
|
78
78
|
const formData = reactive<BaseDeptFormState>({
|
|
79
79
|
/** 部门ID */
|
|
@@ -92,16 +92,42 @@ const formData = reactive<BaseDeptFormState>({
|
|
|
92
92
|
remark: ""
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
const rules =
|
|
96
|
-
tenant_id: [
|
|
97
|
-
|
|
95
|
+
const rules = computed(() => ({
|
|
96
|
+
tenant_id: [
|
|
97
|
+
{
|
|
98
|
+
required: true,
|
|
99
|
+
message: t("common.validation.required_select", { field: t("common.field.tenant") }),
|
|
100
|
+
trigger: "change"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
parent_id: [
|
|
104
|
+
{
|
|
105
|
+
required: true,
|
|
106
|
+
message: t("common.validation.required_select", { field: t("system.base.dept.field.parent") }),
|
|
107
|
+
trigger: "change"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
98
110
|
name: [
|
|
99
|
-
{
|
|
100
|
-
|
|
111
|
+
{
|
|
112
|
+
required: true,
|
|
113
|
+
message: t("common.validation.required_input", { field: t("system.base.dept.field.name") }),
|
|
114
|
+
trigger: "blur"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
max: 255,
|
|
118
|
+
message: t("common.validation.max_length", { field: t("system.base.dept.field.name"), max: 255 }),
|
|
119
|
+
trigger: "blur"
|
|
120
|
+
}
|
|
101
121
|
],
|
|
102
|
-
sort: [{ required: true, type: "number", min: 1, message: "
|
|
103
|
-
status: [
|
|
104
|
-
|
|
122
|
+
sort: [{ required: true, type: "number", min: 1, message: t("common.validation.sort_positive"), trigger: "blur" }],
|
|
123
|
+
status: [
|
|
124
|
+
{
|
|
125
|
+
required: true,
|
|
126
|
+
message: t("common.validation.required_select", { field: t("common.field.status") }),
|
|
127
|
+
trigger: "change"
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}));
|
|
105
131
|
|
|
106
132
|
/** 当前登录账号是否默认租户。 */
|
|
107
133
|
const isDefaultTenant = computed(() => userStore.userInfo.tenant_code === DEFAULT_TENANT_CODE);
|
|
@@ -110,10 +136,10 @@ const isDefaultTenant = computed(() => userStore.userInfo.tenant_code === DEFAUL
|
|
|
110
136
|
const formFields = computed<ProFormField[]>(() => [
|
|
111
137
|
{
|
|
112
138
|
prop: "tenant_id",
|
|
113
|
-
label: "
|
|
139
|
+
label: t("common.field.tenant"),
|
|
114
140
|
component: "select",
|
|
115
141
|
props: {
|
|
116
|
-
placeholder: "
|
|
142
|
+
placeholder: t("common.validation.required_select", { field: t("common.field.tenant") }),
|
|
117
143
|
filterable: true,
|
|
118
144
|
disabled: Boolean(formData.id),
|
|
119
145
|
onChange: handleFormTenantChange
|
|
@@ -123,26 +149,36 @@ const formFields = computed<ProFormField[]>(() => [
|
|
|
123
149
|
},
|
|
124
150
|
{
|
|
125
151
|
prop: "parent_id",
|
|
126
|
-
label: "
|
|
152
|
+
label: t("system.base.dept.field.parent"),
|
|
127
153
|
component: "tree-select",
|
|
128
154
|
options: deptOptions.value,
|
|
129
155
|
props: {
|
|
130
|
-
placeholder: "
|
|
156
|
+
placeholder: t("common.validation.required_select", { field: t("system.base.dept.field.parent") }),
|
|
131
157
|
filterable: true,
|
|
132
158
|
checkStrictly: true,
|
|
133
159
|
renderAfterExpand: false,
|
|
134
160
|
style: { width: "100%" }
|
|
135
161
|
}
|
|
136
162
|
},
|
|
137
|
-
{
|
|
163
|
+
{
|
|
164
|
+
prop: "name",
|
|
165
|
+
label: t("system.base.dept.field.name"),
|
|
166
|
+
component: "input",
|
|
167
|
+
props: { placeholder: t("common.validation.required_input", { field: t("system.base.dept.field.name") }) }
|
|
168
|
+
},
|
|
138
169
|
{
|
|
139
170
|
prop: "sort",
|
|
140
|
-
label: "
|
|
171
|
+
label: t("common.field.sort"),
|
|
141
172
|
component: "input-number",
|
|
142
173
|
props: { min: 1, precision: 0, step: 1, controlsPosition: "right", style: { width: "100%" } }
|
|
143
174
|
},
|
|
144
|
-
{
|
|
145
|
-
|
|
175
|
+
{
|
|
176
|
+
prop: "remark",
|
|
177
|
+
label: t("common.field.remark"),
|
|
178
|
+
component: "textarea",
|
|
179
|
+
props: { placeholder: t("common.placeholder.remark") }
|
|
180
|
+
},
|
|
181
|
+
{ prop: "status", label: t("common.field.status"), component: "radio-group", options: statusOptions.value }
|
|
146
182
|
]);
|
|
147
183
|
|
|
148
184
|
/** 部门树表格列配置。 */
|
|
@@ -152,7 +188,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
152
188
|
? ([
|
|
153
189
|
{
|
|
154
190
|
prop: "tenant_id",
|
|
155
|
-
label: "
|
|
191
|
+
label: t("common.field.tenant"),
|
|
156
192
|
minWidth: 140,
|
|
157
193
|
showOverflowTooltip: true,
|
|
158
194
|
search: { el: "select", key: "tenant_id", props: { filterable: true }, order: 1 },
|
|
@@ -160,35 +196,35 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
160
196
|
}
|
|
161
197
|
] satisfies ColumnProps[])
|
|
162
198
|
: []),
|
|
163
|
-
{ prop: "name", label: "
|
|
164
|
-
{ prop: "remark", label: "
|
|
165
|
-
{ prop: "sort", label: "
|
|
199
|
+
{ prop: "name", label: t("system.base.dept.field.name"), minWidth: 140, align: "left", search: { el: "input" } },
|
|
200
|
+
{ prop: "remark", label: t("common.field.remark"), minWidth: 160, search: { el: "input" } },
|
|
201
|
+
{ prop: "sort", label: t("common.field.sort"), minWidth: 90, align: "right" },
|
|
166
202
|
{
|
|
167
203
|
prop: "status",
|
|
168
|
-
label: "
|
|
204
|
+
label: t("common.field.status"),
|
|
169
205
|
minWidth: 100,
|
|
170
206
|
search: { el: "select" },
|
|
171
207
|
cellType: "status",
|
|
172
208
|
statusProps: {
|
|
173
209
|
activeValue: Status.ENABLE,
|
|
174
210
|
inactiveValue: Status.DISABLE,
|
|
175
|
-
activeText: "
|
|
176
|
-
inactiveText: "
|
|
211
|
+
activeText: t("common.status.enabled"),
|
|
212
|
+
inactiveText: t("common.status.disabled"),
|
|
177
213
|
disabled: () => !BUTTONS.value["base:dept:status"],
|
|
178
214
|
beforeChange: scope => handleBeforeSetStatus(scope.row as BaseDept)
|
|
179
215
|
}
|
|
180
216
|
},
|
|
181
|
-
{ prop: "created_at", label: "
|
|
182
|
-
{ prop: "updated_at", label: "
|
|
217
|
+
{ prop: "created_at", label: t("common.field.created_at"), minWidth: 180 },
|
|
218
|
+
{ prop: "updated_at", label: t("common.field.updated_at"), minWidth: 180 },
|
|
183
219
|
{
|
|
184
220
|
prop: "operation",
|
|
185
|
-
label: "
|
|
221
|
+
label: t("common.field.operation"),
|
|
186
222
|
width: 220,
|
|
187
223
|
fixed: "right",
|
|
188
224
|
cellType: "actions",
|
|
189
225
|
actions: [
|
|
190
226
|
{
|
|
191
|
-
label: "
|
|
227
|
+
label: t("common.action.create"),
|
|
192
228
|
type: "primary",
|
|
193
229
|
link: true,
|
|
194
230
|
icon: CirclePlus,
|
|
@@ -198,7 +234,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
198
234
|
handleOpenDialog((params?.parent_id as number | undefined) ?? 0, undefined, params?.tenantId as number | undefined)
|
|
199
235
|
},
|
|
200
236
|
{
|
|
201
|
-
label: "
|
|
237
|
+
label: t("common.action.edit"),
|
|
202
238
|
type: "primary",
|
|
203
239
|
link: true,
|
|
204
240
|
icon: EditPen,
|
|
@@ -210,7 +246,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
210
246
|
onClick: (_, params) => handleOpenDialog(params?.parent_id as number | undefined, params?.deptId as number | undefined)
|
|
211
247
|
},
|
|
212
248
|
{
|
|
213
|
-
label: "
|
|
249
|
+
label: t("common.action.delete"),
|
|
214
250
|
type: "danger",
|
|
215
251
|
link: true,
|
|
216
252
|
icon: Delete,
|
|
@@ -222,23 +258,23 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
222
258
|
]);
|
|
223
259
|
|
|
224
260
|
/** 部门顶部按钮配置。 */
|
|
225
|
-
const headerActions
|
|
261
|
+
const headerActions = computed<HeaderActionProps[]>(() => [
|
|
226
262
|
{
|
|
227
|
-
label: "
|
|
263
|
+
label: t("common.action.create"),
|
|
228
264
|
type: "success",
|
|
229
265
|
icon: CirclePlus,
|
|
230
266
|
hidden: () => !BUTTONS.value["base:dept:create"],
|
|
231
267
|
onClick: () => handleOpenDialog(0)
|
|
232
268
|
},
|
|
233
269
|
{
|
|
234
|
-
label: "
|
|
270
|
+
label: t("common.action.delete"),
|
|
235
271
|
type: "danger",
|
|
236
272
|
icon: Delete,
|
|
237
273
|
hidden: () => !BUTTONS.value["base:dept:delete"],
|
|
238
274
|
disabled: scope => !scope.selectedList.length,
|
|
239
275
|
onClick: scope => handleDelete(scope.selectedList as BaseDept[])
|
|
240
276
|
}
|
|
241
|
-
];
|
|
277
|
+
]);
|
|
242
278
|
|
|
243
279
|
/**
|
|
244
280
|
* 按搜索条件递归过滤部门树,命中父节点或子节点时保留当前节点。
|
|
@@ -295,7 +331,7 @@ function refreshTable() {
|
|
|
295
331
|
async function loadDeptOptions() {
|
|
296
332
|
// 默认租户未选择目标租户时仅保留顶级部门,避免混入其他租户的部门树。
|
|
297
333
|
if (isDefaultTenant.value && !formData.tenant_id) {
|
|
298
|
-
deptOptions.value = [{ value: 0, label: "
|
|
334
|
+
deptOptions.value = [{ value: 0, label: t("system.base.dept.value.root"), disabled: false, has_children: true, children: [] }];
|
|
299
335
|
return;
|
|
300
336
|
}
|
|
301
337
|
const optionBaseDeptResponse = await defBaseDeptService.OptionBaseDept({
|
|
@@ -304,7 +340,7 @@ async function loadDeptOptions() {
|
|
|
304
340
|
deptOptions.value = [
|
|
305
341
|
{
|
|
306
342
|
value: 0,
|
|
307
|
-
label: "
|
|
343
|
+
label: t("system.base.dept.value.root"),
|
|
308
344
|
disabled: false,
|
|
309
345
|
has_children: true,
|
|
310
346
|
children: optionBaseDeptResponse.list
|
|
@@ -336,7 +372,7 @@ async function handleOpenDialog(parent_id?: number, deptId?: number, tenantId?:
|
|
|
336
372
|
resetForm();
|
|
337
373
|
await loadTenantOptions();
|
|
338
374
|
if (deptId) {
|
|
339
|
-
dialog.
|
|
375
|
+
dialog.titleKey = "common.action.edit_resource";
|
|
340
376
|
dialog.visible = true;
|
|
341
377
|
defBaseDeptService.GetBaseDept({ id: deptId }).then(async data => {
|
|
342
378
|
Object.assign(formData, data);
|
|
@@ -348,7 +384,7 @@ async function handleOpenDialog(parent_id?: number, deptId?: number, tenantId?:
|
|
|
348
384
|
// 从部门行新增子部门时,继承父部门租户并加载同租户上级部门树。
|
|
349
385
|
formData.tenant_id = tenantId;
|
|
350
386
|
await loadDeptOptions();
|
|
351
|
-
dialog.
|
|
387
|
+
dialog.titleKey = "common.action.create_resource";
|
|
352
388
|
dialog.visible = true;
|
|
353
389
|
formData.parent_id = parent_id ?? 0;
|
|
354
390
|
}
|
|
@@ -389,7 +425,11 @@ function handleSubmit() {
|
|
|
389
425
|
? defBaseDeptService.UpdateBaseDept({ base_dept: submitData })
|
|
390
426
|
: defBaseDeptService.CreateBaseDept({ base_dept: submitData });
|
|
391
427
|
request.then(() => {
|
|
392
|
-
ElMessage.success(
|
|
428
|
+
ElMessage.success(
|
|
429
|
+
t(submitData.id ? "common.message.update_success" : "common.message.create_success", {
|
|
430
|
+
resource: t("system.base.dept.resource")
|
|
431
|
+
})
|
|
432
|
+
);
|
|
393
433
|
handleCloseDialog();
|
|
394
434
|
refreshTable();
|
|
395
435
|
});
|
|
@@ -401,16 +441,25 @@ function handleSubmit() {
|
|
|
401
441
|
*/
|
|
402
442
|
async function handleBeforeSetStatus(row: BaseDept) {
|
|
403
443
|
const nextStatus = row.status === Status.ENABLE ? Status.DISABLE : Status.ENABLE;
|
|
404
|
-
const text = nextStatus === Status.ENABLE ? "
|
|
444
|
+
const text = t(nextStatus === Status.ENABLE ? "common.status.enabled" : "common.status.disabled");
|
|
405
445
|
const deptName = row.name || `ID:${row.id}`;
|
|
406
446
|
try {
|
|
407
|
-
await ElMessageBox.confirm(
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
447
|
+
await ElMessageBox.confirm(
|
|
448
|
+
t("common.dialog.status_change", {
|
|
449
|
+
action: text,
|
|
450
|
+
resource: t("system.base.dept.resource"),
|
|
451
|
+
field: t("system.base.dept.field.name"),
|
|
452
|
+
value: deptName
|
|
453
|
+
}),
|
|
454
|
+
t("common.title.notice"),
|
|
455
|
+
{
|
|
456
|
+
confirmButtonText: t("common.action.confirm"),
|
|
457
|
+
cancelButtonText: t("common.action.cancel"),
|
|
458
|
+
type: "warning"
|
|
459
|
+
}
|
|
460
|
+
);
|
|
412
461
|
await defBaseDeptService.SetBaseDeptStatus({ id: row.id, status: nextStatus });
|
|
413
|
-
ElMessage.success(
|
|
462
|
+
ElMessage.success(t("common.message.status_success", { action: text }));
|
|
414
463
|
refreshTable();
|
|
415
464
|
return true;
|
|
416
465
|
} catch {
|
|
@@ -431,31 +480,30 @@ function handleDelete(selected?: number | string | Array<number | string> | Base
|
|
|
431
480
|
deptList.length ? deptList.map(item => item.id) : normalizeSelectedIds(selected as number | string | Array<number | string>)
|
|
432
481
|
).join(",");
|
|
433
482
|
if (!deptIds) {
|
|
434
|
-
ElMessage.warning("
|
|
483
|
+
ElMessage.warning(t("common.message.select_delete_item"));
|
|
435
484
|
return;
|
|
436
485
|
}
|
|
437
486
|
|
|
438
487
|
const confirmMessage = deptList.length
|
|
439
488
|
? deptList.length === 1
|
|
440
|
-
?
|
|
441
|
-
:
|
|
442
|
-
: "
|
|
489
|
+
? `${t("common.dialog.delete_single", { resource: t("system.base.dept.resource") })}\n${t("common.dialog.resource_field", { field: t("system.base.dept.field.name"), value: deptList[0].name || `ID:${deptList[0].id}` })}`
|
|
490
|
+
: t("common.dialog.delete_batch", { count: deptList.length, unit: "", resource: t("system.base.dept.resource") })
|
|
491
|
+
: t("common.dialog.delete_selected", { resource: t("system.base.dept.resource") });
|
|
443
492
|
|
|
444
|
-
ElMessageBox.confirm(confirmMessage, "
|
|
445
|
-
confirmButtonText: "
|
|
446
|
-
cancelButtonText: "
|
|
493
|
+
ElMessageBox.confirm(confirmMessage, t("common.title.warning"), {
|
|
494
|
+
confirmButtonText: t("common.action.confirm"),
|
|
495
|
+
cancelButtonText: t("common.action.cancel"),
|
|
447
496
|
type: "warning"
|
|
448
497
|
}).then(
|
|
449
498
|
() => {
|
|
450
499
|
defBaseDeptService.DeleteBaseDept({ id: deptIds }).then(() => {
|
|
451
|
-
ElMessage.success("
|
|
500
|
+
ElMessage.success(t("common.message.delete_success", { resource: t("system.base.dept.resource") }));
|
|
452
501
|
refreshTable();
|
|
453
502
|
});
|
|
454
503
|
},
|
|
455
504
|
() => {
|
|
456
|
-
ElMessage.info("
|
|
505
|
+
ElMessage.info(t("common.dialog.cancel_delete", { resource: t("system.base.dept.resource") }));
|
|
457
506
|
}
|
|
458
507
|
);
|
|
459
508
|
}
|
|
460
|
-
|
|
461
509
|
</script>
|