vue2-client 1.8.225 → 1.8.227

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/docs/lowcode.md CHANGED
@@ -1,161 +1,188 @@
1
1
  # 奥枫低代码平台
2
2
 
3
- > 低代码平台在使用时分为两个大部分
3
+ > 奥枫低代码平台是一个前端低代码框架,它使用JSON配置来生成页面
4
+
5
+
6
+
7
+ ## 概念
8
+
9
+ ### 配置与组件
10
+
11
+ #### 结构
12
+
13
+ > 一个配置的结构是这样的
14
+ >
15
+ > ```json
16
+ > {
17
+ > "page": [
18
+ > {
19
+ > "id": "1",
20
+ > "type": "page",
21
+ > "title": "第一个页面",
22
+ > "body": [
23
+ > [
24
+ > {
25
+ > "type": "xx组件",
26
+ > "span": 12,
27
+ > "id": "xx组件_001",
28
+ > "selected": false
29
+ > }
30
+ > ],
31
+ > [...其他行]
32
+ > ]
33
+ > }
34
+ > ]
35
+ > }
36
+ > ```
37
+ > page下的每一个对象,表示一个`页面容器`
38
+ >
39
+ > body中的每一个元素,表示一`行`
40
+ >
41
+ > 每行中的每个元素,表示一个`组件`
42
+
43
+ > 组件的完整配置是这样的
44
+ >
45
+ > ```json
46
+ > {
47
+ > "type": "xx组件",
48
+ > "span": 12,
49
+ > "id": "xx组件_001",
50
+ > "selected": false,
51
+ > "props": {
52
+ > "值1": "111",
53
+ > "值2": "222",
54
+ > ...
55
+ > },
56
+ > "selfEvent": [
57
+ > "action",
58
+ > ...
59
+ > ],
60
+ > "onEvent": {
61
+ > "action": [
62
+ > {
63
+ > "emitType": "action",
64
+ > "eventType": "changeValue",
65
+ > "target": "组件_00x",
66
+ > "targetKey": "data"
67
+ > },
68
+ > {...}
69
+ > ]
70
+ > }
71
+ > }
72
+ > ```
4
73
  >
5
- > 1. 插件
6
- > 2. 渲染器
74
+ > `type`定义了组件的类型
7
75
  >
8
- > 所以在使用时要将这两个配置好,才可以正确的在编辑器中显示并编辑
9
-
10
- > ---------------- **注意** ----------------
76
+ > `span`定义了组件的宽度
77
+ >
78
+ > `selected`定义了组件当前是否被选中
79
+ >
80
+ > `id`表示组件的唯一标识
11
81
  >
12
- > 所有文件中引用其他文件,请使用@vue2-client,而不是@。
13
- > 不然琉璃中会将@符解析到自己的src下
82
+ > `props`中定义的是组件可以被改变的值
83
+ >
84
+ > `selfEvent`定义了组件可以发出哪些事件交给低代码平台处理
85
+ >
86
+ > `onEvent`表示每一个事件的具体定义
87
+ >
88
+ > `onEvent`中的每一个对象的key代表了是针对哪种事件的处理
14
89
 
90
+ > 在低代码平台中,最小的单位是`组件`,最大的单位是`页面容器`
15
91
 
16
- ## 组件注册使用
17
92
 
18
- > 组件要想在低代码平台中展示,并可编辑需要完成一下几点
19
93
 
20
- ### 插件
94
+ #### 页面容器
21
95
 
22
- > 插件的用途是,在编辑器中定义该组件有哪些**事件**,哪些可以编辑的**属性**
96
+ > 一个`页面容器`可以是`页面`,`弹框`,`抽屉`等
97
+ >
98
+ > `页面容器`是所有`组件`的容器,`组件`组成了`行`,`行`组成了`页面`
23
99
 
24
- #### 插件定义
25
100
 
26
- > 以下是一个简单的插件声明示例
27
- ```js
28
- export const XFormTableConfig = {
29
- type: 'XFormTable',
30
- properties: {
31
- queryParamsName: {
32
- type: 'string'
33
- }
34
- },
35
- selfEvent: ['action']
36
- }
37
- ```
38
101
 
39
- > `type`
40
- >
41
- > 该字段用于描述本组件使用渲染器的类型,如type: '111'
42
- > 这个组件就会去找名称为'111'的渲染器,来将配置渲染为页面
102
+ #### 组件
43
103
 
44
- > `properties`
104
+ > `组件`是低代码平台的最小单位
45
105
  >
