work-flow-master 1.0.0 → 1.0.1

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 (47) hide show
  1. package/lib/App.css +92 -0
  2. package/lib/App.js +19 -0
  3. package/lib/api/index.js +83 -0
  4. package/lib/assets/images/add-close.png +0 -0
  5. package/lib/assets/images/add-close1.png +0 -0
  6. package/lib/assets/images/cancel.png +0 -0
  7. package/lib/assets/images/check_box.png +0 -0
  8. package/lib/assets/images/icon_file.png +0 -0
  9. package/lib/assets/images/icon_people.png +0 -0
  10. package/lib/assets/images/icon_role.png +0 -0
  11. package/lib/assets/images/jiaojiao.png +0 -0
  12. package/lib/assets/images/list_search.png +0 -0
  13. package/lib/assets/images/loading.gif +0 -0
  14. package/lib/assets/images/next_level.png +0 -0
  15. package/lib/assets/images/next_level_active.png +0 -0
  16. package/lib/assets/logo.svg +1 -0
  17. package/lib/components/AddNode/index.js +120 -0
  18. package/lib/components/AddNode/index.scss +120 -0
  19. package/lib/components/Dialog/ErrorDialog/index.js +61 -0
  20. package/lib/components/Dialog/ErrorDialog/index.scss +60 -0
  21. package/lib/components/Dialog/SelectDialog/index.js +336 -0
  22. package/lib/components/Dialog/SelectDialog/index.scss +34 -0
  23. package/lib/components/Drawer/ApproverDrawer/index.js +260 -0
  24. package/lib/components/Drawer/ApproverDrawer/index.scss +62 -0
  25. package/lib/components/Drawer/ConditionDrawer/index.js +431 -0
  26. package/lib/components/Drawer/ConditionDrawer/index.scss +113 -0
  27. package/lib/components/Drawer/CopyerDrawer/index.js +111 -0
  28. package/lib/components/Drawer/CopyerDrawer/index.scss +12 -0
  29. package/lib/components/Drawer/PromoterDrawer/index.js +82 -0
  30. package/lib/components/Drawer/PromoterDrawer/index.scss +16 -0
  31. package/lib/components/NodeWrap/index.js +383 -0
  32. package/lib/components/NodeWrap/index.scss +32 -0
  33. package/lib/components/SelectBox/index.js +72 -0
  34. package/lib/components/SelectBox/index.scss +27 -0
  35. package/lib/components/SelectResult/index.js +67 -0
  36. package/lib/components/SelectResult/index.scss +37 -0
  37. package/lib/components/setting/index.css +4 -0
  38. package/lib/components/setting/index.js +342 -0
  39. package/lib/css/override-element-ui.scss +119 -0
  40. package/lib/css/workflow.css +952 -0
  41. package/lib/index.js +0 -0
  42. package/lib/store/index.js +21 -0
  43. package/lib/store/models.js +91 -0
  44. package/lib/utils/axios.js +43 -0
  45. package/lib/utils/const.js +74 -0
  46. package/lib/utils/index.js +158 -0
  47. package/package.json +4 -4
