@juzhenfe/page-model 3.22.3 → 3.22.4

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 (39) hide show
  1. package/dist/components/form/type.d.ts +166 -0
  2. package/dist/components/normal-tab/type.d.ts +18 -0
  3. package/dist/components/page-model/components/top-tabs/type.d.ts +11 -0
  4. package/dist/components/page-model/type.d.ts +339 -0
  5. package/dist/components/scenes-tab/type.d.ts +14 -0
  6. package/dist/components/search-form/type.d.ts +42 -0
  7. package/dist/components/table/type.d.ts +364 -0
  8. package/dist/index.es.js +1 -1
  9. package/dist/index.umd.js +1 -1
  10. package/dist/types/common.d.ts +460 -0
  11. package/dist/types/form-item-types/cascader.d.ts +37 -0
  12. package/dist/types/form-item-types/checkbox-group.d.ts +19 -0
  13. package/dist/types/form-item-types/color-picker.d.ts +20 -0
  14. package/dist/types/form-item-types/date-picker.d.ts +42 -0
  15. package/dist/types/form-item-types/input-number.d.ts +14 -0
  16. package/dist/types/form-item-types/input.d.ts +16 -0
  17. package/dist/types/form-item-types/jz-a-map.d.ts +14 -0
  18. package/dist/types/form-item-types/jz-cascader.d.ts +18 -0
  19. package/dist/types/form-item-types/jz-city-picker.d.ts +25 -0
  20. package/dist/types/form-item-types/jz-ck-editor.d.ts +27 -0
  21. package/dist/types/form-item-types/jz-editor.d.ts +20 -0
  22. package/dist/types/form-item-types/jz-file-upload.d.ts +20 -0
  23. package/dist/types/form-item-types/jz-img-upload.d.ts +23 -0
  24. package/dist/types/form-item-types/jz-long-input.d.ts +10 -0
  25. package/dist/types/form-item-types/jz-td-map.d.ts +13 -0
  26. package/dist/types/form-item-types/no-e-type.d.ts +12 -0
  27. package/dist/types/form-item-types/radio-group.d.ts +17 -0
  28. package/dist/types/form-item-types/rate.d.ts +29 -0
  29. package/dist/types/form-item-types/select-v2.d.ts +46 -0
  30. package/dist/types/form-item-types/select.d.ts +43 -0
  31. package/dist/types/form-item-types/slider.d.ts +31 -0
  32. package/dist/types/form-item-types/switch.d.ts +11 -0
  33. package/dist/types/form-item-types/time-picker.d.ts +38 -0
  34. package/dist/types/form-item-types/time-select.d.ts +27 -0
  35. package/dist/types/renderer.d.ts +10 -0
  36. package/dist/types/shims-vue-property.d.ts +8 -0
  37. package/dist/types/shims-vue.d.ts +7 -0
  38. package/dist/types/window.d.ts +10 -0
  39. package/package.json +1 -1
