@skyfox2000/webui 1.5.3 → 1.5.7
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-LU1ysAJM.js → baseLayout-DfTxHOFc.js} +7 -7
- package/lib/assets/modules/file-upload-DTOdV5vM.js +211 -0
- package/lib/assets/modules/index-BDoBUrYA.js +114 -0
- package/lib/assets/modules/{index-C6RrxZBR.js → index-BwMaOrJT.js} +1 -1
- package/lib/assets/modules/{index-CHG5bbZG.js → index-M1qERbea.js} +99 -99
- package/lib/assets/modules/{menuTabs-Bk8A-zzL.js → menuTabs-DWaBSRNr.js} +42 -42
- package/lib/assets/modules/{toolIcon-ADz-Bt4_.js → toolIcon-BYnHhAy-.js} +1 -1
- package/lib/assets/modules/upload-template-BKm9mFq8.js +6764 -0
- package/lib/assets/modules/uploadList-CHvr6Hp1.js +472 -0
- package/lib/es/AceEditor/index.js +3 -3
- package/lib/es/BasicLayout/index.js +2 -2
- package/lib/es/Error403/index.js +14 -15
- package/lib/es/Error404/index.js +16 -17
- package/lib/es/ExcelForm/index.js +244 -244
- package/lib/es/MenuLayout/index.js +5 -5
- package/lib/es/TemplateFile/index.js +53 -54
- package/lib/es/UploadForm/index.js +61 -63
- package/lib/locales/default.d.ts +287 -103
- package/lib/webui.css +1 -1
- package/lib/webui.es.js +1440 -1586
- package/package.json +1 -1
- package/src/components/common/icon/fullscreen.vue +1 -1
- package/src/components/content/dialog/excelForm.vue +32 -28
- package/src/components/content/dialog/index.vue +3 -3
- package/src/components/content/dialog/templateFile.vue +3 -2
- package/src/components/content/dialog/uploadForm.vue +5 -4
- package/src/components/content/drawer/index.vue +5 -3
- package/src/components/content/list/index.vue +2 -1
- package/src/components/content/list/listOperate.vue +6 -7
- package/src/components/content/search/index.vue +2 -2
- package/src/components/content/table/index.vue +2 -1
- package/src/components/content/table/tableOperate.vue +8 -9
- package/src/components/content/toolbar/icontool.vue +1 -5
- package/src/components/content/toolbar/index.vue +4 -5
- package/src/components/content/toolpanel/index.vue +20 -20
- package/src/components/error/error403.vue +2 -2
- package/src/components/error/error404.vue +2 -2
- package/src/components/form/input/index.vue +3 -1
- package/src/components/form/select/index.vue +3 -2
- package/src/components/form/textarea/index.vue +3 -1
- package/src/components/form/transfer/index.vue +2 -1
- package/src/components/form/upload/uploadList.vue +23 -19
- package/src/components/layout/header/headerExits.vue +5 -5
- package/src/components/layout/menu/menuTabs.vue +1 -1
- package/src/const/options.ts +17 -16
- package/src/locales/default.ts +297 -176
- package/src/locales/index.ts +12 -4
- package/src/stores/appInfo.ts +2 -1
- package/src/stores/userInfo.ts +6 -5
- package/src/utils/data.ts +9 -8
- package/src/utils/download.ts +5 -4
- package/src/utils/excel-preview.ts +4 -3
- package/src/utils/export-table.ts +7 -6
- package/src/utils/file-upload.ts +15 -14
- package/src/utils/form-csv.ts +4 -3
- package/src/utils/form-excel.ts +14 -13
- package/src/utils/form-validate.ts +18 -17
- package/src/utils/form.ts +6 -5
- package/src/utils/icon-loader.ts +3 -2
- package/src/utils/options.ts +2 -1
- package/src/utils/tools.ts +18 -17
- package/lib/assets/modules/file-upload-BvIYPDBD.js +0 -211
- package/lib/assets/modules/index-Bi3hR8Gf.js +0 -114
- package/lib/assets/modules/upload-template-mzLL4UUU.js +0 -6462
- package/lib/assets/modules/uploadList-DRGJEXDH.js +0 -466
package/src/locales/default.ts
CHANGED
|
@@ -6,7 +6,7 @@ export const defaultLocale = {
|
|
|
6
6
|
"cancel": "取消",
|
|
7
7
|
"yes": "是",
|
|
8
8
|
"no": "否",
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
"save": "保存",
|
|
11
11
|
"saveAs": "另存为",
|
|
12
12
|
"delete": "删除",
|
|
@@ -16,189 +16,310 @@ export const defaultLocale = {
|
|
|
16
16
|
"download": "下载",
|
|
17
17
|
"preview": "预览",
|
|
18
18
|
"choose": "选择",
|
|
19
|
-
"placeholder": "请输入{0}"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
"menu": {
|
|
31
|
-
// "close" 使用 common 中的定义
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
// 工具面板相关
|
|
36
|
-
"toolpanel": {
|
|
37
|
-
"tool": "工具",
|
|
38
|
-
"searchResult": "搜索结果",
|
|
39
|
-
"list": "列表",
|
|
40
|
-
"listView": "列表视图",
|
|
41
|
-
"grid": "网格",
|
|
42
|
-
"gridView": "网格视图",
|
|
43
|
-
"expand": "展开",
|
|
44
|
-
"collapse": "收起",
|
|
45
|
-
"expandPanel": "展开面板",
|
|
46
|
-
"collapsePanel": "收起面板",
|
|
47
|
-
"searchPlaceholder": "搜索工具..."
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
// 工具栏相关
|
|
51
|
-
"toolbar": {
|
|
52
|
-
// "add" 使用 common 中的定义
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
// 列表操作相关
|
|
56
|
-
"listOperate": {
|
|
57
|
-
"confirmDelete": "是否删除此记录?"
|
|
58
|
-
// "yes" 和 "no" 使用 common 中的定义
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
// 对话框相关
|
|
62
|
-
"dialog": {
|
|
63
|
-
"fileUpload": "文件上传",
|
|
64
|
-
"templateFileManager": "模板文件管理",
|
|
65
|
-
"batchImportUser": "批量导入用户",
|
|
66
|
-
// "close", "cancel", "saveAs", "save" 使用 common 中的定义
|
|
67
|
-
"uploadFile": "上传文件"
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
// 表格操作相关
|
|
71
|
-
"tableOperate": {
|
|
72
|
-
"confirmDelete": "是否删除此记录?"
|
|
73
|
-
// "edit", "delete", "yes" 和 "no" 使用 common 中的定义
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
// 抽屉相关
|
|
77
|
-
"drawer": {
|
|
78
|
-
// "cancel", "saveAs", "save" 使用 common 中的定义
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
// 上传组件相关
|
|
82
|
-
"upload": {
|
|
83
|
-
"unsupportedFileType": "文件类型不支持",
|
|
84
|
-
"fileSizeExceedsLimit": "文件大小超过 {0}MB 限制",
|
|
85
|
-
"maxFilesReached": "最多上传 {0} 个文件",
|
|
86
|
-
"deleteSuccess": "删除文件成功!",
|
|
87
|
-
"onlineOffline": "上线或下线",
|
|
19
|
+
"placeholder": "请输入{0}",
|
|
20
|
+
"pleaseSelect": "请选择",
|
|
21
|
+
"pleaseInput": "请输入",
|
|
22
|
+
"all": "全部",
|
|
23
|
+
"success": "成功",
|
|
24
|
+
"failed": "失败",
|
|
25
|
+
"enable": "启用",
|
|
26
|
+
"disable": "停用",
|
|
27
|
+
"male": "男",
|
|
28
|
+
"female": "女",
|
|
88
29
|
"online": "上线",
|
|
89
30
|
"offline": "下线",
|
|
90
|
-
"uploading": "上传中",
|
|
91
|
-
"uploadComplete": "上传完成",
|
|
92
|
-
"uploadFailed": "上传失败",
|
|
93
31
|
"onlineStatus": "在线",
|
|
94
32
|
"offlineStatus": "已下线",
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
},
|
|
33
|
+
"refresh": "刷新",
|
|
34
|
+
"search": "搜索",
|
|
35
|
+
"export": "导出",
|
|
36
|
+
"file": "文件",
|
|
37
|
+
"total": "共 {0} 条记录",
|
|
38
|
+
"reset": "重置",
|
|
39
|
+
"more": "更多",
|
|
40
|
+
"moreActions": "更多操作",
|
|
41
|
+
"uploadSave": "上传保存"
|
|
42
|
+
},
|
|
106
43
|
|
|
107
|
-
//
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
44
|
+
// 组件相关
|
|
45
|
+
"components": {
|
|
46
|
+
"common": {
|
|
47
|
+
"button": {
|
|
48
|
+
"tooltip": "提示标题"
|
|
49
|
+
},
|
|
50
|
+
"icon": {
|
|
51
|
+
"question": "问题",
|
|
52
|
+
"help": "帮助"
|
|
53
|
+
},
|
|
54
|
+
"loading": {
|
|
55
|
+
"loading": "加载中"
|
|
56
|
+
},
|
|
57
|
+
"alert": {
|
|
58
|
+
"info": "信息",
|
|
59
|
+
"warning": "警告",
|
|
60
|
+
"error": "错误"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"content": {
|
|
64
|
+
"dialog": {
|
|
65
|
+
"fileUpload": "文件上传",
|
|
66
|
+
"templateFileManager": "模板文件管理",
|
|
67
|
+
"close": "关闭",
|
|
68
|
+
"uploadFile": "上传文件",
|
|
69
|
+
"chooseExcelFile": "请选择Excel文件",
|
|
70
|
+
"chooseCsvFile": "请选择CSV文件",
|
|
71
|
+
"chooseExcelOrCsvFile": "请选择Excel或CSV文件",
|
|
72
|
+
"noValidationRules": "没有设置验证规则",
|
|
73
|
+
"fieldMustBeUnique": "以下{0}必须唯一",
|
|
74
|
+
"combinationMustBeUnique": "以下组合必须唯一",
|
|
75
|
+
"validationRules": "待验证数据规则",
|
|
76
|
+
"duplicateData": "待验证重复数据",
|
|
77
|
+
"validationException": "验证异常",
|
|
78
|
+
"batchImportUser": "批量导入用户",
|
|
79
|
+
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
"excelForm": {
|
|
83
|
+
"uploadAddressNotConfigured": "未配置文件上传地址!",
|
|
84
|
+
"validationError": "表格数据存在验证错误,请修正后再上传!",
|
|
85
|
+
"pleaseSelectFileFirst": "请先选择文件!",
|
|
86
|
+
"fileUploadSuccess": "文件上传成功,开始业务处理!",
|
|
87
|
+
"uploadFailed": "上传处理失败:",
|
|
88
|
+
"unknownError": "未知错误",
|
|
89
|
+
"onlyExcelAllowed": "只能上传Excel文件!",
|
|
90
|
+
"onlyCsvAllowed": "只能上传CSV文件!",
|
|
91
|
+
"onlyExcelOrCsvAllowed": "只能上传Excel文件或CSV文件!",
|
|
92
|
+
"csvProcessingFailed": "CSV文件处理失败",
|
|
93
|
+
"gridCtrlNotConfigured": "未配置表格控制器!",
|
|
94
|
+
"fileProcessingFailed": "文件处理失败,请检查文件格式!",
|
|
95
|
+
"loadFileFailed": "加载文件失败,请检查文件格式!",
|
|
96
|
+
"fileProcessingError": "文件处理错误",
|
|
97
|
+
"dataSaveFailed": "数据保存失败,请稍后再试!"
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
"listOperate": {
|
|
101
|
+
"confirmDelete": "是否删除此记录?",
|
|
102
|
+
"more": "更多"
|
|
103
|
+
},
|
|
104
|
+
"toolpanel": {
|
|
105
|
+
"tool": "工具",
|
|
106
|
+
"searchResult": "搜索结果",
|
|
107
|
+
"list": "列表",
|
|
108
|
+
"grid": "网格",
|
|
109
|
+
"listView": "列表视图",
|
|
110
|
+
"gridView": "网格视图",
|
|
111
|
+
"expand": "展开",
|
|
112
|
+
"collapse": "折叠",
|
|
113
|
+
"expandPanel": "展开面板",
|
|
114
|
+
"collapsePanel": "折叠面板",
|
|
115
|
+
"searchPlaceholder": "搜索工具..."
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"error": {
|
|
119
|
+
"forbidden": "抱歉,您没有权限访问此页面",
|
|
120
|
+
"pageNotFound": "抱歉,您访问的页面不存在",
|
|
121
|
+
"clickReturn": "点击返回"
|
|
122
|
+
},
|
|
123
|
+
"layout": {
|
|
124
|
+
"header": {
|
|
125
|
+
"exitPlatform": "退出平台",
|
|
126
|
+
"exitSystem": "退出系统",
|
|
127
|
+
"confirmExit": "确认退出",
|
|
128
|
+
"exitConfirmMessage": "您确定要退出系统吗?"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"form": {
|
|
132
|
+
"upload": {
|
|
133
|
+
"selectFile": "选择文件",
|
|
134
|
+
"selectDirectory": "选择目录",
|
|
135
|
+
"uploading": "上传中",
|
|
136
|
+
"uploadComplete": "上传完成",
|
|
137
|
+
"uploadFailed": "上传失败",
|
|
138
|
+
"pendingUpload": "待上传",
|
|
139
|
+
"onlineOrOffline": "上线或下线",
|
|
140
|
+
"deleteConfirm": "确定删除该文件吗?",
|
|
141
|
+
"deleteSuccess": "删除文件成功!",
|
|
142
|
+
"fileSizeExceeded": "文件大小超过 {0}MB 限制",
|
|
143
|
+
"maxFileCount": "最多上传 {0} 个文件",
|
|
144
|
+
"fileTypeRequired": "文件必须为 {0}",
|
|
145
|
+
"maxFileSize": "单文件最大 {0}MB",
|
|
146
|
+
"maxFileCountMsg": "最多 {0} 个文件",
|
|
147
|
+
"dataLoading": "数据加载中...",
|
|
148
|
+
"loadImageFailed": "加载图片失败:",
|
|
149
|
+
"unsupportedFileType": "文件类型不支持",
|
|
150
|
+
"fileSizeExceedsLimit": "文件大小超过 {0}MB 限制",
|
|
151
|
+
"maxFilesReached": "最多上传 {0} 个文件",
|
|
152
|
+
"onlineOffline": "上线或下线",
|
|
153
|
+
"chooseFile": "选择文件",
|
|
154
|
+
"chooseDirectory": "选择目录",
|
|
155
|
+
"confirmDeleteFile": "确定删除该文件吗?",
|
|
156
|
+
"fileMustBe": "文件必须为 {0}",
|
|
157
|
+
"singleFileMax": "单文件最大 {0}MB",
|
|
158
|
+
"maxFiles": "最多 {0} 个文件",
|
|
159
|
+
"pleaseSelectFile": "请选择上传的文件!",
|
|
160
|
+
"allUploadSuccess": "全部文件上传成功!",
|
|
161
|
+
"partialUploadFailed": "上传结束,部分文件上传失败!",
|
|
162
|
+
"saveUploadSuccess": "保存上传成功的文件!",
|
|
163
|
+
"partialUploadFailedCancel": "上传结束,部分文件上传失败,取消保存!",
|
|
164
|
+
"allUploadFailed": "上传结束,所有文件上传失败!",
|
|
165
|
+
"uploadFailedError": "上传失败",
|
|
166
|
+
"uploadingStatus": "正在上传",
|
|
167
|
+
"unauthorized": "未授权或授权过期",
|
|
168
|
+
"invalidJson": "返回的结果不是 JSON 格式",
|
|
169
|
+
"uploadSuccessStatus": "上传成功",
|
|
170
|
+
"parseJsonError": "无法解析返回的 JSON 数据",
|
|
171
|
+
"uploadFailedStatusCode": "上传失败,状态码:",
|
|
172
|
+
"uploadFailedNetwork": "上传失败,网络异常",
|
|
173
|
+
"uploadCanceled": "上传已取消",
|
|
174
|
+
"fileUploadSuccess": "文件上传成功!",
|
|
175
|
+
"fileUploadFailed": "上传文件失败!"
|
|
176
|
+
},
|
|
177
|
+
"select": {
|
|
178
|
+
"pleaseSelect": "请选择{0}",
|
|
179
|
+
"noData": "无数据"
|
|
180
|
+
},
|
|
181
|
+
"aceEditor": {
|
|
182
|
+
"title": "代码编辑器"
|
|
183
|
+
},
|
|
184
|
+
"switch": {
|
|
185
|
+
"error": "Switch组件必须有且只有两个选项"
|
|
186
|
+
},
|
|
187
|
+
"radioStatus": {
|
|
188
|
+
"all": "全部"
|
|
189
|
+
},
|
|
190
|
+
"radio": {
|
|
191
|
+
"noData": "无数据",
|
|
192
|
+
"all": "全部"
|
|
193
|
+
},
|
|
194
|
+
"autoComplete": {
|
|
195
|
+
"pleaseInputAndSelect": "{0}并选择"
|
|
196
|
+
},
|
|
197
|
+
"propEditor": {
|
|
198
|
+
"configName": "配置名",
|
|
199
|
+
"configValue": "请输入配置值",
|
|
200
|
+
"inputConfigValue": "请输入{0}"
|
|
201
|
+
},
|
|
202
|
+
"transfer": {
|
|
203
|
+
"pleaseInput": "请输入{0}"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
178
206
|
},
|
|
179
|
-
|
|
180
|
-
//
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
|
|
207
|
+
|
|
208
|
+
// 状态存储相关
|
|
209
|
+
"stores": {
|
|
210
|
+
"userInfo": {
|
|
211
|
+
"tokenParseFailed": "Token解析失败",
|
|
212
|
+
"exiting": "正在退出...",
|
|
213
|
+
"logoutSuccess": "已退出登录",
|
|
214
|
+
"authInfoFailed": "获取授权信息失败",
|
|
215
|
+
"userInfoParseFailed": "用户信息解析失败"
|
|
216
|
+
},
|
|
217
|
+
"appInfo": {
|
|
218
|
+
"loadAppListFailed": "加载应用列表失败"
|
|
219
|
+
}
|
|
184
220
|
},
|
|
185
221
|
|
|
186
|
-
//
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
222
|
+
// 工具函数相关
|
|
223
|
+
"utils": {
|
|
224
|
+
"exportTable": {
|
|
225
|
+
"exportFailed": "导出失败",
|
|
226
|
+
"fileExportFailed": "文件导出失败,请稍后重试"
|
|
227
|
+
},
|
|
228
|
+
"formValidate": {
|
|
229
|
+
"required": "不能为空",
|
|
230
|
+
"numberType": "必须是数字",
|
|
231
|
+
"enum": "必须是{enum}中的一个",
|
|
232
|
+
"stringLen": "长度必须为{len}",
|
|
233
|
+
"stringMin": "长度不能小于{min}",
|
|
234
|
+
"stringMax": "长度不能大于{max}",
|
|
235
|
+
"stringRange": "长度必须在{min}和{max}之间",
|
|
236
|
+
"numberLen": "必须为{len}",
|
|
237
|
+
"numberMin": "不能小于{min}",
|
|
238
|
+
"numberMax": "不能大于{max}",
|
|
239
|
+
"numberRange": "必须在{min}和{max}之间",
|
|
240
|
+
"arrayLen": "长度必须为{len}",
|
|
241
|
+
"arrayMin": "长度不能小于{min}",
|
|
242
|
+
"arrayMax": "长度不能大于{max}",
|
|
243
|
+
"arrayRange": "长度必须在{min}和{max}之间",
|
|
244
|
+
"formatValidationError": "格式化验证消息出错",
|
|
245
|
+
"processValidationError": "处理验证规则出错"
|
|
246
|
+
},
|
|
247
|
+
"fileUpload": {
|
|
248
|
+
"pleaseSelectFile": "请选择上传的文件!",
|
|
249
|
+
"allUploadSuccess": "全部文件上传成功!",
|
|
250
|
+
"partialUploadFailed": "上传结束,部分文件上传失败!",
|
|
251
|
+
"saveUploadSuccess": "保存上传成功的文件!",
|
|
252
|
+
"partialUploadFailedCancel": "上传结束,部分文件上传失败,取消保存!",
|
|
253
|
+
"allUploadFailed": "上传结束,所有文件上传失败!",
|
|
254
|
+
"fileUploadSuccess": "文件上传成功!",
|
|
255
|
+
"fileUploadFailed": "上传文件失败!"
|
|
256
|
+
},
|
|
257
|
+
"data": {
|
|
258
|
+
"executeSuccess": "执行成功!",
|
|
259
|
+
"noDataToSave": "错误!无保存数据!",
|
|
260
|
+
"saveSuccess": "保存成功!",
|
|
261
|
+
"conditionalDeleteForbidden": "错误!禁止无条件删除数据!",
|
|
262
|
+
"deleteSuccess": "删除成功!"
|
|
263
|
+
},
|
|
264
|
+
"download": {
|
|
265
|
+
"downloadFailed": "下载文件失败!",
|
|
266
|
+
"fileDownloadFailed": "文件下载失败,请稍后重试",
|
|
267
|
+
"fileTypeNotSupported": "文件类型不支持预览",
|
|
268
|
+
"filePreviewFailed": "文件预览失败!"
|
|
269
|
+
},
|
|
270
|
+
"formExcel": {
|
|
271
|
+
"excelNoSheets": "Excel文件不包含工作表",
|
|
272
|
+
"excelInsufficientData": "Excel文件不包含足够的数据",
|
|
273
|
+
"validationError": "验证表格数据时发生错误",
|
|
274
|
+
"missingDuplicateFields": "表头缺少重复检测所需字段",
|
|
275
|
+
"fileNotExcel": "上传的文件不是Excel文件",
|
|
276
|
+
"processFailed": "Excel文件处理失败",
|
|
277
|
+
"validationSuccess": "数据验证成功",
|
|
278
|
+
"duplicateValidationPending": "待验证重复数据",
|
|
279
|
+
"validationFailed": "数据验证失败",
|
|
280
|
+
"validationPassed": "数据验证通过",
|
|
281
|
+
"duplicateDetected": "检测到重复数据",
|
|
282
|
+
"duplicateCheckPassed": "重复性检验通过"
|
|
283
|
+
},
|
|
284
|
+
"options": {
|
|
285
|
+
"notConfigured": "未配置选项数据!"
|
|
286
|
+
},
|
|
287
|
+
"form": {
|
|
288
|
+
"submitValidationFailed": "提交表单时,验证失败!",
|
|
289
|
+
"saveSuccess": "保存成功!",
|
|
290
|
+
"dataAlreadyExists": "保存失败!数据 `{0}` 已存在!",
|
|
291
|
+
"saveFailed": "保存失败!"
|
|
292
|
+
},
|
|
293
|
+
"excelPreview": {
|
|
294
|
+
"previewUrlNotConfigured": "预览URL或Excel控制器未配置",
|
|
295
|
+
"fileLoadFailed": "文件加载失败"
|
|
296
|
+
},
|
|
297
|
+
"tools": {
|
|
298
|
+
"noClickHandler": "未配置点击处理事件!",
|
|
299
|
+
"refreshTable": "刷新表格",
|
|
300
|
+
"expandSearch": "展开搜索栏",
|
|
301
|
+
"collapseSearch": "折叠搜索栏",
|
|
302
|
+
"rowHeight": "行高调整",
|
|
303
|
+
"showCheckbox": "显示多选框",
|
|
304
|
+
"hideCheckbox": "隐藏多选框",
|
|
305
|
+
"expandRows": "展开记录行",
|
|
306
|
+
"collapseRows": "折叠记录行",
|
|
307
|
+
"exportExcel": "导出Excel",
|
|
308
|
+
"exportAllRecords": "全部记录",
|
|
309
|
+
"exportSelectedRecords": "选中的记录",
|
|
310
|
+
"exportPDF": "导出PDF",
|
|
311
|
+
"tableHeaderSettings": "表头设置",
|
|
312
|
+
"setFullscreen": "设置全屏",
|
|
313
|
+
"exitFullscreen": "取消全屏"
|
|
314
|
+
},
|
|
315
|
+
"iconLoader": {
|
|
316
|
+
"networkError": "网络异常,无法加载图标库!"
|
|
317
|
+
},
|
|
318
|
+
"formCsv": {
|
|
319
|
+
"csvToExcelFailed": "CSV转Excel失败",
|
|
320
|
+
"csvProcessFailed": "CSV文件处理失败",
|
|
321
|
+
"unknownError": "未知错误"
|
|
322
|
+
}
|
|
202
323
|
}
|
|
203
324
|
}
|
|
204
325
|
}
|
package/src/locales/index.ts
CHANGED
|
@@ -30,8 +30,13 @@ function deepMerge(target: any, source: any): any {
|
|
|
30
30
|
return result;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
// 根目录路径
|
|
34
|
+
let ROOT_DIR: string = "/";
|
|
35
|
+
|
|
33
36
|
// 语言显示名称映射(从 public/locales/languages.json 加载)
|
|
34
|
-
export let LOCALE_DISPLAY_NAMES: Record<string, string> = {
|
|
37
|
+
export let LOCALE_DISPLAY_NAMES: Record<string, string> = {
|
|
38
|
+
"zh-CN": "简体中文"
|
|
39
|
+
};
|
|
35
40
|
|
|
36
41
|
// 支持的语言包映射
|
|
37
42
|
const loadedMessages: Record<string, LocaleMessages> = {
|
|
@@ -56,7 +61,7 @@ export const i18n = createI18n({
|
|
|
56
61
|
*/
|
|
57
62
|
async function loadLocaleFromCloud(locale: string): Promise<LocaleMessages> {
|
|
58
63
|
try {
|
|
59
|
-
const response = await fetch(
|
|
64
|
+
const response = await fetch(`${ROOT_DIR}locales/${locale}.json`);
|
|
60
65
|
if (!response.ok) {
|
|
61
66
|
throw new Error(`Failed to load locale ${locale}`);
|
|
62
67
|
}
|
|
@@ -208,12 +213,15 @@ async function loadLocale(locale: string): Promise<void> {
|
|
|
208
213
|
/**
|
|
209
214
|
* 初始化语言 - 使用缓存优先+异步后台加载策略
|
|
210
215
|
* @param rootDir 根目录路径,默认为 "/"
|
|
211
|
-
* @param
|
|
216
|
+
* @param locale 默认语言,默认为 "zh-CN"
|
|
212
217
|
*/
|
|
213
218
|
export async function initLang(rootDir: string = "/", locale: string = "zh-CN"): Promise<void> {
|
|
219
|
+
// 设置根目录路径供其他函数使用
|
|
220
|
+
ROOT_DIR = rootDir;
|
|
221
|
+
|
|
214
222
|
try {
|
|
215
223
|
// 先加载可用语言列表
|
|
216
|
-
const response = await fetch(`${
|
|
224
|
+
const response = await fetch(`${ROOT_DIR}locales/languages.json`);
|
|
217
225
|
if (response.ok) {
|
|
218
226
|
const languages = await response.json();
|
|
219
227
|
LOCALE_DISPLAY_NAMES = languages;
|
package/src/stores/appInfo.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { LoginExpiredError, useUserInfo } from './userInfo';
|
|
|
18
18
|
import { ApiResponse, httpPost, IUrlInfo, ResStatus } from '@skyfox2000/fapi';
|
|
19
19
|
import message from 'vue-m-message';
|
|
20
20
|
import { MicroOpenApis } from '@/utils/micro-openapis';
|
|
21
|
+
import { $t } from '@/locales/index';
|
|
21
22
|
|
|
22
23
|
// const APPINFO_STORE_KEY = 'appInfoStore';
|
|
23
24
|
|
|
@@ -251,7 +252,7 @@ export const useAppInfo = defineStore('appInfo', {
|
|
|
251
252
|
async toDefaultApp(url?: string) {
|
|
252
253
|
if (this.appList.length === 0) await this.loadAppList();
|
|
253
254
|
if (this.appList.length === 0) {
|
|
254
|
-
message.error('
|
|
255
|
+
message.error($t('webui.stores.appInfo.loadAppListFailed'));
|
|
255
256
|
return;
|
|
256
257
|
}
|
|
257
258
|
// 默认地址的应用
|
package/src/stores/userInfo.ts
CHANGED
|
@@ -5,8 +5,9 @@ import { isMicroApp, LoginInfo, UserInfo } from '@skyfox2000/microbase';
|
|
|
5
5
|
import { ref } from 'vue';
|
|
6
6
|
import { useAppInfo } from './appInfo';
|
|
7
7
|
import { MicroOpenApis } from '@/utils/micro-openapis';
|
|
8
|
+
import { $t } from '@/locales/index';
|
|
8
9
|
|
|
9
|
-
const TokenError = '
|
|
10
|
+
const TokenError = $t('webui.stores.userInfo.tokenParseFailed');
|
|
10
11
|
export const LoginExpiredError = 1400;
|
|
11
12
|
|
|
12
13
|
/** 登录相关接口 */
|
|
@@ -33,7 +34,7 @@ const LoginUrlList: {
|
|
|
33
34
|
api: 'PLATFORM_API',
|
|
34
35
|
authorize: true,
|
|
35
36
|
url: '/api/LoginSrv/logout',
|
|
36
|
-
loadingText: '
|
|
37
|
+
loadingText: $t('webui.stores.userInfo.exiting'),
|
|
37
38
|
},
|
|
38
39
|
};
|
|
39
40
|
|
|
@@ -78,7 +79,7 @@ const getRolePermitsApi = <T>(appId: string): Promise<T | null | undefined> => {
|
|
|
78
79
|
userInfoStore.logout(false);
|
|
79
80
|
return;
|
|
80
81
|
}
|
|
81
|
-
message.error('
|
|
82
|
+
message.error($t('webui.stores.userInfo.authInfoFailed') + ',' + result?.msg!);
|
|
82
83
|
return null;
|
|
83
84
|
});
|
|
84
85
|
};
|
|
@@ -206,7 +207,7 @@ export const useUserInfo = defineStore('userInfo', {
|
|
|
206
207
|
};
|
|
207
208
|
userLevel.value = loginInfo.UserInfo!.UserLevel;
|
|
208
209
|
} else {
|
|
209
|
-
message.error('
|
|
210
|
+
message.error($t('webui.stores.userInfo.userInfoParseFailed'));
|
|
210
211
|
return;
|
|
211
212
|
}
|
|
212
213
|
|
|
@@ -395,7 +396,7 @@ export const useUserInfo = defineStore('userInfo', {
|
|
|
395
396
|
if (exit) {
|
|
396
397
|
// 跳转到登录页
|
|
397
398
|
setTimeout(async () => {
|
|
398
|
-
message.success('
|
|
399
|
+
message.success($t('webui.stores.userInfo.logoutSuccess'));
|
|
399
400
|
}, 1000);
|
|
400
401
|
}
|
|
401
402
|
setTimeout(async () => {
|