package/lib/App.css ADDED
@@ -0,0 +1,92 @@
1
+ .clear:before,
2
+ .clear:after {
3
+ content: " ";
4
+ display: table;
5
+ }
6
+
7
+ .clear:after {
8
+ clear: both;
9
+ }
10
+
11
+ .ellipsis {
12
+ overflow: hidden;
13
+ text-overflow: ellipsis;
14
+ white-space: nowrap;
15
+ }
16
+
17
+ .l {
18
+ float: left;
19
+ }
20
+
21
+ .ml_10 {
22
+ margin-left: 10px;
23
+ }
24
+
25
+ .mr_10 {
26
+ margin-right: 10px;
27
+ }
28
+
29
+ .radio_box a,
30
+ .check_box a {
31
+ font-size: 12px;
32
+ position: relative;
33
+ padding-left: 20px;
34
+ margin-right: 30px;
35
+ cursor: pointer;
36
+ color: #333;
37
+ white-space: pre;
38
+ }
39
+
40
+ .check_box.not a:hover {
41
+ color: #333;
42
+ }
43
+
44
+ .check_box.not a::before,
45
+ .check_box.not a:hover::before {
46
+ border: none;
47
+ }
48
+
49
+ .check_box.not.active {
50
+ background: #f3f3f3;
51
+ }
52
+
53
+ .radio_box a:hover::before,
54
+ .check_box a:hover::before {
55
+ border: 1px solid #46a6fe;
56
+ }
57
+
58
+ .radio_box a::before,
59
+ .check_box a::before {
60
+ position: absolute;
61
+ width: 14px;
62
+ height: 14px;
63
+ border: 1px solid #dcdfe6;
64
+ border-radius: 2px;
65
+ left: 0;
66
+ top: 1px;
67
+ content: "";
68
+ }
69
+
70
+ .radio_box a::before {
71
+ border-radius: 50%;
72
+ }
73
+
74
+ .check-dot.active::after,
75
+ .radio_box a.active::after,
76
+ .check_box a.active::after {
77
+ position: absolute;
78
+ width: 10px;
79
+ height: 10px;
80
+ border-radius: 50%;
81
+ top: 3px;
82
+ left: 3px;
83
+ content: "";
84
+ }
85
+
86
+ .radio_box a.active::after {
87
+ background: #46a6fe;
88
+ }
89
+
90
+ .check_box a.active::after {
91
+ background: url(assets/images/check_box.png) no-repeat center;
92
+ }
package/lib/App.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _index = _interopRequireDefault(require("./components/setting/index"));
10
+ require("./App.css");
11
+ function App(props) {
12
+ return /*#__PURE__*/React.createElement(_reactRouterDom.HashRouter, null, /*#__PURE__*/React.createElement(_reactRouterDom.Routes, {
13
+ className: "App"
14
+ }, /*#__PURE__*/React.createElement(_reactRouterDom.Route, {
15
+ path: "/",
16
+ element: /*#__PURE__*/React.createElement(_index.default, props)
17
+ })));
18
+ }
19
+ var _default = exports.default = App;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getConditions = getConditions;
8
+ exports.getDepartments = getDepartments;
9
+ exports.getEmployees = getEmployees;
10
+ exports.getRoles = getRoles;
11
+ exports.getWorkFlowData = getWorkFlowData;
12
+ exports.setWorkFlowData = setWorkFlowData;
13
+ var _axios = _interopRequireDefault(require("../utils/axios"));
14
+ /*
15
+ * @Date: 2022-08-25 14:06:59
16
+ * @LastEditors: StavinLi 495727881@qq.com
17
+ * @LastEditTime: 2023-03-23 18:01:35
18
+ * @FilePath: /workflow-react/src/api/index.js
19
+ */
20
+
21
+ let baseUrl = process.env.NODE_ENV === 'production' ? '/Workflow-React/build/' : '/';
22
+
23
+ /**
24
+ * 获取角色
25
+ * @param {*} data
26
+ * @returns
27
+ */
28
+ function getRoles(data) {
29
+ return _axios.default.get(`${baseUrl}roles.json`, {
30
+ params: data
31
+ });
32
+ }
33
+
34
+ /**
35
+ * 获取部门
36
+ * @param {*} data
37
+ * @returns
38
+ */
39
+ function getDepartments(data) {
40
+ return _axios.default.get(`${baseUrl}departments.json`, {
41
+ params: data
42
+ });
43
+ }
44
+
45
+ /**
46
+ * 获取职员
47
+ * @param {*} data
48
+ * @returns
49
+ */
50
+ function getEmployees(data) {
51
+ return _axios.default.get(`${baseUrl}employees.json`, {
52
+ params: data
53
+ });
54
+ }
55
+ /**
56
+ * 获取条件字段
57
+ * @param {*} data
58
+ * @returns
59
+ */
60
+ function getConditions(data) {
61
+ return _axios.default.get(`${baseUrl}conditions.json`, {
62
+ params: data
63
+ });
64
+ }
65
+
66
+ /**
67
+ * 获取审批数据
68
+ * @param {*} data
69
+ * @returns
70
+ */
71
+ function getWorkFlowData(data) {
72
+ return _axios.default.get(`${baseUrl}data.json`, {
73
+ params: data
74
+ });
75
+ }
76
+ /**
77
+ * 设置审批数据
78
+ * @param {*} data
79
+ * @returns
80
+ */
81
+ function setWorkFlowData(data) {
82
+ return _axios.default.post(`${baseUrl}`, data);
83
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69" xmlns:v="https://vecta.io/nano"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _antd = require("antd");
9
+ require("./index.scss");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ /*
12
+ * @Date: 2023-03-15 17:56:12
13
+ * @LastEditors: StavinLi 495727881@qq.com
14
+ * @LastEditTime: 2023-03-23 10:25:02
15
+ * @FilePath: /workflow-react/src/components/addNode/index.js
16
+ */
17
+ var _default = props => {
18
+ let {
19
+ childNodeP,
20
+ changeEvent
21
+ } = props;
22
+ let [visible, setVisible] = (0, _react.useState)(false);
23
+ const addType = type => {
24
+ setVisible(false);
25
+ if (type != 4) {
26
+ var data;
27
+ if (type == 1) {
28
+ data = {
29
+ "nodeName": "审核人",
30
+ "error": true,
31
+ "type": 1,
32
+ "settype": 1,
33
+ "selectMode": 0,
34
+ "selectRange": 0,
35
+ "directorLevel": 1,
36
+ "examineMode": 1,
37
+ "noHanderAction": 1,
38
+ "examineEndDirectorLevel": 0,
39
+ "childNode": childNodeP,
40
+ "nodeUserList": []
41
+ };
42
+ } else if (type == 2) {
43
+ data = {
44
+ "nodeName": "抄送人",
45
+ "type": 2,
46
+ "ccSelfSelectFlag": 1,
47
+ "childNode": childNodeP,
48
+ "nodeUserList": []
49
+ };
50
+ }
51
+ changeEvent(data);
52
+ } else {
53
+ changeEvent({
54
+ "nodeName": "路由",
55
+ "type": 4,
56
+ "childNode": null,
57
+ "conditionNodes": [{
58
+ "nodeName": "条件1",
59
+ "error": true,
60
+ "type": 3,
61
+ "priorityLevel": 1,
62
+ "conditionList": [],
63
+ "nodeUserList": [],
64
+ "childNode": childNodeP
65
+ }, {
66
+ "nodeName": "条件2",
67
+ "type": 3,
68
+ "priorityLevel": 2,
69
+ "conditionList": [],
70
+ "nodeUserList": [],
71
+ "childNode": null
72
+ }]
73
+ });
74
+ }
75
+ };
76
+ let content = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
77
+ className: "add-node-popover-body"
78
+ }, /*#__PURE__*/_react.default.createElement("a", {
79
+ className: "add-node-popover-item approver",
80
+ onClick: () => addType(1)
81
+ }, /*#__PURE__*/_react.default.createElement("div", {
82
+ className: "item-wrapper"
83
+ }, /*#__PURE__*/_react.default.createElement("span", {
84
+ className: "iconfont"
85
+ }, "\uE8EF")), /*#__PURE__*/_react.default.createElement("p", null, "\u5BA1\u6279\u4EBA")), /*#__PURE__*/_react.default.createElement("a", {
86
+ className: "add-node-popover-item notifier",
87
+ onClick: () => addType(2)
88
+ }, /*#__PURE__*/_react.default.createElement("div", {
89
+ className: "item-wrapper"
90
+ }, /*#__PURE__*/_react.default.createElement("span", {
91
+ className: "iconfont"
92
+ }, "\uE93B")), /*#__PURE__*/_react.default.createElement("p", null, "\u6284\u9001\u4EBA")), /*#__PURE__*/_react.default.createElement("a", {
93
+ className: "add-node-popover-item condition",
94
+ onClick: () => addType(4)
95
+ }, /*#__PURE__*/_react.default.createElement("div", {
96
+ className: "item-wrapper"
97
+ }, /*#__PURE__*/_react.default.createElement("span", {
98
+ className: "iconfont"
99
+ }, "\uE9BE")), /*#__PURE__*/_react.default.createElement("p", null, "\u6761\u4EF6\u5206\u652F"))));
100
+ const handleOpenChange = newOpen => {
101
+ setVisible(newOpen);
102
+ };
103
+ return /*#__PURE__*/_react.default.createElement("div", {
104
+ className: "add-node-btn-box"
105
+ }, /*#__PURE__*/_react.default.createElement("div", {
106
+ className: "add-node-btn"
107
+ }, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
108
+ placement: "rightTop",
109
+ trigger: "click",
110
+ open: visible,
111
+ onOpenChange: handleOpenChange,
112
+ content: content
113
+ }, /*#__PURE__*/_react.default.createElement("button", {
114
+ className: "btn",
115
+ type: "button"
116
+ }, /*#__PURE__*/_react.default.createElement("span", {
117
+ className: "iconfont"
118
+ }, "\uE95B")))));
119
+ };
120
+ exports.default = _default;
@@ -0,0 +1,120 @@
1
+
2
+ .add-node-btn-box {
3
+ width: 240px;
4
+ display: -webkit-inline-box;
5
+ display: -ms-inline-flexbox;
6
+ display: inline-flex;
7
+ -ms-flex-negative: 0;
8
+ flex-shrink: 0;
9
+ -webkit-box-flex: 1;
10
+ -ms-flex-positive: 1;
11
+ position: relative;
12
+ &:before {
13
+ content: "";
14
+ position: absolute;
15
+ top: 0;
16
+ left: 0;
17
+ right: 0;
18
+ bottom: 0;
19
+ z-index: -1;
20
+ margin: auto;
21
+ width: 2px;
22
+ height: 100%;
23
+ background-color: #cacaca
24
+ }
25
+ .add-node-btn {
26
+ user-select: none;
27
+ width: 240px;
28
+ padding: 20px 0 32px;
29
+ display: flex;
30
+ -webkit-box-pack: center;
31
+ justify-content: center;
32
+ flex-shrink: 0;
33
+ -webkit-box-flex: 1;
34
+ flex-grow: 1;
35
+ .btn {
36
+ outline: none;
37
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1);
38
+ width: 30px;
39
+ height: 30px;
40
+ background: #3296fa;
41
+ border-radius: 50%;
42
+ position: relative;
43
+ border: none;
44
+ line-height: 30px;
45
+ -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
46
+ transition: all .3s cubic-bezier(.645, .045, .355, 1);
47
+ .iconfont {
48
+ color: #fff;
49
+ font-size: 16px
50
+ }
51
+ &:hover {
52
+ transform: scale(1.3);
53
+ box-shadow: 0 13px 27px 0 rgba(0, 0, 0, .1)
54
+ }
55
+ &:active {
56
+ transform: none;
57
+ background: #1e83e9;
58
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1)
59
+ }
60
+ }
61
+ }
62
+ }
63
+ .add-node-popover-body {
64
+ display: flex;
65
+ .add-node-popover-item {
66
+ margin-right: 10px;
67
+ cursor: pointer;
68
+ text-align: center;
69
+ flex: 1;
70
+ color: #191f25!important;
71
+ .item-wrapper {
72
+ user-select: none;
73
+ display: inline-block;
74
+ width: 80px;
75
+ height: 80px;
76
+ margin-bottom: 5px;
77
+ background: #fff;
78
+ border: 1px solid #e2e2e2;
79
+ border-radius: 50%;
80
+ transition: all .3s cubic-bezier(.645, .045, .355, 1);
81
+ .iconfont {
82
+ font-size: 35px;
83
+ line-height: 80px
84
+ }
85
+ }
86
+ &.approver{
87
+ .item-wrapper {
88
+ color: #ff943e
89
+ }
90
+ }
91
+ &.notifier{
92
+ .item-wrapper {
93
+ color: #3296fa
94
+ }
95
+ }
96
+ &.condition{
97
+ .item-wrapper {
98
+ color: #15bc83
99
+ }
100
+ }
101
+ &:hover{
102
+ .item-wrapper {
103
+ background: #3296fa;
104
+ box-shadow: 0 10px 20px 0 rgba(50, 150, 250, .4)
105
+ }
106
+ .iconfont {
107
+ color: #fff
108
+ }
109
+ }
110
+ &:active{
111
+ .item-wrapper {
112
+ box-shadow: none;
113
+ background: #eaeaea
114
+ }
115
+ .iconfont {
116
+ color: inherit
117
+ }
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _antd = require("antd");
10
+ require("./index.scss");
11
+ /*
12
+ * @Date: 2023-03-15 17:56:12
13
+ * @LastEditors: StavinLi 495727881@qq.com
14
+ * @LastEditTime: 2023-03-23 15:51:50
15
+ * @FilePath: /workflow-react/src/components/Dialog/ErrorDialog/index.js
16
+ */
17
+ var _default = props => {
18
+ let {
19
+ visible,
20
+ list,
21
+ setVisible
22
+ } = props;
23
+ let closeIcon = /*#__PURE__*/_react.default.createElement("span", {
24
+ className: "ant-icon-close"
25
+ });
26
+ let closeModal = () => setVisible(false);
27
+ return /*#__PURE__*/_react.default.createElement(_antd.Modal, {
28
+ title: "\u63D0\u793A",
29
+ closeIcon: closeIcon,
30
+ open: visible,
31
+ okText: "\u524D\u5F80\u4FEE\u6539",
32
+ onOk: closeModal,
33
+ cancelText: "\u6211\u77E5\u9053\u4E86",
34
+ onCancel: closeModal
35
+ }, /*#__PURE__*/_react.default.createElement("div", {
36
+ className: "ant-confirm-body"
37
+ }, /*#__PURE__*/_react.default.createElement("i", {
38
+ className: "anticon anticon-close-circle",
39
+ style: {
40
+ color: '#f00'
41
+ }
42
+ }), /*#__PURE__*/_react.default.createElement("span", {
43
+ className: "ant-confirm-title"
44
+ }, "\u5F53\u524D\u65E0\u6CD5\u53D1\u5E03"), /*#__PURE__*/_react.default.createElement("div", {
45
+ className: "ant-confirm-content"
46
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", {
47
+ className: "error-modal-desc"
48
+ }, "\u4EE5\u4E0B\u5185\u5BB9\u4E0D\u5B8C\u5584\uFF0C\u9700\u8FDB\u884C\u4FEE\u6539"), /*#__PURE__*/_react.default.createElement("div", {
49
+ className: "error-modal-list"
50
+ }, list.map((item, index) => {
51
+ return /*#__PURE__*/_react.default.createElement("div", {
52
+ className: "error-modal-item",
53
+ key: index
54
+ }, /*#__PURE__*/_react.default.createElement("div", {
55
+ className: "error-modal-item-label"
56
+ }, "\u6D41\u7A0B\u8BBE\u8BA1"), /*#__PURE__*/_react.default.createElement("div", {
57
+ className: "error-modal-item-content"
58
+ }, item.name, " \u672A\u9009\u62E9", item.type));
59
+ }))))));
60
+ };
61
+ exports.default = _default;
@@ -0,0 +1,60 @@
1
+ .ant-confirm-body{
2
+ padding: 30px 20px;
3
+ .ant-confirm-title {
4
+ color: rgba(0, 0, 0, .85);
5
+ font-weight: 500;
6
+ font-size: 16px;
7
+ line-height: 1.4;
8
+ display: block;
9
+ overflow: hidden
10
+ }
11
+ .ant-confirm-content {
12
+ margin-left: 38px;
13
+ font-size: 14px;
14
+ color: rgba(0, 0, 0, .65);
15
+ margin-top: 8px
16
+ }
17
+ &>.anticon {
18
+ font-size: 22px;
19
+ margin-right: 16px;
20
+ float: left
21
+ }
22
+ }
23
+
24
+
25
+ .error-modal{
26
+ &-desc {
27
+ font-size: 13px;
28
+ color: rgba(25, 31, 37, .56);
29
+ line-height: 22px;
30
+ margin-bottom: 14px
31
+ }
32
+ &-list {
33
+ height: 200px;
34
+ overflow-y: auto;
35
+ margin-right: -25px;
36
+ padding-right: 25px
37
+ }
38
+ &-item {
39
+ padding: 10px 20px;
40
+ line-height: 21px;
41
+ background: #f6f6f6;
42
+ display: flex;
43
+ justify-content: space-between;
44
+ align-items: center;
45
+ margin-bottom: 8px;
46
+ border-radius: 4px;
47
+ &-label {
48
+ flex: none;
49
+ font-size: 15px;
50
+ color: rgba(25, 31, 37, .56);
51
+ padding-right: 10px
52
+ }
53
+ &-content {
54
+ text-align: right;
55
+ flex: 1;
56
+ font-size: 13px;
57
+ color: #191f25
58
+ }
59
+ }
60
+ }