@gingkoo/base-server 0.0.4-alpha.42 → 0.0.4-alpha.44
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/backend/common/page_engine.js +13 -31
- package/backend/common/services/user.js +14 -10
- package/backend/common/wechat/routers/auth.js +4 -2
- package/backend/routers/idm.js +7 -6
- package/backend/routers/team/routers/membermanage.js +28 -34
- package/backend/views/members_manage/index.xml +17 -17
- package/dist/base-assets/css/index-cef99094.css.gz +0 -0
- package/dist/base-assets/js/blockDiagram-38ab4fdb-bc9e873e.js.gz +0 -0
- package/dist/base-assets/js/c4Diagram-3d4e48cf-78beb511.js.gz +0 -0
- package/dist/base-assets/js/clike-18da258f.js.gz +0 -0
- package/dist/base-assets/js/clojure-95e5d8b6.js.gz +0 -0
- package/dist/base-assets/js/css-1962435d.js.gz +0 -0
- package/dist/base-assets/js/edges-e0da2a9e-afcbcc02.js.gz +0 -0
- package/dist/base-assets/js/erDiagram-9861fffd-3bbaf02b.js.gz +0 -0
- package/dist/base-assets/js/flowDb-956e92f1-eb71c116.js.gz +0 -0
- package/dist/base-assets/js/flowDiagram-66a62f08-0638f338.js.gz +0 -0
- package/dist/base-assets/js/flowchart-elk-definition-4a651766-c40d3260.js.gz +0 -0
- package/dist/base-assets/js/ganttDiagram-c361ad54-c6068d28.js.gz +0 -0
- package/dist/base-assets/js/gherkin-11c8171e.js.gz +0 -0
- package/dist/base-assets/js/gitGraphDiagram-72cf32ee-af757237.js.gz +0 -0
- package/dist/base-assets/js/graph-b6648ef9.js.gz +0 -0
- package/dist/base-assets/js/idl-217b7099.js.gz +0 -0
- package/dist/base-assets/js/index-2df38d93.js.gz +0 -0
- package/dist/base-assets/js/index-3862675e-afad9ad1.js.gz +0 -0
- package/dist/base-assets/js/index-813f1f5c.js.gz +0 -0
- package/dist/base-assets/js/javascript-d3264b01.js.gz +0 -0
- package/dist/base-assets/js/journeyDiagram-49397b02-098f1f31.js.gz +0 -0
- package/dist/base-assets/js/katex-bdfb938e.js.gz +0 -0
- package/dist/base-assets/js/layout-8db5bba1.js.gz +0 -0
- package/dist/base-assets/js/markdown-4d4d4726.js.gz +0 -0
- package/dist/base-assets/js/mermaid.core-29700be8.js.gz +0 -0
- package/dist/base-assets/js/mindmap-definition-fc14e90a-ddbeea5b.js.gz +0 -0
- package/dist/base-assets/js/perl-eb9263df.js.gz +0 -0
- package/dist/base-assets/js/php-9649f957.js.gz +0 -0
- package/dist/base-assets/js/pieDiagram-8a3498a8-8b0d9a47.js.gz +0 -0
- package/dist/base-assets/js/quadrantDiagram-120e2f19-72c91a15.js.gz +0 -0
- package/dist/base-assets/js/react-cropper.es-3391d3b8.js.gz +0 -0
- package/dist/base-assets/js/requirementDiagram-deff3bca-2b7c51a8.js.gz +0 -0
- package/dist/base-assets/js/sankeyDiagram-04a897e0-96658954.js.gz +0 -0
- package/dist/base-assets/js/sequenceDiagram-704730f1-3b8a4b2e.js.gz +0 -0
- package/dist/base-assets/js/soy-d7291f57.js.gz +0 -0
- package/dist/base-assets/js/styles-6aaf32cf-8b01e7c3.js.gz +0 -0
- package/dist/base-assets/js/styles-9a916d00-6c10757a.js.gz +0 -0
- package/dist/base-assets/js/stylus-e695a28b.js.gz +0 -0
- package/dist/base-assets/js/timeline-definition-85554ec2-2969d5a0.js.gz +0 -0
- package/dist/base-assets/js/verilog-6026db83.js.gz +0 -0
- package/dist/base-assets/js/xychartDiagram-e933f94c-a111880f.js.gz +0 -0
- package/package.json +1 -1
|
@@ -59,42 +59,24 @@ function splitStr(str, delimiter = ',') {
|
|
|
59
59
|
function handleFields(fields) {
|
|
60
60
|
if (!Array.isArray(fields)) return [];
|
|
61
61
|
return fields.map((item) => {
|
|
62
|
-
let {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
62
|
+
let { id, component, isFilter, ...rest } = item.attributes();
|
|
63
|
+
|
|
64
|
+
// 处理 rest boolean 类型
|
|
65
|
+
let restData = {};
|
|
66
|
+
Object.keys(rest).forEach((key) => {
|
|
67
|
+
let val = rest[key];
|
|
68
|
+
if (val && typeof val === 'string' && ['true', 'false'].includes(val)) {
|
|
69
|
+
restData[key] = isbool(val);
|
|
70
|
+
} else {
|
|
71
|
+
restData[key] = val;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
74
|
|
|
75
75
|
let field = {
|
|
76
76
|
type: typeMap[component] || component,
|
|
77
77
|
name: id,
|
|
78
|
-
...
|
|
78
|
+
...restData,
|
|
79
79
|
};
|
|
80
|
-
if (clearable) {
|
|
81
|
-
field.clearable = isbool(clearable);
|
|
82
|
-
}
|
|
83
|
-
if (required) {
|
|
84
|
-
field.required = isbool(required);
|
|
85
|
-
}
|
|
86
|
-
if (multiple) {
|
|
87
|
-
field.multiple = isbool(multiple);
|
|
88
|
-
}
|
|
89
|
-
if (searchable) {
|
|
90
|
-
field.searchable = isbool(searchable);
|
|
91
|
-
}
|
|
92
|
-
if (block) {
|
|
93
|
-
field.block = isbool(block);
|
|
94
|
-
}
|
|
95
|
-
if (showValue) {
|
|
96
|
-
field.showValue = isbool(showValue);
|
|
97
|
-
}
|
|
98
80
|
|
|
99
81
|
// 是否支持搜索
|
|
100
82
|
if (isFilter) {
|
|
@@ -125,8 +125,8 @@ const userService = {
|
|
|
125
125
|
* @param {*} sqlParams
|
|
126
126
|
*/
|
|
127
127
|
async getUsersBySql(filters, pageInfo, sql, sqlParams) {
|
|
128
|
-
let pageSize = pageInfo
|
|
129
|
-
|
|
128
|
+
let { pageSize, pageIndex, orderBy, orderDir } = pageInfo;
|
|
129
|
+
|
|
130
130
|
let spSqlOps = {};
|
|
131
131
|
if (filters['USER_NAME']) {
|
|
132
132
|
spSqlOps['USER_NAME'] = 'like';
|
|
@@ -138,7 +138,12 @@ const userService = {
|
|
|
138
138
|
sqlParams = sqlParams.concat(queryParam.params);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
if (orderBy) {
|
|
142
|
+
sql += ` order by a.${orderBy} ${orderDir.toLocaleUpperCase()}`;
|
|
143
|
+
} else {
|
|
144
|
+
sql += ' order by DATA_CRT_TIME DESC';
|
|
145
|
+
}
|
|
146
|
+
|
|
142
147
|
let dbResult = await pageQuery(sql, sqlParams, pageSize, pageIndex);
|
|
143
148
|
|
|
144
149
|
return dbResult;
|
|
@@ -154,8 +159,7 @@ const userService = {
|
|
|
154
159
|
async getUserList(filters, pageInfo) {
|
|
155
160
|
//查询用列表最多20条
|
|
156
161
|
pageInfo.pageSize = 20;
|
|
157
|
-
let sql =
|
|
158
|
-
"select USER_ID, USER_NAME, DEPT_NO, AVATAR from IDM_USERS a where a.ORG_ID=? and STATUS='00'";
|
|
162
|
+
let sql = `select * from ${entity.IDM_USERS} a where a.ORG_ID=? and USER_STATUS='normal'`;
|
|
159
163
|
let dbResult = await this.getUsersBySql(filters, pageInfo, sql, [global.orgid]);
|
|
160
164
|
return dbResult;
|
|
161
165
|
},
|
|
@@ -169,7 +173,7 @@ const userService = {
|
|
|
169
173
|
*/
|
|
170
174
|
async getTeamUsers(userid, filters, pageInfo) {
|
|
171
175
|
let sql =
|
|
172
|
-
"select USER_ID, USER_NAME, USER_TYPE, EN_NAME, NIKE_NAME, GENDER, DEPT_NO, AVATAR, ADDR, POSITION, STATUS, EDUCATION, ADMISSION_DATE, JOINED_DATE from IDM_USERS a where a.ORG_ID=? and
|
|
176
|
+
"select USER_ID, USER_NAME, USER_TYPE, EN_NAME, NIKE_NAME, GENDER, DEPT_NO, AVATAR, ADDR, POSITION, STATUS, EDUCATION, ADMISSION_DATE, JOINED_DATE from IDM_USERS a where a.ORG_ID=? and USER_STATUS='normal'";
|
|
173
177
|
sql =
|
|
174
178
|
sql +
|
|
175
179
|
' and ((a.DEPT_NO in (select DEPT_NO from IDM_DEPTS y where y.ORG_ID=a.ORG_ID and y.DEPT_LEADER=?))';
|
|
@@ -280,13 +284,13 @@ const userService = {
|
|
|
280
284
|
let params =
|
|
281
285
|
memberType[1] === 'GROUP_ID'
|
|
282
286
|
? { ORG_ID: global.orgid, GROUP_ID: teamId, USER_ID: userid, STATUS: '00' }
|
|
283
|
-
: { ORG_ID: global.orgid, DEPT_ID: teamId, USER_ID: userid, STATUS: '
|
|
287
|
+
: { ORG_ID: global.orgid, DEPT_ID: teamId, USER_ID: userid, STATUS: '00' };
|
|
284
288
|
sqlResult = insertSqlBuilder(memberType[0], params);
|
|
285
289
|
} else {
|
|
286
290
|
let params =
|
|
287
291
|
memberType[1] === 'GROUP_ID'
|
|
288
292
|
? { GROUP_ID: teamId, STATUS: '00' }
|
|
289
|
-
: { DEPT_ID: teamId, STAUTS: '
|
|
293
|
+
: { DEPT_ID: teamId, STAUTS: '00' };
|
|
290
294
|
sqlResult = updateSqlBuilder(memberType[0], params, {
|
|
291
295
|
ORG_ID: global.orgid,
|
|
292
296
|
USER_ID: userid,
|
|
@@ -354,7 +358,7 @@ const userService = {
|
|
|
354
358
|
|
|
355
359
|
async getMember(memberType, id, filters, pageInfo) {
|
|
356
360
|
let { orderBy, orderDir, pageSize, pageIndex } = pageInfo;
|
|
357
|
-
let sql = `select * from ${entity.IDM_USERS} a where USER_ID in (select USER_ID from ${memberType[0]} where ${memberType[1]}=? and STATUS ='00 '`;
|
|
361
|
+
let sql = `select * from ${entity.IDM_USERS} a where a.USER_ID in (select USER_ID from ${memberType[0]} where ${memberType[1]}=? and STATUS ='00 '`;
|
|
358
362
|
let sqlParams = [id];
|
|
359
363
|
delete filters['cat'];
|
|
360
364
|
let spSqlOps = {};
|
|
@@ -435,7 +439,7 @@ const userService = {
|
|
|
435
439
|
|
|
436
440
|
async getMemberlist(memberType, id, filters, pageInfo) {
|
|
437
441
|
let { orderBy, orderDir, pageSize, pageIndex } = pageInfo;
|
|
438
|
-
let sql = `select * from ${entity.IDM_USERS} a where USER_ID in (select USER_ID from ${memberType[0]} where ${memberType[1]}=? and
|
|
442
|
+
let sql = `select * from ${entity.IDM_USERS} a where a.USER_ID in (select USER_ID from ${memberType[0]} where ${memberType[1]}=?) and USER_STATUS='normal'`;
|
|
439
443
|
let sqlParams = [id];
|
|
440
444
|
delete filters['cat'];
|
|
441
445
|
delete filters['type'];
|
|
@@ -170,7 +170,8 @@ router.get('/oauth/qywx/callback', async function (req, res) {
|
|
|
170
170
|
USER_ID: userinfo['USER_NAME'],
|
|
171
171
|
USER_NAME: userinfo['STAFF_NAME'],
|
|
172
172
|
DEPT_NO: userinfo['GROUP_ID'],
|
|
173
|
-
STATUS: '
|
|
173
|
+
STATUS: '00',
|
|
174
|
+
USER_STATUS: 'normal',
|
|
174
175
|
};
|
|
175
176
|
let oauth = {
|
|
176
177
|
USER_ID: userinfo['USER_NAME'],
|
|
@@ -203,7 +204,8 @@ router.get('/gettoken', async function (req, res) {
|
|
|
203
204
|
USER_ID: userinfo['USER_NAME'],
|
|
204
205
|
USER_NAME: userinfo['STAFF_NAME'],
|
|
205
206
|
DEPT_NO: userinfo['GROUP_ID'],
|
|
206
|
-
STATUS: '
|
|
207
|
+
STATUS: '00',
|
|
208
|
+
USER_STATUS: 'normal',
|
|
207
209
|
};
|
|
208
210
|
let oauth = {
|
|
209
211
|
USER_ID: userinfo['USER_NAME'],
|
package/backend/routers/idm.js
CHANGED
|
@@ -101,7 +101,6 @@ function renderGroup(data, idmGroupData) {
|
|
|
101
101
|
creatable: false,
|
|
102
102
|
removable: true,
|
|
103
103
|
editable: true,
|
|
104
|
-
icon: 'teams',
|
|
105
104
|
});
|
|
106
105
|
});
|
|
107
106
|
}
|
|
@@ -112,6 +111,7 @@ function renderGroup(data, idmGroupData) {
|
|
|
112
111
|
newData.push({
|
|
113
112
|
...cur,
|
|
114
113
|
children: renderGroupTree(cur.children, idmGroupData, DEPT_NO),
|
|
114
|
+
icon: 'Folder2Open',
|
|
115
115
|
});
|
|
116
116
|
} else {
|
|
117
117
|
if (filter.length > 0) {
|
|
@@ -122,15 +122,16 @@ function renderGroup(data, idmGroupData) {
|
|
|
122
122
|
creatable: false,
|
|
123
123
|
removable: true,
|
|
124
124
|
editable: true,
|
|
125
|
-
icon: '
|
|
125
|
+
icon: 'UserTeams',
|
|
126
126
|
};
|
|
127
127
|
});
|
|
128
128
|
newData.push({
|
|
129
129
|
...cur,
|
|
130
130
|
children: filterChildren,
|
|
131
|
+
icon: 'Folder2Open',
|
|
131
132
|
});
|
|
132
133
|
} else {
|
|
133
|
-
newData.push({ ...cur });
|
|
134
|
+
newData.push({ ...cur, icon: 'Folder2Open' });
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
137
|
});
|
|
@@ -148,7 +149,7 @@ function renderGroupTree(data, idmGroupData, DEPTNO) {
|
|
|
148
149
|
creatable: false,
|
|
149
150
|
removable: true,
|
|
150
151
|
editable: true,
|
|
151
|
-
icon: '
|
|
152
|
+
icon: 'UserTeams',
|
|
152
153
|
};
|
|
153
154
|
});
|
|
154
155
|
newData = newData.concat(childrenFilter);
|
|
@@ -167,7 +168,7 @@ function renderGroupTree(data, idmGroupData, DEPTNO) {
|
|
|
167
168
|
creatable: false,
|
|
168
169
|
removable: true,
|
|
169
170
|
editable: true,
|
|
170
|
-
icon: '
|
|
171
|
+
icon: 'UserTeams',
|
|
171
172
|
};
|
|
172
173
|
});
|
|
173
174
|
return newData.push({
|
|
@@ -200,7 +201,7 @@ router.get('/api/orgs', async function (req, res) {
|
|
|
200
201
|
creatable: true,
|
|
201
202
|
removable: false,
|
|
202
203
|
editable: false,
|
|
203
|
-
cannotSelect:
|
|
204
|
+
cannotSelect: false,
|
|
204
205
|
children: Tree(deptData, false),
|
|
205
206
|
},
|
|
206
207
|
],
|
|
@@ -9,48 +9,42 @@ const memberService = require('../services/member');
|
|
|
9
9
|
const router = express.Router();
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
12
|
+
* 获取团队成员
|
|
13
|
+
* @query {
|
|
14
|
+
* cat: string; BR01
|
|
15
|
+
* type: string; 部门 DEPT 用户组 GROUP
|
|
16
|
+
* parentId: string; /1
|
|
17
|
+
* }
|
|
18
18
|
*/
|
|
19
19
|
router.get('/', async function (req, res) {
|
|
20
20
|
let queryParams = parseQueryParams(req.query, ['ORG_ID', 'RANGE'], true, 50);
|
|
21
21
|
let params = queryParams.params;
|
|
22
22
|
const { cat, type } = req.query;
|
|
23
23
|
if (!cat || !type) return res.sendErr('参数错误');
|
|
24
|
-
let
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
let result = {};
|
|
25
|
+
if (cat !== 'GINGKOO') {
|
|
26
|
+
let realType =
|
|
27
|
+
type === idmLevelType.IDM_LENVEL_TYPE.DEPT
|
|
28
|
+
? [entity.IDM_USERS, 'DEPT_NO']
|
|
29
|
+
: [entity.IDM_GROUP_MEMBERS, 'GROUP_ID'];
|
|
30
|
+
let team =
|
|
31
|
+
type === idmLevelType.IDM_LENVEL_TYPE.DEPT
|
|
32
|
+
? [entity.IDM_DEPTS, 'DEPT_NO']
|
|
33
|
+
: [entity.IDM_GROUPS, 'GROUP_ID'];
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return { ...user, LEADER: user.USER_ID === leader ? '负责人' : '' };
|
|
41
|
-
});
|
|
42
|
-
if (isHasLeader) {
|
|
43
|
-
let results = [];
|
|
44
|
-
result.content.map((user) => {
|
|
45
|
-
if (user.LEADER == '负责人') {
|
|
46
|
-
result.content.map((user) => {
|
|
47
|
-
if (user.USER_NAME.indexOf(isHasLeader) > -1) {
|
|
48
|
-
results.push(user);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
35
|
+
let teamInfo = await userService.getTeamInfo(team, cat);
|
|
36
|
+
if (!teamInfo) return res.sendErr('没有找到数据');
|
|
37
|
+
let leader = teamInfo['DEPT_LEADER'] || teamInfo['GROUP_LEADER'];
|
|
38
|
+
|
|
39
|
+
result = await userService.getMemberlist(realType, cat, params, queryParams.pageInfo);
|
|
40
|
+
result.content = result.content.map((user) => {
|
|
41
|
+
return { ...user, LEADER: user.USER_ID === leader ? '负责人' : '' };
|
|
52
42
|
});
|
|
53
|
-
|
|
43
|
+
} else {
|
|
44
|
+
delete params['cat'];
|
|
45
|
+
delete params['type'];
|
|
46
|
+
delete params['parentId'];
|
|
47
|
+
result = await userService.getUserList(params, queryParams.pageInfo);
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
res.sendOk(result);
|
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
<Fields>
|
|
4
4
|
<element id="USER_ID" component="dropdown" label="成员ID" source="$dict.USER_LIST" clearable="true" size="sm" multiple="true" labelTpl="${label}"/>
|
|
5
5
|
<element id="USER_NAME" component="text" label="姓名" disabled="true" />
|
|
6
|
-
<element id="LEADER" component="text" label="负责人"
|
|
6
|
+
<element id="LEADER" component="text" label="负责人" isFilter="false" />
|
|
7
7
|
<element id="POSITION" component="dropdown" label="职务" source="$dict.IDM_USER_POSITION" />
|
|
8
8
|
<element id="DEPT_NO" component="dropdown" label="部门" searchable="true" source="$dict.DEPT_LIST" />
|
|
9
9
|
<element id="MOBILE" component="text" label="手机" />
|
|
10
10
|
<element id="EMAIL" component="text" label="邮箱" />
|
|
11
11
|
<element id="USER_TYPE" component="dropdown" label="成员类型" source="$dict.IDM_USER_TYPE" />
|
|
12
12
|
<element id="EN_NAME" component="text" label="英文名称" />
|
|
13
|
-
<element id="PASSWD" component="text" label="密码"
|
|
14
|
-
<element id="NIKE_NAME" component="text" label="昵称"
|
|
13
|
+
<element id="PASSWD" component="text" label="密码" isFilter="false" />
|
|
14
|
+
<element id="NIKE_NAME" component="text" label="昵称" />
|
|
15
15
|
<element id="GENDER" component="dropdown" label="性别" source="$dict.IDM_USER_GENDER" />
|
|
16
|
-
<element id="MOBILE" component="text" label="手机号"
|
|
17
|
-
<element id="TEL" component="text" label="电话号"
|
|
18
|
-
<element id="TITLE" component="text" label="头衔"
|
|
19
|
-
<element id="AVATAR" component="input-image" label="头像" accept=".jpg,.png,.jpeg" action='/fss/upload/attachment'
|
|
20
|
-
<element id="ADDR" component="text" label="地址"
|
|
21
|
-
<element id="STAFF_NO" component="text" label="员工编号"
|
|
16
|
+
<element id="MOBILE" component="text" label="手机号" />
|
|
17
|
+
<element id="TEL" component="text" label="电话号" />
|
|
18
|
+
<element id="TITLE" component="text" label="头衔" />
|
|
19
|
+
<element id="AVATAR" component="input-image" label="头像" accept=".jpg,.png,.jpeg" action='/fss/upload/attachment' isFilter="false"/>
|
|
20
|
+
<element id="ADDR" component="text" label="地址" isFilter="false" />
|
|
21
|
+
<element id="STAFF_NO" component="text" label="员工编号" />
|
|
22
22
|
<element id="USER_STATUS" component="dropdown" label="状态" source="$dict.IDM_USER_STATUS" />
|
|
23
|
-
<element id="USER_GID" component="text" label="成员全局ID"
|
|
23
|
+
<element id="USER_GID" component="text" label="成员全局ID" isFilter="false" />
|
|
24
24
|
<element id="EDUCATION" component="dropdown" label="学历" source="$dict.IDM_EDUCATION" />
|
|
25
|
-
<element id="SCHOOL" component="text" label="毕业学校"
|
|
26
|
-
<element id="ADMISSION_DATE" component="date" label="毕业日期"
|
|
27
|
-
<element id="JOINED_DATE" component="date" label="入职日期"
|
|
28
|
-
<element id="LEAVE_DATE" component="date" label="离职日期"
|
|
25
|
+
<element id="SCHOOL" component="text" label="毕业学校" />
|
|
26
|
+
<element id="ADMISSION_DATE" component="date" label="毕业日期" isFilter="false"/>
|
|
27
|
+
<element id="JOINED_DATE" component="date" label="入职日期" />
|
|
28
|
+
<element id="LEAVE_DATE" component="date" label="离职日期" />
|
|
29
29
|
</Fields>
|
|
30
30
|
|
|
31
31
|
<Operations>
|
|
32
32
|
<!-- <element id="BTN_ADD" type="button" label="新增团队成员" level="primary" actionType="add" icon="plus" size="sm" title="新增成员"/> -->
|
|
33
33
|
<!-- <element id="BTN_DEL" type="button" label="删除" level="danger" actionType="del" /> -->
|
|
34
34
|
<element id="BTN_MOD" type="button" label="修改" level="" actionType="edit" title="成员修改" feature="edit" />
|
|
35
|
-
<element id="BTN_BATCHDEL" type="button" label="批量删除" actionType="batch" size="sm" api="put:/space/team/membermanage/batchdel" feature="del" />
|
|
36
|
-
<element id="BTN_LEADER" type="button" label="设置负责人" actionType="batch" size="sm" api="post:/space/team/membermanage/api/group/leader" feature="edit" />
|
|
35
|
+
<element id="BTN_BATCHDEL" type="button" label="批量删除" actionType="batch" size="sm" api="put:/space/team/membermanage/batchdel" feature="del" visibleOn="'${cat}' !== 'GINGKOO'"/>
|
|
36
|
+
<element id="BTN_LEADER" type="button" label="设置负责人" actionType="batch" size="sm" api="post:/space/team/membermanage/api/group/leader" feature="edit" visibleOn="'${cat}' !== 'GINGKOO'"/>
|
|
37
37
|
</Operations>
|
|
38
38
|
|
|
39
39
|
<Table rowKey="USER_ID" autoFillHeight="true"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
<TableBody>
|
|
57
57
|
<column id="__check" />
|
|
58
58
|
<column id="USER_NAME" width="90"/>
|
|
59
|
-
<column id="LEADER" width="60"
|
|
59
|
+
<column id="LEADER" width="60" />
|
|
60
60
|
<column id="DEPT_NO" width="90" sortable="true" filterable="true"/>
|
|
61
61
|
<column id="MOBILE" width="120"/>
|
|
62
62
|
<column id="EMAIL" width="120"/>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|