46
- > 该字段用于描述本组件右侧属性编辑栏中,可以展示哪些属性供编辑,
47
- > 通常所有的props都需要在这里声明
106
+ > 一个组件是某种功能的封装,比如XFormTable是为了展示CRUD表单,XTree是为了展示树型结构
48
107
 
49
- > `selfEvent`
50
- >
51
- > 该字段用于描述该组件中有哪些事件会交给编辑器统一调用
52
108
 
53
- #### 插件注册
54
109
 
55
- > 定义完成后的插件,需要注册,才会被低代码平台识别
110
+ ### 事件
111
+
112
+ > 在组件中,会因为各种各样的原因,修改一些状态,比如点击搜索,切换标签
56
113
  >
57
- > 在src/utils/lowcode/registerComponentForEditor.js文件中注册插件
114
+ > 这些改动,要通过`事件`的形式,向外层触发,来通知其他组件进行联动。比如在树组件中切换了标签,根据不同的标签在CRUD表单中渲染不同的内容
58
115
  >
59
- > 以下是一个简单的实例,导入刚刚定义好的插件js文件,并将其暴露
116
+ > 这个时候我们就需要对触发改动的`组件`添加`事件`,比如在XFormTable中点击详情,我们希望打开一个抽屉,我们就需要为XFormTable添加一个点击详情的事件
117
+
118
+
119
+
120
+ ### 行为
121
+
122
+ > 行为是`组件`自身内部进行的一系列变动。比如其他组件触发了某个`事件`,这个`组件`需要对这个`事件`进行响应,并在自身内部进行一系列的更新。这就是一种行为
60
123
  >
61
- > 低代码平台会自动来扫描该文件中的定义
124
+ > 还是刚才的例子在XFormTable中点击详情,我们希望打开一个抽屉。那抽屉改变自身的显隐,就是响应点击详情`事件`的一种`行为`
62
125
 
63
126
 
64
- ```js
65
- import { XFormTableConfig } from '@vue2-client/base-client/components/common/XFormTable/lowcodeEditorRegister'
66
127
 
67
- export {
68
- XFormTableConfig
69
- }
70
- ```
128
+ ## 组件
71
129
 
72
- ### 渲染器
130
+ ### XFormTable
73
131
 
74
- > 渲染器决定了配置中的每一个组件,该用哪个VUE对象来渲染
75
- >
76
- > 渲染器不需要配置文件,只需要注册
77
- >
78
- > 在src/utils/lowcode/registerComponentForRender.js文件中
79
- >
80
- > 导入vue对象,并将其暴露即可
81
- >
82
- > vue组件名,就是插件中的type类型
83
- ```js
84
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'
132
+ #### 简介
85
133
 
86
- export {
87
- XFormTable
88
- }
89
- ```
134
+ > XFormTable用于展示CRUD表单,它在琉璃中心`CRUD表单`中配置
90
135
 
91
- ### 组件本身修改
92
136
 
93
- > 在组件中有些内容需要做出修改以适配低代码平台
94
- >
95
- > 1. mixin
96
- > 2. 事件emit
97
- > 3. props的定义
98
137
 
99
- #### mixin
138
+ #### 属性
100
139
 
101
- > 在低代码平台中,所有组件注册,组件通信都要依赖于mixin。
140
+ > XFormTable需要传入的属性有两个
102
141
  >
103
- > 在渲染器中,必须引入mixin
104
- >
105
- > mixin所在位置为:src/utils/lowcode/lowcodeComponentMixin.js
142
+ > 1. queryParamsName:琉璃中的`CRUD表单`配置名
143
+ > 2. serviceName:琉璃中的`CRUD表单`配置对应的命名空间
144
+
106
145
 
107
- ```js
108
- import lowcodeComponentMixin from '@vue2-client/utils/lowcode/lowcodeComponentMixin'
109
146
 
110
- export default {
111
- ...
112
- mixins: [lowcodeComponentMixin],
113
- ...
114
- ```
115
- #### 事件emit
147
+ #### 事件
116
148
 
117
- > 在低代码平台中,如果需要与其他组件进行通信,
118
- > 则必须使用低代码平台指定的传递事件的方式
149
+ > XFormTable触发的事件有很多种,因为它触发的事件是不固定的,是在配置中定义的
119
150
  >
120
- > 该方法已在mixin中定义,只需要调用即可
151
+ > **action**:这是XFormTable最常见的属性,在表单中点击详情触发该事件,该事件默认传递的参数为点击对应的这一行的数据
152
+
153
+
121
154
 
