plain-design 1.0.0-beta.49 → 1.0.0-beta.50

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. package/dist/plain-design.commonjs.min.js +3 -3
  2. package/dist/plain-design.min.js +3 -3
  3. package/dist/report.html +2 -2
  4. package/package.json +1 -1
  5. package/src/packages/components/$file/index.tsx +1 -1
  6. package/src/packages/components/$message/image.service.utils.tsx +2 -2
  7. package/src/packages/components/$object/createObjectService.tsx +3 -3
  8. package/src/packages/components/$upload/createUploadService.tsx +1 -1
  9. package/src/packages/components/Application/theme/theme.ts +1 -1
  10. package/src/packages/components/AutoTable/filter/useTableOption.filter.form.tsx +3 -3
  11. package/src/packages/components/AutoTable/filter/useTableOption.filter.search.tsx +2 -2
  12. package/src/packages/components/AutoTable/setting/useTableOption.setting.all.fitler.tsx +4 -4
  13. package/src/packages/components/AutoTable/setting/useTableOption.setting.cache.tsx +16 -16
  14. package/src/packages/components/AutoTable/setting/useTableOption.setting.config.tsx +11 -11
  15. package/src/packages/components/AutoTable/setting/useTableOption.setting.export.tsx +20 -20
  16. package/src/packages/components/AutoTable/setting/useTableOption.setting.import.tsx +1 -1
  17. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.filter.tsx +10 -10
  18. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.sort.tsx +7 -7
  19. package/src/packages/components/AutoTable/setting/useTableOption.setting.tsx +2 -2
  20. package/src/packages/components/AutoTable/use/useTableOption.buttons.tsx +18 -18
  21. package/src/packages/components/AutoTable/use/useTableOption.cache.ts +1 -1
  22. package/src/packages/components/AutoTable/use/useTableOption.check.tsx +1 -1
  23. package/src/packages/components/AutoTable/use/useTableOption.column.popper.tsx +8 -8
  24. package/src/packages/components/AutoTable/use/useTableOption.confirm.tsx +3 -3
  25. package/src/packages/components/AutoTable/use/useTableOption.loading.tsx +1 -1
  26. package/src/packages/components/AutoTable/use/useTableOption.methods.tsx +17 -17
  27. package/src/packages/components/AutoTable/use/useTableOption.pagination.tsx +3 -3
  28. package/src/packages/components/AutoTable/use/useTableOption.sort.ts +5 -5
  29. package/src/packages/components/AutoTable/use/useTableOption.tips.tsx +1 -1
  30. package/src/packages/components/Cascade/createMultipleCascadeRender.tsx +1 -1
  31. package/src/packages/components/Cascade/createSingleCascadeRender.tsx +1 -1
  32. package/src/packages/components/CascadePanel/flat/createCascadeFlatRender.tsx +1 -1
  33. package/src/packages/components/Checkbox/index.tsx +1 -1
  34. package/src/packages/components/CheckboxGroup/index.tsx +2 -2
  35. package/src/packages/components/DatePicker/date.utils.tsx +2 -2
  36. package/src/packages/components/DatePicker/panel/DatePanelDate.tsx +7 -7
  37. package/src/packages/components/DatePicker/panel/DatePanelMonth.tsx +12 -12
  38. package/src/packages/components/Dialog/index.tsx +3 -3
  39. package/src/packages/components/Empty/index.tsx +1 -1
  40. package/src/packages/components/FilterFormMultiple/index.tsx +2 -2
  41. package/src/packages/components/FilterFormSingle/index.tsx +2 -2
  42. package/src/packages/components/FilterService/filter/filter.city.tsx +4 -4
  43. package/src/packages/components/FilterService/filter/filter.date.tsx +4 -4
  44. package/src/packages/components/FilterService/filter/filter.datetime.tsx +2 -2
  45. package/src/packages/components/FilterService/filter/filter.district.tsx +4 -4
  46. package/src/packages/components/FilterService/filter/filter.number.tsx +1 -1
  47. package/src/packages/components/FilterService/filter/filter.province.tsx +4 -4
  48. package/src/packages/components/FilterService/filter/filter.select.tsx +3 -3
  49. package/src/packages/components/FilterService/filter/filter.text.tsx +4 -4
  50. package/src/packages/components/FilterService/filter/fitler.object.tsx +4 -4
  51. package/src/packages/components/FilterService/index.tsx +7 -7
  52. package/src/packages/components/Form/types/any.tsx +6 -6
  53. package/src/packages/components/Form/types/array.tsx +7 -7
  54. package/src/packages/components/Form/types/date.tsx +6 -6
  55. package/src/packages/components/Form/types/email.tsx +1 -1
  56. package/src/packages/components/Form/types/idcard.tsx +1 -1
  57. package/src/packages/components/Form/types/number.tsx +7 -7
  58. package/src/packages/components/Form/types/phone.tsx +1 -1
  59. package/src/packages/components/Form/types/qq.tsx +1 -1
  60. package/src/packages/components/Form/types/string.tsx +7 -7
  61. package/src/packages/components/Formatter/index.tsx +1 -1
  62. package/src/packages/components/Image/index.tsx +3 -3
  63. package/src/packages/components/ImageUploader/index.tsx +2 -2
  64. package/src/packages/components/Object/createObjectRender.multiple.tsx +1 -1
  65. package/src/packages/components/Object/createObjectRender.single.tsx +1 -1
  66. package/src/packages/components/PageThemeUtils/deepmerge.ts +21 -0
  67. package/src/packages/components/PageThemeUtils/index.tsx +108 -53
  68. package/src/packages/components/Pagination/index.tsx +4 -4
  69. package/src/packages/components/Select/SelectPanel.tsx +1 -1
  70. package/src/packages/components/Select/createMultipleSelectRender.tsx +4 -4
  71. package/src/packages/components/Table/editor/PlcAddress.tsx +4 -4
  72. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.multiple.tsx +4 -4
  73. package/src/packages/components/Table/standard/PlcExpand.tsx +2 -2
  74. package/src/packages/components/Table/standard/PlcIndex.tsx +1 -1
  75. package/src/packages/components/Table/standard/PlcOperation/OuterOperation.tsx +1 -1
  76. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +4 -4
  77. package/src/packages/components/Table/standard/PlcTree/PlcTree.renderNode.tsx +4 -4
  78. package/src/packages/components/Table/table/use/useTableFormEditor.tsx +2 -2
  79. package/src/packages/components/Table/table/use/useTableModifyEditor.tsx +6 -6
  80. package/src/packages/components/ThemeEditor/index.tsx +32 -27
  81. package/src/packages/components/Tree/RenderTreeNode.tsx +1 -1
  82. package/src/packages/components/Upload/index.tsx +12 -12
  83. package/src/packages/components/VirtualTable/index.tsx +1 -1
  84. package/src/packages/components/useDialog/DialogService.tsx +2 -2
  85. package/src/packages/components/useImage/ImageService.tsx +8 -8
  86. package/src/packages/components/useNotice/index.tsx +1 -1
  87. package/src/packages/i18n/i18n.utils.ts +172 -120
  88. package/src/packages/i18n/index.ts +4 -3
  89. package/src/packages/i18n/lang/en-us.ts +4 -3
  90. package/src/packages/i18n/lang/zh-cn.ts +1 -0
