el-plus 0.0.85 → 0.0.86-beta.0

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.
@@ -1,4 +1,4 @@
1
- /*! ElPlus v0.0.85 */
1
+ /*! ElPlus v0.0.86-beta.0 */
2
2
 
3
3
  import { useAttrs, getCurrentInstance, inject, provide, ref, nextTick, defineComponent, computed, createVNode, Fragment, withDirectives, resolveComponent, mergeProps, resolveDirective, useTemplateRef, reactive, onBeforeUpdate, createTextVNode, h, mergeModels, useModel, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createCommentVNode, withCtx, renderSlot, renderList, createBlock, vShow, toDisplayString, useSlots, watch, onMounted, createSlots, normalizeProps, guardReactiveProps, markRaw, Transition, shallowReactive, isVNode, render, createElementVNode, toRaw } from 'vue';
4
4
  import { buttonProps, useLocale as useLocale$1, ElLoading, ElMessage, ElMessageBox, formProps as formProps$1, formEmits as formEmits$1, ElTooltip, formItemProps as formItemProps$1, ElFormItem, ElForm, ElRow, ElCol, inputProps as inputProps$1, inputEmits as inputEmits$1, configProviderContextKey, ElConfigProvider, ElDialog, ElButton, ElTable, ElIcon, selectProps as selectProps$1, selectEmits as selectEmits$1, ElPageHeader, datePickerProps, linkProps as linkProps$1, ElSkeleton } from 'element-plus';
@@ -4461,7 +4461,7 @@ var components = [
4461
4461
  EpFooterInfo
4462
4462
  ];
4463
4463
 
4464
- var version = "0.0.85";
4464
+ var version = "0.0.86-beta.0";
4465
4465
 
