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.
- package/CHANGELOG.md +6 -0
- package/dist/index.full.js +2 -2
- package/dist/index.full.min.js +2 -2
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +2 -2
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +2 -2
- package/docs/components/form.md +8 -0
- package/docs/components/header.md +19 -10
- package/docs/components/input.md +22 -0
- package/docs/components/search-list-page.md +3 -6
- package/docs/components/table.md +1 -1
- package/docs/pages/detail.md +17 -27
- package/docs/pages/list.md +1 -3
- package/es/cli/src/parser/image-parser.d.ts +8 -0
- package/es/cli/src/parser/modao.d.ts +21 -0
- package/es/components/buttons/index.d.ts +6 -6
- package/es/components/buttons/src/buttons-vue.d.ts +3 -3
- package/es/components/buttons/src/buttons.d.ts +1 -1
- package/es/components/header/index.d.ts +3 -3
- package/es/components/header/src/header.vue.d.ts +1 -1
- package/es/package.json.mjs +1 -1
- package/lib/cli/src/parser/image-parser.d.ts +8 -0
- package/lib/cli/src/parser/modao.d.ts +21 -0
- package/lib/components/buttons/index.d.ts +6 -6
- package/lib/components/buttons/src/buttons-vue.d.ts +3 -3
- package/lib/components/buttons/src/buttons.d.ts +1 -1
- package/lib/components/header/index.d.ts +3 -3
- package/lib/components/header/src/header.vue.d.ts +1 -1
- package/lib/package.json.js +1 -1
- package/package.json +2 -2
package/dist/index.full.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! ElPlus v0.0.
|
|
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.
|
|
4464
|
+
var version = "0.0.86-beta.0";
|
|
4465
4465
|
|
|
4466
4466
|
var globalProperties = {
|
|
4467
4467
|
install(app) {
|
package/docs/components/form.md
CHANGED
|
@@ -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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
| 按钮 | 说明 |
|
package/docs/components/input.md
CHANGED
|
@@ -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 |
|
|
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` | - |
|
package/docs/components/table.md
CHANGED
package/docs/pages/detail.md
CHANGED
|
@@ -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
|
|
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
|
|
69
|
+
if (isEdit.value && id) {
|
|
77
70
|
// TODO: 调用接口获取详情
|
|
78
71
|
}
|
|
79
72
|
</script>
|
|
80
73
|
```
|
|
81
74
|
|
|
82
|
-
## 组件文档
|
|
83
|
-
|
|
84
|
-
> 查看所有可用组件:[组件文档索引](../components/index.md)
|
package/docs/pages/list.md
CHANGED
|
@@ -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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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;
|
package/es/package.json.mjs
CHANGED
|
@@ -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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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, "" | "
|
|
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>;
|