@@ -22,7 +22,7 @@ export function checkStringValidation(
22
22
  );
23
23
 
24
24
  if (!isEmpty && typeof value != "string" && typeof value != "number") {
25
- return getMessage(i18n('base.validate.valueShouldBeStringOrNumber').d('值类型应该为字符串或者数字'));
25
+ return getMessage(i18n.$it('base.validate.valueShouldBeStringOrNumber').d('值类型应该为字符串或者数字'));
26
26
  }
27
27
 
28
28
  if (!isEmpty) {if (typeof value === "number") {value = String(value);}}
@@ -30,7 +30,7 @@ export function checkStringValidation(
30
30
  /*any值的必填校验*/
31
31
  if (required) {
32
32
  if (isEmpty) {
33
- return getMessage(i18n('base.validate.require').d('必填'));
33
+ return getMessage(i18n.$it('base.validate.require').d('必填'));
34
34
  }
35
35
  }
36
36
 
@@ -41,28 +41,28 @@ export function checkStringValidation(
41
41
  if (!isEmpty && !!patterns.length) {
42
42
  const failPattern = patterns.find((i) => !i!.test(String(value)));
43
43
  if (!!failPattern) {
44
- return getMessage(config?.patternMessage || `${i18n('base.validate.notMatchPattern').d('不符合表达式')}:${failPattern.source}`);
44
+ return getMessage(config?.patternMessage || `${i18n.$it('base.validate.notMatchPattern').d('不符合表达式')}:${failPattern.source}`);
45
45
  }
46
46
  }
47
47
 
48
48
  /*最小值*/
49
49
  if (rule.min != null && !isEmpty && value.length < rule.min) {
50
- return getMessage(i18n('base.validate.minimunCharacters', { num: rule.min }).d(`最少${rule.min}个字符`));
50
+ return getMessage(i18n.$it('base.validate.minimunCharacters', { num: rule.min }).d(`最少${rule.min}个字符`));
51
51
  }
52
52
  /*最大值*/
53
53
  if (rule.max != null && !isEmpty && value.length > rule.max) {
54
- return getMessage(i18n('base.validate.maximunCharacters', { num: rule.max }).d(`最多${rule.max}个字符`));
54
+ return getMessage(i18n.$it('base.validate.maximunCharacters', { num: rule.max }).d(`最多${rule.max}个字符`));
55
55
  }
56
56
  /*固定长度*/
57
57
  if (rule.len != null && !isEmpty && value.length !== rule.len) {
58
- return getMessage(i18n('base.validate.fixedCharacters', { num: rule.len }).d(`固定${rule.len}个字符`));
58
+ return getMessage(i18n.$it('base.validate.fixedCharacters', { num: rule.len }).d(`固定${rule.len}个字符`));
59
59
  }
60
60
 
61
61
  /*枚举范围(取值范围)*/
62
62
  const _enum = rule.enum;
63
63
  if (_enum && !isEmpty) {
64
64
  if (toArray(value).some(i => _enum.indexOf(i) === -1)) {
65
- return getMessage(i18n('base.validate.outOfRange', { value, range: _enum }).d(`值${value}超出了范围${_enum}`));
65
+ return getMessage(i18n.$it('base.validate.outOfRange', { value, range: _enum }).d(`值${value}超出了范围${_enum}`));
66
66
  }
67
67
  }
68
68
  }
@@ -48,7 +48,7 @@ export const Formatter: Record<string, undefined | ((...args: any[]) => string |
48
48
  cny: (value: string | number | null | undefined) => {
49
49
  if (value == null || value === 0) {return `¥0`;}
50
50
  value = Number(value);
51
- if (isNaN(value)) {return i18n('base.invalidAmount').d('无效金额');}
51
+ if (isNaN(value)) {return i18n.$it('base.invalidAmount').d('无效金额');}
52
52
  return `¥ ${Formatter.money!(value)}`;
53
53
  },
54
54
  /**
@@ -125,9 +125,9 @@ export const Image = designComponent({
125
125
  });
126
126
 
127
127
  const tip = {
128
- [eImageStatus.empty]: i18n('image.noPicture').d('无图片'),
129
- [eImageStatus.pending]: i18n('base.loading').d('加载中'),
130
- [eImageStatus.error]: i18n('base.loadFailed').d('加载失败'),
128
+ [eImageStatus.empty]: i18n.$it('image.noPicture').d('无图片'),
129
+ [eImageStatus.pending]: i18n.$it('base.loading').d('加载中'),
130
+ [eImageStatus.error]: i18n.$it('base.loadFailed').d('加载失败'),
131
131
  };
132
132
 
133
133
  const handler = {
@@ -201,11 +201,11 @@ export const ImageUploader = designComponent({
201
201
  )}
202
202
  {state.status === eImageUploaderStatus.empty && <div className="image-uploader-empty" onClick={handler.onClick}>
203
203
  <Icon icon="pi-image"/>
204
- <span>{i18n('file.toBeUpload').d('待上传')}</span>
204
+ <span>{i18n.$it('file.toBeUpload').d('待上传')}</span>
205
205
  </div>}
206
206
  {state.status === eImageUploaderStatus.fail && <div className="image-uploader-fail" onClick={handler.onClick}>
207
207
  <Icon icon="pi-image-close"/>
208
- <span>{i18n('file.uploadFailed').d('上传失败')}</span>
208
+ <span>{i18n.$it('file.uploadFailed').d('上传失败')}</span>
209
209
  </div>}
210
210
  <div className="image-uploader-button-group">
211
211
  <div className="image-uploader-button" onClick={handler.onClick}>
@@ -241,7 +241,7 @@ export function createObjectRenderMultiple(
241
241
  /*禁用select的输入筛选,让select不处理搜索关键词避免隐藏部分option选项*/
242
242
  disableFilter: true,
243
243
  /*没有关键词的时候,提示输入关键词,已经有关键词并且没有选项的情况下提示placeholder*/
244
- noDataLabel: !inputHandler.state.multipleText && state.option == null ? (props.searchPlaceholder || i18n('table.pleaseEnterSearchKey').d('请输入搜索关键词')) : undefined
244
+ noDataLabel: !inputHandler.state.multipleText && state.option == null ? (props.searchPlaceholder || i18n.$it('table.pleaseEnterSearchKey').d('请输入搜索关键词')) : undefined
245
245
  }));