4466
4466
  var globalProperties = {
4467
4467
  install(app) {
@@ -79,6 +79,14 @@ const formItemList = ref<FormProps['formItemList']>([
79
79
  | style | 行内样式 | `string \| CSSProperties` | - |
80
80
  | onChange | 值变化事件 | `(val, item?) => void` | - |
81
81
 
82
+ > **注意**:在 EpTable 的 columns 中使用表单项时,`type` 不能省略,否则会显示为普通文本。
83
+ > ```json
84
+ > // ❌ 错误:表格列中省略 type,会显示为文本
85
+ > { "prop": "quantity", "label": "数量" }
86
+ > // ✅ 正确:表格列中必须指定 type
87
+ > { "prop": "quantity", "label": "数量", "type": "EpInput" }
88
+ > ```
89
+
82
90
  ## Expose 方法
83
91
 
84
92
  | 方法 | 说明 | 类型 |
@@ -8,20 +8,19 @@
8
8
  <template>
9
9
  <EpHeader
10
10
  :buttons="headerButtons"
11
+ is-show-attachment-button
12
+ :file-list="formData.fileList"
11
13
  />
12
14
  </template>
13
15
 
14
16
  <script setup lang="tsx">
15
- import { computed } from 'vue'
16
17
  import type { HeaderProps } from 'el-plus'
17
18
 
18
- const headerButtons:HeaderProps['buttons']= [
19
- {
20
- name: '提交',
21
- prop: 'submit',
22
- type: 'primary',
23
- onClick: () => {},
24
- },
19
+ // 只放非内置的自定义按钮
20
+ const headerButtons: HeaderProps['buttons'] = [
21
+ { name: '提交审批', onClick: () => {} },
22
+ { name: '取消审批', onClick: () => {} },
23
+ { name: '作废', onClick: () => {} },
25
24
  ]
26
25
  </script>
27
26
  ```
@@ -31,15 +30,25 @@ const headerButtons:HeaderProps['buttons']= [
31
30
  | 属性 | 说明 | 类型 | 默认值 |
32
31
  |------|------|------|--------|
33
32
  | buttons | 自定义按钮列表 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
34
- | defaultButtons | 显示的默认按钮 | `('edit' \| 'save' \| 'cancel' \| 'refresh' \| 'auditLog')[]` | - |
33
+ | defaultButtons | 显示的默认按钮 | `('edit' \| 'save' \| 'cancel' \| 'refresh' \| 'auditLog')[]` | `['edit', 'save', 'cancel', 'refresh', 'auditLog']` |
35
34
  | mode | 页面模式 | `'add' \| 'edit' \| 'browse'` | - |
36
35
  | allowBack | 是否允许返回 | `boolean` | `true` |
37
36
  | name | 权限前缀 | `string` | - |
38
- | workflowId | 工作流ID | `string` | - |
37
+ | workflowId | 工作流ID,有值则显示审批日志按钮 | `string` | - |
39
38
  | isShowAttachmentButton | 显示附件按钮 | `boolean` | `false` |
40
39
  | fileList | 附件列表 | `Record<string, any>[]` | `[]` |
41
40
  | attachmentProps | 附件组件属性 | [`AttachmentProps`](./attachment.md#props) | `{}` |
42
41
 
42
+ > **注意**:`defaultButtons` 默认为全部按钮,无需显式设置。只有需要自定义显示的按钮时才需设置。
43
+ > ```json
44
+ > // ❌ 错误:无需设置默认值属性
45
+ > { "type": "EpHeader", "props": { "defaultButtons": ["edit", "save", "cancel", "refresh", "auditLog"] } }
46
+ > // ✅ 正确:使用默认值
47
+ > { "type": "EpHeader" }
48
+ > // ✅ 正确:自定义显示的按钮
49
+ > { "type": "EpHeader", "props": { "defaultButtons": ["edit", "save"] } }
50
+ > ```
51
+
43
52
  ## 默认按钮说明
44
53
 
45
54
  | 按钮 | 说明 |
@@ -31,6 +31,23 @@ const value = ref('')
31
31
 
32
32
  > ^el^ 表示继承自 [el-input](https://element-plus.org/zh-CN/component/input.html) 的属性
33
33
 
34
+ > **注意**:
35
+ > - `clearable` 默认为 `true`,无需显式设置。只有需要 `clearable: false` 时才需设置。
36
+ > - `thousand` 默认为 `true`,无需显式设置。
37
+ > - 数值相关属性(`max`、`min`、`radix`、`nonzero`)默认不设置,只有明确需要时才添加。
38
+ > ```json
39
+ > // ❌ 错误:无需设置默认值属性
40
+ > { "prop": "name", "type": "EpInput", "props": { "clearable": true } }
41
+ > // ✅ 正确:使用默认值
42
+ > { "prop": "name" }
43
+ > // ❌ 错误:数值文本框默认不加数字属性
44
+ > { "prop": "amount", "label": "金额", "props": { "thousand": true } }
45
+ > // ✅ 正确:数值文本框无需设置默认值属性
46
+ > { "prop": "amount", "label": "金额" }
47
+ > // ✅ 正确:有特殊需求时才设置
48
+ > { "prop": "amount", "label": "金额", "props": { "radix": 2, "max": 999999 } }
49
+ > ```
50
+
34
51
  ## 在 Form 中使用
35
52
 
36
53
  ```tsx
@@ -40,6 +57,11 @@ const formItemList = [
40
57
  label: '名称',
41
58
  // type 默认为 EpInput
42
59
  },
60
+ {
61
+ prop: 'number',
62
+ label: '数字',
63
+ // type 默认为 EpInput
64
+ },
43
65
  {
44
66
  prop: 'remark',
45
67
  label: '备注',
@@ -22,16 +22,13 @@
22
22
  import { ref, reactive } from 'vue'
23
23
  import type { SearchListPageProps } from 'el-plus'
24
24
 
25
- const formData = reactive({
26
- name: '',
27
- status: '',
28
- })
25
+ const formData = reactive({})
29
26
 
30
27
  const formItemList = ref<SearchListPageProps['formItemList']>([
31
28
  { prop: 'name', label: '名称' },
32
29
  { prop: 'status', label: '状态', type: 'EpSelect', props: { options: [] } },
33
30
  ])
34
-
31
+ // 如果有自定义列,就不需要定义 columns
35
32
  const columns = [
36
33
  { prop: 'name', label: '名称' },
37
34
  { prop: 'status', label: '状态' },
@@ -62,7 +59,7 @@ const handleAdd = () => {}
62
59
  | reqAfter | 响应后处理 | `(res) => data` | - |
63
60
  | formData | 表单数据 | `object` | `{}` |
64
61
  | formItemList | 搜索表单配置 | [`FormItemProps[]`](./form.md#formitemprops-配置) | `[]` |
65
- | columns | 表格列配置 | [`TableColumn[]`](./table.md#tablecolumn-配置) | `[]` |
62
+ | columns | 表格列配置(有customColumnModule就不需要定义列) | [`TableColumn[]`](./table.md#tablecolumn-配置) | `[]` |
66
63
  | leftButtons | 左侧按钮 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
67
64
  | actionButtons | 操作列按钮 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
68
65
  | add | 新增按钮回调 | `Function` | - |
@@ -94,7 +94,7 @@ const formItemList = [
94
94
  data: formData.detailList,
95
95
  showSelectionCol: true,
96
96
  columns: [
97
- { prop: 'itemCode', label: '编号', width: 150 },
97
+ { prop: 'itemCode', label: '编号' },
98
98
  { prop: 'itemName', label: '名称' },
99
99
  {
100
100
  prop: 'quantity',
@@ -5,24 +5,13 @@
5
5
  ## 页面结构
6
6
 
7
7
  详情页无固定结构,根据业务需求自由组合以下组件:
8
-
9
- - **EpHeader**: 顶部操作栏(可选)
10
- - **EpForm**: 表单容器(可选)
11
- - **EpTitle**: 标题分组(可选)
12
- - **EpTable**: 明细表格(可选)
13
- - **EpAttachment**: 附件管理(可选)
8
+ > 查看所有可用组件:[组件文档索引](../components/index.md)
14
9
 
15
10
  ## 完整示例
16
11
 
17
- > 完整示例参考:[play/src/views/demo/detail.vue](../../play/src/views/demo/detail.vue)
18
-
19
12
  ```vue
20
13
  <template>
21
14
  <div>
22
- <!-- 组件自由组合,以下仅为示例 -->
23
- <EpHeader
24
- :buttons="headerButtons"
25
- ></EpHeader>
26
15
 
27
16
  <EpForm
28
17
  ref="epForm"
@@ -35,33 +24,37 @@
35
24
 
36
25
  <script setup lang="tsx">
37
26
  import type { FormProps, HeaderProps } from 'el-plus'
38
- import {useNavigation} from 'el-plus'
39
- import { reactive, computed, useTemplateRef } from 'vue'
40
- import { useRoute, useRouter } from 'vue-router'
27
+ import { useNavigation } from 'el-plus'
28
+ import { reactive, ref, computed, useTemplateRef } from 'vue'
29
+ import { useRoute } from 'vue-router'
41
30
 
42
31
  defineOptions({
43
32
  name: 'DemoDetail'
44
33
  })
45
34
 
46
35
  const route = useRoute()
47
- const router = useRouter()
48
36
  const epForm = useTemplateRef('epForm')
49
37
  const { isEdit } = useNavigation()
50
38
  const id = route.query.id
51
39
 
52
- // 顶部按钮 - 参考 EpHeader 文档
53
- const headerButtons: HeaderProps['buttons'] = [
54
- // 按钮配置
55
- ]
56
40
 
57
- // 表单数据
41
+ // 表单数据:不需要预定义所有字段,reactive({}) 即可
42
+ // 仅以下类型需要预定义:
43
+ // - dateRange:需定义开始/结束字段
44
+ // - 表格数组、附件数组
58
45
  const formData = reactive({
59
- // 字段定义
46
+ // dateRange 示例:orderDateStart: '', orderDateEnd: '',
47
+ detailList: [] as Record<string, any>[], // 明细表格
48
+ fileList: [] as Record<string, any>[], // 附件列表
60
49
  })
61
50
 
62
51
  // 表单配置 - 组件自由组合,参考各组件文档
63
52
  const formItemList = ref<FormProps['formItemList']>([
64
- // 组件自由组合
53
+ // 组件类似下面这样自由组合
54
+ { col: 24, type: 'EpHeader', props: { buttons: [
55
+ { name: '提交审批', type: 'primary', onClick: () => {} }
56
+ ] } },
57
+ { col: 24, type: 'EpTitle', props: { title: '基本信息' } },
65
58
  ])
66
59
 
67
60
  // 保存
@@ -73,12 +66,9 @@ const handleSave = async () => {
73
66
  }
74
67
 
75
68
  // 加载数据
76
- if (isEdit.value === 'edit' && id) {
69
+ if (isEdit.value && id) {
77
70
  // TODO: 调用接口获取详情
78
71
  }
79
72
  </script>
80
73
  ```
81
74
 
82
- ## 组件文档
83
-
84
- > 查看所有可用组件:[组件文档索引](../components/index.md)
@@ -9,8 +9,6 @@
9
9
 
10
10
  ## 完整示例
11
11
 
12
- > 完整示例参考:[play/src/views/demo/list.vue](../../play/src/views/demo/list.vue)
13
-
14
12
  ```vue
15
13
  <template>
16
14
  <EpSearchListPage
@@ -42,7 +40,7 @@ const formData = reactive({
42
40
 
43
41
  // 搜索表单配置 - 组件自由组合
44
42
  const formItemList = ref<SearchListPageProps['formItemList']>([
45
- // 参考各组件文档配置
43
+ // 参考EpForm和各组件文档配置
46
44
  ])
47
45
 
48
46
  // 表格列配置
@@ -0,0 +1,8 @@
1
+ import { ParsedPageData } from './modao.js';
2
+ export declare function isImageFile(filePath: string): boolean;
3
+ export declare class ImageParseError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare function generateImageParsePrompt(filePath: string): string;
7
+ export declare function parseImage(filePath: string): Promise<ParsedPageData>;
8
+ export declare function parseAIEditorResponse(jsonResponse: string, filePath: string): ParsedPageData;
@@ -1,8 +1,15 @@
1
1
  export type ListSectionType = 'form' | 'toolbar' | 'table' | 'dialog';
2
2
  export type DetailSectionType = 'header' | 'title' | 'form' | 'table' | 'attachment' | 'footer' | 'dialog';
3
3
  export type SectionType = ListSectionType | DetailSectionType;
4
+ export type ParseErrorType = 'access_denied' | 'content_invalid' | 'timeout' | 'network' | 'unknown';
5
+ export declare class ParseError extends Error {
6
+ type: ParseErrorType;
7
+ needsBrowserAgent: boolean;
8
+ constructor(message: string, type: ParseErrorType, needsBrowserAgent?: boolean);
9
+ }
4
10
  export type PageType = 'list' | 'detail' | 'mixed';
5
11
  export type FormFieldType = 'input' | 'select' | 'date' | 'dateRange' | 'textarea' | 'number' | 'radio' | 'checkbox' | 'unknown';
12
+ export declare const VALID_FORM_FIELD_TYPES: FormFieldType[];
6
13
  export interface FormField {
7
14
  label: string;
8
15
  fieldType: FormFieldType;
@@ -25,9 +32,23 @@ export interface ParsedPageData {
25
32
  export declare class ModaoParser {
26
33
  private browser;
27
34
  private page;
35
+ private checkAccessDenied;
36
+ private checkPageContentValid;
28
37
  init(): Promise<void>;
29
38
  close(): Promise<void>;
30
39
  parse(url: string): Promise<ParsedPageData>;
31
40
  private delay;
32
41
  }
33
42
  export declare function parseModaoPage(url: string): Promise<ParsedPageData>;
43
+ export interface ParseResult {
44
+ success: boolean;
45
+ data?: ParsedPageData;
46
+ needsBrowserAgent?: boolean;
47
+ error?: {
48
+ type: ParseErrorType;
49
+ message: string;
50
+ };
51
+ url: string;
52
+ }
53
+ export declare function parseModaoPageWithFallback(url: string): Promise<ParseResult>;
54
+ export declare function generateBrowserAgentPrompt(url: string): string;
@@ -25,7 +25,7 @@ export declare const EpButtons: {
25
25
  };
26
26
  readonly type: {
27
27
  readonly default: "default";
28
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
28
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
29
29
  readonly required: false;
30
30
  readonly validator: ((val: unknown) => boolean) | undefined;
31
31
  readonly __epPropKey: true;
@@ -68,9 +68,9 @@ export declare const EpButtons: {
68
68
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
69
69
  }>[];
70
70
  readonly link: boolean;
71
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
71
72
  readonly circle: boolean;
72
73
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
73
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
74
74
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
75
75
  readonly loading: boolean;
76
76
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -121,7 +121,7 @@ export declare const EpButtons: {
121
121
  };
122
122
  readonly type: {
123
123
  readonly default: "default";
124
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
124
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
125
125
  readonly required: false;
126
126
  readonly validator: ((val: unknown) => boolean) | undefined;
127
127
  readonly __epPropKey: true;
@@ -164,9 +164,9 @@ export declare const EpButtons: {
164
164
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
165
165
  }>[];
166
166
  readonly link: boolean;
167
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
167
168
  readonly circle: boolean;
168
169
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
169
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
170
170
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
171
171
  readonly loading: boolean;
172
172
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -196,7 +196,7 @@ export declare const EpButtons: {
196
196
  };
197
197
  readonly type: {
198
198
  readonly default: "default";
199
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
199
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
200
200
  readonly required: false;
201
201
  readonly validator: ((val: unknown) => boolean) | undefined;
202
202
  readonly __epPropKey: true;
@@ -239,9 +239,9 @@ export declare const EpButtons: {
239
239
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
240
240
  }>[];
241
241
  readonly link: boolean;
242
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
242
243
  readonly circle: boolean;
243
244
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
244
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
245
245
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
246
246
  readonly loading: boolean;
247
247
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -13,7 +13,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
13
13
  };
14
14
  readonly type: {
15
15
  readonly default: "default";
16
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
16
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
17
17
  readonly required: false;
18
18
  readonly validator: ((val: unknown) => boolean) | undefined;
19
19
  readonly __epPropKey: true;
@@ -55,7 +55,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
55
55
  };
56
56
  readonly type: {
57
57
  readonly default: "default";
58
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
58
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
59
59
  readonly required: false;
60
60
  readonly validator: ((val: unknown) => boolean) | undefined;
61
61
  readonly __epPropKey: true;
@@ -98,9 +98,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
98
98
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
99
99
  }>[];
100
100
  readonly link: boolean;
101
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
101
102
  readonly circle: boolean;
102
103
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
103
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
104
104
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
105
105
  readonly loading: boolean;
106
106
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -26,7 +26,7 @@ export declare const buttonsProps: {
26
26
  };
27
27
  readonly type: {
28
28
  readonly default: "default";
29
- readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
29
+ readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
30
30
  readonly required: false;
31
31
  readonly validator: ((val: unknown) => boolean) | undefined;
32
32
  readonly __epPropKey: true;
@@ -58,6 +58,7 @@ export declare const EpHeader: {
58
58
  readonly isShowAttachmentButton: boolean;
59
59
  readonly fileList: Record<string, any>[];
60
60
  readonly attachmentProps: {
61
+ readonly permission?: `${string}:${string}` | undefined;
61
62
  readonly mode?: import("el-plus/es/hooks/use-navigation").PageMode | undefined;
62
63
  readonly formatColumns?: Partial<import("element-plus").TableColumnCtx & {
63
64
  [key: string]: any;
@@ -73,7 +74,6 @@ export declare const EpHeader: {
73
74
  show?: (boolean | ((T: unknown) => boolean)) | undefined;
74
75
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
75
76
  }>[] | undefined;
76
- readonly permission?: `${string}:${string}` | undefined;
77
77
  readonly openType?: "dialog" | "normal" | undefined;
78
78
  readonly isType?: boolean | undefined;
79
79
  readonly isNote?: boolean | undefined;
@@ -146,6 +146,7 @@ export declare const EpHeader: {
146
146
  readonly isShowAttachmentButton: boolean;
147
147
  readonly fileList: Record<string, any>[];
148
148
  readonly attachmentProps: {
149
+ readonly permission?: `${string}:${string}` | undefined;
149
150
  readonly mode?: import("el-plus/es/hooks/use-navigation").PageMode | undefined;
150
151
  readonly formatColumns?: Partial<import("element-plus").TableColumnCtx & {
151
152
  [key: string]: any;
@@ -161,7 +162,6 @@ export declare const EpHeader: {
161
162
  show?: (boolean | ((T: unknown) => boolean)) | undefined;
162
163
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
163
164
  }>[] | undefined;
164
- readonly permission?: `${string}:${string}` | undefined;
165
165
  readonly openType?: "dialog" | "normal" | undefined;
166
166
  readonly isType?: boolean | undefined;
167
167
  readonly isNote?: boolean | undefined;
@@ -219,6 +219,7 @@ export declare const EpHeader: {
219
219
  readonly isShowAttachmentButton: boolean;
220
220
  readonly fileList: Record<string, any>[];
221
221
  readonly attachmentProps: {
222
+ readonly permission?: `${string}:${string}` | undefined;
222
223
  readonly mode?: import("el-plus/es/hooks/use-navigation").PageMode | undefined;
223
224
  readonly formatColumns?: Partial<import("element-plus").TableColumnCtx & {
224
225
  [key: string]: any;
@@ -234,7 +235,6 @@ export declare const EpHeader: {
234
235
  show?: (boolean | ((T: unknown) => boolean)) | undefined;
235
236
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
236
237
  }>[] | undefined;
237
- readonly permission?: `${string}:${string}` | undefined;
238
238
  readonly openType?: "dialog" | "normal" | undefined;
239
239
  readonly isType?: boolean | undefined;
240
240
  readonly isNote?: boolean | undefined;
@@ -74,6 +74,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
74
74
  readonly isShowAttachmentButton: boolean;
75
75
  readonly fileList: Record<string, any>[];
76
76
  readonly attachmentProps: {
77
+ readonly permission?: `${string}:${string}` | undefined;
77
78
  readonly mode?: import("el-plus/es/hooks").PageMode | undefined;
78
79
  readonly formatColumns?: Partial<import("element-plus").TableColumnCtx & {
79
80
  [key: string]: any;
@@ -89,7 +90,6 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
89
90
  show?: (boolean | ((T: unknown) => boolean)) | undefined;
90
91
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
91
92
  }>[] | undefined;
92
- readonly permission?: `${string}:${string}` | undefined;
93
93
  readonly openType?: "dialog" | "normal" | undefined;
94
94
  readonly isType?: boolean | undefined;
95
95
  readonly isNote?: boolean | undefined;
@@ -1,4 +1,4 @@
1
- var version = "0.0.85";
1
+ var version = "0.0.86-beta.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.mjs.map
@@ -0,0 +1,8 @@
1
+ import { ParsedPageData } from './modao.js';
2
+ export declare function isImageFile(filePath: string): boolean;
3
+ export declare class ImageParseError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare function generateImageParsePrompt(filePath: string): string;
7
+ export declare function parseImage(filePath: string): Promise<ParsedPageData>;
8
+ export declare function parseAIEditorResponse(jsonResponse: string, filePath: string): ParsedPageData;
@@ -1,8 +1,15 @@
1
1
  export type ListSectionType = 'form' | 'toolbar' | 'table' | 'dialog';
2
2
  export type DetailSectionType = 'header' | 'title' | 'form' | 'table' | 'attachment' | 'footer' | 'dialog';
3
3
  export type SectionType = ListSectionType | DetailSectionType;
4
+ export type ParseErrorType = 'access_denied' | 'content_invalid' | 'timeout' | 'network' | 'unknown';
5
+ export declare class ParseError extends Error {
6
+ type: ParseErrorType;
7
+ needsBrowserAgent: boolean;
8
+ constructor(message: string, type: ParseErrorType, needsBrowserAgent?: boolean);
9
+ }
4
10
  export type PageType = 'list' | 'detail' | 'mixed';
5
11
  export type FormFieldType = 'input' | 'select' | 'date' | 'dateRange' | 'textarea' | 'number' | 'radio' | 'checkbox' | 'unknown';
12
+ export declare const VALID_FORM_FIELD_TYPES: FormFieldType[];
6
13
  export interface FormField {
7
14
  label: string;
8
15
  fieldType: FormFieldType;
@@ -25,9 +32,23 @@ export interface ParsedPageData {
25
32
  export declare class ModaoParser {
26
33
  private browser;
27
34
  private page;
35
+ private checkAccessDenied;
36
+ private checkPageContentValid;
28
37
  init(): Promise<void>;
29
38
  close(): Promise<void>;
30
39
  parse(url: string): Promise<ParsedPageData>;
31
40
  private delay;
32
41
  }
33
42
  export declare function parseModaoPage(url: string): Promise<ParsedPageData>;
43
+ export interface ParseResult {
44
+ success: boolean;
45
+ data?: ParsedPageData;
46
+ needsBrowserAgent?: boolean;
47
+ error?: {
48
+ type: ParseErrorType;
49
+ message: string;
50
+ };
51
+ url: string;
52
+ }
53
+ export declare function parseModaoPageWithFallback(url: string): Promise<ParseResult>;
54
+ export declare function generateBrowserAgentPrompt(url: string): string;
@@ -25,7 +25,7 @@ export declare const EpButtons: {
25
25
  };
26
26
  readonly type: {
27
27
  readonly default: "default";
28
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
28
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
29
29
  readonly required: false;
30
30
  readonly validator: ((val: unknown) => boolean) | undefined;
31
31
  readonly __epPropKey: true;
@@ -68,9 +68,9 @@ export declare const EpButtons: {
68
68
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
69
69
  }>[];
70
70
  readonly link: boolean;
71
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
71
72
  readonly circle: boolean;
72
73
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
73
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
74
74
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
75
75
  readonly loading: boolean;
76
76
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -121,7 +121,7 @@ export declare const EpButtons: {
121
121
  };
122
122
  readonly type: {
123
123
  readonly default: "default";
124
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
124
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
125
125
  readonly required: false;
126
126
  readonly validator: ((val: unknown) => boolean) | undefined;
127
127
  readonly __epPropKey: true;
@@ -164,9 +164,9 @@ export declare const EpButtons: {
164
164
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
165
165
  }>[];
166
166
  readonly link: boolean;
167
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
167
168
  readonly circle: boolean;
168
169
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
169
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
170
170
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
171
171
  readonly loading: boolean;
172
172
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -196,7 +196,7 @@ export declare const EpButtons: {
196
196
  };
197
197
  readonly type: {
198
198
  readonly default: "default";
199
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
199
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
200
200
  readonly required: false;
201
201
  readonly validator: ((val: unknown) => boolean) | undefined;
202
202
  readonly __epPropKey: true;
@@ -239,9 +239,9 @@ export declare const EpButtons: {
239
239
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
240
240
  }>[];
241
241
  readonly link: boolean;
242
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
242
243
  readonly circle: boolean;
243
244
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
244
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
245
245
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
246
246
  readonly loading: boolean;
247
247
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -13,7 +13,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
13
13
  };
14
14
  readonly type: {
15
15
  readonly default: "default";
16
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
16
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
17
17
  readonly required: false;
18
18
  readonly validator: ((val: unknown) => boolean) | undefined;
19
19
  readonly __epPropKey: true;
@@ -55,7 +55,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
55
55
  };
56
56
  readonly type: {
57
57
  readonly default: "default";
58
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
58
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>>;
59
59
  readonly required: false;
60
60
  readonly validator: ((val: unknown) => boolean) | undefined;
61
61
  readonly __epPropKey: true;
@@ -98,9 +98,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
98
98
  hide?: (boolean | ((T: unknown) => boolean)) | undefined;
99
99
  }>[];
100
100
  readonly link: boolean;
101
+ readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "success" | "text" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
101
102
  readonly circle: boolean;
102
103
  readonly text: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
103
- readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "success" | "primary" | "warning" | "info" | "default" | "danger", unknown>;
104
104
  readonly size: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>;
105
105
  readonly loading: boolean;
106
106
  readonly plain: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;