@skyfox2000/webui 1.5.7 → 1.5.10

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.
Files changed (59) hide show
  1. package/lib/assets/modules/{baseLayout-DfTxHOFc.js → baseLayout-BuQjrozB.js} +9 -9
  2. package/lib/assets/modules/{file-upload-DTOdV5vM.js → file-upload-DcusqXDb.js} +5 -5
  3. package/lib/assets/modules/{index-M1qERbea.js → index-BlQB5KSU.js} +2 -2
  4. package/lib/assets/modules/{index-BwMaOrJT.js → index-CW_ZCHWs.js} +1 -1
  5. package/lib/assets/modules/index-CekzHbWp.js +114 -0
  6. package/lib/assets/modules/{menuTabs-DWaBSRNr.js → menuTabs-BYSjomB7.js} +44 -36
  7. package/lib/assets/modules/{toolIcon-BYnHhAy-.js → toolIcon-D4vAp0qA.js} +1 -1
  8. package/lib/assets/modules/{upload-template-BKm9mFq8.js → upload-template-NU0Bpg4N.js} +2056 -2176
  9. package/lib/assets/modules/uploadList-ENSsTfpD.js +472 -0
  10. package/lib/const/options.d.ts +6 -20
  11. package/lib/const/stores.d.ts +11 -0
  12. package/lib/es/AceEditor/index.js +70 -70
  13. package/lib/es/BasicLayout/index.js +6 -6
  14. package/lib/es/Error403/index.js +1 -1
  15. package/lib/es/Error404/index.js +1 -1
  16. package/lib/es/ExcelForm/index.js +16 -16
  17. package/lib/es/MenuLayout/index.js +6 -6
  18. package/lib/es/TemplateFile/index.js +5 -5
  19. package/lib/es/UploadForm/index.js +5 -5
  20. package/lib/index.d.ts +2 -1
  21. package/lib/locales/default.d.ts +137 -115
  22. package/lib/utils/tools.d.ts +1 -0
  23. package/lib/webui.css +1 -1
  24. package/lib/webui.es.js +1692 -1547
  25. package/package.json +1 -1
  26. package/src/components/content/dialog/index.vue +1 -0
  27. package/src/components/content/form/formItem.vue +3 -2
  28. package/src/components/content/search/index.vue +1 -0
  29. package/src/components/content/search/searchItem.vue +3 -2
  30. package/src/components/form/aceEditor/index.vue +5 -3
  31. package/src/components/form/cascader/index.vue +5 -3
  32. package/src/components/form/checkbox/index.vue +1 -1
  33. package/src/components/form/datePicker/index.vue +2 -1
  34. package/src/components/form/input/index.vue +1 -1
  35. package/src/components/form/input/inputNumber.vue +3 -1
  36. package/src/components/form/input/inputPassword.vue +3 -1
  37. package/src/components/form/propEditor/index.vue +8 -3
  38. package/src/components/form/radio/index.vue +2 -1
  39. package/src/components/form/radio/radioStatus.vue +2 -1
  40. package/src/components/form/switch/index.vue +3 -1
  41. package/src/components/form/textarea/index.vue +1 -1
  42. package/src/components/form/timePicker/index.vue +4 -1
  43. package/src/components/form/treeSelect/index.vue +3 -1
  44. package/src/components/form/upload/imageList.vue +8 -6
  45. package/src/components/form/upload/uploadList.vue +6 -5
  46. package/src/components/layout/datetime/index.vue +15 -4
  47. package/src/components/layout/header/language.vue +2 -0
  48. package/src/const/options.ts +76 -52
  49. package/src/const/stores.ts +58 -0
  50. package/src/index.ts +2 -0
  51. package/src/locales/default.ts +145 -123
  52. package/src/locales/en-US.json +320 -0
  53. package/src/locales/index.ts +109 -39
  54. package/src/stores/hostInfo.ts +2 -19
  55. package/src/stores/userInfo.ts +2 -30
  56. package/src/utils/options.ts +2 -2
  57. package/src/utils/tools.ts +88 -83
  58. package/lib/assets/modules/index-BDoBUrYA.js +0 -114
  59. package/lib/assets/modules/uploadList-CHvr6Hp1.js +0 -472
@@ -6,6 +6,7 @@ import { $t } from '@/locales/index';
6
6
  */