246
246
  return { state, popperAttrs, onSelectChange, selectAttrs, reset };
247
247
 
@@ -163,7 +163,7 @@ export function createObjectRenderSingle(
163
163
  /*禁用select的输入筛选,让select不处理搜索关键词避免隐藏部分option选项*/
164
164
  disableFilter: true,
165
165
  /*没有关键词的时候,提示输入关键词,已经有关键词并且没有选项的情况下提示placeholder*/
166
- noDataLabel: !inputHandler.state.inputValue && state.option == null ? (props.searchPlaceholder || i18n('table.pleaseEnterSearchKey').d('请输入搜索关键词')) : undefined
166
+ noDataLabel: !inputHandler.state.inputValue && state.option == null ? (props.searchPlaceholder || i18n.$it('table.pleaseEnterSearchKey').d('请输入搜索关键词')) : undefined
167
167
  }));
168
168
  return { state, popperAttrs, onSelectChange, selectAttrs };
169
169
  })();
@@ -0,0 +1,21 @@
1
+ export function deepmerge(...list: any[]): any {
2
+ list = list.filter(i => i != null);
3
+ if (!list.length || list.length == 1) {
4
+ return list[0];
5
+ }
6
+ let result: any = {};
7
+ list.forEach((item) => {
8
+ for (let key in item) {
9
+ if (typeof item[key] !== "object") {
10
+ result[key] = item[key];
11
+ } else {
12
+ if (result[key] == undefined) {
13
+ result[key] = item[key];
14
+ } else {
15
+ result[key] = deepmerge(result[key], item[key]);
16
+ }
17
+ }
18
+ }
19
+ });
20
+ return result;
21
+ }
@@ -3,6 +3,9 @@ import {createCache} from "../../utils/createCache";
3
3
  import {InputMode, ThemeMode, ThemeShape, ThemeSize} from "../../uses/useStyle";
