@gingkoo/base-server 0.0.1-alpha.0 → 0.0.1-alpha.2

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.
Files changed (122) hide show
  1. package/README.md +7 -0
  2. package/app.js +36 -40
  3. package/backend/common/entity.js +55 -0
  4. package/backend/common/enum.js +247 -0
  5. package/backend/common/fss/index.js +18 -0
  6. package/backend/common/fss/routers/attachment.js +45 -0
  7. package/backend/common/fss/routers/download.js +43 -0
  8. package/backend/common/fss/routers/import_export.js +113 -0
  9. package/backend/common/fss/routers/resources.js +149 -0
  10. package/backend/common/fss/routers/upload.js +81 -0
  11. package/backend/common/fss/services/import_export.js +159 -0
  12. package/backend/common/fss/services/index.js +92 -0
  13. package/backend/common/fss/utils.js +39 -0
  14. package/backend/common/ginfo/config.js +5 -0
  15. package/backend/common/ginfo/index.js +62 -0
  16. package/backend/common/index_template.html +28 -0
  17. package/backend/common/logger/index.js +96 -0
  18. package/backend/common/mapping.js +98 -0
  19. package/backend/common/middleware/auth.js +97 -0
  20. package/backend/common/middleware/cors.js +13 -0
  21. package/backend/common/middleware/response.js +25 -0
  22. package/backend/common/page_engine.js +487 -0
  23. package/backend/common/schedule.js +45 -0
  24. package/backend/common/services/dataCombine.js +67 -0
  25. package/backend/common/services/dept.js +37 -0
  26. package/backend/common/services/dict.js +487 -0
  27. package/backend/common/services/email.js +49 -0
  28. package/backend/common/services/generalConfig.js +137 -0
  29. package/backend/common/services/login.js +18 -0
  30. package/backend/common/services/notice.js +260 -0
  31. package/backend/common/services/permission.js +500 -0
  32. package/backend/common/services/roles.js +57 -0
  33. package/backend/common/services/send-notice.js +86 -0
  34. package/backend/common/services/task.js +259 -0
  35. package/backend/common/services/user.js +673 -0
  36. package/backend/common/socket.js +18 -0
  37. package/backend/common/sse/index.js +81 -0
  38. package/backend/common/sse/router.js +30 -0
  39. package/backend/common/task.js +75 -0
  40. package/backend/common/wechat/index.js +9 -0
  41. package/backend/common/wechat/routers/auth.js +238 -0
  42. package/{modules/user/frontend → backend/common/wechat/routers}/index.html +14 -7
  43. package/backend/common/wechat/services/auth.js +209 -0
  44. package/backend/common/wechat/services/notice.js +171 -0
  45. package/backend/config/index.js +63 -0
  46. package/backend/config/path.js +3 -0
  47. package/backend/router.js +96 -0
  48. package/backend/routers/app.js +222 -0
  49. package/backend/routers/automate.js +276 -0
  50. package/backend/routers/dict.js +370 -0
  51. package/backend/routers/email.js +85 -0
  52. package/backend/routers/generalConfig.js +276 -0
  53. package/backend/routers/idm.js +245 -0
  54. package/backend/routers/module.js +357 -0
  55. package/backend/routers/notice.js +138 -0
  56. package/backend/routers/pages.js +46 -0
  57. package/backend/routers/permission.js +985 -0
  58. package/backend/routers/setting.js +184 -0
  59. package/backend/routers/team/index.js +22 -0
  60. package/backend/routers/team/routers/mapping.js +29 -0
  61. package/backend/routers/team/routers/member.js +72 -0
  62. package/backend/routers/team/routers/membermanage.js +289 -0
  63. package/backend/routers/team/routers/pages.js +47 -0
  64. package/backend/routers/team/routers/roles.js +92 -0
  65. package/backend/routers/team/routers/teaminfo.js +27 -0
  66. package/backend/routers/team/routers/usergroup.js +213 -0
  67. package/backend/routers/team/services/mapping.js +101 -0
  68. package/backend/routers/team/services/member.js +206 -0
  69. package/backend/routers/team/services/roles.js +71 -0
  70. package/backend/routers/team/services/teaminfo.js +20 -0
  71. package/backend/routers/team/services/usergroup.js +128 -0
  72. package/backend/routers/user.js +436 -0
  73. package/backend/services/automate.js +60 -0
  74. package/backend/services/config.js +14 -0
  75. package/backend/services/module.js +298 -0
  76. package/backend/services/permission.js +192 -0
  77. package/backend/services/services.js +115 -0
  78. package/backend/services/setting.js +190 -0
  79. package/backend/services/token.js +42 -0
  80. package/backend/space.js +52 -0
  81. package/backend/space_mapping.js +15 -0
  82. package/backend/utils/avatar.js +48 -0
  83. package/backend/utils/color_gen_helper.js +20 -0
  84. package/backend/utils/date.js +66 -0
  85. package/backend/utils/excel.js +446 -0
  86. package/backend/utils/fs/doc.md +64 -0
  87. package/backend/utils/fs/index.js +127 -0
  88. package/backend/utils/jwt.js +54 -0
  89. package/backend/utils/modules/sequence.js +93 -0
  90. package/backend/utils/object.js +31 -0
  91. package/backend/utils/page-query-helper/index.js +61 -0
  92. package/backend/utils/path.js +123 -0
  93. package/backend/utils/run.js +25 -0
  94. package/backend/utils/tokenize.js +82 -0
  95. package/backend/utils/typeof.js +5 -0
  96. package/backend/utils/util.js +153 -0
  97. package/backend/views/api/index.js +32 -0
  98. package/backend/views/api/index.xml +49 -0
  99. package/backend/views/dict/index.js +80 -0
  100. package/backend/views/dict/index.xml +52 -0
  101. package/backend/views/index.js +32 -0
  102. package/backend/views/members_manage/index.js +68 -0
  103. package/backend/views/members_manage/index.xml +68 -0
  104. package/backend/views/roles/index.js +17 -0
  105. package/backend/views/roles/index.xml +47 -0
  106. package/backend/views/usergroup/index.js +68 -0
  107. package/backend/views/usergroup/index.xml +65 -0
  108. package/dist/common-assets/css/index-05a08720.css +3 -0
  109. package/dist/common-assets/css/index-05a08720.css.gz +0 -0
  110. package/dist/common-assets/js/index-2e8c7128.js +762 -0
  111. package/dist/common-assets/js/index-2e8c7128.js.gz +0 -0
  112. package/dist/common-assets/js/react-cropper.es-19c27537.js +10 -0
  113. package/dist/common-assets/js/react-cropper.es-19c27537.js.gz +0 -0
  114. package/dist/common-assets/png/u9-2348c304.png +0 -0
  115. package/dist/common-assets/woff2/materialicons-83be7b2f.woff2 +0 -0
  116. package/dist/index.html +162 -0
  117. package/package.json +61 -5
  118. package/common/router.js +0 -42
  119. package/modules/user/backend/index.js +0 -19
  120. package/modules/user/backend/routers/user.js +0 -11
  121. package/modules/user/frontend/index.js +0 -1
  122. package/serve.js +0 -9