7
7
  export class OPTIONS {
8
8
  private static dict: Record<string, (Record<string, any> | OptionItemProps)[]> = {};
9
+ private static initialized = false;
9
10
  static Keys = {
10
11
  EnableDisable: 'EnableDisable',
11
12
  SuccessResult: 'SuccessResult',
@@ -46,80 +47,103 @@ export class OPTIONS {
46
47
  static setOptions = (key: string, list: Record<string, any>[]) => {
47
48
  OPTIONS.dict[key] = list;
48
49
  };
50
+ /**
51
+ * 初始化选项数据
52
+ * 调用此方法时才会执行翻译,避免初始化时$t不可用的问题
53
+ */
54
+ static initOptions = () => {
55
+ if (OPTIONS.initialized) return;
56
+
57
+ OPTIONS.EnableDisable = [
58
+ {
59
+ label: $t('webui.common.enable'),
60
+ text: `✅ ${$t('webui.common.enable')}`,
61
+ value: 1,
62
+ },
63
+ {
64
+ label: $t('webui.common.disable'),
65
+ text: `🚫 ${$t('webui.common.disable')}`,
66
+ value: 0,
67
+ },
68
+ ];
69
+
70
+ OPTIONS.SuccessResult = [
71
+ {
72
+ label: $t('webui.common.success'),
73
+ text: `✅ ${$t('webui.common.success')}`,
74
+ value: 1,
75
+ },
76
+ {
77
+ label: $t('webui.common.failed'),
78
+ text: `🚫 ${$t('webui.common.failed')}`,
79
+ value: 0,
80
+ },
81
+ ];
82
+
83
+ OPTIONS.YesNo = [
84
+ {
85
+ label: $t('webui.common.yes'),
86
+ text: `✅ ${$t('webui.common.yes')}`,
87
+ value: 1,
88
+ },
89
+ {
90
+ label: $t('webui.common.no'),
91
+ text: `❎ ${$t('webui.common.no')}`,
92
+ value: 0,
93
+ },
94
+ ];
95
+
96
+ OPTIONS.MaleFemale = [
97
+ {
98
+ label: $t('webui.common.male'),
99
+ text: `${$t('webui.common.male')} 👨`,
100
+ value: 'M',
101
+ },
102
+ {
103
+ label: $t('webui.common.female'),
104
+ text: `${$t('webui.common.female')} 👩`,
105
+ value: 'F',
106
+ },
107
+ ];
108
+
109
+ OPTIONS.setOptions('EnableDisable', OPTIONS.EnableDisable);
110
+ OPTIONS.setOptions('SuccessResult', OPTIONS.SuccessResult);
111
+ OPTIONS.setOptions('YesNo', OPTIONS.YesNo);
112
+ OPTIONS.setOptions('MaleFemale', OPTIONS.MaleFemale);
113
+
114
+ OPTIONS.initialized = true;
115
+ };
49
116
  /**
50
117
  * 启用/停用选项
51
118
  * - 启用 1
52
119
  * - 停用 0
53
120
  */
54
- static EnableDisable = [
55
- {
56
- label: $t('webui.common.enable'),
57
- text: `✅ ${$t('webui.common.enable')}`,
58
- value: 1,
59
- },
60
- {
61
- label: $t('webui.common.disable'),
62
- text: `🚫 ${$t('webui.common.disable')}`,
63
- value: 0,
64
- },
65
- ];
121
+ static EnableDisable: OptionItemProps[] = [];
66
122
 
67
123
  /**
68
124
  * 成功/失败选项
69
125
  * - 成功 1
70
126
  * - 失败 0
71
127
  */
72
- static SuccessResult = [
73
- {
74
- label: $t('webui.common.success'),
75
- text: `✅ ${$t('webui.common.success')}`,
76
- value: 1,
77
- },
78
- {
79
- label: $t('webui.common.failed'),
80
- text: `🚫 ${$t('webui.common.failed')}`,
81
- value: 0,
82
- },
83
- ];
128
+ static SuccessResult: OptionItemProps[] = [];
84
129
 
85
130
  /**
86
131
  * 是/否选项
87
132
  * - 是 1
88
133
  * - 否 0
89
134
  */
90
- static YesNo = [
91
- {
92
- label: $t('webui.common.yes'),
93
- text: `✅ ${$t('webui.common.yes')}`,
94
- value: 1,
95
- },
96
- {
97
- label: $t('webui.common.no'),
98
- text: `❎ ${$t('webui.common.no')}`,
99
- value: 0,
100
- },
101
- ];
135
+ static YesNo: OptionItemProps[] = [];
102
136
 
103
137
  /**
104
138
  * 男/女选项
105
139
  * - 男 M
106
140
  * - 女 F
107
141
  */
108
- static MaleFemale = [
109
- {
110
- label: $t('webui.common.male'),
111
- text: `${$t('webui.common.male')} 👨`,
112
- value: 'M',
113
- },
114
- {
115
- label: $t('webui.common.female'),
116
- text: `${$t('webui.common.female')} 👩`,
117
- value: 'F',
118
- },
119
- ];
142
+ static MaleFemale: OptionItemProps[] = [];
120
143
  }
121
144
 
122
- OPTIONS.setOptions('EnableDisable', OPTIONS.EnableDisable);
123
- OPTIONS.setOptions('SuccessResult', OPTIONS.SuccessResult);
124
- OPTIONS.setOptions('YesNo', OPTIONS.YesNo);
125
- OPTIONS.setOptions('MaleFemale', OPTIONS.MaleFemale);
145
+ // 初始化将在调用init()方法时执行
146
+ // OPTIONS.setOptions('EnableDisable', OPTIONS.EnableDisable);
147
+ // OPTIONS.setOptions('SuccessResult', OPTIONS.SuccessResult);
148
+ // OPTIONS.setOptions('YesNo', OPTIONS.YesNo);
149
+ // OPTIONS.setOptions('MaleFemale', OPTIONS.MaleFemale);
@@ -0,0 +1,58 @@
1
+ import { IUrlInfo } from '@skyfox2000/fapi';
2
+ import { $t } from '@/locales/index';
3
+
4
+ export let TokenError = "";
5
+
6
+ /** 登录相关接口 */
7
+ export const LoginUrlList: {
8
+ /** 登录信息 */
9
+ login: IUrlInfo;
10
+ /** 获取界面授权 */
11
+ auth: IUrlInfo;
12
+ /** 退出登录 */
13
+ logout: IUrlInfo;
14
+ } = {
15
+ login: {
16
+ api: 'PLATFORM_API',
17
+ url: '/openapi/LoginSrv/login',
18
+ loadingText: false,
19
+ },
20
+ auth: {
21
+ api: 'PLATFORM_API',
22
+ authorize: true,
23
+ url: '/api/RCAccountOpSrv/getPermits',
24
+ loadingText: false,
25
+ },
26
+ logout: {
27
+ api: 'PLATFORM_API',
28
+ authorize: true,
29
+ url: '/api/LoginSrv/logout',
30
+ },
31
+ };
32
+
33
+ /** 站点相关接口 */
34
+ export const HostUrlList: {
35
+ /** 站点信息 */
36
+ host: IUrlInfo;
37
+ } = {
38
+ host: {
39
+ api: 'SITEHOST_API',
40
+ url: '/openapi/RCSiteHostSrv/get',
41
+ fieldMap: {
42
+ hostId: 'Id',
43
+ hostName: 'Title',
44
+ },
45
+ // 不显示错误
46
+ hideErrorToast: true,
47
+ },
48
+ };
49
+
50
+ /**
51
+ * 初始化stores相关常量
52
+ * 用于在应用启动时初始化stores模块的常量内容
53
+ */
54
+ export function initStores(): void {
55
+ TokenError = $t('webui.stores.userInfo.tokenParseFailed');
56
+ LoginUrlList.logout.loadingText = $t('webui.stores.userInfo.exiting');
57
+ HostUrlList.host.loadingText = $t('webui.stores.hostInfo.loading');
58
+ }
package/src/index.ts CHANGED
@@ -85,6 +85,7 @@ export type {
85
85
 
86
86
  // 常量导出 - 明确导出
87
87
  export { OPTIONS } from '@/const/options';
88
+ export { initStores } from '@/const/stores';
88
89
  export { OptionCommProps } from '@/typings/option.d';
89
90
 
90
91
  // 指令模块导出
@@ -109,6 +110,7 @@ export {
109
110
  onColumnVisibleChanged,
110
111
  defaultTools,
111
112
  useToolFactory,
113
+ initTools,
112
114
  } from '@/utils/tools';
113
115
 
114
116
  // page 工具
@@ -39,7 +39,7 @@ export const defaultLocale = {
39
39
  "more": "更多",
40
40
  "moreActions": "更多操作",
41
41
  "uploadSave": "上传保存"
42
- },
42
+ },
43
43
 
44
44
  // 组件相关
45
45
  "components": {
@@ -74,8 +74,7 @@ export const defaultLocale = {
74
74
  "combinationMustBeUnique": "以下组合必须唯一",
75
75
  "validationRules": "待验证数据规则",
76
76
  "duplicateData": "待验证重复数据",
77
- "validationException": "验证异常",
78
- "batchImportUser": "批量导入用户",
77
+ "validationException": "验证异常"
79
78
 
80
79
  },
81
80
 
@@ -113,6 +112,12 @@ export const defaultLocale = {
113
112
  "expandPanel": "展开面板",
114
113
  "collapsePanel": "折叠面板",
115
114
  "searchPlaceholder": "搜索工具..."
115
+ },
116
+ "formItem": {
117
+ "validationRuleNotFound": "未找到字段 '{label}' 的验证规则: {rule}"
118
+ },
119
+ "searchItem": {
120
+ "validationRuleNotFound": "未找到字段 '{label}' 的验证规则: {rule}"
116
121
  }
117
122
  },
118
123
  "error": {
@@ -126,6 +131,9 @@ export const defaultLocale = {
126
131
  "exitSystem": "退出系统",
127
132
  "confirmExit": "确认退出",
128
133
  "exitConfirmMessage": "您确定要退出系统吗?"
134
+ },
135
+ "breadcrumb": {
136
+ "home": "首页"
129
137
  }
130
138
  },
131
139
  "form": {
@@ -172,21 +180,34 @@ export const defaultLocale = {
172
180
  "uploadFailedNetwork": "上传失败,网络异常",
173
181
  "uploadCanceled": "上传已取消",
174
182
  "fileUploadSuccess": "文件上传成功!",
175
- "fileUploadFailed": "上传文件失败!"
183
+ "fileUploadFailed": "上传文件失败!",
184
+ "preview": "预览",
185
+ "delete": "删除"
176
186
  },
177
187
  "select": {
178
188
  "pleaseSelect": "请选择{0}",
179
189
  "noData": "无数据"
180
190
  },
181
191
  "aceEditor": {
182
- "title": "代码编辑器"
192
+ "title": "代码编辑器",
193
+ "loading": "加载编辑器中..."
194
+ },
195
+ "checkbox": {
196
+ "loading": "数据加载中..."
197
+ },
198
+ "cascader": {
199
+ "loading": "数据加载中...",
200
+ "pleaseSelect": "请选择{0}"
201
+ },
202
+ "datePicker": {
203
+ "pleaseSelect": "请选择{0}"
204
+ },
205
+ "treeSelect": {
206
+ "pleaseSelect": "请选择{0}"
183
207
  },
184
208
  "switch": {
185
209
  "error": "Switch组件必须有且只有两个选项"
186
210
  },
187
- "radioStatus": {
188
- "all": "全部"
189
- },
190
211
  "radio": {
191
212
  "noData": "无数据",
192
213
  "all": "全部"
@@ -197,128 +218,129 @@ export const defaultLocale = {
197
218
  "propEditor": {
198
219
  "configName": "配置名",
199
220
  "configValue": "请输入配置值",
200
- "inputConfigValue": "请输入{0}"
221
+ "inputConfigValue": "请输入{0}",
222
+ "addConfigRow": "新增配置行"
201
223
  },
202
224
  "transfer": {
225
+ "noData": "无数据"
226
+ },
227
+ "input": {
203
228
  "pleaseInput": "请输入{0}"
204
229
  }
205
- }
206
- },
230
+ },
207
231
 
208
- // 状态存储相关
209
- "stores": {
210
- "userInfo": {
211
- "tokenParseFailed": "Token解析失败",
212
- "exiting": "正在退出...",
213
- "logoutSuccess": "已退出登录",
214
- "authInfoFailed": "获取授权信息失败",
215
- "userInfoParseFailed": "用户信息解析失败"
232
+ // 状态存储相关
233
+ "stores": {
234
+ "userInfo": {
235
+ "tokenParseFailed": "Token解析失败",
236
+ "exiting": "正在退出...",
237
+ "logoutSuccess": "已退出登录",
238
+ "authInfoFailed": "获取授权信息失败",
239
+ "userInfoParseFailed": "用户信息解析失败"
240
+ },
241
+ "hostInfo": {
242
+ "loading": "站点配置加载中……"
243
+ },
244
+ "appInfo": {
245
+ "loadAppListFailed": "加载应用列表失败"
246
+ }
216
247
  },
217
- "appInfo": {
218
- "loadAppListFailed": "加载应用列表失败"
219
- }
220
- },
221
248
 
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": "未知错误"
249
+ // 工具函数相关
250
+ "utils": {
251
+ "exportTable": {
252
+ "exportFailed": "导出失败",
253
+ "fileExportFailed": "文件导出失败,请稍后重试"
254
+ },
255
+ "formValidate": {
256
+ "required": "不能为空",
257
+ "numberType": "必须是数字",
258
+ "enum": "必须是{enum}中的一个",
259
+ "stringLen": "长度必须为{len}",
260
+ "stringMin": "长度不能小于{min}",
261
+ "stringMax": "长度不能大于{max}",
262
+ "stringRange": "长度必须在{min}和{max}之间",
263
+ "numberLen": "必须为{len}",
264
+ "numberMin": "不能小于{min}",
265
+ "numberMax": "不能大于{max}",
266
+ "numberRange": "必须在{min}和{max}之间",
267
+ "arrayLen": "长度必须为{len}",
268
+ "arrayMin": "长度不能小于{min}",
269
+ "arrayMax": "长度不能大于{max}",
270
+ "arrayRange": "长度必须在{min}和{max}之间",
271
+ "formatValidationError": "格式化验证消息出错",
272
+ "processValidationError": "处理验证规则出错"
273
+ },
274
+ "fileUpload": {
275
+ "pleaseSelectFile": "请选择上传的文件!",
276
+ "allUploadSuccess": "全部文件上传成功!",
277
+ "partialUploadFailed": "上传结束,部分文件上传失败!",
278
+ "saveUploadSuccess": "保存上传成功的文件!",
279
+ "partialUploadFailedCancel": "上传结束,部分文件上传失败,取消保存!",
280
+ "allUploadFailed": "上传结束,所有文件上传失败!",
281
+ "fileUploadSuccess": "文件上传成功!",
282
+ "fileUploadFailed": "上传文件失败!"
283
+ },
284
+ "data": {
285
+ "executeSuccess": "执行成功!",
286
+ "noDataToSave": "错误!无保存数据!",
287
+ "saveSuccess": "保存成功!",
288
+ "conditionalDeleteForbidden": "错误!禁止无条件删除数据!",
289
+ "deleteSuccess": "删除成功!"
290
+ },
291
+ "download": {
292
+ "downloadFailed": "下载文件失败!",
293
+ "fileDownloadFailed": "文件下载失败,请稍后重试",
294
+ "fileTypeNotSupported": "文件类型不支持预览",
295
+ "filePreviewFailed": "文件预览失败!"
296
+ },
297
+ "formExcel": {
298
+ "excelNoSheets": "Excel文件不包含工作表",
299
+ "excelInsufficientData": "Excel文件不包含足够的数据",
300
+ "validationError": "验证表格数据时发生错误",
301
+ "missingDuplicateFields": "表头缺少重复检测所需字段",
302
+ "fileNotExcel": "上传的文件不是Excel文件",
303
+ "processFailed": "Excel文件处理失败",
304
+ "validationSuccess": "数据验证成功",
305
+ "duplicateValidationPending": "待验证重复数据",
306
+ "validationFailed": "数据验证失败",
307
+ "validationPassed": "数据验证通过",
308
+ "duplicateDetected": "检测到重复数据",
309
+ "duplicateCheckPassed": "重复性检验通过"
310
+ },
311
+ "options": {
312
+ "notConfigured": "未配置选项数据!"
313
+ },
314
+ "excelPreview": {
315
+ "previewUrlNotConfigured": "预览URL或Excel控制器未配置",
316
+ "fileLoadFailed": "文件加载失败"
317
+ },
318
+ "tools": {
319
+ "noClickHandler": "未配置点击处理事件!",
320
+ "refreshTable": "刷新表格",
321
+ "expandSearch": "展开搜索栏",
322
+ "collapseSearch": "折叠搜索栏",
323
+ "rowHeight": "行高调整",
324
+ "showCheckbox": "显示多选框",
325
+ "hideCheckbox": "隐藏多选框",
326
+ "expandRows": "展开记录行",
327
+ "collapseRows": "折叠记录行",
328
+ "exportExcel": "导出Excel",
329
+ "exportAllRecords": "全部记录",
330
+ "exportSelectedRecords": "选中的记录",
331
+ "exportPDF": "导出PDF",
332
+ "tableHeaderSettings": "表头设置",
333
+ "setFullscreen": "设置全屏",
334
+ "exitFullscreen": "取消全屏"
335
+ },
336
+ "iconLoader": {
337
+ "networkError": "网络异常,无法加载图标库!"
338
+ },
339
+ "formCsv": {
340
+ "csvToExcelFailed": "CSV转Excel失败",
341
+ "csvProcessFailed": "CSV文件处理失败",
342
+ "unknownError": "未知错误"
343
+ }
322
344
  }
323
345
  }
324
346
  }