@skyfox2000/webui 1.6.13 → 1.6.15
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/lib/assets/modules/{baseLayout-p7VibDY4.js → baseLayout-Cia1cG5l.js} +3 -3
- package/lib/assets/modules/{file-upload-D7C_mOmO.js → file-upload-D1gRZv8j.js} +1 -1
- package/lib/assets/modules/{index-BQN_a3GE.js → index-MgDOEHr_.js} +2 -2
- package/lib/assets/modules/{index-CEBo0bZK.js → index-Ye0JfNsM.js} +1 -1
- package/lib/assets/modules/{index-CWI8upr0.js → index-xnHQyu3E.js} +2 -2
- package/lib/assets/modules/{menuTabs-RYgm30Xy.js → menuTabs-C3imgUBh.js} +36 -36
- package/lib/assets/modules/{toolIcon-CUIeCTuV.js → toolIcon-DFf-Ttkx.js} +1 -1
- package/lib/assets/modules/{upload-template-Bl7C0exv.js → upload-template-BDrBVe4E.js} +1059 -1060
- package/lib/assets/modules/{uploadList-DIvGI7qL.js → uploadList-BreC8S8m.js} +4 -4
- package/lib/es/AceEditor/index.js +3 -3
- package/lib/es/BasicLayout/index.js +2 -2
- package/lib/es/Error403/index.js +1 -1
- package/lib/es/Error404/index.js +1 -1
- package/lib/es/ExcelForm/index.js +52 -52
- package/lib/es/MenuLayout/index.js +2 -2
- package/lib/es/TemplateFile/index.js +4 -4
- package/lib/es/UploadForm/index.js +4 -4
- package/lib/locales/default.en-US.d.ts +19 -19
- package/lib/locales/default.zh-CN.d.ts +2 -7
- package/lib/webui.css +1 -1
- package/lib/webui.es.js +1300 -1297
- package/package.json +1 -1
- package/src/components/content/table/index.vue +3 -0
- package/src/components/form/input/index.vue +3 -3
- package/src/components/form/input/inputNumber.vue +2 -3
- package/src/components/form/input/inputPassword.vue +2 -3
- package/src/components/form/propEditor/index.vue +4 -6
- package/src/components/form/radio/index.vue +1 -1
- package/src/components/form/switch/index.vue +20 -8
- package/src/components/form/textarea/index.vue +2 -4
- package/src/components/form/timePicker/index.vue +2 -3
- package/src/components/form/upload/imageList.vue +7 -9
- package/src/locales/default.en-US.ts +22 -24
- package/src/locales/default.zh-CN.ts +4 -14
package/package.json
CHANGED
|
@@ -210,6 +210,9 @@ onMounted(async () => {
|
|
|
210
210
|
:data-source="dataList" :loading="gridCtrl.isGridLoading.value" :columns="columns" :pagination="pagination"
|
|
211
211
|
:row-selection="rowSelection" :scroll="props.scroll || { x: 700 }" :size="gridCtrl.tableSize.value" bordered
|
|
212
212
|
v-bind="attrs">
|
|
213
|
+
<template #emptyText>
|
|
214
|
+
{{ $t('webui.common.noData') }}
|
|
215
|
+
</template>
|
|
213
216
|
<template #bodyCell="bodyCell">
|
|
214
217
|
<slot name="bodyCell" :column="bodyCell?.column" :record="bodyCell?.record"></slot>
|
|
215
218
|
<template v-if="gridCtrl && bodyCell?.column?.dataIndex === 'enabled'">
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import { formValidate, useInputFactory } from '@/index';
|
|
3
3
|
import { Input } from 'ant-design-vue';
|
|
4
4
|
import { ref, watch, computed, useAttrs } from 'vue';
|
|
5
|
-
import {
|
|
6
|
-
const { t } = useI18n();
|
|
5
|
+
import { $t } from '@/locales/index';
|
|
7
6
|
|
|
8
7
|
const { editorCtrl, labelText, errInfo } = useInputFactory();
|
|
9
8
|
const props = withDefaults(defineProps<{
|
|
@@ -76,7 +75,8 @@ const onClear = (e: any) => {
|
|
|
76
75
|
errInfo?.errClass === 'error' && !$slots.addonBefore && !$slots.addonAfter
|
|
77
76
|
? '!border-red-300 shadow-[0_0_3px_0px_#ff4d4f]'
|
|
78
77
|
: '',]" v-model:value="innerValue" autocomplete="new-password" :allow-clear="true"
|
|
79
|
-
:placeholder="t('webui.common.placeholder', [labelText])" @blur="onBlur" @change="onClear"
|
|
78
|
+
:placeholder="$t('webui.common.placeholder', [labelText])" @blur="onBlur" @change="onClear"
|
|
79
|
+
v-bind="filteredAttrs">
|
|
80
80
|
<template #addonBefore v-if="$slots.addonBefore">
|
|
81
81
|
<slot name="addonBefore"></slot>
|
|
82
82
|
</template>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { formValidate, useInputFactory } from '@/index';
|
|
3
3
|
import { InputNumber } from 'ant-design-vue';
|
|
4
|
-
import {
|
|
4
|
+
import { $t } from '@/locales/index';
|
|
5
5
|
|
|
6
6
|
const { editorCtrl, labelText, errInfo } = useInputFactory();
|
|
7
|
-
const { t } = useI18n();
|
|
8
7
|
const onBlur = () => {
|
|
9
8
|
if (errInfo?.value.errClass && editorCtrl) {
|
|
10
9
|
/// 重新开始验证
|
|
@@ -17,7 +16,7 @@ const onBlur = () => {
|
|
|
17
16
|
:class="[errInfo?.errClass === 'error' ? 'error !border-red-300 shadow-[0_0_3px_0px_#ff4d4f]' : '']"
|
|
18
17
|
@blur="onBlur"
|
|
19
18
|
:allow-clear="false"
|
|
20
|
-
|
|
19
|
+
:placeholder="$t('webui.common.placeholder', [labelText])"
|
|
21
20
|
class="w-[50%]"
|
|
22
21
|
v-bind="$attrs"
|
|
23
22
|
>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { formValidate, useInputFactory } from '@/index';
|
|
3
3
|
import { InputPassword } from 'ant-design-vue';
|
|
4
|
-
import {
|
|
4
|
+
import { $t } from '@/locales/index';
|
|
5
5
|
|
|
6
6
|
const { editorCtrl, labelText, errInfo } = useInputFactory();
|
|
7
|
-
const { t } = useI18n();
|
|
8
7
|
const onBlur = () => {
|
|
9
8
|
if (errInfo?.value.errClass && editorCtrl) {
|
|
10
9
|
/// 重新开始验证
|
|
@@ -17,7 +16,7 @@ const onBlur = () => {
|
|
|
17
16
|
:class="errInfo?.errClass === 'error' ? ['error', '!border-red-300', 'shadow-[0_0_3px_0px_#ff4d4f]'] : ''"
|
|
18
17
|
:allow-clear="true"
|
|
19
18
|
autocomplete="new-password"
|
|
20
|
-
|
|
19
|
+
:placeholder="$t('webui.common.placeholder', [labelText])"
|
|
21
20
|
@blur="onBlur"
|
|
22
21
|
v-bind="$attrs"
|
|
23
22
|
/>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ref, watch } from 'vue';
|
|
3
3
|
import { Input, Button } from 'ant-design-vue';
|
|
4
4
|
import type { PropConfigItem } from '@/typings/form.d';
|
|
5
|
-
import {
|
|
5
|
+
import { $t } from '@/locales/index';
|
|
6
6
|
|
|
7
7
|
const props = defineProps<{
|
|
8
8
|
/**
|
|
@@ -86,8 +86,6 @@ watch(
|
|
|
86
86
|
{ immediate: true },
|
|
87
87
|
);
|
|
88
88
|
|
|
89
|
-
const { t } = useI18n();
|
|
90
|
-
|
|
91
89
|
const updateConfig = () => {
|
|
92
90
|
let newConfig: Record<string, string>;
|
|
93
91
|
|
|
@@ -144,7 +142,7 @@ const handleInputChange = () => {
|
|
|
144
142
|
<div :class="[fieldWidth ? `w-[${fieldWidth}%]` : 'w-[33%]']">
|
|
145
143
|
<Input v-if="!selectList || selectList.length === 0" v-model:value="item.field"
|
|
146
144
|
:title="item.text || item.field" class="w-full"
|
|
147
|
-
:placeholder="item.text || labelHolder || t('webui.components.form.propEditor.configName')"
|
|
145
|
+
:placeholder="item.text || labelHolder || $t('webui.components.form.propEditor.configName')"
|
|
148
146
|
@input="handleInputChange" :disabled="!addMore" />
|
|
149
147
|
<div v-else>
|
|
150
148
|
<Input v-model:value="item.text" :title="item.text" :disabled="true" class="w-[100%]" />
|
|
@@ -154,14 +152,14 @@ const handleInputChange = () => {
|
|
|
154
152
|
<div class="w-[3%]">=</div>
|
|
155
153
|
<div :class="[fieldWidth ? `w-[${97 - fieldWidth}%]` : 'w-[64%]']">
|
|
156
154
|
<Input v-model:value="item.value"
|
|
157
|
-
:placeholder="valueHolder || t('webui.common.placeholder', [item.text || t('webui.components.form.propEditor.configValue')])"
|
|
155
|
+
:placeholder="valueHolder || $t('webui.common.placeholder', [item.text || $t('webui.components.form.propEditor.configValue')])"
|
|
158
156
|
@input="handleInputChange" :title="item.value" />
|
|
159
157
|
</div>
|
|
160
158
|
</div>
|
|
161
159
|
<Button v-if="addMore" @click="addNewLine"
|
|
162
160
|
class="mt-1 w-[80px] !text-[12px] text-[#666] bg-[#e6f7ff] border-[#b3e0ff] hover:bg-[#b3e0ff] hover:border-[#8abeff]"
|
|
163
161
|
size="small">
|
|
164
|
-
{{ t('webui.components.form.propEditor.addConfigRow') }}
|
|
162
|
+
{{ $t('webui.components.form.propEditor.addConfigRow') }}
|
|
165
163
|
</Button>
|
|
166
164
|
</div>
|
|
167
165
|
</template>
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { ref, onMounted, onUnmounted, PropType, watch, shallowRef } from 'vue';
|
|
2
|
+
import { ref, onMounted, onUnmounted, PropType, watch, shallowRef, computed } from 'vue';
|
|
3
3
|
import { formValidate, useInputFactory, OptionItemProps, loadOption, unloadOption, OptionCommProps } from '@/index';
|
|
4
4
|
import { Switch } from 'ant-design-vue';
|
|
5
5
|
import message from 'vue-m-message';
|
|
6
6
|
import { useOptionFactory } from '@/utils/page';
|
|
7
|
-
import {
|
|
8
|
-
import { useI18n } from 'vue-i18n';
|
|
7
|
+
import { $t, getLang } from '@/locales/index';
|
|
9
8
|
|
|
10
9
|
const props = defineProps({
|
|
11
10
|
...OptionCommProps,
|
|
@@ -48,7 +47,6 @@ const emit = defineEmits<{
|
|
|
48
47
|
}>();
|
|
49
48
|
|
|
50
49
|
const { editorCtrl, errInfo } = useInputFactory();
|
|
51
|
-
const { t } = useI18n();
|
|
52
50
|
|
|
53
51
|
const customSize = computed(() => {
|
|
54
52
|
switch (props.size) {
|
|
@@ -58,6 +56,19 @@ const customSize = computed(() => {
|
|
|
58
56
|
return 'w-[58px]';
|
|
59
57
|
}
|
|
60
58
|
});
|
|
59
|
+
|
|
60
|
+
const isEn = computed(() => getLang() === 'en-US' || getLang() === 'en');
|
|
61
|
+
|
|
62
|
+
const checkedLabel = computed(() => {
|
|
63
|
+
const label = switchOptions.value[0]?.label || '';
|
|
64
|
+
return isEn.value ? label.slice(0, 2) : label;
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const uncheckedLabel = computed(() => {
|
|
68
|
+
const label = switchOptions.value[1]?.label || '';
|
|
69
|
+
return isEn.value ? label.slice(0, 3) : label;
|
|
70
|
+
});
|
|
71
|
+
|
|
61
72
|
const onChange = (checked: boolean | string | number) => {
|
|
62
73
|
if (errInfo?.value.errClass && editorCtrl) {
|
|
63
74
|
/// 重新开始验证
|
|
@@ -68,7 +79,7 @@ const onChange = (checked: boolean | string | number) => {
|
|
|
68
79
|
onMounted(() => {
|
|
69
80
|
if (!props.data || props.data.length != 2) {
|
|
70
81
|
console.error('Switch组件: ', props.data);
|
|
71
|
-
message.error(t('webui.components.form.switch.error'));
|
|
82
|
+
message.error($t('webui.components.form.switch.error'));
|
|
72
83
|
return;
|
|
73
84
|
}
|
|
74
85
|
if (optionCtrl) loadOption(optionCtrl.autoload, optionCtrl, props);
|
|
@@ -83,8 +94,8 @@ onUnmounted(() => {
|
|
|
83
94
|
errInfo?.errClass === 'error' ? 'error !border-red-300 shadow-[0_0_3px_0px_#ff4d4f]' : '',
|
|
84
95
|
'bg-blue-300',
|
|
85
96
|
customSize,
|
|
86
|
-
|
|
87
|
-
:
|
|
97
|
+
]" :checkedChildren="checkedLabel" :checkedValue="switchOptions[0].value" :unCheckedChildren="uncheckedLabel"
|
|
98
|
+
:unCheckedValue="switchOptions[1].value" @change="onChange"
|
|
88
99
|
v-bind="$attrs" />
|
|
89
100
|
</template>
|
|
90
101
|
<style>
|
|
@@ -92,4 +103,5 @@ onUnmounted(() => {
|
|
|
92
103
|
.ant-switch-small .ant-switch-inner-unchecked {
|
|
93
104
|
font-size: 10px !important;
|
|
94
105
|
}
|
|
95
|
-
</style>
|
|
106
|
+
</style>
|
|
107
|
+
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { formValidate, useInputFactory } from '@/index';
|
|
3
3
|
import { Textarea } from 'ant-design-vue';
|
|
4
|
-
import {
|
|
5
|
-
const { t } = useI18n();
|
|
6
|
-
|
|
4
|
+
import { $t } from '@/locales/index';
|
|
7
5
|
const { editorCtrl, labelText, errInfo } = useInputFactory();
|
|
8
6
|
const onBlur = () => {
|
|
9
7
|
if (errInfo?.value.errClass && editorCtrl) {
|
|
@@ -16,7 +14,7 @@ const onBlur = () => {
|
|
|
16
14
|
<Textarea
|
|
17
15
|
:class="errInfo?.errClass === 'error' ? ['error', '!border-red-300', 'shadow-[0_0_3px_0px_#ff4d4f]'] : ''"
|
|
18
16
|
:allow-clear="true"
|
|
19
|
-
|
|
17
|
+
:placeholder="$t('webui.common.placeholder', [labelText])"
|
|
20
18
|
@blur="onBlur"
|
|
21
19
|
@keyup.enter.native.stop
|
|
22
20
|
@keydown.enter.native.stop
|
|
@@ -3,13 +3,12 @@ import { ref } from 'vue';
|
|
|
3
3
|
import { TimePicker } from 'ant-design-vue';
|
|
4
4
|
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
|
|
5
5
|
import { formValidate, useInputFactory } from '@/index';
|
|
6
|
-
import {
|
|
6
|
+
import { $t } from '@/locales/index';
|
|
7
7
|
const props = defineProps<{
|
|
8
8
|
valueFormat?: string;
|
|
9
9
|
}>();
|
|
10
10
|
|
|
11
11
|
const { editorCtrl, labelText, errInfo } = useInputFactory();
|
|
12
|
-
const { t } = useI18n();
|
|
13
12
|
const onBlur = () => {
|
|
14
13
|
if (errInfo?.value.errClass && editorCtrl) {
|
|
15
14
|
/// 重新开始验证
|
|
@@ -22,6 +21,6 @@ const timeFormat = ref<string>(props.valueFormat ?? 'HH:mm');
|
|
|
22
21
|
<template>
|
|
23
22
|
<TimePicker class="w-full"
|
|
24
23
|
:class="[errInfo?.errClass === 'error' ? 'error !border-red-300 shadow-[0_0_3px_0px_#ff4d4f]' : '']"
|
|
25
|
-
:placeholder="t('webui.common.pleaseSelect') + labelText" :locale="locale" :valueFormat="timeFormat"
|
|
24
|
+
:placeholder="$t('webui.common.pleaseSelect') + labelText" :locale="locale" :valueFormat="timeFormat"
|
|
26
25
|
@blur="onBlur" />
|
|
27
26
|
</template>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ToolIcon } from '../../common';
|
|
3
3
|
import { computed, ref, watch } from 'vue';
|
|
4
4
|
import message from 'vue-m-message';
|
|
5
|
-
import {
|
|
5
|
+
import { $t } from '@/locales/index';
|
|
6
6
|
import type { UploadProps } from 'ant-design-vue';
|
|
7
7
|
import { Upload, Image } from 'ant-design-vue';
|
|
8
8
|
import { UploadFile, path } from '@/index';
|
|
@@ -86,8 +86,6 @@ const props = withDefaults(defineProps<ImageListProps>(), {
|
|
|
86
86
|
|
|
87
87
|
const inputFactory = useInputFactory();
|
|
88
88
|
const { errInfo } = inputFactory;
|
|
89
|
-
const { t } = useI18n();
|
|
90
|
-
|
|
91
89
|
// Upload 组件的文件列表更新
|
|
92
90
|
const displayList = ref<UploadFile[]>(props.fileList);
|
|
93
91
|
// Upload 组件的内部文件列表
|
|
@@ -101,14 +99,14 @@ const validateFile = (file: File): boolean => {
|
|
|
101
99
|
if (props.fileExt && props.fileExt.length > 0) {
|
|
102
100
|
const extension = file.name.split('.').pop()?.toLowerCase() || '';
|
|
103
101
|
if (!props.fileExt.includes(extension)) {
|
|
104
|
-
message.error(t('webui.components.form.upload.unsupportedFileType'));
|
|
102
|
+
message.error($t('webui.components.form.upload.unsupportedFileType'));
|
|
105
103
|
return false;
|
|
106
104
|
}
|
|
107
105
|
}
|
|
108
106
|
|
|
109
107
|
// 文件大小验证
|
|
110
108
|
if (file.size / 1024 / 1024 > props.maxFileSize) {
|
|
111
|
-
message.error(t('webui.components.form.upload.fileSizeExceeded', [props.maxFileSize]));
|
|
109
|
+
message.error($t('webui.components.form.upload.fileSizeExceeded', [props.maxFileSize]));
|
|
112
110
|
return false;
|
|
113
111
|
}
|
|
114
112
|
|
|
@@ -161,7 +159,7 @@ const handleFileSelect = async (newFiles: any[]) => {
|
|
|
161
159
|
|
|
162
160
|
// 检查是否达到最大数量限制
|
|
163
161
|
if (isMaxCountReached()) {
|
|
164
|
-
message.error(t('webui.components.form.upload.maxFileCount', [props.maxCount]));
|
|
162
|
+
message.error($t('webui.components.form.upload.maxFileCount', [props.maxCount]));
|
|
165
163
|
hasError = true;
|
|
166
164
|
break;
|
|
167
165
|
}
|
|
@@ -260,7 +258,7 @@ const removeFile = (index: number) => {
|
|
|
260
258
|
},
|
|
261
259
|
}).then((res) => {
|
|
262
260
|
if (res && res.status === ResStatus.SUCCESS) {
|
|
263
|
-
message.success(t('webui.common.success'));
|
|
261
|
+
message.success($t('webui.common.success'));
|
|
264
262
|
displayList.value.splice(index, 1);
|
|
265
263
|
}
|
|
266
264
|
});
|
|
@@ -342,12 +340,12 @@ const hoveredIndex = ref(-1);
|
|
|
342
340
|
<div v-if="previewUrl" class="flex items-center text-white cursor-pointer hover:text-blue-400"
|
|
343
341
|
@click="previewFile(index)">
|
|
344
342
|
<ToolIcon icon="icon-eye" clickable />
|
|
345
|
-
<span class="text-sm ml-1">{{ t('webui.components.form.upload.preview') }}</span>
|
|
343
|
+
<span class="text-sm ml-1">{{ $t('webui.components.form.upload.preview') }}</span>
|
|
346
344
|
</div>
|
|
347
345
|
<div v-if="showDelete !== false" class="flex items-center text-white cursor-pointer hover:text-red-400"
|
|
348
346
|
@click="removeFile(index)">
|
|
349
347
|
<ToolIcon icon="icon-new" :angle="45" clickable />
|
|
350
|
-
<span class="text-sm ml-1">{{ t('webui.components.form.upload.delete') }}</span>
|
|
348
|
+
<span class="text-sm ml-1">{{ $t('webui.components.form.upload.delete') }}</span>
|
|
351
349
|
</div>
|
|
352
350
|
</div>
|
|
353
351
|
</div>
|
|
@@ -5,7 +5,6 @@ export const defaultEnLocale = {
|
|
|
5
5
|
"cancel": "Cancel",
|
|
6
6
|
"yes": "Yes",
|
|
7
7
|
"no": "No",
|
|
8
|
-
|
|
9
8
|
"save": "Save",
|
|
10
9
|
"saveAs": "Save As",
|
|
11
10
|
"delete": "Delete",
|
|
@@ -39,7 +38,8 @@ export const defaultEnLocale = {
|
|
|
39
38
|
"more": "More",
|
|
40
39
|
"moreActions": "More Actions",
|
|
41
40
|
"uploadSave": "Upload & Save",
|
|
42
|
-
"dataLoading": "Loading data..."
|
|
41
|
+
"dataLoading": "Loading data...",
|
|
42
|
+
"noData": "No data"
|
|
43
43
|
},
|
|
44
44
|
|
|
45
45
|
"components": {
|
|
@@ -95,11 +95,6 @@ export const defaultEnLocale = {
|
|
|
95
95
|
"fileProcessingError": "File processing error",
|
|
96
96
|
"dataSaveFailed": "Data save failed, please try again later!"
|
|
97
97
|
},
|
|
98
|
-
|
|
99
|
-
"listOperate": {
|
|
100
|
-
"confirmDelete": "Are you sure to delete this record?",
|
|
101
|
-
"more": "More"
|
|
102
|
-
},
|
|
103
98
|
"table": {
|
|
104
99
|
"confirmDelete": "Are you sure to delete this record?"
|
|
105
100
|
},
|
|
@@ -188,8 +183,7 @@ export const defaultEnLocale = {
|
|
|
188
183
|
"delete": "Delete"
|
|
189
184
|
},
|
|
190
185
|
"select": {
|
|
191
|
-
"pleaseSelect": "Please select {0}"
|
|
192
|
-
"noData": "No data"
|
|
186
|
+
"pleaseSelect": "Please select {0}"
|
|
193
187
|
},
|
|
194
188
|
"aceEditor": {
|
|
195
189
|
"title": "Code Editor",
|
|
@@ -212,7 +206,6 @@ export const defaultEnLocale = {
|
|
|
212
206
|
"error": "Switch component must have exactly two options"
|
|
213
207
|
},
|
|
214
208
|
"radio": {
|
|
215
|
-
"noData": "No data",
|
|
216
209
|
"all": "All"
|
|
217
210
|
},
|
|
218
211
|
"autoComplete": {
|
|
@@ -225,10 +218,6 @@ export const defaultEnLocale = {
|
|
|
225
218
|
"addConfigRow": "Add Row"
|
|
226
219
|
},
|
|
227
220
|
"transfer": {
|
|
228
|
-
"pleaseInput": "Please enter {0}",
|
|
229
|
-
"noData": "No data"
|
|
230
|
-
},
|
|
231
|
-
"input": {
|
|
232
221
|
"pleaseInput": "Please enter {0}"
|
|
233
222
|
}
|
|
234
223
|
}
|
|
@@ -255,6 +244,13 @@ export const defaultEnLocale = {
|
|
|
255
244
|
"exportFailed": "Export failed",
|
|
256
245
|
"fileExportFailed": "File export failed, please try again later"
|
|
257
246
|
},
|
|
247
|
+
"form": {
|
|
248
|
+
"submitValidationFailed": "Validation failed when submitting form!",
|
|
249
|
+
"saveSuccess": "Save successful!",
|
|
250
|
+
"dataAlreadyExists": "Data `{0}` already exists!",
|
|
251
|
+
"dataDuplicate": "Data duplicate",
|
|
252
|
+
"saveFailed": "Save failed"
|
|
253
|
+
},
|
|
258
254
|
"formValidate": {
|
|
259
255
|
"required": "Cannot be empty",
|
|
260
256
|
"numberType": "Must be a number",
|
|
@@ -291,10 +287,13 @@ export const defaultEnLocale = {
|
|
|
291
287
|
"uploadCancelled": "Upload cancelled"
|
|
292
288
|
},
|
|
293
289
|
"data": {
|
|
290
|
+
"startExecute": "Starting...",
|
|
294
291
|
"executeSuccess": "Execution successful!",
|
|
295
|
-
"
|
|
292
|
+
"noSaveData": "Error! No data to save!",
|
|
293
|
+
"savingData": "Saving data...",
|
|
296
294
|
"saveSuccess": "Save successful!",
|
|
297
|
-
"
|
|
295
|
+
"deletingData": "Deleting data...",
|
|
296
|
+
"forbidDeleteWithoutCondition": "Error! Unconditional data deletion is forbidden!",
|
|
298
297
|
"deleteSuccess": "Delete successful!",
|
|
299
298
|
"urlNotSet": "URL not set: {urlKey}"
|
|
300
299
|
},
|
|
@@ -322,16 +321,15 @@ export const defaultEnLocale = {
|
|
|
322
321
|
"notConfigured": "Options data not configured!",
|
|
323
322
|
"outFieldsFormatError": "outFields format error: {sourceKey}, must be ${index} or ${index}.${key}"
|
|
324
323
|
},
|
|
325
|
-
"form": {
|
|
326
|
-
"submitValidationFailed": "Validation failed when submitting form!",
|
|
327
|
-
"saveSuccess": "Save successful!",
|
|
328
|
-
"dataAlreadyExists": "Save failed! Data `{0}` already exists!",
|
|
329
|
-
"dataDuplicate": "Data duplicate",
|
|
330
|
-
"saveFailed": "Save failed"
|
|
331
|
-
},
|
|
332
324
|
"excelPreview": {
|
|
333
325
|
"previewUrlNotConfigured": "Preview URL or Excel controller not configured",
|
|
334
|
-
"fileLoadFailed": "File load failed"
|
|
326
|
+
"fileLoadFailed": "File load failed",
|
|
327
|
+
"csvProcessingFailed": "CSV format processing failed",
|
|
328
|
+
"previewFileXlsx": "Preview file.xlsx",
|
|
329
|
+
"unsupportedRawFormat": "Unsupported raw file format",
|
|
330
|
+
"unsupportedFileFormat": "Unsupported file format",
|
|
331
|
+
"dataEmpty": "Data is empty",
|
|
332
|
+
"excelProcessingFailed": "Excel processing failed"
|
|
335
333
|
},
|
|
336
334
|
"tools": {
|
|
337
335
|
"noClickHandler": "Click handler not configured!",
|
|
@@ -6,7 +6,6 @@ export const defaultLocale = {
|
|
|
6
6
|
"cancel": "取消",
|
|
7
7
|
"yes": "是",
|
|
8
8
|
"no": "否",
|
|
9
|
-
|
|
10
9
|
"save": "保存",
|
|
11
10
|
"saveAs": "另存为",
|
|
12
11
|
"delete": "删除",
|
|
@@ -39,10 +38,10 @@ export const defaultLocale = {
|
|
|
39
38
|
"more": "更多",
|
|
40
39
|
"moreActions": "更多操作",
|
|
41
40
|
"uploadSave": "上传保存",
|
|
42
|
-
"dataLoading": "数据加载中..."
|
|
41
|
+
"dataLoading": "数据加载中...",
|
|
42
|
+
"noData": "无数据"
|
|
43
43
|
},
|
|
44
44
|
|
|
45
|
-
// 组件相关
|
|
46
45
|
"components": {
|
|
47
46
|
"common": {
|
|
48
47
|
"button": {
|
|
@@ -96,10 +95,8 @@ export const defaultLocale = {
|
|
|
96
95
|
"fileProcessingError": "文件处理错误",
|
|
97
96
|
"dataSaveFailed": "数据保存失败,请稍后再试!"
|
|
98
97
|
},
|
|
99
|
-
|
|
100
|
-
"listOperate": {
|
|
98
|
+
"table": {
|
|
101
99
|
"confirmDelete": "是否删除此记录?",
|
|
102
|
-
"more": "更多"
|
|
103
100
|
},
|
|
104
101
|
"toolpanel": {
|
|
105
102
|
"tool": "工具",
|
|
@@ -186,8 +183,7 @@ export const defaultLocale = {
|
|
|
186
183
|
"delete": "删除"
|
|
187
184
|
},
|
|
188
185
|
"select": {
|
|
189
|
-
"pleaseSelect": "请选择{0}"
|
|
190
|
-
"noData": "无数据"
|
|
186
|
+
"pleaseSelect": "请选择{0}"
|
|
191
187
|
},
|
|
192
188
|
"aceEditor": {
|
|
193
189
|
"title": "代码编辑器",
|
|
@@ -210,7 +206,6 @@ export const defaultLocale = {
|
|
|
210
206
|
"error": "Switch组件必须有且只有两个选项"
|
|
211
207
|
},
|
|
212
208
|
"radio": {
|
|
213
|
-
"noData": "无数据",
|
|
214
209
|
"all": "全部"
|
|
215
210
|
},
|
|
216
211
|
"autoComplete": {
|
|
@@ -223,15 +218,11 @@ export const defaultLocale = {
|
|
|
223
218
|
"addConfigRow": "新增配置行"
|
|
224
219
|
},
|
|
225
220
|
"transfer": {
|
|
226
|
-
"noData": "无数据"
|
|
227
|
-
},
|
|
228
|
-
"input": {
|
|
229
221
|
"pleaseInput": "请输入{0}"
|
|
230
222
|
}
|
|
231
223
|
},
|
|
232
224
|
},
|
|
233
225
|
|
|
234
|
-
// 状态存储相关
|
|
235
226
|
"stores": {
|
|
236
227
|
"userInfo": {
|
|
237
228
|
"tokenParseFailed": "Token解析失败",
|
|
@@ -248,7 +239,6 @@ export const defaultLocale = {
|
|
|
248
239
|
}
|
|
249
240
|
},
|
|
250
241
|
|
|
251
|
-
// 工具函数相关
|
|
252
242
|
"utils": {
|
|
253
243
|
"exportTable": {
|
|
254
244
|
"exportFailed": "导出失败",
|