fmui-base 2.2.86 → 2.2.87
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/README.md +1 -0
- package/lib/db/db.js +31 -0
- package/lib/db/variables.js +2 -0
- package/lib/form/form.js +19 -15
- package/lib/form/formExtHelper.js +152 -0
- package/lib/form/form_common/.placeholder.js +5 -0
- package/lib/form/subForm.js +11 -6
- package/lib/form/table.js +16 -14
- package/lib/selectMember/README.md +420 -0
- package/lib/selectMember/select.js +51 -3
- package/lib/tblform/FlowCommentPane.js +252 -0
- package/lib/tblform/README.md +483 -0
- package/lib/tblform/TblForm.js +427 -0
- package/lib/tblform/formCommon.js +128 -0
- package/lib/tblform/formFieldProps.js +44 -0
- package/lib/tblform/formSaveUtils.js +117 -0
- package/lib/tblform/index.js +109 -0
- package/lib/tblform/pureFormAdapter.js +159 -0
- package/package.json +1 -1
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
# SelectMember 移动端选人组件
|
|
2
|
+
|
|
3
|
+
移动端选人弹层组件,支持选择平台**用户、组织、岗位、群组、角色、个人群组**等,并提供常用、定密、范围限制、已选回显等能力。适用于流程表单、业务表单中的「选人 / 选组织」字段。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 目录结构
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
src/selectMember/
|
|
11
|
+
├── select.jsx # 组件主文件
|
|
12
|
+
├── select.less # 样式
|
|
13
|
+
├── utils.js # 工具方法
|
|
14
|
+
├── index.js # 导出
|
|
15
|
+
└── README.md
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 引入方式
|
|
21
|
+
|
|
22
|
+
```jsx
|
|
23
|
+
import SelectMember from 'fmui-base/lib/selectMember';
|
|
24
|
+
// 或工程内相对路径
|
|
25
|
+
import SelectMember from '../selectMember';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 使用前准备
|
|
31
|
+
|
|
32
|
+
组件依赖全局登录上下文(`getLoginUserInfo()`),需保证页面已登录且可获取:
|
|
33
|
+
|
|
34
|
+
| 字段 | 说明 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| `token` | 接口鉴权 Bearer Token |
|
|
37
|
+
| `context` | 接口根路径(如 `/dingisv`) |
|
|
38
|
+
| `orgId` | 当前用户组织 ID(可选,用于本组织等逻辑) |
|
|
39
|
+
| `baseCorpId` | 企业/单位 ID |
|
|
40
|
+
|
|
41
|
+
传统集成方式可在 `index.html` 中放置隐藏域,在 `getUser` 回调里写入(与旧版文档一致,**非必须**,以项目实际登录方式为准):
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<input type="hidden" id="token" value="" />
|
|
45
|
+
<input type="hidden" id="baseContext" value="" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
$("#token").val(result.token);
|
|
50
|
+
$("#baseContext").val(result.baseContext);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 快速开始
|
|
56
|
+
|
|
57
|
+
```jsx
|
|
58
|
+
import React from 'react';
|
|
59
|
+
import SelectMember from 'fmui-base/lib/selectMember';
|
|
60
|
+
|
|
61
|
+
export default class DemoPage extends React.Component {
|
|
62
|
+
constructor(props) {
|
|
63
|
+
super(props);
|
|
64
|
+
this.state = {
|
|
65
|
+
selectValue: [],
|
|
66
|
+
fieldDataValue: '',
|
|
67
|
+
scopeTable: 'cmp_scope',
|
|
68
|
+
fieldTable: 'oa_meeting_apply_record',
|
|
69
|
+
fieldData: 'attend_user',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
render() {
|
|
74
|
+
const t = this;
|
|
75
|
+
return (
|
|
76
|
+
<SelectMember
|
|
77
|
+
ref="SelectMember"
|
|
78
|
+
required
|
|
79
|
+
readOnly={false}
|
|
80
|
+
placeholder="请选择"
|
|
81
|
+
label="参会人员"
|
|
82
|
+
checkType="checkbox"
|
|
83
|
+
code="common,user,org,station,group"
|
|
84
|
+
chooseType="userAndOrg,userAndGroup"
|
|
85
|
+
commonUsedData={[]}
|
|
86
|
+
showType="list"
|
|
87
|
+
isDelete
|
|
88
|
+
includeDel="0"
|
|
89
|
+
fieldDataValue={t.state.fieldDataValue}
|
|
90
|
+
scopeTable={t.state.scopeTable}
|
|
91
|
+
fieldTable={t.state.fieldTable}
|
|
92
|
+
fieldData={t.state.fieldData}
|
|
93
|
+
onChange={(value) => {
|
|
94
|
+
t.setState({ selectValue: value });
|
|
95
|
+
}}
|
|
96
|
+
/>
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Props
|
|
105
|
+
|
|
106
|
+
### 基础展示
|
|
107
|
+
|
|
108
|
+
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|
|
109
|
+
|------|------|--------|------|------|
|
|
110
|
+
| `label` | string | - | 否 | 字段标题 |
|
|
111
|
+
| `required` | boolean | `false` | 否 | 是否显示必填标识 |
|
|
112
|
+
| `readOnly` | boolean | `false` | 否 | 只读;只读且超过 10 条时折叠展示 |
|
|
113
|
+
| `placeholder` | string | - | 否 | 未选择时的提示文案 |
|
|
114
|
+
| `showType` | string | - | **是** | 展示方式:`button` 按钮 / `text` 文本 / `list` 标签列表 |
|
|
115
|
+
| `isDelete` | boolean | - | `showType=list` 时必填 | 标签模式下是否显示删除按钮 |
|
|
116
|
+
| `checkType` | string | - | **是** | 单选 `radio` / 多选 `checkbox` |
|
|
117
|
+
|
|
118
|
+
### 选人场景
|
|
119
|
+
|
|
120
|
+
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|
|
121
|
+
|------|------|--------|------|------|
|
|
122
|
+
| `code` | string | - | **是** | 场景编码,逗号分隔,见 [code 说明](#code-场景编码) |
|
|
123
|
+
| `chooseType` | string | - | **是** | 各 Tab 下可选范围,逗号分隔,见 [chooseType 说明](#choosetype-可选范围) |
|
|
124
|
+
| `chooseObj` | string | - | 否 | 与 `chooseType` 类似,用于扩展场景接口 `getSceneInfo` 时透传 |
|
|
125
|
+
| `commonUsedData` | array | `[]` | 否 | 「常用」Tab 预置可选数据(仅用户) |
|
|
126
|
+
|
|
127
|
+
**code 场景编码**
|
|
128
|
+
|
|
129
|
+
| 值 | 说明 |
|
|
130
|
+
|----|------|
|
|
131
|
+
| `common` | 常用 |
|
|
132
|
+
| `user` | 用户 |
|
|
133
|
+
| `org` | 组织(`inst`、`dep` 会映射为组织相关逻辑) |
|
|
134
|
+
| `station` | 岗位 |
|
|
135
|
+
| `group` | 群组 |
|
|
136
|
+
| `personalGroup` / `personGroup` | 个人群组 |
|
|
137
|
+
| `role` | 角色 |
|
|
138
|
+
| `duty` | 职务 |
|
|
139
|
+
| `politicalOutlook` | 政治面貌 |
|
|
140
|
+
|
|
141
|
+
示例:`code="common,user,org,station,group"`
|
|
142
|
+
|
|
143
|
+
**chooseType 可选范围**
|
|
144
|
+
|
|
145
|
+
组织 Tab(与 `user`、`org` 配合):
|
|
146
|
+
|
|
147
|
+
| 值 | 说明 |
|
|
148
|
+
|----|------|
|
|
149
|
+
| `userAndOrg` | 组织与用户均可选(Tab 展示为组织树) |
|
|
150
|
+
| `userNotOrg` | 仅可选用户,不可选组织 |
|
|
151
|
+
| `org` | 仅可选组织 |
|
|
152
|
+
|
|
153
|
+
群组 Tab(与 `group` 配合):
|
|
154
|
+
|
|
155
|
+
| 值 | 说明 |
|
|
156
|
+
|----|------|
|
|
157
|
+
| `userAndGroup` | 群组与用户均可选 |
|
|
158
|
+
| `userNotGroup` | 仅可选群组下用户 |
|
|
159
|
+
| `group` | 仅可选群组 |
|
|
160
|
+
|
|
161
|
+
个人群组 Tab(与 `personalGroup` / `personGroup` 配合):
|
|
162
|
+
|
|
163
|
+
| 值 | 说明 |
|
|
164
|
+
|----|------|
|
|
165
|
+
| `userAndPersonalGroup` / `userAndPersonGroup` | 个人群组与用户均可选 |
|
|
166
|
+
| `userNotPersonalGroup` / `userNotPersonGroup` | 仅可选用户 |
|
|
167
|
+
| `personalGroup` / `personGroup` | 仅可选个人群组 |
|
|
168
|
+
|
|
169
|
+
多个 Tab 组合时用英文逗号连接,例如:`chooseType="userAndOrg,userAndGroup"`
|
|
170
|
+
|
|
171
|
+
### 已选数据回显(编辑 / 查看)
|
|
172
|
+
|
|
173
|
+
两种方式**二选一**:
|
|
174
|
+
|
|
175
|
+
#### 方式 A:scope 表(推荐,与后端一致)
|
|
176
|
+
|
|
177
|
+
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|
|
178
|
+
|------|------|--------|------|------|
|
|
179
|
+
| `scopeTable` | string | `cmp_scope` | 编辑场景必填* | scope 存储表名 |
|
|
180
|
+
| `fieldTable` | string | - | 编辑场景必填* | 业务表表名 |
|
|
181
|
+
| `fieldData` | string | - | 编辑场景必填* | 业务表字段名 |
|
|
182
|
+
| `fieldDataValue` | string | - | 编辑场景必填* | 业务数据主键 / 关联值 |
|
|
183
|
+
| `includeDel` | string | 默认回显已删除 | 否 | `0` 不回显已删除用户 / `1` 回显 |
|
|
184
|
+
|
|
185
|
+
\* 与 `defaultValue` 二选一;需配合 `ref` 调用 `initSelectData()`。
|
|
186
|
+
|
|
187
|
+
#### 方式 B:defaultValue(自定义存储)
|
|
188
|
+
|
|
189
|
+
| 属性 | 类型 | 说明 |
|
|
190
|
+
|------|------|------|
|
|
191
|
+
| `defaultValue` | array | 已选数据 JSON 数组,格式见 [数据格式](#数据格式) |
|
|
192
|
+
|
|
193
|
+
未使用 scope 四元组时,在 `setState` 传入 `defaultValue` 或 `fieldDataValue`(数组)后调用 `initSelectData()`。
|
|
194
|
+
|
|
195
|
+
### 范围限制
|
|
196
|
+
|
|
197
|
+
| 属性 | 类型 | 必填 | 说明 |
|
|
198
|
+
|------|------|------|------|
|
|
199
|
+
| `queryLimit` | string | 否 | `1` 自身及下级;`2` 仅自身;`3` 查询传入数据;`4` 自身及直接下级;`5` 自身及所有下级 |
|
|
200
|
+
| `limitData` | string | `queryLimit` 有值时必填 | 与 `queryLimit` 对应的 ID,逗号分隔 |
|
|
201
|
+
|
|
202
|
+
### 定密与其它
|
|
203
|
+
|
|
204
|
+
| 属性 | 类型 | 说明 |
|
|
205
|
+
|------|------|------|
|
|
206
|
+
| `showSecret` | boolean | 开启定密后仅可选用户(`code` 强制为 `user`) |
|
|
207
|
+
| `secretlevel` | string | 密级:`1` 绝密 / `2` 机密 / `3` 秘密 / `4` 非密 |
|
|
208
|
+
| `isShowInMyOrg` | boolean | 是否直接展示当前用户所在组织(可与系统参数 `selUserOurorg` 联动) |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 事件
|
|
213
|
+
|
|
214
|
+
### onChange
|
|
215
|
+
|
|
216
|
+
选择变更或初始化回显完成后触发。
|
|
217
|
+
|
|
218
|
+
```jsx
|
|
219
|
+
onChange={(value, fieldDataValue) => {
|
|
220
|
+
// value: 已选 scope 列表(数组)
|
|
221
|
+
// fieldDataValue: 使用 scope 表初始化时,可能带回业务主键(第二参数,可选)
|
|
222
|
+
}}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**返回值示例:**
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
[
|
|
229
|
+
{
|
|
230
|
+
"scopeType": "user",
|
|
231
|
+
"scopeValue": "d5ced277574011e780b3000c29ee419e",
|
|
232
|
+
"scopeName": "测试用户",
|
|
233
|
+
"imageId": ""
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"scopeType": "org",
|
|
237
|
+
"scopeValue": "d5ced277574011e780b3000c29ee412e",
|
|
238
|
+
"scopeName": "测试部门"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"scopeType": "station",
|
|
242
|
+
"scopeValue": "d5ced277574011e780b3001c29ee412e",
|
|
243
|
+
"scopeName": "测试岗位"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"scopeType": "group",
|
|
247
|
+
"scopeValue": "d5ced277534011e780b3001c29ee412e",
|
|
248
|
+
"scopeName": "测试群组"
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
| scopeType | 说明 |
|
|
254
|
+
|-----------|------|
|
|
255
|
+
| `user` | 用户 |
|
|
256
|
+
| `org` | 组织 |
|
|
257
|
+
| `station` | 岗位 |
|
|
258
|
+
| `group` | 群组 |
|
|
259
|
+
| `role` | 角色(按实际接口返回) |
|
|
260
|
+
|
|
261
|
+
`imageId`:钉钉等场景下用户头像 ID,常用 Tab / 用户类型建议返回。
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 实例方法(ref)
|
|
266
|
+
|
|
267
|
+
| 方法 | 参数 | 说明 |
|
|
268
|
+
|------|------|------|
|
|
269
|
+
| `initSelectData(bizSn?, fieldId?)` | 验签业务号、字段 DOM 类名(可选) | 根据 `scopeTable` 四元组或 `defaultValue` / `fieldDataValue` 拉取并回显已选数据 |
|
|
270
|
+
| `dialogClearItem(isShowDialog)` | `boolean` | 清空已选;`true` 时弹确认框 |
|
|
271
|
+
|
|
272
|
+
### initSelectData 示例(scope 表)
|
|
273
|
+
|
|
274
|
+
```jsx
|
|
275
|
+
this.setState({
|
|
276
|
+
fieldDataValue: '5381b1a3cf41410194d385132cdc8442',
|
|
277
|
+
scopeTable: 'oa_meeting_scope',
|
|
278
|
+
fieldTable: 'oa_meeting_apply_record',
|
|
279
|
+
fieldData: 'attend_user',
|
|
280
|
+
}, () => {
|
|
281
|
+
this.refs.SelectMember.initSelectData();
|
|
282
|
+
});
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### initSelectData 示例(defaultValue)
|
|
286
|
+
|
|
287
|
+
```jsx
|
|
288
|
+
this.setState({
|
|
289
|
+
defaultValue: [
|
|
290
|
+
{ scopeType: 'user', scopeValue: 'xxx', scopeName: '张三', imageId: '' },
|
|
291
|
+
],
|
|
292
|
+
}, () => {
|
|
293
|
+
this.refs.SelectMember.initSelectData();
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### dialogClearItem 示例
|
|
298
|
+
|
|
299
|
+
```jsx
|
|
300
|
+
// 带确认框清空
|
|
301
|
+
this.refs.SelectMember.dialogClearItem(true);
|
|
302
|
+
|
|
303
|
+
// 直接清空
|
|
304
|
+
this.refs.SelectMember.dialogClearItem(false);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 数据格式
|
|
310
|
+
|
|
311
|
+
### defaultValue / onChange 单项结构
|
|
312
|
+
|
|
313
|
+
```javascript
|
|
314
|
+
{
|
|
315
|
+
scopeType: 'user', // user | org | station | group | role 等
|
|
316
|
+
scopeValue: 'id', // 主键
|
|
317
|
+
scopeName: '显示名称',
|
|
318
|
+
imageId: '' // 可选,用户头像(钉钉)
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### commonUsedData(常用 Tab,仅用户)
|
|
323
|
+
|
|
324
|
+
```javascript
|
|
325
|
+
[
|
|
326
|
+
{
|
|
327
|
+
scopeType: 'user',
|
|
328
|
+
scopeValue: 'd5ced277574011e780b3000c29ee419e',
|
|
329
|
+
scopeName: '测试用户',
|
|
330
|
+
imageId: '',
|
|
331
|
+
},
|
|
332
|
+
]
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 相关接口
|
|
338
|
+
|
|
339
|
+
组件内部会调用平台选人接口(需登录 Token),主要包括:
|
|
340
|
+
|
|
341
|
+
| 接口 | 说明 |
|
|
342
|
+
|------|------|
|
|
343
|
+
| `GET {context}/api/m/cmp/popuser/mobile/getSceneInfo` | 扩展场景 Tab 配置 |
|
|
344
|
+
| `GET {context}/api/m/cmp/popuser/mobile/getOfficePopuser` | 按 scope 表回显已选数据 |
|
|
345
|
+
|
|
346
|
+
参数与 `scopeTable`、`fieldTable`、`fieldData`、`fieldDataValue`、`includeDel` 对应。
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 注意事项
|
|
351
|
+
|
|
352
|
+
1. **scope 四元组配套使用**:`scopeTable`、`fieldTable`、`fieldData`、`fieldDataValue` 需与后端存储一致;`scopeTable` 缺省为 `cmp_scope`。
|
|
353
|
+
2. **回显方式二选一**:scope 表 **或** `defaultValue` / 数组型 `fieldDataValue`,均需通过 `ref` 调用 `initSelectData()`。
|
|
354
|
+
3. **组织与用户合并**:`userAndOrg` 时组织 Tab 展示组织树,可同时选组织与用户。
|
|
355
|
+
4. **群组下选用户**:`chooseType` 需包含 `userAndGroup` 或 `userNotGroup`。
|
|
356
|
+
5. **showType=list** 时必须传 `isDelete`,控制标签是否可删。
|
|
357
|
+
6. **扩展 Tab**:`code` 含非内置类型时会请求 `getSceneInfo` 动态加载扩展页签(参见版本 2.2.38+ 扩展页签能力)。
|
|
358
|
+
7. **系统参数**:党员筛选(`selUserIsDJ`)、默认本组织(`selUserOurorg`)、隐藏 Tab(`selUserHideTag`)等由后台系统参数控制,无需在组件上重复配置。
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## 完整示例(编辑场景)
|
|
363
|
+
|
|
364
|
+
```jsx
|
|
365
|
+
import React from 'react';
|
|
366
|
+
import SelectMember from 'fmui-base/lib/selectMember';
|
|
367
|
+
|
|
368
|
+
export default class MeetingForm extends React.Component {
|
|
369
|
+
constructor(props) {
|
|
370
|
+
super(props);
|
|
371
|
+
this.state = {
|
|
372
|
+
recordId: props.recordId || '',
|
|
373
|
+
attendees: [],
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
componentDidMount() {
|
|
378
|
+
if (this.state.recordId) {
|
|
379
|
+
this.initAttendees();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
initAttendees() {
|
|
384
|
+
const t = this;
|
|
385
|
+
t.setState({ fieldDataValue: t.state.recordId }, () => {
|
|
386
|
+
t.refs.attendUser.initSelectData();
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
render() {
|
|
391
|
+
const t = this;
|
|
392
|
+
return (
|
|
393
|
+
<div>
|
|
394
|
+
<SelectMember
|
|
395
|
+
ref="attendUser"
|
|
396
|
+
label="参会人"
|
|
397
|
+
required
|
|
398
|
+
checkType="checkbox"
|
|
399
|
+
code="common,user,org"
|
|
400
|
+
chooseType="userAndOrg"
|
|
401
|
+
showType="list"
|
|
402
|
+
isDelete
|
|
403
|
+
scopeTable="oa_meeting_scope"
|
|
404
|
+
fieldTable="oa_meeting_apply_record"
|
|
405
|
+
fieldData="attend_user"
|
|
406
|
+
fieldDataValue={t.state.fieldDataValue}
|
|
407
|
+
includeDel="0"
|
|
408
|
+
onChange={(value) => t.setState({ attendees: value })}
|
|
409
|
+
/>
|
|
410
|
+
</div>
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## 版本说明
|
|
419
|
+
|
|
420
|
+
- 选人组件能力随 `fmui-base` 版本迭代,详见根目录 `README.md` 更新日志(如:扩展页签、回显已删除用户、隐藏页签、`baseCorpId` 修复等)。
|
|
@@ -312,7 +312,8 @@ var Page = function (_React$Component) {
|
|
|
312
312
|
isShowSelectCpc: isShowSelectCpc, //是否显示党员选项
|
|
313
313
|
curSelectCpc: "1", //1是党员,0是非党员
|
|
314
314
|
selectCpcOptions: [{ value: "1", checked: true, content: '党员', disable: false }, { value: "0", checked: false, content: '非党员', disable: false }],
|
|
315
|
-
selUserOurorg: "0" //是否默认打开本组织
|
|
315
|
+
selUserOurorg: "0", //是否默认打开本组织
|
|
316
|
+
hiddenTabCodes: [] //隐藏的tab页code列表
|
|
316
317
|
};
|
|
317
318
|
|
|
318
319
|
_db2.default.FlowModuleAPI.getSysSettingByMark({ mark: 'selUserIsDJ' }).then(function (content) {
|
|
@@ -342,14 +343,49 @@ var Page = function (_React$Component) {
|
|
|
342
343
|
}).catch(function (error) {
|
|
343
344
|
console.error(error);
|
|
344
345
|
});
|
|
346
|
+
_db2.default.FlowModuleAPI.getSysSettingByMark({ mark: 'selUserHideTag' }).then(function (content) {
|
|
347
|
+
var hiddenTabCodes = [];
|
|
348
|
+
if (content && typeof content === "string") {
|
|
349
|
+
hiddenTabCodes = content.split(",").map(function (item) {
|
|
350
|
+
return item.trim();
|
|
351
|
+
}).filter(function (item) {
|
|
352
|
+
return item.length > 0;
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
_this.setState({ hiddenTabCodes: hiddenTabCodes }, function () {
|
|
356
|
+
if (hiddenTabCodes.indexOf(_this.state.activeKey) >= 0) {
|
|
357
|
+
var firstVisibleTabKey = _this.getFirstVisibleTabKey();
|
|
358
|
+
if (firstVisibleTabKey) {
|
|
359
|
+
_this.handleTabChange({ activeKey: firstVisibleTabKey, active: firstVisibleTabKey });
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}).catch(function (error) {
|
|
364
|
+
console.error(error);
|
|
365
|
+
});
|
|
345
366
|
_this.listener = _this.handleHidePopup.bind(_this);
|
|
346
367
|
return _this;
|
|
347
368
|
}
|
|
348
369
|
|
|
349
|
-
|
|
370
|
+
_createClass(Page, [{
|
|
371
|
+
key: 'getFirstVisibleTabKey',
|
|
372
|
+
value: function getFirstVisibleTabKey() {
|
|
373
|
+
var code = this.getRealCode();
|
|
374
|
+
if (!code) {
|
|
375
|
+
return "";
|
|
376
|
+
}
|
|
377
|
+
var codeList = code.split(",");
|
|
378
|
+
for (var i = 0; i < codeList.length; i++) {
|
|
379
|
+
if (codeList[i]) {
|
|
380
|
+
return codeList[i];
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return "";
|
|
384
|
+
}
|
|
350
385
|
|
|
386
|
+
//在生命周期的第一次render后不会被调用,但是会在之后的每次render中被调用 = 当父组件再次传送props
|
|
351
387
|
|
|
352
|
-
|
|
388
|
+
}, {
|
|
353
389
|
key: 'componentWillReceiveProps',
|
|
354
390
|
value: function componentWillReceiveProps() {
|
|
355
391
|
this.setState({
|
|
@@ -619,6 +655,18 @@ var Page = function (_React$Component) {
|
|
|
619
655
|
value: function getRealCode() {
|
|
620
656
|
// var chooseObj = this.state.chooseObj;
|
|
621
657
|
var code = this.state.chooseCode;
|
|
658
|
+
var hiddenTabCodes = this.state.hiddenTabCodes || [];
|
|
659
|
+
if (code && hiddenTabCodes.length > 0) {
|
|
660
|
+
var codeList = code.split(",");
|
|
661
|
+
var finalCodeList = [];
|
|
662
|
+
for (var i = 0; i < codeList.length; i++) {
|
|
663
|
+
var item = codeList[i];
|
|
664
|
+
if (item && hiddenTabCodes.indexOf(item) < 0) {
|
|
665
|
+
finalCodeList.push(item);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
code = finalCodeList.join(",");
|
|
669
|
+
}
|
|
622
670
|
// if(chooseObj){
|
|
623
671
|
// code = this.state.chooseObj;
|
|
624
672
|
// }else{
|