122
- ```js
123
- action (record, id, actionType, fun = 'action') {
124
- this.$emit(fun, record, id, actionType)
125
- this.$lowCodeEmit('action', record)
126
- }
127
- ```
155
+ ### XTreeOne
128
156
 
129
- #### props
157
+ #### 简介
130
158
 
131
- > require不能为true
159
+ > XTreeOne用于展示一个树形组件
160
+
161
+
162
+
163
+ #### 属性
164
+
165
+ > XTreeOne需要传入的属性有1个
132
166
  >
133
- > 如果require为true会导致组件无法正确初始化,要么给props一个默认值,
134
- > 要么从propsData中取值
167
+ > 1. treeData:树中显示的数据,其格式为
135
168
  >
136
- > 所有在插件中定义的properties,都会通过propsData传递,其格式为
137
- > { a: aValue, b: bValue}
169
+ > ```json
170
+ > [
171
+ > {
172
+ > "title":"111",
173
+ > "key":"111",
174
+ > "children":[]
175
+ > },
176
+ > {
177
+ > "title":"222",
178
+ > "key":"222",
179
+ > "children":[]
180
+ > }
181
+ > ]
182
+ > ```
138
183
 
139
- ## 功能新增
140
184
 
141
- ### 事件处理新增
142
- > 在mixin中,handleComponentCommunication函数新增新的case
143
- ```js
144
- handleComponentCommunication (actionType, data, targetKey = undefined, eventOriginalVM = undefined) {
145
- ...
146
- switch (actionType) {
147
- case ...
148
- case 'log':
149
- this.handleComponentLog(data)
150
- break
151
- }
152
- ...
153
- }
154
- > ```
155
- > 将新增的处理方法,声明在supportedEventType数组中
156
- ```js
157
- supportedEventType: [
158
- ...
159
- 'log'
160
- ]
161
- ```
185
+
186
+ #### 事件
187
+
188
+ > **onChange**:是该组件唯一触发的事件,在树中点击了某个节点则会被触发,该事件会携带该点击节点的key
@@ -0,0 +1,192 @@
1
+ # 奥枫低代码平台 —— 开发篇
2
+
3
+ > 低代码平台在使用时分为两个大部分
4
+ >
5
+ > 1. 插件
6
+ > 2. 渲染器
7
+ >
8
+ > 所以在使用时要将这两个配置好,才可以正确的在编辑器中显示并编辑
9
+
10
+ > ---------------- **注意** ----------------
11
+ >
12
+ > 所有文件中引用其他文件,请使用@vue2-client,而不是@。
13
+ > 不然琉璃中会将@符解析到自己的src下
14
+
15
+
16
+ ## 组件注册使用
17
+
18
+ > 组件要想在低代码平台中展示,并可编辑需要完成一下几点
19
+
20
+ ### 插件
21
+
22
+ > 插件的用途是,在编辑器中定义该组件有哪些**事件**,哪些可以编辑的**属性**
23
+
24
+ #### 插件定义
25
+
26
+ > 以下是一个简单的插件声明示例
27
+ ```js
28
+ export const XFormTableConfig = {
29
+ type: 'XFormTable',
30
+ properties: {
31
+ queryParamsName: {
32
+ type: 'string'
33
+ }
34
+ },
35
+ selfEvent: ['action']
36
+ }
37
+ ```
38
+
39
+ > `type`
40
+ >
41
+ > 该字段用于描述本组件使用渲染器的类型,如type: '111'
42
+ > 这个组件就会去找名称为'111'的渲染器,来将配置渲染为页面
43
+
44
+ > `properties`
45
+ >
46
+ > 该字段用于描述本组件右侧属性编辑栏中,可以展示哪些属性供编辑,
47
+ > 通常所有的props都需要在这里声明
48
+
49
+ > `selfEvent`
50
+ >
51
+ > 该字段用于描述该组件中有哪些事件会交给编辑器统一调用
52
+
53
+ #### 插件注册
54
+
55
+ > 定义完成后的插件,需要注册,才会被低代码平台识别
56
+ >
57
+ > 在src/utils/lowcode/registerComponentForEditor.js文件中注册插件
58
+ >
59
+ > 以下是一个简单的实例,导入刚刚定义好的插件js文件,并将其暴露
60
+ >
61
+ > 低代码平台会自动来扫描该文件中的定义
62
+
63
+
64
+ ```js
65
+ import { XFormTableConfig } from '@vue2-client/base-client/components/common/XFormTable/lowcodeEditorRegister'
66
+
67
+ export {
68
+ XFormTableConfig
69
+ }
70
+ ```
71
+
72
+ ### 渲染器
73
+
74
+ > 渲染器决定了配置中的每一个组件,该用哪个VUE对象来渲染
75
+ >
76
+ > 渲染器不需要配置文件,只需要注册
77
+ >
78
+ > 在src/utils/lowcode/registerComponentForRender.js文件中
79
+ >
80
+ > 导入vue对象,并将其暴露即可
81
+ >
82
+ > vue组件名,就是插件中的type类型
83
+ ```js
84
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'
85
+
86
+ export {
87
+ XFormTable
88
+ }
89
+ ```
90
+
91
+ ### 组件本身修改
92
+
93
+ > 在组件中有些内容需要做出修改以适配低代码平台
94
+ >
95
+ > 1. mixin
96
+ > 2. 事件emit
97
+ > 3. props的定义
98
+ > 4. 暴露data
99
+
100
+ #### mixin
101
+
102
+ > 在低代码平台中,所有组件注册,组件通信都要依赖于mixin。
103
+ >
104
+ > 在渲染器中,必须引入mixin
105
+ >
106
+ > mixin所在位置为:src/utils/lowcode/lowcodeComponentMixin.js
107
+
108
+ ```js
109
+ import lowcodeComponentMixin from '@vue2-client/utils/lowcode/lowcodeComponentMixin'
110
+
111
+ export default {
112
+ ...
113
+ mixins: [lowcodeComponentMixin],
114
+ ...
115
+ ```
116
+ #### 事件emit
117
+
118
+ > 在低代码平台中,如果需要与其他组件进行通信,
119
+ > 则必须使用低代码平台指定的传递事件的方式
120
+ >
121
+ > 该方法已在mixin中定义,只需要调用即可
122
+
123
+ ```js
124
+ action (record, id, actionType, fun = 'action') {
125
+ this.$emit(fun, record, id, actionType)
126
+ this.$lowCodeEmit('action', record)
127
+ }
128
+ ```
129
+
130
+ #### props
131
+
132
+ > require不能为true
133
+ >
134
+ > 如果require为true会导致组件无法正确初始化,要么给props一个默认值,
135
+ > 要么从propsData中取值
136
+ >
137
+ > 所有在插件中定义的properties,都会通过propsData传递,其格式为
138
+ > { a: aValue, b: bValue}
139
+
140
+
141
+
142
+ #### 暴露data
143
+
144
+ > 组件经常会改变自身的状态,在低代码平台中,组件在交互时,会用到很多其他组件的状态
145
+ >
146
+ > 比如在XFormTable中,点击了一条信息,弹出一个弹框。在这个弹框编辑完成的时候,我希望给XFormTable点击的那条信息新增几个属性。这个时候就需要在XFormTable点击的时候,就将id保存下来。但我们又不能将这个属性保存为低代码平台全局属性,因为那样会加大日后排查问题的难度
147
+ >
148
+ > 所以需要每个组件,把自身会被调用的属性自己定义,自己暴露给外界
149
+
150
+ > 组件在引入了mixin之后,会携带一个属性
151
+ >
152
+ > 这个属性就是会暴露给外界的属性,dataForLowCode
153
+
154
+ > **实现方法**
155
+ >
156
+ > 1. 直接修改属性
157
+ >
158
+ > 直接修改本组件的dataForLowCode即可
159
+ >
160
+ > 2. 调用方法
161
+ >
162
+ > 调用$lowCodeSetData(key, value)方法
163
+ >
164
+ > 3. 在emit时自动保存
165
+ >
166
+ > 在emit时,大概率是要向外界传递参数的,所以我们在$lowCodeEmit方法中,将emit的数据直接保存在了dataForLowCode中,它的key为emit的事件名
167
+
168
+
169
+
170
+ ## 功能新增
171
+
172
+ ### 事件处理新增
173
+ > 在mixin中,handleComponentCommunication函数新增新的case
174
+ ```js
175
+ handleComponentCommunication (actionType, data, targetKey = undefined, eventOriginalVM = undefined) {
176
+ ...
177
+ switch (actionType) {
178
+ case ...
179
+ case 'log':
180
+ this.handleComponentLog(data)
181
+ break
182
+ }
183
+ ...
184
+ }
185
+ > ```
186
+ > 将新增的处理方法,声明在supportedEventType数组中
187
+ ```js
188
+ supportedEventType: [
189
+ ...
190
+ 'log'
191
+ ]
192
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.8.225",
3
+ "version": "1.8.227",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",