4
4
  import {DeepPartial} from "../../utils/type";
5
5
  import {iApplicationConfiguration} from "../Application/utils/application.utils";
6
+ import {iThemeConfiguration} from "../Application/theme/theme";
7
+ import {deepmerge} from "./deepmerge";
8
+ import {PlainObject} from "plain-utils/utils/event";
6
9
 
7
10
  export const PageThemeUtils = (() => {
8
11
 
@@ -34,41 +37,19 @@ export const PageThemeUtils = (() => {
34
37
 
35
38
  config.theme.dark = !!dark;
36
39
 
37
- if (!!primaryKey) {
38
- if (dark && primaryKey === 'dark') {
39
- primaryKey = 'white';
40
- } else if (!dark && primaryKey === 'light') {
41
- primaryKey = 'dark';
40
+ const themeConfig = !primaryKey ? undefined : ((): DeepPartial<Omit<iThemeConfiguration, 'dark'>> | undefined => {
41
+ let themeConfig = ThemePrimaryColors[primaryKey]?.themeConfig;
42
+ if (themeConfig == undefined) {return undefined;}
43
+ if (typeof themeConfig === "string") {
44
+ return {
45
+ base: { primary: themeConfig }
46
+ };
47
+ } else {
48
+ return themeConfig[dark ? 'dark' : 'light'];
42
49
  }
43
- }
44
-
45
- config.theme.base.primary = !primaryKey ? undefined : ThemePrimaryColors[primaryKey]?.primary;
46
-
47
- if (primaryKey === 'dark') {
48
- Object.assign(config.theme.vars!, {
49
- 'primary-light-1': '#f2f3f5',
50
- 'primary-1': '#f2f3f5',
51
- 'primary-light-2': '#e1e2e7',
52
- 'primary-2': '#e1e2e7',
53
- 'primary-light-3': '#c9cdd4',
54
- 'primary-3': '#c9cdd4',
55
- 'primary-light-4': '#a9aeb8',
56
- 'primary-4': '#a9aeb8',
57
- 'primary-light-5': '#86909c',
58
- 'primary-5': '#86909c',
59
- 'primary-light-6': '#0c0e10',
60
- 'primary-6': '#0b0b0b',
61
- 'primary-light-7': '#464f5e',
62
- 'primary-7': '#464f5e',
63
- 'primary-light-8': '#272e3b',
64
- 'primary-8': '#272e3b',
65
- 'primary-light-9': '#1d2129',
66
- 'primary-9': '#111318',
67
- 'primary-light-10': '#0c0e10',
68
- 'primary-10': '#0b0b0b',
69
- });
70
- }
50
+ })();
71
51
 
52
+ config.theme = deepmerge(config.theme, themeConfig) as PlainObject;
72
53
 
73
54
  if (!config.default) {
74
55
  config.default = {};
@@ -78,11 +59,11 @@ export const PageThemeUtils = (() => {
78
59
  }
79
60
  if (!!shape) {
80
61
  config.default.shape = shape;
81
- if (!config.theme.vars) {
82
- config.theme.vars = {};
62
+ if (!config.theme!.vars) {
63
+ config.theme!.vars = {};
83
64
  }
84
65
  if (shape === 'square') {
85
- Object.assign(config.theme.vars, {
66
+ Object.assign(config.theme!.vars, {
86
67
  'box-size-mini-border-radius': '2px',
87
68
  'box-size-small-border-radius': '2px',
88
69
  'box-size-normal-border-radius': '4px',
@@ -90,7 +71,7 @@ export const PageThemeUtils = (() => {
90
71
  });
91
72
  }
92
73
  if (shape === 'none') {
93
- Object.assign(config.theme.vars, {
74
+ Object.assign(config.theme!.vars, {
94
75
  'box-size-mini-border-radius': '0',
95
76
  'box-size-small-border-radius': '0',
96
77
  'box-size-normal-border-radius': '0',
@@ -161,22 +142,96 @@ export const PageThemeUtils = (() => {
161
142
  };
162
143
  })();
163
144
 
164
- export const ThemePrimaryColors: Record<string, { label: string, primary: string | undefined } | undefined> = {
165
- default: { label: '默认主题', primary: undefined, },
166
- dustRed: { label: '薄暮', primary: '#f5222d', },
167
- volcano: { label: '火山', primary: '#fa541c', },
168
- subset: { label: '日暮', primary: '#fa8c16', },
169
- gold: { label: '金盏花', primary: '#faad14', },
170
- sunrise: { label: '日出', primary: '#fadb14', },
171
- lime: { label: '青柠', primary: '#a0d911', },
172
- polar: { label: '极光绿', primary: '#52c41a', },
173
- cyan: { label: '明青', primary: '#13c2c2', },
174
- daybreak: { label: '拂晓蓝', primary: '#1677ff', },
175
- geek: { label: '极客蓝', primary: '#2f54eb', },
176
- purple: { label: '酱紫', primary: '#722ed1', },
177
- magenta: { label: '洋红', primary: '#eb2f96', },
178
- light: { label: '极昼', primary: '#ffffff', },
179
- dark: { label: '黑夜', primary: '#000000', },
145
+ export const ThemePrimaryColors: Record<string, {
146
+ label: string,
147
+ themeConfig: {
148
+ dark: DeepPartial<Omit<iThemeConfiguration, 'dark'>>,
149
+ light: DeepPartial<Omit<iThemeConfiguration, 'dark'>>
150
+ } | undefined | string
151
+ } | undefined> = {
152
+ default: { label: '默认主题', themeConfig: undefined, },
153
+ dustRed: {
154
+ label: '薄暮', themeConfig: '#f5222d'
155
+ },
156
+ volcano: {
157
+ label: '火山', themeConfig: '#fa541c'
158
+ },
159
+ subset: {
160
+ label: '日暮', themeConfig: '#fa8c16'
161
+ },
162
+ gold: {
163
+ label: '金盏花', themeConfig: '#faad14'
164
+ },
165
+ sunrise: {
166
+ label: '日出', themeConfig: '#fadb14'
167
+ },
168
+ lime: {
169
+ label: '青柠', themeConfig: '#a0d911'
170
+ },
171
+ polar: {
172
+ label: '极光绿', themeConfig: '#42b883'
173
+ },
174
+ cyan: {
175
+ label: '明青', themeConfig: '#13c2c2'
176
+ },
177
+ daybreak: {
178
+ label: '拂晓蓝', themeConfig: '#1677ff'
179
+ },
180
+ geek: {
181
+ label: '极客蓝', themeConfig: '#2f54eb'
182
+ },
183
+ purple: {
184
+ label: '酱紫', themeConfig: {
185
+ dark: {
186
+ base: { primary: '#7643ff', }
187
+ },
188
+ light: {
189
+ base: { primary: '#6a00ff', }
190
+ },
191
+ }
192
+ },
193
+ magenta: {
194
+ label: '洋红', themeConfig: {
195
+ dark: {
196
+ base: { primary: '#eb2f96', }
197
+ },
198
+ light: {
199
+ base: { primary: '#d90178', }
200
+ },
201
+ }
202
+ },
203
+ dark: {
204
+ label: '极夜', themeConfig: {
205
+ dark: {
206
+ base: { primary: '#FFFFFF', },
207
+ },
208
+ light: {
209
+ base: { primary: '#000000', },
210
+ vars: {
211
+ 'primary-light-1': '#f2f3f5',
212
+ 'primary-1': '#f2f3f5',
213
+ 'primary-light-2': '#e1e2e7',
214
+ 'primary-2': '#e1e2e7',
215
+ 'primary-light-3': '#c9cdd4',
216
+ 'primary-3': '#c9cdd4',
217
+ 'primary-light-4': '#a9aeb8',
218
+ 'primary-4': '#a9aeb8',
219
+ 'primary-light-5': '#86909c',
220
+ 'primary-5': '#86909c',
221
+ 'primary-light-6': '#0c0e10',
222
+ 'primary-6': '#0b0b0b',
223
+ 'primary-light-7': '#464f5e',
224
+ 'primary-7': '#464f5e',
225
+ 'primary-light-8': '#272e3b',
226
+ 'primary-8': '#272e3b',
227
+ 'primary-light-9': '#1d2129',
228
+ 'primary-9': '#111318',
229
+ 'primary-light-10': '#0c0e10',
230
+ 'primary-10': '#0b0b0b',
231
+ }
232
+ },
233
+ }
234
+ },
180
235
  };
181
236
 
182
237
  export default PageThemeUtils;
@@ -252,7 +252,7 @@ export const Pagination = designComponent({
252
252
  onChange={emit.onSizeChange as any}
253
253
  >
254
254
  {(props.pageSizes || []).map((item) => (
255
- <SelectOption label={i18n('table.rowPerPage', { num: item }).d(`${item} 条/页`)} val={item} key={item}/>
255
+ <SelectOption label={i18n.$it('table.rowPerPage', { num: item }).d(`${item} 条/页`)} val={item} key={item}/>
256
256
  ))}
257
257
  </Select>
258
258
  );
@@ -270,8 +270,8 @@ export const Pagination = designComponent({
270
270
  onEnter={handler.onJumperChange}
271
271
  >
272
272
  {{
273
- prefix: () => <span style={{ whiteSpace: 'nowrap' }}>{i18n('base.go').d('前往')}</span>,
274
- suffix: () => <span>{i18n('base.page').d('页')}</span>,
273
+ prefix: () => <span style={{ whiteSpace: 'nowrap' }}>{i18n.$it('base.go').d('前往')}</span>,
274
+ suffix: () => <span>{i18n.$it('base.page').d('页')}</span>,
275
275
  }}
276
276
  </InputNumber>
277
277
  </div>
@@ -303,7 +303,7 @@ export const Pagination = designComponent({
303
303
  );
304
304
 
305
305
  const blank = (<div className="pagination-blank" key="blank"/>);
306
- const total = props.total == null ? null : (<div className="pagination-total" key="total"><span>{i18n('base.totalPage', { total: props.total }).d(`总共${props.total}条数据`)}</span></div>);
306
+ const total = props.total == null ? null : (<div className="pagination-total" key="total"><span>{i18n.$it('base.totalPage', { total: props.total }).d(`总共${props.total}条数据`)}</span></div>);
307
307
  const slot = !slots.default.isExist() ? null : (<div className="pagination-slot" key="slot">{slots.default()}</div>);
308
308
  const loading = !editComputed.value.loading ? null : (
309
309
  <div className="pagination-loading" key="loading">
@@ -46,7 +46,7 @@ export const SelectPanel = designComponent({
46
46
  content = slots.loadingContent(
47
47
  <div className="select-panel-loading">
48
48
  <Loading type="delta"/>
49
- <span>{i18n('base.loading').d('加载中')}</span>
49
+ <span>{i18n.$it('base.loading').d('加载中')}</span>
50
50
  </div>
51
51
  );
52
52
  } else if (props.dataLength === 0) {
@@ -83,11 +83,11 @@ export function createMultipleSelectRender(params: iSelectCompositionParams) {
83
83
  <>
84
84
  {editComputed.value.editable && (
85
85
  <div className="select-panel-header">
86
- {/*<Button onClick={handler.handleCheckAll} size="mini">{i18n('base.select.all').d('全选')}</Button>
87
- <Button onClick={handler.handleUncheckALl} size="mini">{i18n('base.clear').d('清空')}</Button>
88
- <Button onClick={handler.handleCheckReverse} size="mini">{i18n('base.select.reverse').d('反选')}</Button>*/}
86
+ {/*<Button onClick={handler.handleCheckAll} size="mini">{i18n.$it('base.select.all').d('全选')}</Button>
87
+ <Button onClick={handler.handleUncheckALl} size="mini">{i18n.$it('base.clear').d('清空')}</Button>
88
+ <Button onClick={handler.handleCheckReverse} size="mini">{i18n.$it('base.select.reverse').d('反选')}</Button>*/}
89
89
  <Checkbox checkStatus={checkStatus} customReadonly label={
90
- checkStatus !== CheckboxStatus.check ? i18n('base.select.all').d('全选') : i18n('base.clear').d('清空')
90
+ checkStatus !== CheckboxStatus.check ? i18n.$it('base.select.all').d('全选') : i18n.$it('base.clear').d('清空')
91
91
  } onClick={() => {
92
92
  checkStatus !== CheckboxStatus.check ? handler.handleCheckAll() : handler.handleUncheckALl();
93
93
  }}/>
@@ -11,11 +11,11 @@ export const PlcAddress = designComponent({
11
11
  types: { type: String, default: 'pcd' },
12
12
  service: { type: Object as PropType<iAddressService> },
13
13
 
14
- provinceTitle: { type: String, default: () => i18n('base.province').d('省') },
14
+ provinceTitle: { type: String, default: () => i18n.$it('base.province').d('省') },
15
15
  provinceField: { type: String, default: 'province' },
16
- cityTitle: { type: String, default: () => i18n('base.city').d('市') },
16
+ cityTitle: { type: String, default: () => i18n.$it('base.city').d('市') },
17
17
  cityField: { type: String, default: 'city' },
18
- districtTitle: { type: String, default: () => i18n('base.district').d('区县') },
18
+ districtTitle: { type: String, default: () => i18n.$it('base.district').d('区县') },
19
19
  districtField: { type: String, default: 'district' },
20
20
  },
21
21
  setup({ props }) {
@@ -37,7 +37,7 @@ export const PlcAddress = designComponent({
37
37
  field={props.provinceField}
38
38
  province
39
39
  editColSpan={props.types.length}
40
- formLabel={i18n('base.address').d("地址")}
40
+ formLabel={i18n.$it('base.address').d("地址")}
41
41
  filterType="province"
42
42
  filterHandler="like"
43
43
  v-slots={{
@@ -249,11 +249,11 @@ export function usePlcCheckMultiple(
249
249
  </Badge>
250
250
  ),
251
251
  popper: () => <>
252
- <DropdownOption label={i18n('base.select.all').d('全选')} icon="pi-select-all" onClick={methods.checkAll}/>
253
- <DropdownOption label={i18n('base.clear').d('清空')} icon="pi-menu" onClick={methods.uncheckAll}/>
252
+ <DropdownOption label={i18n.$it('base.select.all').d('全选')} icon="pi-select-all" onClick={methods.checkAll}/>
253
+ <DropdownOption label={i18n.$it('base.clear').d('清空')} icon="pi-menu" onClick={methods.uncheckAll}/>
254
254
  {!!model.value?.length && <>
255
- <DropdownOption label={i18n('base.select.reverse').d('反选')} icon="pi-unordered-list" onClick={methods.reverse}/>
256
- {!props.hideShowAllButton && <DropdownOption label={i18n('base.lookUp').d('查看')} icon="pi-ordered-list" onClick={methods.showAll}/>}
255
+ <DropdownOption label={i18n.$it('base.select.reverse').d('反选')} icon="pi-unordered-list" onClick={methods.reverse}/>
256
+ {!props.hideShowAllButton && <DropdownOption label={i18n.$it('base.lookUp').d('查看')} icon="pi-ordered-list" onClick={methods.showAll}/>}
257
257
  </>}
258
258
  </>
259
259
  }}
@@ -169,8 +169,8 @@ export const PlcExpand = designComponent({
169
169
  </div>
170
170
  ),
171
171
  popper: () => <>
172
- <DropdownOption label={i18n('base.edit.expandAll').d('全部展开')} icon="pi-expand" onClick={methods.expandAll}/>
173
- <DropdownOption label={i18n('base.edit.collapseAll').d('全部收起')} icon="pi-shrink" onClick={methods.collapseAll}/>
172
+ <DropdownOption label={i18n.$it('base.edit.expandAll').d('全部展开')} icon="pi-expand" onClick={methods.expandAll}/>
173
+ <DropdownOption label={i18n.$it('base.edit.collapseAll').d('全部收起')} icon="pi-shrink" onClick={methods.collapseAll}/>
174
174
  </>
175
175
  }}
176
176
  </Dropdown>
@@ -17,7 +17,7 @@ export const PlcIndex = designComponent({
17
17
  noFilter: true,
18
18
  noSort: true,
19
19
  }),
20
- summaryText: { type: String, default: () => i18n('base.edit.summary').d('合计') },
20
+ summaryText: { type: String, default: () => i18n.$it('base.edit.summary').d('合计') },
21
21
  start: { type: Number, default: 0 },
22
22
  },
23
23
  scopeSlots: PlcScopeSlotsOptions,
@@ -166,7 +166,7 @@ export const OuterOperation = designComponent({
166
166
  v-slots={{
167
167
  default: () => (
168
168
  <ButtonGroup>
169
- <Button label={i18n('base.more').d('更多')}/>
169
+ <Button label={i18n.$it('base.more').d('更多')}/>
170
170
  <Button icon="pi-down"/>
171
171
  </ButtonGroup>
172
172
  ),
@@ -25,7 +25,7 @@ export const PlcOperation = designComponent({
25
25
  width: null as any,
26
26
  align: 'left',
27
27
  hideInForm: true,
28
- title: (() => i18n('base.operation').d('操作')) as any,
28
+ title: (() => i18n.$it('base.operation').d('操作')) as any,
29
29
  noFilter: true,
30
30
  noSort: true,
31
31
  }),
@@ -305,13 +305,13 @@ export const PlcOperation = designComponent({
305
305
  <Button
306
306
  mode="text"
307
307
  key="save"
308
- label={i18n('base.edit.save').d('保存')}
308
+ label={i18n.$it('base.edit.save').d('保存')}
309
309
  onClick={() => event.emit.onClickNodeSaveOperation(node)}
310
310
  />
311
311
  <Button
312
312
  mode="text"
313
313
  key="cancel"
314
- label={i18n('base.cancel').d('取消')}
314
+ label={i18n.$it('base.cancel').d('取消')}
315
315
  onClick={() => event.emit.onClickNodeCancelOperation(node)}
316
316
  />
317
317
  </>;
@@ -349,7 +349,7 @@ export const PlcOperation = designComponent({
349
349
  mode="text"
350
350
  key="more"
351
351
  >
352
- <span>{i18n('base.more').d('更多')}</span>
352
+ <span>{i18n.$it('base.more').d('更多')}</span>
353
353
  <Icon icon="pi-down"/>
354
354
  </Button>
355
355
  ),
@@ -40,11 +40,11 @@ export function usePlcTreeRenderNode(
40
40
  const renderTreeHead = () => (
41
41
  <>
42
42
  <PlcTreeHeader table={table} buttonStyles={buttonStyles.value} getPlcRefer={getPlcRefer}>
43
- <DropdownOption label={i18n('base.edit.expandAll').d('全部展开')} icon="pi-expand" onClick={treeCore.methods.expandAll}/>
44
- <DropdownOption label={i18n('base.edit.collapseAll').d('全部收起')} icon="pi-shrink" onClick={treeCore.methods.collapseAll}/>
43
+ <DropdownOption label={i18n.$it('base.edit.expandAll').d('全部展开')} icon="pi-expand" onClick={treeCore.methods.expandAll}/>
44
+ <DropdownOption label={i18n.$it('base.edit.collapseAll').d('全部收起')} icon="pi-shrink" onClick={treeCore.methods.collapseAll}/>
45
45
  {props.multiple && <>
46
- <DropdownOption label={i18n('table.checkAll').d('全部选中')} icon="pi-select-all" onClick={treeCore.methods.checkAll}/>
47
- <DropdownOption label={i18n('table.clearAll').d('清空选中')} icon="pi-unordered-list" onClick={treeCore.methods.unCheckAll}/>
46
+ <DropdownOption label={i18n.$it('table.checkAll').d('全部选中')} icon="pi-select-all" onClick={treeCore.methods.checkAll}/>
47
+ <DropdownOption label={i18n.$it('table.clearAll').d('清空选中')} icon="pi-unordered-list" onClick={treeCore.methods.unCheckAll}/>
48
48
  </>}
49
49
  </PlcTreeHeader>
50
50
  {props.title}
@@ -104,10 +104,10 @@ export function useTableFormEditor(
104
104
  return (
105
105
  <Dialog
106
106
  v-model={state.show}
107
- title={title || i18n('base.edit.edit').d('编辑')}
107
+ title={title || i18n.$it('base.edit.edit').d('编辑')}
108
108
  confirmButton
109
109
  cancelButton
110
- confirmButtonText={i18n('base.edit.save').d('保存')}
110
+ confirmButtonText={i18n.$it('base.edit.save').d('保存')}
111
111
  handleConfirm={handler.handleConfirm}
112
112
  handleCancel={handler.handleCancel}
113
113
  position="right"
@@ -74,7 +74,7 @@ export function useTableModifyEditor(
74
74
  const handler = {
75
75
  handleConfirm: async () => {
76
76
  if (!state.node) {
77
- $message.warn(i18n('table.pleaseClickNext').d('请点击下一步'));
77
+ $message.warn(i18n.$it('table.pleaseClickNext').d('请点击下一步'));
78
78
  return Promise.reject('next step');
79
79
  }
80
80
  await refs.form?.validate();
@@ -92,10 +92,10 @@ export function useTableModifyEditor(
92
92
  <>
93
93
  <Table data={availablePlcList.value}>
94
94
  <PlcCheck field="index" v-model={state.modifyPlcIndexList} toggleOnClickRow/>
95
- <Plc title={i18n('table.columnTitle').d('列标题')} field="title"/>
95
+ <Plc title={i18n.$it('table.columnTitle').d('列标题')} field="title"/>
96
96
  </Table>
97
97
  <div className="table-modify-dialog-operations">
98
- <Button label={i18n('base.nextStep').d('下一步')} onClick={utils.renderModifyForm}/>
98
+ <Button label={i18n.$it('base.nextStep').d('下一步')} onClick={utils.renderModifyForm}/>
99
99
  </div>
100
100
  </>
101
101
  );
@@ -133,8 +133,8 @@ export function useTableModifyEditor(
133
133
  })}
134
134
  </Form>
135
135
  <div className="table-modify-dialog-operations">
136
- <Button label={i18n('base.prevStep').d('上一步')} onClick={utils.renderSelectPlcList}/>
137
- <Button label={i18n('base.edit.done').d('完成')} mode="fill" onClick={handler.handleConfirm}/>
136
+ <Button label={i18n.$it('base.prevStep').d('上一步')} onClick={utils.renderSelectPlcList}/>
137
+ <Button label={i18n.$it('base.edit.done').d('完成')} mode="fill" onClick={handler.handleConfirm}/>
138
138
  </div>
139
139
  </>
140
140
  );
@@ -150,7 +150,7 @@ export function useTableModifyEditor(
150
150
  render: () => {
151
151
  const option = state.optionGetter?.();
152
152
  if (!option) {return null;}
153
- const title = option.title || i18n('table.batchModify').d('批量修改');
153
+ const title = option.title || i18n.$it('table.batchModify').d('批量修改');
154
154
  const plcList = option.plcList || getFlatPlcList();
155
155
  if (!plcList) {return null;}
156
156
  return (