@juzhenfe/page-model 3.12.1 → 3.12.2

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.
@@ -23,39 +23,43 @@
23
23
  /// <reference path="./form-item-types/jz-cascader.d.ts" />
24
24
 
25
25
  import { ButtonProps } from 'element-plus'
26
- import { StyleValue } from 'vue';
26
+ import { StyleValue } from 'vue'
27
27
 
28
28
  declare global {
29
-
30
29
  type AnyObject = {
31
- [key: string]: any;
30
+ [key: string]: any
32
31
  }
33
32
 
34
- type ExtendKeys<T> = T & AnyObject;
33
+ type ExtendKeys<T> = T & AnyObject
35
34
 
36
- type AnyFunction = (...args: any[]) => any;
35
+ type AnyFunction = (...args: any[]) => any
37
36
 
38
37
  type CreateDeType<T, CTX = any> = T | ((this: CTX, ...rest: any[]) => T)
39
38
 
40
- type CreateDePromiseResult<FN extends (...rest: any[]) => any> = FN | ((this: ThisParameterType<FN>, ...rest: Parameters<FN>) => Promise<ReturnType<FN>>)
39
+ type CreateDePromiseResult<FN extends (...rest: any[]) => any> =
40
+ | FN
41
+ | ((
42
+ this: ThisParameterType<FN>,
43
+ ...rest: Parameters<FN>
44
+ ) => Promise<ReturnType<FN>>)
41
45
 
42
46
  type FieldType = 'string' | 'number' | 'date'
43
47
 
44
48
  type InnerFilterItem = {
45
- key: string;
46
- compareFn: (cellValue: string) => boolean;
49
+ key: string
50
+ compareFn: (cellValue: string) => boolean
47
51
  }
48
52
 
49
53
  namespace PageModel {
50
54
  type _ButtonProps = Omit<ButtonProps, 'icon'> & {
51
- icon: any;
52
- title: string;
55
+ icon: any
56
+ title: string
53
57
  }
54
58
 
55
- type LinkedFormItem<MODEL = any, CTX = any> =
56
- ElInput<MODEL, CTX>
57
- | ElInputNumber<MODEL, CTX>
58
- | ElCascader<MODEL, CTX>
59
+ type LinkedFormItem<MODEL = any, CTX = any> =
60
+ | ElInput<MODEL, CTX>
61
+ | ElInputNumber<MODEL, CTX>
62
+ | ElCascader<MODEL, CTX>
59
63
  | ElCheckboxGroup<MODEL, CTX>
60
64
  | ElSelect<MODEL, CTX>
61
65
  | ElColorPicker<MODEL, CTX>
@@ -77,34 +81,41 @@ declare global {
77
81
  | NoEType<MODEL, CTX>
78
82
 
79
83
  type _Badge = {
80
- count?: number;
81
- maxCount?: number;
84
+ count?: number
85
+ maxCount?: number
82
86
  }
83
87
 
84
88
  type _Button<MODEL = AnyObject, CTX = any> = {
85
89
  /**
86
90
  * 按钮的名称
87
91
  */
88
- text?: string;
92
+ text?: string
89
93
  /**
90
94
  * 自定义事件
91
95
  */
92
- event?: string;
96
+ event?: string
93
97
  /**
94
98
  * 按钮权限值(作为权限判断的依据)
95
99
  */
96
- authValue?: string;
97
- isAdd?: boolean;
98
- isEdit?: boolean;
99
- isDel?: boolean;
100
- isCopy?: boolean;
101
- isImport?: boolean;
102
- isShow?: boolean | ((this: CTX, self: _Button, data: MODEL, index: number) => boolean);
103
- isDisabled?: (this: CTX, self: _Button, data: MODEL, index: number) => boolean;
104
- copyText?: CreateDeType<string>;
105
- props?: Partial<_ButtonProps>;
106
- customProps?: AnyObject;
107
- renderFn?: (this: CTX) => JSX.Element;
100
+ authValue?: string
101
+ isAdd?: boolean
102
+ isEdit?: boolean
103
+ isDel?: boolean
104
+ isCopy?: boolean
105
+ isImport?: boolean
106
+ isShow?:
107
+ | boolean
108
+ | ((this: CTX, self: _Button, data: MODEL, index: number) => boolean)
109
+ isDisabled?: (
110
+ this: CTX,
111
+ self: _Button,
112
+ data: MODEL,
113
+ index: number
114
+ ) => boolean
115
+ copyText?: CreateDeType<string>
116
+ props?: Partial<_ButtonProps>
117
+ customProps?: AnyObject
118
+ renderFn?: (this: CTX) => JSX.Element
108
119
  } & _Badge
109
120
 
110
121
  type Button<MODEL = AnyObject, CTX = any> = _Button<MODEL, CTX> & {
@@ -113,47 +124,54 @@ declare global {
113
124
 
114
125
  // 表格表单元素
115
126
  type BaseElItem<MODEL = AnyObject> = {
116
- label?: string;
117
- prop?: keyof MODEL extends string ? keyof MODEL : string;
118
- _key?: string;
127
+ label?: string
128
+ prop?: keyof MODEL extends string ? keyof MODEL : string
129
+ _key?: string
119
130
  }
120
131
 
121
132
  interface ElFormItemProps {
122
- required?: boolean;
123
- rules?: AnyObject;
124
- error?: string;
125
- inlineMessage?: boolean;
126
- showMessage?: boolean;
127
- size?: Size;
128
- labelWidth?: string;
133
+ required?: boolean
134
+ rules?: AnyObject
135
+ error?: string
136
+ inlineMessage?: boolean
137
+ showMessage?: boolean
138
+ size?: Size
139
+ labelWidth?: string
129
140
  class?: string
130
141
  }
131
142
 
132
143
  // 表单的元素
133
- interface FormElBaseItem<MODEL = AnyObject, CTX = any> extends BaseElItem<MODEL> {
144
+ interface FormElBaseItem<MODEL = AnyObject, CTX = any>
145
+ extends BaseElItem<MODEL> {
134
146
  /**
135
147
  * 当前组件的名称
136
148
  */
137
- name?: string;
138
- labelWidth?: string;
139
- prefix?: CreateDeType<string, CTX>; // 前置文字
140
- suffix?: CreateDeType<string, CTX>; // 后置文字
141
- helpText?: CreateDeType<string, CTX>; // 提示文字
142
- isShow?: boolean | ((this: CTX, self: FormElBaseItem<MODEL, CTX>, data: MODEL) => boolean);
143
- change?: (this: CTX, value: any, label: string) => void;
144
- isDisabled?: (this: CTX, data: MODEL) => boolean;
145
- renderFn?: (this: CTX, data: MODEL) => JSX.Element;
146
- formItemProps?: ElFormItemProps;
147
- moduleName?: string;
148
- sectionName?: string;
149
+ name?: string
150
+ labelWidth?: string
151
+ prefix?: CreateDeType<string, CTX> // 前置文字
152
+ suffix?: CreateDeType<string, CTX> // 后置文字
153
+ helpText?: CreateDeType<string, CTX> // 提示文字
154
+ isShow?:
155
+ | boolean
156
+ | ((
157
+ this: CTX,
158
+ self: FormElBaseItem<MODEL, CTX>,
159
+ data: MODEL
160
+ ) => boolean)
161
+ change?: (this: CTX, value: any, label: string) => void
162
+ isDisabled?: (this: CTX, data: MODEL) => boolean
163
+ renderFn?: (this: CTX, data: MODEL) => JSX.Element
164
+ formItemProps?: ElFormItemProps
165
+ moduleName?: string
166
+ sectionName?: string
149
167
  // 用户section配置
150
- userSectionName?: string;
168
+ userSectionName?: string
151
169
  // 用户module配置
152
- userModuleName?: string;
170
+ userModuleName?: string
153
171
  // 用户表格配置
154
- userConfigShow?: boolean;
172
+ userConfigShow?: boolean
155
173
  // 用户表头
156
- userLabel?: string;
174
+ userLabel?: string
157
175
  /**
158
176
  * 内部更新的propslist
159
177
  */
@@ -169,36 +187,52 @@ declare global {
169
187
 
170
188
  type Align = 'left' | 'center' | 'right'
171
189
 
172
- type DateFormat = 'YYYY-MM' | 'MM-DD' | 'YYYY-MM-DD' | 'YYYY-MM-DD HH:mm' | 'YYYY-MM-DD HH:mm:ss' | 'YYYY/MM' | 'MM/DD' | 'YYYY/MM/DD' | 'YYYY/MM/DD HH:mm' | 'YYYY/MM/DD HH:mm:ss'
190
+ type DateFormat =
191
+ | 'YYYY-MM'
192
+ | 'MM-DD'
193
+ | 'YYYY-MM-DD'
194
+ | 'YYYY-MM-DD HH:mm'
195
+ | 'YYYY-MM-DD HH:mm:ss'
196
+ | 'YYYY/MM'
197
+ | 'MM/DD'
198
+ | 'YYYY/MM/DD'
199
+ | 'YYYY/MM/DD HH:mm'
200
+ | 'YYYY/MM/DD HH:mm:ss'
173
201
 
174
202
  interface TableBaseItemProps {
175
- type?: TableColumnType;
176
- prop?: string;
177
- className?: string;
178
- labelClassName?: string;
179
- width?: number | string;
180
- minWidth?: number | string;
181
- renderHeader?: ({ column, $index }: { column: any; $index: number }) => any;
182
- sortable?: boolean | SortableType;
183
- sortMethod?: (a: any, b: any) => any;
184
- sortBy?: string | ((row: any, index: number) => any) | string[];
185
- resizable?: boolean;
186
- columnKey?: string;
187
- align?: Align;
188
- headerAlign?: Align;
189
- showTooltipWhenOverflow?: boolean;
190
- showOverflowTooltip?: boolean;
191
- fixed?: true | 'left' | 'right';
192
- formatter?: (row: any, column: any, cellValue: any, index: number) => any;
193
- selectable?: (row: any, index: number) => any;
194
- reserveSelection?: boolean;
195
- filterMethod?: (value: any, row: any, column: any) => any;
196
- filteredValue?: any[];
197
- filters?: any[];
198
- filterPlacement?: string;
199
- filterMultiple?: boolean;
200
- index?: number | ((index: number) => any);
201
- sortOrders?: SortOrders[];
203
+ type?: TableColumnType
204
+ prop?: string
205
+ className?: string
206
+ labelClassName?: string
207
+ width?: number | string
208
+ minWidth?: number | string
209
+ renderHeader?: ({
210
+ column,
211
+ $index,
212
+ }: {
213
+ column: any
214
+ $index: number
215
+ }) => any
216
+ sortable?: boolean | SortableType
217
+ sortMethod?: (a: any, b: any) => any
218
+ sortBy?: string | ((row: any, index: number) => any) | string[]
219
+ resizable?: boolean
220
+ columnKey?: string
221
+ align?: Align
222
+ headerAlign?: Align
223
+ showTooltipWhenOverflow?: boolean
224
+ showOverflowTooltip?: boolean
225
+ fixed?: true | 'left' | 'right'
226
+ formatter?: (row: any, column: any, cellValue: any, index: number) => any
227
+ selectable?: (row: any, index: number) => any
228
+ reserveSelection?: boolean
229
+ filterMethod?: (value: any, row: any, column: any) => any
230
+ filteredValue?: any[]
231
+ filters?: any[]
232
+ filterPlacement?: string
233
+ filterMultiple?: boolean
234
+ index?: number | ((index: number) => any)
235
+ sortOrders?: SortOrders[]
202
236
  }
203
237
 
204
238
  interface AscParams extends AnyObject {}
@@ -207,109 +241,133 @@ declare global {
207
241
 
208
242
  interface TableBaseItem<MODEL = any, CTX = any> extends BaseElItem<MODEL> {
209
243
  // 宽度属性
210
- width?: string | number;
211
- minWidth?: string | number;
244
+ width?: string | number
245
+ minWidth?: string | number
212
246
  // 定位属性
213
- fixed?: 'left' | 'right' | boolean;
247
+ fixed?: 'left' | 'right' | boolean
214
248
  // 是否显示
215
- isShow?: boolean | ((this: CTX, self: TableBaseItem<MODEL, CTX>) => boolean);
249
+ isShow?:
250
+ | boolean
251
+ | ((this: CTX, self: TableBaseItem<MODEL, CTX>) => boolean)
216
252
  // 用户表格配置
217
- userConfigShow?: boolean;
253
+ userConfigShow?: boolean
218
254
  // 用户表头
219
- userLabel?: string;
255
+ userLabel?: string
220
256
  // 表格排序
221
- sortValues?: [AscParams, DescParams] | [AscParams, DescParams, NoParams];
257
+ sortValues?: [AscParams, DescParams] | [AscParams, DescParams, NoParams]
222
258
  // 列属性
223
- props?: ConvertFunctionContext<TableBaseItemProps, CTX>;
259
+ props?: ConvertFunctionContext<TableBaseItemProps, CTX>
224
260
  // 自定义渲染
225
- renderFn?: (this: CTX, data: MODEL, index: number) => JSX.Element;
261
+ renderFn?: (this: CTX, data: MODEL, index: number) => JSX.Element
226
262
  // 过滤函数
227
- filterFn?: (this: CTX, data: MODEL, query: any) => boolean;
263
+ filterFn?: (this: CTX, data: MODEL, query: any) => boolean
228
264
  // 过滤组件
229
- getCellText?: (this: CTX, data: MODEL) => string;
265
+ getCellText?: (this: CTX, data: MODEL) => string
230
266
  // 过滤的自定义组件配置
231
- filterData?: FormItem<MODEL, CTX>,
267
+ filterData?: FormItem<MODEL, CTX>
232
268
  // 是否直接显示编辑组件
233
- showEdit?: boolean;
234
- required?: boolean;
269
+ showEdit?: boolean
270
+ required?: boolean
235
271
  // 内置编辑组件
236
272
  editData?: FormItem<MODEL, CTX> & {
237
- api?: string | ((this: CTX, data: MODEL) => string);
273
+ api?: string | ((this: CTX, data: MODEL) => string)
238
274
  method?: PageModel.AjaxMethod
239
- beforeSubmit?: CreateDePromiseResult<(this: CTX, data: MODEL) => AnyObject | false>;
240
- isDisabled?: (this: CTX, data: MODEL) => boolean;
275
+ beforeSubmit?: CreateDePromiseResult<
276
+ (this: CTX, data: MODEL) => AnyObject | false
277
+ >
278
+ isDisabled?: (this: CTX, data: MODEL) => boolean
241
279
  /**
242
280
  * 自定义更新请求
243
281
  * @param this table
244
282
  * @param data 请求的数据
245
283
  * @returns 是否成功
246
284
  */
247
- customUpdate?: (this: CTX, data: MODEL) => Promise<boolean | void>;
285
+ customUpdate?: (this: CTX, data: MODEL) => Promise<boolean | void>
248
286
  /**
249
287
  * 触发的弹窗名称
250
288
  */
251
- triggerPoperClassName?: string;
252
- };
289
+ triggerPoperClassName?: string
290
+ }
253
291
  // 子元素
254
- children?: Omit<TableBaseItem<MODEL, CTX>, 'children'>[];
292
+ children?: Omit<TableBaseItem<MODEL, CTX>, 'children'>[]
255
293
  // 自定义属性
256
- customProps?: AnyObject;
294
+ customProps?: AnyObject
257
295
  // 帮助文本
258
- helpText?: string;
296
+ helpText?: string
259
297
  // 显示合计
260
- showSummary?: number | string;
298
+ showSummary?: number | string
261
299
  // 静态过滤类型
262
300
  fieldType?: FieldType
263
301
  /**
264
302
  * 显示的行数
265
303
  */
266
- showRowNumbers?: number;
304
+ showRowNumbers?: number
267
305
  /**
268
306
  * 图标
269
307
  */
270
308
  icon?: any
271
309
  }
272
310
 
273
- interface TableVirtualBaseItem<MODEL = any, CTX = any> extends TableBaseItem<MODEL, CTX> {
274
- title?: string;
275
- dataKey: string;
276
- key?: string;
277
- cellRenderer?: (opt: { rowData: MODEL, rowIndex: number }) => JSX.Element;
278
- headerCellRenderer?: (opt: { rowData: MODEL, rowIndex: number }) => JSX.Element;
311
+ interface TableVirtualBaseItem<MODEL = any, CTX = any>
312
+ extends TableBaseItem<MODEL, CTX> {
313
+ title?: string
314
+ dataKey: string
315
+ key?: string
316
+ cellRenderer?: (opt: { rowData: MODEL; rowIndex: number }) => JSX.Element
317
+ headerCellRenderer?: (opt: {
318
+ rowData: MODEL
319
+ rowIndex: number
320
+ }) => JSX.Element
279
321
  children?: TableVirtualBaseItem<MODEL, CTX>[]
280
322
  }
281
323
 
282
324
  // 创建eType组件类型
283
- interface CreateFormItemComponent<NAME, MODEL, CTX, PROPS = any, EVENTS = any> extends FormElBaseItem<MODEL, CTX> {
284
- eType: NAME;
285
- props?: PROPS;
286
- events?: EVENTS;
325
+ interface CreateFormItemComponent<
326
+ NAME,
327
+ MODEL,
328
+ CTX,
329
+ PROPS = any,
330
+ EVENTS = any
331
+ > extends FormElBaseItem<MODEL, CTX> {
332
+ eType: NAME
333
+ props?: PROPS
334
+ events?: EVENTS
287
335
  style?: StyleValue
288
336
  }
289
337
 
290
338
  // 为对象中的函数添加this指向
291
339
  type ConvertFunctionContext<T, CTX> = {
292
- [K in keyof T]: T[K] extends (...rest: any[]) => any ? ((this: CTX, ...rest: Parameters<T[K]>) => any) : T[K]
340
+ [K in keyof T]: T[K] extends (...rest: any[]) => any
341
+ ? (this: CTX, ...rest: Parameters<T[K]>) => any
342
+ : T[K]
293
343
  }
294
344
 
295
- type CreatePropsFromElement<P, O extends (undefined | keyof P) = undefined, CTX = any>
296
- = Partial<ConvertFunctionContext<O extends string | number | symbol ? Omit<P, O> : P, CTX>>
297
-
345
+ type CreatePropsFromElement<
346
+ P,
347
+ O extends undefined | keyof P = undefined,
348
+ CTX = any
349
+ > = Partial<
350
+ ConvertFunctionContext<
351
+ O extends string | number | symbol ? Omit<P, O> : P,
352
+ CTX
353
+ >
354
+ >
355
+
298
356
  // 扩展对象的reflect提示
299
357
  type ExtendReflect<T> = T & {
300
- _reflect?: string;
301
- _reflectChangeKey?: string;
358
+ _reflect?: string
359
+ _reflectChangeKey?: string
302
360
  }
303
361
 
304
362
  type OptionsData = ExtendReflect<{
305
- list?: any[];
306
- label?: string;
307
- value?: string;
308
- [key: string]: any;
363
+ list?: any[]
364
+ label?: string
365
+ value?: string
366
+ [key: string]: any
309
367
  }>
310
368
 
311
369
  type ExtendOptionsData<T> = T & {
312
- optionsData: OptionsData;
370
+ optionsData: OptionsData
313
371
  }
314
372
  }
315
373
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juzhenfe/page-model",
3
- "version": "3.12.1",
3
+ "version": "3.12.2",
4
4
  "types": "dist/main.d.ts",
5
5
  "main": "dist/index.umd.js",
6
6
  "keywords": [