neo-cmp-cli 1.12.9 → 1.12.11
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/dist/index2.js +1 -1
- package/dist/module/neoInitByCopy.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/utils/projectUtils/createCmpProjectByTemplate.js +1 -1
- package/docs/NeoEntityGrid /344/275/277/347/224/250/350/257/264/346/230/216.md" +1202 -0
- package/docs//345/217/257/347/224/250/345/261/236/346/200/247/351/205/215/347/275/256/351/241/271.md +801 -0
- package/package.json +5 -1
- package/template/antd-custom-cmp-template/package.json +1 -1
- package/template/asset-manage-template/package.json +1 -2
- package/template/asset-manage-template/src/utils/queryObjectData.ts +36 -0
- package/template/echarts-custom-cmp-template/package.json +1 -1
- package/template/empty-custom-cmp-template/package.json +1 -1
- package/template/neo-custom-cmp-template/package.json +4 -1
- package/template/neo-custom-cmp-template/src/utils/queryObjectData.ts +36 -0
- package/template/neo-custom-cmp-template/tsconfig.json +1 -2
- package/template/neo-h5-cmps/neo.config.js +1 -6
- package/template/neo-h5-cmps/package.json +6 -4
- package/template/neo-h5-cmps/src/utils/queryObjectData.ts +36 -0
- package/template/neo-h5-cmps/tsconfig.json +3 -4
- package/template/neo-order-cmps/package.json +1 -1
- package/template/neo-order-cmps/src/utils/queryObjectData.ts +36 -0
- package/template/neo-web-cmps/.prettierrc.js +12 -0
- package/template/neo-web-cmps/@types/neo-ui-common.d.ts +36 -0
- package/template/neo-web-cmps/README.md +99 -0
- package/template/neo-web-cmps/commitlint.config.js +59 -0
- package/template/neo-web-cmps/neo.config.js +53 -0
- package/template/neo-web-cmps/package.json +65 -0
- package/template/neo-web-cmps/public/css/base.css +283 -0
- package/template/neo-web-cmps/public/scripts/app/bluebird.js +6679 -0
- package/template/neo-web-cmps/public/template.html +13 -0
- package/template/neo-web-cmps/src/assets/css/common.scss +127 -0
- package/template/neo-web-cmps/src/assets/css/mixin.scss +47 -0
- package/template/neo-web-cmps/src/assets/img/AIBtn.gif +0 -0
- package/template/neo-web-cmps/src/assets/img/NeoCRM.jpg +0 -0
- package/template/neo-web-cmps/src/assets/img/aiLogo.png +0 -0
- package/template/neo-web-cmps/src/assets/img/card-list.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/contact-form.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/custom-form.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/custom-widget.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/data-list.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/detail.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/favicon.png +0 -0
- package/template/neo-web-cmps/src/assets/img/map.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/search.svg +1 -0
- package/template/neo-web-cmps/src/assets/img/table.svg +1 -0
- package/template/neo-web-cmps/src/components/entityGrid2__c/index.tsx +119 -0
- package/template/neo-web-cmps/src/components/entityGrid2__c/model.ts +180 -0
- package/template/neo-web-cmps/src/components/entityGrid2__c/style.scss +69 -0
- package/template/neo-web-cmps/src/components/entityGrid3__c/index.tsx +79 -0
- package/template/neo-web-cmps/src/components/entityGrid3__c/model.ts +121 -0
- package/template/neo-web-cmps/src/components/entityGrid3__c/style.scss +60 -0
- package/template/neo-web-cmps/src/components/entityGrid4__c/index.tsx +80 -0
- package/template/neo-web-cmps/src/components/entityGrid4__c/model.ts +180 -0
- package/template/neo-web-cmps/src/components/entityGrid4__c/style.scss +13 -0
- package/template/neo-web-cmps/src/components/entityGrid__c/index.tsx +77 -0
- package/template/neo-web-cmps/src/components/entityGrid__c/model.ts +180 -0
- package/template/neo-web-cmps/src/components/entityGrid__c/style.scss +13 -0
- package/template/neo-web-cmps/src/utils/axiosFetcher.ts +37 -0
- package/template/neo-web-cmps/src/utils/queryObjectData.ts +112 -0
- package/template/neo-web-cmps/src/utils/xobjects.ts +167 -0
- package/template/neo-web-cmps/tsconfig.json +39 -0
- package/template/react-custom-cmp-template/package.json +1 -1
- package/template/react-ts-custom-cmp-template/package.json +1 -1
- package/template/vue2-custom-cmp-template/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './style.scss'; // 组件内容样式
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { NeoEntityGrid } from 'neo-ui-component-web';
|
|
5
|
+
|
|
6
|
+
interface NeoEntityGridProps {
|
|
7
|
+
objectApiKey: string;
|
|
8
|
+
disableSearch?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
render: (name: string, schema: any) => React.ReactNode;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default class NeoEntityGridCmp extends React.PureComponent<NeoEntityGridProps> {
|
|
15
|
+
constructor(props: NeoEntityGridProps) {
|
|
16
|
+
super(props);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
render() {
|
|
20
|
+
const {
|
|
21
|
+
className,
|
|
22
|
+
objectApiKey,
|
|
23
|
+
pattern,
|
|
24
|
+
hiddenHeader,
|
|
25
|
+
showView,
|
|
26
|
+
enableChangeView,
|
|
27
|
+
defaultViewId,
|
|
28
|
+
disableSearch,
|
|
29
|
+
canCreate,
|
|
30
|
+
canImport,
|
|
31
|
+
editable,
|
|
32
|
+
withOrder,
|
|
33
|
+
withCheck,
|
|
34
|
+
enableToolbar,
|
|
35
|
+
disableExport,
|
|
36
|
+
disablePagination,
|
|
37
|
+
paginationPageSize,
|
|
38
|
+
autoHeight,
|
|
39
|
+
height,
|
|
40
|
+
additionalConditions,
|
|
41
|
+
onRecordChange,
|
|
42
|
+
...restProps
|
|
43
|
+
} = this.props;
|
|
44
|
+
console.log('entityGrid3__c: ', this.props, this);
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div className={`entityGrid3__c ${className}`}>
|
|
48
|
+
<NeoEntityGrid
|
|
49
|
+
render={this.props.render}
|
|
50
|
+
objectApiKey={objectApiKey || 'account'}
|
|
51
|
+
pattern={'pickView'} // Picker 列表(选择器)
|
|
52
|
+
referData={{
|
|
53
|
+
referObjectApiKey: 'opportunity', // 关联表
|
|
54
|
+
referItemApiKey: 'accountId' // 关联表对应的外键字段
|
|
55
|
+
}}
|
|
56
|
+
selectionMode="multiple" // 多选模式
|
|
57
|
+
shouldCloseDialog={true}
|
|
58
|
+
onRowSelected={(data: any, event: any) => {
|
|
59
|
+
const selectedIds = data.map(({ data }: any) => data.id);
|
|
60
|
+
const selectedNames = data.map(({ data }: any) => data.name);
|
|
61
|
+
console.log('已选中条数:', data.length);
|
|
62
|
+
console.log('已选中 ID:', selectedIds);
|
|
63
|
+
console.log('已选中名称:', selectedNames);
|
|
64
|
+
}}
|
|
65
|
+
// defaultViewId="default_view" // 默认展示的列表视图
|
|
66
|
+
hiddenHeader={hiddenHeader ?? false}
|
|
67
|
+
disableSearch={disableSearch ?? false}
|
|
68
|
+
canCreate={canCreate ?? true}
|
|
69
|
+
withOrder={withOrder ?? true}
|
|
70
|
+
withCheck={withCheck ?? true}
|
|
71
|
+
disablePagination={disablePagination ?? false}
|
|
72
|
+
paginationPageSize={paginationPageSize ?? 20}
|
|
73
|
+
autoHeight={autoHeight ?? false}
|
|
74
|
+
height={height ?? '500px'}
|
|
75
|
+
/>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 自定义组件对接编辑器的描述文件
|
|
3
|
+
*/
|
|
4
|
+
export class NeoEntityGridModel {
|
|
5
|
+
/**
|
|
6
|
+
* cmpType 为自定义组件名称,用于标识组件的唯一性
|
|
7
|
+
* 在构建时根据当前组件目录名称自动生成
|
|
8
|
+
*/
|
|
9
|
+
// cmpType: string = 'entityList__c';
|
|
10
|
+
|
|
11
|
+
// 组件名称,用于设置在编辑器左侧组件面板中展示的名称
|
|
12
|
+
label: string = 'Picker 列表';
|
|
13
|
+
|
|
14
|
+
// 组件描述,用于设置在编辑器左侧组件面板中展示的描述
|
|
15
|
+
description: string = '数据列表示例: Picker 列表';
|
|
16
|
+
|
|
17
|
+
// 分类标签,用于设置在编辑器左侧组件面板哪个分类中展示
|
|
18
|
+
// tags: string[] = ['自定义组件'];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 用于设置组件支持的页面类型
|
|
22
|
+
*
|
|
23
|
+
* 当前 NeoCRM 平台存在的页面类型:
|
|
24
|
+
* all: 1 全页面
|
|
25
|
+
* entityFormPage: 4 实体表单页
|
|
26
|
+
* customPage: 6 自定义页面
|
|
27
|
+
*/
|
|
28
|
+
// targetPage: string[] = ['all'];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 用于设置组件支持的终端类型
|
|
32
|
+
*
|
|
33
|
+
* 当前 NeoCRM 平台存在的终端类型:
|
|
34
|
+
* web: 网页端
|
|
35
|
+
* mobile: 移动端
|
|
36
|
+
*/
|
|
37
|
+
targetDevice: string = 'web';
|
|
38
|
+
|
|
39
|
+
// 组件图标,用于设置在编辑器左侧组件面板中展示的图标
|
|
40
|
+
iconUrl: string = 'https://custom-widgets.bj.bcebos.com/table.svg';
|
|
41
|
+
// iconUrl = 'https://neo-widgets.bj.bcebos.com/favicon.png';
|
|
42
|
+
|
|
43
|
+
// 初次插入页面的默认属性数据
|
|
44
|
+
defaultComProps = {
|
|
45
|
+
objectApiKey: 'account',
|
|
46
|
+
funPermission: true, // 设计器添加时绕过职能权限检查,确保能正常渲染列表
|
|
47
|
+
hiddenHeader: true,
|
|
48
|
+
canCreate: true,
|
|
49
|
+
withOrder: true,
|
|
50
|
+
withCheck: true,
|
|
51
|
+
disableSearch: false,
|
|
52
|
+
disablePagination: false,
|
|
53
|
+
paginationPageSize: 20,
|
|
54
|
+
autoHeight: false,
|
|
55
|
+
height: '500px',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 组件面板配置,用于生成编辑器右侧属性配置面板内容
|
|
60
|
+
*/
|
|
61
|
+
propsSchema = [
|
|
62
|
+
{
|
|
63
|
+
type: 'xObjectEntityList',
|
|
64
|
+
name: 'objectApiKey',
|
|
65
|
+
label: '实体对象',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'panelSwitch',
|
|
69
|
+
name: 'hiddenHeader',
|
|
70
|
+
label: '隐藏头部',
|
|
71
|
+
defaultChecked: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: 'panelSwitch',
|
|
75
|
+
name: 'disableSearch',
|
|
76
|
+
label: '禁用搜索',
|
|
77
|
+
defaultChecked: false,
|
|
78
|
+
hiddenOn: 'hiddenHeader',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'panelSwitch',
|
|
82
|
+
name: 'canCreate',
|
|
83
|
+
label: '支持新建',
|
|
84
|
+
defaultChecked: true,
|
|
85
|
+
hiddenOn: 'hiddenHeader',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'panelSwitch',
|
|
89
|
+
name: 'withOrder',
|
|
90
|
+
label: '显示序号列',
|
|
91
|
+
defaultChecked: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'panelSwitch',
|
|
95
|
+
name: 'withCheck',
|
|
96
|
+
label: '显示多选列',
|
|
97
|
+
defaultChecked: true,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'panelNumber',
|
|
101
|
+
name: 'paginationPageSize',
|
|
102
|
+
label: '每页展示条数',
|
|
103
|
+
visibleOn: '!disablePagination',
|
|
104
|
+
value: 20,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'panelSwitch',
|
|
108
|
+
name: 'autoHeight',
|
|
109
|
+
label: '高度自适应(根据父容器高度自动适配)',
|
|
110
|
+
defaultChecked: false,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'panelInput',
|
|
114
|
+
name: 'height',
|
|
115
|
+
label: '高度',
|
|
116
|
+
visibleOn: '!autoHeight',
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export default NeoEntityGridModel;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--padding-bottom: 12px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.entityGrid3__c {
|
|
6
|
+
position: relative;
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
|
|
9
|
+
/* border-bottom: 1px solid #ececec; */
|
|
10
|
+
// margin: 6px 12px;
|
|
11
|
+
padding: 6px var(--padding-bottom);
|
|
12
|
+
background-color: #fff;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* 底部工具栏「同步状态」指示器(customToolbarButtons.footer customRender) */
|
|
16
|
+
.entityGrid3__c .entityGrid3__c-status-indicator {
|
|
17
|
+
display: inline-flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
gap: 8px;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 6px 12px;
|
|
22
|
+
list-style: none;
|
|
23
|
+
font-size: 12px;
|
|
24
|
+
line-height: 1.25;
|
|
25
|
+
font-weight: 500;
|
|
26
|
+
letter-spacing: 0.02em;
|
|
27
|
+
color: #1f2937;
|
|
28
|
+
background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
|
|
29
|
+
border: 1px solid #e5e7eb;
|
|
30
|
+
border-radius: 999px;
|
|
31
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
|
|
32
|
+
user-select: none;
|
|
33
|
+
vertical-align: middle;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.entityGrid3__c .entityGrid3__c-status-indicator__dot {
|
|
37
|
+
flex-shrink: 0;
|
|
38
|
+
width: 8px;
|
|
39
|
+
height: 8px;
|
|
40
|
+
border-radius: 50%;
|
|
41
|
+
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.entityGrid3__c .entityGrid3__c-status-indicator__dot--ok {
|
|
45
|
+
background: #22c55e;
|
|
46
|
+
box-shadow:
|
|
47
|
+
0 0 0 2px rgba(255, 255, 255, 0.9),
|
|
48
|
+
0 0 0 3px rgba(34, 197, 94, 0.25);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.entityGrid3__c .entityGrid3__c-status-indicator__dot--error {
|
|
52
|
+
background: #ef4444;
|
|
53
|
+
box-shadow:
|
|
54
|
+
0 0 0 2px rgba(255, 255, 255, 0.9),
|
|
55
|
+
0 0 0 3px rgba(239, 68, 68, 0.28);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.entityGrid3__c .entityGrid3__c-status-indicator__label {
|
|
59
|
+
color: #374151;
|
|
60
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './style.scss'; // 组件内容样式
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { NeoEntityGrid } from 'neo-ui-component-web';
|
|
5
|
+
|
|
6
|
+
interface NeoEntityGridProps {
|
|
7
|
+
objectApiKey: string;
|
|
8
|
+
disableSearch?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
render: (name: string, schema: any) => React.ReactNode;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default class NeoEntityGridCmp extends React.PureComponent<NeoEntityGridProps> {
|
|
15
|
+
constructor(props: NeoEntityGridProps) {
|
|
16
|
+
super(props);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
render() {
|
|
20
|
+
const {
|
|
21
|
+
className,
|
|
22
|
+
objectApiKey,
|
|
23
|
+
pattern,
|
|
24
|
+
hiddenHeader,
|
|
25
|
+
showView,
|
|
26
|
+
enableChangeView,
|
|
27
|
+
defaultViewId,
|
|
28
|
+
disableSearch,
|
|
29
|
+
canCreate,
|
|
30
|
+
canImport,
|
|
31
|
+
editable,
|
|
32
|
+
withOrder,
|
|
33
|
+
withCheck,
|
|
34
|
+
enableToolbar,
|
|
35
|
+
disableExport,
|
|
36
|
+
disablePagination,
|
|
37
|
+
paginationPageSize,
|
|
38
|
+
autoHeight,
|
|
39
|
+
height,
|
|
40
|
+
additionalConditions,
|
|
41
|
+
onRecordChange,
|
|
42
|
+
...restProps
|
|
43
|
+
} = this.props;
|
|
44
|
+
console.log('entityGrid4__c: ', this.props, this);
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div className={`entityGrid4__c ${className}`}>
|
|
48
|
+
<NeoEntityGrid
|
|
49
|
+
render={this.props.render}
|
|
50
|
+
objectApiKey={objectApiKey || 'account'}
|
|
51
|
+
pattern={'entityView'}
|
|
52
|
+
// defaultViewId="default_view" // 默认展示的列表视图
|
|
53
|
+
hiddenHeader={hiddenHeader ?? false}
|
|
54
|
+
showView={showView ?? true}
|
|
55
|
+
enableChangeView={enableChangeView ?? true}
|
|
56
|
+
defaultViewId={defaultViewId ?? 'default_view'}
|
|
57
|
+
disableSearch={disableSearch ?? false}
|
|
58
|
+
canCreate={canCreate ?? true}
|
|
59
|
+
canImport={canImport ?? true}
|
|
60
|
+
editable={editable ?? true}
|
|
61
|
+
withOrder={withOrder ?? true}
|
|
62
|
+
withCheck={withCheck ?? true}
|
|
63
|
+
enableToolbar={enableToolbar ?? true}
|
|
64
|
+
disableExport={disableExport ?? false}
|
|
65
|
+
disablePagination={disablePagination ?? false}
|
|
66
|
+
paginationPageSize={paginationPageSize ?? 20}
|
|
67
|
+
autoHeight={autoHeight ?? false}
|
|
68
|
+
height={height ?? '500px'}
|
|
69
|
+
customEmptyMsg="暂无数据,请点击「新建」按钮创建"
|
|
70
|
+
additionalConditions={[{
|
|
71
|
+
apiKey: 'accountName',
|
|
72
|
+
value: '测试客户',
|
|
73
|
+
type: 3 // 筛选条件/操作类型(3: 包含,1: 等于)
|
|
74
|
+
// item: -11100000100014, // 筛选条件ID
|
|
75
|
+
}]}
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 自定义组件对接编辑器的描述文件
|
|
3
|
+
*/
|
|
4
|
+
export class NeoEntityGridModel {
|
|
5
|
+
/**
|
|
6
|
+
* cmpType 为自定义组件名称,用于标识组件的唯一性
|
|
7
|
+
* 在构建时根据当前组件目录名称自动生成
|
|
8
|
+
*/
|
|
9
|
+
// cmpType: string = 'entityList__c';
|
|
10
|
+
|
|
11
|
+
// 组件名称,用于设置在编辑器左侧组件面板中展示的名称
|
|
12
|
+
label: string = '列表/自定义筛选条件';
|
|
13
|
+
|
|
14
|
+
// 组件描述,用于设置在编辑器左侧组件面板中展示的描述
|
|
15
|
+
description: string = '数据列表示例: 基础大列表,支持自定义筛选条件';
|
|
16
|
+
|
|
17
|
+
// 分类标签,用于设置在编辑器左侧组件面板哪个分类中展示
|
|
18
|
+
// tags: string[] = ['自定义组件'];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 用于设置组件支持的页面类型
|
|
22
|
+
*
|
|
23
|
+
* 当前 NeoCRM 平台存在的页面类型:
|
|
24
|
+
* all: 1 全页面
|
|
25
|
+
* entityFormPage: 4 实体表单页
|
|
26
|
+
* customPage: 6 自定义页面
|
|
27
|
+
*/
|
|
28
|
+
// targetPage: string[] = ['all'];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 用于设置组件支持的终端类型
|
|
32
|
+
*
|
|
33
|
+
* 当前 NeoCRM 平台存在的终端类型:
|
|
34
|
+
* web: 网页端
|
|
35
|
+
* mobile: 移动端
|
|
36
|
+
*/
|
|
37
|
+
targetDevice: string = 'web';
|
|
38
|
+
|
|
39
|
+
// 组件图标,用于设置在编辑器左侧组件面板中展示的图标
|
|
40
|
+
iconUrl: string = 'https://custom-widgets.bj.bcebos.com/table.svg';
|
|
41
|
+
// iconUrl = 'https://neo-widgets.bj.bcebos.com/favicon.png';
|
|
42
|
+
|
|
43
|
+
// 初次插入页面的默认属性数据
|
|
44
|
+
defaultComProps = {
|
|
45
|
+
objectApiKey: 'account',
|
|
46
|
+
funPermission: true, // 设计器添加时绕过职能权限检查,确保能正常渲染列表
|
|
47
|
+
hiddenHeader: false,
|
|
48
|
+
showView: true,
|
|
49
|
+
enableChangeView: true,
|
|
50
|
+
enableToolbar: true,
|
|
51
|
+
canCreate: true,
|
|
52
|
+
canImport: true,
|
|
53
|
+
withOrder: true,
|
|
54
|
+
withCheck: true,
|
|
55
|
+
editable: true,
|
|
56
|
+
disableSearch: false,
|
|
57
|
+
disableExport: false,
|
|
58
|
+
disablePagination: false,
|
|
59
|
+
paginationPageSize: 20,
|
|
60
|
+
autoHeight: false,
|
|
61
|
+
height: '500px',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 组件面板配置,用于生成编辑器右侧属性配置面板内容
|
|
66
|
+
*/
|
|
67
|
+
propsSchema = [
|
|
68
|
+
{
|
|
69
|
+
type: 'xObjectEntityList',
|
|
70
|
+
name: 'objectApiKey',
|
|
71
|
+
label: '实体对象',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: 'dataViewIdSelect',
|
|
75
|
+
name: 'defaultViewId',
|
|
76
|
+
xObjectApiKey: 'objectApiKey',
|
|
77
|
+
label: '列表视图',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'panelSwitch',
|
|
81
|
+
name: 'hiddenHeader',
|
|
82
|
+
label: '隐藏头部',
|
|
83
|
+
defaultChecked: false,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'panelSwitch',
|
|
87
|
+
name: 'disableSearch',
|
|
88
|
+
label: '禁用搜索',
|
|
89
|
+
defaultChecked: false,
|
|
90
|
+
hiddenOn: 'hiddenHeader',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'panelSwitch',
|
|
94
|
+
name: 'showView',
|
|
95
|
+
label: '显示列表视图控制栏',
|
|
96
|
+
defaultChecked: true,
|
|
97
|
+
hiddenOn: 'hiddenHeader',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'panelSwitch',
|
|
101
|
+
name: 'enableChangeView',
|
|
102
|
+
label: '支持列表视图切换',
|
|
103
|
+
defaultChecked: true,
|
|
104
|
+
hiddenOn: 'hiddenHeader',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'panelSwitch',
|
|
108
|
+
name: 'enableToolbar',
|
|
109
|
+
label: '显示工具栏(含刷新、导出等)',
|
|
110
|
+
defaultChecked: true,
|
|
111
|
+
hiddenOn: 'hiddenHeader',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'panelSwitch',
|
|
115
|
+
name: 'canCreate',
|
|
116
|
+
label: '支持新建',
|
|
117
|
+
defaultChecked: true,
|
|
118
|
+
hiddenOn: 'hiddenHeader',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'panelSwitch',
|
|
122
|
+
name: 'canImport',
|
|
123
|
+
label: '支持导入',
|
|
124
|
+
defaultChecked: false,
|
|
125
|
+
hiddenOn: 'hiddenHeader',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'panelSwitch',
|
|
129
|
+
name: 'disableExport',
|
|
130
|
+
label: '禁用导出',
|
|
131
|
+
defaultChecked: false,
|
|
132
|
+
hiddenOn: 'hiddenHeader',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'panelSwitch',
|
|
136
|
+
name: 'withOrder',
|
|
137
|
+
label: '显示序号列',
|
|
138
|
+
defaultChecked: true,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'panelSwitch',
|
|
142
|
+
name: 'withCheck',
|
|
143
|
+
label: '显示多选列',
|
|
144
|
+
defaultChecked: true,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'panelSwitch',
|
|
148
|
+
name: 'editable',
|
|
149
|
+
label: '支持单元格编辑',
|
|
150
|
+
defaultChecked: true,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'panelSwitch',
|
|
154
|
+
name: 'disablePagination',
|
|
155
|
+
label: '是否禁用分页',
|
|
156
|
+
defaultChecked: false,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'panelNumber',
|
|
160
|
+
name: 'paginationPageSize',
|
|
161
|
+
label: '每页展示条数',
|
|
162
|
+
visibleOn: '!disablePagination',
|
|
163
|
+
value: 20,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'panelSwitch',
|
|
167
|
+
name: 'autoHeight',
|
|
168
|
+
label: '高度自适应(根据父容器高度自动适配)',
|
|
169
|
+
defaultChecked: false,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'panelInput',
|
|
173
|
+
name: 'height',
|
|
174
|
+
label: '高度',
|
|
175
|
+
visibleOn: '!autoHeight',
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export default NeoEntityGridModel;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './style.scss'; // 组件内容样式
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { NeoEntityGrid } from 'neo-ui-component-web';
|
|
5
|
+
|
|
6
|
+
interface NeoEntityGridProps {
|
|
7
|
+
objectApiKey: string;
|
|
8
|
+
disableSearch?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
render: (name: string, schema: any) => React.ReactNode;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default class NeoEntityGridCmp extends React.PureComponent<NeoEntityGridProps> {
|
|
15
|
+
constructor(props: NeoEntityGridProps) {
|
|
16
|
+
super(props);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
render() {
|
|
20
|
+
const {
|
|
21
|
+
className,
|
|
22
|
+
objectApiKey,
|
|
23
|
+
pattern,
|
|
24
|
+
hiddenHeader,
|
|
25
|
+
showView,
|
|
26
|
+
enableChangeView,
|
|
27
|
+
defaultViewId,
|
|
28
|
+
disableSearch,
|
|
29
|
+
canCreate,
|
|
30
|
+
canImport,
|
|
31
|
+
editable,
|
|
32
|
+
withOrder,
|
|
33
|
+
withCheck,
|
|
34
|
+
enableToolbar,
|
|
35
|
+
disableExport,
|
|
36
|
+
disablePagination,
|
|
37
|
+
paginationPageSize,
|
|
38
|
+
autoHeight,
|
|
39
|
+
height,
|
|
40
|
+
additionalConditions,
|
|
41
|
+
onRecordChange,
|
|
42
|
+
...restProps
|
|
43
|
+
} = this.props;
|
|
44
|
+
console.log('entityGrid__c: ', this.props, this);
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div className={`entityGrid__c ${className}`}>
|
|
48
|
+
<NeoEntityGrid
|
|
49
|
+
render={this.props.render}
|
|
50
|
+
objectApiKey={objectApiKey || 'account'}
|
|
51
|
+
pattern={'entityView'}
|
|
52
|
+
// defaultViewId="default_view" // 默认展示的列表视图
|
|
53
|
+
hiddenHeader={hiddenHeader ?? false}
|
|
54
|
+
showView={showView ?? true}
|
|
55
|
+
enableChangeView={enableChangeView ?? true}
|
|
56
|
+
defaultViewId={defaultViewId ?? 'default_view'}
|
|
57
|
+
disableSearch={disableSearch ?? false}
|
|
58
|
+
canCreate={canCreate ?? true}
|
|
59
|
+
canImport={canImport ?? true}
|
|
60
|
+
editable={editable ?? true}
|
|
61
|
+
withOrder={withOrder ?? true}
|
|
62
|
+
withCheck={withCheck ?? true}
|
|
63
|
+
enableToolbar={enableToolbar ?? true}
|
|
64
|
+
disableExport={disableExport ?? false}
|
|
65
|
+
disablePagination={disablePagination ?? false}
|
|
66
|
+
paginationPageSize={paginationPageSize ?? 20}
|
|
67
|
+
autoHeight={autoHeight ?? false}
|
|
68
|
+
height={height ?? '500px'}
|
|
69
|
+
customEmptyMsg="暂无数据,请点击「新建」按钮创建"
|
|
70
|
+
onSinglerClick={(clickData: any) => {
|
|
71
|
+
console.log('点击了列表项', clickData);
|
|
72
|
+
}}
|
|
73
|
+
/>
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
}
|