@@ -0,0 +1,166 @@
1
+ import { ColProps, RowProps, CollapseProps, TabsProps, DrawerProps } from 'element-plus';
2
+ import { Component } from 'vue';
3
+
4
+
5
+
6
+ declare global {
7
+ namespace PageModel {
8
+
9
+ type FormMode = 'dialog' | 'fullpage' | 'drawer' | 'custom'
10
+
11
+ type FormStatus = 'add' | 'edit' | 'view'
12
+
13
+ type ContainerMode = 'Col'
14
+
15
+ type ModuleType = 'tabs'
16
+
17
+ type ModuleProps = Partial<CollapseProps & TabsProps>
18
+
19
+ type DialogProps = {
20
+ title: string | ((status: FormStatus) => string);
21
+ width: string | number;
22
+ fullscreen: boolean;
23
+ top: string;
24
+ modal: boolean;
25
+ appendToBody: boolean;
26
+ lockScroll: boolean;
27
+ customClass: string;
28
+ openDelay: number;
29
+ closeDelay: number;
30
+ closeOnClickModal: boolean;
31
+ closeOnPressEscape: boolean;
32
+ showClose: boolean;
33
+ beforeClose: (done: Function) => void;
34
+ draggable: boolean;
35
+ center: boolean;
36
+ destroyOnClose: boolean;
37
+ }
38
+
39
+ type FullPageProps = {
40
+ title?: string | ((status: FormStatus) => string);
41
+ show?: boolean;
42
+ }
43
+
44
+ type ServerValidateError = {
45
+ errors: { [key: string]: string[] };
46
+ status: number;
47
+ title: string;
48
+ type: string;
49
+ traceId: string;
50
+ }
51
+
52
+ type ServerError = {
53
+ data: ServerValidateError
54
+ }
55
+
56
+ type FormProps = {
57
+ rules: AnyObject;
58
+ inline: boolean;
59
+ labelPosition: 'left' | 'right' | 'top';
60
+ labelWidth: string;
61
+ labelSuffix: string;
62
+ hideRequiredAsterisk: boolean;
63
+ showMessage: boolean;
64
+ inlineMessage: boolean;
65
+ statusIcon: boolean;
66
+ size: Size;
67
+ disabled: boolean;
68
+ validateOnRuleChange: boolean;
69
+ class: string;
70
+ }
71
+
72
+ type ColLayout = {
73
+ col?: Partial<ColProps>
74
+ }
75
+
76
+ type FormRowProps = Partial<RowProps>
77
+
78
+ type GridLayout = {}
79
+
80
+ type FormItem<MODEL = AnyObject, CTX = any> = LinkedFormItem<MODEL, CTX> & ColLayout & GridLayout
81
+
82
+
83
+ type Form<MODEL = AnyObject, CTX = any> = {
84
+ // 表单容器的显示模式
85
+ mode?: FormMode;
86
+ // 弹窗模式配置参数
87
+ dialogProps?: CreatePropsFromElement<Omit<DrawerProps, 'title'> & { title?: CreateDeType<string, CTX> }, undefined, CTX>;
88
+ // 抽屉的参数
89
+ drawerProps?: CreatePropsFromElement<(Omit<DrawerProps, 'title'>) & { title?: CreateDeType<string, CTX> }, undefined, CTX>;
90
+ // 全屏表单模式参数
91
+ fullpageProps?: FullPageProps;
92
+ // 容器组件
93
+ formContainer?: Component;
94
+ // 容器组件自定义样式
95
+ formContainerProps?: AnyObject;
96
+ // 表单参数
97
+ props?: Partial<FormProps>;
98
+ // 表单模块类型
99
+ moduleConfig?: {
100
+ type: ModuleType;
101
+ props?: ModuleProps;
102
+ };
103
+ // 块级配置
104
+ sectionConfig?: {
105
+ // 模式
106
+ mode?: 'card' | 'collapse';
107
+ // 是否可以折叠
108
+ collapse?: boolean
109
+ // 块的单独默认配置
110
+ sections?: {
111
+ [key: string]: {
112
+ // 是否可以折叠
113
+ collapse?: boolean
114
+ // 默认收缩
115
+ defaultCollapse?: boolean
116
+ }
117
+ }
118
+ }
119
+
120
+ // 表单初始数据
121
+ initialData?: AnyObject;
122
+
123
+ // 表单打开
124
+ onFormOpened?: (this: CTX) => void;
125
+
126
+ // 表单隐藏
127
+ onFormClosed?: (this: CTX) => void;
128
+
129
+ // 绑定前的处理函数
130
+ bindData?: CreateDePromiseResult<(this: CTX, data: MODEL) => AnyObject | false>;
131
+
132
+ // 提交前的处理逻辑
133
+ beforeSubmit?: CreateDePromiseResult<(this: CTX, data: MODEL) => AnyObject | false>;
134
+
135
+ // 新增接口完成
136
+ onAdded?: (this: CTX, data: any) => any;
137
+
138
+ // 更新接口完成
139
+ onUpdated?: (this: CTX, data: any) => any;
140
+
141
+ // 表单数据变化回调
142
+ onFormDataChange?: (this: CTX, data: MODEL) => void;
143
+
144
+ // 表单字段校验
145
+ required?: (keyof MODEL)[];
146
+
147
+ // 列表展示的模式
148
+ containerMode?: ContainerMode;
149
+
150
+ // row属性
151
+ rowProps?: FormRowProps;
152
+
153
+ // 表单元素
154
+ els: FormItem<MODEL, CTX>[];
155
+
156
+ /**
157
+ * 是否离开前判断表单变化
158
+ */
159
+ leaveConfirm?: boolean;
160
+ /**
161
+ * 离开前提示信息
162
+ */
163
+ leaveConfirmMessage?: string | ((this: CTX, model: MODEL) => string);
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,18 @@
1
+ import { TabsProps } from 'element-plus';
2
+
3
+
4
+ declare global {
5
+ namespace PageModel {
6
+ type NormalTabItem = {
7
+ label: string;
8
+ value: AnyObject;
9
+ default?: boolean;
10
+ } & _Badge
11
+
12
+ type NormalTab = {
13
+ props?: Partial<TabsProps>;
14
+ panes?: NormalTabItem[];
15
+ refreshOnChange?: boolean;
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,11 @@
1
+ /// <reference path="../../../normal-tab/type.d.ts" />
2
+ /// <reference path="../../../scenes-tab/type.d.ts" />
3
+
4
+ declare namespace PageModel {
5
+ type Tabs = NormalTab & {
6
+ // 是否使用场景
7
+ useScene?: boolean;
8
+ // 场景
9
+ sceneTab?: ScenesTab;
10
+ }
11
+ }
@@ -0,0 +1,339 @@
1
+ import { default as ReflectRelation } from '../../utils/reflect/reflect-collector';
2
+ import { Component, WatchStopHandle } from 'vue';
3
+ import { default as FormManager } from '../form/constructor';
4
+ import { default as SearchFormManager } from '../search-form/constructor';
5
+ import { default as PageModelManager } from './constructor';
6
+
7
+
8
+ declare global {
9
+ namespace PageModel {
10
+
11
+ type Size = 'large' | 'default' | 'small'
12
+
13
+ type UrlMode = 'path' | 'params'
14
+
15
+ type AjaxMethod = 'get' | 'post' | 'delete' | 'put' | 'patch' | 'head' | 'options' | 'connect' | 'trace'
16
+
17
+ type ExportMode = 'get' | 'build'
18
+
19
+ type RequestProcessFn<CTX = any> = (this: CTX, ...rest: any[]) => any;
20
+
21
+ type GetReqResultProcessFn<CTX = any> = (this: CTX, ...rest: any[]) => {
22
+ total: number;
23
+ list: any[];
24
+ }
25
+
26
+ /**
27
+ * 可能返回promise的函数
28
+ */
29
+ type MayBeAPromiseFn<T extends (...args: any[]) => any> = T | ((...args: Parameters<T>) => Promise<ReturnType<T>>)
30
+
31
+ type PatchConfigFn = {
32
+ (this: PageModelManager, config: PageModel.Config | PageModel.UConfig): PageModel.Config | PageModel.UConfig
33
+ }
34
+
35
+ type InnerPatchName = 'serverFormErrorHandler'
36
+
37
+ type Patch = InnerPatchName | PatchConfigFn
38
+
39
+ type Reflections = {
40
+ [key: string]: any[];
41
+ }
42
+
43
+ type TreeProps = {
44
+ id: string;
45
+ pId: string;
46
+ children?: string;
47
+ }
48
+
49
+ type ReflectWatches = WatchStopHandle[] & {
50
+ reflect: ReflectRelation
51
+ }
52
+ type Config<MODEL = AnyObject, EXTENDS = any> = {
53
+ // 模块名称
54
+ name?: string;
55
+ /**
56
+ * 启用按钮权限
57
+ */
58
+ openAuthButton?: boolean;
59
+ /**
60
+ * 是否在config准备完毕后直接获取数据
61
+ */
62
+ getImmediate?: boolean;
63
+ /**
64
+ * 是否开启外置数据反射
65
+ */
66
+ reflect?: boolean;
67
+ /**
68
+ * 全局设置尺寸
69
+ */
70
+ size?: Size;
71
+ /**
72
+ * 阴影
73
+ */
74
+ shadow?: boolean;
75
+ /**
76
+ * 键盘事件
77
+ */
78
+ keyboardEvents?: {
79
+ [key: string]: (this: PageModelManager, e: KeyboardEvent) => any;
80
+ };
81
+
82
+ /**
83
+ * 基请求地址,增删改查接口基于此url构建restful风格地址
84
+ */
85
+ url?: string;
86
+ /**
87
+ * 删除接口、详情接口参数构建方式,path参与路径,params参数请求
88
+ */
89
+ urlMode?: UrlMode;
90
+
91
+ /**
92
+ * 获取API地址
93
+ */
94
+ getUrl?: string;
95
+ /**
96
+ * 获取method
97
+ */
98
+ getMethod?: AjaxMethod;
99
+
100
+ /**
101
+ * 自定义获取器
102
+ */
103
+ customGetter?: MayBeAPromiseFn<(this: PageModelManager, reqParams: AnyObject) => {
104
+ total: number;
105
+ data: MODEL[];
106
+ }>
107
+
108
+ /**
109
+ * 获取的其他参数
110
+ */
111
+ otherParams?: AnyObject;
112
+
113
+ /**
114
+ * 列表接口请求前回调
115
+ */
116
+ beforeGetRequest?: (this: PageModelManager, reqParams: AnyObject) => void;
117
+
118
+ /**
119
+ * 获取的数据拿取方式(处理不同请求返回数据列表的方法)
120
+ */
121
+ getReqResultProcessFn?: MayBeAPromiseFn<GetReqResultProcessFn<PageModelManager>>
122
+
123
+ /**
124
+ * 请求参数回调处理
125
+ * @param this
126
+ * @param data 列表数据
127
+ * @returns 列表数据
128
+ */
129
+ getDataCallback?: (this: PageModelManager, data: MODEL[]) => ExtendKeys<MODEL>[];
130
+
131
+ /**
132
+ * 树形数据配置
133
+ */
134
+ treeProps?: TreeProps;
135
+
136
+ /**
137
+ * 删除地址
138
+ */
139
+ delUrl?: string;
140
+ /**
141
+ * 从row中获取删除参数的key
142
+ */
143
+ delKey?: keyof MODEL;
144
+ /**
145
+ * 删除参数的rowKey键名称
146
+ */
147
+ delParamsKey?: keyof MODEL;
148
+ /**
149
+ * 删除method
150
+ */
151
+ delMethod?: AjaxMethod;
152
+ /**
153
+ * 删除参数
154
+ */
155
+ delParams?: AnyObject | ((this: PageModelManager, data: MODEL) => AnyObject);
156
+ /**
157
+ * 删除的参数处理方法
158
+ */
159
+ delReqDataProcessFn?: RequestProcessFn;
160
+ /**
161
+ * 删除的数据拿取方式
162
+ */
163
+ delReqResultProcessFn?: RequestProcessFn;
164
+
165
+ // 更新地址
166
+ updUrl?: string;
167
+ // 更新方法
168
+ updMethod?: AjaxMethod;
169
+ // 更新的数据拿取方式
170
+ updReqResultProcessFn?: RequestProcessFn;
171
+
172
+ // 新增地址
173
+ addUrl?: string;
174
+ // 新增方法
175
+ addMethod?: AjaxMethod;
176
+ // 新增的数据拿取方式
177
+ addReqResultProcessFn?: RequestProcessFn;
178
+ // 新增按钮的样式
179
+ addButton?: Pick<Button, 'text' | 'props'>;
180
+ // 新增按钮是否放置在多选操作
181
+ addButtonInSelectButtonsArea?: boolean;
182
+
183
+ /**
184
+ * 详情地址
185
+ */
186
+ detailUrl?: string;
187
+ /**
188
+ * 提取详情参数的rowKey键名称
189
+ */
190
+ detailKey?: keyof MODEL;
191
+ /**
192
+ * 详情请求参数的rowKey键名称
193
+ */
194
+ detailParamsKey?: keyof MODEL;
195
+ /**
196
+ * 详情method
197
+ */
198
+ detailMethod?: string;
199
+ // 详情的参数获取方式
200
+ detailReqDataProcessFn?: RequestProcessFn;
201
+ // 详情的数据拿取方式
202
+ detailReqResultProcessFn?: RequestProcessFn;
203
+ // 详情是否显示记载中
204
+ detailLoading?: boolean;
205
+ // 是否使用详情
206
+ useDetail?: boolean;
207
+
208
+ // 导入地址
209
+ importUrl?: string;
210
+ // 导入方法
211
+ importMethod?: AjaxMethod;
212
+ // 导入文件名称
213
+ importFileKey?: string;
214
+ // 导入参数
215
+ importParams?: AnyObject | ((this: any, data: MODEL) => AnyObject);
216
+
217
+ // 导出地址
218
+ exportUrl?: string;
219
+ // 导出的模式 后端构建 get 或者 前端构建 build
220
+ exportMode?: ExportMode;
221
+ // 导出参数
222
+ exportParams?: AnyObject | ((this: any, data: MODEL) => AnyObject);
223
+
224
+ // 补丁,可以对config进行处理
225
+ patches?: Patch[];
226
+
227
+ // 顶部布局参数,包含tab栏等
228
+ tabs?: Tabs;
229
+
230
+ // config事件
231
+ events?: {
232
+ [key: string]: (this: PageModelManager, ...rest: any[]) => any;
233
+ }
234
+
235
+ // 搜索表单
236
+ searchForm?: SearchForm<MODEL, SearchFormManager>;
237
+
238
+ // 表格
239
+ table: Table<MODEL, TableManager>;
240
+
241
+ // 是否存在表单
242
+ hasForm?: boolean;
243
+
244
+ // 表单配置
245
+ form?: Form<MODEL, FormManager<MODEL>>;
246
+ }
247
+
248
+ // 使用配置
249
+ type UConfig<T = AnyObject, K = any> = Config<T, K> & {
250
+
251
+ }
252
+
253
+ // 注册时候的配置
254
+ type InstallOptions = {
255
+ // 请求对象 必须实现
256
+ request: IRequest;
257
+ // 捕获错误
258
+ errorHandler?: ErrorHandler;
259
+ // 默认配置
260
+ config?: Config<any, any>;
261
+ // patches
262
+ patches?: PatchConfigFn[];
263
+ // 文本配置
264
+ textConfig: TextConfig;
265
+ // 样式
266
+ style?: GlobalStyle;
267
+ // 导出excel的配置
268
+ excelExportConfig?: ExcelExportConfig;
269
+ // 保存配置
270
+ userSetting?: UserSetting
271
+ // 空内容组件
272
+ emptyData?: Component
273
+ /**
274
+ * 获取zIndex
275
+ */
276
+ getZIndex?: () => number;
277
+ }
278
+
279
+
280
+ type ErrorHandler = {
281
+ (error: any): void;
282
+ }
283
+
284
+ type IRquestRquestMethods<T extends string, K> = {
285
+ [key in T]: K;
286
+ }
287
+
288
+ type IRequest = IRquestRquestMethods<AjaxMethod, (url: string, ...rest: any[]) => Promise<any>>
289
+
290
+ type TextConfig = {
291
+ delTitle?: string;
292
+ delText?: string;
293
+ delSuccessText?: string;
294
+ addSuccessText?: string;
295
+ updSuccessText?: string;
296
+ importSuccessText?: string;
297
+ leaveConfirmTitle?: string;
298
+ leaveConfirmText?: string;
299
+ }
300
+
301
+ type GlobalStyle = {
302
+ searchFormItemWidth?: string;
303
+ }
304
+
305
+ type ExcelExportConfig = {
306
+ fontFamily?: string;
307
+ fontSize?: number;
308
+ }
309
+
310
+ type PageModelUserConfig = {
311
+ /**
312
+ * 显示的行数,超出隐藏
313
+ */
314
+ showRowNumbers?: number;
315
+ /**
316
+ * 改变即刻搜索
317
+ */
318
+ searchOnValueChange?: boolean;
319
+ /**
320
+ * enter监听搜索
321
+ */
322
+ enterSearch?: boolean;
323
+ }
324
+
325
+ type userSettingMode = 'user' | 'server'
326
+
327
+ type UserSetting = {
328
+ // 配置的模式 本地 、服务端
329
+ mode?: userSettingMode;
330
+ // 提交的方法
331
+ serverUpdateFn?: (key: string, val: string) => Promise<boolean>;
332
+ }
333
+
334
+ }
335
+ }
336
+
337
+ export type Config<MODEL, EXTEND> = PageModel.Config<MODEL, EXTEND>
338
+
339
+ export type InstallOptions = PageModel.InstallOptions
@@ -0,0 +1,14 @@
1
+ declare namespace PageModel {
2
+
3
+ type FetchSceneItem = {
4
+ id: number;
5
+ title: string;
6
+ }
7
+
8
+ type ScenesTab = {
9
+ // 自定义场景获取url
10
+ url: string;
11
+ // 场景列表
12
+ scenes?: FetchSceneItem[]
13
+ }
14
+ }
@@ -0,0 +1,42 @@
1
+ /// <reference path="../../types/common.d.ts" />
2
+
3
+
4
+ declare namespace PageModel {
5
+
6
+ type SearchFormExpandMode = 'dialog' | 'expanded'
7
+
8
+ type SearchForm<MODEL = any, CTX = any> = {
9
+ // 更多的扩展形式
10
+ expandMode?: SearchFormExpandMode;
11
+ // 尺寸
12
+ size?: Size;
13
+ // label宽度
14
+ labelWidth?: string;
15
+ // 初始表单数据
16
+ initialData?: Partial<MODEL>;
17
+ // 成员
18
+ els: LinkedFormItem<MODEL, CTX>[];
19
+ // 处理函数
20
+ beforeSubmit?: (this: any, data: ExtendKeys<MODEL>) => ExtendKeys<MODEL> | false;
21
+
22
+ // 表单数据变化回调
23
+ onFormDataChange?: (this: CTX, data: MODEL) => void;
24
+
25
+ /**
26
+ * 是否值变化检索
27
+ */
28
+ searchOnValueChange?: boolean;
29
+ /**
30
+ * 是否设置私人配置
31
+ */
32
+ searchOnValueChangeSetted?: boolean;
33
+ /**
34
+ * 是否静态enter检索
35
+ */
36
+ enterSearch?: boolean;
37
+ /**
38
+ * 是否设置私人配置
39
+ */
40
+ enterSearchSetted?: boolean;
41
+ }
42
+ }