@@ -0,0 +1,80 @@
1
+ let dict = {
2
+ aside: {
3
+ poi: [250],
4
+ rang: [200, 50],
5
+ body: [
6
+ {
7
+ type: 'tree',
8
+ name: 'DICT_ID',
9
+ trigger: 'dicetable',
10
+ source: '/space/dict/tree',
11
+ level: 3,
12
+ creatable: true,
13
+ removable: true,
14
+ editable: true,
15
+ extraParams: ['type'],
16
+ isNeedId: true,
17
+ showNodeId: true,
18
+ addText: '添加字典组',
19
+ editText: '修改',
20
+ delText: '删除',
21
+ showRightExtra: true,
22
+ editApi: 'put:/space/dict/api/basedict',
23
+ delApi: 'delete:/space/dict/api/basedict',
24
+ addApi: 'post:/space/dict/api/basedict',
25
+ },
26
+ ],
27
+ },
28
+ body: [
29
+ {
30
+ id: 'dicetable',
31
+ type: 'table',
32
+ addRowInfo: {
33
+ mode: 'form',
34
+ layoutSet: [
35
+ { name: 'ITEM_ID', required: true },
36
+ { name: 'ITEM_VALUE', required: true },
37
+ 'ITEM_COLOR',
38
+ 'ITEM_ICON_TYPE',
39
+ 'ITEM_ICON',
40
+ {
41
+ name: 'ITEM_ICON',
42
+ type: 'input-text',
43
+ placeholder: '请输入字体图标',
44
+ visibleOn: '${ITEM_ICON_TYPE==="1"}',
45
+ },
46
+ 'ITEM_STYLE',
47
+ 'ITEM_DESC',
48
+ 'ITEM_PARENT',
49
+ ],
50
+ },
51
+ rowInfo: {
52
+ mode: 'form',
53
+ layoutSet: [
54
+ {
55
+ name: 'ITEM_ID',
56
+ label: '字典项编码',
57
+ disabled: true,
58
+ required: true,
59
+ },
60
+
61
+ 'ITEM_VALUE',
62
+ 'ITEM_COLOR',
63
+ 'ITEM_ICON_TYPE',
64
+ 'ITEM_ICON',
65
+ {
66
+ name: 'ITEM_ICON',
67
+ type: 'input-text',
68
+ placeholder: '请输入字体图标',
69
+ visibleOn: '${ITEM_ICON_TYPE==="1"}',
70
+ },
71
+ 'ITEM_STYLE',
72
+ 'ITEM_DESC',
73
+ 'ITEM_PARENT',
74
+ ],
75
+ },
76
+ },
77
+ ],
78
+ };
79
+
80
+ module.exports = dict;
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PageView title="数据字典" blockApi="" initApi="">
3
+ <Fields>
4
+ <element id="ITEM_ID" component="text" label="字典项编码" />
5
+ <element id="ITEM_VALUE" component="text" label="字典项值" />
6
+ <element id="ITEM_COLOR" component="input-color" label="色彩" />
7
+ <element id="ITEM_ICON" component="input-image" label="图标" accept=".jpg,.png,.jpeg" action='/fss/upload/attachment' visibleOn="${ITEM_ICON_TYPE!=='1'}" />
8
+ <element id="ITEM_ICON_TYPE" component="switch" label="手动输入图标" trueValue="1" falseValue="0" />
9
+ <element id="ITEM_STYLE" component="text" label="样式" />
10
+ <element id="ITEM_DESC" component="textarea" label="字典说明" />
11
+ <element id="ITEM_PARENT" component="text" label="上级" />
12
+ </Fields>
13
+
14
+ <Operations rowKey="ITEM_ID">
15
+ <element id="BTN_ADD" type="button" label="新增码值" level="primary" actionType="add" icon="plus" size="sm" title="新增码值" feature="add"/>
16
+ <element id="BTN_DEL" type="button" label="删除" level="danger" actionType="del" feature="del" />
17
+ <element id="BTN_MOD" type="button" label="修改" level="" actionType="edit" title="修改字典信息" feature="edit" />
18
+ <element id="BTN_BATCHDEL" type="button" label="批量删除" actionType="batch" size="sm" api="delete:/space/dict" feature="del" />
19
+ </Operations>
20
+
21
+ <Table rowKey="ITEM_ID" autoFillHeight="true"
22
+ api="/space/dict?DICT_ID=ISSUE_TYPE"
23
+ addApi="post:/space/dict"
24
+ delApi="delete:/space/dict/${ITEM_ID}"
25
+ editApi="put:/space/dict/${ITEM_ID}"
26
+ saveOrderApi="post:/space/dict/dictsort"
27
+ >
28
+ <DefaultQuery>
29
+ <element id="page" value="1"/>
30
+ <element id="size" value="50"/>
31
+ </DefaultQuery>
32
+
33
+ <TableHead isReset="true" isMode="false" isContrl="false" isFilterPlus="false" draggable="true">
34
+ <filter list="ITEM_ID,dynamic"/>
35
+ <action components="BTN_ADD,BTN_BATCHDEL"/>
36
+ </TableHead>
37
+
38
+ <TableBody>
39
+ <column id="__check" fixed="left"/>
40
+ <column id="ITEM_ID" width="90" />
41
+ <column id="ITEM_VALUE" width="90" />
42
+ <column id="ITEM_COLOR" width="90" />
43
+ <column id="ITEM_ICON" width="90" />
44
+ <column id="ITEM_STYLE" width="90" />
45
+ <column id="ITEM_DESC" width="90" />
46
+ <column id="ITEM_PARENT" width="100" />
47
+ <column id="opr" label="操作" components="BTN_MOD, BTN_DEL" width="114" fixed="right" />
48
+ </TableBody>
49
+
50
+ <TableFoot show="true" showPageInput="true" statistics="" placeLeft="statistics" placeRight="pagination,switchPage" switchPage="5, 10, 20, 50, 100" />
51
+ </Table>
52
+ </PageView>
@@ -0,0 +1,32 @@
1
+ const path = require('path');
2
+
3
+ /**
4
+ * 获取页面配置
5
+ * @param {string} page 页面
6
+ * return null | {
7
+ * json: json 位置
8
+ * xml: xml 位置
9
+ * html: html 位置
10
+ * }
11
+ */
12
+ const views = (page) => {
13
+ let pages = {
14
+ dict: 'dict', // 通用设置 -> 数据字典
15
+ api: 'api', // 通用设置 -> API
16
+ roles: 'roles', // 团队管理 -> 角色
17
+ members_manage: 'members_manage', // 团队管理 -> 团队成员
18
+ usergroup: 'usergroup', // 团队管理 -> 用户组
19
+ };
20
+ // 页面配置不存在
21
+ if (!Reflect.has(pages, page)) {
22
+ return null;
23
+ }
24
+ let folder = pages[page];
25
+ return {
26
+ json: path.join(__dirname, `./${folder}/index.js`),
27
+ xml: path.join(__dirname, `./${folder}/index.xml`),
28
+ html: path.join(__dirname, '../common/index_template.html'),
29
+ };
30
+ };
31
+
32
+ module.exports = views;
@@ -0,0 +1,68 @@
1
+ let members_manage = {
2
+ aside: {
3
+ poi: [250],
4
+ rang: [200, 50],
5
+ body: [
6
+ {
7
+ type: 'tree',
8
+ name: 'cat',
9
+ trigger: 'membertable',
10
+ source: '/space/idm/api/orgs',
11
+ level: 10,
12
+ creatable: true,
13
+ removable: true,
14
+ editable: true,
15
+ extraParams: ['parentId'],
16
+ isNeedId: true,
17
+ addText: '添加子部门',
18
+ editText: '修改名称',
19
+ delText: '删除',
20
+ showNodeId: true,
21
+ showRightExtra: true,
22
+ editApi: 'put:/space/team/membermanage/api/group',
23
+ delApi: 'delete:/space/team/membermanage/api/group',
24
+ addApi: 'post:/space/team/membermanage/api/group',
25
+ },
26
+ ],
27
+ },
28
+ body: [
29
+ {
30
+ id: 'membertable',
31
+ type: 'table',
32
+ addRowInfo: {
33
+ mode: 'form',
34
+ layoutSet: [{ label: '新增团队成员', name: 'USER_ID', require: true, searchable: true }],
35
+ },
36
+ rowInfo: {
37
+ mode: 'form',
38
+ layoutSet: [
39
+ // { name: 'USER_ID', disabled: true },
40
+ 'USER_NAME',
41
+ 'USER_TYPE',
42
+ 'EN_NAME',
43
+ 'PASSWD',
44
+ 'NIKE_NAME',
45
+ 'GENDER',
46
+ 'EMAIL',
47
+ 'MOBILE',
48
+ 'TEL',
49
+ 'TITLE',
50
+ 'DEPT_NO',
51
+ 'AVATAR',
52
+ 'ADDR',
53
+ 'POSITION',
54
+ 'STAFF_NO',
55
+ 'USER_STATUS',
56
+ 'USER_GID',
57
+ 'EDUCATION',
58
+ 'SCHOOL',
59
+ { name: 'ADMISSION_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
60
+ { name: 'JOINED_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
61
+ { name: 'LEAVE_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
62
+ ],
63
+ },
64
+ },
65
+ ],
66
+ };
67
+
68
+ module.exports = members_manage;
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PageView title="团队成员" blockApi="/space/team/mapping" initApi="">
3
+ <Fields>
4
+ <element id="USER_ID" component="dropdown" label="成员ID" source="$dict.USER_LIST" clearable="true" size="sm" multiple="true" labelTpl="${label}"/>
5
+ <element id="USER_NAME" component="text" label="姓名" disabled="true" />
6
+ <element id="LEADER" component="text" label="负责人" />
7
+ <element id="POSITION" component="dropdown" label="职务" source="$dict.IDM_USER_POSITION" />
8
+ <element id="DEPT_NO" component="dropdown" label="部门" searchable="true" source="$dict.DEPT_LIST" />
9
+ <element id="MOBILE" component="text" label="手机" />
10
+ <element id="EMAIL" component="text" label="邮箱" />
11
+ <element id="USER_TYPE" component="dropdown" label="成员类型" source="$dict.IDM_USER_TYPE" />
12
+ <element id="EN_NAME" component="text" label="英文名称" />
13
+ <element id="PASSWD" component="text" label="密码" />
14
+ <element id="NIKE_NAME" component="text" label="昵称" />
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="员工编号" />
22
+ <element id="USER_STATUS" component="dropdown" label="状态" source="$dict.IDM_USER_STATUS" />
23
+ <element id="USER_GID" component="text" label="成员全局ID" />
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="离职日期" />
29
+ </Fields>
30
+
31
+ <Operations>
32
+ <!-- <element id="BTN_ADD" type="button" label="新增团队成员" level="primary" actionType="add" icon="plus" size="sm" title="新增成员"/> -->
33
+ <!-- <element id="BTN_DEL" type="button" label="删除" level="danger" actionType="del" /> -->
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" />
37
+ </Operations>
38
+
39
+ <Table rowKey="USER_ID" autoFillHeight="true"
40
+ api="/space/team/membermanage?cat=BR01&amp;type=DEPT"
41
+ addApi="post:/space/team/membermanage/add"
42
+ delApi="delete:/space/team/membermanage/del/${USER_ID}"
43
+ editApi="put:/space/team/membermanage/modify/${USER_ID}"
44
+
45
+ >
46
+ <DefaultQuery>
47
+ <element id="page" value="1"/>
48
+ <element id="size" value="50"/>
49
+ </DefaultQuery>
50
+
51
+ <TableHead isReset="true" isMode="false" isContrl="false" isFilterPlus="false">
52
+ <filter list="USER_NAME,dynamic"/>
53
+ <action components="BTN_ADD,BTN_BATCHDEL,BTN_LEADER" />
54
+ </TableHead>
55
+
56
+ <TableBody>
57
+ <column id="__check" />
58
+ <column id="USER_NAME" width="90"/>
59
+ <column id="LEADER" width="60" sortable="true" filterable="true"/>
60
+ <column id="DEPT_NO" width="90" sortable="true" filterable="true"/>
61
+ <column id="MOBILE" width="120"/>
62
+ <column id="EMAIL" width="120"/>
63
+ <column id="opr" label="操作" components="BTN_MOD" width="114" fixed="right" />
64
+ </TableBody>
65
+
66
+ <TableFoot show="true" showPageInput="true" statistics="" placeLeft="statistics" placeRight="pagination,switchPage" switchPage="5, 10, 20, 50, 100" />
67
+ </Table>
68
+ </PageView>
@@ -0,0 +1,17 @@
1
+ let roles = {
2
+ body: [
3
+ {
4
+ type: 'table',
5
+ addRowInfo: {
6
+ mode: 'form',
7
+ layoutSet: ['ROLE_ID', 'ROLE_NAME', 'DEPT_NOS', 'REMARKS'],
8
+ },
9
+ rowInfo: {
10
+ mode: 'form',
11
+ layoutSet: [{ name: 'ROLE_ID', disabled: true }, 'ROLE_NAME', 'DEPT_NOS', 'REMARKS'],
12
+ },
13
+ },
14
+ ],
15
+ };
16
+
17
+ module.exports = roles;
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PageView title="团队管理-角色" blockApi="" initApi="/space/team/mapping?list=DEPT_LIST">
3
+ <Fields>
4
+ <element id="ROLE_ID" component="text" label="角色ID" required="true"/>
5
+ <element id="ROLE_NAME" component="text" required="true" label="角色名称" />
6
+ <element id="DEPT_NOS" component="dropdown" label="角色部门" source="$dict.DEPT_LIST" />
7
+ <element id="REMARKS" component="textarea" label="角色描述" />
8
+ </Fields>
9
+
10
+ <Operations>
11
+ <element id="BTN_ADD" type="button" label="新增" level="primary" actionType="add" icon="plus" size="sm" title="团队角色新增" feature="add" />
12
+ <element id="BTN_DEL" type="button" label="删除" level="danger" actionType="del" feature="del" />
13
+ <element id="BTN_MOD" type="button" label="修改" level="" actionType="edit" title="团队角色修改" feature="edit" />
14
+ </Operations>
15
+
16
+ <Table rowKey="USER_ID" autoFillHeight="true"
17
+ api="/space/team/roles"
18
+ addApi="post:/space/team/roles"
19
+ delApi="delete:/space/team/roles/${ROLE_ID}"
20
+ editApi="put:/space/team/roles/${ROLE_ID}"
21
+ >
22
+ <DefaultQuery>
23
+ <element id="page" value="1"/>
24
+ <element id="size" value="50"/>
25
+ </DefaultQuery>
26
+
27
+ <TableHead isReset="true" isMode="false" isContrl="false" isFilterPlus="false">
28
+ <filter list="dynamic"/>
29
+ <action components="BTN_ADD"/>
30
+ </TableHead>
31
+
32
+ <TableBody>
33
+ <!-- <column id="ORG_ID" width="90" fixed="left"/> -->
34
+ <column id="ROLE_ID" width="60" />
35
+ <column id="ROLE_NAME" width="140" />
36
+ <column id="DEPT_NOS" width="140" />
37
+ <column id="REMARKS" width="300" />
38
+ <!-- <column id="DATA_CRT_DATE" width="100" />
39
+ <column id="DATA_CRT_TIME" width="100" />
40
+ <column id="DATA_UPD_DATE" width="100" />
41
+ <column id="DATA_UPD_TIME" width="100" /> -->
42
+ <column id="opr" label="操作" components="BTN_MOD, BTN_DEL" width="90" fixed="right" />
43
+ </TableBody>
44
+
45
+ <TableFoot show="true" showPageInput="true" statistics="" placeLeft="statistics" placeRight="pagination,switchPage" switchPage="5, 10, 20, 50, 100" />
46
+ </Table>
47
+ </PageView>
@@ -0,0 +1,68 @@
1
+ let members_manage = {
2
+ aside: {
3
+ poi: [250],
4
+ rang: [200, 50],
5
+ body: [
6
+ {
7
+ type: 'tree',
8
+ name: 'GROUP_ID',
9
+ trigger: 'membertable',
10
+ source: '/space/idm/api/usergroup',
11
+ level: 10,
12
+ creatable: true,
13
+ removable: true,
14
+ editable: true,
15
+ addText: '添加用户组',
16
+ editText: '修改名称',
17
+ delText: '删除',
18
+ isNeedId: true,
19
+ extraParams: ['type', 'group_type'],
20
+ onlyLeaf: true,
21
+ showNodeId: true,
22
+ showRightExtra: true,
23
+ editApi: 'put:/space/team/usergroup/api/group',
24
+ delApi: 'delete:/space/team/usergroup/api/group',
25
+ addApi: 'post:/space/team/usergroup/api/group',
26
+ },
27
+ ],
28
+ },
29
+ body: [
30
+ {
31
+ id: 'membertable',
32
+ type: 'table',
33
+ addRowInfo: {
34
+ mode: 'form',
35
+ layoutSet: [{ label: '新增团队成员', name: 'USER_ID', require: true, searchable: true }],
36
+ },
37
+ rowInfo: {
38
+ mode: 'form',
39
+ layoutSet: [
40
+ 'USER_NAME',
41
+ 'USER_TYPE',
42
+ 'EN_NAME',
43
+ 'PASSWD',
44
+ 'NIKE_NAME',
45
+ 'GENDER',
46
+ 'EMAIL',
47
+ 'MOBILE',
48
+ 'TEL',
49
+ 'TITLE',
50
+ 'DEPT_NO',
51
+ 'AVATAR',
52
+ 'ADDR',
53
+ 'POSITION',
54
+ 'STAFF_NO',
55
+ 'USER_STATUS',
56
+ 'USER_GID',
57
+ 'EDUCATION',
58
+ 'SCHOOL',
59
+ { name: 'ADMISSION_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
60
+ { name: 'JOINED_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
61
+ { name: 'LEAVE_DATE', format: 'YYYYMMDD', inputFormat: 'YYYY-MM-DD' },
62
+ ],
63
+ },
64
+ },
65
+ ],
66
+ };
67
+
68
+ module.exports = members_manage;
@@ -0,0 +1,65 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PageView title="用户组" blockApi="/space/team/mapping" initApi="">
3
+ <Fields>
4
+ <element id="USER_ID" component="dropdown" label="成员ID" source="$dict.USER_LIST" clearable="true" size="sm" multiple="true" labelTpl="${label}"/>
5
+ <element id="USER_NAME" component="text" label="姓名" disabled="true" />
6
+ <element id="LEADER" component="text" label="负责人" />
7
+ <element id="POSITION" component="dropdown" label="职务" source="$dict.IDM_USER_POSITION" />
8
+ <element id="DEPT_NO" component="dropdown" label="部门" searchable="true" source="$dict.DEPT_LIST" />
9
+ <element id="MOBILE" component="text" label="手机" />
10
+ <element id="EMAIL" component="text" label="邮箱" />
11
+ <element id="USER_TYPE" component="dropdown" label="成员类型" source="$dict.IDM_USER_TYPE" />
12
+ <element id="EN_NAME" component="text" label="英文名称" />
13
+ <element id="PASSWD" component="text" label="密码" />
14
+ <element id="NIKE_NAME" component="text" label="昵称" />
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="员工编号" />
22
+ <element id="USER_STATUS" component="dropdown" label="状态" source="$dict.IDM_USER_STATUS" />
23
+ <element id="USER_GID" component="text" label="成员全局ID" />
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="离职日期" />
29
+ </Fields>
30
+
31
+ <Operations>
32
+ <element id="BTN_ADD" type="button" label="新增组成员" level="primary" actionType="add" icon="plus" size="sm" title="新增组成员" feature="add" />
33
+ <element id="BTN_DEL" type="button" label="删除组成员" level="danger" actionType="del" feature="del" />
34
+ <!-- <element id="BTN_MOD" type="button" label="修改" level="" actionType="edit" title="成员修改" /> -->
35
+ <element id="BTN_BATCHDEL" type="button" label="批量删除" actionType="batch" size="sm" api="delete:/space/team/usergroup" feature="del" />
36
+ <element id="BTN_LEADER" type="button" label="设置负责人" actionType="batch" size="sm" api="post:/space/team/usergroup/api/usergroup/leader" feature="edit" />
37
+ </Operations>
38
+
39
+ <Table rowKey="USER_ID" autoFillHeight="true"
40
+ api="/space/team/usergroup?GROUP_ID=DEV"
41
+ addApi="post:/space/team/usergroup"
42
+
43
+ >
44
+ <DefaultQuery>
45
+ <element id="page" value="1"/>
46
+ <element id="size" value="50"/>
47
+ </DefaultQuery>
48
+
49
+ <TableHead isReset="true" isMode="false" isContrl="false" isFilterPlus="false">
50
+ <filter list="USER_NAME,dynamic"/>
51
+ <action components="BTN_ADD,BTN_BATCHDEL,BTN_LEADER" />
52
+ </TableHead>
53
+
54
+ <TableBody>
55
+ <column id="__check" />
56
+ <column id="USER_NAME" width="90"/>
57
+ <column id="LEADER" width="60" sortable="true" filterable="true"/>
58
+ <column id="DEPT_NO" width="90" sortable="true" filterable="true"/>
59
+ <column id="MOBILE" width="120"/>
60
+ <column id="EMAIL" width="120"/>
61
+ </TableBody>
62
+
63
+ <TableFoot show="true" showPageInput="true" statistics="" placeLeft="statistics" placeRight="pagination,switchPage" switchPage="5, 10, 20, 50, 100" />
64
+ </Table>
65
+ </PageView>